/** * `synap launch` — nothing → a working company. * * This is NOT a template browser. It is the opinionated, guided, run-once * command that turns an empty pod into a company: one PROJECT (the cross-cutting * lens) + N domain WORKSPACES, provisioned from templates and linked together. * Browsing "what else could I add?" lives in the marketplace UI; `synap orient` * shows what you already have. * * Interactive flow: * 1. Ask the company/project name → attach to an existing PROJECT or create one * 2. Describe the company → suggest domains → pick/adjust the set * 3. Disclose the FULL plan (incl. dependencies) → confirm * 4. For each template → POST /packages/apply → report the real outcome * * Discovery is TWO-SOURCE, merged through the ONE `mergeCatalog` door: * • PUBLIC templates ship BUNDLED in @synap-core/workspace-templates — always * present, zero network, offline. * • PRIVATE templates live in the control plane behind the user's login and are * fetched from `GET /api/packages/mine` (Bearer). Logged out or CP-unreachable * degrades HONESTLY to bundled-only + a "private needs login" note — it never * fails open empty. * The bundle still carries the private YAMLs today, so a private template that * arrives as a remote entry is installed from the identical, offline bundled * definition; once a later wave drops those YAMLs it is installed from the CP. * * Dependencies are resolved SERVER-side: `toPackageDefinition` carries the * template's `dependencies` into the body, and the apply endpoint ensures each * one is present first (installing missing bases topologically) and LAYERS a * `compose` template onto its base instead of creating a second workspace. So * this command's job is to DISCLOSE the graph before the user commits — never to * install the extras itself. * * Installs are GOVERNED: /packages/apply answers 202 `{status:"proposed"}` when * the write needs review. That is normal, not a failure — but it means nothing is * live until the proposal is approved, so we never print "ready" for it. */ export declare function launchList(opts: { json?: boolean; search?: string; type?: string; }): Promise; export declare function launch(opts: { podUrl?: string; apiKey?: string; json?: boolean; list?: boolean; search?: string; type?: string; }): Promise;