import {
  DEFAULT_DOCS_LAYOUT,
  DOCS_LAYOUT_PRESETS,
  GIT_DIRECTORY_NAME,
  WORKSPACE_CONFIG_FILE_NAME,
  getConfig
} from "./chunk-V6OJGLBA.js";

// ../core/dist/wu-git-constants.js
var BRANCHES = {
  MAIN: "main",
  MASTER: "master",
  // Legacy default branch name (defensive check)
  /** Temporary branch prefix for micro-worktree operations */
  TEMP_PREFIX: "tmp/"
};
var REMOTES = {
  ORIGIN: "origin"
};
var GIT_REFS = {
  /** Construct remote ref like 'origin/main' */
  remote: (remoteName, branchName) => `${remoteName}/${branchName}`,
  /** Shortcut for origin/main */
  ORIGIN_MAIN: "origin/main",
  /** Current HEAD ref */
  HEAD: "HEAD",
  /** Upstream ref */
  UPSTREAM: "@{u}",
  /** Range of upstream..HEAD */
  UPSTREAM_RANGE: "@{u}..HEAD",
  /** Fetch head ref */
  FETCH_HEAD: "FETCH_HEAD"
};
var GIT = {
  /** Standard length for displaying short SHA hashes (e.g., "abc12345") */
  SHA_SHORT_LENGTH: 8,
  /** Max number of commits to inspect in git log lookbacks */
  LOG_MAX_COUNT: 50
};
var REAL_GIT = "/usr/bin/git";
var GIT_FLAGS = {
  /** Show abbreviated ref names (for branch name resolution) */
  ABBREV_REF: "--abbrev-ref",
  /** Porcelain format (machine-readable output) */
  PORCELAIN: "--porcelain",
  /** Create new branch and switch to it */
  BRANCH: "-b",
  /** Force flag (long form) */
  FORCE: "--force",
  /** Force flag (short form) */
  FORCE_SHORT: "-f",
  /** Fast-forward only merge */
  FF_ONLY: "--ff-only",
  /** Rebase local commits on top of fetched branch */
  REBASE: "--rebase",
  /** Check ancestry without output (merge-base) */
  IS_ANCESTOR: "--is-ancestor",
  /** Write merged tree object and return conflict status code */
  WRITE_TREE: "--write-tree",
  /** Set upstream tracking */
  UPSTREAM: "-u",
  /** Delete branch (safe - only if merged) */
  DELETE: "-d",
  /** Delete branch (force - even if not merged) */
  DELETE_FORCE: "-D",
  /** Delete remote branch flag (for git push --delete) */
  DELETE_REMOTE: "--delete",
  /** Hard reset flag */
  HARD: "--hard",
  /** Soft reset flag */
  SOFT: "--soft",
  /** fd flags for clean (force delete directories) */
  FD_SHORT: "-fd",
  /** df flags for clean (delete force directories) */
  DF_SHORT: "-df",
  /** No verify flag (skip pre-commit/commit-msg hooks) */
  NO_VERIFY: "--no-verify",
  /** No GPG sign flag (skip commit signing) */
  NO_GPG_SIGN: "--no-gpg-sign",
  /** One-line log format */
  ONELINE: "--oneline",
  /** List heads only (for ls-remote) */
  HEADS: "--heads",
  /** Path separator (separates git options from file paths) */
  PATH_SEPARATOR: "--"
};
var GIT_COMMANDS = {
  /** Git binary */
  GIT: "git",
  /** Git reset command */
  RESET: "reset",
  /** List tree objects (check file existence on branch) */
  LS_TREE: "ls-tree",
  /** List remote references */
  LS_REMOTE: "ls-remote",
  /** Push command */
  PUSH: "push",
  /** Pull command */
  PULL: "pull",
  /** Git diff command */
  DIFF: "diff",
  /** Git log command */
  LOG: "log",
  /** Git merge-base command */
  MERGE_BASE: "merge-base",
  /** Git merge-tree command */
  MERGE_TREE: "merge-tree",
  /** Git rev-parse command */
  REV_PARSE: "rev-parse",
  /** Git diff flags */
  CACHED: "--cached",
  NAME_ONLY: "--name-only",
  DIFF_FILTER_ACM: "--diff-filter=ACM"
};

// ../core/dist/wu-paths-constants.js
import path from "path";
import { tmpdir } from "os";
var DEFAULT_DOCS_PATHS = DOCS_LAYOUT_PRESETS[DEFAULT_DOCS_LAYOUT];
var UTF8_ENCODING = "utf8";
var FILE_SYSTEM = {
  /** Standard file encoding */
  ENCODING: UTF8_ENCODING,
  /** UTF-8 encoding (alias for compatibility) */
  UTF8: UTF8_ENCODING
};
var CONFIG_FILES = {
  /** Canonical workspace config */
  WORKSPACE_CONFIG: WORKSPACE_CONFIG_FILE_NAME,
  /** Lane inference taxonomy */
  LANE_INFERENCE: ".lumenflow.lane-inference.yaml"
};
var DIRECTORIES = {
  APPS_WEB: "apps/web/",
  WORKTREES: "worktrees/",
  AI: "ai/",
  CLAUDE: ".claude/",
  CLAUDE_HOOKS: ".claude/hooks/",
  DOCS: "docs/",
  PACKAGES: "packages/",
  TOOLS: "tools/",
  MEMORY_BANK: "memory-bank/",
  WU_DIR: `${DEFAULT_DOCS_PATHS.tasks}/wu`,
  INITIATIVES_DIR: `${DEFAULT_DOCS_PATHS.tasks}/initiatives`,
  // WU-1814: Paths for active WU detection
  BACKLOG_PATH: `${DEFAULT_DOCS_PATHS.tasks}/backlog.md`,
  STATUS_PATH: `${DEFAULT_DOCS_PATHS.tasks}/status.md`
};
var BUILD_ARTIFACT_GLOBS = {
  /** Common dist directories inside worktrees */
  DIST_DIRS: [
    "packages/*/dist",
    "packages/**/dist",
    "apps/*/dist",
    "apps/**/dist",
    "tools/*/dist",
    "tools/**/dist"
  ],
  /** TypeScript build info files */
  TSBUILDINFO_FILES: ["**/*.tsbuildinfo"]
};
var GIT_ARTIFACT_IGNORE_GLOB = `**/${GIT_DIRECTORY_NAME}/**`;
var BUILD_ARTIFACT_IGNORES = [
  "**/node_modules/**",
  GIT_ARTIFACT_IGNORE_GLOB,
  "**/.turbo/**"
];
var FILE_EXTENSIONS = {
  /** Newline-delimited JSON format */
  NDJSON: ".ndjson",
  /** Markdown format */
  MARKDOWN: ".md",
  /** YAML format */
  YAML: ".yaml",
  /** YAML alternate extension */
  YML: ".yml",
  /** JSON format */
  JSON: ".json",
  /** Log format */
  LOG: ".log",
  /** Stamp files (completion markers) */
  STAMP: ".done"
};
var PATH_LITERALS = {
  /** Tilde prefix for home directory expansion (e.g., ~/path) */
  TILDE_PREFIX: "~/",
  /** Tilde character for home directory */
  TILDE: "~",
  /** Plan file suffix for WU plans */
  PLAN_FILE_SUFFIX: "-plan.md",
  /** Trailing slash regex pattern */
  TRAILING_SLASH_REGEX: /\/+$/,
  /** .lumenflow path prefix for internal path detection (WU-1430) */
  LUMENFLOW_PREFIX: ".lumenflow/",
  /** Current directory prefix for repo-internal paths (WU-1430) */
  CURRENT_DIR_PREFIX: "./"
};
var PATH_SLICE_LENGTHS = {
  /** Length of '~/' prefix for tilde expansion */
  TILDE_PREFIX_LENGTH: 2,
  /** Length of '/' for leading slash removal */
  LEADING_SLASH_LENGTH: 1
};
var LOCK_DIR_NAME = ".lumenflow-locks";
var LUMENFLOW_PATHS = {
  /** Base directory for all LumenFlow runtime data */
  BASE: ".lumenflow",
  /** WU state store directory */
  STATE_DIR: ".lumenflow/state",
  /** Stamp directory (WU completion markers) */
  STAMPS_DIR: ".lumenflow/stamps",
  /** Archive directory for old WU events (WU-1430) */
  ARCHIVE_DIR: ".lumenflow/archive",
  /** Merge lock file (runtime coordination, WU-1747) */
  MERGE_LOCK: ".lumenflow/merge.lock",
  /** Base telemetry directory */
  TELEMETRY: ".lumenflow/telemetry",
  /** Flow log file (WU flow events) */
  FLOW_LOG: ".lumenflow/flow.log",
  /** Agent sessions directory */
  SESSIONS: ".lumenflow/sessions",
  /** Agent incidents directory */
  INCIDENTS: ".lumenflow/incidents",
  /** Git commands log file */
  COMMANDS_LOG: ".lumenflow/commands.log",
  /** Memory layer directory */
  MEMORY_DIR: ".lumenflow/memory",
  /** Memory layer JSONL file */
  MEMORY_JSONL: ".lumenflow/memory/memory.jsonl",
  /** WU-1539: Memory signals JSONL file */
  MEMORY_SIGNALS: ".lumenflow/memory/signals.jsonl",
  /** Audit log for tool calls */
  AUDIT_LOG: ".lumenflow/telemetry/tools.ndjson",
  /** Feedback drafts directory */
  FEEDBACK_DRAFTS: ".lumenflow/feedback-drafts",
  /** Feedback index file */
  FEEDBACK_INDEX: ".lumenflow/feedback-index.ndjson",
  /** Current session file */
  SESSION_CURRENT: ".lumenflow/sessions/current.json",
  /** WU events log */
  WU_EVENTS: ".lumenflow/state/wu-events.jsonl",
  /** Lock files directory (lane locks - persisted) */
  LOCKS_DIR: ".lumenflow/locks",
  /** Force bypass audit log */
  FORCE_BYPASSES: ".lumenflow/force-bypasses.log",
  /** WU-1539: Skip-gates audit log */
  SKIP_GATES_AUDIT: ".lumenflow/skip-gates-audit.log",
  /** WU-1539: Skip-COS-gates audit log */
  SKIP_COS_GATES_AUDIT: ".lumenflow/skip-cos-gates-audit.log",
  /** Test baseline file for ratchet pattern (WU-1430) */
  TEST_BASELINE: ".lumenflow/test-baseline.json",
  /** Templates directory (WU-1430) */
  TEMPLATES_DIR: ".lumenflow/templates",
  /** Spawn prompt templates (WU-1674) */
  SPAWN_PROMPT_DIR: ".lumenflow/templates/spawn-prompt",
  /** Template manifest file (WU-1430) */
  TEMPLATE_MANIFEST: ".lumenflow/templates/manifest.yaml",
  /** Skills directory for agent skills (WU-1430) */
  SKILLS_DIR: ".lumenflow/skills",
  /** Agents directory for agent definitions (WU-1430) */
  AGENTS_DIR: ".lumenflow/agents",
  /** Methodology log for delegation telemetry (WU-1430) */
  METHODOLOGY_LOG: ".lumenflow/telemetry/methodology.ndjson",
  /** Prompt metrics cache (WU-1430) */
  PROMPT_METRICS: ".lumenflow/telemetry/prompt-metrics.json",
  /** Prompt lint results (WU-1430) */
  PROMPT_LINT: ".lumenflow/telemetry/prompt-lint.ndjson",
  /** Recovery markers directory (WU-1430) */
  RECOVERY_DIR: ".lumenflow/recovery",
  /** Checkpoints directory (WU-1430) */
  CHECKPOINTS_DIR: ".lumenflow/checkpoints",
  /** WU-1471: Hook counters directory for auto-checkpoint interval tracking */
  HOOK_COUNTERS_DIR: ".lumenflow/state/hook-counters",
  /** Cache directory under user home (WU-1430) */
  HOME_CACHE: "cache",
  /**
   * WU-1174: Runtime lock directory for merge/cleanup locks
   *
   * These locks are transient and should NOT be created in the main checkout
   * because wu:done runs from main. Using os.tmpdir() ensures:
   * 1. Locks don't pollute the git working tree
   * 2. Locks work across processes on the same machine
   * 3. No "Working tree is not clean" errors if process crashes
   *
   * Note: Lane locks still use LOCKS_DIR (.lumenflow/locks) because they need
   * to persist across sessions and be visible to other agents.
   */
  LOCK_DIR: path.join(tmpdir(), LOCK_DIR_NAME)
};

// ../core/dist/wu-cli-constants.js
var CLI_FLAGS = {
  // Common flags
  DRY_RUN: "--dry-run",
  EXECUTE: "--execute",
  HELP: "--help",
  HELP_SHORT: "-h",
  VERBOSE: "--verbose",
  FIX: "--fix",
  JSON: "--json",
  FORCE: "--force",
  // Gate-specific flags
  DOCS_ONLY: "--docs-only",
  FULL_LINT: "--full-lint",
  FULL_TESTS: "--full-tests",
  // WU-1920: Force full test suite
  FULL_COVERAGE: "--full-coverage",
  // WU-2244: Force full coverage (deterministic)
  COVERAGE_MODE: "--coverage-mode=",
  // WU-specific flags
  WU: "--wu",
  ID: "--id",
  ALL: "--all",
  CHECK: "--check",
  TIER: "--tier",
  AGENT_TYPE: "--agent-type",
  DESCRIPTION: "--description",
  ACCEPTANCE: "--acceptance",
  VALIDATE: "--validate",
  REASON: "--reason",
  WEEK: "--week",
  SINCE: "--since"
};
var PKG_FLAGS = {
  FILTER: "--filter",
  FROZEN_LOCKFILE: "--frozen-lockfile",
  /** WU-1527: Required for pnpm add at workspace root in monorepos */
  WORKSPACE_ROOT: "-w",
  SAVE_DEV: "--save-dev",
  SAVE_EXACT: "--save-exact"
};
var ESLINT_FLAGS = {
  MAX_WARNINGS: "--max-warnings",
  NO_WARN_IGNORED: "--no-warn-ignored",
  CACHE: "--cache",
  CACHE_STRATEGY: "--cache-strategy",
  CACHE_LOCATION: "--cache-location",
  PASS_ON_UNPRUNED: "--pass-on-unpruned-suppressions"
};
var SCRIPTS = {
  LINT: "lint",
  TEST: "test",
  TEST_UNIT: "test:unit",
  BUILD: "build",
  FORMAT: "format",
  FORMAT_CHECK: "format:check",
  TYPECHECK: "typecheck",
  DEV: "dev",
  SPEC_LINTER: "spec:linter",
  /** WU-1467: Stub script -- not an enforced gate. Retained for script surface only. */
  PROMPTS_LINT: "prompts:lint",
  RUN: "run",
  GATES: "gates",
  /** WU-1467: Stub script -- not an enforced gate. Retained for script surface only. */
  COS_GATES: "cos:gates",
  PRETTIER: "prettier",
  /** WU-1467: Root script surface for tasks:validate (delegates to wu:validate --all) */
  TASKS_VALIDATE: "tasks:validate"
};
var GATE_NAMES = {
  /** WU-2252: Invariants check (runs first, non-bypassable) */
  INVARIANTS: "invariants",
  FORMAT_CHECK: "format:check",
  SPEC_LINTER: "spec:linter",
  /** WU-1467: PROMPTS_LINT removed -- was a stub (exit 0), not an authoritative gate */
  BACKLOG_SYNC: "backlog-sync",
  /** WU-2009: Spec-to-code absolute claim drift detector */
  CLAIM_VALIDATION: "claim-validation",
  SUPABASE_DOCS_LINTER: "supabase-docs:linter",
  LINT: "lint",
  /** WU-2158: Generic co-change rule enforcement gate */
  CO_CHANGE: "co-change",
  TYPECHECK: "typecheck",
  TEST: "test",
  COVERAGE: "coverage",
  /** WU-2062: Safety-critical tests (always run) */
  SAFETY_CRITICAL_TEST: "safety-critical-test",
  /** WU-2062: Integration tests (for high-risk changes) */
  INTEGRATION_TEST: "integration-test",
  /** WU-1191: Lane health check (overlap detection) */
  LANE_HEALTH: "lane-health",
  /** WU-1315: Onboarding smoke test (init + wu:create validation) */
  ONBOARDING_SMOKE_TEST: "onboarding-smoke-test"
};
var GATE_COMMANDS = {
  /** WU-2252: Triggers invariants check */
  INVARIANTS: "invariants",
  /** Triggers incremental lint (only changed files) */
  INCREMENTAL: "incremental",
  /** Triggers incremental tests (only tests related to changed files) - WU-1920 */
  INCREMENTAL_TEST: "incremental-test",
  /** Triggers coverage gate check */
  COVERAGE_GATE: "coverage-gate",
  /** WU-2062: Triggers safety-critical tests (always run) */
  SAFETY_CRITICAL_TEST: "safety-critical-test",
  /** WU-2062: Triggers tiered test execution based on risk */
  TIERED_TEST: "tiered-test",
  /** WU-1315: Triggers onboarding smoke test */
  ONBOARDING_SMOKE_TEST: "onboarding-smoke-test"
};
var PRETTIER_FLAGS = {
  WRITE: "--write"
};
var PKG_MANAGER = "pnpm";
var PKG_COMMANDS = {
  INSTALL: "install",
  /** WU-1527: Used by lumenflow-upgrade and deps-add */
  ADD: "add",
  REMOVE: "remove"
};
var PACKAGES = {
  WEB: "web",
  APPLICATION: "@lumenflow/core",
  DOMAIN: "@lumenflow/core",
  INFRASTRUCTURE: "@lumenflow/cli"
};
var STDIO = {
  /** Pipe stdout/stderr (capture output) */
  PIPE: "pipe",
  /** Inherit stdio from parent process */
  INHERIT: "inherit",
  /** Ignore stdio (silent execution) */
  IGNORE: "ignore"
};
var STDIO_MODES = {
  /** Inherit stdio from parent process (shows output in console) */
  INHERIT: "inherit",
  /** Pipe stdio to parent process (capture output) */
  PIPE: "pipe",
  /** Ignore stdio (discard output) */
  IGNORE: "ignore"
};
var EXIT_CODES = {
  /** Success exit code */
  SUCCESS: 0,
  /** Generic error exit code */
  ERROR: 1,
  /** Fatal or distinct failure exit code */
  FAILURE: 2
};
var STREAM_ERRORS = {
  /**
   * EPIPE error code
   *
   * Occurs when writing to a pipe whose read end has been closed.
   * This is normal behavior when CLI output is piped through head/tail.
   * Unix convention: exit with code 0 on EPIPE (consumer got what it needed).
   */
  EPIPE: "EPIPE"
};
var ESLINT_COMMANDS = {
  /** ESLint CLI command */
  ESLINT: "eslint"
};
var ESLINT_DEFAULTS = {
  /**
   * Maximum allowed warnings
   *
   * WU-1866: Temporarily increased from 0 to 100 to unblock gates.
   * There are ~82 pre-existing warnings that need proper fixes.
   */
  MAX_WARNINGS: "100"
};
var CACHE_STRATEGIES = {
  CONTENT: "content",
  METADATA: "metadata"
};
var PRETTIER_ARGS = {
  /** Check formatting without writing */
  CHECK: "--check",
  /** List files with formatting differences */
  LIST_DIFFERENT: "--list-different"
};
var MICRO_WORKTREE_OPERATIONS = {
  WU_CREATE: "wu-create",
  WU_EDIT: "wu-edit",
  WU_DELETE: "wu-delete",
  // WU-1809: Safe WU deletion
  WU_DONE: "wu-done",
  WU_BLOCK: "wu-block",
  WU_UNBLOCK: "wu-unblock",
  WU_CLAIM: "wu-claim",
  ORPHAN_REPAIR: "orphan-repair",
  // WU-1437: Pre-claim orphan WU repair
  INITIATIVE_EDIT: "initiative-edit",
  // WU-1451: Initiative edit operation
  INITIATIVE_BULK_ASSIGN: "initiative-bulk-assign",
  // WU-2553: Bulk WU assignment
  LANE_EDIT: "lane-edit",
  // WU-1854: Safe in-place lane definition editing
  WU_ESCALATE: "wu-escalate"
  // WU-2225: Resolve escalation triggers
};
var TELEMETRY_STEPS = {
  GATES: "gates",
  /** WU-1467: COS_GATES removed -- was a stub (exit 0), not an authoritative step */
  PARALLEL_DETECTION: "parallel_detection",
  PARALLEL_AUTO_REBASE: "parallel_auto_rebase"
};
var SKIP_GATES_REASONS = {
  CHECKPOINT_VALID: "checkpoint_valid"
};
var CHECKPOINT_MESSAGES = {
  SKIPPING_GATES_VALID: "Skipping gates - valid checkpoint found",
  CHECKPOINT_LABEL: "Checkpoint",
  GATES_PASSED_AT: "Gates passed at",
  COULD_NOT_CREATE: "Could not create WU-1747 checkpoint"
};
var PROCESS_DETECTION = {
  /**
   * Process names that commonly interfere with gates execution.
   * These processes may:
   * - Write to stdout/stderr (causing mixed output)
   * - Hold file locks that may cause test failures
   * - Consume resources that affect gate performance
   */
  INTERFERING_NAMES: ["node", "pnpm", "npm", "vitest", "tsx", "eslint", "prettier", "tsc", "turbo"],
  /** Maximum characters to display for command in warnings */
  CMD_DISPLAY_LIMIT: 60
};

// ../core/dist/wu-ui-constants.js
var BACKLOG_SECTIONS = {
  READY: "## \u{1F680} Ready (pull from here)",
  IN_PROGRESS: "## \u{1F527} In progress",
  BLOCKED: "## \u26D4 Blocked",
  DONE: "## \u2705 Done"
};
var STATUS_SECTIONS = {
  IN_PROGRESS: "## In Progress",
  BLOCKED: "## Blocked",
  COMPLETED: "## Completed"
};
var LOG_PREFIX = {
  DONE: "[wu-done]",
  CLAIM: "[wu-claim]",
  CREATE: "[wu:create]",
  EDIT: "[wu:edit]",
  DELETE: "[wu:delete]",
  BLOCK: "[wu-block]",
  UNBLOCK: "[wu-unblock]",
  UNLOCK_LANE: "[wu-unlock-lane]",
  CLEANUP: "[wu-cleanup]",
  PRUNE: "[wu-prune]",
  REPAIR: "[wu:repair]",
  CONSISTENCY: "[wu-consistency]",
  PREFLIGHT: "[wu-preflight]",
  INITIATIVE_PLAN: "[initiative:plan]",
  PLAN_CREATE: "[plan:create]",
  PLAN_LINK: "[plan:link]",
  PLAN_EDIT: "[plan:edit]",
  PLAN_PROMOTE: "[plan:promote]",
  ESCALATE: "[wu:escalate]"
};
var EMOJI = {
  SUCCESS: "\u2705",
  FAILURE: "\u274C",
  WARNING: "\u26A0\uFE0F",
  INFO: "\u2139\uFE0F",
  BLOCKED: "\u26D4",
  ROCKET: "\u{1F680}",
  WRENCH: "\u{1F527}",
  TARGET: "\u{1F3AF}",
  MEMO: "\u{1F4DD}",
  FOLDER: "\u{1F4CD}"
};
var BOX = {
  /** Top border: ╔══...══╗ (66 chars inside + corners = 68 total) */
  TOP: "\u2554\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2557",
  /** Middle separator: ╠══...══╣ */
  MID: "\u2560\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2563",
  /** Bottom border: ╚══...══╝ */
  BOT: "\u255A\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u255D",
  /** Side border for content lines */
  SIDE: "\u2551"
};
var UI = {
  /** Width for error/info boxes in console output */
  ERROR_BOX_WIDTH: 70,
  /** Number of lines to show in status file preview */
  STATUS_PREVIEW_LINES: 5
};
var YAML_OPTIONS = {
  /** Standard line width for YAML dump (100 chars) */
  LINE_WIDTH: 100,
  /** No line wrapping (-1 disables wrapping) */
  NO_WRAP: -1
};
var STRING_LITERALS = {
  /** Newline character */
  NEWLINE: "\n",
  /** Double newline (paragraph separator) */
  DOUBLE_NEWLINE: "\n\n",
  /** Space character */
  SPACE: " ",
  /** Empty string */
  EMPTY: "",
  /** Tab character */
  TAB: "	",
  /** Comma separator */
  COMMA: ",",
  /** Colon separator */
  COLON: ":",
  /** Dash/hyphen */
  DASH: "-",
  /** Forward slash */
  SLASH: "/"
};
var READINESS_UI = {
  /** Box width (inner content area) */
  BOX_WIDTH: 50,
  /** Box drawing characters */
  BOX: {
    TOP_LEFT: "\u250C",
    TOP_RIGHT: "\u2510",
    BOTTOM_LEFT: "\u2514",
    BOTTOM_RIGHT: "\u2518",
    HORIZONTAL: "\u2500",
    VERTICAL: "\u2502"
  },
  /** Status messages */
  MESSAGES: {
    READY_YES: "\u2705 Ready to claim: YES",
    READY_NO: "\u26A0\uFE0F  Ready to claim: NO",
    MISSING_HEADER: "Missing:",
    BULLET: "\u2022"
  },
  /** Error truncation length */
  ERROR_MAX_LENGTH: 46,
  ERROR_TRUNCATE_LENGTH: 43,
  TRUNCATION_SUFFIX: "...",
  /** Padding calculations (relative to BOX_WIDTH) */
  PADDING: {
    READY_YES: 27,
    // 50 - len("... Ready to claim: YES") - 1
    READY_NO: 28,
    // 50 - len("...  Ready to claim: NO") - 1
    MISSING_HEADER: 41,
    // 50 - len("Missing:") - 1
    ERROR_BULLET: 45
    // 50 - len("  ... ") - 1
  }
};

// ../core/dist/wu-domain-constants.js
import path2 from "path";
import { kebabCase } from "change-case";
var PATTERNS = {
  /** WU identifier format: WU-123 */
  WU_ID: /^WU-\d+$/,
  /** Extract WU ID from text: captures "WU-123" */
  WU_ID_EXTRACT: /WU-\d+/,
  /**
   * Extract WU ID from worktree paths (case-insensitive)
   *
   * WU-1090: Worktree names use lowercase like 'framework-core-wu-1090'
   * This pattern matches both 'WU-123' and 'wu-123' to support
   * extracting WU IDs from worktree paths.
   */
  WU_ID_EXTRACT_CI: /wu-\d+/i,
  /** Lane branch format: lane/<lane-kebab>/wu-<id> */
  LANE_BRANCH: /^lane\/[\w-]+\/wu-\d+$/,
  /** Worktree path format: worktrees/<lane-kebab>-wu-<id> */
  WORKTREE_PATH: /^worktrees\/[\w-]+-wu-\d+$/
};
var COMMIT_FORMATS = {
  CLAIM: (id, laneKebab) => `wu(${id}): claim for ${laneKebab} lane`,
  DONE: (id, title) => `wu(${id}): done - ${title}`,
  CREATE: (id, title) => `docs: create ${id.toLowerCase()} for ${title}`,
  EDIT: (id) => `docs: edit ${id.toLowerCase()} spec`,
  SPEC_UPDATE: (id) => `wu(${id.toLowerCase()}): spec update`,
  BLOCK: (id) => `wu(${id}): block`,
  UNBLOCK: (id) => `wu(${id}): unblock`,
  REPAIR: (id) => `fix(${id}): repair state inconsistency`,
  REBASE_ARTIFACT_CLEANUP: (id) => `chore(${id.toLowerCase()}): remove rebased completion artifacts`,
  BACKLOG_REPAIR: (id) => `chore(repair): repair backlog duplicates for ${id.toLowerCase()}`,
  ESCALATE: (id) => `wu(${id.toLowerCase()}): resolve escalation`
};
var CONSISTENCY_TYPES = {
  /** WU YAML has status 'done' but WU appears in status.md In Progress section */
  YAML_DONE_STATUS_IN_PROGRESS: "YAML_DONE_STATUS_IN_PROGRESS",
  /** WU appears in both Done AND In Progress sections of backlog.md */
  BACKLOG_DUAL_SECTION: "BACKLOG_DUAL_SECTION",
  /** WU YAML has status 'done' but no stamp file exists */
  YAML_DONE_NO_STAMP: "YAML_DONE_NO_STAMP",
  /** WU has status 'done' but still has an associated worktree */
  ORPHAN_WORKTREE_DONE: "ORPHAN_WORKTREE_DONE",
  /** Stamp file exists but WU YAML status is not 'done' (partial wu:done failure) */
  STAMP_EXISTS_YAML_NOT_DONE: "STAMP_EXISTS_YAML_NOT_DONE",
  /** WU is claimed but its worktree directory is missing */
  MISSING_WORKTREE_CLAIMED: "MISSING_WORKTREE_CLAIMED"
};
var CONSISTENCY_MESSAGES = {
  MISSING_WORKTREE_CLAIMED: (id, status, worktreePath) => `WU ${id} is '${status}' but worktree path is missing (${worktreePath})`,
  MISSING_WORKTREE_CLAIMED_REPAIR: "Recover worktree or re-claim WU"
};
var WORKTREE_WARNINGS = {
  MISSING_TRACKED_HEADER: "Tracked worktrees missing on disk (possible manual deletion):",
  MISSING_TRACKED_LINE: (worktreePath) => `Missing: ${worktreePath}`
};
var CLEANUP_GUARD = {
  REASONS: {
    UNCOMMITTED_CHANGES: "UNCOMMITTED_CHANGES",
    UNPUSHED_COMMITS: "UNPUSHED_COMMITS",
    STATUS_NOT_DONE: "STATUS_NOT_DONE",
    MISSING_STAMP: "MISSING_STAMP",
    PR_NOT_MERGED: "PR_NOT_MERGED"
  },
  TITLES: {
    BLOCKED: "CLEANUP BLOCKED",
    NEXT_STEPS: "Next steps:"
  },
  MESSAGES: {
    UNCOMMITTED_CHANGES: "Worktree has uncommitted changes. Refusing to delete.",
    UNPUSHED_COMMITS: "Worktree has unpushed commits. Refusing to delete.",
    STATUS_NOT_DONE: "WU YAML status is not done. Refusing to delete.",
    MISSING_STAMP: "WU stamp is missing. Refusing to delete.",
    PR_NOT_MERGED: "PR is not merged (or cannot be verified). Refusing to delete."
  },
  /* eslint-disable sonarjs/no-duplicate-string -- Intentional: cleanup instructions repeated for each error type for readability */
  NEXT_STEPS: {
    DEFAULT: [
      { text: "1. Resolve the issue above", appendId: false },
      { text: "2. Re-run: pnpm wu:cleanup --id", appendId: true }
    ],
    UNCOMMITTED_CHANGES: [
      { text: "1. Commit or stash changes in the worktree", appendId: false },
      { text: "2. Re-run: pnpm wu:cleanup --id", appendId: true }
    ],
    UNPUSHED_COMMITS: [
      { text: "1. Push the lane branch to origin", appendId: false },
      { text: "2. Re-run: pnpm wu:cleanup --id", appendId: true }
    ],
    STATUS_NOT_DONE: [
      {
        text: `1. Complete the WU with ${LOG_PREFIX.DONE} (creates stamp + done status)`,
        appendId: false
      },
      { text: "2. Re-run: pnpm wu:cleanup --id", appendId: true }
    ],
    MISSING_STAMP: [
      { text: "1. Run wu:done to create the stamp file", appendId: false },
      { text: "2. Re-run: pnpm wu:cleanup --id", appendId: true }
    ],
    PR_NOT_MERGED: [
      { text: "1. Merge the PR in GitHub", appendId: false },
      { text: "2. Re-run: pnpm wu:cleanup --id", appendId: true }
    ]
  },
  /* eslint-enable sonarjs/no-duplicate-string */
  PR_CHECK: {
    START: "Verifying PR merge status...",
    RESULT: "PR merge verification via"
  }
};
var SESSION = {
  /** Standard length for displaying session ID prefix (e.g., "sess-123") */
  ID_DISPLAY_LENGTH: 8
};
var VALIDATION = {
  /** Minimum description length for WU spec completeness */
  MIN_DESCRIPTION_LENGTH: 50
};
var THRESHOLDS = {
  /** Info threshold: commits behind main to suggest rebasing (WU-1370) */
  BRANCH_DRIFT_INFO: 10,
  /** Warning threshold: commits behind main where rebase is recommended (WU-1370) */
  BRANCH_DRIFT_WARNING: 15,
  /** Maximum commits behind main before requiring rebase (WU-755 pre-flight) */
  BRANCH_DRIFT_MAX: 20
};
var DEFAULTS = {
  /** Default worktrees directory */
  WORKTREES_DIR: "worktrees",
  /** Maximum commit subject length (commitlint default) */
  MAX_COMMIT_SUBJECT: 100,
  /** Parent directory traversal depth from tools/lib to project root */
  PROJECT_ROOT_DEPTH: 2,
  /**
   * Default email domain for username -> email conversion
   * WU-1068: Made configurable, no longer hardcoded to exampleapp.co.uk
   * @see user-normalizer.ts - Infers from git config first
   */
  EMAIL_DOMAIN: "example.com"
};
var WU_DEFAULTS = {
  /** Default priority level (medium priority) */
  priority: "P2",
  /** Default status for new WUs */
  status: "ready",
  /** Default work type */
  type: "feature",
  /** Default code paths (empty until populated) */
  code_paths: [],
  /** Default test structure (includes all test types) */
  tests: {
    manual: [],
    unit: [],
    integration: [],
    e2e: []
  },
  /** Default artifacts (empty - wu:done adds stamp) */
  artifacts: [],
  /** Default dependencies (no blockers) */
  dependencies: [],
  /** Default risks (none identified) */
  risks: [],
  /** Default notes (empty string, not undefined) */
  notes: "",
  /** Default review requirement (agent-completed WUs) */
  requires_review: false
};
var SAFETY_CRITICAL_TEST_GLOBS = Object.freeze([
  // Escalation trigger tests
  "apps/web/src/**/*escalation*.test.{ts,tsx}",
  "apps/web/src/**/*Escalation*.test.{ts,tsx}",
  // Privacy detection tests
  "apps/web/src/**/*privacy*.test.{ts,tsx}",
  "apps/web/src/**/*Privacy*.test.{ts,tsx}",
  // Constitutional enforcer tests
  "apps/web/src/**/*constitutional*.test.{ts,tsx}",
  "apps/web/src/**/*Constitutional*.test.{ts,tsx}",
  // Safe prompt wrapper tests
  "apps/web/src/**/*safePrompt*.test.{ts,tsx}",
  "apps/web/src/**/*SafePrompt*.test.{ts,tsx}",
  // Crisis/emergency handling tests
  "apps/web/src/**/*crisis*.test.{ts,tsx}",
  "apps/web/src/**/*Crisis*.test.{ts,tsx}"
]);
var LANE_PATH_PATTERNS = {
  Operations: {
    exclude: ["ai/prompts/**", "apps/web/src/lib/prompts/**"],
    allowExceptions: []
  },
  Intelligence: {
    exclude: ["tools/**"],
    allowExceptions: ["tools/lib/prompt-*", "tools/prompts-eval/**"]
  }
};
function toKebab(lane) {
  if (lane == null)
    return "";
  const normalized = String(lane).trim();
  if (normalized === "")
    return "";
  return kebabCase(normalized);
}
function getWorktreePath(lane, id) {
  const laneKebab = toKebab(lane);
  const idLower = id.toLowerCase();
  return `${DEFAULTS.WORKTREES_DIR}/${laneKebab}-${idLower}`;
}
function getLaneBranch(lane, id) {
  const laneKebab = toKebab(lane);
  const idLower = id.toLowerCase();
  return `lane/${laneKebab}/${idLower}`;
}
function getProjectRoot(moduleUrl) {
  const { dirname } = path2;
  const currentDir = dirname(new URL(moduleUrl).pathname);
  let root = currentDir;
  for (let i = 0; i < DEFAULTS.PROJECT_ROOT_DEPTH; i++) {
    root = dirname(root);
  }
  return root;
}

// ../core/dist/wu-context-constants.js
function getSizingGuideRef() {
  try {
    return getConfig().directories.sizingGuidePath;
  } catch {
    return DOCS_LAYOUT_PRESETS.simple.sizingGuidePath;
  }
}
var CONTEXT_VALIDATION = {
  /** Location types for WU operations */
  LOCATION_TYPES: {
    /** Main checkout (not a worktree) */
    MAIN: "main",
    /** Inside a worktree */
    WORKTREE: "worktree",
    /** Detached HEAD state */
    DETACHED: "detached",
    /** Unknown location (not a git repo or error) */
    UNKNOWN: "unknown"
  },
  /** Validation error codes */
  ERROR_CODES: {
    /** Command run from wrong location type */
    WRONG_LOCATION: "WRONG_LOCATION",
    /** Target WU does not exist */
    WU_NOT_FOUND: "WU_NOT_FOUND",
    /** WU with this ID already exists */
    WU_ALREADY_EXISTS: "WU_ALREADY_EXISTS",
    /** WU in unexpected status for command */
    WRONG_WU_STATUS: "WRONG_WU_STATUS",
    /** Lane already has WU in progress */
    LANE_OCCUPIED: "LANE_OCCUPIED",
    /** Worktree already exists for WU */
    WORKTREE_EXISTS: "WORKTREE_EXISTS",
    /** Expected worktree not found */
    WORKTREE_MISSING: "WORKTREE_MISSING",
    /** Gates haven't run or failed */
    GATES_NOT_PASSED: "GATES_NOT_PASSED",
    /** Uncommitted changes exist */
    DIRTY_GIT: "DIRTY_GIT",
    /** Cannot reach origin remote */
    REMOTE_UNAVAILABLE: "REMOTE_UNAVAILABLE",
    /** YAML and state store disagree */
    INCONSISTENT_STATE: "INCONSISTENT_STATE"
  },
  /** Recovery action types */
  RECOVERY_ACTIONS: {
    /** Reconcile state and continue working (preserves work) */
    RESUME: "resume",
    /** Discard worktree, reset WU to ready */
    RESET: "reset",
    /** Remove all artifacts completely (requires --force) */
    NUKE: "nuke",
    /** Remove leftover worktree (for done WUs) */
    CLEANUP: "cleanup",
    /** Complete a WU that is already merged but not stamped (WU-1746) */
    COMPLETE: "complete"
  },
  /** Recovery issue codes */
  RECOVERY_ISSUES: {
    /** Worktree exists but WU status is "ready" */
    PARTIAL_CLAIM: "PARTIAL_CLAIM",
    /** WU is "in_progress" but worktree does not exist */
    ORPHAN_CLAIM: "ORPHAN_CLAIM",
    /** YAML status differs from state store */
    INCONSISTENT_STATE: "INCONSISTENT_STATE",
    /** Branch exists but worktree does not */
    ORPHAN_BRANCH: "ORPHAN_BRANCH",
    /** Lock file from different WU */
    STALE_LOCK: "STALE_LOCK",
    /** WU is done but worktree was not cleaned up */
    LEFTOVER_WORKTREE: "LEFTOVER_WORKTREE",
    /** WU branch is merged to main but WU is not stamped as done (WU-1746) */
    MERGED_NOT_DONE: "MERGED_NOT_DONE"
  },
  /** Predicate severity levels */
  SEVERITY: {
    /** Blocks command execution */
    ERROR: "error",
    /** Shows warning but allows execution */
    WARNING: "warning"
  },
  /** Performance thresholds */
  THRESHOLDS: {
    /** Max context computation time (ms) - acceptance criterion */
    CONTEXT_COMPUTATION_MS: 100,
    /** Max stale lock age (hours) */
    STALE_LOCK_HOURS: 24
  },
  /** Feature flag keys for workspace.yaml */
  FEATURE_FLAGS: {
    /** Enable context-aware validation */
    CONTEXT_VALIDATION: "context_validation",
    /** Validation behavior: 'off' | 'warn' | 'error' */
    VALIDATION_MODE: "validation_mode",
    /** Show next steps after successful commands */
    SHOW_NEXT_STEPS: "show_next_steps",
    /** Enable wu:recover command */
    RECOVERY_COMMAND: "recovery_command"
  },
  /** Validation modes */
  VALIDATION_MODES: {
    /** No validation (legacy behavior) */
    OFF: "off",
    /** Show warnings but proceed */
    WARN: "warn",
    /** Block on validation failures */
    ERROR: "error"
  },
  /** Command names for the registry */
  COMMANDS: {
    WU_CREATE: "wu:create",
    WU_CLAIM: "wu:claim",
    WU_PREP: "wu:prep",
    WU_DONE: "wu:done",
    WU_BLOCK: "wu:block",
    WU_UNBLOCK: "wu:unblock",
    WU_STATUS: "wu:status",
    WU_RECOVER: "wu:recover",
    GATES: "gates"
  }
};
var ENV_VARS = {
  /** Headless mode for non-interactive execution */
  HEADLESS: "LUMENFLOW_HEADLESS",
  /** Admin mode for elevated operations */
  ADMIN: "LUMENFLOW_ADMIN",
  /** Force bypass for git hooks */
  FORCE: "LUMENFLOW_FORCE",
  /** Reason for force bypass (audit trail) */
  FORCE_REASON: "LUMENFLOW_FORCE_REASON",
  /** Identifies the WU tool performing a git operation */
  WU_TOOL: "LUMENFLOW_WU_TOOL",
  /** Allows worktree removal operations */
  WORKTREE_REMOVE_ALLOWED: "LUMENFLOW_WORKTREE_REMOVE_ALLOWED",
  /** Claude Code agent detection */
  CLAUDE_CODE: "CLAUDE_CODE",
  /** Cloud mode for branch-PR workflows */
  CLOUD: "LUMENFLOW_CLOUD",
  /** LumenFlow home directory override */
  HOME: "LUMENFLOW_HOME",
  /** Test baseline path override */
  TEST_BASELINE: "LUMENFLOW_TEST_BASELINE",
  /** Legacy rollback mode */
  LEGACY_ROLLBACK: "LUMENFLOW_LEGACY_ROLLBACK",
  /** Git shim recursion guard */
  GIT_SHIM_ACTIVE: "LUMENFLOW_GIT_SHIM_ACTIVE",
  /** pnpm shim recursion guard */
  PNPM_SHIM_ACTIVE: "LUMENFLOW_PNPM_SHIM_ACTIVE",
  /** Agent session identifier */
  AGENT_SESSION: "LUMENFLOW_AGENT_SESSION",
  /** MCP project root override */
  PROJECT_ROOT: "LUMENFLOW_PROJECT_ROOT",
  /** MCP log level override */
  MCP_LOG_LEVEL: "LUMENFLOW_MCP_LOG_LEVEL",
  /** MCP migration compatibility mode */
  MCP_MIGRATION_COMPAT_MODE: "LUMENFLOW_MCP_MIGRATION_COMPAT_MODE",
  /** Sandbox allow unsandboxed override */
  SANDBOX_ALLOW_UNSANDBOXED: "LUMENFLOW_SANDBOX_ALLOW_UNSANDBOXED",
  /** Control plane auth token */
  CONTROL_PLANE_TOKEN: "LUMENFLOW_CONTROL_PLANE_TOKEN",
  /** Custom git binary path */
  GIT_BINARY: "LUMENFLOW_GIT_BINARY",
  /** Registry auth token for pack publishing */
  REGISTRY_TOKEN: "LUMENFLOW_REGISTRY_TOKEN",
  /** Agent log directory override */
  LOG_DIR: "LUMENFLOW_LOG_DIR",
  /** CI environment marker */
  CI: "CI",
  /** GitHub Actions environment marker */
  GITHUB_ACTIONS: "GITHUB_ACTIONS",
  /** Debug logging toggle */
  DEBUG: "DEBUG",
  /** Hostname provided by runtime/container */
  HOSTNAME: "HOSTNAME",
  /** Git author email override */
  GIT_AUTHOR_EMAIL: "GIT_AUTHOR_EMAIL",
  /** Git editor override used for non-interactive rebase flows */
  GIT_EDITOR: "GIT_EDITOR",
  /** Optional user identity used by wu:done preflight */
  GIT_USER: "GIT_USER",
  /** Shell user identity fallback */
  USER: "USER",
  /** User profile path fallback on Windows */
  USERPROFILE: "USERPROFILE",
  /** Explicit color disable flag */
  NO_COLOR: "NO_COLOR",
  /** Explicit color level override */
  FORCE_COLOR: "FORCE_COLOR",
  /** Verbose validate output toggle */
  VERBOSE: "VERBOSE",
  /** Test-mode toggle for command logging */
  TEST_MODE: "TEST_MODE",
  /** Test-only branch override for command logging */
  TEST_BRANCH: "TEST_BRANCH",
  /** Test-only worktree override for command logging */
  TEST_WORKTREE: "TEST_WORKTREE",
  /** Stale lock threshold override (hours) */
  STALE_LOCK_THRESHOLD_HOURS: "STALE_LOCK_THRESHOLD_HOURS",
  /** Claude project directory provided by client runtime */
  CLAUDE_PROJECT_DIR: "CLAUDE_PROJECT_DIR"
};
var SIZING_GUIDE_REF = getSizingGuideRef();
var CLAUDE_HOOKS = {
  /** Hook script filenames */
  SCRIPTS: {
    ENFORCE_WORKTREE: "enforce-worktree.sh",
    REQUIRE_WU: "require-wu.sh",
    WARN_INCOMPLETE: "warn-incomplete.sh",
    PRE_COMPACT_CHECKPOINT: "pre-compact-checkpoint.sh",
    SESSION_START_RECOVERY: "session-start-recovery.sh",
    /** WU-1471: Auto-checkpoint hook for PostToolUse and SubagentStop events */
    AUTO_CHECKPOINT: "auto-checkpoint.sh"
  },
  /** Hook command path prefix (uses Claude Code's $CLAUDE_PROJECT_DIR variable) */
  PATH_PREFIX: "$CLAUDE_PROJECT_DIR/.claude/hooks",
  /** Hook matchers for settings.json */
  MATCHERS: {
    ALL: ".*",
    WRITE_EDIT: "Write|Edit",
    COMPACT: "compact",
    RESUME: "resume",
    CLEAR: "clear",
    /** WU-1471: Matcher for SubagentStop hook event */
    SUBAGENT_STOP: ".*",
    /** WU-1502: Matcher for Bash tool PostToolUse */
    BASH: "Bash"
  },
  /** Template paths (relative to templates directory) */
  TEMPLATES: {
    SETTINGS: "vendors/claude/.claude/settings.json.template",
    PRE_COMPACT: "vendors/claude/.claude/hooks/pre-compact-checkpoint.sh",
    SESSION_START: "vendors/claude/.claude/hooks/session-start-recovery.sh"
  }
};
var getHookCommand = (scriptName) => `${CLAUDE_HOOKS.PATH_PREFIX}/${scriptName}`;

export {
  BRANCHES,
  REMOTES,
  GIT_REFS,
  GIT,
  REAL_GIT,
  GIT_FLAGS,
  GIT_COMMANDS,
  FILE_SYSTEM,
  CONFIG_FILES,
  DIRECTORIES,
  BUILD_ARTIFACT_GLOBS,
  BUILD_ARTIFACT_IGNORES,
  FILE_EXTENSIONS,
  PATH_LITERALS,
  PATH_SLICE_LENGTHS,
  LOCK_DIR_NAME,
  LUMENFLOW_PATHS,
  CLI_FLAGS,
  PKG_FLAGS,
  ESLINT_FLAGS,
  SCRIPTS,
  GATE_NAMES,
  GATE_COMMANDS,
  PRETTIER_FLAGS,
  PKG_MANAGER,
  PKG_COMMANDS,
  PACKAGES,
  STDIO,
  STDIO_MODES,
  EXIT_CODES,
  STREAM_ERRORS,
  ESLINT_COMMANDS,
  ESLINT_DEFAULTS,
  CACHE_STRATEGIES,
  PRETTIER_ARGS,
  MICRO_WORKTREE_OPERATIONS,
  TELEMETRY_STEPS,
  SKIP_GATES_REASONS,
  CHECKPOINT_MESSAGES,
  PROCESS_DETECTION,
  BACKLOG_SECTIONS,
  STATUS_SECTIONS,
  LOG_PREFIX,
  EMOJI,
  BOX,
  UI,
  YAML_OPTIONS,
  STRING_LITERALS,
  READINESS_UI,
  PATTERNS,
  COMMIT_FORMATS,
  CONSISTENCY_TYPES,
  CONSISTENCY_MESSAGES,
  WORKTREE_WARNINGS,
  CLEANUP_GUARD,
  SESSION,
  VALIDATION,
  THRESHOLDS,
  DEFAULTS,
  WU_DEFAULTS,
  LANE_PATH_PATTERNS,
  toKebab,
  getWorktreePath,
  getLaneBranch,
  getProjectRoot,
  CONTEXT_VALIDATION,
  ENV_VARS,
  SIZING_GUIDE_REF,
  CLAUDE_HOOKS,
  getHookCommand
};
