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.
package/dist/index.js CHANGED
@@ -15003,7 +15003,14 @@ import { tool as tool20 } from "@anthropic-ai/claude-agent-sdk";
15003
15003
  // src/plugins/builtin/tools/epic-utils.ts
15004
15004
  function normalizeLinkedFeatures(value) {
15005
15005
  if (value === void 0 || value === null) return [];
15006
- if (typeof value === "string") return [value];
15006
+ if (typeof value === "string") {
15007
+ try {
15008
+ const parsed = JSON.parse(value);
15009
+ if (Array.isArray(parsed)) return parsed.filter((v) => typeof v === "string");
15010
+ } catch {
15011
+ }
15012
+ return [value];
15013
+ }
15007
15014
  if (Array.isArray(value)) return value.filter((v) => typeof v === "string");
15008
15015
  return [];
15009
15016
  }
@@ -17408,6 +17415,20 @@ function createFeatureTools(store) {
17408
17415
 
17409
17416
  // src/plugins/builtin/tools/epics.ts
17410
17417
  import { tool as tool10 } from "@anthropic-ai/claude-agent-sdk";
17418
+ var linkedFeatureArray = external_exports.preprocess(
17419
+ (val) => {
17420
+ if (typeof val === "string") {
17421
+ try {
17422
+ const parsed = JSON.parse(val);
17423
+ if (Array.isArray(parsed)) return parsed;
17424
+ } catch {
17425
+ }
17426
+ return [val];
17427
+ }
17428
+ return val;
17429
+ },
17430
+ external_exports.array(external_exports.string())
17431
+ );
17411
17432
  function createEpicTools(store) {
17412
17433
  return [
17413
17434
  tool10(
@@ -17473,7 +17494,7 @@ function createEpicTools(store) {
17473
17494
  {
17474
17495
  title: external_exports.string().describe("Epic title"),
17475
17496
  content: external_exports.string().describe("Epic description and scope"),
17476
- 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'])"),
17497
+ linkedFeature: linkedFeatureArray.describe("Feature ID(s) to link this epic to (e.g. ['F-001'] or ['F-001', 'F-002'])"),
17477
17498
  status: external_exports.enum(["planned", "in-progress", "done"]).optional().describe("Epic status (default: 'planned')"),
17478
17499
  owner: external_exports.string().optional().describe("Epic owner"),
17479
17500
  targetDate: external_exports.string().optional().describe("Target completion date (ISO format)"),
@@ -17549,7 +17570,7 @@ function createEpicTools(store) {
17549
17570
  owner: external_exports.string().optional().describe("New owner"),
17550
17571
  targetDate: external_exports.string().optional().describe("New target date"),
17551
17572
  estimatedEffort: external_exports.string().optional().describe("New estimated effort"),
17552
- linkedFeature: external_exports.union([external_exports.string(), external_exports.array(external_exports.string())]).optional().describe("New linked feature ID(s)"),
17573
+ linkedFeature: linkedFeatureArray.optional().describe("New linked feature ID(s)"),
17553
17574
  tags: external_exports.array(external_exports.string()).optional().describe("Replace tags (e.g. remove 'risk', add 'risk-mitigated')")
17554
17575
  },
17555
17576
  async (args) => {
@@ -23708,7 +23729,7 @@ function createProgram() {
23708
23729
  const program = new Command();
23709
23730
  program.name("marvin").description(
23710
23731
  "AI-powered product development assistant with Product Owner, Delivery Manager, and Technical Lead personas"
23711
- ).version("0.4.0");
23732
+ ).version("0.4.2");
23712
23733
  program.command("init").description("Initialize a new Marvin project in the current directory").action(async () => {
23713
23734
  await initCommand();
23714
23735
  });