@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
@@ -0,0 +1,130 @@
1
+ import { randomUUID } from 'node:crypto';
2
+ import os from 'node:os';
3
+ import path from 'node:path';
4
+ import fs from 'fs-extra';
5
+ import { safeDiagnosticCode, sanitizeDiagnosticText } from './diagnostics.js';
6
+ const MAX_RECORDS = 20;
7
+ const MAX_DETAIL_LINES = 1_000;
8
+ const MAX_DETAIL_BYTES = 256 * 1024;
9
+ function boundDiagnostics(diagnostics, sensitiveValues) {
10
+ let bytes = 0;
11
+ let lines = 0;
12
+ return diagnostics.map((diagnostic) => {
13
+ const kept = [];
14
+ let omittedLines = 0;
15
+ for (const line of diagnostic.detailLines) {
16
+ const lineBytes = Buffer.byteLength(`${line}\n`);
17
+ if (lines >= MAX_DETAIL_LINES || bytes + lineBytes > MAX_DETAIL_BYTES) {
18
+ omittedLines += 1;
19
+ continue;
20
+ }
21
+ kept.push(line);
22
+ lines += 1;
23
+ bytes += lineBytes;
24
+ }
25
+ return {
26
+ id: sanitizeDiagnosticText(diagnostic.id, [], sensitiveValues),
27
+ code: safeDiagnosticCode(diagnostic.code, 'operationFailed'),
28
+ ...(diagnostic.stage
29
+ ? { stage: safeDiagnosticCode(diagnostic.stage, 'execute') }
30
+ : {}),
31
+ safeMessage: sanitizeDiagnosticText(diagnostic.safeMessage, [], sensitiveValues),
32
+ ...(diagnostic.target ? { target: structuredClone(diagnostic.target) } : {}),
33
+ ...(diagnostic.exitCode !== undefined && Number.isSafeInteger(diagnostic.exitCode)
34
+ ? { exitCode: diagnostic.exitCode }
35
+ : {}),
36
+ causes: diagnostic.causes.map((cause) => ({
37
+ ...(cause.code ? { code: safeDiagnosticCode(cause.code, 'operationCause') } : {}),
38
+ safeMessage: sanitizeDiagnosticText(cause.safeMessage, [], sensitiveValues),
39
+ })),
40
+ detailLines: kept.map((line) => sanitizeDiagnosticText(line, [], sensitiveValues)),
41
+ ...(omittedLines > 0
42
+ ? { omitted: { reason: 'limit', count: omittedLines } }
43
+ : diagnostic.omitted ? { omitted: structuredClone(diagnostic.omitted) } : {}),
44
+ };
45
+ });
46
+ }
47
+ function reportContent(record) {
48
+ const { summary } = record;
49
+ const lines = [
50
+ '# AW TUI operation report',
51
+ '',
52
+ `Record: ${summary.recordId}`,
53
+ `State: ${summary.state}`,
54
+ `Code: ${summary.code}`,
55
+ `Message: ${summary.message}`,
56
+ `Effects: ${JSON.stringify(summary.effects)}`,
57
+ ];
58
+ for (const target of record.targets) {
59
+ lines.push('', `Target: ${target.pluginId ?? 'unknown'} ${target.platform}/${target.scope}`, `Target state: ${target.state}`, ...(target.errorCode ? [`Target code: ${target.errorCode}`] : []), ...(target.effects ? [`Target effects: ${JSON.stringify(target.effects)}`] : []));
60
+ }
61
+ for (const diagnostic of record.diagnostics) {
62
+ lines.push('', `## ${diagnostic.code}`, `Stage: ${diagnostic.stage ?? 'unknown'}`);
63
+ if (diagnostic.target)
64
+ lines.push(`Target: ${JSON.stringify(diagnostic.target)}`);
65
+ if (diagnostic.exitCode !== undefined)
66
+ lines.push(`Exit code: ${diagnostic.exitCode}`);
67
+ lines.push(`Message: ${diagnostic.safeMessage}`);
68
+ for (const cause of diagnostic.causes) {
69
+ lines.push(`Cause${cause.code ? ` (${cause.code})` : ''}: ${cause.safeMessage}`);
70
+ }
71
+ lines.push(...diagnostic.detailLines);
72
+ if (diagnostic.omitted) {
73
+ lines.push(`[omitted: ${diagnostic.omitted.reason}${diagnostic.omitted.count === undefined ? '' : `, ${diagnostic.omitted.count} line(s)`}]`);
74
+ }
75
+ }
76
+ return `${lines.join('\n')}\n`;
77
+ }
78
+ export class OperationHistoryStore {
79
+ #records = [];
80
+ record(record, options = {}) {
81
+ const sensitiveValues = options.sensitiveValues ?? [];
82
+ const bounded = {
83
+ summary: {
84
+ ...structuredClone(record.summary),
85
+ code: safeDiagnosticCode(record.summary.code, 'operationFailed'),
86
+ message: sanitizeDiagnosticText(record.summary.message, [], sensitiveValues),
87
+ },
88
+ diagnostics: boundDiagnostics(record.diagnostics, sensitiveValues),
89
+ targets: structuredClone(record.targets),
90
+ };
91
+ const index = this.#records.findIndex((entry) => entry.summary.recordId === bounded.summary.recordId);
92
+ if (index >= 0) {
93
+ bounded.summary.createdAtMs = this.#records[index].summary.createdAtMs;
94
+ this.#records.splice(index, 1);
95
+ }
96
+ this.#records.unshift(bounded);
97
+ this.#records = this.#records.slice(0, MAX_RECORDS);
98
+ }
99
+ list() {
100
+ return this.#records.map((record) => structuredClone(record.summary));
101
+ }
102
+ get(recordId) {
103
+ const record = this.#records.find((entry) => entry.summary.recordId === recordId);
104
+ return record ? structuredClone({
105
+ summary: record.summary,
106
+ diagnostics: record.diagnostics,
107
+ targets: record.targets,
108
+ }) : undefined;
109
+ }
110
+ preview(recordId) {
111
+ const record = this.#records.find((entry) => entry.summary.recordId === recordId);
112
+ if (!record)
113
+ return undefined;
114
+ return {
115
+ recordId,
116
+ fileName: `aw-tui-report-${recordId.replace(/[^A-Za-z0-9._-]/gu, '-')}.md`,
117
+ content: reportContent(record),
118
+ omitted: record.diagnostics.some((diagnostic) => diagnostic.omitted !== undefined),
119
+ };
120
+ }
121
+ async save(recordId, filePath) {
122
+ const preview = this.preview(recordId);
123
+ if (!preview)
124
+ throw new Error('operationReportMissing: The operation report is no longer available.');
125
+ const target = filePath ?? path.join(os.tmpdir(), `aw-tui-report-${randomUUID()}.md`);
126
+ await fs.writeFile(target, preview.content, { flag: 'wx', encoding: 'utf8' });
127
+ return { path: target };
128
+ }
129
+ }
130
+ //# sourceMappingURL=operation-history.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"operation-history.js","sourceRoot":"","sources":["../../../src/tui/operation-history.ts"],"names":[],"mappings":"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"}