Add bounded public member inspection through shared query scopes

This commit is contained in:
Timothy J. Aveni
2026-09-22 18:11:54 -07:00
parent bcc915d597
commit c5e79ae3c9
5 changed files with 282 additions and 52 deletions
+43 -39
View File
@@ -1,3 +1,4 @@
import { compileInspectionTemplates } from "./inspection.js";
import { portableValueSchema } from "../bindings/portable.js";
import { ExecutionPlanError, hexDigest, type ExecutionPlan } from "./plan.js";
import type { ValueType } from "../capability-model/types.js";
@@ -26,44 +27,47 @@ export function compileQueryProgram(plan: ExecutionPlan): unknown {
return {
codec: "camino-query-program-v1",
plan: plan.digest,
queries: plan.definition.queries.map(({ id, query, admittedOperations }) => {
const checked = query.checked;
return {
id,
...(checked.declaration.fragment && !checked.declaration.fragment.admission
? {
fragment: {
package: query.packageRevisionId,
id: checked.declaration.id,
digest: checked.definitionDigest,
},
}
: {}),
placement: checked.declaration.placement?.kind ?? "remote",
source:
checked.declaration.placement?.kind === "local"
? JSON.stringify([query.packageRevisionId, checked.declaration.placement.sourceQueryId])
: null,
root: checked.declaration.root,
atoms: query.rootAtoms,
variables: portableValueSchema(checked.variables),
defaults: checked.variableDefaults,
selection: lowerTypes(checked.selection),
budgets: checked.declaration.budgets,
fields: query.fields.map((field) => {
const member = interfaces
.find((i) => i.revisionId === field.interfaceRevisionId)!
.members.find((m) => m.id === field.memberId)!;
return {
atom: field.atomId,
interface: field.interfaceRevisionId,
member: field.memberId,
name: member.displayName,
operation: JSON.stringify([field.atomId, field.interfaceRevisionId, field.getter]),
};
}),
admittedOperations,
};
}),
queries: [
...compileInspectionTemplates(plan).queries,
...plan.definition.queries.map(({ id, query, admittedOperations }) => {
const checked = query.checked;
return {
id,
...(checked.declaration.fragment && !checked.declaration.fragment.admission
? {
fragment: {
package: query.packageRevisionId,
id: checked.declaration.id,
digest: checked.definitionDigest,
},
}
: {}),
placement: checked.declaration.placement?.kind ?? "remote",
source:
checked.declaration.placement?.kind === "local"
? JSON.stringify([query.packageRevisionId, checked.declaration.placement.sourceQueryId])
: null,
root: checked.declaration.root,
atoms: query.rootAtoms,
variables: portableValueSchema(checked.variables),
defaults: checked.variableDefaults,
selection: lowerTypes(checked.selection),
budgets: checked.declaration.budgets,
fields: query.fields.map((field) => {
const member = interfaces
.find((i) => i.revisionId === field.interfaceRevisionId)!
.members.find((m) => m.id === field.memberId)!;
return {
atom: field.atomId,
interface: field.interfaceRevisionId,
member: field.memberId,
name: member.displayName,
operation: JSON.stringify([field.atomId, field.interfaceRevisionId, field.getter]),
};
}),
admittedOperations,
};
}),
],
};
}