@opencode/server 0.0.0-dev-19794 → 0.0.0-dev-19808

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (101) hide show
  1. package/dist/api.js +10 -9
  2. package/dist/auth.js +12 -17
  3. package/dist/chunks/workerd-00nn3k4b.js +20 -0
  4. package/dist/chunks/workerd-04xw3v55.js +23 -0
  5. package/dist/chunks/workerd-19c9ysa1.js +61 -0
  6. package/dist/chunks/workerd-1c4qas2w.js +346 -0
  7. package/dist/chunks/workerd-254zvkj6.js +22 -0
  8. package/dist/chunks/workerd-2rvsests.js +99 -0
  9. package/dist/chunks/workerd-2sy3c7de.js +83 -0
  10. package/dist/chunks/workerd-3kzx88w9.js +26 -0
  11. package/dist/chunks/workerd-4g0fa6m0.js +32 -0
  12. package/dist/chunks/workerd-4vn5bvkr.js +25 -0
  13. package/dist/chunks/workerd-5rwqcaw2.js +33 -0
  14. package/dist/chunks/workerd-5w24ch67.js +23 -0
  15. package/dist/chunks/workerd-6gkz39ey.js +55 -0
  16. package/dist/chunks/workerd-6nvan4e0.js +17 -0
  17. package/dist/chunks/workerd-6ptwb1q1.js +149 -0
  18. package/dist/chunks/workerd-75c938bc.js +23 -0
  19. package/dist/chunks/workerd-7cfyat0f.js +37 -0
  20. package/dist/chunks/workerd-7rzt3wm8.js +13 -0
  21. package/dist/chunks/workerd-8bajbwjh.js +40 -0
  22. package/dist/chunks/workerd-9rqn6x4v.js +16 -0
  23. package/dist/chunks/workerd-a6yp8301.js +156 -0
  24. package/dist/chunks/workerd-arj41x43.js +77 -0
  25. package/dist/chunks/workerd-b0b71rwa.js +39 -0
  26. package/dist/chunks/workerd-bjrwanme.js +22 -0
  27. package/dist/chunks/workerd-bkqymx4n.js +26 -0
  28. package/dist/chunks/workerd-br99j6q1.js +35 -0
  29. package/dist/chunks/workerd-ceh2h0m9.js +25 -0
  30. package/dist/chunks/workerd-hezj1jdf.js +7 -0
  31. package/dist/chunks/workerd-hjnxtxmk.js +34 -0
  32. package/dist/chunks/workerd-j2pfq4q6.js +42 -0
  33. package/dist/chunks/workerd-m6wvgbfq.js +60 -0
  34. package/dist/chunks/workerd-mzr9gftb.js +36 -0
  35. package/dist/chunks/workerd-n0er2m55.js +163 -0
  36. package/dist/chunks/workerd-pnqq1zxv.js +29 -0
  37. package/dist/chunks/workerd-q0ycym90.js +13 -0
  38. package/dist/chunks/workerd-q4bn6dy8.js +39 -0
  39. package/dist/chunks/workerd-qnwpcgp7.js +22 -0
  40. package/dist/chunks/workerd-qzap92t7.js +139 -0
  41. package/dist/chunks/workerd-r7e9r02j.js +13 -0
  42. package/dist/chunks/workerd-rcg4y18n.js +59 -0
  43. package/dist/chunks/workerd-req22b70.js +22 -0
  44. package/dist/chunks/workerd-smaf4a18.js +28 -0
  45. package/dist/chunks/workerd-t8yzmczr.js +18 -0
  46. package/dist/chunks/workerd-x1haxfjx.js +21 -0
  47. package/dist/chunks/workerd-yc7nft6q.js +5 -0
  48. package/dist/chunks/workerd-ysabas57.js +13 -0
  49. package/dist/chunks/workerd-z5shrcz9.js +19 -0
  50. package/dist/chunks/workerd-zp2jm6dt.js +15 -0
  51. package/dist/chunks/workerd-zyv89x5n.js +30 -0
  52. package/dist/cors.js +10 -36
  53. package/dist/event-feed.js +20 -60
  54. package/dist/fetch.js +53 -11
  55. package/dist/handlers/agent.js +11 -17
  56. package/dist/handlers/command.js +11 -5
  57. package/dist/handlers/config.js +11 -16
  58. package/dist/handlers/credential.js +11 -14
  59. package/dist/handlers/debug.js +11 -11
  60. package/dist/handlers/event.js +12 -27
  61. package/dist/handlers/form.js +11 -9
  62. package/dist/handlers/fs.js +11 -22
  63. package/dist/handlers/generate.js +11 -15
  64. package/dist/handlers/integration.js +10 -142
  65. package/dist/handlers/location.js +11 -16
  66. package/dist/handlers/mcp.js +11 -31
  67. package/dist/handlers/message.js +10 -42
  68. package/dist/handlers/migration.js +11 -7
  69. package/dist/handlers/model.js +11 -14
  70. package/dist/handlers/permission.js +11 -57
  71. package/dist/handlers/persistent-pty.js +12 -135
  72. package/dist/handlers/plugin.js +11 -47
  73. package/dist/handlers/project.js +11 -9
  74. package/dist/handlers/provider.js +11 -20
  75. package/dist/handlers/pty-socket.js +6 -4
  76. package/dist/handlers/pty.js +13 -107
  77. package/dist/handlers/reference.js +11 -5
  78. package/dist/handlers/rpc.js +11 -15
  79. package/dist/handlers/server.js +12 -13
  80. package/dist/handlers/session-error.js +12 -26
  81. package/dist/handlers/session.js +10 -311
  82. package/dist/handlers/shell.js +11 -25
  83. package/dist/handlers/skill.js +11 -5
  84. package/dist/handlers/vcs.js +11 -19
  85. package/dist/handlers/websearch.js +11 -31
  86. package/dist/handlers/worktree.js +11 -37
  87. package/dist/handlers.js +46 -33
  88. package/dist/location.js +15 -49
  89. package/dist/middleware/authorization.js +11 -49
  90. package/dist/middleware/form-location.js +10 -25
  91. package/dist/middleware/schema-error.js +8 -15
  92. package/dist/middleware/session-location.js +10 -19
  93. package/dist/options.js +5 -1
  94. package/dist/process.js +108 -28
  95. package/dist/pty-environment.js +12 -9
  96. package/dist/request-tracing.js +6 -2
  97. package/dist/routes.js +52 -118
  98. package/dist/server-info.js +12 -22
  99. package/dist/service-status.js +8 -11
  100. package/dist/workerd.js +80 -12
  101. package/package.json +8 -8
package/dist/process.js CHANGED
@@ -1,4 +1,74 @@
1
- export * as ServerProcess from "./process";
1
+ import {
2
+ Config2
3
+ } from "./chunks/workerd-zyv89x5n.js";
4
+ import {
5
+ isAllowedCorsOrigin2
6
+ } from "./chunks/workerd-q4bn6dy8.js";
7
+ import {
8
+ authorizedRequest2
9
+ } from "./chunks/workerd-m6wvgbfq.js";
10
+ import {
11
+ withoutParentSpan2
12
+ } from "./chunks/workerd-yc7nft6q.js";
13
+ import"./chunks/workerd-smaf4a18.js";
14
+ import"./chunks/workerd-6gkz39ey.js";
15
+ import"./chunks/workerd-5rwqcaw2.js";
16
+ import"./chunks/workerd-3kzx88w9.js";
17
+ import"./chunks/workerd-z5shrcz9.js";
18
+ import"./chunks/workerd-4vn5bvkr.js";
19
+ import"./chunks/workerd-rcg4y18n.js";
20
+ import"./chunks/workerd-254zvkj6.js";
21
+ import"./chunks/workerd-pnqq1zxv.js";
22
+ import"./chunks/workerd-1c4qas2w.js";
23
+ import"./chunks/workerd-arj41x43.js";
24
+ import"./chunks/workerd-hjnxtxmk.js";
25
+ import"./chunks/workerd-6nvan4e0.js";
26
+ import"./chunks/workerd-r7e9r02j.js";
27
+ import"./chunks/workerd-q0ycym90.js";
28
+ import"./chunks/workerd-bjrwanme.js";
29
+ import"./chunks/workerd-2sy3c7de.js";
30
+ import"./chunks/workerd-7cfyat0f.js";
31
+ import"./chunks/workerd-ceh2h0m9.js";
32
+ import"./chunks/workerd-19c9ysa1.js";
33
+ import {
34
+ connectionURLs2
35
+ } from "./chunks/workerd-mzr9gftb.js";
36
+ import"./chunks/workerd-x1haxfjx.js";
37
+ import"./chunks/workerd-00nn3k4b.js";
38
+ import"./chunks/workerd-75c938bc.js";
39
+ import"./chunks/workerd-hezj1jdf.js";
40
+ import"./chunks/workerd-qzap92t7.js";
41
+ import"./chunks/workerd-n0er2m55.js";
42
+ import"./chunks/workerd-br99j6q1.js";
43
+ import"./chunks/workerd-ysabas57.js";
44
+ import"./chunks/workerd-req22b70.js";
45
+ import"./chunks/workerd-a6yp8301.js";
46
+ import"./chunks/workerd-b0b71rwa.js";
47
+ import"./chunks/workerd-8bajbwjh.js";
48
+ import"./chunks/workerd-04xw3v55.js";
49
+ import"./chunks/workerd-zp2jm6dt.js";
50
+ import"./chunks/workerd-j2pfq4q6.js";
51
+ import"./chunks/workerd-4g0fa6m0.js";
52
+ import"./chunks/workerd-7rzt3wm8.js";
53
+ import"./chunks/workerd-qnwpcgp7.js";
54
+ import"./chunks/workerd-2rvsests.js";
55
+ import"./chunks/workerd-t8yzmczr.js";
56
+ import {
57
+ createRoutes2
58
+ } from "./chunks/workerd-6ptwb1q1.js";
59
+ import {
60
+ make3
61
+ } from "./chunks/workerd-5w24ch67.js";
62
+ import {
63
+ __export
64
+ } from "./chunks/workerd-9rqn6x4v.js";
65
+
66
+ // src/process.ts
67
+ var exports_process = {};
68
+ __export(exports_process, {
69
+ ServerProcess: () => exports_process,
70
+ start: () => start
71
+ });
2
72
  import { NodeHttpServer } from "@effect/platform-node";
3
73
  import { Bus } from "@opencode/core/bus";
4
74
  import { SessionRestart } from "@opencode/core/session/execution/restart";
@@ -11,42 +81,42 @@ import {
11
81
  HttpMiddleware,
12
82
  HttpPlatform,
13
83
  HttpRouter,
14
- HttpServer,
15
84
  HttpServerRequest,
16
85
  HttpServerResponse
17
86
  } from "effect/unstable/http";
18
87
  import { createServer } from "node:http";
19
- import { ServerAuth } from "./auth";
20
- import { isAllowedCorsOrigin } from "./cors";
21
- import { authorizedRequest } from "./middleware/authorization";
22
- import { withoutParentSpan } from "./request-tracing";
23
- import { createRoutes } from "./routes";
24
- import { ServerInfo } from "./server-info";
25
- import { Status } from "./service-status";
26
- const errorResponseLogger = HttpMiddleware.make((app) => HttpMiddleware.logger(Effect.tap(app, (response) => response.status < 400 ? HttpMiddleware.withLoggerDisabled(Effect.void) : Effect.void)));
27
- export const start = Effect.fn("ServerProcess.start")(function* (options, lifecycle, transform) {
88
+ var errorResponseLogger = HttpMiddleware.make((app) => HttpMiddleware.logger(Effect.tap(app, (response) => response.status < 400 ? HttpMiddleware.withLoggerDisabled(Effect.void) : Effect.void)));
89
+ var start = Effect.fn("ServerProcess.start")(function* (options, lifecycle, transform) {
28
90
  const password = options.password;
29
91
  if (!password)
30
- return yield* Effect.fail(Error("Missing server password"));
31
- const hostname = options.hostname ?? "127.0.0.1", port = Option.fromNullishOr(options.port), shutdown = yield* Latch.make(), status = yield* Status.make(), bound = yield* listen({ hostname, port }), urls = () => {
92
+ return yield* Effect.fail(new Error("Missing server password"));
93
+ const hostname = options.hostname ?? "127.0.0.1";
94
+ const port = Option.fromNullishOr(options.port);
95
+ const shutdown = yield* Latch.make();
96
+ const status = yield* make3();
97
+ const bound = yield* listen({ hostname, port });
98
+ const urls = () => {
32
99
  const address = bound.server.address();
33
100
  if (address === null || typeof address === "string")
34
101
  return [];
35
102
  const host = address.family === "IPv6" ? `[${address.address}]` : address.address;
36
- return ServerInfo.connectionURLs(`http://${host}:${address.port}`, hostname);
37
- }, application = yield* Ref.make(Option.none());
38
- yield* bound.http.serve(dispatch(password, status, application, options.app?.version ?? "unknown", urls, Global.Path.tmp).pipe(HttpMiddleware.cors({ allowedOrigins: (origin) => isAllowedCorsOrigin(origin, options), maxAge: 86400 })), errorResponseLogger).pipe(withoutParentSpan);
103
+ return connectionURLs2(`http://${host}:${address.port}`, hostname);
104
+ };
105
+ const application = yield* Ref.make(Option.none());
106
+ yield* bound.http.serve(dispatch(password, status, application, options.app?.version ?? "unknown", urls, Global.Path.tmp).pipe(HttpMiddleware.cors({ allowedOrigins: (origin) => isAllowedCorsOrigin2(origin, options), maxAge: 86400 })), errorResponseLogger).pipe(withoutParentSpan2);
39
107
  if (lifecycle)
40
108
  yield* lifecycle.onListen(bound.http.address, shutdown.open.pipe(Effect.asVoid)).pipe(Effect.flatMap((cleanup) => Effect.addFinalizer(() => Scope.close(bound.scope, Exit.void).pipe(Effect.andThen(cleanup)))), Effect.uninterruptible);
41
- const parentScope = yield* Scope.Scope, applicationScope = yield* Scope.fork(parentScope);
109
+ const parentScope = yield* Scope.Scope;
110
+ const applicationScope = yield* Scope.fork(parentScope);
42
111
  yield* Effect.addFinalizer(() => status.beginStopping.pipe(Effect.andThen(Ref.set(application, Option.none())), Effect.andThen(Effect.sync(() => bound.server.closeAllConnections()))));
43
112
  const boot = Effect.gen(function* () {
44
- const context = yield* Layer.buildWithScope(createRoutes({
113
+ const context = yield* Layer.buildWithScope(createRoutes2({
45
114
  ...options,
46
115
  password
47
116
  }, urls).pipe(Layer.provideMerge(NodeHttpServer.layerHttpServices)), applicationScope);
48
- if (lifecycle)
117
+ if (lifecycle) {
49
118
  yield* installRestartContinuity(Context.get(context, SessionRestart.Service)).pipe(Effect.provideService(Scope.Scope, applicationScope));
119
+ }
50
120
  const app = Context.get(context, HttpRouter.HttpRouter).asHttpEffect().pipe(HttpMiddleware.compression(), Effect.provideService(HttpPlatform.HttpPlatform, Context.get(context, HttpPlatform.HttpPlatform)));
51
121
  yield* Ref.set(application, Option.some(transform ? transform(app) : app));
52
122
  yield* status.ready;
@@ -74,7 +144,9 @@ function listen(options) {
74
144
  }
75
145
  function bind(hostname, port) {
76
146
  return Effect.gen(function* () {
77
- const parentScope = yield* Scope.Scope, serverScope = yield* Scope.fork(parentScope), server = createServer();
147
+ const parentScope = yield* Scope.Scope;
148
+ const serverScope = yield* Scope.fork(parentScope);
149
+ const server = createServer();
78
150
  return yield* Effect.gen(function* () {
79
151
  const http = yield* NodeHttpServer.make(() => server, { port, host: hostname });
80
152
  yield* Effect.addFinalizer(() => Effect.sync(() => server.closeAllConnections()));
@@ -84,20 +156,24 @@ function bind(hostname, port) {
84
156
  }
85
157
  function addressInUse(error) {
86
158
  if (typeof error !== "object" || error === null || !("cause" in error))
87
- return !1;
159
+ return false;
88
160
  const cause = error.cause;
89
161
  return typeof cause === "object" && cause !== null && "code" in cause && cause.code === "EADDRINUSE";
90
162
  }
91
163
  function dispatch(password, status, application, version, urls, tmp) {
92
- const auth = ServerAuth.Config.of({ password: Option.some(password), username: "opencode" });
164
+ const auth = Config2.of({ password: Option.some(password), username: "opencode" });
93
165
  return Effect.gen(function* () {
94
- const request = yield* HttpServerRequest.HttpServerRequest, url = new URL(request.url, "http://localhost"), state = yield* status.current, app = yield* Ref.get(application), ready = state.type === "ready" && Option.isSome(app);
166
+ const request = yield* HttpServerRequest.HttpServerRequest;
167
+ const url = new URL(request.url, "http://localhost");
168
+ const state = yield* status.current;
169
+ const app = yield* Ref.get(application);
170
+ const ready = state.type === "ready" && Option.isSome(app);
95
171
  if (request.method === "GET" && url.pathname === "/api/info" && !ready) {
96
- if (!(yield* authorizedRequest(request, auth)))
172
+ if (!(yield* authorizedRequest2(request, auth)))
97
173
  return unauthorized();
98
174
  return yield* infoResponse(status, version, urls, tmp);
99
175
  }
100
- if ((!ready || !hasPtyConnectTicketURL(url) && !hasPersistentPtyConnectTicketURL(url)) && !(yield* authorizedRequest(request, auth)))
176
+ if ((!ready || !hasPtyConnectTicketURL(url) && !hasPersistentPtyConnectTicketURL(url)) && !(yield* authorizedRequest2(request, auth)))
101
177
  return unauthorized();
102
178
  if (ready)
103
179
  return yield* app.value;
@@ -110,11 +186,11 @@ function unauthorized() {
110
186
  headers: { "www-authenticate": 'Basic realm="Secure Area"' }
111
187
  });
112
188
  }
113
- const infoResponse = Effect.fnUntraced(function* (status, version, urls, tmp) {
189
+ var infoResponse = Effect.fnUntraced(function* (status, version, urls, tmp) {
114
190
  const state = yield* status.current;
115
191
  return HttpServerResponse.jsonUnsafe({ version, pid: process.pid, urls: urls(), paths: { tmp } }, {
116
192
  status: state.type === "ready" ? 200 : state.type === "failed" ? 500 : 503,
117
- headers: state.type === "starting" || state.type === "stopping" ? { "retry-after": "1" } : void 0
193
+ headers: state.type === "starting" || state.type === "stopping" ? { "retry-after": "1" } : undefined
118
194
  });
119
195
  });
120
196
  function unavailable(status) {
@@ -126,6 +202,10 @@ function unavailable(status) {
126
202
  }, { status: 503 });
127
203
  return HttpServerResponse.jsonUnsafe({ code: status.type === "stopping" ? "service_stopping" : "service_starting" }, { status: 503, headers: { "retry-after": "1" } });
128
204
  }
129
- const installRestartContinuity = Effect.fnUntraced(function* (restart) {
205
+ var installRestartContinuity = Effect.fnUntraced(function* (restart) {
130
206
  yield* Effect.forkScoped(restart.resumeSuspendedSessions);
131
207
  });
208
+ export {
209
+ exports_process as ServerProcess,
210
+ start
211
+ };
@@ -1,9 +1,12 @@
1
- export * as PtyEnvironment from "./pty-environment";
2
- import { Context, Effect, Layer } from "effect";
3
- import { makeGlobalNode } from "@opencode/util/effect/app-node";
4
-
5
- export class Service extends Context.Service()("@opencode/ServerPtyEnvironment") {
6
- }
7
- export const layer = Layer.succeed(Service, Service.of({
8
- get: () => Effect.succeed({})
9
- })), node = makeGlobalNode({ service: Service, layer, deps: [] });
1
+ import {
2
+ Service4,
3
+ layer5,
4
+ node2,
5
+ exports_pty_environment
6
+ } from "./chunks/workerd-75c938bc.js";
7
+ export {
8
+ exports_pty_environment as PtyEnvironment,
9
+ Service4 as Service,
10
+ layer5 as layer,
11
+ node2 as node
12
+ };
@@ -1,2 +1,6 @@
1
- import { Context, Effect, Scope, Tracer } from "effect";
2
- export const withoutParentSpan = (effect) => effect.pipe(Effect.updateContext((context) => Context.omit(Tracer.ParentSpan)(context)));
1
+ import {
2
+ withoutParentSpan2
3
+ } from "./chunks/workerd-yc7nft6q.js";
4
+ export {
5
+ withoutParentSpan2 as withoutParentSpan
6
+ };
package/dist/routes.js CHANGED
@@ -1,118 +1,52 @@
1
- import { Database } from "@opencode/core/database/database";
2
- import { V1Migration } from "@opencode/core/database/v1-migration";
3
- import { App } from "@opencode/core/app";
4
- import { LayerNode } from "@opencode/util/effect/layer-node";
5
- import { Node } from "@opencode/util/effect/app-node";
6
- import { httpClient } from "@opencode/util/effect/app-node-platform";
7
- import { AppNodeBuilder } from "@opencode/core/effect/app-node-builder";
8
- import { Bus } from "@opencode/core/bus";
9
- import { EventLogger } from "@opencode/core/event-logger";
10
- import { FileSystemSearch } from "@opencode/core/filesystem/search";
11
- import { Credential } from "@opencode/core/credential";
12
- import { Config } from "@opencode/core/config";
13
- import { PermissionSaved } from "@opencode/core/permission/saved";
14
- import { PtyTicket } from "@opencode/core/pty/ticket";
15
- import { PersistentPty } from "@opencode/core/persistent-pty";
16
- import { Project } from "@opencode/core/project";
17
- import { Worktree } from "@opencode/core/worktree";
18
- import { Session } from "@opencode/core/session";
19
- import { Instance } from "@opencode/core/instance/service";
20
- import { SessionTransfer } from "@opencode/core/session/transfer";
21
- import { ShellSelect } from "@opencode/core/shell/select";
22
- import { Job } from "@opencode/core/job";
23
- import { Mcp } from "@opencode/core/mcp/index";
24
- import { Global } from "@opencode/util/global";
25
- import { InstructionDiscovery } from "@opencode/core/instruction-discovery";
26
- import { LocationServiceMap } from "@opencode/core/location-service-map";
27
- import { LocationActivity } from "@opencode/core/location-activity";
28
- import { ModelsDev } from "@opencode/core/models-dev";
29
- import { SessionRestart } from "@opencode/core/session/execution/restart";
30
- import { PluginUpdate } from "@opencode/core/plugin/update";
31
- import { SdkPlugins } from "@opencode/core/plugin/sdk";
32
- import { WellKnown } from "@opencode/core/wellknown";
33
- import { Workspace } from "@opencode/core/workspace";
34
- import { Watcher } from "@opencode/core/filesystem/watcher";
35
- import { HttpRouter } from "effect/unstable/http";
36
- import { HttpApiBuilder } from "effect/unstable/httpapi";
37
- import { Context, Effect, Layer, Option } from "effect";
38
- import { Api } from "./api";
39
- import { ServerAuth } from "./auth";
40
- import { CorsConfig } from "./cors";
41
- import { handlers } from "./handlers";
42
- import { authorizationLayer } from "./middleware/authorization";
43
- import { schemaErrorLayer } from "./middleware/schema-error";
44
- import { PtyEnvironment } from "./pty-environment";
45
- import { layer } from "./location";
46
- import { formLocationLayer } from "./middleware/form-location";
47
- import { sessionLocationLayer } from "./middleware/session-location";
48
- import { ServerInfo } from "./server-info";
49
- const applicationServiceNodes = [
50
- Global.node,
51
- Database.node,
52
- Bus.node,
53
- EventLogger.node,
54
- httpClient,
55
- Job.node,
56
- Project.node,
57
- Worktree.node,
58
- Session.node,
59
- Instance.node,
60
- SessionTransfer.node,
61
- SdkPlugins.node,
62
- PluginUpdate.node,
63
- PermissionSaved.node,
64
- PtyTicket.node,
65
- PersistentPty.node,
66
- Credential.node,
67
- WellKnown.node,
68
- PtyEnvironment.node,
69
- LocationServiceMap.node,
70
- LocationActivity.node,
71
- SessionRestart.node,
72
- Workspace.node
73
- ], applicationServices = LayerNode.group(applicationServiceNodes);
74
- export function createRoutes(options = {}, serviceURLs = () => [], overrides = []) {
75
- return makeRoutes(options.password ? ServerAuth.Config.configLayer({ password: Option.some(options.password) }) : ServerAuth.Config.layer, options, serviceURLs, overrides);
76
- }
77
- export function createEmbeddedRoutes(options = {}, overrides = [], instances) {
78
- return makeRoutes(ServerAuth.Config.configLayer({ password: Option.none() }), options, () => [], overrides, instances);
79
- }
80
- function makeRoutes(auth, options, serviceURLs, overrides, instances) {
81
- const standard = [
82
- Database.node.replace(Database.configured(options.database)),
83
- PersistentPty.node.replace(PersistentPty.configured(options.pty)),
84
- Bus.node.replace(Bus.configured({ persist: options.events?.persist })),
85
- App.node.replace(App.configured(options.app)),
86
- ModelsDev.node.replace(ModelsDev.configured(options.models)),
87
- Watcher.node.replace(Watcher.configured({ enabled: options.fs?.filewatcher })),
88
- FileSystemSearch.node.replace(FileSystemSearch.configured({ fff: options.fs?.fff })),
89
- Global.node.replace(Global.layerWith(options.config?.directory ? { config: options.config.directory } : {})),
90
- Config.node.replace(Config.configured({
91
- project: options.config?.project,
92
- file: options.config?.file,
93
- content: options.config?.content
94
- })),
95
- InstructionDiscovery.node.replace(InstructionDiscovery.configured({ project: options.config?.project })),
96
- ShellSelect.node.replace(ShellSelect.configured({ gitbash: options.windows?.gitbash })),
97
- Mcp.node.replace(Mcp.configured({
98
- clientInfo: {
99
- name: options.app?.name ?? "opencode",
100
- version: options.app?.version ?? "unknown"
101
- }
102
- }))
103
- ], build = (overrides) => {
104
- const replacements = [
105
- ...standard,
106
- ...instances ? [Instance.node.replace(instances(() => replacements))] : [],
107
- ...overrides
108
- ];
109
- return AppNodeBuilder.build(applicationServices, replacements);
110
- };
111
- return (options.simulation ? Layer.unwrap(Effect.gen(function* () {
112
- const { simulationReplacements } = yield* Effect.promise(() => import("@opencode/simulation/backend")), simulation = yield* simulationReplacements({ version: App.make(options.app).version });
113
- return build([...overrides, ...simulation]);
114
- })) : build(overrides)).pipe(Layer.flatMap((context) => {
115
- const services = Layer.succeedContext(context), requestServices = Layer.merge(Layer.succeedContext(Context.pick(Database.Service, Credential.Service, PermissionSaved.Service, PluginUpdate.Service, Project.Service, WellKnown.Service)(context)), ServerInfo.layer(serviceURLs, Context.get(context, Global.Service).tmp, options.app)), api = HttpApiBuilder.layer(Api, { openapiPath: "/openapi.json" }).pipe(Layer.provide(handlers.pipe(Layer.provide(services), Layer.provide(Layer.succeed(CorsConfig, options)))), Layer.provide(formLocationLayer), Layer.provide(sessionLocationLayer), Layer.provide(layer), Layer.provide(authorizationLayer), Layer.provide(schemaErrorLayer), Layer.provide(auth), HttpRouter.provideRequest(requestServices), Layer.provideMerge(services), Layer.provideMerge(HttpRouter.layer));
116
- return Layer.merge(api, V1Migration.layer.pipe(Layer.provide(services)));
117
- }));
118
- }
1
+ import {
2
+ createRoutes2,
3
+ createEmbeddedRoutes2
4
+ } from "./chunks/workerd-6ptwb1q1.js";
5
+ import"./chunks/workerd-m6wvgbfq.js";
6
+ import"./chunks/workerd-t8yzmczr.js";
7
+ import"./chunks/workerd-zyv89x5n.js";
8
+ import"./chunks/workerd-2rvsests.js";
9
+ import"./chunks/workerd-7cfyat0f.js";
10
+ import"./chunks/workerd-q0ycym90.js";
11
+ import"./chunks/workerd-bjrwanme.js";
12
+ import"./chunks/workerd-254zvkj6.js";
13
+ import"./chunks/workerd-4g0fa6m0.js";
14
+ import"./chunks/workerd-19c9ysa1.js";
15
+ import"./chunks/workerd-req22b70.js";
16
+ import"./chunks/workerd-a6yp8301.js";
17
+ import"./chunks/workerd-j2pfq4q6.js";
18
+ import"./chunks/workerd-1c4qas2w.js";
19
+ import"./chunks/workerd-4vn5bvkr.js";
20
+ import"./chunks/workerd-8bajbwjh.js";
21
+ import"./chunks/workerd-ceh2h0m9.js";
22
+ import"./chunks/workerd-ysabas57.js";
23
+ import"./chunks/workerd-arj41x43.js";
24
+ import"./chunks/workerd-b0b71rwa.js";
25
+ import"./chunks/workerd-hjnxtxmk.js";
26
+ import"./chunks/workerd-br99j6q1.js";
27
+ import"./chunks/workerd-qzap92t7.js";
28
+ import"./chunks/workerd-x1haxfjx.js";
29
+ import"./chunks/workerd-6nvan4e0.js";
30
+ import"./chunks/workerd-qnwpcgp7.js";
31
+ import"./chunks/workerd-r7e9r02j.js";
32
+ import"./chunks/workerd-pnqq1zxv.js";
33
+ import"./chunks/workerd-rcg4y18n.js";
34
+ import"./chunks/workerd-zp2jm6dt.js";
35
+ import"./chunks/workerd-n0er2m55.js";
36
+ import"./chunks/workerd-hezj1jdf.js";
37
+ import"./chunks/workerd-00nn3k4b.js";
38
+ import"./chunks/workerd-04xw3v55.js";
39
+ import"./chunks/workerd-7rzt3wm8.js";
40
+ import"./chunks/workerd-2sy3c7de.js";
41
+ import"./chunks/workerd-q4bn6dy8.js";
42
+ import"./chunks/workerd-mzr9gftb.js";
43
+ import"./chunks/workerd-z5shrcz9.js";
44
+ import"./chunks/workerd-3kzx88w9.js";
45
+ import"./chunks/workerd-5rwqcaw2.js";
46
+ import"./chunks/workerd-6gkz39ey.js";
47
+ import"./chunks/workerd-smaf4a18.js";
48
+ import"./chunks/workerd-75c938bc.js";
49
+ export {
50
+ createEmbeddedRoutes2 as createEmbeddedRoutes,
51
+ createRoutes2 as createRoutes
52
+ };
@@ -1,22 +1,12 @@
1
- import { Context, Layer } from "effect";
2
- import { networkInterfaces } from "node:os";
3
-
4
- export class Service extends Context.Service()("@opencode/server/ServerInfo") {
5
- }
6
- export function layer(urls, tmp, app = {}) {
7
- return Layer.succeed(Service, Service.of({ urls, app, paths: { tmp } }));
8
- }
9
- export function connectionURLs(value, requestedHostname) {
10
- const url = new URL(value), hostname = requestedHostname ?? url.hostname, family = hostname === "0.0.0.0" ? "IPv4" : hostname === "::" || hostname === "[::]" ? "IPv6" : void 0;
11
- if (family === void 0)
12
- return [value];
13
- return [
14
- ...new Set(Object.values(networkInterfaces()).flatMap((entries) => entries ?? []).filter((entry) => !entry.internal && entry.family === family).map((entry) => {
15
- const result = new URL(value);
16
- result.hostname = family === "IPv6" ? `[${entry.address}]` : entry.address;
17
- return result.toString().replace(/\/$/, "");
18
- }))
19
- ];
20
- }
21
-
22
- export * as ServerInfo from "./server-info";
1
+ import {
2
+ Service3,
3
+ layer3,
4
+ connectionURLs2,
5
+ exports_server_info
6
+ } from "./chunks/workerd-mzr9gftb.js";
7
+ export {
8
+ exports_server_info as ServerInfo,
9
+ Service3 as Service,
10
+ connectionURLs2 as connectionURLs,
11
+ layer3 as layer
12
+ };
@@ -1,11 +1,8 @@
1
- export * as Status from "./service-status";
2
- import { Effect, Ref } from "effect";
3
- export const make = Effect.fnUntraced(function* (options = {}) {
4
- const current = yield* Ref.make(options.initial ?? { type: "starting" }), beginStopping = Ref.update(current, (status) => status.type === "stopping" ? status : { type: "stopping" });
5
- return {
6
- current: Ref.get(current),
7
- ready: Ref.update(current, (status) => status.type === "starting" ? { type: "ready" } : status),
8
- fail: Ref.update(current, (status) => status.type === "starting" ? { type: "failed" } : status),
9
- beginStopping
10
- };
11
- });
1
+ import {
2
+ make3,
3
+ exports_service_status
4
+ } from "./chunks/workerd-5w24ch67.js";
5
+ export {
6
+ exports_service_status as Status,
7
+ make3 as make
8
+ };
package/dist/workerd.js CHANGED
@@ -1,4 +1,63 @@
1
- export * as ServerWorkerd from "./workerd";
1
+ import"./chunks/workerd-q4bn6dy8.js";
2
+ import"./chunks/workerd-smaf4a18.js";
3
+ import"./chunks/workerd-6gkz39ey.js";
4
+ import"./chunks/workerd-5rwqcaw2.js";
5
+ import"./chunks/workerd-3kzx88w9.js";
6
+ import"./chunks/workerd-z5shrcz9.js";
7
+ import"./chunks/workerd-zyv89x5n.js";
8
+ import"./chunks/workerd-4vn5bvkr.js";
9
+ import"./chunks/workerd-rcg4y18n.js";
10
+ import"./chunks/workerd-254zvkj6.js";
11
+ import"./chunks/workerd-pnqq1zxv.js";
12
+ import"./chunks/workerd-1c4qas2w.js";
13
+ import"./chunks/workerd-arj41x43.js";
14
+ import"./chunks/workerd-hjnxtxmk.js";
15
+ import"./chunks/workerd-6nvan4e0.js";
16
+ import"./chunks/workerd-r7e9r02j.js";
17
+ import"./chunks/workerd-q0ycym90.js";
18
+ import"./chunks/workerd-bjrwanme.js";
19
+ import"./chunks/workerd-2sy3c7de.js";
20
+ import"./chunks/workerd-7cfyat0f.js";
21
+ import"./chunks/workerd-ceh2h0m9.js";
22
+ import"./chunks/workerd-19c9ysa1.js";
23
+ import"./chunks/workerd-mzr9gftb.js";
24
+ import"./chunks/workerd-x1haxfjx.js";
25
+ import"./chunks/workerd-00nn3k4b.js";
26
+ import"./chunks/workerd-75c938bc.js";
27
+ import"./chunks/workerd-hezj1jdf.js";
28
+ import"./chunks/workerd-qzap92t7.js";
29
+ import"./chunks/workerd-n0er2m55.js";
30
+ import"./chunks/workerd-br99j6q1.js";
31
+ import"./chunks/workerd-ysabas57.js";
32
+ import"./chunks/workerd-req22b70.js";
33
+ import"./chunks/workerd-a6yp8301.js";
34
+ import"./chunks/workerd-b0b71rwa.js";
35
+ import"./chunks/workerd-8bajbwjh.js";
36
+ import"./chunks/workerd-04xw3v55.js";
37
+ import"./chunks/workerd-zp2jm6dt.js";
38
+ import"./chunks/workerd-j2pfq4q6.js";
39
+ import"./chunks/workerd-4g0fa6m0.js";
40
+ import"./chunks/workerd-7rzt3wm8.js";
41
+ import"./chunks/workerd-qnwpcgp7.js";
42
+ import"./chunks/workerd-2rvsests.js";
43
+ import"./chunks/workerd-m6wvgbfq.js";
44
+ import"./chunks/workerd-t8yzmczr.js";
45
+ import"./chunks/workerd-6ptwb1q1.js";
46
+ import {
47
+ make2
48
+ } from "./chunks/workerd-bkqymx4n.js";
49
+ import {
50
+ __export
51
+ } from "./chunks/workerd-9rqn6x4v.js";
52
+
53
+ // src/workerd.ts
54
+ var exports_workerd = {};
55
+ __export(exports_workerd, {
56
+ ServerWorkerd: () => exports_workerd,
57
+ create: () => create,
58
+ replacements: () => replacements,
59
+ serverOptions: () => serverOptions
60
+ });
2
61
  import { Effect, Layer } from "effect";
3
62
  import { ConfigPluginSource } from "@opencode/core/config/plugin/source";
4
63
  import { Database } from "@opencode/core/database/database";
@@ -10,21 +69,20 @@ import { Pty } from "@opencode/core/pty";
10
69
  import { Snapshot } from "@opencode/core/snapshot";
11
70
  import { Vcs } from "@opencode/core/vcs";
12
71
  import { CrossSpawnSpawner } from "@opencode/util/cross-spawn-spawner";
13
- import { ServerFetch } from "./fetch";
14
- export function create(options) {
15
- return ServerFetch.make(serverOptions(options), { overrides: replacements(options) });
72
+ function create(options) {
73
+ return make2(serverOptions(options), { overrides: replacements(options) });
16
74
  }
17
- export function serverOptions(options) {
75
+ function serverOptions(options) {
18
76
  return {
19
77
  app: options.app,
20
78
  password: options.password,
21
- fs: { filewatcher: !1, fff: !1 },
22
- events: { persist: !0 },
79
+ fs: { filewatcher: false, fff: false },
80
+ events: { persist: true },
23
81
  config: { content: options.config?.content },
24
82
  models: options.models
25
83
  };
26
84
  }
27
- export function replacements(options) {
85
+ function replacements(options) {
28
86
  return [
29
87
  Database.node.replace(Database.configuredClient(sqliteLayer({ storage: options.storage }))),
30
88
  CrossSpawnSpawner.node.replace(EnvironmentUnavailable.layer),
@@ -36,7 +94,8 @@ export function replacements(options) {
36
94
  ConfigPluginSource.node.replace(ConfigPluginSource.empty)
37
95
  ];
38
96
  }
39
- const unavailable = (what) => Effect.die(Error(`${what} is unavailable in the workerd profile`)), vcsLayer = Layer.succeed(Vcs.Service, Vcs.Service.of({
97
+ var unavailable = (what) => Effect.die(new Error(`${what} is unavailable in the workerd profile`));
98
+ var vcsLayer = Layer.succeed(Vcs.Service, Vcs.Service.of({
40
99
  base: () => Effect.succeed(null),
41
100
  transform: () => Effect.succeed({ dispose: Effect.void }),
42
101
  reload: () => Effect.void,
@@ -44,14 +103,17 @@ const unavailable = (what) => Effect.die(Error(`${what} is unavailable in the wo
44
103
  branches: () => Effect.succeed([]),
45
104
  status: () => Effect.succeed([]),
46
105
  diff: () => Effect.succeed([])
47
- })), fileSystemLayer = Layer.succeed(FileSystem.Service, FileSystem.Service.of({
106
+ }));
107
+ var fileSystemLayer = Layer.succeed(FileSystem.Service, FileSystem.Service.of({
48
108
  read: () => unavailable("FileSystem.read"),
49
109
  list: () => unavailable("FileSystem.list"),
50
110
  find: () => unavailable("FileSystem.find"),
51
111
  write: () => unavailable("FileSystem.write")
52
- })), fileSystemSearchLayer = Layer.succeed(FileSystemSearch.Service, FileSystemSearch.Service.of({
112
+ }));
113
+ var fileSystemSearchLayer = Layer.succeed(FileSystemSearch.Service, FileSystemSearch.Service.of({
53
114
  find: () => unavailable("FileSystemSearch.find")
54
- })), ptyLayer = Layer.succeed(Pty.Service, Pty.Service.of({
115
+ }));
116
+ var ptyLayer = Layer.succeed(Pty.Service, Pty.Service.of({
55
117
  list: () => Effect.succeed([]),
56
118
  get: (ptyID) => Effect.fail(new Pty.NotFoundError({ ptyID })),
57
119
  create: () => unavailable("Pty.create"),
@@ -60,3 +122,9 @@ const unavailable = (what) => Effect.die(Error(`${what} is unavailable in the wo
60
122
  write: (ptyID) => Effect.fail(new Pty.NotFoundError({ ptyID })),
61
123
  attach: (ptyID) => Effect.fail(new Pty.NotFoundError({ ptyID }))
62
124
  }));
125
+ export {
126
+ exports_workerd as ServerWorkerd,
127
+ create,
128
+ replacements,
129
+ serverOptions
130
+ };
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "$schema": "https://json.schemastore.org/package.json",
3
3
  "name": "@opencode/server",
4
- "version": "0.0.0-dev-19794",
4
+ "version": "0.0.0-dev-19808",
5
5
  "type": "module",
6
6
  "license": "MIT",
7
7
  "repository": {
@@ -30,17 +30,17 @@
30
30
  "dependencies": {
31
31
  "@effect/platform-node": "4.0.0-rc.112",
32
32
  "@effect/platform-node-shared": "4.0.0-rc.112",
33
- "@opencode/core": "0.0.0-dev-19794",
34
- "@opencode/protocol": "0.0.0-dev-19794",
35
- "@opencode/schema": "0.0.0-dev-19794",
36
- "@opencode/simulation": "0.0.0-dev-19794",
37
- "@opencode/util": "0.0.0-dev-19794",
33
+ "@opencode/core": "0.0.0-dev-19808",
34
+ "@opencode/protocol": "0.0.0-dev-19808",
35
+ "@opencode/schema": "0.0.0-dev-19808",
36
+ "@opencode/simulation": "0.0.0-dev-19808",
37
+ "@opencode/util": "0.0.0-dev-19808",
38
38
  "drizzle-orm": "1.0.0-rc.5-169397b",
39
39
  "effect": "4.0.0-rc.112"
40
40
  },
41
41
  "devDependencies": {
42
- "@opencode/client": "0.0.0-dev-19794",
43
- "@opencode/plugin": "0.0.0-dev-19794",
42
+ "@opencode/client": "0.0.0-dev-19808",
43
+ "@opencode/plugin": "0.0.0-dev-19808",
44
44
  "@tsconfig/bun": "1.0.9",
45
45
  "@types/bun": "1.4.0",
46
46
  "@typescript/native-preview": "7.0.0-dev.20251207.1"