/**
 * OwlCoda Native TaskCreate Tool
 *
 * Creates a new task in the session task list. With an optional
 * `command` and no structured `steps`, the task ALSO spawns a bash child
 * and tracks its lifecycle — but ONLY after the command clears the shared
 * bash risk classifier. With `steps`, command is stored as plan metadata
 * and classifier-gated, but step execution remains model/tool driven.
 *
 * Security model (the reason an earlier `command` implementation was
 * pulled): TaskCreate must NOT become a backdoor around the headless
 * approval policy or the TUI permission prompt. Three independent gates
 * therefore guard every command-bearing call:
 *
 *   1. Headless path  — `decideHeadlessApproval('TaskCreate', ...)` runs
 *      the same `classifyBashCommand` branch as `bash` (see
 *      `headless-approval.ts`). dangerous / unknown / needs_approval
 *      without --auto-approve never reaches `execute()`.
 *   2. TUI path       — `renderTaskCreatePermission` mirrors
 *      `renderBashPermission` so the user sees the same "⚠ rm -rf"
 *      verdict before approving.
 *   3. Direct execute — this function ALSO calls `classifyBashCommand`
 *      and refuses to spawn anything except `safe_readonly`. Even if a
 *      caller bypasses gates 1+2 (e.g. a bug in the conversation loop,
 *      or a future plugin entry point), we still fail closed here.
 *
 * Pure-todo mode (no `command`) preserves the 0.13.30 behaviour: in-memory
 * task created, no spawn, status='pending'. This keeps existing callers
 * that use TaskCreate as a TODO tracker unaffected.
 */
import type { NativeToolDef } from './types.js';
import type { TaskPathScope } from '../protocol/types.js';
import { type TaskStepAction, type TaskVerificationCheck } from './task-store.js';
/** Input shape for a single step when creating a structured task plan. */
export interface TaskCreateStepInput {
    id?: string;
    title: string;
    description: string;
    action?: TaskStepAction;
    expectedArtifacts?: TaskPathScope[];
    verification?: TaskVerificationCheck[];
    /** Project Map verification profile IDs to expand into TaskVerify checks. */
    projectMapVerificationProfileIds?: string[];
}
export interface TaskCreateInput {
    subject: string;
    description: string;
    activeForm?: string;
    metadata?: Record<string, unknown>;
    /**
     * Optional bash command to spawn for this task. When present the task
     * is gated by the bash risk classifier and runs as a background
     * subprocess; `TaskOutput` will surface stdout/stderr/exitCode once
     * the task reaches a terminal state.
     *
     * Without `command` the task is a pure TODO entry and matches the
     * pre-execution behaviour of TaskCreate.
     */
    command?: string;
    /** Optional working directory for `command` (defaults to process.cwd()). */
    cwd?: string;
    /**
     * Optional structured deliverables for this task plan.
     * Paths that should be produced by completing this task.
     */
    deliverables?: TaskPathScope[];
    /**
     * Optional structured execution steps (Task Execution Mode v1, Slice 1).
     * When provided, creates an executable task plan.
     * Must be a non-empty array; each step requires title and description.
     * Without steps, preserves backward-compatible pure-TODO behavior.
     */
    steps?: TaskCreateStepInput[];
}
export declare function createTaskCreateTool(): NativeToolDef<TaskCreateInput>;
