import { CDK_SKILL, type CodingAgent } from "@cargo-ai/cdk/cli"; /** * Where the agent is being opened, which decides what it is told to do. * * Three cases, because the right first move is different in each: outside a * project there is nothing to read and the work starts with a conversation; * inside a CDK repo the workspace is already declared in files worth reading * before touching; and inside one carrying a cookbook, that cookbook's own * procedure is the authority and re-deriving intent is the wrong move. * * Naming the same skill in all three, which is what this used to do, sent an * agent into a repo full of answers and told it to start asking questions. */ export type ProjectContext = { kind: "none"; } | { kind: "cdk"; root: string; companyContextPath: string | undefined; } | { kind: "cookbook"; root: string; companyContextPath: string | undefined; cookbooks: readonly string[]; }; export type StartFacts = { workspace: { uuid: string; name: string; }; /** Whether the Cargo skills bundle is already installed for a coding agent. */ skillsInstalled: boolean; }; /** * The command group "Explore in the CLI" opens the palette on. The action * catalog is the shortest path from a menu to something real: search one, run * one, see a result. */ export declare const EXPLORE_PATH: readonly string[]; /** * The skill a handoff loads before the agent's first turn. `cargo` routes; the * other two own their task outright. * * This type is the one place the whole story lives, because everything about * the handoff depends on getting it right, and it has been got wrong twice. * * A skill reaches the agent by two paths at once: the launch passes it as a * `/` command, which only Claude Code expands, and the brief names it in * prose, which is all every other agent has. So the two must agree. The first * version of the demo brief described its *outcome* instead of naming a skill * and let the router choose; the router picked `cargo-gtm`, the general * sourcing surface, and the agent spent four of its eight minutes rediscovering * action names and dumping integration JSON to find a config schema. The * second version named `cargo-quickstart` in the launch but left the brief * saying "load `cargo`", which put every non-Claude agent back through the * router and made the demo ask for two different skills in two steps. * * Hence a union rather than `string`: a mistyped or mismatched skill name is * not something the CLI can notice at runtime, and the symptom is slow rather * than broken, which is the kind of bug that survives. */ export type HandoffSkill = "cargo" | typeof CDK_SKILL | "cargo-quickstart"; export declare const ROUTER_SKILL: HandoffSkill; export declare const DEMO_SKILL: HandoffSkill; export { CDK_SKILL }; export type Destination = { kind: "agent"; agent: CodingAgent; } | { kind: "code"; } | { kind: "cli"; } | { kind: "demo"; } | { kind: "none"; }; /** * `--continue ` as a destination. Agents are named the way a person * refers to them ("cursor"), not the way they are installed ("cursor-agent"), * and one that is not on this machine is a usage error rather than a silent * fallback to something else. */ export declare function parseDestination(value: string, agents: readonly CodingAgent[]): Destination | undefined; /** * The brief a coding agent is opened with. An agent launched in a bare * directory has to rediscover the workspace, the skills and the cost rules; * this is the whole reason the handoff beats telling someone to open Claude * Code themselves. * * What it says depends on `project` — see `ProjectContext` for why all three * cases need different words rather than one brief and a different skill name. */ export declare function buildBrief(facts: StartFacts, skill: HandoffSkill, project?: ProjectContext): string; /** * The brief behind the guided demo. * * It names `cargo-quickstart` rather than describing the demo, because that * skill *is* this demo — a persona, ~25 leads, a cost receipt, then saving the * pull as a play. Describing the outcome instead is what cost the first version * half its runtime (see `HandoffSkill`), so this brief spends its length on * pointing at the procedure and forbidding the detour. */ export declare function buildDemoBrief(facts: StartFacts, icp: string | undefined): string; /** The block printed when nobody wanted a handoff. */ export declare function formatStartNextSteps(facts: StartFacts): string; //# sourceMappingURL=brief.d.ts.map