Buckets:
| export * as InstructionContext from "./instruction-context" | |
| import { Array, Effect, Layer, Schema } from "effect" | |
| import { isAbsolute, join, relative, sep } from "path" | |
| import { FSUtil } from "./fs-util" | |
| import { Flag } from "./flag/flag" | |
| import { Global } from "./global" | |
| import { Location } from "./location" | |
| import { AbsolutePath } from "./schema" | |
| import { SystemContext } from "./system-context/index" | |
| import { SystemContextRegistry } from "./system-context/registry" | |
| class File extends Schema.Class<File>("InstructionContext.File")({ | |
| path: AbsolutePath, | |
| content: Schema.String, | |
| }) {} | |
| const Files = Schema.Array(File) | |
| const key = SystemContext.Key.make("core/instructions") | |
| export const layer = Layer.effectDiscard( | |
| Effect.gen(function* () { | |
| const fs = yield* FSUtil.Service | |
| const global = yield* Global.Service | |
| const location = yield* Location.Service | |
| const registry = yield* SystemContextRegistry.Service | |
| const source = (value: ReadonlyArray<File> | SystemContext.Unavailable) => | |
| SystemContext.make({ | |
| key, | |
| codec: Schema.toCodecJson(Files), | |
| load: Effect.succeed(value), | |
| baseline: render, | |
| update: (_previous, current) => | |
| `These instructions replace all previously loaded ambient instructions.\n\n${render(current)}`, | |
| removed: () => "Previously loaded instructions no longer apply.", | |
| }) | |
| const observe = Effect.fn("InstructionContext.observe")(function* () { | |
| const start = FSUtil.resolve(location.directory) | |
| const stop = FSUtil.resolve(location.project.directory) | |
| const fromProject = relative(stop, start) | |
| const insideProject = | |
| fromProject === "" || (fromProject !== ".." && !fromProject.startsWith(`..${sep}`) && !isAbsolute(fromProject)) | |
| const discovered = new Set( | |
| (Flag.OPENCODE_DISABLE_PROJECT_CONFIG || !insideProject | |
| ? [] | |
| : yield* fs.up({ | |
| targets: ["AGENTS.md"], | |
| start, | |
| stop, | |
| }) | |
| ).map(FSUtil.resolve), | |
| ) | |
| const paths = Array.dedupe([FSUtil.resolve(join(global.config, "AGENTS.md")), ...discovered]) | |
| const files = yield* Effect.forEach( | |
| paths, | |
| (path) => | |
| fs | |
| .readFileStringSafe(path) | |
| .pipe( | |
| Effect.map((content) => | |
| content === undefined ? undefined : new File({ path: AbsolutePath.make(path), content }), | |
| ), | |
| ), | |
| { concurrency: "unbounded" }, | |
| ) | |
| if (files.some((file, index) => file === undefined && discovered.has(paths[index]))) | |
| return SystemContext.unavailable | |
| return files.filter((file): file is File => file !== undefined) | |
| }) | |
| yield* registry.register({ | |
| key, | |
| load: observe().pipe( | |
| Effect.map((files) => | |
| files === SystemContext.unavailable | |
| ? source(files) | |
| : files.length === 0 | |
| ? SystemContext.empty | |
| : source(files), | |
| ), | |
| Effect.catch(() => Effect.succeed(source(SystemContext.unavailable))), | |
| Effect.catchDefect(() => Effect.succeed(source(SystemContext.unavailable))), | |
| ), | |
| }) | |
| }), | |
| ) | |
| function render(files: ReadonlyArray<File>) { | |
| return files.map((file) => `Instructions from: ${file.path}\n${file.content}`).join("\n\n") | |
| } | |
Xet Storage Details
- Size:
- 3.35 kB
- Xet hash:
- a99f6d0b11b3109146d16ddd8d7c61f2cd7c2b20885f664d09550881fabaff36
·
Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.