@lesliechan721/aw 0.1.0-beta.61 → 0.1.0-beta.63

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 (72) hide show
  1. package/dist/authoring/scripts/validate-plugin.mjs +56 -9
  2. package/dist/authoring/scripts/validate-plugin.mjs.map +1 -1
  3. package/dist/scripts/aw-skill-eval-materializer.js +3 -0
  4. package/dist/scripts/aw-skill-eval-materializer.js.map +1 -1
  5. package/dist/scripts/test-plugin-scripts.js +20 -1
  6. package/dist/scripts/test-plugin-scripts.js.map +1 -1
  7. package/dist/src/commands/aw-capabilities.d.ts +1 -1
  8. package/dist/src/commands/aw-capabilities.js +1 -0
  9. package/dist/src/commands/aw-capabilities.js.map +1 -1
  10. package/dist/src/commands/rebuild-command.js +25 -26
  11. package/dist/src/commands/rebuild-command.js.map +1 -1
  12. package/dist/src/commands/rebuild-integration.d.ts +2 -0
  13. package/dist/src/commands/rebuild-integration.js +23 -7
  14. package/dist/src/commands/rebuild-integration.js.map +1 -1
  15. package/dist/src/commands/review-inspection.js +38 -5
  16. package/dist/src/commands/review-inspection.js.map +1 -1
  17. package/dist/src/commands/review-preparation.js +1 -0
  18. package/dist/src/commands/review-preparation.js.map +1 -1
  19. package/dist/src/portable/materializer.js +3 -0
  20. package/dist/src/portable/materializer.js.map +1 -1
  21. package/dist/src/review/review-profile.d.ts +1 -0
  22. package/dist/src/review/review-profile.js +44 -8
  23. package/dist/src/review/review-profile.js.map +1 -1
  24. package/dist/src/review/review-selection.js +19 -6
  25. package/dist/src/review/review-selection.js.map +1 -1
  26. package/dist/src/review/skill-materialization.d.ts +1 -0
  27. package/dist/src/review/skill-materialization.js +2 -0
  28. package/dist/src/review/skill-materialization.js.map +1 -1
  29. package/dist/src/review/source-binding.d.ts +5 -0
  30. package/dist/src/review/source-binding.js +83 -22
  31. package/dist/src/review/source-binding.js.map +1 -1
  32. package/dist/src/tui/config-leaf-editor.d.ts +24 -0
  33. package/dist/src/tui/config-leaf-editor.js +19 -7
  34. package/dist/src/tui/config-leaf-editor.js.map +1 -1
  35. package/dist/src/tui/config-references.d.ts +1 -0
  36. package/dist/src/tui/config-references.js +8 -1
  37. package/dist/src/tui/config-references.js.map +1 -1
  38. package/dist/src/tui/console-app-v4.js +96 -27
  39. package/dist/src/tui/console-app-v4.js.map +1 -1
  40. package/dist/src/tui/controller-runtime.d.ts +1 -1
  41. package/dist/src/tui/controller-runtime.js +119 -91
  42. package/dist/src/tui/controller-runtime.js.map +1 -1
  43. package/dist/src/tui/controller.d.ts +3 -0
  44. package/dist/src/tui/controller.js +19 -0
  45. package/dist/src/tui/controller.js.map +1 -1
  46. package/dist/src/tui/model.js +1 -1
  47. package/dist/src/tui/model.js.map +1 -1
  48. package/dist/src/tui/operation-review-planner.js +13 -8
  49. package/dist/src/tui/operation-review-planner.js.map +1 -1
  50. package/dist/src/utils/artifact-renderer.d.ts +8 -1
  51. package/dist/src/utils/artifact-renderer.js +25 -7
  52. package/dist/src/utils/artifact-renderer.js.map +1 -1
  53. package/dist/src/utils/managed-command-materialization.d.ts +2 -0
  54. package/dist/src/utils/managed-command-materialization.js +2 -1
  55. package/dist/src/utils/managed-command-materialization.js.map +1 -1
  56. package/dist/src/utils/plugin-config-impact.d.ts +15 -0
  57. package/dist/src/utils/plugin-config-impact.js +132 -24
  58. package/dist/src/utils/plugin-config-impact.js.map +1 -1
  59. package/dist/src/utils/plugin-config-references.d.ts +80 -0
  60. package/dist/src/utils/plugin-config-references.js +340 -0
  61. package/dist/src/utils/plugin-config-references.js.map +1 -0
  62. package/dist/src/utils/plugin-config-write.js +148 -31
  63. package/dist/src/utils/plugin-config-write.js.map +1 -1
  64. package/dist/src/utils/plugin-config.d.ts +10 -2
  65. package/dist/src/utils/plugin-config.js +53 -4
  66. package/dist/src/utils/plugin-config.js.map +1 -1
  67. package/dist/src/utils/plugin-scripts.d.ts +1 -0
  68. package/dist/src/utils/plugin-scripts.js +1 -1
  69. package/dist/src/utils/plugin-scripts.js.map +1 -1
  70. package/dist/src/utils/runtime-config.js +1 -0
  71. package/dist/src/utils/runtime-config.js.map +1 -1
  72. package/package.json +3 -3
@@ -0,0 +1,340 @@
1
+ import crypto from 'node:crypto';
2
+ import path from 'node:path';
3
+ import { validatePluginConfigCandidate, getPluginConfigDependencyFields, formatPluginConfigIssue, } from '@lesliechan721/aw-plugin-core/manifest';
4
+ import { resolveCatalogOperationContext } from './catalog-operation-context.js';
5
+ import { readCatalogSourcesConfigSnapshot } from './catalog-sources.js';
6
+ import { readPluginManifest } from './manifest.js';
7
+ import { formatPluginId } from './multi-source-catalog.js';
8
+ import { resolvePluginMetaDependencyClosure } from './plugin-dependencies.js';
9
+ import { readPluginConfigStore, resolveAwProjectRoot, resolveEffectivePluginConfigFromStores, } from './plugin-config.js';
10
+ function createReferenceEvidence(plugin) {
11
+ return { plugin: plugin.manifest.name, sourceId: plugin.sourceId, sourceIdentity: plugin.sourceIdentity,
12
+ logicalIdentity: plugin.catalogLogicalIdentity,
13
+ definitionDigest: `sha256:${crypto.createHash('sha256').update(JSON.stringify({ config: plugin.manifest.config,
14
+ dependencies: plugin.manifest.dependencies ?? [] })).digest('hex')}`,
15
+ stores: {}, sources: {} };
16
+ }
17
+ export function pluginConfigHasExternalReferences(manifest) {
18
+ if (manifest.requires?.aw.capabilities?.includes('aw.plugin-config-cross-plugin-value-ref.v1'))
19
+ return true;
20
+ const visit = (value) => {
21
+ if (!value || typeof value !== 'object')
22
+ return false;
23
+ if (Array.isArray(value))
24
+ return value.some(visit);
25
+ const record = value;
26
+ const reference = record.valueRef;
27
+ return typeof reference?.plugin === 'string' || Object.values(record).some(visit);
28
+ };
29
+ return visit(manifest.config);
30
+ }
31
+ /** Read only the selected Active source. An explicit set is also the offline boundary. */
32
+ export async function resolvePluginConfigReferencePlugins(options) {
33
+ if (options.plugins) {
34
+ const selected = options.plugins.filter((plugin) => plugin.sourceId === options.sourceId);
35
+ if (selected.some((plugin) => (options.sourceIdentity && plugin.sourceIdentity !== options.sourceIdentity)
36
+ || (options.logicalIdentity && plugin.catalogLogicalIdentity !== options.logicalIdentity))) {
37
+ throw new Error('operationPlanStale: the configuration reference source identity changed.');
38
+ }
39
+ return selected;
40
+ }
41
+ if (!options.sourceId)
42
+ return [];
43
+ const configured = await readCatalogSourcesConfigSnapshot(options.env);
44
+ if (!configured.config.sources.some((source) => source.id === options.sourceId))
45
+ return [];
46
+ const operation = await resolveCatalogOperationContext({ sourceIds: [options.sourceId], env: options.env });
47
+ const source = operation.catalog.sources[0].resolution;
48
+ if ((options.sourceIdentity && source.sourceIdentity !== options.sourceIdentity)
49
+ || (options.logicalIdentity && source.logicalIdentity !== options.logicalIdentity)) {
50
+ throw new Error('operationPlanStale: the configuration reference source identity changed.');
51
+ }
52
+ return Promise.all(source.manifest.entries.map(async (entry) => {
53
+ const plugin = await readPluginManifest(path.join(source.rootDir, 'plugins', entry.name), { mode: 'bundle' });
54
+ return { ...plugin, sourceId: source.sourceId, sourceIdentity: source.sourceIdentity,
55
+ catalogLogicalIdentity: source.logicalIdentity,
56
+ pluginId: formatPluginId({ sourceId: source.sourceId, pluginName: entry.name }) };
57
+ }));
58
+ }
59
+ export async function resolvePluginConfigReferenceContext(options) {
60
+ const context = {
61
+ plugin: options.manifest.name,
62
+ dependencies: options.manifest.dependencies ?? [],
63
+ plugins: {},
64
+ };
65
+ const evidence = [];
66
+ if (!pluginConfigHasExternalReferences(options.manifest))
67
+ return { context, evidence };
68
+ const plugins = await resolvePluginConfigReferencePlugins(options);
69
+ // The current manifest is authoritative for the operation; never substitute another source.
70
+ const current = plugins.find((plugin) => plugin.manifest.name === options.manifest.name);
71
+ const selected = current ? plugins.map((plugin) => plugin === current ? { ...plugin, manifest: options.manifest } : plugin) : plugins;
72
+ const closure = resolvePluginMetaDependencyClosure(selected, [options.manifest.name]);
73
+ const entries = {};
74
+ for (const plugin of closure) {
75
+ if (!plugin.manifest.config)
76
+ continue;
77
+ entries[plugin.manifest.name] = { definition: plugin.manifest.config,
78
+ dependencies: plugin.manifest.dependencies ?? [] };
79
+ }
80
+ const completeContext = { ...context, plugins: entries };
81
+ for (const plugin of closure) {
82
+ if (!plugin.manifest.config || plugin.manifest.name === options.manifest.name)
83
+ continue;
84
+ const identity = { sourceId: plugin.sourceId, sourceIdentity: plugin.sourceIdentity,
85
+ logicalIdentity: plugin.catalogLogicalIdentity, pluginName: plugin.manifest.name,
86
+ cwd: options.cwd, env: options.env };
87
+ const entry = createReferenceEvidence(plugin);
88
+ evidence.push(entry);
89
+ try {
90
+ const overrides = options.storeOverrides?.get(plugin.manifest.name);
91
+ const storeEvidence = (store) => ({ exists: store.exists, state: store.state,
92
+ ...(store.rawDigest ? { rawDigest: store.rawDigest } : {}) });
93
+ const user = overrides?.user ?? await readPluginConfigStore({ ...identity, scope: 'user' });
94
+ entry.stores.user = storeEvidence(user);
95
+ const project = options.scope === 'project'
96
+ ? overrides?.project ?? await readPluginConfigStore({ ...identity, scope: 'project' }) : undefined;
97
+ if (project)
98
+ entry.stores.project = storeEvidence(project);
99
+ const effective = await resolveEffectivePluginConfigFromStores({ manifest: plugin.manifest,
100
+ targetScope: options.scope, projectRoot: resolveAwProjectRoot(options.cwd),
101
+ stores: { user, ...(project ? { project } : {}) },
102
+ referenceContext: { ...completeContext, plugin: plugin.manifest.name, dependencies: plugin.manifest.dependencies ?? [] } });
103
+ entries[plugin.manifest.name] = { ...entries[plugin.manifest.name], values: rawEffectiveValues(effective, plugin.manifest) };
104
+ entry.sources = effective.sources;
105
+ }
106
+ catch (error) {
107
+ // An unavailable optional scope still binds Review to the dependency bytes that were read.
108
+ throw Object.assign(error instanceof Error ? error : new Error(String(error)), { referenceEvidence: evidence });
109
+ }
110
+ }
111
+ return { context: completeContext, evidence };
112
+ }
113
+ /** Bind reviewed profiles to their owner stores and the same-source reference inputs they read. */
114
+ export async function collectPluginConfigReferenceEvidence(options) {
115
+ const plugins = await resolvePluginConfigReferencePlugins({ sourceId: options.plugin.sourceId,
116
+ sourceIdentity: options.plugin.sourceIdentity, logicalIdentity: options.plugin.catalogLogicalIdentity,
117
+ plugins: options.plugins, env: options.env });
118
+ const byName = new Map([...plugins, options.plugin].map((plugin) => [plugin.manifest.name, plugin]));
119
+ const profiles = new Map(options.profiles.map((profile) => [`${profile.pluginName}\0${profile.scope}`, profile]));
120
+ const evidence = [];
121
+ for (const [, profile] of [...profiles].sort(([left], [right]) => left.localeCompare(right, 'en'))) {
122
+ const plugin = byName.get(profile.pluginName);
123
+ if (!plugin)
124
+ throw new Error(`operationPlanStale: configuration owner ${profile.pluginName} is no longer in the selected source.`);
125
+ const entry = createReferenceEvidence(plugin);
126
+ const stores = {};
127
+ for (const scope of profile.scope === 'project' ? ['user', 'project'] : ['user']) {
128
+ const store = await readPluginConfigStore({ sourceId: plugin.sourceId, sourceIdentity: plugin.sourceIdentity,
129
+ logicalIdentity: plugin.catalogLogicalIdentity, pluginName: plugin.manifest.name, scope,
130
+ cwd: options.cwd, env: options.env });
131
+ stores[scope] = store;
132
+ entry.stores[scope] = { exists: store.exists, state: store.state, ...(store.rawDigest ? { rawDigest: store.rawDigest } : {}) };
133
+ }
134
+ evidence.push(entry);
135
+ let references;
136
+ try {
137
+ references = await resolvePluginConfigReferenceContext({ sourceId: plugin.sourceId, sourceIdentity: plugin.sourceIdentity,
138
+ logicalIdentity: plugin.catalogLogicalIdentity, manifest: plugin.manifest, scope: profile.scope,
139
+ cwd: options.cwd, env: options.env, plugins: [...byName.values()] });
140
+ }
141
+ catch (error) {
142
+ evidence.push(...(error.referenceEvidence ?? []));
143
+ continue;
144
+ }
145
+ evidence.push(...references.evidence);
146
+ try {
147
+ const effective = await resolveEffectivePluginConfigFromStores({ manifest: plugin.manifest, targetScope: profile.scope,
148
+ projectRoot: resolveAwProjectRoot(options.cwd), stores: { user: stores.user, ...(stores.project ? { project: stores.project } : {}) },
149
+ referenceContext: references.context });
150
+ entry.sources = effective.sources;
151
+ }
152
+ catch {
153
+ // Raw invalid stores remain evidence; the existing apply validation reports their runtime failure.
154
+ }
155
+ }
156
+ return evidence;
157
+ }
158
+ function providerReferences(consumer, provider, plugins) {
159
+ const definition = consumer.manifest.config;
160
+ if (!definition)
161
+ return [];
162
+ const context = { plugin: consumer.manifest.name,
163
+ dependencies: consumer.manifest.dependencies ?? [],
164
+ plugins: Object.fromEntries(plugins.filter((plugin) => plugin.manifest.config).map((plugin) => [plugin.manifest.name, {
165
+ definition: plugin.manifest.config, dependencies: plugin.manifest.dependencies ?? [],
166
+ }])) };
167
+ return getPluginConfigDependencyFields(definition, Object.keys(definition.fields), context)
168
+ .filter((entry) => entry.plugin === provider.manifest.name)
169
+ .flatMap(({ field }) => {
170
+ const schema = provider.manifest.config?.fields[field];
171
+ return schema?.type === 'array' && schema.items.type === 'object' && schema.validation?.uniqueBy
172
+ ? [{ field, key: schema.validation.uniqueBy }] : [];
173
+ });
174
+ }
175
+ export async function resolvePluginConfigReferenceConsumers(options) {
176
+ if (!Object.values(options.plugin.manifest.config?.fields ?? {})
177
+ .some((field) => field.type === 'array' && field.items.type === 'object'))
178
+ return [options.plugin];
179
+ const plugins = await resolvePluginConfigReferencePlugins({ sourceId: options.plugin.sourceId,
180
+ sourceIdentity: options.plugin.sourceIdentity, logicalIdentity: options.plugin.catalogLogicalIdentity,
181
+ env: options.env, plugins: options.plugins });
182
+ return [options.plugin, ...plugins.filter((plugin) => plugin.manifest.name !== options.plugin.manifest.name
183
+ && providerReferences(plugin, options.plugin, plugins).length > 0)];
184
+ }
185
+ function rawEffectiveValues(config, manifest) {
186
+ return Object.fromEntries(Object.entries(config.sources).flatMap(([key, source]) => {
187
+ if (source === 'missing')
188
+ return [];
189
+ return [[key, source === 'default' ? manifest.config.fields[key].default : config.stores[source]?.values[key]]];
190
+ }));
191
+ }
192
+ /** Compare actual reference failures. Existing unrelated errors do not block an incremental repair. */
193
+ export async function analyzePluginConfigReferenceMutation(options) {
194
+ const result = { consumers: [], blockedReferences: [],
195
+ unreadableConsumers: [], removesCandidates: false, evidence: [] };
196
+ const potentialFields = Object.values(options.plugin.manifest.config?.fields ?? {})
197
+ .some((field) => field.type === 'array' && field.items.type === 'object');
198
+ if (!potentialFields)
199
+ return result;
200
+ const identity = { sourceId: options.plugin.sourceId, sourceIdentity: options.plugin.sourceIdentity,
201
+ logicalIdentity: options.plugin.catalogLogicalIdentity };
202
+ const canRemove = Object.entries(options.plugin.manifest.config?.fields ?? {}).some(([field, schema]) => {
203
+ if (schema.type !== 'array' || schema.items.type !== 'object')
204
+ return false;
205
+ const key = schema.validation?.uniqueBy;
206
+ if (!key)
207
+ return false;
208
+ const value = (stores) => {
209
+ const projectValue = options.scope === 'project' ? stores.project?.values[field] : undefined;
210
+ return projectValue ?? stores.user.values[field] ?? schema.default;
211
+ };
212
+ const before = value(options.beforeStores);
213
+ const after = value(options.afterStores);
214
+ if (!Array.isArray(before))
215
+ return false;
216
+ const afterKeys = new Set(Array.isArray(after) ? after.map((row) => JSON.stringify(row[key])) : []);
217
+ return before.some((row) => !afterKeys.has(JSON.stringify(row[key])));
218
+ });
219
+ let plugins;
220
+ try {
221
+ plugins = await resolvePluginConfigReferencePlugins({ ...identity, env: options.env, plugins: options.plugins });
222
+ }
223
+ catch {
224
+ if (canRemove)
225
+ result.unreadableConsumers.push(`Active source ${options.plugin.sourceId ?? '<unbound>'}`);
226
+ result.evidence.push({ sourceId: options.plugin.sourceId, unavailable: true });
227
+ return result;
228
+ }
229
+ const consumers = plugins.filter((plugin) => plugin.manifest.name !== options.plugin.manifest.name
230
+ && providerReferences(plugin, options.plugin, plugins).length > 0);
231
+ for (const scope of options.scope === 'user' ? ['user', 'project'] : ['project']) {
232
+ const resolveProvider = async (stores) => {
233
+ const references = pluginConfigHasExternalReferences(options.plugin.manifest)
234
+ ? await resolvePluginConfigReferenceContext({ ...identity, manifest: options.plugin.manifest,
235
+ scope, cwd: options.cwd, env: options.env, plugins,
236
+ storeOverrides: new Map([[options.plugin.manifest.name, stores]]) }) : undefined;
237
+ return resolveEffectivePluginConfigFromStores({ manifest: options.plugin.manifest,
238
+ targetScope: scope, projectRoot: resolveAwProjectRoot(options.cwd), stores,
239
+ referenceContext: references?.context });
240
+ };
241
+ let providerBefore;
242
+ let providerAfter;
243
+ try {
244
+ [providerBefore, providerAfter] = await Promise.all([
245
+ resolveProvider(options.beforeStores), resolveProvider(options.afterStores),
246
+ ]);
247
+ }
248
+ catch {
249
+ if (canRemove)
250
+ result.unreadableConsumers.push(`${options.plugin.manifest.name} (${scope})`);
251
+ result.evidence.push({ plugin: options.plugin.manifest.name, scope, unavailable: true });
252
+ continue;
253
+ }
254
+ for (const consumer of consumers) {
255
+ const refs = providerReferences(consumer, options.plugin, plugins);
256
+ const removes = refs.some((ref) => {
257
+ const keys = (config) => new Set(Array.isArray(config.values[ref.field]) ? config.values[ref.field]
258
+ .map((row) => JSON.stringify(row[ref.key])) : []);
259
+ const afterKeys = keys(providerAfter);
260
+ return [...keys(providerBefore)].some((key) => !afterKeys.has(key));
261
+ });
262
+ result.removesCandidates ||= removes;
263
+ try {
264
+ const consumerIdentity = { sourceId: consumer.sourceId, sourceIdentity: consumer.sourceIdentity,
265
+ logicalIdentity: consumer.catalogLogicalIdentity, pluginName: consumer.manifest.name,
266
+ cwd: options.cwd, env: options.env };
267
+ const user = await readPluginConfigStore({ ...consumerIdentity, scope: 'user' });
268
+ const project = scope === 'project' ? await readPluginConfigStore({ ...consumerIdentity, scope: 'project' }) : undefined;
269
+ const stores = { user, ...(project ? { project } : {}) };
270
+ const resolveConsumer = async (providerStores) => {
271
+ const references = await resolvePluginConfigReferenceContext({ ...identity, manifest: consumer.manifest,
272
+ scope, cwd: options.cwd, env: options.env, plugins,
273
+ storeOverrides: new Map([[options.plugin.manifest.name, providerStores]]) });
274
+ const effective = await resolveEffectivePluginConfigFromStores({ manifest: consumer.manifest,
275
+ targetScope: scope, projectRoot: resolveAwProjectRoot(options.cwd), stores,
276
+ referenceContext: references.context, referenceEvidence: references.evidence });
277
+ return effective;
278
+ };
279
+ const [before, after] = await Promise.all([
280
+ resolveConsumer(options.beforeStores), resolveConsumer(options.afterStores),
281
+ ]);
282
+ const validate = (config) => {
283
+ const candidate = rawEffectiveValues(config, consumer.manifest);
284
+ const failures = [];
285
+ for (const field of Object.keys(candidate)) {
286
+ const dependencies = getPluginConfigDependencyFields(consumer.manifest.config, [field], config.referenceContext);
287
+ if (!dependencies.some((entry) => entry.plugin === options.plugin.manifest.name
288
+ && refs.some((ref) => ref.field === entry.field)))
289
+ continue;
290
+ for (const issue of validatePluginConfigCandidate(consumer.manifest.config, candidate, [field], config.referenceContext)) {
291
+ if (!issue.code.startsWith('valueRef'))
292
+ continue;
293
+ if (!issue.path.plugin || issue.path.plugin === consumer.manifest.name) {
294
+ failures.push({ issue, field: issue.path.field });
295
+ }
296
+ else if (issue.path.plugin === options.plugin.manifest.name
297
+ && refs.some((ref) => ref.field === issue.path.field)) {
298
+ // Reserved values are reported on the source path, even when the selection is included.
299
+ failures.push({ issue, field });
300
+ }
301
+ }
302
+ }
303
+ return failures;
304
+ };
305
+ const issueKey = ({ issue, field }) => JSON.stringify([field, issue.code, issue.path]);
306
+ const reported = new Set();
307
+ for (const failure of validate(after)) {
308
+ if (!Object.hasOwn(before.values, failure.field) || reported.has(issueKey(failure)))
309
+ continue;
310
+ reported.add(issueKey(failure));
311
+ const { issue, field } = failure;
312
+ const segments = issue.path.segments ?? [issue.path.field, ...(issue.path.property ? [issue.path.property] : [])];
313
+ const foreign = issue.path.plugin && issue.path.plugin !== consumer.manifest.name;
314
+ let selected = foreign ? after.referenceContext?.plugins[issue.path.plugin]?.values
315
+ : rawEffectiveValues(after, consumer.manifest);
316
+ for (const segment of segments)
317
+ selected = selected && typeof selected === 'object'
318
+ ? selected[segment] : undefined;
319
+ result.blockedReferences.push(`${options.plugin.manifest.name}${foreign ? `/${issue.path.field}` : ''}: key ${JSON.stringify(selected)}; `
320
+ + `${consumer.manifest.name}/${field} (${scope}): ${formatPluginConfigIssue(issue)}`);
321
+ }
322
+ result.consumers.push({ plugin: consumer, scope, before, after });
323
+ result.evidence.push({ plugin: consumer.manifest.name, scope,
324
+ definition: consumer.manifest.config, identity: consumerIdentity,
325
+ stores: Object.fromEntries(Object.entries(stores).map(([layer, store]) => [layer,
326
+ { exists: store.exists, state: store.state, rawDigest: store.rawDigest }])),
327
+ references: before.referenceEvidence });
328
+ }
329
+ catch {
330
+ const location = `${consumer.manifest.name} (${scope})`;
331
+ result.consumers.push({ plugin: consumer, scope, error: location });
332
+ if (removes)
333
+ result.unreadableConsumers.push(location);
334
+ result.evidence.push({ plugin: consumer.manifest.name, scope, unreadable: true, definition: consumer.manifest.config });
335
+ }
336
+ }
337
+ }
338
+ return result;
339
+ }
340
+ //# sourceMappingURL=plugin-config-references.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plugin-config-references.js","sourceRoot":"","sources":["../../../src/utils/plugin-config-references.ts"],"names":[],"mappings":"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"}