export interface FirstRunEnvironment { /** A sandbox to run the study in. Nothing live happens without it. */ hasE2bKey: boolean; /** * Whether `@e2b/desktop` resolves from this project. It is an OPTIONAL peer — the no-keys path * does not need it — so a fresh `npx humanish` install does not have it, and a live run stops * with "install this other package first". Found by running the published artifact cold, after * two local runs passed because they resolved the peer from the repo's own node_modules. */ hasDesktopSdk: boolean; /** * Whether humanish itself is installed in this project rather than running from an npx cache. * It changes what advice is TRUE: a one-shot `npx humanish` resolves its optional peer relative * to itself, so "install the peer here" cannot work — humanish has to be installed alongside it. */ installedInProject: boolean; /** A provider API key for the model. */ hasProviderKey: boolean; /** A coding agent already signed in locally — Codex or Claude Code. */ localAgents: readonly string[]; } export type FirstRunActor = "openai-computer-use" | "local-agent"; /** * Which brain the starter live lab should be written for. A machine with a signed-in coding agent * and no provider key can still do a real live run; writing the lab for the credential the * operator DOESN'T have is how a starter file becomes homework. */ export declare function starterActorFor(env: FirstRunEnvironment): FirstRunActor; export interface FirstRunStep { /** The exact command to run. */ command: string; /** Why this one, in the register the rest of the CLI uses. */ why: string; } /** * The next one or two commands, in order. Deliberately SHORT: a list of twelve options is the same * as no guidance, and the reader here has just been handed twenty files. */ export declare function firstRunSteps(env: FirstRunEnvironment): FirstRunStep[]; /** The block init prints after its changes. */ export declare function firstRunGuidance(env: FirstRunEnvironment): string[]; /** Lets init recognise its own section without rewriting a file someone else wrote. */ export declare const AGENTS_SECTION_MARKER = ""; /** * What the NEXT coding agent needs to know about humanish in this project. * * AGENTS.md is the cross-vendor convention (agents.md) that Codex, Claude Code, Cursor and others * read on arrival. Increasingly the thing that ran `humanish init` was itself an agent working for * someone, and the agent that shows up tomorrow finds a `humanish/` directory with no idea what it * is for. Deliberately SHORT and command-first: an agent acts on commands, not on prose. */ export declare function agentsSection(): string;