/** * WorkspaceMutations mutation facade implementation. * * This is the sole public gateway for all settings and lockfile read/write * operations. It reads through `WorkspaceReadModel`, writes settings directly, * and commits lockfile snapshots through the lockfile module so cross-process * updates are serialized and merged per entry. It serializes in-process * mutations with one service-owned semaphore and transaction admission with a * distinct service-owned semaphore so nested mutation calls cannot deadlock. * No other service should perform settings or lockfile I/O in production; the per-service semaphores in * `settings/service.ts` and `lockfile/service.ts` have been removed. * * Supporting logic is split into focused modules: * - `source-metadata.ts` — source metadata derivation helpers * - `initialization.ts` — workspace initialization (agent detection, settings creation) * * @experimental This API is unstable and may change without notice. * @packageDocumentation */ import * as FileSystem from "effect/FileSystem"; import * as Path from "effect/Path"; import * as Option from "effect/Option"; import type { Handle } from "../extensions/handle.js"; import { type AppError } from "../app-error/index.js"; import { type HookEntry, type KnowledgeEntry, type InstructionsConfigValue, type McpServerEntry, type SkillEntry, type SubagentEntry, type PackEntry, type RuleEntry, type SourceHostConfig } from "../settings/index.js"; import { type ScopedReleaseAgeExcludePattern } from "../registry/index.js"; import * as Effect from "effect/Effect"; import * as Layer from "effect/Layer"; import { WorkspaceMutations, type WorkspaceMutationsOptions, type SetSkillArgs, type SetPackArgs, type SetRuleArgs, type SetHookArgs, type SetKnowledgeArgs, type SetMcpServerArgs, type SetSubagentArgs, type SkillPathSource, type ExtensionTarget, type WorkspaceTransactionRunner, type WorkspaceTransitionAcquirer } from "./service-interface.js"; import type { LockfileState } from "./augment-plan.js"; import { buildDesiredStateGraph } from "./desired-state-graph.js"; /** * Options for creating workspace mutations. */ export type WorkspaceLayerOptions = WorkspaceMutationsOptions; export declare const loadWorkspace: (options: WorkspaceLayerOptions) => Effect.Effect<{ scope: "user" | "project"; path: string & import("effect/Brand").Brand<"AbsolutePath">; baseDir: string & import("effect/Brand").Brand<"AbsolutePath">; layout: import("./layout.js").ProjectWorkspaceLayout | import("./layout.js").UserWorkspaceLayout; runTransaction: WorkspaceTransactionRunner; acquireTransition: WorkspaceTransitionAcquirer; getLockfileState: () => Effect.Effect; getDesiredStateGraph: (graphOptions?: Parameters<(graphOptions?: { readonly prospectivePacks?: Parameters[0]["prospectivePacks"]; }) => Effect.Effect>[0]) => Effect.Effect; getConfiguredSources: () => Effect.Effect, AppError>; getConfiguredSourceByName: (name: string) => Effect.Effect, AppError, never>; getRegistrySourceHosts: () => Effect.Effect<{ readonly name: string; readonly type: "registry"; readonly location: URL; }[], AppError, never>; records: { getInventory: (options: { readonly type?: import("../extensions/installable-types.ts").InstallableExtensionType; }) => Effect.Effect; getExtensionInventory: (type: "skill" | "mcp-server" | "subagent" | "rule" | "hook" | "knowledge" | "pack", options: { readonly agents?: ReadonlyArray; }) => Effect.Effect; rows: (type: "skill" | "mcp-server" | "subagent" | "rule" | "hook" | "knowledge" | "pack") => Effect.Effect, AppError>; }; getConfiguredOwner: () => Effect.Effect>, AppError, never>; getPublishDefaultVisibility: () => Effect.Effect, AppError, never>; getMinimumReleaseAge: () => Effect.Effect; getMinimumReleaseAgeExclude: () => Effect.Effect; addConfiguredSource: (source: SourceHostConfig) => Effect.Effect; getConfiguredSkillEntries: () => Effect.Effect<{ readonly [x: string]: { readonly enabled: boolean; readonly source: string; readonly origin?: "bundled"; }; }, AppError, never>; getConfiguredAgents: () => Effect.Effect; getInstructionsConfig: () => Effect.Effect, AppError, never>; setInstructionsConfig: (config: InstructionsConfigValue) => Effect.Effect; getConfiguredMcpServerEntries: () => Effect.Effect<{ readonly [x: string]: { readonly enabled: boolean; readonly env: { readonly [x: string]: string; }; readonly source: string; readonly kind?: "sourced" | undefined; readonly url?: string | undefined; readonly command?: string | undefined; readonly headers?: { readonly [x: string]: string; } | undefined; readonly agents?: readonly ("adal" | "aider-desk" | "amp" | "antigravity" | "antigravity-cli" | "augment" | "claude-code" | "cline" | "codearts-agent" | "codebuddy" | "codemaker" | "codestudio" | "codex" | "command-code" | "continue" | "cortex" | "crush" | "cursor" | "deepagents" | "devin" | "dexto" | "droid" | "firebender" | "forgecode" | "gemini-cli" | "github-copilot-cli" | "goose" | "grok-cli" | "hermes" | "ibm-bob" | "iflow-cli" | "junie" | "lingma" | "qoder-cn" | "kilo" | "kimi-cli" | "kiro-cli" | "kode" | "mcpjam" | "minimax-code" | "mistral-vibe" | "mux" | "neovate" | "openclaw" | "opencode" | "openhands" | "ona" | "pi" | "pochi" | "qoder" | "qwen-code" | "replit" | "roo" | "rovodev" | "tabnine-cli" | "trae-cn" | "trae" | "warp" | "windsurf" | "zencoder" | "zed" | "zenflow")[] | undefined; readonly args?: readonly string[] | undefined; } | { readonly kind: "inline"; readonly enabled: boolean; readonly env: { readonly [x: string]: string; }; readonly url?: string | undefined; readonly command?: string | undefined; readonly headers?: { readonly [x: string]: string; } | undefined; readonly source?: undefined; readonly agents?: readonly ("adal" | "aider-desk" | "amp" | "antigravity" | "antigravity-cli" | "augment" | "claude-code" | "cline" | "codearts-agent" | "codebuddy" | "codemaker" | "codestudio" | "codex" | "command-code" | "continue" | "cortex" | "crush" | "cursor" | "deepagents" | "devin" | "dexto" | "droid" | "firebender" | "forgecode" | "gemini-cli" | "github-copilot-cli" | "goose" | "grok-cli" | "hermes" | "ibm-bob" | "iflow-cli" | "junie" | "lingma" | "qoder-cn" | "kilo" | "kimi-cli" | "kiro-cli" | "kode" | "mcpjam" | "minimax-code" | "mistral-vibe" | "mux" | "neovate" | "openclaw" | "opencode" | "openhands" | "ona" | "pi" | "pochi" | "qoder" | "qwen-code" | "replit" | "roo" | "rovodev" | "tabnine-cli" | "trae-cn" | "trae" | "warp" | "windsurf" | "zencoder" | "zed" | "zenflow")[] | undefined; readonly args?: readonly string[] | undefined; }; }, AppError, never>; getConfiguredRuleEntries: () => Effect.Effect<{ readonly [x: string]: { readonly source: string; readonly enabled: boolean; }; }, AppError, never>; getLockedRules: () => Effect.Effect<{ readonly [x: string]: { readonly type: "github"; readonly owner: string; readonly sourceName: string; readonly repo: string; readonly extensionType: "rule"; readonly sourceType: "github"; readonly packageFormat: "agentxm"; readonly endpoint: URL; readonly workspaceName: string & import("effect/Brand").Brand<"ExtensionName">; readonly packageOwner: string & import("effect/Brand").Brand<"Handle">; readonly packageName: string & import("effect/Brand").Brand<"ExtensionName">; readonly resolvedCommit: string; readonly resolvedTree: string; readonly contentIdentity: string & import("effect/Brand").Brand<"SourceHash">; readonly treeIntegrity: string & import("effect/Brand").Brand<"TreeIntegrity">; readonly path?: string | undefined; readonly ref?: string | undefined; } | { readonly type: "gitlab"; readonly owner: string; readonly sourceName: string; readonly repo: string; readonly extensionType: "rule"; readonly sourceType: "gitlab"; readonly packageFormat: "agentxm"; readonly endpoint: URL; readonly workspaceName: string & import("effect/Brand").Brand<"ExtensionName">; readonly packageOwner: string & import("effect/Brand").Brand<"Handle">; readonly packageName: string & import("effect/Brand").Brand<"ExtensionName">; readonly resolvedCommit: string; readonly resolvedTree: string; readonly contentIdentity: string & import("effect/Brand").Brand<"SourceHash">; readonly treeIntegrity: string & import("effect/Brand").Brand<"TreeIntegrity">; readonly path?: string | undefined; readonly ref?: string | undefined; } | { readonly type: "bitbucket"; readonly owner: string; readonly sourceName: string; readonly repo: string; readonly extensionType: "rule"; readonly sourceType: "bitbucket"; readonly packageFormat: "agentxm"; readonly endpoint: URL; readonly workspaceName: string & import("effect/Brand").Brand<"ExtensionName">; readonly packageOwner: string & import("effect/Brand").Brand<"Handle">; readonly packageName: string & import("effect/Brand").Brand<"ExtensionName">; readonly resolvedCommit: string; readonly resolvedTree: string; readonly contentIdentity: string & import("effect/Brand").Brand<"SourceHash">; readonly treeIntegrity: string & import("effect/Brand").Brand<"TreeIntegrity">; readonly path?: string | undefined; readonly ref?: string | undefined; } | { readonly project: string; readonly type: "azurerepos"; readonly sourceName: string; readonly repo: string; readonly organization: string; readonly extensionType: "rule"; readonly sourceType: "azurerepos"; readonly packageFormat: "agentxm"; readonly endpoint: URL; readonly workspaceName: string & import("effect/Brand").Brand<"ExtensionName">; readonly packageOwner: string & import("effect/Brand").Brand<"Handle">; readonly packageName: string & import("effect/Brand").Brand<"ExtensionName">; readonly resolvedCommit: string; readonly resolvedTree: string; readonly contentIdentity: string & import("effect/Brand").Brand<"SourceHash">; readonly treeIntegrity: string & import("effect/Brand").Brand<"TreeIntegrity">; readonly path?: string | undefined; readonly ref?: string | undefined; } | { readonly url: string; readonly type: "git"; readonly sourceName: "git"; readonly extensionType: "rule"; readonly sourceType: "git"; readonly packageFormat: "agentxm"; readonly workspaceName: string & import("effect/Brand").Brand<"ExtensionName">; readonly packageOwner: string & import("effect/Brand").Brand<"Handle">; readonly packageName: string & import("effect/Brand").Brand<"ExtensionName">; readonly resolvedCommit: string; readonly resolvedTree: string; readonly contentIdentity: string & import("effect/Brand").Brand<"SourceHash">; readonly treeIntegrity: string & import("effect/Brand").Brand<"TreeIntegrity">; readonly path?: string | undefined; readonly ref?: string | undefined; } | { readonly type: "local"; readonly sourceType: "local"; readonly sourceName: "local"; readonly extensionType: "rule"; readonly workspaceName: string & import("effect/Brand").Brand<"ExtensionName">; readonly packageFormat: "agentxm"; readonly packageOwner: string & import("effect/Brand").Brand<"Handle">; readonly packageName: string & import("effect/Brand").Brand<"ExtensionName">; readonly path: string; readonly contentIdentity: string & import("effect/Brand").Brand<"SourceHash">; readonly treeIntegrity: string & import("effect/Brand").Brand<"TreeIntegrity">; } | { readonly type: "registry"; readonly sourceType: "registry"; readonly endpoint: URL; readonly extensionType: "rule"; readonly workspaceName: string & import("effect/Brand").Brand<"ExtensionName">; readonly packageFormat: "agentxm"; readonly owner: string & import("effect/Brand").Brand<"Handle">; readonly name: string & import("effect/Brand").Brand<"ExtensionName">; readonly resolvedVersion: string & import("effect/Brand").Brand<"Version">; readonly integrity: string; readonly sourceName: string; readonly publisherBindingId: string; readonly treeIntegrity: string & import("effect/Brand").Brand<"TreeIntegrity">; }; }, AppError, never>; getLockedRuleEntry: (name: string) => Effect.Effect; readonly packageOwner: string & import("effect/Brand").Brand<"Handle">; readonly packageName: string & import("effect/Brand").Brand<"ExtensionName">; readonly resolvedCommit: string; readonly resolvedTree: string; readonly contentIdentity: string & import("effect/Brand").Brand<"SourceHash">; readonly treeIntegrity: string & import("effect/Brand").Brand<"TreeIntegrity">; readonly path?: string | undefined; readonly ref?: string | undefined; } | { readonly type: "gitlab"; readonly owner: string; readonly sourceName: string; readonly repo: string; readonly extensionType: "rule"; readonly sourceType: "gitlab"; readonly packageFormat: "agentxm"; readonly endpoint: URL; readonly workspaceName: string & import("effect/Brand").Brand<"ExtensionName">; readonly packageOwner: string & import("effect/Brand").Brand<"Handle">; readonly packageName: string & import("effect/Brand").Brand<"ExtensionName">; readonly resolvedCommit: string; readonly resolvedTree: string; readonly contentIdentity: string & import("effect/Brand").Brand<"SourceHash">; readonly treeIntegrity: string & import("effect/Brand").Brand<"TreeIntegrity">; readonly path?: string | undefined; readonly ref?: string | undefined; } | { readonly type: "bitbucket"; readonly owner: string; readonly sourceName: string; readonly repo: string; readonly extensionType: "rule"; readonly sourceType: "bitbucket"; readonly packageFormat: "agentxm"; readonly endpoint: URL; readonly workspaceName: string & import("effect/Brand").Brand<"ExtensionName">; readonly packageOwner: string & import("effect/Brand").Brand<"Handle">; readonly packageName: string & import("effect/Brand").Brand<"ExtensionName">; readonly resolvedCommit: string; readonly resolvedTree: string; readonly contentIdentity: string & import("effect/Brand").Brand<"SourceHash">; readonly treeIntegrity: string & import("effect/Brand").Brand<"TreeIntegrity">; readonly path?: string | undefined; readonly ref?: string | undefined; } | { readonly project: string; readonly type: "azurerepos"; readonly sourceName: string; readonly repo: string; readonly organization: string; readonly extensionType: "rule"; readonly sourceType: "azurerepos"; readonly packageFormat: "agentxm"; readonly endpoint: URL; readonly workspaceName: string & import("effect/Brand").Brand<"ExtensionName">; readonly packageOwner: string & import("effect/Brand").Brand<"Handle">; readonly packageName: string & import("effect/Brand").Brand<"ExtensionName">; readonly resolvedCommit: string; readonly resolvedTree: string; readonly contentIdentity: string & import("effect/Brand").Brand<"SourceHash">; readonly treeIntegrity: string & import("effect/Brand").Brand<"TreeIntegrity">; readonly path?: string | undefined; readonly ref?: string | undefined; } | { readonly url: string; readonly type: "git"; readonly sourceName: "git"; readonly extensionType: "rule"; readonly sourceType: "git"; readonly packageFormat: "agentxm"; readonly workspaceName: string & import("effect/Brand").Brand<"ExtensionName">; readonly packageOwner: string & import("effect/Brand").Brand<"Handle">; readonly packageName: string & import("effect/Brand").Brand<"ExtensionName">; readonly resolvedCommit: string; readonly resolvedTree: string; readonly contentIdentity: string & import("effect/Brand").Brand<"SourceHash">; readonly treeIntegrity: string & import("effect/Brand").Brand<"TreeIntegrity">; readonly path?: string | undefined; readonly ref?: string | undefined; } | { readonly type: "local"; readonly sourceType: "local"; readonly sourceName: "local"; readonly extensionType: "rule"; readonly workspaceName: string & import("effect/Brand").Brand<"ExtensionName">; readonly packageFormat: "agentxm"; readonly packageOwner: string & import("effect/Brand").Brand<"Handle">; readonly packageName: string & import("effect/Brand").Brand<"ExtensionName">; readonly path: string; readonly contentIdentity: string & import("effect/Brand").Brand<"SourceHash">; readonly treeIntegrity: string & import("effect/Brand").Brand<"TreeIntegrity">; } | { readonly type: "registry"; readonly sourceType: "registry"; readonly endpoint: URL; readonly extensionType: "rule"; readonly workspaceName: string & import("effect/Brand").Brand<"ExtensionName">; readonly packageFormat: "agentxm"; readonly owner: string & import("effect/Brand").Brand<"Handle">; readonly name: string & import("effect/Brand").Brand<"ExtensionName">; readonly resolvedVersion: string & import("effect/Brand").Brand<"Version">; readonly integrity: string; readonly sourceName: string; readonly publisherBindingId: string; readonly treeIntegrity: string & import("effect/Brand").Brand<"TreeIntegrity">; }>, AppError, never>; setRule: ({ name, lockEntry, versionRange }: SetRuleArgs) => Effect.Effect; setRuleLock: ({ name, lockEntry }: SetRuleArgs) => Effect.Effect; removeRule: (name: string) => Effect.Effect; removeRuleSettings: (name: string) => Effect.Effect; removeRuleLock: (name: string) => Effect.Effect; updateRuleEntry: (name: string, updater: (entry: RuleEntry) => RuleEntry) => Effect.Effect; setRuleEntry: (name: string, entry: RuleEntry) => Effect.Effect; getConfiguredHookEntries: () => Effect.Effect<{ readonly [x: string]: { readonly source: string; readonly enabled: boolean; }; }, AppError, never>; getLockedHooks: () => Effect.Effect<{ readonly [x: string]: { readonly type: "github"; readonly owner: string; readonly sourceName: string; readonly repo: string; readonly extensionType: "hook"; readonly sourceType: "github"; readonly packageFormat: "agentxm"; readonly endpoint: URL; readonly workspaceName: string & import("effect/Brand").Brand<"ExtensionName">; readonly packageOwner: string & import("effect/Brand").Brand<"Handle">; readonly packageName: string & import("effect/Brand").Brand<"ExtensionName">; readonly resolvedCommit: string; readonly resolvedTree: string; readonly contentIdentity: string & import("effect/Brand").Brand<"SourceHash">; readonly treeIntegrity: string & import("effect/Brand").Brand<"TreeIntegrity">; readonly path?: string | undefined; readonly ref?: string | undefined; } | { readonly type: "gitlab"; readonly owner: string; readonly sourceName: string; readonly repo: string; readonly extensionType: "hook"; readonly sourceType: "gitlab"; readonly packageFormat: "agentxm"; readonly endpoint: URL; readonly workspaceName: string & import("effect/Brand").Brand<"ExtensionName">; readonly packageOwner: string & import("effect/Brand").Brand<"Handle">; readonly packageName: string & import("effect/Brand").Brand<"ExtensionName">; readonly resolvedCommit: string; readonly resolvedTree: string; readonly contentIdentity: string & import("effect/Brand").Brand<"SourceHash">; readonly treeIntegrity: string & import("effect/Brand").Brand<"TreeIntegrity">; readonly path?: string | undefined; readonly ref?: string | undefined; } | { readonly type: "bitbucket"; readonly owner: string; readonly sourceName: string; readonly repo: string; readonly extensionType: "hook"; readonly sourceType: "bitbucket"; readonly packageFormat: "agentxm"; readonly endpoint: URL; readonly workspaceName: string & import("effect/Brand").Brand<"ExtensionName">; readonly packageOwner: string & import("effect/Brand").Brand<"Handle">; readonly packageName: string & import("effect/Brand").Brand<"ExtensionName">; readonly resolvedCommit: string; readonly resolvedTree: string; readonly contentIdentity: string & import("effect/Brand").Brand<"SourceHash">; readonly treeIntegrity: string & import("effect/Brand").Brand<"TreeIntegrity">; readonly path?: string | undefined; readonly ref?: string | undefined; } | { readonly project: string; readonly type: "azurerepos"; readonly sourceName: string; readonly repo: string; readonly organization: string; readonly extensionType: "hook"; readonly sourceType: "azurerepos"; readonly packageFormat: "agentxm"; readonly endpoint: URL; readonly workspaceName: string & import("effect/Brand").Brand<"ExtensionName">; readonly packageOwner: string & import("effect/Brand").Brand<"Handle">; readonly packageName: string & import("effect/Brand").Brand<"ExtensionName">; readonly resolvedCommit: string; readonly resolvedTree: string; readonly contentIdentity: string & import("effect/Brand").Brand<"SourceHash">; readonly treeIntegrity: string & import("effect/Brand").Brand<"TreeIntegrity">; readonly path?: string | undefined; readonly ref?: string | undefined; } | { readonly url: string; readonly type: "git"; readonly sourceName: "git"; readonly extensionType: "hook"; readonly sourceType: "git"; readonly packageFormat: "agentxm"; readonly workspaceName: string & import("effect/Brand").Brand<"ExtensionName">; readonly packageOwner: string & import("effect/Brand").Brand<"Handle">; readonly packageName: string & import("effect/Brand").Brand<"ExtensionName">; readonly resolvedCommit: string; readonly resolvedTree: string; readonly contentIdentity: string & import("effect/Brand").Brand<"SourceHash">; readonly treeIntegrity: string & import("effect/Brand").Brand<"TreeIntegrity">; readonly path?: string | undefined; readonly ref?: string | undefined; } | { readonly type: "local"; readonly sourceType: "local"; readonly sourceName: "local"; readonly extensionType: "hook"; readonly workspaceName: string & import("effect/Brand").Brand<"ExtensionName">; readonly packageFormat: "agentxm"; readonly packageOwner: string & import("effect/Brand").Brand<"Handle">; readonly packageName: string & import("effect/Brand").Brand<"ExtensionName">; readonly path: string; readonly contentIdentity: string & import("effect/Brand").Brand<"SourceHash">; readonly treeIntegrity: string & import("effect/Brand").Brand<"TreeIntegrity">; } | { readonly type: "registry"; readonly sourceType: "registry"; readonly endpoint: URL; readonly extensionType: "hook"; readonly workspaceName: string & import("effect/Brand").Brand<"ExtensionName">; readonly packageFormat: "agentxm"; readonly owner: string & import("effect/Brand").Brand<"Handle">; readonly name: string & import("effect/Brand").Brand<"ExtensionName">; readonly resolvedVersion: string & import("effect/Brand").Brand<"Version">; readonly integrity: string; readonly sourceName: string; readonly publisherBindingId: string; readonly treeIntegrity: string & import("effect/Brand").Brand<"TreeIntegrity">; }; }, AppError, never>; getLockedHookEntry: (name: string) => Effect.Effect; readonly packageOwner: string & import("effect/Brand").Brand<"Handle">; readonly packageName: string & import("effect/Brand").Brand<"ExtensionName">; readonly resolvedCommit: string; readonly resolvedTree: string; readonly contentIdentity: string & import("effect/Brand").Brand<"SourceHash">; readonly treeIntegrity: string & import("effect/Brand").Brand<"TreeIntegrity">; readonly path?: string | undefined; readonly ref?: string | undefined; } | { readonly type: "gitlab"; readonly owner: string; readonly sourceName: string; readonly repo: string; readonly extensionType: "hook"; readonly sourceType: "gitlab"; readonly packageFormat: "agentxm"; readonly endpoint: URL; readonly workspaceName: string & import("effect/Brand").Brand<"ExtensionName">; readonly packageOwner: string & import("effect/Brand").Brand<"Handle">; readonly packageName: string & import("effect/Brand").Brand<"ExtensionName">; readonly resolvedCommit: string; readonly resolvedTree: string; readonly contentIdentity: string & import("effect/Brand").Brand<"SourceHash">; readonly treeIntegrity: string & import("effect/Brand").Brand<"TreeIntegrity">; readonly path?: string | undefined; readonly ref?: string | undefined; } | { readonly type: "bitbucket"; readonly owner: string; readonly sourceName: string; readonly repo: string; readonly extensionType: "hook"; readonly sourceType: "bitbucket"; readonly packageFormat: "agentxm"; readonly endpoint: URL; readonly workspaceName: string & import("effect/Brand").Brand<"ExtensionName">; readonly packageOwner: string & import("effect/Brand").Brand<"Handle">; readonly packageName: string & import("effect/Brand").Brand<"ExtensionName">; readonly resolvedCommit: string; readonly resolvedTree: string; readonly contentIdentity: string & import("effect/Brand").Brand<"SourceHash">; readonly treeIntegrity: string & import("effect/Brand").Brand<"TreeIntegrity">; readonly path?: string | undefined; readonly ref?: string | undefined; } | { readonly project: string; readonly type: "azurerepos"; readonly sourceName: string; readonly repo: string; readonly organization: string; readonly extensionType: "hook"; readonly sourceType: "azurerepos"; readonly packageFormat: "agentxm"; readonly endpoint: URL; readonly workspaceName: string & import("effect/Brand").Brand<"ExtensionName">; readonly packageOwner: string & import("effect/Brand").Brand<"Handle">; readonly packageName: string & import("effect/Brand").Brand<"ExtensionName">; readonly resolvedCommit: string; readonly resolvedTree: string; readonly contentIdentity: string & import("effect/Brand").Brand<"SourceHash">; readonly treeIntegrity: string & import("effect/Brand").Brand<"TreeIntegrity">; readonly path?: string | undefined; readonly ref?: string | undefined; } | { readonly url: string; readonly type: "git"; readonly sourceName: "git"; readonly extensionType: "hook"; readonly sourceType: "git"; readonly packageFormat: "agentxm"; readonly workspaceName: string & import("effect/Brand").Brand<"ExtensionName">; readonly packageOwner: string & import("effect/Brand").Brand<"Handle">; readonly packageName: string & import("effect/Brand").Brand<"ExtensionName">; readonly resolvedCommit: string; readonly resolvedTree: string; readonly contentIdentity: string & import("effect/Brand").Brand<"SourceHash">; readonly treeIntegrity: string & import("effect/Brand").Brand<"TreeIntegrity">; readonly path?: string | undefined; readonly ref?: string | undefined; } | { readonly type: "local"; readonly sourceType: "local"; readonly sourceName: "local"; readonly extensionType: "hook"; readonly workspaceName: string & import("effect/Brand").Brand<"ExtensionName">; readonly packageFormat: "agentxm"; readonly packageOwner: string & import("effect/Brand").Brand<"Handle">; readonly packageName: string & import("effect/Brand").Brand<"ExtensionName">; readonly path: string; readonly contentIdentity: string & import("effect/Brand").Brand<"SourceHash">; readonly treeIntegrity: string & import("effect/Brand").Brand<"TreeIntegrity">; } | { readonly type: "registry"; readonly sourceType: "registry"; readonly endpoint: URL; readonly extensionType: "hook"; readonly workspaceName: string & import("effect/Brand").Brand<"ExtensionName">; readonly packageFormat: "agentxm"; readonly owner: string & import("effect/Brand").Brand<"Handle">; readonly name: string & import("effect/Brand").Brand<"ExtensionName">; readonly resolvedVersion: string & import("effect/Brand").Brand<"Version">; readonly integrity: string; readonly sourceName: string; readonly publisherBindingId: string; readonly treeIntegrity: string & import("effect/Brand").Brand<"TreeIntegrity">; }>, AppError, never>; setHook: ({ name, lockEntry, versionRange }: SetHookArgs) => Effect.Effect; setHookLock: ({ name, lockEntry }: SetHookArgs) => Effect.Effect; removeHook: (name: string) => Effect.Effect; removeHookSettings: (name: string) => Effect.Effect; removeHookLock: (name: string) => Effect.Effect; updateHookEntry: (name: string, updater: (entry: HookEntry) => HookEntry) => Effect.Effect; setHookEntry: (name: string, entry: HookEntry) => Effect.Effect; getConfiguredKnowledgeEntries: () => Effect.Effect<{ readonly [x: string]: { readonly enabled: boolean; readonly source: string; readonly instructionEntry?: boolean; }; }, AppError, never>; getKnowledgeDiscoveryConfig: () => Effect.Effect; getLockedKnowledge: () => Effect.Effect<{ readonly [x: string]: { readonly type: "github"; readonly owner: string; readonly sourceName: string; readonly repo: string; readonly extensionType: "knowledge"; readonly sourceType: "github"; readonly packageFormat: "agentxm"; readonly endpoint: URL; readonly workspaceName: string & import("effect/Brand").Brand<"ExtensionName">; readonly packageOwner: string & import("effect/Brand").Brand<"Handle">; readonly packageName: string & import("effect/Brand").Brand<"ExtensionName">; readonly resolvedCommit: string; readonly resolvedTree: string; readonly contentIdentity: string & import("effect/Brand").Brand<"SourceHash">; readonly treeIntegrity: string & import("effect/Brand").Brand<"TreeIntegrity">; readonly path?: string | undefined; readonly ref?: string | undefined; } | { readonly type: "gitlab"; readonly owner: string; readonly sourceName: string; readonly repo: string; readonly extensionType: "knowledge"; readonly sourceType: "gitlab"; readonly packageFormat: "agentxm"; readonly endpoint: URL; readonly workspaceName: string & import("effect/Brand").Brand<"ExtensionName">; readonly packageOwner: string & import("effect/Brand").Brand<"Handle">; readonly packageName: string & import("effect/Brand").Brand<"ExtensionName">; readonly resolvedCommit: string; readonly resolvedTree: string; readonly contentIdentity: string & import("effect/Brand").Brand<"SourceHash">; readonly treeIntegrity: string & import("effect/Brand").Brand<"TreeIntegrity">; readonly path?: string | undefined; readonly ref?: string | undefined; } | { readonly type: "bitbucket"; readonly owner: string; readonly sourceName: string; readonly repo: string; readonly extensionType: "knowledge"; readonly sourceType: "bitbucket"; readonly packageFormat: "agentxm"; readonly endpoint: URL; readonly workspaceName: string & import("effect/Brand").Brand<"ExtensionName">; readonly packageOwner: string & import("effect/Brand").Brand<"Handle">; readonly packageName: string & import("effect/Brand").Brand<"ExtensionName">; readonly resolvedCommit: string; readonly resolvedTree: string; readonly contentIdentity: string & import("effect/Brand").Brand<"SourceHash">; readonly treeIntegrity: string & import("effect/Brand").Brand<"TreeIntegrity">; readonly path?: string | undefined; readonly ref?: string | undefined; } | { readonly project: string; readonly type: "azurerepos"; readonly sourceName: string; readonly repo: string; readonly organization: string; readonly extensionType: "knowledge"; readonly sourceType: "azurerepos"; readonly packageFormat: "agentxm"; readonly endpoint: URL; readonly workspaceName: string & import("effect/Brand").Brand<"ExtensionName">; readonly packageOwner: string & import("effect/Brand").Brand<"Handle">; readonly packageName: string & import("effect/Brand").Brand<"ExtensionName">; readonly resolvedCommit: string; readonly resolvedTree: string; readonly contentIdentity: string & import("effect/Brand").Brand<"SourceHash">; readonly treeIntegrity: string & import("effect/Brand").Brand<"TreeIntegrity">; readonly path?: string | undefined; readonly ref?: string | undefined; } | { readonly url: string; readonly type: "git"; readonly sourceName: "git"; readonly extensionType: "knowledge"; readonly sourceType: "git"; readonly packageFormat: "agentxm"; readonly workspaceName: string & import("effect/Brand").Brand<"ExtensionName">; readonly packageOwner: string & import("effect/Brand").Brand<"Handle">; readonly packageName: string & import("effect/Brand").Brand<"ExtensionName">; readonly resolvedCommit: string; readonly resolvedTree: string; readonly contentIdentity: string & import("effect/Brand").Brand<"SourceHash">; readonly treeIntegrity: string & import("effect/Brand").Brand<"TreeIntegrity">; readonly path?: string | undefined; readonly ref?: string | undefined; } | { readonly type: "local"; readonly sourceType: "local"; readonly sourceName: "local"; readonly extensionType: "knowledge"; readonly workspaceName: string & import("effect/Brand").Brand<"ExtensionName">; readonly packageFormat: "agentxm"; readonly packageOwner: string & import("effect/Brand").Brand<"Handle">; readonly packageName: string & import("effect/Brand").Brand<"ExtensionName">; readonly path: string; readonly contentIdentity: string & import("effect/Brand").Brand<"SourceHash">; readonly treeIntegrity: string & import("effect/Brand").Brand<"TreeIntegrity">; } | { readonly type: "registry"; readonly sourceType: "registry"; readonly endpoint: URL; readonly extensionType: "knowledge"; readonly workspaceName: string & import("effect/Brand").Brand<"ExtensionName">; readonly packageFormat: "agentxm"; readonly owner: string & import("effect/Brand").Brand<"Handle">; readonly name: string & import("effect/Brand").Brand<"ExtensionName">; readonly resolvedVersion: string & import("effect/Brand").Brand<"Version">; readonly integrity: string; readonly sourceName: string; readonly publisherBindingId: string; readonly treeIntegrity: string & import("effect/Brand").Brand<"TreeIntegrity">; }; }, AppError, never>; getLockedKnowledgeEntry: (name: string) => Effect.Effect; readonly packageOwner: string & import("effect/Brand").Brand<"Handle">; readonly packageName: string & import("effect/Brand").Brand<"ExtensionName">; readonly resolvedCommit: string; readonly resolvedTree: string; readonly contentIdentity: string & import("effect/Brand").Brand<"SourceHash">; readonly treeIntegrity: string & import("effect/Brand").Brand<"TreeIntegrity">; readonly path?: string | undefined; readonly ref?: string | undefined; } | { readonly type: "gitlab"; readonly owner: string; readonly sourceName: string; readonly repo: string; readonly extensionType: "knowledge"; readonly sourceType: "gitlab"; readonly packageFormat: "agentxm"; readonly endpoint: URL; readonly workspaceName: string & import("effect/Brand").Brand<"ExtensionName">; readonly packageOwner: string & import("effect/Brand").Brand<"Handle">; readonly packageName: string & import("effect/Brand").Brand<"ExtensionName">; readonly resolvedCommit: string; readonly resolvedTree: string; readonly contentIdentity: string & import("effect/Brand").Brand<"SourceHash">; readonly treeIntegrity: string & import("effect/Brand").Brand<"TreeIntegrity">; readonly path?: string | undefined; readonly ref?: string | undefined; } | { readonly type: "bitbucket"; readonly owner: string; readonly sourceName: string; readonly repo: string; readonly extensionType: "knowledge"; readonly sourceType: "bitbucket"; readonly packageFormat: "agentxm"; readonly endpoint: URL; readonly workspaceName: string & import("effect/Brand").Brand<"ExtensionName">; readonly packageOwner: string & import("effect/Brand").Brand<"Handle">; readonly packageName: string & import("effect/Brand").Brand<"ExtensionName">; readonly resolvedCommit: string; readonly resolvedTree: string; readonly contentIdentity: string & import("effect/Brand").Brand<"SourceHash">; readonly treeIntegrity: string & import("effect/Brand").Brand<"TreeIntegrity">; readonly path?: string | undefined; readonly ref?: string | undefined; } | { readonly project: string; readonly type: "azurerepos"; readonly sourceName: string; readonly repo: string; readonly organization: string; readonly extensionType: "knowledge"; readonly sourceType: "azurerepos"; readonly packageFormat: "agentxm"; readonly endpoint: URL; readonly workspaceName: string & import("effect/Brand").Brand<"ExtensionName">; readonly packageOwner: string & import("effect/Brand").Brand<"Handle">; readonly packageName: string & import("effect/Brand").Brand<"ExtensionName">; readonly resolvedCommit: string; readonly resolvedTree: string; readonly contentIdentity: string & import("effect/Brand").Brand<"SourceHash">; readonly treeIntegrity: string & import("effect/Brand").Brand<"TreeIntegrity">; readonly path?: string | undefined; readonly ref?: string | undefined; } | { readonly url: string; readonly type: "git"; readonly sourceName: "git"; readonly extensionType: "knowledge"; readonly sourceType: "git"; readonly packageFormat: "agentxm"; readonly workspaceName: string & import("effect/Brand").Brand<"ExtensionName">; readonly packageOwner: string & import("effect/Brand").Brand<"Handle">; readonly packageName: string & import("effect/Brand").Brand<"ExtensionName">; readonly resolvedCommit: string; readonly resolvedTree: string; readonly contentIdentity: string & import("effect/Brand").Brand<"SourceHash">; readonly treeIntegrity: string & import("effect/Brand").Brand<"TreeIntegrity">; readonly path?: string | undefined; readonly ref?: string | undefined; } | { readonly type: "local"; readonly sourceType: "local"; readonly sourceName: "local"; readonly extensionType: "knowledge"; readonly workspaceName: string & import("effect/Brand").Brand<"ExtensionName">; readonly packageFormat: "agentxm"; readonly packageOwner: string & import("effect/Brand").Brand<"Handle">; readonly packageName: string & import("effect/Brand").Brand<"ExtensionName">; readonly path: string; readonly contentIdentity: string & import("effect/Brand").Brand<"SourceHash">; readonly treeIntegrity: string & import("effect/Brand").Brand<"TreeIntegrity">; } | { readonly type: "registry"; readonly sourceType: "registry"; readonly endpoint: URL; readonly extensionType: "knowledge"; readonly workspaceName: string & import("effect/Brand").Brand<"ExtensionName">; readonly packageFormat: "agentxm"; readonly owner: string & import("effect/Brand").Brand<"Handle">; readonly name: string & import("effect/Brand").Brand<"ExtensionName">; readonly resolvedVersion: string & import("effect/Brand").Brand<"Version">; readonly integrity: string; readonly sourceName: string; readonly publisherBindingId: string; readonly treeIntegrity: string & import("effect/Brand").Brand<"TreeIntegrity">; }>, AppError, never>; setKnowledge: ({ name, lockEntry, versionRange }: SetKnowledgeArgs) => Effect.Effect; setKnowledgeLock: ({ name, lockEntry }: SetKnowledgeArgs) => Effect.Effect; removeKnowledge: (name: string) => Effect.Effect; removeKnowledgeSettings: (name: string) => Effect.Effect; removeKnowledgeLock: (name: string) => Effect.Effect; updateKnowledgeEntry: (name: string, updater: (entry: KnowledgeEntry) => KnowledgeEntry) => Effect.Effect; setKnowledgeEntry: (name: string, entry: KnowledgeEntry) => Effect.Effect; getLockedSkills: () => Effect.Effect<{ readonly [x: string]: { readonly type: "github"; readonly owner: string; readonly sourceName: string; readonly repo: string; readonly extensionType: "skill"; readonly sourceType: "github"; readonly packageFormat: "agentxm" | "agent-skill"; readonly endpoint: URL; readonly workspaceName: string & import("effect/Brand").Brand<"ExtensionName">; readonly packageName: string & import("effect/Brand").Brand<"ExtensionName">; readonly resolvedCommit: string; readonly resolvedTree: string; readonly contentIdentity: string & import("effect/Brand").Brand<"SourceHash">; readonly treeIntegrity: string & import("effect/Brand").Brand<"TreeIntegrity">; readonly path?: string | undefined; readonly ref?: string | undefined; readonly packageOwner?: (string & import("effect/Brand").Brand<"Handle">) | undefined; } | { readonly type: "gitlab"; readonly owner: string; readonly sourceName: string; readonly repo: string; readonly extensionType: "skill"; readonly sourceType: "gitlab"; readonly packageFormat: "agentxm" | "agent-skill"; readonly endpoint: URL; readonly workspaceName: string & import("effect/Brand").Brand<"ExtensionName">; readonly packageName: string & import("effect/Brand").Brand<"ExtensionName">; readonly resolvedCommit: string; readonly resolvedTree: string; readonly contentIdentity: string & import("effect/Brand").Brand<"SourceHash">; readonly treeIntegrity: string & import("effect/Brand").Brand<"TreeIntegrity">; readonly path?: string | undefined; readonly ref?: string | undefined; readonly packageOwner?: (string & import("effect/Brand").Brand<"Handle">) | undefined; } | { readonly type: "bitbucket"; readonly owner: string; readonly sourceName: string; readonly repo: string; readonly extensionType: "skill"; readonly sourceType: "bitbucket"; readonly packageFormat: "agentxm" | "agent-skill"; readonly endpoint: URL; readonly workspaceName: string & import("effect/Brand").Brand<"ExtensionName">; readonly packageName: string & import("effect/Brand").Brand<"ExtensionName">; readonly resolvedCommit: string; readonly resolvedTree: string; readonly contentIdentity: string & import("effect/Brand").Brand<"SourceHash">; readonly treeIntegrity: string & import("effect/Brand").Brand<"TreeIntegrity">; readonly path?: string | undefined; readonly ref?: string | undefined; readonly packageOwner?: (string & import("effect/Brand").Brand<"Handle">) | undefined; } | { readonly project: string; readonly type: "azurerepos"; readonly sourceName: string; readonly repo: string; readonly organization: string; readonly extensionType: "skill"; readonly sourceType: "azurerepos"; readonly packageFormat: "agentxm" | "agent-skill"; readonly endpoint: URL; readonly workspaceName: string & import("effect/Brand").Brand<"ExtensionName">; readonly packageName: string & import("effect/Brand").Brand<"ExtensionName">; readonly resolvedCommit: string; readonly resolvedTree: string; readonly contentIdentity: string & import("effect/Brand").Brand<"SourceHash">; readonly treeIntegrity: string & import("effect/Brand").Brand<"TreeIntegrity">; readonly path?: string | undefined; readonly ref?: string | undefined; readonly packageOwner?: (string & import("effect/Brand").Brand<"Handle">) | undefined; } | { readonly url: string; readonly type: "git"; readonly sourceName: "git"; readonly extensionType: "skill"; readonly sourceType: "git"; readonly packageFormat: "agentxm" | "agent-skill"; readonly workspaceName: string & import("effect/Brand").Brand<"ExtensionName">; readonly packageName: string & import("effect/Brand").Brand<"ExtensionName">; readonly resolvedCommit: string; readonly resolvedTree: string; readonly contentIdentity: string & import("effect/Brand").Brand<"SourceHash">; readonly treeIntegrity: string & import("effect/Brand").Brand<"TreeIntegrity">; readonly path?: string | undefined; readonly ref?: string | undefined; readonly packageOwner?: (string & import("effect/Brand").Brand<"Handle">) | undefined; } | { readonly path: string; readonly type: "local"; readonly sourceName: "local"; readonly extensionType: "skill"; readonly sourceType: "local"; readonly packageFormat: "agentxm" | "agent-skill"; readonly workspaceName: string & import("effect/Brand").Brand<"ExtensionName">; readonly packageName: string & import("effect/Brand").Brand<"ExtensionName">; readonly contentIdentity: string & import("effect/Brand").Brand<"SourceHash">; readonly treeIntegrity: string & import("effect/Brand").Brand<"TreeIntegrity">; readonly packageOwner?: (string & import("effect/Brand").Brand<"Handle">) | undefined; } | { readonly type: "registry"; readonly sourceType: "registry"; readonly endpoint: URL; readonly extensionType: "skill"; readonly workspaceName: string & import("effect/Brand").Brand<"ExtensionName">; readonly packageFormat: "agentxm"; readonly owner: string & import("effect/Brand").Brand<"Handle">; readonly name: string & import("effect/Brand").Brand<"ExtensionName">; readonly resolvedVersion: string & import("effect/Brand").Brand<"Version">; readonly integrity: string; readonly sourceName: string; readonly publisherBindingId: string; readonly treeIntegrity: string & import("effect/Brand").Brand<"TreeIntegrity">; }; }, AppError, never>; getLockedSkill: (name: string) => Effect.Effect; readonly packageName: string & import("effect/Brand").Brand<"ExtensionName">; readonly resolvedCommit: string; readonly resolvedTree: string; readonly contentIdentity: string & import("effect/Brand").Brand<"SourceHash">; readonly treeIntegrity: string & import("effect/Brand").Brand<"TreeIntegrity">; readonly path?: string | undefined; readonly ref?: string | undefined; readonly packageOwner?: (string & import("effect/Brand").Brand<"Handle">) | undefined; } | { readonly type: "gitlab"; readonly owner: string; readonly sourceName: string; readonly repo: string; readonly extensionType: "skill"; readonly sourceType: "gitlab"; readonly packageFormat: "agentxm" | "agent-skill"; readonly endpoint: URL; readonly workspaceName: string & import("effect/Brand").Brand<"ExtensionName">; readonly packageName: string & import("effect/Brand").Brand<"ExtensionName">; readonly resolvedCommit: string; readonly resolvedTree: string; readonly contentIdentity: string & import("effect/Brand").Brand<"SourceHash">; readonly treeIntegrity: string & import("effect/Brand").Brand<"TreeIntegrity">; readonly path?: string | undefined; readonly ref?: string | undefined; readonly packageOwner?: (string & import("effect/Brand").Brand<"Handle">) | undefined; } | { readonly type: "bitbucket"; readonly owner: string; readonly sourceName: string; readonly repo: string; readonly extensionType: "skill"; readonly sourceType: "bitbucket"; readonly packageFormat: "agentxm" | "agent-skill"; readonly endpoint: URL; readonly workspaceName: string & import("effect/Brand").Brand<"ExtensionName">; readonly packageName: string & import("effect/Brand").Brand<"ExtensionName">; readonly resolvedCommit: string; readonly resolvedTree: string; readonly contentIdentity: string & import("effect/Brand").Brand<"SourceHash">; readonly treeIntegrity: string & import("effect/Brand").Brand<"TreeIntegrity">; readonly path?: string | undefined; readonly ref?: string | undefined; readonly packageOwner?: (string & import("effect/Brand").Brand<"Handle">) | undefined; } | { readonly project: string; readonly type: "azurerepos"; readonly sourceName: string; readonly repo: string; readonly organization: string; readonly extensionType: "skill"; readonly sourceType: "azurerepos"; readonly packageFormat: "agentxm" | "agent-skill"; readonly endpoint: URL; readonly workspaceName: string & import("effect/Brand").Brand<"ExtensionName">; readonly packageName: string & import("effect/Brand").Brand<"ExtensionName">; readonly resolvedCommit: string; readonly resolvedTree: string; readonly contentIdentity: string & import("effect/Brand").Brand<"SourceHash">; readonly treeIntegrity: string & import("effect/Brand").Brand<"TreeIntegrity">; readonly path?: string | undefined; readonly ref?: string | undefined; readonly packageOwner?: (string & import("effect/Brand").Brand<"Handle">) | undefined; } | { readonly url: string; readonly type: "git"; readonly sourceName: "git"; readonly extensionType: "skill"; readonly sourceType: "git"; readonly packageFormat: "agentxm" | "agent-skill"; readonly workspaceName: string & import("effect/Brand").Brand<"ExtensionName">; readonly packageName: string & import("effect/Brand").Brand<"ExtensionName">; readonly resolvedCommit: string; readonly resolvedTree: string; readonly contentIdentity: string & import("effect/Brand").Brand<"SourceHash">; readonly treeIntegrity: string & import("effect/Brand").Brand<"TreeIntegrity">; readonly path?: string | undefined; readonly ref?: string | undefined; readonly packageOwner?: (string & import("effect/Brand").Brand<"Handle">) | undefined; } | { readonly path: string; readonly type: "local"; readonly sourceName: "local"; readonly extensionType: "skill"; readonly sourceType: "local"; readonly packageFormat: "agentxm" | "agent-skill"; readonly workspaceName: string & import("effect/Brand").Brand<"ExtensionName">; readonly packageName: string & import("effect/Brand").Brand<"ExtensionName">; readonly contentIdentity: string & import("effect/Brand").Brand<"SourceHash">; readonly treeIntegrity: string & import("effect/Brand").Brand<"TreeIntegrity">; readonly packageOwner?: (string & import("effect/Brand").Brand<"Handle">) | undefined; } | { readonly type: "registry"; readonly sourceType: "registry"; readonly endpoint: URL; readonly extensionType: "skill"; readonly workspaceName: string & import("effect/Brand").Brand<"ExtensionName">; readonly packageFormat: "agentxm"; readonly owner: string & import("effect/Brand").Brand<"Handle">; readonly name: string & import("effect/Brand").Brand<"ExtensionName">; readonly resolvedVersion: string & import("effect/Brand").Brand<"Version">; readonly integrity: string; readonly sourceName: string; readonly publisherBindingId: string; readonly treeIntegrity: string & import("effect/Brand").Brand<"TreeIntegrity">; }>, AppError, never>; getSkillDir: (name: string, source?: SkillPathSource) => Effect.Effect; setSkill: ({ name, lockEntry, versionRange }: SetSkillArgs) => Effect.Effect; setSkillLock: ({ name, lockEntry }: SetSkillArgs) => Effect.Effect; removeSkill: (name: string) => Effect.Effect; removeSkillFromSettings: (name: string) => Effect.Effect; updateSkillEntry: (name: string, updater: (entry: SkillEntry) => SkillEntry) => Effect.Effect; setSkillEntry: (name: string, entry: SkillEntry) => Effect.Effect; addConfiguredAgent: (agentId: string) => Effect.Effect; removeConfiguredAgent: (agentId: string) => Effect.Effect; getConfiguredPackEntries: () => Effect.Effect<{ readonly [x: string]: { readonly source: string; readonly enabled: boolean; }; }, AppError, never>; getLockedPacks: () => Effect.Effect<{ readonly [x: string]: { readonly type: "registry"; readonly sourceType: "registry"; readonly endpoint: URL; readonly extensionType: "pack"; readonly workspaceName: string & import("effect/Brand").Brand<"ExtensionName">; readonly packageFormat: "agentxm"; readonly owner: string & import("effect/Brand").Brand<"Handle">; readonly name: string & import("effect/Brand").Brand<"ExtensionName">; readonly resolvedVersion: string & import("effect/Brand").Brand<"Version">; readonly integrity: string; readonly manifestContentIdentity: string & import("effect/Brand").Brand<"SourceHash">; readonly sourceName: string; readonly publisherBindingId: string; readonly treeIntegrity: string & import("effect/Brand").Brand<"TreeIntegrity">; }; }, AppError, never>; getLockedPack: (name: string) => Effect.Effect; readonly packageFormat: "agentxm"; readonly owner: string & import("effect/Brand").Brand<"Handle">; readonly name: string & import("effect/Brand").Brand<"ExtensionName">; readonly resolvedVersion: string & import("effect/Brand").Brand<"Version">; readonly integrity: string; readonly manifestContentIdentity: string & import("effect/Brand").Brand<"SourceHash">; readonly sourceName: string; readonly publisherBindingId: string; readonly treeIntegrity: string & import("effect/Brand").Brand<"TreeIntegrity">; }>, AppError, never>; setPack: (args: SetPackArgs) => Effect.Effect; setPackLock: (args: SetPackArgs) => Effect.Effect; setPackEntry: (name: string, entry: PackEntry) => Effect.Effect; removePack: (name: string) => Effect.Effect; getPackDir: (name: string, owner: Handle, sourceName: string) => Effect.Effect; getLockedSubagents: () => Effect.Effect<{ readonly [x: string]: { readonly type: "github"; readonly owner: string; readonly sourceName: string; readonly repo: string; readonly extensionType: "subagent"; readonly sourceType: "github"; readonly packageFormat: "agentxm"; readonly endpoint: URL; readonly workspaceName: string & import("effect/Brand").Brand<"ExtensionName">; readonly packageOwner: string & import("effect/Brand").Brand<"Handle">; readonly packageName: string & import("effect/Brand").Brand<"ExtensionName">; readonly resolvedCommit: string; readonly resolvedTree: string; readonly contentIdentity: string & import("effect/Brand").Brand<"SourceHash">; readonly treeIntegrity: string & import("effect/Brand").Brand<"TreeIntegrity">; readonly path?: string | undefined; readonly ref?: string | undefined; } | { readonly type: "gitlab"; readonly owner: string; readonly sourceName: string; readonly repo: string; readonly extensionType: "subagent"; readonly sourceType: "gitlab"; readonly packageFormat: "agentxm"; readonly endpoint: URL; readonly workspaceName: string & import("effect/Brand").Brand<"ExtensionName">; readonly packageOwner: string & import("effect/Brand").Brand<"Handle">; readonly packageName: string & import("effect/Brand").Brand<"ExtensionName">; readonly resolvedCommit: string; readonly resolvedTree: string; readonly contentIdentity: string & import("effect/Brand").Brand<"SourceHash">; readonly treeIntegrity: string & import("effect/Brand").Brand<"TreeIntegrity">; readonly path?: string | undefined; readonly ref?: string | undefined; } | { readonly type: "bitbucket"; readonly owner: string; readonly sourceName: string; readonly repo: string; readonly extensionType: "subagent"; readonly sourceType: "bitbucket"; readonly packageFormat: "agentxm"; readonly endpoint: URL; readonly workspaceName: string & import("effect/Brand").Brand<"ExtensionName">; readonly packageOwner: string & import("effect/Brand").Brand<"Handle">; readonly packageName: string & import("effect/Brand").Brand<"ExtensionName">; readonly resolvedCommit: string; readonly resolvedTree: string; readonly contentIdentity: string & import("effect/Brand").Brand<"SourceHash">; readonly treeIntegrity: string & import("effect/Brand").Brand<"TreeIntegrity">; readonly path?: string | undefined; readonly ref?: string | undefined; } | { readonly project: string; readonly type: "azurerepos"; readonly sourceName: string; readonly repo: string; readonly organization: string; readonly extensionType: "subagent"; readonly sourceType: "azurerepos"; readonly packageFormat: "agentxm"; readonly endpoint: URL; readonly workspaceName: string & import("effect/Brand").Brand<"ExtensionName">; readonly packageOwner: string & import("effect/Brand").Brand<"Handle">; readonly packageName: string & import("effect/Brand").Brand<"ExtensionName">; readonly resolvedCommit: string; readonly resolvedTree: string; readonly contentIdentity: string & import("effect/Brand").Brand<"SourceHash">; readonly treeIntegrity: string & import("effect/Brand").Brand<"TreeIntegrity">; readonly path?: string | undefined; readonly ref?: string | undefined; } | { readonly url: string; readonly type: "git"; readonly sourceName: "git"; readonly extensionType: "subagent"; readonly sourceType: "git"; readonly packageFormat: "agentxm"; readonly workspaceName: string & import("effect/Brand").Brand<"ExtensionName">; readonly packageOwner: string & import("effect/Brand").Brand<"Handle">; readonly packageName: string & import("effect/Brand").Brand<"ExtensionName">; readonly resolvedCommit: string; readonly resolvedTree: string; readonly contentIdentity: string & import("effect/Brand").Brand<"SourceHash">; readonly treeIntegrity: string & import("effect/Brand").Brand<"TreeIntegrity">; readonly path?: string | undefined; readonly ref?: string | undefined; } | { readonly type: "local"; readonly sourceType: "local"; readonly sourceName: "local"; readonly extensionType: "subagent"; readonly workspaceName: string & import("effect/Brand").Brand<"ExtensionName">; readonly packageFormat: "agentxm"; readonly packageOwner: string & import("effect/Brand").Brand<"Handle">; readonly packageName: string & import("effect/Brand").Brand<"ExtensionName">; readonly path: string; readonly contentIdentity: string & import("effect/Brand").Brand<"SourceHash">; readonly treeIntegrity: string & import("effect/Brand").Brand<"TreeIntegrity">; } | { readonly type: "registry"; readonly sourceType: "registry"; readonly endpoint: URL; readonly extensionType: "subagent"; readonly workspaceName: string & import("effect/Brand").Brand<"ExtensionName">; readonly packageFormat: "agentxm"; readonly owner: string & import("effect/Brand").Brand<"Handle">; readonly name: string & import("effect/Brand").Brand<"ExtensionName">; readonly resolvedVersion: string & import("effect/Brand").Brand<"Version">; readonly integrity: string; readonly sourceName: string; readonly publisherBindingId: string; readonly treeIntegrity: string & import("effect/Brand").Brand<"TreeIntegrity">; }; }, AppError, never>; getLockedSubagent: (name: string) => Effect.Effect; readonly packageOwner: string & import("effect/Brand").Brand<"Handle">; readonly packageName: string & import("effect/Brand").Brand<"ExtensionName">; readonly resolvedCommit: string; readonly resolvedTree: string; readonly contentIdentity: string & import("effect/Brand").Brand<"SourceHash">; readonly treeIntegrity: string & import("effect/Brand").Brand<"TreeIntegrity">; readonly path?: string | undefined; readonly ref?: string | undefined; } | { readonly type: "gitlab"; readonly owner: string; readonly sourceName: string; readonly repo: string; readonly extensionType: "subagent"; readonly sourceType: "gitlab"; readonly packageFormat: "agentxm"; readonly endpoint: URL; readonly workspaceName: string & import("effect/Brand").Brand<"ExtensionName">; readonly packageOwner: string & import("effect/Brand").Brand<"Handle">; readonly packageName: string & import("effect/Brand").Brand<"ExtensionName">; readonly resolvedCommit: string; readonly resolvedTree: string; readonly contentIdentity: string & import("effect/Brand").Brand<"SourceHash">; readonly treeIntegrity: string & import("effect/Brand").Brand<"TreeIntegrity">; readonly path?: string | undefined; readonly ref?: string | undefined; } | { readonly type: "bitbucket"; readonly owner: string; readonly sourceName: string; readonly repo: string; readonly extensionType: "subagent"; readonly sourceType: "bitbucket"; readonly packageFormat: "agentxm"; readonly endpoint: URL; readonly workspaceName: string & import("effect/Brand").Brand<"ExtensionName">; readonly packageOwner: string & import("effect/Brand").Brand<"Handle">; readonly packageName: string & import("effect/Brand").Brand<"ExtensionName">; readonly resolvedCommit: string; readonly resolvedTree: string; readonly contentIdentity: string & import("effect/Brand").Brand<"SourceHash">; readonly treeIntegrity: string & import("effect/Brand").Brand<"TreeIntegrity">; readonly path?: string | undefined; readonly ref?: string | undefined; } | { readonly project: string; readonly type: "azurerepos"; readonly sourceName: string; readonly repo: string; readonly organization: string; readonly extensionType: "subagent"; readonly sourceType: "azurerepos"; readonly packageFormat: "agentxm"; readonly endpoint: URL; readonly workspaceName: string & import("effect/Brand").Brand<"ExtensionName">; readonly packageOwner: string & import("effect/Brand").Brand<"Handle">; readonly packageName: string & import("effect/Brand").Brand<"ExtensionName">; readonly resolvedCommit: string; readonly resolvedTree: string; readonly contentIdentity: string & import("effect/Brand").Brand<"SourceHash">; readonly treeIntegrity: string & import("effect/Brand").Brand<"TreeIntegrity">; readonly path?: string | undefined; readonly ref?: string | undefined; } | { readonly url: string; readonly type: "git"; readonly sourceName: "git"; readonly extensionType: "subagent"; readonly sourceType: "git"; readonly packageFormat: "agentxm"; readonly workspaceName: string & import("effect/Brand").Brand<"ExtensionName">; readonly packageOwner: string & import("effect/Brand").Brand<"Handle">; readonly packageName: string & import("effect/Brand").Brand<"ExtensionName">; readonly resolvedCommit: string; readonly resolvedTree: string; readonly contentIdentity: string & import("effect/Brand").Brand<"SourceHash">; readonly treeIntegrity: string & import("effect/Brand").Brand<"TreeIntegrity">; readonly path?: string | undefined; readonly ref?: string | undefined; } | { readonly type: "local"; readonly sourceType: "local"; readonly sourceName: "local"; readonly extensionType: "subagent"; readonly workspaceName: string & import("effect/Brand").Brand<"ExtensionName">; readonly packageFormat: "agentxm"; readonly packageOwner: string & import("effect/Brand").Brand<"Handle">; readonly packageName: string & import("effect/Brand").Brand<"ExtensionName">; readonly path: string; readonly contentIdentity: string & import("effect/Brand").Brand<"SourceHash">; readonly treeIntegrity: string & import("effect/Brand").Brand<"TreeIntegrity">; } | { readonly type: "registry"; readonly sourceType: "registry"; readonly endpoint: URL; readonly extensionType: "subagent"; readonly workspaceName: string & import("effect/Brand").Brand<"ExtensionName">; readonly packageFormat: "agentxm"; readonly owner: string & import("effect/Brand").Brand<"Handle">; readonly name: string & import("effect/Brand").Brand<"ExtensionName">; readonly resolvedVersion: string & import("effect/Brand").Brand<"Version">; readonly integrity: string; readonly sourceName: string; readonly publisherBindingId: string; readonly treeIntegrity: string & import("effect/Brand").Brand<"TreeIntegrity">; }>, AppError, never>; getConfiguredSubagentEntries: () => Effect.Effect<{ readonly [x: string]: { readonly source: string; readonly enabled: boolean; }; }, AppError, never>; setSubagent: ({ name, lockEntry, versionRange }: SetSubagentArgs) => Effect.Effect; setSubagentLock: ({ name, lockEntry }: SetSubagentArgs) => Effect.Effect; removeSubagent: (name: string) => Effect.Effect; updateSubagentEntry: (name: string, updater: (entry: SubagentEntry) => SubagentEntry) => Effect.Effect; setSubagentEntry: (name: string, entry: SubagentEntry) => Effect.Effect; removeSubagentSettings: (name: string) => Effect.Effect; removeSubagentLock: (name: string) => Effect.Effect; getLockedMcpServers: () => Effect.Effect<{ readonly [x: string]: { readonly type: "github"; readonly owner: string; readonly sourceName: string; readonly repo: string; readonly extensionType: "mcp-server"; readonly sourceType: "github"; readonly packageFormat: "agentxm"; readonly endpoint: URL; readonly workspaceName: string & import("effect/Brand").Brand<"ExtensionName">; readonly packageOwner: string & import("effect/Brand").Brand<"Handle">; readonly packageName: string & import("effect/Brand").Brand<"ExtensionName">; readonly resolvedCommit: string; readonly resolvedTree: string; readonly contentIdentity: string & import("effect/Brand").Brand<"SourceHash">; readonly treeIntegrity: string & import("effect/Brand").Brand<"TreeIntegrity">; readonly path?: string | undefined; readonly ref?: string | undefined; } | { readonly type: "gitlab"; readonly owner: string; readonly sourceName: string; readonly repo: string; readonly extensionType: "mcp-server"; readonly sourceType: "gitlab"; readonly packageFormat: "agentxm"; readonly endpoint: URL; readonly workspaceName: string & import("effect/Brand").Brand<"ExtensionName">; readonly packageOwner: string & import("effect/Brand").Brand<"Handle">; readonly packageName: string & import("effect/Brand").Brand<"ExtensionName">; readonly resolvedCommit: string; readonly resolvedTree: string; readonly contentIdentity: string & import("effect/Brand").Brand<"SourceHash">; readonly treeIntegrity: string & import("effect/Brand").Brand<"TreeIntegrity">; readonly path?: string | undefined; readonly ref?: string | undefined; } | { readonly type: "bitbucket"; readonly owner: string; readonly sourceName: string; readonly repo: string; readonly extensionType: "mcp-server"; readonly sourceType: "bitbucket"; readonly packageFormat: "agentxm"; readonly endpoint: URL; readonly workspaceName: string & import("effect/Brand").Brand<"ExtensionName">; readonly packageOwner: string & import("effect/Brand").Brand<"Handle">; readonly packageName: string & import("effect/Brand").Brand<"ExtensionName">; readonly resolvedCommit: string; readonly resolvedTree: string; readonly contentIdentity: string & import("effect/Brand").Brand<"SourceHash">; readonly treeIntegrity: string & import("effect/Brand").Brand<"TreeIntegrity">; readonly path?: string | undefined; readonly ref?: string | undefined; } | { readonly project: string; readonly type: "azurerepos"; readonly sourceName: string; readonly repo: string; readonly organization: string; readonly extensionType: "mcp-server"; readonly sourceType: "azurerepos"; readonly packageFormat: "agentxm"; readonly endpoint: URL; readonly workspaceName: string & import("effect/Brand").Brand<"ExtensionName">; readonly packageOwner: string & import("effect/Brand").Brand<"Handle">; readonly packageName: string & import("effect/Brand").Brand<"ExtensionName">; readonly resolvedCommit: string; readonly resolvedTree: string; readonly contentIdentity: string & import("effect/Brand").Brand<"SourceHash">; readonly treeIntegrity: string & import("effect/Brand").Brand<"TreeIntegrity">; readonly path?: string | undefined; readonly ref?: string | undefined; } | { readonly url: string; readonly type: "git"; readonly sourceName: "git"; readonly extensionType: "mcp-server"; readonly sourceType: "git"; readonly packageFormat: "agentxm"; readonly workspaceName: string & import("effect/Brand").Brand<"ExtensionName">; readonly packageOwner: string & import("effect/Brand").Brand<"Handle">; readonly packageName: string & import("effect/Brand").Brand<"ExtensionName">; readonly resolvedCommit: string; readonly resolvedTree: string; readonly contentIdentity: string & import("effect/Brand").Brand<"SourceHash">; readonly treeIntegrity: string & import("effect/Brand").Brand<"TreeIntegrity">; readonly path?: string | undefined; readonly ref?: string | undefined; } | { readonly type: "local"; readonly sourceType: "local"; readonly sourceName: "local"; readonly extensionType: "mcp-server"; readonly workspaceName: string & import("effect/Brand").Brand<"ExtensionName">; readonly packageFormat: "agentxm"; readonly packageOwner: string & import("effect/Brand").Brand<"Handle">; readonly packageName: string & import("effect/Brand").Brand<"ExtensionName">; readonly path: string; readonly contentIdentity: string & import("effect/Brand").Brand<"SourceHash">; readonly treeIntegrity: string & import("effect/Brand").Brand<"TreeIntegrity">; } | { readonly type: "registry"; readonly sourceType: "registry"; readonly endpoint: URL; readonly extensionType: "mcp-server"; readonly workspaceName: string & import("effect/Brand").Brand<"ExtensionName">; readonly packageFormat: "agentxm"; readonly owner: string & import("effect/Brand").Brand<"Handle">; readonly name: string & import("effect/Brand").Brand<"ExtensionName">; readonly resolvedVersion: string & import("effect/Brand").Brand<"Version">; readonly integrity: string; readonly sourceName: string; readonly publisherBindingId: string; readonly treeIntegrity: string & import("effect/Brand").Brand<"TreeIntegrity">; }; }, AppError, never>; getLockedMcpServer: (name: string) => Effect.Effect; readonly packageOwner: string & import("effect/Brand").Brand<"Handle">; readonly packageName: string & import("effect/Brand").Brand<"ExtensionName">; readonly resolvedCommit: string; readonly resolvedTree: string; readonly contentIdentity: string & import("effect/Brand").Brand<"SourceHash">; readonly treeIntegrity: string & import("effect/Brand").Brand<"TreeIntegrity">; readonly path?: string | undefined; readonly ref?: string | undefined; } | { readonly type: "gitlab"; readonly owner: string; readonly sourceName: string; readonly repo: string; readonly extensionType: "mcp-server"; readonly sourceType: "gitlab"; readonly packageFormat: "agentxm"; readonly endpoint: URL; readonly workspaceName: string & import("effect/Brand").Brand<"ExtensionName">; readonly packageOwner: string & import("effect/Brand").Brand<"Handle">; readonly packageName: string & import("effect/Brand").Brand<"ExtensionName">; readonly resolvedCommit: string; readonly resolvedTree: string; readonly contentIdentity: string & import("effect/Brand").Brand<"SourceHash">; readonly treeIntegrity: string & import("effect/Brand").Brand<"TreeIntegrity">; readonly path?: string | undefined; readonly ref?: string | undefined; } | { readonly type: "bitbucket"; readonly owner: string; readonly sourceName: string; readonly repo: string; readonly extensionType: "mcp-server"; readonly sourceType: "bitbucket"; readonly packageFormat: "agentxm"; readonly endpoint: URL; readonly workspaceName: string & import("effect/Brand").Brand<"ExtensionName">; readonly packageOwner: string & import("effect/Brand").Brand<"Handle">; readonly packageName: string & import("effect/Brand").Brand<"ExtensionName">; readonly resolvedCommit: string; readonly resolvedTree: string; readonly contentIdentity: string & import("effect/Brand").Brand<"SourceHash">; readonly treeIntegrity: string & import("effect/Brand").Brand<"TreeIntegrity">; readonly path?: string | undefined; readonly ref?: string | undefined; } | { readonly project: string; readonly type: "azurerepos"; readonly sourceName: string; readonly repo: string; readonly organization: string; readonly extensionType: "mcp-server"; readonly sourceType: "azurerepos"; readonly packageFormat: "agentxm"; readonly endpoint: URL; readonly workspaceName: string & import("effect/Brand").Brand<"ExtensionName">; readonly packageOwner: string & import("effect/Brand").Brand<"Handle">; readonly packageName: string & import("effect/Brand").Brand<"ExtensionName">; readonly resolvedCommit: string; readonly resolvedTree: string; readonly contentIdentity: string & import("effect/Brand").Brand<"SourceHash">; readonly treeIntegrity: string & import("effect/Brand").Brand<"TreeIntegrity">; readonly path?: string | undefined; readonly ref?: string | undefined; } | { readonly url: string; readonly type: "git"; readonly sourceName: "git"; readonly extensionType: "mcp-server"; readonly sourceType: "git"; readonly packageFormat: "agentxm"; readonly workspaceName: string & import("effect/Brand").Brand<"ExtensionName">; readonly packageOwner: string & import("effect/Brand").Brand<"Handle">; readonly packageName: string & import("effect/Brand").Brand<"ExtensionName">; readonly resolvedCommit: string; readonly resolvedTree: string; readonly contentIdentity: string & import("effect/Brand").Brand<"SourceHash">; readonly treeIntegrity: string & import("effect/Brand").Brand<"TreeIntegrity">; readonly path?: string | undefined; readonly ref?: string | undefined; } | { readonly type: "local"; readonly sourceType: "local"; readonly sourceName: "local"; readonly extensionType: "mcp-server"; readonly workspaceName: string & import("effect/Brand").Brand<"ExtensionName">; readonly packageFormat: "agentxm"; readonly packageOwner: string & import("effect/Brand").Brand<"Handle">; readonly packageName: string & import("effect/Brand").Brand<"ExtensionName">; readonly path: string; readonly contentIdentity: string & import("effect/Brand").Brand<"SourceHash">; readonly treeIntegrity: string & import("effect/Brand").Brand<"TreeIntegrity">; } | { readonly type: "registry"; readonly sourceType: "registry"; readonly endpoint: URL; readonly extensionType: "mcp-server"; readonly workspaceName: string & import("effect/Brand").Brand<"ExtensionName">; readonly packageFormat: "agentxm"; readonly owner: string & import("effect/Brand").Brand<"Handle">; readonly name: string & import("effect/Brand").Brand<"ExtensionName">; readonly resolvedVersion: string & import("effect/Brand").Brand<"Version">; readonly integrity: string; readonly sourceName: string; readonly publisherBindingId: string; readonly treeIntegrity: string & import("effect/Brand").Brand<"TreeIntegrity">; }>, AppError, never>; setMcpServer: ({ name, lockEntry, versionRange, env, enabled, agents }: SetMcpServerArgs) => Effect.Effect; setMcpServerLock: ({ name, lockEntry }: SetMcpServerArgs) => Effect.Effect; updateMcpServerEntry: (name: string, updater: (entry: McpServerEntry) => McpServerEntry) => Effect.Effect; setMcpServerEntry: (name: string, entry: McpServerEntry) => Effect.Effect; removeMcpServer: (name: string) => Effect.Effect; removeSkillLock: (name: string) => Effect.Effect; removeMcpServerSettings: (name: string) => Effect.Effect; removeMcpServerLock: (name: string) => Effect.Effect; removePackSettings: (name: string) => Effect.Effect; removePackLock: (name: string) => Effect.Effect; isExtensionRequiredByInstalledPack: (target: ExtensionTarget) => Effect.Effect; }, AppError, Path.Path | FileSystem.FileSystem>; /** * Create a layer that loads workspace read model from disk. * * The workspace must already be initialized. * * @param options - WorkspaceMutations layer options * @returns Layer providing WorkspaceMutations * * @experimental This API is unstable and may change without notice. */ export declare const layer: (options: WorkspaceLayerOptions) => Layer.Layer; //# sourceMappingURL=service.d.ts.map