/
Alex_Ural
/
opencode
Обзор
Документация
Войти
/
Alex_Ural
/
opencode
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
Безопасность
dev
packages/core/src/config/plugin/skill.ts
50 строк
2 KB
Kit Langton
refactor(schema): extract shared public schemas (#33571)
24 июн 2026, 05:31
Не верифицирован
24 июн 2026, 05:31
516cfe4
Код
Авторство
О чём код?
export * as ConfigSkillPlugin from "./skill" import { define } from "../../plugin/internal" import path from "path" import { Effect } from "effect" import { Config } from "../../config" import { AbsolutePath } from "../../schema" import { SkillV2 } from "../../skill" import { Global } from "../../global" import { Location } from "../../location" export const Plugin = define({ id: "config-skill", effect: Effect.fn(function* (ctx) { const config = yield* Config.Service const global = yield* Global.Service const location = yield* Location.Service yield* ctx.skill.transform( Effect.fn(function* (draft) { 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 ?? []) : [])) for (const directory of directories) { draft.source( SkillV2.DirectorySource.make({ type: "directory", path: AbsolutePath.make(path.join(directory, "skill")) }), ) draft.source( SkillV2.DirectorySource.make({ type: "directory", path: AbsolutePath.make(path.join(directory, "skills")), }), ) } for (const item of items) { if (URL.canParse(item) && /^(https?:)$/.test(new URL(item).protocol)) { draft.source(SkillV2.UrlSource.make({ type: "url", url: item })) continue } const expanded = item.startsWith("~/") ? path.join(global.home, item.slice(2)) : item draft.source( SkillV2.DirectorySource.make({ type: "directory", path: AbsolutePath.make(path.isAbsolute(expanded) ? expanded : path.join(location.directory, expanded)), }), ) } }), ) }), })