@squadrules/mcp 5.4.1 → 5.5.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 (158) 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/spaces.d.ts +2 -2
  58. package/dist/cli/commands/spaces.d.ts.map +1 -1
  59. package/dist/cli/commands/spaces.js +12 -7
  60. package/dist/cli/commands/spaces.js.map +1 -1
  61. package/dist/cli/commands/token.d.ts.map +1 -1
  62. package/dist/cli/commands/token.js +7 -3
  63. package/dist/cli/commands/token.js.map +1 -1
  64. package/dist/cli/commands/tune.d.ts +6 -0
  65. package/dist/cli/commands/tune.d.ts.map +1 -0
  66. package/dist/cli/commands/{update.js → tune.js} +34 -24
  67. package/dist/cli/commands/tune.js.map +1 -0
  68. package/dist/cli/config.d.ts +4 -2
  69. package/dist/cli/config.d.ts.map +1 -1
  70. package/dist/cli/config.js +6 -3
  71. package/dist/cli/config.js.map +1 -1
  72. package/dist/cli/fetch-error.d.ts +6 -0
  73. package/dist/cli/fetch-error.d.ts.map +1 -1
  74. package/dist/cli/fetch-error.js +18 -0
  75. package/dist/cli/fetch-error.js.map +1 -1
  76. package/dist/cli/format.d.ts +20 -0
  77. package/dist/cli/format.d.ts.map +1 -0
  78. package/dist/cli/format.js +18 -0
  79. package/dist/cli/format.js.map +1 -0
  80. package/dist/cli/local-target.d.ts +11 -0
  81. package/dist/cli/local-target.d.ts.map +1 -0
  82. package/dist/cli/local-target.js +14 -0
  83. package/dist/cli/local-target.js.map +1 -0
  84. package/dist/cli/output.d.ts +20 -3
  85. package/dist/cli/output.d.ts.map +1 -1
  86. package/dist/cli/output.js +14 -6
  87. package/dist/cli/output.js.map +1 -1
  88. package/dist/cli/program.d.ts.map +1 -1
  89. package/dist/cli/program.js +12 -7
  90. package/dist/cli/program.js.map +1 -1
  91. package/dist/cli/render.d.ts +37 -0
  92. package/dist/cli/render.d.ts.map +1 -0
  93. package/dist/cli/render.js +179 -0
  94. package/dist/cli/render.js.map +1 -0
  95. package/dist/cli/resolve-timeout.d.ts +16 -0
  96. package/dist/cli/resolve-timeout.d.ts.map +1 -0
  97. package/dist/cli/resolve-timeout.js +43 -0
  98. package/dist/cli/resolve-timeout.js.map +1 -0
  99. package/dist/cli/skill-zip-local-write.d.ts +6 -4
  100. package/dist/cli/skill-zip-local-write.d.ts.map +1 -1
  101. package/dist/cli/skill-zip-local-write.js +5 -3
  102. package/dist/cli/skill-zip-local-write.js.map +1 -1
  103. package/dist/cli/train-batch.d.ts +20 -0
  104. package/dist/cli/train-batch.d.ts.map +1 -0
  105. package/dist/cli/train-batch.js +168 -0
  106. package/dist/cli/train-batch.js.map +1 -0
  107. package/dist/embed-docs/mem/README.md +10 -0
  108. package/dist/embed-docs/mem/adapter-migration.md +1 -1
  109. package/dist/embed-docs/mem/bulk-insert-adapters-via-cli.md +1 -1
  110. package/dist/embed-docs/mem/challenge-type-guide.md +1 -1
  111. package/dist/embed-docs/mem/create-new-protocol.md +1 -1
  112. package/dist/embed-docs/mem/critic-loop-guide.md +1 -1
  113. package/dist/embed-docs/mem/critic-loop.md +1 -1
  114. package/dist/embed-docs/mem/phase-critic-guide.md +42 -0
  115. package/dist/embed-docs/mem/phase-critic.md +45 -0
  116. package/dist/embed-docs/mem/protocol-linking-guide.md +1 -1
  117. package/dist/embed-docs/mem/refine-search.md +1 -1
  118. package/dist/embed-docs/mem/skill-format-guide.md +1 -1
  119. package/dist/index.d.ts.map +1 -1
  120. package/dist/index.js +6 -70
  121. package/dist/index.js.map +1 -1
  122. package/dist/resources/embedded-mcp-resources.d.ts +2 -0
  123. package/dist/resources/embedded-mcp-resources.d.ts.map +1 -1
  124. package/dist/resources/embedded-mcp-resources.js +11 -9
  125. package/dist/resources/embedded-mcp-resources.js.map +1 -1
  126. package/dist/runtime/boot-local-runtime.d.ts +37 -0
  127. package/dist/runtime/boot-local-runtime.d.ts.map +1 -0
  128. package/dist/runtime/boot-local-runtime.js +122 -0
  129. package/dist/runtime/boot-local-runtime.js.map +1 -0
  130. package/dist/services/embedding/lazy-probe.d.ts +7 -0
  131. package/dist/services/embedding/lazy-probe.d.ts.map +1 -0
  132. package/dist/services/embedding/lazy-probe.js +26 -0
  133. package/dist/services/embedding/lazy-probe.js.map +1 -0
  134. package/dist/ui/assets/{AccountPage-D_Tov-N3.js → AccountPage-BdQTtPDO.js} +1 -1
  135. package/dist/ui/assets/{index-O5m4UYwZ.js → index-BI3vM1h6.js} +2 -2
  136. package/dist/ui/assets/index-Dq6apLxZ.css +2 -0
  137. package/dist/ui/index.html +2 -2
  138. package/dist/utils/tenant-context.d.ts +6 -0
  139. package/dist/utils/tenant-context.d.ts.map +1 -1
  140. package/dist/utils/tenant-context.js +6 -1
  141. package/dist/utils/tenant-context.js.map +1 -1
  142. package/package.json +1 -1
  143. package/dist/cli/commands/attest.d.ts.map +0 -1
  144. package/dist/cli/commands/attest.js.map +0 -1
  145. package/dist/cli/commands/begin.d.ts.map +0 -1
  146. package/dist/cli/commands/begin.js +0 -27
  147. package/dist/cli/commands/begin.js.map +0 -1
  148. package/dist/cli/commands/search.d.ts.map +0 -1
  149. package/dist/cli/commands/search.js +0 -25
  150. package/dist/cli/commands/search.js.map +0 -1
  151. package/dist/cli/commands/update.d.ts +0 -6
  152. package/dist/cli/commands/update.d.ts.map +0 -1
  153. package/dist/cli/commands/update.js.map +0 -1
  154. package/dist/cli/format-next-call.d.ts +0 -2
  155. package/dist/cli/format-next-call.d.ts.map +0 -1
  156. package/dist/cli/format-next-call.js +0 -63
  157. package/dist/cli/format-next-call.js.map +0 -1
  158. package/dist/ui/assets/index-CSUUmfdT.css +0 -2
@@ -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":"AAoBA,SAAS,QAAQ,CAAC,KAAc;IAC9B,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,CAAC;AACrD,CAAC;AAED,SAAS,UAAU,CAAC,KAAa;IAC/B,OAAO,IAAI,KAAK,GAAG,CAAC;AACtB,CAAC;AAED,8EAA8E;AAC9E,uCAAuC;AACvC,8EAA8E;AAE9E,SAAS,0BAA0B,CAAC,QAAoB;IACtD,MAAM,IAAI,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC;IAC9B,MAAM,IAAI,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC;IAC9B,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,QAAQ;QAAE,OAAO,IAAI,CAAC;IACpE,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;QACvB,MAAM,QAAQ,GAAG,QAAQ,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QACtF,OAAO,sBAAsB,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,eAAe,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC;IAC5G,CAAC;IACD,IAAI,IAAI,KAAK,QAAQ,EAAE,CAAC;QACtB,OAAO,qBAAqB,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,sBAAsB,CAAC;IAC5E,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,yBAAyB,CAAC,QAAoB;IACrD,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;QAAE,OAAO,IAAI,CAAC;IACrD,KAAK,MAAM,MAAM,IAAI,QAAQ,CAAC,SAAS,CAAc,EAAE,CAAC;QACtD,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC;YAAE,SAAS;QAChC,MAAM,KAAK,GAAG,MAAM,CAAC,oBAAoB,CAAC,CAAC;QAC3C,IAAI,QAAQ,CAAC,KAAK,CAAC,IAAI,OAAO,KAAK,CAAC,KAAK,CAAC,KAAK,QAAQ,EAAE,CAAC;YACxD,OAAO,sBAAsB,UAAU,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC;QAC1D,CAAC;IACH,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,YAAY,CAAC,QAAiB;IAC5C,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC;QAAE,OAAO,IAAI,CAAC;IACrC,IAAI,QAAQ,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC,EAAE,CAAC;QACpC,MAAM,OAAO,GAAG,0BAA0B,CAAC,QAAQ,CAAC,WAAW,CAAe,CAAC,CAAC;QAChF,OAAO,OAAO,CAAC,CAAC,CAAC,SAAS,OAAO,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;IAC7C,CAAC;IACD,MAAM,WAAW,GAAG,yBAAyB,CAAC,QAAQ,CAAC,CAAC;IACxD,IAAI,WAAW;QAAE,OAAO,SAAS,WAAW,EAAE,CAAC;IAC/C,OAAO,IAAI,CAAC;AACd,CAAC;AAED,8EAA8E;AAC9E,WAAW;AACX,8EAA8E;AAE9E,MAAM,UAAU,oBAAoB,CAAC,GAAmB;IACtD,MAAM,KAAK,GAAa,CAAC,aAAa,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;IACnE,IAAI,GAAG,CAAC,OAAO;QAAE,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;IACzC,MAAM,OAAO,GAAG,GAAG,CAAC,OAAO,IAAI,EAAE,CAAC;IAClC,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACzB,KAAK,CAAC,IAAI,CAAC,EAAE,EAAE,uBAAuB,CAAC,CAAC;QACxC,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC1B,CAAC;IACD,KAAK,CAAC,IAAI,CAAC,EAAE,EAAE,YAAY,OAAO,CAAC,MAAM,IAAI,CAAC,CAAC;IAC/C,OAAO,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE;QAChC,MAAM,KAAK,GACT,OAAO,MAAM,CAAC,gBAAgB,KAAK,QAAQ,CAAC,CAAC,CAAC,UAAU,MAAM,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACpG,MAAM,KAAK,GAAG,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,KAAK,MAAM,CAAC,UAAU,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;QACjE,KAAK,CAAC,IAAI,CAAC,KAAK,KAAK,GAAG,CAAC,MAAM,MAAM,CAAC,IAAI,KAAK,MAAM,CAAC,KAAK,GAAG,KAAK,GAAG,KAAK,EAAE,CAAC,CAAC;QAC/E,KAAK,CAAC,IAAI,CAAC,QAAQ,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC;QACjC,IAAI,MAAM,CAAC,WAAW;YAAE,KAAK,CAAC,IAAI,CAAC,YAAY,MAAM,CAAC,WAAW,EAAE,CAAC,CAAC;IACvE,CAAC,CAAC,CAAC;IACH,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,GAAmB;IACpD,OAAO,CAAC,GAAG,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACpE,CAAC;AAED,8EAA8E;AAC9E,UAAU;AACV,8EAA8E;AAE9E,MAAM,UAAU,mBAAmB,CAAC,GAAkB;IACpD,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,MAAM,OAAO,GAAG,GAAG,CAAC,mBAAmB,IAAI,GAAG,CAAC,oBAAoB,IAAI,SAAS,CAAC;IACjF,KAAK,CAAC,IAAI,CAAC,YAAY,OAAO,EAAE,CAAC,CAAC;IAClC,IAAI,GAAG,CAAC,mBAAmB,IAAI,GAAG,CAAC,mBAAmB,EAAE,CAAC;QACvD,KAAK,CAAC,IAAI,CAAC,QAAQ,GAAG,CAAC,mBAAmB,IAAI,GAAG,CAAC,mBAAmB,EAAE,CAAC,CAAC;IAC3E,CAAC;IACD,MAAM,YAAY,GAAG,GAAG,CAAC,QAAQ,EAAE,IAAI,IAAI,KAAK,CAAC;IACjD,MAAM,YAAY,GAAG,GAAG,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,QAAQ,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;IACvF,KAAK,CAAC,IAAI,CAAC,aAAa,YAAY,GAAG,YAAY,EAAE,CAAC,CAAC;IACvD,IAAI,GAAG,CAAC,OAAO;QAAE,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;IACzC,IAAI,GAAG,CAAC,aAAa,EAAE,OAAO,EAAE,CAAC;QAC/B,KAAK,CAAC,IAAI,CAAC,EAAE,EAAE,GAAG,CAAC,aAAa,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC;IACnD,CAAC;IACD,IAAI,GAAG,CAAC,WAAW;QAAE,KAAK,CAAC,IAAI,CAAC,EAAE,EAAE,OAAO,GAAG,CAAC,WAAW,EAAE,CAAC,CAAC;IAC9D,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,GAAkB;IAClD,OAAO,GAAG,CAAC,WAAW,IAAI,EAAE,CAAC;AAC/B,CAAC;AAED,8EAA8E;AAC9E,SAAS;AACT,8EAA8E;AAE9E,MAAM,UAAU,kBAAkB,CAAC,GAAiB;IAClD,MAAM,KAAK,GAAa,CAAC,iBAAiB,GAAG,CAAC,WAAW,YAAY,GAAG,CAAC,YAAY,EAAE,CAAC,CAAC;IACzF,KAAK,MAAM,GAAG,IAAI,GAAG,CAAC,OAAO,IAAI,EAAE,EAAE,CAAC;QACpC,MAAM,KAAK,GAAG,OAAO,GAAG,CAAC,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,UAAU,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACpF,KAAK,CAAC,IAAI,CAAC,KAAK,GAAG,CAAC,GAAG,MAAM,GAAG,CAAC,OAAO,GAAG,KAAK,KAAK,GAAG,CAAC,gBAAgB,GAAG,CAAC,CAAC;IAChF,CAAC;IACD,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,GAAiB;IAChD,OAAO,SAAS,GAAG,CAAC,WAAW,WAAW,GAAG,CAAC,YAAY,EAAE,CAAC;AAC/D,CAAC;AAED,8EAA8E;AAC9E,OAAO;AACP,8EAA8E;AAE9E,MAAM,UAAU,gBAAgB,CAAC,GAAe;IAC9C,MAAM,KAAK,GAAa,CAAC,iBAAiB,GAAG,CAAC,aAAa,YAAY,GAAG,CAAC,YAAY,EAAE,CAAC,CAAC;IAC3F,KAAK,MAAM,GAAG,IAAI,GAAG,CAAC,OAAO,IAAI,EAAE,EAAE,CAAC;QACpC,KAAK,CAAC,IAAI,CAAC,KAAK,GAAG,CAAC,GAAG,MAAM,GAAG,CAAC,MAAM,KAAK,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC;IAC7D,CAAC;IACD,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,GAAe;IAC5C,OAAO,WAAW,GAAG,CAAC,aAAa,WAAW,GAAG,CAAC,YAAY,EAAE,CAAC;AACnE,CAAC;AAED,8EAA8E;AAC9E,SAAS;AACT,8EAA8E;AAE9E,MAAM,UAAU,kBAAkB,CAAC,GAAiB;IAClD,MAAM,KAAK,GAAa,CAAC,mBAAmB,GAAG,CAAC,aAAa,YAAY,GAAG,CAAC,YAAY,EAAE,CAAC,CAAC;IAC7F,KAAK,MAAM,GAAG,IAAI,GAAG,CAAC,OAAO,IAAI,EAAE,EAAE,CAAC;QACpC,KAAK,CAAC,IAAI,CAAC,KAAK,GAAG,CAAC,GAAG,MAAM,GAAG,CAAC,MAAM,KAAK,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC;IAC7D,CAAC;IACD,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,GAAiB;IAChD,OAAO,WAAW,GAAG,CAAC,aAAa,WAAW,GAAG,CAAC,YAAY,EAAE,CAAC;AACnE,CAAC;AAED,8EAA8E;AAC9E,SAAS;AACT,8EAA8E;AAE9E,MAAM,UAAU,kBAAkB,CAAC,GAAiB;IAClD,MAAM,MAAM,GAAG,GAAG,CAAC,MAAM,IAAI,EAAE,CAAC;IAChC,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,gBAAgB,CAAC;IACjD,MAAM,KAAK,GAAa,CAAC,WAAW,MAAM,CAAC,MAAM,IAAI,CAAC,CAAC;IACvD,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QAC3B,KAAK,CAAC,IAAI,CAAC,KAAK,KAAK,CAAC,IAAI,KAAK,KAAK,CAAC,IAAI,MAAM,KAAK,CAAC,aAAa,WAAW,CAAC,CAAC;QAC/E,KAAK,MAAM,OAAO,IAAI,KAAK,CAAC,QAAQ,IAAI,EAAE,EAAE,CAAC;YAC3C,KAAK,CAAC,IAAI,CAAC,SAAS,OAAO,CAAC,KAAK,KAAK,OAAO,CAAC,WAAW,YAAY,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;QACtF,CAAC;IACH,CAAC;IACD,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,GAAiB;IAChD,OAAO,CAAC,GAAG,CAAC,MAAM,IAAI,EAAE,CAAC;SACtB,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,GAAG,KAAK,CAAC,IAAI,KAAK,KAAK,CAAC,IAAI,KAAK,KAAK,CAAC,aAAa,EAAE,CAAC;SACtE,IAAI,CAAC,IAAI,CAAC,CAAC;AAChB,CAAC;AAED,8EAA8E;AAC9E,QAAQ;AACR,8EAA8E;AAE9E,MAAM,UAAU,iBAAiB,CAAC,GAAgB;IAChD,MAAM,KAAK,GAAG,GAAG,CAAC,KAAK,IAAI,EAAE,CAAC;IAC9B,MAAM,KAAK,GAAa,CAAC,UAAU,GAAG,CAAC,MAAM,IAAI,KAAK,CAAC,MAAM,UAAU,CAAC,CAAC;IACzE,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,KAAK,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,KAAK,MAAM,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;IAC9C,CAAC;IACD,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,GAAgB;IAC9C,OAAO,CAAC,GAAG,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC9D,CAAC"}
@@ -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":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AACxC,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,iCAAiC,EAAE,MAAM,kCAAkC,CAAC;AAErF,MAAM,2BAA2B,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,CAAC;AAEtD,SAAS,gBAAgB,CAAC,GAAuB,EAAE,QAAgB;IACjE,IAAI,GAAG,KAAK,SAAS,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE;QAAE,OAAO,QAAQ,CAAC;IACpE,MAAM,CAAC,GAAG,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC;IAC3C,OAAO,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC;AACpD,CAAC;AAED,SAAS,wBAAwB;IAC/B,OAAO,gBAAgB,CAAC,OAAO,CAAC,GAAG,CAAC,0CAA0C,CAAC,EAAE,2BAA2B,CAAC,CAAC;AAChH,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,6BAA6B,CAAC,IAAwB;IACpE,IAAI,IAAI,KAAK,SAAS,IAAI,IAAI,KAAK,IAAI;QAAE,OAAO,IAAI,CAAC;IACrD,MAAM,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC;IAC9B,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IAChC,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,CAAC;IAClD,IAAI,CAAC,IAAI,IAAI,IAAI,KAAK,GAAG,IAAI,IAAI,KAAK,IAAI;QAAE,OAAO,IAAI,CAAC;IACxD,IAAI,CAAC,oCAAoC,CAAC,IAAI,CAAC,IAAI,CAAC;QAAE,OAAO,IAAI,CAAC;IAClE,IAAI,IAAI,CAAC,MAAM,GAAG,GAAG;QAAE,OAAO,IAAI,CAAC;IACnC,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,yBAAyB,CACvC,MAA0B,EAC1B,KAAkF,EAClF,UAAkB,OAAO,CAAC,GAAG,EAAE;IAE/B,IAAI,MAAM,KAAK,SAAS,IAAI,MAAM,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACrD,OAAO,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;IACpD,CAAC;IACD,MAAM,MAAM,GACV,6BAA6B,CAAC,KAAK,CAAC,gBAAgB,CAAC;QACrD,6BAA6B,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;IACnD,MAAM,IAAI,GAAG,MAAM,IAAI,iCAAiC,CAAC;IACzD,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;AAClC,CAAC;AAED,qGAAqG;AACrG,MAAM,UAAU,uCAAuC,CAAC,IAAY;IAClE,MAAM,GAAG,GAAG,wBAAwB,EAAE,CAAC;IACvC,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACtB,MAAM,IAAI,KAAK,CAAC,gCAAgC,CAAC,CAAC;IACpD,CAAC;IACD,IAAI,IAAI,CAAC,MAAM,GAAG,GAAG,EAAE,CAAC;QACtB,MAAM,IAAI,KAAK,CACb,mDAAmD,GAAG,yEAAyE,CAChI,CAAC;IACJ,CAAC;IACD,MAAM,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC,KAAK,IAAI,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC;IAChD,IAAI,CAAC,EAAE,EAAE,CAAC;QACR,MAAM,IAAI,KAAK,CAAC,sEAAsE,CAAC,CAAC;IAC1F,CAAC;AACH,CAAC;AAED,yFAAyF;AACzF,MAAM,UAAU,2BAA2B,CAAC,UAAkB,EAAE,MAAc;IAC5E,uCAAuC,CAAC,MAAM,CAAC,CAAC;IAChD,aAAa,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;AACpC,CAAC"}
@@ -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"}
@@ -0,0 +1,168 @@
1
+ /**
2
+ * Directory-batch `train` support (extracted from cli-train.ts to keep that command file small).
3
+ *
4
+ * A directory batch is machine-facing: it never dumps adapter/content bytes to stdout, prints a
5
+ * compact per-item summary, and `--format json` emits a manifest of what was stored. Each `.md`
6
+ * file is trained as an adapter and any sibling artifacts are attached to it.
7
+ */
8
+ import { closeSync, fstatSync, openSync, readdirSync, readFileSync } from 'fs';
9
+ import { join, relative, resolve } from 'path';
10
+ import { emitResult, writeError } from './output.js';
11
+ import { readMarkdownUploadFromFile } from './upload-guards.js';
12
+ import { inferArtifactMimeFromName } from '../tools/artifact-mime.js';
13
+ /** Directory batch skips `README.md` (human docs); single-file `train path/to/README.md` still works. */
14
+ function isReadmeMarkdownFileName(name) {
15
+ return /^readme\.md$/i.test(name);
16
+ }
17
+ function listSkillFiles(dir, recursive) {
18
+ const base = resolve(dir);
19
+ const out = [];
20
+ const processDir = (current) => {
21
+ const mdPaths = [];
22
+ const artifactEntries = [];
23
+ for (const ent of readdirSync(current, { withFileTypes: true })) {
24
+ if (ent.isDirectory()) {
25
+ if (recursive)
26
+ processDir(join(current, ent.name));
27
+ }
28
+ else if (ent.isFile()) {
29
+ const full = join(current, ent.name);
30
+ if (ent.name.endsWith('.md') && !isReadmeMarkdownFileName(ent.name)) {
31
+ mdPaths.push(full);
32
+ }
33
+ else {
34
+ const mime = inferArtifactMimeFromName(ent.name);
35
+ if (mime)
36
+ artifactEntries.push({ absPath: full, name: ent.name, mime });
37
+ }
38
+ }
39
+ }
40
+ for (const mdPath of mdPaths) {
41
+ out.push({ mdPath, artifacts: artifactEntries });
42
+ }
43
+ };
44
+ processDir(base);
45
+ return out.sort((a, b) => relative(base, a.mdPath).localeCompare(relative(base, b.mdPath)));
46
+ }
47
+ export function readUtf8RegularFile(absPath) {
48
+ const fd = openSync(absPath, 'r');
49
+ try {
50
+ if (!fstatSync(fd).isFile()) {
51
+ throw Object.assign(new Error('Path is not a regular file'), { code: 'ENOTREG' });
52
+ }
53
+ return readFileSync(fd, 'utf8');
54
+ }
55
+ finally {
56
+ closeSync(fd);
57
+ }
58
+ }
59
+ function renderBatchPretty(manifest) {
60
+ const lines = [
61
+ `train batch: ${manifest.root}`,
62
+ ` ${manifest.ok} ok, ${manifest.failed} failed (of ${manifest.total})`
63
+ ];
64
+ for (const row of manifest.results) {
65
+ if (row.ok) {
66
+ lines.push(` ok ${row.path}${row.adapter_uri ? ` → ${row.adapter_uri}` : ''}`);
67
+ }
68
+ else {
69
+ lines.push(` ERR ${row.path}: ${row.error ?? 'unknown error'}`);
70
+ }
71
+ }
72
+ return lines.join('\n');
73
+ }
74
+ function renderBatchText(manifest) {
75
+ return manifest.results
76
+ .map((row) => `${row.ok ? 'ok' : 'err'}\t${row.path}\t${row.ok ? row.adapter_uri ?? '' : row.error ?? ''}`)
77
+ .join('\n');
78
+ }
79
+ /**
80
+ * Train every `.md` file under `abs` (recursively when `--recursive`), attaching sibling artifacts.
81
+ * Emits the batch manifest through the uniform output model. Artifact flags are single-file-only.
82
+ */
83
+ export async function runTrainBatch(backend, abs, flags, trainOptions, format) {
84
+ if (typeof flags.adapter === 'string' ||
85
+ typeof flags.artifactName === 'string' ||
86
+ typeof flags.mime === 'string' ||
87
+ typeof flags.relativePath === 'string') {
88
+ writeError('Artifact flags (--adapter/--artifact-name/--mime/--relative-path) are only supported for single-file train');
89
+ process.exit(1);
90
+ return;
91
+ }
92
+ const files = listSkillFiles(abs, Boolean(flags.recursive));
93
+ if (files.length === 0) {
94
+ writeError('No .md files found in directory');
95
+ process.exit(1);
96
+ return;
97
+ }
98
+ const results = [];
99
+ for (const entry of files) {
100
+ const fp = entry.mdPath;
101
+ const rel = relative(abs, fp).replace(/\\/g, '/');
102
+ try {
103
+ const markdown = readMarkdownUploadFromFile(fp, 'train', Boolean(flags.allowSensitiveUpload));
104
+ const response = await backend.train(markdown, trainOptions);
105
+ const adapterUriValue = response.items[0]?.adapter_uri;
106
+ const resultEntry = {
107
+ path: rel,
108
+ ok: true,
109
+ status: response.status,
110
+ ...(adapterUriValue ? { adapter_uri: adapterUriValue } : {}),
111
+ items: response.items
112
+ };
113
+ if (entry.artifacts.length > 0) {
114
+ const model = flags.model?.trim();
115
+ const adapterUri = resultEntry.adapter_uri;
116
+ const artifactResults = [];
117
+ for (const af of entry.artifacts) {
118
+ const afRel = relative(abs, af.absPath).replace(/\\/g, '/');
119
+ if (!model) {
120
+ writeError(`artifact_skipped: ${afRel} — add --model <id> to upload artifacts`);
121
+ continue;
122
+ }
123
+ if (!adapterUri) {
124
+ writeError(`artifact_skipped: ${afRel} — adapter_uri missing (add slug to frontmatter or use --force)`);
125
+ continue;
126
+ }
127
+ try {
128
+ const content = readUtf8RegularFile(af.absPath);
129
+ const ar = await backend.trainJson({
130
+ llm_model_id: model,
131
+ content,
132
+ force_update: Boolean(flags.force),
133
+ mime: af.mime,
134
+ artifact_name: af.name,
135
+ adapter_uri: adapterUri,
136
+ relative_path: afRel,
137
+ ...(trainOptions.space ? { space: trainOptions.space } : {})
138
+ });
139
+ artifactResults.push({ path: afRel, ok: true, status: ar.status, items: ar.items });
140
+ }
141
+ catch (e) {
142
+ artifactResults.push({ path: afRel, ok: false, error: e instanceof Error ? e.message : String(e) });
143
+ }
144
+ }
145
+ if (artifactResults.length > 0)
146
+ resultEntry.artifacts = artifactResults;
147
+ }
148
+ results.push(resultEntry);
149
+ }
150
+ catch (e) {
151
+ results.push({
152
+ path: rel,
153
+ ok: false,
154
+ error: e instanceof Error ? e.message : String(e)
155
+ });
156
+ }
157
+ }
158
+ const manifest = {
159
+ batch: true,
160
+ root: abs,
161
+ total: results.length,
162
+ ok: results.filter((r) => r.ok).length,
163
+ failed: results.filter((r) => !r.ok).length,
164
+ results
165
+ };
166
+ emitResult(format, manifest, { pretty: renderBatchPretty, text: renderBatchText });
167
+ }
168
+ //# sourceMappingURL=train-batch.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"train-batch.js","sourceRoot":"","sources":["../../src/cli/train-batch.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,QAAQ,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,IAAI,CAAC;AAC/E,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AAC/C,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAErD,OAAO,EAAE,0BAA0B,EAAE,MAAM,oBAAoB,CAAC;AAChE,OAAO,EAAE,yBAAyB,EAAE,MAAM,2BAA2B,CAAC;AAGtE,yGAAyG;AACzG,SAAS,wBAAwB,CAAC,IAAY;IAC5C,OAAO,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACpC,CAAC;AAOD,SAAS,cAAc,CAAC,GAAW,EAAE,SAAkB;IACrD,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC;IAC1B,MAAM,GAAG,GAAqB,EAAE,CAAC;IAEjC,MAAM,UAAU,GAAG,CAAC,OAAe,EAAQ,EAAE;QAC3C,MAAM,OAAO,GAAa,EAAE,CAAC;QAC7B,MAAM,eAAe,GAA2D,EAAE,CAAC;QAEnF,KAAK,MAAM,GAAG,IAAI,WAAW,CAAC,OAAO,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC;YAChE,IAAI,GAAG,CAAC,WAAW,EAAE,EAAE,CAAC;gBACtB,IAAI,SAAS;oBAAE,UAAU,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC;YACrD,CAAC;iBAAM,IAAI,GAAG,CAAC,MAAM,EAAE,EAAE,CAAC;gBACxB,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;gBACrC,IAAI,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,wBAAwB,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;oBACpE,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBACrB,CAAC;qBAAM,CAAC;oBACN,MAAM,IAAI,GAAG,yBAAyB,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;oBACjD,IAAI,IAAI;wBAAE,eAAe,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;gBAC1E,CAAC;YACH,CAAC;QACH,CAAC;QAED,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;YAC7B,GAAG,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE,eAAe,EAAE,CAAC,CAAC;QACnD,CAAC;IACH,CAAC,CAAC;IAEF,UAAU,CAAC,IAAI,CAAC,CAAC;IACjB,OAAO,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CACvB,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,aAAa,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CACjE,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,OAAe;IACjD,MAAM,EAAE,GAAG,QAAQ,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;IAClC,IAAI,CAAC;QACH,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC;YAC5B,MAAM,MAAM,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,4BAA4B,CAAC,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,CAAC;QACpF,CAAC;QACD,OAAO,YAAY,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC;IAClC,CAAC;YAAS,CAAC;QACT,SAAS,CAAC,EAAE,CAAC,CAAC;IAChB,CAAC;AACH,CAAC;AA6BD,SAAS,iBAAiB,CAAC,QAAuB;IAChD,MAAM,KAAK,GAAa;QACtB,gBAAgB,QAAQ,CAAC,IAAI,EAAE;QAC/B,KAAK,QAAQ,CAAC,EAAE,QAAQ,QAAQ,CAAC,MAAM,eAAe,QAAQ,CAAC,KAAK,GAAG;KACxE,CAAC;IACF,KAAK,MAAM,GAAG,IAAI,QAAQ,CAAC,OAAO,EAAE,CAAC;QACnC,IAAI,GAAG,CAAC,EAAE,EAAE,CAAC;YACX,KAAK,CAAC,IAAI,CAAC,SAAS,GAAG,CAAC,IAAI,GAAG,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QACnF,CAAC;aAAM,CAAC;YACN,KAAK,CAAC,IAAI,CAAC,SAAS,GAAG,CAAC,IAAI,KAAK,GAAG,CAAC,KAAK,IAAI,eAAe,EAAE,CAAC,CAAC;QACnE,CAAC;IACH,CAAC;IACD,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC;AAED,SAAS,eAAe,CAAC,QAAuB;IAC9C,OAAO,QAAQ,CAAC,OAAO;SACpB,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,KAAK,GAAG,CAAC,IAAI,KAAK,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,WAAW,IAAI,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,IAAI,EAAE,EAAE,CAAC;SAC1G,IAAI,CAAC,IAAI,CAAC,CAAC;AAChB,CAAC;AAcD;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,aAAa,CACjC,OAAsB,EACtB,GAAW,EACX,KAAsB,EACtB,YAA6B,EAC7B,MAAsB;IAEtB,IACE,OAAO,KAAK,CAAC,OAAO,KAAK,QAAQ;QACjC,OAAO,KAAK,CAAC,YAAY,KAAK,QAAQ;QACtC,OAAO,KAAK,CAAC,IAAI,KAAK,QAAQ;QAC9B,OAAO,KAAK,CAAC,YAAY,KAAK,QAAQ,EACtC,CAAC;QACD,UAAU,CAAC,4GAA4G,CAAC,CAAC;QACzH,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAChB,OAAO;IACT,CAAC;IACD,MAAM,KAAK,GAAG,cAAc,CAAC,GAAG,EAAE,OAAO,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC;IAC5D,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACvB,UAAU,CAAC,iCAAiC,CAAC,CAAC;QAC9C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAChB,OAAO;IACT,CAAC;IACD,MAAM,OAAO,GAAsB,EAAE,CAAC;IACtC,KAAK,MAAM,KAAK,IAAI,KAAK,EAAE,CAAC;QAC1B,MAAM,EAAE,GAAG,KAAK,CAAC,MAAM,CAAC;QACxB,MAAM,GAAG,GAAG,QAAQ,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;QAClD,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,0BAA0B,CAAC,EAAE,EAAE,OAAO,EAAE,OAAO,CAAC,KAAK,CAAC,oBAAoB,CAAC,CAAC,CAAC;YAC9F,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,KAAK,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAC;YAC7D,MAAM,eAAe,GAAI,QAAQ,CAAC,KAAK,CAAC,CAAC,CAA0C,EAAE,WAAW,CAAC;YACjG,MAAM,WAAW,GAAoB;gBACnC,IAAI,EAAE,GAAG;gBACT,EAAE,EAAE,IAAI;gBACR,MAAM,EAAE,QAAQ,CAAC,MAAM;gBACvB,GAAG,CAAC,eAAe,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,eAAe,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBAC5D,KAAK,EAAE,QAAQ,CAAC,KAAK;aACtB,CAAC;YAEF,IAAI,KAAK,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC/B,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC;gBAClC,MAAM,UAAU,GAAG,WAAW,CAAC,WAAW,CAAC;gBAC3C,MAAM,eAAe,GAA0B,EAAE,CAAC;gBAElD,KAAK,MAAM,EAAE,IAAI,KAAK,CAAC,SAAS,EAAE,CAAC;oBACjC,MAAM,KAAK,GAAG,QAAQ,CAAC,GAAG,EAAE,EAAE,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;oBAC5D,IAAI,CAAC,KAAK,EAAE,CAAC;wBACX,UAAU,CAAC,qBAAqB,KAAK,yCAAyC,CAAC,CAAC;wBAChF,SAAS;oBACX,CAAC;oBACD,IAAI,CAAC,UAAU,EAAE,CAAC;wBAChB,UAAU,CAAC,qBAAqB,KAAK,iEAAiE,CAAC,CAAC;wBACxG,SAAS;oBACX,CAAC;oBACD,IAAI,CAAC;wBACH,MAAM,OAAO,GAAG,mBAAmB,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC;wBAChD,MAAM,EAAE,GAAG,MAAM,OAAO,CAAC,SAAS,CAAC;4BACjC,YAAY,EAAE,KAAK;4BACnB,OAAO;4BACP,YAAY,EAAE,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC;4BAClC,IAAI,EAAE,EAAE,CAAC,IAAI;4BACb,aAAa,EAAE,EAAE,CAAC,IAAI;4BACtB,WAAW,EAAE,UAAU;4BACvB,aAAa,EAAE,KAAK;4BACpB,GAAG,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,YAAY,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;yBAC7D,CAAC,CAAC;wBACH,eAAe,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;oBACtF,CAAC;oBAAC,OAAO,CAAC,EAAE,CAAC;wBACX,eAAe,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;oBACtG,CAAC;gBACH,CAAC;gBACD,IAAI,eAAe,CAAC,MAAM,GAAG,CAAC;oBAAE,WAAW,CAAC,SAAS,GAAG,eAAe,CAAC;YAC1E,CAAC;YAED,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QAC5B,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,OAAO,CAAC,IAAI,CAAC;gBACX,IAAI,EAAE,GAAG;gBACT,EAAE,EAAE,KAAK;gBACT,KAAK,EAAE,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;aAClD,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IACD,MAAM,QAAQ,GAAkB;QAC9B,KAAK,EAAE,IAAI;QACX,IAAI,EAAE,GAAG;QACT,KAAK,EAAE,OAAO,CAAC,MAAM;QACrB,EAAE,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,MAAM;QACtC,MAAM,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,MAAM;QAC3C,OAAO;KACR,CAAC;IACF,UAAU,CAAC,MAAM,EAAE,QAAQ,EAAE,EAAE,MAAM,EAAE,iBAAiB,EAAE,IAAI,EAAE,eAAe,EAAE,CAAC,CAAC;AACrF,CAAC"}
@@ -49,6 +49,16 @@ create-new-protocol (Author) → forward(squadrules://adapter/critic-loop) → c
49
49
  | [protocol-linking-guide.md](protocol-linking-guide.md) | `protocol-linking-guide` | Layers vs chains, `activate` vs `forward` + slug, chaining back/forward, multi-layer conductor vs extension URI, chain-root collapsing, MCP argument validation |
50
50
  | [critic-loop-guide.md](critic-loop-guide.md) | `critic-loop-guide` | Critic-loop integration rules, mutation gates, solution check vs critic decision table |
51
51
 
52
+ ## Redirect tombstones
53
+
54
+ Retired slugs kept as thin one-layer redirects so stored adapters that still
55
+ reference them resolve instead of dangling (see ADR 0012):
56
+
57
+ | File | Slug | Redirects to |
58
+ |------|------|--------------|
59
+ | [phase-critic.md](phase-critic.md) | `phase-critic` | `critic-loop` |
60
+ | [phase-critic-guide.md](phase-critic-guide.md) | `phase-critic-guide` | `critic-loop-guide` |
61
+
52
62
  ## Cross-Protocol Linking
53
63
 
54
64
  ### Layers vs chains
@@ -1,5 +1,5 @@
1
1
  ---
2
- version: "5.4.1"
2
+ version: "5.5.0"
3
3
  slug: adapter-migration
4
4
  title: Adapter Migration Protocol
5
5
  ---
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  slug: bulk-insert-adapters-via-cli
3
- version: "5.4.1"
3
+ version: "5.5.0"
4
4
  title: Bulk Insert Adapters via SQUADRULES CLI
5
5
  ---
6
6
 
@@ -1,5 +1,5 @@
1
1
  ---
2
- version: "5.4.1"
2
+ version: "5.5.0"
3
3
  slug: challenge-type-guide
4
4
  title: Challenge Type Selection Guide
5
5
  ---
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  slug: create-new-protocol
3
- version: "5.4.1"
3
+ version: "5.5.0"
4
4
  title: Create / Review / Refactor SQUADRULES Protocol
5
5
  ---
6
6
 
@@ -1,5 +1,5 @@
1
1
  ---
2
- version: "5.4.1"
2
+ version: "5.5.0"
3
3
  slug: critic-loop-guide
4
4
  title: Critic Loop Integration and Mutation Gate Guide
5
5
  ---