/** * Stated intent and deliverable extraction (text heuristics, no LLM). * * `detectStatedIntent` recognises an agent telling the owner it is starting * work NOW ("I'm breaking down the shot list now", "next step is X", 「我现在…」, * 「做好发你」). It is narrower than the owner-thread sentinel's promise * detector on purpose: a promise is any "I'll report back"; a stated intent is * "I am doing this right now", which a turn that ends right after it has * broken. See specs/2026-10-10-agent-follow-through.md. * * `extractDeliverables` reads an owner's request for the separate things it * asks for (numbered items, 「三个视频」, "one … another …") so partial * delivery can be shown ("1 of 3 delivered"). * * @module services/agent/stated-intent */ /** What an agent said it is starting. */ export interface StatedIntent { /** The sentence that says it (clipped) */ sentence: string; } /** * Whether an agent post says it is starting work now. * * Returns null for finished-work reports, for text that waits on someone * else (unless it states a default it will go with), and for text whose only * commitments are questions (the agent is asking, not starting). * * @param text - The agent's post to the owner * @returns The stated intent, or null * * @example * ```typescript * detectStatedIntent("I'm breaking down the reference shot list now, then building the crab version."); * // { sentence: "I'm breaking down the reference shot list now, …" } * detectStatedIntent('Done — the video is attached.'); // null * ``` */ export declare function detectStatedIntent(text: string): StatedIntent | null; /** Most checklist items kept for one request. */ export declare const MAX_DELIVERABLES = 8; /** * The separate things an owner's request asks for. * * Order of trust: explicit numbered/bulleted lists, inline "(1) … (2) …" / * 「第一…第二…」 / "first … second …", "one … another …" / 「一个…另一个…」, then a * bare count ("three videos" → three items). Returns [] when the request asks * for one thing (or the shape is unclear): a checklist is only worth showing * when partial delivery is possible. * * @param text - The owner's words * @returns 2..{@link MAX_DELIVERABLES} items, or [] */ export declare function extractDeliverables(text: string): string[]; //# sourceMappingURL=stated-intent.d.ts.map