export declare const DEFAULT_RULES: readonly [{ readonly name: "no-force-push"; readonly tool: "bash"; readonly field: "command"; readonly pattern: "^git\\b(?:\\s+-{1,2}[A-Za-z]\\S*(?:\\s+\\S+)?)*\\s+push\\b.*(?:--force(?!-with-lease)|\\s-f(?:\\s|$))"; readonly reason: "Force push rewrites remote history and can destroy teammates' work. Use `git push --force-with-lease` if you must, or create a new commit instead."; }, { readonly name: "no-hard-reset"; readonly tool: "bash"; readonly field: "command"; readonly pattern: "^git\\b(?:\\s+-{1,2}[A-Za-z]\\S*(?:\\s+\\S+)?)*\\s+reset\\s+--hard\\b"; readonly reason: "Hard reset discards uncommitted changes permanently. Use `git stash` to save work first, or `git reset --soft` to keep changes staged."; }, { readonly name: "no-rm-rf-slash"; readonly tool: "bash"; readonly field: "command"; readonly pattern: "^rm\\b(?=.*(?:-[A-Za-z]*[rR][A-Za-z]*|--recursive))(?=.*(?:-[A-Za-z]*f[A-Za-z]*|--force)).*\\s/(?:\\s|$)"; readonly reason: "Recursive force-delete from root is catastrophic and irreversible. Specify a safe path (e.g. a subdirectory of the project or a temp dir)."; readonly noOverride: true; }, { readonly name: "no-long-running-commands"; readonly tool: "bash"; readonly field: "command"; readonly pattern: "^(?:npm\\s+(?:run\\s+dev|start)|yarn\\s+(?:dev|start)|pnpm\\s+(?:run\\s+)?(?:dev|start)|npx\\s+.*--watch|webpack\\s+(?:--watch|serve)|jest\\s+--watch|nodemon\\b|tsc\\s+--watch|vite(?:\\s+(?:dev|serve|preview))?(?!\\s+[A-Za-z])|astro\\s+(?:dev|preview)|next\\s+dev|deno\\s+task\\s+(?:dev|start|serve)|bun\\s+(?:dev|run\\s+dev))\\b"; readonly reason: "Long-running dev servers and watchers block the agent loop. Ask the user to run it manually in another terminal, or use a background-process tool. Representative — add your own via `.pi/steering.ts` if a framework isn't listed here."; }]; /** * Default plugins shipped by the package. * * Deliberately empty since the v0.1.x monorepo split: the git plugin * (`pi-steering/plugins/git`) is OPT-IN, not default-on. Users who * want the `branch` / `upstream` / `commitsAhead` / `hasStagedChanges` * / `isClean` / `remote` predicates, the `no-main-commit` / * `no-main-commit-github` rules, the branch tracker, or the `cwd.git` * tracker extension must declare it explicitly: * * ```ts * import gitPlugin from "@cad0p/pi-steering/plugins/git"; * export default defineConfig({ plugins: [gitPlugin] }); * ``` * * Declaring the plugin explicitly is what gives `defineConfig`'s * generics the rule / plugin name unions for typo-checking on * `disabledRules` / `disabledPlugins` — an undeclared plugin's rule * names are NOT in the inferred union, so typos surface as compile * errors instead of silent no-ops. Runtime defaults and type-level * visibility must not diverge; an empty default list is the only way * to guarantee they can't. * * Rationale for opt-in (reverses the v0.1.0 D1 default-on decision): * git discipline rules are opinionated project policy, not universal * safety rails — `DEFAULT_RULES` (domain-agnostic rails like * `no-force-push`, `no-rm-rf-slash`) remains default-on; domain * plugins opt in. * * The count lock in `defaults.test.ts` guards this list: any addition * to the default plugin list is a deliberate ship-surface change and * must update the assertion explicitly. */ export declare const DEFAULT_PLUGINS: readonly []; //# sourceMappingURL=defaults.d.ts.map