refactor(client): simplify local service lifecycle
This commit is contained in:
parent
4f1298063b
commit
75bc611ef1
51 changed files with 635 additions and 534 deletions
43
packages/docs/build/client.mdx
vendored
43
packages/docs/build/client.mdx
vendored
|
|
@ -70,6 +70,33 @@ for await (const event of client.event.subscribe()) {
|
|||
}
|
||||
```
|
||||
|
||||
## Local service
|
||||
|
||||
`Service` discovers and manages the local OpenCode background service from a
|
||||
Node application. The Promise API uses Node APIs directly and does not require
|
||||
Effect or `@effect/platform-node`.
|
||||
|
||||
- `Service.discover()` returns a healthy registered endpoint without starting
|
||||
a process.
|
||||
- `Service.start()` reuses a compatible service or starts one when needed.
|
||||
- `Service.stop()` stops the registered service.
|
||||
- `Service.headers(endpoint)` creates the authentication headers for a client.
|
||||
|
||||
```ts
|
||||
import { OpenCode } from "@opencode-ai/client"
|
||||
import { Service } from "@opencode-ai/client/service"
|
||||
|
||||
const endpoint = await Service.start()
|
||||
const client = OpenCode.make({
|
||||
baseUrl: endpoint.url,
|
||||
headers: Service.headers(endpoint),
|
||||
})
|
||||
|
||||
const health = await client.health.get()
|
||||
```
|
||||
|
||||
Import the native Promise service API from `@opencode-ai/client/service`.
|
||||
|
||||
## Effect
|
||||
|
||||
OpenCode provides a first-class Effect client through the
|
||||
|
|
@ -106,16 +133,11 @@ const session = await Effect.runPromise(
|
|||
Streaming operations, including `client.event.subscribe()` and
|
||||
`client.session.log(...)`, return Effect `Stream` values.
|
||||
|
||||
### Service
|
||||
### Local service
|
||||
|
||||
`Service` discovers and manages the local OpenCode background service from a
|
||||
Node application:
|
||||
|
||||
- `Service.discover()` returns a healthy registered endpoint without starting
|
||||
a process.
|
||||
- `Service.start()` reuses a compatible service or starts one when needed.
|
||||
- `Service.stop()` stops the registered service.
|
||||
- `Service.headers(endpoint)` creates the authentication headers for a client.
|
||||
The Effect entrypoint exposes the same service lifecycle operations as Effect
|
||||
values. Add `@effect/platform-node` and provide its filesystem layer when
|
||||
running service operations.
|
||||
|
||||
```sh
|
||||
bun add @effect/platform-node
|
||||
|
|
@ -123,7 +145,8 @@ bun add @effect/platform-node
|
|||
|
||||
```ts
|
||||
import { NodeFileSystem } from "@effect/platform-node"
|
||||
import { OpenCode, Service } from "@opencode-ai/client/effect"
|
||||
import { OpenCode } from "@opencode-ai/client/effect"
|
||||
import { Service } from "@opencode-ai/client/effect/service"
|
||||
import { Effect } from "effect"
|
||||
import { FetchHttpClient } from "effect/unstable/http"
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue