# @sylphx/management

## 0.14.0

### Minor Changes

- 873c8c8: Add provider-neutral managed mobile device-test runtime contracts and
  Management SDK helpers for project-scoped create/list plus handle-scoped
  poll/cancel flows.

### Patch Changes

- Updated dependencies [4b42f76]
- Updated dependencies [873c8c8]
  - @sylphx/contract@0.20.0

## 0.13.0

### Minor Changes

- [#2461](https://github.com/SylphxAI/platform/pull/2461) [`61c97c6`](https://github.com/SylphxAI/platform/commit/61c97c65ad8653989ad90774bf092f1e621b59fc) Thanks [@shtse8](https://github.com/shtse8)! - Expose workspace lifecycle intent and lease metadata, and add management and SDK surfaces for capacity, pin, and reclaim operations.

  The Platform control plane now distinguishes scratch, durable, and shared managed workspaces. Scratch workspaces can be reclaimed through the pressure and lease detector plus the reclaim executor, while legacy workspaces remain durable by default.

### Patch Changes

- Updated dependencies [[`8259c44`](https://github.com/SylphxAI/platform/commit/8259c4415fa6ec6aa640d78288b943bd43cc0afb), [`4eacc55`](https://github.com/SylphxAI/platform/commit/4eacc5562189afc100d8936c0a6272194c0d9999), [`1846a09`](https://github.com/SylphxAI/platform/commit/1846a0916ec9160ce3fc4fa76ad4a28ac49b95f8), [`0923b94`](https://github.com/SylphxAI/platform/commit/0923b9483fef38567e520293d9fec7ead868b3ee), [`61c97c6`](https://github.com/SylphxAI/platform/commit/61c97c65ad8653989ad90774bf092f1e621b59fc)]:
  - @sylphx/contract@0.19.0

## 0.12.0

### Minor Changes

- [#2290](https://github.com/SylphxAI/platform/pull/2290) [`b3f3a65`](https://github.com/SylphxAI/platform/commit/b3f3a653b26b966012aeacec2b46b5fda3db3217) Thanks [@shtse8](https://github.com/shtse8)! - Expose project preview capacity as a public contract, CLI, and management surface so operators can set per-project preview quotas without database or cluster mutations.

### Patch Changes

- Updated dependencies [[`b3f3a65`](https://github.com/SylphxAI/platform/commit/b3f3a653b26b966012aeacec2b46b5fda3db3217)]:
  - @sylphx/contract@0.18.0

## 0.11.0

### Minor Changes

- [#1988](https://github.com/SylphxAI/platform/pull/1988) [`9dbac37`](https://github.com/SylphxAI/platform/commit/9dbac3737f585d4070b96b0f6de13e6f817928c9) Thanks [@shtse8](https://github.com/shtse8)! - Add the ADR-229 workflow operator contract, Management SDK namespace, and `sylphx admin workflows` inspection/repair commands.

### Patch Changes

- Updated dependencies [[`9dbac37`](https://github.com/SylphxAI/platform/commit/9dbac3737f585d4070b96b0f6de13e6f817928c9)]:
  - @sylphx/contract@0.17.0

## 0.10.6

### Patch Changes

- [#1901](https://github.com/SylphxAI/platform/pull/1901) [`5ad7c51`](https://github.com/SylphxAI/platform/commit/5ad7c51f09a629d54dbaab936dbc065baa5b546f) Thanks [@shtse8](https://github.com/shtse8)! - Fix org management CLI contract coverage and project-session data boundaries.

- Updated dependencies [[`5ad7c51`](https://github.com/SylphxAI/platform/commit/5ad7c51f09a629d54dbaab936dbc065baa5b546f)]:
  - @sylphx/contract@0.16.1

## 0.10.5

### Patch Changes

- Updated dependencies [[`8de54cd`](https://github.com/SylphxAI/platform/commit/8de54cdd9e5482b95180706ca21989ab207fb496), [`3694265`](https://github.com/SylphxAI/platform/commit/369426530ac3c908539f61d87511e4545689b282), [`de0e284`](https://github.com/SylphxAI/platform/commit/de0e28469f6b4ea597dca98bd3d836133db9f42f)]:
  - @sylphx/contract@0.16.0

## 0.10.4

### Patch Changes

- Updated dependencies [[`cf70398`](https://github.com/SylphxAI/platform/commit/cf7039861ad6c3a36e96ff569f76bef80c45a6f1)]:
  - @sylphx/contract@0.15.1

## 0.10.3

### Patch Changes

- [#1473](https://github.com/SylphxAI/platform/pull/1473) [`e282a6a`](https://github.com/SylphxAI/platform/commit/e282a6a00fa9149e5cd3a1dfd6b70c255d3101f0) Thanks [@shtse8](https://github.com/shtse8)! - Add service-name targeting to the canonical deploy contract and route service deploys through it so single-service deploys trigger the same build pipeline as project deploys.

- Updated dependencies [[`e282a6a`](https://github.com/SylphxAI/platform/commit/e282a6a00fa9149e5cd3a1dfd6b70c255d3101f0)]:
  - @sylphx/contract@0.15.0

## 0.10.2

### Patch Changes

- [#1257](https://github.com/SylphxAI/platform/pull/1257) [`feaef05`](https://github.com/SylphxAI/platform/commit/feaef05b33c83474006936e12d560b05d1ef474c) Thanks [@shtse8](https://github.com/shtse8)! - Hide managed workspace backing volumes from public resource and volume APIs, keep workspace lifecycle behind the `wksp_*` contract, and rename the public workspace storage summary from `volume` to `storage`.

- Updated dependencies [[`feaef05`](https://github.com/SylphxAI/platform/commit/feaef05b33c83474006936e12d560b05d1ef474c)]:
  - @sylphx/contract@0.14.0

## 0.10.1

### Patch Changes

- [#1169](https://github.com/SylphxAI/platform/pull/1169) [`53a74bc`](https://github.com/SylphxAI/platform/commit/53a74bc5c612ca00e68d88296526c588bb2d3b04) Thanks [@shtse8](https://github.com/shtse8)! - Route CLI runtime/build log inspection through the environment-scoped Management logs API. `sylphx logs` now uses bounded runtime logs by default, keeps SSE behind `--follow`, and exposes build/deploy logs through `--type build`.

## 0.10.0

### Minor Changes

- [#1200](https://github.com/SylphxAI/platform/pull/1200) [`fa4fa78`](https://github.com/SylphxAI/platform/commit/fa4fa78996f94d2d8d6bc3e893d19cf1725e1268) Thanks [@shtse8](https://github.com/shtse8)! - Add Platform-managed workspace contract schemas, APIs, workspace sandbox mounts, and runtime workspace create/fork SDK helpers.

### Patch Changes

- Updated dependencies [[`fa4fa78`](https://github.com/SylphxAI/platform/commit/fa4fa78996f94d2d8d6bc3e893d19cf1725e1268)]:
  - @sylphx/contract@0.13.0

## 0.9.0

### Minor Changes

- [#1197](https://github.com/SylphxAI/platform/pull/1197) [`a83aad4`](https://github.com/SylphxAI/platform/commit/a83aad43d9745e3e16ab557e3f95c3074c5a28f0) Thanks [@shtse8](https://github.com/shtse8)! - Publish the cleaned CLI project configuration boundary: repo project bindings now live only in `sylphx.toml`, private OAuth/default-org state stays in `~/.sylphx/config.json`, and the retired `sylphx.json`/app-link surfaces are removed.

  Also publish the Management SDK and Contract updates for canonical project manifest fields (`project.id`, `project.org_id`, `project.default_env`) and the removed legacy Management aliases.

### Patch Changes

- Updated dependencies [[`a83aad4`](https://github.com/SylphxAI/platform/commit/a83aad43d9745e3e16ab557e3f95c3074c5a28f0)]:
  - @sylphx/contract@0.12.0

## 0.8.0

### Minor Changes

- [#1126](https://github.com/SylphxAI/platform/pull/1126) [`b5c6c14`](https://github.com/SylphxAI/platform/commit/b5c6c142ba89078edf460807282337dc315b77df) Thanks [@shtse8](https://github.com/shtse8)! - ADR-141..146 — health observability stack lands across the SDK, CLI, contract, and management surfaces.

  ## `@sylphx/sdk` (`@sylphx/sdk/health`) — new public surface

  - **`withHealth.{hono,express,fastify,fetch}`** — framework-agnostic Zero-Config `/healthz` middleware. Drop one line into your Hono / Express / Fastify / Next.js / Bun.serve app and you get a multi-signal continuous-score health endpoint, OTel emission, causality propagation, and audit-grade history out of the box.
  - **Seven built-in signals**: `eventLoopLagSignal`, `queueDepthSignal`, `errorRateSignal`, `memoryPressureSignal`, `pingSignal`, `databaseSignal`, `redisSignal`. Compose them via `sylphxHealth({ signals: [...] })`; the default scoring strategy is weighted geometric mean per ADR-111 §4.5.
  - **ADR-142 OTel-native emission** — `health.score`, `health.signal.factor`, `health.signal.value`, `health.signal.value_state`, `health.downstream_cause` metrics + `service.health.*` span attributes + `health.evaluated` event. Default-on; graceful no-op when `@opentelemetry/api` is not installed.
  - **ADR-143 causality propagation** — read/write OTel Baggage entries `sylphx.health.cause` + `sylphx.health.cause_chain`. A Postgres outage produces one paged alert at the root plus N silent downstream-impact rows, not 12 red dots. Default-on with a 0.5 score threshold.
  - **ADR-144 audit-grade history** — every `evaluate()` produces a SHA-256 prev-hash chained `HistoryEntry` (CloudTrail-style integrity), retrievable via `getHistory(query?)` / verifiable via `verifyHistory(query?)`. Pluggable `HistoryStore` interface; in-memory ring buffer is the reference implementation.

  ## `@sylphx/cli`

  - **`sylphx migrate health-checks`** — idempotent codemod that wires `withHealth.*` into your app's entry file (Hono / Express / Fastify / Next.js auto-detected) and removes hand-rolled `/health` + `/ready` routes. Supports `--dry-run` and `--check` (CI-grade exit-1-on-pending).
  - **`sylphx migrate status`** — per-service fleet visibility. Queries the Management API for every visible project and reports which services have `frameworkSignals.sdkHealthDetected = true`. The answer to "which of my services still need ADR-141?".
  - **`sylphx health verify --file <path>`** — offline verifier for an exported ADR-144 history chain. Walks the SHA-256 chain and reports the first break with a clear reason. Mirrors AWS CloudTrail `validate-logs`.

  ## `@sylphx/management` + `@sylphx/contract`

  - **`TriggerDeploymentInput.frameworkSignals`** — optional map of `service slug → { sdkHealthDetected?: boolean }`. The CLI now scans `package.json` at deploy time and forwards these signals; the Management API merges them into `project_services.machine_config.frameworkSignals` before the reconciler picks up the deploy. Used by the reconciler smart-default (HTTP `/healthz` probe when the SDK is detected) and by the new ADR-111 Phase B sidecar SDK-detection gate.
  - **`Service.frameworkSignals`** — new read-only field on the Service response so `sylphx migrate status` can render the fleet scorecard.

  ## Why upgrade

  Every Sylphx service gets the SOTA dataplane for free — continuous score in `[0, 1]`, multi-signal composition, OTel-native observability, causality-aware alert routing, audit-grade evidence, and (post-ADR-111 Phase B sidecar) automatic drain/kill enforcement. The legacy `/live` + `/ready` split-probe pattern is retired in a single migration.

  See `docs/how-to/health-checks.md`, `docs/explanation/health-check-ownership.md`, and the runbook `docs/runbooks/health-alert-routing-adr143.md` for the operator surface.

### Patch Changes

- Updated dependencies [[`b5c6c14`](https://github.com/SylphxAI/platform/commit/b5c6c142ba89078edf460807282337dc315b77df)]:
  - @sylphx/contract@0.11.0

## 0.7.0

### Minor Changes

- [#1105](https://github.com/SylphxAI/platform/pull/1105) [`ab0491b`](https://github.com/SylphxAI/platform/commit/ab0491b892ecb9e96eb2843d2b6519f8eb52e3c9) Thanks [@shtse8](https://github.com/shtse8)! - ADR-137 §2.3 / §2.4 — per-PR cost browser, step 2 (API + SDK + CLI).

  - **API**: `GET /projects/:id/previews/:prNumber/cost` returns a per-PR cost envelope (build / preview env / BaaS breakdown + 30-day project monthly-average comparison). `GET /projects/:id/previews/cost` lists the most recent 50 PRs (cursor paginated by `(prNumber, windowOpenedAt)`). Both require `project:read`.
  - **SDK** (`@sylphx/management`): new `previews.cost(client, projectId, prNumber, opts?)` and `previews.listCosts(client, projectId, opts?)` capability namespace.
  - **CLI** (`@sylphx/cli`): new `sylphx previews cost <pr-number>` and `sylphx previews list-costs [--project <slug>]` subcommands. Headline cost is coloured by comparison ratio (green < 1×, yellow 1–2×, red ≥ 2×) per ADR-137 §2.5.

  No DB migration. Cost math reuses the aggregator landed in ADR-137 Step 1 (#1092).

### Patch Changes

- Updated dependencies [[`ab0491b`](https://github.com/SylphxAI/platform/commit/ab0491b892ecb9e96eb2843d2b6519f8eb52e3c9)]:
  - @sylphx/contract@0.10.0

## 0.6.1

### Patch Changes

- Updated dependencies [[`f7bce5d`](https://github.com/SylphxAI/platform/commit/f7bce5d4869cc3904fc21edb1c0e6cfcbcab0d9a)]:
  - @sylphx/contract@0.9.0

## 0.6.0

### Minor Changes

- [#1019](https://github.com/SylphxAI/platform/pull/1019) [`7978a14`](https://github.com/SylphxAI/platform/commit/7978a140c6eaf146456a458aa89b943cd3989659) Thanks [@shtse8](https://github.com/shtse8)! - Fail closed when environment targeting is ambiguous across platform management APIs.

  The contract, Management SDK, and CLI now preserve explicit `envId` targeting for env vars, domains, services, deployments, and logs instead of relying on `envType` defaults when a project has multiple matching environments.

### Patch Changes

- Updated dependencies [[`7978a14`](https://github.com/SylphxAI/platform/commit/7978a140c6eaf146456a458aa89b943cd3989659)]:
  - @sylphx/contract@0.8.0

## 0.5.0

### Minor Changes

- [#746](https://github.com/SylphxAI/platform/pull/746) [`382a78e`](https://github.com/SylphxAI/platform/commit/382a78e2fb52d248890ae4fcb9551b8dde17a641) Thanks [@shtse8](https://github.com/shtse8)! - Align Management SDK email logs, suppressions, and settings with the contract-derived email admin surface.

  The email management module now returns the contract list shape for logs, exposes log detail and suppression management helpers, and uses the contract settings input/response types. Consumers using the older hand-written email settings or log-list TypeScript shapes should migrate to the exported `EmailSettings`, `UpdateEmailSettingsInput`, `ListEmailLogsResult`, and `ListSuppressionsResult` types.

- [#766](https://github.com/SylphxAI/platform/pull/766) [`809abfe`](https://github.com/SylphxAI/platform/commit/809abfe0f9115e397dbd0fb2c75deeeb006712b6) Thanks [@shtse8](https://github.com/shtse8)! - Align the Management SDK auth admin surface with the contract-owned project auth API.

  Auth admin helpers now require a project reference, use contract-derived request paths and result types, and send the contract-owned OAuth/settings field names. The unsupported `rotateOAuthSecret` helper has been removed because the production auth admin contract does not accept OAuth client secret mutation on this route.

- [#763](https://github.com/SylphxAI/platform/pull/763) [`5dfa410`](https://github.com/SylphxAI/platform/commit/5dfa4105f20573a482d3cfefcf247084724f31b5) Thanks [@shtse8](https://github.com/shtse8)! - Align the Management SDK newsletter module with the contract-derived newsletter API surface.

  Newsletter management methods now derive request paths, HTTP methods, input types, and result types from `@sylphx/contract`. Public newsletter SDK types are re-exported from the contract package, and SDK-specific query helpers only adapt booleans and numbers into the string query parameters used by the HTTP contract.

- [#764](https://github.com/SylphxAI/platform/pull/764) [`d83b7de`](https://github.com/SylphxAI/platform/commit/d83b7de54ba3c7c331967ab882ea4d68623c041f) Thanks [@shtse8](https://github.com/shtse8)! - Derive the Management refresh-token SDK surface from `@sylphx/contract`, using contract-owned refresh/logout routes and the `refresh_token` wire body/response field names.

- [#759](https://github.com/SylphxAI/platform/pull/759) [`3257675`](https://github.com/SylphxAI/platform/commit/325767586a2fa5e53f00cd81e438d561d0e37c41) Thanks [@shtse8](https://github.com/shtse8)! - Align the Management SDK runners module with the contract-derived runner API surface.

  Runner management methods now derive request paths, HTTP methods, input types, and result types from `@sylphx/contract`. The create input no longer advertises unsupported `labels` or `maxJobs` fields; callers should pass the contract-owned `name`, `platform`, and `arch` fields.

  The `sylphx runners register` CLI command no longer exposes the unsupported `--labels` or `--max-jobs` flags and now submits only the contract-owned runner registration fields.

### Patch Changes

- Updated dependencies [[`382a78e`](https://github.com/SylphxAI/platform/commit/382a78e2fb52d248890ae4fcb9551b8dde17a641)]:
  - @sylphx/contract@0.7.0

## 0.4.2

### Patch Changes

- Updated dependencies [[`df3c86e`](https://github.com/SylphxAI/platform/commit/df3c86e210f165070ed1e2f715eeed11ece6f07b)]:
  - @sylphx/contract@0.6.0

## 0.4.1

### Patch Changes

- Updated dependencies [[`426bafb`](https://github.com/SylphxAI/platform/commit/426bafb35a96e525066cb43c05388a4cc44a8bc3)]:
  - @sylphx/contract@0.5.1

## 0.4.0

### Minor Changes

- [#586](https://github.com/SylphxAI/platform/pull/586) [`2e55a61`](https://github.com/SylphxAI/platform/commit/2e55a6194628c5ca3ca78290cbf62610231ccee6) Thanks [@shtse8](https://github.com/shtse8)! - Expose authenticated build detail through the deployments contract, Management SDK, and `sylphx deployments build` so failed builds return structured, redacted diagnostics.

### Patch Changes

- Updated dependencies [[`2e55a61`](https://github.com/SylphxAI/platform/commit/2e55a6194628c5ca3ca78290cbf62610231ccee6)]:
  - @sylphx/contract@0.5.0

## 0.3.0

### Minor Changes

- [#531](https://github.com/SylphxAI/platform/pull/531) [`2ff1de4`](https://github.com/SylphxAI/platform/commit/2ff1de40fd1e2a785a7daa764ddad4a56d7b48c8) Thanks [@shtse8](https://github.com/shtse8)! - Restore dogfooded deployment operations by allowing `sylphx deploy`, `sylphx status`, `sylphx logs`, `sylphx tail`, `sylphx open`, `sylphx env`, `sylphx config`, `sylphx secrets`, `sylphx storage`, `sylphx volumes`, `sylphx resources`, `sylphx domains`, `sylphx tasks`, `sylphx sandbox`, `sylphx plan`, `sylphx run-cmd`, `sylphx promote`, `sylphx releases`, `sylphx bisect`, and `sylphx rollback` to target explicit projects from unlinked directories, carrying org scoping through Management SDK calls and SSE log streams, and exposing scoped project/log/environment/service helpers in the Management SDK.

  Prune scaffold-only surfaces from the published CLI/Management SDK surface (`restart`, task `run`, direct `scale`, `functions`, `edge`, `regions`, and the no-op `deploy --region` flag) until their Management API or infra paths are real.

## 0.2.3

### Patch Changes

- Updated dependencies [[`ba02c04`](https://github.com/SylphxAI/platform/commit/ba02c0412712dc8a5f19d17c16707eb5ae11ec47)]:
  - @sylphx/contract@0.4.0

## 0.2.2

### Patch Changes

- Updated dependencies [[`03dbd29`](https://github.com/SylphxAI/platform/commit/03dbd2986024fa650378e10958890d6ac063f516)]:
  - @sylphx/contract@0.3.0

## 0.2.0

### Minor Changes

- [`c4471cf`](https://github.com/SylphxAI/platform/commit/c4471cf729a2a60865d0df5bbf04b87f55d57858) Thanks [@shtse8](https://github.com/shtse8)! - Pure-FP `createClient` + free-function rewrite (ADR-077). Adds 39 capability namespaces — billing, certs, email, monitoring, notifications, backups, kv, flags, webhooks, secrets, realtime, serviceTokens, runners, experiments, analytics, oidc, and ten user-facing namespaces. Tenant provisioning migrated to service-token auth (the legacy `/admin/bootstrap` route is retired); platform admin bootstrap now follows the Appwrite pattern with the `X-Sylphx-Project-Id` header. New audit-source filter and webhook signature-algorithm versioning. Wave 1 domains consume `@sylphx/contract` directly; schemas widened to production reality (Wave 2b). Sends `Content-Type` only when a body is present; always sets `Accept`.

### Patch Changes

- Updated dependencies [[`c4471cf`](https://github.com/SylphxAI/platform/commit/c4471cf729a2a60865d0df5bbf04b87f55d57858)]:
  - @sylphx/contract@0.2.0

## 0.2.0-beta.0 — 2026-04-24

ADR-089 Phase 2 / 3 / 4a / 4b — **100% PaaS endpoint coverage**. The
`check-paas-sdk-coverage.ts` guard flipped from advisory to strict; the
Management SDK now covers every public `apps/api/src/server/platform/routes/`
namespace (35/35 non-excluded, 6 internal-only exclusions with written
rationale).

### New namespaces (13)

- `admin` — operator org / user / credit / audit administration
- `auth` (alias of `authSettings`) — OAuth providers + project auth policy + stats
- `authSettings` — same surface, ergonomic name
- `billingSettings` — business info, spending caps, invoice prefs
- `branchDatabases` — per-branch Neon/CNPG database bindings (ADR-070)
- `ciSettings` — org + repo CI configuration (runners, secrets, policy)
- `github` — GitHub App installation + repo discovery
- `kv` — KV admin (operator dashboard; distinct from BaaS `kv` in `@sylphx/sdk`)
- `management` — self-hosted runtime database backups / PITR restore (ADR-070)
- `plans` — subscription plan catalog + plan changes
- `refresh` — refresh-token rotation + sign-out (ADR-059 §1.1)
- `serviceTokenRequests` — ADR-059 §3 approval workflow for service tokens
- `user` — authenticated-user self-service (profile, sessions, MFA, connected identities)

### New methods on existing namespaces

- `backups.restorePointInTime`, `backups.restoreInPlace`
- `certs.autoProvision`, `certs.getAutoProvisionStatus`
- `deployments.cancel` (in-flight build cancellation)
- `environments.clone` (deep-copy env vars + secrets + bindings)

### Coverage guard

- `scripts/check-paas-sdk-coverage.ts`: strict mode enabled (non-zero
  exit on any non-excluded gap). Namespace matching normalises kebab ↔
  camelCase so `service-tokens` (route) matches `serviceTokens.ts` (SDK).
  Six internal-only namespaces are excluded with one-line rationales:
  `misc`, `internal`, `cron`, `image-opt`, `break-glass`, `challenge`.

### Migration notes

- No breaking changes. Existing imports continue to work.
- Bumped to `0.2.0-beta.0` to signal a meaningful surface expansion;
  the package remains in the 0.x beta line (shape not frozen).

## Unreleased (wrongly labelled 1.0.0; reverted 2026-04-23 — still in beta)

### Changes

- **Beta API surface.** Per **ADR-077** (Trio Completeness — Sylphx-internal architecture record), the Promise-based pure-functional interface is the target public contract. No classes, no `this`, no hidden state — `createClient` returns a frozen value, and every capability is a free function that takes `client` as its first argument. Shape is NOT yet frozen; still iterating in 0.x.
- **Capability namespaces** (in-flight; count may change before stable) covering the Management plane: `projects`, `deployments`, `environments`, `envVars`, `domains`, `databases`, `services`, `volumes`, `storage`, `secrets`, `tasks`, `resourceBindings`, `organizations`, `users`, `sandboxes`, `logs`, `email` (admin), `notifications` (admin/inbox), `monitoring`, `analytics`, `flags`, `experiments`, `remoteConfig`, `ai`, `webhooks`, `runners`, `backups`, `billing`, `certs`, `consent`, `engagement`, `newsletter`, `oidc`, `privacy`, `realtime`, `referrals`, `saml`, `search`, `serviceTokens`, `sessionReplay`. Function lifecycle is withheld until the Management API owns `/projects/:projectId/functions/*`.
- **Contract-first types** (**ADR-084** — Effect Schema Contract, Sylphx-internal architecture record). Wire types and endpoint metadata (method + path) are imported from [`@sylphx/contract`](https://www.npmjs.com/package/@sylphx/contract) — the Effect Schema SSOT. Hand-written type shims were removed; the contract package is the only place wire shape is defined.
- **Bearer-token auth.** `createClient({ token })` accepts service tokens (`svc_...`) and OAuth access JWTs. The same SDK works for CLI / CI / backend integrations on the Management plane (`api.sylphx.com/v1`).
- **Tree-shakable subpath exports.** Every namespace is also reachable as `@sylphx/management/projects`, `@sylphx/management/deployments`, etc. `sideEffects: false` for bundler-friendly dead-code elimination.
- **ESM-only.** `"type": "module"`, Node ≥ 20, uses the built-in `fetch`. No classes, no polyfills, no peer framework required.

### Plane discipline (ADR-083)

This SDK is **Management-plane-only**. Runtime BaaS verbs (`kv.get`, `email.send`, `notifications.send`, `flags.evaluate`, `auth.*`, realtime, storage uploads, search, analytics.track) live in [`@sylphx/sdk`](https://www.npmjs.com/package/@sylphx/sdk) with its Firebase-pattern peer-dep entry points (`@sylphx/sdk`, `/react`, `/server`, `/nextjs`, `/web-analytics`). Mixing planes (wrong hostname + wrong auth scheme) returns `401 plane_mismatch`.

---

## 0.1.0

### Minor Changes

- Initial public release of `@sylphx/management` as a standalone SDK.
  - Resource-namespaced Management API client.
  - `@sylphx/cli` now dogfoods this package.

## Pre-release history

Earlier changeset entries referenced pre-release work on internal versions;
the unreleased entry above captures the current 0.x beta direction.
