From 5e47501b8b8aa83c79bf02d767df5f882b153824 Mon Sep 17 00:00:00 2001 From: Dax Raad Date: Wed, 1 Jul 2026 13:33:59 -0400 Subject: [PATCH] feat(schema): publish package --- bun.lock | 2 + packages/schema/package.json | 17 ++++- packages/schema/script/build.ts | 9 +++ packages/schema/script/publish.ts | 45 +++++++++++++ packages/schema/src/agent.ts | 14 ++-- packages/schema/src/catalog.ts | 4 +- packages/schema/src/command.ts | 6 +- packages/schema/src/connection.ts | 4 +- packages/schema/src/credential.ts | 10 +-- packages/schema/src/durable-event-manifest.ts | 8 +-- packages/schema/src/event-manifest.ts | 66 +++++++++---------- packages/schema/src/event.ts | 10 +-- packages/schema/src/file-diff.ts | 4 +- packages/schema/src/filesystem-watcher.ts | 4 +- packages/schema/src/filesystem.ts | 8 +-- packages/schema/src/ide-event.ts | 4 +- packages/schema/src/index.ts | 58 ++++++++-------- packages/schema/src/installation-event.ts | 4 +- packages/schema/src/integration.ts | 14 ++-- packages/schema/src/legacy-event.ts | 2 +- packages/schema/src/llm.ts | 4 +- packages/schema/src/location.ts | 8 +-- packages/schema/src/lsp-event.ts | 4 +- packages/schema/src/mcp-event.ts | 4 +- packages/schema/src/mcp.ts | 6 +- packages/schema/src/model.ts | 8 +-- packages/schema/src/models-dev.ts | 4 +- packages/schema/src/permission-saved.ts | 8 +-- packages/schema/src/permission-v1.ts | 2 +- packages/schema/src/permission.ts | 12 ++-- packages/schema/src/plugin.ts | 4 +- packages/schema/src/project-copy.ts | 8 +-- packages/schema/src/project-directories.ts | 6 +- packages/schema/src/project-id.ts | 2 +- packages/schema/src/project.ts | 8 +-- packages/schema/src/prompt-input.ts | 6 +- packages/schema/src/prompt.ts | 4 +- packages/schema/src/provider.ts | 8 +-- packages/schema/src/pty-ticket.ts | 4 +- packages/schema/src/pty.ts | 10 +-- packages/schema/src/question-v1.ts | 2 +- packages/schema/src/question.ts | 12 ++-- packages/schema/src/reference.ts | 8 +-- packages/schema/src/revert.ts | 8 +-- packages/schema/src/server-event.ts | 4 +- .../schema/src/session-compaction-event.ts | 6 +- packages/schema/src/session-delivery.ts | 2 +- packages/schema/src/session-event.ts | 24 +++---- packages/schema/src/session-id.ts | 4 +- packages/schema/src/session-input.ts | 14 ++-- packages/schema/src/session-message.ts | 16 ++--- packages/schema/src/session-status-event.ts | 10 +-- packages/schema/src/session-todo.ts | 6 +- packages/schema/src/session-v1.ts | 2 +- packages/schema/src/session.ts | 18 ++--- packages/schema/src/shell.ts | 10 +-- packages/schema/src/skill.ts | 6 +- packages/schema/src/tui-event.ts | 10 +-- packages/schema/src/v1/legacy-event.ts | 8 +-- packages/schema/src/v1/permission.ts | 12 ++-- packages/schema/src/v1/question.ts | 12 ++-- packages/schema/src/v1/session.ts | 22 +++---- packages/schema/src/vcs-event.ts | 6 +- packages/schema/src/workspace-event.ts | 6 +- packages/schema/src/workspace-id.ts | 4 +- packages/schema/src/workspace.ts | 6 +- packages/schema/src/worktree-event.ts | 6 +- packages/schema/test/compatibility.test.ts | 2 +- packages/schema/test/contract-hygiene.test.ts | 18 ++--- packages/schema/test/event-manifest.test.ts | 14 ++-- packages/schema/test/event.test.ts | 2 +- packages/schema/test/legacy-event.test.ts | 10 +-- packages/schema/test/v1-isolation.test.ts | 16 ++--- packages/schema/tsconfig.build.json | 11 ++++ packages/schema/tsconfig.json | 4 ++ packages/script/package.json | 1 + script/publish.ts | 3 + 77 files changed, 413 insertions(+), 325 deletions(-) create mode 100644 packages/schema/script/build.ts create mode 100644 packages/schema/script/publish.ts create mode 100644 packages/schema/tsconfig.build.json diff --git a/bun.lock b/bun.lock index 855847c8f3..d817185ffe 100644 --- a/bun.lock +++ b/bun.lock @@ -722,6 +722,7 @@ }, "packages/schema": { "name": "@opencode-ai/schema", + "version": "1.17.11", "dependencies": { "effect": "catalog:", }, @@ -729,6 +730,7 @@ "@tsconfig/bun": "catalog:", "@types/bun": "catalog:", "@typescript/native-preview": "catalog:", + "typescript": "catalog:", }, }, "packages/script": { diff --git a/packages/schema/package.json b/packages/schema/package.json index 675f09969c..445991c4e2 100644 --- a/packages/schema/package.json +++ b/packages/schema/package.json @@ -1,14 +1,26 @@ { "$schema": "https://json.schemastore.org/package.json", "name": "@opencode-ai/schema", - "private": true, + "version": "1.17.11", "type": "module", "license": "MIT", + "repository": { + "type": "git", + "url": "git+https://github.com/anomalyco/opencode.git", + "directory": "packages/schema" + }, + "publishConfig": { + "access": "public" + }, + "files": [ + "dist" + ], "exports": { ".": "./src/index.ts", "./*": "./src/*.ts" }, "scripts": { + "build": "bun run script/build.ts", "typecheck": "tsgo --noEmit" }, "dependencies": { @@ -17,6 +29,7 @@ "devDependencies": { "@tsconfig/bun": "catalog:", "@types/bun": "catalog:", - "@typescript/native-preview": "catalog:" + "@typescript/native-preview": "catalog:", + "typescript": "catalog:" } } diff --git a/packages/schema/script/build.ts b/packages/schema/script/build.ts new file mode 100644 index 0000000000..323a63ddf9 --- /dev/null +++ b/packages/schema/script/build.ts @@ -0,0 +1,9 @@ +#!/usr/bin/env bun + +import { $ } from "bun" +import { fileURLToPath } from "node:url" + +process.chdir(fileURLToPath(new URL("..", import.meta.url))) + +await $`rm -rf dist` +await $`bun tsc -p tsconfig.build.json` diff --git a/packages/schema/script/publish.ts b/packages/schema/script/publish.ts new file mode 100644 index 0000000000..8e37674b64 --- /dev/null +++ b/packages/schema/script/publish.ts @@ -0,0 +1,45 @@ +#!/usr/bin/env bun + +import { Script } from "@opencode-ai/script" +import { $ } from "bun" +import { rm } from "node:fs/promises" +import { fileURLToPath } from "node:url" + +process.chdir(fileURLToPath(new URL("..", import.meta.url))) + +const originalText = await Bun.file("package.json").text() +const pkg = JSON.parse(originalText) as { + name: string + version: string + exports: Record +} +const tarball = `${pkg.name.replace("@", "").replace("/", "-")}-${pkg.version}.tgz` + +if ((await $`npm view ${pkg.name}@${pkg.version} version`.nothrow()).exitCode === 0) { + console.log(`already published ${pkg.name}@${pkg.version}`) + process.exit(0) +} + +try { + await $`bun run typecheck` + await $`bun run build` + pkg.exports = Object.fromEntries( + Object.entries(pkg.exports).map(([key, value]) => { + if (typeof value !== "string") return [key, value] + return [ + key, + { + import: value.replace("./src/", "./dist/").replace(/\.ts$/, ".js"), + types: value.replace("./src/", "./dist/").replace(/\.ts$/, ".d.ts"), + }, + ] + }), + ) + await Bun.write("package.json", JSON.stringify(pkg, null, 2) + "\n") + await rm(tarball, { force: true }) + await $`bun pm pack` + await $`npm publish ${tarball} --tag ${Script.channel} --access public` +} finally { + await Bun.write("package.json", originalText) + await rm(tarball, { force: true }) +} diff --git a/packages/schema/src/agent.ts b/packages/schema/src/agent.ts index 9313ece4ef..f10cba2941 100644 --- a/packages/schema/src/agent.ts +++ b/packages/schema/src/agent.ts @@ -1,12 +1,12 @@ -export * as Agent from "./agent" +export * as Agent from "./agent.js" import { Schema } from "effect" -import { define, inventory } from "./event" -import { optional } from "./schema" -import { Model } from "./model" -import { Permission } from "./permission" -import { Provider } from "./provider" -import { PositiveInt, statics } from "./schema" +import { define, inventory } from "./event.js" +import { optional } from "./schema.js" +import { Model } from "./model.js" +import { Permission } from "./permission.js" +import { Provider } from "./provider.js" +import { PositiveInt, statics } from "./schema.js" const Updated = define({ type: "agent.updated", schema: {} }) diff --git a/packages/schema/src/catalog.ts b/packages/schema/src/catalog.ts index 54abb5b128..19e2c26b9f 100644 --- a/packages/schema/src/catalog.ts +++ b/packages/schema/src/catalog.ts @@ -1,6 +1,6 @@ -export * as Catalog from "./catalog" +export * as Catalog from "./catalog.js" -import { define, inventory } from "./event" +import { define, inventory } from "./event.js" const Updated = define({ type: "catalog.updated", schema: {} }) export const Event = { Updated, Definitions: inventory(Updated) } diff --git a/packages/schema/src/command.ts b/packages/schema/src/command.ts index 2bdf3a95c5..35f2a66e18 100644 --- a/packages/schema/src/command.ts +++ b/packages/schema/src/command.ts @@ -1,8 +1,8 @@ -export * as Command from "./command" +export * as Command from "./command.js" import { Schema } from "effect" -import { optional } from "./schema" -import { Model } from "./model" +import { optional } from "./schema.js" +import { Model } from "./model.js" export interface Info extends Schema.Schema.Type {} export const Info = Schema.Struct({ diff --git a/packages/schema/src/connection.ts b/packages/schema/src/connection.ts index 2bacb977a8..8cda552c1a 100644 --- a/packages/schema/src/connection.ts +++ b/packages/schema/src/connection.ts @@ -1,7 +1,7 @@ -export * as Connection from "./connection" +export * as Connection from "./connection.js" import { Schema } from "effect" -import { Credential } from "./credential" +import { Credential } from "./credential.js" export interface CredentialInfo extends Schema.Schema.Type {} export const CredentialInfo = Schema.Struct({ diff --git a/packages/schema/src/credential.ts b/packages/schema/src/credential.ts index e54e2f680b..0d2892020e 100644 --- a/packages/schema/src/credential.ts +++ b/packages/schema/src/credential.ts @@ -1,10 +1,10 @@ -export * as Credential from "./credential" +export * as Credential from "./credential.js" import { Schema } from "effect" -import { optional } from "./schema" -import { IntegrationMethodID } from "./integration-id" -import { ascending } from "./identifier" -import { NonNegativeInt, statics } from "./schema" +import { optional } from "./schema.js" +import { IntegrationMethodID } from "./integration-id.js" +import { ascending } from "./identifier.js" +import { NonNegativeInt, statics } from "./schema.js" export const ID = Schema.String.pipe( Schema.brand("Credential.ID"), diff --git a/packages/schema/src/durable-event-manifest.ts b/packages/schema/src/durable-event-manifest.ts index acdcb3e9d5..6b481dcfb9 100644 --- a/packages/schema/src/durable-event-manifest.ts +++ b/packages/schema/src/durable-event-manifest.ts @@ -1,8 +1,8 @@ -export * as DurableEventManifest from "./durable-event-manifest" +export * as DurableEventManifest from "./durable-event-manifest.js" -import { Event } from "./event" -import { SessionEvent } from "./session-event" -import { SessionV1 } from "./session-v1" +import { Event } from "./event.js" +import { SessionEvent } from "./session-event.js" +import { SessionV1 } from "./session-v1.js" export const SessionDurable = { definitions: Event.durable(SessionEvent.DurableDefinitions), diff --git a/packages/schema/src/event-manifest.ts b/packages/schema/src/event-manifest.ts index cbd9d86819..1adfba0290 100644 --- a/packages/schema/src/event-manifest.ts +++ b/packages/schema/src/event-manifest.ts @@ -1,37 +1,37 @@ -export * as EventManifest from "./event-manifest" +export * as EventManifest from "./event-manifest.js" -import { Agent } from "./agent" -import { Catalog } from "./catalog" -import { Durable } from "./durable-event-manifest" -import { Event } from "./event" -import { FileSystem } from "./filesystem" -import { FileSystemWatcher } from "./filesystem-watcher" -import { InstallationEvent } from "./installation-event" -import { Integration } from "./integration" -import { LegacyEvent } from "./legacy-event" -import { LspEvent } from "./lsp-event" -import { McpEvent } from "./mcp-event" -import { ModelsDev } from "./models-dev" -import { Permission } from "./permission" -import { PermissionV1 } from "./permission-v1" -import { Plugin } from "./plugin" -import { Project } from "./project" -import { ProjectDirectories } from "./project-directories" -import { Pty } from "./pty" -import { Question } from "./question" -import { QuestionV1 } from "./question-v1" -import { Reference } from "./reference" -import { ServerEvent } from "./server-event" -import { Shell } from "./shell" -import { SessionCompactionEvent } from "./session-compaction-event" -import { SessionEvent } from "./session-event" -import { SessionStatusEvent } from "./session-status-event" -import { SessionTodo } from "./session-todo" -import { SessionV1 } from "./session-v1" -import { TuiEvent } from "./tui-event" -import { VcsEvent } from "./vcs-event" -import { WorkspaceEvent } from "./workspace-event" -import { WorktreeEvent } from "./worktree-event" +import { Agent } from "./agent.js" +import { Catalog } from "./catalog.js" +import { Durable } from "./durable-event-manifest.js" +import { Event } from "./event.js" +import { FileSystem } from "./filesystem.js" +import { FileSystemWatcher } from "./filesystem-watcher.js" +import { InstallationEvent } from "./installation-event.js" +import { Integration } from "./integration.js" +import { LegacyEvent } from "./legacy-event.js" +import { LspEvent } from "./lsp-event.js" +import { McpEvent } from "./mcp-event.js" +import { ModelsDev } from "./models-dev.js" +import { Permission } from "./permission.js" +import { PermissionV1 } from "./permission-v1.js" +import { Plugin } from "./plugin.js" +import { Project } from "./project.js" +import { ProjectDirectories } from "./project-directories.js" +import { Pty } from "./pty.js" +import { Question } from "./question.js" +import { QuestionV1 } from "./question-v1.js" +import { Reference } from "./reference.js" +import { ServerEvent } from "./server-event.js" +import { Shell } from "./shell.js" +import { SessionCompactionEvent } from "./session-compaction-event.js" +import { SessionEvent } from "./session-event.js" +import { SessionStatusEvent } from "./session-status-event.js" +import { SessionTodo } from "./session-todo.js" +import { SessionV1 } from "./session-v1.js" +import { TuiEvent } from "./tui-event.js" +import { VcsEvent } from "./vcs-event.js" +import { WorkspaceEvent } from "./workspace-event.js" +import { WorktreeEvent } from "./worktree-event.js" const sessionV1DurableDefinitions = SessionV1.Event.Definitions.filter((definition) => definition.durable !== undefined) const sessionV1LiveDefinitions = SessionV1.Event.Definitions.filter((definition) => definition.durable === undefined) diff --git a/packages/schema/src/event.ts b/packages/schema/src/event.ts index 0d6ec9775a..9b1aca354f 100644 --- a/packages/schema/src/event.ts +++ b/packages/schema/src/event.ts @@ -1,10 +1,10 @@ -export * as Event from "./event" +export * as Event from "./event.js" import { Schema } from "effect" -import { optional } from "./schema" -import { ascending } from "./identifier" -import { Location } from "./location" -import { statics } from "./schema" +import { optional } from "./schema.js" +import { ascending } from "./identifier.js" +import { Location } from "./location.js" +import { statics } from "./schema.js" export const ID = Schema.String.check(Schema.isStartsWith("evt_")).pipe( Schema.brand("Event.ID"), diff --git a/packages/schema/src/file-diff.ts b/packages/schema/src/file-diff.ts index 45226df28e..9847a10574 100644 --- a/packages/schema/src/file-diff.ts +++ b/packages/schema/src/file-diff.ts @@ -1,7 +1,7 @@ -export * as FileDiff from "./file-diff" +export * as FileDiff from "./file-diff.js" import { Schema } from "effect" -import { optional } from "./schema" +import { optional } from "./schema.js" export const Info = Schema.Struct({ file: optional(Schema.String), diff --git a/packages/schema/src/filesystem-watcher.ts b/packages/schema/src/filesystem-watcher.ts index 5e4da777ca..e1e1d557d6 100644 --- a/packages/schema/src/filesystem-watcher.ts +++ b/packages/schema/src/filesystem-watcher.ts @@ -1,7 +1,7 @@ -export * as FileSystemWatcher from "./filesystem-watcher" +export * as FileSystemWatcher from "./filesystem-watcher.js" import { Schema } from "effect" -import { define, inventory } from "./event" +import { define, inventory } from "./event.js" const Updated = define({ type: "file.watcher.updated", diff --git a/packages/schema/src/filesystem.ts b/packages/schema/src/filesystem.ts index 1998c1b9fd..882c3f0abf 100644 --- a/packages/schema/src/filesystem.ts +++ b/packages/schema/src/filesystem.ts @@ -1,9 +1,9 @@ -export * as FileSystem from "./filesystem" +export * as FileSystem from "./filesystem.js" import { Schema } from "effect" -import { optional } from "./schema" -import { define, inventory } from "./event" -import { NonNegativeInt, PositiveInt, RelativePath } from "./schema" +import { optional } from "./schema.js" +import { define, inventory } from "./event.js" +import { NonNegativeInt, PositiveInt, RelativePath } from "./schema.js" const Edited = define({ type: "file.edited", diff --git a/packages/schema/src/ide-event.ts b/packages/schema/src/ide-event.ts index ca42186021..ec01d9fa36 100644 --- a/packages/schema/src/ide-event.ts +++ b/packages/schema/src/ide-event.ts @@ -1,7 +1,7 @@ -export * as IdeEvent from "./ide-event" +export * as IdeEvent from "./ide-event.js" import { Schema } from "effect" -import { Event } from "./event" +import { Event } from "./event.js" export const Installed = Event.define({ type: "ide.installed", diff --git a/packages/schema/src/index.ts b/packages/schema/src/index.ts index 22b6431e70..5003187462 100644 --- a/packages/schema/src/index.ts +++ b/packages/schema/src/index.ts @@ -1,29 +1,29 @@ -export { Agent } from "./agent" -export { Command } from "./command" -export { Connection } from "./connection" -export { Credential } from "./credential" -export { Event } from "./event" -export { FileSystem } from "./filesystem" -export { Integration } from "./integration" -export { LLM } from "./llm" -export { Location } from "./location" -export { Model } from "./model" -export { Permission } from "./permission" -export { PermissionSaved } from "./permission-saved" -export { Project } from "./project" -export { ProjectCopy } from "./project-copy" -export { Provider } from "./provider" -export { Reference } from "./reference" -export { Revert } from "./revert" -export { Session } from "./session" -export { SessionInput } from "./session-input" -export { SessionMessage } from "./session-message" -export { Shell } from "./shell" -export { Skill } from "./skill" -export { Pty } from "./pty" -export { PtyTicket } from "./pty-ticket" -export { Question } from "./question" -export { Workspace } from "./workspace" -export { Prompt, Source, FileAttachment, AgentAttachment } from "./prompt" -export { PromptInput } from "./prompt-input" -export * from "./schema" +export { Agent } from "./agent.js" +export { Command } from "./command.js" +export { Connection } from "./connection.js" +export { Credential } from "./credential.js" +export { Event } from "./event.js" +export { FileSystem } from "./filesystem.js" +export { Integration } from "./integration.js" +export { LLM } from "./llm.js" +export { Location } from "./location.js" +export { Model } from "./model.js" +export { Permission } from "./permission.js" +export { PermissionSaved } from "./permission-saved.js" +export { Project } from "./project.js" +export { ProjectCopy } from "./project-copy.js" +export { Provider } from "./provider.js" +export { Reference } from "./reference.js" +export { Revert } from "./revert.js" +export { Session } from "./session.js" +export { SessionInput } from "./session-input.js" +export { SessionMessage } from "./session-message.js" +export { Shell } from "./shell.js" +export { Skill } from "./skill.js" +export { Pty } from "./pty.js" +export { PtyTicket } from "./pty-ticket.js" +export { Question } from "./question.js" +export { Workspace } from "./workspace.js" +export { Prompt, Source, FileAttachment, AgentAttachment } from "./prompt.js" +export { PromptInput } from "./prompt-input.js" +export * from "./schema.js" diff --git a/packages/schema/src/installation-event.ts b/packages/schema/src/installation-event.ts index 69ecf67084..dde53f7b72 100644 --- a/packages/schema/src/installation-event.ts +++ b/packages/schema/src/installation-event.ts @@ -1,7 +1,7 @@ -export * as InstallationEvent from "./installation-event" +export * as InstallationEvent from "./installation-event.js" import { Schema } from "effect" -import { Event } from "./event" +import { Event } from "./event.js" export const Updated = Event.define({ type: "installation.updated", diff --git a/packages/schema/src/integration.ts b/packages/schema/src/integration.ts index 1345318da1..f1d9c63784 100644 --- a/packages/schema/src/integration.ts +++ b/packages/schema/src/integration.ts @@ -1,12 +1,12 @@ -export * as Integration from "./integration" +export * as Integration from "./integration.js" import { Schema } from "effect" -import { optional } from "./schema" -import { define, inventory } from "./event" -import { Connection } from "./connection" -import { ascending } from "./identifier" -import { statics } from "./schema" -import { IntegrationID, IntegrationMethodID } from "./integration-id" +import { optional } from "./schema.js" +import { define, inventory } from "./event.js" +import { Connection } from "./connection.js" +import { ascending } from "./identifier.js" +import { statics } from "./schema.js" +import { IntegrationID, IntegrationMethodID } from "./integration-id.js" export const ID = IntegrationID export type ID = typeof ID.Type diff --git a/packages/schema/src/legacy-event.ts b/packages/schema/src/legacy-event.ts index c7115992a6..298fd0af3f 100644 --- a/packages/schema/src/legacy-event.ts +++ b/packages/schema/src/legacy-event.ts @@ -1 +1 @@ -export * from "./v1/legacy-event" +export * from "./v1/legacy-event.js" diff --git a/packages/schema/src/llm.ts b/packages/schema/src/llm.ts index 44101dd876..5e19ecc6d3 100644 --- a/packages/schema/src/llm.ts +++ b/packages/schema/src/llm.ts @@ -1,7 +1,7 @@ -export * as LLM from "./llm" +export * as LLM from "./llm.js" import { Schema } from "effect" -import { optional } from "./schema" +import { optional } from "./schema.js" export const ProviderMetadata = Schema.Record(Schema.String, Schema.Record(Schema.String, Schema.Unknown)).annotate({ identifier: "LLM.ProviderMetadata", diff --git a/packages/schema/src/location.ts b/packages/schema/src/location.ts index c01ce36372..30a3e34021 100644 --- a/packages/schema/src/location.ts +++ b/packages/schema/src/location.ts @@ -1,9 +1,9 @@ -export * as Location from "./location" +export * as Location from "./location.js" import { Schema } from "effect" -import { AbsolutePath, optional } from "./schema" -import { ProjectID } from "./project-id" -import { WorkspaceID } from "./workspace-id" +import { AbsolutePath, optional } from "./schema.js" +import { ProjectID } from "./project-id.js" +import { WorkspaceID } from "./workspace-id.js" export interface Ref extends Schema.Schema.Type {} export const Ref = Schema.Struct({ diff --git a/packages/schema/src/lsp-event.ts b/packages/schema/src/lsp-event.ts index b690846966..68f31fbc6c 100644 --- a/packages/schema/src/lsp-event.ts +++ b/packages/schema/src/lsp-event.ts @@ -1,6 +1,6 @@ -export * as LspEvent from "./lsp-event" +export * as LspEvent from "./lsp-event.js" -import { Event } from "./event" +import { Event } from "./event.js" export const Updated = Event.define({ type: "lsp.updated", schema: {} }) diff --git a/packages/schema/src/mcp-event.ts b/packages/schema/src/mcp-event.ts index 753dea2ef7..70be7a91d8 100644 --- a/packages/schema/src/mcp-event.ts +++ b/packages/schema/src/mcp-event.ts @@ -1,7 +1,7 @@ -export * as McpEvent from "./mcp-event" +export * as McpEvent from "./mcp-event.js" import { Schema } from "effect" -import { Event } from "./event" +import { Event } from "./event.js" export const ToolsChanged = Event.define({ type: "mcp.tools.changed", diff --git a/packages/schema/src/mcp.ts b/packages/schema/src/mcp.ts index ae50157e38..421b5aee95 100644 --- a/packages/schema/src/mcp.ts +++ b/packages/schema/src/mcp.ts @@ -1,8 +1,8 @@ -export * as Mcp from "./mcp" +export * as Mcp from "./mcp.js" import { Schema } from "effect" -import { optional } from "./schema" -import { IntegrationID } from "./integration-id" +import { optional } from "./schema.js" +import { IntegrationID } from "./integration-id.js" const Connected = Schema.Struct({ status: Schema.Literal("connected") }).annotate({ identifier: "Mcp.Status.Connected", diff --git a/packages/schema/src/model.ts b/packages/schema/src/model.ts index 10fa175e24..b4c1337be1 100644 --- a/packages/schema/src/model.ts +++ b/packages/schema/src/model.ts @@ -1,9 +1,9 @@ -export * as Model from "./model" +export * as Model from "./model.js" import { Schema } from "effect" -import { optional } from "./schema" -import { Provider } from "./provider" -import { statics } from "./schema" +import { optional } from "./schema.js" +import { Provider } from "./provider.js" +import { statics } from "./schema.js" export const ID = Schema.String.pipe(Schema.brand("ModelV2.ID")) export type ID = typeof ID.Type diff --git a/packages/schema/src/models-dev.ts b/packages/schema/src/models-dev.ts index 4432bc4591..60d630ecfa 100644 --- a/packages/schema/src/models-dev.ts +++ b/packages/schema/src/models-dev.ts @@ -1,6 +1,6 @@ -export * as ModelsDev from "./models-dev" +export * as ModelsDev from "./models-dev.js" -import { define, inventory } from "./event" +import { define, inventory } from "./event.js" const Refreshed = define({ type: "models-dev.refreshed", diff --git a/packages/schema/src/permission-saved.ts b/packages/schema/src/permission-saved.ts index 969a6dc25c..9432b1d777 100644 --- a/packages/schema/src/permission-saved.ts +++ b/packages/schema/src/permission-saved.ts @@ -1,9 +1,9 @@ -export * as PermissionSaved from "./permission-saved" +export * as PermissionSaved from "./permission-saved.js" import { Schema } from "effect" -import { ascending } from "./identifier" -import { ProjectID } from "./project-id" -import { statics } from "./schema" +import { ascending } from "./identifier.js" +import { ProjectID } from "./project-id.js" +import { statics } from "./schema.js" export const ID = Schema.String.pipe( Schema.brand("PermissionSaved.ID"), diff --git a/packages/schema/src/permission-v1.ts b/packages/schema/src/permission-v1.ts index 558fec83da..6c754bc47f 100644 --- a/packages/schema/src/permission-v1.ts +++ b/packages/schema/src/permission-v1.ts @@ -1 +1 @@ -export * from "./v1/permission" +export * from "./v1/permission.js" diff --git a/packages/schema/src/permission.ts b/packages/schema/src/permission.ts index 25d776284f..de86fd1b1e 100644 --- a/packages/schema/src/permission.ts +++ b/packages/schema/src/permission.ts @@ -1,11 +1,11 @@ -export * as Permission from "./permission" +export * as Permission from "./permission.js" import { Schema } from "effect" -import { optional } from "./schema" -import { define, inventory } from "./event" -import { ascending } from "./identifier" -import { SessionID } from "./session-id" -import { statics } from "./schema" +import { optional } from "./schema.js" +import { define, inventory } from "./event.js" +import { ascending } from "./identifier.js" +import { SessionID } from "./session-id.js" +import { statics } from "./schema.js" export const ID = Schema.String.check(Schema.isStartsWith("per")).pipe( Schema.brand("PermissionV2.ID"), diff --git a/packages/schema/src/plugin.ts b/packages/schema/src/plugin.ts index 458408fd5b..3a9b8b55b1 100644 --- a/packages/schema/src/plugin.ts +++ b/packages/schema/src/plugin.ts @@ -1,7 +1,7 @@ -export * as Plugin from "./plugin" +export * as Plugin from "./plugin.js" import { Schema } from "effect" -import { define, inventory } from "./event" +import { define, inventory } from "./event.js" export const ID = Schema.String.pipe(Schema.brand("Plugin.ID")) export type ID = typeof ID.Type diff --git a/packages/schema/src/project-copy.ts b/packages/schema/src/project-copy.ts index 850b87bcb3..2f6688aef4 100644 --- a/packages/schema/src/project-copy.ts +++ b/packages/schema/src/project-copy.ts @@ -1,9 +1,9 @@ -export * as ProjectCopy from "./project-copy" +export * as ProjectCopy from "./project-copy.js" import { Schema } from "effect" -import { optional } from "./schema" -import { ProjectID } from "./project-id" -import { AbsolutePath } from "./schema" +import { optional } from "./schema.js" +import { ProjectID } from "./project-id.js" +import { AbsolutePath } from "./schema.js" export const StrategyID = Schema.Trim.pipe(Schema.check(Schema.isNonEmpty()), Schema.brand("ProjectCopy.StrategyID")) export type StrategyID = typeof StrategyID.Type diff --git a/packages/schema/src/project-directories.ts b/packages/schema/src/project-directories.ts index e6cbde8649..d80322287c 100644 --- a/packages/schema/src/project-directories.ts +++ b/packages/schema/src/project-directories.ts @@ -1,7 +1,7 @@ -export * as ProjectDirectories from "./project-directories" +export * as ProjectDirectories from "./project-directories.js" -import { define, inventory } from "./event" -import { Project } from "./project" +import { define, inventory } from "./event.js" +import { Project } from "./project.js" const Updated = define({ type: "project.directories.updated", diff --git a/packages/schema/src/project-id.ts b/packages/schema/src/project-id.ts index 8d2f061517..8114d35e0e 100644 --- a/packages/schema/src/project-id.ts +++ b/packages/schema/src/project-id.ts @@ -1,5 +1,5 @@ import { Schema } from "effect" -import { statics } from "./schema" +import { statics } from "./schema.js" export const ProjectID = Schema.String.pipe( Schema.brand("Project.ID"), diff --git a/packages/schema/src/project.ts b/packages/schema/src/project.ts index e854482de3..cd4347826d 100644 --- a/packages/schema/src/project.ts +++ b/packages/schema/src/project.ts @@ -1,9 +1,9 @@ -export * as Project from "./project" +export * as Project from "./project.js" import { Schema } from "effect" -import { define, inventory } from "./event" -import { AbsolutePath, NonNegativeInt, optional } from "./schema" -import { ProjectID } from "./project-id" +import { define, inventory } from "./event.js" +import { AbsolutePath, NonNegativeInt, optional } from "./schema.js" +import { ProjectID } from "./project-id.js" export const ID = ProjectID export type ID = typeof ID.Type diff --git a/packages/schema/src/prompt-input.ts b/packages/schema/src/prompt-input.ts index f2a0d460df..d573f38555 100644 --- a/packages/schema/src/prompt-input.ts +++ b/packages/schema/src/prompt-input.ts @@ -1,8 +1,8 @@ -export * as PromptInput from "./prompt-input" +export * as PromptInput from "./prompt-input.js" import { Schema } from "effect" -import { AgentAttachment, Source } from "./prompt" -import { optional, statics } from "./schema" +import { AgentAttachment, Source } from "./prompt.js" +import { optional, statics } from "./schema.js" export interface FileAttachment extends Schema.Schema.Type {} export const FileAttachment = Schema.Struct({ diff --git a/packages/schema/src/prompt.ts b/packages/schema/src/prompt.ts index 376700cc7a..ffffebbdf7 100644 --- a/packages/schema/src/prompt.ts +++ b/packages/schema/src/prompt.ts @@ -1,6 +1,6 @@ import { Schema } from "effect" -import { optional } from "./schema" -import { statics } from "./schema" +import { optional } from "./schema.js" +import { statics } from "./schema.js" export interface Source extends Schema.Schema.Type {} export const Source = Schema.Struct({ diff --git a/packages/schema/src/provider.ts b/packages/schema/src/provider.ts index 51ff4b3791..2369d8a08e 100644 --- a/packages/schema/src/provider.ts +++ b/packages/schema/src/provider.ts @@ -1,9 +1,9 @@ -export * as Provider from "./provider" +export * as Provider from "./provider.js" import { Schema } from "effect" -import { optional } from "./schema" -import { Integration } from "./integration" -import { statics } from "./schema" +import { optional } from "./schema.js" +import { Integration } from "./integration.js" +import { statics } from "./schema.js" export const ID = Schema.String.pipe( Schema.brand("ProviderV2.ID"), diff --git a/packages/schema/src/pty-ticket.ts b/packages/schema/src/pty-ticket.ts index 9b258575a9..d584e9af02 100644 --- a/packages/schema/src/pty-ticket.ts +++ b/packages/schema/src/pty-ticket.ts @@ -1,7 +1,7 @@ -export * as PtyTicket from "./pty-ticket" +export * as PtyTicket from "./pty-ticket.js" import { Schema } from "effect" -import { PositiveInt } from "./schema" +import { PositiveInt } from "./schema.js" export const ConnectToken = Schema.Struct({ ticket: Schema.String, diff --git a/packages/schema/src/pty.ts b/packages/schema/src/pty.ts index 1392ece55f..58dc9cb833 100644 --- a/packages/schema/src/pty.ts +++ b/packages/schema/src/pty.ts @@ -1,10 +1,10 @@ -export * as Pty from "./pty" +export * as Pty from "./pty.js" import { Schema } from "effect" -import { optional } from "./schema" -import { define, inventory } from "./event" -import { ascending } from "./identifier" -import { NonNegativeInt, PositiveInt, statics } from "./schema" +import { optional } from "./schema.js" +import { define, inventory } from "./event.js" +import { ascending } from "./identifier.js" +import { NonNegativeInt, PositiveInt, statics } from "./schema.js" const IDSchema = Schema.String.check(Schema.isStartsWith("pty")).pipe(Schema.brand("PtyID")) diff --git a/packages/schema/src/question-v1.ts b/packages/schema/src/question-v1.ts index 4bb237244e..f270a083b5 100644 --- a/packages/schema/src/question-v1.ts +++ b/packages/schema/src/question-v1.ts @@ -1 +1 @@ -export * from "./v1/question" +export * from "./v1/question.js" diff --git a/packages/schema/src/question.ts b/packages/schema/src/question.ts index aba5ebfbaf..56fa7a277b 100644 --- a/packages/schema/src/question.ts +++ b/packages/schema/src/question.ts @@ -1,11 +1,11 @@ -export * as Question from "./question" +export * as Question from "./question.js" import { Schema } from "effect" -import { optional } from "./schema" -import { define, inventory } from "./event" -import { ascending } from "./identifier" -import { SessionID } from "./session-id" -import { statics } from "./schema" +import { optional } from "./schema.js" +import { define, inventory } from "./event.js" +import { ascending } from "./identifier.js" +import { SessionID } from "./session-id.js" +import { statics } from "./schema.js" export const ID = Schema.String.check(Schema.isStartsWith("que")).pipe( Schema.brand("QuestionV2.ID"), diff --git a/packages/schema/src/reference.ts b/packages/schema/src/reference.ts index 84b623a274..5d63bea9df 100644 --- a/packages/schema/src/reference.ts +++ b/packages/schema/src/reference.ts @@ -1,9 +1,9 @@ -export * as Reference from "./reference" +export * as Reference from "./reference.js" import { Schema } from "effect" -import { optional } from "./schema" -import { define, inventory } from "./event" -import { AbsolutePath } from "./schema" +import { optional } from "./schema.js" +import { define, inventory } from "./event.js" +import { AbsolutePath } from "./schema.js" const Updated = define({ type: "reference.updated", schema: {} }) export const Event = { Updated, Definitions: inventory(Updated) } diff --git a/packages/schema/src/revert.ts b/packages/schema/src/revert.ts index 05222d5398..ab211a60f3 100644 --- a/packages/schema/src/revert.ts +++ b/packages/schema/src/revert.ts @@ -1,9 +1,9 @@ -export * as Revert from "./revert" +export * as Revert from "./revert.js" import { Schema } from "effect" -import { optional } from "./schema" -import { NonNegativeInt, RelativePath } from "./schema" -import { SessionMessage } from "./session-message" +import { optional } from "./schema.js" +import { NonNegativeInt, RelativePath } from "./schema.js" +import { SessionMessage } from "./session-message.js" export const FileDiff = Schema.Struct({ path: RelativePath, diff --git a/packages/schema/src/server-event.ts b/packages/schema/src/server-event.ts index 9d8ac2d470..ec8599ad32 100644 --- a/packages/schema/src/server-event.ts +++ b/packages/schema/src/server-event.ts @@ -1,6 +1,6 @@ -export * as ServerEvent from "./server-event" +export * as ServerEvent from "./server-event.js" -import { Event } from "./event" +import { Event } from "./event.js" export const Connected = Event.define({ type: "server.connected", schema: {} }) export const Disposed = Event.define({ type: "global.disposed", schema: {} }) diff --git a/packages/schema/src/session-compaction-event.ts b/packages/schema/src/session-compaction-event.ts index ed1169ea67..56782fd5d5 100644 --- a/packages/schema/src/session-compaction-event.ts +++ b/packages/schema/src/session-compaction-event.ts @@ -1,7 +1,7 @@ -export * as SessionCompactionEvent from "./session-compaction-event" +export * as SessionCompactionEvent from "./session-compaction-event.js" -import { Event } from "./event" -import { SessionID } from "./session-id" +import { Event } from "./event.js" +import { SessionID } from "./session-id.js" export const Compacted = Event.define({ type: "session.compacted", diff --git a/packages/schema/src/session-delivery.ts b/packages/schema/src/session-delivery.ts index 9b678dabf9..d13964fda8 100644 --- a/packages/schema/src/session-delivery.ts +++ b/packages/schema/src/session-delivery.ts @@ -1,4 +1,4 @@ -export * as SessionDelivery from "./session-delivery" +export * as SessionDelivery from "./session-delivery.js" import { Schema } from "effect" diff --git a/packages/schema/src/session-event.ts b/packages/schema/src/session-event.ts index a38b240e07..ae955f4769 100644 --- a/packages/schema/src/session-event.ts +++ b/packages/schema/src/session-event.ts @@ -1,17 +1,17 @@ -export * as SessionEvent from "./session-event" +export * as SessionEvent from "./session-event.js" import { Schema } from "effect" -import { optional } from "./schema" -import { Event } from "./event" -import { ProviderMetadata, ToolContent } from "./llm" -import { Delivery } from "./session-delivery" -import { Model } from "./model" -import { DateTimeUtcFromMillis, NonNegativeInt, RelativePath } from "./schema" -import { FileAttachment, Prompt } from "./prompt" -import { SessionID } from "./session-id" -import { Location } from "./location" -import { SessionMessage } from "./session-message" -import { Revert } from "./revert" +import { optional } from "./schema.js" +import { Event } from "./event.js" +import { ProviderMetadata, ToolContent } from "./llm.js" +import { Delivery } from "./session-delivery.js" +import { Model } from "./model.js" +import { DateTimeUtcFromMillis, NonNegativeInt, RelativePath } from "./schema.js" +import { FileAttachment, Prompt } from "./prompt.js" +import { SessionID } from "./session-id.js" +import { Location } from "./location.js" +import { SessionMessage } from "./session-message.js" +import { Revert } from "./revert.js" export { FileAttachment } diff --git a/packages/schema/src/session-id.ts b/packages/schema/src/session-id.ts index 3603ebe703..ba0b48ce7e 100644 --- a/packages/schema/src/session-id.ts +++ b/packages/schema/src/session-id.ts @@ -1,6 +1,6 @@ import { Schema } from "effect" -import { descending } from "./identifier" -import { statics } from "./schema" +import { descending } from "./identifier.js" +import { statics } from "./schema.js" export const SessionID = Schema.String.check(Schema.isStartsWith("ses")).pipe( Schema.brand("SessionID"), diff --git a/packages/schema/src/session-input.ts b/packages/schema/src/session-input.ts index 40babac105..eefe68be2b 100644 --- a/packages/schema/src/session-input.ts +++ b/packages/schema/src/session-input.ts @@ -1,12 +1,12 @@ -export * as SessionInput from "./session-input" +export * as SessionInput from "./session-input.js" import { Schema } from "effect" -import { optional } from "./schema" -import { Prompt } from "./prompt" -import { DateTimeUtcFromMillis, NonNegativeInt } from "./schema" -import { SessionDelivery } from "./session-delivery" -import { SessionID } from "./session-id" -import { SessionMessage } from "./session-message" +import { optional } from "./schema.js" +import { Prompt } from "./prompt.js" +import { DateTimeUtcFromMillis, NonNegativeInt } from "./schema.js" +import { SessionDelivery } from "./session-delivery.js" +import { SessionID } from "./session-id.js" +import { SessionMessage } from "./session-message.js" export const Delivery = SessionDelivery.Delivery export type Delivery = SessionDelivery.Delivery diff --git a/packages/schema/src/session-message.ts b/packages/schema/src/session-message.ts index 63bdf5e7aa..318dbfa9c7 100644 --- a/packages/schema/src/session-message.ts +++ b/packages/schema/src/session-message.ts @@ -1,13 +1,13 @@ -export * as SessionMessage from "./session-message" +export * as SessionMessage from "./session-message.js" import { Schema } from "effect" -import { optional } from "./schema" -import { ProviderMetadata, ToolContent } from "./llm" -import { Model } from "./model" -import { FileAttachment, Prompt } from "./prompt" -import { DateTimeUtcFromMillis, RelativePath, statics } from "./schema" -import { SessionID } from "./session-id" -import { ascending } from "./identifier" +import { optional } from "./schema.js" +import { ProviderMetadata, ToolContent } from "./llm.js" +import { Model } from "./model.js" +import { FileAttachment, Prompt } from "./prompt.js" +import { DateTimeUtcFromMillis, RelativePath, statics } from "./schema.js" +import { SessionID } from "./session-id.js" +import { ascending } from "./identifier.js" export const ID = Schema.String.check(Schema.isStartsWith("msg_")).pipe( Schema.brand("Session.Message.ID"), diff --git a/packages/schema/src/session-status-event.ts b/packages/schema/src/session-status-event.ts index f6a3022bcb..331c58ba1c 100644 --- a/packages/schema/src/session-status-event.ts +++ b/packages/schema/src/session-status-event.ts @@ -1,10 +1,10 @@ -export * as SessionStatusEvent from "./session-status-event" +export * as SessionStatusEvent from "./session-status-event.js" import { Schema } from "effect" -import { optional } from "./schema" -import { Event } from "./event" -import { NonNegativeInt } from "./schema" -import { SessionID } from "./session-id" +import { optional } from "./schema.js" +import { Event } from "./event.js" +import { NonNegativeInt } from "./schema.js" +import { SessionID } from "./session-id.js" export const Info = Schema.Union([ Schema.Struct({ diff --git a/packages/schema/src/session-todo.ts b/packages/schema/src/session-todo.ts index 7f6a72bf00..f72abcd17e 100644 --- a/packages/schema/src/session-todo.ts +++ b/packages/schema/src/session-todo.ts @@ -1,8 +1,8 @@ -export * as SessionTodo from "./session-todo" +export * as SessionTodo from "./session-todo.js" import { Schema } from "effect" -import { define, inventory } from "./event" -import { SessionID } from "./session-id" +import { define, inventory } from "./event.js" +import { SessionID } from "./session-id.js" export const Info = Schema.Struct({ content: Schema.String.annotate({ description: "Brief description of the task" }), diff --git a/packages/schema/src/session-v1.ts b/packages/schema/src/session-v1.ts index 22455dd412..61d266d5f8 100644 --- a/packages/schema/src/session-v1.ts +++ b/packages/schema/src/session-v1.ts @@ -1 +1 @@ -export * from "./v1/session" +export * from "./v1/session.js" diff --git a/packages/schema/src/session.ts b/packages/schema/src/session.ts index 937705eeb2..2ae169c138 100644 --- a/packages/schema/src/session.ts +++ b/packages/schema/src/session.ts @@ -1,14 +1,14 @@ -export * as Session from "./session" +export * as Session from "./session.js" import { Schema } from "effect" -import { Agent } from "./agent" -import { Location } from "./location" -import { Model } from "./model" -import { Project } from "./project" -import { DateTimeUtcFromMillis, optional, RelativePath } from "./schema" -import { SessionEvent } from "./session-event" -import { SessionID } from "./session-id" -import { Revert } from "./revert" +import { Agent } from "./agent.js" +import { Location } from "./location.js" +import { Model } from "./model.js" +import { Project } from "./project.js" +import { DateTimeUtcFromMillis, optional, RelativePath } from "./schema.js" +import { SessionEvent } from "./session-event.js" +import { SessionID } from "./session-id.js" +import { Revert } from "./revert.js" export const ID = SessionID export type ID = SessionID diff --git a/packages/schema/src/shell.ts b/packages/schema/src/shell.ts index ac1fc86173..a627a15950 100644 --- a/packages/schema/src/shell.ts +++ b/packages/schema/src/shell.ts @@ -1,10 +1,10 @@ -export * as Shell from "./shell" +export * as Shell from "./shell.js" import { Schema } from "effect" -import { optional } from "./schema" -import { define, inventory } from "./event" -import { ascending } from "./identifier" -import { NonNegativeInt, statics } from "./schema" +import { optional } from "./schema.js" +import { define, inventory } from "./event.js" +import { ascending } from "./identifier.js" +import { NonNegativeInt, statics } from "./schema.js" const IDSchema = Schema.String.check(Schema.isStartsWith("sh_")).pipe(Schema.brand("ShellID")) diff --git a/packages/schema/src/skill.ts b/packages/schema/src/skill.ts index ec299180ed..ec654bff21 100644 --- a/packages/schema/src/skill.ts +++ b/packages/schema/src/skill.ts @@ -1,8 +1,8 @@ -export * as Skill from "./skill" +export * as Skill from "./skill.js" import { Schema } from "effect" -import { optional } from "./schema" -import { AbsolutePath } from "./schema" +import { optional } from "./schema.js" +import { AbsolutePath } from "./schema.js" export interface DirectorySource extends Schema.Schema.Type {} export const DirectorySource = Schema.Struct({ diff --git a/packages/schema/src/tui-event.ts b/packages/schema/src/tui-event.ts index d468050346..0de2b6e369 100644 --- a/packages/schema/src/tui-event.ts +++ b/packages/schema/src/tui-event.ts @@ -1,10 +1,10 @@ -export * as TuiEvent from "./tui-event" +export * as TuiEvent from "./tui-event.js" import { Effect, Schema } from "effect" -import { optional } from "./schema" -import { Event } from "./event" -import { PositiveInt } from "./schema" -import { SessionID } from "./session-id" +import { optional } from "./schema.js" +import { Event } from "./event.js" +import { PositiveInt } from "./schema.js" +import { SessionID } from "./session-id.js" const DEFAULT_TOAST_DURATION = 5000 diff --git a/packages/schema/src/v1/legacy-event.ts b/packages/schema/src/v1/legacy-event.ts index d87902dad5..12037e104f 100644 --- a/packages/schema/src/v1/legacy-event.ts +++ b/packages/schema/src/v1/legacy-event.ts @@ -1,9 +1,9 @@ -export * as LegacyEvent from "./legacy-event" +export * as LegacyEvent from "./legacy-event.js" import { Schema } from "effect" -import { define, inventory } from "../event" -import { SessionID } from "../session-id" -import { SessionV1 } from "./session" +import { define, inventory } from "../event.js" +import { SessionID } from "../session-id.js" +import { SessionV1 } from "./session.js" export const CommandExecuted = define({ type: "command.executed", diff --git a/packages/schema/src/v1/permission.ts b/packages/schema/src/v1/permission.ts index 9096f4f249..af1d0098b8 100644 --- a/packages/schema/src/v1/permission.ts +++ b/packages/schema/src/v1/permission.ts @@ -1,11 +1,11 @@ -export * as PermissionV1 from "./permission" +export * as PermissionV1 from "./permission.js" import { Schema } from "effect" -import { define, inventory } from "../event" -import { ascending } from "../identifier" -import { Project } from "../project" -import { statics } from "../schema" -import { SessionID } from "../session-id" +import { define, inventory } from "../event.js" +import { ascending } from "../identifier.js" +import { Project } from "../project.js" +import { statics } from "../schema.js" +import { SessionID } from "../session-id.js" export const ID = Schema.String.check(Schema.isStartsWith("per")).pipe( Schema.brand("PermissionID"), diff --git a/packages/schema/src/v1/question.ts b/packages/schema/src/v1/question.ts index e566996472..557646c44e 100644 --- a/packages/schema/src/v1/question.ts +++ b/packages/schema/src/v1/question.ts @@ -1,11 +1,11 @@ -export * as QuestionV1 from "./question" +export * as QuestionV1 from "./question.js" import { Schema } from "effect" -import { define, inventory } from "../event" -import { ascending } from "../identifier" -import { statics } from "../schema" -import { SessionID } from "../session-id" -import { SessionV1 } from "./session" +import { define, inventory } from "../event.js" +import { ascending } from "../identifier.js" +import { statics } from "../schema.js" +import { SessionID } from "../session-id.js" +import { SessionV1 } from "./session.js" export const ID = Schema.String.check(Schema.isStartsWith("que")).pipe( Schema.brand("QuestionID"), diff --git a/packages/schema/src/v1/session.ts b/packages/schema/src/v1/session.ts index 75e9282f11..452ba3a186 100644 --- a/packages/schema/src/v1/session.ts +++ b/packages/schema/src/v1/session.ts @@ -1,16 +1,16 @@ -export * as SessionV1 from "./session" +export * as SessionV1 from "./session.js" import { Effect, Schema, Types } from "effect" -import { define, inventory } from "../event" -import { FileDiff } from "../file-diff" -import { Project } from "../project" -import { Provider } from "../provider" -import { Model } from "../model" -import { NonNegativeInt, optional, statics } from "../schema" -import { ascending } from "../identifier" -import { SessionID } from "../session-id" -import { WorkspaceID } from "../workspace-id" -import { PermissionV1 } from "./permission" +import { define, inventory } from "../event.js" +import { FileDiff } from "../file-diff.js" +import { Project } from "../project.js" +import { Provider } from "../provider.js" +import { Model } from "../model.js" +import { NonNegativeInt, optional, statics } from "../schema.js" +import { ascending } from "../identifier.js" +import { SessionID } from "../session-id.js" +import { WorkspaceID } from "../workspace-id.js" +import { PermissionV1 } from "./permission.js" const Timestamp = Schema.Finite.check(Schema.isGreaterThanOrEqualTo(0)) diff --git a/packages/schema/src/vcs-event.ts b/packages/schema/src/vcs-event.ts index 1c0d720dc4..2428b432b4 100644 --- a/packages/schema/src/vcs-event.ts +++ b/packages/schema/src/vcs-event.ts @@ -1,8 +1,8 @@ -export * as VcsEvent from "./vcs-event" +export * as VcsEvent from "./vcs-event.js" import { Schema } from "effect" -import { optional } from "./schema" -import { Event } from "./event" +import { optional } from "./schema.js" +import { Event } from "./event.js" export const BranchUpdated = Event.define({ type: "vcs.branch.updated", diff --git a/packages/schema/src/workspace-event.ts b/packages/schema/src/workspace-event.ts index 82e15e0771..6468a4410c 100644 --- a/packages/schema/src/workspace-event.ts +++ b/packages/schema/src/workspace-event.ts @@ -1,8 +1,8 @@ -export * as WorkspaceEvent from "./workspace-event" +export * as WorkspaceEvent from "./workspace-event.js" import { Schema } from "effect" -import { Event } from "./event" -import { WorkspaceID } from "./workspace-id" +import { Event } from "./event.js" +import { WorkspaceID } from "./workspace-id.js" export const ConnectionStatus = Schema.Struct({ workspaceID: WorkspaceID, diff --git a/packages/schema/src/workspace-id.ts b/packages/schema/src/workspace-id.ts index e43e9673f6..913fc8e2a2 100644 --- a/packages/schema/src/workspace-id.ts +++ b/packages/schema/src/workspace-id.ts @@ -1,6 +1,6 @@ import { Schema } from "effect" -import { ascending } from "./identifier" -import { statics } from "./schema" +import { ascending } from "./identifier.js" +import { statics } from "./schema.js" export const WorkspaceID = Schema.String.check(Schema.isStartsWith("wrk")).pipe( Schema.brand("WorkspaceV2.ID"), diff --git a/packages/schema/src/workspace.ts b/packages/schema/src/workspace.ts index ce35bf3b24..f52cc3024f 100644 --- a/packages/schema/src/workspace.ts +++ b/packages/schema/src/workspace.ts @@ -1,7 +1,7 @@ -export * as Workspace from "./workspace" +export * as Workspace from "./workspace.js" -import { WorkspaceEvent } from "./workspace-event" -import { WorkspaceID } from "./workspace-id" +import { WorkspaceEvent } from "./workspace-event.js" +import { WorkspaceID } from "./workspace-id.js" export const ID = WorkspaceID export type ID = WorkspaceID diff --git a/packages/schema/src/worktree-event.ts b/packages/schema/src/worktree-event.ts index c42ea5821e..2acb72fe7e 100644 --- a/packages/schema/src/worktree-event.ts +++ b/packages/schema/src/worktree-event.ts @@ -1,8 +1,8 @@ -export * as WorktreeEvent from "./worktree-event" +export * as WorktreeEvent from "./worktree-event.js" import { Schema } from "effect" -import { optional } from "./schema" -import { Event } from "./event" +import { optional } from "./schema.js" +import { Event } from "./event.js" export const Ready = Event.define({ type: "worktree.ready", diff --git a/packages/schema/test/compatibility.test.ts b/packages/schema/test/compatibility.test.ts index fa2cf265c4..386aa31226 100644 --- a/packages/schema/test/compatibility.test.ts +++ b/packages/schema/test/compatibility.test.ts @@ -1,5 +1,5 @@ import { describe, expect, test } from "bun:test" -import { FileSystem } from "../src/filesystem" +import { FileSystem } from "../src/filesystem.js" describe("schema compatibility", () => { test("moved class schemas remain constructible", () => { diff --git a/packages/schema/test/contract-hygiene.test.ts b/packages/schema/test/contract-hygiene.test.ts index e9455c350b..edad66725e 100644 --- a/packages/schema/test/contract-hygiene.test.ts +++ b/packages/schema/test/contract-hygiene.test.ts @@ -1,14 +1,14 @@ import { describe, expect, test } from "bun:test" import { Schema } from "effect" -import { Agent } from "../src/agent" -import { FileSystem } from "../src/filesystem" -import { Model } from "../src/model" -import { Project } from "../src/project" -import { Pty } from "../src/pty" -import { Question } from "../src/question" -import { Session } from "../src/session" -import { SessionTodo } from "../src/session-todo" -import { optional } from "../src/schema" +import { Agent } from "../src/agent.js" +import { FileSystem } from "../src/filesystem.js" +import { Model } from "../src/model.js" +import { Project } from "../src/project.js" +import { Pty } from "../src/pty.js" +import { Question } from "../src/question.js" +import { Session } from "../src/session.js" +import { SessionTodo } from "../src/session-todo.js" +import { optional } from "../src/schema.js" describe("contract hygiene", () => { test("optional properties preserve transformations and omit undefined while encoding", () => { diff --git a/packages/schema/test/event-manifest.test.ts b/packages/schema/test/event-manifest.test.ts index 230eb93be4..5243fb69e8 100644 --- a/packages/schema/test/event-manifest.test.ts +++ b/packages/schema/test/event-manifest.test.ts @@ -1,11 +1,11 @@ import { describe, expect, test } from "bun:test" -import { Agent, FileSystem, Integration, Permission, Project, Reference, Session, Workspace } from "../src" -import { EventManifest } from "../src/event-manifest" -import { IdeEvent } from "../src/ide-event" -import { SessionEvent } from "../src/session-event" -import { SessionTodo } from "../src/session-todo" -import { SessionV1 } from "../src/session-v1" -import { WorkspaceEvent } from "../src/workspace-event" +import { Agent, FileSystem, Integration, Permission, Project, Reference, Session, Workspace } from "../src/index.js" +import { EventManifest } from "../src/event-manifest.js" +import { IdeEvent } from "../src/ide-event.js" +import { SessionEvent } from "../src/session-event.js" +import { SessionTodo } from "../src/session-todo.js" +import { SessionV1 } from "../src/session-v1.js" +import { WorkspaceEvent } from "../src/workspace-event.js" describe("public event manifest", () => { test("owns the complete public event surface", () => { diff --git a/packages/schema/test/event.test.ts b/packages/schema/test/event.test.ts index 380faa5a4a..b643b0e601 100644 --- a/packages/schema/test/event.test.ts +++ b/packages/schema/test/event.test.ts @@ -1,6 +1,6 @@ import { describe, expect, test } from "bun:test" import { Schema } from "effect" -import { Event } from "../src/event" +import { Event } from "../src/event.js" describe("public event schemas", () => { test("definition is pure", () => { diff --git a/packages/schema/test/legacy-event.test.ts b/packages/schema/test/legacy-event.test.ts index e43c5681f2..c9c8f56e49 100644 --- a/packages/schema/test/legacy-event.test.ts +++ b/packages/schema/test/legacy-event.test.ts @@ -1,9 +1,9 @@ import { describe, expect, test } from "bun:test" -import { LegacyEvent } from "../src/legacy-event" -import { PermissionV1 } from "../src/permission-v1" -import { QuestionV1 } from "../src/question-v1" -import { Project } from "../src/project" -import { SessionV1 } from "../src/session-v1" +import { LegacyEvent } from "../src/legacy-event.js" +import { PermissionV1 } from "../src/permission-v1.js" +import { QuestionV1 } from "../src/question-v1.js" +import { Project } from "../src/project.js" +import { SessionV1 } from "../src/session-v1.js" describe("legacy public event schemas", () => { test("owns all SessionV1 definitions", () => { diff --git a/packages/schema/test/v1-isolation.test.ts b/packages/schema/test/v1-isolation.test.ts index 2710d85567..37614c2d3c 100644 --- a/packages/schema/test/v1-isolation.test.ts +++ b/packages/schema/test/v1-isolation.test.ts @@ -1,12 +1,12 @@ import { expect, test } from "bun:test" -import { LegacyEvent } from "../src/legacy-event" -import { PermissionV1 } from "../src/permission-v1" -import { QuestionV1 } from "../src/question-v1" -import { SessionV1 } from "../src/session-v1" -import { LegacyEvent as IsolatedLegacyEvent } from "../src/v1/legacy-event" -import { PermissionV1 as IsolatedPermissionV1 } from "../src/v1/permission" -import { QuestionV1 as IsolatedQuestionV1 } from "../src/v1/question" -import { SessionV1 as IsolatedSessionV1 } from "../src/v1/session" +import { LegacyEvent } from "../src/legacy-event.js" +import { PermissionV1 } from "../src/permission-v1.js" +import { QuestionV1 } from "../src/question-v1.js" +import { SessionV1 } from "../src/session-v1.js" +import { LegacyEvent as IsolatedLegacyEvent } from "../src/v1/legacy-event.js" +import { PermissionV1 as IsolatedPermissionV1 } from "../src/v1/permission.js" +import { QuestionV1 as IsolatedQuestionV1 } from "../src/v1/question.js" +import { SessionV1 as IsolatedSessionV1 } from "../src/v1/session.js" test("compatibility entrypoints preserve isolated V1 schema identity", () => { expect(LegacyEvent).toBe(IsolatedLegacyEvent) diff --git a/packages/schema/tsconfig.build.json b/packages/schema/tsconfig.build.json new file mode 100644 index 0000000000..e235ae78cf --- /dev/null +++ b/packages/schema/tsconfig.build.json @@ -0,0 +1,11 @@ +{ + "$schema": "https://json.schemastore.org/tsconfig", + "extends": "./tsconfig.json", + "compilerOptions": { + "rootDir": "src", + "outDir": "dist", + "noEmit": false, + "declaration": true + }, + "include": ["src"] +} diff --git a/packages/schema/tsconfig.json b/packages/schema/tsconfig.json index 00ef125468..189db6f3e9 100644 --- a/packages/schema/tsconfig.json +++ b/packages/schema/tsconfig.json @@ -3,6 +3,10 @@ "extends": "@tsconfig/bun/tsconfig.json", "compilerOptions": { "lib": ["ESNext", "DOM", "DOM.Iterable"], + "module": "NodeNext", + "moduleResolution": "NodeNext", + "allowImportingTsExtensions": false, + "allowJs": false, "noUncheckedIndexedAccess": false } } diff --git a/packages/script/package.json b/packages/script/package.json index aa0d2f563f..be46b963c0 100644 --- a/packages/script/package.json +++ b/packages/script/package.json @@ -1,6 +1,7 @@ { "$schema": "https://json.schemastore.org/package", "name": "@opencode-ai/script", + "type": "module", "license": "MIT", "dependencies": { "semver": "^7.6.3" diff --git a/script/publish.ts b/script/publish.ts index 0dad7a099b..b1845a6023 100755 --- a/script/publish.ts +++ b/script/publish.ts @@ -35,6 +35,9 @@ if (Script.release && !Script.preview) { await prepareReleaseFiles() +console.log("\n=== schema ===\n") +await $`bun ./packages/schema/script/publish.ts` + console.log("\n=== cli ===\n") await $`bun ./packages/cli/script/publish.ts`