@opencode/server 2.1.4 → 2.2.1

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 (126) hide show
  1. package/dist/api.d.ts +8 -1
  2. package/dist/api.js +5 -5
  3. package/dist/auth.js +1 -1
  4. package/dist/chunks/{pairing-e4x9285j.js → media-uri-0a5jm2na.js} +4 -4
  5. package/dist/chunks/{pairing-0dncng21.js → media-uri-0n1e9dnh.js} +25 -12
  6. package/dist/chunks/{pairing-x0608mvx.js → media-uri-1je14sn4.js} +1 -1
  7. package/dist/chunks/{pairing-2yr2dq97.js → media-uri-22wspztn.js} +2 -2
  8. package/dist/chunks/{pairing-5w10ccet.js → media-uri-2xcc0x05.js} +1 -1
  9. package/dist/chunks/{pairing-39nnfjx1.js → media-uri-39nnfjx1.js} +1 -1
  10. package/dist/chunks/{pairing-x2dckmx1.js → media-uri-3t6z87e1.js} +23 -16
  11. package/dist/chunks/{pairing-4b0899hb.js → media-uri-6vs5sqy6.js} +2 -2
  12. package/dist/chunks/{pairing-7b9xm1qg.js → media-uri-7b9xm1qg.js} +1 -1
  13. package/dist/chunks/{pairing-aj1jc7g7.js → media-uri-8113w26k.js} +8 -6
  14. package/dist/chunks/{pairing-t3j5ftv1.js → media-uri-9c4eyh8m.js} +3 -3
  15. package/dist/chunks/{pairing-3te71694.js → media-uri-b1prsepx.js} +4 -4
  16. package/dist/chunks/{pairing-e7pctymn.js → media-uri-b2k9041j.js} +1 -1
  17. package/dist/chunks/{pairing-erzfdgke.js → media-uri-bd8755ek.js} +16 -1
  18. package/dist/chunks/{pairing-f4b2q3tn.js → media-uri-be53s2qz.js} +1 -1
  19. package/dist/chunks/media-uri-c6sjpm0r.js +83 -0
  20. package/dist/chunks/{pairing-4qjw9nya.js → media-uri-ckkpcd9y.js} +4 -4
  21. package/dist/chunks/{pairing-j5aeaa16.js → media-uri-dk68ymtv.js} +1 -1
  22. package/dist/chunks/{pairing-kcjd09wg.js → media-uri-e46y0tfd.js} +2 -2
  23. package/dist/chunks/{pairing-k6dz4enc.js → media-uri-fvpjvjpp.js} +24 -23
  24. package/dist/chunks/{pairing-3154e7fk.js → media-uri-gk0yxcp6.js} +5 -3
  25. package/dist/chunks/{pairing-gymtz25n.js → media-uri-gqq6kfhc.js} +3 -3
  26. package/dist/chunks/{pairing-cfhthk6z.js → media-uri-h072q2hm.js} +1 -1
  27. package/dist/chunks/{pairing-a6kxe6a7.js → media-uri-h3g82chs.js} +12 -4
  28. package/dist/chunks/{pairing-2b2wekgg.js → media-uri-h9rcwvg0.js} +1 -1
  29. package/dist/chunks/{pairing-swdgbzpj.js → media-uri-hax1v4bv.js} +4 -2
  30. package/dist/chunks/{pairing-ga3m49sz.js → media-uri-hnheq3hv.js} +4 -2
  31. package/dist/chunks/{pairing-j4at0y5c.js → media-uri-j4at0y5c.js} +1 -1
  32. package/dist/chunks/media-uri-j9gxd9me.js +22 -0
  33. package/dist/chunks/{pairing-91mt6ewz.js → media-uri-m5rae7m4.js} +2 -2
  34. package/dist/chunks/{pairing-kqr36gas.js → media-uri-mzs0n5xz.js} +7 -7
  35. package/dist/chunks/media-uri-n321d8vm.js +46 -0
  36. package/dist/chunks/media-uri-ndydfxzp.js +105 -0
  37. package/dist/chunks/{pairing-6xea6nhh.js → media-uri-ppma8fcc.js} +3 -3
  38. package/dist/chunks/{pairing-qvy2s3nb.js → media-uri-prdak4hd.js} +6 -6
  39. package/dist/chunks/{pairing-mte34432.js → media-uri-qbhbayp5.js} +3 -3
  40. package/dist/chunks/{pairing-49c878v9.js → media-uri-qn8kkfq6.js} +12 -3
  41. package/dist/chunks/{pairing-x9vr2ttf.js → media-uri-r6vmgwff.js} +24 -6
  42. package/dist/chunks/{pairing-9me4q8wt.js → media-uri-rztv1fyf.js} +4 -4
  43. package/dist/chunks/{pairing-nv8hzzrz.js → media-uri-wd7b20jw.js} +32 -12
  44. package/dist/chunks/{pairing-kaqtndqt.js → media-uri-wxj3d9av.js} +4 -11
  45. package/dist/chunks/{pairing-q69f22pd.js → media-uri-x8dgc261.js} +2 -2
  46. package/dist/chunks/{pairing-31acg4hb.js → media-uri-xe9t9xr4.js} +7 -3
  47. package/dist/chunks/media-uri-xthc02cw.js +6 -0
  48. package/dist/chunks/media-uri-xzvdbbpy.js +40 -0
  49. package/dist/chunks/{pairing-x74w7e1f.js → media-uri-yet0vexm.js} +1 -1
  50. package/dist/chunks/{pairing-kd6vzpgq.js → media-uri-yr4wsvrw.js} +2 -2
  51. package/dist/chunks/{pairing-xmwystkq.js → media-uri-z59gyc0x.js} +2 -2
  52. package/dist/chunks/{pairing-72ygafj3.js → media-uri-zjy4sw3d.js} +2 -2
  53. package/dist/cors.js +1 -1
  54. package/dist/event-feed.d.ts +1 -1
  55. package/dist/event-feed.js +5 -5
  56. package/dist/fetch.js +51 -47
  57. package/dist/handlers/agent.js +6 -6
  58. package/dist/handlers/command.js +6 -6
  59. package/dist/handlers/config.js +6 -6
  60. package/dist/handlers/credential.js +6 -6
  61. package/dist/handlers/debug.js +6 -6
  62. package/dist/handlers/event.js +7 -7
  63. package/dist/handlers/form.js +6 -6
  64. package/dist/handlers/fs.d.ts +2 -1
  65. package/dist/handlers/fs.js +6 -6
  66. package/dist/handlers/generate.d.ts +1 -1
  67. package/dist/handlers/generate.js +6 -6
  68. package/dist/handlers/integration.js +6 -6
  69. package/dist/handlers/location.js +6 -6
  70. package/dist/handlers/mcp.js +8 -8
  71. package/dist/handlers/media.d.ts +6 -0
  72. package/dist/handlers/media.js +6 -0
  73. package/dist/handlers/message.js +7 -6
  74. package/dist/handlers/migration.js +6 -6
  75. package/dist/handlers/model.js +6 -6
  76. package/dist/handlers/permission.js +6 -6
  77. package/dist/handlers/persistent-pty.d.ts +1 -1
  78. package/dist/handlers/persistent-pty.js +10 -8
  79. package/dist/handlers/plugin.js +6 -6
  80. package/dist/handlers/project.d.ts +1 -1
  81. package/dist/handlers/project.js +6 -6
  82. package/dist/handlers/provider.js +6 -6
  83. package/dist/handlers/pty-socket.js +1 -1
  84. package/dist/handlers/pty.js +8 -8
  85. package/dist/handlers/reference.js +6 -6
  86. package/dist/handlers/rpc.js +6 -6
  87. package/dist/handlers/schedule.d.ts +209 -0
  88. package/dist/handlers/schedule.js +7 -0
  89. package/dist/handlers/server.js +9 -9
  90. package/dist/handlers/session-error.js +1 -1
  91. package/dist/handlers/session.d.ts +3 -1
  92. package/dist/handlers/session.js +7 -6
  93. package/dist/handlers/shell.js +6 -6
  94. package/dist/handlers/skill.js +6 -6
  95. package/dist/handlers/usage.d.ts +1 -0
  96. package/dist/handlers/usage.js +11 -0
  97. package/dist/handlers/vcs.js +6 -6
  98. package/dist/handlers/voice.d.ts +1 -1
  99. package/dist/handlers/voice.js +6 -6
  100. package/dist/handlers/websearch.js +6 -6
  101. package/dist/handlers/worktree.js +6 -6
  102. package/dist/handlers.d.ts +1 -1
  103. package/dist/handlers.js +47 -43
  104. package/dist/location.js +4 -4
  105. package/dist/media-uri.d.ts +6 -0
  106. package/dist/media-uri.js +6 -0
  107. package/dist/middleware/authorization.js +2 -2
  108. package/dist/middleware/form-location.js +3 -3
  109. package/dist/middleware/schema-error.js +1 -1
  110. package/dist/middleware/session-location.js +3 -3
  111. package/dist/pairing.js +3 -3
  112. package/dist/process.js +55 -49
  113. package/dist/request-tracing.js +1 -1
  114. package/dist/routes.d.ts +5 -2
  115. package/dist/routes.js +50 -46
  116. package/dist/server-info.js +3 -3
  117. package/dist/service-status.js +1 -1
  118. package/dist/workerd.js +52 -48
  119. package/package.json +9 -8
  120. package/dist/chunks/pairing-kyxm98pg.js +0 -102
  121. package/dist/chunks/pairing-pmjbkszz.js +0 -30
  122. /package/dist/chunks/{pairing-9rqn6x4v.js → media-uri-9rqn6x4v.js} +0 -0
  123. /package/dist/chunks/{pairing-h6rt5k9s.js → media-uri-h6rt5k9s.js} +0 -0
  124. /package/dist/chunks/{pairing-q4bn6dy8.js → media-uri-q4bn6dy8.js} +0 -0
  125. /package/dist/chunks/{pairing-smaf4a18.js → media-uri-smaf4a18.js} +0 -0
  126. /package/dist/chunks/{pairing-yc7nft6q.js → media-uri-yc7nft6q.js} +0 -0
@@ -2,17 +2,17 @@ import {
2
2
  locationErrors2,
3
3
  response2,
4
4
  requestRef2
5
- } from "./pairing-gymtz25n.js";
5
+ } from "./media-uri-gqq6kfhc.js";
6
6
  import {
7
7
  Api2
8
- } from "./pairing-t3j5ftv1.js";
8
+ } from "./media-uri-9c4eyh8m.js";
9
9
  import {
10
10
  CorsConfig2,
11
11
  isAllowedRequestOrigin2
12
- } from "./pairing-q4bn6dy8.js";
12
+ } from "./media-uri-q4bn6dy8.js";
13
13
  import {
14
14
  runPtySocket2
15
- } from "./pairing-h6rt5k9s.js";
15
+ } from "./media-uri-h6rt5k9s.js";
16
16
 
17
17
  // src/handlers/mcp.ts
18
18
  import { Location } from "@opencode/core/location";
@@ -3,15 +3,19 @@ import {
3
3
  missingMessage2,
4
4
  failedMessageDecode2,
5
5
  failedSnapshot2
6
- } from "./pairing-smaf4a18.js";
6
+ } from "./media-uri-smaf4a18.js";
7
7
  import {
8
8
  locationErrors2
9
- } from "./pairing-gymtz25n.js";
9
+ } from "./media-uri-gqq6kfhc.js";
10
10
  import {
11
11
  Api2
12
- } from "./pairing-t3j5ftv1.js";
12
+ } from "./media-uri-9c4eyh8m.js";
13
+ import {
14
+ wantsMediaRefs2
15
+ } from "./media-uri-xthc02cw.js";
13
16
 
14
17
  // src/handlers/session.ts
18
+ import { Instance } from "@opencode/core/instance/service";
15
19
  import { Session } from "@opencode/core/session";
16
20
  import { SessionStats } from "@opencode/core/session/stats";
17
21
  import { SessionTitle } from "@opencode/core/session/title";
@@ -19,7 +23,10 @@ import { SessionTransfer } from "@opencode/core/session/transfer";
19
23
  import { InstructionEntry } from "@opencode/core/session/instruction-entry";
20
24
  import { Form } from "@opencode/core/form";
21
25
  import { DateTime, Effect, Stream } from "effect";
26
+ import { HttpServerResponse } from "effect/http";
22
27
  import { HttpApiBuilder, HttpApiSchema } from "effect/http-api";
28
+ import { SessionMediaMessageResponse } from "@opencode/protocol/groups/message";
29
+ import { SessionMediaInboxResponse } from "@opencode/protocol/groups/session";
23
30
  import {
24
31
  ConflictError,
25
32
  CommandExecutionError,
@@ -41,6 +48,9 @@ function missingForm(id) {
41
48
  var SessionHandler2 = HttpApiBuilder.group(Api2, "server.session", (handlers) => Effect.gen(function* () {
42
49
  const session = yield* Session.Service;
43
50
  const transfer = yield* SessionTransfer.Service;
51
+ const instructions = yield* InstructionEntry.Service;
52
+ const instances = yield* Instance.Service;
53
+ const requireSession = (sessionID) => session.get(sessionID).pipe(Effect.catchTag("Session.NotFoundError", missingSession2));
44
54
  const requireOwnedForm = Effect.fnUntraced(function* (sessionID, formID) {
45
55
  const form = yield* Form.Service;
46
56
  const info = yield* form.get(formID).pipe(Effect.catchTag("Form.NotFoundError", () => missingForm(formID)));
@@ -125,13 +135,12 @@ var SessionHandler2 = HttpApiBuilder.group(Api2, "server.session", (handlers) =>
125
135
  yield* session.switchModel({ sessionID: ctx.params.sessionID, model: ctx.payload.model }).pipe(Effect.catchTag("Session.NotFoundError", missingSession2));
126
136
  return HttpApiSchema.NoContent.make();
127
137
  })).handle("session.update", Effect.fn(function* (ctx) {
128
- yield* session.get(ctx.params.sessionID).pipe(Effect.catchTag("Session.NotFoundError", missingSession2));
138
+ const info = yield* requireSession(ctx.params.sessionID);
129
139
  if (ctx.payload.title !== undefined) {
130
140
  if (ctx.payload.title) {
131
141
  yield* session.rename({ sessionID: ctx.params.sessionID, title: ctx.payload.title }).pipe(Effect.catchTag("Session.NotFoundError", missingSession2));
132
142
  } else {
133
- const title = yield* SessionTitle.Service;
134
- yield* title.generate(ctx.params.sessionID);
143
+ yield* SessionTitle.Service.use((title) => title.generate(ctx.params.sessionID)).pipe(instances.provide(info), locationErrors2);
135
144
  }
136
145
  }
137
146
  if (ctx.payload.metadata !== undefined)
@@ -242,6 +251,10 @@ var SessionHandler2 = HttpApiBuilder.group(Api2, "server.session", (handlers) =>
242
251
  data: yield* session.diff({ sessionID: ctx.params.sessionID, ...ctx.query }).pipe(Effect.catchTag("Session.NotFoundError", missingSession2), Effect.catchTag("Session.MessageNotFoundError", missingMessage2), Effect.catchTag("Session.TurnRangeError", (error) => new InvalidRequestError({ message: error.message, field: error.field })), Effect.catchTag("Snapshot.Error", failedSnapshot2("diff session turn", ctx.params.sessionID)), locationErrors2)
243
252
  };
244
253
  })).handle("session.inbox.list", Effect.fn(function* (ctx) {
254
+ if (wantsMediaRefs2(ctx.request))
255
+ return yield* HttpServerResponse.schemaJson(SessionMediaInboxResponse)({
256
+ data: yield* session.inboxWithRefs(ctx.params.sessionID).pipe(Effect.catchTag("Session.NotFoundError", missingSession2))
257
+ }).pipe(Effect.orDie);
245
258
  return {
246
259
  data: yield* session.inbox(ctx.params.sessionID).pipe(Effect.catchTag("Session.NotFoundError", missingSession2))
247
260
  };
@@ -251,14 +264,14 @@ var SessionHandler2 = HttpApiBuilder.group(Api2, "server.session", (handlers) =>
251
264
  })).handle("session.inbox.update", Effect.fn(function* (ctx) {
252
265
  return yield* pendingMutation(ctx.payload.delivery === "steer" ? session.steerInbox({ sessionID: ctx.params.sessionID, inboxID: ctx.params.inboxID }) : session.queueInbox({ sessionID: ctx.params.sessionID, inboxID: ctx.params.inboxID }), `Pending input cannot change to ${ctx.payload.delivery}`);
253
266
  })).handle("session.instructions.entry.list", Effect.fn(function* (ctx) {
254
- const instructions = yield* InstructionEntry.Service;
267
+ yield* requireSession(ctx.params.sessionID);
255
268
  return { data: yield* instructions.list(ctx.params.sessionID) };
256
269
  })).handle("session.instructions.entry.put", Effect.fn(function* (ctx) {
257
- const instructions = yield* InstructionEntry.Service;
270
+ yield* requireSession(ctx.params.sessionID);
258
271
  yield* instructions.put({ sessionID: ctx.params.sessionID, key: ctx.params.key, value: ctx.payload.value });
259
272
  return HttpApiSchema.NoContent.make();
260
273
  })).handle("session.instructions.entry.remove", Effect.fn(function* (ctx) {
261
- const instructions = yield* InstructionEntry.Service;
274
+ yield* requireSession(ctx.params.sessionID);
262
275
  yield* instructions.remove({ sessionID: ctx.params.sessionID, key: ctx.params.key });
263
276
  return HttpApiSchema.NoContent.make();
264
277
  })).handle("session.generate", Effect.fn(function* (ctx) {
@@ -268,15 +281,22 @@ var SessionHandler2 = HttpApiBuilder.group(Api2, "server.session", (handlers) =>
268
281
  yield* session.get(ctx.params.sessionID).pipe(Effect.catchTag("Session.NotFoundError", missingSession2));
269
282
  return session.log({ sessionID: ctx.params.sessionID, after: ctx.query.after, follow: ctx.query.follow }).pipe(Stream.orDie);
270
283
  })).handle("session.interrupt", Effect.fn(function* (ctx) {
284
+ yield* requireSession(ctx.params.sessionID);
271
285
  return { interrupted: yield* session.interrupt(ctx.params.sessionID, { resume: ctx.query.resume }) };
272
286
  })).handle("session.background", Effect.fn(function* (ctx) {
273
287
  yield* session.background(ctx.params.sessionID).pipe(Effect.catchTag("Session.NotFoundError", missingSession2));
274
288
  return HttpApiSchema.NoContent.make();
275
289
  })).handle("session.message", Effect.fn(function* (ctx) {
276
290
  yield* session.get(ctx.params.sessionID).pipe(Effect.catchTag("Session.NotFoundError", missingSession2));
277
- const message = yield* session.message(ctx.params);
278
- if (message)
279
- return { data: message };
291
+ if (wantsMediaRefs2(ctx.request)) {
292
+ const message = yield* session.messageWithRefs(ctx.params);
293
+ if (message)
294
+ return yield* HttpServerResponse.schemaJson(SessionMediaMessageResponse)({ data: message }).pipe(Effect.orDie);
295
+ } else {
296
+ const message = yield* session.message(ctx.params);
297
+ if (message)
298
+ return { data: message };
299
+ }
280
300
  return yield* new MessageNotFoundError({
281
301
  sessionID: ctx.params.sessionID,
282
302
  messageID: ctx.params.messageID,
@@ -1,10 +1,10 @@
1
1
  import {
2
2
  locationErrors2,
3
3
  awaitPlugins2
4
- } from "./pairing-gymtz25n.js";
4
+ } from "./media-uri-gqq6kfhc.js";
5
5
  import {
6
6
  Api2
7
- } from "./pairing-t3j5ftv1.js";
7
+ } from "./media-uri-9c4eyh8m.js";
8
8
 
9
9
  // src/handlers/voice.ts
10
10
  import { Location } from "@opencode/core/location";
@@ -15,7 +15,6 @@ import { InvalidRequestError, ServiceUnavailableError } from "@opencode/protocol
15
15
  import { Global } from "@opencode/util/global";
16
16
  import { Effect } from "effect";
17
17
  import { HttpApiBuilder } from "effect/http-api";
18
- var voiceErrors = (error) => error._tag === "Voice.InvalidRequestError" ? new InvalidRequestError({ message: error.message }) : new ServiceUnavailableError({ message: error.message, service: error.service });
19
18
  var VoiceHandler2 = HttpApiBuilder.group(Api2, "server.voice", (handlers) => Effect.gen(function* () {
20
19
  const global = yield* Global.Service;
21
20
  const locations = yield* LocationServiceMap.Service;
@@ -27,14 +26,8 @@ var VoiceHandler2 = HttpApiBuilder.group(Api2, "server.voice", (handlers) => Eff
27
26
  }, Effect.provide(services), locationErrors2)).handle("voice.session", Effect.fn("server.voice.session")(function* (request) {
28
27
  yield* awaitPlugins2;
29
28
  const voice = yield* Voice.Service;
30
- const session = yield* voice.session(request.payload).pipe(Effect.mapError(voiceErrors));
31
- return {
32
- data: { transport: session.transport, ...session.id === undefined ? {} : { session: { id: session.id } } }
33
- };
34
- }, Effect.provide(services), locationErrors2)).handle("voice.instructions", Effect.fn("server.voice.instructions")(function* (request) {
35
- yield* awaitPlugins2;
36
- const voice = yield* Voice.Service;
37
- yield* voice.instruct({ id: request.params.sessionID, instructions: request.payload.instructions }).pipe(Effect.mapError(voiceErrors));
29
+ const transport = yield* voice.session(request.payload).pipe(Effect.mapError((error) => error._tag === "Voice.InvalidRequestError" ? new InvalidRequestError({ message: error.message }) : new ServiceUnavailableError({ message: error.message, service: error.service })));
30
+ return { data: { transport } };
38
31
  }, Effect.provide(services), locationErrors2));
39
32
  }));
40
33
 
@@ -1,9 +1,9 @@
1
1
  import {
2
2
  requestRef2
3
- } from "./pairing-gymtz25n.js";
3
+ } from "./media-uri-gqq6kfhc.js";
4
4
  import {
5
5
  Api2
6
- } from "./pairing-t3j5ftv1.js";
6
+ } from "./media-uri-9c4eyh8m.js";
7
7
 
8
8
  // src/handlers/debug.ts
9
9
  import { LocationServiceMap } from "@opencode/core/location-service-map";
@@ -1,9 +1,9 @@
1
1
  import {
2
2
  response2
3
- } from "./pairing-gymtz25n.js";
3
+ } from "./media-uri-gqq6kfhc.js";
4
4
  import {
5
5
  Api2
6
- } from "./pairing-t3j5ftv1.js";
6
+ } from "./media-uri-9c4eyh8m.js";
7
7
 
8
8
  // src/handlers/vcs.ts
9
9
  import { Vcs } from "@opencode/core/vcs";
@@ -64,7 +64,11 @@ var VcsHandler2 = HttpApiBuilder.group(Api2, "server.vcs", (handlers) => Effect.
64
64
  return yield* vcs.branches({ search: ctx.query.search, limit: Math.min(ctx.query.limit ?? 50, 100) });
65
65
  }))).handle("vcs.diff", (ctx) => response2(Effect.gen(function* () {
66
66
  const vcs = yield* Vcs.Service;
67
- return yield* vcs.diff(ctx.query.mode, { context: ctx.query.context, base: ctx.query.base }).pipe(Effect.mapError((error) => new ServiceUnavailableError({ service: "vcs", message: error.message })));
67
+ return yield* vcs.diff(ctx.query.mode, {
68
+ context: ctx.query.context,
69
+ base: ctx.query.base,
70
+ untracked: ctx.query.untracked
71
+ }).pipe(Effect.mapError((error) => new ServiceUnavailableError({ service: "vcs", message: error.message })));
68
72
  })));
69
73
  }));
70
74
 
@@ -0,0 +1,6 @@
1
+ // src/media-uri.ts
2
+ var CAPABILITIES_HEADER = "x-opencode-capabilities";
3
+ var MEDIA_URI_CAPABILITY = "experimental-media-uri";
4
+ var wantsMediaRefs2 = (request) => request.headers[CAPABILITIES_HEADER]?.split(",").some((token) => token.trim().toLowerCase() === MEDIA_URI_CAPABILITY) ?? false;
5
+
6
+ export { wantsMediaRefs2 };
@@ -0,0 +1,40 @@
1
+ import {
2
+ missingSession2
3
+ } from "./media-uri-smaf4a18.js";
4
+
5
+ // src/handlers/schedule.ts
6
+ import { Schedule } from "@opencode/core/schedule";
7
+ import { ForbiddenError, InvalidRequestError, ScheduleNotFoundError } from "@opencode/protocol/errors";
8
+ import { Effect } from "effect";
9
+ import { HttpApiSchema } from "effect/http-api";
10
+ var makeSchedule2 = Effect.gen(function* () {
11
+ const schedules = yield* Schedule.Service;
12
+ const allowed = (sessionID) => schedules.enabled(sessionID).pipe(Effect.mapError(missingSession2), Effect.flatMap((enabled) => enabled ? Effect.void : Effect.fail(disabled())));
13
+ const find = (id) => Effect.gen(function* () {
14
+ const info = yield* schedules.get(id).pipe(Effect.mapError(missingSchedule));
15
+ if (info.sessionID === undefined)
16
+ return yield* missingSchedule({ scheduleID: id });
17
+ yield* allowed(info.sessionID).pipe(Effect.catchTag("SessionNotFoundError", () => Effect.fail(missingSchedule({ scheduleID: id }))));
18
+ return info;
19
+ });
20
+ return {
21
+ create: (payload) => schedules.create(Schedule.toCreateInput(payload.sessionID, payload)).pipe(Effect.map((data) => ({ data })), Effect.catchTags({
22
+ "Schedule.InvalidError": (error) => Effect.fail(new InvalidRequestError({ message: error.message, kind: "schedule" })),
23
+ "Schedule.DisabledError": () => Effect.fail(disabled()),
24
+ "Session.NotFoundError": (error) => Effect.fail(missingSession2(error))
25
+ })),
26
+ list: (sessionID) => allowed(sessionID).pipe(Effect.andThen(schedules.list({ sessionID })), Effect.map((data) => ({ data }))),
27
+ get: (id) => find(id).pipe(Effect.map((data) => ({ data }))),
28
+ pause: (id) => find(id).pipe(Effect.andThen(schedules.pause(id).pipe(Effect.mapError(missingSchedule))), Effect.map((data) => ({ data }))),
29
+ resume: (id) => find(id).pipe(Effect.andThen(schedules.resume(id).pipe(Effect.mapError(missingSchedule))), Effect.map((data) => ({ data }))),
30
+ remove: (id) => find(id).pipe(Effect.andThen(schedules.remove(id).pipe(Effect.mapError(missingSchedule))), Effect.as(HttpApiSchema.NoContent.make()))
31
+ };
32
+ });
33
+ function missingSchedule(error) {
34
+ return new ScheduleNotFoundError({ scheduleID: error.scheduleID, message: `Schedule not found: ${error.scheduleID}` });
35
+ }
36
+ function disabled() {
37
+ return new ForbiddenError({ message: new Schedule.DisabledError().message });
38
+ }
39
+
40
+ export { makeSchedule2 };
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  locationErrors2,
3
3
  sessionInfo2
4
- } from "./pairing-gymtz25n.js";
4
+ } from "./media-uri-gqq6kfhc.js";
5
5
 
6
6
  // src/middleware/session-location.ts
7
7
  import { Instance } from "@opencode/core/instance/service";
@@ -1,9 +1,9 @@
1
1
  import {
2
2
  response2
3
- } from "./pairing-gymtz25n.js";
3
+ } from "./media-uri-gqq6kfhc.js";
4
4
  import {
5
5
  Api2
6
- } from "./pairing-t3j5ftv1.js";
6
+ } from "./media-uri-9c4eyh8m.js";
7
7
 
8
8
  // src/handlers/reference.ts
9
9
  import { Reference } from "@opencode/core/reference";
@@ -1,9 +1,9 @@
1
1
  import {
2
2
  response2
3
- } from "./pairing-gymtz25n.js";
3
+ } from "./media-uri-gqq6kfhc.js";
4
4
  import {
5
5
  Api2
6
- } from "./pairing-t3j5ftv1.js";
6
+ } from "./media-uri-9c4eyh8m.js";
7
7
 
8
8
  // src/handlers/command.ts
9
9
  import { Command } from "@opencode/core/command";
@@ -1,9 +1,9 @@
1
1
  import {
2
2
  response2
3
- } from "./pairing-gymtz25n.js";
3
+ } from "./media-uri-gqq6kfhc.js";
4
4
  import {
5
5
  Api2
6
- } from "./pairing-t3j5ftv1.js";
6
+ } from "./media-uri-9c4eyh8m.js";
7
7
 
8
8
  // src/handlers/integration.ts
9
9
  import { Integration } from "@opencode/core/integration";
package/dist/cors.js CHANGED
@@ -2,7 +2,7 @@ import {
2
2
  CorsConfig2,
3
3
  isAllowedCorsOrigin2,
4
4
  isAllowedRequestOrigin2
5
- } from "./chunks/pairing-q4bn6dy8.js";
5
+ } from "./chunks/media-uri-q4bn6dy8.js";
6
6
  export {
7
7
  CorsConfig2 as CorsConfig,
8
8
  isAllowedCorsOrigin2 as isAllowedCorsOrigin,
@@ -19,7 +19,7 @@ export declare class EncodingError extends EncodingError_base {
19
19
  }
20
20
  export type Error = SubscriberOverflowError | EncodingError;
21
21
  export interface Interface {
22
- readonly subscribe: Effect.Effect<Stream.Stream<string, Error>, never, Scope.Scope>;
22
+ readonly subscribe: (types?: ReadonlyArray<string>) => Effect.Effect<Stream.Stream<string, Error>, never, Scope.Scope>;
23
23
  }
24
24
  declare const Service_base: Context.ServiceClass<Service, "@opencode/server/EventFeed", Interface>;
25
25
  export declare class Service extends Service_base {
@@ -2,19 +2,19 @@ import {
2
2
  SubscriberCapacity2,
3
3
  SubscriberOverflowError2,
4
4
  EncodingError2,
5
- Service4,
5
+ Service2,
6
6
  frame2,
7
7
  make4,
8
- layer4,
8
+ layer2,
9
9
  exports_event_feed
10
- } from "./chunks/pairing-k6dz4enc.js";
10
+ } from "./chunks/media-uri-fvpjvjpp.js";
11
11
  export {
12
12
  EncodingError2 as EncodingError,
13
13
  exports_event_feed as EventFeed,
14
- Service4 as Service,
14
+ Service2 as Service,
15
15
  SubscriberCapacity2 as SubscriberCapacity,
16
16
  SubscriberOverflowError2 as SubscriberOverflowError,
17
17
  frame2 as frame,
18
- layer4 as layer,
18
+ layer2 as layer,
19
19
  make4 as make
20
20
  };
package/dist/fetch.js CHANGED
@@ -1,53 +1,57 @@
1
1
  import {
2
2
  make3,
3
3
  exports_fetch
4
- } from "./chunks/pairing-mte34432.js";
5
- import"./chunks/pairing-x2dckmx1.js";
6
- import"./chunks/pairing-7b9xm1qg.js";
7
- import"./chunks/pairing-kyxm98pg.js";
8
- import"./chunks/pairing-kd6vzpgq.js";
9
- import"./chunks/pairing-72ygafj3.js";
10
- import"./chunks/pairing-kcjd09wg.js";
11
- import"./chunks/pairing-q69f22pd.js";
12
- import"./chunks/pairing-a6kxe6a7.js";
13
- import"./chunks/pairing-31acg4hb.js";
14
- import"./chunks/pairing-91mt6ewz.js";
15
- import"./chunks/pairing-j5aeaa16.js";
16
- import"./chunks/pairing-xmwystkq.js";
17
- import"./chunks/pairing-2b2wekgg.js";
18
- import"./chunks/pairing-aj1jc7g7.js";
19
- import"./chunks/pairing-9me4q8wt.js";
20
- import"./chunks/pairing-4qjw9nya.js";
21
- import"./chunks/pairing-h6rt5k9s.js";
22
- import"./chunks/pairing-49c878v9.js";
23
- import"./chunks/pairing-qvy2s3nb.js";
24
- import"./chunks/pairing-kaqtndqt.js";
25
- import"./chunks/pairing-5w10ccet.js";
26
- import"./chunks/pairing-6xea6nhh.js";
27
- import"./chunks/pairing-0dncng21.js";
28
- import"./chunks/pairing-f4b2q3tn.js";
29
- import"./chunks/pairing-x9vr2ttf.js";
30
- import"./chunks/pairing-nv8hzzrz.js";
31
- import"./chunks/pairing-e7pctymn.js";
32
- import"./chunks/pairing-e4x9285j.js";
33
- import"./chunks/pairing-ga3m49sz.js";
34
- import"./chunks/pairing-2yr2dq97.js";
35
- import"./chunks/pairing-cfhthk6z.js";
36
- import"./chunks/pairing-pmjbkszz.js";
37
- import"./chunks/pairing-4b0899hb.js";
38
- import"./chunks/pairing-x0608mvx.js";
39
- import"./chunks/pairing-swdgbzpj.js";
40
- import"./chunks/pairing-j4at0y5c.js";
41
- import"./chunks/pairing-erzfdgke.js";
42
- import"./chunks/pairing-kqr36gas.js";
43
- import"./chunks/pairing-q4bn6dy8.js";
44
- import"./chunks/pairing-t3j5ftv1.js";
45
- import"./chunks/pairing-3154e7fk.js";
46
- import"./chunks/pairing-x74w7e1f.js";
47
- import"./chunks/pairing-gymtz25n.js";
48
- import"./chunks/pairing-smaf4a18.js";
49
- import"./chunks/pairing-3te71694.js";
50
- import"./chunks/pairing-k6dz4enc.js";
4
+ } from "./chunks/media-uri-qbhbayp5.js";
5
+ import"./chunks/media-uri-3t6z87e1.js";
6
+ import"./chunks/media-uri-bd8755ek.js";
7
+ import"./chunks/media-uri-7b9xm1qg.js";
8
+ import"./chunks/media-uri-ndydfxzp.js";
9
+ import"./chunks/media-uri-r6vmgwff.js";
10
+ import"./chunks/media-uri-h3g82chs.js";
11
+ import"./chunks/media-uri-hax1v4bv.js";
12
+ import"./chunks/media-uri-8113w26k.js";
13
+ import"./chunks/media-uri-h072q2hm.js";
14
+ import"./chunks/media-uri-wxj3d9av.js";
15
+ import"./chunks/media-uri-2xcc0x05.js";
16
+ import"./chunks/media-uri-j9gxd9me.js";
17
+ import"./chunks/media-uri-hnheq3hv.js";
18
+ import"./chunks/media-uri-ppma8fcc.js";
19
+ import"./chunks/media-uri-1je14sn4.js";
20
+ import"./chunks/media-uri-m5rae7m4.js";
21
+ import"./chunks/media-uri-e46y0tfd.js";
22
+ import"./chunks/media-uri-n321d8vm.js";
23
+ import"./chunks/media-uri-b2k9041j.js";
24
+ import"./chunks/media-uri-0n1e9dnh.js";
25
+ import"./chunks/media-uri-6vs5sqy6.js";
26
+ import"./chunks/media-uri-dk68ymtv.js";
27
+ import"./chunks/media-uri-qn8kkfq6.js";
28
+ import"./chunks/media-uri-zjy4sw3d.js";
29
+ import"./chunks/media-uri-x8dgc261.js";
30
+ import"./chunks/media-uri-0a5jm2na.js";
31
+ import"./chunks/media-uri-c6sjpm0r.js";
32
+ import"./chunks/media-uri-xe9t9xr4.js";
33
+ import"./chunks/media-uri-ckkpcd9y.js";
34
+ import"./chunks/media-uri-h9rcwvg0.js";
35
+ import"./chunks/media-uri-yr4wsvrw.js";
36
+ import"./chunks/media-uri-22wspztn.js";
37
+ import"./chunks/media-uri-wd7b20jw.js";
38
+ import"./chunks/media-uri-xzvdbbpy.js";
39
+ import"./chunks/media-uri-be53s2qz.js";
40
+ import"./chunks/media-uri-prdak4hd.js";
41
+ import"./chunks/media-uri-z59gyc0x.js";
42
+ import"./chunks/media-uri-rztv1fyf.js";
43
+ import"./chunks/media-uri-h6rt5k9s.js";
44
+ import"./chunks/media-uri-fvpjvjpp.js";
45
+ import"./chunks/media-uri-9c4eyh8m.js";
46
+ import"./chunks/media-uri-yet0vexm.js";
47
+ import"./chunks/media-uri-gk0yxcp6.js";
48
+ import"./chunks/media-uri-gqq6kfhc.js";
49
+ import"./chunks/media-uri-smaf4a18.js";
50
+ import"./chunks/media-uri-xthc02cw.js";
51
+ import"./chunks/media-uri-b1prsepx.js";
52
+ import"./chunks/media-uri-j4at0y5c.js";
53
+ import"./chunks/media-uri-mzs0n5xz.js";
54
+ import"./chunks/media-uri-q4bn6dy8.js";
51
55
  export {
52
56
  exports_fetch as ServerFetch,
53
57
  make3 as make
@@ -1,11 +1,11 @@
1
1
  import {
2
2
  AgentHandler2
3
- } from "../chunks/pairing-ga3m49sz.js";
4
- import"../chunks/pairing-t3j5ftv1.js";
5
- import"../chunks/pairing-3154e7fk.js";
6
- import"../chunks/pairing-x74w7e1f.js";
7
- import"../chunks/pairing-gymtz25n.js";
8
- import"../chunks/pairing-smaf4a18.js";
3
+ } from "../chunks/media-uri-hnheq3hv.js";
4
+ import"../chunks/media-uri-9c4eyh8m.js";
5
+ import"../chunks/media-uri-yet0vexm.js";
6
+ import"../chunks/media-uri-gk0yxcp6.js";
7
+ import"../chunks/media-uri-gqq6kfhc.js";
8
+ import"../chunks/media-uri-smaf4a18.js";
9
9
  export {
10
10
  AgentHandler2 as AgentHandler
11
11
  };
@@ -1,11 +1,11 @@
1
1
  import {
2
2
  CommandHandler2
3
- } from "../chunks/pairing-xmwystkq.js";
4
- import"../chunks/pairing-t3j5ftv1.js";
5
- import"../chunks/pairing-3154e7fk.js";
6
- import"../chunks/pairing-x74w7e1f.js";
7
- import"../chunks/pairing-gymtz25n.js";
8
- import"../chunks/pairing-smaf4a18.js";
3
+ } from "../chunks/media-uri-z59gyc0x.js";
4
+ import"../chunks/media-uri-9c4eyh8m.js";
5
+ import"../chunks/media-uri-yet0vexm.js";
6
+ import"../chunks/media-uri-gk0yxcp6.js";
7
+ import"../chunks/media-uri-gqq6kfhc.js";
8
+ import"../chunks/media-uri-smaf4a18.js";
9
9
  export {
10
10
  CommandHandler2 as CommandHandler
11
11
  };
@@ -1,11 +1,11 @@
1
1
  import {
2
2
  ConfigHandler2
3
- } from "../chunks/pairing-e7pctymn.js";
4
- import"../chunks/pairing-t3j5ftv1.js";
5
- import"../chunks/pairing-3154e7fk.js";
6
- import"../chunks/pairing-x74w7e1f.js";
7
- import"../chunks/pairing-gymtz25n.js";
8
- import"../chunks/pairing-smaf4a18.js";
3
+ } from "../chunks/media-uri-b2k9041j.js";
4
+ import"../chunks/media-uri-9c4eyh8m.js";
5
+ import"../chunks/media-uri-yet0vexm.js";
6
+ import"../chunks/media-uri-gk0yxcp6.js";
7
+ import"../chunks/media-uri-gqq6kfhc.js";
8
+ import"../chunks/media-uri-smaf4a18.js";
9
9
  export {
10
10
  ConfigHandler2 as ConfigHandler
11
11
  };
@@ -1,11 +1,11 @@
1
1
  import {
2
2
  CredentialHandler2
3
- } from "../chunks/pairing-f4b2q3tn.js";
4
- import"../chunks/pairing-t3j5ftv1.js";
5
- import"../chunks/pairing-3154e7fk.js";
6
- import"../chunks/pairing-x74w7e1f.js";
7
- import"../chunks/pairing-gymtz25n.js";
8
- import"../chunks/pairing-smaf4a18.js";
3
+ } from "../chunks/media-uri-be53s2qz.js";
4
+ import"../chunks/media-uri-9c4eyh8m.js";
5
+ import"../chunks/media-uri-yet0vexm.js";
6
+ import"../chunks/media-uri-gk0yxcp6.js";
7
+ import"../chunks/media-uri-gqq6kfhc.js";
8
+ import"../chunks/media-uri-smaf4a18.js";
9
9
  export {
10
10
  CredentialHandler2 as CredentialHandler
11
11
  };
@@ -1,11 +1,11 @@
1
1
  import {
2
2
  DebugHandler2
3
- } from "../chunks/pairing-q69f22pd.js";
4
- import"../chunks/pairing-t3j5ftv1.js";
5
- import"../chunks/pairing-3154e7fk.js";
6
- import"../chunks/pairing-x74w7e1f.js";
7
- import"../chunks/pairing-gymtz25n.js";
8
- import"../chunks/pairing-smaf4a18.js";
3
+ } from "../chunks/media-uri-x8dgc261.js";
4
+ import"../chunks/media-uri-9c4eyh8m.js";
5
+ import"../chunks/media-uri-yet0vexm.js";
6
+ import"../chunks/media-uri-gk0yxcp6.js";
7
+ import"../chunks/media-uri-gqq6kfhc.js";
8
+ import"../chunks/media-uri-smaf4a18.js";
9
9
  export {
10
10
  DebugHandler2 as DebugHandler
11
11
  };
@@ -1,12 +1,12 @@
1
1
  import {
2
2
  EventHandler2
3
- } from "../chunks/pairing-qvy2s3nb.js";
4
- import"../chunks/pairing-t3j5ftv1.js";
5
- import"../chunks/pairing-3154e7fk.js";
6
- import"../chunks/pairing-x74w7e1f.js";
7
- import"../chunks/pairing-gymtz25n.js";
8
- import"../chunks/pairing-smaf4a18.js";
9
- import"../chunks/pairing-k6dz4enc.js";
3
+ } from "../chunks/media-uri-prdak4hd.js";
4
+ import"../chunks/media-uri-fvpjvjpp.js";
5
+ import"../chunks/media-uri-9c4eyh8m.js";
6
+ import"../chunks/media-uri-yet0vexm.js";
7
+ import"../chunks/media-uri-gk0yxcp6.js";
8
+ import"../chunks/media-uri-gqq6kfhc.js";
9
+ import"../chunks/media-uri-smaf4a18.js";
10
10
  export {
11
11
  EventHandler2 as EventHandler
12
12
  };
@@ -1,11 +1,11 @@
1
1
  import {
2
2
  FormHandler2
3
- } from "../chunks/pairing-91mt6ewz.js";
4
- import"../chunks/pairing-t3j5ftv1.js";
5
- import"../chunks/pairing-3154e7fk.js";
6
- import"../chunks/pairing-x74w7e1f.js";
7
- import"../chunks/pairing-gymtz25n.js";
8
- import"../chunks/pairing-smaf4a18.js";
3
+ } from "../chunks/media-uri-m5rae7m4.js";
4
+ import"../chunks/media-uri-9c4eyh8m.js";
5
+ import"../chunks/media-uri-yet0vexm.js";
6
+ import"../chunks/media-uri-gk0yxcp6.js";
7
+ import"../chunks/media-uri-gqq6kfhc.js";
8
+ import"../chunks/media-uri-smaf4a18.js";
9
9
  export {
10
10
  FormHandler2 as FormHandler
11
11
  };
@@ -1 +1,2 @@
1
- export declare const FileSystemHandler: import("effect/Layer").Layer<import("effect/http-api/HttpApiGroup").Service<"server", "server.fs">, never, import("@opencode/protocol/middleware/authorization").Authorization | import("../location").LocationMiddleware | import("@opencode/protocol/middleware/schema-error").SchemaErrorMiddleware>;
1
+ import { FileWatch } from "@opencode/core/filesystem/file-watch";
2
+ export declare const FileSystemHandler: import("effect/Layer").Layer<import("effect/http-api/HttpApiGroup").Service<"server", "server.fs">, never, import("@opencode/protocol/middleware/authorization").Authorization | import("../location").LocationMiddleware | import("@opencode/protocol/middleware/schema-error").SchemaErrorMiddleware | FileWatch.Service>;
@@ -1,11 +1,11 @@
1
1
  import {
2
2
  FileSystemHandler2
3
- } from "../chunks/pairing-x9vr2ttf.js";
4
- import"../chunks/pairing-t3j5ftv1.js";
5
- import"../chunks/pairing-3154e7fk.js";
6
- import"../chunks/pairing-x74w7e1f.js";
7
- import"../chunks/pairing-gymtz25n.js";
8
- import"../chunks/pairing-smaf4a18.js";
3
+ } from "../chunks/media-uri-r6vmgwff.js";
4
+ import"../chunks/media-uri-9c4eyh8m.js";
5
+ import"../chunks/media-uri-yet0vexm.js";
6
+ import"../chunks/media-uri-gk0yxcp6.js";
7
+ import"../chunks/media-uri-gqq6kfhc.js";
8
+ import"../chunks/media-uri-smaf4a18.js";
9
9
  export {
10
10
  FileSystemHandler2 as FileSystemHandler
11
11
  };