@lesliechan721/aw 0.1.0-beta.11 → 0.1.0-beta.12

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (52) hide show
  1. package/dist/authoring/scripts/validate-plugin.mjs +33 -42
  2. package/dist/authoring/scripts/validate-plugin.mjs.map +1 -1
  3. package/dist/src/commands/operation-planner.js +11 -1
  4. package/dist/src/commands/operation-planner.js.map +1 -1
  5. package/dist/src/commands/rebuild-command.d.ts +12 -0
  6. package/dist/src/commands/rebuild-command.js +72 -17
  7. package/dist/src/commands/rebuild-command.js.map +1 -1
  8. package/dist/src/commands/rebuild-integration.d.ts +1 -0
  9. package/dist/src/commands/rebuild-integration.js +138 -41
  10. package/dist/src/commands/rebuild-integration.js.map +1 -1
  11. package/dist/src/commands/status-v6.js +6 -6
  12. package/dist/src/commands/status-v6.js.map +1 -1
  13. package/dist/src/index.js +52 -14
  14. package/dist/src/index.js.map +1 -1
  15. package/dist/src/portable/materializer.js +5 -3
  16. package/dist/src/portable/materializer.js.map +1 -1
  17. package/dist/src/tui/console-app-v4.js +1 -21
  18. package/dist/src/tui/console-app-v4.js.map +1 -1
  19. package/dist/src/tui/controller-runtime.js +165 -48
  20. package/dist/src/tui/controller-runtime.js.map +1 -1
  21. package/dist/src/tui/controller.d.ts +4 -4
  22. package/dist/src/tui/controller.js +19 -7
  23. package/dist/src/tui/controller.js.map +1 -1
  24. package/dist/src/tui/diagnostics.js +6 -6
  25. package/dist/src/tui/diagnostics.js.map +1 -1
  26. package/dist/src/tui/operation-review-planner.js +66 -19
  27. package/dist/src/tui/operation-review-planner.js.map +1 -1
  28. package/dist/src/utils/artifact-plan.d.ts +2 -2
  29. package/dist/src/utils/artifact-plan.js +8 -6
  30. package/dist/src/utils/artifact-plan.js.map +1 -1
  31. package/dist/src/utils/artifact-renderer.js +96 -77
  32. package/dist/src/utils/artifact-renderer.js.map +1 -1
  33. package/dist/src/utils/artifact-request.d.ts +5 -0
  34. package/dist/src/utils/artifact-request.js +40 -0
  35. package/dist/src/utils/artifact-request.js.map +1 -1
  36. package/dist/src/utils/plugin-config-impact.d.ts +33 -0
  37. package/dist/src/utils/plugin-config-impact.js +298 -0
  38. package/dist/src/utils/plugin-config-impact.js.map +1 -0
  39. package/dist/src/utils/plugin-config-write.d.ts +22 -2
  40. package/dist/src/utils/plugin-config-write.js +368 -104
  41. package/dist/src/utils/plugin-config-write.js.map +1 -1
  42. package/dist/src/utils/plugin-config.d.ts +10 -0
  43. package/dist/src/utils/plugin-config.js +39 -22
  44. package/dist/src/utils/plugin-config.js.map +1 -1
  45. package/dist/src/utils/plugin-scripts.js +47 -39
  46. package/dist/src/utils/plugin-scripts.js.map +1 -1
  47. package/dist/src/utils/project-boundary.js +22 -9
  48. package/dist/src/utils/project-boundary.js.map +1 -1
  49. package/dist/src/utils/sensitive-content.d.ts +3 -0
  50. package/dist/src/utils/sensitive-content.js +28 -7
  51. package/dist/src/utils/sensitive-content.js.map +1 -1
  52. 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
- ...(options.execution?.operationPreparation
506
- ? { preparation: options.execution.operationPreparation }
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 (entry.plugin.manifest.config?.fields
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
- && (options.command === 'install'
3003
- || options.command === 'sync'
3004
- || options.command === 'reinstall')) {
3063
+ && lifecycleCommand) {
3005
3064
  const sharedNativeImpact = lockedCodexPlans.some((plan) => plan.review.requiresConfirmation);
3006
- const preApplyRequired = executionSelections.some(({ entry }) => entry.plugin.manifest.scripts?.preApply !== undefined);
3007
- if (preApplyRequired || sharedNativeImpact) {
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
- `run aw cleanup ${planned.pluginId} --platform ${planned.platform} --scope ${planned.preservedScope}`,
3996
- `then run aw sync --all --platform ${planned.platform} --scope ${planned.resolvedScope}`,
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
  });