Buckets:
| export * as ConfigSkillPlugin from "./skill" | |
| import path from "path" | |
| import { Effect } from "effect" | |
| import { Config } from "../../config" | |
| import { Global } from "../../global" | |
| import { Location } from "../../location" | |
| import { PluginV2 } from "../../plugin" | |
| import { AbsolutePath } from "../../schema" | |
| import { SkillV2 } from "../../skill" | |
| export const Plugin = PluginV2.define({ | |
| id: PluginV2.ID.make("config-skill"), | |
| effect: Effect.gen(function* () { | |
| const config = yield* Config.Service | |
| const global = yield* Global.Service | |
| const location = yield* Location.Service | |
| const skill = yield* SkillV2.Service | |
| const transform = yield* skill.transform() | |
| const entries = yield* config.entries() | |
| const directories = entries.flatMap((entry) => (entry.type === "directory" ? [entry.path] : [])) | |
| const items = entries.flatMap((entry) => (entry.type === "document" ? (entry.info.skills ?? []) : [])) | |
| yield* transform((editor) => { | |
| for (const directory of directories) { | |
| editor.source( | |
| new SkillV2.DirectorySource({ type: "directory", path: AbsolutePath.make(path.join(directory, "skill")) }), | |
| ) | |
| editor.source( | |
| new SkillV2.DirectorySource({ type: "directory", path: AbsolutePath.make(path.join(directory, "skills")) }), | |
| ) | |
| } | |
| for (const item of items) { | |
| if (URL.canParse(item) && /^(https?:)$/.test(new URL(item).protocol)) { | |
| editor.source(new SkillV2.UrlSource({ type: "url", url: item })) | |
| continue | |
| } | |
| const expanded = item.startsWith("~/") ? path.join(global.home, item.slice(2)) : item | |
| editor.source( | |
| new SkillV2.DirectorySource({ | |
| type: "directory", | |
| path: AbsolutePath.make(path.isAbsolute(expanded) ? expanded : path.join(location.directory, expanded)), | |
| }), | |
| ) | |
| } | |
| }) | |
| }), | |
| }) | |
Xet Storage Details
- Size:
- 1.89 kB
- Xet hash:
- d9b761dfd4599e3b71605fe13fd1e6ae193800afb3b0479918c6521e79b76061
·
Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.