{"version":3,"sources":["../extension-src/feature-workflow/package-api/feature-doc-workflow.ts","../extension-src/feature-workflow/package-api/implementation-doc-loop-workflow.ts","../extension-src/feature-workflow/package-api/implementation-stories-split-workflow.ts","../extension-src/feature-workflow/package-api/new-feature-workflow.ts","../extension-src/feature-workflow/package-api/story-implementation-loop-workflow.ts","../extension-src/feature-workflow/package-api/take-it-away-workflow.ts","../extension-src/feature-workflow/internals/pi-adapter/register-extension.ts","../extension-src/feature-workflow/internals/workflow-routing/register-feature-workflow-commands.ts"],"sourcesContent":["import type { WorkflowDefinition } from \"@supierior/workflower\";\n\nexport const featureDocWorkflow: WorkflowDefinition = {\n  id: \"feature-doc\",\n  clearOnStart: false,\n  cleanupOnCompletion: false,\n  model: \"medium\",\n  thinkingLevel: \"medium\",\n  pollen: \"feature-doc.md\",\n  steps: [\n    {\n      id: \"create-feature-doc\",\n      command: \"/skill:feature-doc-create\",\n      outputs: [\"feature-doc.md\"],\n    },\n  ],\n};\n","import type { WorkflowDefinition } from \"@supierior/workflower\";\n\nexport const implementationDocLoopWorkflow: WorkflowDefinition = {\n  id: \"implementation-doc-loop\",\n  userInvocable: false,\n  modelInvocable: true,\n  clearOnStart: true,\n  cleanupOnCompletion: false,\n  model: \"medium\",\n  thinkingLevel: \"low\",\n  pollen: \"implementation-doc.md\",\n  steps: [\n    {\n      id: \"create-or-improve-implementation-doc\",\n      command: \"/skill:implementation-doc-create\",\n      model: \"large\",\n      thinkingLevel: \"high\",\n      outputs: [\"implementation-doc.md\"],\n      autoNext: true,\n      clearOnNext: true,\n    },\n    {\n      id: \"review-implementation-doc\",\n      command: \"/skill:implementation-doc-review\",\n      thinkingLevel: \"medium\",\n      autoNext: true,\n      clearOnNext: true,\n    },\n    {\n      id: \"route-implementation-doc-review\",\n      command: \"/feature-workflow-route implementation-doc-review\",\n      thinkingLevel: \"minimal\",\n      autoNext: true,\n      clearOnNext: true,\n    },\n  ],\n};\n","import type { WorkflowDefinition } from \"@supierior/workflower\";\n\nexport const implementationStoriesSplitWorkflow: WorkflowDefinition = {\n  id: \"implementation-stories-split\",\n  userInvocable: false,\n  modelInvocable: true,\n  clearOnStart: true,\n  cleanupOnCompletion: false,\n  model: \"medium\",\n  thinkingLevel: \"low\",\n  steps: [\n    {\n      id: \"split-implementation-stories\",\n      command: \"/skill:implementation-stories-split\",\n      thinkingLevel: \"medium\",\n      outputs: [\"stories\"],\n      autoNext: true,\n      clearOnNext: true,\n    },\n    {\n      id: \"start-story-implementation-loop\",\n      command: \"/feature-workflow-route stories\",\n      thinkingLevel: \"minimal\",\n      autoNext: true,\n      clearOnNext: true,\n    },\n  ],\n};\n","import type { WorkflowDefinition } from \"@supierior/workflower\";\n\nexport const newFeatureWorkflow: WorkflowDefinition = {\n  id: \"new-feature\",\n  clearOnStart: true,\n  cleanupOnCompletion: false,\n  model: \"medium\",\n  thinkingLevel: \"low\",\n  pollen: \"feature-doc.md\",\n  steps: [\n    {\n      id: \"grill\",\n      command: \"/skill:feature-grill\",\n      thinkingLevel: \"medium\",\n      clearOnNext: false,\n    },\n    {\n      id: \"create-feature-doc\",\n      command: \"/skill:feature-doc-create\",\n      outputs: [\"feature-doc.md\"],\n      thinkingLevel: \"medium\",\n      autoNext: true,\n      clearOnNext: true,\n    },\n    {\n      id: \"start-implementation-doc-loop\",\n      command: \"/feature-workflow-route start-implementation-doc-loop\",\n      thinkingLevel: \"minimal\",\n      autoNext: true,\n      clearOnNext: true,\n    },\n  ],\n};\n","import type { WorkflowDefinition } from \"@supierior/workflower\";\n\nexport const storyImplementationLoopWorkflow: WorkflowDefinition = {\n  id: \"story-implementation-loop\",\n  userInvocable: false,\n  modelInvocable: true,\n  clearOnStart: true,\n  cleanupOnCompletion: false,\n  model: \"medium\",\n  thinkingLevel: \"low\",\n  steps: [\n    {\n      id: \"implement-story\",\n      command: \"/skill:story-implement\",\n      thinkingLevel: \"medium\",\n      autoNext: true,\n      clearOnNext: true,\n    },\n    {\n      id: \"review-story-implementation\",\n      command: \"/skill:story-implementation-review\",\n      thinkingLevel: \"medium\",\n      autoNext: true,\n      clearOnNext: true,\n    },\n    {\n      id: \"route-story-review\",\n      command: \"/feature-workflow-route story-review\",\n      thinkingLevel: \"minimal\",\n      autoNext: true,\n      clearOnNext: true,\n    },\n  ],\n};\n","import type { WorkflowDefinition } from \"@supierior/workflower\";\n\nexport const takeItAwayWorkflow: WorkflowDefinition = {\n  id: \"take-it-away\",\n  clearOnStart: false,\n  cleanupOnCompletion: false,\n  model: \"medium\",\n  thinkingLevel: \"low\",\n  pollen: \"feature-doc.md\",\n  steps: [\n    {\n      id: \"create-feature-doc\",\n      command: \"/skill:feature-doc-create\",\n      outputs: [\"feature-doc.md\"],\n      thinkingLevel: \"medium\",\n      autoNext: true,\n      clearOnNext: true,\n    },\n    {\n      id: \"start-implementation-doc-loop\",\n      command: \"/feature-workflow-route start-implementation-doc-loop\",\n      thinkingLevel: \"minimal\",\n      autoNext: true,\n      clearOnNext: true,\n    },\n  ],\n};\n","import type { ExtensionAPI } from \"@mariozechner/pi-coding-agent\";\nimport setupWorkflower, { registerWorkflows } from \"@supierior/workflower\";\n\nimport { featureDocWorkflow } from \"../../package-api/feature-doc-workflow\";\nimport { implementationDocLoopWorkflow } from \"../../package-api/implementation-doc-loop-workflow\";\nimport { implementationStoriesSplitWorkflow } from \"../../package-api/implementation-stories-split-workflow\";\nimport { newFeatureWorkflow } from \"../../package-api/new-feature-workflow\";\nimport { storyImplementationLoopWorkflow } from \"../../package-api/story-implementation-loop-workflow\";\nimport { takeItAwayWorkflow } from \"../../package-api/take-it-away-workflow\";\nimport { registerFeatureWorkflowCommands } from \"../workflow-routing/register-feature-workflow-commands\";\n\nexport default function featureWorkflowExtension(pi: ExtensionAPI): void {\n  registerWorkflows([\n    newFeatureWorkflow,\n    takeItAwayWorkflow,\n    featureDocWorkflow,\n    implementationDocLoopWorkflow,\n    implementationStoriesSplitWorkflow,\n    storyImplementationLoopWorkflow,\n  ]);\n  registerFeatureWorkflowCommands();\n\n  setupWorkflower(pi, { packageUrl: import.meta.url });\n}\n","import { mkdir, readFile, writeFile } from \"node:fs/promises\";\nimport { join } from \"node:path\";\nimport { registerWorkflowerCommand } from \"@supierior/workflower\";\nimport type { JsonValue, WorkflowerCommandContext } from \"@supierior/workflower\";\n\nconst PASSING_REVIEW_SCORE = 4;\nconst MAX_IMPLEMENTATION_DOC_REVIEW_ATTEMPTS = 5;\nconst MAX_STORY_REVIEW_ATTEMPTS = 3;\n\ntype GardenStateFile = {\n  version: 1;\n  values: Record<\n    string,\n    { value: JsonValue; updatedAt: string; producer?: Record<string, JsonValue> }\n  >;\n};\n\ntype ReviewValue = {\n  score?: unknown;\n  summary?: unknown;\n  requiredImprovements?: unknown;\n};\n\ntype ReviewState = {\n  review?: ReviewValue;\n  score?: number;\n  diagnostics: string[];\n};\n\ntype StoryManifestValue = {\n  stories?: unknown;\n  currentIndex?: unknown;\n};\n\ntype StoryValue = {\n  id?: unknown;\n  title?: unknown;\n  path?: unknown;\n  dependencies?: unknown;\n  status?: unknown;\n};\n\nlet commandsRegistered = false;\n\nexport function registerFeatureWorkflowCommands(): void {\n  if (commandsRegistered) return;\n  commandsRegistered = true;\n\n  registerWorkflowerCommand({\n    name: \"feature-workflow-route\",\n    description: \"Routes feature-workflow loop steps from Workflower garden state.\",\n    handler: async (args, ctx) => ({\n      kind: \"prompt\",\n      content: await routeFeatureWorkflow(args.trim(), ctx),\n    }),\n  });\n}\n\nexport async function routeFeatureWorkflow(\n  route: string,\n  ctx: WorkflowerCommandContext,\n): Promise<string> {\n  switch (route) {\n    case \"start-implementation-doc-loop\":\n      return routeToImplementationDocLoop(ctx);\n    case \"implementation-doc-review\":\n      return routeImplementationDocReview(ctx);\n    case \"stories\":\n      return routeStories(ctx);\n    case \"story-review\":\n      return routeStoryReview(ctx);\n    default:\n      return stopPrompt(`Unknown feature-workflow route: ${route || \"<empty>\"}.`);\n  }\n}\n\nasync function routeToImplementationDocLoop(ctx: WorkflowerCommandContext): Promise<string> {\n  const state = await readGardenState(ctx);\n  const featureDocPath = readString(state, \"featureDocPath\");\n  if (!featureDocPath) {\n    return stopPrompt(\n      \"featureDocPath is missing from garden state. The feature doc creation step must save it before implementation planning can start.\",\n    );\n  }\n\n  await writeGardenStateValue(ctx, \"implementationDocReviewAttempts\", 0);\n  return handoffPrompt(\"implementation-doc-loop\", [\n    \"A feature document is ready.\",\n    `Feature doc path: ${featureDocPath}`,\n    \"Hand off to the implementation document review loop now.\",\n  ]);\n}\n\nasync function routeImplementationDocReview(ctx: WorkflowerCommandContext): Promise<string> {\n  const state = await readGardenState(ctx);\n  const reviewState = readReviewState(state, \"implementationDocReview\");\n  const { review, score } = reviewState;\n  if (score === undefined) {\n    return stopPrompt(invalidReviewPrompt(\"implementationDocReview\", reviewState));\n  }\n\n  if (score >= PASSING_REVIEW_SCORE) {\n    await writeGardenStateValues(ctx, {\n      implementationDocReviewAttempts: 0,\n      implementationDocStatus: \"accepted\",\n    });\n    return handoffPrompt(\"implementation-stories-split\", [\n      `Implementation doc review passed with score ${score}.`,\n      \"Hand off to split the accepted implementation doc into implementation-ready story files.\",\n    ]);\n  }\n\n  const attempts = readNumber(state, \"implementationDocReviewAttempts\") + 1;\n  await writeGardenStateValues(ctx, {\n    implementationDocReviewAttempts: attempts,\n    implementationDocStatus: \"needs-improvement\",\n  });\n\n  if (attempts >= MAX_IMPLEMENTATION_DOC_REVIEW_ATTEMPTS) {\n    return stopPrompt(\n      [\n        `Implementation doc review failed with score ${score} after ${attempts} improvement attempts.`,\n        reviewSummary(review),\n        \"Stop here and ask the user to intervene before continuing the workflow.\",\n      ]\n        .filter(Boolean)\n        .join(\"\\n\"),\n    );\n  }\n\n  return handoffPrompt(\n    \"implementation-doc-loop\",\n    [\n      `Implementation doc review score ${score} is below ${PASSING_REVIEW_SCORE}.`,\n      `Improvement attempt ${attempts} of ${MAX_IMPLEMENTATION_DOC_REVIEW_ATTEMPTS} is required.`,\n      reviewSummary(review),\n      \"Hand off to another implementation-doc-loop iteration so the creation skill can improve the same implementation-doc.md in place.\",\n    ].filter(Boolean),\n  );\n}\n\nasync function routeStories(ctx: WorkflowerCommandContext): Promise<string> {\n  const state = await readGardenState(ctx);\n  const manifest = readObject<StoryManifestValue>(state, \"storyManifest\");\n  const stories = Array.isArray(manifest?.stories) ? manifest.stories : [];\n  const firstStory = stories[0] as StoryValue | undefined;\n  if (!firstStory || typeof firstStory.path !== \"string\") {\n    return stopPrompt(\n      \"storyManifest.stories[0].path is missing from garden state. The story split step must save implementation-ready story files before implementation can start.\",\n    );\n  }\n\n  await writeGardenStateValues(ctx, {\n    currentStoryIndex: 0,\n    currentStory: normalizeStory(firstStory),\n    storyReviewAttempts: 0,\n  });\n\n  return handoffPrompt(\"story-implementation-loop\", [\n    \"Story files are ready.\",\n    `Starting story 1 of ${stories.length}: ${String(firstStory.title ?? firstStory.id ?? firstStory.path)}`,\n    `Story path: ${firstStory.path}`,\n    \"Hand off to the story implementation loop now.\",\n  ]);\n}\n\nasync function routeStoryReview(ctx: WorkflowerCommandContext): Promise<string> {\n  const state = await readGardenState(ctx);\n  const reviewState = readReviewState(state, \"storyReview\");\n  const { review, score } = reviewState;\n  if (score === undefined) {\n    return stopPrompt(invalidReviewPrompt(\"storyReview\", reviewState));\n  }\n\n  const manifest = readObject<StoryManifestValue>(state, \"storyManifest\");\n  const stories = Array.isArray(manifest?.stories) ? (manifest.stories as StoryValue[]) : [];\n  const currentIndex = readNumber(state, \"currentStoryIndex\");\n\n  if (score < PASSING_REVIEW_SCORE) {\n    const attempts = readNumber(state, \"storyReviewAttempts\") + 1;\n    await writeGardenStateValue(ctx, \"storyReviewAttempts\", attempts);\n\n    if (attempts >= MAX_STORY_REVIEW_ATTEMPTS) {\n      return stopPrompt(\n        [\n          `Story implementation review failed with score ${score} after ${attempts} improvement attempts.`,\n          reviewSummary(review),\n          \"Stop here and ask the user to intervene before continuing the workflow.\",\n        ]\n          .filter(Boolean)\n          .join(\"\\n\"),\n      );\n    }\n\n    return handoffPrompt(\n      \"story-implementation-loop\",\n      [\n        `Story implementation review score ${score} is below ${PASSING_REVIEW_SCORE}.`,\n        `Improvement attempt ${attempts} of ${MAX_STORY_REVIEW_ATTEMPTS} is required for the current story.`,\n        reviewSummary(review),\n        \"Hand off to another story-implementation-loop iteration for the same story.\",\n      ].filter(Boolean),\n    );\n  }\n\n  const updatedStories = stories.map((story, index) =>\n    index === currentIndex ? { ...story, status: \"done\" } : story,\n  );\n  const nextIndex = currentIndex + 1;\n  const nextStory = updatedStories[nextIndex];\n  if (nextStory && typeof nextStory.path === \"string\") {\n    await writeGardenStateValues(ctx, {\n      storyManifest: { stories: updatedStories.map(normalizeStory), currentIndex: nextIndex },\n      currentStoryIndex: nextIndex,\n      currentStory: normalizeStory(nextStory),\n      storyReviewAttempts: 0,\n      storyReviewStatus: \"accepted\",\n    });\n\n    return handoffPrompt(\"story-implementation-loop\", [\n      `Story ${currentIndex + 1} passed review with score ${score}.`,\n      `Starting story ${nextIndex + 1} of ${stories.length}: ${String(nextStory.title ?? nextStory.id ?? nextStory.path)}`,\n      `Story path: ${nextStory.path}`,\n      \"Hand off to the story implementation loop for the next story.\",\n    ]);\n  }\n\n  await writeGardenStateValues(ctx, {\n    storyManifest: { stories: updatedStories.map(normalizeStory), currentIndex },\n    storyReviewAttempts: 0,\n    storyReviewStatus: \"accepted\",\n    featureWorkflowStatus: \"implemented\",\n  });\n\n  return [\n    `Story ${currentIndex + 1} passed review with score ${score}.`,\n    \"All story files in storyManifest have been implemented and reviewed.\",\n    \"Do not call workflower_handoff. Report the feature workflow complete and summarize the implemented stories.\",\n  ].join(\"\\n\");\n}\n\nfunction handoffPrompt(workflowId: string, details: string[]): string {\n  return [\n    ...details,\n    \"\",\n    `Call the workflower_handoff tool with workflowId \\\"${workflowId}\\\".`,\n    \"Do not print a /wf command; assistant text does not execute workflow commands.\",\n  ].join(\"\\n\");\n}\n\nfunction stopPrompt(message: string): string {\n  return [\n    message,\n    \"Do not call workflower_handoff.\",\n    \"Explain the problem to the user and wait for their correction.\",\n  ].join(\"\\n\");\n}\n\nasync function readGardenState(ctx: WorkflowerCommandContext): Promise<GardenStateFile> {\n  const path = gardenStatePath(ctx);\n  try {\n    return JSON.parse(await readFile(path, \"utf8\")) as GardenStateFile;\n  } catch {\n    return { version: 1, values: {} };\n  }\n}\n\nasync function writeGardenStateValue(\n  ctx: WorkflowerCommandContext,\n  key: string,\n  value: JsonValue,\n): Promise<void> {\n  await writeGardenStateValues(ctx, { [key]: value });\n}\n\nasync function writeGardenStateValues(\n  ctx: WorkflowerCommandContext,\n  values: Record<string, JsonValue>,\n): Promise<void> {\n  const state = await readGardenState(ctx);\n  const now = new Date().toISOString();\n  for (const [key, value] of Object.entries(values)) {\n    state.values[key] = {\n      value,\n      updatedAt: now,\n      producer: {\n        workflowId: ctx.workflowId,\n        stepId: ctx.stepId,\n        stepIndex: -1,\n        gardenName: ctx.gardenName,\n        gardenPath: gardenPath(ctx),\n        flowerPath: \"\",\n      },\n    };\n  }\n\n  await mkdir(gardenPath(ctx), { recursive: true });\n  await writeFile(gardenStatePath(ctx), `${JSON.stringify(sortState(state), null, 2)}\\n`, \"utf8\");\n}\n\nfunction readString(state: GardenStateFile, key: string): string | undefined {\n  const value = state.values[key]?.value;\n  return typeof value === \"string\" ? value : undefined;\n}\n\nfunction readNumber(state: GardenStateFile, key: string): number {\n  const value = state.values[key]?.value;\n  return typeof value === \"number\" && Number.isFinite(value) ? value : 0;\n}\n\nfunction readObject<T extends object>(state: GardenStateFile, key: string): T | undefined {\n  const value = state.values[key]?.value;\n  return value && typeof value === \"object\" && !Array.isArray(value) ? (value as T) : undefined;\n}\n\nfunction readReviewState(state: GardenStateFile, key: string): ReviewState {\n  const review = readObject<ReviewValue>(state, key);\n  const flatScoreEntry = state.values[`${key}.score`];\n  const flatSummaryEntry = state.values[`${key}.summary`];\n  const flatRequiredImprovementsEntry = state.values[`${key}.requiredImprovements`];\n  const diagnostics: string[] = [];\n\n  if (review) {\n    const score = readReviewScore(review.score);\n    if (score !== undefined) return { review, score, diagnostics };\n    diagnostics.push(`${key} exists, but ${key}.score is ${describeValue(review.score)}.`);\n  } else if (state.values[key]) {\n    const baseValue = state.values[key]?.value;\n    const score = readReviewScore(baseValue);\n    if (score !== undefined) {\n      return {\n        review: { score, summary: typeof baseValue === \"string\" ? baseValue : undefined },\n        score,\n        diagnostics: [\n          `${key} contains a parseable score, but it is ${describeValue(baseValue)} instead of an object. The reviewer should save a structured ${key} object next time.`,\n        ],\n      };\n    }\n    diagnostics.push(`${key} exists, but it is ${describeValue(baseValue)} instead of an object.`);\n  } else {\n    diagnostics.push(`${key} is not set.`);\n  }\n\n  const flatScore = readReviewScore(flatScoreEntry?.value);\n  if (flatScore !== undefined) {\n    return {\n      review: {\n        score: flatScore,\n        summary: flatSummaryEntry?.value,\n        requiredImprovements: flatRequiredImprovementsEntry?.value,\n      },\n      score: flatScore,\n      diagnostics: [\n        ...diagnostics,\n        `Recovered score from flat garden state key ${key}.score. The reviewer should save a single ${key} object next time.`,\n      ],\n    };\n  }\n\n  if (flatScoreEntry)\n    diagnostics.push(`${key}.score exists, but it is ${describeValue(flatScoreEntry.value)}.`);\n  return { review, diagnostics };\n}\n\nfunction readReviewScore(value: unknown): number | undefined {\n  if (typeof value === \"number\" && Number.isInteger(value) && value >= 1 && value <= 5)\n    return value;\n  if (typeof value !== \"string\") return undefined;\n\n  const trimmed = value.trim();\n  const match = /^(?:score\\s*[:=]\\s*)?([1-5])(?:\\s*\\/\\s*5)?(?:$|\\b|\\s|—|-)/i.exec(trimmed);\n  if (!match) return undefined;\n\n  const score = Number(match[1]);\n  return Number.isInteger(score) && score >= 1 && score <= 5 ? score : undefined;\n}\n\nfunction invalidReviewPrompt(key: string, reviewState: ReviewState): string {\n  return [\n    `${key}.score is missing or invalid. The reviewer must save a ${key} object with a numeric integer score from 1-5 in garden state.`,\n    ...reviewState.diagnostics,\n  ].join(\"\\n\");\n}\n\nfunction describeValue(value: unknown): string {\n  if (value === undefined) return \"undefined\";\n  if (value === null) return \"null\";\n  if (Array.isArray(value)) return \"an array\";\n  if (typeof value === \"object\") return \"an object\";\n  return `${typeof value} ${JSON.stringify(value)}`;\n}\n\nfunction reviewSummary(review: ReviewValue | undefined): string {\n  if (!review) return \"\";\n  const lines: string[] = [];\n  if (typeof review.summary === \"string\" && review.summary.trim()) {\n    lines.push(`Reviewer summary: ${review.summary.trim()}`);\n  }\n  if (Array.isArray(review.requiredImprovements) && review.requiredImprovements.length) {\n    lines.push(\"Required improvements:\");\n    for (const item of review.requiredImprovements) lines.push(`- ${String(item)}`);\n  }\n  return lines.join(\"\\n\");\n}\n\nfunction normalizeStory(story: StoryValue): JsonValue {\n  return {\n    id: typeof story.id === \"string\" ? story.id : \"\",\n    title: typeof story.title === \"string\" ? story.title : \"\",\n    path: typeof story.path === \"string\" ? story.path : \"\",\n    dependencies: Array.isArray(story.dependencies)\n      ? story.dependencies.map((dependency) => String(dependency))\n      : [],\n    status: typeof story.status === \"string\" ? story.status : \"ready\",\n  };\n}\n\nfunction sortState(state: GardenStateFile): GardenStateFile {\n  const sorted: GardenStateFile = { version: 1, values: {} };\n  for (const key of Object.keys(state.values).sort()) sorted.values[key] = state.values[key];\n  return sorted;\n}\n\nfunction gardenPath(ctx: WorkflowerCommandContext): string {\n  return join(ctx.cwd, \".workflower\", \"workflows\", ctx.gardenName);\n}\n\nfunction gardenStatePath(ctx: WorkflowerCommandContext): string {\n  return join(gardenPath(ctx), \"state.json\");\n}\n"],"mappings":"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","names":[]}