rhachet 1.11.0 → 1.12.2
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.
- package/dist/contract/cli/invoke.js +10 -1
- package/dist/contract/cli/invoke.js.map +1 -1
- package/dist/contract/cli/invokeAsk.d.ts +3 -3
- package/dist/contract/cli/invokeBriefs.d.ts +2 -2
- package/dist/contract/cli/invokeBriefsBoot.d.ts +1 -1
- package/dist/contract/cli/invokeBriefsBoot.js +2 -2
- package/dist/contract/cli/invokeBriefsBoot.js.map +1 -1
- package/dist/contract/cli/invokeBriefsLink.d.ts +2 -2
- package/dist/contract/cli/invokeBriefsLink.js +9 -47
- package/dist/contract/cli/invokeBriefsLink.js.map +1 -1
- package/dist/contract/cli/invokeChoose.d.ts +1 -1
- package/dist/contract/cli/invokeInit.d.ts +9 -0
- package/dist/contract/cli/invokeInit.js +57 -0
- package/dist/contract/cli/invokeInit.js.map +1 -0
- package/dist/contract/cli/invokeList.d.ts +2 -2
- package/dist/contract/cli/invokeReadme.d.ts +2 -2
- package/dist/contract/cli/invokeRoles.d.ts +2 -2
- package/dist/contract/cli/invokeRolesBoot.d.ts +1 -1
- package/dist/contract/cli/invokeRolesBoot.js +2 -2
- package/dist/contract/cli/invokeRolesBoot.js.map +1 -1
- package/dist/contract/cli/invokeRolesLink.d.ts +2 -2
- package/dist/contract/cli/invokeRolesLink.js +17 -96
- package/dist/contract/cli/invokeRolesLink.js.map +1 -1
- package/dist/contract/sdk.d.ts +13 -13
- package/dist/contract/sdk.js +25 -25
- package/dist/contract/sdk.js.map +1 -1
- package/dist/domain/constants.d.ts +3 -0
- package/dist/domain/constants.js +5 -0
- package/dist/domain/constants.js.map +1 -0
- package/dist/domain/objects/InvokeHooks.d.ts +1 -1
- package/dist/domain/objects/InvokeOpts.d.ts +1 -1
- package/dist/domain/objects/Role.d.ts +2 -2
- package/dist/domain/objects/RoleContext.d.ts +1 -1
- package/dist/domain/objects/RoleSkill.d.ts +2 -2
- package/dist/domain/objects/RoleSkillArgGetter.d.ts +3 -3
- package/dist/domain/objects/RoleTrait.d.ts +2 -2
- package/dist/domain/objects/Stitch.d.ts +4 -4
- package/dist/domain/objects/Stitch.js.map +1 -1
- package/dist/domain/objects/StitchChoice.d.ts +2 -2
- package/dist/domain/objects/StitchChoice.js.map +1 -1
- package/dist/domain/objects/StitchCycle.d.ts +4 -4
- package/dist/domain/objects/StitchCycle.js.map +1 -1
- package/dist/domain/objects/StitchFanout.d.ts +4 -4
- package/dist/domain/objects/StitchFanout.js.map +1 -1
- package/dist/domain/objects/StitchRoute.d.ts +1 -1
- package/dist/domain/objects/StitchRoute.js.map +1 -1
- package/dist/domain/objects/StitchSetEvent.d.ts +3 -3
- package/dist/domain/objects/StitchStep.d.ts +3 -3
- package/dist/domain/objects/Stitcher.d.ts +9 -9
- package/dist/domain/objects/Stitcher.js.map +1 -1
- package/dist/domain/objects/Template.d.ts +2 -2
- package/dist/domain/objects/Template.js.map +1 -1
- package/dist/domain/objects/Thread.d.ts +2 -2
- package/dist/domain/objects/Threads.d.ts +2 -2
- package/dist/domain/objects/Threads.js.map +1 -1
- package/dist/domain/objects/index.d.ts +2 -2
- package/dist/domain/objects/index.js +2 -2
- package/dist/domain/objects/index.js.map +1 -1
- package/dist/logic/context/genContextStitchTrail.d.ts +1 -1
- package/dist/logic/context/genContextStitchTrail.js.map +1 -1
- package/dist/logic/init/discoverRolePackages.d.ts +8 -0
- package/dist/logic/init/discoverRolePackages.js +20 -0
- package/dist/logic/init/discoverRolePackages.js.map +1 -0
- package/dist/logic/init/generateRhachetConfig.d.ts +8 -0
- package/dist/logic/init/generateRhachetConfig.js +40 -0
- package/dist/logic/init/generateRhachetConfig.js.map +1 -0
- package/dist/logic/invoke/assureFindRole.d.ts +2 -2
- package/dist/logic/invoke/assureUniqueRoles.d.ts +1 -1
- package/dist/logic/invoke/getAgentReadmeTemplates.js +1 -1
- package/dist/logic/invoke/getInvokeHooksByOpts.d.ts +4 -3
- package/dist/logic/invoke/getInvokeHooksByOpts.js +11 -3
- package/dist/logic/invoke/getInvokeHooksByOpts.js.map +1 -1
- package/dist/logic/invoke/getRegistriesByOpts.d.ts +2 -2
- package/dist/logic/invoke/getSkillContext.d.ts +3 -3
- package/dist/logic/invoke/getSkillThreads.d.ts +4 -4
- package/dist/logic/invoke/hooks/onInvokeAskInput.d.ts +2 -2
- package/dist/logic/invoke/link/findsertFile.d.ts +9 -0
- package/dist/logic/invoke/link/findsertFile.js +29 -0
- package/dist/logic/invoke/link/findsertFile.js.map +1 -0
- package/dist/logic/invoke/link/symlinkResourceDirectories.d.ts +12 -0
- package/dist/logic/invoke/link/symlinkResourceDirectories.js +81 -0
- package/dist/logic/invoke/link/symlinkResourceDirectories.js.map +1 -0
- package/dist/logic/invoke/performInCurrentThread.d.ts +2 -2
- package/dist/logic/invoke/performInIsolatedThread.execute.d.ts +1 -1
- package/dist/logic/invoke/performInIsolatedThread.invoke.d.ts +2 -2
- package/dist/logic/invoke/performInIsolatedThread.invoke.js +3 -3
- package/dist/logic/invoke/performInIsolatedThread.invoke.js.map +1 -1
- package/dist/logic/invoke/performInIsolatedThreads.d.ts +1 -1
- package/dist/logic/role/addRoleTraits.d.ts +5 -5
- package/dist/logic/role/enrollThread.d.ts +4 -4
- package/dist/logic/role/genRoleSkill.d.ts +1 -1
- package/dist/logic/stitch/adapters/imagineViaOpenAI.d.ts +1 -1
- package/dist/logic/stitch/enstitch.d.ts +3 -3
- package/dist/logic/stitch/enstitch.js +1 -1
- package/dist/logic/stitch/enstitch.js.map +1 -1
- package/dist/logic/stitch/invokeImagineStitcher.d.ts +3 -3
- package/dist/logic/stitch/withStitchTrail.d.ts +4 -4
- package/dist/logic/stitch/withStitchTrail.js +1 -1
- package/dist/logic/stitch/withStitchTrail.js.map +1 -1
- package/dist/logic/template/genStepImagineViaTemplate.d.ts +2 -2
- package/dist/logic/template/genStepImagineViaTemplate.js.map +1 -1
- package/dist/logic/template/genTemplate.d.ts +3 -3
- package/dist/logic/template/getTemplatePathByCallerPath.d.ts +1 -1
- package/dist/logic/template/getTemplatePathByCallerPath.js +2 -2
- package/dist/logic/template/getTemplatePathByCallerPath.js.map +1 -1
- package/dist/logic/template/getTemplateValFromArtifacts.d.ts +2 -2
- package/dist/logic/template/getTemplateValFromArtifacts.js.map +1 -1
- package/dist/logic/template/getTemplateVarsFromInheritance.d.ts +1 -1
- package/dist/logic/template/useTemplate.d.ts +2 -2
- package/dist/logic/thread/getStitch.d.ts +1 -1
- package/dist/logic/weave/compose/GStitcherInferredFromChoice.generic.d.ts +3 -3
- package/dist/logic/weave/compose/GStitcherInferredFromCycle.generic.d.ts +4 -4
- package/dist/logic/weave/compose/GStitcherInferredFromFanout.generic.d.ts +6 -6
- package/dist/logic/weave/compose/GStitcherInferredFromRoute.generic.d.ts +4 -4
- package/dist/logic/weave/compose/ProcedureContextMerged.generic.d.ts +1 -1
- package/dist/logic/weave/compose/ThreadsMerged.generic.d.ts +4 -4
- package/dist/logic/weave/compose/asStitcher.d.ts +3 -3
- package/dist/logic/weave/compose/asStitcherFlat.d.ts +2 -2
- package/dist/logic/weave/compose/genStitchChoice.d.ts +3 -3
- package/dist/logic/weave/compose/genStitchCycle.d.ts +5 -5
- package/dist/logic/weave/compose/genStitchFanout.d.ts +5 -5
- package/dist/logic/weave/compose/genStitchFanout.js.map +1 -1
- package/dist/logic/weave/compose/genStitchRoute.d.ts +3 -3
- package/dist/logic/weave/compose/genStitchRoute.js.map +1 -1
- package/dist/logic/weave/enweaveOneChoice.d.ts +2 -2
- package/dist/logic/weave/enweaveOneChoice.js.map +1 -1
- package/dist/logic/weave/enweaveOneCycle.d.ts +2 -2
- package/dist/logic/weave/enweaveOneCycle.js.map +1 -1
- package/dist/logic/weave/enweaveOneFanout.d.ts +2 -2
- package/dist/logic/weave/enweaveOneFanout.js.map +1 -1
- package/dist/logic/weave/enweaveOneRoute.d.ts +2 -2
- package/dist/logic/weave/enweaveOneRoute.js.map +1 -1
- package/dist/logic/weave/enweaveOneStitcher.d.ts +2 -2
- package/dist/logic/weave/enweaveOneStitcher.js.map +1 -1
- package/license.md +21 -0
- package/package.json +36 -36
- package/dist/.test/directory.d.ts +0 -2
- package/dist/.test/directory.js +0 -6
- package/dist/.test/directory.js.map +0 -1
- package/dist/.test/example.use.repo/example.echoRegistry.d.ts +0 -2
- package/dist/.test/example.use.repo/example.echoRegistry.js +0 -108
- package/dist/.test/example.use.repo/example.echoRegistry.js.map +0 -1
- package/dist/.test/genContextLogTrail.d.ts +0 -2
- package/dist/.test/genContextLogTrail.js +0 -12
- package/dist/.test/genContextLogTrail.js.map +0 -1
- package/dist/.test/getContextOpenAI.d.ts +0 -2
- package/dist/.test/getContextOpenAI.js +0 -18
- package/dist/.test/getContextOpenAI.js.map +0 -1
- package/dist/.test/stitchers/genStitcherCodeFileRead.d.ts +0 -14
- package/dist/.test/stitchers/genStitcherCodeFileRead.js +0 -23
- package/dist/.test/stitchers/genStitcherCodeFileRead.js.map +0 -1
- package/dist/.test/stitchers/genStitcherCodeFileWrite.d.ts +0 -16
- package/dist/.test/stitchers/genStitcherCodeFileWrite.js +0 -29
- package/dist/.test/stitchers/genStitcherCodeFileWrite.js.map +0 -1
- package/dist/.test/stitchers/genStitcherCodeReviewImagine.d.ts +0 -15
- package/dist/.test/stitchers/genStitcherCodeReviewImagine.js +0 -97
- package/dist/.test/stitchers/genStitcherCodeReviewImagine.js.map +0 -1
- package/dist/.test/stitchers/stitcherCodeDiffImagine.d.ts +0 -13
- package/dist/.test/stitchers/stitcherCodeDiffImagine.js +0 -33
- package/dist/.test/stitchers/stitcherCodeDiffImagine.js.map +0 -1
- package/dist/.test/stitchers/stitcherFanoutRandomSum.d.ts +0 -13
- package/dist/.test/stitchers/stitcherFanoutRandomSum.js +0 -45
- package/dist/.test/stitchers/stitcherFanoutRandomSum.js.map +0 -1
- package/dist/.test/stitchers/stitcherFanoutSubroutes.d.ts +0 -35
- package/dist/.test/stitchers/stitcherFanoutSubroutes.js +0 -76
- package/dist/.test/stitchers/stitcherFanoutSubroutes.js.map +0 -1
- package/dist/.test/threads/codeArtist.d.ts +0 -6
- package/dist/.test/threads/codeArtist.js +0 -26
- package/dist/.test/threads/codeArtist.js.map +0 -1
- package/dist/.test/threads/codeCritic.d.ts +0 -6
- package/dist/.test/threads/codeCritic.js +0 -21
- package/dist/.test/threads/codeCritic.js.map +0 -1
- package/dist/.test/threads/director.d.ts +0 -6
- package/dist/.test/threads/director.js +0 -14
- package/dist/.test/threads/director.js.map +0 -1
- package/dist/contract/cli/invoke.integration.test.d.ts +0 -1
- package/dist/contract/cli/invoke.integration.test.js +0 -39
- package/dist/contract/cli/invoke.integration.test.js.map +0 -1
- package/dist/contract/cli/invokeAsk.integration.test.d.ts +0 -1
- package/dist/contract/cli/invokeAsk.integration.test.js +0 -69
- package/dist/contract/cli/invokeAsk.integration.test.js.map +0 -1
- package/dist/contract/cli/invokeBriefsBoot.integration.test.d.ts +0 -1
- package/dist/contract/cli/invokeBriefsBoot.integration.test.js +0 -159
- package/dist/contract/cli/invokeBriefsBoot.integration.test.js.map +0 -1
- package/dist/contract/cli/invokeBriefsLink.integration.test.d.ts +0 -1
- package/dist/contract/cli/invokeBriefsLink.integration.test.js +0 -97
- package/dist/contract/cli/invokeBriefsLink.integration.test.js.map +0 -1
- package/dist/contract/cli/invokeChoose.integration.test.d.ts +0 -1
- package/dist/contract/cli/invokeChoose.integration.test.js +0 -111
- package/dist/contract/cli/invokeChoose.integration.test.js.map +0 -1
- package/dist/contract/cli/invokeReadme.integration.test.d.ts +0 -1
- package/dist/contract/cli/invokeReadme.integration.test.js +0 -62
- package/dist/contract/cli/invokeReadme.integration.test.js.map +0 -1
- package/dist/domain/objects/InvokeOpts.test.d.ts +0 -1
- package/dist/domain/objects/InvokeOpts.test.js +0 -41
- package/dist/domain/objects/InvokeOpts.test.js.map +0 -1
- package/dist/domain/objects/Stitcher.test.d.ts +0 -1
- package/dist/domain/objects/Stitcher.test.js +0 -78
- package/dist/domain/objects/Stitcher.test.js.map +0 -1
- package/dist/domain/objects/Template.test.d.ts +0 -1
- package/dist/domain/objects/Template.test.js +0 -48
- package/dist/domain/objects/Template.test.js.map +0 -1
- package/dist/logic/invoke/addAttemptQualifierToOutputPath.test.d.ts +0 -1
- package/dist/logic/invoke/addAttemptQualifierToOutputPath.test.js +0 -130
- package/dist/logic/invoke/addAttemptQualifierToOutputPath.test.js.map +0 -1
- package/dist/logic/invoke/getPeerQualifiersOfOutputChoice.test.d.ts +0 -1
- package/dist/logic/invoke/getPeerQualifiersOfOutputChoice.test.js +0 -77
- package/dist/logic/invoke/getPeerQualifiersOfOutputChoice.test.js.map +0 -1
- package/dist/logic/invoke/getSkillContext.test.d.ts +0 -1
- package/dist/logic/invoke/getSkillContext.test.js +0 -85
- package/dist/logic/invoke/getSkillContext.test.js.map +0 -1
- package/dist/logic/invoke/getSkillThread.test.d.ts +0 -1
- package/dist/logic/invoke/getSkillThread.test.js +0 -115
- package/dist/logic/invoke/getSkillThread.test.js.map +0 -1
- package/dist/logic/invoke/performInIsolatedThread.invoke.integration.test.d.ts +0 -1
- package/dist/logic/invoke/performInIsolatedThread.invoke.integration.test.js +0 -74
- package/dist/logic/invoke/performInIsolatedThread.invoke.integration.test.js.map +0 -1
- package/dist/logic/invoke/performInIsolatedThreads.integration.test.d.ts +0 -1
- package/dist/logic/invoke/performInIsolatedThreads.integration.test.js +0 -75
- package/dist/logic/invoke/performInIsolatedThreads.integration.test.js.map +0 -1
- package/dist/logic/role/addRoleTraits.test.d.ts +0 -1
- package/dist/logic/role/addRoleTraits.test.js +0 -93
- package/dist/logic/role/addRoleTraits.test.js.map +0 -1
- package/dist/logic/role/enrollThread.integration.test.d.ts +0 -1
- package/dist/logic/role/enrollThread.integration.test.js +0 -79
- package/dist/logic/role/enrollThread.integration.test.js.map +0 -1
- package/dist/logic/role/genRoleSkill.test.d.ts +0 -1
- package/dist/logic/role/genRoleSkill.test.js +0 -79
- package/dist/logic/role/genRoleSkill.test.js.map +0 -1
- package/dist/logic/stitch/enstitch.test.d.ts +0 -1
- package/dist/logic/stitch/enstitch.test.js +0 -112
- package/dist/logic/stitch/enstitch.test.js.map +0 -1
- package/dist/logic/stitch/invokeImagineStitcher.integration.test.d.ts +0 -1
- package/dist/logic/stitch/invokeImagineStitcher.integration.test.js +0 -195
- package/dist/logic/stitch/invokeImagineStitcher.integration.test.js.map +0 -1
- package/dist/logic/template/genStepImagineViaTemplate.test.d.ts +0 -1
- package/dist/logic/template/genStepImagineViaTemplate.test.js +0 -126
- package/dist/logic/template/genStepImagineViaTemplate.test.js.map +0 -1
- package/dist/logic/template/genTemplate.test.d.ts +0 -1
- package/dist/logic/template/genTemplate.test.js +0 -118
- package/dist/logic/template/genTemplate.test.js.map +0 -1
- package/dist/logic/template/useTemplate.integration.test.d.ts +0 -1
- package/dist/logic/template/useTemplate.integration.test.js +0 -28
- package/dist/logic/template/useTemplate.integration.test.js.map +0 -1
- package/dist/logic/thread/getStitch.test.d.ts +0 -1
- package/dist/logic/thread/getStitch.test.js +0 -73
- package/dist/logic/thread/getStitch.test.js.map +0 -1
- package/dist/logic/weave/compose/GStitcherInferredFromChoice.generic.test.d.ts +0 -1
- package/dist/logic/weave/compose/GStitcherInferredFromChoice.generic.test.js +0 -67
- package/dist/logic/weave/compose/GStitcherInferredFromChoice.generic.test.js.map +0 -1
- package/dist/logic/weave/compose/GStitcherInferredFromCycle.generic.test.d.ts +0 -1
- package/dist/logic/weave/compose/GStitcherInferredFromCycle.generic.test.js +0 -132
- package/dist/logic/weave/compose/GStitcherInferredFromCycle.generic.test.js.map +0 -1
- package/dist/logic/weave/compose/GStitcherInferredFromFanout.generic.test.d.ts +0 -1
- package/dist/logic/weave/compose/GStitcherInferredFromFanout.generic.test.js +0 -74
- package/dist/logic/weave/compose/GStitcherInferredFromFanout.generic.test.js.map +0 -1
- package/dist/logic/weave/compose/GStitcherInferredFromRoute.generic.test.d.ts +0 -1
- package/dist/logic/weave/compose/GStitcherInferredFromRoute.generic.test.js +0 -190
- package/dist/logic/weave/compose/GStitcherInferredFromRoute.generic.test.js.map +0 -1
- package/dist/logic/weave/compose/ProcedureContextMerged.generic.test.d.ts +0 -1
- package/dist/logic/weave/compose/ProcedureContextMerged.generic.test.js +0 -29
- package/dist/logic/weave/compose/ProcedureContextMerged.generic.test.js.map +0 -1
- package/dist/logic/weave/compose/ThreadsMerged.generic.test.d.ts +0 -1
- package/dist/logic/weave/compose/ThreadsMerged.generic.test.js +0 -420
- package/dist/logic/weave/compose/ThreadsMerged.generic.test.js.map +0 -1
- package/dist/logic/weave/compose/asStitcher.test.d.ts +0 -1
- package/dist/logic/weave/compose/asStitcher.test.js +0 -95
- package/dist/logic/weave/compose/asStitcher.test.js.map +0 -1
- package/dist/logic/weave/compose/asStitcherFlat.test.d.ts +0 -1
- package/dist/logic/weave/compose/asStitcherFlat.test.js +0 -96
- package/dist/logic/weave/compose/asStitcherFlat.test.js.map +0 -1
- package/dist/logic/weave/compose/genStitchChoice.test.d.ts +0 -1
- package/dist/logic/weave/compose/genStitchChoice.test.js +0 -200
- package/dist/logic/weave/compose/genStitchChoice.test.js.map +0 -1
- package/dist/logic/weave/compose/genStitchCycle.test.d.ts +0 -1
- package/dist/logic/weave/compose/genStitchCycle.test.js +0 -267
- package/dist/logic/weave/compose/genStitchCycle.test.js.map +0 -1
- package/dist/logic/weave/compose/genStitchFanout.test.d.ts +0 -1
- package/dist/logic/weave/compose/genStitchFanout.test.js +0 -79
- package/dist/logic/weave/compose/genStitchFanout.test.js.map +0 -1
- package/dist/logic/weave/compose/genStitchRoute.test.d.ts +0 -1
- package/dist/logic/weave/compose/genStitchRoute.test.js +0 -120
- package/dist/logic/weave/compose/genStitchRoute.test.js.map +0 -1
- package/dist/logic/weave/enweaveOneChoice.test.d.ts +0 -1
- package/dist/logic/weave/enweaveOneChoice.test.js +0 -181
- package/dist/logic/weave/enweaveOneChoice.test.js.map +0 -1
- package/dist/logic/weave/enweaveOneCycle.test.d.ts +0 -1
- package/dist/logic/weave/enweaveOneCycle.test.js +0 -180
- package/dist/logic/weave/enweaveOneCycle.test.js.map +0 -1
- package/dist/logic/weave/enweaveOneFanout.integration.test.d.ts +0 -1
- package/dist/logic/weave/enweaveOneFanout.integration.test.js +0 -166
- package/dist/logic/weave/enweaveOneFanout.integration.test.js.map +0 -1
- package/dist/logic/weave/enweaveOneRoute.integration.test.d.ts +0 -1
- package/dist/logic/weave/enweaveOneRoute.integration.test.js +0 -159
- package/dist/logic/weave/enweaveOneRoute.integration.test.js.map +0 -1
- package/dist/logic/weave/enweaveOneStitcher.integration.test.d.ts +0 -2
- package/dist/logic/weave/enweaveOneStitcher.integration.test.js +0 -258
- package/dist/logic/weave/enweaveOneStitcher.integration.test.js.map +0 -1
|
@@ -1,159 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
const commander_1 = require("commander");
|
|
4
|
-
const node_fs_1 = require("node:fs");
|
|
5
|
-
const node_path_1 = require("node:path");
|
|
6
|
-
const test_fns_1 = require("test-fns");
|
|
7
|
-
const invokeBriefsBoot_1 = require("./invokeBriefsBoot");
|
|
8
|
-
describe('invokeBriefsBoot (integration)', () => {
|
|
9
|
-
(0, test_fns_1.given)('a CLI program with invokeBriefsBoot registered', () => {
|
|
10
|
-
const testDir = (0, node_path_1.resolve)(__dirname, './.temp/invokeBriefsBoot');
|
|
11
|
-
const originalCwd = process.cwd();
|
|
12
|
-
beforeAll(() => {
|
|
13
|
-
// Create test directory structure
|
|
14
|
-
(0, node_fs_1.mkdirSync)(testDir, { recursive: true });
|
|
15
|
-
process.chdir(testDir);
|
|
16
|
-
});
|
|
17
|
-
afterAll(() => {
|
|
18
|
-
process.chdir(originalCwd);
|
|
19
|
-
});
|
|
20
|
-
const briefsCommand = new commander_1.Command('briefs');
|
|
21
|
-
const logSpy = jest.spyOn(console, 'log').mockImplementation(() => { });
|
|
22
|
-
beforeEach(() => {
|
|
23
|
-
logSpy.mockClear();
|
|
24
|
-
});
|
|
25
|
-
(0, invokeBriefsBoot_1.invokeBriefsBoot)({ command: briefsCommand });
|
|
26
|
-
(0, test_fns_1.when)('invoked with "boot --repo test --role mechanic" after creating briefs', () => {
|
|
27
|
-
beforeAll(() => {
|
|
28
|
-
// Clean up first to ensure fresh state
|
|
29
|
-
const cleanAgentDir = (0, node_path_1.resolve)(testDir, '.agent');
|
|
30
|
-
if ((0, node_fs_1.existsSync)(cleanAgentDir)) {
|
|
31
|
-
(0, node_fs_1.rmSync)(cleanAgentDir, { recursive: true, force: true });
|
|
32
|
-
}
|
|
33
|
-
// Setup: Create mock brief files in new structure
|
|
34
|
-
const briefsDir = (0, node_path_1.resolve)(testDir, '.agent/repo=test/role=mechanic/briefs');
|
|
35
|
-
(0, node_fs_1.mkdirSync)(briefsDir, { recursive: true });
|
|
36
|
-
// Create mock node_modules structure for symlinks
|
|
37
|
-
const mockRoleDir = (0, node_path_1.resolve)(testDir, 'node_modules/rhachet-roles-ehmpathy/dist/logic/roles/mechanic/.briefs');
|
|
38
|
-
(0, node_fs_1.mkdirSync)(mockRoleDir, { recursive: true });
|
|
39
|
-
(0, node_fs_1.writeFileSync)((0, node_path_1.resolve)(mockRoleDir, 'brief1.md'), '# Brief 1\nThis is test brief 1');
|
|
40
|
-
(0, node_fs_1.writeFileSync)((0, node_path_1.resolve)(mockRoleDir, 'brief2.md'), '# Brief 2\nThis is test brief 2');
|
|
41
|
-
// Create symlinks (need to go up 4 levels from briefs/ to testDir root)
|
|
42
|
-
(0, node_fs_1.symlinkSync)('../../../../node_modules/rhachet-roles-ehmpathy/dist/logic/roles/mechanic/.briefs/brief1.md', (0, node_path_1.resolve)(briefsDir, 'brief1.md'));
|
|
43
|
-
(0, node_fs_1.symlinkSync)('../../../../node_modules/rhachet-roles-ehmpathy/dist/logic/roles/mechanic/.briefs/brief2.md', (0, node_path_1.resolve)(briefsDir, 'brief2.md'));
|
|
44
|
-
});
|
|
45
|
-
(0, test_fns_1.then)('it should print all brief files with stats', async () => {
|
|
46
|
-
// Execute boot command
|
|
47
|
-
await briefsCommand.parseAsync(['boot', '--repo', 'test', '--role', 'mechanic'], {
|
|
48
|
-
from: 'user',
|
|
49
|
-
});
|
|
50
|
-
// Check that stats were printed
|
|
51
|
-
expect(logSpy).toHaveBeenCalledWith(expect.stringContaining('began:stats'));
|
|
52
|
-
expect(logSpy).toHaveBeenCalledWith(expect.stringContaining('files = 2'));
|
|
53
|
-
// Check that file contents were printed
|
|
54
|
-
expect(logSpy).toHaveBeenCalledWith(expect.stringContaining('began:.agent/repo=test/role=mechanic/briefs/brief1.md'));
|
|
55
|
-
expect(logSpy).toHaveBeenCalledWith(expect.stringContaining('This is test brief 1'));
|
|
56
|
-
expect(logSpy).toHaveBeenCalledWith(expect.stringContaining('began:.agent/repo=test/role=mechanic/briefs/brief2.md'));
|
|
57
|
-
expect(logSpy).toHaveBeenCalledWith(expect.stringContaining('This is test brief 2'));
|
|
58
|
-
// Snapshot the full console output
|
|
59
|
-
const allLogOutput = logSpy.mock.calls
|
|
60
|
-
.map((call) => call[0])
|
|
61
|
-
.join('\n');
|
|
62
|
-
expect(allLogOutput).toMatchSnapshot();
|
|
63
|
-
});
|
|
64
|
-
});
|
|
65
|
-
(0, test_fns_1.when)('invoked with "boot" without --repo', () => {
|
|
66
|
-
(0, test_fns_1.then)('it should throw an error requiring --repo', async () => {
|
|
67
|
-
const error = await (0, test_fns_1.getError)(() => briefsCommand.parseAsync(['boot', '--role', 'mechanic'], {
|
|
68
|
-
from: 'user',
|
|
69
|
-
}));
|
|
70
|
-
expect(error?.message).toContain('--repo is required');
|
|
71
|
-
});
|
|
72
|
-
});
|
|
73
|
-
(0, test_fns_1.when)('invoked with "boot" without --role', () => {
|
|
74
|
-
(0, test_fns_1.then)('it should throw an error requiring --role', async () => {
|
|
75
|
-
const error = await (0, test_fns_1.getError)(() => briefsCommand.parseAsync(['boot', '--repo', 'test'], {
|
|
76
|
-
from: 'user',
|
|
77
|
-
}));
|
|
78
|
-
expect(error?.message).toContain('--role is required');
|
|
79
|
-
});
|
|
80
|
-
});
|
|
81
|
-
(0, test_fns_1.when)('invoked with "boot --repo test --role mechanic" before creating briefs', () => {
|
|
82
|
-
beforeAll(() => {
|
|
83
|
-
// Clean up to ensure no briefs directory exists
|
|
84
|
-
const agentDir = (0, node_path_1.resolve)(testDir, '.agent');
|
|
85
|
-
if ((0, node_fs_1.existsSync)(agentDir)) {
|
|
86
|
-
(0, node_fs_1.rmSync)(agentDir, { recursive: true, force: true });
|
|
87
|
-
}
|
|
88
|
-
});
|
|
89
|
-
(0, test_fns_1.then)('it should throw an error about missing briefs directory', async () => {
|
|
90
|
-
const error = await (0, test_fns_1.getError)(() => briefsCommand.parseAsync(['boot', '--repo', 'test', '--role', 'mechanic'], {
|
|
91
|
-
from: 'user',
|
|
92
|
-
}));
|
|
93
|
-
expect(error?.message).toContain('Briefs directory not found');
|
|
94
|
-
expect(error?.message).toContain('briefs link');
|
|
95
|
-
});
|
|
96
|
-
});
|
|
97
|
-
(0, test_fns_1.when)('invoked with "boot --repo test --role mechanic" with empty briefs directory', () => {
|
|
98
|
-
beforeAll(() => {
|
|
99
|
-
// Clean up first, then create empty briefs directory
|
|
100
|
-
const cleanAgentDir = (0, node_path_1.resolve)(testDir, '.agent');
|
|
101
|
-
if ((0, node_fs_1.existsSync)(cleanAgentDir)) {
|
|
102
|
-
(0, node_fs_1.rmSync)(cleanAgentDir, { recursive: true, force: true });
|
|
103
|
-
}
|
|
104
|
-
// Setup: Create empty briefs directory
|
|
105
|
-
const briefsDir = (0, node_path_1.resolve)(testDir, '.agent/repo=test/role=mechanic/briefs');
|
|
106
|
-
(0, node_fs_1.mkdirSync)(briefsDir, { recursive: true });
|
|
107
|
-
});
|
|
108
|
-
(0, test_fns_1.then)('it should warn about no briefs found', async () => {
|
|
109
|
-
await briefsCommand.parseAsync(['boot', '--repo', 'test', '--role', 'mechanic'], {
|
|
110
|
-
from: 'user',
|
|
111
|
-
});
|
|
112
|
-
expect(logSpy).toHaveBeenCalledWith(expect.stringContaining('No briefs found'));
|
|
113
|
-
});
|
|
114
|
-
});
|
|
115
|
-
(0, test_fns_1.when)('invoked with "boot --repo test --role mechanic" with symlinked directory containing files', () => {
|
|
116
|
-
beforeAll(() => {
|
|
117
|
-
// Clean up first to ensure fresh state
|
|
118
|
-
const cleanAgentDir = (0, node_path_1.resolve)(testDir, '.agent');
|
|
119
|
-
if ((0, node_fs_1.existsSync)(cleanAgentDir)) {
|
|
120
|
-
(0, node_fs_1.rmSync)(cleanAgentDir, { recursive: true, force: true });
|
|
121
|
-
}
|
|
122
|
-
// Setup: Create briefs directory
|
|
123
|
-
const briefsDir = (0, node_path_1.resolve)(testDir, '.agent/repo=test/role=mechanic/briefs');
|
|
124
|
-
(0, node_fs_1.mkdirSync)(briefsDir, { recursive: true });
|
|
125
|
-
// Create a source directory with files and subdirectories
|
|
126
|
-
const sourceDir = (0, node_path_1.resolve)(testDir, 'test-briefs/subdir');
|
|
127
|
-
(0, node_fs_1.mkdirSync)(sourceDir, { recursive: true });
|
|
128
|
-
(0, node_fs_1.writeFileSync)((0, node_path_1.resolve)(sourceDir, 'nested1.md'), '# Nested Brief 1\nThis is nested brief 1');
|
|
129
|
-
(0, node_fs_1.writeFileSync)((0, node_path_1.resolve)(sourceDir, 'nested2.md'), '# Nested Brief 2\nThis is nested brief 2');
|
|
130
|
-
// Create a subdirectory within the source directory
|
|
131
|
-
const nestedSubdir = (0, node_path_1.resolve)(sourceDir, 'deeper');
|
|
132
|
-
(0, node_fs_1.mkdirSync)(nestedSubdir, { recursive: true });
|
|
133
|
-
(0, node_fs_1.writeFileSync)((0, node_path_1.resolve)(nestedSubdir, 'deep1.md'), '# Deep Brief 1\nThis is deep brief 1');
|
|
134
|
-
(0, node_fs_1.writeFileSync)((0, node_path_1.resolve)(nestedSubdir, 'deep2.md'), '# Deep Brief 2\nThis is deep brief 2');
|
|
135
|
-
// Create a symlink to the directory (need to go up 4 levels from briefs/ to testDir root)
|
|
136
|
-
(0, node_fs_1.symlinkSync)('../../../../test-briefs/subdir', (0, node_path_1.resolve)(briefsDir, 'linked-dir'));
|
|
137
|
-
});
|
|
138
|
-
(0, test_fns_1.then)('it should print all files including those in symlinked directories', async () => {
|
|
139
|
-
// Execute boot command
|
|
140
|
-
await briefsCommand.parseAsync(['boot', '--repo', 'test', '--role', 'mechanic'], {
|
|
141
|
-
from: 'user',
|
|
142
|
-
});
|
|
143
|
-
// Check that stats show 4 files (2 in linked-dir, 2 in linked-dir/deeper)
|
|
144
|
-
expect(logSpy).toHaveBeenCalledWith(expect.stringContaining('files = 4'));
|
|
145
|
-
// Check that nested file contents were printed
|
|
146
|
-
expect(logSpy).toHaveBeenCalledWith(expect.stringContaining('began:.agent/repo=test/role=mechanic/briefs/linked-dir/nested1.md'));
|
|
147
|
-
expect(logSpy).toHaveBeenCalledWith(expect.stringContaining('This is nested brief 1'));
|
|
148
|
-
expect(logSpy).toHaveBeenCalledWith(expect.stringContaining('began:.agent/repo=test/role=mechanic/briefs/linked-dir/nested2.md'));
|
|
149
|
-
expect(logSpy).toHaveBeenCalledWith(expect.stringContaining('This is nested brief 2'));
|
|
150
|
-
// Check that deeply nested file contents were printed
|
|
151
|
-
expect(logSpy).toHaveBeenCalledWith(expect.stringContaining('began:.agent/repo=test/role=mechanic/briefs/linked-dir/deeper/deep1.md'));
|
|
152
|
-
expect(logSpy).toHaveBeenCalledWith(expect.stringContaining('This is deep brief 1'));
|
|
153
|
-
expect(logSpy).toHaveBeenCalledWith(expect.stringContaining('began:.agent/repo=test/role=mechanic/briefs/linked-dir/deeper/deep2.md'));
|
|
154
|
-
expect(logSpy).toHaveBeenCalledWith(expect.stringContaining('This is deep brief 2'));
|
|
155
|
-
});
|
|
156
|
-
});
|
|
157
|
-
});
|
|
158
|
-
});
|
|
159
|
-
//# sourceMappingURL=invokeBriefsBoot.integration.test.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"invokeBriefsBoot.integration.test.js","sourceRoot":"","sources":["../../../src/contract/cli/invokeBriefsBoot.integration.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export {};
|
|
@@ -1,97 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
const commander_1 = require("commander");
|
|
4
|
-
const node_fs_1 = require("node:fs");
|
|
5
|
-
const node_path_1 = require("node:path");
|
|
6
|
-
const test_fns_1 = require("test-fns");
|
|
7
|
-
const Role_1 = require("../../domain/objects/Role");
|
|
8
|
-
const RoleRegistry_1 = require("../../domain/objects/RoleRegistry");
|
|
9
|
-
const invokeBriefsLink_1 = require("./invokeBriefsLink");
|
|
10
|
-
describe('invokeBriefsLink (integration)', () => {
|
|
11
|
-
(0, test_fns_1.given)('a CLI program with invokeBriefsLink registered', () => {
|
|
12
|
-
const testDir = (0, node_path_1.resolve)(__dirname, './.temp/invokeBriefsLink');
|
|
13
|
-
const originalCwd = process.cwd();
|
|
14
|
-
beforeAll(() => {
|
|
15
|
-
// Create test directory structure
|
|
16
|
-
(0, node_fs_1.mkdirSync)(testDir, { recursive: true });
|
|
17
|
-
process.chdir(testDir);
|
|
18
|
-
// Create mock briefs directory
|
|
19
|
-
const briefsDir = (0, node_path_1.resolve)(testDir, 'test-briefs');
|
|
20
|
-
(0, node_fs_1.mkdirSync)(briefsDir, { recursive: true });
|
|
21
|
-
// Create mock brief files
|
|
22
|
-
(0, node_fs_1.writeFileSync)((0, node_path_1.resolve)(briefsDir, 'brief1.md'), '# Brief 1\nThis is test brief 1');
|
|
23
|
-
(0, node_fs_1.writeFileSync)((0, node_path_1.resolve)(briefsDir, 'brief2.md'), '# Brief 2\nThis is test brief 2');
|
|
24
|
-
});
|
|
25
|
-
afterAll(() => {
|
|
26
|
-
process.chdir(originalCwd);
|
|
27
|
-
});
|
|
28
|
-
// Create mock registries with a role that has briefs configured
|
|
29
|
-
const mockRole = new Role_1.Role({
|
|
30
|
-
slug: 'mechanic',
|
|
31
|
-
name: 'Mechanic',
|
|
32
|
-
purpose: 'Test mechanic role',
|
|
33
|
-
readme: 'Test readme',
|
|
34
|
-
traits: [],
|
|
35
|
-
skills: {
|
|
36
|
-
dirs: [],
|
|
37
|
-
refs: [],
|
|
38
|
-
},
|
|
39
|
-
briefs: { dirs: [{ uri: 'test-briefs' }] },
|
|
40
|
-
});
|
|
41
|
-
const mockRegistry = new RoleRegistry_1.RoleRegistry({
|
|
42
|
-
slug: 'test-registry',
|
|
43
|
-
readme: 'Test readme',
|
|
44
|
-
roles: [mockRole],
|
|
45
|
-
});
|
|
46
|
-
const briefsCommand = new commander_1.Command('briefs');
|
|
47
|
-
const logSpy = jest.spyOn(console, 'log').mockImplementation(() => { });
|
|
48
|
-
beforeEach(() => {
|
|
49
|
-
logSpy.mockClear();
|
|
50
|
-
// Clean up any existing .agent directory
|
|
51
|
-
const agentDir = (0, node_path_1.resolve)(testDir, '.agent');
|
|
52
|
-
if ((0, node_fs_1.existsSync)(agentDir)) {
|
|
53
|
-
(0, node_fs_1.rmSync)(agentDir, { recursive: true, force: true });
|
|
54
|
-
}
|
|
55
|
-
});
|
|
56
|
-
(0, invokeBriefsLink_1.invokeBriefsLink)({ command: briefsCommand, registries: [mockRegistry] });
|
|
57
|
-
(0, test_fns_1.when)('invoked with "link --repo test --role mechanic"', () => {
|
|
58
|
-
(0, test_fns_1.then)('it should create symlinks to briefs', async () => {
|
|
59
|
-
await briefsCommand.parseAsync(['link', '--repo', 'test', '--role', 'mechanic'], {
|
|
60
|
-
from: 'user',
|
|
61
|
-
});
|
|
62
|
-
// Check that .agent/repo=test/role=mechanic/briefs directory was created
|
|
63
|
-
expect((0, node_fs_1.existsSync)((0, node_path_1.resolve)(testDir, '.agent/repo=test/role=mechanic/briefs'))).toBe(true);
|
|
64
|
-
// Check that symlinks were created
|
|
65
|
-
expect((0, node_fs_1.existsSync)((0, node_path_1.resolve)(testDir, '.agent/repo=test/role=mechanic/briefs/brief1.md'))).toBe(true);
|
|
66
|
-
expect((0, node_fs_1.existsSync)((0, node_path_1.resolve)(testDir, '.agent/repo=test/role=mechanic/briefs/brief2.md'))).toBe(true);
|
|
67
|
-
// Check log output
|
|
68
|
-
expect(logSpy).toHaveBeenCalledWith(expect.stringContaining('Linking briefs for role "mechanic"'));
|
|
69
|
-
});
|
|
70
|
-
});
|
|
71
|
-
(0, test_fns_1.when)('invoked with "link" without --repo', () => {
|
|
72
|
-
(0, test_fns_1.then)('it should throw an error requiring --repo', async () => {
|
|
73
|
-
const error = await (0, test_fns_1.getError)(() => briefsCommand.parseAsync(['link', '--role', 'mechanic'], {
|
|
74
|
-
from: 'user',
|
|
75
|
-
}));
|
|
76
|
-
expect(error?.message).toContain('--repo is required');
|
|
77
|
-
});
|
|
78
|
-
});
|
|
79
|
-
(0, test_fns_1.when)('invoked with "link" without --role', () => {
|
|
80
|
-
(0, test_fns_1.then)('it should throw an error requiring --role', async () => {
|
|
81
|
-
const error = await (0, test_fns_1.getError)(() => briefsCommand.parseAsync(['link', '--repo', 'test'], {
|
|
82
|
-
from: 'user',
|
|
83
|
-
}));
|
|
84
|
-
expect(error?.message).toContain('--role is required');
|
|
85
|
-
});
|
|
86
|
-
});
|
|
87
|
-
(0, test_fns_1.when)('invoked with "link --repo test --role nonexistent"', () => {
|
|
88
|
-
(0, test_fns_1.then)('it should throw an error about role not found', async () => {
|
|
89
|
-
const error = await (0, test_fns_1.getError)(() => briefsCommand.parseAsync(['link', '--repo', 'test', '--role', 'nonexistent'], {
|
|
90
|
-
from: 'user',
|
|
91
|
-
}));
|
|
92
|
-
expect(error?.message).toContain('no role named "nonexistent"');
|
|
93
|
-
});
|
|
94
|
-
});
|
|
95
|
-
});
|
|
96
|
-
});
|
|
97
|
-
//# sourceMappingURL=invokeBriefsLink.integration.test.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"invokeBriefsLink.integration.test.js","sourceRoot":"","sources":["../../../src/contract/cli/invokeBriefsLink.integration.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export {};
|
|
@@ -1,111 +0,0 @@
|
|
|
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
|
-
const commander_1 = require("commander");
|
|
27
|
-
const promises_1 = require("node:fs/promises");
|
|
28
|
-
const path = __importStar(require("node:path"));
|
|
29
|
-
const test_fns_1 = require("test-fns");
|
|
30
|
-
const invokeChoose_1 = require("./invokeChoose");
|
|
31
|
-
// tiny fs helpers
|
|
32
|
-
const exists = async (p) => (0, promises_1.stat)(p)
|
|
33
|
-
.then(() => true)
|
|
34
|
-
.catch(() => false);
|
|
35
|
-
const read = async (p) => (await (0, promises_1.readFile)(p, 'utf8')).trim();
|
|
36
|
-
describe('invokeChoose (integration)', () => {
|
|
37
|
-
(0, test_fns_1.given)('a fixture directory with peer files', () => {
|
|
38
|
-
const fixtureRoot = path.resolve(__dirname + '/.temp/invokeChoose/');
|
|
39
|
-
const peerPrefix = 'provider.scene_6.loyalty_build.v1i2.[stories]';
|
|
40
|
-
const choiceDir = path.join(fixtureRoot);
|
|
41
|
-
const archiveDir = path.join(fixtureRoot, '.archive');
|
|
42
|
-
const peerNames = [
|
|
43
|
-
`${peerPrefix}._.md`,
|
|
44
|
-
`${peerPrefix}.v1._.md`,
|
|
45
|
-
`${peerPrefix}.v1.md`,
|
|
46
|
-
`${peerPrefix}.v1.i1.md`,
|
|
47
|
-
`${peerPrefix}.v1.i2.md`,
|
|
48
|
-
`${peerPrefix}.v1.i3.md`,
|
|
49
|
-
`${peerPrefix}.choice.v1.i3.md`,
|
|
50
|
-
`${peerPrefix}.v1.src`,
|
|
51
|
-
];
|
|
52
|
-
const peerChosen = peerNames[3]; // lets say we're choosing this one
|
|
53
|
-
const unrelated = 'random.txt'; // lets include a non peer too
|
|
54
|
-
const prepareTheScene = async () => {
|
|
55
|
-
// refresh the fixture
|
|
56
|
-
await (0, promises_1.rm)(fixtureRoot, { recursive: true, force: true });
|
|
57
|
-
await (0, promises_1.mkdir)(choiceDir, { recursive: true });
|
|
58
|
-
await (0, promises_1.mkdir)(archiveDir, { recursive: true });
|
|
59
|
-
// write peers with recognizable contents
|
|
60
|
-
await Promise.all(peerNames.map((name, index) => (0, promises_1.writeFile)(path.join(choiceDir, name), `content-${index}`)));
|
|
61
|
-
// an unrelated file that should remain untouched
|
|
62
|
-
await (0, promises_1.writeFile)(path.join(choiceDir, unrelated), 'unrelated-content');
|
|
63
|
-
console.log('🧹 fixture prepared', fixtureRoot);
|
|
64
|
-
};
|
|
65
|
-
beforeAll(async () => {
|
|
66
|
-
await prepareTheScene();
|
|
67
|
-
});
|
|
68
|
-
(0, test_fns_1.when)('invoking choose with a valid chosen attempt', () => {
|
|
69
|
-
// register command
|
|
70
|
-
const program = new commander_1.Command();
|
|
71
|
-
(0, invokeChoose_1.invokeChoose)({ program });
|
|
72
|
-
// declare the choice
|
|
73
|
-
const choicePath = path.join(choiceDir, peerChosen);
|
|
74
|
-
(0, test_fns_1.then)('it should succeed', async () => {
|
|
75
|
-
await program.parseAsync(['choose', '--choice', choicePath, '--archive', '@choice/.archive'], { from: 'user' });
|
|
76
|
-
});
|
|
77
|
-
(0, test_fns_1.then)('it should archive the peers', async () => {
|
|
78
|
-
for (const name of peerNames) {
|
|
79
|
-
const archivedPath = path.join(archiveDir, path.basename(name));
|
|
80
|
-
expect(await exists(archivedPath)).toBe(true);
|
|
81
|
-
}
|
|
82
|
-
});
|
|
83
|
-
(0, test_fns_1.then)('it should archive the peer choice with label', async () => {
|
|
84
|
-
// it should have been archived directly already
|
|
85
|
-
const choiceArchived = path.join(archiveDir, path.basename(peerChosen));
|
|
86
|
-
expect(await exists(choiceArchived)).toBe(true);
|
|
87
|
-
// it should ALSO have been archived with .choice label
|
|
88
|
-
const choiceArchivedLabeled = path.join(archiveDir, path
|
|
89
|
-
.basename(peerChosen)
|
|
90
|
-
.replace(`${peerPrefix}`, `${peerPrefix}.choice`));
|
|
91
|
-
expect(await exists(choiceArchivedLabeled)).toBe(true);
|
|
92
|
-
expect(await read(choiceArchivedLabeled)).toBe(await read(path.join(choiceDir, peerChosen)));
|
|
93
|
-
});
|
|
94
|
-
(0, test_fns_1.then)('it should keep only the .src and choice in the choice directory', async () => {
|
|
95
|
-
// chosen remains in place
|
|
96
|
-
expect(await exists(choicePath)).toBe(true);
|
|
97
|
-
// .src peers remain in place
|
|
98
|
-
expect(await exists(path.join(choiceDir, `${peerPrefix}.v1.src`))).toBe(true);
|
|
99
|
-
// non-source, non-chosen peers should be deleted from workdir
|
|
100
|
-
const shouldBeDeleted = peerNames.filter((p) => !p.endsWith('.src') && p !== peerChosen);
|
|
101
|
-
for (const name of shouldBeDeleted) {
|
|
102
|
-
expect(await exists(path.join(choiceDir, name))).toBe(false);
|
|
103
|
-
}
|
|
104
|
-
// unrelated file should remain untouched
|
|
105
|
-
expect(await exists(path.join(choiceDir, unrelated))).toBe(true);
|
|
106
|
-
expect(await read(path.join(choiceDir, unrelated))).toBe('unrelated-content');
|
|
107
|
-
});
|
|
108
|
-
});
|
|
109
|
-
});
|
|
110
|
-
});
|
|
111
|
-
//# sourceMappingURL=invokeChoose.integration.test.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"invokeChoose.integration.test.js","sourceRoot":"","sources":["../../../src/contract/cli/invokeChoose.integration.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export {};
|
|
@@ -1,62 +0,0 @@
|
|
|
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.use.repo/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.refs[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
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"invokeReadme.integration.test.js","sourceRoot":"","sources":["../../../src/contract/cli/invokeReadme.integration.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export {};
|
|
@@ -1,41 +0,0 @@
|
|
|
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
|
|
@@ -1 +0,0 @@
|
|
|
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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export {};
|
|
@@ -1,78 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
/**
|
|
4
|
-
* example thread builder
|
|
5
|
-
*/
|
|
6
|
-
const genThread = (ctx) => ({
|
|
7
|
-
context: ctx,
|
|
8
|
-
stitches: [],
|
|
9
|
-
});
|
|
10
|
-
/**
|
|
11
|
-
* Compile-time test suite using Jest
|
|
12
|
-
*/
|
|
13
|
-
describe('GStitcher', () => {
|
|
14
|
-
it('accepts single-threaded Threads', () => {
|
|
15
|
-
const stitcher = {
|
|
16
|
-
threads: {
|
|
17
|
-
artist: genThread({ role: 'artist', name: 'Zane' }),
|
|
18
|
-
},
|
|
19
|
-
context: {
|
|
20
|
-
stitch: { trail: [] },
|
|
21
|
-
log: console,
|
|
22
|
-
},
|
|
23
|
-
output: 'done',
|
|
24
|
-
};
|
|
25
|
-
expect(stitcher.output).toBe('done');
|
|
26
|
-
});
|
|
27
|
-
it('accepts multi-threaded Threads using Threads<..., "multiple">', () => {
|
|
28
|
-
const stitcher = {
|
|
29
|
-
threads: {
|
|
30
|
-
artist: {
|
|
31
|
-
seed: genThread({ role: 'artist', name: 'Zane' }),
|
|
32
|
-
peers: [genThread({ role: 'artist', name: 'Zane' })],
|
|
33
|
-
},
|
|
34
|
-
},
|
|
35
|
-
context: {
|
|
36
|
-
stitch: { trail: [] },
|
|
37
|
-
log: console,
|
|
38
|
-
},
|
|
39
|
-
output: 'done',
|
|
40
|
-
};
|
|
41
|
-
expect(stitcher.threads.artist.peers[0]?.context.name).toBe('Zane');
|
|
42
|
-
});
|
|
43
|
-
it('rejects invalid thread shape', () => {
|
|
44
|
-
// @ts-expect-error - artist must be a Thread or Thread[]
|
|
45
|
-
const stitcher = {
|
|
46
|
-
threads: {
|
|
47
|
-
artist: 'not-a-thread',
|
|
48
|
-
},
|
|
49
|
-
context: {
|
|
50
|
-
stitch: { trail: [] },
|
|
51
|
-
log: console,
|
|
52
|
-
},
|
|
53
|
-
output: 'fail',
|
|
54
|
-
};
|
|
55
|
-
expect(stitcher);
|
|
56
|
-
});
|
|
57
|
-
describe('Stitcher<GStitcher>', () => {
|
|
58
|
-
// ✅ Positive, single
|
|
59
|
-
it('should allow Stitcher<GStitcher> with Threads<..., "single">', () => {
|
|
60
|
-
const assert = null;
|
|
61
|
-
expect(assert).toBeNull();
|
|
62
|
-
});
|
|
63
|
-
// ✅ Positive, multiple
|
|
64
|
-
it('only allow StitchStep<GStitcher> with Threads<..., "multiple">', () => {
|
|
65
|
-
const assert = null;
|
|
66
|
-
expect(assert).toBeNull();
|
|
67
|
-
});
|
|
68
|
-
// ❌ Negative, single
|
|
69
|
-
it('should reject Stitcher<GStitcher> with non-Thread single shape', () => {
|
|
70
|
-
expect(true).toBe(true);
|
|
71
|
-
});
|
|
72
|
-
// ❌ Negative, multiple
|
|
73
|
-
it('should reject Stitcher<GStitcher> with non-Thread[] multiple shape', () => {
|
|
74
|
-
expect(true).toBe(true);
|
|
75
|
-
});
|
|
76
|
-
});
|
|
77
|
-
});
|
|
78
|
-
//# sourceMappingURL=Stitcher.test.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"Stitcher.test.js","sourceRoot":"","sources":["../../../src/domain/objects/Stitcher.test.ts"],"names":[],"mappings":";;AAUA;;GAEG;AACH,MAAM,SAAS,GAAG,CAAI,GAAM,EAAa,EAAE,CAAC,CAAC;IAC3C,OAAO,EAAE,GAAG;IACZ,QAAQ,EAAE,EAAE;CACb,CAAC,CAAC;AAEH;;GAEG;AACH,QAAQ,CAAC,WAAW,EAAE,GAAG,EAAE;IAGzB,EAAE,CAAC,iCAAiC,EAAE,GAAG,EAAE;QAGzC,MAAM,QAAQ,GAAkD;YAC9D,OAAO,EAAE;gBACP,MAAM,EAAE,SAAS,CAAC,EAAE,IAAI,EAAE,QAAiB,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;aAC7D;YACD,OAAO,EAAE;gBACP,MAAM,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE;gBACrB,GAAG,EAAE,OAAO;aACb;YACD,MAAM,EAAE,MAAM;SACf,CAAC;QAEF,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACvC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,+DAA+D,EAAE,GAAG,EAAE;QAGvE,MAAM,QAAQ,GAAiD;YAC7D,OAAO,EAAE;gBACP,MAAM,EAAE;oBACN,IAAI,EAAE,SAAS,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;oBACjD,KAAK,EAAE,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC;iBACrD;aACF;YACD,OAAO,EAAE;gBACP,MAAM,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE;gBACrB,GAAG,EAAE,OAAO;aACb;YACD,MAAM,EAAE,MAAM;SACf,CAAC;QAEF,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACtE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,8BAA8B,EAAE,GAAG,EAAE;QAKtC,yDAAyD;QACzD,MAAM,QAAQ,GAAmD;YAC/D,OAAO,EAAE;gBACP,MAAM,EAAE,cAAc;aACvB;YACD,OAAO,EAAE;gBACP,MAAM,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE;gBACrB,GAAG,EAAE,OAAO;aACb;YACD,MAAM,EAAE,MAAM;SACf,CAAC;QACF,MAAM,CAAC,QAAQ,CAAC,CAAC;IACnB,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,qBAAqB,EAAE,GAAG,EAAE;QACnC,qBAAqB;QACrB,EAAE,CAAC,8DAA8D,EAAE,GAAG,EAAE;YAMtE,MAAM,MAAM,GAAa,IAAI,CAAC;YAC9B,MAAM,CAAC,MAAM,CAAC,CAAC,QAAQ,EAAE,CAAC;QAC5B,CAAC,CAAC,CAAC;QAEH,uBAAuB;QACvB,EAAE,CAAC,gEAAgE,EAAE,GAAG,EAAE;YAMxE,MAAM,MAAM,GAAa,IAAI,CAAC;YAC9B,MAAM,CAAC,MAAM,CAAC,CAAC,QAAQ,EAAE,CAAC;QAC5B,CAAC,CAAC,CAAC;QAEH,qBAAqB;QACrB,EAAE,CAAC,gEAAgE,EAAE,GAAG,EAAE;YAQxE,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC1B,CAAC,CAAC,CAAC;QAEH,uBAAuB;QACvB,EAAE,CAAC,oEAAoE,EAAE,GAAG,EAAE;YAQ5E,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC1B,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export {};
|