opencode-plugin-flow 4.0.1 → 4.1.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.
- package/CHANGELOG.md +7 -1
- package/README.md +25 -4
- package/dist/cli.js +3 -3
- package/dist/index.js +375 -75
- package/dist/index.js.map +5 -5
- package/package.json +1 -1
package/dist/index.js.map
CHANGED
|
@@ -3,11 +3,11 @@
|
|
|
3
3
|
"sources": ["../src/distribution/sync.ts", "../src/distribution/flow-skill-definitions.ts", "../src/runtime/workspace.ts", "../src/runtime/json/strict-object.ts", "../src/runtime/schema.ts", "../src/config-shared.ts", "../src/adapters/opencode/config.ts", "../src/adapters/opencode/logging.ts", "../src/runtime/api.ts", "../src/runtime/transitions.ts", "../src/runtime/time.ts", "../src/adapters/opencode/sdk.ts", "../src/adapters/opencode/tools.ts", "../src/adapters/opencode/plugin.ts"],
|
|
4
4
|
"sourcesContent": [
|
|
5
5
|
"import { createHash } from \"node:crypto\";\nimport { mkdir, readdir, readFile, rm, writeFile } from \"node:fs/promises\";\nimport { createRequire } from \"node:module\";\nimport { dirname, join, normalize, sep } from \"node:path\";\nimport {\n\tFLOW_SKILL_DEFINITIONS,\n\ttype FlowSkillDefinition,\n} from \"./flow-skill-definitions\";\n\nconst MARKER_FILENAME = \".flow-skill-version\";\n\ntype FlowLog = (level: \"info\" | \"warn\" | \"error\", message: string) => void;\n\nfunction homeDir(): string {\n\treturn process.env.HOME ?? process.env.USERPROFILE ?? \"\";\n}\n\nfunction skillsRoot(home = homeDir()): string {\n\treturn join(home, \".config\", \"opencode\", \"skills\");\n}\n\nfunction sha256(value: string): string {\n\treturn createHash(\"sha256\").update(value).digest(\"hex\");\n}\n\nfunction markerFor(definition: FlowSkillDefinition, version: string): string {\n\treturn [\n\t\t`version=${version}`,\n\t\t...definition.files.map(\n\t\t\t(file) => `file=${file.relativePath} sha256=${sha256(file.content)}`,\n\t\t),\n\t\t\"\",\n\t].join(\"\\n\");\n}\n\nasync function optionalRead(path: string): Promise<string | null> {\n\ttry {\n\t\treturn await readFile(path, \"utf8\");\n\t} catch (error) {\n\t\tif ((error as NodeJS.ErrnoException).code === \"ENOENT\") return null;\n\t\tthrow error;\n\t}\n}\n\nfunction parseMarkerFiles(content: string | null): Map<string, string> {\n\tconst files = new Map<string, string>();\n\tif (!content) return files;\n\tfor (const line of content.split(/\\r?\\n/)) {\n\t\tconst match =\n\t\t\t/^file=(.+) sha256=([a-f0-9]{64})$/.exec(line) ??\n\t\t\t/^file=(.+)=sha256:([a-f0-9]{64})$/.exec(line);\n\t\tif (match?.[1] && match[2]) files.set(match[1], match[2]);\n\t\tconst topLevelHash = /^hash=sha256:([a-f0-9]{64})$/.exec(line);\n\t\tif (topLevelHash?.[1] && !files.has(\"SKILL.md\")) {\n\t\t\tfiles.set(\"SKILL.md\", topLevelHash[1]);\n\t\t}\n\t}\n\treturn files;\n}\n\nfunction resolveSkillFile(folder: string, relativePath: string): string {\n\tconst resolved = normalize(join(folder, ...relativePath.split(\"/\")));\n\tif (resolved !== folder && resolved.startsWith(`${folder}${sep}`)) {\n\t\treturn resolved;\n\t}\n\tthrow new Error(`Unsafe skill file path '${relativePath}'.`);\n}\n\nasync function syncSkill(\n\tdefinition: FlowSkillDefinition,\n\tversion: string,\n\troot: string,\n) {\n\tconst folder = join(root, definition.name);\n\tconst markerPath = join(folder, MARKER_FILENAME);\n\tconst markerContent = await optionalRead(markerPath);\n\tconst existingMarkerHashes = parseMarkerFiles(markerContent);\n\tconst existingSkill = await optionalRead(join(folder, \"SKILL.md\"));\n\tif (existingSkill !== null && markerContent === null) {\n\t\treturn { name: definition.name, action: \"skipped_foreign\" as const };\n\t}\n\n\tlet changed = false;\n\tlet backedUp = false;\n\tfor (const file of definition.files) {\n\t\tconst path = resolveSkillFile(folder, file.relativePath);\n\t\tconst existing = await optionalRead(path);\n\t\tif (existing === file.content) continue;\n\t\tchanged = true;\n\t\tconst recordedHash = existingMarkerHashes.get(file.relativePath);\n\t\tconst userEdited =\n\t\t\texisting !== null &&\n\t\t\t(recordedHash\n\t\t\t\t? sha256(existing) !== recordedHash\n\t\t\t\t: markerContent !== null);\n\t\tif (userEdited) {\n\t\t\tawait writeFile(`${path}.backup`, existing, \"utf8\");\n\t\t\tbackedUp = true;\n\t\t}\n\t}\n\n\tif (!changed && markerContent === markerFor(definition, version)) {\n\t\treturn { name: definition.name, action: \"unchanged\" as const };\n\t}\n\n\tconst managedSkillExists = markerContent !== null;\n\tfor (const file of definition.files) {\n\t\tconst path = resolveSkillFile(folder, file.relativePath);\n\t\tawait mkdir(dirname(path), { recursive: true });\n\t\tawait writeFile(path, file.content, \"utf8\");\n\t}\n\tawait writeFile(markerPath, markerFor(definition, version), \"utf8\");\n\treturn {\n\t\tname: definition.name,\n\t\taction: backedUp\n\t\t\t? (\"updated_with_backup\" as const)\n\t\t\t: managedSkillExists\n\t\t\t\t? (\"updated\" as const)\n\t\t\t\t: (\"installed\" as const),\n\t};\n}\n\nexport function resolveFlowPluginVersion(): string {\n\tif (process.env.npm_package_version) return process.env.npm_package_version;\n\ttry {\n\t\tconst require = createRequire(import.meta.url);\n\t\tfor (const path of [\"../package.json\", \"../../package.json\"]) {\n\t\t\ttry {\n\t\t\t\tconst manifest = require(path) as { version?: string };\n\t\t\t\tif (manifest.version) return manifest.version;\n\t\t\t} catch {\n\t\t\t\t// Try the next layout: source tree and bundled dist differ.\n\t\t\t}\n\t\t}\n\t} catch {\n\t\t// Fall through to sentinel.\n\t}\n\treturn \"0.0.0\";\n}\n\nexport async function syncFlowSkills(version: string, home = homeDir()) {\n\tconst root = skillsRoot(home);\n\treturn Promise.all(\n\t\tFLOW_SKILL_DEFINITIONS.map((definition) =>\n\t\t\tsyncSkill(definition, version, root),\n\t\t),\n\t);\n}\n\nexport async function runFlowSkillSync(\n\tversion: string,\n\tlog: FlowLog,\n): Promise<void> {\n\ttry {\n\t\tconst results = await syncFlowSkills(version);\n\t\tconst changed = results.filter(\n\t\t\t(result) =>\n\t\t\t\tresult.action !== \"unchanged\" && result.action !== \"skipped_foreign\",\n\t\t);\n\t\tif (changed.length > 0) {\n\t\t\tlog(\n\t\t\t\t\"info\",\n\t\t\t\t`Flow synced skills (${changed.map((item) => `${item.name}:${item.action}`).join(\", \")}). Restart OpenCode if skills were just installed.`,\n\t\t\t);\n\t\t}\n\t} catch (error) {\n\t\tlog(\n\t\t\t\"warn\",\n\t\t\t`Flow skill sync failed: ${error instanceof Error ? error.message : String(error)}`,\n\t\t);\n\t}\n}\n\nexport async function uninstallFlowSkills(home = homeDir()) {\n\tconst root = skillsRoot(home);\n\tconst removed: string[] = [];\n\tconst kept: string[] = [];\n\tlet entries: string[];\n\ttry {\n\t\tentries = await readdir(root);\n\t} catch (error) {\n\t\tif ((error as NodeJS.ErrnoException).code === \"ENOENT\") {\n\t\t\treturn { removed, kept };\n\t\t}\n\t\tthrow error;\n\t}\n\tfor (const name of entries) {\n\t\tif (name !== \"flow\" && !name.startsWith(\"flow-\")) continue;\n\t\tconst folder = join(root, name);\n\t\tconst markerContent = await optionalRead(join(folder, MARKER_FILENAME));\n\t\tif (markerContent === null) {\n\t\t\tkept.push(folder);\n\t\t\tcontinue;\n\t\t}\n\t\tconst hashes = parseMarkerFiles(markerContent);\n\t\tlet userEdited = false;\n\t\tfor (const [relativePath, recordedHash] of hashes) {\n\t\t\tconst content = await optionalRead(\n\t\t\t\tresolveSkillFile(folder, relativePath),\n\t\t\t);\n\t\t\tif (content !== null && sha256(content) !== recordedHash) {\n\t\t\t\tuserEdited = true;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t\tif (userEdited) {\n\t\t\tkept.push(folder);\n\t\t\tcontinue;\n\t\t}\n\t\tawait rm(folder, { recursive: true, force: true });\n\t\tremoved.push(folder);\n\t}\n\treturn { removed, kept };\n}\n",
|
|
6
|
-
"import flowParallelOrchestrationDoc from \"../../skills/flow/references/parallel-orchestration.md\" with {\n\ttype: \"text\",\n};\nimport flowRecoveryPlaybookDoc from \"../../skills/flow/references/recovery-playbook.md\" with {\n\ttype: \"text\",\n};\nimport flowSkillDoc from \"../../skills/flow/SKILL.md\" with { type: \"text\" };\nimport flowDeslopRefactorWorkflowDoc from \"../../skills/flow-deslop/references/refactor-workflow.md\" with {\n\ttype: \"text\",\n};\nimport flowDeslopSmellRubricDoc from \"../../skills/flow-deslop/references/smell-rubric.md\" with {\n\ttype: \"text\",\n};\nimport flowDeslopSkillDoc from \"../../skills/flow-deslop/SKILL.md\" with {\n\ttype: \"text\",\n};\nimport flowPlanParallelDiscoveryDoc from \"../../skills/flow-plan/references/parallel-discovery.md\" with {\n\ttype: \"text\",\n};\nimport flowPlanPlanningExamplesDoc from \"../../skills/flow-plan/references/planning-examples.md\" with {\n\ttype: \"text\",\n};\nimport flowPlanSkillDoc from \"../../skills/flow-plan/SKILL.md\" with {\n\ttype: \"text\",\n};\nimport flowReviewReviewRubricDoc from \"../../skills/flow-review/references/review-rubric.md\" with {\n\ttype: \"text\",\n};\nimport flowReviewSkillDoc from \"../../skills/flow-review/SKILL.md\" with {\n\ttype: \"text\",\n};\nimport flowRunAuditRubricDoc from \"../../skills/flow-run/references/audit-rubric.md\" with {\n\ttype: \"text\",\n};\nimport flowRunValidationRubricDoc from \"../../skills/flow-run/references/validation-rubric.md\" with {\n\ttype: \"text\",\n};\nimport flowRunSkillDoc from \"../../skills/flow-run/SKILL.md\" with {\n\ttype: \"text\",\n};\nimport flowUiQualityUiRubricDoc from \"../../skills/flow-ui-quality/references/ui-rubric.md\" with {\n\ttype: \"text\",\n};\nimport flowUiQualityVisualVerificationDoc from \"../../skills/flow-ui-quality/references/visual-verification.md\" with {\n\ttype: \"text\",\n};\nimport flowUiQualitySkillDoc from \"../../skills/flow-ui-quality/SKILL.md\" with {\n\ttype: \"text\",\n};\n\nexport type FlowSkillFile = {\n\trelativePath: string;\n\tcontent: string;\n};\n\nexport type FlowSkillDefinition = {\n\tname: string;\n\tfiles: FlowSkillFile[];\n};\n\nexport const FLOW_SKILL_DEFINITIONS: readonly FlowSkillDefinition[] = [\n\t{\n\t\tname: \"flow\",\n\t\tfiles: [\n\t\t\t{ relativePath: \"SKILL.md\", content: flowSkillDoc },\n\t\t\t{\n\t\t\t\trelativePath: \"references/recovery-playbook.md\",\n\t\t\t\tcontent: flowRecoveryPlaybookDoc,\n\t\t\t},\n\t\t\t{\n\t\t\t\trelativePath: \"references/parallel-orchestration.md\",\n\t\t\t\tcontent: flowParallelOrchestrationDoc,\n\t\t\t},\n\t\t],\n\t},\n\t{\n\t\tname: \"flow-plan\",\n\t\tfiles: [\n\t\t\t{ relativePath: \"SKILL.md\", content: flowPlanSkillDoc },\n\t\t\t{\n\t\t\t\trelativePath: \"references/planning-examples.md\",\n\t\t\t\tcontent: flowPlanPlanningExamplesDoc,\n\t\t\t},\n\t\t\t{\n\t\t\t\trelativePath: \"references/parallel-discovery.md\",\n\t\t\t\tcontent: flowPlanParallelDiscoveryDoc,\n\t\t\t},\n\t\t],\n\t},\n\t{\n\t\tname: \"flow-run\",\n\t\tfiles: [\n\t\t\t{ relativePath: \"SKILL.md\", content: flowRunSkillDoc },\n\t\t\t{\n\t\t\t\trelativePath: \"references/validation-rubric.md\",\n\t\t\t\tcontent: flowRunValidationRubricDoc,\n\t\t\t},\n\t\t\t{\n\t\t\t\trelativePath: \"references/audit-rubric.md\",\n\t\t\t\tcontent: flowRunAuditRubricDoc,\n\t\t\t},\n\t\t],\n\t},\n\t{\n\t\tname: \"flow-review\",\n\t\tfiles: [\n\t\t\t{ relativePath: \"SKILL.md\", content: flowReviewSkillDoc },\n\t\t\t{\n\t\t\t\trelativePath: \"references/review-rubric.md\",\n\t\t\t\tcontent: flowReviewReviewRubricDoc,\n\t\t\t},\n\t\t],\n\t},\n\t{\n\t\tname: \"flow-deslop\",\n\t\tfiles: [\n\t\t\t{ relativePath: \"SKILL.md\", content: flowDeslopSkillDoc },\n\t\t\t{\n\t\t\t\trelativePath: \"references/smell-rubric.md\",\n\t\t\t\tcontent: flowDeslopSmellRubricDoc,\n\t\t\t},\n\t\t\t{\n\t\t\t\trelativePath: \"references/refactor-workflow.md\",\n\t\t\t\tcontent: flowDeslopRefactorWorkflowDoc,\n\t\t\t},\n\t\t],\n\t},\n\t{\n\t\tname: \"flow-ui-quality\",\n\t\tfiles: [\n\t\t\t{ relativePath: \"SKILL.md\", content: flowUiQualitySkillDoc },\n\t\t\t{\n\t\t\t\trelativePath: \"references/ui-rubric.md\",\n\t\t\t\tcontent: flowUiQualityUiRubricDoc,\n\t\t\t},\n\t\t\t{\n\t\t\t\trelativePath: \"references/visual-verification.md\",\n\t\t\t\tcontent: flowUiQualityVisualVerificationDoc,\n\t\t\t},\n\t\t],\n\t},\n];\n",
|
|
7
|
-
"import { randomUUID } from \"node:crypto\";\nimport { mkdir, open, readFile, rename, rm, writeFile } from \"node:fs/promises\";\nimport { homedir } from \"node:os\";\nimport { dirname, isAbsolute, join, parse, resolve } from \"node:path\";\nimport { setTimeout as sleep } from \"node:timers/promises\";\nimport { parseStrictJsonObject } from \"./json/strict-object\";\nimport { type Session, SessionSchema } from \"./schema\";\n\nexport class InvalidFlowWorkspaceRootError extends Error {\n\treadonly code = \"INVALID_FLOW_WORKSPACE_ROOT\";\n\tconstructor(message: string) {\n\t\tsuper(message);\n\t\tthis.name = \"InvalidFlowWorkspaceRootError\";\n\t}\n}\n\nexport function normalizeWorkspaceRoot(\n\trawPath: string | undefined,\n): string | null {\n\tconst value = rawPath?.trim();\n\tif (!value) return null;\n\tconst normalized = resolve(value);\n\treturn parse(normalized).root === normalized ? null : normalized;\n}\n\nexport function assertMutableWorkspaceRoot(rawPath: string): string {\n\tconst root = normalizeWorkspaceRoot(rawPath);\n\tif (!root) {\n\t\tthrow new InvalidFlowWorkspaceRootError(\n\t\t\t\"Flow requires a non-root workspace path.\",\n\t\t);\n\t}\n\tif (root === resolve(process.env.HOME ?? homedir())) {\n\t\tthrow new InvalidFlowWorkspaceRootError(\n\t\t\t\"Flow refuses to use $HOME itself as a mutable workspace root.\",\n\t\t);\n\t}\n\treturn root;\n}\n\nexport function resolveWorkspaceRoot(context: {\n\tworktree?: string;\n\tdirectory?: string;\n}): string {\n\tconst candidate =\n\t\tnormalizeWorkspaceRoot(context.worktree) ??\n\t\tnormalizeWorkspaceRoot(context.directory);\n\tif (!candidate) {\n\t\tthrow new InvalidFlowWorkspaceRootError(\n\t\t\t\"Flow could not resolve a workspace root from tool context.\",\n\t\t);\n\t}\n\treturn assertMutableWorkspaceRoot(candidate);\n}\n\nexport function flowDir(worktree: string): string {\n\treturn join(worktree, \".flow\");\n}\n\nexport function sessionPath(worktree: string): string {\n\treturn join(flowDir(worktree), \"session.json\");\n}\n\nexport function historyDir(worktree: string): string {\n\treturn join(flowDir(worktree), \"history\");\n}\n\nexport function archivedSessionPath(\n\tworktree: string,\n\tsessionId: string,\n): string {\n\tif (!/^[a-zA-Z0-9_-]+$/.test(sessionId)) {\n\t\tthrow new Error(\"Invalid session id.\");\n\t}\n\treturn join(historyDir(worktree), `${sessionId}.json`);\n}\n\nasync function writeFileAtomically(\n\tpath: string,\n\tcontents: string,\n): Promise<void> {\n\tawait mkdir(dirname(path), { recursive: true });\n\tconst tempPath = `${path}.${process.pid}.${randomUUID()}.tmp`;\n\tconst handle = await open(tempPath, \"w\");\n\ttry {\n\t\tawait handle.writeFile(contents, \"utf8\");\n\t\tawait handle.sync();\n\t} catch (error) {\n\t\tawait handle.close();\n\t\tawait rm(tempPath, { force: true });\n\t\tthrow error;\n\t}\n\tawait handle.close();\n\ttry {\n\t\tawait rename(tempPath, path);\n\t} catch (error) {\n\t\tawait rm(tempPath, { force: true });\n\t\tthrow error;\n\t}\n\tconst directory = await open(dirname(path), \"r\");\n\ttry {\n\t\tawait directory.sync();\n\t} finally {\n\t\tawait directory.close();\n\t}\n}\n\nconst inProcessLocks = new Map<string, Promise<void>>();\nconst LOCK_TIMEOUT_MS = 30_000;\nconst LOCK_RETRY_MS = 25;\n\nasync function acquireLock(worktree: string): Promise<() => Promise<void>> {\n\tconst root = flowDir(worktree);\n\tconst lock = join(root, \"session.lock\");\n\tconst startedAt = Date.now();\n\twhile (true) {\n\t\ttry {\n\t\t\tawait mkdir(lock, { recursive: false });\n\t\t\treturn async () => {\n\t\t\t\tawait rm(lock, { recursive: true, force: true });\n\t\t\t};\n\t\t} catch (error) {\n\t\t\tconst code = (error as NodeJS.ErrnoException).code;\n\t\t\tif (code === \"ENOENT\") {\n\t\t\t\tawait mkdir(root, { recursive: true });\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tif (code !== \"EEXIST\") throw error;\n\t\t\tif (Date.now() - startedAt > LOCK_TIMEOUT_MS) {\n\t\t\t\tthrow new Error(`Timed out waiting for Flow session lock at ${lock}.`);\n\t\t\t}\n\t\t\tawait sleep(LOCK_RETRY_MS);\n\t\t}\n\t}\n}\n\nexport async function withSessionLock<T>(\n\tworktree: string,\n\ttask: () => Promise<T>,\n): Promise<T> {\n\tconst previous = inProcessLocks.get(worktree) ?? Promise.resolve();\n\tlet releaseQueue = () => {};\n\tconst current = new Promise<void>((resolve) => {\n\t\treleaseQueue = resolve;\n\t});\n\tconst queued = previous.catch(() => undefined).then(() => current);\n\tinProcessLocks.set(worktree, queued);\n\n\tlet releaseFileLock: (() => Promise<void>) | null = null;\n\ttry {\n\t\tawait previous.catch(() => undefined);\n\t\treleaseFileLock = await acquireLock(worktree);\n\t\treturn await task();\n\t} finally {\n\t\ttry {\n\t\t\tawait releaseFileLock?.();\n\t\t} finally {\n\t\t\treleaseQueue();\n\t\t\tif (inProcessLocks.get(worktree) === queued) {\n\t\t\t\tinProcessLocks.delete(worktree);\n\t\t\t}\n\t\t}\n\t}\n}\n\nexport async function loadSession(worktree: string): Promise<Session | null> {\n\tconst root = assertMutableWorkspaceRoot(worktree);\n\tlet raw: string;\n\ttry {\n\t\traw = await readFile(sessionPath(root), \"utf8\");\n\t} catch (error) {\n\t\tif ((error as NodeJS.ErrnoException).code === \"ENOENT\") return null;\n\t\tthrow error;\n\t}\n\tconst parsed = parseStrictJsonObject(raw, \"Flow session file\");\n\tif (!parsed.ok) throw new Error(parsed.error);\n\treturn SessionSchema.parse(parsed.value);\n}\n\nexport async function saveSession(\n\tworktree: string,\n\tsession: Session,\n): Promise<Session> {\n\tconst root = assertMutableWorkspaceRoot(worktree);\n\tconst normalized = SessionSchema.parse(session);\n\tawait writeFileAtomically(\n\t\tsessionPath(root),\n\t\t`${JSON.stringify(normalized, null, 2)}\\n`,\n\t);\n\tawait ensureFlowGitignore(root);\n\treturn normalized;\n}\n\nexport async function archiveAndClearSession(\n\tworktree: string,\n\tsession: Session,\n): Promise<void> {\n\tconst root = assertMutableWorkspaceRoot(worktree);\n\tawait mkdir(historyDir(root), { recursive: true });\n\tawait writeFileAtomically(\n\t\tarchivedSessionPath(root, session.id),\n\t\t`${JSON.stringify(SessionSchema.parse(session), null, 2)}\\n`,\n\t);\n\tawait rm(sessionPath(root), { force: true });\n\tawait ensureFlowGitignore(root);\n}\n\nasync function ensureFlowGitignore(worktree: string): Promise<void> {\n\tconst path = join(flowDir(worktree), \".gitignore\");\n\ttry {\n\t\tconst existing = await readFile(path, \"utf8\");\n\t\tif (existing.
|
|
6
|
+
"import flowHandoffFormatDoc from \"../../skills/flow/references/handoff-format.md\" with {\n\ttype: \"text\",\n};\nimport flowParallelOrchestrationDoc from \"../../skills/flow/references/parallel-orchestration.md\" with {\n\ttype: \"text\",\n};\nimport flowRecoveryPlaybookDoc from \"../../skills/flow/references/recovery-playbook.md\" with {\n\ttype: \"text\",\n};\nimport flowVerificationGatesDoc from \"../../skills/flow/references/verification-gates.md\" with {\n\ttype: \"text\",\n};\nimport flowSkillDoc from \"../../skills/flow/SKILL.md\" with { type: \"text\" };\nimport flowDeslopRefactorWorkflowDoc from \"../../skills/flow-deslop/references/refactor-workflow.md\" with {\n\ttype: \"text\",\n};\nimport flowDeslopSmellRubricDoc from \"../../skills/flow-deslop/references/smell-rubric.md\" with {\n\ttype: \"text\",\n};\nimport flowDeslopSkillDoc from \"../../skills/flow-deslop/SKILL.md\" with {\n\ttype: \"text\",\n};\nimport flowPlanParallelDiscoveryDoc from \"../../skills/flow-plan/references/parallel-discovery.md\" with {\n\ttype: \"text\",\n};\nimport flowPlanPlanningExamplesDoc from \"../../skills/flow-plan/references/planning-examples.md\" with {\n\ttype: \"text\",\n};\nimport flowPlanSkillDoc from \"../../skills/flow-plan/SKILL.md\" with {\n\ttype: \"text\",\n};\nimport flowReviewReviewRubricDoc from \"../../skills/flow-review/references/review-rubric.md\" with {\n\ttype: \"text\",\n};\nimport flowReviewSkillDoc from \"../../skills/flow-review/SKILL.md\" with {\n\ttype: \"text\",\n};\nimport flowRunAuditRubricDoc from \"../../skills/flow-run/references/audit-rubric.md\" with {\n\ttype: \"text\",\n};\nimport flowRunValidationRubricDoc from \"../../skills/flow-run/references/validation-rubric.md\" with {\n\ttype: \"text\",\n};\nimport flowRunSkillDoc from \"../../skills/flow-run/SKILL.md\" with {\n\ttype: \"text\",\n};\nimport flowUiQualityUiRubricDoc from \"../../skills/flow-ui-quality/references/ui-rubric.md\" with {\n\ttype: \"text\",\n};\nimport flowUiQualityVisualVerificationDoc from \"../../skills/flow-ui-quality/references/visual-verification.md\" with {\n\ttype: \"text\",\n};\nimport flowUiQualitySkillDoc from \"../../skills/flow-ui-quality/SKILL.md\" with {\n\ttype: \"text\",\n};\n\nexport type FlowSkillFile = {\n\trelativePath: string;\n\tcontent: string;\n};\n\nexport type FlowSkillDefinition = {\n\tname: string;\n\tfiles: FlowSkillFile[];\n};\n\nexport const FLOW_SKILL_DEFINITIONS: readonly FlowSkillDefinition[] = [\n\t{\n\t\tname: \"flow\",\n\t\tfiles: [\n\t\t\t{ relativePath: \"SKILL.md\", content: flowSkillDoc },\n\t\t\t{\n\t\t\t\trelativePath: \"references/recovery-playbook.md\",\n\t\t\t\tcontent: flowRecoveryPlaybookDoc,\n\t\t\t},\n\t\t\t{\n\t\t\t\trelativePath: \"references/parallel-orchestration.md\",\n\t\t\t\tcontent: flowParallelOrchestrationDoc,\n\t\t\t},\n\t\t\t{\n\t\t\t\trelativePath: \"references/handoff-format.md\",\n\t\t\t\tcontent: flowHandoffFormatDoc,\n\t\t\t},\n\t\t\t{\n\t\t\t\trelativePath: \"references/verification-gates.md\",\n\t\t\t\tcontent: flowVerificationGatesDoc,\n\t\t\t},\n\t\t],\n\t},\n\t{\n\t\tname: \"flow-plan\",\n\t\tfiles: [\n\t\t\t{ relativePath: \"SKILL.md\", content: flowPlanSkillDoc },\n\t\t\t{\n\t\t\t\trelativePath: \"references/planning-examples.md\",\n\t\t\t\tcontent: flowPlanPlanningExamplesDoc,\n\t\t\t},\n\t\t\t{\n\t\t\t\trelativePath: \"references/parallel-discovery.md\",\n\t\t\t\tcontent: flowPlanParallelDiscoveryDoc,\n\t\t\t},\n\t\t],\n\t},\n\t{\n\t\tname: \"flow-run\",\n\t\tfiles: [\n\t\t\t{ relativePath: \"SKILL.md\", content: flowRunSkillDoc },\n\t\t\t{\n\t\t\t\trelativePath: \"references/validation-rubric.md\",\n\t\t\t\tcontent: flowRunValidationRubricDoc,\n\t\t\t},\n\t\t\t{\n\t\t\t\trelativePath: \"references/audit-rubric.md\",\n\t\t\t\tcontent: flowRunAuditRubricDoc,\n\t\t\t},\n\t\t],\n\t},\n\t{\n\t\tname: \"flow-review\",\n\t\tfiles: [\n\t\t\t{ relativePath: \"SKILL.md\", content: flowReviewSkillDoc },\n\t\t\t{\n\t\t\t\trelativePath: \"references/review-rubric.md\",\n\t\t\t\tcontent: flowReviewReviewRubricDoc,\n\t\t\t},\n\t\t],\n\t},\n\t{\n\t\tname: \"flow-deslop\",\n\t\tfiles: [\n\t\t\t{ relativePath: \"SKILL.md\", content: flowDeslopSkillDoc },\n\t\t\t{\n\t\t\t\trelativePath: \"references/smell-rubric.md\",\n\t\t\t\tcontent: flowDeslopSmellRubricDoc,\n\t\t\t},\n\t\t\t{\n\t\t\t\trelativePath: \"references/refactor-workflow.md\",\n\t\t\t\tcontent: flowDeslopRefactorWorkflowDoc,\n\t\t\t},\n\t\t],\n\t},\n\t{\n\t\tname: \"flow-ui-quality\",\n\t\tfiles: [\n\t\t\t{ relativePath: \"SKILL.md\", content: flowUiQualitySkillDoc },\n\t\t\t{\n\t\t\t\trelativePath: \"references/ui-rubric.md\",\n\t\t\t\tcontent: flowUiQualityUiRubricDoc,\n\t\t\t},\n\t\t\t{\n\t\t\t\trelativePath: \"references/visual-verification.md\",\n\t\t\t\tcontent: flowUiQualityVisualVerificationDoc,\n\t\t\t},\n\t\t],\n\t},\n];\n",
|
|
7
|
+
"import { randomUUID } from \"node:crypto\";\nimport { mkdir, open, readFile, rename, rm, writeFile } from \"node:fs/promises\";\nimport { homedir } from \"node:os\";\nimport { dirname, isAbsolute, join, parse, resolve } from \"node:path\";\nimport { setTimeout as sleep } from \"node:timers/promises\";\nimport { parseStrictJsonObject } from \"./json/strict-object\";\nimport { type Session, SessionSchema } from \"./schema\";\n\nexport class InvalidFlowWorkspaceRootError extends Error {\n\treadonly code = \"INVALID_FLOW_WORKSPACE_ROOT\";\n\tconstructor(message: string) {\n\t\tsuper(message);\n\t\tthis.name = \"InvalidFlowWorkspaceRootError\";\n\t}\n}\n\nexport function normalizeWorkspaceRoot(\n\trawPath: string | undefined,\n): string | null {\n\tconst value = rawPath?.trim();\n\tif (!value) return null;\n\tconst normalized = resolve(value);\n\treturn parse(normalized).root === normalized ? null : normalized;\n}\n\nexport function assertMutableWorkspaceRoot(rawPath: string): string {\n\tconst root = normalizeWorkspaceRoot(rawPath);\n\tif (!root) {\n\t\tthrow new InvalidFlowWorkspaceRootError(\n\t\t\t\"Flow requires a non-root workspace path.\",\n\t\t);\n\t}\n\tif (root === resolve(process.env.HOME ?? homedir())) {\n\t\tthrow new InvalidFlowWorkspaceRootError(\n\t\t\t\"Flow refuses to use $HOME itself as a mutable workspace root.\",\n\t\t);\n\t}\n\treturn root;\n}\n\nexport function resolveWorkspaceRoot(context: {\n\tworktree?: string;\n\tdirectory?: string;\n}): string {\n\tconst candidate =\n\t\tnormalizeWorkspaceRoot(context.worktree) ??\n\t\tnormalizeWorkspaceRoot(context.directory);\n\tif (!candidate) {\n\t\tthrow new InvalidFlowWorkspaceRootError(\n\t\t\t\"Flow could not resolve a workspace root from tool context.\",\n\t\t);\n\t}\n\treturn assertMutableWorkspaceRoot(candidate);\n}\n\nexport function flowDir(worktree: string): string {\n\treturn join(worktree, \".flow\");\n}\n\nexport function sessionPath(worktree: string): string {\n\treturn join(flowDir(worktree), \"session.json\");\n}\n\nexport function historyDir(worktree: string): string {\n\treturn join(flowDir(worktree), \"history\");\n}\n\nexport function archivedSessionPath(\n\tworktree: string,\n\tsessionId: string,\n): string {\n\tif (!/^[a-zA-Z0-9_-]+$/.test(sessionId)) {\n\t\tthrow new Error(\"Invalid session id.\");\n\t}\n\treturn join(historyDir(worktree), `${sessionId}.json`);\n}\n\nasync function writeFileAtomically(\n\tpath: string,\n\tcontents: string,\n): Promise<void> {\n\tawait mkdir(dirname(path), { recursive: true });\n\tconst tempPath = `${path}.${process.pid}.${randomUUID()}.tmp`;\n\tconst handle = await open(tempPath, \"w\");\n\ttry {\n\t\tawait handle.writeFile(contents, \"utf8\");\n\t\tawait handle.sync();\n\t} catch (error) {\n\t\tawait handle.close();\n\t\tawait rm(tempPath, { force: true });\n\t\tthrow error;\n\t}\n\tawait handle.close();\n\ttry {\n\t\tawait rename(tempPath, path);\n\t} catch (error) {\n\t\tawait rm(tempPath, { force: true });\n\t\tthrow error;\n\t}\n\tconst directory = await open(dirname(path), \"r\");\n\ttry {\n\t\tawait directory.sync();\n\t} finally {\n\t\tawait directory.close();\n\t}\n}\n\nconst inProcessLocks = new Map<string, Promise<void>>();\nconst LOCK_TIMEOUT_MS = 30_000;\nconst LOCK_RETRY_MS = 25;\n\nasync function acquireLock(worktree: string): Promise<() => Promise<void>> {\n\tconst root = flowDir(worktree);\n\tconst lock = join(root, \"session.lock\");\n\tconst startedAt = Date.now();\n\twhile (true) {\n\t\ttry {\n\t\t\tawait mkdir(lock, { recursive: false });\n\t\t\treturn async () => {\n\t\t\t\tawait rm(lock, { recursive: true, force: true });\n\t\t\t};\n\t\t} catch (error) {\n\t\t\tconst code = (error as NodeJS.ErrnoException).code;\n\t\t\tif (code === \"ENOENT\") {\n\t\t\t\tawait mkdir(root, { recursive: true });\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tif (code !== \"EEXIST\") throw error;\n\t\t\tif (Date.now() - startedAt > LOCK_TIMEOUT_MS) {\n\t\t\t\tthrow new Error(`Timed out waiting for Flow session lock at ${lock}.`);\n\t\t\t}\n\t\t\tawait sleep(LOCK_RETRY_MS);\n\t\t}\n\t}\n}\n\nexport async function withSessionLock<T>(\n\tworktree: string,\n\ttask: () => Promise<T>,\n): Promise<T> {\n\tconst previous = inProcessLocks.get(worktree) ?? Promise.resolve();\n\tlet releaseQueue = () => {};\n\tconst current = new Promise<void>((resolve) => {\n\t\treleaseQueue = resolve;\n\t});\n\tconst queued = previous.catch(() => undefined).then(() => current);\n\tinProcessLocks.set(worktree, queued);\n\n\tlet releaseFileLock: (() => Promise<void>) | null = null;\n\ttry {\n\t\tawait previous.catch(() => undefined);\n\t\treleaseFileLock = await acquireLock(worktree);\n\t\treturn await task();\n\t} finally {\n\t\ttry {\n\t\t\tawait releaseFileLock?.();\n\t\t} finally {\n\t\t\treleaseQueue();\n\t\t\tif (inProcessLocks.get(worktree) === queued) {\n\t\t\t\tinProcessLocks.delete(worktree);\n\t\t\t}\n\t\t}\n\t}\n}\n\nexport async function loadSession(worktree: string): Promise<Session | null> {\n\tconst root = assertMutableWorkspaceRoot(worktree);\n\tlet raw: string;\n\ttry {\n\t\traw = await readFile(sessionPath(root), \"utf8\");\n\t} catch (error) {\n\t\tif ((error as NodeJS.ErrnoException).code === \"ENOENT\") return null;\n\t\tthrow error;\n\t}\n\tconst parsed = parseStrictJsonObject(raw, \"Flow session file\");\n\tif (!parsed.ok) throw new Error(parsed.error);\n\treturn SessionSchema.parse(parsed.value);\n}\n\nexport async function saveSession(\n\tworktree: string,\n\tsession: Session,\n): Promise<Session> {\n\tconst root = assertMutableWorkspaceRoot(worktree);\n\tconst normalized = SessionSchema.parse(session);\n\tawait writeFileAtomically(\n\t\tsessionPath(root),\n\t\t`${JSON.stringify(normalized, null, 2)}\\n`,\n\t);\n\tawait ensureFlowGitignore(root);\n\treturn normalized;\n}\n\nexport async function archiveAndClearSession(\n\tworktree: string,\n\tsession: Session,\n): Promise<void> {\n\tconst root = assertMutableWorkspaceRoot(worktree);\n\tawait mkdir(historyDir(root), { recursive: true });\n\tawait writeFileAtomically(\n\t\tarchivedSessionPath(root, session.id),\n\t\t`${JSON.stringify(SessionSchema.parse(session), null, 2)}\\n`,\n\t);\n\tawait rm(sessionPath(root), { force: true });\n\tawait ensureFlowGitignore(root);\n}\n\nconst FLOW_GITIGNORE_CONTENT = [\n\t\"session.json\",\n\t\"history/\",\n\t\"session.lock/\",\n\t\".gitignore\",\n\t\"\",\n].join(\"\\n\");\n\nasync function ensureFlowGitignore(worktree: string): Promise<void> {\n\tconst path = join(flowDir(worktree), \".gitignore\");\n\ttry {\n\t\tconst existing = await readFile(path, \"utf8\");\n\t\tif (existing.trim() === \"session.lock/\") {\n\t\t\tawait writeFile(path, FLOW_GITIGNORE_CONTENT, \"utf8\");\n\t\t}\n\t} catch (error) {\n\t\tif ((error as NodeJS.ErrnoException).code !== \"ENOENT\") throw error;\n\t\tawait writeFile(path, FLOW_GITIGNORE_CONTENT, \"utf8\");\n\t}\n}\n\nexport function isAbsoluteOrTraversal(value: string): boolean {\n\treturn isAbsolute(value) || value === \"..\" || value.startsWith(\"../\");\n}\n",
|
|
8
8
|
"type StrictJsonObjectParseResult =\n\t| { ok: true; value: Record<string, unknown> }\n\t| { ok: false; error: string };\n\nfunction findDuplicateKey(input: string): string | null {\n\ttype Frame = { isObject: boolean; keys: Set<string>; awaitingKey: boolean };\n\tconst stack: Frame[] = [];\n\tlet index = 0;\n\n\twhile (index < input.length) {\n\t\tconst char = input[index];\n\t\tif (char === \"{\") {\n\t\t\tstack.push({ isObject: true, keys: new Set(), awaitingKey: true });\n\t\t\tindex += 1;\n\t\t\tcontinue;\n\t\t}\n\t\tif (char === \"[\") {\n\t\t\tstack.push({ isObject: false, keys: new Set(), awaitingKey: false });\n\t\t\tindex += 1;\n\t\t\tcontinue;\n\t\t}\n\t\tif (char === \"}\" || char === \"]\") {\n\t\t\tstack.pop();\n\t\t\tindex += 1;\n\t\t\tcontinue;\n\t\t}\n\t\tif (char === \",\") {\n\t\t\tconst top = stack.at(-1);\n\t\t\tif (top?.isObject) top.awaitingKey = true;\n\t\t\tindex += 1;\n\t\t\tcontinue;\n\t\t}\n\t\tif (char === \":\") {\n\t\t\tconst top = stack.at(-1);\n\t\t\tif (top?.isObject) top.awaitingKey = false;\n\t\t\tindex += 1;\n\t\t\tcontinue;\n\t\t}\n\t\tif (char === '\"') {\n\t\t\tlet cursor = index + 1;\n\t\t\twhile (cursor < input.length) {\n\t\t\t\tif (input[cursor] === \"\\\\\") {\n\t\t\t\t\tcursor += 2;\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\tif (input[cursor] === '\"') break;\n\t\t\t\tcursor += 1;\n\t\t\t}\n\t\t\tconst top = stack.at(-1);\n\t\t\tif (top?.isObject && top.awaitingKey) {\n\t\t\t\tconst key = JSON.parse(input.slice(index, cursor + 1)) as string;\n\t\t\t\tif (top.keys.has(key)) return key;\n\t\t\t\ttop.keys.add(key);\n\t\t\t}\n\t\t\tindex = cursor + 1;\n\t\t\tcontinue;\n\t\t}\n\t\tindex += 1;\n\t}\n\treturn null;\n}\n\nexport function parseStrictJsonObject(\n\traw: string,\n\tlabel: string,\n): StrictJsonObjectParseResult {\n\tif (raw.trim().length === 0) {\n\t\treturn { ok: false, error: `${label} is empty.` };\n\t}\n\n\tlet parsed: unknown;\n\ttry {\n\t\tparsed = JSON.parse(raw);\n\t} catch (error) {\n\t\treturn {\n\t\t\tok: false,\n\t\t\terror:\n\t\t\t\terror instanceof Error\n\t\t\t\t\t? `${label} is not valid JSON: ${error.message}`\n\t\t\t\t\t: `${label} is not valid JSON.`,\n\t\t};\n\t}\n\n\tif (parsed === null || typeof parsed !== \"object\" || Array.isArray(parsed)) {\n\t\treturn { ok: false, error: `${label} must be a JSON object.` };\n\t}\n\n\tconst duplicate = findDuplicateKey(raw);\n\tif (duplicate) {\n\t\treturn { ok: false, error: `${label} has duplicate key '${duplicate}'.` };\n\t}\n\n\treturn { ok: true, value: parsed as Record<string, unknown> };\n}\n",
|
|
9
9
|
"import { z } from \"zod\";\n\nexport const FEATURE_ID_PATTERN = /^[a-z0-9]+(?:-[a-z0-9]+)*$/;\nexport const FEATURE_ID_MESSAGE = \"Feature ids must be lowercase kebab-case\";\n\nexport const FeatureStatusSchema = z.enum([\n\t\"pending\",\n\t\"in_progress\",\n\t\"completed\",\n\t\"blocked\",\n]);\n\nexport const SessionStatusSchema = z.enum([\n\t\"planning\",\n\t\"ready\",\n\t\"running\",\n\t\"blocked\",\n\t\"completed\",\n]);\n\nexport const ReviewStatusSchema = z.enum([\"passed\", \"failed\"]);\nexport const ValidationStatusSchema = z.enum([\"passed\", \"failed\"]);\nexport const ValidationScopeSchema = z.enum([\"targeted\", \"broad\"]);\nexport const FinalReviewPolicySchema = z.enum([\"broad\", \"detailed\"]);\n\nexport const ReviewFindingSchema = z\n\t.object({\n\t\tsummary: z.string().min(1),\n\t\tseverity: z.enum([\"blocking\", \"advisory\"]).default(\"blocking\"),\n\t})\n\t.strict();\n\nexport const ReviewSchema = z\n\t.object({\n\t\tstatus: ReviewStatusSchema,\n\t\tsummary: z.string().min(1),\n\t\tblockingFindings: z.array(ReviewFindingSchema).default([]),\n\t})\n\t.strict();\n\nexport const FinalReviewSchema = ReviewSchema.extend({\n\treviewDepth: FinalReviewPolicySchema,\n}).strict();\n\nexport const ValidationRunSchema = z\n\t.object({\n\t\tcommand: z.string().min(1),\n\t\tstatus: ValidationStatusSchema,\n\t\tsummary: z.string().min(1),\n\t})\n\t.strict();\n\nexport const ArtifactSchema = z\n\t.object({\n\t\tpath: z.string().min(1),\n\t})\n\t.strict();\n\nexport const FeatureSchema = z\n\t.object({\n\t\tid: z.string().regex(FEATURE_ID_PATTERN, FEATURE_ID_MESSAGE),\n\t\ttitle: z.string().min(1),\n\t\tsummary: z.string().min(1),\n\t\tstatus: FeatureStatusSchema.default(\"pending\"),\n\t\ttargets: z.array(z.string().min(1)).default([]),\n\t\tvalidation: z.array(z.string().min(1)).default([]),\n\t\tdependsOn: z.array(z.string().regex(FEATURE_ID_PATTERN)).default([]),\n\t})\n\t.strict();\n\nexport const PlanSchema = z\n\t.object({\n\t\tsummary: z.string().min(1),\n\t\toverview: z.string().min(1),\n\t\trequirements: z.array(z.string().min(1)).default([]),\n\t\tdecisions: z.array(z.string().min(1)).default([]),\n\t\tfinalReviewPolicy: FinalReviewPolicySchema.default(\"detailed\"),\n\t\tfeatures: z.array(FeatureSchema).min(1),\n\t})\n\t.strict();\n\nexport const PlanInputSchema = PlanSchema.omit({ features: true }).extend({\n\tfinalReviewPolicy: FinalReviewPolicySchema.optional(),\n\tfeatures: z\n\t\t.array(\n\t\t\tFeatureSchema.omit({ status: true })\n\t\t\t\t.extend({\n\t\t\t\t\tstatus: FeatureStatusSchema.optional(),\n\t\t\t\t\ttargets: z.array(z.string().min(1)).optional(),\n\t\t\t\t\tvalidation: z.array(z.string().min(1)).optional(),\n\t\t\t\t\tdependsOn: z.array(z.string().regex(FEATURE_ID_PATTERN)).optional(),\n\t\t\t\t})\n\t\t\t\t.strict(),\n\t\t)\n\t\t.min(1),\n});\n\nexport const WorkerOutcomeSchema = z\n\t.object({\n\t\tkind: z\n\t\t\t.enum([\"completed\", \"blocked\", \"needs_input\", \"replan_required\"])\n\t\t\t.default(\"completed\"),\n\t\tsummary: z.string().min(1).optional(),\n\t\tresolutionHint: z.string().min(1).optional(),\n\t})\n\t.strict();\n\nexport const NeedsInputOutcomeSchema = z\n\t.object({\n\t\tkind: z\n\t\t\t.enum([\"blocked\", \"needs_input\", \"replan_required\"])\n\t\t\t.default(\"needs_input\"),\n\t\tsummary: z.string().min(1),\n\t\tresolutionHint: z.string().min(1).optional(),\n\t})\n\t.strict();\n\nexport const WorkerResultSchema = z\n\t.discriminatedUnion(\"status\", [\n\t\tz\n\t\t\t.object({\n\t\t\t\tstatus: z.literal(\"ok\"),\n\t\t\t\tfeatureId: z.string().regex(FEATURE_ID_PATTERN, FEATURE_ID_MESSAGE),\n\t\t\t\tsummary: z.string().min(1),\n\t\t\t\tartifactsChanged: z.array(ArtifactSchema).default([]),\n\t\t\t\tvalidationRun: z.array(ValidationRunSchema).default([]),\n\t\t\t\tvalidationScope: ValidationScopeSchema,\n\t\t\t\tfeatureReview: ReviewSchema,\n\t\t\t\tfinalReview: FinalReviewSchema.optional(),\n\t\t\t\toutcome: WorkerOutcomeSchema.optional(),\n\t\t\t})\n\t\t\t.strict(),\n\t\tz\n\t\t\t.object({\n\t\t\t\tstatus: z.literal(\"needs_input\"),\n\t\t\t\tfeatureId: z.string().regex(FEATURE_ID_PATTERN, FEATURE_ID_MESSAGE),\n\t\t\t\tsummary: z.string().min(1),\n\t\t\t\tartifactsChanged: z.array(ArtifactSchema).default([]),\n\t\t\t\tvalidationRun: z.array(ValidationRunSchema).default([]),\n\t\t\t\tvalidationScope: ValidationScopeSchema.optional(),\n\t\t\t\tfeatureReview: ReviewSchema.optional(),\n\t\t\t\tfinalReview: FinalReviewSchema.optional(),\n\t\t\t\toutcome: NeedsInputOutcomeSchema,\n\t\t\t})\n\t\t\t.strict(),\n\t])\n\t.superRefine((value, ctx) => {\n\t\tif (\n\t\t\tvalue.status === \"ok\" &&\n\t\t\tvalue.outcome?.kind &&\n\t\t\tvalue.outcome.kind !== \"completed\"\n\t\t) {\n\t\t\tctx.addIssue({\n\t\t\t\tcode: \"custom\",\n\t\t\t\tpath: [\"outcome\", \"kind\"],\n\t\t\t\tmessage: 'ok worker results must use outcome.kind \"completed\".',\n\t\t\t});\n\t\t}\n\t});\n\nexport const ExecutionHistoryEntrySchema = z\n\t.object({\n\t\tfeatureId: z.string().regex(FEATURE_ID_PATTERN, FEATURE_ID_MESSAGE),\n\t\tstatus: z.enum([\"completed\", \"blocked\", \"needs_input\"]),\n\t\tsummary: z.string().min(1),\n\t\trecordedAt: z.string().min(1),\n\t\tartifactsChanged: z.array(ArtifactSchema).default([]),\n\t\tvalidationRun: z.array(ValidationRunSchema).default([]),\n\t\tvalidationScope: ValidationScopeSchema.optional(),\n\t\tfeatureReview: ReviewSchema.optional(),\n\t\tfinalReview: FinalReviewSchema.optional(),\n\t\toutcome: WorkerOutcomeSchema.optional(),\n\t})\n\t.strict();\n\nexport const SessionSchema = z\n\t.object({\n\t\tversion: z.literal(2),\n\t\tid: z.string().min(1),\n\t\tgoal: z.string().min(1),\n\t\tstatus: SessionStatusSchema,\n\t\tapproval: z.enum([\"pending\", \"approved\"]),\n\t\tplan: PlanSchema.nullable(),\n\t\tactiveFeatureId: z\n\t\t\t.string()\n\t\t\t.regex(FEATURE_ID_PATTERN, FEATURE_ID_MESSAGE)\n\t\t\t.nullable(),\n\t\thistory: z.array(ExecutionHistoryEntrySchema).default([]),\n\t\tclosure: z\n\t\t\t.object({\n\t\t\t\tkind: z.enum([\"completed\", \"deferred\", \"abandoned\"]),\n\t\t\t\tsummary: z.string().min(1),\n\t\t\t\trecordedAt: z.string().min(1),\n\t\t\t})\n\t\t\t.strict()\n\t\t\t.nullable(),\n\t\tlastError: z\n\t\t\t.object({\n\t\t\t\ttool: z.string().min(1),\n\t\t\t\tsummary: z.string().min(1),\n\t\t\t\trecovery: z.string().min(1).optional(),\n\t\t\t\trecordedAt: z.string().min(1),\n\t\t\t})\n\t\t\t.strict()\n\t\t\t.nullable()\n\t\t\t.default(null),\n\t\ttimestamps: z\n\t\t\t.object({\n\t\t\t\tcreatedAt: z.string().min(1),\n\t\t\t\tupdatedAt: z.string().min(1),\n\t\t\t\tcompletedAt: z.string().min(1).nullable(),\n\t\t\t})\n\t\t\t.strict(),\n\t})\n\t.strict();\n\nexport type Artifact = z.infer<typeof ArtifactSchema>;\nexport type ExecutionHistoryEntry = z.infer<typeof ExecutionHistoryEntrySchema>;\nexport type Feature = z.infer<typeof FeatureSchema>;\nexport type FinalReview = z.infer<typeof FinalReviewSchema>;\nexport type Plan = z.infer<typeof PlanSchema>;\nexport type PlanInput = z.input<typeof PlanInputSchema>;\nexport type Review = z.infer<typeof ReviewSchema>;\nexport type Session = z.infer<typeof SessionSchema>;\nexport type ValidationRun = z.infer<typeof ValidationRunSchema>;\nexport type WorkerResult = z.infer<typeof WorkerResultSchema>;\n",
|
|
10
|
-
"export type FlowPermissionConfig = {\n\tedit?: string;\n\tbash?: string;\n\ttask?: Record<string, string>;\n\t[toolPattern: string]: string | Record<string, string> | undefined;\n};\n\nexport type FlowAgentConfig = {\n\tmode: \"subagent\";\n\tdescription: string;\n\tprompt: string;\n\thidden?: boolean;\n\tpermission?: FlowPermissionConfig;\n};\n\nexport type FlowCommandConfig = {\n\tdescription: string;\n\ttemplate: string;\n\tagent?: string;\n\tsubtask?: boolean;\n};\n\nexport type MutableFlowConfig = {\n\tagent?: Record<string, unknown>;\n\tcommand?: Record<string, unknown>;\n};\n\nexport const FLOW_CORE_AGENTS = {\n\t\"flow-reviewer\": {\n\t\tmode: \"subagent\",\n\t\thidden: true,\n\t\tdescription: \"Internal read-only reviewer for Flow-guided work.\",\n\t\tprompt:\n\t\t\t\"Load `flow-review`. Inspect the current work read-only, report findings, and do not mutate Flow state.\",\n\t\tpermission: {\n\t\t\tedit: \"deny\",\n\t\t\tbash: \"deny\",\n\t\t\ttask: { \"*\": \"deny\" },\n\t\t\t\"flow_*\": \"deny\",\n\t\t\tflow_status: \"allow\",\n\t\t},\n\t},\n\t\"flow-evidence-worker\": {\n\t\tmode: \"subagent\",\n\t\thidden: true,\n\t\tdescription:\n\t\t\t\"Internal read-only evidence worker for Flow planning and execution support.\",\n\t\tprompt:\n\t\t\t\"Use Flow evidence mode. Inspect only the assigned slice, do not edit files, do not call state-changing Flow tools, and return
|
|
10
|
+
"export type FlowPermissionConfig = {\n\tedit?: string;\n\tbash?: string;\n\ttask?: Record<string, string>;\n\t[toolPattern: string]: string | Record<string, string> | undefined;\n};\n\nexport type FlowAgentConfig = {\n\tmode: \"subagent\";\n\tdescription: string;\n\tprompt: string;\n\thidden?: boolean;\n\tpermission?: FlowPermissionConfig;\n};\n\nexport type FlowCommandConfig = {\n\tdescription: string;\n\ttemplate: string;\n\tagent?: string;\n\tsubtask?: boolean;\n};\n\nexport type MutableFlowConfig = {\n\tagent?: Record<string, unknown>;\n\tcommand?: Record<string, unknown>;\n};\n\nexport const FLOW_CORE_AGENTS = {\n\t\"flow-reviewer\": {\n\t\tmode: \"subagent\",\n\t\thidden: true,\n\t\tdescription: \"Internal read-only reviewer for Flow-guided work.\",\n\t\tprompt:\n\t\t\t\"Load `flow-review`. Inspect the current work read-only, report coverage, evidence-backed findings, confidence, gaps, and manager follow-ups, and do not mutate Flow state.\",\n\t\tpermission: {\n\t\t\tedit: \"deny\",\n\t\t\tbash: \"deny\",\n\t\t\ttask: { \"*\": \"deny\" },\n\t\t\t\"flow_*\": \"deny\",\n\t\t\tflow_status: \"allow\",\n\t\t},\n\t},\n\t\"flow-evidence-worker\": {\n\t\tmode: \"subagent\",\n\t\thidden: true,\n\t\tdescription:\n\t\t\t\"Internal read-only evidence worker for Flow planning and execution support.\",\n\t\tprompt:\n\t\t\t\"Use Flow evidence mode. Inspect only the assigned slice, do not edit files, do not call state-changing Flow tools, and return coverage, evidence inspected, confidence-tagged findings or facts, gaps, and manager follow-ups.\",\n\t\tpermission: {\n\t\t\tedit: \"deny\",\n\t\t\tbash: \"deny\",\n\t\t\ttask: { \"*\": \"deny\" },\n\t\t\t\"flow_*\": \"deny\",\n\t\t\tflow_status: \"allow\",\n\t\t},\n\t},\n\t\"flow-validation-worker\": {\n\t\tmode: \"subagent\",\n\t\thidden: true,\n\t\tdescription:\n\t\t\t\"Internal validation worker for Flow check selection and command evidence.\",\n\t\tprompt:\n\t\t\t\"Use Flow validation mode. Run only manager-specified commands or propose focused checks, do not edit files, do not call state-changing Flow tools, and report exact command, status, raw outcome summary, coverage, confidence, gaps, and manager follow-ups.\",\n\t\tpermission: {\n\t\t\tedit: \"deny\",\n\t\t\tbash: \"ask\",\n\t\t\ttask: { \"*\": \"deny\" },\n\t\t\t\"flow_*\": \"deny\",\n\t\t\tflow_status: \"allow\",\n\t\t},\n\t},\n\t\"flow-audit-worker\": {\n\t\tmode: \"subagent\",\n\t\thidden: true,\n\t\tdescription:\n\t\t\t\"Internal read-only audit worker for refuted or surviving finding candidates.\",\n\t\tprompt:\n\t\t\t\"Use Flow audit mode. Inspect only the assigned slice, actively refute candidate findings before reporting them, do not edit files, do not call state-changing Flow tools, and return coverage, evidence, guards checked, confidence, gaps, and manager follow-ups.\",\n\t\tpermission: {\n\t\t\tedit: \"deny\",\n\t\t\tbash: \"ask\",\n\t\t\ttask: { \"*\": \"deny\" },\n\t\t\t\"flow_*\": \"deny\",\n\t\t\tflow_status: \"allow\",\n\t\t},\n\t},\n\t\"flow-candidate-worker\": {\n\t\tmode: \"subagent\",\n\t\thidden: true,\n\t\tdescription:\n\t\t\t\"Internal candidate implementation worker for isolated Flow worktrees or exact non-overlapping path ownership.\",\n\t\tprompt:\n\t\t\t\"Use Flow candidate-implementation mode only when the manager assigned an isolated worktree or exact non-overlapping path ownership. Do not edit .flow/**, do not call state-changing Flow tools, do not complete Flow state, and return changed or proposed patch, verification run, coverage, confidence, merge risks, and manager follow-ups.\",\n\t\tpermission: {\n\t\t\tedit: \"ask\",\n\t\t\tbash: \"ask\",\n\t\t\ttask: { \"*\": \"deny\" },\n\t\t\t\"flow_*\": \"deny\",\n\t\t\tflow_status: \"allow\",\n\t\t},\n\t},\n\t\"flow-verifier-worker\": {\n\t\tmode: \"subagent\",\n\t\thidden: true,\n\t\tdescription:\n\t\t\t\"Internal verifier worker for checking Flow worker claims against cited evidence.\",\n\t\tprompt:\n\t\t\t\"Use Flow verifier mode. Verify only the assigned claims against the provided sources, commands, counts, or current docs. Do not generate new scope, do not edit files, do not call state-changing Flow tools, and return supported, partly-supported, unsupported, or source-not-found per claim with evidence, confidence, gaps, and manager follow-ups.\",\n\t\tpermission: {\n\t\t\tedit: \"deny\",\n\t\t\tbash: \"ask\",\n\t\t\ttask: { \"*\": \"deny\" },\n\t\t\t\"flow_*\": \"deny\",\n\t\t\tflow_status: \"allow\",\n\t\t},\n\t},\n} satisfies Record<string, FlowAgentConfig>;\n\nexport const FLOW_CORE_COMMANDS = {\n\t\"flow-auto\": {\n\t\tdescription: \"Drive Flow skills against the minimal runtime ledger\",\n\t\ttemplate:\n\t\t\t\"Load the `flow` skill and drive the Flow loop until completion or a real blocker: $ARGUMENTS\",\n\t},\n\t\"flow-plan\": {\n\t\tdescription: \"Create or approve a Flow plan\",\n\t\ttemplate: \"Load the `flow-plan` skill and plan: $ARGUMENTS\",\n\t},\n\t\"flow-run\": {\n\t\tdescription: \"Run one approved Flow feature\",\n\t\ttemplate:\n\t\t\t\"Load the `flow-run` skill and execute the next approved feature. $ARGUMENTS\",\n\t},\n\t\"flow-review\": {\n\t\tdescription: \"Run a read-only Flow review\",\n\t\tagent: \"flow-reviewer\",\n\t\tsubtask: true,\n\t\ttemplate: \"Load the `flow-review` skill and review: $ARGUMENTS\",\n\t},\n\t\"flow-status\": {\n\t\tdescription: \"Inspect the active Flow session\",\n\t\ttemplate: \"Call flow_status and report the session state and next action.\",\n\t},\n} satisfies Record<string, FlowCommandConfig>;\n\nexport function createFlowCoreConfigEntries() {\n\treturn {\n\t\tagent: Object.fromEntries(\n\t\t\tObject.entries(FLOW_CORE_AGENTS).map(([name, value]) => {\n\t\t\t\tconst permission = value.permission\n\t\t\t\t\t? {\n\t\t\t\t\t\t\t...value.permission,\n\t\t\t\t\t\t\t...(value.permission.task\n\t\t\t\t\t\t\t\t? { task: { ...value.permission.task } }\n\t\t\t\t\t\t\t\t: {}),\n\t\t\t\t\t\t}\n\t\t\t\t\t: undefined;\n\t\t\t\treturn [\n\t\t\t\t\tname,\n\t\t\t\t\t{\n\t\t\t\t\t\t...value,\n\t\t\t\t\t\t...(permission ? { permission } : {}),\n\t\t\t\t\t},\n\t\t\t\t];\n\t\t\t}),\n\t\t),\n\t\tcommand: Object.fromEntries(\n\t\t\tObject.entries(FLOW_CORE_COMMANDS).map(([name, value]) => [\n\t\t\t\tname,\n\t\t\t\t{ ...value },\n\t\t\t]),\n\t\t),\n\t};\n}\n\nexport function applyFlowConfig(config: MutableFlowConfig): void {\n\tconst entries = createFlowCoreConfigEntries();\n\tconfig.agent = { ...(config.agent ?? {}), ...entries.agent };\n\tconfig.command = { ...(config.command ?? {}), ...entries.command };\n}\n",
|
|
11
11
|
"import { applyFlowConfig, type MutableFlowConfig } from \"../../config-shared\";\n\nexport function createConfigHook(_ctx: unknown) {\n\treturn async (config: MutableFlowConfig) => {\n\t\tapplyFlowConfig(config);\n\t};\n}\n",
|
|
12
12
|
"type FlowLogLevel = \"info\" | \"warn\" | \"error\";\n\nexport function createFlowLog(ctx: unknown) {\n\tconst client = (ctx as { client?: { app?: { log?: unknown } } } | null)\n\t\t?.client;\n\tconst log = client?.app?.log;\n\treturn (level: FlowLogLevel, message: string): void => {\n\t\tif (typeof log !== \"function\") return;\n\t\ttry {\n\t\t\tvoid log.call(client?.app, {\n\t\t\t\tbody: { service: \"opencode-plugin-flow\", level, message },\n\t\t\t});\n\t\t} catch {\n\t\t\t// Logging is best-effort and must never break plugin startup.\n\t\t}\n\t};\n}\n",
|
|
13
13
|
"import { z } from \"zod\";\nimport { PlanInputSchema, WorkerResultSchema } from \"./schema\";\nimport {\n\tapplyPlan,\n\tapprovePlan,\n\tcloseSession,\n\tcompleteFeature,\n\tcreateSession,\n\tresetFeature,\n\tstartRun,\n\tsummarizeSession,\n} from \"./transitions\";\nimport {\n\tarchiveAndClearSession,\n\tloadSession,\n\tsaveSession,\n\twithSessionLock,\n} from \"./workspace\";\n\nexport type RuntimeResponse = Record<string, unknown>;\n\nexport const FlowPlanSaveSchema = z\n\t.object({\n\t\tgoal: z.string().trim().min(1).optional(),\n\t\tplan: PlanInputSchema.optional(),\n\t})\n\t.strict();\n\nexport const FlowRunStartSchema = z\n\t.object({\n\t\tfeatureId: z.string().min(1).optional(),\n\t})\n\t.strict();\n\nexport const FlowFeatureResetSchema = z\n\t.object({\n\t\tfeatureId: z.string().min(1),\n\t})\n\t.strict();\n\nexport const FlowSessionCloseSchema = z\n\t.object({\n\t\tkind: z.enum([\"completed\", \"deferred\", \"abandoned\"]),\n\t\tsummary: z.string().trim().min(1).optional(),\n\t})\n\t.strict();\n\nfunction responseFromFailure(result: {\n\tmessage: string;\n\trecovery?: string;\n}): RuntimeResponse {\n\treturn {\n\t\tstatus: \"error\",\n\t\tsummary: result.message,\n\t\t...(result.recovery ? { recovery: result.recovery } : {}),\n\t};\n}\n\nasync function mutate(\n\tworktree: string,\n\ttask: (\n\t\tsession: Awaited<ReturnType<typeof loadSession>>,\n\t) => Promise<RuntimeResponse>,\n): Promise<RuntimeResponse> {\n\treturn withSessionLock(worktree, async () =>\n\t\ttask(await loadSession(worktree)),\n\t);\n}\n\nexport async function flowStatus(worktree: string): Promise<RuntimeResponse> {\n\treturn summarizeSession(await loadSession(worktree));\n}\n\nexport async function flowPlanSave(\n\tworktree: string,\n\tinput: unknown,\n): Promise<RuntimeResponse> {\n\tconst args = FlowPlanSaveSchema.parse(input ?? {});\n\treturn mutate(worktree, async (existing) => {\n\t\tconst goal = args.goal ?? existing?.goal;\n\t\tif (!goal) {\n\t\t\treturn {\n\t\t\t\tstatus: \"missing_goal\",\n\t\t\t\tsummary: \"Provide a goal before saving a Flow plan.\",\n\t\t\t\tnextAction: \"/flow-plan <goal>\",\n\t\t\t};\n\t\t}\n\t\tif (existing?.status === \"completed\") {\n\t\t\tawait archiveAndClearSession(worktree, existing);\n\t\t}\n\t\tconst base =\n\t\t\texisting?.status === \"completed\"\n\t\t\t\t? createSession(goal)\n\t\t\t\t: (existing ?? createSession(goal));\n\t\tif (base.goal !== goal) {\n\t\t\tif (base.approval === \"approved\") {\n\t\t\t\treturn {\n\t\t\t\t\tstatus: \"error\",\n\t\t\t\t\tsummary:\n\t\t\t\t\t\t\"An approved Flow session already exists for a different goal. Close it before starting a new one.\",\n\t\t\t\t};\n\t\t\t}\n\t\t}\n\t\tconst session = base.goal === goal ? base : createSession(goal);\n\t\tconst result = args.plan\n\t\t\t? applyPlan(session, args.plan)\n\t\t\t: { ok: true as const, value: session };\n\t\tif (!result.ok) return responseFromFailure(result);\n\t\tconst saved = await saveSession(worktree, result.value);\n\t\treturn {\n\t\t\t...summarizeSession(saved),\n\t\t\tstatus: \"ok\",\n\t\t\tsummary: args.plan ? \"Flow plan saved.\" : \"Flow session ready.\",\n\t\t};\n\t});\n}\n\nexport async function flowPlanApprove(\n\tworktree: string,\n): Promise<RuntimeResponse> {\n\treturn mutate(worktree, async (session) => {\n\t\tif (!session) {\n\t\t\treturn {\n\t\t\t\tstatus: \"missing_session\",\n\t\t\t\tsummary: \"No active Flow session exists.\",\n\t\t\t\tnextAction: \"/flow-plan <goal>\",\n\t\t\t};\n\t\t}\n\t\tconst result = approvePlan(session);\n\t\tif (!result.ok) return responseFromFailure(result);\n\t\tconst saved = await saveSession(worktree, result.value);\n\t\treturn {\n\t\t\t...summarizeSession(saved),\n\t\t\tstatus: \"ok\",\n\t\t\tsummary: \"Flow plan approved.\",\n\t\t};\n\t});\n}\n\nexport async function flowRunStart(\n\tworktree: string,\n\tinput: unknown,\n): Promise<RuntimeResponse> {\n\tconst args = FlowRunStartSchema.parse(input ?? {});\n\treturn mutate(worktree, async (session) => {\n\t\tif (!session) {\n\t\t\treturn {\n\t\t\t\tstatus: \"missing_session\",\n\t\t\t\tsummary: \"No active Flow session exists.\",\n\t\t\t\tnextAction: \"/flow-plan <goal>\",\n\t\t\t};\n\t\t}\n\t\tconst result = startRun(session, args.featureId);\n\t\tif (!result.ok) return responseFromFailure(result);\n\t\tconst saved = await saveSession(worktree, result.value.session);\n\t\treturn {\n\t\t\t...summarizeSession(saved),\n\t\t\tstatus: \"ok\",\n\t\t\tsummary: `Started feature '${result.value.feature.id}'.`,\n\t\t\tfeature: result.value.feature,\n\t\t};\n\t});\n}\n\nexport async function flowFeatureComplete(\n\tworktree: string,\n\tinput: unknown,\n): Promise<RuntimeResponse> {\n\tconst worker = WorkerResultSchema.parse(input ?? {});\n\treturn mutate(worktree, async (session) => {\n\t\tif (!session) {\n\t\t\treturn {\n\t\t\t\tstatus: \"missing_session\",\n\t\t\t\tsummary: \"No active Flow session exists.\",\n\t\t\t\tnextAction: \"/flow-plan <goal>\",\n\t\t\t};\n\t\t}\n\t\tconst result = completeFeature(session, worker);\n\t\tif (!result.ok) {\n\t\t\tif (result.session) await saveSession(worktree, result.session);\n\t\t\treturn responseFromFailure(result);\n\t\t}\n\t\tconst saved = await saveSession(worktree, result.value);\n\t\treturn {\n\t\t\t...summarizeSession(saved),\n\t\t\tstatus: \"ok\",\n\t\t\tsummary: \"Feature result recorded.\",\n\t\t};\n\t});\n}\n\nexport async function flowFeatureReset(\n\tworktree: string,\n\tinput: unknown,\n): Promise<RuntimeResponse> {\n\tconst args = FlowFeatureResetSchema.parse(input ?? {});\n\treturn mutate(worktree, async (session) => {\n\t\tif (!session) {\n\t\t\treturn {\n\t\t\t\tstatus: \"missing_session\",\n\t\t\t\tsummary: \"No active Flow session exists.\",\n\t\t\t\tnextAction: \"/flow-plan <goal>\",\n\t\t\t};\n\t\t}\n\t\tconst result = resetFeature(session, args.featureId);\n\t\tif (!result.ok) return responseFromFailure(result);\n\t\tconst saved = await saveSession(worktree, result.value);\n\t\treturn {\n\t\t\t...summarizeSession(saved),\n\t\t\tstatus: \"ok\",\n\t\t\tsummary: `Feature '${args.featureId}' reset.`,\n\t\t};\n\t});\n}\n\nexport async function flowSessionClose(\n\tworktree: string,\n\tinput: unknown,\n): Promise<RuntimeResponse> {\n\tconst args = FlowSessionCloseSchema.parse(input ?? {});\n\treturn mutate(worktree, async (session) => {\n\t\tif (!session) {\n\t\t\treturn {\n\t\t\t\tstatus: \"missing_session\",\n\t\t\t\tsummary: \"No active Flow session exists.\",\n\t\t\t\tnextAction: \"/flow-plan <goal>\",\n\t\t\t};\n\t\t}\n\t\tconst result = closeSession(session, args.kind, args.summary);\n\t\tif (!result.ok) return responseFromFailure(result);\n\t\tawait archiveAndClearSession(worktree, result.value);\n\t\treturn {\n\t\t\tstatus: \"ok\",\n\t\t\tsummary: `Flow session closed as ${args.kind}.`,\n\t\t\tarchivedSessionId: result.value.id,\n\t\t\tclosure: result.value.closure,\n\t\t};\n\t});\n}\n",
|
|
@@ -17,7 +17,7 @@
|
|
|
17
17
|
"import {\n\tflowFeatureComplete,\n\tflowFeatureReset,\n\tflowPlanApprove,\n\tflowPlanSave,\n\tflowRunStart,\n\tflowSessionClose,\n\tflowStatus,\n} from \"../../runtime/api\";\nimport { resolveWorkspaceRoot } from \"../../runtime/workspace\";\nimport { createFlowLog } from \"./logging\";\nimport { type ToolContext, tool } from \"./sdk\";\n\nconst z = tool.schema;\n\nfunction toJson(value: unknown): string {\n\treturn JSON.stringify(value, null, 2);\n}\n\nfunction toolError(error: unknown): string {\n\treturn toJson({\n\t\tstatus: \"error\",\n\t\tsummary: error instanceof Error ? error.message : String(error),\n\t});\n}\n\nasync function execute(\n\tcontext: ToolContext,\n\thandler: (worktree: string) => Promise<Record<string, unknown>>,\n): Promise<string> {\n\ttry {\n\t\treturn toJson(await handler(resolveWorkspaceRoot(context)));\n\t} catch (error) {\n\t\treturn toolError(error);\n\t}\n}\n\nexport function createTools(ctx: unknown) {\n\tcreateFlowLog(ctx)(\"info\", \"Creating minimal Flow v4 tool surface.\");\n\treturn {\n\t\tflow_status: tool({\n\t\t\tdescription: \"Show the active Flow session and next action\",\n\t\t\targs: {},\n\t\t\texecute: (_args, context) => execute(context, flowStatus),\n\t\t}),\n\t\tflow_plan_save: tool({\n\t\t\tdescription: \"Create or update a draft Flow plan for the active goal\",\n\t\t\targs: {\n\t\t\t\tgoal: z.string().optional(),\n\t\t\t\tplan: z.any().optional(),\n\t\t\t},\n\t\t\texecute: (args, context) =>\n\t\t\t\texecute(context, (worktree) => flowPlanSave(worktree, args)),\n\t\t}),\n\t\tflow_plan_approve: tool({\n\t\t\tdescription: \"Approve the current draft Flow plan\",\n\t\t\targs: {},\n\t\t\texecute: (_args, context) => execute(context, flowPlanApprove),\n\t\t}),\n\t\tflow_run_start: tool({\n\t\t\tdescription: \"Start the next runnable approved Flow feature\",\n\t\t\targs: {\n\t\t\t\tfeatureId: z.string().optional(),\n\t\t\t},\n\t\t\texecute: (args, context) =>\n\t\t\t\texecute(context, (worktree) => flowRunStart(worktree, args)),\n\t\t}),\n\t\tflow_feature_complete: tool({\n\t\t\tdescription:\n\t\t\t\t\"Record a completed or blocked active feature with validation and review evidence\",\n\t\t\targs: {\n\t\t\t\tstatus: z.enum([\"ok\", \"needs_input\"]),\n\t\t\t\tfeatureId: z.string(),\n\t\t\t\tsummary: z.string(),\n\t\t\t\tartifactsChanged: z.array(z.object({ path: z.string() })).optional(),\n\t\t\t\tvalidationRun: z\n\t\t\t\t\t.array(\n\t\t\t\t\t\tz.object({\n\t\t\t\t\t\t\tcommand: z.string(),\n\t\t\t\t\t\t\tstatus: z.enum([\"passed\", \"failed\"]),\n\t\t\t\t\t\t\tsummary: z.string(),\n\t\t\t\t\t\t}),\n\t\t\t\t\t)\n\t\t\t\t\t.optional(),\n\t\t\t\tvalidationScope: z.enum([\"targeted\", \"broad\"]).optional(),\n\t\t\t\tfeatureReview: z.any().optional(),\n\t\t\t\tfinalReview: z.any().optional(),\n\t\t\t\toutcome: z.any().optional(),\n\t\t\t},\n\t\t\texecute: (args, context) =>\n\t\t\t\texecute(context, (worktree) => flowFeatureComplete(worktree, args)),\n\t\t}),\n\t\tflow_feature_reset: tool({\n\t\t\tdescription: \"Reset one feature and its dependents to pending\",\n\t\t\targs: {\n\t\t\t\tfeatureId: z.string(),\n\t\t\t},\n\t\t\texecute: (args, context) =>\n\t\t\t\texecute(context, (worktree) => flowFeatureReset(worktree, args)),\n\t\t}),\n\t\tflow_session_close: tool({\n\t\t\tdescription: \"Close and archive the active Flow session\",\n\t\t\targs: {\n\t\t\t\tkind: z.enum([\"completed\", \"deferred\", \"abandoned\"]),\n\t\t\t\tsummary: z.string().optional(),\n\t\t\t},\n\t\t\texecute: (args, context) =>\n\t\t\t\texecute(context, (worktree) => flowSessionClose(worktree, args)),\n\t\t}),\n\t};\n}\n",
|
|
18
18
|
"import {\n\tresolveFlowPluginVersion,\n\trunFlowSkillSync,\n} from \"../../distribution/sync\";\nimport { loadSession } from \"../../runtime/workspace\";\nimport { createConfigHook } from \"./config\";\nimport { createFlowLog } from \"./logging\";\nimport type { Hooks, Plugin, ToolContext } from \"./sdk\";\nimport { createTools } from \"./tools\";\n\nasync function compactSessionFacts(\n\tcontext: Pick<ToolContext, \"worktree\" | \"directory\">,\n): Promise<string | null> {\n\tconst root = context.worktree ?? context.directory;\n\tif (!root) return null;\n\ttry {\n\t\tconst session = await loadSession(root);\n\t\tif (!session) return null;\n\t\treturn [\n\t\t\t\"Flow session facts:\",\n\t\t\t`- goal: ${session.goal}`,\n\t\t\t`- status: ${session.status}`,\n\t\t\t`- approval: ${session.approval}`,\n\t\t\t`- active feature: ${session.activeFeatureId ?? \"none\"}`,\n\t\t\t`- progress: ${\n\t\t\t\tsession.plan?.features.filter(\n\t\t\t\t\t(feature) => feature.status === \"completed\",\n\t\t\t\t).length ?? 0\n\t\t\t}/${session.plan?.features.length ?? 0}`,\n\t\t\t\"Call flow_status before any Flow action.\",\n\t\t].join(\"\\n\");\n\t} catch {\n\t\treturn null;\n\t}\n}\n\nfunction createSystemTransformHook(\n\tctx: Pick<ToolContext, \"worktree\" | \"directory\">,\n): NonNullable<Hooks[\"experimental.chat.system.transform\"]> {\n\treturn async (_input, output) => {\n\t\tconst facts = await compactSessionFacts(ctx);\n\t\tif (facts) output.system.push(facts);\n\t};\n}\n\nconst FlowPlugin: Plugin = async (ctx) => {\n\tconst log = createFlowLog(ctx);\n\tlog(\"info\", \"Flow v4 plugin initialized.\");\n\tawait runFlowSkillSync(resolveFlowPluginVersion(), log);\n\n\treturn {\n\t\tconfig: createConfigHook(ctx),\n\t\ttool: createTools(ctx),\n\t\t\"experimental.chat.system.transform\": createSystemTransformHook(ctx),\n\t\t\"experimental.session.compacting\": async (_input, output) => {\n\t\t\tconst facts = await compactSessionFacts(ctx);\n\t\t\tif (!facts) return;\n\t\t\toutput.context = [...(output.context ?? []), facts];\n\t\t},\n\t};\n};\n\nexport default FlowPlugin;\n"
|
|
19
19
|
],
|
|
20
|
-
"mappings": "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",
|
|
21
|
-
"debugId": "
|
|
20
|
+
"mappings": "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",
|
|
21
|
+
"debugId": "77F331211D1168FA64756E2164756E21",
|
|
22
22
|
"names": []
|
|
23
23
|
}
|