mrvn-cli 0.4.0 → 0.4.2

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.
@@ -15092,7 +15092,14 @@ import { tool as tool8 } from "@anthropic-ai/claude-agent-sdk";
15092
15092
  // src/plugins/builtin/tools/epic-utils.ts
15093
15093
  function normalizeLinkedFeatures(value) {
15094
15094
  if (value === void 0 || value === null) return [];
15095
- if (typeof value === "string") return [value];
15095
+ if (typeof value === "string") {
15096
+ try {
15097
+ const parsed = JSON.parse(value);
15098
+ if (Array.isArray(parsed)) return parsed.filter((v) => typeof v === "string");
15099
+ } catch {
15100
+ }
15101
+ return [value];
15102
+ }
15096
15103
  if (Array.isArray(value)) return value.filter((v) => typeof v === "string");
15097
15104
  return [];
15098
15105
  }
@@ -15915,6 +15922,20 @@ function createFeatureTools(store) {
15915
15922
 
15916
15923
  // src/plugins/builtin/tools/epics.ts
15917
15924
  import { tool as tool10 } from "@anthropic-ai/claude-agent-sdk";
15925
+ var linkedFeatureArray = external_exports.preprocess(
15926
+ (val) => {
15927
+ if (typeof val === "string") {
15928
+ try {
15929
+ const parsed = JSON.parse(val);
15930
+ if (Array.isArray(parsed)) return parsed;
15931
+ } catch {
15932
+ }
15933
+ return [val];
15934
+ }
15935
+ return val;
15936
+ },
15937
+ external_exports.array(external_exports.string())
15938
+ );
15918
15939
  function createEpicTools(store) {
15919
15940
  return [
15920
15941
  tool10(
@@ -15980,7 +16001,7 @@ function createEpicTools(store) {
15980
16001
  {
15981
16002
  title: external_exports.string().describe("Epic title"),
15982
16003
  content: external_exports.string().describe("Epic description and scope"),
15983
- linkedFeature: external_exports.union([external_exports.string(), external_exports.array(external_exports.string())]).describe("Feature ID(s) to link this epic to (e.g. 'F-001' or ['F-001', 'F-002'])"),
16004
+ linkedFeature: linkedFeatureArray.describe("Feature ID(s) to link this epic to (e.g. ['F-001'] or ['F-001', 'F-002'])"),
15984
16005
  status: external_exports.enum(["planned", "in-progress", "done"]).optional().describe("Epic status (default: 'planned')"),
15985
16006
  owner: external_exports.string().optional().describe("Epic owner"),
15986
16007
  targetDate: external_exports.string().optional().describe("Target completion date (ISO format)"),
@@ -16056,7 +16077,7 @@ function createEpicTools(store) {
16056
16077
  owner: external_exports.string().optional().describe("New owner"),
16057
16078
  targetDate: external_exports.string().optional().describe("New target date"),
16058
16079
  estimatedEffort: external_exports.string().optional().describe("New estimated effort"),
16059
- linkedFeature: external_exports.union([external_exports.string(), external_exports.array(external_exports.string())]).optional().describe("New linked feature ID(s)"),
16080
+ linkedFeature: linkedFeatureArray.optional().describe("New linked feature ID(s)"),
16060
16081
  tags: external_exports.array(external_exports.string()).optional().describe("Replace tags (e.g. remove 'risk', add 'risk-mitigated')")
16061
16082
  },
16062
16083
  async (args) => {