Implement rule-based Studio creation, usable canvas and Reader, and consolidated package authoring

This commit is contained in:
Timothy J. Aveni
2026-09-23 00:53:01 -07:00
parent 8455599c3c
commit abd5d57fb9
6 changed files with 22 additions and 12 deletions
@@ -71,17 +71,10 @@ export async function executionScaffold(
outputs = { nixpkgs, flake-utils, helpers, ... }:
flake-utils.lib.eachDefaultSystem (system: let
pkgs = import nixpkgs { inherit system; };
camino = import (helpers + "/quixos-package-helpers.nix");
in {
devShells.default = (import (helpers + "/quixos-package-helpers.nix")).mkCaminoYarnShell { inherit pkgs; };
quixosPackages.checkedArtifacts = context:
import ./package.nix { inherit pkgs context; camino = import (helpers + "/quixos-package-helpers.nix"); };
});
}
`,
);
create(
"package.nix",
`{ pkgs, camino, context }:
let
plan = builtins.fromJSON (builtins.readFile context.plan);
package = pkgs.lib.findFirst (entry: entry.revision == context.packageRevisionId)
@@ -103,6 +96,8 @@ in camino.assembleCaminoPackage {
}) ++ pkgs.lib.optional (modules != {}) (camino.mkCaminoReactPackage {
inherit pkgs context dependencies modules; src = ./.;
});
};
});
}
`,
);
+2 -1
View File
@@ -210,7 +210,8 @@ export const editStructure = (source: string, edit: StructuralEdit): string => {
return source;
}
const identifiers = node.children.filter((entry) => entry.kind === "identifier");
const position = identifiers[identifiers.length - 1].end;
const targetArguments = node.children.find((entry) => entry.kind === "typeArguments");
const position = targetArguments?.end ?? identifiers[identifiers.length - 1].end;
result = applySourceEdits(source, [{ start: position, end: position, text: ` id ${JSON.stringify(edit.id)}` }]);
} else if (edit.operation === "append") {
const closing = syntax.tokens.find((token) => token.kind === "RBRACE" && token.end === node.end);
+1 -1
View File
@@ -158,7 +158,7 @@ export function compileKernelProgram(plan: ExecutionPlan): unknown {
interface: bound.interfaceRevisionId,
...(!bound.receiver &&
!bound.via &&
(requirement.operations ?? iface.members.flatMap(m=>m.operations.map(o=>o.id))).every(
(requirement.operations ?? iface.members.flatMap((m) => m.operations.map((o) => o.id))).every(
(id) => iface.members.flatMap((m) => m.operations).find((o) => o.id === id)?.scope === "class",
)
? { staticAtom: operation.atomId }