import type { ActionEffect, ActionSpec, ToolDef } from "../types.js"; /** * The flow tool's own actions, the three that are not journal or skill. * * The flow tool is registered outside `ALL_TOOLS` (it is built per server with * a task registry and a config source), so a graph read from `tools.ts` does * not contain it and a pack teaching `flow(action="run")` would read as a dead * call. `tests/unit/skill-packs.test.ts` fails if this list stops matching the * tool, so it cannot drift into being the lie it is there to prevent. */ export declare const FLOW_OWN_ACTIONS: readonly ["run", "plan", "list"]; /** * What each of those three does to the addressed editor. * * Restated here rather than read off the built tool because `flow-tool.ts` * imports this module and importing it back would close a cycle at module * init. `tests/unit/flow-action-contract.test.ts` fails when the two disagree, * so the restatement cannot drift into a second opinion. * * `run` is `mutate` rather than `unknown` even though a flow is only ever * whatever its steps are: a flow of pure reads is theoretically a read, no * flow in this repo or any shipped plugin is one, and both labels gate * identically. The wider answer is the one that stands. */ export declare const FLOW_OWN_EFFECTS: Record<(typeof FLOW_OWN_ACTIONS)[number], ActionEffect>; /** The flow category as a graph entry, for the check to hold packs against. */ export declare function flowCategoryForCheck(): ToolDef; export declare const skillActions: Record;