@agentxm/extension-lifecycle 0.29.4 → 0.30.2
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/activation/set-activation.d.ts +22 -40
- package/dist/src/activation/set-activation.js +191 -336
- package/dist/src/demote/demote-to-external-source.d.ts +1 -1
- package/dist/src/demote/demote-to-external-source.js +53 -24
- package/dist/src/hooks/install/plan.js +6 -3
- package/dist/src/hooks/uninstall/plan.js +4 -3
- package/dist/src/index.d.ts +1 -5
- package/dist/src/index.js +1 -4
- package/dist/src/install/install-extensions.d.ts +5 -5
- package/dist/src/install/install-extensions.js +2 -1
- package/dist/src/install/root-intent.d.ts +2 -2
- package/dist/src/install/vocabulary.d.ts +5 -4
- package/dist/src/knowledge/install/plan.js +2 -1
- package/dist/src/knowledge/uninstall/plan.js +4 -3
- package/dist/src/mcps/install/plan.d.ts +1 -1
- package/dist/src/mcps/install/plan.js +59 -3
- package/dist/src/mcps/operations/uninstall.js +2 -1
- package/dist/src/mcps/uninstall/plan.js +13 -4
- package/dist/src/packs/graph-transition.d.ts +0 -25
- package/dist/src/packs/graph-transition.js +0 -101
- package/dist/src/packs/install/plan.d.ts +0 -13
- package/dist/src/packs/install/plan.js +12 -9
- package/dist/src/packs/member-install-step.js +8 -21
- package/dist/src/packs/promote-authored-pack.js +6 -3
- package/dist/src/packs/uninstall/plan.js +53 -21
- package/dist/src/rules/install/plan.js +6 -3
- package/dist/src/rules/uninstall/plan.js +4 -3
- package/dist/src/skills/application/index.d.ts +42 -0
- package/dist/src/skills/application/index.js +37 -0
- package/dist/src/skills/domain/selection.d.ts +22 -0
- package/dist/src/skills/domain/selection.js +18 -0
- package/dist/src/skills/install/artifact.d.ts +4 -0
- package/dist/src/skills/install/artifact.js +29 -0
- package/dist/src/skills/install/bundled.js +4 -4
- package/dist/src/skills/install/plan.d.ts +15 -4
- package/dist/src/skills/install/plan.js +114 -97
- package/dist/src/skills/uninstall/plan.js +13 -5
- package/dist/src/step-failure.js +12 -0
- package/dist/src/subagents/application/index.d.ts +42 -0
- package/dist/src/subagents/application/index.js +37 -0
- package/dist/src/subagents/domain/selection.d.ts +22 -0
- package/dist/src/subagents/domain/selection.js +18 -0
- package/dist/src/subagents/install/plan.d.ts +2 -2
- package/dist/src/subagents/install/plan.js +4 -4
- package/dist/src/subagents/operations/enable.js +1 -3
- package/dist/src/subagents/uninstall/plan.js +5 -4
- package/dist/src/testing.d.ts +3 -2
- package/dist/src/testing.js +9 -6
- package/dist/src/uninstall/root-intent.d.ts +2 -1
- package/dist/src/uninstall/root-intent.js +1 -0
- package/dist/src/uninstall/undesired-target.d.ts +26 -0
- package/dist/src/uninstall/undesired-target.js +56 -0
- package/dist/src/uninstall/uninstall-extensions.d.ts +1 -1
- package/dist/src/uninstall/uninstall-extensions.js +103 -3
- package/dist/src/update/root-request.d.ts +2 -2
- package/dist/src/update/selective/plan.d.ts +2 -3
- package/dist/src/update/selective/plan.js +2 -2
- package/dist/src/update/selective/requirements.d.ts +2 -6
- package/dist/src/update/selective/requirements.js +1 -3
- package/dist/src/update/selective/selection.js +1 -1
- package/dist/src/update/selective/skills.d.ts +2 -4
- package/dist/src/update/selective/skills.js +22 -27
- package/dist/src/update/selective/subagents.d.ts +2 -3
- package/dist/src/update/selective/subagents.js +11 -9
- package/dist/src/update/selective/use-case.d.ts +7 -7
- package/dist/src/update/selective/vocabulary.d.ts +1 -1
- package/dist/src/update/selector.js +1 -1
- package/dist/src/update/targeted-plan.js +4 -2
- package/dist/src/workspace-paths.d.ts +0 -6
- package/dist/src/workspace-paths.js +0 -10
- package/package.json +30 -24
- package/dist/src/glob.d.ts +0 -35
- package/dist/src/glob.js +0 -75
- package/dist/src/install/selection-interaction.d.ts +0 -46
- package/dist/src/install/selection-interaction.js +0 -22
- package/dist/src/skills/install/selection.d.ts +0 -26
- package/dist/src/skills/install/selection.js +0 -41
- package/dist/src/skills/operations/install-result.d.ts +0 -33
- package/dist/src/skills/operations/install-result.js +0 -10
- package/dist/src/skills/operations/install.d.ts +0 -67
- package/dist/src/skills/operations/install.js +0 -591
- package/dist/src/subagents/install/selection.d.ts +0 -26
- package/dist/src/subagents/install/selection.js +0 -37
- package/dist/src/uninstall/retention-policy.d.ts +0 -21
- package/dist/src/uninstall/retention-policy.js +0 -28
|
@@ -15,10 +15,11 @@ import * as Effect from "effect/Effect";
|
|
|
15
15
|
import * as Option from "effect/Option";
|
|
16
16
|
import { decodeExtensionNameSync, parseSourceQualifiedRegistrySourcePatternParts, } from "@agentxm/extension-model/unstable/extensions";
|
|
17
17
|
import { isWorkspaceSourceLocator } from "@agentxm/extension-model/unstable/sources/workspace";
|
|
18
|
-
import {
|
|
18
|
+
import { SubagentManager } from "@agentxm/extension-materialization";
|
|
19
|
+
import { buildInstallOperation } from "@agentxm/workspace-reconciliation";
|
|
19
20
|
import { classifyPublisherBindingTransition, makeConfiguredReleaseAgeEvaluation, normalizeReleaseAgeRecords, publisherTransitionWarning, registryBindingProposal, } from "@agentxm/extension-resolution";
|
|
20
21
|
import { resolveSource, SourceHostProviders } from "@agentxm/extension-sources";
|
|
21
|
-
import { operationPresentation, prepareExecutionCandidate,
|
|
22
|
+
import { operationPresentation, prepareExecutionCandidate, } from "@agentxm/workspace-operations";
|
|
22
23
|
import { acceptedResolutionRef, configuredRowsByName, WorkspaceMutations, } from "@agentxm/workspace-state";
|
|
23
24
|
import { ExtensionLifecycleFailed } from "../../errors.js";
|
|
24
25
|
import { withPublisherTrustConditions } from "../../publisher-binding.js";
|
|
@@ -267,16 +268,17 @@ export const prepareSelectiveSubagentUpdate = Effect.fn("SelectiveSubagentUpdate
|
|
|
267
268
|
warningsBySubagent.set(item.ref.subagent.name, publisherTransitionWarning(transition.value));
|
|
268
269
|
}
|
|
269
270
|
}
|
|
270
|
-
const
|
|
271
|
+
const makeStep = (ref) => {
|
|
271
272
|
const step = buildInstallOperation(subagentManager, {
|
|
272
273
|
toStepFailure: failureConversion.toStepFailure,
|
|
273
274
|
ref,
|
|
274
|
-
versionRange: Option.none(),
|
|
275
275
|
});
|
|
276
|
-
if (step.readiness === "error")
|
|
277
|
-
return
|
|
278
|
-
|
|
279
|
-
|
|
276
|
+
if (step.readiness === "error")
|
|
277
|
+
return step;
|
|
278
|
+
return {
|
|
279
|
+
...step,
|
|
280
|
+
run: step.run.pipe(Effect.map(appendWarning(warningsBySubagent.get(ref.subagent.name)))),
|
|
281
|
+
};
|
|
280
282
|
};
|
|
281
283
|
const units = resolved.map((item) => ({
|
|
282
284
|
name: item.ref.subagent.name,
|
|
@@ -284,7 +286,7 @@ export const prepareSelectiveSubagentUpdate = Effect.fn("SelectiveSubagentUpdate
|
|
|
284
286
|
force: request.ignoreVersionConstraints,
|
|
285
287
|
operation: item.ref,
|
|
286
288
|
}));
|
|
287
|
-
const rawPlan = buildSelectiveUpdatePlan(units, lockedSubagents, PLAN_NAME, Option.some(PLAN_DESCRIPTION),
|
|
289
|
+
const rawPlan = buildSelectiveUpdatePlan(units, lockedSubagents, PLAN_NAME, Option.some(PLAN_DESCRIPTION), makeStep);
|
|
288
290
|
const basePlanWithReleaseAge = {
|
|
289
291
|
...rawPlan,
|
|
290
292
|
presentation: operationPresentation({ imperative: "update", past: "Updated", gerund: "Updating" }, "subagent"),
|
|
@@ -36,7 +36,7 @@ export declare const prepareSelectiveUpdate: (request: SelectiveUpdateRequest) =
|
|
|
36
36
|
outcome: "planned";
|
|
37
37
|
subjectType: "skill";
|
|
38
38
|
planName: string;
|
|
39
|
-
execution: import("@agentxm/workspace-operations").ExecutionCandidate<import("
|
|
39
|
+
execution: import("@agentxm/workspace-operations").ExecutionCandidate<import("../../index.ts").InstallStepRequirements, never>;
|
|
40
40
|
reason?: never;
|
|
41
41
|
message?: never;
|
|
42
42
|
planDescription?: never;
|
|
@@ -60,11 +60,11 @@ export declare const prepareSelectiveUpdate: (request: SelectiveUpdateRequest) =
|
|
|
60
60
|
outcome: "planned";
|
|
61
61
|
subjectType: "subagent";
|
|
62
62
|
planName: string;
|
|
63
|
-
execution: import("@agentxm/workspace-operations").ExecutionCandidate<import("
|
|
63
|
+
execution: import("@agentxm/workspace-operations").ExecutionCandidate<import("../../index.ts").InstallStepRequirements, never>;
|
|
64
64
|
reason?: never;
|
|
65
65
|
message?: never;
|
|
66
66
|
planDescription?: never;
|
|
67
|
-
}, import("../../errors.ts").ExtensionLifecycleFailed | import("@agentxm/extension-sources").SourceSyntaxInvalid | import("@agentxm/extension-sources").SourceHostNotConfigured | import("@agentxm/extension-sources").SourceNotResolvable | import("@agentxm/extension-sources").SourceNetworkFailure | import("@agentxm/extension-sources").GitOperationFailed | import("@agentxm/extension-sources").WorkspaceCatalogUnavailable | import("@agentxm/extension-sources").AxmSkillGateUnavailable | import("@agentxm/registry-client").RegistryProblem | import("@agentxm/registry-client").RegistryRequestFailed | import("@agentxm/registry-client").RegistryOperationFailed | import("@agentxm/workspace-state").SettingsIoError | import("@agentxm/workspace-state").SettingsParseError | import("@agentxm/workspace-state").SettingsDecodeError | import("@agentxm/workspace-state").LockfileIoError | import("@agentxm/workspace-state").LockfileParseError | import("@agentxm/workspace-state").LockfileDecodeError | import("@agentxm/workspace-state").LockfileVersionUnsupported | import("@agentxm/workspace-state").WorkspaceRootEscape | import("@agentxm/workspace-state").LockfileValidationError | import("@agentxm/extension-resolution").ExtensionResolutionFailed | import("@agentxm/workspace-operations").CandidateFingerprintFailed, import("../../step-failure-conversion.ts").StepFailureConversion | import("
|
|
67
|
+
}, import("../../errors.ts").ExtensionLifecycleFailed | import("@agentxm/extension-sources").SourceSyntaxInvalid | import("@agentxm/extension-sources").SourceHostNotConfigured | import("@agentxm/extension-sources").SourceNotResolvable | import("@agentxm/extension-sources").SourceNetworkFailure | import("@agentxm/extension-sources").GitOperationFailed | import("@agentxm/extension-sources").WorkspaceCatalogUnavailable | import("@agentxm/extension-sources").AxmSkillGateUnavailable | import("@agentxm/registry-client").RegistryProblem | import("@agentxm/registry-client").RegistryRequestFailed | import("@agentxm/registry-client").RegistryOperationFailed | import("@agentxm/workspace-state").SettingsIoError | import("@agentxm/workspace-state").SettingsParseError | import("@agentxm/workspace-state").SettingsDecodeError | import("@agentxm/workspace-state").LockfileIoError | import("@agentxm/workspace-state").LockfileParseError | import("@agentxm/workspace-state").LockfileDecodeError | import("@agentxm/workspace-state").LockfileVersionUnsupported | import("@agentxm/workspace-state").WorkspaceRootEscape | import("@agentxm/workspace-state").LockfileValidationError | import("@agentxm/extension-resolution").ExtensionResolutionFailed | import("@agentxm/workspace-operations").CandidateFingerprintFailed, import("../../step-failure-conversion.ts").StepFailureConversion | import("@agentxm/workspace-state").ConfiguredAgentOutcomesProvider | import("@agentxm/extension-materialization").SkillManager | import("@agentxm/extension-resolution").ReleaseAgePosture | import("effect/Scope").Scope | import("@agentxm/extension-sources").SourceHostProviders | import("@agentxm/extension-materialization").SubagentManager | import("@agentxm/extension-sources").WorkspaceCatalog | import("../../index.ts").InstallStepRequirements>;
|
|
68
68
|
/** Settle a selective update, then preview or apply it. */
|
|
69
69
|
export declare const SelectiveUpdate: {
|
|
70
70
|
readonly prepare: (request: SelectiveUpdateRequest) => Effect.Effect<{
|
|
@@ -87,7 +87,7 @@ export declare const SelectiveUpdate: {
|
|
|
87
87
|
outcome: "planned";
|
|
88
88
|
subjectType: "skill";
|
|
89
89
|
planName: string;
|
|
90
|
-
execution: import("@agentxm/workspace-operations").ExecutionCandidate<import("
|
|
90
|
+
execution: import("@agentxm/workspace-operations").ExecutionCandidate<import("../../index.ts").InstallStepRequirements, never>;
|
|
91
91
|
reason?: never;
|
|
92
92
|
message?: never;
|
|
93
93
|
planDescription?: never;
|
|
@@ -111,11 +111,11 @@ export declare const SelectiveUpdate: {
|
|
|
111
111
|
outcome: "planned";
|
|
112
112
|
subjectType: "subagent";
|
|
113
113
|
planName: string;
|
|
114
|
-
execution: import("@agentxm/workspace-operations").ExecutionCandidate<import("
|
|
114
|
+
execution: import("@agentxm/workspace-operations").ExecutionCandidate<import("../../index.ts").InstallStepRequirements, never>;
|
|
115
115
|
reason?: never;
|
|
116
116
|
message?: never;
|
|
117
117
|
planDescription?: never;
|
|
118
|
-
}, import("../../errors.ts").ExtensionLifecycleFailed | import("@agentxm/extension-sources").SourceSyntaxInvalid | import("@agentxm/extension-sources").SourceHostNotConfigured | import("@agentxm/extension-sources").SourceNotResolvable | import("@agentxm/extension-sources").SourceNetworkFailure | import("@agentxm/extension-sources").GitOperationFailed | import("@agentxm/extension-sources").WorkspaceCatalogUnavailable | import("@agentxm/extension-sources").AxmSkillGateUnavailable | import("@agentxm/registry-client").RegistryProblem | import("@agentxm/registry-client").RegistryRequestFailed | import("@agentxm/registry-client").RegistryOperationFailed | import("@agentxm/workspace-state").SettingsIoError | import("@agentxm/workspace-state").SettingsParseError | import("@agentxm/workspace-state").SettingsDecodeError | import("@agentxm/workspace-state").LockfileIoError | import("@agentxm/workspace-state").LockfileParseError | import("@agentxm/workspace-state").LockfileDecodeError | import("@agentxm/workspace-state").LockfileVersionUnsupported | import("@agentxm/workspace-state").WorkspaceRootEscape | import("@agentxm/workspace-state").LockfileValidationError | import("@agentxm/extension-resolution").ExtensionResolutionFailed | import("@agentxm/workspace-operations").CandidateFingerprintFailed, import("../../step-failure-conversion.ts").StepFailureConversion | import("
|
|
119
|
-
readonly previewOrApply: (candidate: import("./vocabulary.js").PlannedSelectiveUpdateCandidate, execution: import("@agentxm/workspace-operations").PlanExecution) => Effect.Effect<import("@agentxm/workspace-operations").OperationResolution<never>, import("@agentxm/workspace-state").WorkspaceSettingsReadFailure | import("@agentxm/workspace-operations").ApprovalRecoveryMissing | import("@agentxm/workspace-operations").PlanInteractionFailed | import("@agentxm/workspace-transactions").WorkspaceTransitionAcquireFailure, import("@agentxm/workspace-state").ConfiguredAgentOutcomesProvider | import("@agentxm/workspace-transactions").FootprintRecorder | import("@agentxm/workspace-operations").OperationJournal | import("@agentxm/workspace-operations").ResolvePlanInteraction | import("
|
|
118
|
+
}, import("../../errors.ts").ExtensionLifecycleFailed | import("@agentxm/extension-sources").SourceSyntaxInvalid | import("@agentxm/extension-sources").SourceHostNotConfigured | import("@agentxm/extension-sources").SourceNotResolvable | import("@agentxm/extension-sources").SourceNetworkFailure | import("@agentxm/extension-sources").GitOperationFailed | import("@agentxm/extension-sources").WorkspaceCatalogUnavailable | import("@agentxm/extension-sources").AxmSkillGateUnavailable | import("@agentxm/registry-client").RegistryProblem | import("@agentxm/registry-client").RegistryRequestFailed | import("@agentxm/registry-client").RegistryOperationFailed | import("@agentxm/workspace-state").SettingsIoError | import("@agentxm/workspace-state").SettingsParseError | import("@agentxm/workspace-state").SettingsDecodeError | import("@agentxm/workspace-state").LockfileIoError | import("@agentxm/workspace-state").LockfileParseError | import("@agentxm/workspace-state").LockfileDecodeError | import("@agentxm/workspace-state").LockfileVersionUnsupported | import("@agentxm/workspace-state").WorkspaceRootEscape | import("@agentxm/workspace-state").LockfileValidationError | import("@agentxm/extension-resolution").ExtensionResolutionFailed | import("@agentxm/workspace-operations").CandidateFingerprintFailed, import("../../step-failure-conversion.ts").StepFailureConversion | import("@agentxm/workspace-state").ConfiguredAgentOutcomesProvider | import("@agentxm/extension-materialization").SkillManager | import("@agentxm/extension-resolution").ReleaseAgePosture | import("effect/Scope").Scope | import("@agentxm/extension-sources").SourceHostProviders | import("@agentxm/extension-materialization").SubagentManager | import("@agentxm/extension-sources").WorkspaceCatalog | import("../../index.ts").InstallStepRequirements>;
|
|
119
|
+
readonly previewOrApply: (candidate: import("./vocabulary.js").PlannedSelectiveUpdateCandidate, execution: import("@agentxm/workspace-operations").PlanExecution) => Effect.Effect<import("@agentxm/workspace-operations").OperationResolution<never>, import("@agentxm/workspace-state").WorkspaceSettingsReadFailure | import("@agentxm/workspace-operations").ApprovalRecoveryMissing | import("@agentxm/workspace-operations").PlanInteractionFailed | import("@agentxm/workspace-transactions").WorkspaceTransitionAcquireFailure, import("@agentxm/workspace-state").ConfiguredAgentOutcomesProvider | import("@agentxm/workspace-transactions").FootprintRecorder | import("@agentxm/workspace-operations").OperationJournal | import("@agentxm/workspace-operations").ResolvePlanInteraction | import("../../index.ts").InstallStepRequirements>;
|
|
120
120
|
};
|
|
121
121
|
//# sourceMappingURL=use-case.d.ts.map
|
|
@@ -39,5 +39,5 @@ export interface NothingSelectiveUpdateCandidate {
|
|
|
39
39
|
}
|
|
40
40
|
export type SelectiveUpdateCandidate = PlannedSelectiveUpdateCandidate | NothingSelectiveUpdateCandidate;
|
|
41
41
|
/** Preview or apply a settled selective update. */
|
|
42
|
-
export declare const previewOrApplySelectiveUpdate: (candidate: PlannedSelectiveUpdateCandidate, execution: PlanExecution) => import("effect/Effect").Effect<import("@agentxm/workspace-operations").OperationResolution<never>, import("@agentxm/workspace-state").WorkspaceSettingsReadFailure | import("@agentxm/workspace-operations").ApprovalRecoveryMissing | import("@agentxm/workspace-operations").PlanInteractionFailed | import("@agentxm/workspace-transactions").WorkspaceTransitionAcquireFailure, import("@agentxm/workspace-state").ConfiguredAgentOutcomesProvider | import("@agentxm/workspace-transactions").FootprintRecorder | import("@agentxm/workspace-operations").OperationJournal | import("@agentxm/workspace-operations").ResolvePlanInteraction |
|
|
42
|
+
export declare const previewOrApplySelectiveUpdate: (candidate: PlannedSelectiveUpdateCandidate, execution: PlanExecution) => import("effect/Effect").Effect<import("@agentxm/workspace-operations").OperationResolution<never>, import("@agentxm/workspace-state").WorkspaceSettingsReadFailure | import("@agentxm/workspace-operations").ApprovalRecoveryMissing | import("@agentxm/workspace-operations").PlanInteractionFailed | import("@agentxm/workspace-transactions").WorkspaceTransitionAcquireFailure, import("@agentxm/workspace-state").ConfiguredAgentOutcomesProvider | import("@agentxm/workspace-transactions").FootprintRecorder | import("@agentxm/workspace-operations").OperationJournal | import("@agentxm/workspace-operations").ResolvePlanInteraction | import("../../index.ts").InstallStepRequirements>;
|
|
43
43
|
//# sourceMappingURL=vocabulary.d.ts.map
|
|
@@ -20,7 +20,7 @@ import { extensionTypeSentenceLabels, extensionTypePluralSentenceLabels, parseSo
|
|
|
20
20
|
import { isCatalogExtensionType } from "@agentxm/extension-model/unstable/extension-types";
|
|
21
21
|
import { SourceHostProviders, resolveInstalledIdentifierNameOrInput, resolveSource, } from "@agentxm/extension-sources";
|
|
22
22
|
import { WorkspaceRecords, configuredRowsByName, enabledConfiguredEntries, } from "@agentxm/workspace-state";
|
|
23
|
-
import { expandGlobs } from "
|
|
23
|
+
import { expandGlobs } from "@agentxm/extension-model/unstable/extensions/name-patterns";
|
|
24
24
|
/** The flag spelling reported when a `--name` filter matches nothing. */
|
|
25
25
|
export const UPDATE_NAME_FILTER_FLAG = "--name";
|
|
26
26
|
const sourceMatchesEntrySource = (sourceValue, entrySource) => Effect.gen(function* () {
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
import { lifecycleStepFailure } from "../step-failure.js";
|
|
2
|
+
import { buildReconciliationClosure, } from "@agentxm/workspace-reconciliation";
|
|
1
3
|
/**
|
|
2
4
|
* Wrapping a targeted update in one atomic ownership transition.
|
|
3
5
|
*
|
|
@@ -18,7 +20,6 @@ import { operationPresentation, } from "@agentxm/workspace-operations";
|
|
|
18
20
|
import { WorkspaceMutations } from "@agentxm/workspace-state";
|
|
19
21
|
import { resolveTargetedUpdateContext, } from "@agentxm/extension-resolution";
|
|
20
22
|
import { ExtensionLifecycleFailed } from "../errors.js";
|
|
21
|
-
import { buildAtomicPackGraphStep } from "../packs/graph-transition.js";
|
|
22
23
|
export const TARGETED_UPDATE_STALE_DETAIL = "The targeted update ownership context became stale before apply.";
|
|
23
24
|
const same = (left, right) => JSON.stringify(left) === JSON.stringify(right);
|
|
24
25
|
const validatePostcondition = (args) => {
|
|
@@ -63,7 +64,8 @@ export const wrapTargetedUpdatePlan = (args) => Effect.gen(function* () {
|
|
|
63
64
|
scope: workspace.scope,
|
|
64
65
|
change: "updated",
|
|
65
66
|
};
|
|
66
|
-
const builtStep = yield*
|
|
67
|
+
const builtStep = yield* buildReconciliationClosure({
|
|
68
|
+
toStepFailure: lifecycleStepFailure,
|
|
67
69
|
label: args.context.public.target.fqn,
|
|
68
70
|
message: `Updated ${args.context.public.target.fqn}`,
|
|
69
71
|
artifact,
|
|
@@ -20,12 +20,6 @@ export declare const workspaceLockfilePath: (scope: WorkspaceScope) => string;
|
|
|
20
20
|
export declare const workspaceCanonicalRoot: (scope: WorkspaceScope) => string;
|
|
21
21
|
/** One acquired package's path, relative to the workspace root. */
|
|
22
22
|
export declare const workspaceCanonicalPath: (scope: WorkspaceScope, relativePath: string) => string;
|
|
23
|
-
/** Where one desired-graph node's package sits, authored or acquired. */
|
|
24
|
-
export declare const workspaceCanonicalNodePath: (path: Path.Path, ws: WorkspaceMutationsService, node: {
|
|
25
|
-
readonly type: ExtensionType;
|
|
26
|
-
readonly name: string;
|
|
27
|
-
readonly identity: string;
|
|
28
|
-
}) => string;
|
|
29
23
|
/** Where a workspace-authored package of this type and name sits. */
|
|
30
24
|
export declare const workspaceAuthoredPath: (path: Path.Path, ws: WorkspaceMutationsService, type: ExtensionType, name: string) => string;
|
|
31
25
|
//# sourceMappingURL=workspace-paths.d.ts.map
|
|
@@ -25,16 +25,6 @@ const extensionDirectory = {
|
|
|
25
25
|
knowledge: "knowledge",
|
|
26
26
|
pack: "packs",
|
|
27
27
|
};
|
|
28
|
-
/** Where one desired-graph node's package sits, authored or acquired. */
|
|
29
|
-
export const workspaceCanonicalNodePath = (path, ws, node) => {
|
|
30
|
-
if (node.identity.startsWith("workspace:") && ws.layout.scope === "project") {
|
|
31
|
-
return path.join(path.relative(ws.baseDir, ws.layout.authoredRoot(node.type)), node.name);
|
|
32
|
-
}
|
|
33
|
-
const identity = node.identity.startsWith("workspace:")
|
|
34
|
-
? node.identity.slice("workspace:".length)
|
|
35
|
-
: node.identity;
|
|
36
|
-
return workspaceCanonicalPath(ws.scope, identity);
|
|
37
|
-
};
|
|
38
28
|
/** Where a workspace-authored package of this type and name sits. */
|
|
39
29
|
export const workspaceAuthoredPath = (path, ws, type, name) => {
|
|
40
30
|
if (ws.layout.scope === "project") {
|
package/package.json
CHANGED
|
@@ -4,20 +4,21 @@
|
|
|
4
4
|
"url": "https://github.com/agentxm/axm/issues"
|
|
5
5
|
},
|
|
6
6
|
"dependencies": {
|
|
7
|
-
"@agentxm/agent-integration": "^0.
|
|
8
|
-
"@agentxm/
|
|
9
|
-
"@agentxm/extension-
|
|
10
|
-
"@agentxm/extension-
|
|
11
|
-
"@agentxm/extension-
|
|
12
|
-
"@agentxm/extension-
|
|
13
|
-
"@agentxm/
|
|
14
|
-
"@agentxm/registry-
|
|
15
|
-
"@agentxm/registry-
|
|
16
|
-
"@agentxm/
|
|
17
|
-
"@agentxm/workspace-
|
|
18
|
-
"@agentxm/workspace-
|
|
19
|
-
"@agentxm/workspace-
|
|
20
|
-
"@
|
|
7
|
+
"@agentxm/agent-integration": "^0.30.2",
|
|
8
|
+
"@agentxm/cli-maintenance": "^0.30.2",
|
|
9
|
+
"@agentxm/extension-content": "^0.30.2",
|
|
10
|
+
"@agentxm/extension-materialization": "^0.30.2",
|
|
11
|
+
"@agentxm/extension-model": "^0.30.2",
|
|
12
|
+
"@agentxm/extension-resolution": "^0.30.2",
|
|
13
|
+
"@agentxm/extension-sources": "^0.30.2",
|
|
14
|
+
"@agentxm/registry-auth": "^0.30.2",
|
|
15
|
+
"@agentxm/registry-client": "^0.30.2",
|
|
16
|
+
"@agentxm/registry-protocol": "^0.30.2",
|
|
17
|
+
"@agentxm/workspace-operations": "^0.30.2",
|
|
18
|
+
"@agentxm/workspace-projection": "^0.30.2",
|
|
19
|
+
"@agentxm/workspace-reconciliation": "^0.30.2",
|
|
20
|
+
"@agentxm/workspace-state": "^0.30.2",
|
|
21
|
+
"@agentxm/workspace-transactions": "^0.30.2",
|
|
21
22
|
"effect": "4.0.0-rc.115",
|
|
22
23
|
"fflate": "^0.8.3"
|
|
23
24
|
},
|
|
@@ -37,19 +38,24 @@
|
|
|
37
38
|
},
|
|
38
39
|
"exports": {
|
|
39
40
|
".": {
|
|
40
|
-
"
|
|
41
|
-
"default": "./dist/src/index.js"
|
|
42
|
-
"types": "./dist/src/index.d.ts"
|
|
41
|
+
"types": "./dist/src/index.d.ts",
|
|
42
|
+
"default": "./dist/src/index.js"
|
|
43
43
|
},
|
|
44
44
|
"./live": {
|
|
45
|
-
"
|
|
46
|
-
"default": "./dist/src/live.js"
|
|
47
|
-
"types": "./dist/src/live.d.ts"
|
|
45
|
+
"types": "./dist/src/live.d.ts",
|
|
46
|
+
"default": "./dist/src/live.js"
|
|
48
47
|
},
|
|
49
48
|
"./testing": {
|
|
50
|
-
"
|
|
51
|
-
"default": "./dist/src/testing.js"
|
|
52
|
-
|
|
49
|
+
"types": "./dist/src/testing.d.ts",
|
|
50
|
+
"default": "./dist/src/testing.js"
|
|
51
|
+
},
|
|
52
|
+
"./skills/application": {
|
|
53
|
+
"types": "./dist/src/skills/application/index.d.ts",
|
|
54
|
+
"default": "./dist/src/skills/application/index.js"
|
|
55
|
+
},
|
|
56
|
+
"./subagents/application": {
|
|
57
|
+
"types": "./dist/src/subagents/application/index.d.ts",
|
|
58
|
+
"default": "./dist/src/subagents/application/index.js"
|
|
53
59
|
}
|
|
54
60
|
},
|
|
55
61
|
"files": [
|
|
@@ -72,5 +78,5 @@
|
|
|
72
78
|
},
|
|
73
79
|
"sideEffects": false,
|
|
74
80
|
"type": "module",
|
|
75
|
-
"version": "0.
|
|
81
|
+
"version": "0.30.2"
|
|
76
82
|
}
|
package/dist/src/glob.d.ts
DELETED
|
@@ -1,35 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Glob expansion for extension names.
|
|
3
|
-
*
|
|
4
|
-
* Expands `*` wildcards against a list of names. Only `*` is supported
|
|
5
|
-
* as a wildcard — all other characters are treated as literals.
|
|
6
|
-
*
|
|
7
|
-
* @experimental This API is unstable and may change without notice.
|
|
8
|
-
*/
|
|
9
|
-
/**
|
|
10
|
-
* Expand a glob pattern against a list of names.
|
|
11
|
-
*
|
|
12
|
-
* Only `*` wildcards are supported. All other characters (including `?`, `[`, `]`)
|
|
13
|
-
* are treated as literals. Matching is case-sensitive.
|
|
14
|
-
*
|
|
15
|
-
* @param pattern - The pattern to match (may contain `*`)
|
|
16
|
-
* @param names - Available names to match against
|
|
17
|
-
* @returns Matching names in their original order
|
|
18
|
-
*/
|
|
19
|
-
export declare const expandGlob: (pattern: string, names: ReadonlyArray<string>) => ReadonlyArray<string>;
|
|
20
|
-
/**
|
|
21
|
-
* Expand multiple glob patterns against a list of skill names.
|
|
22
|
-
*
|
|
23
|
-
* Returns the union of all matches, deduplicated, preserving the original
|
|
24
|
-
* order of `names`.
|
|
25
|
-
*
|
|
26
|
-
* @param patterns - Patterns to match (may contain `*`)
|
|
27
|
-
* @param names - Available names to match against
|
|
28
|
-
* @returns Matching names in their original order, deduplicated
|
|
29
|
-
*/
|
|
30
|
-
export declare const expandGlobs: (patterns: ReadonlyArray<string>, names: ReadonlyArray<string>) => ReadonlyArray<string>;
|
|
31
|
-
/**
|
|
32
|
-
* Returns true when an input should be treated as a glob pattern.
|
|
33
|
-
*/
|
|
34
|
-
export declare const isGlobPattern: (input: string) => boolean;
|
|
35
|
-
//# sourceMappingURL=glob.d.ts.map
|
package/dist/src/glob.js
DELETED
|
@@ -1,75 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Glob expansion for extension names.
|
|
3
|
-
*
|
|
4
|
-
* Expands `*` wildcards against a list of names. Only `*` is supported
|
|
5
|
-
* as a wildcard — all other characters are treated as literals.
|
|
6
|
-
*
|
|
7
|
-
* @experimental This API is unstable and may change without notice.
|
|
8
|
-
*/
|
|
9
|
-
/**
|
|
10
|
-
* Expand a glob pattern against a list of names.
|
|
11
|
-
*
|
|
12
|
-
* Only `*` wildcards are supported. All other characters (including `?`, `[`, `]`)
|
|
13
|
-
* are treated as literals. Matching is case-sensitive.
|
|
14
|
-
*
|
|
15
|
-
* @param pattern - The pattern to match (may contain `*`)
|
|
16
|
-
* @param names - Available names to match against
|
|
17
|
-
* @returns Matching names in their original order
|
|
18
|
-
*/
|
|
19
|
-
export const expandGlob = (pattern, names) => {
|
|
20
|
-
const matches = (name) => {
|
|
21
|
-
let patternIndex = 0;
|
|
22
|
-
let nameIndex = 0;
|
|
23
|
-
let wildcardIndex = -1;
|
|
24
|
-
let wildcardNameIndex = 0;
|
|
25
|
-
while (nameIndex < name.length) {
|
|
26
|
-
const token = pattern[patternIndex];
|
|
27
|
-
if (token !== undefined && token !== "*" && token === name[nameIndex]) {
|
|
28
|
-
patternIndex += 1;
|
|
29
|
-
nameIndex += 1;
|
|
30
|
-
}
|
|
31
|
-
else if (token === "*") {
|
|
32
|
-
wildcardIndex = patternIndex;
|
|
33
|
-
wildcardNameIndex = nameIndex;
|
|
34
|
-
patternIndex += 1;
|
|
35
|
-
}
|
|
36
|
-
else if (wildcardIndex >= 0) {
|
|
37
|
-
patternIndex = wildcardIndex + 1;
|
|
38
|
-
wildcardNameIndex += 1;
|
|
39
|
-
nameIndex = wildcardNameIndex;
|
|
40
|
-
}
|
|
41
|
-
else {
|
|
42
|
-
return false;
|
|
43
|
-
}
|
|
44
|
-
}
|
|
45
|
-
while (pattern[patternIndex] === "*") {
|
|
46
|
-
patternIndex += 1;
|
|
47
|
-
}
|
|
48
|
-
return patternIndex === pattern.length;
|
|
49
|
-
};
|
|
50
|
-
return names.filter(matches);
|
|
51
|
-
};
|
|
52
|
-
/**
|
|
53
|
-
* Expand multiple glob patterns against a list of skill names.
|
|
54
|
-
*
|
|
55
|
-
* Returns the union of all matches, deduplicated, preserving the original
|
|
56
|
-
* order of `names`.
|
|
57
|
-
*
|
|
58
|
-
* @param patterns - Patterns to match (may contain `*`)
|
|
59
|
-
* @param names - Available names to match against
|
|
60
|
-
* @returns Matching names in their original order, deduplicated
|
|
61
|
-
*/
|
|
62
|
-
export const expandGlobs = (patterns, names) => {
|
|
63
|
-
const matched = new Set();
|
|
64
|
-
for (const pattern of patterns) {
|
|
65
|
-
for (const name of expandGlob(pattern, names)) {
|
|
66
|
-
matched.add(name);
|
|
67
|
-
}
|
|
68
|
-
}
|
|
69
|
-
return names.filter((n) => matched.has(n));
|
|
70
|
-
};
|
|
71
|
-
/**
|
|
72
|
-
* Returns true when an input should be treated as a glob pattern.
|
|
73
|
-
*/
|
|
74
|
-
export const isGlobPattern = (input) => input.includes("*");
|
|
75
|
-
//# sourceMappingURL=glob.js.map
|
|
@@ -1,46 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Choosing among the extensions a source offers.
|
|
3
|
-
*
|
|
4
|
-
* When a source contains several skills or subagents and the request named
|
|
5
|
-
* none of them, someone has to choose. Which candidates are offered and what
|
|
6
|
-
* a choice means is this feature's; how the choice is asked for — a terminal
|
|
7
|
-
* multiselect, a test double, nothing at all — is the application's.
|
|
8
|
-
*
|
|
9
|
-
* @experimental This API is unstable and may change without notice.
|
|
10
|
-
*/
|
|
11
|
-
import type * as Array from "effect/Array";
|
|
12
|
-
import * as ServiceMap from "effect/Context";
|
|
13
|
-
import type * as Effect from "effect/Effect";
|
|
14
|
-
import type { SkillExtensionRef } from "@agentxm/extension-model/unstable/extensions/refs/skill";
|
|
15
|
-
import type { SubagentExtensionRef } from "@agentxm/extension-model/unstable/extensions/refs/subagent";
|
|
16
|
-
import type { ExtensionLifecycleFailed } from "../errors.js";
|
|
17
|
-
declare const ExtensionSelectionCancelled_base: new <A extends Record<string, any> = {}>(args: import("effect/Types").VoidIfEmpty<{ readonly [P in keyof A as P extends "_tag" ? never : P]: A[P]; }>) => import("effect/Cause").YieldableError & {
|
|
18
|
-
readonly _tag: "ExtensionSelectionCancelled";
|
|
19
|
-
} & Readonly<A>;
|
|
20
|
-
/**
|
|
21
|
-
* The person was asked which extensions to install and declined to answer.
|
|
22
|
-
* Nothing was written and nothing is pending, so the application reports a
|
|
23
|
-
* cancelled invocation rather than a failure.
|
|
24
|
-
*/
|
|
25
|
-
export declare class ExtensionSelectionCancelled extends ExtensionSelectionCancelled_base<{
|
|
26
|
-
readonly message: string;
|
|
27
|
-
}> {
|
|
28
|
-
}
|
|
29
|
-
/**
|
|
30
|
-
* A surface that cannot open the choice refuses with the feature's own typed
|
|
31
|
-
* failure rather than reporting a cancellation nobody made: declining is a
|
|
32
|
-
* clean exit, being unable to ask is a refusal the operator must act on. Both
|
|
33
|
-
* callers already carry the pair, so naming it here narrows nothing.
|
|
34
|
-
*/
|
|
35
|
-
export type ExtensionSelectionFailure = ExtensionSelectionCancelled | ExtensionLifecycleFailed;
|
|
36
|
-
export interface ExtensionSelectionInteractionService {
|
|
37
|
-
/** Choose which of the discovered skills to install; at least one. */
|
|
38
|
-
readonly selectSkills: (candidates: Array.NonEmptyReadonlyArray<SkillExtensionRef>) => Effect.Effect<ReadonlyArray<SkillExtensionRef>, ExtensionSelectionFailure>;
|
|
39
|
-
/** Choose which of the discovered subagents to install; at least one. */
|
|
40
|
-
readonly selectSubagents: (candidates: Array.NonEmptyReadonlyArray<SubagentExtensionRef>) => Effect.Effect<ReadonlyArray<SubagentExtensionRef>, ExtensionSelectionFailure>;
|
|
41
|
-
}
|
|
42
|
-
declare const ExtensionSelectionInteraction_base: ServiceMap.ServiceClass<ExtensionSelectionInteraction, "@agentxm/extension-lifecycle/install/ExtensionSelectionInteraction", ExtensionSelectionInteractionService>;
|
|
43
|
-
export declare class ExtensionSelectionInteraction extends ExtensionSelectionInteraction_base {
|
|
44
|
-
}
|
|
45
|
-
export {};
|
|
46
|
-
//# sourceMappingURL=selection-interaction.d.ts.map
|
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Choosing among the extensions a source offers.
|
|
3
|
-
*
|
|
4
|
-
* When a source contains several skills or subagents and the request named
|
|
5
|
-
* none of them, someone has to choose. Which candidates are offered and what
|
|
6
|
-
* a choice means is this feature's; how the choice is asked for — a terminal
|
|
7
|
-
* multiselect, a test double, nothing at all — is the application's.
|
|
8
|
-
*
|
|
9
|
-
* @experimental This API is unstable and may change without notice.
|
|
10
|
-
*/
|
|
11
|
-
import * as ServiceMap from "effect/Context";
|
|
12
|
-
import * as Data from "effect/Data";
|
|
13
|
-
/**
|
|
14
|
-
* The person was asked which extensions to install and declined to answer.
|
|
15
|
-
* Nothing was written and nothing is pending, so the application reports a
|
|
16
|
-
* cancelled invocation rather than a failure.
|
|
17
|
-
*/
|
|
18
|
-
export class ExtensionSelectionCancelled extends Data.TaggedError("ExtensionSelectionCancelled") {
|
|
19
|
-
}
|
|
20
|
-
export class ExtensionSelectionInteraction extends ServiceMap.Service()("@agentxm/extension-lifecycle/install/ExtensionSelectionInteraction") {
|
|
21
|
-
}
|
|
22
|
-
//# sourceMappingURL=selection-interaction.js.map
|
|
@@ -1,26 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Which of a source's skills this request installs.
|
|
3
|
-
*
|
|
4
|
-
* Named skills are matched by glob and every named pattern must match
|
|
5
|
-
* something; `--all` and an unattended invocation take everything; a source
|
|
6
|
-
* offering exactly one skill needs no decision; anything else is a choice
|
|
7
|
-
* only a person can make.
|
|
8
|
-
*
|
|
9
|
-
* @experimental This API is unstable and may change without notice.
|
|
10
|
-
*/
|
|
11
|
-
import * as Array from "effect/Array";
|
|
12
|
-
import * as Effect from "effect/Effect";
|
|
13
|
-
import type { SkillExtensionRef } from "@agentxm/extension-model/unstable/extensions/refs/skill";
|
|
14
|
-
import type { ExtensionLifecycleFailed } from "../../errors.js";
|
|
15
|
-
import { ExtensionSelectionInteraction, type ExtensionSelectionCancelled } from "../../install/selection-interaction.js";
|
|
16
|
-
export interface SkillSelectionRequest {
|
|
17
|
-
/** Names or glob patterns the request named explicitly. */
|
|
18
|
-
readonly requestedSkills: ReadonlyArray<string>;
|
|
19
|
-
/** Take everything the source offers without asking. */
|
|
20
|
-
readonly all: boolean;
|
|
21
|
-
/** No prompt can open in this invocation. */
|
|
22
|
-
readonly nonInteractive: boolean;
|
|
23
|
-
}
|
|
24
|
-
/** Settle which discovered skills this request installs. */
|
|
25
|
-
export declare const determineSkillsToInstall: (skills: Array.NonEmptyReadonlyArray<SkillExtensionRef>, request: SkillSelectionRequest) => Effect.Effect<ReadonlyArray<SkillExtensionRef>, ExtensionLifecycleFailed | ExtensionSelectionCancelled, ExtensionSelectionInteraction>;
|
|
26
|
-
//# sourceMappingURL=selection.d.ts.map
|
|
@@ -1,41 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Which of a source's skills this request installs.
|
|
3
|
-
*
|
|
4
|
-
* Named skills are matched by glob and every named pattern must match
|
|
5
|
-
* something; `--all` and an unattended invocation take everything; a source
|
|
6
|
-
* offering exactly one skill needs no decision; anything else is a choice
|
|
7
|
-
* only a person can make.
|
|
8
|
-
*
|
|
9
|
-
* @experimental This API is unstable and may change without notice.
|
|
10
|
-
*/
|
|
11
|
-
import * as Array from "effect/Array";
|
|
12
|
-
import * as Effect from "effect/Effect";
|
|
13
|
-
import { expandGlobs } from "../../glob.js";
|
|
14
|
-
import { ExtensionSelectionInteraction, } from "../../install/selection-interaction.js";
|
|
15
|
-
import { installRefused } from "../../install/vocabulary.js";
|
|
16
|
-
/** Settle which discovered skills this request installs. */
|
|
17
|
-
export const determineSkillsToInstall = Effect.fn("InstallExtensions.determineSkillsToInstall")(function* (skills, request) {
|
|
18
|
-
if (request.requestedSkills.length > 0) {
|
|
19
|
-
const allNames = Array.map(skills, (skill) => skill.skill.name);
|
|
20
|
-
const matched = expandGlobs(request.requestedSkills, allNames);
|
|
21
|
-
if (matched.length === 0) {
|
|
22
|
-
return yield* installRefused({
|
|
23
|
-
category: "not_found",
|
|
24
|
-
detail: `No skills matched: ${request.requestedSkills.join(", ")}. Source contains: ${[
|
|
25
|
-
...allNames,
|
|
26
|
-
]
|
|
27
|
-
.sort((left, right) => left.localeCompare(right))
|
|
28
|
-
.join(", ")}`,
|
|
29
|
-
recover: "Check the skill names or patterns and try again",
|
|
30
|
-
});
|
|
31
|
-
}
|
|
32
|
-
return Array.filter(skills, (skill) => matched.includes(skill.skill.name));
|
|
33
|
-
}
|
|
34
|
-
if (request.all || request.nonInteractive)
|
|
35
|
-
return skills;
|
|
36
|
-
if (skills.length === 1)
|
|
37
|
-
return skills;
|
|
38
|
-
const interaction = yield* ExtensionSelectionInteraction;
|
|
39
|
-
return yield* interaction.selectSkills(skills);
|
|
40
|
-
});
|
|
41
|
-
//# sourceMappingURL=selection.js.map
|
|
@@ -1,33 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Structured per-agent installation result.
|
|
3
|
-
*
|
|
4
|
-
* Captures the outcome of installing a skill for a single agent,
|
|
5
|
-
* including success/failure state and symlink fallback information.
|
|
6
|
-
*
|
|
7
|
-
* @experimental This API is unstable and may change without notice.
|
|
8
|
-
*/
|
|
9
|
-
import type * as Option from "effect/Option";
|
|
10
|
-
/**
|
|
11
|
-
* Result of installing a skill for a single agent.
|
|
12
|
-
*
|
|
13
|
-
* - `success: true, mode: "symlink"` — installed via symlink
|
|
14
|
-
* - `success: true, mode: "copy"` — symlink failed, fell back to copy
|
|
15
|
-
* - `success: false` — installation failed
|
|
16
|
-
*/
|
|
17
|
-
export interface InstallResult {
|
|
18
|
-
/** Whether the installation succeeded for this agent. */
|
|
19
|
-
readonly success: boolean;
|
|
20
|
-
/** Installation mode used ("symlink" or "copy"). */
|
|
21
|
-
readonly mode: "symlink" | "copy";
|
|
22
|
-
/** Whether symlink creation was attempted and failed (triggering copy fallback). */
|
|
23
|
-
readonly symlinkFailed: boolean;
|
|
24
|
-
/** Error message if installation failed. */
|
|
25
|
-
readonly error: Option.Option<string>;
|
|
26
|
-
/** Agent-specific skill directory path. */
|
|
27
|
-
readonly path: string;
|
|
28
|
-
/** Exact source-qualified canonical skill location. */
|
|
29
|
-
readonly canonicalPath: string;
|
|
30
|
-
/** User-visible change at the agent-specific skill path. */
|
|
31
|
-
readonly change?: "created" | "updated" | "unchanged";
|
|
32
|
-
}
|
|
33
|
-
//# sourceMappingURL=install-result.d.ts.map
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Structured per-agent installation result.
|
|
3
|
-
*
|
|
4
|
-
* Captures the outcome of installing a skill for a single agent,
|
|
5
|
-
* including success/failure state and symlink fallback information.
|
|
6
|
-
*
|
|
7
|
-
* @experimental This API is unstable and may change without notice.
|
|
8
|
-
*/
|
|
9
|
-
export {};
|
|
10
|
-
//# sourceMappingURL=install-result.js.map
|
|
@@ -1,67 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Install skill executor — orchestrates the full per-skill installation pipeline.
|
|
3
|
-
*
|
|
4
|
-
* Dispatches to a per-refType install function via `switch(ref.refType)`, then
|
|
5
|
-
* runs shared post-install steps (agent symlinks, lockfile/settings writes).
|
|
6
|
-
*
|
|
7
|
-
* @experimental This API is unstable and may change without notice.
|
|
8
|
-
*/
|
|
9
|
-
import * as FileSystem from "effect/FileSystem";
|
|
10
|
-
import type * as HttpClient from "effect/unstable/http/HttpClient";
|
|
11
|
-
import * as Path from "effect/Path";
|
|
12
|
-
import * as Option from "effect/Option";
|
|
13
|
-
import type { AgentId } from "@agentxm/extension-model/unstable/agents/types";
|
|
14
|
-
import { type RenderedFilesMap } from "@agentxm/workspace-state";
|
|
15
|
-
import type { SkillExtensionRef } from "@agentxm/extension-model/unstable/extensions/refs/skill";
|
|
16
|
-
import { SourceHostProviders } from "@agentxm/extension-sources";
|
|
17
|
-
import { CodingAgentRepository } from "@agentxm/workspace-projection";
|
|
18
|
-
import { StepFailureConversion } from "../../step-failure-conversion.js";
|
|
19
|
-
import type { OperationHandler } from "@agentxm/workspace-operations";
|
|
20
|
-
import type { Operation } from "@agentxm/workspace-operations";
|
|
21
|
-
import type { JobStepArtifactSource } from "@agentxm/workspace-operations";
|
|
22
|
-
import { WorkspaceMutations } from "@agentxm/workspace-state";
|
|
23
|
-
import type { InstallResult } from "./install-result.js";
|
|
24
|
-
/**
|
|
25
|
-
* Args for the install-skill operation.
|
|
26
|
-
*/
|
|
27
|
-
export type InstallSkillOperationArgs = {
|
|
28
|
-
readonly ref: SkillExtensionRef;
|
|
29
|
-
readonly force: boolean;
|
|
30
|
-
/** Version constraint from the original input when available. */
|
|
31
|
-
readonly versionRange: Option.Option<string>;
|
|
32
|
-
/** When true, write to lockfile only (skip settings). Used for pack dependencies. */
|
|
33
|
-
readonly skipSettings: Option.Option<boolean>;
|
|
34
|
-
/** When true, fail on unknown configured agents instead of warning+skip. */
|
|
35
|
-
readonly strictUnknownAgents: Option.Option<boolean>;
|
|
36
|
-
/** Named registry source that provided the ref (written to lockfile for registry skills). */
|
|
37
|
-
readonly sourceName: Option.Option<string>;
|
|
38
|
-
};
|
|
39
|
-
/**
|
|
40
|
-
* Add a skill to the workspace.
|
|
41
|
-
*
|
|
42
|
-
* @experimental This API is unstable and may change without notice.
|
|
43
|
-
*/
|
|
44
|
-
export type InstallSkillOperation = Operation<"install-skill", InstallSkillOperationArgs>;
|
|
45
|
-
export declare const gitHostedSkillArtifactSource: (ref: SkillExtensionRef) => JobStepArtifactSource | undefined;
|
|
46
|
-
export { computeSkillSourceHash } from "@agentxm/extension-materialization";
|
|
47
|
-
/**
|
|
48
|
-
* Build a RenderedFilesMap from per-agent copy-mode install results.
|
|
49
|
-
* Only includes agents where mode === "copy" and success === true.
|
|
50
|
-
*
|
|
51
|
-
* @internal Exported for testing only.
|
|
52
|
-
*/
|
|
53
|
-
export declare const buildRenderedFilesFromResults: (installableTargets: ReadonlyArray<{
|
|
54
|
-
agentId: AgentId;
|
|
55
|
-
targetDir: string;
|
|
56
|
-
}>, agentResults: ReadonlyArray<InstallResult>, toWorkspaceRelativePath: (path: string) => string) => RenderedFilesMap;
|
|
57
|
-
/**
|
|
58
|
-
* Install-skill operation handler.
|
|
59
|
-
*
|
|
60
|
-
* Dispatches to a per-refType install function producing a MaterializedSkill,
|
|
61
|
-
* then runs shared post-install steps:
|
|
62
|
-
* 1. Create symlinks from each agent's skills dir (concurrent)
|
|
63
|
-
* 2. Update lockfile/settings entry (failures logged as warnings)
|
|
64
|
-
* 3. Compute and return overall result
|
|
65
|
-
*/
|
|
66
|
-
export declare const installSkill: OperationHandler<InstallSkillOperation, FileSystem.FileSystem | HttpClient.HttpClient | Path.Path | WorkspaceMutations | SourceHostProviders | CodingAgentRepository | StepFailureConversion>;
|
|
67
|
-
//# sourceMappingURL=install.d.ts.map
|