agentera 3.0.0-dev.15 → 3.0.0-dev.17

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 (179) hide show
  1. package/README.md +47 -22
  2. package/bundle/.codex-plugin/plugin.json +92 -0
  3. package/bundle/.cursor/agents/agentera.md +7 -0
  4. package/bundle/.cursor/hooks.json +32 -0
  5. package/bundle/.cursor-plugin/plugin.json +34 -0
  6. package/bundle/.github/hooks/postToolUse.json +9 -0
  7. package/bundle/.github/hooks/preToolUse.json +8 -0
  8. package/bundle/.github/hooks/sessionEnd.json +8 -0
  9. package/bundle/.github/hooks/sessionStart.json +8 -0
  10. package/bundle/.github/plugin/plugin.json +7 -0
  11. package/bundle/.opencode/agents/agentera.md +12 -0
  12. package/bundle/.opencode/commands/agentera.md +5 -0
  13. package/bundle/.opencode/package.json +31 -0
  14. package/bundle/.opencode/plugins/agentera.js +820 -0
  15. package/bundle/CHANGELOG.md +1087 -0
  16. package/bundle/DESIGN.md +233 -0
  17. package/bundle/LICENSE +201 -0
  18. package/bundle/README.md +141 -0
  19. package/bundle/UPGRADE.md +202 -0
  20. package/bundle/agents/openai.yaml +87 -0
  21. package/bundle/extract-corpus-parity.json +2 -4
  22. package/bundle/hooks/codex-hooks.json +31 -0
  23. package/bundle/hooks/codex-plugin-hooks.json +31 -0
  24. package/bundle/plugin.json +13 -0
  25. package/bundle/references/adapters/cursor.md +50 -40
  26. package/bundle/references/adapters/opencode.md +22 -23
  27. package/bundle/references/adapters/package-manifest-interface-model.yaml +32 -43
  28. package/bundle/references/adapters/package-registry.yaml +19 -52
  29. package/bundle/references/adapters/package-surface-characterization.md +61 -47
  30. package/bundle/references/adapters/runtime-adapter-characterization.md +44 -79
  31. package/bundle/references/adapters/runtime-adapter-registry.yaml +7 -169
  32. package/bundle/references/adapters/runtime-feature-parity.md +114 -174
  33. package/bundle/references/adapters/runtime-lifecycle-adapters.yaml +288 -0
  34. package/bundle/references/adapters/runtime-lifecycle-authority.yaml +90 -0
  35. package/bundle/references/adapters/runtime-lifecycle-operation-contract.yaml +84 -0
  36. package/bundle/references/adapters/runtime-retired-resources.yaml +33 -0
  37. package/bundle/references/analysis/benchmark.md +5 -5
  38. package/bundle/references/analysis/startup-measurement-contract.yaml +19 -8
  39. package/bundle/references/cli/bundle-skill-vocabulary.yaml +2 -2
  40. package/bundle/references/cli/vocabulary-index.yaml +1 -1
  41. package/bundle/references/cli/vocabulary.md +7 -7
  42. package/bundle/skills/agentera/references/contract.md +10 -3
  43. package/bundle/skills/agentera/schemas/artifacts/plan.yaml +1 -1
  44. package/dist/analytics/extractCorpus/cli.js +19 -5
  45. package/dist/analytics/extractCorpus/cli.js.map +1 -1
  46. package/dist/analytics/extractCorpus/copilotSessions.js +6 -3
  47. package/dist/analytics/extractCorpus/copilotSessions.js.map +1 -1
  48. package/dist/analytics/extractCorpus/core.js +40 -11
  49. package/dist/analytics/extractCorpus/core.js.map +1 -1
  50. package/dist/analytics/extractCorpus/corpus.js +39 -16
  51. package/dist/analytics/extractCorpus/corpus.js.map +1 -1
  52. package/dist/analytics/extractCorpus/coverageAudit.js +44 -44
  53. package/dist/analytics/extractCorpus/coverageAudit.js.map +1 -1
  54. package/dist/analytics/extractCorpus/cursorSessions.js +6 -3
  55. package/dist/analytics/extractCorpus/cursorSessions.js.map +1 -1
  56. package/dist/analytics/extractCorpus/extractCorpusParity.js +2 -2
  57. package/dist/analytics/extractCorpus/extractCorpusParity.js.map +1 -1
  58. package/dist/analytics/extractCorpus/filesystemSources.js +1 -4
  59. package/dist/analytics/extractCorpus/filesystemSources.js.map +1 -1
  60. package/dist/analytics/extractCorpus/jsonlSessions.js +24 -4
  61. package/dist/analytics/extractCorpus/jsonlSessions.js.map +1 -1
  62. package/dist/analytics/usageStats.js +51 -7
  63. package/dist/analytics/usageStats.js.map +1 -1
  64. package/dist/bin/agentera.js +3 -1
  65. package/dist/bin/agentera.js.map +1 -1
  66. package/dist/capabilities/discuss/instructions.js +1 -1
  67. package/dist/capabilities/discuss/instructions.js.map +1 -1
  68. package/dist/capabilities/orchestrate/instructions.js +1 -1
  69. package/dist/capabilities/orchestrate/instructions.js.map +1 -1
  70. package/dist/capabilities/profile/instructions.js +1 -1
  71. package/dist/capabilities/profile/instructions.js.map +1 -1
  72. package/dist/cli/capabilityContext/startup.js +1 -0
  73. package/dist/cli/capabilityContext/startup.js.map +1 -1
  74. package/dist/cli/commands/doctor.js +66 -4
  75. package/dist/cli/commands/doctor.js.map +1 -1
  76. package/dist/cli/commands/prime/collectOrientationState.js +43 -20
  77. package/dist/cli/commands/prime/collectOrientationState.js.map +1 -1
  78. package/dist/cli/commands/prime/orientationOutput.js +12 -1
  79. package/dist/cli/commands/prime/orientationOutput.js.map +1 -1
  80. package/dist/cli/commands/report.js +19 -4
  81. package/dist/cli/commands/report.js.map +1 -1
  82. package/dist/cli/commands/schema.js +85 -4
  83. package/dist/cli/commands/schema.js.map +1 -1
  84. package/dist/cli/commands/state/plan.js +82 -46
  85. package/dist/cli/commands/state/plan.js.map +1 -1
  86. package/dist/cli/commands/upgrade.js +18 -2
  87. package/dist/cli/commands/upgrade.js.map +1 -1
  88. package/dist/cli/commands/verify.js +6 -6
  89. package/dist/cli/commands/verify.js.map +1 -1
  90. package/dist/cli/dispatch/lifecycle.js +71 -3
  91. package/dist/cli/dispatch/lifecycle.js.map +1 -1
  92. package/dist/cli/help.js +18 -6
  93. package/dist/cli/help.js.map +1 -1
  94. package/dist/cli/orientation/attention.js +99 -1
  95. package/dist/cli/orientation/attention.js.map +1 -1
  96. package/dist/cli/orientation.js +44 -17
  97. package/dist/cli/orientation.js.map +1 -1
  98. package/dist/cli/planArtifacts.js +95 -0
  99. package/dist/cli/planArtifacts.js.map +1 -0
  100. package/dist/cli/planEvidence.js +158 -0
  101. package/dist/cli/planEvidence.js.map +1 -0
  102. package/dist/cli/prime-blob.js +1 -1
  103. package/dist/cli/prime-blob.js.map +1 -1
  104. package/dist/cli/startupCompletenessContract.js +1 -1
  105. package/dist/cli/startupCompletenessContract.js.map +1 -1
  106. package/dist/cli/stateQuery.js +1 -0
  107. package/dist/cli/stateQuery.js.map +1 -1
  108. package/dist/eval/evalSkills.js +13 -13
  109. package/dist/eval/evalSkills.js.map +1 -1
  110. package/dist/hooks/validateArtifact/runtime.js +4 -4
  111. package/dist/migrate/v2HandoffManifest.js +4 -0
  112. package/dist/migrate/v2HandoffManifest.js.map +1 -1
  113. package/dist/registries/packageRegistry.js +36 -3
  114. package/dist/registries/packageRegistry.js.map +1 -1
  115. package/dist/registries/runtimeAdapterRegistry.js +26 -17
  116. package/dist/registries/runtimeAdapterRegistry.js.map +1 -1
  117. package/dist/release/releaseMetadata.js +1 -1
  118. package/dist/release/releaseMetadata.js.map +1 -1
  119. package/dist/runtime/lifecycleAdapterContract.js +458 -0
  120. package/dist/runtime/lifecycleAdapterContract.js.map +1 -0
  121. package/dist/runtime/lifecycleAdapters.js +766 -0
  122. package/dist/runtime/lifecycleAdapters.js.map +1 -0
  123. package/dist/runtime/lifecycleAuthority.js +493 -0
  124. package/dist/runtime/lifecycleAuthority.js.map +1 -0
  125. package/dist/runtime/lifecycleOperationContract.js +113 -0
  126. package/dist/runtime/lifecycleOperationContract.js.map +1 -0
  127. package/dist/runtime/lifecycleOperations.js +635 -0
  128. package/dist/runtime/lifecycleOperations.js.map +1 -0
  129. package/dist/runtime/lifecycleOwnershipJournal.js +623 -0
  130. package/dist/runtime/lifecycleOwnershipJournal.js.map +1 -0
  131. package/dist/runtime/lifecyclePublication.js +395 -0
  132. package/dist/runtime/lifecyclePublication.js.map +1 -0
  133. package/dist/runtime/lifecycleSnapshot.js +439 -0
  134. package/dist/runtime/lifecycleSnapshot.js.map +1 -0
  135. package/dist/runtime/retiredRuntimeCleanup.js +238 -0
  136. package/dist/runtime/retiredRuntimeCleanup.js.map +1 -0
  137. package/dist/setup/codex/installRoot.js +1 -1
  138. package/dist/setup/codex/installRoot.js.map +1 -1
  139. package/dist/setup/copilot.js +1 -1
  140. package/dist/setup/copilot.js.map +1 -1
  141. package/dist/setup/cursor.js +1 -1
  142. package/dist/setup/cursor.js.map +1 -1
  143. package/dist/setup/doctor/core.js +3 -3
  144. package/dist/setup/doctor/core.js.map +1 -1
  145. package/dist/setup/doctor/diagnostics.js +0 -39
  146. package/dist/setup/doctor/diagnostics.js.map +1 -1
  147. package/dist/setup/smokeChecks.js +1 -3
  148. package/dist/setup/smokeChecks.js.map +1 -1
  149. package/dist/upgrade/appContentRefresh.js +8 -1
  150. package/dist/upgrade/appContentRefresh.js.map +1 -1
  151. package/dist/upgrade/channels.js +6 -8
  152. package/dist/upgrade/channels.js.map +1 -1
  153. package/dist/upgrade/compatibility.js +5 -0
  154. package/dist/upgrade/compatibility.js.map +1 -1
  155. package/dist/upgrade/doctor.js +18 -13
  156. package/dist/upgrade/doctor.js.map +1 -1
  157. package/dist/upgrade/lifecycleUpgrade.js +427 -0
  158. package/dist/upgrade/lifecycleUpgrade.js.map +1 -0
  159. package/dist/upgrade/migrateArtifactsV2ToV3.js.map +1 -1
  160. package/dist/upgrade/projectIntegration.js +148 -69
  161. package/dist/upgrade/projectIntegration.js.map +1 -1
  162. package/dist/upgrade/projectIntegrationDecision.js +99 -0
  163. package/dist/upgrade/projectIntegrationDecision.js.map +1 -1
  164. package/dist/upgrade/runtimeMigration.js +3 -10
  165. package/dist/upgrade/runtimeMigration.js.map +1 -1
  166. package/dist/upgrade/upgradeCommands.js +8 -0
  167. package/dist/upgrade/upgradeCommands.js.map +1 -1
  168. package/dist/upgrade/upgradeOrchestrator.js +164 -7
  169. package/dist/upgrade/upgradeOrchestrator.js.map +1 -1
  170. package/dist/validate/appHomeContract.js +1 -1
  171. package/dist/validate/appHomeContract.js.map +1 -1
  172. package/dist/validate/lifecycleAdapters/nodeFormChecks.js +2 -9
  173. package/dist/validate/lifecycleAdapters/nodeFormChecks.js.map +1 -1
  174. package/dist/validate/lifecycleAdapters/shared.js +1 -1
  175. package/dist/validate/lifecycleAdapters/shared.js.map +1 -1
  176. package/dist/validate/lifecycleAdapters.js +102 -3
  177. package/dist/validate/lifecycleAdapters.js.map +1 -1
  178. package/package.json +1 -1
  179. package/bundle/skills/agentera/.claude-plugin/plugin.json +0 -27
@@ -0,0 +1,439 @@
1
+ import crypto from "node:crypto";
2
+ import { inspectRuntimeLifecycleAdapters, } from "./lifecycleAdapters.js";
3
+ import { RUNTIME_ADAPTER_CATEGORIES, loadRuntimeLifecycleAdapterContract, } from "./lifecycleAdapterContract.js";
4
+ export const LIFECYCLE_SNAPSHOT_SCHEMA_VERSION = "agentera.runtimeLifecycleSnapshot.v1";
5
+ export const LIFECYCLE_PROJECTION_SCHEMA_VERSION = "agentera.runtimeLifecycleProjection.v1";
6
+ export const LIFECYCLE_STATUS_VOCABULARY_VERSION = "agentera.runtimeLifecycleStatus.v1";
7
+ export const LIFECYCLE_SUMMARY_SCHEMA_VERSION = "agentera.runtimeLifecycleSummary.v1";
8
+ function isCanonicalEvidence(evidence) {
9
+ return evidence.detail.includes("canonical shared location");
10
+ }
11
+ function skillPrecedence(surface) {
12
+ const discovered = surface.evidence
13
+ .filter((evidence) => evidence.kind === "filesystem" && evidence.path !== undefined)
14
+ .map((evidence) => ({
15
+ path: evidence.path,
16
+ canonical: isCanonicalEvidence(evidence),
17
+ state: evidence.state,
18
+ }));
19
+ const confirmed = discovered.filter((evidence) => evidence.state === "confirmed");
20
+ return {
21
+ winner: confirmed[0] ?? null,
22
+ shadowing: confirmed.slice(1),
23
+ };
24
+ }
25
+ function snapshotCategories(surfaceId, reportCategories) {
26
+ return RUNTIME_ADAPTER_CATEGORIES.map((category) => {
27
+ const surface = reportCategories[category].surfaces.find((candidate) => candidate.surfaceId === surfaceId);
28
+ if (!surface)
29
+ throw new Error(`${category}: missing lifecycle diagnosis for surface ${surfaceId}`);
30
+ return {
31
+ surfaceId,
32
+ category,
33
+ state: surface.state,
34
+ capability: surface.capability,
35
+ source: surface.source,
36
+ required: surface.required,
37
+ diagnosisComplete: surface.diagnosisComplete,
38
+ evidence: surface.evidence,
39
+ remediation: surface.remediation,
40
+ ...(category === "skills" ? { precedence: skillPrecedence(surface) } : {}),
41
+ };
42
+ });
43
+ }
44
+ function blockersFor(supportFloorViolations, surfaces) {
45
+ const blockers = supportFloorViolations.map((violation) => ({
46
+ id: ["support_floor", violation.code, violation.surfaceId, violation.field]
47
+ .filter(Boolean)
48
+ .join(":"),
49
+ code: violation.code,
50
+ kind: "support_floor",
51
+ ...(violation.surfaceId ? { surfaceId: violation.surfaceId } : {}),
52
+ detail: violation.detail,
53
+ ...(violation.field && violation.observed !== undefined
54
+ ? { evidence: { field: violation.field, observed: violation.observed } }
55
+ : {}),
56
+ }));
57
+ const seen = new Set(blockers.map((blocker) => blocker.id));
58
+ for (const surface of surfaces) {
59
+ for (const category of surface.categories) {
60
+ if (category.state !== "blocked_unowned")
61
+ continue;
62
+ const operationIds = category.remediation.operationIds.length > 0
63
+ ? category.remediation.operationIds
64
+ : [`${surface.id}:${category.category}`];
65
+ for (const operationId of operationIds) {
66
+ const id = `unowned_collision:${operationId}`;
67
+ if (seen.has(id))
68
+ continue;
69
+ seen.add(id);
70
+ blockers.push({
71
+ id,
72
+ code: "unowned_collision",
73
+ kind: "unowned_collision",
74
+ surfaceId: surface.id,
75
+ category: category.category,
76
+ detail: category.remediation.summary,
77
+ });
78
+ }
79
+ }
80
+ }
81
+ return blockers;
82
+ }
83
+ function commandEligibility(actionClass) {
84
+ return {
85
+ preview: actionClass === "repairable_owned",
86
+ apply: actionClass === "repairable_owned",
87
+ manual: actionClass === "manual_verification",
88
+ diagnostic: actionClass === "unobservable_gap",
89
+ };
90
+ }
91
+ function projectionCounts(actions) {
92
+ return {
93
+ total: actions.length,
94
+ repairableOwned: actions.filter((action) => action.actionClass === "repairable_owned").length,
95
+ manualVerification: actions.filter((action) => action.actionClass === "manual_verification")
96
+ .length,
97
+ unobservableGap: actions.filter((action) => action.actionClass === "unobservable_gap").length,
98
+ commandEligible: actions.filter((action) => Object.values(action.commandEligibility).some(Boolean)).length,
99
+ };
100
+ }
101
+ function resourceForOperation(operationId, resources) {
102
+ const resource = resources
103
+ .filter((candidate) => operationId === candidate.id || operationId.startsWith(`${candidate.id}.`))
104
+ .sort((left, right) => right.id.length - left.id.length)[0];
105
+ if (!resource)
106
+ throw new Error(`${operationId}: lifecycle operation has no resource declaration`);
107
+ return resource;
108
+ }
109
+ function selectedRuntimeIds(matrix, requested) {
110
+ const active = matrix.lifecycleState.activeRuntimeIds;
111
+ const selected = requested === undefined ? new Set(active) : new Set(requested);
112
+ const invalid = [...selected].filter((runtimeId) => !active.includes(runtimeId));
113
+ if (invalid.length > 0) {
114
+ throw new Error(`unknown lifecycle projection runtime: ${invalid.join(", ")}`);
115
+ }
116
+ return active.filter((runtimeId) => selected.has(runtimeId));
117
+ }
118
+ function selectedSharedResources(reports, contract) {
119
+ const selectedIds = new Set(reports.map((report) => report.runtimeId));
120
+ return contract.resources.flatMap((resource) => {
121
+ if (resource.runtimeId !== undefined || !resource.required)
122
+ return [];
123
+ const selectedByRuntimeIds = contract.adapters
124
+ .filter((adapter) => selectedIds.has(adapter.runtimeId) && adapter.resourceRefs.includes(resource.id))
125
+ .map((adapter) => adapter.runtimeId);
126
+ const requiredByRuntimeIds = [...selectedByRuntimeIds];
127
+ if (requiredByRuntimeIds.length === 0)
128
+ return [];
129
+ const operation = reports
130
+ .flatMap((report) => report.repairPlan.operations)
131
+ .find((candidate) => candidate.id === resource.id || candidate.id.startsWith(`${resource.id}.`));
132
+ if (!operation)
133
+ throw new Error(`${resource.id}: selected shared resource has no lifecycle operation`);
134
+ return [
135
+ {
136
+ id: resource.id,
137
+ category: resource.category,
138
+ destination: operation.destination,
139
+ applicability: "required",
140
+ selectedByRuntimeIds,
141
+ requiredByRuntimeIds,
142
+ },
143
+ ];
144
+ });
145
+ }
146
+ function operationActionClass(operation) {
147
+ if (["create", "update", "remove", "finalize_ownership"].includes(operation.action) &&
148
+ ["managed", "claimable", "legacy"].includes(operation.ownership))
149
+ return "repairable_owned";
150
+ return "manual_verification";
151
+ }
152
+ function operationActions(reports, runtimes, contract, sharedResources) {
153
+ const shared = new Map(sharedResources.map((resource) => [resource.id, resource]));
154
+ const actions = new Map();
155
+ for (const report of reports) {
156
+ for (const operation of report.repairPlan.operations) {
157
+ if (operation.action === "noop")
158
+ continue;
159
+ const resource = resourceForOperation(operation.id, contract.resources);
160
+ const sharedResource = shared.get(resource.id);
161
+ let runtimeIds;
162
+ let surfaceId;
163
+ let applicability;
164
+ if (sharedResource) {
165
+ runtimeIds = sharedResource.requiredByRuntimeIds;
166
+ surfaceId = "shared";
167
+ applicability = "required";
168
+ }
169
+ else {
170
+ if (resource.runtimeId !== report.runtimeId)
171
+ continue;
172
+ const runtime = runtimes.find((candidate) => candidate.runtimeId === report.runtimeId);
173
+ const surface = runtime?.surfaces.find((candidate) => candidate.id === resource.surfaceId);
174
+ if (!surface?.expected || surface.applicability === "not_applicable")
175
+ continue;
176
+ runtimeIds = [report.runtimeId];
177
+ surfaceId = surface.id;
178
+ applicability = surface.applicability;
179
+ }
180
+ const actionClass = operationActionClass(operation);
181
+ const projected = {
182
+ id: `operation:${operation.id}`,
183
+ runtimeIds,
184
+ surfaceId,
185
+ category: resource.category,
186
+ resourceId: resource.id,
187
+ destination: operation.destination,
188
+ applicability,
189
+ ownership: operation.ownership,
190
+ actionClass,
191
+ required: operation.required,
192
+ reason: operation.reason,
193
+ operation: operation.action,
194
+ commandEligibility: commandEligibility(actionClass),
195
+ manual: actionClass === "manual_verification"
196
+ ? { command: null, instruction: operation.reason }
197
+ : null,
198
+ };
199
+ const previous = actions.get(projected.id);
200
+ if (previous && JSON.stringify(previous) !== JSON.stringify(projected)) {
201
+ throw new Error(`${operation.id}: selected runtimes disagree on shared lifecycle projection`);
202
+ }
203
+ actions.set(projected.id, projected);
204
+ }
205
+ }
206
+ return [...actions.values()];
207
+ }
208
+ function evidenceFieldCategory(field) {
209
+ if (field === "installed")
210
+ return "skills";
211
+ if (field === "enabled")
212
+ return "enablement";
213
+ if (field === "trusted")
214
+ return "trust";
215
+ return "surface";
216
+ }
217
+ function diagnosticAndManualActions(reports, runtimes) {
218
+ const actions = new Map();
219
+ const add = (action) => {
220
+ if (!actions.has(action.id))
221
+ actions.set(action.id, action);
222
+ };
223
+ for (const report of reports) {
224
+ const runtime = runtimes.find((candidate) => candidate.runtimeId === report.runtimeId);
225
+ if (!runtime)
226
+ continue;
227
+ for (const surface of runtime.surfaces.filter((candidate) => candidate.expected)) {
228
+ for (const category of surface.categories) {
229
+ if (category.remediation.operationIds.length > 0)
230
+ continue;
231
+ for (const nativeAction of category.remediation.nativeActions) {
232
+ const actionClass = "manual_verification";
233
+ add({
234
+ id: `manual:${runtime.runtimeId}:${surface.id}:${category.category}:${nativeAction.id}`,
235
+ runtimeIds: [runtime.runtimeId],
236
+ surfaceId: surface.id,
237
+ category: category.category,
238
+ resourceId: null,
239
+ destination: null,
240
+ applicability: surface.applicability,
241
+ ownership: "user_owned",
242
+ actionClass,
243
+ required: category.required,
244
+ reason: category.remediation.summary,
245
+ operation: null,
246
+ commandEligibility: commandEligibility(actionClass),
247
+ manual: { command: nativeAction.command, instruction: nativeAction.instruction },
248
+ });
249
+ }
250
+ if (category.remediation.kind === "action_required" &&
251
+ category.remediation.nativeActions.length === 0 &&
252
+ !["confirmed", "not_applicable"].includes(category.state)) {
253
+ const actionClass = "manual_verification";
254
+ add({
255
+ id: `manual:${runtime.runtimeId}:${surface.id}:${category.category}`,
256
+ runtimeIds: [runtime.runtimeId],
257
+ surfaceId: surface.id,
258
+ category: category.category,
259
+ resourceId: null,
260
+ destination: null,
261
+ applicability: surface.applicability,
262
+ ownership: "user_owned",
263
+ actionClass,
264
+ required: category.required,
265
+ reason: category.remediation.summary,
266
+ operation: null,
267
+ commandEligibility: commandEligibility(actionClass),
268
+ manual: { command: null, instruction: category.remediation.summary },
269
+ });
270
+ }
271
+ if (category.required &&
272
+ category.state === "unknown" &&
273
+ category.remediation.kind === "unavailable") {
274
+ const actionClass = "unobservable_gap";
275
+ add({
276
+ id: `diagnostic:${runtime.runtimeId}:${surface.id}:${category.category}`,
277
+ runtimeIds: [runtime.runtimeId],
278
+ surfaceId: surface.id,
279
+ category: category.category,
280
+ resourceId: null,
281
+ destination: null,
282
+ applicability: surface.applicability,
283
+ ownership: "undeclared",
284
+ actionClass,
285
+ required: true,
286
+ reason: category.remediation.summary,
287
+ operation: null,
288
+ commandEligibility: commandEligibility(actionClass),
289
+ manual: null,
290
+ });
291
+ }
292
+ }
293
+ for (const violation of surface.supportFloorViolations) {
294
+ const categoryName = evidenceFieldCategory(violation.field);
295
+ const category = categoryName === "surface"
296
+ ? undefined
297
+ : surface.categories.find((candidate) => candidate.category === categoryName);
298
+ if (category?.remediation.operationIds.length)
299
+ continue;
300
+ const manual = category?.remediation.kind === "action_required";
301
+ const actionClass = manual
302
+ ? "manual_verification"
303
+ : "unobservable_gap";
304
+ add({
305
+ id: `${manual ? "manual" : "diagnostic"}:${runtime.runtimeId}:${surface.id}:${categoryName}`,
306
+ runtimeIds: [runtime.runtimeId],
307
+ surfaceId: surface.id,
308
+ category: categoryName,
309
+ resourceId: null,
310
+ destination: null,
311
+ applicability: surface.applicability,
312
+ ownership: manual ? "user_owned" : "undeclared",
313
+ actionClass,
314
+ required: true,
315
+ reason: category?.remediation.summary ?? violation.detail,
316
+ operation: null,
317
+ commandEligibility: commandEligibility(actionClass),
318
+ manual: manual
319
+ ? { command: null, instruction: category?.remediation.summary ?? violation.detail }
320
+ : null,
321
+ });
322
+ }
323
+ }
324
+ }
325
+ return [...actions.values()];
326
+ }
327
+ function snapshotId(payload) {
328
+ return `sha256:${crypto.createHash("sha256").update(JSON.stringify(payload)).digest("hex")}`;
329
+ }
330
+ /**
331
+ * Observe every active runtime once and expose the immutable status object used
332
+ * by both prime and doctor. The adapter probes are bounded and read-only; this
333
+ * function never publishes a repair plan or executes host-native actions.
334
+ */
335
+ export function observeRuntimeLifecycle(context, runtimeIds) {
336
+ const matrix = inspectRuntimeLifecycleAdapters(context);
337
+ return projectRuntimeLifecycle(matrix, runtimeIds);
338
+ }
339
+ export function projectRuntimeLifecycle(matrix, runtimeIds, contract = loadRuntimeLifecycleAdapterContract()) {
340
+ const selection = selectedRuntimeIds(matrix, runtimeIds);
341
+ const selected = new Set(selection);
342
+ const reports = selection
343
+ .map((runtimeId) => matrix.reports.find((report) => report.runtimeId === runtimeId))
344
+ .filter((report) => report !== undefined);
345
+ const runtimes = matrix.lifecycleState.runtimes
346
+ .filter((state) => selected.has(state.runtimeId))
347
+ .map((state) => {
348
+ const report = matrix.reports.find((candidate) => candidate.runtimeId === state.runtimeId);
349
+ if (!report)
350
+ throw new Error(`${state.runtimeId}: lifecycle adapter report is missing`);
351
+ const surfaces = state.surfaces.map((surface) => ({
352
+ id: surface.id,
353
+ displayName: surface.displayName,
354
+ expected: surface.expected,
355
+ applicability: surface.applicability,
356
+ status: surface.status,
357
+ evidence: surface.evidence,
358
+ diagnosisComplete: surface.diagnosisComplete,
359
+ unmetMandatoryFields: surface.unmetMandatoryFields,
360
+ releaseBlocking: surface.releaseBlocking,
361
+ supportFloorViolations: surface.supportFloorViolations,
362
+ categories: snapshotCategories(surface.id, report.categories),
363
+ }));
364
+ const blockers = blockersFor(state.supportFloor.violations, surfaces);
365
+ return {
366
+ runtimeId: state.runtimeId,
367
+ displayName: state.displayName,
368
+ status: state.status,
369
+ readiness: state.status,
370
+ canonicalSkill: state.canonicalSkill,
371
+ diagnosisComplete: state.diagnosisComplete,
372
+ supportFloor: state.supportFloor,
373
+ surfaces,
374
+ blockers,
375
+ counts: projectionCounts([]),
376
+ actionCount: 0,
377
+ };
378
+ });
379
+ const sharedResources = selectedSharedResources(reports, contract);
380
+ const actions = [
381
+ ...operationActions(reports, runtimes, contract, sharedResources),
382
+ ...diagnosticAndManualActions(reports, runtimes),
383
+ ];
384
+ for (const runtime of runtimes) {
385
+ runtime.counts = projectionCounts(actions.filter((action) => action.runtimeIds.includes(runtime.runtimeId)));
386
+ runtime.actionCount = runtime.counts.total;
387
+ }
388
+ const payload = {
389
+ schemaVersion: LIFECYCLE_SNAPSHOT_SCHEMA_VERSION,
390
+ projectionVersion: LIFECYCLE_PROJECTION_SCHEMA_VERSION,
391
+ statusVocabularyVersion: LIFECYCLE_STATUS_VOCABULARY_VERSION,
392
+ authority: matrix.lifecycleState.authority,
393
+ activeRuntimeIds: matrix.lifecycleState.activeRuntimeIds,
394
+ selection: { runtimeIds: selection },
395
+ releaseBlocked: runtimes.some((runtime) => runtime.supportFloor.releaseBlocking),
396
+ sharedResources,
397
+ actions,
398
+ counts: projectionCounts(actions),
399
+ runtimes,
400
+ };
401
+ return { ...payload, snapshotId: snapshotId(payload) };
402
+ }
403
+ export function summarizeRuntimeLifecycle(snapshot) {
404
+ return {
405
+ schemaVersion: LIFECYCLE_SUMMARY_SCHEMA_VERSION,
406
+ snapshotVersion: snapshot.schemaVersion,
407
+ projectionVersion: snapshot.projectionVersion,
408
+ snapshotId: snapshot.snapshotId,
409
+ statusVocabularyVersion: snapshot.statusVocabularyVersion,
410
+ authority: snapshot.authority,
411
+ activeRuntimeIds: snapshot.activeRuntimeIds,
412
+ counts: snapshot.counts,
413
+ releaseBlocked: snapshot.releaseBlocked,
414
+ runtimes: snapshot.runtimes.map((runtime) => ({
415
+ runtimeId: runtime.runtimeId,
416
+ displayName: runtime.displayName,
417
+ status: runtime.status,
418
+ readiness: runtime.readiness,
419
+ canonicalSkill: { detected: runtime.canonicalSkill.detected },
420
+ supportFloor: {
421
+ met: runtime.supportFloor.met,
422
+ releaseBlocking: runtime.supportFloor.releaseBlocking,
423
+ unmet: runtime.supportFloor.unmet,
424
+ },
425
+ surfaces: runtime.surfaces.map((surface) => ({
426
+ id: surface.id,
427
+ expected: surface.expected,
428
+ applicability: surface.applicability,
429
+ detected: surface.evidence.host_present ?? "unknown",
430
+ status: surface.status,
431
+ releaseBlocking: surface.releaseBlocking,
432
+ })),
433
+ blockerCount: runtime.blockers.length,
434
+ counts: runtime.counts,
435
+ actionCount: runtime.actionCount,
436
+ })),
437
+ };
438
+ }
439
+ //# sourceMappingURL=lifecycleSnapshot.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lifecycleSnapshot.js","sourceRoot":"","sources":["../../src/runtime/lifecycleSnapshot.ts"],"names":[],"mappings":"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"}