mirror of
https://github.com/anomalyco/opencode.git
synced 2026-08-10 21:53:37 +00:00
43 lines
1.4 KiB
TypeScript
43 lines
1.4 KiB
TypeScript
export * as FileSystem from "./filesystem.js"
|
|
|
|
import { Schema } from "effect"
|
|
import { optional } from "./schema.js"
|
|
import { ephemeral, inventory } from "./event.js"
|
|
import { NonNegativeInt, PositiveInt, RelativePath } from "./schema.js"
|
|
|
|
const Changed = ephemeral({
|
|
type: "filesystem.changed",
|
|
schema: {
|
|
file: Schema.String,
|
|
event: Schema.Literals(["add", "change", "unlink"]),
|
|
},
|
|
})
|
|
export const Event = { Changed, Definitions: inventory(Changed) }
|
|
|
|
export interface Entry extends Schema.Schema.Type<typeof Entry> {}
|
|
export const Entry = Schema.Struct({
|
|
path: RelativePath,
|
|
type: Schema.Literals(["file", "directory"]),
|
|
}).annotate({ identifier: "FileSystem.Entry" })
|
|
|
|
export interface Submatch extends Schema.Schema.Type<typeof Submatch> {}
|
|
export const Submatch = Schema.Struct({
|
|
text: Schema.String,
|
|
start: NonNegativeInt,
|
|
end: NonNegativeInt,
|
|
}).annotate({ identifier: "FileSystem.Submatch" })
|
|
|
|
export interface Match extends Schema.Schema.Type<typeof Match> {}
|
|
export const Match = Schema.Struct({
|
|
entry: Entry,
|
|
line: PositiveInt,
|
|
offset: NonNegativeInt,
|
|
text: Schema.String,
|
|
submatches: Schema.Array(Submatch),
|
|
}).annotate({ identifier: "FileSystem.Match" })
|
|
|
|
export class FindInput extends Schema.Class<FindInput>("FileSystem.FindInput")({
|
|
query: Schema.String,
|
|
type: Schema.Literals(["file", "directory"]).pipe(optional),
|
|
limit: PositiveInt.pipe(optional),
|
|
}) {}
|