@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
@@ -0,0 +1 @@
1
+ {"version":3,"file":"reward.js","sourceRoot":"","sources":["../../../src/cli/commands/reward.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AACrE,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AACtD,OAAO,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AACnD,OAAO,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AACpE,OAAO,EAAE,wBAAwB,EAAE,MAAM,+BAA+B,CAAC;AAGzE,MAAM,UAAU,aAAa,CAAC,OAAgB;IAC1C,OAAO;SACF,OAAO,CAAC,QAAQ,CAAC;SACjB,WAAW,CAAC,2DAA2D,CAAC;SACxE,QAAQ,CAAC,OAAO,EAAE,+CAA+C,CAAC;SAClE,QAAQ,CAAC,WAAW,EAAE,6BAA6B,CAAC;SACpD,QAAQ,CAAC,YAAY,EAAE,sDAAsD,CAAC;SAC9E,MAAM,CAAC,kBAAkB,EAAE,2CAA2C,CAAC;SACvE,MAAM,CAAC,iBAAiB,EAAE,6CAA6C,CAAC;SACxE,MAAM,CAAC,4BAA4B,EAAE,8CAA8C,CAAC;SACpF,MAAM,CAAC,iBAAiB,EAAE,0DAA0D,CAAC;SACrF,MAAM,CAAC,KAAK,EACT,GAAW,EACX,OAAe,EACf,QAAgB,EAChB,OAAmF,EACrF,EAAE;QACA,IAAI,CAAC;YACD,IAAI,OAAO,KAAK,SAAS,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;gBACjD,UAAU,CAAC,wCAAwC,CAAC,CAAC;gBACrD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;gBAChB,OAAO;YACX,CAAC;YAED,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,UAAU,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;YAClF,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC;gBACtC,UAAU,CAAC,0BAA0B,CAAC,CAAC;gBACvC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;gBAChB,OAAO;YACX,CAAC;YAED,MAAM,OAAO,GAAG,MAAM,wBAAwB,CAAC,OAAO,CAAC,CAAC;YAExD,MAAM,aAAa,GAAkB,EAAE,CAAC;YACxC,IAAI,KAAK,KAAK,SAAS;gBAAE,aAAa,CAAC,KAAK,GAAG,KAAK,CAAC;YACrD,IAAI,OAAO,CAAC,KAAK;gBAAE,aAAa,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC;YACvD,IAAI,OAAO,CAAC,aAAa;gBAAE,aAAa,CAAC,aAAa,GAAG,OAAO,CAAC,aAAa,CAAC;YAC/E,IAAI,OAAO,CAAC,KAAK;gBAAE,aAAa,CAAC,UAAU,GAAG,OAAO,CAAC,KAAK,CAAC;YAE5D,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,MAAM,CACjC,GAAG,EACH,OAAgC,EAChC,QAAQ,EACR,aAAa,CAChB,CAAC;YACF,UAAU,CAAC,mBAAmB,CAAC,OAAO,CAAC,EAAE,QAAQ,EAAE;gBAC/C,MAAM,EAAE,kBAAkB;gBAC1B,IAAI,EAAE,gBAAgB;aACzB,CAAC,CAAC;QACP,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACb,cAAc,CAAC,KAAK,EAAE,CAAC,iBAAiB,EAAE,CAAC,CAAC;QAChD,CAAC;IACL,CAAC,CAAC,CAAC;AACX,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"serve.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/serve.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAMH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAOzC,MAAM,MAAM,cAAc,GAAG,OAAO,GAAG,MAAM,CAAC;AAU9C;;GAEG;AACH,wBAAgB,sBAAsB,CAAC,aAAa,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,GAAG,SAAS,CAU5F;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,YAAY,EAAE,MAAM,GAAG,SAAS,EAAE,YAAY,UAAO,GAAG,cAAc,CAa3G;AAgCD,wBAAgB,YAAY,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAoGnD"}
1
+ {"version":3,"file":"serve.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/serve.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAMH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAOzC,MAAM,MAAM,cAAc,GAAG,OAAO,GAAG,MAAM,CAAC;AAU9C;;GAEG;AACH,wBAAgB,sBAAsB,CAAC,aAAa,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,GAAG,SAAS,CAU5F;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,YAAY,EAAE,MAAM,GAAG,SAAS,EAAE,YAAY,UAAO,GAAG,cAAc,CAa3G;AAgCD,wBAAgB,YAAY,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAuGnD"}
@@ -139,6 +139,9 @@ export function serveCommand(program) {
139
139
  const env = {
140
140
  ...process.env,
141
141
  TRANSPORT_TYPE: transport,
142
+ // The CLI parent forces logs to stderr (stdout is its payload channel), but the
143
+ // spawned server owns stdout again: stdio keeps logs on stderr, http on stdout.
144
+ SQUADRULES_LOG_STDERR: transport === 'stdio' ? '1' : '0',
142
145
  SQUADRULES_CLI_SERVE: '1',
143
146
  SQUADRULES_CLI_TRANSPORT_SOURCE: source
144
147
  };
@@ -1 +1 @@
1
- {"version":3,"file":"serve.js","sourceRoot":"","sources":["../../../src/cli/commands/serve.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"serve.js","sourceRoot":"","sources":["../../../src/cli/commands/serve.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,6 @@
1
- import { Command } from 'commander';
2
1
  /**
3
- * spaces command
2
+ * spaces command — list available spaces and adapter counts.
4
3
  */
4
+ import { Command } from 'commander';
5
5
  export declare function spacesCommand(program: Command): void;
6
6
  //# sourceMappingURL=spaces.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"spaces.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/spaces.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAKpC;;GAEG;AACH,wBAAgB,aAAa,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAmBpD"}
1
+ {"version":3,"file":"spaces.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/spaces.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAOpC,wBAAgB,aAAa,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAsBpD"}
@@ -1,9 +1,11 @@
1
- import { handleApiError, isBrowserDisabled } from '../auth-error.js';
2
- import { writeJson } from '../output.js';
3
- import { createClientFromProgram } from '../client-factory.js';
4
1
  /**
5
- * spaces command
2
+ * spaces command — list available spaces and adapter counts.
6
3
  */
4
+ import { handleApiError, isBrowserDisabled } from '../auth-error.js';
5
+ import { emitResult } from '../output.js';
6
+ import { resolveOutputFormat } from '../format.js';
7
+ import { renderSpacesPretty, renderSpacesText } from '../render.js';
8
+ import { createBackendFromProgram } from '../backend/resolve-backend.js';
7
9
  export function spacesCommand(program) {
8
10
  program
9
11
  .command('spaces')
@@ -11,11 +13,14 @@ export function spacesCommand(program) {
11
13
  .option('--include-adapter-titles', 'Include per-space adapter titles and layer counts')
12
14
  .action(async (options) => {
13
15
  try {
14
- const client = createClientFromProgram(program);
15
- const response = await client.spaces({
16
+ const backend = await createBackendFromProgram(program);
17
+ const response = await backend.spaces({
16
18
  include_adapter_titles: Boolean(options.includeAdapterTitles)
17
19
  });
18
- writeJson(response);
20
+ emitResult(resolveOutputFormat(program), response, {
21
+ pretty: renderSpacesPretty,
22
+ text: renderSpacesText
23
+ });
19
24
  }
20
25
  catch (error) {
21
26
  handleApiError(error, !isBrowserDisabled());
@@ -1 +1 @@
1
- {"version":3,"file":"spaces.js","sourceRoot":"","sources":["../../../src/cli/commands/spaces.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AACrE,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACzC,OAAO,EAAE,uBAAuB,EAAE,MAAM,sBAAsB,CAAC;AAE/D;;GAEG;AACH,MAAM,UAAU,aAAa,CAAC,OAAgB;IAC5C,OAAO;SACJ,OAAO,CAAC,QAAQ,CAAC;SACjB,WAAW,CAAC,0CAA0C,CAAC;SACvD,MAAM,CACL,0BAA0B,EAC1B,mDAAmD,CACpD;SACA,MAAM,CAAC,KAAK,EAAE,OAA2C,EAAE,EAAE;QAC5D,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,uBAAuB,CAAC,OAAO,CAAC,CAAC;YAChD,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC;gBACnC,sBAAsB,EAAE,OAAO,CAAC,OAAO,CAAC,oBAAoB,CAAC;aAC9D,CAAC,CAAC;YACH,SAAS,CAAC,QAAQ,CAAC,CAAC;QACtB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,cAAc,CAAC,KAAK,EAAE,CAAC,iBAAiB,EAAE,CAAC,CAAC;QAC9C,CAAC;IACH,CAAC,CAAC,CAAC;AACP,CAAC"}
1
+ {"version":3,"file":"spaces.js","sourceRoot":"","sources":["../../../src/cli/commands/spaces.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AACrE,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AACnD,OAAO,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AACpE,OAAO,EAAE,wBAAwB,EAAE,MAAM,+BAA+B,CAAC;AAEzE,MAAM,UAAU,aAAa,CAAC,OAAgB;IAC5C,OAAO;SACJ,OAAO,CAAC,QAAQ,CAAC;SACjB,WAAW,CAAC,0CAA0C,CAAC;SACvD,MAAM,CACL,0BAA0B,EAC1B,mDAAmD,CACpD;SACA,MAAM,CAAC,KAAK,EAAE,OAA2C,EAAE,EAAE;QAC5D,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,MAAM,wBAAwB,CAAC,OAAO,CAAC,CAAC;YACxD,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,MAAM,CAAC;gBACpC,sBAAsB,EAAE,OAAO,CAAC,OAAO,CAAC,oBAAoB,CAAC;aAC9D,CAAC,CAAC;YACH,UAAU,CAAC,mBAAmB,CAAC,OAAO,CAAC,EAAE,QAAQ,EAAE;gBACjD,MAAM,EAAE,kBAAkB;gBAC1B,IAAI,EAAE,gBAAgB;aACvB,CAAC,CAAC;QACL,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,cAAc,CAAC,KAAK,EAAE,CAAC,iBAAiB,EAAE,CAAC,CAAC;QAC9C,CAAC;IACH,CAAC,CAAC,CAAC;AACP,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"token.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/token.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAKpC,wBAAgB,YAAY,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAuCnD"}
1
+ {"version":3,"file":"token.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/token.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAMpC,wBAAgB,YAAY,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAyCnD"}
@@ -3,7 +3,8 @@
3
3
  */
4
4
  import { readConfig } from '../config-file.js';
5
5
  import { writeError } from '../output.js';
6
- import { getBaseUrl, isTokenValid, loginWithBrowser } from './login.js';
6
+ import { resolveTimeoutMsOrDefault } from '../resolve-timeout.js';
7
+ import { getBaseUrl, isLocalAuthTarget, isTokenValid, loginWithBrowser, writeLocalAuthFallbackHint } from './login.js';
7
8
  export function tokenCommand(program) {
8
9
  program
9
10
  .command('token')
@@ -13,10 +14,13 @@ export function tokenCommand(program) {
13
14
  .action(async (opts) => {
14
15
  try {
15
16
  const baseUrl = getBaseUrl();
17
+ if (isLocalAuthTarget())
18
+ writeLocalAuthFallbackHint(baseUrl);
19
+ const timeoutMs = resolveTimeoutMsOrDefault(program);
16
20
  let config = await readConfig(baseUrl);
17
21
  let token = config.bearerToken;
18
22
  if (!token && opts.login) {
19
- const ok = await loginWithBrowser(baseUrl);
23
+ const ok = await loginWithBrowser(baseUrl, { timeoutMs });
20
24
  if (!ok) {
21
25
  writeError('Login failed.');
22
26
  process.exit(1);
@@ -28,7 +32,7 @@ export function tokenCommand(program) {
28
32
  writeError('No stored token. Run `squadrules login` or use `squadrules token --login`.');
29
33
  process.exit(1);
30
34
  }
31
- if (opts.validate && !(await isTokenValid(baseUrl, token))) {
35
+ if (opts.validate && !(await isTokenValid(baseUrl, token, timeoutMs))) {
32
36
  writeError('Token invalid or expired. Run `squadrules login` to re-authenticate.');
33
37
  process.exit(1);
34
38
  }
@@ -1 +1 @@
1
- {"version":3,"file":"token.js","sourceRoot":"","sources":["../../../src/cli/commands/token.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAExE,MAAM,UAAU,YAAY,CAAC,OAAgB;IACzC,OAAO;SACF,OAAO,CAAC,OAAO,CAAC;SAChB,WAAW,CAAC,yDAAyD,CAAC;SACtE,MAAM,CAAC,gBAAgB,EAAE,iDAAiD,CAAC;SAC3E,MAAM,CAAC,aAAa,EAAE,gDAAgD,CAAC;SACvE,MAAM,CAAC,KAAK,EAAE,IAA6C,EAAE,EAAE;QAC5D,IAAI,CAAC;YACD,MAAM,OAAO,GAAG,UAAU,EAAE,CAAC;YAC7B,IAAI,MAAM,GAAG,MAAM,UAAU,CAAC,OAAO,CAAC,CAAC;YACvC,IAAI,KAAK,GAAG,MAAM,CAAC,WAAW,CAAC;YAE/B,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;gBACvB,MAAM,EAAE,GAAG,MAAM,gBAAgB,CAAC,OAAO,CAAC,CAAC;gBAC3C,IAAI,CAAC,EAAE,EAAE,CAAC;oBACN,UAAU,CAAC,eAAe,CAAC,CAAC;oBAC5B,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;gBACpB,CAAC;gBACD,MAAM,GAAG,MAAM,UAAU,CAAC,OAAO,CAAC,CAAC;gBACnC,KAAK,GAAG,MAAM,CAAC,WAAW,CAAC;YAC/B,CAAC;YAED,IAAI,CAAC,KAAK,EAAE,CAAC;gBACT,UAAU,CAAC,4EAA4E,CAAC,CAAC;gBACzF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YACpB,CAAC;YAED,IAAI,IAAI,CAAC,QAAQ,IAAI,CAAC,CAAC,MAAM,YAAY,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC;gBACzD,UAAU,CAAC,sEAAsE,CAAC,CAAC;gBACnF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YACpB,CAAC;YAED,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;YAC5B,IAAI,OAAO,CAAC,MAAM,CAAC,KAAK;gBAAE,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QACzD,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACb,UAAU,CAAC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;YACnE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACpB,CAAC;IACL,CAAC,CAAC,CAAC;AACX,CAAC"}
1
+ {"version":3,"file":"token.js","sourceRoot":"","sources":["../../../src/cli/commands/token.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,yBAAyB,EAAE,MAAM,uBAAuB,CAAC;AAClE,OAAO,EAAE,UAAU,EAAE,iBAAiB,EAAE,YAAY,EAAE,gBAAgB,EAAE,0BAA0B,EAAE,MAAM,YAAY,CAAC;AAEvH,MAAM,UAAU,YAAY,CAAC,OAAgB;IACzC,OAAO;SACF,OAAO,CAAC,OAAO,CAAC;SAChB,WAAW,CAAC,yDAAyD,CAAC;SACtE,MAAM,CAAC,gBAAgB,EAAE,iDAAiD,CAAC;SAC3E,MAAM,CAAC,aAAa,EAAE,gDAAgD,CAAC;SACvE,MAAM,CAAC,KAAK,EAAE,IAA6C,EAAE,EAAE;QAC5D,IAAI,CAAC;YACD,MAAM,OAAO,GAAG,UAAU,EAAE,CAAC;YAC7B,IAAI,iBAAiB,EAAE;gBAAE,0BAA0B,CAAC,OAAO,CAAC,CAAC;YAC7D,MAAM,SAAS,GAAG,yBAAyB,CAAC,OAAO,CAAC,CAAC;YACrD,IAAI,MAAM,GAAG,MAAM,UAAU,CAAC,OAAO,CAAC,CAAC;YACvC,IAAI,KAAK,GAAG,MAAM,CAAC,WAAW,CAAC;YAE/B,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;gBACvB,MAAM,EAAE,GAAG,MAAM,gBAAgB,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,CAAC,CAAC;gBAC1D,IAAI,CAAC,EAAE,EAAE,CAAC;oBACN,UAAU,CAAC,eAAe,CAAC,CAAC;oBAC5B,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;gBACpB,CAAC;gBACD,MAAM,GAAG,MAAM,UAAU,CAAC,OAAO,CAAC,CAAC;gBACnC,KAAK,GAAG,MAAM,CAAC,WAAW,CAAC;YAC/B,CAAC;YAED,IAAI,CAAC,KAAK,EAAE,CAAC;gBACT,UAAU,CAAC,4EAA4E,CAAC,CAAC;gBACzF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YACpB,CAAC;YAED,IAAI,IAAI,CAAC,QAAQ,IAAI,CAAC,CAAC,MAAM,YAAY,CAAC,OAAO,EAAE,KAAK,EAAE,SAAS,CAAC,CAAC,EAAE,CAAC;gBACpE,UAAU,CAAC,sEAAsE,CAAC,CAAC;gBACnF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YACpB,CAAC;YAED,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;YAC5B,IAAI,OAAO,CAAC,MAAM,CAAC,KAAK;gBAAE,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QACzD,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACb,UAAU,CAAC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;YACnE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACpB,CAAC;IACL,CAAC,CAAC,CAAC;AACX,CAAC"}
@@ -0,0 +1,6 @@
1
+ /**
2
+ * tune command — update one or more adapter layers.
3
+ */
4
+ import { Command } from 'commander';
5
+ export declare function tuneCommand(program: Command): void;
6
+ //# sourceMappingURL=tune.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tune.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/tune.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AA2BpC,wBAAgB,WAAW,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAmFlD"}
@@ -1,11 +1,30 @@
1
1
  /**
2
- * tune command
2
+ * tune command — update one or more adapter layers.
3
3
  */
4
4
  import { handleApiError, isBrowserDisabled } from '../auth-error.js';
5
- import { writeError, writeJson } from '../output.js';
5
+ import { emitResult, writeError } from '../output.js';
6
+ import { resolveOutputFormat } from '../format.js';
7
+ import { renderTunePretty, renderTuneText } from '../render.js';
6
8
  import { readMarkdownUploadFromFile } from '../upload-guards.js';
7
- import { createClientFromProgram } from '../client-factory.js';
8
- export function updateCommand(program) {
9
+ import { createBackendFromProgram } from '../backend/resolve-backend.js';
10
+ /** Parse the SQUADRULES_REVIEW_EVIDENCE env blob (integration tests inject critic-loop proof). */
11
+ function reviewEvidenceFromEnv() {
12
+ const raw = process.env['SQUADRULES_REVIEW_EVIDENCE'];
13
+ if (!raw)
14
+ return undefined;
15
+ try {
16
+ const parsed = JSON.parse(raw);
17
+ if (parsed &&
18
+ typeof parsed.verdict_file === 'string' &&
19
+ typeof parsed.exit_code === 'number' &&
20
+ typeof parsed.stdout === 'string') {
21
+ return parsed;
22
+ }
23
+ }
24
+ catch { /* ignore malformed env review_evidence */ }
25
+ return undefined;
26
+ }
27
+ export function tuneCommand(program) {
9
28
  program
10
29
  .command('tune')
11
30
  .description('Update one or more SQUADRULES adapter layers')
@@ -17,17 +36,17 @@ export function updateCommand(program) {
17
36
  .option('--allow-sensitive-upload', 'Allow uploads that contain token-like or private-key-like text')
18
37
  .action(async (uris, options) => {
19
38
  try {
20
- const client = createClientFromProgram(program);
39
+ const backend = await createBackendFromProgram(program);
40
+ const format = resolveOutputFormat(program);
21
41
  let markdownDoc;
22
42
  let updates;
23
43
  const rawSpace = typeof options.space === 'string' ? options.space.trim() : '';
24
44
  if (rawSpace.length > 0 && !options.file && !options.files && !options.updates) {
25
- const response = await client.tune(uris, { space: rawSpace });
26
- writeJson(response);
45
+ const response = await backend.tune(uris, { space: rawSpace });
46
+ emitResult(format, response, { pretty: renderTunePretty, text: renderTuneText });
27
47
  return;
28
48
  }
29
49
  if (options.files) {
30
- // Multiple files, one per URI
31
50
  if (options.files.length !== uris.length) {
32
51
  writeError('Number of files must match number of URIs');
33
52
  process.exit(1);
@@ -36,7 +55,6 @@ export function updateCommand(program) {
36
55
  markdownDoc = options.files.map((file) => readMarkdownUploadFromFile(file, 'tune', Boolean(options.allowSensitiveUpload)));
37
56
  }
38
57
  else if (options.file) {
39
- // Single file for all URIs
40
58
  const content = readMarkdownUploadFromFile(options.file, 'tune', Boolean(options.allowSensitiveUpload));
41
59
  markdownDoc = uris.map(() => content);
42
60
  }
@@ -44,7 +62,7 @@ export function updateCommand(program) {
44
62
  try {
45
63
  updates = JSON.parse(options.updates);
46
64
  }
47
- catch (_e) {
65
+ catch {
48
66
  writeError('Invalid JSON in --updates option');
49
67
  process.exit(1);
50
68
  return;
@@ -62,19 +80,11 @@ export function updateCommand(program) {
62
80
  tuneOpts.updates = updates;
63
81
  if (rawSpace.length > 0)
64
82
  tuneOpts.space = rawSpace;
65
- // Auto-inject review_evidence from env (used by integration tests)
66
- const envReviewEvidence = process.env['SQUADRULES_REVIEW_EVIDENCE'];
67
- if (envReviewEvidence) {
68
- try {
69
- const parsed = JSON.parse(envReviewEvidence);
70
- if (parsed && typeof parsed.verdict_file === 'string' && typeof parsed.exit_code === 'number' && typeof parsed.stdout === 'string') {
71
- tuneOpts.reviewEvidence = parsed;
72
- }
73
- }
74
- catch { /* ignore malformed env review_evidence */ }
75
- }
76
- const response = await client.tune(uris, tuneOpts);
77
- writeJson(response);
83
+ const envReviewEvidence = reviewEvidenceFromEnv();
84
+ if (envReviewEvidence)
85
+ tuneOpts.reviewEvidence = envReviewEvidence;
86
+ const response = await backend.tune(uris, tuneOpts);
87
+ emitResult(format, response, { pretty: renderTunePretty, text: renderTuneText });
78
88
  }
79
89
  catch (error) {
80
90
  if (error instanceof Error && error.message.includes('ENOENT')) {
@@ -85,4 +95,4 @@ export function updateCommand(program) {
85
95
  }
86
96
  });
87
97
  }
88
- //# sourceMappingURL=update.js.map
98
+ //# sourceMappingURL=tune.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tune.js","sourceRoot":"","sources":["../../../src/cli/commands/tune.ts"],"names":[],"mappings":"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"}
@@ -2,8 +2,10 @@
2
2
  * CLI Configuration
3
3
  */
4
4
  /**
5
- * Default API base for Commander --url and fallbacks: SQUADRULES_API_URL, then saved config defaultUrl, then localhost:3000.
6
- * Matches docs/CLI.md resolution order (without an explicit --url flag).
5
+ * Default target for Commander --url and fallbacks: SQUADRULES_API_URL, then saved
6
+ * config defaultUrl, then the local sentinel (run in-process against the embedded store).
7
+ * The CLI is local-by-default; `login` persists an http defaultUrl that flips subsequent
8
+ * commands to the HTTP backend. Matches docs/CLI.md resolution order (without --url).
7
9
  */
8
10
  export declare function getCliApiUrlDefault(): string;
9
11
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/cli/config.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH;;;GAGG;AACH,wBAAgB,mBAAmB,IAAI,MAAM,CAM5C;AAED;;GAEG;AACH,wBAAgB,SAAS,IAAI,MAAM,CAElC"}
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/cli/config.ts"],"names":[],"mappings":"AAAA;;GAEG;AAKH;;;;;GAKG;AACH,wBAAgB,mBAAmB,IAAI,MAAM,CAM5C;AAED;;GAEG;AACH,wBAAgB,SAAS,IAAI,MAAM,CAElC"}
@@ -2,9 +2,12 @@
2
2
  * CLI Configuration
3
3
  */
4
4
  import { getDefaultApiUrlFromFile } from './config-file.js';
5
+ import { LOCAL_TARGET } from './local-target.js';
5
6
  /**
6
- * Default API base for Commander --url and fallbacks: SQUADRULES_API_URL, then saved config defaultUrl, then localhost:3000.
7
- * Matches docs/CLI.md resolution order (without an explicit --url flag).
7
+ * Default target for Commander --url and fallbacks: SQUADRULES_API_URL, then saved
8
+ * config defaultUrl, then the local sentinel (run in-process against the embedded store).
9
+ * The CLI is local-by-default; `login` persists an http defaultUrl that flips subsequent
10
+ * commands to the HTTP backend. Matches docs/CLI.md resolution order (without --url).
8
11
  */
9
12
  export function getCliApiUrlDefault() {
10
13
  const env = (process.env['SQUADRULES_API_URL'] || '').trim();
@@ -13,7 +16,7 @@ export function getCliApiUrlDefault() {
13
16
  const fromFile = getDefaultApiUrlFromFile();
14
17
  if (fromFile)
15
18
  return fromFile;
16
- return 'http://localhost:3000';
19
+ return LOCAL_TARGET;
17
20
  }
18
21
  /**
19
22
  * Get the SQUADRULES API base URL (same as getCliApiUrlDefault).
@@ -1 +1 @@
1
- {"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/cli/config.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,wBAAwB,EAAE,MAAM,kBAAkB,CAAC;AAE5D;;;GAGG;AACH,MAAM,UAAU,mBAAmB;IAC/B,MAAM,GAAG,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,oBAAoB,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;IAC7D,IAAI,GAAG;QAAE,OAAO,GAAG,CAAC;IACpB,MAAM,QAAQ,GAAG,wBAAwB,EAAE,CAAC;IAC5C,IAAI,QAAQ;QAAE,OAAO,QAAQ,CAAC;IAC9B,OAAO,uBAAuB,CAAC;AACnC,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,SAAS;IACrB,OAAO,mBAAmB,EAAE,CAAC;AACjC,CAAC"}
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/cli/config.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,wBAAwB,EAAE,MAAM,kBAAkB,CAAC;AAC5D,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAEjD;;;;;GAKG;AACH,MAAM,UAAU,mBAAmB;IAC/B,MAAM,GAAG,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,oBAAoB,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;IAC7D,IAAI,GAAG;QAAE,OAAO,GAAG,CAAC;IACpB,MAAM,QAAQ,GAAG,wBAAwB,EAAE,CAAC;IAC5C,IAAI,QAAQ;QAAE,OAAO,QAAQ,CAAC;IAC9B,OAAO,YAAY,CAAC;AACxB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,SAAS;IACrB,OAAO,mBAAmB,EAAE,CAAC;AACjC,CAAC"}
@@ -10,6 +10,12 @@
10
10
  * reason instead of a bare "fetch failed". Message-only — never alters control flow.
11
11
  */
12
12
  export declare function describeFetchError(err: unknown): string;
13
+ /**
14
+ * True when a fetch failure looks transient and is worth retrying: an abort (timeout) or a
15
+ * connect-level socket/DNS error surfaced either as `err.code` or as an opaque undici
16
+ * `TypeError: fetch failed`.
17
+ */
18
+ export declare function isRetryableNetworkError(err: unknown): boolean;
13
19
  /**
14
20
  * Build a network Error whose message carries the underlying cause plus a reachability hint, and
15
21
  * whose `cause` preserves the original error for programmatic access.
@@ -1 +1 @@
1
- {"version":3,"file":"fetch-error.d.ts","sourceRoot":"","sources":["../../src/cli/fetch-error.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,OAAO,GAAG,MAAM,CAYvD;AAED;;;GAGG;AACH,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,OAAO,GAAG,KAAK,CAOxE"}
1
+ {"version":3,"file":"fetch-error.d.ts","sourceRoot":"","sources":["../../src/cli/fetch-error.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,OAAO,GAAG,MAAM,CAYvD;AAED;;;;GAIG;AACH,wBAAgB,uBAAuB,CAAC,GAAG,EAAE,OAAO,GAAG,OAAO,CAU7D;AAED;;;GAGG;AACH,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,OAAO,GAAG,KAAK,CAOxE"}
@@ -25,6 +25,24 @@ export function describeFetchError(err) {
25
25
  }
26
26
  return detail;
27
27
  }
28
+ /**
29
+ * True when a fetch failure looks transient and is worth retrying: an abort (timeout) or a
30
+ * connect-level socket/DNS error surfaced either as `err.code` or as an opaque undici
31
+ * `TypeError: fetch failed`.
32
+ */
33
+ export function isRetryableNetworkError(err) {
34
+ if (err instanceof Error) {
35
+ if (err.name === 'AbortError')
36
+ return true;
37
+ const code = err.code;
38
+ if (code && ['ECONNREFUSED', 'ECONNRESET', 'EPIPE', 'ENOTFOUND', 'UND_ERR_CONNECT_TIMEOUT'].includes(code)) {
39
+ return true;
40
+ }
41
+ if (err.name === 'TypeError' && /fetch|network/i.test(err.message))
42
+ return true;
43
+ }
44
+ return false;
45
+ }
28
46
  /**
29
47
  * Build a network Error whose message carries the underlying cause plus a reachability hint, and
30
48
  * whose `cause` preserves the original error for programmatic access.
@@ -1 +1 @@
1
- {"version":3,"file":"fetch-error.js","sourceRoot":"","sources":["../../src/cli/fetch-error.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH;;;GAGG;AACH,MAAM,UAAU,kBAAkB,CAAC,GAAY;IAC3C,IAAI,CAAC,CAAC,GAAG,YAAY,KAAK,CAAC;QAAE,OAAO,eAAe,CAAC;IACpD,IAAI,MAAM,GAAG,GAAG,CAAC,OAAO,IAAI,eAAe,CAAC;IAC5C,MAAM,KAAK,GAAI,GAA2B,CAAC,KAAK,CAAC;IACjD,IAAI,KAAK,YAAY,KAAK,EAAE,CAAC;QACzB,MAAM,IAAI,GAAI,KAA+B,CAAC,IAAI,CAAC;QACnD,MAAM,SAAS,GAAG,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC;QACpE,IAAI,SAAS,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAC;YAAE,MAAM,GAAG,GAAG,MAAM,KAAK,SAAS,GAAG,CAAC;IACtF,CAAC;SAAM,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;QACvE,MAAM,GAAG,GAAG,MAAM,KAAK,KAAK,GAAG,CAAC;IACpC,CAAC;IACD,OAAO,MAAM,CAAC;AAClB,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,oBAAoB,CAAC,MAAc,EAAE,GAAY;IAC7D,MAAM,QAAQ,GAAG,IAAI,KAAK,CACtB,GAAG,MAAM,KAAK,kBAAkB,CAAC,GAAG,CAAC,IAAI;QACzC,0FAA0F,CAC7F,CAAC;IACD,QAAgC,CAAC,KAAK,GAAG,GAAG,CAAC;IAC9C,OAAO,QAAQ,CAAC;AACpB,CAAC"}
1
+ {"version":3,"file":"fetch-error.js","sourceRoot":"","sources":["../../src/cli/fetch-error.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH;;;GAGG;AACH,MAAM,UAAU,kBAAkB,CAAC,GAAY;IAC3C,IAAI,CAAC,CAAC,GAAG,YAAY,KAAK,CAAC;QAAE,OAAO,eAAe,CAAC;IACpD,IAAI,MAAM,GAAG,GAAG,CAAC,OAAO,IAAI,eAAe,CAAC;IAC5C,MAAM,KAAK,GAAI,GAA2B,CAAC,KAAK,CAAC;IACjD,IAAI,KAAK,YAAY,KAAK,EAAE,CAAC;QACzB,MAAM,IAAI,GAAI,KAA+B,CAAC,IAAI,CAAC;QACnD,MAAM,SAAS,GAAG,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC;QACpE,IAAI,SAAS,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAC;YAAE,MAAM,GAAG,GAAG,MAAM,KAAK,SAAS,GAAG,CAAC;IACtF,CAAC;SAAM,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;QACvE,MAAM,GAAG,GAAG,MAAM,KAAK,KAAK,GAAG,CAAC;IACpC,CAAC;IACD,OAAO,MAAM,CAAC;AAClB,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,uBAAuB,CAAC,GAAY;IAChD,IAAI,GAAG,YAAY,KAAK,EAAE,CAAC;QACvB,IAAI,GAAG,CAAC,IAAI,KAAK,YAAY;YAAE,OAAO,IAAI,CAAC;QAC3C,MAAM,IAAI,GAAI,GAA6B,CAAC,IAAI,CAAC;QACjD,IAAI,IAAI,IAAI,CAAC,cAAc,EAAE,YAAY,EAAE,OAAO,EAAE,WAAW,EAAE,yBAAyB,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;YACzG,OAAO,IAAI,CAAC;QAChB,CAAC;QACD,IAAI,GAAG,CAAC,IAAI,KAAK,WAAW,IAAI,gBAAgB,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC;YAAE,OAAO,IAAI,CAAC;IACpF,CAAC;IACD,OAAO,KAAK,CAAC;AACjB,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,oBAAoB,CAAC,MAAc,EAAE,GAAY;IAC7D,MAAM,QAAQ,GAAG,IAAI,KAAK,CACtB,GAAG,MAAM,KAAK,kBAAkB,CAAC,GAAG,CAAC,IAAI;QACzC,0FAA0F,CAC7F,CAAC;IACD,QAAgC,CAAC,KAAK,GAAG,GAAG,CAAC;IAC9C,OAAO,QAAQ,CAAC;AACpB,CAAC"}
@@ -0,0 +1,20 @@
1
+ /**
2
+ * CLI output-format resolution (global `--format`).
3
+ *
4
+ * Every data command renders through one of three effective formats. `auto`
5
+ * (the default) is human-first: pretty on a TTY, JSON when piped/non-TTY, so
6
+ * `squadrules activate "..."` reads nicely at a terminal but stays machine-parseable
7
+ * when redirected or run by an agent. Precedence: `--format` flag > `SQUADRULES_FORMAT`
8
+ * env > auto.
9
+ */
10
+ import type { Command } from 'commander';
11
+ /** Accepted `--format` values. */
12
+ export type OutputFormat = 'auto' | 'pretty' | 'json' | 'text';
13
+ /** The three concrete renderings after `auto` is resolved against the TTY. */
14
+ export type ResolvedFormat = 'pretty' | 'json' | 'text';
15
+ /**
16
+ * Resolve the effective output format for a command. `auto` becomes `pretty` on a TTY
17
+ * and `json` when stdout is piped/redirected (non-TTY).
18
+ */
19
+ export declare function resolveOutputFormat(program: Command): ResolvedFormat;
20
+ //# sourceMappingURL=format.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"format.d.ts","sourceRoot":"","sources":["../../src/cli/format.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEzC,kCAAkC;AAClC,MAAM,MAAM,YAAY,GAAG,MAAM,GAAG,QAAQ,GAAG,MAAM,GAAG,MAAM,CAAC;AAE/D,8EAA8E;AAC9E,MAAM,MAAM,cAAc,GAAG,QAAQ,GAAG,MAAM,GAAG,MAAM,CAAC;AASxD;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,OAAO,GAAG,cAAc,CAMpE"}
@@ -0,0 +1,18 @@
1
+ const VALID = ['auto', 'pretty', 'json', 'text'];
2
+ function normalize(raw) {
3
+ const v = (raw ?? '').trim().toLowerCase();
4
+ return VALID.includes(v) ? v : 'auto';
5
+ }
6
+ /**
7
+ * Resolve the effective output format for a command. `auto` becomes `pretty` on a TTY
8
+ * and `json` when stdout is piped/redirected (non-TTY).
9
+ */
10
+ export function resolveOutputFormat(program) {
11
+ const g = program.optsWithGlobals?.() ?? program.opts();
12
+ const flag = typeof g['format'] === 'string' ? g['format'] : undefined;
13
+ const chosen = normalize(flag ?? process.env['SQUADRULES_FORMAT']);
14
+ if (chosen === 'pretty' || chosen === 'json' || chosen === 'text')
15
+ return chosen;
16
+ return process.stdout.isTTY ? 'pretty' : 'json';
17
+ }
18
+ //# sourceMappingURL=format.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"format.js","sourceRoot":"","sources":["../../src/cli/format.ts"],"names":[],"mappings":"AAiBA,MAAM,KAAK,GAAsB,CAAC,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;AAEpE,SAAS,SAAS,CAAC,GAA8B;IAC/C,MAAM,CAAC,GAAG,CAAC,GAAG,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IAC3C,OAAO,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAE,CAAkB,CAAC,CAAC,CAAC,MAAM,CAAC;AAC1D,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,mBAAmB,CAAC,OAAgB;IAClD,MAAM,CAAC,GAAG,OAAO,CAAC,eAAe,EAAE,EAAE,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;IACxD,MAAM,IAAI,GAAG,OAAO,CAAC,CAAC,QAAQ,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IACvE,MAAM,MAAM,GAAG,SAAS,CAAC,IAAI,IAAI,OAAO,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAC,CAAC;IACnE,IAAI,MAAM,KAAK,QAAQ,IAAI,MAAM,KAAK,MAAM,IAAI,MAAM,KAAK,MAAM;QAAE,OAAO,MAAM,CAAC;IACjF,OAAO,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC;AAClD,CAAC"}
@@ -2,5 +2,5 @@
2
2
  /**
3
3
  * SQUADRULES CLI - Command-line interface for interacting with SQUADRULES REST API
4
4
  */
5
- export {};
5
+ import './log-sink-prelude.js';
6
6
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":";AACA;;GAEG"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":";AACA;;GAEG;AAIH,OAAO,uBAAuB,CAAC"}
package/dist/cli/index.js CHANGED
@@ -2,6 +2,9 @@
2
2
  /**
3
3
  * SQUADRULES CLI - Command-line interface for interacting with SQUADRULES REST API
4
4
  */
5
+ // Must be first: routes all CLI logs to stderr (stdout is the payload channel) before the
6
+ // module graph eagerly creates the shared logger. See ./log-sink-prelude.ts.
7
+ import './log-sink-prelude.js';
5
8
  import { createProgram } from './program.js';
6
9
  // Bare invocation defaults to `serve` → stdio transport when stdin is NOT a TTY
7
10
  // (i.e. an MCP host spawned this process with piped stdin). When a human runs
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":";AACA;;GAEG;AAEH,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAE7C,gFAAgF;AAChF,8EAA8E;AAC9E,+EAA+E;AAC/E,IAAI,OAAO,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;IACrD,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AAC7B,CAAC;AAED,mFAAmF;AACnF,MAAM,aAAa,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":";AACA;;GAEG;AAEH,0FAA0F;AAC1F,6EAA6E;AAC7E,OAAO,uBAAuB,CAAC;AAC/B,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAE7C,gFAAgF;AAChF,8EAA8E;AAC9E,+EAA+E;AAC/E,IAAI,OAAO,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;IACrD,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AAC7B,CAAC;AAED,mFAAmF;AACnF,MAAM,aAAa,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC"}
@@ -0,0 +1,11 @@
1
+ /**
2
+ * Local target sentinel — dependency-free leaf so both `config.ts` (default URL)
3
+ * and `backend/resolve-backend.ts` (target resolution) can share it without a cycle.
4
+ */
5
+ /** Sentinel `--url` target meaning "run in-process against the embedded store". */
6
+ export declare const LOCAL_TARGET = "stdio://local";
7
+ /** `--url` values that select the local backend (matched case-insensitively). */
8
+ export declare const LOCAL_TARGET_ALIASES: readonly string[];
9
+ /** True when a raw `--url`/target value selects the in-process local backend. */
10
+ export declare function isLocalTarget(raw: string | undefined | null): boolean;
11
+ //# sourceMappingURL=local-target.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"local-target.d.ts","sourceRoot":"","sources":["../../src/cli/local-target.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,mFAAmF;AACnF,eAAO,MAAM,YAAY,kBAAkB,CAAC;AAE5C,iFAAiF;AACjF,eAAO,MAAM,oBAAoB,EAAE,SAAS,MAAM,EAAwC,CAAC;AAE3F,iFAAiF;AACjF,wBAAgB,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,GAAG,OAAO,CAGrE"}
@@ -0,0 +1,14 @@
1
+ /**
2
+ * Local target sentinel — dependency-free leaf so both `config.ts` (default URL)
3
+ * and `backend/resolve-backend.ts` (target resolution) can share it without a cycle.
4
+ */
5
+ /** Sentinel `--url` target meaning "run in-process against the embedded store". */
6
+ export const LOCAL_TARGET = 'stdio://local';
7
+ /** `--url` values that select the local backend (matched case-insensitively). */
8
+ export const LOCAL_TARGET_ALIASES = ['stdio://local', 'local', 'stdio'];
9
+ /** True when a raw `--url`/target value selects the in-process local backend. */
10
+ export function isLocalTarget(raw) {
11
+ const v = (raw ?? '').trim().toLowerCase();
12
+ return LOCAL_TARGET_ALIASES.includes(v);
13
+ }
14
+ //# sourceMappingURL=local-target.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"local-target.js","sourceRoot":"","sources":["../../src/cli/local-target.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,mFAAmF;AACnF,MAAM,CAAC,MAAM,YAAY,GAAG,eAAe,CAAC;AAE5C,iFAAiF;AACjF,MAAM,CAAC,MAAM,oBAAoB,GAAsB,CAAC,eAAe,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;AAE3F,iFAAiF;AACjF,MAAM,UAAU,aAAa,CAAC,GAA8B;IAC1D,MAAM,CAAC,GAAG,CAAC,GAAG,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IAC3C,OAAO,oBAAoB,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;AAC1C,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=log-sink-prelude.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"log-sink-prelude.d.ts","sourceRoot":"","sources":["../../src/cli/log-sink-prelude.ts"],"names":[],"mappings":"AAuBA,OAAO,EAAE,CAAC"}
@@ -0,0 +1,23 @@
1
+ /**
2
+ * CLI log-sink prelude — MUST be the first import in `cli/index.ts`.
3
+ *
4
+ * The CLI reserves stdout for command payloads (`activate`/`forward`/`reward`/`export`
5
+ * JSON, text, etc.). In local (in-process) mode the runtime boots and emits INFO logs,
6
+ * but a data command is not a local *server* launch, so `TRANSPORT_TYPE` resolves to
7
+ * `http` (see `config/runtime-mode.ts`) and the shared pino sink would otherwise write
8
+ * those logs to stdout — corrupting the payload (`activate ... | jq` fails to parse).
9
+ *
10
+ * Setting the flag here, before the module graph eagerly creates the logger singleton in
11
+ * `utils/structured-logger.ts`, routes all CLI logs to stderr (ADR 0008: stdout is a data
12
+ * channel). The spawned `serve` child overrides this per its own transport
13
+ * (see `commands/serve.ts`), so an http server keeps logging to stdout as containers expect.
14
+ */
15
+ process.env['SQUADRULES_LOG_STDERR'] = '1';
16
+ // Piping a payload to a consumer that exits early (`... | head`, or `jq` after a parse
17
+ // error) closes stdout; the next write then emits EPIPE. Attach an error handler so the
18
+ // CLI ends cleanly instead of crashing with an unhandled 'error' event on the socket.
19
+ process.stdout.on('error', () => {
20
+ // Ignore stdout write errors (EPIPE from an early-exiting pipe consumer).
21
+ });
22
+ export {};
23
+ //# sourceMappingURL=log-sink-prelude.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"log-sink-prelude.js","sourceRoot":"","sources":["../../src/cli/log-sink-prelude.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AACH,OAAO,CAAC,GAAG,CAAC,uBAAuB,CAAC,GAAG,GAAG,CAAC;AAE3C,uFAAuF;AACvF,wFAAwF;AACxF,sFAAsF;AACtF,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE;IAC9B,0EAA0E;AAC5E,CAAC,CAAC,CAAC"}
@@ -1,10 +1,27 @@
1
1
  /**
2
2
  * CLI Output Utility
3
- * Uses process.stdout/stderr directly to avoid console.* linting restrictions
3
+ * Uses process.stdout/stderr directly to avoid console.* linting restrictions.
4
+ *
5
+ * Data commands render through {@link emitResult}, which applies the resolved global
6
+ * `--format` (see format.ts): `json` prints the canonical response object, `pretty`
7
+ * prints a human rendering on stdout with the next-call hint on stderr, and `text`
8
+ * prints a minimal plain-text summary. Auth/util commands use the raw writers below.
4
9
  */
10
+ import type { ResolvedFormat } from './format.js';
5
11
  export declare function writeStdout(message: string): void;
6
12
  export declare function writeStderr(message: string): void;
7
13
  export declare function writeError(message: string): void;
8
- export declare function writeJson(data: any): void;
9
- export declare function writeMarkdown(content: string): void;
14
+ export declare function writeJson(data: unknown): void;
15
+ /**
16
+ * Per-command rendering hooks. `pretty`/`text` return stdout bodies; `nextCall` returns
17
+ * a short human hint that pretty mode prints on stderr (JSON mode keeps the structured
18
+ * `next_call` in the body instead, so no hint is emitted there).
19
+ */
20
+ export interface ResultView<T> {
21
+ pretty(data: T): string;
22
+ text(data: T): string;
23
+ nextCall?(data: T): string | null;
24
+ }
25
+ /** Render a command result to stdout/stderr according to the resolved output format. */
26
+ export declare function emitResult<T>(format: ResolvedFormat, data: T, view: ResultView<T>): void;
10
27
  //# sourceMappingURL=output.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"output.d.ts","sourceRoot":"","sources":["../../src/cli/output.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,wBAAgB,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAKjD;AAED,wBAAgB,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAEjD;AAED,wBAAgB,UAAU,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAEhD;AAED,wBAAgB,SAAS,CAAC,IAAI,EAAE,GAAG,GAAG,IAAI,CAEzC;AAED,wBAAgB,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAEnD"}
1
+ {"version":3,"file":"output.d.ts","sourceRoot":"","sources":["../../src/cli/output.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAElD,wBAAgB,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAKjD;AAED,wBAAgB,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAEjD;AAED,wBAAgB,UAAU,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAEhD;AAED,wBAAgB,SAAS,CAAC,IAAI,EAAE,OAAO,GAAG,IAAI,CAE7C;AAED;;;;GAIG;AACH,MAAM,WAAW,UAAU,CAAC,CAAC;IACzB,MAAM,CAAC,IAAI,EAAE,CAAC,GAAG,MAAM,CAAC;IACxB,IAAI,CAAC,IAAI,EAAE,CAAC,GAAG,MAAM,CAAC;IACtB,QAAQ,CAAC,CAAC,IAAI,EAAE,CAAC,GAAG,MAAM,GAAG,IAAI,CAAC;CACrC;AAED,wFAAwF;AACxF,wBAAgB,UAAU,CAAC,CAAC,EAAE,MAAM,EAAE,cAAc,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,UAAU,CAAC,CAAC,CAAC,GAAG,IAAI,CAYxF"}