@squadrules/mcp 5.4.2 → 5.5.1

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 (169) hide show
  1. package/dist/.tsbuildinfo +1 -1
  2. package/dist/cli/api-client.d.ts +3 -1
  3. package/dist/cli/api-client.d.ts.map +1 -1
  4. package/dist/cli/api-client.js +7 -16
  5. package/dist/cli/api-client.js.map +1 -1
  6. package/dist/cli/backend/action-backend.d.ts +99 -0
  7. package/dist/cli/backend/action-backend.d.ts.map +1 -0
  8. package/dist/cli/backend/action-backend.js +2 -0
  9. package/dist/cli/backend/action-backend.js.map +1 -0
  10. package/dist/cli/backend/http-backend.d.ts +31 -0
  11. package/dist/cli/backend/http-backend.d.ts.map +1 -0
  12. package/dist/cli/backend/http-backend.js +38 -0
  13. package/dist/cli/backend/http-backend.js.map +1 -0
  14. package/dist/cli/backend/local-backend.d.ts +37 -0
  15. package/dist/cli/backend/local-backend.d.ts.map +1 -0
  16. package/dist/cli/backend/local-backend.js +166 -0
  17. package/dist/cli/backend/local-backend.js.map +1 -0
  18. package/dist/cli/backend/resolve-backend.d.ts +29 -0
  19. package/dist/cli/backend/resolve-backend.d.ts.map +1 -0
  20. package/dist/cli/backend/resolve-backend.js +37 -0
  21. package/dist/cli/backend/resolve-backend.js.map +1 -0
  22. package/dist/cli/client-factory.d.ts +6 -7
  23. package/dist/cli/client-factory.d.ts.map +1 -1
  24. package/dist/cli/client-factory.js +8 -42
  25. package/dist/cli/client-factory.js.map +1 -1
  26. package/dist/cli/commands/{search.d.ts → activate.d.ts} +2 -2
  27. package/dist/cli/commands/activate.d.ts.map +1 -0
  28. package/dist/cli/commands/activate.js +31 -0
  29. package/dist/cli/commands/activate.js.map +1 -0
  30. package/dist/cli/commands/cli-train.d.ts +5 -1
  31. package/dist/cli/commands/cli-train.d.ts.map +1 -1
  32. package/dist/cli/commands/cli-train.js +40 -139
  33. package/dist/cli/commands/cli-train.js.map +1 -1
  34. package/dist/cli/commands/delete.d.ts +1 -1
  35. package/dist/cli/commands/delete.d.ts.map +1 -1
  36. package/dist/cli/commands/delete.js +11 -6
  37. package/dist/cli/commands/delete.js.map +1 -1
  38. package/dist/cli/commands/export.d.ts +12 -5
  39. package/dist/cli/commands/export.d.ts.map +1 -1
  40. package/dist/cli/commands/export.js +117 -55
  41. package/dist/cli/commands/export.js.map +1 -1
  42. package/dist/cli/commands/{begin.d.ts → forward.d.ts} +2 -2
  43. package/dist/cli/commands/forward.d.ts.map +1 -0
  44. package/dist/cli/commands/forward.js +31 -0
  45. package/dist/cli/commands/forward.js.map +1 -0
  46. package/dist/cli/commands/login.d.ts +8 -2
  47. package/dist/cli/commands/login.d.ts.map +1 -1
  48. package/dist/cli/commands/login.js +53 -13
  49. package/dist/cli/commands/login.js.map +1 -1
  50. package/dist/cli/commands/logout.d.ts.map +1 -1
  51. package/dist/cli/commands/logout.js +3 -1
  52. package/dist/cli/commands/logout.js.map +1 -1
  53. package/dist/cli/commands/{attest.d.ts → reward.d.ts} +2 -2
  54. package/dist/cli/commands/reward.d.ts.map +1 -0
  55. package/dist/cli/commands/{attest.js → reward.js} +16 -17
  56. package/dist/cli/commands/reward.js.map +1 -0
  57. package/dist/cli/commands/serve.d.ts.map +1 -1
  58. package/dist/cli/commands/serve.js +3 -0
  59. package/dist/cli/commands/serve.js.map +1 -1
  60. package/dist/cli/commands/spaces.d.ts +2 -2
  61. package/dist/cli/commands/spaces.d.ts.map +1 -1
  62. package/dist/cli/commands/spaces.js +12 -7
  63. package/dist/cli/commands/spaces.js.map +1 -1
  64. package/dist/cli/commands/token.d.ts.map +1 -1
  65. package/dist/cli/commands/token.js +7 -3
  66. package/dist/cli/commands/token.js.map +1 -1
  67. package/dist/cli/commands/tune.d.ts +6 -0
  68. package/dist/cli/commands/tune.d.ts.map +1 -0
  69. package/dist/cli/commands/{update.js → tune.js} +34 -24
  70. package/dist/cli/commands/tune.js.map +1 -0
  71. package/dist/cli/config.d.ts +4 -2
  72. package/dist/cli/config.d.ts.map +1 -1
  73. package/dist/cli/config.js +6 -3
  74. package/dist/cli/config.js.map +1 -1
  75. package/dist/cli/fetch-error.d.ts +6 -0
  76. package/dist/cli/fetch-error.d.ts.map +1 -1
  77. package/dist/cli/fetch-error.js +18 -0
  78. package/dist/cli/fetch-error.js.map +1 -1
  79. package/dist/cli/format.d.ts +20 -0
  80. package/dist/cli/format.d.ts.map +1 -0
  81. package/dist/cli/format.js +18 -0
  82. package/dist/cli/format.js.map +1 -0
  83. package/dist/cli/index.d.ts +1 -1
  84. package/dist/cli/index.d.ts.map +1 -1
  85. package/dist/cli/index.js +3 -0
  86. package/dist/cli/index.js.map +1 -1
  87. package/dist/cli/local-target.d.ts +11 -0
  88. package/dist/cli/local-target.d.ts.map +1 -0
  89. package/dist/cli/local-target.js +14 -0
  90. package/dist/cli/local-target.js.map +1 -0
  91. package/dist/cli/log-sink-prelude.d.ts +2 -0
  92. package/dist/cli/log-sink-prelude.d.ts.map +1 -0
  93. package/dist/cli/log-sink-prelude.js +23 -0
  94. package/dist/cli/log-sink-prelude.js.map +1 -0
  95. package/dist/cli/output.d.ts +20 -3
  96. package/dist/cli/output.d.ts.map +1 -1
  97. package/dist/cli/output.js +14 -6
  98. package/dist/cli/output.js.map +1 -1
  99. package/dist/cli/program.d.ts.map +1 -1
  100. package/dist/cli/program.js +12 -7
  101. package/dist/cli/program.js.map +1 -1
  102. package/dist/cli/render.d.ts +37 -0
  103. package/dist/cli/render.d.ts.map +1 -0
  104. package/dist/cli/render.js +179 -0
  105. package/dist/cli/render.js.map +1 -0
  106. package/dist/cli/resolve-timeout.d.ts +16 -0
  107. package/dist/cli/resolve-timeout.d.ts.map +1 -0
  108. package/dist/cli/resolve-timeout.js +43 -0
  109. package/dist/cli/resolve-timeout.js.map +1 -0
  110. package/dist/cli/skill-zip-local-write.d.ts +6 -4
  111. package/dist/cli/skill-zip-local-write.d.ts.map +1 -1
  112. package/dist/cli/skill-zip-local-write.js +5 -3
  113. package/dist/cli/skill-zip-local-write.js.map +1 -1
  114. package/dist/cli/train-batch.d.ts +20 -0
  115. package/dist/cli/train-batch.d.ts.map +1 -0
  116. package/dist/cli/train-batch.js +168 -0
  117. package/dist/cli/train-batch.js.map +1 -0
  118. package/dist/embed-docs/mem/adapter-migration.md +1 -1
  119. package/dist/embed-docs/mem/bulk-insert-adapters-via-cli.md +1 -1
  120. package/dist/embed-docs/mem/challenge-type-guide.md +1 -1
  121. package/dist/embed-docs/mem/create-new-protocol.md +1 -1
  122. package/dist/embed-docs/mem/critic-loop-guide.md +1 -1
  123. package/dist/embed-docs/mem/critic-loop.md +1 -1
  124. package/dist/embed-docs/mem/phase-critic-guide.md +1 -1
  125. package/dist/embed-docs/mem/phase-critic.md +1 -1
  126. package/dist/embed-docs/mem/protocol-linking-guide.md +1 -1
  127. package/dist/embed-docs/mem/refine-search.md +1 -1
  128. package/dist/embed-docs/mem/skill-format-guide.md +1 -1
  129. package/dist/index.d.ts.map +1 -1
  130. package/dist/index.js +6 -70
  131. package/dist/index.js.map +1 -1
  132. package/dist/resources/embedded-mcp-resources.js +11 -11
  133. package/dist/runtime/boot-local-runtime.d.ts +37 -0
  134. package/dist/runtime/boot-local-runtime.d.ts.map +1 -0
  135. package/dist/runtime/boot-local-runtime.js +122 -0
  136. package/dist/runtime/boot-local-runtime.js.map +1 -0
  137. package/dist/services/embedding/lazy-probe.d.ts +7 -0
  138. package/dist/services/embedding/lazy-probe.d.ts.map +1 -0
  139. package/dist/services/embedding/lazy-probe.js +26 -0
  140. package/dist/services/embedding/lazy-probe.js.map +1 -0
  141. package/dist/ui/assets/{AccountPage-DlzuVTtp.js → AccountPage-DyTJwGMC.js} +1 -1
  142. package/dist/ui/assets/{index-C77BzNbG.js → index-CKityaQ1.js} +2 -2
  143. package/dist/ui/assets/index-Dq6apLxZ.css +2 -0
  144. package/dist/ui/index.html +2 -2
  145. package/dist/utils/log-core.d.ts +7 -0
  146. package/dist/utils/log-core.d.ts.map +1 -1
  147. package/dist/utils/log-core.js +14 -4
  148. package/dist/utils/log-core.js.map +1 -1
  149. package/dist/utils/tenant-context.d.ts +6 -0
  150. package/dist/utils/tenant-context.d.ts.map +1 -1
  151. package/dist/utils/tenant-context.js +6 -1
  152. package/dist/utils/tenant-context.js.map +1 -1
  153. package/package.json +1 -1
  154. package/dist/cli/commands/attest.d.ts.map +0 -1
  155. package/dist/cli/commands/attest.js.map +0 -1
  156. package/dist/cli/commands/begin.d.ts.map +0 -1
  157. package/dist/cli/commands/begin.js +0 -27
  158. package/dist/cli/commands/begin.js.map +0 -1
  159. package/dist/cli/commands/search.d.ts.map +0 -1
  160. package/dist/cli/commands/search.js +0 -25
  161. package/dist/cli/commands/search.js.map +0 -1
  162. package/dist/cli/commands/update.d.ts +0 -6
  163. package/dist/cli/commands/update.d.ts.map +0 -1
  164. package/dist/cli/commands/update.js.map +0 -1
  165. package/dist/cli/format-next-call.d.ts +0 -2
  166. package/dist/cli/format-next-call.d.ts.map +0 -1
  167. package/dist/cli/format-next-call.js +0 -63
  168. package/dist/cli/format-next-call.js.map +0 -1
  169. package/dist/ui/assets/index-CSUUmfdT.css +0 -2
@@ -1,7 +1,3 @@
1
- /**
2
- * CLI Output Utility
3
- * Uses process.stdout/stderr directly to avoid console.* linting restrictions
4
- */
5
1
  export function writeStdout(message) {
6
2
  const line = message + '\n';
7
3
  if (!process.stdout.write(line)) {
@@ -17,7 +13,19 @@ export function writeError(message) {
17
13
  export function writeJson(data) {
18
14
  writeStdout(JSON.stringify(data, null, 2));
19
15
  }
20
- export function writeMarkdown(content) {
21
- writeStdout(content);
16
+ /** Render a command result to stdout/stderr according to the resolved output format. */
17
+ export function emitResult(format, data, view) {
18
+ if (format === 'json') {
19
+ writeJson(data);
20
+ return;
21
+ }
22
+ if (format === 'text') {
23
+ writeStdout(view.text(data));
24
+ return;
25
+ }
26
+ writeStdout(view.pretty(data));
27
+ const hint = view.nextCall?.(data) ?? null;
28
+ if (hint)
29
+ writeStderr(hint);
22
30
  }
23
31
  //# sourceMappingURL=output.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"output.js","sourceRoot":"","sources":["../../src/cli/output.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,MAAM,UAAU,WAAW,CAAC,OAAe;IACvC,MAAM,IAAI,GAAG,OAAO,GAAG,IAAI,CAAC;IAC5B,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;QAC9B,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;IAC3C,CAAC;AACL,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,OAAe;IACvC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC,CAAC;AACzC,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,OAAe;IACtC,WAAW,CAAC,UAAU,OAAO,EAAE,CAAC,CAAC;AACrC,CAAC;AAED,MAAM,UAAU,SAAS,CAAC,IAAS;IAC/B,WAAW,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;AAC/C,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,OAAe;IACzC,WAAW,CAAC,OAAO,CAAC,CAAC;AACzB,CAAC"}
1
+ {"version":3,"file":"output.js","sourceRoot":"","sources":["../../src/cli/output.ts"],"names":[],"mappings":"AAWA,MAAM,UAAU,WAAW,CAAC,OAAe;IACvC,MAAM,IAAI,GAAG,OAAO,GAAG,IAAI,CAAC;IAC5B,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;QAC9B,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;IAC3C,CAAC;AACL,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,OAAe;IACvC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC,CAAC;AACzC,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,OAAe;IACtC,WAAW,CAAC,UAAU,OAAO,EAAE,CAAC,CAAC;AACrC,CAAC;AAED,MAAM,UAAU,SAAS,CAAC,IAAa;IACnC,WAAW,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;AAC/C,CAAC;AAaD,wFAAwF;AACxF,MAAM,UAAU,UAAU,CAAI,MAAsB,EAAE,IAAO,EAAE,IAAmB;IAC9E,IAAI,MAAM,KAAK,MAAM,EAAE,CAAC;QACpB,SAAS,CAAC,IAAI,CAAC,CAAC;QAChB,OAAO;IACX,CAAC;IACD,IAAI,MAAM,KAAK,MAAM,EAAE,CAAC;QACpB,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QAC7B,OAAO;IACX,CAAC;IACD,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;IAC/B,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC;IAC3C,IAAI,IAAI;QAAE,WAAW,CAAC,IAAI,CAAC,CAAC;AAChC,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"program.d.ts","sourceRoot":"","sources":["../../src/cli/program.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AA6BpC,wBAAgB,aAAa,IAAI,OAAO,CA0CvC"}
1
+ {"version":3,"file":"program.d.ts","sourceRoot":"","sources":["../../src/cli/program.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AA8BpC,wBAAgB,aAAa,IAAI,OAAO,CAiDvC"}
@@ -1,18 +1,19 @@
1
1
  import { Command } from 'commander';
2
2
  import { createRequire } from 'module';
3
- import { activateCommand } from './commands/search.js';
4
- import { forwardCommand } from './commands/begin.js';
3
+ import { activateCommand } from './commands/activate.js';
4
+ import { forwardCommand } from './commands/forward.js';
5
5
  import { trainCliCommand } from './commands/cli-train.js';
6
6
  import { spacesCommand } from './commands/spaces.js';
7
- import { updateCommand } from './commands/update.js';
7
+ import { tuneCommand } from './commands/tune.js';
8
8
  import { deleteCommand } from './commands/delete.js';
9
- import { rewardCommand } from './commands/attest.js';
9
+ import { rewardCommand } from './commands/reward.js';
10
10
  import { exportCommand } from './commands/export.js';
11
11
  import { loginCommand } from './commands/login.js';
12
12
  import { logoutCommand } from './commands/logout.js';
13
13
  import { tokenCommand } from './commands/token.js';
14
14
  import { serveCommand } from './commands/serve.js';
15
15
  import { getCliApiUrlDefault } from './config.js';
16
+ import { isLocalTarget } from './local-target.js';
16
17
  const loadPackageJson = createRequire(import.meta.url);
17
18
  const { version } = loadPackageJson('../../package.json');
18
19
  function enableHelpAfterError(command) {
@@ -28,9 +29,11 @@ export function createProgram() {
28
29
  .name('squadrules')
29
30
  .description('CLI tool for interacting with SquadRules REST API')
30
31
  .version(version)
31
- .option('-u, --url <url>', 'SquadRules API base URL', getCliApiUrlDefault())
32
+ .option('-u, --url <url>', 'SquadRules API base URL, or "local" to run in-process against the embedded store', getCliApiUrlDefault())
32
33
  .option('--timeout <seconds>', 'request timeout in seconds (env: SQUADRULES_TIMEOUT_MS, default: 15)')
33
34
  .option('--retries <n>', 'max retries on network errors (env: SQUADRULES_RETRIES, default: 2)')
35
+ .option('--format <format>', 'output format: auto (pretty on TTY, json when piped), pretty, json, or text (env: SQUADRULES_FORMAT)')
36
+ .option('--reseed', 'local mode: force delete-then-retrain of bundled app-space adapters (repair hatch)')
34
37
  .option('--no-browser', 'do not open browser when auth is required (e.g. in tests or scripts)')
35
38
  .hook('preAction', (_thisCommand, actionCommand) => {
36
39
  // optsWithGlobals merges root --url / --no-browser for nested commands (e.g. squadrules --url … train …).
@@ -38,7 +41,9 @@ export function createProgram() {
38
41
  return;
39
42
  }
40
43
  const opts = actionCommand.optsWithGlobals();
41
- if (opts.url) {
44
+ // Do not leak the local sentinel into the environment; http-only helpers (login,
45
+ // ApiClient fallbacks) read SQUADRULES_API_URL and must not see stdio://local.
46
+ if (opts.url && !isLocalTarget(opts.url)) {
42
47
  process.env['SQUADRULES_API_URL'] = opts.url;
43
48
  }
44
49
  if (opts.browser === false) {
@@ -50,7 +55,7 @@ export function createProgram() {
50
55
  forwardCommand(program); // forward
51
56
  trainCliCommand(program);
52
57
  spacesCommand(program);
53
- updateCommand(program); // tune
58
+ tuneCommand(program); // tune
54
59
  deleteCommand(program); // delete
55
60
  rewardCommand(program); // reward
56
61
  exportCommand(program); // export
@@ -1 +1 @@
1
- {"version":3,"file":"program.js","sourceRoot":"","sources":["../../src/cli/program.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"program.js","sourceRoot":"","sources":["../../src/cli/program.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,37 @@
1
+ /**
2
+ * Human-first renderers for CLI data-command output (pretty + text), plus the
3
+ * next-call hint.
4
+ *
5
+ * `pretty` is the default on a TTY: a compact, readable rendering on stdout. `text`
6
+ * is a minimal, script-friendly rendering. JSON mode bypasses these and prints the
7
+ * canonical response object. The next-call hint (the shell command to run next) is
8
+ * printed on stderr in pretty mode only — JSON mode keeps the structured `next_call`
9
+ * in the body, so the two never mix text into JSON.
10
+ */
11
+ import type { ActivateOutput } from '../tools/activate_schema.js';
12
+ import type { ForwardOutput } from '../tools/forward_schema.js';
13
+ import type { RewardOutput } from '../tools/reward_schema.js';
14
+ import type { TuneOutput } from '../tools/tune_schema.js';
15
+ import type { DeleteOutput } from '../tools/delete_schema.js';
16
+ import type { TrainOutput } from '../tools/train_schema.js';
17
+ import type { SpacesOutput } from './backend/action-backend.js';
18
+ /**
19
+ * Build the short "run this next" hint for pretty mode. Returns null when the response
20
+ * carries no actionable next step (for example a terminal reward).
21
+ */
22
+ export declare function nextCallHint(response: unknown): string | null;
23
+ export declare function renderActivatePretty(out: ActivateOutput): string;
24
+ export declare function renderActivateText(out: ActivateOutput): string;
25
+ export declare function renderForwardPretty(out: ForwardOutput): string;
26
+ export declare function renderForwardText(out: ForwardOutput): string;
27
+ export declare function renderRewardPretty(out: RewardOutput): string;
28
+ export declare function renderRewardText(out: RewardOutput): string;
29
+ export declare function renderTunePretty(out: TuneOutput): string;
30
+ export declare function renderTuneText(out: TuneOutput): string;
31
+ export declare function renderDeletePretty(out: DeleteOutput): string;
32
+ export declare function renderDeleteText(out: DeleteOutput): string;
33
+ export declare function renderSpacesPretty(out: SpacesOutput): string;
34
+ export declare function renderSpacesText(out: SpacesOutput): string;
35
+ export declare function renderTrainPretty(out: TrainOutput): string;
36
+ export declare function renderTrainText(out: TrainOutput): string;
37
+ //# sourceMappingURL=render.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"render.d.ts","sourceRoot":"","sources":["../../src/cli/render.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AACH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAClE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAChE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAC9D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAC1D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAC9D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAC5D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AA0ChE;;;GAGG;AACH,wBAAgB,YAAY,CAAC,QAAQ,EAAE,OAAO,GAAG,MAAM,GAAG,IAAI,CAS7D;AAMD,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,cAAc,GAAG,MAAM,CAkBhE;AAED,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,cAAc,GAAG,MAAM,CAE9D;AAMD,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,aAAa,GAAG,MAAM,CAgB9D;AAED,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,aAAa,GAAG,MAAM,CAE5D;AAMD,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,YAAY,GAAG,MAAM,CAO5D;AAED,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,YAAY,GAAG,MAAM,CAE1D;AAMD,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,UAAU,GAAG,MAAM,CAMxD;AAED,wBAAgB,cAAc,CAAC,GAAG,EAAE,UAAU,GAAG,MAAM,CAEtD;AAMD,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,YAAY,GAAG,MAAM,CAM5D;AAED,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,YAAY,GAAG,MAAM,CAE1D;AAMD,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,YAAY,GAAG,MAAM,CAW5D;AAED,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,YAAY,GAAG,MAAM,CAI1D;AAMD,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,WAAW,GAAG,MAAM,CAO1D;AAED,wBAAgB,eAAe,CAAC,GAAG,EAAE,WAAW,GAAG,MAAM,CAExD"}
@@ -0,0 +1,179 @@
1
+ function isObject(value) {
2
+ return typeof value === 'object' && value !== null;
3
+ }
4
+ function shellQuote(value) {
5
+ return `'${value}'`;
6
+ }
7
+ // ---------------------------------------------------------------------------
8
+ // next-call hint (stderr, pretty mode)
9
+ // ---------------------------------------------------------------------------
10
+ function forwardSnippetFromNextCall(nextCall) {
11
+ const kind = nextCall['kind'];
12
+ const args = nextCall['args'];
13
+ if (!isObject(args) || typeof args['uri'] !== 'string')
14
+ return null;
15
+ if (kind === 'forward') {
16
+ const solution = isObject(args['solution_template']) ? args['solution_template'] : {};
17
+ return `squadrules forward ${shellQuote(args['uri'])} --solution ${shellQuote(JSON.stringify(solution))}`;
18
+ }
19
+ if (kind === 'reward') {
20
+ return `squadrules reward ${shellQuote(args['uri'])} success 'completed'`;
21
+ }
22
+ return null;
23
+ }
24
+ function forwardSnippetFromChoices(response) {
25
+ if (!Array.isArray(response['choices']))
26
+ return null;
27
+ for (const choice of response['choices']) {
28
+ if (!isObject(choice))
29
+ continue;
30
+ const first = choice['forward_first_call'];
31
+ if (isObject(first) && typeof first['uri'] === 'string') {
32
+ return `squadrules forward ${shellQuote(first['uri'])}`;
33
+ }
34
+ }
35
+ return null;
36
+ }
37
+ /**
38
+ * Build the short "run this next" hint for pretty mode. Returns null when the response
39
+ * carries no actionable next step (for example a terminal reward).
40
+ */
41
+ export function nextCallHint(response) {
42
+ if (!isObject(response))
43
+ return null;
44
+ if (isObject(response['next_call'])) {
45
+ const snippet = forwardSnippetFromNextCall(response['next_call']);
46
+ return snippet ? `next: ${snippet}` : null;
47
+ }
48
+ const fromChoices = forwardSnippetFromChoices(response);
49
+ if (fromChoices)
50
+ return `next: ${fromChoices}`;
51
+ return null;
52
+ }
53
+ // ---------------------------------------------------------------------------
54
+ // activate
55
+ // ---------------------------------------------------------------------------
56
+ export function renderActivatePretty(out) {
57
+ const lines = [`activate: ${JSON.stringify(out.query)}`];
58
+ if (out.message)
59
+ lines.push(out.message);
60
+ const choices = out.choices ?? [];
61
+ if (choices.length === 0) {
62
+ lines.push('', 'No matching adapters.');
63
+ return lines.join('\n');
64
+ }
65
+ lines.push('', `Choices (${choices.length}):`);
66
+ choices.forEach((choice, index) => {
67
+ const score = typeof choice.activation_score === 'number' ? ` score ${choice.activation_score.toFixed(2)}` : '';
68
+ const space = choice.space_name ? ` [${choice.space_name}]` : '';
69
+ lines.push(` ${index + 1}. (${choice.role}) ${choice.label}${score}${space}`);
70
+ lines.push(` ${choice.uri}`);
71
+ if (choice.next_action)
72
+ lines.push(` do: ${choice.next_action}`);
73
+ });
74
+ return lines.join('\n');
75
+ }
76
+ export function renderActivateText(out) {
77
+ return (out.choices ?? []).map((choice) => choice.uri).join('\n');
78
+ }
79
+ // ---------------------------------------------------------------------------
80
+ // forward
81
+ // ---------------------------------------------------------------------------
82
+ export function renderForwardPretty(out) {
83
+ const lines = [];
84
+ const heading = out.current_layer_label ?? out.context_adapter_name ?? 'forward';
85
+ lines.push(`forward: ${heading}`);
86
+ if (out.adapter_layer_index && out.adapter_layer_count) {
87
+ lines.push(`step ${out.adapter_layer_index}/${out.adapter_layer_count}`);
88
+ }
89
+ const contractType = out.contract?.type ?? 'n/a';
90
+ const contractDesc = out.contract?.description ? ` — ${out.contract.description}` : '';
91
+ lines.push(`contract: ${contractType}${contractDesc}`);
92
+ if (out.message)
93
+ lines.push(out.message);
94
+ if (out.current_layer?.content) {
95
+ lines.push('', out.current_layer.content.trim());
96
+ }
97
+ if (out.next_action)
98
+ lines.push('', `do: ${out.next_action}`);
99
+ return lines.join('\n');
100
+ }
101
+ export function renderForwardText(out) {
102
+ return out.next_action ?? '';
103
+ }
104
+ // ---------------------------------------------------------------------------
105
+ // reward
106
+ // ---------------------------------------------------------------------------
107
+ export function renderRewardPretty(out) {
108
+ const lines = [`reward: rated ${out.total_rated}, failed ${out.total_failed}`];
109
+ for (const row of out.results ?? []) {
110
+ const score = typeof row.score === 'number' ? ` score ${row.score.toFixed(2)}` : '';
111
+ lines.push(` ${row.uri} → ${row.outcome}${score} (${row.evaluation_label})`);
112
+ }
113
+ return lines.join('\n');
114
+ }
115
+ export function renderRewardText(out) {
116
+ return `rated ${out.total_rated} failed ${out.total_failed}`;
117
+ }
118
+ // ---------------------------------------------------------------------------
119
+ // tune
120
+ // ---------------------------------------------------------------------------
121
+ export function renderTunePretty(out) {
122
+ const lines = [`tune: updated ${out.total_updated}, failed ${out.total_failed}`];
123
+ for (const row of out.results ?? []) {
124
+ lines.push(` ${row.uri} → ${row.status}: ${row.message}`);
125
+ }
126
+ return lines.join('\n');
127
+ }
128
+ export function renderTuneText(out) {
129
+ return `updated ${out.total_updated} failed ${out.total_failed}`;
130
+ }
131
+ // ---------------------------------------------------------------------------
132
+ // delete
133
+ // ---------------------------------------------------------------------------
134
+ export function renderDeletePretty(out) {
135
+ const lines = [`delete: deleted ${out.total_deleted}, failed ${out.total_failed}`];
136
+ for (const row of out.results ?? []) {
137
+ lines.push(` ${row.uri} → ${row.status}: ${row.message}`);
138
+ }
139
+ return lines.join('\n');
140
+ }
141
+ export function renderDeleteText(out) {
142
+ return `deleted ${out.total_deleted} failed ${out.total_failed}`;
143
+ }
144
+ // ---------------------------------------------------------------------------
145
+ // spaces
146
+ // ---------------------------------------------------------------------------
147
+ export function renderSpacesPretty(out) {
148
+ const spaces = out.spaces ?? [];
149
+ if (spaces.length === 0)
150
+ return 'spaces: (none)';
151
+ const lines = [`spaces (${spaces.length}):`];
152
+ for (const space of spaces) {
153
+ lines.push(` ${space.name} (${space.type}): ${space.adapter_count} adapters`);
154
+ for (const adapter of space.adapters ?? []) {
155
+ lines.push(` - ${adapter.title} (${adapter.layer_count} layers) ${adapter.uri}`);
156
+ }
157
+ }
158
+ return lines.join('\n');
159
+ }
160
+ export function renderSpacesText(out) {
161
+ return (out.spaces ?? [])
162
+ .map((space) => `${space.name}\t${space.type}\t${space.adapter_count}`)
163
+ .join('\n');
164
+ }
165
+ // ---------------------------------------------------------------------------
166
+ // train
167
+ // ---------------------------------------------------------------------------
168
+ export function renderTrainPretty(out) {
169
+ const items = out.items ?? [];
170
+ const lines = [`train: ${out.status} ${items.length} item(s)`];
171
+ for (const item of items) {
172
+ lines.push(` ${item.label} → ${item.uri}`);
173
+ }
174
+ return lines.join('\n');
175
+ }
176
+ export function renderTrainText(out) {
177
+ return (out.items ?? []).map((item) => item.uri).join('\n');
178
+ }
179
+ //# sourceMappingURL=render.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"render.js","sourceRoot":"","sources":["../../src/cli/render.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,16 @@
1
+ /**
2
+ * Shared resolution of the global `--timeout` / `--retries` options.
3
+ *
4
+ * A leaf module (no imports beyond commander types) so both the data-path client factory and
5
+ * the http-only auth commands (login/token, which use raw `fetch`) resolve the same values —
6
+ * precedence CLI flag > env var > default — without an import cycle through api-client/login.
7
+ */
8
+ import type { Command } from 'commander';
9
+ export declare const DEFAULT_TIMEOUT_MS = 15000;
10
+ /** Resolve request timeout in ms from `--timeout <seconds>` then `SQUADRULES_TIMEOUT_MS`; undefined if unset. */
11
+ export declare function resolveTimeoutMs(program: Command): number | undefined;
12
+ /** Resolve max retries from `--retries <n>` then `SQUADRULES_RETRIES`; undefined if unset. */
13
+ export declare function resolveMaxRetries(program: Command): number | undefined;
14
+ /** Timeout in ms with a concrete default, for callers that need a number (auth fetches). */
15
+ export declare function resolveTimeoutMsOrDefault(program: Command): number;
16
+ //# sourceMappingURL=resolve-timeout.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resolve-timeout.d.ts","sourceRoot":"","sources":["../../src/cli/resolve-timeout.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEzC,eAAO,MAAM,kBAAkB,QAAS,CAAC;AAMzC,iHAAiH;AACjH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,OAAO,GAAG,MAAM,GAAG,SAAS,CAarE;AAED,8FAA8F;AAC9F,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,OAAO,GAAG,MAAM,GAAG,SAAS,CAatE;AAED,4FAA4F;AAC5F,wBAAgB,yBAAyB,CAAC,OAAO,EAAE,OAAO,GAAG,MAAM,CAElE"}
@@ -0,0 +1,43 @@
1
+ export const DEFAULT_TIMEOUT_MS = 15_000;
2
+ function globals(program) {
3
+ return (program.optsWithGlobals?.() ?? program.opts());
4
+ }
5
+ /** Resolve request timeout in ms from `--timeout <seconds>` then `SQUADRULES_TIMEOUT_MS`; undefined if unset. */
6
+ export function resolveTimeoutMs(program) {
7
+ const g = globals(program);
8
+ const rawTimeout = g['timeout'];
9
+ if (rawTimeout !== undefined) {
10
+ const sec = Number(rawTimeout);
11
+ if (Number.isFinite(sec) && sec > 0)
12
+ return sec * 1000;
13
+ }
14
+ const envTimeout = process.env['SQUADRULES_TIMEOUT_MS'];
15
+ if (envTimeout) {
16
+ const ms = Number(envTimeout);
17
+ if (Number.isFinite(ms) && ms > 0)
18
+ return ms;
19
+ }
20
+ return undefined;
21
+ }
22
+ /** Resolve max retries from `--retries <n>` then `SQUADRULES_RETRIES`; undefined if unset. */
23
+ export function resolveMaxRetries(program) {
24
+ const g = globals(program);
25
+ const rawRetries = g['retries'];
26
+ if (rawRetries !== undefined) {
27
+ const n = Number(rawRetries);
28
+ if (Number.isFinite(n) && n >= 0)
29
+ return n;
30
+ }
31
+ const envRetries = process.env['SQUADRULES_RETRIES'];
32
+ if (envRetries) {
33
+ const n = Number(envRetries);
34
+ if (Number.isFinite(n) && n >= 0)
35
+ return n;
36
+ }
37
+ return undefined;
38
+ }
39
+ /** Timeout in ms with a concrete default, for callers that need a number (auth fetches). */
40
+ export function resolveTimeoutMsOrDefault(program) {
41
+ return resolveTimeoutMs(program) ?? DEFAULT_TIMEOUT_MS;
42
+ }
43
+ //# sourceMappingURL=resolve-timeout.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resolve-timeout.js","sourceRoot":"","sources":["../../src/cli/resolve-timeout.ts"],"names":[],"mappings":"AASA,MAAM,CAAC,MAAM,kBAAkB,GAAG,MAAM,CAAC;AAEzC,SAAS,OAAO,CAAC,OAAgB;IAC/B,OAAO,CAAC,OAAO,CAAC,eAAe,EAAE,EAAE,IAAI,OAAO,CAAC,IAAI,EAAE,CAA4B,CAAC;AACpF,CAAC;AAED,iHAAiH;AACjH,MAAM,UAAU,gBAAgB,CAAC,OAAgB;IAC/C,MAAM,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAC3B,MAAM,UAAU,GAAG,CAAC,CAAC,SAAS,CAAuB,CAAC;IACtD,IAAI,UAAU,KAAK,SAAS,EAAE,CAAC;QAC7B,MAAM,GAAG,GAAG,MAAM,CAAC,UAAU,CAAC,CAAC;QAC/B,IAAI,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,GAAG,GAAG,CAAC;YAAE,OAAO,GAAG,GAAG,IAAI,CAAC;IACzD,CAAC;IACD,MAAM,UAAU,GAAG,OAAO,CAAC,GAAG,CAAC,uBAAuB,CAAC,CAAC;IACxD,IAAI,UAAU,EAAE,CAAC;QACf,MAAM,EAAE,GAAG,MAAM,CAAC,UAAU,CAAC,CAAC;QAC9B,IAAI,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,GAAG,CAAC;YAAE,OAAO,EAAE,CAAC;IAC/C,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,8FAA8F;AAC9F,MAAM,UAAU,iBAAiB,CAAC,OAAgB;IAChD,MAAM,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAC3B,MAAM,UAAU,GAAG,CAAC,CAAC,SAAS,CAAuB,CAAC;IACtD,IAAI,UAAU,KAAK,SAAS,EAAE,CAAC;QAC7B,MAAM,CAAC,GAAG,MAAM,CAAC,UAAU,CAAC,CAAC;QAC7B,IAAI,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;YAAE,OAAO,CAAC,CAAC;IAC7C,CAAC;IACD,MAAM,UAAU,GAAG,OAAO,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAC;IACrD,IAAI,UAAU,EAAE,CAAC;QACf,MAAM,CAAC,GAAG,MAAM,CAAC,UAAU,CAAC,CAAC;QAC7B,IAAI,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;YAAE,OAAO,CAAC,CAAC;IAC7C,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,4FAA4F;AAC5F,MAAM,UAAU,yBAAyB,CAAC,OAAgB;IACxD,OAAO,gBAAgB,CAAC,OAAO,CAAC,IAAI,kBAAkB,CAAC;AACzD,CAAC"}
@@ -9,12 +9,14 @@
9
9
  */
10
10
  export declare function safeZipBasenameFromRemoteHint(name: string | undefined): string | null;
11
11
  /**
12
- * Output path: explicit `--zip-out` (user-controlled), else `cwd/<sanitized remote basename or default>`.
12
+ * Output path: explicit `--zip-out` (user-controlled, resolved against cwd), else
13
+ * `<baseDir>/<sanitized remote basename or default>`. `baseDir` defaults to cwd; `export`
14
+ * passes its `--out` directory so skill_zip lands beside the other written artifacts.
13
15
  */
14
16
  export declare function resolveSkillZipOutputPath(zipOut: string | undefined, hints: {
15
- downloadBasename?: string;
16
- refBasename?: string;
17
- }): string;
17
+ downloadBasename?: string | undefined;
18
+ refBasename?: string | undefined;
19
+ }, baseDir?: string): string;
18
20
  /** Reject non-ZIP payloads and oversized downloads before writing bytes from the network to disk. */
19
21
  export declare function assertSkillZipBufferAllowedForDiskWrite(data: Buffer): void;
20
22
  /** Write validated ZIP bytes after export (download_ref GET or inline base64 decode). */
@@ -1 +1 @@
1
- {"version":3,"file":"skill-zip-local-write.d.ts","sourceRoot":"","sources":["../../src/cli/skill-zip-local-write.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAkBH;;;GAGG;AACH,wBAAgB,6BAA6B,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,GAAG,IAAI,CASrF;AAED;;GAEG;AACH,wBAAgB,yBAAyB,CACvC,MAAM,EAAE,MAAM,GAAG,SAAS,EAC1B,KAAK,EAAE;IAAE,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAAC,WAAW,CAAC,EAAE,MAAM,CAAA;CAAE,GACzD,MAAM,CASR;AAED,qGAAqG;AACrG,wBAAgB,uCAAuC,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAc1E;AAED,yFAAyF;AACzF,wBAAgB,2BAA2B,CAAC,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,CAGpF"}
1
+ {"version":3,"file":"skill-zip-local-write.d.ts","sourceRoot":"","sources":["../../src/cli/skill-zip-local-write.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAkBH;;;GAGG;AACH,wBAAgB,6BAA6B,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,GAAG,IAAI,CASrF;AAED;;;;GAIG;AACH,wBAAgB,yBAAyB,CACvC,MAAM,EAAE,MAAM,GAAG,SAAS,EAC1B,KAAK,EAAE;IAAE,gBAAgB,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAAC,WAAW,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;CAAE,EAClF,OAAO,GAAE,MAAsB,GAC9B,MAAM,CASR;AAED,qGAAqG;AACrG,wBAAgB,uCAAuC,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAc1E;AAED,yFAAyF;AACzF,wBAAgB,2BAA2B,CAAC,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,CAGpF"}
@@ -36,16 +36,18 @@ export function safeZipBasenameFromRemoteHint(name) {
36
36
  return base;
37
37
  }
38
38
  /**
39
- * Output path: explicit `--zip-out` (user-controlled), else `cwd/<sanitized remote basename or default>`.
39
+ * Output path: explicit `--zip-out` (user-controlled, resolved against cwd), else
40
+ * `<baseDir>/<sanitized remote basename or default>`. `baseDir` defaults to cwd; `export`
41
+ * passes its `--out` directory so skill_zip lands beside the other written artifacts.
40
42
  */
41
- export function resolveSkillZipOutputPath(zipOut, hints) {
43
+ export function resolveSkillZipOutputPath(zipOut, hints, baseDir = process.cwd()) {
42
44
  if (zipOut !== undefined && zipOut.trim().length > 0) {
43
45
  return path.resolve(process.cwd(), zipOut.trim());
44
46
  }
45
47
  const remote = safeZipBasenameFromRemoteHint(hints.downloadBasename) ??
46
48
  safeZipBasenameFromRemoteHint(hints.refBasename);
47
49
  const base = remote ?? DEFAULT_EXPORT_SKILL_ZIP_FILENAME;
48
- return path.join(process.cwd(), base);
50
+ return path.join(baseDir, base);
49
51
  }
50
52
  /** Reject non-ZIP payloads and oversized downloads before writing bytes from the network to disk. */
51
53
  export function assertSkillZipBufferAllowedForDiskWrite(data) {
@@ -1 +1 @@
1
- {"version":3,"file":"skill-zip-local-write.js","sourceRoot":"","sources":["../../src/cli/skill-zip-local-write.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"skill-zip-local-write.js","sourceRoot":"","sources":["../../src/cli/skill-zip-local-write.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,20 @@
1
+ import type { ResolvedFormat } from './format.js';
2
+ import type { ActionBackend, TrainRawOptions } from './backend/action-backend.js';
3
+ export declare function readUtf8RegularFile(absPath: string): string;
4
+ /** The subset of `train` flags the directory batch path consumes. */
5
+ export interface TrainBatchFlags {
6
+ recursive?: boolean;
7
+ allowSensitiveUpload?: boolean;
8
+ force?: boolean;
9
+ model?: string;
10
+ adapter?: string;
11
+ artifactName?: string;
12
+ mime?: string;
13
+ relativePath?: string;
14
+ }
15
+ /**
16
+ * Train every `.md` file under `abs` (recursively when `--recursive`), attaching sibling artifacts.
17
+ * Emits the batch manifest through the uniform output model. Artifact flags are single-file-only.
18
+ */
19
+ export declare function runTrainBatch(backend: ActionBackend, abs: string, flags: TrainBatchFlags, trainOptions: TrainRawOptions, format: ResolvedFormat): Promise<void>;
20
+ //# sourceMappingURL=train-batch.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"train-batch.d.ts","sourceRoot":"","sources":["../../src/cli/train-batch.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAGlD,OAAO,KAAK,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AA6ClF,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAU3D;AAkDD,qEAAqE;AACrE,MAAM,WAAW,eAAe;IAC9B,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED;;;GAGG;AACH,wBAAsB,aAAa,CACjC,OAAO,EAAE,aAAa,EACtB,GAAG,EAAE,MAAM,EACX,KAAK,EAAE,eAAe,EACtB,YAAY,EAAE,eAAe,EAC7B,MAAM,EAAE,cAAc,GACrB,OAAO,CAAC,IAAI,CAAC,CAsFf"}