@opencode/server 2.0.26 → 2.0.28
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.
- package/dist/api.d.ts +17 -14
- package/dist/api.js +5 -5
- package/dist/auth.js +1 -1
- package/dist/chunks/{fetch-6fr0a7bp.js → server-info-1fx5fmdj.js} +22 -21
- package/dist/chunks/{fetch-80mhd8t7.js → server-info-2nsepnqy.js} +3 -3
- package/dist/chunks/{fetch-zhympcbw.js → server-info-2yr2dq97.js} +3 -3
- package/dist/chunks/{fetch-d00srfh1.js → server-info-3154e7fk.js} +3 -3
- package/dist/chunks/{fetch-g9rgg5ys.js → server-info-31acg4hb.js} +3 -3
- package/dist/chunks/{fetch-w1fepcwh.js → server-info-49c878v9.js} +3 -3
- package/dist/chunks/{fetch-cm271yqe.js → server-info-4b0899hb.js} +3 -3
- package/dist/chunks/{fetch-8c9kbrtm.js → server-info-5w10ccet.js} +2 -2
- package/dist/chunks/{fetch-gtkdacvk.js → server-info-5ytyqf1q.js} +5 -4
- package/dist/chunks/{fetch-hajt4q09.js → server-info-72ygafj3.js} +3 -3
- package/dist/chunks/{fetch-n1svm92q.js → server-info-75c938bc.js} +6 -6
- package/dist/chunks/{fetch-agftk6b6.js → server-info-91mt6ewz.js} +3 -3
- package/dist/chunks/{fetch-t1n0m4wb.js → server-info-a6kxe6a7.js} +30 -34
- package/dist/chunks/{fetch-1kbkbftd.js → server-info-agw55v2c.js} +4 -4
- package/dist/chunks/{fetch-anm12x33.js → server-info-anm12x33.js} +1 -1
- package/dist/chunks/{fetch-mjepr257.js → server-info-cfhthk6z.js} +2 -2
- package/dist/chunks/{fetch-j3pdvhe2.js → server-info-cx1d1bht.js} +3 -3
- package/dist/chunks/{fetch-gj6tv0s4.js → server-info-e4x9285j.js} +6 -3
- package/dist/chunks/{fetch-r5bb0n1s.js → server-info-e7pctymn.js} +2 -2
- package/dist/chunks/{fetch-t8yzmczr.js → server-info-erzfdgke.js} +1 -1
- package/dist/chunks/{fetch-eekrj6qv.js → server-info-f4b2q3tn.js} +2 -2
- package/dist/chunks/{fetch-cy7y42ks.js → server-info-f6n7ws9b.js} +4 -4
- package/dist/chunks/{fetch-78n975k2.js → server-info-fzcjf2mc.js} +10 -10
- package/dist/chunks/{fetch-1w9kp1gg.js → server-info-ga3m49sz.js} +3 -3
- package/dist/chunks/{fetch-kzj5eept.js → server-info-gat934pw.js} +33 -33
- package/dist/chunks/{fetch-acgs9zzk.js → server-info-gymtz25n.js} +14 -6
- package/dist/chunks/server-info-h6rt5k9s.js +24 -0
- package/dist/chunks/{fetch-54sczv30.js → server-info-hg93khqa.js} +7 -7
- package/dist/chunks/server-info-j5aeaa16.js +15 -0
- package/dist/chunks/{fetch-bvp1r88z.js → server-info-jabz3c4v.js} +3 -3
- package/dist/chunks/{fetch-t70dy8sr.js → server-info-kd6vzpgq.js} +3 -3
- package/dist/chunks/{fetch-rwwc81rq.js → server-info-pf9p09ew.js} +2 -2
- package/dist/chunks/{fetch-wb43dd8f.js → server-info-pmjbkszz.js} +6 -4
- package/dist/chunks/{fetch-c6kb7fmf.js → server-info-s07e4y6n.js} +7 -7
- package/dist/chunks/{fetch-0chp8crd.js → server-info-sstsrjtg.js} +8 -8
- package/dist/chunks/{fetch-4qyjttng.js → server-info-swdgbzpj.js} +3 -3
- package/dist/chunks/{fetch-jxc39wgw.js → server-info-t3j5ftv1.js} +3 -3
- package/dist/chunks/{fetch-053p7hbt.js → server-info-v1czxanb.js} +7 -7
- package/dist/chunks/{fetch-b44t4qeg.js → server-info-wys7phx0.js} +30 -29
- package/dist/chunks/{fetch-rhnwnf76.js → server-info-x0608mvx.js} +2 -2
- package/dist/chunks/{fetch-nxdx74sv.js → server-info-x74w7e1f.js} +3 -3
- package/dist/chunks/{fetch-q9rkrfm7.js → server-info-x9vr2ttf.js} +5 -5
- package/dist/chunks/{fetch-0y03q8mn.js → server-info-xmwystkq.js} +3 -3
- package/dist/chunks/{fetch-5w24ch67.js → server-info-xsrtpxyd.js} +4 -4
- package/dist/chunks/{fetch-m4fq9qce.js → server-info-y9mzegx1.js} +6 -6
- package/dist/chunks/{fetch-m6xk774d.js → server-info-zs542hzz.js} +3 -3
- package/dist/cors.js +1 -1
- package/dist/event-feed.js +5 -5
- package/dist/fetch.d.ts +5 -5
- package/dist/fetch.js +49 -49
- package/dist/handlers/agent.d.ts +1 -1
- package/dist/handlers/agent.js +6 -6
- package/dist/handlers/command.d.ts +1 -1
- package/dist/handlers/command.js +6 -6
- package/dist/handlers/config.d.ts +1 -1
- package/dist/handlers/config.js +6 -6
- package/dist/handlers/credential.d.ts +1 -1
- package/dist/handlers/credential.js +6 -6
- package/dist/handlers/debug.d.ts +1 -1
- package/dist/handlers/debug.js +6 -6
- package/dist/handlers/event.d.ts +1 -1
- package/dist/handlers/event.js +7 -7
- package/dist/handlers/form.d.ts +1 -1
- package/dist/handlers/form.js +6 -6
- package/dist/handlers/fs.d.ts +1 -1
- package/dist/handlers/fs.js +6 -6
- package/dist/handlers/generate.d.ts +1 -1
- package/dist/handlers/generate.js +6 -6
- package/dist/handlers/integration.d.ts +1 -1
- package/dist/handlers/integration.js +6 -6
- package/dist/handlers/location.d.ts +1 -1
- package/dist/handlers/location.js +6 -6
- package/dist/handlers/mcp.d.ts +1 -1
- package/dist/handlers/mcp.js +6 -6
- package/dist/handlers/message.d.ts +1 -1
- package/dist/handlers/message.js +6 -6
- package/dist/handlers/migration.d.ts +1 -1
- package/dist/handlers/migration.js +6 -6
- package/dist/handlers/model.d.ts +1 -1
- package/dist/handlers/model.js +6 -6
- package/dist/handlers/permission.d.ts +1 -1
- package/dist/handlers/permission.js +6 -6
- package/dist/handlers/persistent-pty.d.ts +1 -1
- package/dist/handlers/persistent-pty.js +8 -8
- package/dist/handlers/plugin.d.ts +1 -1
- package/dist/handlers/plugin.js +6 -6
- package/dist/handlers/project.d.ts +1 -1
- package/dist/handlers/project.js +6 -6
- package/dist/handlers/provider.d.ts +1 -1
- package/dist/handlers/provider.js +6 -6
- package/dist/handlers/pty-socket.d.ts +10 -2
- package/dist/handlers/pty-socket.js +1 -1
- package/dist/handlers/pty.d.ts +1 -1
- package/dist/handlers/pty.js +9 -9
- package/dist/handlers/reference.d.ts +1 -1
- package/dist/handlers/reference.js +6 -6
- package/dist/handlers/rpc.d.ts +1 -1
- package/dist/handlers/rpc.js +6 -6
- package/dist/handlers/server.d.ts +1 -1
- package/dist/handlers/server.js +9 -9
- package/dist/handlers/session-error.js +1 -1
- package/dist/handlers/session.d.ts +1 -1
- package/dist/handlers/session.js +6 -6
- package/dist/handlers/shell.d.ts +1 -1
- package/dist/handlers/shell.js +6 -6
- package/dist/handlers/skill.d.ts +1 -1
- package/dist/handlers/skill.js +6 -6
- package/dist/handlers/vcs.d.ts +1 -1
- package/dist/handlers/vcs.js +6 -6
- package/dist/handlers/websearch.d.ts +1 -1
- package/dist/handlers/websearch.js +6 -6
- package/dist/handlers/worktree.d.ts +1 -1
- package/dist/handlers/worktree.js +6 -6
- package/dist/handlers.d.ts +1 -1
- package/dist/handlers.js +43 -43
- package/dist/location.d.ts +5 -3
- package/dist/location.js +6 -4
- package/dist/middleware/authorization.d.ts +1 -1
- package/dist/middleware/authorization.js +2 -2
- package/dist/middleware/form-location.d.ts +2 -2
- package/dist/middleware/form-location.js +3 -3
- package/dist/middleware/schema-error.js +1 -1
- package/dist/middleware/session-location.d.ts +1 -1
- package/dist/middleware/session-location.js +3 -3
- package/dist/pairing.js +5 -5
- package/dist/process.d.ts +9 -8
- package/dist/process.js +52 -52
- package/dist/pty-environment.js +5 -5
- package/dist/request-tracing.js +1 -1
- package/dist/routes.d.ts +3 -3
- package/dist/routes.js +46 -46
- package/dist/server-info.js +5 -5
- package/dist/service-status.js +3 -3
- package/dist/workerd.js +50 -50
- package/package.json +14 -12
- package/dist/chunks/fetch-dy0yben3.js +0 -15
- package/dist/chunks/fetch-hezj1jdf.js +0 -7
- /package/dist/chunks/{fetch-9rqn6x4v.js → server-info-9rqn6x4v.js} +0 -0
- /package/dist/chunks/{fetch-q4bn6dy8.js → server-info-q4bn6dy8.js} +0 -0
- /package/dist/chunks/{fetch-smaf4a18.js → server-info-smaf4a18.js} +0 -0
- /package/dist/chunks/{fetch-yc7nft6q.js → server-info-yc7nft6q.js} +0 -0
package/dist/api.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { LocationMiddleware } from "./location";
|
|
2
2
|
import { FormLocationMiddleware } from "./middleware/form-location";
|
|
3
3
|
import { SessionLocationMiddleware } from "./middleware/session-location";
|
|
4
|
-
export declare const Api: import("@opencode/protocol/api").Api<LocationMiddleware, import("effect/
|
|
4
|
+
export declare const Api: import("@opencode/protocol/api").Api<LocationMiddleware, import("effect/http-api/HttpApiMiddleware").HttpApiMiddleware<import("@opencode/core/instance").Services, readonly [typeof import("@opencode/protocol/errors").LocationNotFoundError], never>, FormLocationMiddleware, import("effect/http-api/HttpApiMiddleware").HttpApiMiddleware<import("@opencode/core/instance").Services, readonly [typeof import("@opencode/protocol/errors").InvalidRequestError, typeof import("@opencode/protocol/errors").SessionNotFoundError, typeof import("@opencode/protocol/errors").LocationNotFoundError], never>, SessionLocationMiddleware, import("effect/http-api/HttpApiMiddleware").HttpApiMiddleware<import("@opencode/core/instance").Services, readonly [typeof import("@opencode/protocol/errors").InvalidRequestError, typeof import("@opencode/protocol/errors").SessionNotFoundError, typeof import("@opencode/protocol/errors").LocationNotFoundError], never>, import("effect/http-api/HttpApiGroup").HttpApiGroup<"server.event", import("effect/http-api/HttpApiEndpoint").HttpApiEndpoint<"event.subscribe", "GET", "/api/event", never, never, never, never, import("effect/http-api/HttpApiSchema").StreamSse<import("effect/http-api/HttpApiSchema").SseEventFromData<import("effect/Schema").Union<readonly [import("effect/Schema").Struct<{
|
|
5
5
|
readonly id: import("effect/Schema").brand<import("effect/Schema").String, "Event.ID"> & {
|
|
6
6
|
create: () => string & import("effect/Brand").Brand<"Event.ID">;
|
|
7
7
|
};
|
|
@@ -4714,6 +4714,7 @@ export declare const Api: import("@opencode/protocol/api").Api<LocationMiddlewar
|
|
|
4714
4714
|
readonly created: import("effect/Schema").Int;
|
|
4715
4715
|
readonly updated: import("effect/Schema").Int;
|
|
4716
4716
|
readonly active: import("effect/Schema").Int;
|
|
4717
|
+
readonly archived: import("effect/Schema").decodeTo<import("effect/Schema").optional<import("effect/Schema").toType<import("effect/Schema").Int>>, import("effect/Schema").optionalKey<import("effect/Schema").Int>, never, never>;
|
|
4717
4718
|
}>;
|
|
4718
4719
|
readonly sandboxes: import("effect/Schema").$Array<import("effect/Schema").String>;
|
|
4719
4720
|
}>;
|
|
@@ -4746,6 +4747,7 @@ export declare const Api: import("@opencode/protocol/api").Api<LocationMiddlewar
|
|
|
4746
4747
|
readonly created: import("effect/Schema").Int;
|
|
4747
4748
|
readonly updated: import("effect/Schema").Int;
|
|
4748
4749
|
readonly active: import("effect/Schema").Int;
|
|
4750
|
+
readonly archived: import("effect/Schema").decodeTo<import("effect/Schema").optional<import("effect/Schema").toType<import("effect/Schema").Int>>, import("effect/Schema").optionalKey<import("effect/Schema").Int>, never, never>;
|
|
4749
4751
|
}>;
|
|
4750
4752
|
readonly sandboxes: import("effect/Schema").$Array<import("effect/Schema").String>;
|
|
4751
4753
|
}>;
|
|
@@ -6373,6 +6375,11 @@ export declare const Api: import("@opencode/protocol/api").Api<LocationMiddlewar
|
|
|
6373
6375
|
readonly type: "string";
|
|
6374
6376
|
readonly key: string;
|
|
6375
6377
|
readonly required?: boolean | undefined;
|
|
6378
|
+
readonly options?: readonly {
|
|
6379
|
+
readonly value: string;
|
|
6380
|
+
readonly label: string;
|
|
6381
|
+
readonly description?: string | undefined;
|
|
6382
|
+
}[] | undefined;
|
|
6376
6383
|
readonly description?: string | undefined;
|
|
6377
6384
|
readonly format?: "email" | "uri" | "date" | "date-time" | undefined;
|
|
6378
6385
|
readonly minLength?: number | undefined;
|
|
@@ -6380,11 +6387,6 @@ export declare const Api: import("@opencode/protocol/api").Api<LocationMiddlewar
|
|
|
6380
6387
|
readonly pattern?: string | undefined;
|
|
6381
6388
|
readonly placeholder?: string | undefined;
|
|
6382
6389
|
readonly default?: string | undefined;
|
|
6383
|
-
readonly options?: readonly {
|
|
6384
|
-
readonly value: string;
|
|
6385
|
-
readonly label: string;
|
|
6386
|
-
readonly description?: string | undefined;
|
|
6387
|
-
}[] | undefined;
|
|
6388
6390
|
readonly custom?: boolean | undefined;
|
|
6389
6391
|
readonly title?: string | undefined;
|
|
6390
6392
|
readonly hidden?: boolean | undefined;
|
|
@@ -6438,12 +6440,12 @@ export declare const Api: import("@opencode/protocol/api").Api<LocationMiddlewar
|
|
|
6438
6440
|
}[] | undefined;
|
|
6439
6441
|
} | {
|
|
6440
6442
|
readonly type: "multiselect";
|
|
6441
|
-
readonly key: string;
|
|
6442
6443
|
readonly options: readonly {
|
|
6443
6444
|
readonly value: string;
|
|
6444
6445
|
readonly label: string;
|
|
6445
6446
|
readonly description?: string | undefined;
|
|
6446
6447
|
}[];
|
|
6448
|
+
readonly key: string;
|
|
6447
6449
|
readonly required?: boolean | undefined;
|
|
6448
6450
|
readonly description?: string | undefined;
|
|
6449
6451
|
readonly default?: readonly string[] | undefined;
|
|
@@ -6467,6 +6469,11 @@ export declare const Api: import("@opencode/protocol/api").Api<LocationMiddlewar
|
|
|
6467
6469
|
readonly type: "string";
|
|
6468
6470
|
readonly key: string;
|
|
6469
6471
|
readonly required?: boolean | undefined;
|
|
6472
|
+
readonly options?: readonly {
|
|
6473
|
+
readonly value: string;
|
|
6474
|
+
readonly label: string;
|
|
6475
|
+
readonly description?: string | undefined;
|
|
6476
|
+
}[] | undefined;
|
|
6470
6477
|
readonly description?: string | undefined;
|
|
6471
6478
|
readonly format?: "email" | "uri" | "date" | "date-time" | undefined;
|
|
6472
6479
|
readonly minLength?: number | undefined;
|
|
@@ -6474,11 +6481,6 @@ export declare const Api: import("@opencode/protocol/api").Api<LocationMiddlewar
|
|
|
6474
6481
|
readonly pattern?: string | undefined;
|
|
6475
6482
|
readonly placeholder?: string | undefined;
|
|
6476
6483
|
readonly default?: string | undefined;
|
|
6477
|
-
readonly options?: readonly {
|
|
6478
|
-
readonly value: string;
|
|
6479
|
-
readonly label: string;
|
|
6480
|
-
readonly description?: string | undefined;
|
|
6481
|
-
}[] | undefined;
|
|
6482
6484
|
readonly custom?: boolean | undefined;
|
|
6483
6485
|
readonly title?: string | undefined;
|
|
6484
6486
|
readonly hidden?: boolean | undefined;
|
|
@@ -6532,12 +6534,12 @@ export declare const Api: import("@opencode/protocol/api").Api<LocationMiddlewar
|
|
|
6532
6534
|
}[] | undefined;
|
|
6533
6535
|
} | {
|
|
6534
6536
|
readonly type: "multiselect";
|
|
6535
|
-
readonly key: string;
|
|
6536
6537
|
readonly options: readonly {
|
|
6537
6538
|
readonly value: string;
|
|
6538
6539
|
readonly label: string;
|
|
6539
6540
|
readonly description?: string | undefined;
|
|
6540
6541
|
}[];
|
|
6542
|
+
readonly key: string;
|
|
6541
6543
|
readonly required?: boolean | undefined;
|
|
6542
6544
|
readonly description?: string | undefined;
|
|
6543
6545
|
readonly default?: readonly string[] | undefined;
|
|
@@ -6732,8 +6734,9 @@ export declare const Api: import("@opencode/protocol/api").Api<LocationMiddlewar
|
|
|
6732
6734
|
readonly canonical: string & import("effect/Brand").Brand<"AbsolutePath">;
|
|
6733
6735
|
readonly time: {
|
|
6734
6736
|
readonly created: number;
|
|
6735
|
-
readonly updated: number;
|
|
6736
6737
|
readonly active: number;
|
|
6738
|
+
readonly updated: number;
|
|
6739
|
+
readonly archived?: number | undefined;
|
|
6737
6740
|
};
|
|
6738
6741
|
readonly sandboxes: readonly string[];
|
|
6739
6742
|
readonly name?: string | undefined;
|
package/dist/api.js
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import {
|
|
2
2
|
Api2
|
|
3
|
-
} from "./chunks/
|
|
4
|
-
import"./chunks/
|
|
5
|
-
import"./chunks/
|
|
6
|
-
import"./chunks/
|
|
7
|
-
import"./chunks/
|
|
3
|
+
} from "./chunks/server-info-t3j5ftv1.js";
|
|
4
|
+
import"./chunks/server-info-3154e7fk.js";
|
|
5
|
+
import"./chunks/server-info-x74w7e1f.js";
|
|
6
|
+
import"./chunks/server-info-gymtz25n.js";
|
|
7
|
+
import"./chunks/server-info-smaf4a18.js";
|
|
8
8
|
export {
|
|
9
9
|
Api2 as Api
|
|
10
10
|
};
|
package/dist/auth.js
CHANGED
|
@@ -1,39 +1,39 @@
|
|
|
1
1
|
import {
|
|
2
|
-
|
|
3
|
-
} from "./
|
|
2
|
+
layer2
|
|
3
|
+
} from "./server-info-gymtz25n.js";
|
|
4
4
|
import {
|
|
5
5
|
formLocationLayer2
|
|
6
|
-
} from "./
|
|
6
|
+
} from "./server-info-3154e7fk.js";
|
|
7
7
|
import {
|
|
8
8
|
sessionLocationLayer2
|
|
9
|
-
} from "./
|
|
9
|
+
} from "./server-info-x74w7e1f.js";
|
|
10
10
|
import {
|
|
11
11
|
Api2
|
|
12
|
-
} from "./
|
|
12
|
+
} from "./server-info-t3j5ftv1.js";
|
|
13
13
|
import {
|
|
14
14
|
Config2
|
|
15
|
-
} from "./
|
|
15
|
+
} from "./server-info-anm12x33.js";
|
|
16
16
|
import {
|
|
17
17
|
CorsConfig2
|
|
18
|
-
} from "./
|
|
19
|
-
import {
|
|
20
|
-
layer2
|
|
21
|
-
} from "./fetch-c6kb7fmf.js";
|
|
18
|
+
} from "./server-info-q4bn6dy8.js";
|
|
22
19
|
import {
|
|
23
|
-
|
|
24
|
-
} from "./
|
|
20
|
+
layer4
|
|
21
|
+
} from "./server-info-s07e4y6n.js";
|
|
25
22
|
import {
|
|
26
23
|
node3
|
|
27
|
-
} from "./
|
|
24
|
+
} from "./server-info-sstsrjtg.js";
|
|
25
|
+
import {
|
|
26
|
+
node2
|
|
27
|
+
} from "./server-info-75c938bc.js";
|
|
28
28
|
import {
|
|
29
29
|
handlers2
|
|
30
|
-
} from "./
|
|
30
|
+
} from "./server-info-gat934pw.js";
|
|
31
31
|
import {
|
|
32
32
|
authorizationLayer2
|
|
33
|
-
} from "./
|
|
33
|
+
} from "./server-info-5ytyqf1q.js";
|
|
34
34
|
import {
|
|
35
35
|
schemaErrorLayer2
|
|
36
|
-
} from "./
|
|
36
|
+
} from "./server-info-erzfdgke.js";
|
|
37
37
|
|
|
38
38
|
// src/routes.ts
|
|
39
39
|
import { Database } from "@opencode/core/database/database";
|
|
@@ -69,8 +69,8 @@ import { SdkPlugins } from "@opencode/core/plugin/sdk";
|
|
|
69
69
|
import { WellKnown } from "@opencode/core/wellknown";
|
|
70
70
|
import { Workspace } from "@opencode/core/workspace";
|
|
71
71
|
import { Watcher } from "@opencode/core/filesystem/watcher";
|
|
72
|
-
import { HttpRouter } from "effect/
|
|
73
|
-
import { HttpApiBuilder } from "effect/
|
|
72
|
+
import { HttpRouter } from "effect/http";
|
|
73
|
+
import { HttpApiBuilder } from "effect/http-api";
|
|
74
74
|
import { Context, Effect, Layer, Option } from "effect";
|
|
75
75
|
var applicationServiceNodes = [
|
|
76
76
|
Global.node,
|
|
@@ -80,6 +80,7 @@ var applicationServiceNodes = [
|
|
|
80
80
|
httpClient,
|
|
81
81
|
Job.node,
|
|
82
82
|
Project.node,
|
|
83
|
+
Project.sweepNode,
|
|
83
84
|
Worktree.node,
|
|
84
85
|
Session.node,
|
|
85
86
|
Instance.node,
|
|
@@ -91,8 +92,8 @@ var applicationServiceNodes = [
|
|
|
91
92
|
PersistentPty.node,
|
|
92
93
|
Credential.node,
|
|
93
94
|
WellKnown.node,
|
|
94
|
-
node3,
|
|
95
95
|
node2,
|
|
96
|
+
node3,
|
|
96
97
|
LocationServiceMap.node,
|
|
97
98
|
LocationActivity.node,
|
|
98
99
|
SessionRestart.node,
|
|
@@ -144,8 +145,8 @@ function makeRoutes(auth, options, serviceURLs, overrides, instances) {
|
|
|
144
145
|
})) : build(overrides);
|
|
145
146
|
return serviceLayer.pipe(Layer.flatMap((context) => {
|
|
146
147
|
const services = Layer.succeedContext(context);
|
|
147
|
-
const requestServices = Layer.merge(Layer.succeedContext(Context.pick(Database.Service, Credential.Service, PermissionSaved.Service, PluginUpdate.Service, Project.Service, WellKnown.Service)(context)),
|
|
148
|
-
const api = HttpApiBuilder.layer(Api2, { openapiPath: "/openapi.json" }).pipe(Layer.provide(handlers2.pipe(Layer.provide(services), Layer.provide(Layer.succeed(CorsConfig2, options)))), Layer.provide(formLocationLayer2), Layer.provide(sessionLocationLayer2), Layer.provide(
|
|
148
|
+
const requestServices = Layer.merge(Layer.succeedContext(Context.pick(Database.Service, Credential.Service, PermissionSaved.Service, PluginUpdate.Service, Project.Service, WellKnown.Service)(context)), layer4(serviceURLs, Context.get(context, Global.Service).tmp, options.app));
|
|
149
|
+
const api = HttpApiBuilder.layer(Api2, { openapiPath: "/openapi.json" }).pipe(Layer.provide(handlers2.pipe(Layer.provide(services), Layer.provide(Layer.succeed(CorsConfig2, options)))), Layer.provide(formLocationLayer2), Layer.provide(sessionLocationLayer2), Layer.provide(layer2), Layer.provide(authorizationLayer2), Layer.provide(schemaErrorLayer2), Layer.provide(auth), HttpRouter.provideRequest(requestServices), Layer.provideMerge(services), Layer.provideMerge(HttpRouter.layer));
|
|
149
150
|
return Layer.merge(api, V1Migration.layer.pipe(Layer.provide(services)));
|
|
150
151
|
}));
|
|
151
152
|
}
|
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
import {
|
|
2
2
|
response2
|
|
3
|
-
} from "./
|
|
3
|
+
} from "./server-info-gymtz25n.js";
|
|
4
4
|
import {
|
|
5
5
|
Api2
|
|
6
|
-
} from "./
|
|
6
|
+
} from "./server-info-t3j5ftv1.js";
|
|
7
7
|
|
|
8
8
|
// src/handlers/websearch.ts
|
|
9
9
|
import { WebSearch } from "@opencode/core/websearch";
|
|
10
10
|
import { InvalidRequestError, ServiceUnavailableError } from "@opencode/protocol/errors";
|
|
11
11
|
import { Effect } from "effect";
|
|
12
|
-
import { HttpApiBuilder } from "effect/
|
|
12
|
+
import { HttpApiBuilder } from "effect/http-api";
|
|
13
13
|
var WebSearchHandler2 = HttpApiBuilder.group(Api2, "server.websearch", (handlers) => Effect.gen(function* () {
|
|
14
14
|
return handlers.handle("websearch.providers", Effect.fn("server.websearch.providers")(function* () {
|
|
15
15
|
const websearch = yield* WebSearch.Service;
|
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
import {
|
|
2
2
|
response2
|
|
3
|
-
} from "./
|
|
3
|
+
} from "./server-info-gymtz25n.js";
|
|
4
4
|
import {
|
|
5
5
|
Api2
|
|
6
|
-
} from "./
|
|
6
|
+
} from "./server-info-t3j5ftv1.js";
|
|
7
7
|
|
|
8
8
|
// src/handlers/shell.ts
|
|
9
9
|
import { Shell } from "@opencode/core/shell";
|
|
10
10
|
import { Location } from "@opencode/core/location";
|
|
11
11
|
import { Effect } from "effect";
|
|
12
|
-
import { HttpApiBuilder, HttpApiSchema } from "effect/
|
|
12
|
+
import { HttpApiBuilder, HttpApiSchema } from "effect/http-api";
|
|
13
13
|
import { ShellNotFoundError } from "@opencode/protocol/errors";
|
|
14
14
|
var ShellHandler2 = HttpApiBuilder.group(Api2, "server.shell", (handlers) => Effect.gen(function* () {
|
|
15
15
|
return handlers.handle("shell.list", Effect.fn(function* () {
|
|
@@ -2,7 +2,7 @@ import {
|
|
|
2
2
|
locationErrors2,
|
|
3
3
|
sessionInfo2,
|
|
4
4
|
requestRef2
|
|
5
|
-
} from "./
|
|
5
|
+
} from "./server-info-gymtz25n.js";
|
|
6
6
|
|
|
7
7
|
// src/middleware/form-location.ts
|
|
8
8
|
import { Instance } from "@opencode/core/instance/service";
|
|
@@ -10,8 +10,8 @@ import { LocationServiceMap } from "@opencode/core/location-services";
|
|
|
10
10
|
import { Session } from "@opencode/core/session";
|
|
11
11
|
import { LocationNotFoundError, InvalidRequestError, SessionNotFoundError } from "@opencode/protocol/errors";
|
|
12
12
|
import { Effect, Layer } from "effect";
|
|
13
|
-
import { HttpRouter, HttpServerRequest } from "effect/
|
|
14
|
-
import { HttpApiMiddleware } from "effect/
|
|
13
|
+
import { HttpRouter, HttpServerRequest } from "effect/http";
|
|
14
|
+
import { HttpApiMiddleware } from "effect/http-api";
|
|
15
15
|
class FormLocationMiddleware2 extends HttpApiMiddleware.Service()("@opencode/HttpApiFormLocation", {
|
|
16
16
|
error: [InvalidRequestError, SessionNotFoundError, LocationNotFoundError]
|
|
17
17
|
}) {
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import {
|
|
2
2
|
response2
|
|
3
|
-
} from "./
|
|
3
|
+
} from "./server-info-gymtz25n.js";
|
|
4
4
|
import {
|
|
5
5
|
Api2
|
|
6
|
-
} from "./
|
|
6
|
+
} from "./server-info-t3j5ftv1.js";
|
|
7
7
|
|
|
8
8
|
// src/handlers/vcs.ts
|
|
9
9
|
import { Vcs } from "@opencode/core/vcs";
|
|
@@ -16,7 +16,7 @@ import { LocationServiceMap } from "@opencode/core/location-services";
|
|
|
16
16
|
import { ConflictError, InvalidRequestError, ServiceUnavailableError } from "@opencode/protocol/errors";
|
|
17
17
|
import { VcsInitNotSupportedError } from "@opencode/protocol/groups/vcs";
|
|
18
18
|
import { Effect } from "effect";
|
|
19
|
-
import { HttpApiBuilder, HttpApiSchema } from "effect/
|
|
19
|
+
import { HttpApiBuilder, HttpApiSchema } from "effect/http-api";
|
|
20
20
|
var VcsHandler2 = HttpApiBuilder.group(Api2, "server.vcs", (handlers) => Effect.gen(function* () {
|
|
21
21
|
const project = yield* Project.Service;
|
|
22
22
|
const bus = yield* Bus.Service;
|
|
@@ -1,16 +1,16 @@
|
|
|
1
1
|
import {
|
|
2
2
|
response2
|
|
3
|
-
} from "./
|
|
3
|
+
} from "./server-info-gymtz25n.js";
|
|
4
4
|
import {
|
|
5
5
|
Api2
|
|
6
|
-
} from "./
|
|
6
|
+
} from "./server-info-t3j5ftv1.js";
|
|
7
7
|
|
|
8
8
|
// src/handlers/plugin.ts
|
|
9
9
|
import { Plugin } from "@opencode/core/plugin";
|
|
10
10
|
import { PluginUpdate } from "@opencode/core/plugin/update";
|
|
11
11
|
import { InvalidRequestError, ServiceUnavailableError } from "@opencode/protocol/errors";
|
|
12
12
|
import { Cause, Effect, Exit } from "effect";
|
|
13
|
-
import { HttpApiBuilder } from "effect/
|
|
13
|
+
import { HttpApiBuilder } from "effect/http-api";
|
|
14
14
|
var PluginHandler2 = HttpApiBuilder.group(Api2, "server.plugin", (handlers) => handlers.handle("plugin.list", () => Effect.gen(function* () {
|
|
15
15
|
return yield* response2(Plugin.Service.use((plugin) => plugin.list()));
|
|
16
16
|
})).handle("plugin.check", (ctx) => Effect.gen(function* () {
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
import {
|
|
2
2
|
response2
|
|
3
|
-
} from "./
|
|
3
|
+
} from "./server-info-gymtz25n.js";
|
|
4
4
|
import {
|
|
5
5
|
Api2
|
|
6
|
-
} from "./
|
|
6
|
+
} from "./server-info-t3j5ftv1.js";
|
|
7
7
|
|
|
8
8
|
// src/handlers/skill.ts
|
|
9
9
|
import { Skill } from "@opencode/core/skill";
|
|
10
|
-
import { HttpApiBuilder } from "effect/
|
|
10
|
+
import { HttpApiBuilder } from "effect/http-api";
|
|
11
11
|
var SkillHandler2 = HttpApiBuilder.group(Api2, "server.skill", (handlers) => handlers.handle("skill.list", () => response2(Skill.Service.use((skill) => skill.list()))));
|
|
12
12
|
|
|
13
13
|
export { SkillHandler2 };
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
import {
|
|
2
2
|
Api2
|
|
3
|
-
} from "./
|
|
3
|
+
} from "./server-info-t3j5ftv1.js";
|
|
4
4
|
|
|
5
5
|
// src/handlers/rpc.ts
|
|
6
6
|
import { Rpc } from "@opencode/core/rpc";
|
|
7
7
|
import { Plugin } from "@opencode/core/plugin";
|
|
8
8
|
import { RpcError, RpcInternalError } from "@opencode/protocol/errors";
|
|
9
9
|
import { Effect } from "effect";
|
|
10
|
-
import { HttpApiBuilder } from "effect/
|
|
10
|
+
import { HttpApiBuilder } from "effect/http-api";
|
|
11
11
|
var RpcHandler2 = HttpApiBuilder.group(Api2, "server.rpc", (handlers) => handlers.handle("rpc.call", ({ params, payload }) => Effect.gen(function* () {
|
|
12
12
|
yield* Plugin.awaitActivation;
|
|
13
13
|
const rpc = yield* Rpc.Service;
|
|
@@ -4,7 +4,7 @@ import {
|
|
|
4
4
|
authorized2,
|
|
5
5
|
verifySession2,
|
|
6
6
|
sessionCookieName2
|
|
7
|
-
} from "./
|
|
7
|
+
} from "./server-info-anm12x33.js";
|
|
8
8
|
|
|
9
9
|
// src/middleware/authorization.ts
|
|
10
10
|
import { UnauthorizedError } from "@opencode/protocol/errors";
|
|
@@ -13,15 +13,16 @@ import { Authorization as Authorization2 } from "@opencode/protocol/middleware/a
|
|
|
13
13
|
import { hasPtyConnectTicketURL } from "@opencode/protocol/groups/pty";
|
|
14
14
|
import { hasPersistentPtyConnectTicketURL } from "@opencode/protocol/groups/persistent-pty";
|
|
15
15
|
import { isPairingConnectURL } from "@opencode/protocol/groups/server";
|
|
16
|
-
import { Effect,
|
|
17
|
-
import {
|
|
16
|
+
import { Effect, Layer, Redacted } from "effect";
|
|
17
|
+
import { Base64 } from "effect/encoding";
|
|
18
|
+
import { HttpEffect, HttpServerRequest, HttpServerResponse } from "effect/http";
|
|
18
19
|
var AUTH_TOKEN_QUERY = "auth_token";
|
|
19
20
|
var WWW_AUTHENTICATE = 'Basic realm="Secure Area"';
|
|
20
21
|
function emptyCredential() {
|
|
21
22
|
return { username: "", password: Redacted.make("") };
|
|
22
23
|
}
|
|
23
24
|
function decodeCredential(input) {
|
|
24
|
-
return Effect.fromResult(
|
|
25
|
+
return Effect.fromResult(Base64.decodeString(input)).pipe(Effect.match({
|
|
25
26
|
onFailure: emptyCredential,
|
|
26
27
|
onSuccess: (header) => {
|
|
27
28
|
const separator = header.indexOf(":");
|
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
import {
|
|
2
2
|
response2
|
|
3
|
-
} from "./
|
|
3
|
+
} from "./server-info-gymtz25n.js";
|
|
4
4
|
import {
|
|
5
5
|
Api2
|
|
6
|
-
} from "./
|
|
6
|
+
} from "./server-info-t3j5ftv1.js";
|
|
7
7
|
|
|
8
8
|
// src/handlers/integration.ts
|
|
9
9
|
import { Integration } from "@opencode/core/integration";
|
|
10
10
|
import { Plugin } from "@opencode/core/plugin";
|
|
11
11
|
import { Effect } from "effect";
|
|
12
|
-
import { HttpApiBuilder, HttpApiSchema } from "effect/
|
|
12
|
+
import { HttpApiBuilder, HttpApiSchema } from "effect/http-api";
|
|
13
13
|
import {
|
|
14
14
|
IntegrationAttemptNotFoundError,
|
|
15
15
|
IntegrationMethodNotFoundError,
|
|
@@ -1,23 +1,23 @@
|
|
|
1
1
|
import {
|
|
2
2
|
__export
|
|
3
|
-
} from "./
|
|
3
|
+
} from "./server-info-9rqn6x4v.js";
|
|
4
4
|
|
|
5
5
|
// src/pty-environment.ts
|
|
6
6
|
var exports_pty_environment = {};
|
|
7
7
|
__export(exports_pty_environment, {
|
|
8
8
|
PtyEnvironment: () => exports_pty_environment,
|
|
9
9
|
Service: () => Service4,
|
|
10
|
-
layer: () =>
|
|
11
|
-
node: () =>
|
|
10
|
+
layer: () => layer5,
|
|
11
|
+
node: () => node2
|
|
12
12
|
});
|
|
13
13
|
import { Context, Effect, Layer } from "effect";
|
|
14
14
|
import { makeGlobalNode } from "@opencode/util/effect/app-node";
|
|
15
15
|
|
|
16
16
|
class Service4 extends Context.Service()("@opencode/ServerPtyEnvironment") {
|
|
17
17
|
}
|
|
18
|
-
var
|
|
18
|
+
var layer5 = Layer.succeed(Service4, Service4.of({
|
|
19
19
|
get: () => Effect.succeed({})
|
|
20
20
|
}));
|
|
21
|
-
var
|
|
21
|
+
var node2 = makeGlobalNode({ service: Service4, layer: layer5, deps: [] });
|
|
22
22
|
|
|
23
|
-
export { Service4,
|
|
23
|
+
export { Service4, layer5, node2, exports_pty_environment };
|
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
import {
|
|
2
2
|
response2
|
|
3
|
-
} from "./
|
|
3
|
+
} from "./server-info-gymtz25n.js";
|
|
4
4
|
import {
|
|
5
5
|
Api2
|
|
6
|
-
} from "./
|
|
6
|
+
} from "./server-info-t3j5ftv1.js";
|
|
7
7
|
|
|
8
8
|
// src/handlers/form.ts
|
|
9
9
|
import { Form } from "@opencode/core/form";
|
|
10
10
|
import { Effect } from "effect";
|
|
11
|
-
import { HttpApiBuilder } from "effect/
|
|
11
|
+
import { HttpApiBuilder } from "effect/http-api";
|
|
12
12
|
var FormHandler2 = HttpApiBuilder.group(Api2, "server.form", (handlers) => handlers.handle("form.list", Effect.fn(function* () {
|
|
13
13
|
const form = yield* Form.Service;
|
|
14
14
|
return yield* response2(form.list());
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
import {
|
|
2
2
|
Api2
|
|
3
|
-
} from "./
|
|
3
|
+
} from "./server-info-t3j5ftv1.js";
|
|
4
4
|
import {
|
|
5
5
|
CorsConfig2,
|
|
6
6
|
isAllowedRequestOrigin2
|
|
7
|
-
} from "./
|
|
7
|
+
} from "./server-info-q4bn6dy8.js";
|
|
8
8
|
import {
|
|
9
9
|
runPtySocket2
|
|
10
|
-
} from "./
|
|
10
|
+
} from "./server-info-h6rt5k9s.js";
|
|
11
11
|
|
|
12
12
|
// src/handlers/persistent-pty.ts
|
|
13
13
|
import { PersistentPty } from "@opencode/core/persistent-pty";
|
|
@@ -18,10 +18,10 @@ import {
|
|
|
18
18
|
PTY_CONNECT_TOKEN_HEADER,
|
|
19
19
|
PTY_CONNECT_TOKEN_HEADER_VALUE
|
|
20
20
|
} from "@opencode/protocol/groups/persistent-pty";
|
|
21
|
-
import { Effect, Queue
|
|
22
|
-
import { HttpServerRequest, HttpServerResponse } from "effect/
|
|
23
|
-
import { HttpApiBuilder, HttpApiSchema } from "effect/
|
|
24
|
-
import { Socket } from "effect/
|
|
21
|
+
import { Effect, Queue } from "effect";
|
|
22
|
+
import { HttpServerRequest, HttpServerResponse } from "effect/http";
|
|
23
|
+
import { HttpApiBuilder, HttpApiSchema } from "effect/http-api";
|
|
24
|
+
import { Socket } from "effect/socket";
|
|
25
25
|
var PersistentPtyHandler2 = HttpApiBuilder.group(Api2, "server.experimental", (handlers) => Effect.gen(function* () {
|
|
26
26
|
const tickets = yield* PtyTicket.Service;
|
|
27
27
|
const cors = yield* CorsConfig2;
|
|
@@ -77,9 +77,7 @@ var PersistentPtyHandler2 = HttpApiBuilder.group(Api2, "server.experimental", (h
|
|
|
77
77
|
if (!Number.isSafeInteger(cursor) || cursor < 0)
|
|
78
78
|
return HttpServerResponse.empty({ status: 400 });
|
|
79
79
|
const socket = yield* Effect.orDie(ctx.request.upgrade);
|
|
80
|
-
const write = yield* socket.writer;
|
|
81
80
|
const outbox = yield* Queue.unbounded();
|
|
82
|
-
const input = yield* Semaphore.make(1);
|
|
83
81
|
let attachment;
|
|
84
82
|
const onOpen = Effect.gen(function* () {
|
|
85
83
|
attachment = yield* pty.attach(ctx.params.ptyID, {
|
|
@@ -123,32 +121,30 @@ var PersistentPtyHandler2 = HttpApiBuilder.group(Api2, "server.experimental", (h
|
|
|
123
121
|
Queue.offerUnsafe(outbox, JSON.stringify({ type: "replay_complete", endOffset: attachment.replay.endOffset }));
|
|
124
122
|
attachment.activate();
|
|
125
123
|
});
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
124
|
+
yield* runPtySocket2({
|
|
125
|
+
socket,
|
|
126
|
+
outbox,
|
|
127
|
+
onOpen,
|
|
128
|
+
onMessage: (message) => {
|
|
129
|
+
if (!attachment)
|
|
130
|
+
return Effect.void;
|
|
131
|
+
const data = typeof message === "string" ? Buffer.from(message) : message;
|
|
132
|
+
if (!framedInput)
|
|
133
|
+
return pty.input(ctx.params.ptyID, attachmentID, attachment.info.size.cols, attachment.info.size.rows, data).pipe(Effect.ignore);
|
|
134
|
+
if (data.byteLength < 5)
|
|
135
|
+
return Effect.void;
|
|
136
|
+
const view = new DataView(data.buffer, data.byteOffset, data.byteLength);
|
|
137
|
+
const type = data[0];
|
|
138
|
+
const cols = view.getUint16(1);
|
|
139
|
+
const rows = view.getUint16(3);
|
|
140
|
+
if (type !== 0 && type !== 1 || cols === 0 || rows === 0)
|
|
141
|
+
return Effect.void;
|
|
142
|
+
if (type === 0)
|
|
143
|
+
return pty.control(ctx.params.ptyID, attachmentID, cols, rows).pipe(Effect.ignore);
|
|
144
|
+
return pty.input(ctx.params.ptyID, attachmentID, cols, rows, data.subarray(5)).pipe(Effect.ignore);
|
|
145
|
+
},
|
|
146
|
+
detach: () => attachment?.detach()
|
|
133
147
|
});
|
|
134
|
-
yield* runPtySocket2(drain, socket.runRaw((message) => input.withPermit(Effect.suspend(() => {
|
|
135
|
-
if (!attachment)
|
|
136
|
-
return Effect.void;
|
|
137
|
-
const data = typeof message === "string" ? Buffer.from(message) : message;
|
|
138
|
-
if (!framedInput)
|
|
139
|
-
return pty.input(ctx.params.ptyID, attachmentID, attachment.info.size.cols, attachment.info.size.rows, data).pipe(Effect.ignore);
|
|
140
|
-
if (data.byteLength < 5)
|
|
141
|
-
return Effect.void;
|
|
142
|
-
const view = new DataView(data.buffer, data.byteOffset, data.byteLength);
|
|
143
|
-
const type = data[0];
|
|
144
|
-
const cols = view.getUint16(1);
|
|
145
|
-
const rows = view.getUint16(3);
|
|
146
|
-
if (type !== 0 && type !== 1 || cols === 0 || rows === 0)
|
|
147
|
-
return Effect.void;
|
|
148
|
-
if (type === 0)
|
|
149
|
-
return pty.control(ctx.params.ptyID, attachmentID, cols, rows).pipe(Effect.ignore);
|
|
150
|
-
return pty.input(ctx.params.ptyID, attachmentID, cols, rows, data.subarray(5)).pipe(Effect.ignore);
|
|
151
|
-
})), { onOpen }), () => attachment?.detach()).pipe(Effect.catchReason("SocketError", "SocketCloseError", () => Effect.void), Effect.orDie);
|
|
152
148
|
return HttpServerResponse.empty();
|
|
153
149
|
}));
|
|
154
150
|
}));
|
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
import {
|
|
2
2
|
missingSession2
|
|
3
|
-
} from "./
|
|
3
|
+
} from "./server-info-smaf4a18.js";
|
|
4
4
|
import {
|
|
5
5
|
locationErrors2,
|
|
6
6
|
response2,
|
|
7
7
|
sessionInfo2
|
|
8
|
-
} from "./
|
|
8
|
+
} from "./server-info-gymtz25n.js";
|
|
9
9
|
import {
|
|
10
10
|
Api2
|
|
11
|
-
} from "./
|
|
11
|
+
} from "./server-info-t3j5ftv1.js";
|
|
12
12
|
|
|
13
13
|
// src/handlers/permission.ts
|
|
14
14
|
import { Instance } from "@opencode/core/instance/service";
|
|
@@ -17,7 +17,7 @@ import { Permission } from "@opencode/core/permission";
|
|
|
17
17
|
import { PermissionSaved } from "@opencode/core/permission/saved";
|
|
18
18
|
import { Session } from "@opencode/core/session";
|
|
19
19
|
import { Effect } from "effect";
|
|
20
|
-
import { HttpApiBuilder, HttpApiSchema } from "effect/
|
|
20
|
+
import { HttpApiBuilder, HttpApiSchema } from "effect/http-api";
|
|
21
21
|
import { PermissionNotFoundError } from "@opencode/protocol/errors";
|
|
22
22
|
function missingRequest(id) {
|
|
23
23
|
return new PermissionNotFoundError({ requestID: id, message: `Permission request not found: ${id}` });
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
import {
|
|
2
2
|
Api2
|
|
3
|
-
} from "./
|
|
3
|
+
} from "./server-info-t3j5ftv1.js";
|
|
4
4
|
|
|
5
5
|
// src/handlers/location.ts
|
|
6
6
|
import { Location } from "@opencode/core/location";
|
|
7
7
|
import { LocationServiceMap } from "@opencode/core/location-service-map";
|
|
8
8
|
import { ServiceUnavailableError } from "@opencode/protocol/errors";
|
|
9
9
|
import { Cause, Effect } from "effect";
|
|
10
|
-
import { HttpApiBuilder } from "effect/
|
|
10
|
+
import { HttpApiBuilder } from "effect/http-api";
|
|
11
11
|
var LocationHandler2 = HttpApiBuilder.group(Api2, "server.location", (handlers) => Effect.gen(function* () {
|
|
12
12
|
const locations = yield* LocationServiceMap.Service;
|
|
13
13
|
return handlers.handle("location.get", Effect.fn(function* () {
|