rhachet 1.18.0 → 1.19.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 (55) hide show
  1. package/dist/_topublish/rhachet-brain-openai/src/repls/genBrainRepl.js +3 -1
  2. package/dist/_topublish/rhachet-brain-openai/src/repls/genBrainRepl.js.map +1 -1
  3. package/dist/contract/cli/invoke.js +14 -2
  4. package/dist/contract/cli/invoke.js.map +1 -1
  5. package/dist/contract/cli/invokeAct.d.ts +14 -0
  6. package/dist/contract/cli/invokeAct.js +92 -0
  7. package/dist/contract/cli/invokeAct.js.map +1 -0
  8. package/dist/contract/cli/invokeAsk.d.ts +4 -1
  9. package/dist/contract/cli/invokeAsk.js +84 -21
  10. package/dist/contract/cli/invokeAsk.js.map +1 -1
  11. package/dist/contract/cli/invokeRun.d.ts +6 -2
  12. package/dist/contract/cli/invokeRun.js +111 -18
  13. package/dist/contract/cli/invokeRun.js.map +1 -1
  14. package/dist/contract/sdk.d.ts +1 -0
  15. package/dist/contract/sdk.js +3 -1
  16. package/dist/contract/sdk.js.map +1 -1
  17. package/dist/domain.objects/Actor.d.ts +94 -0
  18. package/dist/domain.objects/Actor.js +18 -0
  19. package/dist/domain.objects/Actor.js.map +1 -0
  20. package/dist/domain.objects/ActorRoleSkill.d.ts +41 -0
  21. package/dist/domain.objects/ActorRoleSkill.js +8 -0
  22. package/dist/domain.objects/ActorRoleSkill.js.map +1 -0
  23. package/dist/domain.objects/InvokeHooks.d.ts +38 -1
  24. package/dist/domain.objects/Role.d.ts +43 -2
  25. package/dist/domain.objects/Role.js +9 -0
  26. package/dist/domain.objects/Role.js.map +1 -1
  27. package/dist/domain.objects/index.d.ts +2 -0
  28. package/dist/domain.objects/index.js +2 -0
  29. package/dist/domain.objects/index.js.map +1 -1
  30. package/dist/domain.operations/actor/actorAct.d.ts +15 -0
  31. package/dist/domain.operations/actor/actorAct.js +30 -0
  32. package/dist/domain.operations/actor/actorAct.js.map +1 -0
  33. package/dist/domain.operations/actor/actorAsk.d.ts +15 -0
  34. package/dist/domain.operations/actor/actorAsk.js +32 -0
  35. package/dist/domain.operations/actor/actorAsk.js.map +1 -0
  36. package/dist/domain.operations/actor/actorRun.d.ts +11 -0
  37. package/dist/domain.operations/actor/actorRun.js +25 -0
  38. package/dist/domain.operations/actor/actorRun.js.map +1 -0
  39. package/dist/domain.operations/actor/findActorBrainInAllowlist.d.ts +16 -0
  40. package/dist/domain.operations/actor/findActorBrainInAllowlist.js +33 -0
  41. package/dist/domain.operations/actor/findActorBrainInAllowlist.js.map +1 -0
  42. package/dist/domain.operations/actor/findActorRoleSkillBySlug.d.ts +13 -0
  43. package/dist/domain.operations/actor/findActorRoleSkillBySlug.js +68 -0
  44. package/dist/domain.operations/actor/findActorRoleSkillBySlug.js.map +1 -0
  45. package/dist/domain.operations/actor/genActor.d.ts +18 -0
  46. package/dist/domain.operations/actor/genActor.js +98 -0
  47. package/dist/domain.operations/actor/genActor.js.map +1 -0
  48. package/dist/domain.operations/invoke/executeSkill.d.ts +3 -1
  49. package/dist/domain.operations/invoke/executeSkill.js +16 -3
  50. package/dist/domain.operations/invoke/executeSkill.js.map +1 -1
  51. package/dist/domain.operations/invoke/getBrainReplsByOpts.d.ts +14 -0
  52. package/dist/domain.operations/invoke/getBrainReplsByOpts.js +43 -0
  53. package/dist/domain.operations/invoke/getBrainReplsByOpts.js.map +1 -0
  54. package/package.json +1 -1
  55. package/readme.md +175 -34
@@ -77,9 +77,11 @@ const invokeCodex = async (input) => {
77
77
  */
78
78
  const genBrainRepl = (input) => {
79
79
  const config = CONFIG_BY_SLUG[input.slug];
80
+ // extract model slug without the repo prefix (e.g., 'openai/codex' -> 'codex')
81
+ const modelSlug = input.slug.replace(/^openai\//, '');
80
82
  return new BrainRepl_1.BrainRepl({
81
83
  repo: 'openai',
82
- slug: input.slug,
84
+ slug: modelSlug,
83
85
  description: config.description,
84
86
  /**
85
87
  * .what = readonly analysis (research, queries, code review)
@@ -1 +1 @@
1
- {"version":3,"file":"genBrainRepl.js","sourceRoot":"","sources":["../../../../../src/_topublish/rhachet-brain-openai/src/repls/genBrainRepl.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"genBrainRepl.js","sourceRoot":"","sources":["../../../../../src/_topublish/rhachet-brain-openai/src/repls/genBrainRepl.ts"],"names":[],"mappings":"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"}
@@ -5,9 +5,11 @@ const commander_1 = require("commander");
5
5
  const helpful_errors_1 = require("helpful-errors");
6
6
  const rhachet_artifact_git_1 = require("rhachet-artifact-git");
7
7
  const assureUniqueRoles_1 = require("../../domain.operations/invoke/assureUniqueRoles");
8
+ const getBrainReplsByOpts_1 = require("../../domain.operations/invoke/getBrainReplsByOpts");
8
9
  const getInvokeHooksByOpts_1 = require("../../domain.operations/invoke/getInvokeHooksByOpts");
9
10
  const getRegistriesByOpts_1 = require("../../domain.operations/invoke/getRegistriesByOpts");
10
11
  const node_path_1 = require("node:path");
12
+ const invokeAct_1 = require("./invokeAct");
11
13
  const invokeAsk_1 = require("./invokeAsk");
12
14
  const invokeChoose_1 = require("./invokeChoose");
13
15
  const invokeInit_1 = require("./invokeInit");
@@ -46,6 +48,9 @@ const invoke = async (input) => {
46
48
  const registries = await (0, getRegistriesByOpts_1.getRegistriesByOpts)({
47
49
  opts: { config: configPath },
48
50
  });
51
+ const brains = await (0, getBrainReplsByOpts_1.getBrainReplsByOpts)({
52
+ opts: { config: configPath },
53
+ });
49
54
  const hooks = await (0, getInvokeHooksByOpts_1.getInvokeHooksByOpts)({
50
55
  opts: { config: configPath }, // todo: maybe, getConfigByOpts ? returns both?
51
56
  });
@@ -65,9 +70,16 @@ const invoke = async (input) => {
65
70
  (0, invokeReadme_1.invokeReadme)({ program, registries });
66
71
  (0, invokeList_1.invokeList)({ program, registries });
67
72
  (0, invokeRoles_1.invokeRoles)({ program, registries });
68
- (0, invokeRun_1.invokeRun)({ program });
73
+ (0, invokeRun_1.invokeRun)({ program, registries, brains });
69
74
  (0, invokeChoose_1.invokeChoose)({ program });
70
- (0, invokeAsk_1.invokeAsk)({ program, config: { path: configPath }, registries, hooks });
75
+ (0, invokeAsk_1.invokeAsk)({
76
+ program,
77
+ config: { path: configPath },
78
+ registries,
79
+ brains,
80
+ hooks,
81
+ });
82
+ (0, invokeAct_1.invokeAct)({ program, registries, brains, hooks });
71
83
  // invoke it
72
84
  await program.parseAsync(input.args, { from: 'user' }).catch((error) => {
73
85
  if (error instanceof helpful_errors_1.BadRequestError) {
@@ -1 +1 @@
1
- {"version":3,"file":"invoke.js","sourceRoot":"","sources":["../../../src/contract/cli/invoke.ts"],"names":[],"mappings":";;;AAAA,yCAAoC;AACpC,mDAAiD;AACjD,+DAAsD;AAEtD,uFAAoF;AACpF,6FAA0F;AAC1F,2FAAwF;AAExF,yCAAoC;AACpC,2CAAwC;AACxC,iDAA8C;AAC9C,6CAA0C;AAC1C,6CAA0C;AAC1C,iDAA8C;AAC9C,+CAA4C;AAC5C,2CAAwC;AAExC;;;;;;;;GAQG;AACI,MAAM,MAAM,GAAG,KAAK,EAAE,KAAyB,EAAiB,EAAE;IACvE,8EAA8E;IAC9E,6EAA6E;IAC7E,IAAI,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,MAAM,EAAE,CAAC;QAC7B,MAAM,OAAO,GAAG,IAAI,mBAAO,EAAE,CAAC;QAC9B,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QACxB,IAAA,uBAAU,EAAC,EAAE,OAAO,EAAE,CAAC,CAAC;QACxB,MAAM,OAAO,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC;QACvD,OAAO;IACT,CAAC;IAED,6BAA6B;IAC7B,MAAM,SAAS,GAAG,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,UAAU,IAAI,CAAC,KAAK,IAAI,CAAC,CAAC;IAC9E,MAAM,kBAAkB,GACtB,SAAS,IAAI,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC;QACzC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,GAAG,CAAC,CAAE;QAC5B,CAAC,CAAC,SAAS,CAAC;IAChB,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE;IAC7B,MAAM,UAAU,GAAG,kBAAkB;QACnC,CAAC,CAAC,IAAA,mBAAO,EAAC,GAAG,EAAE,kBAAkB,CAAC;QAClC,CAAC,CAAC,IAAA,mBAAO,EAAC,MAAM,IAAA,qCAAc,EAAC,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,EAAE,gBAAgB,CAAC,CAAC;IACnE,MAAM,UAAU,GAAG,MAAM,IAAA,yCAAmB,EAAC;QAC3C,IAAI,EAAE,EAAE,MAAM,EAAE,UAAU,EAAE;KAC7B,CAAC,CAAC;IACH,MAAM,KAAK,GAAG,MAAM,IAAA,2CAAoB,EAAC;QACvC,IAAI,EAAE,EAAE,MAAM,EAAE,UAAU,EAAE,EAAE,+CAA+C;KAC9E,CAAC,CAAC;IAEH,8FAA8F;IAC9F,MAAM,IAAA,qCAAiB,EAAC,UAAU,CAAC,CAAC;IAEpC,0BAA0B;IAC1B,MAAM,OAAO,GAAG,IAAI,mBAAO,EAAE,CAAC;IAC9B,OAAO,CAAC,eAAe,CAAC;QACtB,QAAQ,EAAE,CAAC,GAAG,EAAE,EAAE;YAChB,OAAO,CAAC,KAAK,CAAC,mBAAmB,EAAE,GAAG,CAAC,CAAC;QAC1C,CAAC;KACF,CAAC,CAAC;IACH,OAAO;SACJ,IAAI,CAAC,SAAS,CAAC;SACf,WAAW,CACV,mFAAmF,CACpF;SACA,MAAM,CAAC,qBAAqB,EAAE,yCAAyC,CAAC,CAAC,CAAC,8EAA8E;IAC3J,IAAA,2BAAY,EAAC,EAAE,OAAO,EAAE,UAAU,EAAE,CAAC,CAAC;IACtC,IAAA,uBAAU,EAAC,EAAE,OAAO,EAAE,UAAU,EAAE,CAAC,CAAC;IACpC,IAAA,yBAAW,EAAC,EAAE,OAAO,EAAE,UAAU,EAAE,CAAC,CAAC;IACrC,IAAA,qBAAS,EAAC,EAAE,OAAO,EAAE,CAAC,CAAC;IACvB,IAAA,2BAAY,EAAC,EAAE,OAAO,EAAE,CAAC,CAAC;IAC1B,IAAA,qBAAS,EAAC,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,EAAE,UAAU,EAAE,KAAK,EAAE,CAAC,CAAC;IAExE,YAAY;IACZ,MAAM,OAAO,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;QACrE,IAAI,KAAK,YAAY,gCAAe,EAAE,CAAC;YACrC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;YAClB,OAAO,CAAC,KAAK,CAAC,KAAK,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;YACpC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;YAClB,OAAO,CAAC,KAAK,CAAC,UAAU,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC;YACtC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;YAClB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QACD,MAAM,KAAK,CAAC;IACd,CAAC,CAAC,CAAC;AACL,CAAC,CAAC;AA/DW,QAAA,MAAM,UA+DjB"}
1
+ {"version":3,"file":"invoke.js","sourceRoot":"","sources":["../../../src/contract/cli/invoke.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,14 @@
1
+ import type { Command } from 'commander';
2
+ import type { BrainRepl } from '../../domain.objects/BrainRepl';
3
+ import type { InvokeHooks } from '../../domain.objects/InvokeHooks';
4
+ import type { RoleRegistry } from '../../domain.objects/RoleRegistry';
5
+ /**
6
+ * .what = adds the "act" command to the CLI
7
+ * .why = invokes a rigid skill with brain from any role in the given registries
8
+ */
9
+ export declare const invokeAct: ({ program, registries, brains, hooks, }: {
10
+ program: Command;
11
+ registries: RoleRegistry[];
12
+ brains: BrainRepl[];
13
+ hooks: null | InvokeHooks;
14
+ }) => void;
@@ -0,0 +1,92 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.invokeAct = void 0;
4
+ const helpful_errors_1 = require("helpful-errors");
5
+ const genActor_1 = require("../../domain.operations/actor/genActor");
6
+ const assureFindRole_1 = require("../../domain.operations/invoke/assureFindRole");
7
+ const node_fs_1 = require("node:fs");
8
+ const node_path_1 = require("node:path");
9
+ /**
10
+ * .what = adds the "act" command to the CLI
11
+ * .why = invokes a rigid skill with brain from any role in the given registries
12
+ */
13
+ const invokeAct = ({ program, registries, brains, hooks, }) => {
14
+ const actCommand = program
15
+ .command('act')
16
+ .description('invoke a rigid skill with brain')
17
+ .requiredOption('-r, --role <slug>', 'role to invoke')
18
+ .requiredOption('-s, --skill <slug>', 'skill to invoke')
19
+ .option('-b, --brain <ref>', 'brain to use (format: repo/slug)')
20
+ .option('-i, --input <json>', 'input JSON for the skill')
21
+ .option('-o, --output <path>', 'output file path')
22
+ .option('--attempts <int>', 'number of independent outputs (requires -o/--output)')
23
+ .option('--concurrency <int>', 'parallel subthreads limit (default 3)')
24
+ .allowUnknownOption(true)
25
+ .allowExcessArguments(true);
26
+ // 🧠 perform the skill
27
+ actCommand.action(async (opts) => {
28
+ // validate brains are available
29
+ if (brains.length === 0)
30
+ throw new helpful_errors_1.BadRequestError('no brains available. add getBrainRepls() to your rhachet.use.ts');
31
+ // find the role
32
+ const role = (0, assureFindRole_1.assureFindRole)({ registries, slug: opts.role });
33
+ if (!role)
34
+ throw new helpful_errors_1.BadRequestError(`role "${opts.role}" not found`, {
35
+ availableRoles: registries.flatMap((r) => r.roles.map((rr) => rr)),
36
+ });
37
+ // resolve brain reference if provided
38
+ let brainRef;
39
+ if (opts.brain) {
40
+ // split on first '/' only; slug may contain additional slashes
41
+ const firstSlashIndex = opts.brain.indexOf('/');
42
+ if (firstSlashIndex === -1)
43
+ throw new helpful_errors_1.BadRequestError(`invalid brain format "${opts.brain}". expected: repo/slug`);
44
+ const repo = opts.brain.slice(0, firstSlashIndex);
45
+ const slug = opts.brain.slice(firstSlashIndex + 1);
46
+ if (!repo || !slug)
47
+ throw new helpful_errors_1.BadRequestError(`invalid brain format "${opts.brain}". expected: repo/slug`);
48
+ brainRef = { repo, slug };
49
+ }
50
+ // create actor with all available brains
51
+ const actor = (0, genActor_1.genActor)({ role, brains });
52
+ // parse skill input
53
+ const skillArgs = opts.input ? JSON.parse(opts.input) : {};
54
+ // apply hooks if present
55
+ const inputWithHooks = hooks?.onInvokeActInput
56
+ ? hooks.onInvokeActInput({ skill: opts.skill, input: skillArgs })
57
+ : skillArgs;
58
+ // determine number of attempts
59
+ const attempts = opts.attempts ? parseInt(opts.attempts, 10) : 1;
60
+ // validate attempts requires output
61
+ if (attempts > 1 && !opts.output)
62
+ throw new helpful_errors_1.BadRequestError('--attempts requires --output path');
63
+ // execute skill for each attempt
64
+ for (let attempt = 1; attempt <= attempts; attempt++) {
65
+ // log which skill will run
66
+ console.log(``);
67
+ console.log(`🔩 skill "${opts.skill}" from role="${opts.role}" attempt=${attempt}/${attempts}`);
68
+ console.log(``);
69
+ // invoke actor.act with skill
70
+ const result = await actor.act({
71
+ brain: brainRef,
72
+ skill: { [opts.skill]: inputWithHooks },
73
+ });
74
+ // handle output
75
+ if (opts.output) {
76
+ // for multiple attempts, suffix with attempt number
77
+ const outputPath = attempts > 1
78
+ ? opts.output.replace(/(\.\w+)$/, `.i${attempt}$1`)
79
+ : opts.output;
80
+ const resolvedPath = (0, node_path_1.resolve)(process.cwd(), outputPath);
81
+ (0, node_fs_1.writeFileSync)(resolvedPath, JSON.stringify(result, null, 2));
82
+ console.log(`📝 output written to ${outputPath}`);
83
+ }
84
+ else {
85
+ // output to stdout
86
+ console.log(JSON.stringify(result, null, 2));
87
+ }
88
+ }
89
+ });
90
+ };
91
+ exports.invokeAct = invokeAct;
92
+ //# sourceMappingURL=invokeAct.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"invokeAct.js","sourceRoot":"","sources":["../../../src/contract/cli/invokeAct.ts"],"names":[],"mappings":"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"}
@@ -1,15 +1,18 @@
1
1
  import type { Command } from 'commander';
2
+ import type { BrainRepl } from '../../domain.objects/BrainRepl';
2
3
  import type { InvokeHooks } from '../../domain.objects/InvokeHooks';
3
4
  import type { RoleRegistry } from '../../domain.objects/RoleRegistry';
4
5
  /**
5
6
  * .what = adds the "ask" command to the CLI
6
7
  * .why = lets users invoke a skill from any role in the given registries
8
+ * or start a fluid conversation with an actor (when no --skill)
7
9
  */
8
- export declare const invokeAsk: ({ program, registries, ...input }: {
10
+ export declare const invokeAsk: ({ program, registries, brains, ...input }: {
9
11
  program: Command;
10
12
  config: {
11
13
  path: string;
12
14
  };
13
15
  registries: RoleRegistry[];
16
+ brains: BrainRepl[];
14
17
  hooks: null | InvokeHooks;
15
18
  }) => void;
@@ -2,27 +2,82 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.invokeAsk = void 0;
4
4
  const helpful_errors_1 = require("helpful-errors");
5
+ const genActor_1 = require("../../domain.operations/actor/genActor");
5
6
  const assureFindRole_1 = require("../../domain.operations/invoke/assureFindRole");
6
7
  const onInvokeAskInput_1 = require("../../domain.operations/invoke/hooks/onInvokeAskInput");
7
8
  const performInCurrentThread_1 = require("../../domain.operations/invoke/performInCurrentThread");
8
9
  const performInIsolatedThreads_1 = require("../../domain.operations/invoke/performInIsolatedThreads");
10
+ /**
11
+ * .what = performs ask via stitch-mode (--skill invocation)
12
+ * .why = executes a registered skill with deterministic stitch-threads
13
+ */
14
+ const performAskViaStitchMode = async (input) => {
15
+ // instantiate the composed argv
16
+ const argvWithAsk = {
17
+ ...input.opts,
18
+ ask: input.opts.ask ??
19
+ helpful_errors_1.UnexpectedCodePathError.throw('ask was not declared', {
20
+ opts: input.opts,
21
+ }),
22
+ config: input.config.path, // required for isolated child threads when used with attempts
23
+ };
24
+ // apply the onInvokeAskHooks
25
+ const argvWithHooks = input.hooks
26
+ ? (0, onInvokeAskInput_1.onInvokeAskInput)({ opts: argvWithAsk, hooks: input.hooks })
27
+ : argvWithAsk;
28
+ // if attempts were requested, perform the skill in isolated threads per attempt
29
+ if (input.opts.attempts)
30
+ return await (0, performInIsolatedThreads_1.performInIsolatedThreads)({ opts: argvWithHooks });
31
+ // otherwise, perform in the main thread by default
32
+ return await (0, performInCurrentThread_1.performInCurrentThread)({
33
+ opts: argvWithHooks,
34
+ registries: input.registries,
35
+ });
36
+ };
37
+ /**
38
+ * .what = performs ask via actor-mode (fluid brain conversation)
39
+ * .why = enables open-ended conversation with a role via brain.repl
40
+ */
41
+ const performAskViaActorMode = async (input) => {
42
+ // validate brains are available
43
+ if (input.brains.length === 0)
44
+ throw new helpful_errors_1.BadRequestError('no brains available. add getBrainRepls() to your rhachet.use.ts');
45
+ // create actor with all available brains
46
+ const actor = (0, genActor_1.genActor)({ role: input.role, brains: input.brains });
47
+ // validate prompt is provided
48
+ if (!input.opts.ask)
49
+ throw new helpful_errors_1.BadRequestError('--ask is required (e.g., --ask "review my code")');
50
+ // log which role will be asked
51
+ console.log(``);
52
+ console.log(`🌊 ask role="${input.opts.role}"`);
53
+ console.log(``);
54
+ // invoke actor.ask
55
+ const result = await actor.ask({ prompt: input.opts.ask });
56
+ // output response
57
+ console.log(result.response);
58
+ };
9
59
  /**
10
60
  * .what = adds the "ask" command to the CLI
11
61
  * .why = lets users invoke a skill from any role in the given registries
62
+ * or start a fluid conversation with an actor (when no --skill)
12
63
  */
13
- const invokeAsk = ({ program, registries, ...input }) => {
64
+ const invokeAsk = ({ program, registries, brains, ...input }) => {
14
65
  const askCommand = program
15
66
  .command('ask')
67
+ .description('invoke a skill or start a fluid conversation with an actor')
16
68
  .requiredOption('-r, --role <slug>', 'role to invoke')
17
- .requiredOption('-s, --skill <slug>', 'skill to invoke')
18
- .option('-a, --ask <ask>', 'your ask')
69
+ .option('-s, --skill <slug>', 'skill to invoke (stitch-mode)')
70
+ .option('-a, --ask <ask>', 'your ask or prompt')
19
71
  .option('--attempts <int>', 'number of independent outputs (requires -o/--output)')
20
72
  .option('--concurrency <int>', 'parallel subthreads limit (default 3)')
21
73
  .allowUnknownOption(true)
22
74
  .allowExcessArguments(true);
23
- // 💉 dynamically inject CLI flags from skill inputs
75
+ // 💉 dynamically inject CLI flags from skill inputs (only in stitch-mode)
24
76
  askCommand.hook('preAction', (thisCommand) => {
25
77
  const opts = thisCommand.opts();
78
+ // skip dynamic injection if no skill specified (actor-mode)
79
+ if (!opts.skill)
80
+ return;
26
81
  const role = (0, assureFindRole_1.assureFindRole)({ registries, slug: opts.role });
27
82
  const skill = role?.skills.refs.find((s) => s.slug === opts.skill);
28
83
  if (!skill)
@@ -42,24 +97,32 @@ const invokeAsk = ({ program, registries, ...input }) => {
42
97
  // re-parse with updated option definitions
43
98
  thisCommand.parseOptions(thisCommand.parent?.args ?? []);
44
99
  });
45
- // 🧠 perform the skill
100
+ // 🧠 perform the skill or actor conversation
46
101
  askCommand.action(async (opts) => {
47
- // instantiate the composed argv
48
- const argvWithAsk = {
49
- ...opts,
50
- ask: opts.ask ??
51
- helpful_errors_1.UnexpectedCodePathError.throw('ask was not declared', { opts }),
52
- config: input.config.path, // required for isolated child threads when used with attempts
53
- };
54
- // apply the onInvokeAskHooks
55
- const argvWithHooks = input.hooks
56
- ? (0, onInvokeAskInput_1.onInvokeAskInput)({ opts: argvWithAsk, hooks: input.hooks })
57
- : argvWithAsk;
58
- // if attempts were requested, perform the skill in isolated threads per attempt
59
- if (opts.attempts)
60
- return await (0, performInIsolatedThreads_1.performInIsolatedThreads)({ opts: argvWithHooks });
61
- // otherwise, perform in the main thread by default
62
- return await (0, performInCurrentThread_1.performInCurrentThread)({ opts: argvWithHooks, registries });
102
+ // determine which mode to use
103
+ const isStitchMode = opts.skill !== undefined;
104
+ const isActorMode = !isStitchMode;
105
+ // 🧵 stitch-mode: invoke skill via thread stitching
106
+ if (isStitchMode) {
107
+ const skill = opts.skill; // asserted as string (validated by isStitchMode)
108
+ return await performAskViaStitchMode({
109
+ opts: { ...opts, skill },
110
+ config: input.config,
111
+ registries,
112
+ hooks: input.hooks,
113
+ });
114
+ }
115
+ // 🌊 actor-mode: invoke fluid conversation via brain.repl
116
+ if (isActorMode) {
117
+ const role = (0, assureFindRole_1.assureFindRole)({ registries, slug: opts.role });
118
+ if (!role)
119
+ throw new helpful_errors_1.BadRequestError(`role "${opts.role}" not found`, {
120
+ availableRoles: registries.flatMap((r) => r.roles),
121
+ });
122
+ return await performAskViaActorMode({ opts, role, brains });
123
+ }
124
+ // neither mode matched - unexpected
125
+ throw new helpful_errors_1.UnexpectedCodePathError('invokeAsk: neither stitch-mode nor actor-mode matched', { opts });
63
126
  });
64
127
  };
65
128
  exports.invokeAsk = invokeAsk;
@@ -1 +1 @@
1
- {"version":3,"file":"invokeAsk.js","sourceRoot":"","sources":["../../../src/contract/cli/invokeAsk.ts"],"names":[],"mappings":";;;AACA,mDAA0E;AAK1E,iFAA8E;AAC9E,2FAAwF;AACxF,iGAA8F;AAC9F,qGAAkG;AAElG;;;GAGG;AACI,MAAM,SAAS,GAAG,CAAC,EACxB,OAAO,EACP,UAAU,EACV,GAAG,KAAK,EAMT,EAAQ,EAAE;IACT,MAAM,UAAU,GAAG,OAAO;SACvB,OAAO,CAAC,KAAK,CAAC;SACd,cAAc,CAAC,mBAAmB,EAAE,gBAAgB,CAAC;SACrD,cAAc,CAAC,oBAAoB,EAAE,iBAAiB,CAAC;SACvD,MAAM,CAAC,iBAAiB,EAAE,UAAU,CAAC;SACrC,MAAM,CACL,kBAAkB,EAClB,sDAAsD,CACvD;SACA,MAAM,CAAC,qBAAqB,EAAE,uCAAuC,CAAC;SACtE,kBAAkB,CAAC,IAAI,CAAC;SACxB,oBAAoB,CAAC,IAAI,CAAC,CAAC;IAE9B,oDAAoD;IACpD,UAAU,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,WAAW,EAAE,EAAE;QAC3C,MAAM,IAAI,GAAG,WAAW,CAAC,IAAI,EAAE,CAAC;QAEhC,MAAM,IAAI,GAAG,IAAA,+BAAc,EAAC,EAAE,UAAU,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;QAC7D,MAAM,KAAK,GAAG,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,KAAK,CAAC,CAAC;QACnE,IAAI,CAAC,KAAK;YACR,gCAAe,CAAC,KAAK,CACnB,mBAAmB,IAAI,CAAC,KAAK,iBAAiB,IAAI,CAAC,IAAI,GAAG,EAC1D;gBACE,IAAI;gBACJ,IAAI,EAAE;oBACJ,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC;iBAC7D;aACF,CACF,CAAC;QAEJ,8BAA8B;QAC9B,KAAK,MAAM,CAAC,GAAG,EAAE,IAAI,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;YAC/D,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;YAC7C,MAAM,UAAU,GAAG,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;YAC/D,MAAM,SAAS,GAAG,UAAU,CAAC,CAAC,CAAC,IAAI,UAAU,GAAG,CAAC,CAAC,CAAC,IAAI,UAAU,GAAG,CAAC;YACrE,WAAW,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC,IAAI,OAAO,GAAG,IAAI,SAAS,EAAE,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;QACxE,CAAC;QAED,2CAA2C;QAC3C,WAAW,CAAC,YAAY,CAAC,WAAW,CAAC,MAAM,EAAE,IAAI,IAAI,EAAE,CAAC,CAAC;IAC3D,CAAC,CAAC,CAAC;IAEH,uBAAuB;IACvB,UAAU,CAAC,MAAM,CAAC,KAAK,EAAE,IAA4B,EAAE,EAAE;QACvD,gCAAgC;QAChC,MAAM,WAAW,GAAgD;YAC/D,GAAG,IAAI;YACP,GAAG,EACD,IAAI,CAAC,GAAG;gBACR,wCAAuB,CAAC,KAAK,CAAC,sBAAsB,EAAE,EAAE,IAAI,EAAE,CAAC;YACjE,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC,IAAI,EAAE,8DAA8D;SAC1F,CAAC;QAEF,6BAA6B;QAC7B,MAAM,aAAa,GACjB,KAAK,CAAC,KAAK;YACT,CAAC,CAAC,IAAA,mCAAgB,EAAC,EAAE,IAAI,EAAE,WAAW,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,CAAC;YAC7D,CAAC,CAAC,WAAW,CAAC;QAElB,gFAAgF;QAChF,IAAI,IAAI,CAAC,QAAQ;YACf,OAAO,MAAM,IAAA,mDAAwB,EAAC,EAAE,IAAI,EAAE,aAAa,EAAE,CAAC,CAAC;QAEjE,mDAAmD;QACnD,OAAO,MAAM,IAAA,+CAAsB,EAAC,EAAE,IAAI,EAAE,aAAa,EAAE,UAAU,EAAE,CAAC,CAAC;IAC3E,CAAC,CAAC,CAAC;AACL,CAAC,CAAC;AA5EW,QAAA,SAAS,aA4EpB"}
1
+ {"version":3,"file":"invokeAsk.js","sourceRoot":"","sources":["../../../src/contract/cli/invokeAsk.ts"],"names":[],"mappings":"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"}
@@ -1,8 +1,12 @@
1
1
  import type { Command } from 'commander';
2
+ import type { BrainRepl } from '../../domain.objects/BrainRepl';
3
+ import type { RoleRegistry } from '../../domain.objects/RoleRegistry';
2
4
  /**
3
5
  * .what = adds the "run" command to the CLI
4
- * .why = discovers and executes skills from linked role directories
6
+ * .why = discovers and executes solid skills (deterministic, no brain)
5
7
  */
6
- export declare const invokeRun: ({ program }: {
8
+ export declare const invokeRun: ({ program, registries, brains, }: {
7
9
  program: Command;
10
+ registries: RoleRegistry[];
11
+ brains: BrainRepl[];
8
12
  }) => void;
@@ -2,6 +2,7 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.invokeRun = void 0;
4
4
  const helpful_errors_1 = require("helpful-errors");
5
+ const genActor_1 = require("../../domain.operations/actor/genActor");
5
6
  const executeSkill_1 = require("../../domain.operations/invoke/executeSkill");
6
7
  const findUniqueSkillExecutable_1 = require("../../domain.operations/invoke/findUniqueSkillExecutable");
7
8
  /**
@@ -15,38 +16,130 @@ const getRawArgsAfterRun = () => {
15
16
  return [];
16
17
  return argv.slice(runIdx + 1);
17
18
  };
19
+ /**
20
+ * .what = performs run via actor-mode (typed solid skill on role)
21
+ * .why = executes a typed solid skill via actor.run with full type safety
22
+ */
23
+ const performRunViaActorMode = async (input) => {
24
+ // create actor
25
+ const actor = (0, genActor_1.genActor)({ role: input.role, brains: input.brains });
26
+ // log which skill will run
27
+ console.log(``);
28
+ console.log(`🪨 skill "${input.opts.skill}" from role="${input.opts.role}"`);
29
+ console.log(``);
30
+ // parse skill input from remaining args
31
+ const rawArgs = getRawArgsAfterRun();
32
+ const skillArgs = parseArgsToObject(rawArgs, input.opts.skill);
33
+ // invoke actor.run
34
+ await actor.run({ skill: { [input.opts.skill]: skillArgs } });
35
+ };
36
+ /**
37
+ * .what = performs run via command-mode (shell skill discovery)
38
+ * .why = discovers and executes shell skills from .agent/ directories
39
+ */
40
+ const performRunViaCommandMode = (input) => {
41
+ // discover skill via .agent/ dirs
42
+ const skill = (0, findUniqueSkillExecutable_1.findUniqueSkillExecutable)({
43
+ repoSlug: input.opts.repo,
44
+ roleSlug: input.opts.role,
45
+ skillSlug: input.opts.skill,
46
+ });
47
+ // log which skill will run
48
+ console.log(``);
49
+ console.log(`🪨 skill "${skill.slug}" from repo=${skill.repoSlug} role=${skill.roleSlug}`);
50
+ console.log(``);
51
+ // get all args after 'run' for passthrough
52
+ const rawArgs = getRawArgsAfterRun();
53
+ // execute with all args passed through
54
+ (0, executeSkill_1.executeSkill)({ skill, args: rawArgs });
55
+ };
18
56
  /**
19
57
  * .what = adds the "run" command to the CLI
20
- * .why = discovers and executes skills from linked role directories
58
+ * .why = discovers and executes solid skills (deterministic, no brain)
21
59
  */
22
- const invokeRun = ({ program }) => {
60
+ const invokeRun = ({ program, registries, brains, }) => {
23
61
  program
24
62
  .command('run')
25
- .description('run a skill from linked role directories')
63
+ .description('run a solid skill (deterministic, no brain)')
26
64
  .option('-s, --skill <slug>', 'the skill to execute')
27
65
  .option('--repo <slug>', 'filter to specific repo')
28
- .option('--role <slug>', 'filter to specific role')
66
+ .option('-r, --role <slug>', 'filter to specific role')
29
67
  .allowUnknownOption(true)
30
68
  .allowExcessArguments(true)
31
69
  .action(async (opts) => {
32
70
  // validate skill is provided
33
71
  if (!opts.skill)
34
72
  helpful_errors_1.BadRequestError.throw('--skill is required (e.g., --skill init.claude)');
35
- // find unique skill
36
- const skill = (0, findUniqueSkillExecutable_1.findUniqueSkillExecutable)({
37
- repoSlug: opts.repo,
38
- roleSlug: opts.role,
39
- skillSlug: opts.skill,
40
- });
41
- // log which skill will run
42
- console.log(``);
43
- console.log(`🌊 skill "${skill.slug}" from repo=${skill.repoSlug} role=${skill.roleSlug}`);
44
- console.log(``);
45
- // get all args after 'run' for passthrough
46
- const rawArgs = getRawArgsAfterRun();
47
- // execute with all args passed through
48
- (0, executeSkill_1.executeSkill)({ skill, args: rawArgs });
73
+ // determine which mode to use
74
+ const allRoles = registries.flatMap((r) => r.roles);
75
+ const roleFound = opts.role
76
+ ? allRoles.find((r) => r.slug === opts.role)
77
+ : undefined;
78
+ const hasTypedSolidSkill = roleFound?.skills?.solid?.[opts.skill] !== undefined;
79
+ const isActorMode = roleFound && hasTypedSolidSkill && brains.length > 0;
80
+ const isCommandMode = !isActorMode;
81
+ // 🪨 actor-mode: invoke typed solid skill via actor.run
82
+ if (isActorMode)
83
+ return await performRunViaActorMode({
84
+ opts: { skill: opts.skill, role: opts.role },
85
+ role: roleFound,
86
+ brains,
87
+ });
88
+ // 🐚 command-mode: discover and execute shell skill
89
+ if (isCommandMode)
90
+ return performRunViaCommandMode({
91
+ opts: { skill: opts.skill, repo: opts.repo, role: opts.role },
92
+ });
93
+ // neither mode matched - unexpected
94
+ throw new helpful_errors_1.UnexpectedCodePathError('invokeRun: neither actor-mode nor command-mode matched', { opts });
49
95
  });
50
96
  };
51
97
  exports.invokeRun = invokeRun;
98
+ /**
99
+ * .what = parses raw CLI args into object for skill input
100
+ * .why = converts --key value pairs to { key: value } object
101
+ */
102
+ const parseArgsToObject = (rawArgs, skillSlug) => {
103
+ const result = {};
104
+ let i = 0;
105
+ while (i < rawArgs.length) {
106
+ const arg = rawArgs[i];
107
+ // skip --skill, --role, --repo (already consumed)
108
+ if (arg === '--skill' ||
109
+ arg === '-s' ||
110
+ arg === '--role' ||
111
+ arg === '-r' ||
112
+ arg === '--repo') {
113
+ i += 2; // skip flag and its value
114
+ continue;
115
+ }
116
+ // skip the skill slug value if it matches
117
+ if (arg === skillSlug) {
118
+ i++;
119
+ continue;
120
+ }
121
+ // parse --key value or --key=value
122
+ if (arg.startsWith('--')) {
123
+ const eqIdx = arg.indexOf('=');
124
+ if (eqIdx > 0) {
125
+ // --key=value format
126
+ const key = arg.slice(2, eqIdx);
127
+ const value = arg.slice(eqIdx + 1);
128
+ result[key] = value;
129
+ i++;
130
+ }
131
+ else {
132
+ // --key value format
133
+ const key = arg.slice(2);
134
+ const value = rawArgs[i + 1] ?? '';
135
+ result[key] = value;
136
+ i += 2;
137
+ }
138
+ }
139
+ else {
140
+ i++;
141
+ }
142
+ }
143
+ return result;
144
+ };
52
145
  //# sourceMappingURL=invokeRun.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"invokeRun.js","sourceRoot":"","sources":["../../../src/contract/cli/invokeRun.ts"],"names":[],"mappings":";;;AACA,mDAAiD;AAEjD,6EAA0E;AAC1E,uGAAoG;AAEpG;;;GAGG;AACH,MAAM,kBAAkB,GAAG,GAAa,EAAE;IACxC,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;IAC1B,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IACnC,IAAI,MAAM,KAAK,CAAC,CAAC;QAAE,OAAO,EAAE,CAAC;IAC7B,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;AAChC,CAAC,CAAC;AAEF;;;GAGG;AACI,MAAM,SAAS,GAAG,CAAC,EAAE,OAAO,EAAwB,EAAQ,EAAE;IACnE,OAAO;SACJ,OAAO,CAAC,KAAK,CAAC;SACd,WAAW,CAAC,0CAA0C,CAAC;SACvD,MAAM,CAAC,oBAAoB,EAAE,sBAAsB,CAAC;SACpD,MAAM,CAAC,eAAe,EAAE,yBAAyB,CAAC;SAClD,MAAM,CAAC,eAAe,EAAE,yBAAyB,CAAC;SAClD,kBAAkB,CAAC,IAAI,CAAC;SACxB,oBAAoB,CAAC,IAAI,CAAC;SAC1B,MAAM,CAAC,KAAK,EAAE,IAAsD,EAAE,EAAE;QACvE,6BAA6B;QAC7B,IAAI,CAAC,IAAI,CAAC,KAAK;YACb,gCAAe,CAAC,KAAK,CACnB,iDAAiD,CAClD,CAAC;QAEJ,oBAAoB;QACpB,MAAM,KAAK,GAAG,IAAA,qDAAyB,EAAC;YACtC,QAAQ,EAAE,IAAI,CAAC,IAAI;YACnB,QAAQ,EAAE,IAAI,CAAC,IAAI;YACnB,SAAS,EAAE,IAAI,CAAC,KAAK;SACtB,CAAC,CAAC;QAEH,2BAA2B;QAC3B,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAChB,OAAO,CAAC,GAAG,CACT,aAAa,KAAK,CAAC,IAAI,eAAe,KAAK,CAAC,QAAQ,SAAS,KAAK,CAAC,QAAQ,EAAE,CAC9E,CAAC;QACF,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAEhB,2CAA2C;QAC3C,MAAM,OAAO,GAAG,kBAAkB,EAAE,CAAC;QAErC,uCAAuC;QACvC,IAAA,2BAAY,EAAC,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC;IACzC,CAAC,CAAC,CAAC;AACP,CAAC,CAAC;AApCW,QAAA,SAAS,aAoCpB"}
1
+ {"version":3,"file":"invokeRun.js","sourceRoot":"","sources":["../../../src/contract/cli/invokeRun.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,6 @@
1
1
  export { withImmute } from 'domain-objects';
2
2
  export * from '../domain.objects';
3
+ export { genActor } from '../domain.operations/actor/genActor';
3
4
  export { castBriefsToPrompt } from '../domain.operations/briefs/castBriefsToPrompt';
4
5
  export { genContextBrain } from '../domain.operations/context/genContextBrain';
5
6
  export { genContextStitchTrail } from '../domain.operations/context/genContextStitchTrail';
@@ -14,10 +14,12 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
14
  for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
15
  };
16
16
  Object.defineProperty(exports, "__esModule", { value: true });
17
- exports.enweaveOneStitcher = exports.genStitchRoute = exports.genStitchFanout = exports.genStitchCycle = exports.genStitchChoice = exports.asStitcherFlat = exports.asStitcher = exports.getStitch = exports.useTemplate = exports.getTemplateVarsFromRoleInherit = exports.getTemplateValFromArtifacts = exports.getTemplatePathByCallerPath = exports.genTemplate = exports.genStepImagineViaTemplate = exports.getRoleBriefs = exports.genRoleSkill = exports.enrollThread = exports.genContextStitchTrail = exports.genContextBrain = exports.castBriefsToPrompt = exports.withImmute = void 0;
17
+ exports.enweaveOneStitcher = exports.genStitchRoute = exports.genStitchFanout = exports.genStitchCycle = exports.genStitchChoice = exports.asStitcherFlat = exports.asStitcher = exports.getStitch = exports.useTemplate = exports.getTemplateVarsFromRoleInherit = exports.getTemplateValFromArtifacts = exports.getTemplatePathByCallerPath = exports.genTemplate = exports.genStepImagineViaTemplate = exports.getRoleBriefs = exports.genRoleSkill = exports.enrollThread = exports.genContextStitchTrail = exports.genContextBrain = exports.castBriefsToPrompt = exports.genActor = exports.withImmute = void 0;
18
18
  var domain_objects_1 = require("domain-objects");
19
19
  Object.defineProperty(exports, "withImmute", { enumerable: true, get: function () { return domain_objects_1.withImmute; } });
20
20
  __exportStar(require("../domain.objects"), exports);
21
+ var genActor_1 = require("../domain.operations/actor/genActor");
22
+ Object.defineProperty(exports, "genActor", { enumerable: true, get: function () { return genActor_1.genActor; } });
21
23
  var castBriefsToPrompt_1 = require("../domain.operations/briefs/castBriefsToPrompt");
22
24
  Object.defineProperty(exports, "castBriefsToPrompt", { enumerable: true, get: function () { return castBriefsToPrompt_1.castBriefsToPrompt; } });
23
25
  var genContextBrain_1 = require("../domain.operations/context/genContextBrain");
@@ -1 +1 @@
1
- {"version":3,"file":"sdk.js","sourceRoot":"","sources":["../../src/contract/sdk.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAAA,iDAA4C;AAAnC,4GAAA,UAAU,OAAA;AAEnB,sDAAoC;AACpC,uFAAsF;AAA7E,wHAAA,kBAAkB,OAAA;AAC3B,kFAAiF;AAAxE,kHAAA,eAAe,OAAA;AACxB,8FAA6F;AAApF,8HAAA,qBAAqB,OAAA;AAC9B,yEAAwE;AAA/D,4GAAA,YAAY,OAAA;AACrB,yEAAwE;AAA/D,4GAAA,YAAY,OAAA;AACrB,2EAA0E;AAAjE,8GAAA,aAAa,OAAA;AAEtB,uGAAsG;AAA7F,sIAAA,yBAAyB,OAAA;AAClC,2EAA0E;AAAjE,0GAAA,WAAW,OAAA;AACpB,2GAA0G;AAAjG,0IAAA,2BAA2B,OAAA;AACpC,2GAA0G;AAAjG,0IAAA,2BAA2B,OAAA;AACpC,iHAAgH;AAAvG,gJAAA,8BAA8B,OAAA;AACvC,2EAA0E;AAAjE,0GAAA,WAAW,OAAA;AACpB,qEAAoE;AAA3D,sGAAA,SAAS,OAAA;AAClB,8EAA6E;AAApE,wGAAA,UAAU,OAAA;AACnB,sFAAqF;AAA5E,gHAAA,cAAc,OAAA;AACvB,wFAAuF;AAA9E,kHAAA,eAAe,OAAA;AACxB,sFAAqF;AAA5E,gHAAA,cAAc,OAAA;AACvB,wFAAuF;AAA9E,kHAAA,eAAe,OAAA;AACxB,sFAAqF;AAA5E,gHAAA,cAAc,OAAA;AACvB,sFAAqF;AAA5E,wHAAA,kBAAkB,OAAA"}
1
+ {"version":3,"file":"sdk.js","sourceRoot":"","sources":["../../src/contract/sdk.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAAA,iDAA4C;AAAnC,4GAAA,UAAU,OAAA;AAEnB,sDAAoC;AACpC,kEAAiE;AAAxD,oGAAA,QAAQ,OAAA;AACjB,uFAAsF;AAA7E,wHAAA,kBAAkB,OAAA;AAC3B,kFAAiF;AAAxE,kHAAA,eAAe,OAAA;AACxB,8FAA6F;AAApF,8HAAA,qBAAqB,OAAA;AAC9B,yEAAwE;AAA/D,4GAAA,YAAY,OAAA;AACrB,yEAAwE;AAA/D,4GAAA,YAAY,OAAA;AACrB,2EAA0E;AAAjE,8GAAA,aAAa,OAAA;AAEtB,uGAAsG;AAA7F,sIAAA,yBAAyB,OAAA;AAClC,2EAA0E;AAAjE,0GAAA,WAAW,OAAA;AACpB,2GAA0G;AAAjG,0IAAA,2BAA2B,OAAA;AACpC,2GAA0G;AAAjG,0IAAA,2BAA2B,OAAA;AACpC,iHAAgH;AAAvG,gJAAA,8BAA8B,OAAA;AACvC,2EAA0E;AAAjE,0GAAA,WAAW,OAAA;AACpB,qEAAoE;AAA3D,sGAAA,SAAS,OAAA;AAClB,8EAA6E;AAApE,wGAAA,UAAU,OAAA;AACnB,sFAAqF;AAA5E,gHAAA,cAAc,OAAA;AACvB,wFAAuF;AAA9E,kHAAA,eAAe,OAAA;AACxB,sFAAqF;AAA5E,gHAAA,cAAc,OAAA;AACvB,wFAAuF;AAA9E,kHAAA,eAAe,OAAA;AACxB,sFAAqF;AAA5E,gHAAA,cAAc,OAAA;AACvB,sFAAqF;AAA5E,wHAAA,kBAAkB,OAAA"}