rhachet 1.2.0 → 1.3.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 (131) hide show
  1. package/bin/run +4 -0
  2. package/dist/.test/directory.js.map +1 -0
  3. package/dist/.test/genContextLogTrail.js.map +1 -0
  4. package/dist/.test/genContextStitchTrail.js.map +1 -0
  5. package/dist/.test/getContextOpenAI.js.map +1 -0
  6. package/dist/.test/stitchers/genStitcherCodeFileRead.js.map +1 -0
  7. package/dist/.test/stitchers/genStitcherCodeFileWrite.js.map +1 -0
  8. package/dist/.test/stitchers/genStitcherCodeReviewImagine.js.map +1 -0
  9. package/dist/.test/stitchers/stitcherCodeDiffImagine.js.map +1 -0
  10. package/dist/.test/stitchers/stitcherFanoutRandomSum.js.map +1 -0
  11. package/dist/.test/stitchers/stitcherFanoutSubroutes.js.map +1 -0
  12. package/dist/{__test_assets__ → .test}/threads/codeArtist.js +1 -1
  13. package/dist/.test/threads/codeArtist.js.map +1 -0
  14. package/dist/{__test_assets__ → .test}/threads/codeCritic.js +1 -1
  15. package/dist/.test/threads/codeCritic.js.map +1 -0
  16. package/dist/.test/threads/director.js.map +1 -0
  17. package/dist/_topublish/file-fns/src/getFile.js.map +1 -0
  18. package/dist/contract/cli/.test/example.echoRegistry.d.ts +2 -0
  19. package/dist/contract/cli/.test/example.echoRegistry.js +54 -0
  20. package/dist/contract/cli/.test/example.echoRegistry.js.map +1 -0
  21. package/dist/contract/cli/invoke.d.ts +12 -0
  22. package/dist/contract/cli/invoke.integration.test.d.ts +1 -0
  23. package/dist/contract/cli/invoke.integration.test.js +38 -0
  24. package/dist/contract/cli/invoke.integration.test.js.map +1 -0
  25. package/dist/contract/cli/invoke.js +88 -0
  26. package/dist/contract/cli/invoke.js.map +1 -0
  27. package/dist/contract/cli/invokeAsk.d.ts +10 -0
  28. package/dist/contract/cli/invokeAsk.integration.test.d.ts +1 -0
  29. package/dist/contract/cli/invokeAsk.integration.test.js +41 -0
  30. package/dist/contract/cli/invokeAsk.integration.test.js.map +1 -0
  31. package/dist/contract/cli/invokeAsk.js +78 -0
  32. package/dist/contract/cli/invokeAsk.js.map +1 -0
  33. package/dist/contract/cli/invokeList.d.ts +10 -0
  34. package/dist/contract/cli/invokeList.js +48 -0
  35. package/dist/contract/cli/invokeList.js.map +1 -0
  36. package/dist/contract/cli/invokeReadme.d.ts +15 -0
  37. package/dist/contract/cli/invokeReadme.integration.test.d.ts +1 -0
  38. package/dist/contract/cli/invokeReadme.integration.test.js +62 -0
  39. package/dist/contract/cli/invokeReadme.integration.test.js.map +1 -0
  40. package/dist/contract/cli/invokeReadme.js +72 -0
  41. package/dist/contract/cli/invokeReadme.js.map +1 -0
  42. package/dist/domain/objects/index.d.ts +7 -0
  43. package/dist/domain/objects/index.js +7 -0
  44. package/dist/domain/objects/index.js.map +1 -1
  45. package/dist/logic/invoke/assureFindRole.d.ts +10 -0
  46. package/dist/logic/invoke/assureFindRole.js +22 -0
  47. package/dist/logic/invoke/assureFindRole.js.map +1 -0
  48. package/dist/logic/invoke/assureUniqueRoles.d.ts +5 -0
  49. package/dist/logic/invoke/assureUniqueRoles.js +19 -0
  50. package/dist/logic/invoke/assureUniqueRoles.js.map +1 -0
  51. package/dist/logic/invoke/getSkillContext.d.ts +17 -0
  52. package/dist/logic/invoke/getSkillContext.js +44 -0
  53. package/dist/logic/invoke/getSkillContext.js.map +1 -0
  54. package/dist/logic/invoke/getSkillContext.test.d.ts +1 -0
  55. package/dist/logic/invoke/getSkillContext.test.js +85 -0
  56. package/dist/logic/invoke/getSkillContext.test.js.map +1 -0
  57. package/dist/logic/invoke/getSkillThread.test.d.ts +1 -0
  58. package/dist/logic/invoke/getSkillThread.test.js +115 -0
  59. package/dist/logic/invoke/getSkillThread.test.js.map +1 -0
  60. package/dist/logic/invoke/getSkillThreads.d.ts +16 -0
  61. package/dist/logic/invoke/getSkillThreads.js +46 -0
  62. package/dist/logic/invoke/getSkillThreads.js.map +1 -0
  63. package/dist/logic/stitch/enstitch.test.js +2 -2
  64. package/dist/logic/stitch/enstitch.test.js.map +1 -1
  65. package/dist/logic/stitch/invokeImagineStitcher.integration.test.js +3 -3
  66. package/dist/logic/stitch/invokeImagineStitcher.integration.test.js.map +1 -1
  67. package/dist/logic/template/genStepImagineViaTemplate.test.js +2 -2
  68. package/dist/logic/template/genStepImagineViaTemplate.test.js.map +1 -1
  69. package/dist/logic/weave/compose/GStitcherInferredFromChoice.generic.test.js +2 -2
  70. package/dist/logic/weave/compose/GStitcherInferredFromChoice.generic.test.js.map +1 -1
  71. package/dist/logic/weave/compose/GStitcherInferredFromCycle.generic.test.js +2 -2
  72. package/dist/logic/weave/compose/GStitcherInferredFromCycle.generic.test.js.map +1 -1
  73. package/dist/logic/weave/compose/GStitcherInferredFromFanout.generic.test.js +2 -2
  74. package/dist/logic/weave/compose/GStitcherInferredFromFanout.generic.test.js.map +1 -1
  75. package/dist/logic/weave/compose/GStitcherInferredFromRoute.generic.test.js +2 -2
  76. package/dist/logic/weave/compose/GStitcherInferredFromRoute.generic.test.js.map +1 -1
  77. package/dist/logic/weave/compose/genStitchCycle.test.js +2 -2
  78. package/dist/logic/weave/compose/genStitchCycle.test.js.map +1 -1
  79. package/dist/logic/weave/compose/genStitchFanout.test.js +2 -2
  80. package/dist/logic/weave/compose/genStitchFanout.test.js.map +1 -1
  81. package/dist/logic/weave/enweaveOneChoice.test.js +2 -2
  82. package/dist/logic/weave/enweaveOneChoice.test.js.map +1 -1
  83. package/dist/logic/weave/enweaveOneCycle.test.js +2 -2
  84. package/dist/logic/weave/enweaveOneCycle.test.js.map +1 -1
  85. package/dist/logic/weave/enweaveOneFanout.integration.test.js +6 -6
  86. package/dist/logic/weave/enweaveOneFanout.integration.test.js.map +1 -1
  87. package/dist/logic/weave/enweaveOneRoute.integration.test.js +6 -6
  88. package/dist/logic/weave/enweaveOneRoute.integration.test.js.map +1 -1
  89. package/dist/logic/weave/enweaveOneStitcher.integration.test.js +10 -10
  90. package/dist/logic/weave/enweaveOneStitcher.integration.test.js.map +1 -1
  91. package/package.json +7 -1
  92. package/dist/__nonpublished_modules__/file-fns/src/getFile.js.map +0 -1
  93. package/dist/__test_assets__/directory.js.map +0 -1
  94. package/dist/__test_assets__/genContextLogTrail.js.map +0 -1
  95. package/dist/__test_assets__/genContextStitchTrail.js.map +0 -1
  96. package/dist/__test_assets__/getContextOpenAI.js.map +0 -1
  97. package/dist/__test_assets__/stitchers/genStitcherCodeFileRead.js.map +0 -1
  98. package/dist/__test_assets__/stitchers/genStitcherCodeFileWrite.js.map +0 -1
  99. package/dist/__test_assets__/stitchers/genStitcherCodeReviewImagine.js.map +0 -1
  100. package/dist/__test_assets__/stitchers/stitcherCodeDiffImagine.js.map +0 -1
  101. package/dist/__test_assets__/stitchers/stitcherFanoutRandomSum.js.map +0 -1
  102. package/dist/__test_assets__/stitchers/stitcherFanoutSubroutes.js.map +0 -1
  103. package/dist/__test_assets__/threads/codeArtist.js.map +0 -1
  104. package/dist/__test_assets__/threads/codeCritic.js.map +0 -1
  105. package/dist/__test_assets__/threads/director.js.map +0 -1
  106. /package/dist/{__test_assets__ → .test}/directory.d.ts +0 -0
  107. /package/dist/{__test_assets__ → .test}/directory.js +0 -0
  108. /package/dist/{__test_assets__ → .test}/genContextLogTrail.d.ts +0 -0
  109. /package/dist/{__test_assets__ → .test}/genContextLogTrail.js +0 -0
  110. /package/dist/{__test_assets__ → .test}/genContextStitchTrail.d.ts +0 -0
  111. /package/dist/{__test_assets__ → .test}/genContextStitchTrail.js +0 -0
  112. /package/dist/{__test_assets__ → .test}/getContextOpenAI.d.ts +0 -0
  113. /package/dist/{__test_assets__ → .test}/getContextOpenAI.js +0 -0
  114. /package/dist/{__test_assets__ → .test}/stitchers/genStitcherCodeFileRead.d.ts +0 -0
  115. /package/dist/{__test_assets__ → .test}/stitchers/genStitcherCodeFileRead.js +0 -0
  116. /package/dist/{__test_assets__ → .test}/stitchers/genStitcherCodeFileWrite.d.ts +0 -0
  117. /package/dist/{__test_assets__ → .test}/stitchers/genStitcherCodeFileWrite.js +0 -0
  118. /package/dist/{__test_assets__ → .test}/stitchers/genStitcherCodeReviewImagine.d.ts +0 -0
  119. /package/dist/{__test_assets__ → .test}/stitchers/genStitcherCodeReviewImagine.js +0 -0
  120. /package/dist/{__test_assets__ → .test}/stitchers/stitcherCodeDiffImagine.d.ts +0 -0
  121. /package/dist/{__test_assets__ → .test}/stitchers/stitcherCodeDiffImagine.js +0 -0
  122. /package/dist/{__test_assets__ → .test}/stitchers/stitcherFanoutRandomSum.d.ts +0 -0
  123. /package/dist/{__test_assets__ → .test}/stitchers/stitcherFanoutRandomSum.js +0 -0
  124. /package/dist/{__test_assets__ → .test}/stitchers/stitcherFanoutSubroutes.d.ts +0 -0
  125. /package/dist/{__test_assets__ → .test}/stitchers/stitcherFanoutSubroutes.js +0 -0
  126. /package/dist/{__test_assets__ → .test}/threads/codeArtist.d.ts +0 -0
  127. /package/dist/{__test_assets__ → .test}/threads/codeCritic.d.ts +0 -0
  128. /package/dist/{__test_assets__ → .test}/threads/director.d.ts +0 -0
  129. /package/dist/{__test_assets__ → .test}/threads/director.js +0 -0
  130. /package/dist/{__nonpublished_modules__ → _topublish}/file-fns/src/getFile.d.ts +0 -0
  131. /package/dist/{__nonpublished_modules__ → _topublish}/file-fns/src/getFile.js +0 -0
package/bin/run ADDED
@@ -0,0 +1,4 @@
1
+ #!/usr/bin/env tsx
2
+ import { invoke } from '../src/contract/cli/invoke';
3
+
4
+ void invoke({ args: process.argv.slice(2) });
@@ -0,0 +1 @@
1
+ {"version":3,"file":"directory.js","sourceRoot":"","sources":["../../src/.test/directory.ts"],"names":[],"mappings":";;;AAAa,QAAA,mBAAmB,GAAG,SAAS,CAAC"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"genContextLogTrail.js","sourceRoot":"","sources":["../../src/.test/genContextLogTrail.ts"],"names":[],"mappings":";;;AACA,uCAAgC;AAEzB,MAAM,kBAAkB,GAAG,GAAoB,EAAE,CAAC,CAAC;IACxD,GAAG,EAAE;QACH,GAAG,IAAA,eAAI,EAAC,OAAO,EAAE,CAAC,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;QAC3D,KAAK,EAAE,EAAE;KACV;CACF,CAAC,CAAC;AALU,QAAA,kBAAkB,sBAK5B"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"genContextStitchTrail.js","sourceRoot":"","sources":["../../src/.test/genContextStitchTrail.ts"],"names":[],"mappings":";;;AAEO,MAAM,qBAAqB,GAAG,GAAuB,EAAE,CAAC,CAAC;IAC9D,MAAM,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE;CACtB,CAAC,CAAC;AAFU,QAAA,qBAAqB,yBAE/B"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getContextOpenAI.js","sourceRoot":"","sources":["../../src/.test/getContextOpenAI.ts"],"names":[],"mappings":";;;AAAA,mDAAyD;AAIlD,MAAM,gBAAgB,GAAG,GAAkB,EAAE,CAAC,CAAC;IACpD,MAAM,EAAE;QACN,IAAI,EAAE;YACJ,GAAG,EACD,OAAO,CAAC,GAAG,CAAC,eAAe;gBAC3B,wCAAuB,CAAC,KAAK,CAAC,qCAAqC,CAAC;SACvE;QACD,GAAG,EAAE;YACH,KAAK,EAAE,wBAAwB;YAC/B,MAAM,EAAE,OAAO;SAChB;KACF;CACF,CAAC,CAAC;AAZU,QAAA,gBAAgB,oBAY1B"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"genStitcherCodeFileRead.js","sourceRoot":"","sources":["../../../src/.test/stitchers/genStitcherCodeFileRead.ts"],"names":[],"mappings":";;;AAAA,sEAAsE;AACtE,uCAAuC;AAEvC,gEAAoE;AAU7D,MAAM,uBAAuB,GAAG,CAGrC,KAGD,EAAE,EAAE,CACH,IAAI,8BAAiB,CAEnB;IACA,IAAI,EAAE,SAAS;IACf,MAAM,EAAE,IAAI;IACZ,IAAI,EAAE,uBAAuB;IAC7B,QAAQ,EAAE,KAAK,CAAC,QAAQ;IACxB,MAAM,EAAE,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE;QACtB,MAAM,MAAM,GAAG,IAAA,sBAAW,EAAC,KAAK,CAAC,MAAM,CAAC;YACtC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,OAAO,EAAE,CAAC;YAC3B,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC;QACjB,OAAO;YACL,KAAK,EAAE,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE;YAC5B,MAAM;SACP,CAAC;IACJ,CAAC;CACF,CAAC,CAAC;AAvBQ,QAAA,uBAAuB,2BAuB/B"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"genStitcherCodeFileWrite.js","sourceRoot":"","sources":["../../../src/.test/stitchers/genStitcherCodeFileWrite.ts"],"names":[],"mappings":";;;AAAA,sEAAsE;AACtE,mDAAyD;AAGzD,gEAAoE;AAUpE;;;GAGG;AACI,MAAM,wBAAwB,GAAG,CAGtC,KAGD,EAAE,EAAE,CACH,IAAI,8BAAiB,CAEnB;IACA,IAAI,EAAE,SAAS;IACf,IAAI,EAAE,wBAAwB;IAC9B,MAAM,EAAE,iEAAiE;IACzE,QAAQ,EAAE,KAAK,CAAC,QAAQ;IACxB,MAAM,EAAE,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE;QACtB,MAAM,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC9D,MAAM,OAAO,GAAG,MAAM,EAAE,MAAM,CAAC;QAC/B,IAAI,OAAO,OAAO,KAAK,QAAQ;YAC7B,MAAM,IAAI,wCAAuB,CAC/B,yDAAyD,EACzD,EAAE,MAAM,EAAE,OAAO,EAAE,CACpB,CAAC;QAEJ,MAAM,MAAM,GAAoB;YAC9B,IAAI,EAAE,KAAK,CAAC,IAAI,IAAI,uBAAuB;YAC3C,OAAO;SACR,CAAC;QAEF,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC;IAC3C,CAAC;CACF,CAAC,CAAC;AA9BQ,QAAA,wBAAwB,4BA8BhC"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"genStitcherCodeReviewImagine.js","sourceRoot":"","sources":["../../../src/.test/stitchers/genStitcherCodeReviewImagine.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stitcherCodeDiffImagine.js","sourceRoot":"","sources":["../../../src/.test/stitchers/stitcherCodeDiffImagine.ts"],"names":[],"mappings":";;;AAAA,gEAAoE;AAGpE,mFAGsD;AAEzC,QAAA,uBAAuB,GAAG,IAAI,8BAAiB,CAS1D;IACA,IAAI,EAAE,SAAS;IACf,IAAI,EAAE,qBAAqB;IAC3B,QAAQ,EAAE,QAAQ;IAClB,MAAM,EAAE,6BAA6B;IACrC,QAAQ,EAAE,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,CACxB;QACE,6CAA6C;QAC7C,EAAE;QACF,kBAAkB;QAClB,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC;QAC1C,EAAE;QACF,kBAAkB;QAClB,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC;QAC1C,EAAE;QACF,uCAAuC;QACvC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,OAAO;QACpD,EAAE;QACF,uBAAuB;QACvB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,SAAS;YAChC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC;KACjE,CAAC,IAAI,CAAC,IAAI,CAAC;IACd,OAAO,EAAE,mCAAgB;IACzB,QAAQ,EAAE,CAAC,EAAE,SAAS,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC;QACtC,MAAM,EAAE,SAAS;QACjB,KAAK,EAAE,QAAQ;KAChB,CAAC;CACH,CAAC,CAAC"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stitcherFanoutRandomSum.js","sourceRoot":"","sources":["../../../src/.test/stitchers/stitcherFanoutRandomSum.ts"],"names":[],"mappings":";;;AAEA,gEAAoE;AAGpE,+EAA4E;AAE5E,MAAM,qBAAqB,GAAG,IAAI,8BAAiB,CAEjD;IACA,IAAI,EAAE,gBAAgB;IACtB,IAAI,EAAE,SAAS;IACf,MAAM,EAAE,IAAI;IACZ,QAAQ,EAAE,MAAM;IAChB,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC;QACb,KAAK,EAAE,IAAI;QACX,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,GAAG,CAAC;KACxC,CAAC;CACH,CAAC,CAAC;AAEH,MAAM,cAAc,GAAG,IAAI,8BAAiB,CAE1C;IACA,IAAI,EAAE,QAAQ;IACd,IAAI,EAAE,SAAS;IACf,MAAM,EAAE,IAAI;IACZ,QAAQ,EAAE,MAAM;IAChB,MAAM,EAAE,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE;QACtB,MAAM,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;YAC3C,MAAM,IAAI,GAAG,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;YAC/B,IAAI,CAAC,IAAI;gBAAE,MAAM,IAAI,KAAK,CAAC,0BAA0B,CAAC,CAAC;YACvD,OAAO,IAAI,CAAC,MAAgB,CAAC;QAC/B,CAAC,CAAC,CAAC;QAEH,MAAM,GAAG,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;QAE/C,OAAO;YACL,KAAK,EAAE,OAAO;YACd,MAAM,EAAE,GAAG;SACZ,CAAC;IACJ,CAAC;CACF,CAAC,CAAC;AAEU,QAAA,uBAAuB,GAAG,IAAA,iCAAe,EAAC;IACrD,IAAI,EAAE,eAAe;IACrB,MAAM,EAAE,IAAI;IACZ,SAAS,EAAE;QACT,qBAAqB;QACrB,qBAAqB;QACrB,qBAAqB;KACtB;IACD,SAAS,EAAE,cAAc;CAC1B,CAAC,CAAC"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stitcherFanoutSubroutes.js","sourceRoot":"","sources":["../../../src/.test/stitchers/stitcherFanoutSubroutes.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.getExampleThreadCodeArtist = void 0;
4
- const getFile_1 = require("../../__nonpublished_modules__/file-fns/src/getFile");
4
+ const getFile_1 = require("../../_topublish/file-fns/src/getFile");
5
5
  const Thread_1 = require("../../domain/objects/Thread");
6
6
  const directory_1 = require("../directory");
7
7
  // todo: use enroleThread to add role context & apply role tools
@@ -0,0 +1 @@
1
+ {"version":3,"file":"codeArtist.js","sourceRoot":"","sources":["../../../src/.test/threads/codeArtist.ts"],"names":[],"mappings":";;;AAAA,mEAAgE;AAChE,wDAAqD;AAErD,4CAAmD;AAEnD,gEAAgE;AACzD,MAAM,0BAA0B,GAAG,KAAK,IAE7C,EAAE,CACF,IAAI,eAAM,CAER;IACA,OAAO,EAAE;QACP,IAAI,EAAE,QAAiB;QACvB,KAAK,EAAE;YACL,MAAM,IAAA,iBAAO,EAAC;gBACZ,IAAI,EACF,+BAAmB;oBACnB,qDAAqD;aACxD,CAAC;SACH;QACD,KAAK,EAAE;YACL,MAAM,IAAA,iBAAO,EAAC;gBACZ,IAAI,EACF,+BAAmB,GAAG,2CAA2C;aACpE,CAAC;SACH;KACF;IACD,QAAQ,EAAE,EAAE,EAAE,6BAA6B;CAC5C,CAAC,CAAC;AAvBQ,QAAA,0BAA0B,8BAuBlC"}
@@ -1,7 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.getExampleThreadCodeCritic = void 0;
4
- const getFile_1 = require("../../__nonpublished_modules__/file-fns/src/getFile");
4
+ const getFile_1 = require("../../_topublish/file-fns/src/getFile");
5
5
  const Thread_1 = require("../../domain/objects/Thread");
6
6
  const directory_1 = require("../directory");
7
7
  // todo: use enroleThread to add role context & apply role tools
@@ -0,0 +1 @@
1
+ {"version":3,"file":"codeCritic.js","sourceRoot":"","sources":["../../../src/.test/threads/codeCritic.ts"],"names":[],"mappings":";;;AAAA,mEAAgE;AAChE,wDAAqD;AAErD,4CAAmD;AAEnD,gEAAgE;AACzD,MAAM,0BAA0B,GAAG,KAAK,IAE7C,EAAE,CACF,IAAI,eAAM,CAER;IACA,OAAO,EAAE;QACP,IAAI,EAAE,QAAiB;QACvB,KAAK,EAAE,EAAE;QACT,KAAK,EAAE;YACL,MAAM,IAAA,iBAAO,EAAC;gBACZ,IAAI,EACF,+BAAmB,GAAG,2CAA2C;aACpE,CAAC;SACH;KACF;IACD,QAAQ,EAAE,EAAE,EAAE,6BAA6B;CAC5C,CAAC,CAAC;AAjBQ,QAAA,0BAA0B,8BAiBlC"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"director.js","sourceRoot":"","sources":["../../../src/.test/threads/director.ts"],"names":[],"mappings":";;;AAAA,wDAAqD;AAGrD,gEAAgE;AACnD,QAAA,qBAAqB,GAAG,eAAM,CAAC,KAAK,CAE/C;IACA,OAAO,EAAE;QACP,IAAI,EAAE,UAAmB;QACzB,KAAK,EAAE,EAAE;QACT,KAAK,EAAE,EAAE;KACV;IACD,QAAQ,EAAE,EAAE,EAAE,6BAA6B;CAC5C,CAAC,CAAC"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getFile.js","sourceRoot":"","sources":["../../../../src/_topublish/file-fns/src/getFile.ts"],"names":[],"mappings":";;;AAAA,2BAAoC;AACpC,+BAA+B;AAE/B;;GAEG;AACI,MAAM,OAAO,GAAG,KAAK,EAAE,KAAuB,EAAmB,EAAE;IACxE,MAAM,QAAQ,GAAG,IAAA,cAAO,EAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IACrC,OAAO,MAAM,aAAE,CAAC,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;AAC9C,CAAC,CAAC;AAHW,QAAA,OAAO,WAGlB"}
@@ -0,0 +1,2 @@
1
+ import { RoleRegistry } from '../../sdk';
2
+ export declare const EXAMPLE_REGISTRY: RoleRegistry;
@@ -0,0 +1,54 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.EXAMPLE_REGISTRY = void 0;
4
+ const genThread_1 = require("../../../logic/thread/genThread");
5
+ const sdk_1 = require("../../sdk");
6
+ const stepEchoAsk = new sdk_1.StitchStepCompute({
7
+ slug: 'echo.step',
8
+ form: 'COMPUTE',
9
+ stitchee: 'caller',
10
+ readme: 'simple echo logic',
11
+ invoke: async ({ threads }, context) => {
12
+ context.log.info('echo:', { ask: threads.caller.context.ask });
13
+ return {
14
+ input: null,
15
+ output: `echo: ${threads.caller.context.ask}`,
16
+ };
17
+ },
18
+ });
19
+ const echoSkill = sdk_1.RoleSkill.build({
20
+ slug: 'echo',
21
+ readme: 'Echoes back the ask string.',
22
+ route: stepEchoAsk,
23
+ threads: {
24
+ lookup: {},
25
+ assess: (input) => true,
26
+ instantiate: (input) => ({
27
+ caller: (0, genThread_1.genThread)({ role: 'caller', ask: input.ask }),
28
+ }),
29
+ },
30
+ context: {
31
+ lookup: {},
32
+ assess: (input) => true,
33
+ instantiate: () => ({
34
+ log: console,
35
+ stitch: {
36
+ trail: [],
37
+ },
38
+ }),
39
+ },
40
+ });
41
+ const echoRole = sdk_1.Role.build({
42
+ slug: 'echoer',
43
+ name: 'Echoer',
44
+ purpose: 'repeat things',
45
+ readme: 'knows how to echo input back to the user.',
46
+ traits: [],
47
+ skills: [echoSkill],
48
+ });
49
+ exports.EXAMPLE_REGISTRY = new sdk_1.RoleRegistry({
50
+ slug: 'echo',
51
+ readme: 'basic registry for testing CLI execution',
52
+ roles: [echoRole],
53
+ });
54
+ //# sourceMappingURL=example.echoRegistry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"example.echoRegistry.js","sourceRoot":"","sources":["../../../../src/contract/cli/.test/example.echoRegistry.ts"],"names":[],"mappings":";;;AAEA,+DAA4D;AAC5D,mCAQmB;AAEnB,MAAM,WAAW,GAAG,IAAI,uBAAiB,CAEvC;IACA,IAAI,EAAE,WAAW;IACjB,IAAI,EAAE,SAAS;IACf,QAAQ,EAAE,QAAQ;IAClB,MAAM,EAAE,mBAAmB;IAC3B,MAAM,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,EAAE,OAAO,EAAE,EAAE;QACrC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,GAAG,EAAE,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;QAC/D,OAAO;YACL,KAAK,EAAE,IAAI;YACX,MAAM,EAAE,SAAS,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,EAAE;SAC9C,CAAC;IACJ,CAAC;CACF,CAAC,CAAC;AAEH,MAAM,SAAS,GAAG,eAAS,CAAC,KAAK,CAA6C;IAC5E,IAAI,EAAE,MAAM;IACZ,MAAM,EAAE,6BAA6B;IACrC,KAAK,EAAE,WAAW;IAClB,OAAO,EAAE;QACP,MAAM,EAAE,EAAE;QACV,MAAM,EAAE,CAAC,KAAK,EAAkB,EAAE,CAAC,IAAI;QACvC,WAAW,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;YACvB,MAAM,EAAE,IAAA,qBAAS,EAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,EAAE,KAAK,CAAC,GAAG,EAAE,CAAC;SACtD,CAAC;KACH;IACD,OAAO,EAAE;QACP,MAAM,EAAE,EAAE;QACV,MAAM,EAAE,CAAC,KAAU,EAAkB,EAAE,CAAC,IAAI;QAC5C,WAAW,EAAE,GAAG,EAAE,CAAC,CAAC;YAClB,GAAG,EAAE,OAAO;YACZ,MAAM,EAAE;gBACN,KAAK,EAAE,EAAE;aACV;SACF,CAAC;KACH;CACF,CAAC,CAAC;AACH,MAAM,QAAQ,GAAG,UAAI,CAAC,KAAK,CAAC;IAC1B,IAAI,EAAE,QAAQ;IACd,IAAI,EAAE,QAAQ;IACd,OAAO,EAAE,eAAe;IACxB,MAAM,EAAE,2CAA2C;IACnD,MAAM,EAAE,EAAE;IACV,MAAM,EAAE,CAAC,SAAS,CAAC;CACpB,CAAC,CAAC;AAEU,QAAA,gBAAgB,GAAG,IAAI,kBAAY,CAAC;IAC/C,IAAI,EAAE,MAAM;IACZ,MAAM,EAAE,0CAA0C;IAClD,KAAK,EAAE,CAAC,QAAQ,CAAC;CAClB,CAAC,CAAC"}
@@ -0,0 +1,12 @@
1
+ /**
2
+ * .what = main entrypoint for CLI execution
3
+ * .why =
4
+ * - sets up CLI commands and loads dynamic config from project root
5
+ * - enables skills to be registered dynamically via `rhachet.use.ts`
6
+ * .how =
7
+ * - defaults to loading `@gitroot/rhachet.use.ts` unless overridden with `--config` or `-c`
8
+ * - config must export a `getRoleRegistries()` function returning a set of RoleRegistries to support
9
+ */
10
+ export declare const invoke: (input: {
11
+ args: string[];
12
+ }) => Promise<void>;
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,38 @@
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
+ const path_1 = __importDefault(require("path"));
7
+ const test_fns_1 = require("test-fns");
8
+ const invoke_1 = require("./invoke");
9
+ describe('invoke', () => {
10
+ (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
+ (0, test_fns_1.when)('asked to readme a role', () => {
13
+ const args = [
14
+ '--config',
15
+ configPath,
16
+ 'readme',
17
+ '--registry',
18
+ 'echo',
19
+ '--role',
20
+ 'echoer',
21
+ ];
22
+ let logSpy;
23
+ beforeAll(() => {
24
+ logSpy = jest.spyOn(console, 'log');
25
+ });
26
+ afterAll(() => {
27
+ logSpy.mockRestore();
28
+ });
29
+ (0, test_fns_1.then)('it should print the expected readme from the role', async () => {
30
+ await (0, invoke_1.invoke)({ args });
31
+ const callArgs = logSpy.mock.calls.flat();
32
+ const printed = callArgs.join('\n');
33
+ expect(printed).toContain('knows how to echo input back to the user.');
34
+ });
35
+ });
36
+ });
37
+ });
38
+ //# sourceMappingURL=invoke.integration.test.js.map
@@ -0,0 +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"}
@@ -0,0 +1,88 @@
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
+ Object.defineProperty(exports, "__esModule", { value: true });
26
+ exports.invoke = void 0;
27
+ const commander_1 = require("commander");
28
+ const helpful_errors_1 = require("helpful-errors");
29
+ const path_1 = require("path");
30
+ const rhachet_artifact_git_1 = require("rhachet-artifact-git");
31
+ const assureUniqueRoles_1 = require("../../logic/invoke/assureUniqueRoles");
32
+ const invokeAsk_1 = require("./invokeAsk");
33
+ const invokeList_1 = require("./invokeList");
34
+ const invokeReadme_1 = require("./invokeReadme");
35
+ /**
36
+ * .what = main entrypoint for CLI execution
37
+ * .why =
38
+ * - sets up CLI commands and loads dynamic config from project root
39
+ * - enables skills to be registered dynamically via `rhachet.use.ts`
40
+ * .how =
41
+ * - defaults to loading `@gitroot/rhachet.use.ts` unless overridden with `--config` or `-c`
42
+ * - config must export a `getRoleRegistries()` function returning a set of RoleRegistries to support
43
+ */
44
+ const invoke = async (input) => {
45
+ const gitroot = await (0, rhachet_artifact_git_1.getGitRepoRoot)({ from: process.cwd() });
46
+ // grab the config
47
+ const configArg = input.args.findIndex((a) => a === '--config' || a === '-c');
48
+ const configPathExplicit = configArg >= 0 && input.args[configArg + 1]
49
+ ? input.args[configArg + 1]
50
+ : undefined;
51
+ 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();
57
+ // failfast on duplicate roles // todo: update commands to allow registry based disambiguation
58
+ await (0, assureUniqueRoles_1.assureUniqueRoles)(registries);
59
+ // declare the cli program
60
+ const program = new commander_1.Command();
61
+ program.configureOutput({
62
+ writeErr: (str) => {
63
+ console.error('[commander error]', str);
64
+ },
65
+ });
66
+ program
67
+ .name('rhachet')
68
+ .description('ehmpathy CLI interface')
69
+ .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
+ (0, invokeReadme_1.invokeReadme)({ program, registries });
71
+ (0, invokeList_1.invokeList)({ program, registries });
72
+ (0, invokeAsk_1.invokeAsk)({ program, registries });
73
+ // invoke it
74
+ // console.log('[args]', input.args); // todo: make it easier to d ebug
75
+ await program.parseAsync(input.args, { from: 'user' }).catch((error) => {
76
+ if (error instanceof helpful_errors_1.BadRequestError) {
77
+ console.error(``);
78
+ console.error(`❌ ${error.message}`);
79
+ console.error(``);
80
+ console.error(`[args] ${input.args}`);
81
+ console.error(``);
82
+ process.exit(1);
83
+ }
84
+ throw error;
85
+ });
86
+ };
87
+ exports.invoke = invoke;
88
+ //# sourceMappingURL=invoke.js.map
@@ -0,0 +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,CAAC,wBAAwB,CAAC;SACrC,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;AAjDW,QAAA,MAAM,UAiDjB"}
@@ -0,0 +1,10 @@
1
+ import { Command } from 'commander';
2
+ import { RoleRegistry } from '../../domain/objects/RoleRegistry';
3
+ /**
4
+ * .what = adds the "ask" command to the CLI
5
+ * .why = lets users invoke a skill from any role in the given registries
6
+ */
7
+ export declare const invokeAsk: ({ program, registries, }: {
8
+ program: Command;
9
+ registries: RoleRegistry[];
10
+ }) => void;
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,41 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const commander_1 = require("commander");
4
+ const test_fns_1 = require("test-fns");
5
+ const example_echoRegistry_1 = require("./.test/example.echoRegistry");
6
+ const invokeAsk_1 = require("./invokeAsk");
7
+ describe('invokeAsk (integration)', () => {
8
+ (0, test_fns_1.given)('a CLI program with invokeAsk registered using EXAMPLE_REGISTRY', () => {
9
+ const program = new commander_1.Command();
10
+ (0, invokeAsk_1.invokeAsk)({ program, registries: [example_echoRegistry_1.EXAMPLE_REGISTRY] });
11
+ (0, test_fns_1.when)('invoking a valid echo skill with ask input', () => {
12
+ (0, test_fns_1.then)('it should execute the skill successfully', async () => {
13
+ const args = [
14
+ 'ask',
15
+ '--role',
16
+ 'echoer',
17
+ '--skill',
18
+ 'echo',
19
+ '--ask',
20
+ 'hello',
21
+ ];
22
+ await program.parseAsync(args, { from: 'user' });
23
+ });
24
+ });
25
+ (0, test_fns_1.when)('invoking with an invalid skill', () => {
26
+ (0, test_fns_1.then)('it should throw a bad request error', async () => {
27
+ const args = ['ask', '--role', 'echoer', '--skill', 'unknown', 'hi'];
28
+ const error = await (0, test_fns_1.getError)(() => program.parseAsync(args, { from: 'user' }));
29
+ expect(error?.message).toContain('no skill named');
30
+ });
31
+ });
32
+ (0, test_fns_1.when)('invoking with an invalid role', () => {
33
+ (0, test_fns_1.then)('it should throw a missing role error', async () => {
34
+ const args = ['ask', '--role', 'badrole', '--skill', 'echo', 'hi'];
35
+ const error = await (0, test_fns_1.getError)(() => program.parseAsync(args, { from: 'user' }));
36
+ expect(error?.message).toContain('no role named');
37
+ });
38
+ });
39
+ });
40
+ });
41
+ //# sourceMappingURL=invokeAsk.integration.test.js.map
@@ -0,0 +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"}
@@ -0,0 +1,78 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.invokeAsk = void 0;
4
+ const helpful_errors_1 = require("helpful-errors");
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");
9
+ /**
10
+ * .what = adds the "ask" command to the CLI
11
+ * .why = lets users invoke a skill from any role in the given registries
12
+ */
13
+ const invokeAsk = ({ program, registries, }) => {
14
+ const askCommand = program
15
+ .command('ask')
16
+ .requiredOption('-r, --role <slug>', 'role to invoke')
17
+ .requiredOption('-s, --skill <slug>', 'skill to invoke')
18
+ .option('-a, --ask <ask>', 'your ask')
19
+ .allowUnknownOption(true)
20
+ .allowExcessArguments(true);
21
+ // 💉 dynamically inject CLI flags from skill inputs
22
+ askCommand.hook('preAction', (thisCommand) => {
23
+ const opts = thisCommand.opts();
24
+ const role = (0, assureFindRole_1.assureFindRole)({ registries, slug: opts.role });
25
+ const skill = role?.skills.find((s) => s.slug === opts.skill);
26
+ if (!skill)
27
+ helpful_errors_1.BadRequestError.throw(`no skill named "${opts.skill}" under role "${opts.role}"`, {
28
+ opts,
29
+ role: { skills: role?.skills.map((thisSkill) => thisSkill.slug) },
30
+ });
31
+ // register the dynamic inputs
32
+ for (const [key, meta] of Object.entries(skill.threads.lookup)) {
33
+ thisCommand.option(`-${meta.char}, --${key} <${meta.type}>`, meta.desc);
34
+ }
35
+ // re-parse with updated option definitions
36
+ thisCommand.parseOptions(thisCommand.parent?.args ?? []);
37
+ });
38
+ // 🧠 perform the skill
39
+ askCommand.action(async (opts) => {
40
+ const { ask, role: roleSlug, skill: skillSlug } = opts;
41
+ // lookup the role
42
+ const role = (0, assureFindRole_1.assureFindRole)({
43
+ registries,
44
+ slug: roleSlug ??
45
+ helpful_errors_1.UnexpectedCodePathError.throw('roleSlug not defined. why not?', {
46
+ opts,
47
+ }),
48
+ });
49
+ if (!role)
50
+ helpful_errors_1.BadRequestError.throw(`unknown role "${roleSlug}"`);
51
+ // lookup the skill
52
+ const skill = role.skills.find((s) => s.slug === skillSlug);
53
+ if (!skill)
54
+ helpful_errors_1.BadRequestError.throw(`unknown skill "${skillSlug}" under role "${roleSlug}"`);
55
+ // instantiate the threads
56
+ const argvWithAsk = {
57
+ ...opts,
58
+ ask: ask ?? helpful_errors_1.UnexpectedCodePathError.throw('ask was not declared', { ask }),
59
+ };
60
+ const threads = await (0, getSkillThreads_1.getSkillThreads)({
61
+ getter: skill.threads,
62
+ from: { lookup: { argv: argvWithAsk } },
63
+ });
64
+ // instantiate the context
65
+ const env = process.env;
66
+ const context = await (0, getSkillContext_1.getSkillContext)({
67
+ getter: skill.context,
68
+ from: { lookup: { env } },
69
+ });
70
+ // execute the weave
71
+ await (0, sdk_1.enweaveOneStitcher)({
72
+ stitcher: skill.route,
73
+ threads,
74
+ }, context);
75
+ });
76
+ };
77
+ exports.invokeAsk = invokeAsk;
78
+ //# sourceMappingURL=invokeAsk.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"invokeAsk.js","sourceRoot":"","sources":["../../../src/contract/cli/invokeAsk.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ import { Command } from 'commander';
2
+ import { RoleRegistry } from '../sdk';
3
+ /**
4
+ * .what = adds the "list" command to the CLI
5
+ * .why = lets users list all available roles or skills across multiple registries
6
+ */
7
+ export declare const invokeList: ({ program, registries, }: {
8
+ program: Command;
9
+ registries: RoleRegistry[];
10
+ }) => void;
@@ -0,0 +1,48 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.invokeList = void 0;
4
+ const helpful_errors_1 = require("helpful-errors");
5
+ const assureFindRole_1 = require("../../logic/invoke/assureFindRole");
6
+ /**
7
+ * .what = adds the "list" command to the CLI
8
+ * .why = lets users list all available roles or skills across multiple registries
9
+ */
10
+ const invokeList = ({ program, registries, }) => {
11
+ program
12
+ .command('list')
13
+ .description('list available roles or skills under a role')
14
+ .option('--registry <slug>', 'list roles under this registry')
15
+ .option('--role <slug>', 'list skills under this role (registry optional)')
16
+ .action((opts) => {
17
+ if (opts.role) {
18
+ const role = (0, assureFindRole_1.assureFindRole)({ registries, slug: opts.role });
19
+ if (!role)
20
+ helpful_errors_1.BadRequestError.throw(`no role named "${opts.role}"`);
21
+ console.log(``);
22
+ console.log(`📖 ${role.slug}.skills =`);
23
+ for (const skill of role.skills)
24
+ console.log(` - ${role.slug}.${skill.slug}`);
25
+ console.log(``);
26
+ return;
27
+ }
28
+ if (opts.registry) {
29
+ const registry = registries.find((r) => r.slug === opts.registry);
30
+ if (!registry)
31
+ helpful_errors_1.BadRequestError.throw(`no registry named "${opts.registry}"`);
32
+ console.log(``);
33
+ console.log(`📖 ${registry.slug}.roles =`);
34
+ for (const role of registry.roles)
35
+ console.log(` - ${role.slug}; purpose = ${role.purpose}`);
36
+ console.log(``);
37
+ return;
38
+ }
39
+ console.log(``);
40
+ console.log(`📖 all.roles =`);
41
+ const allRoles = registries.flatMap((registry) => registry.roles.map((role) => `${registry.slug}.${role.slug}; purpose = ${role.purpose}`));
42
+ for (const name of allRoles.sort())
43
+ console.log(` - ${name}`);
44
+ console.log(``);
45
+ });
46
+ };
47
+ exports.invokeList = invokeList;
48
+ //# sourceMappingURL=invokeList.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"invokeList.js","sourceRoot":"","sources":["../../../src/contract/cli/invokeList.ts"],"names":[],"mappings":";;;AACA,mDAAiD;AAEjD,sEAAmE;AAGnE;;;GAGG;AACI,MAAM,UAAU,GAAG,CAAC,EACzB,OAAO,EACP,UAAU,GAIX,EAAQ,EAAE;IACT,OAAO;SACJ,OAAO,CAAC,MAAM,CAAC;SACf,WAAW,CAAC,6CAA6C,CAAC;SAC1D,MAAM,CAAC,mBAAmB,EAAE,gCAAgC,CAAC;SAC7D,MAAM,CAAC,eAAe,EAAE,iDAAiD,CAAC;SAC1E,MAAM,CAAC,CAAC,IAA0C,EAAE,EAAE;QACrD,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;YACd,MAAM,IAAI,GAAG,IAAA,+BAAc,EAAC,EAAE,UAAU,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;YAC7D,IAAI,CAAC,IAAI;gBAAE,gCAAe,CAAC,KAAK,CAAC,kBAAkB,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC;YAEjE,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YAChB,OAAO,CAAC,GAAG,CAAC,MAAM,IAAI,CAAC,IAAI,WAAW,CAAC,CAAC;YACxC,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,MAAM;gBAC7B,OAAO,CAAC,GAAG,CAAC,OAAO,IAAI,CAAC,IAAI,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC;YAChD,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YAChB,OAAO;QACT,CAAC;QAED,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YAClB,MAAM,QAAQ,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,QAAQ,CAAC,CAAC;YAClE,IAAI,CAAC,QAAQ;gBACX,gCAAe,CAAC,KAAK,CAAC,sBAAsB,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC;YAEhE,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YAChB,OAAO,CAAC,GAAG,CAAC,MAAM,QAAQ,CAAC,IAAI,UAAU,CAAC,CAAC;YAC3C,KAAK,MAAM,IAAI,IAAI,QAAQ,CAAC,KAAK;gBAC/B,OAAO,CAAC,GAAG,CAAC,OAAO,IAAI,CAAC,IAAI,eAAe,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;YAC7D,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YAChB,OAAO;QACT,CAAC;QAED,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAChB,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;QAC9B,MAAM,QAAQ,GAAG,UAAU,CAAC,OAAO,CAAC,CAAC,QAAQ,EAAE,EAAE,CAC/C,QAAQ,CAAC,KAAK,CAAC,GAAG,CAChB,CAAC,IAAI,EAAE,EAAE,CAAC,GAAG,QAAQ,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,eAAe,IAAI,CAAC,OAAO,EAAE,CACrE,CACF,CAAC;QACF,KAAK,MAAM,IAAI,IAAI,QAAQ,CAAC,IAAI,EAAE;YAAE,OAAO,CAAC,GAAG,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC;QAC/D,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAClB,CAAC,CAAC,CAAC;AACP,CAAC,CAAC;AAhDW,QAAA,UAAU,cAgDrB"}
@@ -0,0 +1,15 @@
1
+ import { Command } from 'commander';
2
+ import { RoleRegistry } from '../sdk';
3
+ /**
4
+ * .what = main entrypoint for `readme` CLI command
5
+ * .why = allows devs to introspect registry, role, or skill documentation from the CLI
6
+ */
7
+ export declare const invokeReadme: ({ program, registries, }: {
8
+ program: Command;
9
+ registries: RoleRegistry[];
10
+ }) => void;
11
+ /**
12
+ * .what = indents each line of a string by a fixed number of spaces
13
+ * .why = ensures markdown blocks are consistently readable in nested output
14
+ */
15
+ export declare const indentLines: (text: string, spaces?: number) => string;
@@ -0,0 +1,62 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const commander_1 = require("commander");
4
+ const test_fns_1 = require("test-fns");
5
+ const example_echoRegistry_1 = require("./.test/example.echoRegistry");
6
+ const invokeReadme_1 = require("./invokeReadme");
7
+ describe('invokeReadme (integration)', () => {
8
+ (0, test_fns_1.given)('a CLI program with invokeReadme registered using EXAMPLE_REGISTRY', () => {
9
+ const program = new commander_1.Command();
10
+ const logSpy = jest.spyOn(console, 'log').mockImplementation(() => { });
11
+ beforeEach(() => logSpy.mockClear());
12
+ (0, invokeReadme_1.invokeReadme)({ program, registries: [example_echoRegistry_1.EXAMPLE_REGISTRY] });
13
+ (0, test_fns_1.when)('invoked with only --registry', () => {
14
+ (0, test_fns_1.then)('it should print the registry readme', async () => {
15
+ await program.parseAsync(['readme', '--registry', 'echo'], {
16
+ from: 'user',
17
+ });
18
+ expect(logSpy).toHaveBeenCalledWith('📜 echo.readme');
19
+ expect(logSpy).toHaveBeenCalledWith(expect.stringContaining(example_echoRegistry_1.EXAMPLE_REGISTRY.readme.split('\n')[0]));
20
+ });
21
+ });
22
+ (0, test_fns_1.when)('invoked with --role only', () => {
23
+ (0, test_fns_1.then)('it should print the role readme', async () => {
24
+ await program.parseAsync(['readme', '--role', 'echoer'], {
25
+ from: 'user',
26
+ });
27
+ expect(logSpy).toHaveBeenCalledWith('📜 echoer.readme');
28
+ expect(logSpy).toHaveBeenCalledWith(expect.stringContaining(example_echoRegistry_1.EXAMPLE_REGISTRY.roles[0].readme.split('\n')[0]));
29
+ });
30
+ });
31
+ (0, test_fns_1.when)('invoked with --role and --skill', () => {
32
+ (0, test_fns_1.then)('it should print the skill readme', async () => {
33
+ await program.parseAsync(['readme', '--role', 'echoer', '--skill', 'echo'], { from: 'user' });
34
+ expect(logSpy).toHaveBeenCalledWith('📜 echoer.echo.readme');
35
+ expect(logSpy).toHaveBeenCalledWith(expect.stringContaining(example_echoRegistry_1.EXAMPLE_REGISTRY.roles[0].skills[0].readme.split('\n')[0]));
36
+ });
37
+ });
38
+ (0, test_fns_1.when)('invoked with an unknown role', () => {
39
+ (0, test_fns_1.then)('it should throw a missing role error', async () => {
40
+ const error = await (0, test_fns_1.getError)(() => program.parseAsync(['readme', '--role', 'notreal'], {
41
+ from: 'user',
42
+ }));
43
+ expect(error?.message).toContain(`no role named "notreal" found in any registry`);
44
+ });
45
+ });
46
+ (0, test_fns_1.when)('invoked with an unknown skill', () => {
47
+ (0, test_fns_1.then)('it should throw a missing skill error', async () => {
48
+ const error = await (0, test_fns_1.getError)(() => program.parseAsync(['readme', '--role', 'echoer', '--skill', 'notreal'], { from: 'user' }));
49
+ expect(error?.message).toContain('no skill "notreal" in role "echoer"');
50
+ });
51
+ });
52
+ (0, test_fns_1.when)('invoked with an unknown registry', () => {
53
+ (0, test_fns_1.then)('it should throw a missing registry error', async () => {
54
+ const error = await (0, test_fns_1.getError)(() => program.parseAsync(['readme', '--registry', 'notreal'], {
55
+ from: 'user',
56
+ }));
57
+ expect(error?.message).toContain('no registry matches given options');
58
+ });
59
+ });
60
+ });
61
+ });
62
+ //# sourceMappingURL=invokeReadme.integration.test.js.map