mulch-cli 0.1.0 → 0.2.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 (92) hide show
  1. package/README.md +16 -2
  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 +31 -4
  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 +13 -1
  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 +136 -22
  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.map +1 -1
  54. package/dist/commands/setup.js +59 -27
  55. package/dist/commands/setup.js.map +1 -1
  56. package/dist/commands/status.d.ts.map +1 -1
  57. package/dist/commands/status.js +24 -3
  58. package/dist/commands/status.js.map +1 -1
  59. package/dist/commands/sync.d.ts +3 -0
  60. package/dist/commands/sync.d.ts.map +1 -0
  61. package/dist/commands/sync.js +176 -0
  62. package/dist/commands/sync.js.map +1 -0
  63. package/dist/commands/validate.d.ts.map +1 -1
  64. package/dist/commands/validate.js +30 -6
  65. package/dist/commands/validate.js.map +1 -1
  66. package/dist/schemas/record-schema.d.ts +108 -0
  67. package/dist/schemas/record-schema.d.ts.map +1 -1
  68. package/dist/schemas/record-schema.js +19 -0
  69. package/dist/schemas/record-schema.js.map +1 -1
  70. package/dist/schemas/record.d.ts +3 -0
  71. package/dist/schemas/record.d.ts.map +1 -1
  72. package/dist/utils/expertise.d.ts +1 -0
  73. package/dist/utils/expertise.d.ts.map +1 -1
  74. package/dist/utils/expertise.js +33 -0
  75. package/dist/utils/expertise.js.map +1 -1
  76. package/dist/utils/format.d.ts +2 -0
  77. package/dist/utils/format.d.ts.map +1 -1
  78. package/dist/utils/format.js +70 -13
  79. package/dist/utils/format.js.map +1 -1
  80. package/dist/utils/git.d.ts +6 -0
  81. package/dist/utils/git.d.ts.map +1 -0
  82. package/dist/utils/git.js +81 -0
  83. package/dist/utils/git.js.map +1 -0
  84. package/dist/utils/index.d.ts +4 -2
  85. package/dist/utils/index.d.ts.map +1 -1
  86. package/dist/utils/index.js +4 -2
  87. package/dist/utils/index.js.map +1 -1
  88. package/dist/utils/json-output.d.ts +8 -0
  89. package/dist/utils/json-output.d.ts.map +1 -0
  90. package/dist/utils/json-output.js +7 -0
  91. package/dist/utils/json-output.js.map +1 -0
  92. package/package.json +2 -2
@@ -1,6 +1,7 @@
1
1
  import { readConfig, getExpertisePath } from "../utils/config.js";
2
2
  import { readExpertiseFile, getFileModTime, filterByType } from "../utils/expertise.js";
3
3
  import { formatDomainExpertise } from "../utils/format.js";
4
+ import { outputJson, outputJsonError } from "../utils/json-output.js";
4
5
  export function registerQueryCommand(program) {
5
6
  program
6
7
  .command("query")
@@ -9,47 +10,87 @@ export function registerQueryCommand(program) {
9
10
  .option("--type <type>", "filter by record type")
10
11
  .option("--all", "show all domains")
11
12
  .action(async (domain, options) => {
13
+ const jsonMode = program.opts().json === true;
12
14
  try {
13
15
  const config = await readConfig();
14
16
  const domainsToQuery = [];
15
17
  if (options.all) {
16
18
  domainsToQuery.push(...config.domains);
17
19
  if (domainsToQuery.length === 0) {
18
- console.log("No domains configured. Run `mulch add <domain>` to get started.");
20
+ if (jsonMode) {
21
+ outputJson({ success: true, command: "query", domains: [] });
22
+ }
23
+ else {
24
+ console.log("No domains configured. Run `mulch add <domain>` to get started.");
25
+ }
19
26
  return;
20
27
  }
21
28
  }
22
29
  else if (domain) {
23
30
  if (!config.domains.includes(domain)) {
24
- console.error(`Error: Domain "${domain}" not found in config. Available domains: ${config.domains.join(", ") || "(none)"}`);
31
+ if (jsonMode) {
32
+ outputJsonError("query", `Domain "${domain}" not found in config. Available domains: ${config.domains.join(", ") || "(none)"}`);
33
+ }
34
+ else {
35
+ console.error(`Error: Domain "${domain}" not found in config. Available domains: ${config.domains.join(", ") || "(none)"}`);
36
+ }
25
37
  process.exitCode = 1;
26
38
  return;
27
39
  }
28
40
  domainsToQuery.push(domain);
29
41
  }
30
42
  else {
31
- console.error("Error: Please specify a domain or use --all to query all domains.");
43
+ if (jsonMode) {
44
+ outputJsonError("query", "Please specify a domain or use --all to query all domains.");
45
+ }
46
+ else {
47
+ console.error("Error: Please specify a domain or use --all to query all domains.");
48
+ }
32
49
  process.exitCode = 1;
33
50
  return;
34
51
  }
35
- const sections = [];
36
- for (const d of domainsToQuery) {
37
- const filePath = getExpertisePath(d);
38
- let records = await readExpertiseFile(filePath);
39
- const lastUpdated = await getFileModTime(filePath);
40
- if (options.type) {
41
- records = filterByType(records, options.type);
42
- }
43
- sections.push(formatDomainExpertise(d, records, lastUpdated));
52
+ if (jsonMode) {
53
+ const result = [];
54
+ for (const d of domainsToQuery) {
55
+ const filePath = getExpertisePath(d);
56
+ let records = await readExpertiseFile(filePath);
57
+ if (options.type) {
58
+ records = filterByType(records, options.type);
59
+ }
60
+ result.push({ domain: d, records });
61
+ }
62
+ outputJson({ success: true, command: "query", domains: result });
63
+ }
64
+ else {
65
+ const sections = [];
66
+ for (const d of domainsToQuery) {
67
+ const filePath = getExpertisePath(d);
68
+ let records = await readExpertiseFile(filePath);
69
+ const lastUpdated = await getFileModTime(filePath);
70
+ if (options.type) {
71
+ records = filterByType(records, options.type);
72
+ }
73
+ sections.push(formatDomainExpertise(d, records, lastUpdated));
74
+ }
75
+ console.log(sections.join("\n\n"));
44
76
  }
45
- console.log(sections.join("\n\n"));
46
77
  }
47
78
  catch (err) {
48
79
  if (err.code === "ENOENT") {
49
- console.error("Error: No .mulch/ directory found. Run `mulch init` first.");
80
+ if (jsonMode) {
81
+ outputJsonError("query", "No .mulch/ directory found. Run `mulch init` first.");
82
+ }
83
+ else {
84
+ console.error("Error: No .mulch/ directory found. Run `mulch init` first.");
85
+ }
50
86
  }
51
87
  else {
52
- console.error(`Error: ${err.message}`);
88
+ if (jsonMode) {
89
+ outputJsonError("query", err.message);
90
+ }
91
+ else {
92
+ console.error(`Error: ${err.message}`);
93
+ }
53
94
  }
54
95
  process.exitCode = 1;
55
96
  }
@@ -1 +1 @@
1
- {"version":3,"file":"query.js","sourceRoot":"","sources":["../../src/commands/query.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAClE,OAAO,EAAE,iBAAiB,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AACxF,OAAO,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAC;AAE3D,MAAM,UAAU,oBAAoB,CAAC,OAAgB;IACnD,OAAO;SACJ,OAAO,CAAC,OAAO,CAAC;SAChB,QAAQ,CAAC,UAAU,EAAE,2BAA2B,CAAC;SACjD,WAAW,CAAC,yBAAyB,CAAC;SACtC,MAAM,CAAC,eAAe,EAAE,uBAAuB,CAAC;SAChD,MAAM,CAAC,OAAO,EAAE,kBAAkB,CAAC;SACnC,MAAM,CAAC,KAAK,EAAE,MAA0B,EAAE,OAAgC,EAAE,EAAE;QAC7E,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,UAAU,EAAE,CAAC;YAElC,MAAM,cAAc,GAAa,EAAE,CAAC;YAEpC,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;gBAChB,cAAc,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC;gBACvC,IAAI,cAAc,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;oBAChC,OAAO,CAAC,GAAG,CAAC,iEAAiE,CAAC,CAAC;oBAC/E,OAAO;gBACT,CAAC;YACH,CAAC;iBAAM,IAAI,MAAM,EAAE,CAAC;gBAClB,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;oBACrC,OAAO,CAAC,KAAK,CAAC,kBAAkB,MAAM,6CAA6C,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,QAAQ,EAAE,CAAC,CAAC;oBAC5H,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;oBACrB,OAAO;gBACT,CAAC;gBACD,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YAC9B,CAAC;iBAAM,CAAC;gBACN,OAAO,CAAC,KAAK,CAAC,mEAAmE,CAAC,CAAC;gBACnF,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;gBACrB,OAAO;YACT,CAAC;YAED,MAAM,QAAQ,GAAa,EAAE,CAAC;YAC9B,KAAK,MAAM,CAAC,IAAI,cAAc,EAAE,CAAC;gBAC/B,MAAM,QAAQ,GAAG,gBAAgB,CAAC,CAAC,CAAC,CAAC;gBACrC,IAAI,OAAO,GAAG,MAAM,iBAAiB,CAAC,QAAQ,CAAC,CAAC;gBAChD,MAAM,WAAW,GAAG,MAAM,cAAc,CAAC,QAAQ,CAAC,CAAC;gBAEnD,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;oBACjB,OAAO,GAAG,YAAY,CAAC,OAAO,EAAE,OAAO,CAAC,IAAc,CAAC,CAAC;gBAC1D,CAAC;gBAED,QAAQ,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC,EAAE,OAAO,EAAE,WAAW,CAAC,CAAC,CAAC;YAChE,CAAC;YAED,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;QACrC,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,IAAK,GAA6B,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;gBACrD,OAAO,CAAC,KAAK,CAAC,4DAA4D,CAAC,CAAC;YAC9E,CAAC;iBAAM,CAAC;gBACN,OAAO,CAAC,KAAK,CAAC,UAAW,GAAa,CAAC,OAAO,EAAE,CAAC,CAAC;YACpD,CAAC;YACD,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;QACvB,CAAC;IACH,CAAC,CAAC,CAAC;AACP,CAAC"}
1
+ {"version":3,"file":"query.js","sourceRoot":"","sources":["../../src/commands/query.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAClE,OAAO,EAAE,iBAAiB,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AACxF,OAAO,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAC;AAC3D,OAAO,EAAE,UAAU,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAEtE,MAAM,UAAU,oBAAoB,CAAC,OAAgB;IACnD,OAAO;SACJ,OAAO,CAAC,OAAO,CAAC;SAChB,QAAQ,CAAC,UAAU,EAAE,2BAA2B,CAAC;SACjD,WAAW,CAAC,yBAAyB,CAAC;SACtC,MAAM,CAAC,eAAe,EAAE,uBAAuB,CAAC;SAChD,MAAM,CAAC,OAAO,EAAE,kBAAkB,CAAC;SACnC,MAAM,CAAC,KAAK,EAAE,MAA0B,EAAE,OAAgC,EAAE,EAAE;QAC7E,MAAM,QAAQ,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC,IAAI,KAAK,IAAI,CAAC;QAC9C,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,UAAU,EAAE,CAAC;YAElC,MAAM,cAAc,GAAa,EAAE,CAAC;YAEpC,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;gBAChB,cAAc,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC;gBACvC,IAAI,cAAc,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;oBAChC,IAAI,QAAQ,EAAE,CAAC;wBACb,UAAU,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC,CAAC;oBAC/D,CAAC;yBAAM,CAAC;wBACN,OAAO,CAAC,GAAG,CAAC,iEAAiE,CAAC,CAAC;oBACjF,CAAC;oBACD,OAAO;gBACT,CAAC;YACH,CAAC;iBAAM,IAAI,MAAM,EAAE,CAAC;gBAClB,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;oBACrC,IAAI,QAAQ,EAAE,CAAC;wBACb,eAAe,CAAC,OAAO,EAAE,WAAW,MAAM,6CAA6C,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,QAAQ,EAAE,CAAC,CAAC;oBAClI,CAAC;yBAAM,CAAC;wBACN,OAAO,CAAC,KAAK,CAAC,kBAAkB,MAAM,6CAA6C,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,QAAQ,EAAE,CAAC,CAAC;oBAC9H,CAAC;oBACD,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;oBACrB,OAAO;gBACT,CAAC;gBACD,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YAC9B,CAAC;iBAAM,CAAC;gBACN,IAAI,QAAQ,EAAE,CAAC;oBACb,eAAe,CAAC,OAAO,EAAE,4DAA4D,CAAC,CAAC;gBACzF,CAAC;qBAAM,CAAC;oBACN,OAAO,CAAC,KAAK,CAAC,mEAAmE,CAAC,CAAC;gBACrF,CAAC;gBACD,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;gBACrB,OAAO;YACT,CAAC;YAED,IAAI,QAAQ,EAAE,CAAC;gBACb,MAAM,MAAM,GAAkD,EAAE,CAAC;gBACjE,KAAK,MAAM,CAAC,IAAI,cAAc,EAAE,CAAC;oBAC/B,MAAM,QAAQ,GAAG,gBAAgB,CAAC,CAAC,CAAC,CAAC;oBACrC,IAAI,OAAO,GAAG,MAAM,iBAAiB,CAAC,QAAQ,CAAC,CAAC;oBAChD,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;wBACjB,OAAO,GAAG,YAAY,CAAC,OAAO,EAAE,OAAO,CAAC,IAAc,CAAC,CAAC;oBAC1D,CAAC;oBACD,MAAM,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC;gBACtC,CAAC;gBACD,UAAU,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,CAAC;YACnE,CAAC;iBAAM,CAAC;gBACN,MAAM,QAAQ,GAAa,EAAE,CAAC;gBAC9B,KAAK,MAAM,CAAC,IAAI,cAAc,EAAE,CAAC;oBAC/B,MAAM,QAAQ,GAAG,gBAAgB,CAAC,CAAC,CAAC,CAAC;oBACrC,IAAI,OAAO,GAAG,MAAM,iBAAiB,CAAC,QAAQ,CAAC,CAAC;oBAChD,MAAM,WAAW,GAAG,MAAM,cAAc,CAAC,QAAQ,CAAC,CAAC;oBACnD,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;wBACjB,OAAO,GAAG,YAAY,CAAC,OAAO,EAAE,OAAO,CAAC,IAAc,CAAC,CAAC;oBAC1D,CAAC;oBACD,QAAQ,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC,EAAE,OAAO,EAAE,WAAW,CAAC,CAAC,CAAC;gBAChE,CAAC;gBACD,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;YACrC,CAAC;QACH,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,IAAK,GAA6B,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;gBACrD,IAAI,QAAQ,EAAE,CAAC;oBACb,eAAe,CAAC,OAAO,EAAE,qDAAqD,CAAC,CAAC;gBAClF,CAAC;qBAAM,CAAC;oBACN,OAAO,CAAC,KAAK,CAAC,4DAA4D,CAAC,CAAC;gBAC9E,CAAC;YACH,CAAC;iBAAM,CAAC;gBACN,IAAI,QAAQ,EAAE,CAAC;oBACb,eAAe,CAAC,OAAO,EAAG,GAAa,CAAC,OAAO,CAAC,CAAC;gBACnD,CAAC;qBAAM,CAAC;oBACN,OAAO,CAAC,KAAK,CAAC,UAAW,GAAa,CAAC,OAAO,EAAE,CAAC,CAAC;gBACpD,CAAC;YACH,CAAC;YACD,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;QACvB,CAAC;IACH,CAAC,CAAC,CAAC;AACP,CAAC"}
@@ -0,0 +1,3 @@
1
+ import { Command } from "commander";
2
+ export declare function registerReadyCommand(program: Command): void;
3
+ //# sourceMappingURL=ready.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ready.d.ts","sourceRoot":"","sources":["../../src/commands/ready.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAgCpC,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAwI3D"}
@@ -0,0 +1,160 @@
1
+ import chalk from "chalk";
2
+ import { readConfig, getExpertisePath } from "../utils/config.js";
3
+ import { readExpertiseFile } from "../utils/expertise.js";
4
+ import { formatTimeAgo, getRecordSummary } from "../utils/format.js";
5
+ import { outputJson, outputJsonError } from "../utils/json-output.js";
6
+ function parseDuration(input) {
7
+ const match = input.match(/^(\d+)(h|d|w)$/);
8
+ if (!match) {
9
+ throw new Error(`Invalid duration: "${input}". Use format like "24h", "7d", "2w".`);
10
+ }
11
+ const value = parseInt(match[1], 10);
12
+ const unit = match[2];
13
+ switch (unit) {
14
+ case "h":
15
+ return value * 3600000;
16
+ case "d":
17
+ return value * 86400000;
18
+ case "w":
19
+ return value * 7 * 86400000;
20
+ default:
21
+ throw new Error(`Unknown unit: ${unit}`);
22
+ }
23
+ }
24
+ export function registerReadyCommand(program) {
25
+ program
26
+ .command("ready")
27
+ .description("Show recently added or updated expertise entries")
28
+ .option("--limit <n>", "maximum number of entries to show", "10")
29
+ .option("--domain <domain>", "limit to a specific domain")
30
+ .option("--since <duration>", "show entries from the last duration (e.g. 24h, 7d, 2w)")
31
+ .action(async (options) => {
32
+ const jsonMode = program.opts().json === true;
33
+ try {
34
+ const config = await readConfig();
35
+ const limit = parseInt(options.limit, 10);
36
+ if (isNaN(limit) || limit < 1) {
37
+ if (jsonMode) {
38
+ outputJsonError("ready", "Limit must be a positive integer.");
39
+ }
40
+ else {
41
+ console.error(chalk.red("Error: --limit must be a positive integer."));
42
+ }
43
+ process.exitCode = 1;
44
+ return;
45
+ }
46
+ let domainsToCheck;
47
+ if (options.domain) {
48
+ if (!config.domains.includes(options.domain)) {
49
+ if (jsonMode) {
50
+ outputJsonError("ready", `Domain "${options.domain}" not found in config. Available domains: ${config.domains.join(", ")}`);
51
+ }
52
+ else {
53
+ console.error(chalk.red(`Error: domain "${options.domain}" not found. Available: ${config.domains.join(", ")}`));
54
+ }
55
+ process.exitCode = 1;
56
+ return;
57
+ }
58
+ domainsToCheck = [options.domain];
59
+ }
60
+ else {
61
+ domainsToCheck = config.domains;
62
+ }
63
+ let sinceMs;
64
+ if (options.since) {
65
+ try {
66
+ sinceMs = parseDuration(options.since);
67
+ }
68
+ catch (err) {
69
+ if (jsonMode) {
70
+ outputJsonError("ready", err.message);
71
+ }
72
+ else {
73
+ console.error(chalk.red(`Error: ${err.message}`));
74
+ }
75
+ process.exitCode = 1;
76
+ return;
77
+ }
78
+ }
79
+ // Collect all records with domain annotation
80
+ const all = [];
81
+ for (const domain of domainsToCheck) {
82
+ const filePath = getExpertisePath(domain);
83
+ const records = await readExpertiseFile(filePath);
84
+ for (const record of records) {
85
+ all.push({ domain, record });
86
+ }
87
+ }
88
+ // Sort by recorded_at descending
89
+ all.sort((a, b) => {
90
+ const aTime = new Date(a.record.recorded_at).getTime();
91
+ const bTime = new Date(b.record.recorded_at).getTime();
92
+ return bTime - aTime;
93
+ });
94
+ // Apply --since filter
95
+ let filtered = all;
96
+ if (sinceMs !== undefined) {
97
+ const cutoff = Date.now() - sinceMs;
98
+ filtered = all.filter((entry) => {
99
+ return new Date(entry.record.recorded_at).getTime() >= cutoff;
100
+ });
101
+ }
102
+ // Apply limit
103
+ const entries = filtered.slice(0, limit);
104
+ if (jsonMode) {
105
+ outputJson({
106
+ success: true,
107
+ command: "ready",
108
+ count: entries.length,
109
+ entries: entries.map((e) => ({
110
+ domain: e.domain,
111
+ id: e.record.id ?? null,
112
+ type: e.record.type,
113
+ recorded_at: e.record.recorded_at,
114
+ summary: getRecordSummary(e.record),
115
+ record: e.record,
116
+ })),
117
+ });
118
+ }
119
+ else {
120
+ if (entries.length === 0) {
121
+ console.log("No recent expertise entries found.");
122
+ return;
123
+ }
124
+ const header = options.since
125
+ ? `Recent Expertise (last ${options.since})`
126
+ : `Recent Expertise (last ${entries.length} entries)`;
127
+ console.log(header);
128
+ console.log("");
129
+ for (const entry of entries) {
130
+ const age = formatTimeAgo(new Date(entry.record.recorded_at));
131
+ const id = entry.record.id ? chalk.dim(`${entry.record.id} `) : "";
132
+ const domain = chalk.cyan(entry.domain.padEnd(14));
133
+ const type = chalk.yellow(`[${entry.record.type}]`.padEnd(14));
134
+ const summary = getRecordSummary(entry.record);
135
+ console.log(` ${id}${chalk.dim(age.padEnd(10))}${domain}${type}${summary}`);
136
+ }
137
+ }
138
+ }
139
+ catch (err) {
140
+ if (err.code === "ENOENT") {
141
+ if (jsonMode) {
142
+ outputJsonError("ready", "No .mulch/ directory found. Run `mulch init` first.");
143
+ }
144
+ else {
145
+ console.error("Error: No .mulch/ directory found. Run `mulch init` first.");
146
+ }
147
+ }
148
+ else {
149
+ if (jsonMode) {
150
+ outputJsonError("ready", err.message);
151
+ }
152
+ else {
153
+ console.error(`Error: ${err.message}`);
154
+ }
155
+ }
156
+ process.exitCode = 1;
157
+ }
158
+ });
159
+ }
160
+ //# sourceMappingURL=ready.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ready.js","sourceRoot":"","sources":["../../src/commands/ready.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"record.d.ts","sourceRoot":"","sources":["../../src/commands/record.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAU,MAAM,WAAW,CAAC;AAmB5C,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAyQ5D"}
1
+ {"version":3,"file":"record.d.ts","sourceRoot":"","sources":["../../src/commands/record.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAU,MAAM,WAAW,CAAC;AAoB5C,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAmX5D"}
@@ -5,6 +5,7 @@ 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")
@@ -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":"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"}
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;AAO3D,OAAO,EAAE,UAAU,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAEtE,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,oBAAoB,EAAE,4CAA4C,CAAC;SAC1E,MAAM,CAAC,oBAAoB,EAAE,4CAA4C,CAAC;SAC1E,MAAM,CAAC,SAAS,EAAE,0CAA0C,CAAC;SAC7D,MAAM,CACL,KAAK,EACH,MAAc,EACd,OAA2B,EAC3B,OAAgC,EAChC,EAAE;QACF,MAAM,QAAQ,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC,IAAI,KAAK,IAAI,CAAC;QAC9C,MAAM,MAAM,GAAG,MAAM,UAAU,EAAE,CAAC;QAElC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;YACrC,IAAI,QAAQ,EAAE,CAAC;gBACb,eAAe,CAAC,QAAQ,EAAE,WAAW,MAAM,6CAA6C,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,QAAQ,EAAE,CAAC,CAAC;YACnI,CAAC;iBAAM,CAAC;gBACN,OAAO,CAAC,KAAK,CACX,KAAK,CAAC,GAAG,CAAC,kBAAkB,MAAM,wBAAwB,CAAC,CAC5D,CAAC;gBACF,OAAO,CAAC,KAAK,CACX,KAAK,CAAC,GAAG,CACP,sBAAsB,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,QAAQ,EAAE,CAC9D,CACF,CAAC;YACJ,CAAC;YACD,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;YACrB,OAAO;QACT,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,MAAM,SAAS,GACb,OAAO,OAAO,CAAC,SAAS,KAAK,QAAQ;YACnC,CAAC,CAAC,OAAO,CAAC,SAAS;iBACd,KAAK,CAAC,GAAG,CAAC;iBACV,GAAG,CAAC,CAAC,EAAU,EAAE,EAAE,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC;iBAC9B,MAAM,CAAC,OAAO,CAAC;YACpB,CAAC,CAAC,SAAS,CAAC;QAEhB,MAAM,UAAU,GACd,OAAO,OAAO,CAAC,UAAU,KAAK,QAAQ;YACpC,CAAC,CAAC,OAAO,CAAC,UAAU;iBACf,KAAK,CAAC,GAAG,CAAC;iBACV,GAAG,CAAC,CAAC,EAAU,EAAE,EAAE,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC;iBAC9B,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,IAAI,QAAQ,EAAE,CAAC;wBACb,eAAe,CAAC,QAAQ,EAAE,4EAA4E,CAAC,CAAC;oBAC1G,CAAC;yBAAM,CAAC;wBACN,OAAO,CAAC,KAAK,CACX,KAAK,CAAC,GAAG,CACP,mFAAmF,CACpF,CACF,CAAC;oBACJ,CAAC;oBACD,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;oBACrB,OAAO;gBACT,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;oBACxC,GAAG,CAAC,SAAS,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,UAAU,EAAE,SAAS,EAAE,CAAC;oBACnE,GAAG,CAAC,UAAU,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,UAAU,EAAE,CAAC;iBAC3D,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,IAAI,QAAQ,EAAE,CAAC;wBACb,eAAe,CAAC,QAAQ,EAAE,2EAA2E,CAAC,CAAC;oBACzG,CAAC;yBAAM,CAAC;wBACN,OAAO,CAAC,KAAK,CACX,KAAK,CAAC,GAAG,CACP,kFAAkF,CACnF,CACF,CAAC;oBACJ,CAAC;oBACD,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;oBACrB,OAAO;gBACT,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;oBACxC,GAAG,CAAC,SAAS,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,UAAU,EAAE,SAAS,EAAE,CAAC;oBACnE,GAAG,CAAC,UAAU,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,UAAU,EAAE,CAAC;iBAC3D,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,IAAI,QAAQ,EAAE,CAAC;wBACb,eAAe,CAAC,QAAQ,EAAE,yDAAyD,CAAC,CAAC;oBACvF,CAAC;yBAAM,CAAC;wBACN,OAAO,CAAC,KAAK,CACX,KAAK,CAAC,GAAG,CACP,gEAAgE,CACjE,CACF,CAAC;oBACJ,CAAC;oBACD,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;oBACrB,OAAO;gBACT,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;oBACxC,GAAG,CAAC,SAAS,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,UAAU,EAAE,SAAS,EAAE,CAAC;oBACnE,GAAG,CAAC,UAAU,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,UAAU,EAAE,CAAC;iBAC3D,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,IAAI,QAAQ,EAAE,CAAC;wBACb,eAAe,CAAC,QAAQ,EAAE,mDAAmD,CAAC,CAAC;oBACjF,CAAC;yBAAM,CAAC;wBACN,OAAO,CAAC,KAAK,CACX,KAAK,CAAC,GAAG,CACP,0DAA0D,CAC3D,CACF,CAAC;oBACJ,CAAC;oBACD,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;oBACrB,OAAO;gBACT,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;oBACxC,GAAG,CAAC,SAAS,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,UAAU,EAAE,SAAS,EAAE,CAAC;oBACnE,GAAG,CAAC,UAAU,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,UAAU,EAAE,CAAC;iBAC3D,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,IAAI,QAAQ,EAAE,CAAC;wBACb,eAAe,CAAC,QAAQ,EAAE,6EAA6E,CAAC,CAAC;oBAC3G,CAAC;yBAAM,CAAC;wBACN,OAAO,CAAC,KAAK,CACX,KAAK,CAAC,GAAG,CACP,oFAAoF,CACrF,CACF,CAAC;oBACJ,CAAC;oBACD,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;oBACrB,OAAO;gBACT,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;oBACxC,GAAG,CAAC,SAAS,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,UAAU,EAAE,SAAS,EAAE,CAAC;oBACnE,GAAG,CAAC,UAAU,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,UAAU,EAAE,CAAC;iBAC3D,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,IAAI,QAAQ,EAAE,CAAC;wBACb,eAAe,CAAC,QAAQ,EAAE,yEAAyE,CAAC,CAAC;oBACvG,CAAC;yBAAM,CAAC;wBACN,OAAO,CAAC,KAAK,CACX,KAAK,CAAC,GAAG,CACP,gFAAgF,CACjF,CACF,CAAC;oBACJ,CAAC;oBACD,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;oBACrB,OAAO;gBACT,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;oBACxC,GAAG,CAAC,SAAS,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,UAAU,EAAE,SAAS,EAAE,CAAC;oBACnE,GAAG,CAAC,UAAU,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,UAAU,EAAE,CAAC;iBAC3D,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,MAAM,MAAM,GAAG,CAAC,QAAQ,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC,YAAY,IAAI,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC;YAC1F,IAAI,QAAQ,EAAE,CAAC;gBACb,eAAe,CAAC,QAAQ,EAAE,6BAA6B,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YAC9E,CAAC;iBAAM,CAAC;gBACN,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,yCAAyC,CAAC,CAAC,CAAC;gBACpE,KAAK,MAAM,GAAG,IAAI,QAAQ,CAAC,MAAM,IAAI,EAAE,EAAE,CAAC;oBACxC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,GAAG,CAAC,YAAY,IAAI,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;gBACnE,CAAC;YACH,CAAC;YACD,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;YACrB,OAAO;QACT,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,IAAI,QAAQ,EAAE,CAAC;oBACb,UAAU,CAAC;wBACT,OAAO,EAAE,IAAI;wBACb,OAAO,EAAE,QAAQ;wBACjB,MAAM,EAAE,SAAS;wBACjB,MAAM;wBACN,IAAI,EAAE,UAAU;wBAChB,KAAK,EAAE,GAAG,CAAC,KAAK,GAAG,CAAC;wBACpB,MAAM;qBACP,CAAC,CAAC;gBACL,CAAC;qBAAM,CAAC;oBACN,OAAO,CAAC,GAAG,CACT,KAAK,CAAC,KAAK,CACT,2BAA2B,UAAU,OAAO,MAAM,aAAa,GAAG,CAAC,KAAK,GAAG,CAAC,GAAG,CAChF,CACF,CAAC;gBACJ,CAAC;YACH,CAAC;iBAAM,CAAC;gBACN,oBAAoB;gBACpB,IAAI,QAAQ,EAAE,CAAC;oBACb,UAAU,CAAC;wBACT,OAAO,EAAE,IAAI;wBACb,OAAO,EAAE,QAAQ;wBACjB,MAAM,EAAE,SAAS;wBACjB,MAAM;wBACN,IAAI,EAAE,UAAU;wBAChB,KAAK,EAAE,GAAG,CAAC,KAAK,GAAG,CAAC;qBACrB,CAAC,CAAC;gBACL,CAAC;qBAAM,CAAC;oBACN,OAAO,CAAC,GAAG,CACT,KAAK,CAAC,MAAM,CACV,aAAa,UAAU,sBAAsB,MAAM,aAAa,GAAG,CAAC,KAAK,GAAG,CAAC,+BAA+B,CAC7G,CACF,CAAC;gBACJ,CAAC;YACH,CAAC;QACH,CAAC;aAAM,CAAC;YACN,MAAM,YAAY,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;YACrC,IAAI,QAAQ,EAAE,CAAC;gBACb,UAAU,CAAC;oBACT,OAAO,EAAE,IAAI;oBACb,OAAO,EAAE,QAAQ;oBACjB,MAAM,EAAE,SAAS;oBACjB,MAAM;oBACN,IAAI,EAAE,UAAU;oBAChB,MAAM;iBACP,CAAC,CAAC;YACL,CAAC;iBAAM,CAAC;gBACN,OAAO,CAAC,GAAG,CACT,KAAK,CAAC,KAAK,CAAC,mBAAmB,UAAU,OAAO,MAAM,EAAE,CAAC,CAC1D,CAAC;YACJ,CAAC;QACH,CAAC;IACH,CAAC,CACF,CAAC;AACN,CAAC"}
@@ -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"}