Skip to content

Commit 04c198e

Browse files
committed
fix: preserve capability and catalog invariants
1 parent ade56a6 commit 04c198e

20 files changed

Lines changed: 136 additions & 64 deletions

docs/product-catalog.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -680,10 +680,10 @@
680680
"mcp_resource_templates": 11
681681
},
682682
"digests": {
683-
"tools_sha256": "b37a5ba0db422402418686d1361fa1bdbdf70ef456f7683fda540c04c8760100",
683+
"tools_sha256": "80d39f080e18eea6fbb1522e589ea33d305f33a77542a21638cfbb29ccad1c24",
684684
"prompts_sha256": "3886a3bf55a448def79e3eb429e6a56eb2ba075423c5cb1e5747642b389ef8fe",
685685
"resources_sha256": "e0e872276ebf6f88e916ef24930a99eed27ce4c93e494e60820e9bd8cc8497c3",
686-
"combined_sha256": "531d7e1c583aebd18306ad6d136418a43cfd2e0d215cf39c8224ee836ac76e21",
686+
"combined_sha256": "2b9bd45a5c8c53a337a0cbf535ae9ba81f49ef971aeb6953f66c8e4ab08f92cf",
687687
"providers_sha256": "7446b51788734ebf6f4f702e3a5a8c9f0b61967490c245f30bd37b2060827e6b"
688688
}
689689
}

docs/verification/managed-conformance-manifest.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"schema_version": 1,
3-
"manifest_id": "ecm_1fde266c466ffd6dde6f171e702f2929fc19ab8afb9958d3ae11a518133740da",
3+
"manifest_id": "ecm_194d590d9c10d2fd18244ed32a0a8a2c35b68e725cc14e515c3898b7504290c1",
44
"verifier": {
55
"id": "rea-managed-conformance",
66
"version": "1"
@@ -14,7 +14,7 @@
1414
"skill_digests": [
1515
{
1616
"skill_id": "reverse-engineer-anything",
17-
"sha256": "44a7bc2732a693757d8c54a99362422111573fdb73bd61c562421c7787a87b1a"
17+
"sha256": "ae81b854f73a9775e5a4dd84a276e7d0d4d81b1a20040f2b9742060ace59e6e2"
1818
}
1919
],
2020
"claims": [

skills/reverse-engineer-anything/SKILL.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ description: Reverse engineer native, managed, Electron/JavaScript, packaged, an
44
metadata:
55
version: "23"
66
tool_count: 116
7-
catalog_digest: "531d7e1c583aebd18306ad6d136418a43cfd2e0d215cf39c8224ee836ac76e21"
7+
catalog_digest: "2b9bd45a5c8c53a337a0cbf535ae9ba81f49ef971aeb6953f66c8e4ab08f92cf"
88
---
99

1010
# REA

src/config/browserScenario.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -66,7 +66,7 @@ export const parseBrowserScenarioPolicy = (
6666
"REA_BROWSER_SCENARIO_ALLOWED_ENV_JSON",
6767
);
6868
if (!allowedEnvironment.ok) return allowedEnvironment;
69-
if (env.REA_BROWSER_SCENARIO_ENABLED === "false")
69+
if (env.REA_BROWSER_SCENARIO_ENABLED !== "true")
7070
return ok({ status: "disabled" });
7171
const [firstOrigin, ...remainingOrigins] = allowedOrigins.value;
7272
if (firstOrigin === undefined)

src/config/electronAutomation.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ export const parseElectronAutomationPolicy = (
2828
"REA_ELECTRON_AUTOMATE_APPLICATION_ROOTS_JSON",
2929
);
3030
if (!applicationRoots.ok) return applicationRoots;
31-
if (env.REA_ELECTRON_AUTOMATE_ENABLED === "false")
31+
if (env.REA_ELECTRON_AUTOMATE_ENABLED !== "true")
3232
return ok({ status: "disabled" });
3333
const [firstExecutableRoot, ...remainingExecutableRoots] =
3434
executableRoots.value;

src/config/javascriptReplay.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ export const parseJavaScriptReplayPolicy = (
1818
"REA_JAVASCRIPT_REPLAY_ROOTS_JSON",
1919
);
2020
if (!roots.ok) return roots;
21-
if (env.REA_JAVASCRIPT_REPLAY_ENABLED === "false")
21+
if (env.REA_JAVASCRIPT_REPLAY_ENABLED !== "true")
2222
return ok({ status: "disabled" });
2323
const [firstRoot, ...remainingRoots] = roots.value;
2424
if (firstRoot === undefined)

src/config/managedRuntime.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ export const parseManagedRuntimePolicy = (
1010
env: Environment,
1111
roots: readonly string[],
1212
): Result<ManagedRuntimePolicy, ConfigurationError> => {
13-
if (env.REA_MANAGED_RUNTIME_ENABLED === "false")
13+
if (env.REA_MANAGED_RUNTIME_ENABLED !== "true")
1414
return ok({ status: "disabled" });
1515
const [firstRoot, ...remainingRoots] = roots;
1616
if (firstRoot === undefined)

src/config/passiveObservation.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -126,7 +126,7 @@ const parseBrowserObservationPolicy = (
126126
32,
127127
);
128128
if (!origins.ok) return origins;
129-
if (env.REA_BROWSER_OBSERVE_ENABLED === "false")
129+
if (env.REA_BROWSER_OBSERVE_ENABLED !== "true")
130130
return ok({ status: "disabled" });
131131
const parsedEndpoints = requireFirst(
132132
endpoints.value,
@@ -157,7 +157,7 @@ const parseElectronObservationPolicy = (
157157
if (!endpoints.ok) return endpoints;
158158
const roots = parseElectronFileRoots(env.REA_ELECTRON_FILE_ROOTS_JSON);
159159
if (!roots.ok) return roots;
160-
if (env.REA_ELECTRON_OBSERVE_ENABLED === "false")
160+
if (env.REA_ELECTRON_OBSERVE_ENABLED !== "true")
161161
return ok({ status: "disabled" });
162162
const parsedEndpoints = requireFirst(
163163
endpoints.value,
@@ -198,7 +198,7 @@ const parseV8InspectorObservationPolicy = (
198198
32,
199199
);
200200
if (!origins.ok) return origins;
201-
if (env.REA_V8_INSPECTOR_OBSERVE_ENABLED === "false")
201+
if (env.REA_V8_INSPECTOR_OBSERVE_ENABLED !== "true")
202202
return ok({ status: "disabled" });
203203
const parsedEndpoints = requireFirst(
204204
endpoints.value,

src/config/processCapture.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ export const parseProcessExecutionPolicy = (
2828
"REA_PROCESS_ALLOWED_ENV_JSON",
2929
);
3030
if (!allowedEnvironment.ok) return allowedEnvironment;
31-
if (env.REA_PROCESS_CAPTURE_ENABLED === "false")
31+
if (env.REA_PROCESS_CAPTURE_ENABLED !== "true")
3232
return ok({ status: "disabled" });
3333
const parsedExecutables = requireRoots(
3434
executableRoots.value,

src/contracts/managedWorkflowToolContracts.ts

Lines changed: 27 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -96,26 +96,40 @@ export const managedNativeVerificationReferenceInputSchema = z
9696
}
9797
});
9898

99-
/** MCP references for projecting managed Evidence into an application graph. */
99+
const managedApplicationGraphReferenceFacts = {
100+
limits: projectManagedApplicationGraphInputSchema.shape.limits,
101+
} as const;
102+
103+
/** MCP references requiring at least one managed Evidence source. */
100104
export const managedApplicationGraphReferenceInputSchema = z
101-
.strictObject({
102-
managed_artifact_evidence_id: managedArtifactEvidenceIdSchema.optional(),
103-
managed_members_evidence_id: managedEvidenceIdSchema.optional(),
104-
managed_native_boundaries_evidence_id:
105-
managedBoundaryEvidenceIdSchema.optional(),
106-
limits: projectManagedApplicationGraphInputSchema.shape.limits,
107-
})
105+
.union([
106+
z.strictObject({
107+
...managedApplicationGraphReferenceFacts,
108+
managed_artifact_evidence_id: managedArtifactEvidenceIdSchema,
109+
managed_members_evidence_id: managedEvidenceIdSchema.optional(),
110+
managed_native_boundaries_evidence_id:
111+
managedBoundaryEvidenceIdSchema.optional(),
112+
}),
113+
z.strictObject({
114+
...managedApplicationGraphReferenceFacts,
115+
managed_artifact_evidence_id: managedArtifactEvidenceIdSchema.optional(),
116+
managed_members_evidence_id: managedEvidenceIdSchema,
117+
managed_native_boundaries_evidence_id:
118+
managedBoundaryEvidenceIdSchema.optional(),
119+
}),
120+
z.strictObject({
121+
...managedApplicationGraphReferenceFacts,
122+
managed_artifact_evidence_id: managedArtifactEvidenceIdSchema.optional(),
123+
managed_members_evidence_id: managedEvidenceIdSchema.optional(),
124+
managed_native_boundaries_evidence_id: managedBoundaryEvidenceIdSchema,
125+
}),
126+
])
108127
.superRefine((input, context) => {
109128
const ids = [
110129
input.managed_artifact_evidence_id,
111130
input.managed_members_evidence_id,
112131
input.managed_native_boundaries_evidence_id,
113132
].filter((id): id is string => id !== undefined);
114-
if (ids.length === 0)
115-
context.addIssue({
116-
code: "custom",
117-
message: "At least one managed Evidence ID is required",
118-
});
119133
if (new Set(ids).size !== ids.length)
120134
context.addIssue({
121135
code: "custom",

0 commit comments

Comments
 (0)