@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.
- package/dist/src/index.d.ts +3 -2
- package/dist/src/index.js +3 -2
- package/dist/src/lockfile/lockfile.d.ts +3 -3
- package/dist/src/lockfile/schema.d.ts +5 -4
- package/dist/src/lockfile/schema.js +5 -4
- package/dist/src/settings/schema.d.ts +0 -10
- package/dist/src/settings/schema.js +1 -22
- package/dist/src/workspace/accepted-canonical-ref.d.ts +3 -3
- package/dist/src/workspace/accepted-canonical-ref.js +2 -2
- package/dist/src/workspace/canonical-observation.js +8 -5
- package/dist/src/workspace/configured-agent-outcomes.d.ts +0 -1
- package/dist/src/workspace/configured-agent-outcomes.js +0 -11
- package/dist/src/workspace/desired-state-graph.d.ts +13 -1
- package/dist/src/workspace/desired-state-graph.js +80 -10
- package/dist/src/workspace/mcp-entry-semantics.d.ts +2 -5
- package/dist/src/workspace/mcp-entry-semantics.js +2 -4
- package/dist/src/workspace/mcp-source-identity.d.ts +17 -0
- package/dist/src/workspace/mcp-source-identity.js +40 -0
- package/dist/src/workspace/read-model/__fixtures__/builder.js +1 -1
- package/dist/src/workspace/read-model/errors.d.ts +12 -2
- package/dist/src/workspace/read-model/errors.js +3 -0
- package/dist/src/workspace/read-model/extensions/mcp-server.js +46 -11
- package/dist/src/workspace/read-model/state.js +18 -2
- package/dist/src/workspace/read-model/types.d.ts +1 -1
- package/dist/src/workspace/read-model-record-readers.js +1 -7
- package/dist/src/workspace/service-interface.d.ts +9 -7
- package/dist/src/workspace/service.d.ts +241 -10
- package/dist/src/workspace/service.js +50 -18
- package/dist/src/workspace/test-stubs.js +3 -2
- package/package.json +5 -3
package/dist/src/index.d.ts
CHANGED
|
@@ -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,
|
|
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,
|
|
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:
|
|
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:
|
|
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:
|
|
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
|
|
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 =
|
|
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
|
|
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<
|
|
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
|
|
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 =
|
|
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
|
|
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
|
|
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 {
|
|
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>,
|
|
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>,
|
|
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.
|
|
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.
|
|
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?.
|
|
104
|
-
?
|
|
105
|
-
: accepted ===
|
|
106
|
-
?
|
|
107
|
-
:
|
|
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
|