Download packages/core/src/plugin/internal.ts from SaylorTwift/opencode: direct link, hf CLI and curl.
- Browser
- Download file 5.36 kB
-
https://huggingface.co/SaylorTwift/opencode/resolve/main/packages/core/src/plugin/internal.ts
- Command line
-
hf download hf://SaylorTwift/opencode/packages/core/src/plugin/internal.ts
-
curl -L -o internal.ts https://huggingface.co/SaylorTwift/opencode/resolve/main/packages/core/src/plugin/internal.ts
5.36 kB
| export * as PluginInternal from "./internal" | |
| import { makeLocationNode } from "../effect/app-node" | |
| import { httpClient } from "../effect/app-node-platform" | |
| import type { PluginContext } from "@opencode-ai/plugin/v2/effect" | |
| import { Effect, Layer, Scope } from "effect" | |
| import { AgentV2 } from "../agent" | |
| import { Catalog } from "../catalog" | |
| import { CommandV2 } from "../command" | |
| import { Config } from "../config" | |
| import { ConfigAgentPlugin } from "../config/plugin/agent" | |
| import { ConfigCommandPlugin } from "../config/plugin/command" | |
| import { ConfigExternalPlugin } from "../config/plugin/external" | |
| import { ConfigProviderPlugin } from "../config/plugin/provider" | |
| import { ConfigReferencePlugin } from "../config/plugin/reference" | |
| import { ConfigSkillPlugin } from "../config/plugin/skill" | |
| import { EventV2 } from "../event" | |
| import { FileSystem } from "../filesystem" | |
| import { FSUtil } from "../fs-util" | |
| import { Global } from "../global" | |
| import { Integration } from "../integration" | |
| import { Location } from "../location" | |
| import { ModelsDev } from "../models-dev" | |
| import { Npm } from "../npm" | |
| import { PluginV2 } from "../plugin" | |
| import { Reference } from "../reference" | |
| import { SkillV2 } from "../skill" | |
| import { State } from "../state" | |
| import { FetchHttpClient, HttpClient } from "effect/unstable/http" | |
| import { AgentPlugin } from "./agent" | |
| import { CommandPlugin } from "./command" | |
| import { ModelsDevPlugin } from "./models-dev" | |
| import { ProviderPlugins } from "./provider" | |
| import { SkillPlugin } from "./skill" | |
| import { VariantPlugin } from "./variant" | |
| export type Requirements = | |
| | AgentV2.Service | |
| | Catalog.Service | |
| | CommandV2.Service | |
| | Config.Service | |
| | EventV2.Service | |
| | FileSystem.Service | |
| | FSUtil.Service | |
| | Global.Service | |
| | HttpClient.HttpClient | |
| | Integration.Service | |
| | Location.Service | |
| | ModelsDev.Service | |
| | Npm.Service | |
| | Reference.Service | |
| | SkillV2.Service | |
| export interface Plugin<R = never> { | |
| readonly id: string | |
| readonly effect: (context: PluginContext) => Effect.Effect<void, never, R | Scope.Scope> | |
| } | |
| export function define<R>(plugin: Plugin<R>) { | |
| return plugin | |
| } | |
| const layer = Layer.effectDiscard( | |
| Effect.gen(function* () { | |
| const catalog = yield* Catalog.Service | |
| const commands = yield* CommandV2.Service | |
| const plugin = yield* PluginV2.Service | |
| const integration = yield* Integration.Service | |
| const agents = yield* AgentV2.Service | |
| const config = yield* Config.Service | |
| const location = yield* Location.Service | |
| const modelsDev = yield* ModelsDev.Service | |
| const npm = yield* Npm.Service | |
| const events = yield* EventV2.Service | |
| const fs = yield* FSUtil.Service | |
| const filesystem = yield* FileSystem.Service | |
| const global = yield* Global.Service | |
| const http = yield* HttpClient.HttpClient | |
| const skill = yield* SkillV2.Service | |
| const reference = yield* Reference.Service | |
| const add = <R>(input: Plugin<R>) => { | |
| const loaded = { | |
| id: input.id, | |
| effect: (context: PluginContext) => | |
| input | |
| .effect(context) | |
| .pipe( | |
| Effect.provideService(Catalog.Service, catalog), | |
| Effect.provideService(CommandV2.Service, commands), | |
| Effect.provideService(Integration.Service, integration), | |
| Effect.provideService(AgentV2.Service, agents), | |
| Effect.provideService(Config.Service, config), | |
| Effect.provideService(Location.Service, location), | |
| Effect.provideService(ModelsDev.Service, modelsDev), | |
| Effect.provideService(Npm.Service, npm), | |
| Effect.provideService(EventV2.Service, events), | |
| Effect.provideService(FSUtil.Service, fs), | |
| Effect.provideService(FileSystem.Service, filesystem), | |
| Effect.provideService(Global.Service, global), | |
| Effect.provideService(HttpClient.HttpClient, http), | |
| Effect.provideService(SkillV2.Service, skill), | |
| Effect.provideService(Reference.Service, reference), | |
| ), | |
| } | |
| return plugin.add(PluginV2.ID.make(loaded.id), loaded.effect) | |
| } | |
| yield* State.batch( | |
| Effect.gen(function* () { | |
| yield* add(ConfigReferencePlugin.Plugin) | |
| yield* add(AgentPlugin.Plugin) | |
| yield* add(CommandPlugin.Plugin) | |
| yield* add(SkillPlugin.Plugin) | |
| yield* add(ModelsDevPlugin) | |
| yield* add(ConfigAgentPlugin.Plugin) | |
| yield* add(ConfigCommandPlugin.Plugin) | |
| yield* add(ConfigSkillPlugin.Plugin) | |
| for (const item of ProviderPlugins) yield* add(item) | |
| yield* add(ConfigExternalPlugin.Plugin) | |
| yield* add(ConfigProviderPlugin.Plugin) | |
| yield* add(VariantPlugin.Plugin) | |
| }), | |
| ).pipe(Effect.withSpan("PluginInternal.boot"), Effect.forkScoped({ startImmediately: true })) | |
| }), | |
| ) | |
| export const locationLayer = layer.pipe( | |
| Layer.provideMerge(Config.locationLayer), | |
| Layer.provideMerge(FetchHttpClient.layer), | |
| ) | |
| export const node = makeLocationNode({ | |
| name: "plugin-internal", | |
| layer, | |
| deps: [ | |
| Catalog.node, | |
| CommandV2.node, | |
| PluginV2.node, | |
| Integration.node, | |
| AgentV2.node, | |
| Config.node, | |
| Location.node, | |
| ModelsDev.node, | |
| Npm.node, | |
| EventV2.node, | |
| FSUtil.node, | |
| FileSystem.node, | |
| Global.node, | |
| httpClient, | |
| SkillV2.node, | |
| Reference.node, | |
| ], | |
| }) | |