mulch-cli 0.1.0 → 0.2.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 (96) hide show
  1. package/README.md +29 -8
  2. package/dist/cli.js +15 -2
  3. package/dist/cli.js.map +1 -1
  4. package/dist/commands/add.d.ts.map +1 -1
  5. package/dist/commands/add.js +20 -3
  6. package/dist/commands/add.js.map +1 -1
  7. package/dist/commands/compact.d.ts +3 -0
  8. package/dist/commands/compact.d.ts.map +1 -0
  9. package/dist/commands/compact.js +364 -0
  10. package/dist/commands/compact.js.map +1 -0
  11. package/dist/commands/delete.d.ts +3 -0
  12. package/dist/commands/delete.d.ts.map +1 -0
  13. package/dist/commands/delete.js +110 -0
  14. package/dist/commands/delete.js.map +1 -0
  15. package/dist/commands/doctor.d.ts +3 -0
  16. package/dist/commands/doctor.d.ts.map +1 -0
  17. package/dist/commands/doctor.js +364 -0
  18. package/dist/commands/doctor.js.map +1 -0
  19. package/dist/commands/edit.d.ts.map +1 -1
  20. package/dist/commands/edit.js +103 -22
  21. package/dist/commands/edit.js.map +1 -1
  22. package/dist/commands/init.d.ts.map +1 -1
  23. package/dist/commands/init.js +11 -1
  24. package/dist/commands/init.js.map +1 -1
  25. package/dist/commands/learn.d.ts +12 -0
  26. package/dist/commands/learn.d.ts.map +1 -0
  27. package/dist/commands/learn.js +130 -0
  28. package/dist/commands/learn.js.map +1 -0
  29. package/dist/commands/onboard.d.ts +1 -0
  30. package/dist/commands/onboard.d.ts.map +1 -1
  31. package/dist/commands/onboard.js +41 -50
  32. package/dist/commands/onboard.js.map +1 -1
  33. package/dist/commands/prime.d.ts.map +1 -1
  34. package/dist/commands/prime.js +75 -17
  35. package/dist/commands/prime.js.map +1 -1
  36. package/dist/commands/prune.d.ts +5 -0
  37. package/dist/commands/prune.d.ts.map +1 -1
  38. package/dist/commands/prune.js +16 -4
  39. package/dist/commands/prune.js.map +1 -1
  40. package/dist/commands/query.d.ts.map +1 -1
  41. package/dist/commands/query.js +56 -15
  42. package/dist/commands/query.js.map +1 -1
  43. package/dist/commands/ready.d.ts +3 -0
  44. package/dist/commands/ready.d.ts.map +1 -0
  45. package/dist/commands/ready.js +160 -0
  46. package/dist/commands/ready.js.map +1 -0
  47. package/dist/commands/record.d.ts.map +1 -1
  48. package/dist/commands/record.js +137 -23
  49. package/dist/commands/record.js.map +1 -1
  50. package/dist/commands/search.d.ts.map +1 -1
  51. package/dist/commands/search.js +76 -26
  52. package/dist/commands/search.js.map +1 -1
  53. package/dist/commands/setup.d.ts +2 -2
  54. package/dist/commands/setup.d.ts.map +1 -1
  55. package/dist/commands/setup.js +77 -33
  56. package/dist/commands/setup.js.map +1 -1
  57. package/dist/commands/status.d.ts.map +1 -1
  58. package/dist/commands/status.js +24 -3
  59. package/dist/commands/status.js.map +1 -1
  60. package/dist/commands/sync.d.ts +3 -0
  61. package/dist/commands/sync.d.ts.map +1 -0
  62. package/dist/commands/sync.js +176 -0
  63. package/dist/commands/sync.js.map +1 -0
  64. package/dist/commands/validate.d.ts.map +1 -1
  65. package/dist/commands/validate.js +30 -6
  66. package/dist/commands/validate.js.map +1 -1
  67. package/dist/schemas/record-schema.d.ts +108 -0
  68. package/dist/schemas/record-schema.d.ts.map +1 -1
  69. package/dist/schemas/record-schema.js +19 -0
  70. package/dist/schemas/record-schema.js.map +1 -1
  71. package/dist/schemas/record.d.ts +3 -0
  72. package/dist/schemas/record.d.ts.map +1 -1
  73. package/dist/utils/config.d.ts +1 -1
  74. package/dist/utils/config.d.ts.map +1 -1
  75. package/dist/utils/config.js +4 -4
  76. package/dist/utils/expertise.d.ts +1 -0
  77. package/dist/utils/expertise.d.ts.map +1 -1
  78. package/dist/utils/expertise.js +33 -0
  79. package/dist/utils/expertise.js.map +1 -1
  80. package/dist/utils/format.d.ts +2 -0
  81. package/dist/utils/format.d.ts.map +1 -1
  82. package/dist/utils/format.js +76 -19
  83. package/dist/utils/format.js.map +1 -1
  84. package/dist/utils/git.d.ts +6 -0
  85. package/dist/utils/git.d.ts.map +1 -0
  86. package/dist/utils/git.js +81 -0
  87. package/dist/utils/git.js.map +1 -0
  88. package/dist/utils/index.d.ts +4 -2
  89. package/dist/utils/index.d.ts.map +1 -1
  90. package/dist/utils/index.js +4 -2
  91. package/dist/utils/index.js.map +1 -1
  92. package/dist/utils/json-output.d.ts +8 -0
  93. package/dist/utils/json-output.d.ts.map +1 -0
  94. package/dist/utils/json-output.js +7 -0
  95. package/dist/utils/json-output.js.map +1 -0
  96. package/package.json +2 -2
@@ -5,12 +5,13 @@ import chalk from "chalk";
5
5
  import { readConfig, getExpertisePath } from "../utils/config.js";
6
6
  import { appendRecord, readExpertiseFile, writeExpertiseFile, findDuplicate, } from "../utils/expertise.js";
7
7
  import { recordSchema } from "../schemas/record-schema.js";
8
+ import { outputJson, outputJsonError } from "../utils/json-output.js";
8
9
  export function registerRecordCommand(program) {
9
10
  program
10
11
  .command("record")
11
12
  .argument("<domain>", "expertise domain")
12
13
  .argument("[content]", "record content")
13
- .description("Record an expertise entry")
14
+ .description("Record an expertise record")
14
15
  .addOption(new Option("--type <type>", "record type")
15
16
  .choices(["convention", "pattern", "failure", "decision", "reference", "guide"])
16
17
  .makeOptionMandatory())
@@ -27,13 +28,22 @@ export function registerRecordCommand(program) {
27
28
  .option("--evidence-commit <commit>", "evidence: commit hash")
28
29
  .option("--evidence-issue <issue>", "evidence: issue reference")
29
30
  .option("--evidence-file <file>", "evidence: file path")
31
+ .option("--relates-to <ids>", "comma-separated record IDs this relates to")
32
+ .option("--supersedes <ids>", "comma-separated record IDs this supersedes")
30
33
  .option("--force", "force recording even if duplicate exists")
31
34
  .action(async (domain, content, options) => {
35
+ const jsonMode = program.opts().json === true;
32
36
  const config = await readConfig();
33
37
  if (!config.domains.includes(domain)) {
34
- console.error(chalk.red(`Error: domain "${domain}" not found in config.`));
35
- console.error(chalk.red(`Available domains: ${config.domains.join(", ") || "(none)"}`));
36
- process.exit(1);
38
+ if (jsonMode) {
39
+ outputJsonError("record", `Domain "${domain}" not found in config. Available domains: ${config.domains.join(", ") || "(none)"}`);
40
+ }
41
+ else {
42
+ console.error(chalk.red(`Error: domain "${domain}" not found in config.`));
43
+ console.error(chalk.red(`Available domains: ${config.domains.join(", ") || "(none)"}`));
44
+ }
45
+ process.exitCode = 1;
46
+ return;
37
47
  }
38
48
  const recordType = options.type;
39
49
  const classification = options.classification ?? "tactical";
@@ -55,13 +65,31 @@ export function registerRecordCommand(program) {
55
65
  .map((t) => t.trim())
56
66
  .filter(Boolean)
57
67
  : undefined;
68
+ const relatesTo = typeof options.relatesTo === "string"
69
+ ? options.relatesTo
70
+ .split(",")
71
+ .map((id) => id.trim())
72
+ .filter(Boolean)
73
+ : undefined;
74
+ const supersedes = typeof options.supersedes === "string"
75
+ ? options.supersedes
76
+ .split(",")
77
+ .map((id) => id.trim())
78
+ .filter(Boolean)
79
+ : undefined;
58
80
  let record;
59
81
  switch (recordType) {
60
82
  case "convention": {
61
83
  const conventionContent = content ?? options.description;
62
84
  if (!conventionContent) {
63
- console.error(chalk.red("Error: convention records require content (positional argument or --description)."));
64
- process.exit(1);
85
+ if (jsonMode) {
86
+ outputJsonError("record", "Convention records require content (positional argument or --description).");
87
+ }
88
+ else {
89
+ console.error(chalk.red("Error: convention records require content (positional argument or --description)."));
90
+ }
91
+ process.exitCode = 1;
92
+ return;
65
93
  }
66
94
  record = {
67
95
  type: "convention",
@@ -70,6 +98,8 @@ export function registerRecordCommand(program) {
70
98
  recorded_at: recordedAt,
71
99
  ...(evidence && { evidence }),
72
100
  ...(tags && tags.length > 0 && { tags }),
101
+ ...(relatesTo && relatesTo.length > 0 && { relates_to: relatesTo }),
102
+ ...(supersedes && supersedes.length > 0 && { supersedes }),
73
103
  };
74
104
  break;
75
105
  }
@@ -77,8 +107,14 @@ export function registerRecordCommand(program) {
77
107
  const patternName = options.name;
78
108
  const patternDesc = options.description ?? content;
79
109
  if (!patternName || !patternDesc) {
80
- console.error(chalk.red("Error: pattern records require --name and --description (or positional content)."));
81
- process.exit(1);
110
+ if (jsonMode) {
111
+ outputJsonError("record", "Pattern records require --name and --description (or positional content).");
112
+ }
113
+ else {
114
+ console.error(chalk.red("Error: pattern records require --name and --description (or positional content)."));
115
+ }
116
+ process.exitCode = 1;
117
+ return;
82
118
  }
83
119
  record = {
84
120
  type: "pattern",
@@ -91,6 +127,8 @@ export function registerRecordCommand(program) {
91
127
  files: options.files.split(","),
92
128
  }),
93
129
  ...(tags && tags.length > 0 && { tags }),
130
+ ...(relatesTo && relatesTo.length > 0 && { relates_to: relatesTo }),
131
+ ...(supersedes && supersedes.length > 0 && { supersedes }),
94
132
  };
95
133
  break;
96
134
  }
@@ -98,8 +136,14 @@ export function registerRecordCommand(program) {
98
136
  const failureDesc = options.description;
99
137
  const failureResolution = options.resolution;
100
138
  if (!failureDesc || !failureResolution) {
101
- console.error(chalk.red("Error: failure records require --description and --resolution."));
102
- process.exit(1);
139
+ if (jsonMode) {
140
+ outputJsonError("record", "Failure records require --description and --resolution.");
141
+ }
142
+ else {
143
+ console.error(chalk.red("Error: failure records require --description and --resolution."));
144
+ }
145
+ process.exitCode = 1;
146
+ return;
103
147
  }
104
148
  record = {
105
149
  type: "failure",
@@ -109,6 +153,8 @@ export function registerRecordCommand(program) {
109
153
  recorded_at: recordedAt,
110
154
  ...(evidence && { evidence }),
111
155
  ...(tags && tags.length > 0 && { tags }),
156
+ ...(relatesTo && relatesTo.length > 0 && { relates_to: relatesTo }),
157
+ ...(supersedes && supersedes.length > 0 && { supersedes }),
112
158
  };
113
159
  break;
114
160
  }
@@ -116,8 +162,14 @@ export function registerRecordCommand(program) {
116
162
  const decisionTitle = options.title;
117
163
  const decisionRationale = options.rationale;
118
164
  if (!decisionTitle || !decisionRationale) {
119
- console.error(chalk.red("Error: decision records require --title and --rationale."));
120
- process.exit(1);
165
+ if (jsonMode) {
166
+ outputJsonError("record", "Decision records require --title and --rationale.");
167
+ }
168
+ else {
169
+ console.error(chalk.red("Error: decision records require --title and --rationale."));
170
+ }
171
+ process.exitCode = 1;
172
+ return;
121
173
  }
122
174
  record = {
123
175
  type: "decision",
@@ -127,6 +179,8 @@ export function registerRecordCommand(program) {
127
179
  recorded_at: recordedAt,
128
180
  ...(evidence && { evidence }),
129
181
  ...(tags && tags.length > 0 && { tags }),
182
+ ...(relatesTo && relatesTo.length > 0 && { relates_to: relatesTo }),
183
+ ...(supersedes && supersedes.length > 0 && { supersedes }),
130
184
  };
131
185
  break;
132
186
  }
@@ -134,8 +188,14 @@ export function registerRecordCommand(program) {
134
188
  const refName = options.name;
135
189
  const refDesc = options.description ?? content;
136
190
  if (!refName || !refDesc) {
137
- console.error(chalk.red("Error: reference records require --name and --description (or positional content)."));
138
- process.exit(1);
191
+ if (jsonMode) {
192
+ outputJsonError("record", "Reference records require --name and --description (or positional content).");
193
+ }
194
+ else {
195
+ console.error(chalk.red("Error: reference records require --name and --description (or positional content)."));
196
+ }
197
+ process.exitCode = 1;
198
+ return;
139
199
  }
140
200
  record = {
141
201
  type: "reference",
@@ -148,6 +208,8 @@ export function registerRecordCommand(program) {
148
208
  files: options.files.split(","),
149
209
  }),
150
210
  ...(tags && tags.length > 0 && { tags }),
211
+ ...(relatesTo && relatesTo.length > 0 && { relates_to: relatesTo }),
212
+ ...(supersedes && supersedes.length > 0 && { supersedes }),
151
213
  };
152
214
  break;
153
215
  }
@@ -155,8 +217,14 @@ export function registerRecordCommand(program) {
155
217
  const guideName = options.name;
156
218
  const guideDesc = options.description ?? content;
157
219
  if (!guideName || !guideDesc) {
158
- console.error(chalk.red("Error: guide records require --name and --description (or positional content)."));
159
- process.exit(1);
220
+ if (jsonMode) {
221
+ outputJsonError("record", "Guide records require --name and --description (or positional content).");
222
+ }
223
+ else {
224
+ console.error(chalk.red("Error: guide records require --name and --description (or positional content)."));
225
+ }
226
+ process.exitCode = 1;
227
+ return;
160
228
  }
161
229
  record = {
162
230
  type: "guide",
@@ -166,6 +234,8 @@ export function registerRecordCommand(program) {
166
234
  recorded_at: recordedAt,
167
235
  ...(evidence && { evidence }),
168
236
  ...(tags && tags.length > 0 && { tags }),
237
+ ...(relatesTo && relatesTo.length > 0 && { relates_to: relatesTo }),
238
+ ...(supersedes && supersedes.length > 0 && { supersedes }),
169
239
  };
170
240
  break;
171
241
  }
@@ -174,11 +244,18 @@ export function registerRecordCommand(program) {
174
244
  const ajv = new Ajv();
175
245
  const validate = ajv.compile(recordSchema);
176
246
  if (!validate(record)) {
177
- console.error(chalk.red("Error: record failed schema validation:"));
178
- for (const err of validate.errors ?? []) {
179
- console.error(chalk.red(` ${err.instancePath} ${err.message}`));
247
+ const errors = (validate.errors ?? []).map((err) => `${err.instancePath} ${err.message}`);
248
+ if (jsonMode) {
249
+ outputJsonError("record", `Schema validation failed: ${errors.join("; ")}`);
180
250
  }
181
- process.exit(1);
251
+ else {
252
+ console.error(chalk.red("Error: record failed schema validation:"));
253
+ for (const err of validate.errors ?? []) {
254
+ console.error(chalk.red(` ${err.instancePath} ${err.message}`));
255
+ }
256
+ }
257
+ process.exitCode = 1;
258
+ return;
182
259
  }
183
260
  const filePath = getExpertisePath(domain);
184
261
  const existing = await readExpertiseFile(filePath);
@@ -190,16 +267,53 @@ export function registerRecordCommand(program) {
190
267
  // Upsert: replace in place
191
268
  existing[dup.index] = record;
192
269
  await writeExpertiseFile(filePath, existing);
193
- console.log(chalk.green(`\u2714 Updated existing ${recordType} in ${domain} (record #${dup.index + 1})`));
270
+ if (jsonMode) {
271
+ outputJson({
272
+ success: true,
273
+ command: "record",
274
+ action: "updated",
275
+ domain,
276
+ type: recordType,
277
+ index: dup.index + 1,
278
+ record,
279
+ });
280
+ }
281
+ else {
282
+ console.log(chalk.green(`\u2714 Updated existing ${recordType} in ${domain} (record #${dup.index + 1})`));
283
+ }
194
284
  }
195
285
  else {
196
286
  // Exact match: skip
197
- console.log(chalk.yellow(`Duplicate ${recordType} already exists in ${domain} (record #${dup.index + 1}). Use --force to add anyway.`));
287
+ if (jsonMode) {
288
+ outputJson({
289
+ success: true,
290
+ command: "record",
291
+ action: "skipped",
292
+ domain,
293
+ type: recordType,
294
+ index: dup.index + 1,
295
+ });
296
+ }
297
+ else {
298
+ console.log(chalk.yellow(`Duplicate ${recordType} already exists in ${domain} (record #${dup.index + 1}). Use --force to add anyway.`));
299
+ }
198
300
  }
199
301
  }
200
302
  else {
201
303
  await appendRecord(filePath, record);
202
- console.log(chalk.green(`\u2714 Recorded ${recordType} in ${domain}`));
304
+ if (jsonMode) {
305
+ outputJson({
306
+ success: true,
307
+ command: "record",
308
+ action: "created",
309
+ domain,
310
+ type: recordType,
311
+ record,
312
+ });
313
+ }
314
+ else {
315
+ console.log(chalk.green(`\u2714 Recorded ${recordType} in ${domain}`));
316
+ }
203
317
  }
204
318
  });
205
319
  }
@@ -1 +1 @@
1
- {"version":3,"file":"record.js","sourceRoot":"","sources":["../../src/commands/record.ts"],"names":[],"mappings":"AAAA,OAAO,EAAW,MAAM,EAAE,MAAM,WAAW,CAAC;AAC5C,OAAO,IAAI,MAAM,KAAK,CAAC;AACvB,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC;AACjC,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,UAAU,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAClE,OAAO,EACL,YAAY,EACZ,iBAAiB,EACjB,kBAAkB,EAClB,aAAa,GACd,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAQ3D,MAAM,UAAU,qBAAqB,CAAC,OAAgB;IACpD,OAAO;SACJ,OAAO,CAAC,QAAQ,CAAC;SACjB,QAAQ,CAAC,UAAU,EAAE,kBAAkB,CAAC;SACxC,QAAQ,CAAC,WAAW,EAAE,gBAAgB,CAAC;SACvC,WAAW,CAAC,2BAA2B,CAAC;SACxC,SAAS,CACR,IAAI,MAAM,CAAC,eAAe,EAAE,aAAa,CAAC;SACvC,OAAO,CAAC,CAAC,YAAY,EAAE,SAAS,EAAE,SAAS,EAAE,UAAU,EAAE,WAAW,EAAE,OAAO,CAAC,CAAC;SAC/E,mBAAmB,EAAE,CACzB;SACA,SAAS,CACR,IAAI,MAAM,CAAC,mCAAmC,EAAE,sBAAsB,CAAC;SACpE,OAAO,CAAC,CAAC,cAAc,EAAE,UAAU,EAAE,eAAe,CAAC,CAAC;SACtD,OAAO,CAAC,UAAU,CAAC,CACvB;SACA,MAAM,CAAC,eAAe,EAAE,mCAAmC,CAAC;SAC5D,MAAM,CAAC,6BAA6B,EAAE,2BAA2B,CAAC;SAClE,MAAM,CAAC,2BAA2B,EAAE,gCAAgC,CAAC;SACrE,MAAM,CAAC,iBAAiB,EAAE,4BAA4B,CAAC;SACvD,MAAM,CAAC,yBAAyB,EAAE,gCAAgC,CAAC;SACnE,MAAM,CAAC,iBAAiB,EAAE,iCAAiC,CAAC;SAC5D,MAAM,CAAC,eAAe,EAAE,sBAAsB,CAAC;SAC/C,MAAM,CAAC,4BAA4B,EAAE,uBAAuB,CAAC;SAC7D,MAAM,CAAC,0BAA0B,EAAE,2BAA2B,CAAC;SAC/D,MAAM,CAAC,wBAAwB,EAAE,qBAAqB,CAAC;SACvD,MAAM,CAAC,SAAS,EAAE,0CAA0C,CAAC;SAC7D,MAAM,CACL,KAAK,EACH,MAAc,EACd,OAA2B,EAC3B,OAAgC,EAChC,EAAE;QACF,MAAM,MAAM,GAAG,MAAM,UAAU,EAAE,CAAC;QAElC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;YACrC,OAAO,CAAC,KAAK,CACX,KAAK,CAAC,GAAG,CAAC,kBAAkB,MAAM,wBAAwB,CAAC,CAC5D,CAAC;YACF,OAAO,CAAC,KAAK,CACX,KAAK,CAAC,GAAG,CACP,sBAAsB,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,QAAQ,EAAE,CAC9D,CACF,CAAC;YACF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QAED,MAAM,UAAU,GAAG,OAAO,CAAC,IAAkB,CAAC;QAC9C,MAAM,cAAc,GAAI,OAAO,CAAC,cAAiC,IAAI,UAAU,CAAC;QAChF,MAAM,UAAU,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;QAE5C,oDAAoD;QACpD,IAAI,QAA8B,CAAC;QACnC,IAAI,OAAO,CAAC,cAAc,IAAI,OAAO,CAAC,aAAa,IAAI,OAAO,CAAC,YAAY,EAAE,CAAC;YAC5E,QAAQ,GAAG,EAAE,CAAC;YACd,IAAI,OAAO,CAAC,cAAc;gBACxB,QAAQ,CAAC,MAAM,GAAG,OAAO,CAAC,cAAwB,CAAC;YACrD,IAAI,OAAO,CAAC,aAAa;gBACvB,QAAQ,CAAC,KAAK,GAAG,OAAO,CAAC,aAAuB,CAAC;YACnD,IAAI,OAAO,CAAC,YAAY;gBACtB,QAAQ,CAAC,IAAI,GAAG,OAAO,CAAC,YAAsB,CAAC;QACnD,CAAC;QAED,MAAM,IAAI,GACR,OAAO,OAAO,CAAC,IAAI,KAAK,QAAQ;YAC9B,CAAC,CAAC,OAAO,CAAC,IAAI;iBACT,KAAK,CAAC,GAAG,CAAC;iBACV,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAE,CAAY,CAAC,IAAI,EAAE,CAAC;iBAChC,MAAM,CAAC,OAAO,CAAC;YACpB,CAAC,CAAC,SAAS,CAAC;QAEhB,IAAI,MAAuB,CAAC;QAE5B,QAAQ,UAAU,EAAE,CAAC;YACnB,KAAK,YAAY,CAAC,CAAC,CAAC;gBAClB,MAAM,iBAAiB,GAAG,OAAO,IAAK,OAAO,CAAC,WAAkC,CAAC;gBACjF,IAAI,CAAC,iBAAiB,EAAE,CAAC;oBACvB,OAAO,CAAC,KAAK,CACX,KAAK,CAAC,GAAG,CACP,mFAAmF,CACpF,CACF,CAAC;oBACF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;gBAClB,CAAC;gBACD,MAAM,GAAG;oBACP,IAAI,EAAE,YAAY;oBAClB,OAAO,EAAE,iBAAiB;oBAC1B,cAAc;oBACd,WAAW,EAAE,UAAU;oBACvB,GAAG,CAAC,QAAQ,IAAI,EAAE,QAAQ,EAAE,CAAC;oBAC7B,GAAG,CAAC,IAAI,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC;iBACzC,CAAC;gBACF,MAAM;YACR,CAAC;YAED,KAAK,SAAS,CAAC,CAAC,CAAC;gBACf,MAAM,WAAW,GAAG,OAAO,CAAC,IAA0B,CAAC;gBACvD,MAAM,WAAW,GACd,OAAO,CAAC,WAAkC,IAAI,OAAO,CAAC;gBACzD,IAAI,CAAC,WAAW,IAAI,CAAC,WAAW,EAAE,CAAC;oBACjC,OAAO,CAAC,KAAK,CACX,KAAK,CAAC,GAAG,CACP,kFAAkF,CACnF,CACF,CAAC;oBACF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;gBAClB,CAAC;gBACD,MAAM,GAAG;oBACP,IAAI,EAAE,SAAS;oBACf,IAAI,EAAE,WAAW;oBACjB,WAAW,EAAE,WAAW;oBACxB,cAAc;oBACd,WAAW,EAAE,UAAU;oBACvB,GAAG,CAAC,QAAQ,IAAI,EAAE,QAAQ,EAAE,CAAC;oBAC7B,GAAG,CAAC,OAAO,OAAO,CAAC,KAAK,KAAK,QAAQ,IAAI;wBACvC,KAAK,EAAE,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC;qBAChC,CAAC;oBACF,GAAG,CAAC,IAAI,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC;iBACzC,CAAC;gBACF,MAAM;YACR,CAAC;YAED,KAAK,SAAS,CAAC,CAAC,CAAC;gBACf,MAAM,WAAW,GAAG,OAAO,CAAC,WAAiC,CAAC;gBAC9D,MAAM,iBAAiB,GAAG,OAAO,CAAC,UAAgC,CAAC;gBACnE,IAAI,CAAC,WAAW,IAAI,CAAC,iBAAiB,EAAE,CAAC;oBACvC,OAAO,CAAC,KAAK,CACX,KAAK,CAAC,GAAG,CACP,gEAAgE,CACjE,CACF,CAAC;oBACF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;gBAClB,CAAC;gBACD,MAAM,GAAG;oBACP,IAAI,EAAE,SAAS;oBACf,WAAW,EAAE,WAAW;oBACxB,UAAU,EAAE,iBAAiB;oBAC7B,cAAc;oBACd,WAAW,EAAE,UAAU;oBACvB,GAAG,CAAC,QAAQ,IAAI,EAAE,QAAQ,EAAE,CAAC;oBAC7B,GAAG,CAAC,IAAI,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC;iBACzC,CAAC;gBACF,MAAM;YACR,CAAC;YAED,KAAK,UAAU,CAAC,CAAC,CAAC;gBAChB,MAAM,aAAa,GAAG,OAAO,CAAC,KAA2B,CAAC;gBAC1D,MAAM,iBAAiB,GAAG,OAAO,CAAC,SAA+B,CAAC;gBAClE,IAAI,CAAC,aAAa,IAAI,CAAC,iBAAiB,EAAE,CAAC;oBACzC,OAAO,CAAC,KAAK,CACX,KAAK,CAAC,GAAG,CACP,0DAA0D,CAC3D,CACF,CAAC;oBACF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;gBAClB,CAAC;gBACD,MAAM,GAAG;oBACP,IAAI,EAAE,UAAU;oBAChB,KAAK,EAAE,aAAa;oBACpB,SAAS,EAAE,iBAAiB;oBAC5B,cAAc;oBACd,WAAW,EAAE,UAAU;oBACvB,GAAG,CAAC,QAAQ,IAAI,EAAE,QAAQ,EAAE,CAAC;oBAC7B,GAAG,CAAC,IAAI,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC;iBACzC,CAAC;gBACF,MAAM;YACR,CAAC;YAED,KAAK,WAAW,CAAC,CAAC,CAAC;gBACjB,MAAM,OAAO,GAAG,OAAO,CAAC,IAA0B,CAAC;gBACnD,MAAM,OAAO,GACV,OAAO,CAAC,WAAkC,IAAI,OAAO,CAAC;gBACzD,IAAI,CAAC,OAAO,IAAI,CAAC,OAAO,EAAE,CAAC;oBACzB,OAAO,CAAC,KAAK,CACX,KAAK,CAAC,GAAG,CACP,oFAAoF,CACrF,CACF,CAAC;oBACF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;gBAClB,CAAC;gBACD,MAAM,GAAG;oBACP,IAAI,EAAE,WAAW;oBACjB,IAAI,EAAE,OAAO;oBACb,WAAW,EAAE,OAAO;oBACpB,cAAc;oBACd,WAAW,EAAE,UAAU;oBACvB,GAAG,CAAC,QAAQ,IAAI,EAAE,QAAQ,EAAE,CAAC;oBAC7B,GAAG,CAAC,OAAO,OAAO,CAAC,KAAK,KAAK,QAAQ,IAAI;wBACvC,KAAK,EAAE,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC;qBAChC,CAAC;oBACF,GAAG,CAAC,IAAI,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC;iBACzC,CAAC;gBACF,MAAM;YACR,CAAC;YAED,KAAK,OAAO,CAAC,CAAC,CAAC;gBACb,MAAM,SAAS,GAAG,OAAO,CAAC,IAA0B,CAAC;gBACrD,MAAM,SAAS,GACZ,OAAO,CAAC,WAAkC,IAAI,OAAO,CAAC;gBACzD,IAAI,CAAC,SAAS,IAAI,CAAC,SAAS,EAAE,CAAC;oBAC7B,OAAO,CAAC,KAAK,CACX,KAAK,CAAC,GAAG,CACP,gFAAgF,CACjF,CACF,CAAC;oBACF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;gBAClB,CAAC;gBACD,MAAM,GAAG;oBACP,IAAI,EAAE,OAAO;oBACb,IAAI,EAAE,SAAS;oBACf,WAAW,EAAE,SAAS;oBACtB,cAAc;oBACd,WAAW,EAAE,UAAU;oBACvB,GAAG,CAAC,QAAQ,IAAI,EAAE,QAAQ,EAAE,CAAC;oBAC7B,GAAG,CAAC,IAAI,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC;iBACzC,CAAC;gBACF,MAAM;YACR,CAAC;QACH,CAAC;QAED,+BAA+B;QAC/B,MAAM,GAAG,GAAG,IAAI,GAAG,EAAE,CAAC;QACtB,MAAM,QAAQ,GAAG,GAAG,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;QAC3C,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;YACtB,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,yCAAyC,CAAC,CAAC,CAAC;YACpE,KAAK,MAAM,GAAG,IAAI,QAAQ,CAAC,MAAM,IAAI,EAAE,EAAE,CAAC;gBACxC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,GAAG,CAAC,YAAY,IAAI,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;YACnE,CAAC;YACD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QAED,MAAM,QAAQ,GAAG,gBAAgB,CAAC,MAAM,CAAC,CAAC;QAC1C,MAAM,QAAQ,GAAG,MAAM,iBAAiB,CAAC,QAAQ,CAAC,CAAC;QACnD,MAAM,GAAG,GAAG,aAAa,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;QAE5C,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;YAC1B,MAAM,OAAO,GACX,MAAM,CAAC,IAAI,KAAK,SAAS,IAAI,MAAM,CAAC,IAAI,KAAK,UAAU;gBACvD,MAAM,CAAC,IAAI,KAAK,WAAW,IAAI,MAAM,CAAC,IAAI,KAAK,OAAO,CAAC;YAEzD,IAAI,OAAO,EAAE,CAAC;gBACZ,2BAA2B;gBAC3B,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,MAAM,CAAC;gBAC7B,MAAM,kBAAkB,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;gBAC7C,OAAO,CAAC,GAAG,CACT,KAAK,CAAC,KAAK,CACT,2BAA2B,UAAU,OAAO,MAAM,aAAa,GAAG,CAAC,KAAK,GAAG,CAAC,GAAG,CAChF,CACF,CAAC;YACJ,CAAC;iBAAM,CAAC;gBACN,oBAAoB;gBACpB,OAAO,CAAC,GAAG,CACT,KAAK,CAAC,MAAM,CACV,aAAa,UAAU,sBAAsB,MAAM,aAAa,GAAG,CAAC,KAAK,GAAG,CAAC,+BAA+B,CAC7G,CACF,CAAC;YACJ,CAAC;QACH,CAAC;aAAM,CAAC;YACN,MAAM,YAAY,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;YACrC,OAAO,CAAC,GAAG,CACT,KAAK,CAAC,KAAK,CAAC,mBAAmB,UAAU,OAAO,MAAM,EAAE,CAAC,CAC1D,CAAC;QACJ,CAAC;IACH,CAAC,CACF,CAAC;AACN,CAAC"}
1
+ {"version":3,"file":"record.js","sourceRoot":"","sources":["../../src/commands/record.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"search.d.ts","sourceRoot":"","sources":["../../src/commands/search.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAU,MAAM,WAAW,CAAC;AAM5C,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CA6F5D"}
1
+ {"version":3,"file":"search.d.ts","sourceRoot":"","sources":["../../src/commands/search.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAU,MAAM,WAAW,CAAC;AAO5C,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAwI5D"}
@@ -3,6 +3,7 @@ import { readConfig, getExpertisePath } from "../utils/config.js";
3
3
  import { readExpertiseFile, getFileModTime, filterByType } from "../utils/expertise.js";
4
4
  import { searchRecords } from "../utils/expertise.js";
5
5
  import { formatDomainExpertise } from "../utils/format.js";
6
+ import { outputJson, outputJsonError } from "../utils/json-output.js";
6
7
  export function registerSearchCommand(program) {
7
8
  program
8
9
  .command("search")
@@ -19,9 +20,15 @@ export function registerSearchCommand(program) {
19
20
  ]))
20
21
  .option("--tag <tag>", "filter by tag")
21
22
  .action(async (query, options) => {
23
+ const jsonMode = program.opts().json === true;
22
24
  try {
23
25
  if (!query && !options.type && !options.domain && !options.tag) {
24
- console.error("Error: Provide a search query or use --type, --domain, or --tag to filter.");
26
+ if (jsonMode) {
27
+ outputJsonError("search", "Provide a search query or use --type, --domain, or --tag to filter.");
28
+ }
29
+ else {
30
+ console.error("Error: Provide a search query or use --type, --domain, or --tag to filter.");
31
+ }
25
32
  process.exitCode = 1;
26
33
  return;
27
34
  }
@@ -29,7 +36,12 @@ export function registerSearchCommand(program) {
29
36
  let domainsToSearch;
30
37
  if (options.domain) {
31
38
  if (!config.domains.includes(options.domain)) {
32
- console.error(`Error: Domain "${options.domain}" not found in config. Available domains: ${config.domains.join(", ")}`);
39
+ if (jsonMode) {
40
+ outputJsonError("search", `Domain "${options.domain}" not found in config. Available domains: ${config.domains.join(", ")}`);
41
+ }
42
+ else {
43
+ console.error(`Error: Domain "${options.domain}" not found in config. Available domains: ${config.domains.join(", ")}`);
44
+ }
33
45
  process.exitCode = 1;
34
46
  return;
35
47
  }
@@ -38,40 +50,78 @@ export function registerSearchCommand(program) {
38
50
  else {
39
51
  domainsToSearch = config.domains;
40
52
  }
41
- const sections = [];
42
53
  let totalMatches = 0;
43
- for (const domain of domainsToSearch) {
44
- const filePath = getExpertisePath(domain);
45
- let records = await readExpertiseFile(filePath);
46
- const lastUpdated = await getFileModTime(filePath);
47
- if (options.type) {
48
- records = filterByType(records, options.type);
49
- }
50
- if (options.tag) {
51
- const tagLower = options.tag.toLowerCase();
52
- records = records.filter((r) => r.tags?.some((t) => t.toLowerCase() === tagLower));
54
+ if (jsonMode) {
55
+ const result = [];
56
+ for (const domain of domainsToSearch) {
57
+ const filePath = getExpertisePath(domain);
58
+ let records = await readExpertiseFile(filePath);
59
+ if (options.type) {
60
+ records = filterByType(records, options.type);
61
+ }
62
+ if (options.tag) {
63
+ const tagLower = options.tag.toLowerCase();
64
+ records = records.filter((r) => r.tags?.some((t) => t.toLowerCase() === tagLower));
65
+ }
66
+ const matches = query ? searchRecords(records, query) : records;
67
+ if (matches.length > 0) {
68
+ totalMatches += matches.length;
69
+ result.push({ domain, matches });
70
+ }
53
71
  }
54
- const matches = query ? searchRecords(records, query) : records;
55
- if (matches.length > 0) {
56
- totalMatches += matches.length;
57
- sections.push(formatDomainExpertise(domain, matches, lastUpdated));
58
- }
59
- }
60
- const label = query ? `matching "${query}"` : "matching filters";
61
- if (sections.length === 0) {
62
- console.log(`No records ${label} found.`);
72
+ outputJson({
73
+ success: true,
74
+ command: "search",
75
+ query: query ?? null,
76
+ total: totalMatches,
77
+ domains: result,
78
+ });
63
79
  }
64
80
  else {
65
- console.log(sections.join("\n\n"));
66
- console.log(`\n${totalMatches} match${totalMatches === 1 ? "" : "es"} found.`);
81
+ const sections = [];
82
+ for (const domain of domainsToSearch) {
83
+ const filePath = getExpertisePath(domain);
84
+ let records = await readExpertiseFile(filePath);
85
+ const lastUpdated = await getFileModTime(filePath);
86
+ if (options.type) {
87
+ records = filterByType(records, options.type);
88
+ }
89
+ if (options.tag) {
90
+ const tagLower = options.tag.toLowerCase();
91
+ records = records.filter((r) => r.tags?.some((t) => t.toLowerCase() === tagLower));
92
+ }
93
+ const matches = query ? searchRecords(records, query) : records;
94
+ if (matches.length > 0) {
95
+ totalMatches += matches.length;
96
+ sections.push(formatDomainExpertise(domain, matches, lastUpdated));
97
+ }
98
+ }
99
+ const label = query ? `matching "${query}"` : "matching filters";
100
+ if (sections.length === 0) {
101
+ console.log(`No records ${label} found.`);
102
+ }
103
+ else {
104
+ console.log(sections.join("\n\n"));
105
+ console.log(`\n${totalMatches} match${totalMatches === 1 ? "" : "es"} found.`);
106
+ }
67
107
  }
68
108
  }
69
109
  catch (err) {
70
110
  if (err.code === "ENOENT") {
71
- console.error("Error: No .mulch/ directory found. Run `mulch init` first.");
111
+ if (jsonMode) {
112
+ outputJsonError("search", "No .mulch/ directory found. Run `mulch init` first.");
113
+ }
114
+ else {
115
+ console.error("Error: No .mulch/ directory found. Run `mulch init` first.");
116
+ }
72
117
  }
73
118
  else {
74
- console.error(`Error: ${err.message}`);
119
+ if (jsonMode) {
120
+ outputJsonError("search", err.message);
121
+ }
122
+ else {
123
+ console.error(`Error: ${err.message}`);
124
+ }
75
125
  }
76
126
  process.exitCode = 1;
77
127
  }
@@ -1 +1 @@
1
- {"version":3,"file":"search.js","sourceRoot":"","sources":["../../src/commands/search.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"search.js","sourceRoot":"","sources":["../../src/commands/search.ts"],"names":[],"mappings":"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"}
@@ -20,8 +20,8 @@ interface ProviderRecipe {
20
20
  remove(cwd: string): Promise<RecipeResult>;
21
21
  }
22
22
  declare const CLAUDE_HOOK_COMMAND = "mulch prime";
23
- declare const CURSOR_RULE_CONTENT = "---\ndescription: Mulch expertise integration\nglobs: *\nalwaysApply: true\n---\n\n# Mulch Expertise\n\nAt the start of every session, run the following command to load project expertise:\n\n```\nmulch prime\n```\n\nWhen you learn something new about this project (conventions, patterns, failures, decisions),\nrecord it with:\n\n```\nmulch record <domain> --type <convention|pattern|failure|decision> [options]\n```\n\nRun `mulch --help` for full usage.\n";
24
- declare const CODEX_SECTION = "<!-- mulch:start -->\n## Mulch Expertise\n\nAt the start of every session, run `mulch prime` to load project expertise.\n\nWhen you learn something new about this project, record it with:\n\n```\nmulch record <domain> --type <convention|pattern|failure|decision> [options]\n```\n<!-- mulch:end -->";
23
+ declare const CURSOR_RULE_CONTENT = "---\ndescription: Mulch expertise integration\nglobs: *\nalwaysApply: true\n---\n\n# Mulch Expertise\n\nAt the start of every session, run the following command to load project expertise:\n\n```\nmulch prime\n```\n\nThis injects project-specific conventions, patterns, decisions, and other learnings into your context.\n\nWhen you learn something new about this project (conventions, patterns, failures, decisions, references, guides),\nrecord it with:\n\n```\nmulch record <domain> --type <convention|pattern|failure|decision|reference|guide> [options]\n```\n\nRun `mulch --help` for full usage.\n";
24
+ declare const CODEX_SECTION = "<!-- mulch:start -->\n## Mulch Expertise\n\nAt the start of every session, run `mulch prime` to load project expertise.\n\nThis injects project-specific conventions, patterns, decisions, and other learnings into your context.\n\nWhen you learn something new about this project (conventions, patterns, failures, decisions, references, guides),\nrecord it with:\n\n```\nmulch record <domain> --type <convention|pattern|failure|decision|reference|guide> [options]\n```\n\nRun `mulch --help` for full usage.\n<!-- mulch:end -->";
25
25
  declare const recipes: Record<Provider, ProviderRecipe>;
26
26
  export { recipes, SUPPORTED_PROVIDERS, CURSOR_RULE_CONTENT, CODEX_SECTION, CLAUDE_HOOK_COMMAND, MULCH_HOOK_SECTION, installGitHook, checkGitHook, removeGitHook, };
27
27
  export type { Provider, ProviderRecipe };
@@ -1 +1 @@
1
- {"version":3,"file":"setup.d.ts","sourceRoot":"","sources":["../../src/commands/setup.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAIpC,gCAAgC;AAChC,QAAA,MAAM,mBAAmB,uEAOf,CAAC;AAEX,KAAK,QAAQ,GAAG,CAAC,OAAO,mBAAmB,CAAC,CAAC,MAAM,CAAC,CAAC;AAMrD,6CAA6C;AAC7C,UAAU,YAAY;IACpB,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;CACjB;AASD,QAAA,MAAM,kBAAkB,wOASL,CAAC;AAEpB,iBAAe,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC,CA6BhE;AAED,iBAAe,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC,CAY9D;AAED,iBAAe,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC,CAyB/D;AAMD,UAAU,cAAc;IACtB,4CAA4C;IAC5C,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC;IAC5C,kDAAkD;IAClD,KAAK,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC;IAC1C,8BAA8B;IAC9B,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC;CAC5C;AAqBD,QAAA,MAAM,mBAAmB,gBAAgB,CAAC;AAuI1C,QAAA,MAAM,mBAAmB,6cAsBxB,CAAC;AAkDF,QAAA,MAAM,aAAa,8SAUS,CAAC;AAkK7B,QAAA,MAAM,OAAO,EAAE,MAAM,CAAC,QAAQ,EAAE,cAAc,CAO7C,CAAC;AAIF,OAAO,EACL,OAAO,EACP,mBAAmB,EACnB,mBAAmB,EACnB,aAAa,EACb,mBAAmB,EACnB,kBAAkB,EAClB,cAAc,EACd,YAAY,EACZ,aAAa,GACd,CAAC;AAEF,YAAY,EAAE,QAAQ,EAAE,cAAc,EAAE,CAAC;AAIzC,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAmG3D"}
1
+ {"version":3,"file":"setup.d.ts","sourceRoot":"","sources":["../../src/commands/setup.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAKpC,gCAAgC;AAChC,QAAA,MAAM,mBAAmB,uEAOf,CAAC;AAEX,KAAK,QAAQ,GAAG,CAAC,OAAO,mBAAmB,CAAC,CAAC,MAAM,CAAC,CAAC;AAMrD,6CAA6C;AAC7C,UAAU,YAAY;IACpB,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;CACjB;AASD,QAAA,MAAM,kBAAkB,wOASL,CAAC;AAEpB,iBAAe,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC,CA6BhE;AAED,iBAAe,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC,CAY9D;AAED,iBAAe,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC,CAyB/D;AAMD,UAAU,cAAc;IACtB,4CAA4C;IAC5C,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC;IAC5C,kDAAkD;IAClD,KAAK,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC;IAC1C,8BAA8B;IAC9B,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC;CAC5C;AAqBD,QAAA,MAAM,mBAAmB,gBAAgB,CAAC;AAuI1C,QAAA,MAAM,mBAAmB,2lBAwBxB,CAAC;AAkDF,QAAA,MAAM,aAAa,ghBAeS,CAAC;AAuK7B,QAAA,MAAM,OAAO,EAAE,MAAM,CAAC,QAAQ,EAAE,cAAc,CAO7C,CAAC;AAIF,OAAO,EACL,OAAO,EACP,mBAAmB,EACnB,mBAAmB,EACnB,aAAa,EACb,mBAAmB,EACnB,kBAAkB,EAClB,cAAc,EACd,YAAY,EACZ,aAAa,GACd,CAAC;AAEF,YAAY,EAAE,QAAQ,EAAE,cAAc,EAAE,CAAC;AAIzC,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CA8H3D"}