Procházet zdrojové kódy

refactor(core): require explicit import extensions

Dax Raad před 5 dny
rodič
revize
4acdeffbe9
100 změnil soubory, kde provedl 279 přidání a 279 odebrání
  1. 1 1
      packages/core/src/account/sql.ts
  2. 3 3
      packages/core/src/agent.ts
  3. 2 2
      packages/core/src/aisdk-native.ts
  4. 4 4
      packages/core/src/aisdk.ts
  5. 1 1
      packages/core/src/app.ts
  6. 4 4
      packages/core/src/bus.ts
  7. 6 6
      packages/core/src/catalog.ts
  8. 1 1
      packages/core/src/codemode/catalog.ts
  9. 3 3
      packages/core/src/codemode/instructions.ts
  10. 2 2
      packages/core/src/codemode/tool.ts
  11. 7 7
      packages/core/src/command.ts
  12. 9 9
      packages/core/src/config.ts
  13. 1 1
      packages/core/src/config/markdown.ts
  14. 10 10
      packages/core/src/config/normalize.ts
  15. 10 10
      packages/core/src/config/plugin/agent.ts
  16. 4 4
      packages/core/src/config/plugin/command.ts
  17. 6 6
      packages/core/src/config/plugin/instruction.ts
  18. 3 3
      packages/core/src/config/plugin/policy.ts
  19. 3 3
      packages/core/src/config/plugin/provider.ts
  20. 5 5
      packages/core/src/config/plugin/reference.ts
  21. 4 4
      packages/core/src/config/plugin/skill-file.ts
  22. 8 8
      packages/core/src/config/plugin/skill.ts
  23. 4 4
      packages/core/src/config/plugin/source.ts
  24. 2 2
      packages/core/src/config/plugin/websearch.ts
  25. 2 2
      packages/core/src/config/variable.ts
  26. 3 3
      packages/core/src/credential.ts
  27. 2 2
      packages/core/src/credential/sql.ts
  28. 2 2
      packages/core/src/database/database.ts
  29. 43 43
      packages/core/src/database/migration.gen.ts
  30. 3 3
      packages/core/src/database/migration.ts
  31. 1 1
      packages/core/src/database/migration/20260127222353_familiar_lady_ursula.ts
  32. 1 1
      packages/core/src/database/migration/20260211171708_add_project_commands.ts
  33. 1 1
      packages/core/src/database/migration/20260213144116_wakeful_the_professor.ts
  34. 1 1
      packages/core/src/database/migration/20260225215848_workspace.ts
  35. 1 1
      packages/core/src/database/migration/20260227213759_add_session_workspace_id.ts
  36. 1 1
      packages/core/src/database/migration/20260228203230_blue_harpoon.ts
  37. 1 1
      packages/core/src/database/migration/20260303231226_add_workspace_fields.ts
  38. 1 1
      packages/core/src/database/migration/20260309230000_move_org_to_state.ts
  39. 1 1
      packages/core/src/database/migration/20260312043431_session_message_cursor.ts
  40. 1 1
      packages/core/src/database/migration/20260323234822_events.ts
  41. 1 1
      packages/core/src/database/migration/20260410174513_workspace-name.ts
  42. 1 1
      packages/core/src/database/migration/20260413175956_chief_energizer.ts
  43. 1 1
      packages/core/src/database/migration/20260423070820_add_icon_url_override.ts
  44. 1 1
      packages/core/src/database/migration/20260427172553_slow_nightmare.ts
  45. 1 1
      packages/core/src/database/migration/20260428004200_add_session_path.ts
  46. 1 1
      packages/core/src/database/migration/20260501142318_next_venus.ts
  47. 1 1
      packages/core/src/database/migration/20260504145000_add_sync_owner.ts
  48. 1 1
      packages/core/src/database/migration/20260507164347_add_workspace_time.ts
  49. 1 1
      packages/core/src/database/migration/20260510033149_session_usage.ts
  50. 1 1
      packages/core/src/database/migration/20260511000411_data_migration_state.ts
  51. 1 1
      packages/core/src/database/migration/20260511173437_session-metadata.ts
  52. 1 1
      packages/core/src/database/migration/20260601010001_normalize_storage_paths.ts
  53. 1 1
      packages/core/src/database/migration/20260601202201_amazing_prowler.ts
  54. 1 1
      packages/core/src/database/migration/20260602002951_lowly_union_jack.ts
  55. 1 1
      packages/core/src/database/migration/20260602182828_add_project_directories.ts
  56. 1 1
      packages/core/src/database/migration/20260603001617_session_message_projection_indexes.ts
  57. 1 1
      packages/core/src/database/migration/20260603040000_session_message_projection_order.ts
  58. 1 1
      packages/core/src/database/migration/20260603141458_session_input_inbox.ts
  59. 1 1
      packages/core/src/database/migration/20260603160727_jittery_ezekiel_stane.ts
  60. 1 1
      packages/core/src/database/migration/20260604172448_event_sourced_session_input.ts
  61. 1 1
      packages/core/src/database/migration/20260605003541_add_session_context_snapshot.ts
  62. 1 1
      packages/core/src/database/migration/20260605042240_add_context_epoch_agent.ts
  63. 1 1
      packages/core/src/database/migration/20260611035744_credential.ts
  64. 1 1
      packages/core/src/database/migration/20260611192811_lush_chimera.ts
  65. 1 1
      packages/core/src/database/migration/20260612174303_project_dir_strategy.ts
  66. 1 1
      packages/core/src/database/migration/20260622142730_simplify_session_context_epoch.ts
  67. 1 1
      packages/core/src/database/migration/20260622170816_reset_v2_session_state.ts
  68. 1 1
      packages/core/src/database/migration/20260622202450_simplify_session_input.ts
  69. 1 1
      packages/core/src/database/migration/20260804233008_loose_psylocke.ts
  70. 1 1
      packages/core/src/database/migration/20260805200742_import_legacy_credentials.ts
  71. 1 1
      packages/core/src/database/migration/20260808023530_workspace_domain.ts
  72. 1 1
      packages/core/src/database/migration/20260811161259_execution_claim_attempts.ts
  73. 1 1
      packages/core/src/database/path.ts
  74. 1 1
      packages/core/src/database/schema.gen.ts
  75. 1 1
      packages/core/src/database/sqlite.bun.ts
  76. 1 1
      packages/core/src/database/sqlite.node.ts
  77. 1 1
      packages/core/src/database/sqlite.ts
  78. 1 1
      packages/core/src/database/sqlite.workerd.ts
  79. 7 7
      packages/core/src/database/v1-migration.ts
  80. 3 3
      packages/core/src/effect/app-node-builder.ts
  81. 1 1
      packages/core/src/effect/app-node-platform.ts
  82. 1 1
      packages/core/src/effect/keyed-mutex.ts
  83. 2 2
      packages/core/src/environment/driver.ts
  84. 6 6
      packages/core/src/environment/environment.ts
  85. 2 2
      packages/core/src/environment/exec-defaults.ts
  86. 1 1
      packages/core/src/environment/files.ts
  87. 10 10
      packages/core/src/environment/index.ts
  88. 3 3
      packages/core/src/environment/local.ts
  89. 3 3
      packages/core/src/environment/memory.ts
  90. 2 2
      packages/core/src/event-logger.ts
  91. 4 4
      packages/core/src/file-mutation.ts
  92. 1 1
      packages/core/src/file.ts
  93. 4 4
      packages/core/src/filesystem.ts
  94. 3 3
      packages/core/src/filesystem/fff.bun.ts
  95. 3 3
      packages/core/src/filesystem/fff.node.ts
  96. 1 1
      packages/core/src/filesystem/ignore.ts
  97. 6 6
      packages/core/src/filesystem/location-watcher.ts
  98. 1 1
      packages/core/src/filesystem/protected.ts
  99. 6 6
      packages/core/src/filesystem/search.ts
  100. 3 3
      packages/core/src/filesystem/watcher.ts

+ 1 - 1
packages/core/src/account/sql.ts

@@ -1,6 +1,6 @@
 import { sqliteTable, text, integer, primaryKey } from "drizzle-orm/sqlite-core"
 import { sqliteTable, text, integer, primaryKey } from "drizzle-orm/sqlite-core"
 
 
-import { Timestamps } from "../database/schema.sql"
+import { Timestamps } from "../database/schema.sql.js"
 
 
 export const AccountTable = sqliteTable("account", {
 export const AccountTable = sqliteTable("account", {
   id: text().primaryKey(),
   id: text().primaryKey(),

+ 3 - 3
packages/core/src/agent.ts

@@ -1,12 +1,12 @@
-export * as Agent from "./agent"
+export * as Agent from "./agent.js"
 
 
 import path from "path"
 import path from "path"
 import { makeLocationNode } from "@opencode-ai/util/effect/app-node"
 import { makeLocationNode } from "@opencode-ai/util/effect/app-node"
 import { Array, Context, Effect, Layer, Types } from "effect"
 import { Array, Context, Effect, Layer, Types } from "effect"
 import { Agent } from "@opencode-ai/schema/agent"
 import { Agent } from "@opencode-ai/schema/agent"
 import { Global } from "@opencode-ai/util/global"
 import { Global } from "@opencode-ai/util/global"
-import { Bus } from "./bus"
-import { State } from "./state"
+import { Bus } from "./bus.js"
+import { State } from "./state.js"
 
 
 const SHELL_OUTPUT_GLOB = (data: string) => path.join(data, "shell", "*", "*")
 const SHELL_OUTPUT_GLOB = (data: string) => path.join(data, "shell", "*", "*")
 const TOOL_OUTPUT_GLOB = (data: string) => path.join(data, "tool-output", "*")
 const TOOL_OUTPUT_GLOB = (data: string) => path.join(data, "tool-output", "*")

+ 2 - 2
packages/core/src/aisdk-native.ts

@@ -1,7 +1,7 @@
-export * as AISDKNative from "./aisdk-native"
+export * as AISDKNative from "./aisdk-native.js"
 
 
 import { isRecord } from "@opencode-ai/ai/utils/record"
 import { isRecord } from "@opencode-ai/ai/utils/record"
-import { Provider } from "./provider"
+import { Provider } from "./provider.js"
 
 
 export interface Mapping {
 export interface Mapping {
   readonly package: string
   readonly package: string

+ 4 - 4
packages/core/src/aisdk.ts

@@ -1,4 +1,4 @@
-export * as AISDK from "./aisdk"
+export * as AISDK from "./aisdk.js"
 
 
 import { makeLocationNode } from "@opencode-ai/util/effect/app-node"
 import { makeLocationNode } from "@opencode-ai/util/effect/app-node"
 import { APICallError } from "@ai-sdk/provider"
 import { APICallError } from "@ai-sdk/provider"
@@ -34,9 +34,9 @@ import {
 import { Auth, Endpoint, RequestExecutor, type AnyRoute } from "@opencode-ai/ai/route"
 import { Auth, Endpoint, RequestExecutor, type AnyRoute } from "@opencode-ai/ai/route"
 import { ProviderShared } from "@opencode-ai/ai/protocols/shared"
 import { ProviderShared } from "@opencode-ai/ai/protocols/shared"
 import { Cause, Context, Effect, Layer, Option, Schema, Scope, Stream } from "effect"
 import { Cause, Context, Effect, Layer, Option, Schema, Scope, Stream } from "effect"
-import type { ID, Info } from "./model"
-import { Provider } from "./provider"
-import { State } from "./state"
+import type { ID, Info } from "./model.js"
+import { Provider } from "./provider.js"
+import { State } from "./state.js"
 
 
 type SDK = any
 type SDK = any
 type UserContent = Extract<LanguageModelV3Message, { role: "user" }>["content"]
 type UserContent = Extract<LanguageModelV3Message, { role: "user" }>["content"]

+ 1 - 1
packages/core/src/app.ts

@@ -1,4 +1,4 @@
-export * as App from "./app"
+export * as App from "./app.js"
 
 
 import { Context, Layer } from "effect"
 import { Context, Layer } from "effect"
 import { makeGlobalNode } from "@opencode-ai/util/effect/app-node"
 import { makeGlobalNode } from "@opencode-ai/util/effect/app-node"

+ 4 - 4
packages/core/src/bus.ts

@@ -1,12 +1,12 @@
-export * as Bus from "./bus"
+export * as Bus from "./bus.js"
 
 
 import { Cause, Context, DateTime, Effect, Layer, Option, PubSub, Schema, Stream } from "effect"
 import { Cause, Context, DateTime, Effect, Layer, Option, PubSub, Schema, Stream } from "effect"
 import { Event } from "@opencode-ai/schema/event"
 import { Event } from "@opencode-ai/schema/event"
 import type { EventLog } from "@opencode-ai/schema/event-log"
 import type { EventLog } from "@opencode-ai/schema/event-log"
 import { and, asc, eq, gt, lte, sql } from "drizzle-orm"
 import { and, asc, eq, gt, lte, sql } from "drizzle-orm"
-import { Database } from "./database/database"
-import { EventSequenceTable, EventTable } from "./event/sql"
-import { Location } from "./location"
+import { Database } from "./database/database.js"
+import { EventSequenceTable, EventTable } from "./event/sql.js"
+import { Location } from "./location.js"
 import { makeGlobalNode } from "@opencode-ai/util/effect/app-node"
 import { makeGlobalNode } from "@opencode-ai/util/effect/app-node"
 import { isDeepStrictEqual } from "node:util"
 import { isDeepStrictEqual } from "node:util"
 import { Durable } from "@opencode-ai/schema/durable-event-manifest"
 import { Durable } from "@opencode-ai/schema/durable-event-manifest"

+ 6 - 6
packages/core/src/catalog.ts

@@ -1,13 +1,13 @@
-export * as Catalog from "./catalog"
+export * as Catalog from "./catalog.js"
 
 
 import { makeLocationNode } from "@opencode-ai/util/effect/app-node"
 import { makeLocationNode } from "@opencode-ai/util/effect/app-node"
 import { Array, Context, Effect, Layer, Order, pipe } from "effect"
 import { Array, Context, Effect, Layer, Order, pipe } from "effect"
 import { Catalog } from "@opencode-ai/schema/catalog"
 import { Catalog } from "@opencode-ai/schema/catalog"
-import { Model } from "./model"
-import { Provider } from "./provider"
-import { Bus } from "./bus"
-import { State } from "./state"
-import { Integration } from "./integration"
+import { Model } from "./model.js"
+import { Provider } from "./provider.js"
+import { Bus } from "./bus.js"
+import { State } from "./state.js"
+import { Integration } from "./integration.js"
 
 
 export type ProviderRecord = {
 export type ProviderRecord = {
   provider: Provider.MutableInfo
   provider: Provider.MutableInfo

+ 1 - 1
packages/core/src/codemode/catalog.ts

@@ -1,4 +1,4 @@
-export * as CodeModeCatalog from "./catalog"
+export * as CodeModeCatalog from "./catalog.js"
 
 
 import { Schema } from "effect"
 import { Schema } from "effect"
 
 

+ 3 - 3
packages/core/src/codemode/instructions.ts

@@ -1,9 +1,9 @@
-export * as CodeModeInstructions from "./instructions"
+export * as CodeModeInstructions from "./instructions.js"
 
 
 import { searchSignature, toolExpression } from "@opencode-ai/codemode"
 import { searchSignature, toolExpression } from "@opencode-ai/codemode"
 import { Effect, Schema } from "effect"
 import { Effect, Schema } from "effect"
-import { Instructions } from "../instructions/index"
-import { CodeModeCatalog } from "./catalog"
+import { Instructions } from "../instructions/index.js"
+import { CodeModeCatalog } from "./catalog.js"
 
 
 // prettier-ignore
 // prettier-ignore
 const prompt = (hasMoreTools: boolean) => `The Code Mode tool catalog below is ${hasMoreTools ? "partial" : "complete"}.
 const prompt = (hasMoreTools: boolean) => `The Code Mode tool catalog below is ${hasMoreTools ? "partial" : "complete"}.

+ 2 - 2
packages/core/src/codemode/tool.ts

@@ -1,9 +1,9 @@
-export * as CodeModeTool from "./tool"
+export * as CodeModeTool from "./tool.js"
 
 
 import { CodeMode, Tool, toolError } from "@opencode-ai/codemode"
 import { CodeMode, Tool, toolError } from "@opencode-ai/codemode"
 import type { Content, Context, Error, Info, Metadata, Result } from "@opencode-ai/schema/tool"
 import type { Content, Context, Error, Info, Metadata, Result } from "@opencode-ai/schema/tool"
 import { Effect, Ref, Schema, Semaphore } from "effect"
 import { Effect, Ref, Schema, Semaphore } from "effect"
-import { definition } from "../tool/runtime"
+import { definition } from "../tool/runtime.js"
 
 
 const ExecuteFile = Schema.Struct({
 const ExecuteFile = Schema.Struct({
   data: Schema.String,
   data: Schema.String,

+ 7 - 7
packages/core/src/command.ts

@@ -1,16 +1,16 @@
-export * as Command from "./command"
+export * as Command from "./command.js"
 
 
 import { makeLocationNode } from "@opencode-ai/util/effect/app-node"
 import { makeLocationNode } from "@opencode-ai/util/effect/app-node"
 import { Context, Effect, Layer, Schema, Types } from "effect"
 import { Context, Effect, Layer, Schema, Types } from "effect"
 import { Command } from "@opencode-ai/schema/command"
 import { Command } from "@opencode-ai/schema/command"
-import { State } from "./state"
-import { MCP } from "./mcp/index"
-import { Bus } from "./bus"
+import { State } from "./state.js"
+import { MCP } from "./mcp/index.js"
+import { Bus } from "./bus.js"
 import { AppProcess } from "@opencode-ai/util/process"
 import { AppProcess } from "@opencode-ai/util/process"
 import { ChildProcess } from "effect/unstable/process"
 import { ChildProcess } from "effect/unstable/process"
-import { Config } from "./config"
-import { Location } from "./location"
-import { ShellSelect } from "./shell/select"
+import { Config } from "./config.js"
+import { Location } from "./location.js"
+import { ShellSelect } from "./shell/select.js"
 import { Global } from "@opencode-ai/util/global"
 import { Global } from "@opencode-ai/util/global"
 
 
 export const Info = Command.Info
 export const Info = Command.Info

+ 9 - 9
packages/core/src/config.ts

@@ -1,4 +1,4 @@
-export * as Config from "./config"
+export * as Config from "./config.js"
 
 
 import { makeLocationNode } from "@opencode-ai/util/effect/app-node"
 import { makeLocationNode } from "@opencode-ai/util/effect/app-node"
 import path from "path"
 import path from "path"
@@ -16,16 +16,16 @@ import {
   Event,
   Event,
 } from "@opencode-ai/schema/config"
 } from "@opencode-ai/schema/config"
 import { Integration } from "@opencode-ai/schema/integration"
 import { Integration } from "@opencode-ai/schema/integration"
-import { Credential } from "./credential"
-import { Bus } from "./bus"
-import { Watcher } from "./filesystem/watcher"
+import { Credential } from "./credential.js"
+import { Bus } from "./bus.js"
+import { Watcher } from "./filesystem/watcher.js"
 import { FSUtil } from "@opencode-ai/util/fs-util"
 import { FSUtil } from "@opencode-ai/util/fs-util"
 import { Global } from "@opencode-ai/util/global"
 import { Global } from "@opencode-ai/util/global"
-import { Location } from "./location"
-import { AbsolutePath } from "./schema"
-import { ConfigVariable } from "./config/variable"
-import { ConfigNormalize } from "./config/normalize"
-import { WellKnown } from "./wellknown"
+import { Location } from "./location.js"
+import { AbsolutePath } from "./schema.js"
+import { ConfigVariable } from "./config/variable.js"
+import { ConfigNormalize } from "./config/normalize.js"
+import { WellKnown } from "./wellknown.js"
 
 
 export function latest<K extends keyof Info>(entries: readonly Entry[], key: K): Info[K] | undefined {
 export function latest<K extends keyof Info>(entries: readonly Entry[], key: K): Info[K] | undefined {
   return entries
   return entries

+ 1 - 1
packages/core/src/config/markdown.ts

@@ -1,4 +1,4 @@
-export * as ConfigMarkdown from "./markdown"
+export * as ConfigMarkdown from "./markdown.js"
 
 
 import matter from "gray-matter"
 import matter from "gray-matter"
 export function parse(content: string) {
 export function parse(content: string) {

+ 10 - 10
packages/core/src/config/normalize.ts

@@ -1,4 +1,4 @@
-export * as ConfigNormalize from "./normalize"
+export * as ConfigNormalize from "./normalize.js"
 
 
 import { isDeepStrictEqual } from "node:util"
 import { isDeepStrictEqual } from "node:util"
 import { Option, Schema } from "effect"
 import { Option, Schema } from "effect"
@@ -16,15 +16,15 @@ import { ConfigProvider } from "@opencode-ai/schema/config/provider"
 import { ConfigReference } from "@opencode-ai/schema/config/reference"
 import { ConfigReference } from "@opencode-ai/schema/config/reference"
 import { ConfigExperimental } from "@opencode-ai/schema/config/experimental"
 import { ConfigExperimental } from "@opencode-ai/schema/config/experimental"
 import { Permission } from "@opencode-ai/schema/permission"
 import { Permission } from "@opencode-ai/schema/permission"
-import { ConfigAgentV1 } from "../v1/config/agent"
-import { ConfigAttachmentV1 } from "../v1/config/attachment"
-import { ConfigCommandV1 } from "../v1/config/command"
-import { ConfigMCPV1 } from "../v1/config/mcp"
-import { ConfigPermissionV1 } from "../v1/config/permission"
-import { ConfigPluginV1 } from "../v1/config/plugin"
-import { ConfigProviderV1 } from "../v1/config/provider"
-import { ConfigMigrateV1 } from "../v1/config/migrate"
-import { PositiveInt } from "../schema"
+import { ConfigAgentV1 } from "../v1/config/agent.js"
+import { ConfigAttachmentV1 } from "../v1/config/attachment.js"
+import { ConfigCommandV1 } from "../v1/config/command.js"
+import { ConfigMCPV1 } from "../v1/config/mcp.js"
+import { ConfigPermissionV1 } from "../v1/config/permission.js"
+import { ConfigPluginV1 } from "../v1/config/plugin.js"
+import { ConfigProviderV1 } from "../v1/config/provider.js"
+import { ConfigMigrateV1 } from "../v1/config/migrate.js"
+import { PositiveInt } from "../schema.js"
 
 
 export interface Diagnostic {
 export interface Diagnostic {
   readonly kind: "conflict" | "invalid" | "unsupported"
   readonly kind: "conflict" | "invalid" | "unsupported"

+ 10 - 10
packages/core/src/config/plugin/agent.ts

@@ -1,21 +1,21 @@
-export * as ConfigAgentPlugin from "./agent"
+export * as ConfigAgentPlugin from "./agent.js"
 
 
 import { define } from "@opencode-ai/plugin/effect/plugin"
 import { define } from "@opencode-ai/plugin/effect/plugin"
 import { Document, Info, type Entry } from "@opencode-ai/schema/config"
 import { Document, Info, type Entry } from "@opencode-ai/schema/config"
 import { ConfigAgent } from "@opencode-ai/schema/config/agent"
 import { ConfigAgent } from "@opencode-ai/schema/config/agent"
 import path from "path"
 import path from "path"
 import { Effect, Option, Schema, Stream } from "effect"
 import { Effect, Option, Schema, Stream } from "effect"
-import { Agent } from "../../agent"
-import { Config } from "../../config"
-import { ConfigMarkdown } from "../markdown"
+import { Agent } from "../../agent.js"
+import { Config } from "../../config.js"
+import { ConfigMarkdown } from "../markdown.js"
 import { FSUtil } from "@opencode-ai/util/fs-util"
 import { FSUtil } from "@opencode-ai/util/fs-util"
-import { ConfigAgentV1 } from "../../v1/config/agent"
-import { ConfigMigrateV1 } from "../../v1/config/migrate"
+import { ConfigAgentV1 } from "../../v1/config/agent.js"
+import { ConfigMigrateV1 } from "../../v1/config/migrate.js"
 import { Global } from "@opencode-ai/util/global"
 import { Global } from "@opencode-ai/util/global"
-import { Permission } from "../../permission"
-import type { LocationMutation } from "../../location-mutation"
-import type { ReadTool } from "../../tool/plugin/read"
-import type { EditTool } from "../../tool/plugin/edit"
+import { Permission } from "../../permission.js"
+import type { LocationMutation } from "../../location-mutation.js"
+import type { ReadTool } from "../../tool/plugin/read.js"
+import type { EditTool } from "../../tool/plugin/edit.js"
 
 
 const legacySources = [
 const legacySources = [
   { pattern: "{agent,agents}/**/*.md", primary: false },
   { pattern: "{agent,agents}/**/*.md", primary: false },

+ 4 - 4
packages/core/src/config/plugin/command.ts

@@ -1,14 +1,14 @@
-export * as ConfigCommandPlugin from "./command"
+export * as ConfigCommandPlugin from "./command.js"
 
 
 import { define } from "@opencode-ai/plugin/effect/plugin"
 import { define } from "@opencode-ai/plugin/effect/plugin"
 import { Info, type Entry } from "@opencode-ai/schema/config"
 import { Info, type Entry } from "@opencode-ai/schema/config"
 import { ConfigCommand } from "@opencode-ai/schema/config/command"
 import { ConfigCommand } from "@opencode-ai/schema/config/command"
 import path from "path"
 import path from "path"
 import { Effect, Option, Schema, Stream } from "effect"
 import { Effect, Option, Schema, Stream } from "effect"
-import { Command } from "../../command"
-import { Config } from "../../config"
+import { Command } from "../../command.js"
+import { Config } from "../../config.js"
 import { FSUtil } from "@opencode-ai/util/fs-util"
 import { FSUtil } from "@opencode-ai/util/fs-util"
-import { ConfigMarkdown } from "../markdown"
+import { ConfigMarkdown } from "../markdown.js"
 
 
 const decodeCommand = Schema.decodeUnknownOption(ConfigCommand.Info)
 const decodeCommand = Schema.decodeUnknownOption(ConfigCommand.Info)
 
 

+ 6 - 6
packages/core/src/config/plugin/instruction.ts

@@ -1,15 +1,15 @@
-export * as ConfigInstructionPlugin from "./instruction"
+export * as ConfigInstructionPlugin from "./instruction.js"
 
 
 import { define } from "@opencode-ai/plugin/effect/plugin"
 import { define } from "@opencode-ai/plugin/effect/plugin"
 import { FSUtil } from "@opencode-ai/util/fs-util"
 import { FSUtil } from "@opencode-ai/util/fs-util"
 import { Global } from "@opencode-ai/util/global"
 import { Global } from "@opencode-ai/util/global"
 import { dirname, join } from "path"
 import { dirname, join } from "path"
 import { Effect, PubSub, Semaphore, Stream } from "effect"
 import { Effect, PubSub, Semaphore, Stream } from "effect"
-import { Watcher } from "../../filesystem/watcher"
-import { InstructionDiscovery } from "../../instruction-discovery"
-import { Instructions } from "../../instructions/index"
-import { Location } from "../../location"
-import { AbsolutePath } from "../../schema"
+import { Watcher } from "../../filesystem/watcher.js"
+import { InstructionDiscovery } from "../../instruction-discovery.js"
+import { Instructions } from "../../instructions/index.js"
+import { Location } from "../../location.js"
+import { AbsolutePath } from "../../schema.js"
 
 
 type Loaded =
 type Loaded =
   | { readonly type: "available"; readonly files: InstructionDiscovery.File[] }
   | { readonly type: "available"; readonly files: InstructionDiscovery.File[] }

+ 3 - 3
packages/core/src/config/plugin/policy.ts

@@ -1,10 +1,10 @@
-export * as ConfigPolicyPlugin from "./policy"
+export * as ConfigPolicyPlugin from "./policy.js"
 
 
 import { define } from "@opencode-ai/plugin/effect/plugin"
 import { define } from "@opencode-ai/plugin/effect/plugin"
 import { Document } from "@opencode-ai/schema/config"
 import { Document } from "@opencode-ai/schema/config"
 import { Effect, Stream } from "effect"
 import { Effect, Stream } from "effect"
-import { Config } from "../../config"
-import { Wildcard } from "../../util/wildcard"
+import { Config } from "../../config.js"
+import { Wildcard } from "../../util/wildcard.js"
 
 
 export const Plugin = define({
 export const Plugin = define({
   id: "opencode.config.policy",
   id: "opencode.config.policy",

+ 3 - 3
packages/core/src/config/plugin/provider.ts

@@ -1,11 +1,11 @@
-export * as ConfigProviderPlugin from "./provider"
+export * as ConfigProviderPlugin from "./provider.js"
 
 
 import { define } from "@opencode-ai/plugin/effect/plugin"
 import { define } from "@opencode-ai/plugin/effect/plugin"
 import { Document, type Entry } from "@opencode-ai/schema/config"
 import { Document, type Entry } from "@opencode-ai/schema/config"
 import { Money } from "@opencode-ai/schema/money"
 import { Money } from "@opencode-ai/schema/money"
 import { Effect, Stream } from "effect"
 import { Effect, Stream } from "effect"
-import { Config } from "../../config"
-import { Provider } from "../../provider"
+import { Config } from "../../config.js"
+import { Provider } from "../../provider.js"
 
 
 export const Plugin = define({
 export const Plugin = define({
   id: "opencode.config.provider",
   id: "opencode.config.provider",

+ 5 - 5
packages/core/src/config/plugin/reference.ts

@@ -1,15 +1,15 @@
-export * as ConfigReferencePlugin from "./reference"
+export * as ConfigReferencePlugin from "./reference.js"
 
 
 import { define } from "@opencode-ai/plugin/effect/plugin"
 import { define } from "@opencode-ai/plugin/effect/plugin"
 import { Document } from "@opencode-ai/schema/config"
 import { Document } from "@opencode-ai/schema/config"
 import { ConfigReference } from "@opencode-ai/schema/config/reference"
 import { ConfigReference } from "@opencode-ai/schema/config/reference"
 import path from "path"
 import path from "path"
 import { Effect, Stream } from "effect"
 import { Effect, Stream } from "effect"
-import { Config } from "../../config"
-import { Reference } from "../../reference"
-import { AbsolutePath } from "../../schema"
+import { Config } from "../../config.js"
+import { Reference } from "../../reference.js"
+import { AbsolutePath } from "../../schema.js"
 import { Global } from "@opencode-ai/util/global"
 import { Global } from "@opencode-ai/util/global"
-import { Location } from "../../location"
+import { Location } from "../../location.js"
 
 
 export const Plugin = define({
 export const Plugin = define({
   id: "opencode.config.reference",
   id: "opencode.config.reference",

+ 4 - 4
packages/core/src/config/plugin/skill-file.ts

@@ -1,10 +1,10 @@
-export * as SkillFile from "./skill-file"
+export * as SkillFile from "./skill-file.js"
 
 
 import path from "path"
 import path from "path"
 import { Result, Schema, type SchemaIssue, SchemaParser } from "effect"
 import { Result, Schema, type SchemaIssue, SchemaParser } from "effect"
-import { ConfigMarkdown } from "../markdown"
-import { AbsolutePath } from "../../schema"
-import { Skill } from "../../skill"
+import { ConfigMarkdown } from "../markdown.js"
+import { AbsolutePath } from "../../schema.js"
+import { Skill } from "../../skill.js"
 
 
 const Frontmatter = Schema.Struct({
 const Frontmatter = Schema.Struct({
   name: Schema.String.pipe(Schema.optional),
   name: Schema.String.pipe(Schema.optional),

+ 8 - 8
packages/core/src/config/plugin/skill.ts

@@ -1,4 +1,4 @@
-export * as ConfigSkillPlugin from "./skill"
+export * as ConfigSkillPlugin from "./skill.js"
 
 
 import { define } from "@opencode-ai/plugin/effect/plugin"
 import { define } from "@opencode-ai/plugin/effect/plugin"
 import type { Entry } from "@opencode-ai/schema/config"
 import type { Entry } from "@opencode-ai/schema/config"
@@ -6,13 +6,13 @@ import { FSUtil } from "@opencode-ai/util/fs-util"
 import { Global } from "@opencode-ai/util/global"
 import { Global } from "@opencode-ai/util/global"
 import path from "path"
 import path from "path"
 import { Effect, FiberMap, PubSub, Semaphore, Stream } from "effect"
 import { Effect, FiberMap, PubSub, Semaphore, Stream } from "effect"
-import { Config } from "../../config"
-import { Watcher } from "../../filesystem/watcher"
-import { Location } from "../../location"
-import { AbsolutePath } from "../../schema"
-import { Skill } from "../../skill"
-import { SkillDiscovery } from "../../skill/discovery"
-import { SkillFile } from "./skill-file"
+import { Config } from "../../config.js"
+import { Watcher } from "../../filesystem/watcher.js"
+import { Location } from "../../location.js"
+import { AbsolutePath } from "../../schema.js"
+import { Skill } from "../../skill.js"
+import { SkillDiscovery } from "../../skill/discovery.js"
+import { SkillFile } from "./skill-file.js"
 
 
 type Source = Skill.DirectorySource | Skill.UrlSource
 type Source = Skill.DirectorySource | Skill.UrlSource
 
 

+ 4 - 4
packages/core/src/config/plugin/source.ts

@@ -1,4 +1,4 @@
-export * as ConfigPluginSource from "./source"
+export * as ConfigPluginSource from "./source.js"
 
 
 import { Directory, Document, type Entry } from "@opencode-ai/schema/config"
 import { Directory, Document, type Entry } from "@opencode-ai/schema/config"
 import { ConfigPlugin } from "@opencode-ai/schema/config/plugin"
 import { ConfigPlugin } from "@opencode-ai/schema/config/plugin"
@@ -7,9 +7,9 @@ import { makeLocationNode } from "@opencode-ai/util/effect/app-node"
 import { Context, Effect, Layer, Option, Predicate, PubSub, Schema, Scope, Stream } from "effect"
 import { Context, Effect, Layer, Option, Predicate, PubSub, Schema, Scope, Stream } from "effect"
 import path from "path"
 import path from "path"
 import { fileURLToPath } from "url"
 import { fileURLToPath } from "url"
-import { Config } from "../../config"
-import { Watcher } from "../../filesystem/watcher"
-import { Location } from "../../location"
+import { Config } from "../../config.js"
+import { Watcher } from "../../filesystem/watcher.js"
+import { Location } from "../../location.js"
 
 
 export type Operation =
 export type Operation =
   | {
   | {

+ 2 - 2
packages/core/src/config/plugin/websearch.ts

@@ -1,8 +1,8 @@
-export * as ConfigWebSearchPlugin from "./websearch"
+export * as ConfigWebSearchPlugin from "./websearch.js"
 
 
 import { define } from "@opencode-ai/plugin/effect/plugin"
 import { define } from "@opencode-ai/plugin/effect/plugin"
 import { Effect, Stream } from "effect"
 import { Effect, Stream } from "effect"
-import { Config } from "../../config"
+import { Config } from "../../config.js"
 
 
 export const Plugin = define({
 export const Plugin = define({
   id: "opencode.config.websearch",
   id: "opencode.config.websearch",

+ 2 - 2
packages/core/src/config/variable.ts

@@ -1,10 +1,10 @@
-export * as ConfigVariable from "./variable"
+export * as ConfigVariable from "./variable.js"
 
 
 import os from "os"
 import os from "os"
 import path from "path"
 import path from "path"
 import { Effect } from "effect"
 import { Effect } from "effect"
 import { FSUtil } from "@opencode-ai/util/fs-util"
 import { FSUtil } from "@opencode-ai/util/fs-util"
-import { InvalidError } from "../v1/config/error"
+import { InvalidError } from "../v1/config/error.js"
 
 
 type ParseSource =
 type ParseSource =
   | {
   | {

+ 3 - 3
packages/core/src/credential.ts

@@ -1,12 +1,12 @@
-export * as Credential from "./credential"
+export * as Credential from "./credential.js"
 
 
 import { asc, eq } from "drizzle-orm"
 import { asc, eq } from "drizzle-orm"
 import { Context, Effect, Layer, Schema } from "effect"
 import { Context, Effect, Layer, Schema } from "effect"
 import { Credential } from "@opencode-ai/schema/credential"
 import { Credential } from "@opencode-ai/schema/credential"
 import { Integration } from "@opencode-ai/schema/integration"
 import { Integration } from "@opencode-ai/schema/integration"
-import { Database } from "./database/database"
+import { Database } from "./database/database.js"
 import { makeGlobalNode } from "@opencode-ai/util/effect/app-node"
 import { makeGlobalNode } from "@opencode-ai/util/effect/app-node"
-import { CredentialTable } from "./credential/sql"
+import { CredentialTable } from "./credential/sql.js"
 
 
 export const ID = Credential.ID
 export const ID = Credential.ID
 export type ID = Credential.ID
 export type ID = Credential.ID

+ 2 - 2
packages/core/src/credential/sql.ts

@@ -1,6 +1,6 @@
 import { integer, sqliteTable, text } from "drizzle-orm/sqlite-core"
 import { integer, sqliteTable, text } from "drizzle-orm/sqlite-core"
-import { Timestamps } from "../database/schema.sql"
-import type { Credential } from "../credential"
+import { Timestamps } from "../database/schema.sql.js"
+import type { Credential } from "../credential.js"
 
 
 export const CredentialTable = sqliteTable("credential", {
 export const CredentialTable = sqliteTable("credential", {
   id: text().$type<Credential.ID>().primaryKey(),
   id: text().$type<Credential.ID>().primaryKey(),

+ 2 - 2
packages/core/src/database/database.ts

@@ -1,4 +1,4 @@
-export * as Database from "./database"
+export * as Database from "./database.js"
 
 
 import { EffectDrizzleSqlite } from "@opencode-ai/effect-drizzle-sqlite"
 import { EffectDrizzleSqlite } from "@opencode-ai/effect-drizzle-sqlite"
 import { sqliteLayer, supportsForeignKeyToggle, supportsTuningPragmas } from "#sqlite"
 import { sqliteLayer, supportsForeignKeyToggle, supportsTuningPragmas } from "#sqlite"
@@ -6,7 +6,7 @@ import { Context, Effect, Layer, Schema } from "effect"
 import type { SqlClient } from "effect/unstable/sql"
 import type { SqlClient } from "effect/unstable/sql"
 import { Global } from "@opencode-ai/util/global"
 import { Global } from "@opencode-ai/util/global"
 import { isAbsolute, join } from "path"
 import { isAbsolute, join } from "path"
-import { DatabaseMigration } from "./migration"
+import { DatabaseMigration } from "./migration.js"
 import { makeGlobalNode } from "@opencode-ai/util/effect/app-node"
 import { makeGlobalNode } from "@opencode-ai/util/effect/app-node"
 
 
 const makeDatabase = EffectDrizzleSqlite.makeWithDefaults()
 const makeDatabase = EffectDrizzleSqlite.makeWithDefaults()

+ 43 - 43
packages/core/src/database/migration.gen.ts

@@ -1,46 +1,46 @@
-import type { DatabaseMigration } from "./migration"
-import m00 from "./migration/20260127222353_familiar_lady_ursula"
-import m01 from "./migration/20260211171708_add_project_commands"
-import m02 from "./migration/20260213144116_wakeful_the_professor"
-import m03 from "./migration/20260225215848_workspace"
-import m04 from "./migration/20260227213759_add_session_workspace_id"
-import m05 from "./migration/20260228203230_blue_harpoon"
-import m06 from "./migration/20260303231226_add_workspace_fields"
-import m07 from "./migration/20260309230000_move_org_to_state"
-import m08 from "./migration/20260312043431_session_message_cursor"
-import m09 from "./migration/20260323234822_events"
-import m10 from "./migration/20260410174513_workspace-name"
-import m11 from "./migration/20260413175956_chief_energizer"
-import m12 from "./migration/20260423070820_add_icon_url_override"
-import m13 from "./migration/20260427172553_slow_nightmare"
-import m14 from "./migration/20260428004200_add_session_path"
-import m15 from "./migration/20260501142318_next_venus"
-import m16 from "./migration/20260504145000_add_sync_owner"
-import m17 from "./migration/20260507164347_add_workspace_time"
-import m18 from "./migration/20260510033149_session_usage"
-import m19 from "./migration/20260511000411_data_migration_state"
-import m20 from "./migration/20260511173437_session-metadata"
-import m21 from "./migration/20260601010001_normalize_storage_paths"
-import m22 from "./migration/20260601202201_amazing_prowler"
-import m23 from "./migration/20260602002951_lowly_union_jack"
-import m24 from "./migration/20260602182828_add_project_directories"
-import m25 from "./migration/20260603001617_session_message_projection_indexes"
-import m26 from "./migration/20260603040000_session_message_projection_order"
-import m27 from "./migration/20260603141458_session_input_inbox"
-import m28 from "./migration/20260603160727_jittery_ezekiel_stane"
-import m29 from "./migration/20260604172448_event_sourced_session_input"
-import m30 from "./migration/20260605003541_add_session_context_snapshot"
-import m31 from "./migration/20260605042240_add_context_epoch_agent"
-import m32 from "./migration/20260611035744_credential"
-import m33 from "./migration/20260611192811_lush_chimera"
-import m34 from "./migration/20260612174303_project_dir_strategy"
-import m35 from "./migration/20260622142730_simplify_session_context_epoch"
-import m36 from "./migration/20260622170816_reset_v2_session_state"
-import m37 from "./migration/20260622202450_simplify_session_input"
-import m38 from "./migration/20260804233008_loose_psylocke"
-import m39 from "./migration/20260805200742_import_legacy_credentials"
-import m40 from "./migration/20260808023530_workspace_domain"
-import m41 from "./migration/20260811161259_execution_claim_attempts"
+import type { DatabaseMigration } from "./migration.js"
+import m00 from "./migration/20260127222353_familiar_lady_ursula.js"
+import m01 from "./migration/20260211171708_add_project_commands.js"
+import m02 from "./migration/20260213144116_wakeful_the_professor.js"
+import m03 from "./migration/20260225215848_workspace.js"
+import m04 from "./migration/20260227213759_add_session_workspace_id.js"
+import m05 from "./migration/20260228203230_blue_harpoon.js"
+import m06 from "./migration/20260303231226_add_workspace_fields.js"
+import m07 from "./migration/20260309230000_move_org_to_state.js"
+import m08 from "./migration/20260312043431_session_message_cursor.js"
+import m09 from "./migration/20260323234822_events.js"
+import m10 from "./migration/20260410174513_workspace-name.js"
+import m11 from "./migration/20260413175956_chief_energizer.js"
+import m12 from "./migration/20260423070820_add_icon_url_override.js"
+import m13 from "./migration/20260427172553_slow_nightmare.js"
+import m14 from "./migration/20260428004200_add_session_path.js"
+import m15 from "./migration/20260501142318_next_venus.js"
+import m16 from "./migration/20260504145000_add_sync_owner.js"
+import m17 from "./migration/20260507164347_add_workspace_time.js"
+import m18 from "./migration/20260510033149_session_usage.js"
+import m19 from "./migration/20260511000411_data_migration_state.js"
+import m20 from "./migration/20260511173437_session-metadata.js"
+import m21 from "./migration/20260601010001_normalize_storage_paths.js"
+import m22 from "./migration/20260601202201_amazing_prowler.js"
+import m23 from "./migration/20260602002951_lowly_union_jack.js"
+import m24 from "./migration/20260602182828_add_project_directories.js"
+import m25 from "./migration/20260603001617_session_message_projection_indexes.js"
+import m26 from "./migration/20260603040000_session_message_projection_order.js"
+import m27 from "./migration/20260603141458_session_input_inbox.js"
+import m28 from "./migration/20260603160727_jittery_ezekiel_stane.js"
+import m29 from "./migration/20260604172448_event_sourced_session_input.js"
+import m30 from "./migration/20260605003541_add_session_context_snapshot.js"
+import m31 from "./migration/20260605042240_add_context_epoch_agent.js"
+import m32 from "./migration/20260611035744_credential.js"
+import m33 from "./migration/20260611192811_lush_chimera.js"
+import m34 from "./migration/20260612174303_project_dir_strategy.js"
+import m35 from "./migration/20260622142730_simplify_session_context_epoch.js"
+import m36 from "./migration/20260622170816_reset_v2_session_state.js"
+import m37 from "./migration/20260622202450_simplify_session_input.js"
+import m38 from "./migration/20260804233008_loose_psylocke.js"
+import m39 from "./migration/20260805200742_import_legacy_credentials.js"
+import m40 from "./migration/20260808023530_workspace_domain.js"
+import m41 from "./migration/20260811161259_execution_claim_attempts.js"
 
 
 export const migrations = [
 export const migrations = [
   m00,
   m00,

+ 3 - 3
packages/core/src/database/migration.ts

@@ -1,11 +1,11 @@
-export * as DatabaseMigration from "./migration"
+export * as DatabaseMigration from "./migration.js"
 
 
 import { sql } from "drizzle-orm"
 import { sql } from "drizzle-orm"
 import { Effect, Semaphore } from "effect"
 import { Effect, Semaphore } from "effect"
 import { supportsForeignKeyToggle } from "#sqlite"
 import { supportsForeignKeyToggle } from "#sqlite"
 import type { EffectDrizzleSqlite } from "@opencode-ai/effect-drizzle-sqlite"
 import type { EffectDrizzleSqlite } from "@opencode-ai/effect-drizzle-sqlite"
-import { migrations } from "./migration.gen"
-import schema from "./schema.gen"
+import { migrations } from "./migration.gen.js"
+import schema from "./schema.gen.js"
 import { Global } from "@opencode-ai/util/global"
 import { Global } from "@opencode-ai/util/global"
 
 
 type Database = EffectDrizzleSqlite.EffectSQLiteDatabase
 type Database = EffectDrizzleSqlite.EffectSQLiteDatabase

+ 1 - 1
packages/core/src/database/migration/20260127222353_familiar_lady_ursula.ts

@@ -1,5 +1,5 @@
 import { Effect } from "effect"
 import { Effect } from "effect"
-import type { DatabaseMigration } from "../migration"
+import type { DatabaseMigration } from "../migration.js"
 
 
 const migration: DatabaseMigration.Migration = {
 const migration: DatabaseMigration.Migration = {
   id: "20260127222353_familiar_lady_ursula",
   id: "20260127222353_familiar_lady_ursula",

+ 1 - 1
packages/core/src/database/migration/20260211171708_add_project_commands.ts

@@ -1,5 +1,5 @@
 import { Effect } from "effect"
 import { Effect } from "effect"
-import type { DatabaseMigration } from "../migration"
+import type { DatabaseMigration } from "../migration.js"
 
 
 const migration: DatabaseMigration.Migration = {
 const migration: DatabaseMigration.Migration = {
   id: "20260211171708_add_project_commands",
   id: "20260211171708_add_project_commands",

+ 1 - 1
packages/core/src/database/migration/20260213144116_wakeful_the_professor.ts

@@ -1,5 +1,5 @@
 import { Effect } from "effect"
 import { Effect } from "effect"
-import type { DatabaseMigration } from "../migration"
+import type { DatabaseMigration } from "../migration.js"
 
 
 const migration: DatabaseMigration.Migration = {
 const migration: DatabaseMigration.Migration = {
   id: "20260213144116_wakeful_the_professor",
   id: "20260213144116_wakeful_the_professor",

+ 1 - 1
packages/core/src/database/migration/20260225215848_workspace.ts

@@ -1,5 +1,5 @@
 import { Effect } from "effect"
 import { Effect } from "effect"
-import type { DatabaseMigration } from "../migration"
+import type { DatabaseMigration } from "../migration.js"
 
 
 const migration: DatabaseMigration.Migration = {
 const migration: DatabaseMigration.Migration = {
   id: "20260225215848_workspace",
   id: "20260225215848_workspace",

+ 1 - 1
packages/core/src/database/migration/20260227213759_add_session_workspace_id.ts

@@ -1,5 +1,5 @@
 import { Effect } from "effect"
 import { Effect } from "effect"
-import type { DatabaseMigration } from "../migration"
+import type { DatabaseMigration } from "../migration.js"
 
 
 const migration: DatabaseMigration.Migration = {
 const migration: DatabaseMigration.Migration = {
   id: "20260227213759_add_session_workspace_id",
   id: "20260227213759_add_session_workspace_id",

+ 1 - 1
packages/core/src/database/migration/20260228203230_blue_harpoon.ts

@@ -1,5 +1,5 @@
 import { Effect } from "effect"
 import { Effect } from "effect"
-import type { DatabaseMigration } from "../migration"
+import type { DatabaseMigration } from "../migration.js"
 
 
 const migration: DatabaseMigration.Migration = {
 const migration: DatabaseMigration.Migration = {
   id: "20260228203230_blue_harpoon",
   id: "20260228203230_blue_harpoon",

+ 1 - 1
packages/core/src/database/migration/20260303231226_add_workspace_fields.ts

@@ -1,5 +1,5 @@
 import { Effect } from "effect"
 import { Effect } from "effect"
-import type { DatabaseMigration } from "../migration"
+import type { DatabaseMigration } from "../migration.js"
 
 
 const migration: DatabaseMigration.Migration = {
 const migration: DatabaseMigration.Migration = {
   id: "20260303231226_add_workspace_fields",
   id: "20260303231226_add_workspace_fields",

+ 1 - 1
packages/core/src/database/migration/20260309230000_move_org_to_state.ts

@@ -1,5 +1,5 @@
 import { Effect } from "effect"
 import { Effect } from "effect"
-import type { DatabaseMigration } from "../migration"
+import type { DatabaseMigration } from "../migration.js"
 
 
 const migration: DatabaseMigration.Migration = {
 const migration: DatabaseMigration.Migration = {
   id: "20260309230000_move_org_to_state",
   id: "20260309230000_move_org_to_state",

+ 1 - 1
packages/core/src/database/migration/20260312043431_session_message_cursor.ts

@@ -1,5 +1,5 @@
 import { Effect } from "effect"
 import { Effect } from "effect"
-import type { DatabaseMigration } from "../migration"
+import type { DatabaseMigration } from "../migration.js"
 
 
 const migration: DatabaseMigration.Migration = {
 const migration: DatabaseMigration.Migration = {
   id: "20260312043431_session_message_cursor",
   id: "20260312043431_session_message_cursor",

+ 1 - 1
packages/core/src/database/migration/20260323234822_events.ts

@@ -1,5 +1,5 @@
 import { Effect } from "effect"
 import { Effect } from "effect"
-import type { DatabaseMigration } from "../migration"
+import type { DatabaseMigration } from "../migration.js"
 
 
 const migration: DatabaseMigration.Migration = {
 const migration: DatabaseMigration.Migration = {
   id: "20260323234822_events",
   id: "20260323234822_events",

+ 1 - 1
packages/core/src/database/migration/20260410174513_workspace-name.ts

@@ -1,5 +1,5 @@
 import { Effect } from "effect"
 import { Effect } from "effect"
-import type { DatabaseMigration } from "../migration"
+import type { DatabaseMigration } from "../migration.js"
 
 
 const migration: DatabaseMigration.Migration = {
 const migration: DatabaseMigration.Migration = {
   id: "20260410174513_workspace-name",
   id: "20260410174513_workspace-name",

+ 1 - 1
packages/core/src/database/migration/20260413175956_chief_energizer.ts

@@ -1,5 +1,5 @@
 import { Effect } from "effect"
 import { Effect } from "effect"
-import type { DatabaseMigration } from "../migration"
+import type { DatabaseMigration } from "../migration.js"
 
 
 const migration: DatabaseMigration.Migration = {
 const migration: DatabaseMigration.Migration = {
   id: "20260413175956_chief_energizer",
   id: "20260413175956_chief_energizer",

+ 1 - 1
packages/core/src/database/migration/20260423070820_add_icon_url_override.ts

@@ -1,5 +1,5 @@
 import { Effect } from "effect"
 import { Effect } from "effect"
-import type { DatabaseMigration } from "../migration"
+import type { DatabaseMigration } from "../migration.js"
 
 
 const migration: DatabaseMigration.Migration = {
 const migration: DatabaseMigration.Migration = {
   id: "20260423070820_add_icon_url_override",
   id: "20260423070820_add_icon_url_override",

+ 1 - 1
packages/core/src/database/migration/20260427172553_slow_nightmare.ts

@@ -1,5 +1,5 @@
 import { Effect } from "effect"
 import { Effect } from "effect"
-import type { DatabaseMigration } from "../migration"
+import type { DatabaseMigration } from "../migration.js"
 
 
 const migration: DatabaseMigration.Migration = {
 const migration: DatabaseMigration.Migration = {
   id: "20260427172553_slow_nightmare",
   id: "20260427172553_slow_nightmare",

+ 1 - 1
packages/core/src/database/migration/20260428004200_add_session_path.ts

@@ -1,5 +1,5 @@
 import { Effect } from "effect"
 import { Effect } from "effect"
-import type { DatabaseMigration } from "../migration"
+import type { DatabaseMigration } from "../migration.js"
 
 
 const migration: DatabaseMigration.Migration = {
 const migration: DatabaseMigration.Migration = {
   id: "20260428004200_add_session_path",
   id: "20260428004200_add_session_path",

+ 1 - 1
packages/core/src/database/migration/20260501142318_next_venus.ts

@@ -1,5 +1,5 @@
 import { Effect } from "effect"
 import { Effect } from "effect"
-import type { DatabaseMigration } from "../migration"
+import type { DatabaseMigration } from "../migration.js"
 
 
 const migration: DatabaseMigration.Migration = {
 const migration: DatabaseMigration.Migration = {
   id: "20260501142318_next_venus",
   id: "20260501142318_next_venus",

+ 1 - 1
packages/core/src/database/migration/20260504145000_add_sync_owner.ts

@@ -1,5 +1,5 @@
 import { Effect } from "effect"
 import { Effect } from "effect"
-import type { DatabaseMigration } from "../migration"
+import type { DatabaseMigration } from "../migration.js"
 
 
 const migration: DatabaseMigration.Migration = {
 const migration: DatabaseMigration.Migration = {
   id: "20260504145000_add_sync_owner",
   id: "20260504145000_add_sync_owner",

+ 1 - 1
packages/core/src/database/migration/20260507164347_add_workspace_time.ts

@@ -1,5 +1,5 @@
 import { Effect } from "effect"
 import { Effect } from "effect"
-import type { DatabaseMigration } from "../migration"
+import type { DatabaseMigration } from "../migration.js"
 
 
 const migration: DatabaseMigration.Migration = {
 const migration: DatabaseMigration.Migration = {
   id: "20260507164347_add_workspace_time",
   id: "20260507164347_add_workspace_time",

+ 1 - 1
packages/core/src/database/migration/20260510033149_session_usage.ts

@@ -1,5 +1,5 @@
 import { Effect } from "effect"
 import { Effect } from "effect"
-import type { DatabaseMigration } from "../migration"
+import type { DatabaseMigration } from "../migration.js"
 
 
 const migration: DatabaseMigration.Migration = {
 const migration: DatabaseMigration.Migration = {
   id: "20260510033149_session_usage",
   id: "20260510033149_session_usage",

+ 1 - 1
packages/core/src/database/migration/20260511000411_data_migration_state.ts

@@ -1,5 +1,5 @@
 import { Effect } from "effect"
 import { Effect } from "effect"
-import type { DatabaseMigration } from "../migration"
+import type { DatabaseMigration } from "../migration.js"
 
 
 const migration: DatabaseMigration.Migration = {
 const migration: DatabaseMigration.Migration = {
   id: "20260511000411_data_migration_state",
   id: "20260511000411_data_migration_state",

+ 1 - 1
packages/core/src/database/migration/20260511173437_session-metadata.ts

@@ -1,5 +1,5 @@
 import { Effect } from "effect"
 import { Effect } from "effect"
-import type { DatabaseMigration } from "../migration"
+import type { DatabaseMigration } from "../migration.js"
 
 
 const migration: DatabaseMigration.Migration = {
 const migration: DatabaseMigration.Migration = {
   id: "20260511173437_session-metadata",
   id: "20260511173437_session-metadata",

+ 1 - 1
packages/core/src/database/migration/20260601010001_normalize_storage_paths.ts

@@ -1,5 +1,5 @@
 import { Effect } from "effect"
 import { Effect } from "effect"
-import type { DatabaseMigration } from "../migration"
+import type { DatabaseMigration } from "../migration.js"
 
 
 const migration: DatabaseMigration.Migration = {
 const migration: DatabaseMigration.Migration = {
   id: "20260601010001_normalize_storage_paths",
   id: "20260601010001_normalize_storage_paths",

+ 1 - 1
packages/core/src/database/migration/20260601202201_amazing_prowler.ts

@@ -1,5 +1,5 @@
 import { Effect } from "effect"
 import { Effect } from "effect"
-import type { DatabaseMigration } from "../migration"
+import type { DatabaseMigration } from "../migration.js"
 
 
 const migration: DatabaseMigration.Migration = {
 const migration: DatabaseMigration.Migration = {
   id: "20260601202201_amazing_prowler",
   id: "20260601202201_amazing_prowler",

+ 1 - 1
packages/core/src/database/migration/20260602002951_lowly_union_jack.ts

@@ -1,5 +1,5 @@
 import { Effect } from "effect"
 import { Effect } from "effect"
-import type { DatabaseMigration } from "../migration"
+import type { DatabaseMigration } from "../migration.js"
 
 
 const migration: DatabaseMigration.Migration = {
 const migration: DatabaseMigration.Migration = {
   id: "20260602002951_lowly_union_jack",
   id: "20260602002951_lowly_union_jack",

+ 1 - 1
packages/core/src/database/migration/20260602182828_add_project_directories.ts

@@ -1,5 +1,5 @@
 import { Effect } from "effect"
 import { Effect } from "effect"
-import type { DatabaseMigration } from "../migration"
+import type { DatabaseMigration } from "../migration.js"
 
 
 const migration: DatabaseMigration.Migration = {
 const migration: DatabaseMigration.Migration = {
   id: "20260602182828_add_project_directories",
   id: "20260602182828_add_project_directories",

+ 1 - 1
packages/core/src/database/migration/20260603001617_session_message_projection_indexes.ts

@@ -1,5 +1,5 @@
 import { Effect } from "effect"
 import { Effect } from "effect"
-import type { DatabaseMigration } from "../migration"
+import type { DatabaseMigration } from "../migration.js"
 
 
 const migration: DatabaseMigration.Migration = {
 const migration: DatabaseMigration.Migration = {
   id: "20260603001617_session_message_projection_indexes",
   id: "20260603001617_session_message_projection_indexes",

+ 1 - 1
packages/core/src/database/migration/20260603040000_session_message_projection_order.ts

@@ -1,5 +1,5 @@
 import { Effect } from "effect"
 import { Effect } from "effect"
-import type { DatabaseMigration } from "../migration"
+import type { DatabaseMigration } from "../migration.js"
 
 
 const migration: DatabaseMigration.Migration = {
 const migration: DatabaseMigration.Migration = {
   id: "20260603040000_session_message_projection_order",
   id: "20260603040000_session_message_projection_order",

+ 1 - 1
packages/core/src/database/migration/20260603141458_session_input_inbox.ts

@@ -1,5 +1,5 @@
 import { Effect } from "effect"
 import { Effect } from "effect"
-import type { DatabaseMigration } from "../migration"
+import type { DatabaseMigration } from "../migration.js"
 
 
 const migration: DatabaseMigration.Migration = {
 const migration: DatabaseMigration.Migration = {
   id: "20260603141458_session_input_inbox",
   id: "20260603141458_session_input_inbox",

+ 1 - 1
packages/core/src/database/migration/20260603160727_jittery_ezekiel_stane.ts

@@ -1,5 +1,5 @@
 import { Effect } from "effect"
 import { Effect } from "effect"
-import type { DatabaseMigration } from "../migration"
+import type { DatabaseMigration } from "../migration.js"
 
 
 const migration: DatabaseMigration.Migration = {
 const migration: DatabaseMigration.Migration = {
   id: "20260603160727_jittery_ezekiel_stane",
   id: "20260603160727_jittery_ezekiel_stane",

+ 1 - 1
packages/core/src/database/migration/20260604172448_event_sourced_session_input.ts

@@ -1,5 +1,5 @@
 import { Effect } from "effect"
 import { Effect } from "effect"
-import type { DatabaseMigration } from "../migration"
+import type { DatabaseMigration } from "../migration.js"
 
 
 const migration: DatabaseMigration.Migration = {
 const migration: DatabaseMigration.Migration = {
   id: "20260604172448_event_sourced_session_input",
   id: "20260604172448_event_sourced_session_input",

+ 1 - 1
packages/core/src/database/migration/20260605003541_add_session_context_snapshot.ts

@@ -1,5 +1,5 @@
 import { Effect } from "effect"
 import { Effect } from "effect"
-import type { DatabaseMigration } from "../migration"
+import type { DatabaseMigration } from "../migration.js"
 
 
 const migration: DatabaseMigration.Migration = {
 const migration: DatabaseMigration.Migration = {
   id: "20260605003541_add_session_context_snapshot",
   id: "20260605003541_add_session_context_snapshot",

+ 1 - 1
packages/core/src/database/migration/20260605042240_add_context_epoch_agent.ts

@@ -1,5 +1,5 @@
 import { Effect } from "effect"
 import { Effect } from "effect"
-import type { DatabaseMigration } from "../migration"
+import type { DatabaseMigration } from "../migration.js"
 
 
 const migration: DatabaseMigration.Migration = {
 const migration: DatabaseMigration.Migration = {
   id: "20260605042240_add_context_epoch_agent",
   id: "20260605042240_add_context_epoch_agent",

+ 1 - 1
packages/core/src/database/migration/20260611035744_credential.ts

@@ -1,5 +1,5 @@
 import { Effect } from "effect"
 import { Effect } from "effect"
-import type { DatabaseMigration } from "../migration"
+import type { DatabaseMigration } from "../migration.js"
 
 
 const migration: DatabaseMigration.Migration = {
 const migration: DatabaseMigration.Migration = {
   id: "20260611035744_credential",
   id: "20260611035744_credential",

+ 1 - 1
packages/core/src/database/migration/20260611192811_lush_chimera.ts

@@ -1,5 +1,5 @@
 import { Effect } from "effect"
 import { Effect } from "effect"
-import type { DatabaseMigration } from "../migration"
+import type { DatabaseMigration } from "../migration.js"
 
 
 const migration: DatabaseMigration.Migration = {
 const migration: DatabaseMigration.Migration = {
   id: "20260611192811_lush_chimera",
   id: "20260611192811_lush_chimera",

+ 1 - 1
packages/core/src/database/migration/20260612174303_project_dir_strategy.ts

@@ -1,5 +1,5 @@
 import { Effect } from "effect"
 import { Effect } from "effect"
-import type { DatabaseMigration } from "../migration"
+import type { DatabaseMigration } from "../migration.js"
 
 
 const migration: DatabaseMigration.Migration = {
 const migration: DatabaseMigration.Migration = {
   id: "20260612174303_project_dir_strategy",
   id: "20260612174303_project_dir_strategy",

+ 1 - 1
packages/core/src/database/migration/20260622142730_simplify_session_context_epoch.ts

@@ -1,5 +1,5 @@
 import { Effect } from "effect"
 import { Effect } from "effect"
-import type { DatabaseMigration } from "../migration"
+import type { DatabaseMigration } from "../migration.js"
 
 
 const migration: DatabaseMigration.Migration = {
 const migration: DatabaseMigration.Migration = {
   id: "20260622142730_simplify_session_context_epoch",
   id: "20260622142730_simplify_session_context_epoch",

+ 1 - 1
packages/core/src/database/migration/20260622170816_reset_v2_session_state.ts

@@ -1,5 +1,5 @@
 import { Effect } from "effect"
 import { Effect } from "effect"
-import type { DatabaseMigration } from "../migration"
+import type { DatabaseMigration } from "../migration.js"
 
 
 const migration: DatabaseMigration.Migration = {
 const migration: DatabaseMigration.Migration = {
   id: "20260622170816_reset_v2_session_state",
   id: "20260622170816_reset_v2_session_state",

+ 1 - 1
packages/core/src/database/migration/20260622202450_simplify_session_input.ts

@@ -1,5 +1,5 @@
 import { Effect } from "effect"
 import { Effect } from "effect"
-import type { DatabaseMigration } from "../migration"
+import type { DatabaseMigration } from "../migration.js"
 
 
 const migration: DatabaseMigration.Migration = {
 const migration: DatabaseMigration.Migration = {
   id: "20260622202450_simplify_session_input",
   id: "20260622202450_simplify_session_input",

+ 1 - 1
packages/core/src/database/migration/20260804233008_loose_psylocke.ts

@@ -1,5 +1,5 @@
 import { Effect } from "effect"
 import { Effect } from "effect"
-import type { DatabaseMigration } from "../migration"
+import type { DatabaseMigration } from "../migration.js"
 
 
 const migration: DatabaseMigration.Migration = {
 const migration: DatabaseMigration.Migration = {
   id: "20260804233008_loose_psylocke",
   id: "20260804233008_loose_psylocke",

+ 1 - 1
packages/core/src/database/migration/20260805200742_import_legacy_credentials.ts

@@ -6,7 +6,7 @@ import { Credential } from "@opencode-ai/schema/credential"
 import { Integration } from "@opencode-ai/schema/integration"
 import { Integration } from "@opencode-ai/schema/integration"
 import { NonNegativeInt } from "@opencode-ai/schema/schema"
 import { NonNegativeInt } from "@opencode-ai/schema/schema"
 import { Global } from "@opencode-ai/util/global"
 import { Global } from "@opencode-ai/util/global"
-import type { DatabaseMigration } from "../migration"
+import type { DatabaseMigration } from "../migration.js"
 
 
 const LegacyOAuth = Schema.Struct({
 const LegacyOAuth = Schema.Struct({
   type: Schema.Literal("oauth"),
   type: Schema.Literal("oauth"),

+ 1 - 1
packages/core/src/database/migration/20260808023530_workspace_domain.ts

@@ -1,5 +1,5 @@
 import { Effect } from "effect"
 import { Effect } from "effect"
-import type { DatabaseMigration } from "../migration"
+import type { DatabaseMigration } from "../migration.js"
 
 
 const migration: DatabaseMigration.Migration = {
 const migration: DatabaseMigration.Migration = {
   id: "20260808023530_workspace_domain",
   id: "20260808023530_workspace_domain",

+ 1 - 1
packages/core/src/database/migration/20260811161259_execution_claim_attempts.ts

@@ -1,5 +1,5 @@
 import { Effect } from "effect"
 import { Effect } from "effect"
-import type { DatabaseMigration } from "../migration"
+import type { DatabaseMigration } from "../migration.js"
 
 
 const migration: DatabaseMigration.Migration = {
 const migration: DatabaseMigration.Migration = {
   id: "20260811161259_execution_claim_attempts",
   id: "20260811161259_execution_claim_attempts",

+ 1 - 1
packages/core/src/database/path.ts

@@ -1,7 +1,7 @@
 import nodePath from "path"
 import nodePath from "path"
 import { customType } from "drizzle-orm/sqlite-core"
 import { customType } from "drizzle-orm/sqlite-core"
 import { Schema } from "effect"
 import { Schema } from "effect"
-import { AbsolutePath } from "../schema"
+import { AbsolutePath } from "../schema.js"
 
 
 function storagePath(input: string) {
 function storagePath(input: string) {
   if (process.platform !== "win32") return input
   if (process.platform !== "win32") return input

+ 1 - 1
packages/core/src/database/schema.gen.ts

@@ -1,5 +1,5 @@
 import { Effect } from "effect"
 import { Effect } from "effect"
-import type { DatabaseMigration } from "./migration"
+import type { DatabaseMigration } from "./migration.js"
 
 
 const schema: Omit<DatabaseMigration.Migration, "id"> = {
 const schema: Omit<DatabaseMigration.Migration, "id"> = {
   up(tx) {
   up(tx) {

+ 1 - 1
packages/core/src/database/sqlite.bun.ts

@@ -4,7 +4,7 @@ import { Context, Effect, Layer } from "effect"
 import { Reactivity } from "effect/unstable/reactivity"
 import { Reactivity } from "effect/unstable/reactivity"
 import { SqlClient } from "effect/unstable/sql"
 import { SqlClient } from "effect/unstable/sql"
 import { classifySqliteError, SqlError } from "effect/unstable/sql/SqlError"
 import { classifySqliteError, SqlError } from "effect/unstable/sql/SqlError"
-import { Sqlite } from "./sqlite"
+import { Sqlite } from "./sqlite.js"
 
 
 const TypeId = "~@opencode-ai/core/database/SqliteBun" as const
 const TypeId = "~@opencode-ai/core/database/SqliteBun" as const
 
 

+ 1 - 1
packages/core/src/database/sqlite.node.ts

@@ -4,7 +4,7 @@ import { Context, Effect, Layer } from "effect"
 import { Reactivity } from "effect/unstable/reactivity"
 import { Reactivity } from "effect/unstable/reactivity"
 import { SqlClient } from "effect/unstable/sql"
 import { SqlClient } from "effect/unstable/sql"
 import { classifySqliteError, SqlError } from "effect/unstable/sql/SqlError"
 import { classifySqliteError, SqlError } from "effect/unstable/sql/SqlError"
-import { Sqlite } from "./sqlite"
+import { Sqlite } from "./sqlite.js"
 
 
 const TypeId = "~@opencode-ai/core/database/SqliteNode" as const
 const TypeId = "~@opencode-ai/core/database/SqliteNode" as const
 
 

+ 1 - 1
packages/core/src/database/sqlite.ts

@@ -1,4 +1,4 @@
-export * as Sqlite from "./sqlite"
+export * as Sqlite from "./sqlite.js"
 
 
 import { Context, Effect, Fiber, Scope, Semaphore, Stream } from "effect"
 import { Context, Effect, Fiber, Scope, Semaphore, Stream } from "effect"
 import { identity } from "effect/Function"
 import { identity } from "effect/Function"

+ 1 - 1
packages/core/src/database/sqlite.workerd.ts

@@ -5,7 +5,7 @@ import { Reactivity } from "effect/unstable/reactivity"
 import { SqlClient, Statement } from "effect/unstable/sql"
 import { SqlClient, Statement } from "effect/unstable/sql"
 import type { Connection } from "effect/unstable/sql/SqlConnection"
 import type { Connection } from "effect/unstable/sql/SqlConnection"
 import { classifySqliteError, SqlError, UnknownError } from "effect/unstable/sql/SqlError"
 import { classifySqliteError, SqlError, UnknownError } from "effect/unstable/sql/SqlError"
-import { Sqlite } from "./sqlite"
+import { Sqlite } from "./sqlite.js"
 
 
 const ATTR_DB_SYSTEM_NAME = "db.system.name"
 const ATTR_DB_SYSTEM_NAME = "db.system.name"
 
 

+ 7 - 7
packages/core/src/database/v1-migration.ts

@@ -1,13 +1,13 @@
-export * as V1Migration from "./v1-migration"
+export * as V1Migration from "./v1-migration.js"
 
 
 import { Cause, Effect, Layer, Option, Schema, Semaphore } from "effect"
 import { Cause, Effect, Layer, Option, Schema, Semaphore } from "effect"
-import { Database } from "./database"
-import { SessionMessageTable, SessionTable } from "../session/sql"
+import { Database } from "./database.js"
+import { SessionMessageTable, SessionTable } from "../session/sql.js"
 import { SessionV1 } from "@opencode-ai/schema/session-v1"
 import { SessionV1 } from "@opencode-ai/schema/session-v1"
-import { SessionMessage } from "../session/message"
-import { SessionSchema } from "../session/schema"
-import { KVTable } from "../kv/sql"
-import { EventSequenceTable } from "../event/sql"
+import { SessionMessage } from "../session/message.js"
+import { SessionSchema } from "../session/schema.js"
+import { KVTable } from "../kv/sql.js"
+import { EventSequenceTable } from "../event/sql.js"
 import { eq, sql } from "drizzle-orm"
 import { eq, sql } from "drizzle-orm"
 import { Global } from "@opencode-ai/util/global"
 import { Global } from "@opencode-ai/util/global"
 import { existsSync } from "node:fs"
 import { existsSync } from "node:fs"

+ 3 - 3
packages/core/src/effect/app-node-builder.ts

@@ -1,5 +1,5 @@
-import { buildLocationServiceMap } from "../location-services"
-import { LocationServiceMap } from "../location-service-map"
+import { buildLocationServiceMap } from "../location-services.js"
+import { LocationServiceMap } from "../location-service-map.js"
 import { LayerNode } from "@opencode-ai/util/effect/layer-node"
 import { LayerNode } from "@opencode-ai/util/effect/layer-node"
 import { makeGlobalNode } from "@opencode-ai/util/effect/app-node"
 import { makeGlobalNode } from "@opencode-ai/util/effect/app-node"
 
 
@@ -20,4 +20,4 @@ function hasReplacement(replacements: LayerNode.Replacements, node: LayerNode.No
   return replacements.some(([source]) => source.name === node.name)
   return replacements.some(([source]) => source.name === node.name)
 }
 }
 
 
-export * as AppNodeBuilder from "./app-node-builder"
+export * as AppNodeBuilder from "./app-node-builder.js"

+ 1 - 1
packages/core/src/effect/app-node-platform.ts

@@ -10,4 +10,4 @@ export const requestExecutor = makeGlobalNode({
 
 
 export const llmClient = makeGlobalNode({ service: LLMClient.Service, layer: LLMClient.layer, deps: [requestExecutor] })
 export const llmClient = makeGlobalNode({ service: LLMClient.Service, layer: LLMClient.layer, deps: [requestExecutor] })
 
 
-export * as LayerNodePlatform from "./app-node-platform"
+export * as LayerNodePlatform from "./app-node-platform.js"

+ 1 - 1
packages/core/src/effect/keyed-mutex.ts

@@ -1,4 +1,4 @@
-export * as KeyedMutex from "./keyed-mutex"
+export * as KeyedMutex from "./keyed-mutex.js"
 
 
 import { Effect, Semaphore } from "effect"
 import { Effect, Semaphore } from "effect"
 
 

+ 2 - 2
packages/core/src/environment/driver.ts

@@ -1,9 +1,9 @@
 import type { ChildProcessSpawner } from "effect/unstable/process/ChildProcessSpawner"
 import type { ChildProcessSpawner } from "effect/unstable/process/ChildProcessSpawner"
-import type { FilesImpl } from "./files"
+import type { FilesImpl } from "./files.js"
 
 
 export interface Driver {
 export interface Driver {
   readonly spawner: ChildProcessSpawner["Service"]
   readonly spawner: ChildProcessSpawner["Service"]
   readonly overrides?: Partial<FilesImpl>
   readonly overrides?: Partial<FilesImpl>
 }
 }
 
 
-export * as EnvironmentDriver from "./driver"
+export * as EnvironmentDriver from "./driver.js"

+ 6 - 6
packages/core/src/environment/environment.ts

@@ -2,11 +2,11 @@ import { CrossSpawnSpawner } from "@opencode-ai/util/cross-spawn-spawner"
 import { makeLocationNode } from "@opencode-ai/util/effect/app-node"
 import { makeLocationNode } from "@opencode-ai/util/effect/app-node"
 import { Context, Effect, Layer } from "effect"
 import { Context, Effect, Layer } from "effect"
 import { ChildProcessSpawner } from "effect/unstable/process/ChildProcessSpawner"
 import { ChildProcessSpawner } from "effect/unstable/process/ChildProcessSpawner"
-import type { Files } from "./files"
-import { makeFiles } from "./index"
-import { makeLocalDriver } from "./local"
-import { Location } from "../location"
-import { Workspace } from "../workspace"
+import type { Files } from "./files.js"
+import { makeFiles } from "./index.js"
+import { makeLocalDriver } from "./local.js"
+import { Location } from "../location.js"
+import { Workspace } from "../workspace.js"
 
 
 export interface Interface {
 export interface Interface {
   readonly files: Files
   readonly files: Files
@@ -40,4 +40,4 @@ export const node = makeLocationNode({
   deps: [CrossSpawnSpawner.node, Location.node, Workspace.node],
   deps: [CrossSpawnSpawner.node, Location.node, Workspace.node],
 })
 })
 
 
-export * as EnvironmentService from "./environment"
+export * as EnvironmentService from "./environment.js"

+ 2 - 2
packages/core/src/environment/exec-defaults.ts

@@ -2,7 +2,7 @@ import { Effect, Stream } from "effect"
 import { ChildProcess } from "effect/unstable/process"
 import { ChildProcess } from "effect/unstable/process"
 import type { ChildProcessSpawner } from "effect/unstable/process/ChildProcessSpawner"
 import type { ChildProcessSpawner } from "effect/unstable/process/ChildProcessSpawner"
 import { collectStream } from "@opencode-ai/util/process"
 import { collectStream } from "@opencode-ai/util/process"
-import { Failed, NotFound, WrongKind, type FileInfo, type FileType, type FilesImpl } from "./files"
+import { Failed, NotFound, WrongKind, type FileInfo, type FileType, type FilesImpl } from "./files.js"
 
 
 /**
 /**
  * Files derived from spawning processes: one process per intent, "$1" is
  * Files derived from spawning processes: one process per intent, "$1" is
@@ -189,4 +189,4 @@ const parseList = (bytes: Uint8Array) => {
   }))
   }))
 }
 }
 
 
-export * as EnvironmentExecDefaults from "./exec-defaults"
+export * as EnvironmentExecDefaults from "./exec-defaults.js"

+ 1 - 1
packages/core/src/environment/files.ts

@@ -67,4 +67,4 @@ export const typeFollowing = (files: Files, path: string) =>
     ),
     ),
   )
   )
 
 
-export * as EnvironmentFiles from "./files"
+export * as EnvironmentFiles from "./files.js"

+ 10 - 10
packages/core/src/environment/index.ts

@@ -1,6 +1,6 @@
-export * as Environment from "./index"
+export * as Environment from "./index.js"
 
 
-export { type Driver } from "./driver"
+export { type Driver } from "./driver.js"
 export {
 export {
   type DirEntry,
   type DirEntry,
   Failed,
   Failed,
@@ -11,15 +11,15 @@ export {
   NotFound,
   NotFound,
   typeFollowing,
   typeFollowing,
   WrongKind,
   WrongKind,
-} from "./files"
-export { execDefaults } from "./exec-defaults"
-export { makeLocalDriver } from "./local"
-export { makeMemoryDriver, type MemoryDriver } from "./memory"
-export { type Interface, node, Service } from "./environment"
+} from "./files.js"
+export { execDefaults } from "./exec-defaults.js"
+export { makeLocalDriver } from "./local.js"
+export { makeMemoryDriver, type MemoryDriver } from "./memory.js"
+export { type Interface, node, Service } from "./environment.js"
 
 
-import type { Driver } from "./driver"
-import { execDefaults } from "./exec-defaults"
-import type { Files } from "./files"
+import type { Driver } from "./driver.js"
+import { execDefaults } from "./exec-defaults.js"
+import type { Files } from "./files.js"
 
 
 export const makeFiles = (driver: Driver): Files => ({
 export const makeFiles = (driver: Driver): Files => ({
   ...execDefaults(driver.spawner),
   ...execDefaults(driver.spawner),

+ 3 - 3
packages/core/src/environment/local.ts

@@ -2,8 +2,8 @@ import fs from "node:fs/promises"
 import path from "node:path"
 import path from "node:path"
 import { Effect } from "effect"
 import { Effect } from "effect"
 import type { ChildProcessSpawner } from "effect/unstable/process/ChildProcessSpawner"
 import type { ChildProcessSpawner } from "effect/unstable/process/ChildProcessSpawner"
-import type { Driver } from "./driver"
-import { Failed, NotFound, WrongKind, type FileInfo, type FilesImpl, type FileType } from "./files"
+import type { Driver } from "./driver.js"
+import { Failed, NotFound, WrongKind, type FileInfo, type FilesImpl, type FileType } from "./files.js"
 
 
 /**
 /**
  * The host filesystem binding. Deliberately raw node:fs rather than effect's
  * The host filesystem binding. Deliberately raw node:fs rather than effect's
@@ -100,4 +100,4 @@ const isMissing = (cause: unknown) =>
   "code" in cause &&
   "code" in cause &&
   (cause.code === "ENOENT" || cause.code === "ENOTDIR")
   (cause.code === "ENOENT" || cause.code === "ENOTDIR")
 
 
-export * as EnvironmentLocal from "./local"
+export * as EnvironmentLocal from "./local.js"

+ 3 - 3
packages/core/src/environment/memory.ts

@@ -1,8 +1,8 @@
 import path from "node:path"
 import path from "node:path"
 import { Effect, PlatformError } from "effect"
 import { Effect, PlatformError } from "effect"
 import { make } from "effect/unstable/process/ChildProcessSpawner"
 import { make } from "effect/unstable/process/ChildProcessSpawner"
-import type { Driver } from "./driver"
-import { Failed, NotFound, WrongKind, type FileInfo, type FilesImpl, type FileType } from "./files"
+import type { Driver } from "./driver.js"
+import { Failed, NotFound, WrongKind, type FileInfo, type FilesImpl, type FileType } from "./files.js"
 
 
 type Node =
 type Node =
   | { readonly type: "file"; readonly bytes: Uint8Array; readonly mtimeMs: number }
   | { readonly type: "file"; readonly bytes: Uint8Array; readonly mtimeMs: number }
@@ -165,4 +165,4 @@ export const makeMemoryDriver = (): MemoryDriver => {
   }
   }
 }
 }
 
 
-export * as EnvironmentMemory from "./memory"
+export * as EnvironmentMemory from "./memory.js"

+ 2 - 2
packages/core/src/event-logger.ts

@@ -1,8 +1,8 @@
-export * as EventLogger from "./event-logger"
+export * as EventLogger from "./event-logger.js"
 
 
 import { Effect, Layer } from "effect"
 import { Effect, Layer } from "effect"
 import { makeGlobalNode } from "@opencode-ai/util/effect/app-node"
 import { makeGlobalNode } from "@opencode-ai/util/effect/app-node"
-import { Bus } from "./bus"
+import { Bus } from "./bus.js"
 
 
 const Types = new Set(["agent.updated", "catalog.updated", "command.updated", "config.updated"])
 const Types = new Set(["agent.updated", "catalog.updated", "command.updated", "config.updated"])
 
 

+ 4 - 4
packages/core/src/file-mutation.ts

@@ -1,12 +1,12 @@
-export * as FileMutation from "./file-mutation"
+export * as FileMutation from "./file-mutation.js"
 
 
 import { makeLocationNode } from "@opencode-ai/util/effect/app-node"
 import { makeLocationNode } from "@opencode-ai/util/effect/app-node"
 import { Context, Effect, Layer } from "effect"
 import { Context, Effect, Layer } from "effect"
-import { KeyedMutex } from "./effect/keyed-mutex"
+import { KeyedMutex } from "./effect/keyed-mutex.js"
 import { FSUtil } from "@opencode-ai/util/fs-util"
 import { FSUtil } from "@opencode-ai/util/fs-util"
 import { Bom } from "@opencode-ai/util/bom"
 import { Bom } from "@opencode-ai/util/bom"
-import { Environment } from "./environment"
-import type { Files } from "./environment"
+import { Environment } from "./environment/index.js"
+import type { Files } from "./environment/index.js"
 
 
 export interface Target {
 export interface Target {
   readonly absolute: string
   readonly absolute: string

+ 1 - 1
packages/core/src/file.ts

@@ -1,4 +1,4 @@
-export * as File from "./file"
+export * as File from "./file.js"
 
 
 import { FileDiff } from "@opencode-ai/schema/file-diff"
 import { FileDiff } from "@opencode-ai/schema/file-diff"
 
 

+ 4 - 4
packages/core/src/filesystem.ts

@@ -1,12 +1,12 @@
-export * as FileSystem from "./filesystem"
+export * as FileSystem from "./filesystem.js"
 
 
 import { makeLocationNode } from "@opencode-ai/util/effect/app-node"
 import { makeLocationNode } from "@opencode-ai/util/effect/app-node"
 import path from "path"
 import path from "path"
 import { Context, Effect, Layer, Schema } from "effect"
 import { Context, Effect, Layer, Schema } from "effect"
 import { FSUtil } from "@opencode-ai/util/fs-util"
 import { FSUtil } from "@opencode-ai/util/fs-util"
-import { Location } from "./location"
-import { PositiveInt, RelativePath } from "./schema"
-import { FileSystemSearch } from "./filesystem/search"
+import { Location } from "./location.js"
+import { PositiveInt, RelativePath } from "./schema.js"
+import { FileSystemSearch } from "./filesystem/search.js"
 import { Entry, FileSystem, FindInput } from "@opencode-ai/schema/filesystem"
 import { Entry, FileSystem, FindInput } from "@opencode-ai/schema/filesystem"
 export { Entry, Match, Submatch } from "@opencode-ai/schema/filesystem"
 export { Entry, Match, Submatch } from "@opencode-ai/schema/filesystem"
 
 

+ 3 - 3
packages/core/src/filesystem/fff.bun.ts

@@ -1,7 +1,7 @@
 import { FileFinder } from "@ff-labs/fff-bun"
 import { FileFinder } from "@ff-labs/fff-bun"
-import { bind } from "./fff"
+import { bind } from "./fff.js"
 
 
-export type { Directory, DirSearch, File, Init, Mixed, MixedSearch, Picker, Result, Search } from "./fff"
+export type { Directory, DirSearch, File, Init, Mixed, MixedSearch, Picker, Result, Search } from "./fff.js"
 
 
 declare global {
 declare global {
   const FFF_LIBC: "gnu" | "musl"
   const FFF_LIBC: "gnu" | "musl"
@@ -12,4 +12,4 @@ const adapter = bind(FileFinder)
 export const available = adapter.available
 export const available = adapter.available
 export const create = adapter.create
 export const create = adapter.create
 
 
-export * as Fff from "./fff.bun"
+export * as Fff from "./fff.bun.js"

+ 3 - 3
packages/core/src/filesystem/fff.node.ts

@@ -1,6 +1,6 @@
-import { bind } from "./fff"
+import { bind } from "./fff.js"
 
 
-export type { Directory, DirSearch, File, Init, Mixed, MixedSearch, Picker, Result, Search } from "./fff"
+export type { Directory, DirSearch, File, Init, Mixed, MixedSearch, Picker, Result, Search } from "./fff.js"
 
 
 const { FileFinder } = await import("@ff-labs/fff-node").catch(() => ({ FileFinder: undefined }))
 const { FileFinder } = await import("@ff-labs/fff-node").catch(() => ({ FileFinder: undefined }))
 
 
@@ -9,4 +9,4 @@ const adapter = bind(FileFinder, "fff unavailable on node runtime")
 export const available = adapter.available
 export const available = adapter.available
 export const create = adapter.create
 export const create = adapter.create
 
 
-export * as Fff from "./fff.node"
+export * as Fff from "./fff.node.js"

+ 1 - 1
packages/core/src/filesystem/ignore.ts

@@ -45,4 +45,4 @@ const FILES = [
 
 
 export const PATTERNS = [...FILES, ...FOLDERS, `**/{${Array.from(FOLDERS).join(",")}}/**`]
 export const PATTERNS = [...FILES, ...FOLDERS, `**/{${Array.from(FOLDERS).join(",")}}/**`]
 
 
-export * as Ignore from "./ignore"
+export * as Ignore from "./ignore.js"

+ 6 - 6
packages/core/src/filesystem/location-watcher.ts

@@ -1,16 +1,16 @@
-export * as LocationWatcher from "./location-watcher"
+export * as LocationWatcher from "./location-watcher.js"
 
 
 import { makeLocationNode } from "@opencode-ai/util/effect/app-node"
 import { makeLocationNode } from "@opencode-ai/util/effect/app-node"
 import { Context, Effect, Layer, Stream } from "effect"
 import { Context, Effect, Layer, Stream } from "effect"
 import { FileSystem } from "@opencode-ai/schema/filesystem"
 import { FileSystem } from "@opencode-ai/schema/filesystem"
 import { Document } from "@opencode-ai/schema/config"
 import { Document } from "@opencode-ai/schema/config"
 import path from "path"
 import path from "path"
-import { Config } from "../config"
-import { Bus } from "../bus"
+import { Config } from "../config.js"
+import { Bus } from "../bus.js"
 import { FSUtil } from "@opencode-ai/util/fs-util"
 import { FSUtil } from "@opencode-ai/util/fs-util"
-import { Git } from "../git"
-import { Location } from "../location"
-import { Watcher } from "./watcher"
+import { Git } from "../git.js"
+import { Location } from "../location.js"
+import { Watcher } from "./watcher.js"
 
 
 export interface Interface {}
 export interface Interface {}
 
 

+ 1 - 1
packages/core/src/filesystem/protected.ts

@@ -54,4 +54,4 @@ export function paths(): string[] {
   return []
   return []
 }
 }
 
 
-export * as Protected from "./protected"
+export * as Protected from "./protected.js"

+ 6 - 6
packages/core/src/filesystem/search.ts

@@ -1,15 +1,15 @@
-export * as FileSystemSearch from "./search"
+export * as FileSystemSearch from "./search.js"
 
 
 import { makeLocationNode } from "@opencode-ai/util/effect/app-node"
 import { makeLocationNode } from "@opencode-ai/util/effect/app-node"
 import path from "path"
 import path from "path"
 import { Context, Effect, Layer, Schema, Scope } from "effect"
 import { Context, Effect, Layer, Schema, Scope } from "effect"
 import { Fff } from "#fff"
 import { Fff } from "#fff"
 import fuzzysort from "fuzzysort"
 import fuzzysort from "fuzzysort"
-import { FileSystem } from "../filesystem"
-import { Location } from "../location"
-import { Ripgrep } from "../ripgrep"
-import { RelativePath } from "../schema"
-import { Protected } from "./protected"
+import { FileSystem } from "../filesystem.js"
+import { Location } from "../location.js"
+import { Ripgrep } from "../ripgrep.js"
+import { RelativePath } from "../schema.js"
+import { Protected } from "./protected.js"
 
 
 export interface Interface {
 export interface Interface {
   readonly find: (input: FileSystem.FindInput) => Effect.Effect<FileSystem.Entry[]>
   readonly find: (input: FileSystem.FindInput) => Effect.Effect<FileSystem.Entry[]>

+ 3 - 3
packages/core/src/filesystem/watcher.ts

@@ -1,4 +1,4 @@
-export * as Watcher from "./watcher"
+export * as Watcher from "./watcher.js"
 
 
 // @ts-ignore
 // @ts-ignore
 import { createWrapper } from "@parcel/watcher/wrapper"
 import { createWrapper } from "@parcel/watcher/wrapper"
@@ -6,10 +6,10 @@ import type ParcelWatcher from "@parcel/watcher"
 import { FileSystem } from "@opencode-ai/schema/filesystem"
 import { FileSystem } from "@opencode-ai/schema/filesystem"
 import { makeGlobalNode } from "@opencode-ai/util/effect/app-node"
 import { makeGlobalNode } from "@opencode-ai/util/effect/app-node"
 import { Cause, Context, Effect, Layer, PubSub, RcMap, Schema, Stream } from "effect"
 import { Cause, Context, Effect, Layer, PubSub, RcMap, Schema, Stream } from "effect"
-import { lazy } from "../util/lazy"
+import { lazy } from "../util/lazy.js"
 import { watch as watchFileSystem } from "node:fs"
 import { watch as watchFileSystem } from "node:fs"
 import path from "path"
 import path from "path"
-import loadBinding from "./watcher-binding"
+import loadBinding from "./watcher-binding.js"
 
 
 const SUBSCRIBE_TIMEOUT_MS = 10_000
 const SUBSCRIBE_TIMEOUT_MS = 10_000
 export const Event = { Updated: FileSystem.Event.Changed }
 export const Event = { Updated: FileSystem.Event.Changed }

Některé soubory nejsou zobrazeny, neboť je v těchto rozdílových datech změněno mnoho souborů