Skip to content

Commit bc949af

Browse files
chore: generate
1 parent 9e7c136 commit bc949af

7 files changed

Lines changed: 836 additions & 1002 deletions

File tree

Lines changed: 10 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,14 @@
1-
import { ServiceMap } from "effect";
2-
import type { Project } from "@/project/project";
1+
import { ServiceMap } from "effect"
2+
import type { Project } from "@/project/project"
33

44
export declare namespace InstanceContext {
5-
export interface Shape {
6-
readonly directory: string;
7-
readonly worktree: string;
8-
readonly project: Project.Info;
9-
}
5+
export interface Shape {
6+
readonly directory: string
7+
readonly worktree: string
8+
readonly project: Project.Info
9+
}
1010
}
1111

12-
export class InstanceContext extends ServiceMap.Service<
13-
InstanceContext,
14-
InstanceContext.Shape
15-
>()("opencode/InstanceContext") {}
12+
export class InstanceContext extends ServiceMap.Service<InstanceContext, InstanceContext.Shape>()(
13+
"opencode/InstanceContext",
14+
) {}
Lines changed: 58 additions & 67 deletions
Original file line numberDiff line numberDiff line change
@@ -1,31 +1,31 @@
1-
import { Effect, Layer, LayerMap, ServiceMap } from "effect";
2-
import { FileService } from "@/file";
3-
import { FileTimeService } from "@/file/time";
4-
import { FileWatcherService } from "@/file/watcher";
5-
import { FormatService } from "@/format";
6-
import { PermissionService } from "@/permission/service";
7-
import { Instance } from "@/project/instance";
8-
import { VcsService } from "@/project/vcs";
9-
import { ProviderAuthService } from "@/provider/auth-service";
10-
import { QuestionService } from "@/question/service";
11-
import { SkillService } from "@/skill/skill";
12-
import { SnapshotService } from "@/snapshot";
13-
import { InstanceContext } from "./instance-context";
14-
import { registerDisposer } from "./instance-registry";
1+
import { Effect, Layer, LayerMap, ServiceMap } from "effect"
2+
import { FileService } from "@/file"
3+
import { FileTimeService } from "@/file/time"
4+
import { FileWatcherService } from "@/file/watcher"
5+
import { FormatService } from "@/format"
6+
import { PermissionService } from "@/permission/service"
7+
import { Instance } from "@/project/instance"
8+
import { VcsService } from "@/project/vcs"
9+
import { ProviderAuthService } from "@/provider/auth-service"
10+
import { QuestionService } from "@/question/service"
11+
import { SkillService } from "@/skill/skill"
12+
import { SnapshotService } from "@/snapshot"
13+
import { InstanceContext } from "./instance-context"
14+
import { registerDisposer } from "./instance-registry"
1515

16-
export { InstanceContext } from "./instance-context";
16+
export { InstanceContext } from "./instance-context"
1717

1818
export type InstanceServices =
19-
| QuestionService
20-
| PermissionService
21-
| ProviderAuthService
22-
| FileWatcherService
23-
| VcsService
24-
| FileTimeService
25-
| FormatService
26-
| FileService
27-
| SkillService
28-
| SnapshotService;
19+
| QuestionService
20+
| PermissionService
21+
| ProviderAuthService
22+
| FileWatcherService
23+
| VcsService
24+
| FileTimeService
25+
| FormatService
26+
| FileService
27+
| SkillService
28+
| SnapshotService
2929

3030
// NOTE: LayerMap only passes the key (directory string) to lookup, but we need
3131
// the full instance context (directory, worktree, project). We read from the
@@ -34,50 +34,41 @@ export type InstanceServices =
3434
// This should go away once the old Instance type is removed and lookup can load
3535
// the full context directly.
3636
function lookup(_key: string) {
37-
const ctx = Layer.sync(InstanceContext, () =>
38-
InstanceContext.of(Instance.current),
39-
);
40-
return Layer.mergeAll(
41-
Layer.fresh(QuestionService.layer),
42-
Layer.fresh(PermissionService.layer),
43-
Layer.fresh(ProviderAuthService.layer),
44-
Layer.fresh(FileWatcherService.layer).pipe(Layer.orDie),
45-
Layer.fresh(VcsService.layer),
46-
Layer.fresh(FileTimeService.layer).pipe(Layer.orDie),
47-
Layer.fresh(FormatService.layer),
48-
Layer.fresh(FileService.layer),
49-
Layer.fresh(SkillService.layer),
50-
Layer.fresh(SnapshotService.layer),
51-
).pipe(Layer.provide(ctx));
37+
const ctx = Layer.sync(InstanceContext, () => InstanceContext.of(Instance.current))
38+
return Layer.mergeAll(
39+
Layer.fresh(QuestionService.layer),
40+
Layer.fresh(PermissionService.layer),
41+
Layer.fresh(ProviderAuthService.layer),
42+
Layer.fresh(FileWatcherService.layer).pipe(Layer.orDie),
43+
Layer.fresh(VcsService.layer),
44+
Layer.fresh(FileTimeService.layer).pipe(Layer.orDie),
45+
Layer.fresh(FormatService.layer),
46+
Layer.fresh(FileService.layer),
47+
Layer.fresh(SkillService.layer),
48+
Layer.fresh(SnapshotService.layer),
49+
).pipe(Layer.provide(ctx))
5250
}
5351

54-
export class Instances extends ServiceMap.Service<
55-
Instances,
56-
LayerMap.LayerMap<string, InstanceServices>
57-
>()("opencode/Instances") {
58-
static readonly layer = Layer.effect(
59-
Instances,
60-
Effect.gen(function* () {
61-
const layerMap = yield* LayerMap.make(lookup, {
62-
idleTimeToLive: Infinity,
63-
});
64-
const unregister = registerDisposer((directory) =>
65-
Effect.runPromise(layerMap.invalidate(directory)),
66-
);
67-
yield* Effect.addFinalizer(() => Effect.sync(unregister));
68-
return Instances.of(layerMap);
69-
}),
70-
);
52+
export class Instances extends ServiceMap.Service<Instances, LayerMap.LayerMap<string, InstanceServices>>()(
53+
"opencode/Instances",
54+
) {
55+
static readonly layer = Layer.effect(
56+
Instances,
57+
Effect.gen(function* () {
58+
const layerMap = yield* LayerMap.make(lookup, {
59+
idleTimeToLive: Infinity,
60+
})
61+
const unregister = registerDisposer((directory) => Effect.runPromise(layerMap.invalidate(directory)))
62+
yield* Effect.addFinalizer(() => Effect.sync(unregister))
63+
return Instances.of(layerMap)
64+
}),
65+
)
7166

72-
static get(
73-
directory: string,
74-
): Layer.Layer<InstanceServices, never, Instances> {
75-
return Layer.unwrap(
76-
Instances.use((map) => Effect.succeed(map.get(directory))),
77-
);
78-
}
67+
static get(directory: string): Layer.Layer<InstanceServices, never, Instances> {
68+
return Layer.unwrap(Instances.use((map) => Effect.succeed(map.get(directory))))
69+
}
7970

80-
static invalidate(directory: string): Effect.Effect<void, never, Instances> {
81-
return Instances.use((map) => map.invalidate(directory));
82-
}
71+
static invalidate(directory: string): Effect.Effect<void, never, Instances> {
72+
return Instances.use((map) => map.invalidate(directory))
73+
}
8374
}

0 commit comments

Comments
 (0)