@agentxm/workspace-state 0.28.4 → 0.28.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (30) hide show
  1. package/dist/src/index.d.ts +3 -2
  2. package/dist/src/index.js +3 -2
  3. package/dist/src/lockfile/lockfile.d.ts +3 -3
  4. package/dist/src/lockfile/schema.d.ts +5 -4
  5. package/dist/src/lockfile/schema.js +5 -4
  6. package/dist/src/settings/schema.d.ts +0 -10
  7. package/dist/src/settings/schema.js +1 -22
  8. package/dist/src/workspace/accepted-canonical-ref.d.ts +3 -3
  9. package/dist/src/workspace/accepted-canonical-ref.js +2 -2
  10. package/dist/src/workspace/canonical-observation.js +8 -5
  11. package/dist/src/workspace/configured-agent-outcomes.d.ts +0 -1
  12. package/dist/src/workspace/configured-agent-outcomes.js +0 -11
  13. package/dist/src/workspace/desired-state-graph.d.ts +13 -1
  14. package/dist/src/workspace/desired-state-graph.js +80 -10
  15. package/dist/src/workspace/mcp-entry-semantics.d.ts +2 -5
  16. package/dist/src/workspace/mcp-entry-semantics.js +2 -4
  17. package/dist/src/workspace/mcp-source-identity.d.ts +17 -0
  18. package/dist/src/workspace/mcp-source-identity.js +40 -0
  19. package/dist/src/workspace/read-model/__fixtures__/builder.js +1 -1
  20. package/dist/src/workspace/read-model/errors.d.ts +12 -2
  21. package/dist/src/workspace/read-model/errors.js +3 -0
  22. package/dist/src/workspace/read-model/extensions/mcp-server.js +46 -11
  23. package/dist/src/workspace/read-model/state.js +18 -2
  24. package/dist/src/workspace/read-model/types.d.ts +1 -1
  25. package/dist/src/workspace/read-model-record-readers.js +1 -7
  26. package/dist/src/workspace/service-interface.d.ts +9 -7
  27. package/dist/src/workspace/service.d.ts +241 -10
  28. package/dist/src/workspace/service.js +50 -18
  29. package/dist/src/workspace/test-stubs.js +3 -2
  30. package/package.json +5 -3
@@ -32,7 +32,7 @@ export { computeSkillPathsForLayout, type SkillPathSource, type SkillDirPaths, }
32
32
  export { ArtifactChangeSchema, type ArtifactChange } from "./workspace/artifact-change.js";
33
33
  export { ConfiguredAgentOutcomeSchema, type ConfiguredAgentOutcome, } from "./workspace/configured-agent-outcome.js";
34
34
  export { ConfiguredAgentOutcomesProvider, ConfiguredAgentOutcomesUnavailable, type ConfiguredAgentOutcomesFailureCategory, type ConfiguredAgentOutcomesForState, type ConfiguredAgentOutcomesProviderService, } from "./workspace/configured-agent-outcomes-provider.js";
35
- export { AXM_MCP_METADATA_KEY, AxmMcpMetadataSchema, isAxmManagedMcpEntry, isMcpServerApplicableToAgent, readAxmMcpMetadata, type AxmMcpMetadata, } from "./workspace/mcp-entry-semantics.js";
35
+ export { AXM_MCP_METADATA_KEY, AxmMcpMetadataSchema, isAxmManagedMcpEntry, readAxmMcpMetadata, type AxmMcpMetadata, } from "./workspace/mcp-entry-semantics.js";
36
36
  export { resolveProjectWorkspaceLayout, resolveProjectWorkspaceStatePaths, resolveUserWorkspaceLayout, type WorkspaceLayout, } from "./workspace/layout.js";
37
37
  export { AXM_DIR_NAME, USER_WORKSPACE_DIRECTORY, getProjectRuntimeDir, locateWorkspace, resolveUserAxmHome, resolveUserAxmHomePure, resolveUserHome, resolveUserWorkspaceRoot, resolveUserWorkspaceRootPure, type WorkspaceLocation, } from "./workspace/paths.js";
38
38
  export { removeIfExists } from "./workspace/remove-if-exists.js";
@@ -54,6 +54,7 @@ export { hookLockEntryToRef, knowledgeLockEntryToRef, mcpServerLockEntryToRef, p
54
54
  export { lockEntryToSourceParams, printSkillLockSourceLocator, } from "./workspace/lock-entry-to-source-params.js";
55
55
  export { sourceToLockEntry, type SourceToLockEntryInput, } from "./workspace/source-to-lock-entry.js";
56
56
  export { deriveSourceMetaFromLockType, type SourceMeta } from "./workspace/source-metadata.js";
57
+ export { mcpRegistryResolutionKey, mcpResolutionKey } from "./workspace/mcp-source-identity.js";
57
58
  export { READ_MODEL_EXTENSION_FAMILY_BY_TYPE, makeWorkspaceReadModel, WorkspaceReadModelConfig, type RawSourceBytes, type ScopedOwnerApi, type ScopedSourceHostsApi, type ScopedStateApi, type WorkspaceReadModel, type WorkspaceReadModelConfigService, } from "./workspace/read-model/service.js";
58
59
  export { AgentRootResolver, AgentRootResolverLive, } from "./workspace/read-model/agent-root-resolver.js";
59
60
  export { ExtensionInventoryClassificationSchema, ExtensionInventoryLifecycleSchema, ExtensionInventoryRowSchema, ExtensionInventorySchema, projectExtensionInventory, type ExtensionInventory, type ExtensionInventoryClassification, type ExtensionInventoryLifecycle, type ExtensionInventoryObservation, type ExtensionInventoryRow, type LifecycleInventoryCandidate, type ProjectExtensionInventoryInput, } from "./workspace/read-model/extensions/inventory.js";
@@ -62,7 +63,7 @@ export type { ActualMcpServer, ActualPack, ActualSkill, ActualSubagent, Installe
62
63
  export type { FileSpec, FixtureSpec, ScopeFiles, TreeFiles, } from "./workspace/read-model/__fixtures__/builder.js";
63
64
  export { WorkspaceMutations, type MakeWorkspaceTransactionCapabilities, type WorkspaceMutationsService, type WorkspaceMutationsError, type WorkspaceMutationsOptions, type WorkspaceSettingsReadFailure, type WorkspaceLockfileReadFailure, type WorkspaceStateReadFailure, type WorkspaceSettingsMutationFailure, type WorkspaceLockfileMutationFailure, type WorkspaceStateMutationFailure, type SetSkillArgs, type SetPackArgs, type SetMcpServerArgs, type SetSubagentArgs, type PackDirPath, type ExtensionTarget, type ExtensionTargetFor, type LockfileState, type WorkspaceTransactionRunner, type WorkspaceTransactionCapabilities, type WorkspaceTransitionAcquirer, type WorkspaceTransitionRequest, type WorkspaceLifecycleTransactionArgs, type SkillExtensionTarget, type PackExtensionTarget, type McpServerExtensionTarget, type SubagentExtensionTarget, type RuleExtensionTarget, type HookExtensionTarget, type KnowledgeExtensionTarget, } from "./workspace/service-interface.js";
64
65
  export { makeWorkspaceMutations, type WorkspaceLayerOptions } from "./workspace/service.js";
65
- export { LockfileDecodeError, LockfileIoError, LockfileParseError, SettingsDecodeError, SettingsIoError, SettingsParseError, SkillDiscoveryRootInvalid, SubagentScanFailed, WorkspaceRootEscape, type LockfileReadError, type SettingsReadError, } from "./workspace/read-model/errors.js";
66
+ export { LockfileDecodeError, LockfileIoError, LockfileParseError, LockfileVersionUnsupported, SettingsDecodeError, SettingsIoError, SettingsParseError, SkillDiscoveryRootInvalid, SubagentScanFailed, WorkspaceRootEscape, type LockfileReadError, type SettingsReadError, } from "./workspace/read-model/errors.js";
66
67
  export { AcceptedResolutionMissing, CanonicalPathRemovalError, DesiredPackGraphIncomplete, InlineExtensionSourceMissing, InvalidAgentId, LockedSkillMissing, LockEntryEndpointConflict, LockEntryNameInvalid, LockEntrySourceMissing, LockEntrySourceTypeConflict, LockEntryUrlInvalid, PackageContentHashFailed, SettingsEntryMissing, SupersededCanonicalRemovalFailed, SymlinkCreationError, WorkspaceLayoutError, WorkspaceNotInitialized, WorkspaceSourceInvalid, } from "./workspace/errors.js";
67
68
  export { CurrentWorkspaceClosure, CurrentWorkspaceTransaction, protectCreatedAncestors, protectInContext, protectWorkspacePath, readPendingClosureRestorationFailures, type Snapshot, type WorkspaceTransactionContext, TransitionLockError, TransitionLockUnavailable, WorkspaceDirectoryError, WorkspaceRestorationError, WorkspaceRestorationIncomplete, WorkspaceSnapshotError, WorkspaceTransitionCompromised, type TransitionContention, type TransitionLockHolder, type WorkspaceTransactionFailure, type WorkspaceTransitionAcquireFailure, } from "./workspace/transaction.js";
68
69
  export { setupScopeSupport, setupScopeSupportOutcomes, type SetupScopeSupportCategory, type SetupScopeSupportOutcome, type SetupScopeSupportReasonCode, type SetupScopeSupportStatus, } from "./workspace/setup-scope-support.js";
package/dist/src/index.js CHANGED
@@ -39,7 +39,7 @@ export { ArtifactChangeSchema } from "./workspace/artifact-change.js";
39
39
  export { ConfiguredAgentOutcomeSchema, } from "./workspace/configured-agent-outcome.js";
40
40
  export { ConfiguredAgentOutcomesProvider, ConfiguredAgentOutcomesUnavailable, } from "./workspace/configured-agent-outcomes-provider.js";
41
41
  // MCP entry settings semantics
42
- export { AXM_MCP_METADATA_KEY, AxmMcpMetadataSchema, isAxmManagedMcpEntry, isMcpServerApplicableToAgent, readAxmMcpMetadata, } from "./workspace/mcp-entry-semantics.js";
42
+ export { AXM_MCP_METADATA_KEY, AxmMcpMetadataSchema, isAxmManagedMcpEntry, readAxmMcpMetadata, } from "./workspace/mcp-entry-semantics.js";
43
43
  // Layout and paths
44
44
  export { resolveProjectWorkspaceLayout, resolveProjectWorkspaceStatePaths, resolveUserWorkspaceLayout, } from "./workspace/layout.js";
45
45
  export { AXM_DIR_NAME, USER_WORKSPACE_DIRECTORY, getProjectRuntimeDir, locateWorkspace, resolveUserAxmHome, resolveUserAxmHomePure, resolveUserHome, resolveUserWorkspaceRoot, resolveUserWorkspaceRootPure, } from "./workspace/paths.js";
@@ -67,6 +67,7 @@ export { lockEntryToSourceParams, printSkillLockSourceLocator, } from "./workspa
67
67
  export { sourceToLockEntry, } from "./workspace/source-to-lock-entry.js";
68
68
  // Source metadata
69
69
  export { deriveSourceMetaFromLockType } from "./workspace/source-metadata.js";
70
+ export { mcpRegistryResolutionKey, mcpResolutionKey } from "./workspace/mcp-source-identity.js";
70
71
  // Workspace read model
71
72
  export { READ_MODEL_EXTENSION_FAMILY_BY_TYPE, makeWorkspaceReadModel, WorkspaceReadModelConfig, } from "./workspace/read-model/service.js";
72
73
  export { AgentRootResolver, AgentRootResolverLive, } from "./workspace/read-model/agent-root-resolver.js";
@@ -76,7 +77,7 @@ export { getPriorityDirectories, parsePluginManifests, scanAgentSubagentFiles, s
76
77
  export { WorkspaceMutations, } from "./workspace/service-interface.js";
77
78
  export { makeWorkspaceMutations } from "./workspace/service.js";
78
79
  // Read-model per-source typed failure families
79
- export { LockfileDecodeError, LockfileIoError, LockfileParseError, SettingsDecodeError, SettingsIoError, SettingsParseError, SkillDiscoveryRootInvalid, SubagentScanFailed, WorkspaceRootEscape, } from "./workspace/read-model/errors.js";
80
+ export { LockfileDecodeError, LockfileIoError, LockfileParseError, LockfileVersionUnsupported, SettingsDecodeError, SettingsIoError, SettingsParseError, SkillDiscoveryRootInvalid, SubagentScanFailed, WorkspaceRootEscape, } from "./workspace/read-model/errors.js";
80
81
  // Workspace-state typed failure families
81
82
  export { AcceptedResolutionMissing, CanonicalPathRemovalError, DesiredPackGraphIncomplete, InlineExtensionSourceMissing, InvalidAgentId, LockedSkillMissing, LockEntryEndpointConflict, LockEntryNameInvalid, LockEntrySourceMissing, LockEntrySourceTypeConflict, LockEntryUrlInvalid, PackageContentHashFailed, SettingsEntryMissing, SupersededCanonicalRemovalFailed, SymlinkCreationError, WorkspaceLayoutError, WorkspaceNotInitialized, WorkspaceSourceInvalid, } from "./workspace/errors.js";
82
83
  // Workspace transaction registration (the WS half of the transaction seam)
@@ -173,7 +173,7 @@ export declare const commitLockfileUpdates: (axmDir: string, lockfile: Lockfile,
173
173
  readonly treeIntegrity: string & import("effect/Brand").Brand<"TreeIntegrity">;
174
174
  };
175
175
  };
176
- readonly lockfileVersion: 6;
176
+ readonly lockfileVersion: 7;
177
177
  readonly knowledge?: {
178
178
  readonly [x: string]: {
179
179
  readonly type: "github";
@@ -913,7 +913,7 @@ export declare const commitLockfileSnapshotUpdateAtPath: (lockfilePath: string,
913
913
  readonly treeIntegrity: string & import("effect/Brand").Brand<"TreeIntegrity">;
914
914
  };
915
915
  };
916
- readonly lockfileVersion: 6;
916
+ readonly lockfileVersion: 7;
917
917
  readonly knowledge?: {
918
918
  readonly [x: string]: {
919
919
  readonly type: "github";
@@ -1642,7 +1642,7 @@ export declare const commitLockfileSnapshotUpdate: (axmDir: string, base: Lockfi
1642
1642
  readonly treeIntegrity: string & import("effect/Brand").Brand<"TreeIntegrity">;
1643
1643
  };
1644
1644
  };
1645
- readonly lockfileVersion: 6;
1645
+ readonly lockfileVersion: 7;
1646
1646
  readonly knowledge?: {
1647
1647
  readonly [x: string]: {
1648
1648
  readonly type: "github";
@@ -4,13 +4,13 @@
4
4
  * The lockfile (axm-lock.yaml) records accepted immutable resolutions for
5
5
  * externally sourced extensions.
6
6
  *
7
- * Lockfile v6 is authority, not receipt history. It contains no authored,
7
+ * Lockfile v7 is authority, not receipt history. It contains no authored,
8
8
  * bundled, inline, projection, completion-time, or command-history state.
9
9
  *
10
10
  * @experimental This API is unstable and may change without notice.
11
11
  */
12
12
  import * as Schema from "effect/Schema";
13
- export declare const LOCKFILE_VERSION = 6;
13
+ export declare const LOCKFILE_VERSION = 7;
14
14
  /**
15
15
  * Lock entry for a single installed skill.
16
16
  * Discriminated union by the `type` field.
@@ -667,7 +667,8 @@ export declare const McpServerLockEntrySchema: Schema.Union<readonly [Schema.Str
667
667
  */
668
668
  export type McpServerLockEntry = Schema.Schema.Type<typeof McpServerLockEntrySchema>;
669
669
  /**
670
- * Map of MCP server names to their lock entries.
670
+ * Map of canonical MCP source-resolution identities to their lock entries.
671
+ * Local connection names live only in settings and native projections.
671
672
  *
672
673
  * @experimental This API is unstable and may change without notice.
673
674
  */
@@ -2339,7 +2340,7 @@ export declare const LOCK_ENTRY_SCHEMA_BY_TYPE: {
2339
2340
  }>]>;
2340
2341
  };
2341
2342
  export declare const LockfileSchema: Schema.Struct<{
2342
- readonly lockfileVersion: Schema.Literal<6>;
2343
+ readonly lockfileVersion: Schema.Literal<7>;
2343
2344
  readonly skills: Schema.$Record<Schema.String, Schema.Union<readonly [Schema.Struct<{
2344
2345
  readonly type: Schema.Literal<"github">;
2345
2346
  readonly sourceType: Schema.Literal<"github">;
@@ -4,7 +4,7 @@
4
4
  * The lockfile (axm-lock.yaml) records accepted immutable resolutions for
5
5
  * externally sourced extensions.
6
6
  *
7
- * Lockfile v6 is authority, not receipt history. It contains no authored,
7
+ * Lockfile v7 is authority, not receipt history. It contains no authored,
8
8
  * bundled, inline, projection, completion-time, or command-history state.
9
9
  *
10
10
  * @experimental This API is unstable and may change without notice.
@@ -16,7 +16,7 @@ import { TreeIntegritySchema } from "../workspace/materialized-tree.js";
16
16
  import { ExtensionNameSchema } from "@agentxm/extension-model/unstable/extensions/common";
17
17
  import { VersionSchema } from "@agentxm/extension-model/unstable/version-constraints";
18
18
  import { SourceNamespaceSchema, SourceRefSchema, SourceSegmentSchema, SourceSubPathSchema, } from "@agentxm/extension-model/unstable/sources/types";
19
- export const LOCKFILE_VERSION = 6;
19
+ export const LOCKFILE_VERSION = 7;
20
20
  // =============================================================================
21
21
  // Flat Source Schemas (discriminated by type field)
22
22
  // =============================================================================
@@ -234,7 +234,8 @@ export const McpServerLockEntrySchema = makeSourceLockUnion("mcp-server", Handle
234
234
  // MCP Servers Lock Map
235
235
  // =============================================================================
236
236
  /**
237
- * Map of MCP server names to their lock entries.
237
+ * Map of canonical MCP source-resolution identities to their lock entries.
238
+ * Local connection names live only in settings and native projections.
238
239
  *
239
240
  * @experimental This API is unstable and may change without notice.
240
241
  */
@@ -379,7 +380,7 @@ export const LOCK_ENTRY_SCHEMA_BY_TYPE = {
379
380
  * enabling reproducible installations across environments.
380
381
  *
381
382
  * Structure:
382
- * - lockfileVersion: Schema version (currently 6)
383
+ * - lockfileVersion: Schema version (currently 7)
383
384
  * - skills: Map of skill names to their lock entries
384
385
  * - packs: Map of pack names to their lock entries (optional)
385
386
  *
@@ -268,7 +268,6 @@ export declare const McpServerEntryObjectSchema: Schema.Struct<{
268
268
  readonly source: Schema.NonEmptyString;
269
269
  readonly enabled: Schema.optionalKey<Schema.Boolean>;
270
270
  readonly env: Schema.optionalKey<Schema.Union<readonly [Schema.$Record<Schema.String, Schema.String>, Schema.$Array<Schema.String>]>>;
271
- readonly agents: Schema.optionalKey<Schema.$Array<Schema.Literals<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", "kilo", "kimi-cli", "kiro-cli", "kode", "mcpjam", "minimax-code", "mistral-vibe", "mux", "neovate", "openclaw", "opencode", "openhands", "ona", "pi", "pochi", "qoder", "qoder-cn", "qwen-code", "replit", "roo", "rovodev", "tabnine-cli", "trae-cn", "trae", "warp", "windsurf", "zencoder", "zed", "zenflow"]>>>;
272
271
  }>;
273
272
  /**
274
273
  * Union of MCP server entry forms: plain source string or object with source + enabled + env.
@@ -287,7 +286,6 @@ export declare const McpServerEntrySchema: Schema.decodeTo<Schema.Union<readonly
287
286
  readonly headers: Schema.optional<Schema.$Record<Schema.String, Schema.String>>;
288
287
  readonly enabled: Schema.Boolean;
289
288
  readonly env: Schema.$Record<Schema.String, Schema.String>;
290
- readonly agents: Schema.optional<Schema.$Array<Schema.Literals<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", "kilo", "kimi-cli", "kiro-cli", "kode", "mcpjam", "minimax-code", "mistral-vibe", "mux", "neovate", "openclaw", "opencode", "openhands", "ona", "pi", "pochi", "qoder", "qoder-cn", "qwen-code", "replit", "roo", "rovodev", "tabnine-cli", "trae-cn", "trae", "warp", "windsurf", "zencoder", "zed", "zenflow"]>>>;
291
289
  }>, Schema.Struct<{
292
290
  readonly kind: Schema.Literal<"inline">;
293
291
  readonly source: Schema.optional<Schema.Never>;
@@ -297,7 +295,6 @@ export declare const McpServerEntrySchema: Schema.decodeTo<Schema.Union<readonly
297
295
  readonly headers: Schema.optional<Schema.$Record<Schema.String, Schema.String>>;
298
296
  readonly enabled: Schema.Boolean;
299
297
  readonly env: Schema.$Record<Schema.String, Schema.String>;
300
- readonly agents: Schema.optional<Schema.$Array<Schema.Literals<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", "kilo", "kimi-cli", "kiro-cli", "kode", "mcpjam", "minimax-code", "mistral-vibe", "mux", "neovate", "openclaw", "opencode", "openhands", "ona", "pi", "pochi", "qoder", "qoder-cn", "qwen-code", "replit", "roo", "rovodev", "tabnine-cli", "trae-cn", "trae", "warp", "windsurf", "zencoder", "zed", "zenflow"]>>>;
301
298
  }>]>, Schema.Union<readonly [Schema.String, Schema.Struct<{
302
299
  readonly source: Schema.optionalKey<Schema.NonEmptyString>;
303
300
  readonly command: Schema.optionalKey<Schema.NonEmptyString>;
@@ -306,7 +303,6 @@ export declare const McpServerEntrySchema: Schema.decodeTo<Schema.Union<readonly
306
303
  readonly headers: Schema.optionalKey<Schema.$Record<Schema.String, Schema.String>>;
307
304
  readonly enabled: Schema.optionalKey<Schema.Boolean>;
308
305
  readonly env: Schema.optionalKey<Schema.Union<readonly [Schema.$Record<Schema.String, Schema.String>, Schema.$Array<Schema.String>]>>;
309
- readonly agents: Schema.optionalKey<Schema.$Array<Schema.Literals<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", "kilo", "kimi-cli", "kiro-cli", "kode", "mcpjam", "minimax-code", "mistral-vibe", "mux", "neovate", "openclaw", "opencode", "openhands", "ona", "pi", "pochi", "qoder", "qoder-cn", "qwen-code", "replit", "roo", "rovodev", "tabnine-cli", "trae-cn", "trae", "warp", "windsurf", "zencoder", "zed", "zenflow"]>>>;
310
306
  }>]>, never, never>;
311
307
  /**
312
308
  * Inferred type for McpServerEntry schema.
@@ -336,7 +332,6 @@ export declare const McpServersMapSchema: Schema.$Record<Schema.String, Schema.d
336
332
  readonly headers: Schema.optional<Schema.$Record<Schema.String, Schema.String>>;
337
333
  readonly enabled: Schema.Boolean;
338
334
  readonly env: Schema.$Record<Schema.String, Schema.String>;
339
- readonly agents: Schema.optional<Schema.$Array<Schema.Literals<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", "kilo", "kimi-cli", "kiro-cli", "kode", "mcpjam", "minimax-code", "mistral-vibe", "mux", "neovate", "openclaw", "opencode", "openhands", "ona", "pi", "pochi", "qoder", "qoder-cn", "qwen-code", "replit", "roo", "rovodev", "tabnine-cli", "trae-cn", "trae", "warp", "windsurf", "zencoder", "zed", "zenflow"]>>>;
340
335
  }>, Schema.Struct<{
341
336
  readonly kind: Schema.Literal<"inline">;
342
337
  readonly source: Schema.optional<Schema.Never>;
@@ -346,7 +341,6 @@ export declare const McpServersMapSchema: Schema.$Record<Schema.String, Schema.d
346
341
  readonly headers: Schema.optional<Schema.$Record<Schema.String, Schema.String>>;
347
342
  readonly enabled: Schema.Boolean;
348
343
  readonly env: Schema.$Record<Schema.String, Schema.String>;
349
- readonly agents: Schema.optional<Schema.$Array<Schema.Literals<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", "kilo", "kimi-cli", "kiro-cli", "kode", "mcpjam", "minimax-code", "mistral-vibe", "mux", "neovate", "openclaw", "opencode", "openhands", "ona", "pi", "pochi", "qoder", "qoder-cn", "qwen-code", "replit", "roo", "rovodev", "tabnine-cli", "trae-cn", "trae", "warp", "windsurf", "zencoder", "zed", "zenflow"]>>>;
350
344
  }>]>, Schema.Union<readonly [Schema.String, Schema.Struct<{
351
345
  readonly source: Schema.optionalKey<Schema.NonEmptyString>;
352
346
  readonly command: Schema.optionalKey<Schema.NonEmptyString>;
@@ -355,7 +349,6 @@ export declare const McpServersMapSchema: Schema.$Record<Schema.String, Schema.d
355
349
  readonly headers: Schema.optionalKey<Schema.$Record<Schema.String, Schema.String>>;
356
350
  readonly enabled: Schema.optionalKey<Schema.Boolean>;
357
351
  readonly env: Schema.optionalKey<Schema.Union<readonly [Schema.$Record<Schema.String, Schema.String>, Schema.$Array<Schema.String>]>>;
358
- readonly agents: Schema.optionalKey<Schema.$Array<Schema.Literals<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", "kilo", "kimi-cli", "kiro-cli", "kode", "mcpjam", "minimax-code", "mistral-vibe", "mux", "neovate", "openclaw", "opencode", "openhands", "ona", "pi", "pochi", "qoder", "qoder-cn", "qwen-code", "replit", "roo", "rovodev", "tabnine-cli", "trae-cn", "trae", "warp", "windsurf", "zencoder", "zed", "zenflow"]>>>;
359
352
  }>]>, never, never>>;
360
353
  /**
361
354
  * Inferred type for McpServersMap schema.
@@ -643,7 +636,6 @@ export declare const SettingsSchema: Schema.StructWithRest<Schema.Struct<{
643
636
  readonly headers: Schema.optional<Schema.$Record<Schema.String, Schema.String>>;
644
637
  readonly enabled: Schema.Boolean;
645
638
  readonly env: Schema.$Record<Schema.String, Schema.String>;
646
- readonly agents: Schema.optional<Schema.$Array<Schema.Literals<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", "kilo", "kimi-cli", "kiro-cli", "kode", "mcpjam", "minimax-code", "mistral-vibe", "mux", "neovate", "openclaw", "opencode", "openhands", "ona", "pi", "pochi", "qoder", "qoder-cn", "qwen-code", "replit", "roo", "rovodev", "tabnine-cli", "trae-cn", "trae", "warp", "windsurf", "zencoder", "zed", "zenflow"]>>>;
647
639
  }>, Schema.Struct<{
648
640
  readonly kind: Schema.Literal<"inline">;
649
641
  readonly source: Schema.optional<Schema.Never>;
@@ -653,7 +645,6 @@ export declare const SettingsSchema: Schema.StructWithRest<Schema.Struct<{
653
645
  readonly headers: Schema.optional<Schema.$Record<Schema.String, Schema.String>>;
654
646
  readonly enabled: Schema.Boolean;
655
647
  readonly env: Schema.$Record<Schema.String, Schema.String>;
656
- readonly agents: Schema.optional<Schema.$Array<Schema.Literals<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", "kilo", "kimi-cli", "kiro-cli", "kode", "mcpjam", "minimax-code", "mistral-vibe", "mux", "neovate", "openclaw", "opencode", "openhands", "ona", "pi", "pochi", "qoder", "qoder-cn", "qwen-code", "replit", "roo", "rovodev", "tabnine-cli", "trae-cn", "trae", "warp", "windsurf", "zencoder", "zed", "zenflow"]>>>;
657
648
  }>]>, Schema.Union<readonly [Schema.String, Schema.Struct<{
658
649
  readonly source: Schema.optionalKey<Schema.NonEmptyString>;
659
650
  readonly command: Schema.optionalKey<Schema.NonEmptyString>;
@@ -662,7 +653,6 @@ export declare const SettingsSchema: Schema.StructWithRest<Schema.Struct<{
662
653
  readonly headers: Schema.optionalKey<Schema.$Record<Schema.String, Schema.String>>;
663
654
  readonly enabled: Schema.optionalKey<Schema.Boolean>;
664
655
  readonly env: Schema.optionalKey<Schema.Union<readonly [Schema.$Record<Schema.String, Schema.String>, Schema.$Array<Schema.String>]>>;
665
- readonly agents: Schema.optionalKey<Schema.$Array<Schema.Literals<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", "kilo", "kimi-cli", "kiro-cli", "kode", "mcpjam", "minimax-code", "mistral-vibe", "mux", "neovate", "openclaw", "opencode", "openhands", "ona", "pi", "pochi", "qoder", "qoder-cn", "qwen-code", "replit", "roo", "rovodev", "tabnine-cli", "trae-cn", "trae", "warp", "windsurf", "zencoder", "zed", "zenflow"]>>>;
666
656
  }>]>, never, never>>]>>;
667
657
  readonly mcpServersConfig: Schema.optionalKey<Schema.Struct<{
668
658
  readonly dir: Schema.optionalKey<Schema.NonEmptyString>;
@@ -169,12 +169,6 @@ const McpServerEnvSchema = Schema.Union([
169
169
  title: "MCP Server Env",
170
170
  description: "MCP environment values as a map or pass-through variable names. Array entries decode to ${VAR} references.",
171
171
  });
172
- const McpServerAgentsSchema = Schema.Array(ConfigurableAgentIdSchema)
173
- .annotate({
174
- description: "Coding agents this MCP server applies to. Omit to target every configured agent.",
175
- examples: [["claude-code", "codex"]],
176
- })
177
- .check(Schema.isMinLength(1), Schema.isUnique());
178
172
  const decodeMcpEnv = (env) => {
179
173
  if (env === undefined)
180
174
  return {};
@@ -465,7 +459,6 @@ export const McpServerEntryObjectSchema = Schema.Struct({
465
459
  source: entrySourceFieldSchema("MCP server", "mcps"),
466
460
  enabled: enabledFieldSchema,
467
461
  env: Schema.optionalKey(McpServerEnvSchema),
468
- agents: Schema.optionalKey(McpServerAgentsSchema),
469
462
  }).annotate({
470
463
  title: "MCP Server Entry Object",
471
464
  description: "An MCP server entry with source and optional enabled/env fields.",
@@ -489,7 +482,6 @@ const McpServerVerboseEntryObjectSchema = Schema.Struct({
489
482
  })),
490
483
  enabled: enabledFieldSchema,
491
484
  env: Schema.optionalKey(McpServerEnvSchema),
492
- agents: Schema.optionalKey(McpServerAgentsSchema),
493
485
  }).pipe(Schema.check(Schema.makeFilter((entry) => validateMcpTransportExclusivity(entry))));
494
486
  /**
495
487
  * Union of MCP server entry forms: plain source string or object with source + enabled + env.
@@ -509,7 +501,6 @@ export const McpServerEntrySchema = compactOrVerboseEntry(McpServerVerboseEntryO
509
501
  headers: Schema.optional(Schema.Record(Schema.String, Schema.String)),
510
502
  enabled: Schema.Boolean,
511
503
  env: Schema.Record(Schema.String, Schema.String),
512
- agents: Schema.optional(Schema.Array(ConfigurableAgentIdSchema)),
513
504
  }),
514
505
  Schema.Struct({
515
506
  kind: Schema.Literal("inline"),
@@ -520,7 +511,6 @@ export const McpServerEntrySchema = compactOrVerboseEntry(McpServerVerboseEntryO
520
511
  headers: Schema.optional(Schema.Record(Schema.String, Schema.String)),
521
512
  enabled: Schema.Boolean,
522
513
  env: Schema.Record(Schema.String, Schema.String),
523
- agents: Schema.optional(Schema.Array(ConfigurableAgentIdSchema)),
524
514
  }),
525
515
  ]), {
526
516
  decode: (entry) => typeof entry === "string"
@@ -531,7 +521,6 @@ export const McpServerEntrySchema = compactOrVerboseEntry(McpServerVerboseEntryO
531
521
  source: entry.source,
532
522
  enabled: entry.enabled ?? true,
533
523
  env: decodeMcpEnv(entry.env),
534
- ...(entry.agents === undefined ? {} : { agents: entry.agents }),
535
524
  }
536
525
  : {
537
526
  kind: "inline",
@@ -541,13 +530,9 @@ export const McpServerEntrySchema = compactOrVerboseEntry(McpServerVerboseEntryO
541
530
  ...(entry.headers === undefined ? {} : { headers: entry.headers }),
542
531
  enabled: entry.enabled ?? true,
543
532
  env: decodeMcpEnv(entry.env),
544
- ...(entry.agents === undefined ? {} : { agents: entry.agents }),
545
533
  },
546
534
  encode: (entry) => {
547
- if (entry.kind !== "inline" &&
548
- entry.enabled &&
549
- Object.keys(entry.env).length === 0 &&
550
- entry.agents === undefined) {
535
+ if (entry.kind !== "inline" && entry.enabled && Object.keys(entry.env).length === 0) {
551
536
  return entry.source;
552
537
  }
553
538
  const obj = {};
@@ -568,14 +553,11 @@ export const McpServerEntrySchema = compactOrVerboseEntry(McpServerVerboseEntryO
568
553
  obj.enabled = false;
569
554
  if (Object.keys(entry.env).length > 0)
570
555
  obj.env = entry.env;
571
- if (entry.agents !== undefined)
572
- obj.agents = entry.agents;
573
556
  if (entry.kind !== "inline") {
574
557
  return {
575
558
  source: entry.source,
576
559
  ...(obj.enabled === undefined ? {} : { enabled: obj.enabled }),
577
560
  ...(obj.env === undefined ? {} : { env: obj.env }),
578
- ...(obj.agents === undefined ? {} : { agents: obj.agents }),
579
561
  };
580
562
  }
581
563
  if (entry.command !== undefined) {
@@ -584,7 +566,6 @@ export const McpServerEntrySchema = compactOrVerboseEntry(McpServerVerboseEntryO
584
566
  ...(obj.args === undefined ? {} : { args: obj.args }),
585
567
  ...(obj.enabled === undefined ? {} : { enabled: obj.enabled }),
586
568
  ...(obj.env === undefined ? {} : { env: obj.env }),
587
- ...(obj.agents === undefined ? {} : { agents: obj.agents }),
588
569
  };
589
570
  }
590
571
  return {
@@ -592,7 +573,6 @@ export const McpServerEntrySchema = compactOrVerboseEntry(McpServerVerboseEntryO
592
573
  ...(obj.headers === undefined ? {} : { headers: obj.headers }),
593
574
  ...(obj.enabled === undefined ? {} : { enabled: obj.enabled }),
594
575
  ...(obj.env === undefined ? {} : { env: obj.env }),
595
- ...(obj.agents === undefined ? {} : { agents: obj.agents }),
596
576
  };
597
577
  },
598
578
  }, {
@@ -606,7 +586,6 @@ export const McpServerEntrySchema = compactOrVerboseEntry(McpServerVerboseEntryO
606
586
  command: "npx",
607
587
  args: ["-y", "linear-mcp-server"],
608
588
  env: ["LINEAR_API_KEY"],
609
- agents: ["claude-code"],
610
589
  },
611
590
  { url: "https://mcp.sentry.dev/sse", headers: { Authorization: "Bearer ${SENTRY_TOKEN}" } },
612
591
  ],
@@ -9,7 +9,7 @@ import type { WorkspaceSnapshotError } from "./transaction.js";
9
9
  import { type LockEntryToRefError } from "./lock-entry-to-ref.js";
10
10
  import { type AcceptedExtensionResolution, type CanonicalObservation } from "./canonical-observation.js";
11
11
  import type { DesiredExtensionNode } from "./desired-state-graph.js";
12
- import type { WorkspaceLockfileReadFailure, WorkspaceMutationsService, WorkspaceStateReadFailure } from "./service-interface.js";
12
+ import type { WorkspaceMutationsService, WorkspaceStateReadFailure } from "./service-interface.js";
13
13
  interface AcceptedCanonicalRefArgs {
14
14
  readonly workspace: WorkspaceMutationsService;
15
15
  readonly type: DesiredExtensionNode["type"];
@@ -34,7 +34,7 @@ export interface UsableAcceptedCanonical extends UsableAcceptedCanonicalObservat
34
34
  /** Canonical package AXM may delete when removing desired state. Authored source is durable. */
35
35
  export declare const removableAcceptedCanonicalPath: (canonical: Option.Option<AcceptedCanonicalObservation>) => Option.Option<string>;
36
36
  /** Exact acquired canonical path reconstructed directly from accepted lock authority. */
37
- export declare const acceptedLockedCanonicalPath: (args: AcceptedCanonicalRefArgs) => Effect.Effect<Option.Option<string>, WorkspaceLockfileReadFailure, Path.Path>;
37
+ export declare const acceptedLockedCanonicalPath: (args: AcceptedCanonicalRefArgs) => Effect.Effect<Option.Option<string>, WorkspaceStateReadFailure, Path.Path>;
38
38
  /**
39
39
  * Capture exact cleanup for a superseded accepted package. The old path is
40
40
  * read before the lock transition; the returned effect runs afterward and
@@ -42,7 +42,7 @@ export declare const acceptedLockedCanonicalPath: (args: AcceptedCanonicalRefArg
42
42
  */
43
43
  export declare const prepareAcceptedCanonicalTransition: (args: AcceptedCanonicalRefArgs & {
44
44
  readonly ref: ExtensionRef;
45
- }) => Effect.Effect<Effect.Effect<void, WorkspaceSnapshotError | SupersededCanonicalRemovalFailed>, WorkspaceLockfileReadFailure, FileSystem.FileSystem | Path.Path>;
45
+ }) => Effect.Effect<Effect.Effect<void, WorkspaceSnapshotError | SupersededCanonicalRemovalFailed>, WorkspaceStateReadFailure, FileSystem.FileSystem | Path.Path>;
46
46
  /** Reconstruct a ref directly from accepted lock authority without desired reachability. */
47
47
  export declare const acceptedLockedResolutionRef: (args: AcceptedCanonicalRefArgs) => Effect.Effect<Option.Option<ExtensionRef>, AcceptedCanonicalRefError, FileSystem.FileSystem | Path.Path>;
48
48
  /**
@@ -21,7 +21,7 @@ const getAcceptedResolution = (workspace, type, name) => {
21
21
  case "skill":
22
22
  return workspace.getLockedSkill(name);
23
23
  case "mcp-server":
24
- return workspace.getLockedMcpServer(name);
24
+ return workspace.getLockedMcpServerForConnection(name);
25
25
  case "subagent":
26
26
  return workspace.getLockedSubagent(name);
27
27
  case "rule":
@@ -101,7 +101,7 @@ const refFromAcceptedResolution = (workspace, type, name) => Effect.gen(function
101
101
  });
102
102
  }
103
103
  case "mcp-server": {
104
- const entry = yield* workspace.getLockedMcpServer(name);
104
+ const entry = yield* workspace.getLockedMcpServerForConnection(name);
105
105
  return yield* Option.match(entry, {
106
106
  onNone: () => Effect.fail(missingAccepted("MCP", name)),
107
107
  onSome: (value) => mcpServerLockEntryToRef(name, value, deps),
@@ -19,6 +19,7 @@ import { printSourceParams } from "@agentxm/extension-model/unstable/sources/pri
19
19
  import { lockEntryToSourceParams } from "./lock-entry-to-source-params.js";
20
20
  import { collectDesiredConstraintContributors, } from "./desired-state-graph.js";
21
21
  import { computeExtensionPathsForLayout, extensionPathSourceFromLockEntry, } from "./extension-paths.js";
22
+ import { mcpResolutionKey } from "./mcp-source-identity.js";
22
23
  const MANIFEST_CONTRACTS = {
23
24
  skill: { filename: "skill.json", schema: SkillManifestSchema },
24
25
  "mcp-server": { filename: "mcp.json", schema: McpServerManifestSchema },
@@ -100,11 +101,13 @@ export const observeCanonicalExtension = ({ layout, desired, accepted, }) => Eff
100
101
  status: "missing-resolution",
101
102
  };
102
103
  }
103
- const acceptedIdentity = accepted?.type === "registry"
104
- ? `${accepted.owner}/${toExtensionTypePlural(desired.type)}/${accepted.name}`
105
- : accepted === undefined
106
- ? undefined
107
- : printSourceParams(lockEntryToSourceParams(accepted));
104
+ const acceptedIdentity = accepted?.extensionType === "mcp-server"
105
+ ? mcpResolutionKey(accepted)
106
+ : accepted?.type === "registry"
107
+ ? `${accepted.owner}/${toExtensionTypePlural(desired.type)}/${accepted.name}`
108
+ : accepted === undefined
109
+ ? undefined
110
+ : printSourceParams(lockEntryToSourceParams(accepted));
108
111
  if (!workspaceAuthored &&
109
112
  !bundled &&
110
113
  acceptedIdentity !== desired.identity &&
@@ -43,6 +43,5 @@ export declare const configuredAgentLifecycleOutcomes: (args: {
43
43
  readonly targetState: "enabled" | "disabled" | "absent";
44
44
  readonly installed: boolean;
45
45
  readonly observedAgentIds?: ReadonlyArray<string>;
46
- readonly applicableAgentIds?: ReadonlyArray<string>;
47
46
  }) => ReadonlyArray<ConfiguredAgentOutcome>;
48
47
  //# sourceMappingURL=configured-agent-outcomes.d.ts.map
@@ -32,7 +32,6 @@ const unsupportedOutcome = (args) => ({
32
32
  export const configuredAgentLifecycleOutcomes = (args) => {
33
33
  const policy = EXTENSION_CONFIGURED_AGENT_POLICY[args.type];
34
34
  const observed = new Set(args.observedAgentIds ?? []);
35
- const applicable = args.applicableAgentIds === undefined ? undefined : new Set(args.applicableAgentIds);
36
35
  if (policy.kind === "not-applicable") {
37
36
  return args.agentIds.map((agentId) => ({
38
37
  extensionType: args.type,
@@ -57,16 +56,6 @@ export const configuredAgentLifecycleOutcomes = (args) => {
57
56
  : "The extension is disabled, so no agent projection is expected.",
58
57
  };
59
58
  }
60
- if (applicable !== undefined && !applicable.has(agentId)) {
61
- return {
62
- extensionType: args.type,
63
- name: args.name,
64
- agentId,
65
- outcome: "not-applicable",
66
- reasonCode: "target-policy-excluded",
67
- reason: `${agentId} is excluded by the extension target policy.`,
68
- };
69
- }
70
59
  const support = supportByAgent.get(agentId);
71
60
  if (support === undefined) {
72
61
  return unsupportedOutcome({
@@ -7,12 +7,14 @@ import type { Settings } from "../settings/index.js";
7
7
  import { type WorkspaceLayout } from "./layout.js";
8
8
  export type DesiredExtensionOrigin = {
9
9
  readonly type: "settings";
10
+ readonly localName?: string;
10
11
  readonly authority?: "sourced";
11
12
  readonly source: string;
12
13
  readonly enabled: boolean;
13
14
  readonly constraint?: string;
14
15
  } | {
15
16
  readonly type: "settings";
17
+ readonly localName?: string;
16
18
  readonly authority: "inline";
17
19
  readonly source?: undefined;
18
20
  readonly constraint?: undefined;
@@ -52,6 +54,7 @@ export interface DesiredConstraintContributor {
52
54
  readonly range: string;
53
55
  readonly location: string;
54
56
  readonly dependingPack?: string;
57
+ readonly localName?: string;
55
58
  }
56
59
  export type DesiredStateProblem = {
57
60
  readonly type: "workspace-owner-missing";
@@ -98,8 +101,15 @@ export type DesiredStateProblem = {
98
101
  export interface DesiredStateGraph {
99
102
  readonly complete: boolean;
100
103
  readonly nodes: ReadonlyArray<DesiredExtensionNode>;
104
+ readonly mcpSourceClosures: ReadonlyArray<DesiredMcpSourceClosure>;
101
105
  readonly problems: ReadonlyArray<DesiredStateProblem>;
102
106
  }
107
+ export interface DesiredMcpSourceClosure {
108
+ readonly identity: string;
109
+ readonly localNames: ReadonlyArray<string>;
110
+ readonly constraints: ReadonlyArray<string>;
111
+ readonly origins: ReadonlyArray<DesiredExtensionOrigin>;
112
+ }
103
113
  export type ProspectivePackRef = Pick<PackRef, "owner" | "pack" | "version">;
104
114
  interface DesiredStateGraphArgs {
105
115
  readonly baseDir: string;
@@ -107,8 +117,10 @@ interface DesiredStateGraphArgs {
107
117
  readonly layout?: WorkspaceLayout;
108
118
  /** Resolved Pack roots whose manifests supersede the currently materialized copy. */
109
119
  readonly prospectivePacks?: ReadonlyArray<ProspectivePackRef>;
120
+ /** Registry source aliases mapped to their stable authority endpoints. */
121
+ readonly registryAuthorities?: Readonly<Record<string, URL | string>>;
110
122
  }
111
123
  export declare const collectDesiredConstraintContributors: (_path: Path.Path, origins: ReadonlyArray<DesiredExtensionOrigin>) => ReadonlyArray<DesiredConstraintContributor>;
112
- export declare const buildDesiredStateGraph: ({ baseDir, settings, layout, prospectivePacks, }: DesiredStateGraphArgs) => Effect.Effect<DesiredStateGraph, never, FileSystem.FileSystem | Path.Path>;
124
+ export declare const buildDesiredStateGraph: ({ baseDir, settings, layout, prospectivePacks, registryAuthorities, }: DesiredStateGraphArgs) => Effect.Effect<DesiredStateGraph, never, FileSystem.FileSystem | Path.Path>;
113
125
  export {};
114
126
  //# sourceMappingURL=desired-state-graph.d.ts.map