/** * `synap template` — the "one request" template surface (TEMPLATE-ONE-PATH-PLAN §3-4). * ===================================================================================== * * The plan names ONE governed write door for adding/updating a workspace template: * `synap template publish ` → CP `POST /api/packages` (validated server-side). * No npm publish, no lockfile-bump, no redeploy. This file is that named surface. * * synap template publish — validate + upsert to the CP (private by default; --public to share) * synap template publish --from-workspace — serialize a LIVE workspace, then publish * synap template list — the caller-visible catalog (own private + public), slug/name/vis/version * synap template get — one template's metadata + definition shape * * REUSE, no reinvention: publish delegates to the existing `marketPublish` (same * validator, same CP transport). list/get read through `lib/cp-packages` — the ONE * authed CP `/api/packages` client (Bearer from `lib/auth`'s stored login token). * No `fetch` is hand-rolled here. * * NOTE (for the orchestrator): this overlaps `synap market publish/validate/ * unpublish`, which already ship the same authoring loop. `synap template` is the * plan-canonical name; picking one and retiring/aliasing the other is a §4 Wave 2 * cleanup decision, not made here. */ /** * `synap template publish ` — the plan's "one request". A thin alias over * the existing `marketPublish` so there is exactly ONE publish implementation * (same validator, same CP write door, same `--public`/`--from-workspace`/`--json`). */ export declare function templatePublish(file: string | undefined, opts: { public?: boolean; private?: boolean; fromWorkspace?: string; json?: boolean; podUrl?: string; apiKey?: string; }): Promise; export declare function templateList(opts: { json?: boolean; }): Promise; export declare function templateGet(slug: string, opts: { json?: boolean; }): Promise;