Răsfoiți Sursa

chore: generate

opencode-agent[bot] 1 lună în urmă
părinte
comite
9205dfe724

+ 9 - 7
packages/core/src/effect/layer-node.ts

@@ -272,13 +272,15 @@ export function compile<A, E, const Items extends Replacements = readonly []>(
 }
 
 function replacementMapFrom(replacements?: Replacements) {
-  return replacements?.reduce((map, [source, replacement]) => {
-    const normalized = rewriteReplacementDependencies(replacementNode(source, replacement), map)
-    const current = new Map([[source.name, normalized]])
-    for (const [name, node] of map) map.set(name, rewriteReplacementDependencies(node, current))
-    map.set(source.name, normalized)
-    return map
-  }, new Map<string, AnyNode>()) ?? new Map<string, AnyNode>()
+  return (
+    replacements?.reduce((map, [source, replacement]) => {
+      const normalized = rewriteReplacementDependencies(replacementNode(source, replacement), map)
+      const current = new Map([[source.name, normalized]])
+      for (const [name, node] of map) map.set(name, rewriteReplacementDependencies(node, current))
+      map.set(source.name, normalized)
+      return map
+    }, new Map<string, AnyNode>()) ?? new Map<string, AnyNode>()
+  )
 }
 
 function rewriteReplacementDependencies(root: AnyNode, replacements: ReadonlyMap<string, AnyNode>) {

+ 1 - 3
packages/core/test/filesystem/watcher.test.ts

@@ -44,9 +44,7 @@ function provide(directory: string, vcs?: Location.Interface["vcs"]) {
     AppNodeBuilder.build(Watcher.node, [
       [Config.node, configLayer],
       [Location.node, locationLayer],
-    ]).pipe(
-      Layer.provide(flagsLayer),
-    ),
+    ]).pipe(Layer.provide(flagsLayer)),
   )
 }
 

+ 9 - 4
packages/core/test/instruction-context.test.ts

@@ -17,9 +17,11 @@ import { testEffect } from "./lib/effect"
 
 const it = testEffect(Layer.empty)
 
-const instructionLayer = (
-  input: { config: string; locationServiceLayer: Layer.Layer<Location.Service>; filesystemLayer?: Layer.Layer<FSUtil.Service> },
-) =>
+const instructionLayer = (input: {
+  config: string
+  locationServiceLayer: Layer.Layer<Location.Service>
+  filesystemLayer?: Layer.Layer<FSUtil.Service>
+}) =>
   AppNodeBuilder.build(LayerNode.group([SystemContextRegistry.node, InstructionContext.node]), [
     [Global.node, Global.layerWith({ config: input.config })],
     [Location.node, input.locationServiceLayer],
@@ -305,7 +307,10 @@ describe("InstructionContext", () => {
             locationServiceLayer: Layer.succeed(
               Location.Service,
               Location.Service.of(
-                location({ directory: AbsolutePath.make("/outside") }, { projectDirectory: AbsolutePath.make("/repo") }),
+                location(
+                  { directory: AbsolutePath.make("/outside") },
+                  { projectDirectory: AbsolutePath.make("/repo") },
+                ),
               ),
             ),
           }),

+ 8 - 1
packages/core/test/permission.test.ts

@@ -25,7 +25,14 @@ const current = Layer.succeed(
 )
 const it = testEffect(
   AppNodeBuilder.build(
-    LayerNode.group([Database.node, EventV2.node, SessionStore.node, PermissionSaved.node, AgentV2.node, PermissionV2.node]),
+    LayerNode.group([
+      Database.node,
+      EventV2.node,
+      SessionStore.node,
+      PermissionSaved.node,
+      AgentV2.node,
+      PermissionV2.node,
+    ]),
     [[Location.node, current]],
   ),
 )

+ 4 - 3
packages/core/test/plugin/command.test.ts

@@ -11,10 +11,11 @@ import { host } from "./host"
 
 const directory = AbsolutePath.make("/repo/packages/app")
 const project = AbsolutePath.make("/repo")
-const locationLayer = Layer.succeed(Location.Service, Location.Service.of(location({ directory }, { projectDirectory: project })))
-const it = testEffect(
-  AppNodeBuilder.build(CommandV2.node, [[Location.node, locationLayer]]),
+const locationLayer = Layer.succeed(
+  Location.Service,
+  Location.Service.of(location({ directory }, { projectDirectory: project })),
 )
+const it = testEffect(AppNodeBuilder.build(CommandV2.node, [[Location.node, locationLayer]]))
 
 describe("CommandPlugin.Plugin", () => {
   it.effect("registers built-in init and review commands", () =>

+ 4 - 1
packages/core/test/policy.test.ts

@@ -9,7 +9,10 @@ import { testEffect } from "./lib/effect"
 
 const it = testEffect(
   AppNodeBuilder.build(Policy.node, [
-    [Location.node, Layer.succeed(Location.Service, Location.Service.of(location({ directory: AbsolutePath.make("test") })))],
+    [
+      Location.node,
+      Layer.succeed(Location.Service, Location.Service.of(location({ directory: AbsolutePath.make("test") }))),
+    ],
   ]),
 )
 

+ 7 - 4
packages/core/test/session-create.test.ts

@@ -36,10 +36,13 @@ const projects = Layer.succeed(
   }),
 )
 const it = testEffect(
-  AppNodeBuilder.build(LayerNode.group([Database.node, EventV2.node, SessionProjector.node, SessionStore.node, SessionV2.node]), [
-    [ProjectV2.node, projects],
-    [SessionExecution.node, SessionExecution.noopLayer],
-  ]),
+  AppNodeBuilder.build(
+    LayerNode.group([Database.node, EventV2.node, SessionProjector.node, SessionStore.node, SessionV2.node]),
+    [
+      [ProjectV2.node, projects],
+      [SessionExecution.node, SessionExecution.noopLayer],
+    ],
+  ),
 )
 const location = Location.Ref.make({ directory: AbsolutePath.make("/project") })
 const id = SessionV2.ID.create()

+ 7 - 4
packages/core/test/session-history.test.ts

@@ -24,10 +24,13 @@ const projects = Layer.succeed(
   }),
 )
 const it = testEffect(
-  AppNodeBuilder.build(LayerNode.group([Database.node, EventV2.node, SessionProjector.node, SessionStore.node, SessionV2.node]), [
-    [ProjectV2.node, projects],
-    [SessionExecution.node, SessionExecution.noopLayer],
-  ]),
+  AppNodeBuilder.build(
+    LayerNode.group([Database.node, EventV2.node, SessionProjector.node, SessionStore.node, SessionV2.node]),
+    [
+      [ProjectV2.node, projects],
+      [SessionExecution.node, SessionExecution.noopLayer],
+    ],
+  ),
 )
 const location = Location.Ref.make({ directory: AbsolutePath.make("/project") })
 

+ 4 - 3
packages/core/test/session-prompt.test.ts

@@ -43,9 +43,10 @@ const execution = Layer.succeed(
   }),
 )
 const it = testEffect(
-  AppNodeBuilder.build(LayerNode.group([Database.node, EventV2.node, SessionProjector.node, SessionStore.node, SessionV2.node]), [
-    [SessionExecution.node, execution],
-  ]),
+  AppNodeBuilder.build(
+    LayerNode.group([Database.node, EventV2.node, SessionProjector.node, SessionStore.node, SessionV2.node]),
+    [[SessionExecution.node, execution]],
+  ),
 )
 const sessionID = SessionV2.ID.make("ses_prompt_test")
 const messageID = SessionMessage.ID.create()

+ 3 - 1
packages/core/test/session-runner-tool-registry.test.ts

@@ -32,7 +32,9 @@ const outputStore = Layer.mock(ToolOutputStore.Service, {
 const registryLayer = AppNodeBuilder.build(ToolRegistry.node, [[ToolOutputStore.node, outputStore]])
 const it = testEffect(registryLayer)
 const integrated = testEffect(
-  AppNodeBuilder.build(LayerNode.group([ApplicationTools.node, ToolRegistry.node]), [[ToolOutputStore.node, outputStore]]),
+  AppNodeBuilder.build(LayerNode.group([ApplicationTools.node, ToolRegistry.node]), [
+    [ToolOutputStore.node, outputStore],
+  ]),
 )
 const identity = {
   agent: AgentV2.ID.make("build"),

+ 7 - 8
packages/core/test/snapshot.test.ts

@@ -114,7 +114,9 @@ describe("Snapshot", () => {
           const projectID = yield* Effect.gen(function* () {
             return (yield* Location.Service).project.id
           }).pipe(
-            Effect.provide(AppNodeBuilder.build(Location.boundNode(Location.Ref.make({ directory: AbsolutePath.make(project) })))),
+            Effect.provide(
+              AppNodeBuilder.build(Location.boundNode(Location.Ref.make({ directory: AbsolutePath.make(project) }))),
+            ),
           )
           expect(
             yield* Effect.promise(() => fs.stat(path.join(tmp.path, "snapshot", projectID, Hash.fast(project)))),
@@ -165,13 +167,10 @@ describe("Snapshot", () => {
 })
 
 function snapshotLayer(data: string, directory: string) {
-  return AppNodeBuilder.build(
-    Snapshot.node,
-    [
-      [Location.node, Location.boundNode(Location.Ref.make({ directory: AbsolutePath.make(directory) }))],
-      [Global.node, Global.layerWith({ data, config: path.join(data, "config") })],
-    ],
-  )
+  return AppNodeBuilder.build(Snapshot.node, [
+    [Location.node, Location.boundNode(Location.Ref.make({ directory: AbsolutePath.make(directory) }))],
+    [Global.node, Global.layerWith({ data, config: path.join(data, "config") })],
+  ])
 }
 
 function read(file: string) {

+ 7 - 1
packages/core/test/tool-apply-patch.test.ts

@@ -96,7 +96,13 @@ const withTool = <A, E, R>(directory: string, body: (registry: ToolRegistry.Inte
   }).pipe(
     Effect.provide(
       AppNodeBuilder.build(
-        LayerNode.group([ToolRegistry.node, ToolRegistry.toolsNode, LocationMutation.node, FileMutation.node, ApplyPatchTool.node]),
+        LayerNode.group([
+          ToolRegistry.node,
+          ToolRegistry.toolsNode,
+          LocationMutation.node,
+          FileMutation.node,
+          ApplyPatchTool.node,
+        ]),
         [
           [FSUtil.node, filesystem],
           [Location.node, activeLocation],

+ 10 - 7
packages/core/test/tool-bash.test.ts

@@ -110,13 +110,16 @@ const withTool = <A, E, R>(
     return yield* body(yield* ToolRegistry.Service)
   }).pipe(
     Effect.provide(
-      AppNodeBuilder.build(LayerNode.group([ToolRegistry.node, ToolRegistry.toolsNode, LocationMutation.node, BashTool.node]), [
-        [Location.node, activeLocation],
-        [PermissionV2.node, permission],
-        [AppProcess.node, processLayer],
-        [Config.node, config],
-        [ToolOutputStore.node, ToolOutputStore.nodeWithoutConfig],
-      ]),
+      AppNodeBuilder.build(
+        LayerNode.group([ToolRegistry.node, ToolRegistry.toolsNode, LocationMutation.node, BashTool.node]),
+        [
+          [Location.node, activeLocation],
+          [PermissionV2.node, permission],
+          [AppProcess.node, processLayer],
+          [Config.node, config],
+          [ToolOutputStore.node, ToolOutputStore.nodeWithoutConfig],
+        ],
+      ),
     ),
   )
 }

+ 15 - 6
packages/core/test/tool-edit.test.ts

@@ -85,12 +85,21 @@ const withTool = <A, E, R>(directory: string, body: (registry: ToolRegistry.Inte
     return yield* body(yield* ToolRegistry.Service)
   }).pipe(
     Effect.provide(
-      AppNodeBuilder.build(LayerNode.group([ToolRegistry.node, ToolRegistry.toolsNode, LocationMutation.node, FileMutation.node, EditTool.node]), [
-        [FSUtil.node, filesystem],
-        [Location.node, activeLocation],
-        [PermissionV2.node, permission],
-        [ToolOutputStore.node, ToolOutputStore.nodeWithoutConfig],
-      ]),
+      AppNodeBuilder.build(
+        LayerNode.group([
+          ToolRegistry.node,
+          ToolRegistry.toolsNode,
+          LocationMutation.node,
+          FileMutation.node,
+          EditTool.node,
+        ]),
+        [
+          [FSUtil.node, filesystem],
+          [Location.node, activeLocation],
+          [PermissionV2.node, permission],
+          [ToolOutputStore.node, ToolOutputStore.nodeWithoutConfig],
+        ],
+      ),
     ),
   )
 }

+ 9 - 6
packages/core/test/tool-websearch.test.ts

@@ -124,12 +124,15 @@ const websearchConfig = Layer.succeed(
   }),
 )
 const it = testEffect(
-  AppNodeBuilder.build(LayerNode.group([ToolRegistry.node, ToolRegistry.toolsNode, WebSearchTool.configNode, WebSearchTool.node]), [
-    [PermissionV2.node, permission],
-    [LayerNodePlatform.httpClient, http],
-    [WebSearchTool.configNode, websearchConfig],
-    [ToolOutputStore.node, ToolOutputStore.nodeWithoutConfig],
-  ]),
+  AppNodeBuilder.build(
+    LayerNode.group([ToolRegistry.node, ToolRegistry.toolsNode, WebSearchTool.configNode, WebSearchTool.node]),
+    [
+      [PermissionV2.node, permission],
+      [LayerNodePlatform.httpClient, http],
+      [WebSearchTool.configNode, websearchConfig],
+      [ToolOutputStore.node, ToolOutputStore.nodeWithoutConfig],
+    ],
+  ),
 )
 
 describe("WebSearchTool registration", () => {

+ 15 - 6
packages/core/test/tool-write.test.ts

@@ -69,12 +69,21 @@ const withTool = <A, E, R>(directory: string, body: (registry: ToolRegistry.Inte
     return yield* body(yield* ToolRegistry.Service)
   }).pipe(
     Effect.provide(
-      AppNodeBuilder.build(LayerNode.group([ToolRegistry.node, ToolRegistry.toolsNode, LocationMutation.node, FileMutation.node, WriteTool.node]), [
-        [FSUtil.node, filesystem],
-        [Location.node, activeLocation],
-        [PermissionV2.node, permission],
-        [ToolOutputStore.node, ToolOutputStore.nodeWithoutConfig],
-      ]),
+      AppNodeBuilder.build(
+        LayerNode.group([
+          ToolRegistry.node,
+          ToolRegistry.toolsNode,
+          LocationMutation.node,
+          FileMutation.node,
+          WriteTool.node,
+        ]),
+        [
+          [FSUtil.node, filesystem],
+          [Location.node, activeLocation],
+          [PermissionV2.node, permission],
+          [ToolOutputStore.node, ToolOutputStore.nodeWithoutConfig],
+        ],
+      ),
     ),
   )
 }