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

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 (218) hide show
  1. package/dist/authoring/assets/aw-config.d.mts +1 -50
  2. package/dist/authoring/assets/aw-config.mjs +58 -928
  3. package/dist/authoring/assets/aw-config.mjs.map +1 -1
  4. package/dist/authoring/scripts/init-plugin.mjs +28 -33
  5. package/dist/authoring/scripts/init-plugin.mjs.map +1 -1
  6. package/dist/authoring/scripts/lib/plugin-version-check.d.mts +1 -0
  7. package/dist/authoring/scripts/lib/plugin-version-check.mjs +229 -8
  8. package/dist/authoring/scripts/lib/plugin-version-check.mjs.map +1 -1
  9. package/dist/authoring/scripts/validate-plugin.mjs +165 -45
  10. package/dist/authoring/scripts/validate-plugin.mjs.map +1 -1
  11. package/dist/scripts/bundle-plugins.js +18 -4
  12. package/dist/scripts/bundle-plugins.js.map +1 -1
  13. package/dist/scripts/test-plugin-scripts.d.ts +2 -0
  14. package/dist/scripts/test-plugin-scripts.js +21 -5
  15. package/dist/scripts/test-plugin-scripts.js.map +1 -1
  16. package/dist/src/commands/aw-capabilities.d.ts +1 -1
  17. package/dist/src/commands/aw-capabilities.js +1 -1
  18. package/dist/src/commands/aw-capabilities.js.map +1 -1
  19. package/dist/src/commands/catalog-dev-source.d.ts +6 -3
  20. package/dist/src/commands/catalog-dev-source.js +96 -35
  21. package/dist/src/commands/catalog-dev-source.js.map +1 -1
  22. package/dist/src/commands/catalog-publication-inspection.d.ts +1 -1
  23. package/dist/src/commands/catalog-publication-inspection.js +54 -8
  24. package/dist/src/commands/catalog-publication-inspection.js.map +1 -1
  25. package/dist/src/commands/catalog-publication-journal.js +1 -1
  26. package/dist/src/commands/catalog-publication-journal.js.map +1 -1
  27. package/dist/src/commands/catalog-source.d.ts +19 -4
  28. package/dist/src/commands/catalog-source.js +121 -12
  29. package/dist/src/commands/catalog-source.js.map +1 -1
  30. package/dist/src/commands/catalog-store.d.ts +26 -7
  31. package/dist/src/commands/catalog-store.js +361 -42
  32. package/dist/src/commands/catalog-store.js.map +1 -1
  33. package/dist/src/commands/console.js +28 -17
  34. package/dist/src/commands/console.js.map +1 -1
  35. package/dist/src/commands/operation-plan.d.ts +2 -1
  36. package/dist/src/commands/operation-plan.js +24 -0
  37. package/dist/src/commands/operation-plan.js.map +1 -1
  38. package/dist/src/commands/operation-planner.d.ts +2 -2
  39. package/dist/src/commands/operation-planner.js +11 -19
  40. package/dist/src/commands/operation-planner.js.map +1 -1
  41. package/dist/src/commands/options.d.ts +2 -2
  42. package/dist/src/commands/options.js +18 -4
  43. package/dist/src/commands/options.js.map +1 -1
  44. package/dist/src/commands/plugin-capabilities.js +2 -2
  45. package/dist/src/commands/plugin-capabilities.js.map +1 -1
  46. package/dist/src/commands/rebuild-command.d.ts +7 -0
  47. package/dist/src/commands/rebuild-command.js +769 -279
  48. package/dist/src/commands/rebuild-command.js.map +1 -1
  49. package/dist/src/commands/rebuild-integration.d.ts +24 -47
  50. package/dist/src/commands/rebuild-integration.js +1074 -1011
  51. package/dist/src/commands/rebuild-integration.js.map +1 -1
  52. package/dist/src/commands/rebuild-operations.d.ts +50 -12
  53. package/dist/src/commands/rebuild-operations.js +207 -101
  54. package/dist/src/commands/rebuild-operations.js.map +1 -1
  55. package/dist/src/commands/status-v6.d.ts +21 -2
  56. package/dist/src/commands/status-v6.js +163 -31
  57. package/dist/src/commands/status-v6.js.map +1 -1
  58. package/dist/src/commands/sync-command.d.ts +17 -0
  59. package/dist/src/commands/sync-command.js +45 -37
  60. package/dist/src/commands/sync-command.js.map +1 -1
  61. package/dist/src/commands/write-commands.d.ts +5 -0
  62. package/dist/src/commands/write-commands.js +50 -3
  63. package/dist/src/commands/write-commands.js.map +1 -1
  64. package/dist/src/generators/local-plugin.js +14 -4
  65. package/dist/src/generators/local-plugin.js.map +1 -1
  66. package/dist/src/index.js +216 -85
  67. package/dist/src/index.js.map +1 -1
  68. package/dist/src/output/command-receipt.js +1 -3
  69. package/dist/src/output/command-receipt.js.map +1 -1
  70. package/dist/src/output/rebuild-progress.js +1 -3
  71. package/dist/src/output/rebuild-progress.js.map +1 -1
  72. package/dist/src/portable/materializer.js +6 -6
  73. package/dist/src/portable/materializer.js.map +1 -1
  74. package/dist/src/tui/catalog-generation.js +41 -1
  75. package/dist/src/tui/catalog-generation.js.map +1 -1
  76. package/dist/src/tui/catalog-sources/session.d.ts +1 -0
  77. package/dist/src/tui/catalog-sources/session.js +16 -3
  78. package/dist/src/tui/catalog-sources/session.js.map +1 -1
  79. package/dist/src/tui/catalog-sources/types.d.ts +3 -2
  80. package/dist/src/tui/components.d.ts +4 -0
  81. package/dist/src/tui/components.js +36 -24
  82. package/dist/src/tui/components.js.map +1 -1
  83. package/dist/src/tui/console-app-v4.d.ts +13 -4
  84. package/dist/src/tui/console-app-v4.js +2067 -839
  85. package/dist/src/tui/console-app-v4.js.map +1 -1
  86. package/dist/src/tui/controller-runtime.js +585 -33
  87. package/dist/src/tui/controller-runtime.js.map +1 -1
  88. package/dist/src/tui/controller.d.ts +152 -6
  89. package/dist/src/tui/controller.js +1168 -156
  90. package/dist/src/tui/controller.js.map +1 -1
  91. package/dist/src/tui/diagnostic-projection.d.ts +22 -0
  92. package/dist/src/tui/diagnostic-projection.js +437 -0
  93. package/dist/src/tui/diagnostic-projection.js.map +1 -0
  94. package/dist/src/tui/diagnostics.d.ts +1 -1
  95. package/dist/src/tui/diagnostics.js +6 -1
  96. package/dist/src/tui/diagnostics.js.map +1 -1
  97. package/dist/src/tui/glossary.d.ts +23 -0
  98. package/dist/src/tui/glossary.js +42 -0
  99. package/dist/src/tui/glossary.js.map +1 -0
  100. package/dist/src/tui/index.d.ts +4 -1
  101. package/dist/src/tui/index.js +4 -1
  102. package/dist/src/tui/index.js.map +1 -1
  103. package/dist/src/tui/keys.d.ts +44 -0
  104. package/dist/src/tui/keys.js +43 -15
  105. package/dist/src/tui/keys.js.map +1 -1
  106. package/dist/src/tui/lifecycle-action-view.d.ts +6 -0
  107. package/dist/src/tui/lifecycle-action-view.js +34 -0
  108. package/dist/src/tui/lifecycle-action-view.js.map +1 -0
  109. package/dist/src/tui/model.d.ts +12 -2
  110. package/dist/src/tui/model.js +128 -52
  111. package/dist/src/tui/model.js.map +1 -1
  112. package/dist/src/tui/operation-diagnostic-screens.d.ts +21 -0
  113. package/dist/src/tui/operation-diagnostic-screens.js +101 -0
  114. package/dist/src/tui/operation-diagnostic-screens.js.map +1 -0
  115. package/dist/src/tui/operation-history.d.ts +80 -0
  116. package/dist/src/tui/operation-history.js +130 -0
  117. package/dist/src/tui/operation-history.js.map +1 -0
  118. package/dist/src/tui/operation-review-planner.js +306 -86
  119. package/dist/src/tui/operation-review-planner.js.map +1 -1
  120. package/dist/src/tui/router.d.ts +82 -17
  121. package/dist/src/tui/router.js +186 -38
  122. package/dist/src/tui/router.js.map +1 -1
  123. package/dist/src/tui/screen-registry.d.ts +546 -0
  124. package/dist/src/tui/screen-registry.js +179 -0
  125. package/dist/src/tui/screen-registry.js.map +1 -0
  126. package/dist/src/tui/session-console-app.d.ts +6 -0
  127. package/dist/src/tui/session-console-app.js +13 -0
  128. package/dist/src/tui/session-console-app.js.map +1 -0
  129. package/dist/src/tui/session-host.d.ts +44 -0
  130. package/dist/src/tui/session-host.js +197 -0
  131. package/dist/src/tui/session-host.js.map +1 -0
  132. package/dist/src/types.d.ts +64 -3
  133. package/dist/src/types.js +1 -1
  134. package/dist/src/types.js.map +1 -1
  135. package/dist/src/utils/agent-version.js +1 -1
  136. package/dist/src/utils/agent-version.js.map +1 -1
  137. package/dist/src/utils/artifact-renderer.d.ts +2 -1
  138. package/dist/src/utils/artifact-renderer.js +52 -52
  139. package/dist/src/utils/artifact-renderer.js.map +1 -1
  140. package/dist/src/utils/bundle-layout.js +4 -4
  141. package/dist/src/utils/bundle-layout.js.map +1 -1
  142. package/dist/src/utils/catalog-capability-projection.d.ts +8 -0
  143. package/dist/src/utils/catalog-capability-projection.js +14 -0
  144. package/dist/src/utils/catalog-capability-projection.js.map +1 -0
  145. package/dist/src/utils/catalog-generation-resolver.d.ts +14 -2
  146. package/dist/src/utils/catalog-generation-resolver.js +49 -27
  147. package/dist/src/utils/catalog-generation-resolver.js.map +1 -1
  148. package/dist/src/utils/catalog-generation-service.d.ts +8 -1
  149. package/dist/src/utils/catalog-generation-service.js +81 -47
  150. package/dist/src/utils/catalog-generation-service.js.map +1 -1
  151. package/dist/src/utils/catalog-generation-store.d.ts +1 -0
  152. package/dist/src/utils/catalog-generation-store.js +60 -5
  153. package/dist/src/utils/catalog-generation-store.js.map +1 -1
  154. package/dist/src/utils/catalog-operation-context.js +1 -0
  155. package/dist/src/utils/catalog-operation-context.js.map +1 -1
  156. package/dist/src/utils/catalog-public-error.js +4 -0
  157. package/dist/src/utils/catalog-public-error.js.map +1 -1
  158. package/dist/src/utils/catalog-source-impact.d.ts +3 -2
  159. package/dist/src/utils/catalog-source-impact.js +142 -20
  160. package/dist/src/utils/catalog-source-impact.js.map +1 -1
  161. package/dist/src/utils/catalog-source-references.js +95 -9
  162. package/dist/src/utils/catalog-source-references.js.map +1 -1
  163. package/dist/src/utils/catalog-sources.d.ts +1 -1
  164. package/dist/src/utils/catalog-sources.js +19 -3
  165. package/dist/src/utils/catalog-sources.js.map +1 -1
  166. package/dist/src/utils/codex-manager.js +8 -0
  167. package/dist/src/utils/codex-manager.js.map +1 -1
  168. package/dist/src/utils/codex-native-observation.d.ts +34 -1
  169. package/dist/src/utils/codex-native-observation.js +132 -0
  170. package/dist/src/utils/codex-native-observation.js.map +1 -1
  171. package/dist/src/utils/codex-reconciler.d.ts +0 -2
  172. package/dist/src/utils/codex-reconciler.js.map +1 -1
  173. package/dist/src/utils/codex-shared-native.d.ts +2 -26
  174. package/dist/src/utils/codex-shared-native.js +8 -82
  175. package/dist/src/utils/codex-shared-native.js.map +1 -1
  176. package/dist/src/utils/git-catalog-provider.d.ts +3 -0
  177. package/dist/src/utils/git-catalog-provider.js +40 -1
  178. package/dist/src/utils/git-catalog-provider.js.map +1 -1
  179. package/dist/src/utils/local-marketplace.d.ts +1 -0
  180. package/dist/src/utils/local-marketplace.js +69 -73
  181. package/dist/src/utils/local-marketplace.js.map +1 -1
  182. package/dist/src/utils/multi-source-catalog.js +1 -0
  183. package/dist/src/utils/multi-source-catalog.js.map +1 -1
  184. package/dist/src/utils/native-cli.d.ts +9 -4
  185. package/dist/src/utils/native-cli.js +280 -34
  186. package/dist/src/utils/native-cli.js.map +1 -1
  187. package/dist/src/utils/path-catalog-provider.js +2 -0
  188. package/dist/src/utils/path-catalog-provider.js.map +1 -1
  189. package/dist/src/utils/plugin-config-write.d.ts +15 -13
  190. package/dist/src/utils/plugin-config-write.js +418 -198
  191. package/dist/src/utils/plugin-config-write.js.map +1 -1
  192. package/dist/src/utils/plugin-config.d.ts +48 -4
  193. package/dist/src/utils/plugin-config.js +289 -38
  194. package/dist/src/utils/plugin-config.js.map +1 -1
  195. package/dist/src/utils/plugin-scripts.d.ts +20 -12
  196. package/dist/src/utils/plugin-scripts.js +376 -109
  197. package/dist/src/utils/plugin-scripts.js.map +1 -1
  198. package/dist/src/utils/process-tree.d.ts +2 -2
  199. package/dist/src/utils/process-tree.js +1 -1
  200. package/dist/src/utils/process-tree.js.map +1 -1
  201. package/dist/src/utils/project-boundary.d.ts +11 -1
  202. package/dist/src/utils/project-boundary.js +17 -8
  203. package/dist/src/utils/project-boundary.js.map +1 -1
  204. package/dist/src/utils/safe-operation-diagnostic.d.ts +15 -0
  205. package/dist/src/utils/safe-operation-diagnostic.js +33 -0
  206. package/dist/src/utils/safe-operation-diagnostic.js.map +1 -0
  207. package/dist/src/utils/sensitive-content.d.ts +1 -0
  208. package/dist/src/utils/sensitive-content.js +15 -0
  209. package/dist/src/utils/sensitive-content.js.map +1 -0
  210. package/dist/src/utils/windows-claude-shim.d.ts +9 -0
  211. package/dist/src/utils/windows-claude-shim.js +141 -0
  212. package/dist/src/utils/windows-claude-shim.js.map +1 -0
  213. package/dist/vitest.config.js +91 -10
  214. package/dist/vitest.config.js.map +1 -1
  215. package/package.json +9 -9
  216. package/dist/authoring/templates/aw-config-runtime.d.mts +0 -2
  217. package/dist/authoring/templates/aw-config-runtime.mjs +0 -407
  218. package/dist/authoring/templates/aw-config-runtime.mjs.map +0 -1
@@ -4,16 +4,74 @@ import type { CatalogSourceUpdate } from '../utils/catalog-sources.js';
4
4
  import type { CatalogGenerationFreshnessState, CatalogGenerationFreshnessResult } from '../utils/catalog-generation-service.js';
5
5
  import type { StatusV7Payload, StatusV7PluginSummary, StatusTargetRevision } from '../commands/status-v6.js';
6
6
  import type { ReconcileOperationPlan } from '../commands/reconcile-operation-plan.js';
7
+ import type { RebuildCommandResult } from '../commands/rebuild-command.js';
7
8
  import type { OfflineCleanupTargetEvidence } from '../commands/offline-cleanup-evidence.js';
8
9
  import type { CodexReconcilePlan } from '../utils/codex-reconciler.js';
9
10
  import type { OperationPlan } from '../commands/operation-plan.js';
10
11
  import type { RebuildProgressFeed, RebuildProgressSnapshot } from '../output/rebuild-progress.js';
11
12
  import { type ConfigPageViewModel, type ConfigGroupViewModel, type InstallPlacementDraftViewModel, type PluginListItemViewModel, type PluginDependencyOverviewViewModel, type PortableSkillSelectionViewModel, type SourceHealthViewModel, type SourceDetailViewModel, type TuiViewModel, type UserIssueCategory, type UserIssueViewModel } from './model.js';
12
- import { type CatalogActivationBlockReason, type ConfigInvalidStoreEvidence, type PluginInstallFilter, type PortableBlockerCode, type TuiPageContext, type TuiRoute, type TuiRouterSnapshot } from './router.js';
13
+ import { OperationHistoryStore, type OperationDiagnosticDetail, type OperationEffectFacts, type OperationHistorySummary, type OperationReportPreview, type SaveOperationReportResult } from './operation-history.js';
14
+ import { type ConfigInvalidStoreEvidence, type PluginInstallFilter, type PortableBlockerCode, type TuiPageContext, type TuiRoute, type TuiRouterSnapshot } from './router.js';
13
15
  import { type CatalogSourceGenerationViewModel } from './catalog-generation.js';
14
16
  import type { CatalogSourceFreshnessViewModel } from './catalog-freshness.js';
15
17
  import type { CatalogSessionReusableCandidate } from './catalog-sources/types.js';
18
+ type CatalogActivationBlockReason = 'configDraft' | 'sourceDraft' | 'batchDraft' | 'portableDraft' | 'activeReview' | 'reviewPreparation' | 'writeProgress';
19
+ export interface ExternalDraftState {
20
+ kind: 'configDraft' | 'sourceDraft' | 'batchDraft';
21
+ owner: string;
22
+ flowId?: string;
23
+ revision: number;
24
+ }
16
25
  export type PluginWriteOperation = 'install' | 'refreshAndSync' | 'reinstall' | 'uninstall' | 'cleanup' | 'sync';
26
+ export declare const PLUGIN_WRITE_BATCH_ACTIONS: readonly ["install", "sync", "reinstall", "uninstall", "cleanup"];
27
+ export type BatchPluginWriteAction = typeof PLUGIN_WRITE_BATCH_ACTIONS[number];
28
+ export type PluginWriteBatchSelection = {
29
+ kind: 'selected';
30
+ pluginIds: string[];
31
+ } | {
32
+ kind: 'targets';
33
+ targets: PluginWriteBatchTarget[];
34
+ } | {
35
+ kind: 'currentProjectIntentRoots';
36
+ };
37
+ export interface PluginWriteBatchTarget {
38
+ pluginId: string;
39
+ platform: PlatformName;
40
+ scope: Scope;
41
+ }
42
+ export interface PluginWriteBatchIntent {
43
+ kind: 'pluginWriteBatch';
44
+ action: BatchPluginWriteAction;
45
+ selection: PluginWriteBatchSelection;
46
+ platform: PlatformName | 'both';
47
+ scope: Scope;
48
+ scriptTimeoutMs?: number;
49
+ }
50
+ export interface PluginWriteBatchGroupEvidence {
51
+ groupId: string;
52
+ sourceId: string;
53
+ platform: PlatformName | 'both';
54
+ scope: Scope;
55
+ requestedPluginIds: string[];
56
+ preview: RebuildCommandResult;
57
+ executable: boolean;
58
+ }
59
+ export interface PluginWriteBatchEvidence extends OperationEvidence {
60
+ requestedPluginIds: string[];
61
+ groups: PluginWriteBatchGroupEvidence[];
62
+ }
63
+ export interface PluginWriteBatchGroupResult {
64
+ groupId: string;
65
+ sourceId: string;
66
+ platform: PlatformName | 'both';
67
+ scope: Scope;
68
+ requestedPluginIds: string[];
69
+ result: RebuildCommandResult;
70
+ }
71
+ export interface PluginWriteBatchExecutionResult extends RebuildCommandResult {
72
+ requestedPluginIds: string[];
73
+ groupResults: PluginWriteBatchGroupResult[];
74
+ }
17
75
  export type OperationKind = OperationIntent['kind'];
18
76
  export interface IssueOrigin {
19
77
  issueId: string;
@@ -39,8 +97,9 @@ export type OperationIntent = {
39
97
  dependencyPlacementAdjustment?: true;
40
98
  recoveryDescription?: string;
41
99
  force?: boolean;
100
+ scriptTimeoutMs?: number;
42
101
  originIssue?: IssueOrigin;
43
- } | {
102
+ } | PluginWriteBatchIntent | {
44
103
  kind: 'portableInstall';
45
104
  pluginId: string;
46
105
  scope: Scope;
@@ -51,6 +110,7 @@ export type OperationIntent = {
51
110
  pluginId: string;
52
111
  scope: Scope;
53
112
  apply: boolean;
113
+ scriptTimeoutMs?: number;
54
114
  retryApply?: true;
55
115
  updates?: Record<string, unknown>;
56
116
  removeKeys?: string[];
@@ -121,6 +181,7 @@ export interface OperationEvidence {
121
181
  source?: {
122
182
  sourceId: string;
123
183
  sourceIdentity: string;
184
+ logicalIdentity?: string;
124
185
  requestedRef?: string;
125
186
  resolvedCommit?: string;
126
187
  manifestDigest?: string;
@@ -149,6 +210,7 @@ export interface OperationEvidence {
149
210
  platform: PlatformName;
150
211
  scope: Scope;
151
212
  }>;
213
+ shareability?: 'verified' | 'unverified';
152
214
  sharedNativeRenderTargets?: Array<{
153
215
  id: string;
154
216
  skillKey: string;
@@ -186,6 +248,9 @@ export interface OperationEvidence {
186
248
  impact?: CatalogSourceImpact;
187
249
  impactDigest?: string;
188
250
  impactMode?: 'generation' | 'identityChange';
251
+ primaryImpact?: CatalogSourceImpact;
252
+ primaryImpactDigest?: string;
253
+ primaryConfigDigest?: string;
189
254
  configDigest: string;
190
255
  proposedConfigDigest?: string;
191
256
  proposedSource?: CatalogSource;
@@ -200,6 +265,8 @@ export interface OperationReviewChange {
200
265
  kind: 'add' | 'change' | 'remove' | 'keep' | 'warning';
201
266
  group?: 'requested' | 'dependencies' | 'projectIntent' | 'userIntent' | 'sharedCodexNative' | 'userActivation' | 'projectActivation' | 'awExtensions' | 'runtime' | 'portableTarget' | 'portableInputs' | 'portableWarnings' | 'configChanges' | 'configImpact' | 'preserved';
202
267
  pluginId?: string;
268
+ batchGroupId?: string;
269
+ sourceId?: string;
203
270
  relation?: 'requested' | 'direct' | 'transitive';
204
271
  title: string;
205
272
  description?: string;
@@ -237,6 +304,11 @@ export interface OperationReviewModel {
237
304
  catalogVersion: string;
238
305
  generationDigestShort: string;
239
306
  };
307
+ batch?: {
308
+ requestedPluginIds: string[];
309
+ groupCount: number;
310
+ executableGroupCount: number;
311
+ };
240
312
  }
241
313
  export type ReviewPreparationStageId = 'refresh' | 'validate' | 'status' | 'catalog' | 'inventory' | 'dependencyPlan' | 'config' | 'portable' | 'evidence';
242
314
  export interface ReviewPreparationStage {
@@ -246,10 +318,11 @@ export interface ReviewPreparationStage {
246
318
  }
247
319
  export interface ReviewPreparationSnapshot {
248
320
  id: string;
249
- intent: OperationIntent;
321
+ operationKind: OperationIntent['kind'];
322
+ subject: string;
250
323
  state: 'running' | 'failed';
251
324
  stages: ReviewPreparationStage[];
252
- currentLabel: string;
325
+ currentStage?: ReviewPreparationStageId;
253
326
  code?: 'reviewPreparationFailed';
254
327
  message?: string;
255
328
  }
@@ -264,6 +337,9 @@ export type OperationExecuteResult = {
264
337
  pluginId?: string;
265
338
  originIssue?: IssueOrigin;
266
339
  returnRoute?: TuiRoute;
340
+ operationRecordId?: string;
341
+ diagnosticIds?: string[];
342
+ effects?: OperationEffectFacts;
267
343
  } | {
268
344
  state: 'partial';
269
345
  operationId: string;
@@ -275,6 +351,9 @@ export type OperationExecuteResult = {
275
351
  pluginId?: string;
276
352
  originIssue?: IssueOrigin;
277
353
  returnRoute?: TuiRoute;
354
+ operationRecordId?: string;
355
+ diagnosticIds?: string[];
356
+ effects?: OperationEffectFacts;
278
357
  } | {
279
358
  state: 'stale';
280
359
  operationId: string;
@@ -284,6 +363,9 @@ export type OperationExecuteResult = {
284
363
  }>['action'];
285
364
  review: OperationReviewModel;
286
365
  originIssue?: IssueOrigin;
366
+ operationRecordId?: string;
367
+ diagnosticIds?: string[];
368
+ effects?: OperationEffectFacts;
287
369
  } | {
288
370
  state: 'blocked';
289
371
  operationId: string;
@@ -299,6 +381,9 @@ export type OperationExecuteResult = {
299
381
  writeMayHaveCompleted?: boolean;
300
382
  verification?: 'issueStillPresent' | 'verificationFailed';
301
383
  summary?: OperationResultSummary;
384
+ operationRecordId?: string;
385
+ diagnosticIds?: string[];
386
+ effects?: OperationEffectFacts;
302
387
  };
303
388
  export interface OperationResultSummary {
304
389
  code: 'operationSucceeded' | 'operationPartial' | 'operationFailed';
@@ -323,6 +408,14 @@ export interface OperationResultSummary {
323
408
  warnings?: string[];
324
409
  recoveryActions?: string[];
325
410
  planFingerprint?: string;
411
+ diagnosticIds?: string[];
412
+ effects?: OperationEffectFacts;
413
+ batch?: {
414
+ requestedPluginIds: string[];
415
+ failedRequestedPluginIds: string[];
416
+ retryTargets?: PluginWriteBatchTarget[];
417
+ groupCount: number;
418
+ };
326
419
  portable?: {
327
420
  selectedSkills: string[];
328
421
  agentMode: 'automatic' | 'explicit';
@@ -345,7 +438,9 @@ export interface OperationResultSummary {
345
438
  state: 'completed' | 'kept' | 'failed' | 'skipped';
346
439
  relation?: 'requested' | 'direct' | 'transitive';
347
440
  requiredBy?: string[];
348
- errorCode?: 'dependencyStillRequired' | 'codexSystemCliUnsupported' | 'managedCodexAuthorizationRequired' | 'managedCodexUnavailable';
441
+ errorCode?: string;
442
+ diagnosticIds?: string[];
443
+ effects?: OperationEffectFacts;
349
444
  }>;
350
445
  }
351
446
  export interface PluginOperationProgressLine {
@@ -362,8 +457,15 @@ export interface TuiStatusLoadResult {
362
457
  pluginSummaries: StatusV7PluginSummary[];
363
458
  targetRevisions?: StatusTargetRevision[];
364
459
  sourceDetails?: SourceDetailViewModel[];
460
+ configuredSources?: CatalogSource[];
365
461
  dependencyOverviews?: PluginDependencyOverviewViewModel[];
366
462
  portablePluginIds?: string[];
463
+ configStoreInventory?: Array<{
464
+ pluginId: string;
465
+ sourceId: string;
466
+ pluginName: string;
467
+ scope: Scope;
468
+ }>;
367
469
  catalogGenerations?: CatalogSourceGenerationViewModel[];
368
470
  sessionGenerationKeys?: Record<string, string>;
369
471
  }
@@ -430,8 +532,15 @@ export interface ConfigResetAvailability {
430
532
  sourceIdentity?: string;
431
533
  storeDigest?: string;
432
534
  }
535
+ export interface ForceCleanupCandidate {
536
+ pluginId: string;
537
+ platform: PlatformName;
538
+ scope: Scope;
539
+ actionCount: number;
540
+ }
433
541
  export interface TuiControllerSnapshot {
434
542
  phase: 'idle' | 'loading' | 'ready' | 'error' | 'disposed';
543
+ statusReadAtMs?: number;
435
544
  cliChannel?: 'latest' | 'beta';
436
545
  router: TuiRouterSnapshot;
437
546
  viewModel?: TuiViewModel;
@@ -444,6 +553,8 @@ export interface TuiControllerSnapshot {
444
553
  activeReview?: OperationReviewModel;
445
554
  reviewPreparation?: ReviewPreparationSnapshot;
446
555
  result?: OperationExecuteResult;
556
+ operationHistorySummaries: OperationHistorySummary[];
557
+ portableResultSkills?: string[];
447
558
  loadError?: {
448
559
  code: string;
449
560
  message: string;
@@ -464,6 +575,8 @@ export declare class TuiConfigInvalidStoreError extends Error {
464
575
  readonly evidence: ConfigInvalidStoreEvidence[];
465
576
  constructor(evidence: ConfigInvalidStoreEvidence[]);
466
577
  }
578
+ export declare function pluginWriteBatchFailedRequestedTargets(execution: PluginWriteBatchExecutionResult): PluginWriteBatchTarget[];
579
+ export declare function pluginWriteBatchFailedRequestedPluginIds(execution: PluginWriteBatchExecutionResult): string[];
467
580
  export declare function operationEvidenceFingerprint(evidence: OperationEvidence): string;
468
581
  export declare function operationEvidenceMatches(expected: OperationEvidence, current: OperationEvidence): boolean;
469
582
  export declare function userIssueKey(issue: Pick<UserIssueViewModel, 'category' | 'pluginId' | 'dependencyPluginId' | 'dependencyPlatform' | 'dependencyScope' | 'dependencyProject' | 'sourceId' | 'sourceIdentity' | 'platform' | 'scope'>): string;
@@ -477,6 +590,27 @@ export declare class TuiController {
477
590
  constructor(dependencies: TuiControllerDependencies, progressFeed?: RebuildProgressFeed);
478
591
  get snapshot(): TuiControllerSnapshot;
479
592
  subscribe(listener: (snapshot: TuiControllerSnapshot) => void): () => void;
593
+ get hasActiveWrite(): boolean;
594
+ get retiring(): boolean;
595
+ get hasSessionDraft(): boolean;
596
+ get externalDrafts(): ExternalDraftState[];
597
+ attachOperationHistory(history: OperationHistoryStore, epoch: number): void;
598
+ listOperationHistory(): OperationHistorySummary[];
599
+ getOperationDiagnostic(recordId: string): OperationDiagnosticDetail | undefined;
600
+ previewOperationReport(recordId: string): OperationReportPreview | undefined;
601
+ saveOperationReport(recordId: string, filePath?: string): Promise<SaveOperationReportResult>;
602
+ /** @internal Test-only observability for bounded private diagnostic ownership. */
603
+ operationDiagnosticRetentionCountForTests(): number;
604
+ recordUiFailure(error: unknown, context: {
605
+ code: string;
606
+ stage: string;
607
+ }): string;
608
+ beginRetirement(): void;
609
+ waitForWrites(): Promise<void>;
610
+ cancelAndWaitForReads(): Promise<boolean>;
611
+ goHome(options?: {
612
+ discardDrafts?: boolean;
613
+ }): boolean;
480
614
  load(): Promise<void>;
481
615
  push(route: TuiRoute, context?: TuiPageContext): void;
482
616
  hasPortableSkills(pluginId: string): boolean;
@@ -491,6 +625,10 @@ export declare class TuiController {
491
625
  discardPortableDraft(): void;
492
626
  replace(route: TuiRoute, context?: TuiPageContext): void;
493
627
  beginConfigFlow(pluginId: string): void;
628
+ beginSavedConfigRecovery(pluginId: string): void;
629
+ beginConfigSourceRecovery(sourceId: string): void;
630
+ getForceCleanupCandidate(pluginId: string, platform: PlatformName, scope: Scope): Promise<ForceCleanupCandidate | undefined>;
631
+ startForceCleanupReview(candidate: ForceCleanupCandidate): ReviewPreparationSnapshot;
494
632
  configOrigin(pluginId: string): TuiRoute | undefined;
495
633
  updatePageContext(context: Partial<TuiPageContext>): void;
496
634
  back(): void;
@@ -498,6 +636,7 @@ export declare class TuiController {
498
636
  name: 'sourceList' | 'sourceDetail';
499
637
  }>): void;
500
638
  leaveResult(target?: TuiRoute): void;
639
+ resumeResultDraft(): void;
501
640
  resetPortableFlowToPreview(pluginId: string, target?: TuiRoute, preserveDraft?: boolean): void;
502
641
  beginInstallFlow(pluginId: string, rootScope: Scope, options?: {
503
642
  adjustingExisting?: boolean;
@@ -528,12 +667,18 @@ export declare class TuiController {
528
667
  detail?: SourceDetailViewModel;
529
668
  health?: SourceHealthViewModel;
530
669
  };
670
+ getConfiguredSource(sourceId: string): CatalogSource | undefined;
531
671
  getCatalogGeneration(sourceId: string): CatalogSourceGenerationViewModel | undefined;
532
672
  getCatalogFreshness(sourceId: string): CatalogSourceFreshnessViewModel | undefined;
533
673
  recheckCatalogSource(sourceId: string): Promise<void>;
674
+ recheckAllCatalogSources(): Promise<void>;
534
675
  fullValidateCatalogSource(sourceId: string): Promise<void>;
535
- setExternalDraftState(state?: 'configDraft' | 'sourceDraft'): void;
676
+ setExternalDraftState(states?: ExternalDraftState[]): void;
677
+ beginPluginWriteBatch(): void;
678
+ startPluginWriteBatchReview(intent: PluginWriteBatchIntent): ReviewPreparationSnapshot;
679
+ retryFailedPluginWriteBatch(): ReviewPreparationSnapshot | undefined;
536
680
  catalogActivationBlockReason(): CatalogActivationBlockReason | undefined;
681
+ catalogSourceRecoveryBlockReason(): CatalogActivationBlockReason | undefined;
537
682
  getSessionCatalogVersion(sourceId: string): string | undefined;
538
683
  reloadCatalog(options: {
539
684
  sourceId: string;
@@ -555,3 +700,4 @@ export declare class TuiController {
555
700
  executeOperation(reviewToken: string): Promise<OperationExecuteResult>;
556
701
  dispose(): void;
557
702
  }
703
+ export {};