@lesliechan721/aw 0.1.0-beta.11 → 0.1.0-beta.13
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/authoring/scripts/validate-plugin.mjs +33 -42
- package/dist/authoring/scripts/validate-plugin.mjs.map +1 -1
- package/dist/src/commands/operation-planner.js +11 -1
- package/dist/src/commands/operation-planner.js.map +1 -1
- package/dist/src/commands/rebuild-command.d.ts +12 -0
- package/dist/src/commands/rebuild-command.js +72 -17
- package/dist/src/commands/rebuild-command.js.map +1 -1
- package/dist/src/commands/rebuild-integration.d.ts +1 -0
- package/dist/src/commands/rebuild-integration.js +323 -105
- package/dist/src/commands/rebuild-integration.js.map +1 -1
- package/dist/src/commands/status-v6.js +8 -8
- package/dist/src/commands/status-v6.js.map +1 -1
- package/dist/src/index.js +52 -14
- package/dist/src/index.js.map +1 -1
- package/dist/src/portable/materializer.js +5 -3
- package/dist/src/portable/materializer.js.map +1 -1
- package/dist/src/tui/console-app-v4.js +1 -21
- package/dist/src/tui/console-app-v4.js.map +1 -1
- package/dist/src/tui/controller-runtime.js +165 -48
- package/dist/src/tui/controller-runtime.js.map +1 -1
- package/dist/src/tui/controller.d.ts +4 -4
- package/dist/src/tui/controller.js +19 -7
- package/dist/src/tui/controller.js.map +1 -1
- package/dist/src/tui/diagnostics.js +6 -6
- package/dist/src/tui/diagnostics.js.map +1 -1
- package/dist/src/tui/model.js +15 -10
- package/dist/src/tui/model.js.map +1 -1
- package/dist/src/tui/operation-review-planner.js +66 -19
- package/dist/src/tui/operation-review-planner.js.map +1 -1
- package/dist/src/utils/artifact-plan.d.ts +2 -2
- package/dist/src/utils/artifact-plan.js +8 -6
- package/dist/src/utils/artifact-plan.js.map +1 -1
- package/dist/src/utils/artifact-renderer.js +96 -77
- package/dist/src/utils/artifact-renderer.js.map +1 -1
- package/dist/src/utils/artifact-request.d.ts +5 -0
- package/dist/src/utils/artifact-request.js +40 -0
- package/dist/src/utils/artifact-request.js.map +1 -1
- package/dist/src/utils/codex-shared-native.d.ts +4 -0
- package/dist/src/utils/codex-shared-native.js +13 -0
- package/dist/src/utils/codex-shared-native.js.map +1 -1
- package/dist/src/utils/local-marketplace.d.ts +14 -1
- package/dist/src/utils/local-marketplace.js +242 -14
- package/dist/src/utils/local-marketplace.js.map +1 -1
- package/dist/src/utils/plugin-config-impact.d.ts +33 -0
- package/dist/src/utils/plugin-config-impact.js +298 -0
- package/dist/src/utils/plugin-config-impact.js.map +1 -0
- package/dist/src/utils/plugin-config-write.d.ts +22 -2
- package/dist/src/utils/plugin-config-write.js +368 -104
- package/dist/src/utils/plugin-config-write.js.map +1 -1
- package/dist/src/utils/plugin-config.d.ts +10 -0
- package/dist/src/utils/plugin-config.js +39 -22
- package/dist/src/utils/plugin-config.js.map +1 -1
- package/dist/src/utils/plugin-scripts.js +47 -39
- package/dist/src/utils/plugin-scripts.js.map +1 -1
- package/dist/src/utils/project-boundary.js +22 -9
- package/dist/src/utils/project-boundary.js.map +1 -1
- package/dist/src/utils/sensitive-content.d.ts +3 -0
- package/dist/src/utils/sensitive-content.js +28 -7
- package/dist/src/utils/sensitive-content.js.map +1 -1
- package/package.json +3 -3
|
@@ -55,7 +55,16 @@ export function buildAllowedLifecycleActions(target) {
|
|
|
55
55
|
if (target.state === 'blocked') {
|
|
56
56
|
return recovery.filter((action) => action.id === 'cleanup' || action.id === 'uninstall');
|
|
57
57
|
}
|
|
58
|
-
if (target.state === 'needsSync')
|
|
58
|
+
if (target.state === 'needsSync') {
|
|
59
|
+
if (target.recoveryActions.some((action) => action.command === 'manual')) {
|
|
60
|
+
return target.uninstallable === false ? [] : [{
|
|
61
|
+
id: 'uninstall',
|
|
62
|
+
pluginId: target.pluginId,
|
|
63
|
+
platform: target.platform,
|
|
64
|
+
scope: target.scope,
|
|
65
|
+
reason: 'removeManagedContent',
|
|
66
|
+
}];
|
|
67
|
+
}
|
|
59
68
|
return recovery.length > 0 ? recovery : [{
|
|
60
69
|
id: target.platform === 'codex' ? 'sync' : 'reinstall',
|
|
61
70
|
pluginId: target.pluginId,
|
|
@@ -63,6 +72,7 @@ export function buildAllowedLifecycleActions(target) {
|
|
|
63
72
|
scope: target.scope,
|
|
64
73
|
reason: 'savedSettingsNotApplied',
|
|
65
74
|
}];
|
|
75
|
+
}
|
|
66
76
|
const actions = [];
|
|
67
77
|
if (target.revision?.state === 'upgradeAvailable') {
|
|
68
78
|
actions.push({
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"operation-planner.js","sourceRoot":"","sources":["../../../src/commands/operation-planner.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"operation-planner.js","sourceRoot":"","sources":["../../../src/commands/operation-planner.ts"],"names":[],"mappings":"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"}
|
|
@@ -33,6 +33,8 @@ export type RebuildCommandRuntime = Partial<RebuildExecutionContext> & {
|
|
|
33
33
|
reviewPreflight?: (evidence: RebuildReviewPreflightEvidence) => Promise<void> | void;
|
|
34
34
|
resolvedReviewEvidenceByPlugin?: Record<string, Omit<RebuildReviewPreflightEvidence, 'command' | 'identity'>>;
|
|
35
35
|
previewOperationPlan?: boolean;
|
|
36
|
+
resolvePreApplyAuthorization?: boolean;
|
|
37
|
+
preApplyConfirmed?: boolean;
|
|
36
38
|
scriptTimeoutMs?: number;
|
|
37
39
|
directCli?: boolean;
|
|
38
40
|
managedCodexAuthorizer?: ManagedCodexAuthorizer;
|
|
@@ -76,6 +78,16 @@ export interface RebuildCommandResult {
|
|
|
76
78
|
operationPlan?: OperationPlan;
|
|
77
79
|
codexManagerPreview?: CodexManagerPreview;
|
|
78
80
|
offlineCleanupPlans?: OfflineCleanupTargetEvidence[];
|
|
81
|
+
preApplyAuthorization?: PreApplyAuthorizationTarget[];
|
|
82
|
+
}
|
|
83
|
+
export interface PreApplyAuthorizationTarget {
|
|
84
|
+
pluginId: string;
|
|
85
|
+
pluginName: string;
|
|
86
|
+
sourceId: string;
|
|
87
|
+
sourceIdentity: string;
|
|
88
|
+
platform: PlatformName;
|
|
89
|
+
scope: Scope;
|
|
90
|
+
relation: 'requested' | 'direct' | 'transitive';
|
|
79
91
|
}
|
|
80
92
|
export interface RebuildCommandTestHooks {
|
|
81
93
|
afterTargetBuilt?: (options: {
|
|
@@ -369,6 +369,7 @@ async function runSingleSourceRebuildCommand(options) {
|
|
|
369
369
|
expectedCatalogConfigDigest: options.runtime?.expectedCatalogConfigDigest,
|
|
370
370
|
codexUserActivationDesired: options.runtime?.codexUserActivationDesired,
|
|
371
371
|
codexObservationSession: options.runtime?.codexObservationSession,
|
|
372
|
+
preApplyExecutionCache: options.runtime?.preApplyExecutionCache,
|
|
372
373
|
};
|
|
373
374
|
const env = runtime.env;
|
|
374
375
|
const selected = selectedPlatforms(options.commandOptions.platform);
|
|
@@ -498,12 +499,31 @@ async function runSingleSourceRebuildCommand(options) {
|
|
|
498
499
|
});
|
|
499
500
|
}
|
|
500
501
|
const driver = integration.driver;
|
|
502
|
+
let operationPreparation = options.execution?.operationPreparation;
|
|
503
|
+
if (options.execution?.skipPreApply
|
|
504
|
+
&& !operationPreparation
|
|
505
|
+
&& (options.command === 'install'
|
|
506
|
+
|| options.command === 'sync'
|
|
507
|
+
|| options.command === 'reinstall')) {
|
|
508
|
+
const prepared = await prepareRebuildOperation({
|
|
509
|
+
command: options.command,
|
|
510
|
+
target,
|
|
511
|
+
driver,
|
|
512
|
+
skipPreApply: true,
|
|
513
|
+
onActionEvent: (event) => emitRebuildActionEvent(runtime, event),
|
|
514
|
+
});
|
|
515
|
+
if (prepared.status === 'failed') {
|
|
516
|
+
results.push(prepared.result);
|
|
517
|
+
continue;
|
|
518
|
+
}
|
|
519
|
+
operationPreparation = prepared.preparation;
|
|
520
|
+
}
|
|
501
521
|
result = await executeRebuildOperation({
|
|
502
522
|
command: options.command,
|
|
503
523
|
target,
|
|
504
524
|
driver,
|
|
505
|
-
...(
|
|
506
|
-
? { preparation:
|
|
525
|
+
...(operationPreparation
|
|
526
|
+
? { preparation: operationPreparation }
|
|
507
527
|
: {}),
|
|
508
528
|
onActionEvent: (event) => emitRebuildActionEvent(runtime, event),
|
|
509
529
|
});
|
|
@@ -1903,6 +1923,7 @@ async function runRebuildCommandInSession(options) {
|
|
|
1903
1923
|
expectedCatalogConfigDigest: catalog.configDigest,
|
|
1904
1924
|
codexObservationSession: options.runtime?.codexObservationSession,
|
|
1905
1925
|
codexObservationScopeByMarketplace,
|
|
1926
|
+
preApplyExecutionCache: options.runtime?.preApplyExecutionCache,
|
|
1906
1927
|
};
|
|
1907
1928
|
const inspection = createRebuildIntegration({
|
|
1908
1929
|
context: executionContext,
|
|
@@ -1985,7 +2006,7 @@ async function runRebuildCommandInSession(options) {
|
|
|
1985
2006
|
}
|
|
1986
2007
|
return output;
|
|
1987
2008
|
};
|
|
1988
|
-
const createPlan = async (inventory, codexManager) => {
|
|
2009
|
+
const createPlan = async (inventory, codexManager, planOptions) => {
|
|
1989
2010
|
plannedCodexRegistrations = new Map();
|
|
1990
2011
|
plannedOwnedTextTargets = new Map();
|
|
1991
2012
|
plannedSkillMarkerTargets = new Map();
|
|
@@ -2252,7 +2273,8 @@ async function runRebuildCommandInSession(options) {
|
|
|
2252
2273
|
state = resolvedInspection.state;
|
|
2253
2274
|
errorCode ??= 'dependencyNotReady';
|
|
2254
2275
|
}
|
|
2255
|
-
if (
|
|
2276
|
+
if (!planOptions?.skipConfigValidation
|
|
2277
|
+
&& entry.plugin.manifest.config?.fields
|
|
2256
2278
|
&& (action === 'install' || action === 'reinstall')) {
|
|
2257
2279
|
const effective = resolvedScope === 'project'
|
|
2258
2280
|
? await resolveArtifactRenderConfig({
|
|
@@ -2893,6 +2915,33 @@ async function runRebuildCommandInSession(options) {
|
|
|
2893
2915
|
configDigests,
|
|
2894
2916
|
};
|
|
2895
2917
|
};
|
|
2918
|
+
if (options.runtime?.resolvePreApplyAuthorization) {
|
|
2919
|
+
const authorizationPlan = await measureCommandPerformanceStage(options.runtime, 'dependency.plan', () => createPlan(stateInventory, undefined, { skipConfigValidation: true }));
|
|
2920
|
+
assertWriteInventoryComplete(stateInventory, exactOwnedTextTargets(authorizationPlan), exactSkillMarkerTargets(authorizationPlan));
|
|
2921
|
+
const preview = mergeRebuildCommandResults([]);
|
|
2922
|
+
preview.dependencyPlan = authorizationPlan;
|
|
2923
|
+
preview.preApplyAuthorization = executionSelections.flatMap(({ entry, platform }) => {
|
|
2924
|
+
const planned = authorizationPlan.targets.find((target) => target.pluginId === entry.pluginId && target.platform === platform);
|
|
2925
|
+
if (!planned || planned.action === 'block' || !entry.plugin.manifest.scripts?.preApply) {
|
|
2926
|
+
return [];
|
|
2927
|
+
}
|
|
2928
|
+
const relation = planned.relation === 'requested'
|
|
2929
|
+
? 'requested'
|
|
2930
|
+
: planned.requiredBy.some((pluginId) => selectedIds.has(pluginId))
|
|
2931
|
+
? 'direct'
|
|
2932
|
+
: 'transitive';
|
|
2933
|
+
return [{
|
|
2934
|
+
pluginId: entry.pluginId,
|
|
2935
|
+
pluginName: entry.plugin.manifest.name,
|
|
2936
|
+
sourceId: entry.source.sourceId,
|
|
2937
|
+
sourceIdentity: entry.source.sourceIdentity,
|
|
2938
|
+
platform,
|
|
2939
|
+
scope: planned.resolvedScope,
|
|
2940
|
+
relation,
|
|
2941
|
+
}];
|
|
2942
|
+
});
|
|
2943
|
+
return preview;
|
|
2944
|
+
}
|
|
2896
2945
|
if (options.runtime?.previewOperationPlan) {
|
|
2897
2946
|
await options.runtime.onPreviewStage?.('dependencyPlan');
|
|
2898
2947
|
const initialPlan = await measureCommandPerformanceStage(options.runtime, 'dependency.plan', () => createPlan(stateInventory));
|
|
@@ -2972,6 +3021,18 @@ async function runRebuildCommandInSession(options) {
|
|
|
2972
3021
|
}
|
|
2973
3022
|
let lockedPlan = await measureCommandPerformanceStage(options.runtime, 'dependency.plan', () => createPlan(stateInventory));
|
|
2974
3023
|
assertWriteInventoryComplete(stateInventory, exactOwnedTextTargets(lockedPlan), exactSkillMarkerTargets(lockedPlan));
|
|
3024
|
+
const lifecycleCommand = options.command === 'install'
|
|
3025
|
+
|| options.command === 'sync'
|
|
3026
|
+
|| options.command === 'reinstall';
|
|
3027
|
+
const preApplyRequired = lifecycleCommand && executionSelections.some(({ entry, platform }) => entry.plugin.manifest.scripts?.preApply !== undefined
|
|
3028
|
+
&& lockedPlan.targets.some((target) => target.pluginId === entry.pluginId
|
|
3029
|
+
&& target.platform === platform
|
|
3030
|
+
&& target.action !== 'block'));
|
|
3031
|
+
if (preApplyRequired
|
|
3032
|
+
&& options.commandOptions.yes !== true
|
|
3033
|
+
&& options.runtime?.preApplyConfirmed !== true) {
|
|
3034
|
+
throw namespacedPreflightError('preApplyAuthorizationRequired: Running plugin preApply requires --yes or an accepted Review.', preflightTargets);
|
|
3035
|
+
}
|
|
2975
3036
|
const provisionalLockedCodexPlans = await createCodexPlans(lockedPlan);
|
|
2976
3037
|
const codexManagerRequired = provisionalLockedCodexPlans.some((plan) => plan.sharedNativeActions.some((action) => action.action === 'install'
|
|
2977
3038
|
|| action.action === 'replace'
|
|
@@ -2999,22 +3060,14 @@ async function runRebuildCommandInSession(options) {
|
|
|
2999
3060
|
}
|
|
3000
3061
|
if (options.runtime?.directCli
|
|
3001
3062
|
&& options.commandOptions.yes !== true
|
|
3002
|
-
&&
|
|
3003
|
-
|| options.command === 'sync'
|
|
3004
|
-
|| options.command === 'reinstall')) {
|
|
3063
|
+
&& lifecycleCommand) {
|
|
3005
3064
|
const sharedNativeImpact = lockedCodexPlans.some((plan) => plan.review.requiresConfirmation);
|
|
3006
|
-
|
|
3007
|
-
|
|
3008
|
-
throw namespacedPreflightError(preApplyRequired
|
|
3009
|
-
? 'preApplyAuthorizationRequired: Running plugin preApply requires --yes.'
|
|
3010
|
-
: 'sharedNativeImpactAuthorizationRequired: Replacing or force-reinstalling shared Codex native state requires --yes.', preflightTargets);
|
|
3065
|
+
if (sharedNativeImpact) {
|
|
3066
|
+
throw namespacedPreflightError('sharedNativeImpactAuthorizationRequired: Replacing or force-reinstalling shared Codex native state requires --yes.', preflightTargets);
|
|
3011
3067
|
}
|
|
3012
3068
|
}
|
|
3013
3069
|
const operationPreparations = new Map();
|
|
3014
3070
|
const operationPreparationFailures = new Map();
|
|
3015
|
-
const lifecycleCommand = options.command === 'install'
|
|
3016
|
-
|| options.command === 'sync'
|
|
3017
|
-
|| options.command === 'reinstall';
|
|
3018
3071
|
const executionCommandFor = (entry, platform) => {
|
|
3019
3072
|
const planned = lockedPlan.targets.find((target) => target.pluginId === entry.pluginId && target.platform === platform);
|
|
3020
3073
|
const desiredInCurrentScope = platform === 'codex'
|
|
@@ -3765,6 +3818,7 @@ async function runRebuildCommandInSession(options) {
|
|
|
3765
3818
|
operationPreparation: operationPreparations.get(`${entry.pluginId}\0${platform}`),
|
|
3766
3819
|
integration: lockedPreparation.integration,
|
|
3767
3820
|
preparationError: preparedTargetErrors.get(`${entry.pluginId}\0${platform}`),
|
|
3821
|
+
skipPreApply: reconcileDesiredCleanup,
|
|
3768
3822
|
},
|
|
3769
3823
|
});
|
|
3770
3824
|
if (reconcileDesiredCleanup) {
|
|
@@ -3992,8 +4046,9 @@ async function runRebuildCommandInSession(options) {
|
|
|
3992
4046
|
return {
|
|
3993
4047
|
...target,
|
|
3994
4048
|
recoveryActions: [
|
|
3995
|
-
`
|
|
3996
|
-
`then run aw
|
|
4049
|
+
`remove every direct and indirect dependent of ${planned.pluginId} in consumer-first order; if dependencyStillRequired is reported, handle the other reported dependents first`,
|
|
4050
|
+
`then run aw cleanup ${planned.pluginId} --platform ${planned.platform} --scope ${planned.preservedScope}`,
|
|
4051
|
+
`then reinstall every removed root at its original platform and scope, selecting --dependency-scope ${planned.pluginId}#${planned.platform}=${planned.resolvedScope} during each install`,
|
|
3997
4052
|
],
|
|
3998
4053
|
};
|
|
3999
4054
|
});
|