githolon 0.86.0 → 0.87.0
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.
- package/dist/cli.mjs +126 -39
- package/package.json +3 -3
package/dist/cli.mjs
CHANGED
|
@@ -5628,16 +5628,17 @@ async function runOfflineLegs(eng, ws, lawHash, legs, frameworkHash, deployUsda)
|
|
|
5628
5628
|
lines.push(...v.legs);
|
|
5629
5629
|
if (!v.ok) return done(false, lines, v.error);
|
|
5630
5630
|
}
|
|
5631
|
-
|
|
5631
|
+
const rbLegs = legs.relationBootstraps ?? (legs.relationBootstrap !== void 0 ? [legs.relationBootstrap] : []);
|
|
5632
|
+
for (const rbLeg of rbLegs) {
|
|
5632
5633
|
let rbWs = ws;
|
|
5633
|
-
if (
|
|
5634
|
+
if (rbLeg.bornContext === void 0 && deployUsda !== void 0) {
|
|
5634
5635
|
rbWs = await mountIsolatedProofWs(eng, ws, lawHash, deployUsda);
|
|
5635
5636
|
}
|
|
5636
|
-
const v = runRelationBootstrapLeg(eng, rbWs, lawHash,
|
|
5637
|
+
const v = runRelationBootstrapLeg(eng, rbWs, lawHash, rbLeg);
|
|
5637
5638
|
lines.push(...v.legs);
|
|
5638
5639
|
if (!v.ok) return done(false, lines, v.error);
|
|
5639
5640
|
}
|
|
5640
|
-
if (legs.directiveId === void 0 && birthLegs.length === 0 &&
|
|
5641
|
+
if (legs.directiveId === void 0 && birthLegs.length === 0 && rbLegs.length === 0) {
|
|
5641
5642
|
lines.push(`\u2713 ${legs.domain} \u2014 compile-valid (the law compiled; no standalone create or .births() to prove a write)${kinds.length ? ` [${kinds.join(", ")}]` : ""}`);
|
|
5642
5643
|
}
|
|
5643
5644
|
return done(true, lines);
|
|
@@ -5873,6 +5874,15 @@ function runRelationBootstrapLeg(eng, ws, lawHash, rb) {
|
|
|
5873
5874
|
}
|
|
5874
5875
|
const seatDesc = speculative ? `replayed the declared seed ${rb.domain}/${rb.grantDirectiveId} (seats [${(rb.seedWritesRelations ?? [grantedRelation]).join(", ")}]) on ${ACTOR} \u2014 deferring to the real gate to authorize "${rb.relation}"` : `${rb.domain}/${rb.grantDirectiveId} granted "${grantedRelation}" to ${ACTOR} (${rb.via})${computed ? ` \u21D2 satisfies "${rb.relation}" via the rewrite` : ``}`;
|
|
5875
5876
|
lines.push(`\u2713 relation bootstrap (${speculative ? "seed" : "grant"}) \u2014 ${seatDesc}`);
|
|
5877
|
+
for (const setup of rb.preconditionSetups ?? []) {
|
|
5878
|
+
const setupPayload = { ...setup.payload };
|
|
5879
|
+
for (const f of setup.autoStamped) setupPayload[f] = stamp;
|
|
5880
|
+
const setupRes = author(eng, ws, rb.domain, setup.directiveId, setupPayload, lawHash, actorOpts);
|
|
5881
|
+
if (setupRes.ok === false) {
|
|
5882
|
+
return done(false, `relation bootstrap precondition ${rb.domain}/${setup.directiveId} refused: ${setupRes.error ?? "unknown"} \u2014 the parent state ${rb.gatedDirectiveId} requires could not be established (is ${setup.directiveId} gated by a relation not seated by this leg? it needs "${setup.requiresRelation ?? rb.relation}")`);
|
|
5883
|
+
}
|
|
5884
|
+
lines.push(`\u2713 relation bootstrap (precondition) \u2014 ${rb.domain}/${setup.directiveId} established before ${rb.gatedDirectiveId} (real parent state, not a shell)`);
|
|
5885
|
+
}
|
|
5876
5886
|
const gatedPayload = { ...rb.gatedPayload };
|
|
5877
5887
|
for (const f of rb.gatedAutoStamped) gatedPayload[f] = stamp;
|
|
5878
5888
|
if (rb.gatedMintField !== void 0 && rb.gatedAggregateId !== void 0) gatedPayload[rb.gatedMintField] = mintId(eng, rb.gatedAggregateId);
|
|
@@ -5984,6 +5994,62 @@ var init_proof_offline = __esm({
|
|
|
5984
5994
|
}
|
|
5985
5995
|
});
|
|
5986
5996
|
|
|
5997
|
+
// src/mountability.ts
|
|
5998
|
+
var mountability_exports = {};
|
|
5999
|
+
__export(mountability_exports, {
|
|
6000
|
+
assertCompiledMountable: () => assertCompiledMountable
|
|
6001
|
+
});
|
|
6002
|
+
import { existsSync as existsSync11, readdirSync as readdirSync5, readFileSync as readFileSync13 } from "node:fs";
|
|
6003
|
+
import { join as join13 } from "node:path";
|
|
6004
|
+
async function assertCompiledMountable(cwd, cloud) {
|
|
6005
|
+
const buildDir = join13(cwd, "build");
|
|
6006
|
+
if (!existsSync11(buildDir)) return { ok: true, checked: [] };
|
|
6007
|
+
const deploys = readdirSync5(buildDir).filter((f) => f.endsWith(".deploy.json"));
|
|
6008
|
+
if (deploys.length === 0) return { ok: true, checked: [] };
|
|
6009
|
+
let mount;
|
|
6010
|
+
let engine;
|
|
6011
|
+
try {
|
|
6012
|
+
mount = await Promise.resolve().then(() => (init_local_holon(), local_holon_exports));
|
|
6013
|
+
engine = await Promise.resolve().then(() => (init_engine(), engine_exports));
|
|
6014
|
+
} catch {
|
|
6015
|
+
return { ok: true, checked: [], skipped: "the vendored kernel engine is not present \u2014 mountability gate skipped (compile still emitted the package)" };
|
|
6016
|
+
}
|
|
6017
|
+
const { holonEngine: holonEngine2, mountFresh: mountFresh2 } = mount;
|
|
6018
|
+
const { author: author2, installPayload: installPayload2, sha256hex: sha256hex2 } = engine;
|
|
6019
|
+
const checked = [];
|
|
6020
|
+
for (const f of deploys) {
|
|
6021
|
+
let deploy3;
|
|
6022
|
+
try {
|
|
6023
|
+
deploy3 = JSON.parse(readFileSync13(join13(buildDir, f), "utf8"));
|
|
6024
|
+
} catch {
|
|
6025
|
+
continue;
|
|
6026
|
+
}
|
|
6027
|
+
if (typeof deploy3.packageUsda !== "string" || deploy3.packageUsda.length === 0) continue;
|
|
6028
|
+
const name = deploy3.summary?.name ?? f.replace(/\.deploy\.json$/, "");
|
|
6029
|
+
const ws = `mountcheck-${name}`.replace(/[^A-Za-z0-9_-]/g, "-").slice(0, 100);
|
|
6030
|
+
try {
|
|
6031
|
+
const lh = await sha256hex2(deploy3.packageUsda);
|
|
6032
|
+
const { eng } = await holonEngine2(cloud, deploy3, `${ws}-eng`);
|
|
6033
|
+
await mountFresh2(eng, ws);
|
|
6034
|
+
author2(eng, ws, "bootstrap", "installDomain", installPayload2(eng.hashes.nomos, eng.nomosPkg, `${ws}-eng`), "");
|
|
6035
|
+
const r = author2(eng, ws, "nomos", "installDomain", installPayload2(lh, deploy3.packageUsda, `${ws}-eng`), eng.hashes.nomos);
|
|
6036
|
+
if (r && r.ok === false) {
|
|
6037
|
+
return { ok: false, checked, error: `${name}: the read router REFUSED the compiled law at mount \u2014 ${r.error ?? "install refused"}` };
|
|
6038
|
+
}
|
|
6039
|
+
checked.push(name);
|
|
6040
|
+
} catch (e) {
|
|
6041
|
+
const msg = e instanceof Error ? e.message : String(e);
|
|
6042
|
+
return { ok: false, checked, error: `${name}: the compiled package is NOT mountable on the real kernel \u2014 ${msg}` };
|
|
6043
|
+
}
|
|
6044
|
+
}
|
|
6045
|
+
return { ok: true, checked };
|
|
6046
|
+
}
|
|
6047
|
+
var init_mountability = __esm({
|
|
6048
|
+
"src/mountability.ts"() {
|
|
6049
|
+
"use strict";
|
|
6050
|
+
}
|
|
6051
|
+
});
|
|
6052
|
+
|
|
5987
6053
|
// src/mcp.ts
|
|
5988
6054
|
var mcp_exports = {};
|
|
5989
6055
|
__export(mcp_exports, {
|
|
@@ -5996,7 +6062,7 @@ __export(mcp_exports, {
|
|
|
5996
6062
|
toolEvolvePreview: () => toolEvolvePreview
|
|
5997
6063
|
});
|
|
5998
6064
|
import { spawnSync as spawnSync5 } from "node:child_process";
|
|
5999
|
-
import { existsSync as
|
|
6065
|
+
import { existsSync as existsSync12 } from "node:fs";
|
|
6000
6066
|
import { dirname as dirname8, isAbsolute as isAbsolute2, resolve as resolve3 } from "node:path";
|
|
6001
6067
|
function resolveConfig(config) {
|
|
6002
6068
|
const arg = config ?? "nomos.package.mjs";
|
|
@@ -6075,7 +6141,7 @@ function extractDispositions(humanReport) {
|
|
|
6075
6141
|
}
|
|
6076
6142
|
function toolCheck(args) {
|
|
6077
6143
|
const { configPath } = resolveConfig(args.config);
|
|
6078
|
-
if (!
|
|
6144
|
+
if (!existsSync12(configPath)) {
|
|
6079
6145
|
return { text: `nomos_check: config not found: ${configPath}`, isError: true };
|
|
6080
6146
|
}
|
|
6081
6147
|
const extra = args.against !== void 0 ? ["--against", args.against] : [];
|
|
@@ -6092,11 +6158,11 @@ ${JSON.stringify(payload, null, 2)}`, isError: false };
|
|
|
6092
6158
|
}
|
|
6093
6159
|
function toolEvolvePreview(args) {
|
|
6094
6160
|
const { configPath } = resolveConfig(args.config);
|
|
6095
|
-
if (!
|
|
6161
|
+
if (!existsSync12(configPath)) {
|
|
6096
6162
|
return { text: `nomos_evolve_preview: config not found: ${configPath}`, isError: true };
|
|
6097
6163
|
}
|
|
6098
6164
|
const againstPath = isAbsolute2(args.against) ? args.against : resolve3(dirname8(configPath), args.against);
|
|
6099
|
-
const priorArg =
|
|
6165
|
+
const priorArg = existsSync12(againstPath) ? againstPath : args.against;
|
|
6100
6166
|
const jsonRun = runCheckJson(configPath, ["--against", priorArg]);
|
|
6101
6167
|
if (jsonRun.error !== void 0) {
|
|
6102
6168
|
return {
|
|
@@ -6259,8 +6325,8 @@ __export(harness_exports, {
|
|
|
6259
6325
|
harnessInstall: () => harnessInstall,
|
|
6260
6326
|
looksLikeStaleRuntime: () => looksLikeStaleRuntime
|
|
6261
6327
|
});
|
|
6262
|
-
import { existsSync as
|
|
6263
|
-
import { join as
|
|
6328
|
+
import { existsSync as existsSync13, readFileSync as readFileSync14, writeFileSync as writeFileSync8 } from "node:fs";
|
|
6329
|
+
import { join as join15 } from "node:path";
|
|
6264
6330
|
import { randomBytes as randomBytes3 } from "node:crypto";
|
|
6265
6331
|
function looksLikeStaleRuntime(msg) {
|
|
6266
6332
|
return /\bbbox param\b|missing.*param|non-numeric|unknown (op|query op)|unsupported op|unexpected (field|key)|no such op/i.test(
|
|
@@ -6270,19 +6336,19 @@ function looksLikeStaleRuntime(msg) {
|
|
|
6270
6336
|
async function harnessInstall(opts) {
|
|
6271
6337
|
const { deploy: deployPaths, workspace, out: outPath } = opts;
|
|
6272
6338
|
if (deployPaths.length === 0) die("no --deploy JSON path(s) given");
|
|
6273
|
-
const runtimeDir = opts.runtime || process.env["NOMOS_OFFLINE_RUNTIME"] ||
|
|
6339
|
+
const runtimeDir = opts.runtime || process.env["NOMOS_OFFLINE_RUNTIME"] || join15(configDir(), "runtime");
|
|
6274
6340
|
const refreshed = await refreshRuntimeDir(cloudBase(), runtimeDir);
|
|
6275
6341
|
if (refreshed) process.stderr.write(`harness-install: refreshed runtime cache from the cloud \u2192 ${runtimeDir}
|
|
6276
6342
|
`);
|
|
6277
|
-
const wasmFile =
|
|
6278
|
-
const pkgsFile =
|
|
6279
|
-
if (!
|
|
6343
|
+
const wasmFile = join15(runtimeDir, "holon.wasm");
|
|
6344
|
+
const pkgsFile = join15(runtimeDir, "packages.json");
|
|
6345
|
+
if (!existsSync13(wasmFile) || !existsSync13(pkgsFile)) {
|
|
6280
6346
|
die(
|
|
6281
6347
|
`runtime cache missing at ${runtimeDir} (holon.wasm + packages.json). Warm it once with a \`githolon\` run (it fetches + caches the runtime), then re-run offline.`
|
|
6282
6348
|
);
|
|
6283
6349
|
}
|
|
6284
|
-
const wasm =
|
|
6285
|
-
const pkgs = JSON.parse(
|
|
6350
|
+
const wasm = readFileSync14(wasmFile);
|
|
6351
|
+
const pkgs = JSON.parse(readFileSync14(pkgsFile, "utf8"));
|
|
6286
6352
|
const guarded = async (fn) => {
|
|
6287
6353
|
try {
|
|
6288
6354
|
return await fn();
|
|
@@ -6304,8 +6370,8 @@ async function harnessInstall(opts) {
|
|
|
6304
6370
|
await guarded(() => author(eng, workspace, "bootstrap", "installDomain", installPayload(eng.hashes.nomos, eng.nomosPkg, "nomos-test-harness"), ""));
|
|
6305
6371
|
const lawHashes = [];
|
|
6306
6372
|
for (const p of deployPaths) {
|
|
6307
|
-
if (!
|
|
6308
|
-
const deploy3 = JSON.parse(
|
|
6373
|
+
if (!existsSync13(p)) die(`deploy JSON not found: ${p} \u2014 run \`npx githolon compile\` first`);
|
|
6374
|
+
const deploy3 = JSON.parse(readFileSync14(p, "utf8"));
|
|
6309
6375
|
const usda = deploy3.packageUsda;
|
|
6310
6376
|
if (typeof usda !== "string" || !usda.startsWith("#usda")) die(`${p} has no #usda packageUsda`);
|
|
6311
6377
|
const lawHash = await sha256hex(usda);
|
|
@@ -7396,8 +7462,8 @@ var scene_exports = {};
|
|
|
7396
7462
|
__export(scene_exports, {
|
|
7397
7463
|
scene: () => scene
|
|
7398
7464
|
});
|
|
7399
|
-
import { existsSync as
|
|
7400
|
-
import { join as
|
|
7465
|
+
import { existsSync as existsSync14, mkdirSync as mkdirSync6, writeFileSync as writeFileSync9 } from "node:fs";
|
|
7466
|
+
import { join as join16, resolve as resolve4 } from "node:path";
|
|
7401
7467
|
import { createHash as createHash5 } from "node:crypto";
|
|
7402
7468
|
import git3 from "isomorphic-git";
|
|
7403
7469
|
async function walkChain2(eng, ws) {
|
|
@@ -7418,8 +7484,8 @@ async function projectOnce(cloud, target, isDir, name) {
|
|
|
7418
7484
|
const { eng } = await holonEngine(cloud, void 0, "githolon-scene");
|
|
7419
7485
|
const SOURCE3 = "source";
|
|
7420
7486
|
if (isDir) {
|
|
7421
|
-
const gitDir =
|
|
7422
|
-
if (!
|
|
7487
|
+
const gitDir = existsSync14(join16(target, ".git")) ? join16(target, ".git") : target;
|
|
7488
|
+
if (!existsSync14(join16(gitDir, "HEAD"))) throw new Error(`${target} is not a git repo (no HEAD)`);
|
|
7423
7489
|
await mountFresh(eng, SOURCE3);
|
|
7424
7490
|
eng.preopen.dir.contents.get("ws").contents.get(SOURCE3).contents.set("nomos.git", readTreeFromDisk(gitDir));
|
|
7425
7491
|
} else {
|
|
@@ -7478,7 +7544,7 @@ async function projectOnce(cloud, target, isDir, name) {
|
|
|
7478
7544
|
}
|
|
7479
7545
|
async function scene(target, opts) {
|
|
7480
7546
|
const cloud = cloudBase(opts.cloud);
|
|
7481
|
-
const isDir =
|
|
7547
|
+
const isDir = existsSync14(target) || target.includes("/") || target.startsWith(".");
|
|
7482
7548
|
const name = isDir ? (resolve4(target).split("/").filter(Boolean).pop() ?? "scene").replace(/\.git$/, "") : target;
|
|
7483
7549
|
out11(`scene \u2014 ${name} (${isDir ? resolve4(target) : `${cloud} :: ${target}`})`);
|
|
7484
7550
|
let first, second;
|
|
@@ -7498,10 +7564,10 @@ async function scene(target, opts) {
|
|
|
7498
7564
|
err11(`the emitted stage violates the portable profile: ${violations.join("; ")}`);
|
|
7499
7565
|
return 1;
|
|
7500
7566
|
}
|
|
7501
|
-
const outDir = resolve4(opts.out ??
|
|
7567
|
+
const outDir = resolve4(opts.out ?? join16("scene", name));
|
|
7502
7568
|
mkdirSync6(outDir, { recursive: true });
|
|
7503
|
-
const usdaPath =
|
|
7504
|
-
const usdzPath =
|
|
7569
|
+
const usdaPath = join16(outDir, `${name}.usda`);
|
|
7570
|
+
const usdzPath = join16(outDir, `${name}.usdz`);
|
|
7505
7571
|
const usdaBytes = new TextEncoder().encode(first.usda);
|
|
7506
7572
|
writeFileSync9(usdaPath, usdaBytes);
|
|
7507
7573
|
writeFileSync9(usdzPath, usdzPack([[`${name}.usda`, usdaBytes]]));
|
|
@@ -7589,10 +7655,10 @@ var init_dlq = __esm({
|
|
|
7589
7655
|
});
|
|
7590
7656
|
|
|
7591
7657
|
// src/cli.ts
|
|
7592
|
-
import { existsSync as
|
|
7658
|
+
import { existsSync as existsSync15, readdirSync as readdirSync6, readFileSync as readFileSync15 } from "node:fs";
|
|
7593
7659
|
import { spawnSync as spawnSync6 } from "node:child_process";
|
|
7594
7660
|
import { createRequire as createRequire3 } from "node:module";
|
|
7595
|
-
import { dirname as dirname9, join as
|
|
7661
|
+
import { dirname as dirname9, join as join17, resolve as resolve5 } from "node:path";
|
|
7596
7662
|
import { pathToFileURL as pathToFileURL5, fileURLToPath } from "node:url";
|
|
7597
7663
|
|
|
7598
7664
|
// src/generate.ts
|
|
@@ -9223,20 +9289,20 @@ async function runProof(args) {
|
|
|
9223
9289
|
let proofPath;
|
|
9224
9290
|
if (explicit !== void 0) {
|
|
9225
9291
|
proofPath = resolve5(process.cwd(), explicit);
|
|
9226
|
-
if (!
|
|
9292
|
+
if (!existsSync15(proofPath)) return refuse(`proof not found: ${proofPath} \u2014 run \`githolon compile\` to (re)generate it`);
|
|
9227
9293
|
} else {
|
|
9228
|
-
const buildDir =
|
|
9229
|
-
if (!
|
|
9294
|
+
const buildDir = join17(process.cwd(), "build");
|
|
9295
|
+
if (!existsSync15(buildDir)) {
|
|
9230
9296
|
return refuse("no build/ directory here \u2014 run `githolon compile` first (every compile generates build/<name>.proof.mts from your law)");
|
|
9231
9297
|
}
|
|
9232
|
-
const proofs =
|
|
9298
|
+
const proofs = readdirSync6(buildDir).filter((f) => f.endsWith(".proof.mts"));
|
|
9233
9299
|
if (proofs.length === 0) {
|
|
9234
9300
|
return refuse("no build/*.proof.mts found \u2014 run `githolon compile` (every compile generates the proof from your law; the compile summary says why when it can't)");
|
|
9235
9301
|
}
|
|
9236
9302
|
if (proofs.length > 1) {
|
|
9237
9303
|
return refuse(`found ${proofs.length} proofs (${proofs.join(", ")}) \u2014 name one: githolon proof build/<name>.proof.mts`);
|
|
9238
9304
|
}
|
|
9239
|
-
proofPath =
|
|
9305
|
+
proofPath = join17(buildDir, proofs[0]);
|
|
9240
9306
|
}
|
|
9241
9307
|
if (!live) {
|
|
9242
9308
|
try {
|
|
@@ -9249,14 +9315,14 @@ async function runProof(args) {
|
|
|
9249
9315
|
}
|
|
9250
9316
|
const resolvePkgDir = (name, fromDir) => {
|
|
9251
9317
|
try {
|
|
9252
|
-
return dirname9(createRequire3(pathToFileURL5(
|
|
9318
|
+
return dirname9(createRequire3(pathToFileURL5(join17(fromDir, "noop.js"))).resolve(`${name}/package.json`));
|
|
9253
9319
|
} catch {
|
|
9254
9320
|
return void 0;
|
|
9255
9321
|
}
|
|
9256
9322
|
};
|
|
9257
9323
|
const dslDir = (() => {
|
|
9258
9324
|
try {
|
|
9259
|
-
return dirname9(createRequire3(pathToFileURL5(
|
|
9325
|
+
return dirname9(createRequire3(pathToFileURL5(join17(process.cwd(), "noop.js"))).resolve("@githolon/dsl/package.json"));
|
|
9260
9326
|
} catch {
|
|
9261
9327
|
try {
|
|
9262
9328
|
return dirname9(createRequire3(import.meta.url).resolve("@githolon/dsl/package.json"));
|
|
@@ -9269,9 +9335,9 @@ async function runProof(args) {
|
|
|
9269
9335
|
if (tsxDir === void 0) {
|
|
9270
9336
|
return refuse("tsx not found \u2014 add @githolon/dsl to your project's dependencies (tsx rides along) and npm install");
|
|
9271
9337
|
}
|
|
9272
|
-
const tsxPkg = JSON.parse(
|
|
9338
|
+
const tsxPkg = JSON.parse(readFileSync15(join17(tsxDir, "package.json"), "utf8"));
|
|
9273
9339
|
const tsxBinRel = typeof tsxPkg.bin === "string" ? tsxPkg.bin : tsxPkg.bin?.["tsx"];
|
|
9274
|
-
const tsxCli =
|
|
9340
|
+
const tsxCli = join17(tsxDir, tsxBinRel ?? "dist/cli.mjs");
|
|
9275
9341
|
console.log("githolon proof --live \u2014 the full cloud loop (throwaway workspace, retired on exit" + (keep ? "; --keep: kept" : "") + ")");
|
|
9276
9342
|
const { wsCreate: wsCreate2, wsRetire: wsRetire2 } = await Promise.resolve().then(() => (init_cloud(), cloud_exports));
|
|
9277
9343
|
const { resolveGovernancePrincipal: resolveGovernancePrincipal2 } = await Promise.resolve().then(() => (init_governance(), governance_exports));
|
|
@@ -9377,7 +9443,28 @@ async function main(argv) {
|
|
|
9377
9443
|
return 0;
|
|
9378
9444
|
}
|
|
9379
9445
|
if (argv[0] === "compile") {
|
|
9380
|
-
|
|
9446
|
+
const status2 = runCompile(argv.slice(1));
|
|
9447
|
+
if (status2 !== 0) return status2;
|
|
9448
|
+
if (argv.includes("--no-mount-check")) return status2;
|
|
9449
|
+
try {
|
|
9450
|
+
const { assertCompiledMountable: assertCompiledMountable2 } = await Promise.resolve().then(() => (init_mountability(), mountability_exports));
|
|
9451
|
+
const { cloudBase: cloudBase2 } = await Promise.resolve().then(() => (init_cloud(), cloud_exports));
|
|
9452
|
+
const v = await assertCompiledMountable2(process.cwd(), cloudBase2());
|
|
9453
|
+
if (v.skipped !== void 0) process.stderr.write(`note: ${v.skipped}
|
|
9454
|
+
`);
|
|
9455
|
+
else if (!v.ok) {
|
|
9456
|
+
process.stderr.write(`
|
|
9457
|
+
\u2717 compile emitted an UNMOUNTABLE package \u2014 ${v.error}
|
|
9458
|
+
(compile-valid must mean mountable; fix the law or re-run with --no-mount-check to emit anyway)
|
|
9459
|
+
`);
|
|
9460
|
+
return 1;
|
|
9461
|
+
} else if (v.checked.length > 0) process.stdout.write(` mountable \u2713 ${v.checked.join(", ")} mount on the real read router
|
|
9462
|
+
`);
|
|
9463
|
+
} catch (e) {
|
|
9464
|
+
process.stderr.write(`note: mountability gate could not run (${e instanceof Error ? e.message : e}) \u2014 package emitted
|
|
9465
|
+
`);
|
|
9466
|
+
}
|
|
9467
|
+
return status2;
|
|
9381
9468
|
}
|
|
9382
9469
|
if (argv[0] === "check") {
|
|
9383
9470
|
return runCheck(argv.slice(1));
|
|
@@ -9473,7 +9560,7 @@ usage: githolon cloud dev [--port <n>] [--data <dir>] [--ephemeral]
|
|
|
9473
9560
|
resolve5(here, "../../../cloud/dev-server/server.mjs"),
|
|
9474
9561
|
resolve5(process.cwd(), "cloud/dev-server/server.mjs")
|
|
9475
9562
|
];
|
|
9476
|
-
const serverPath = candidates.find((p) =>
|
|
9563
|
+
const serverPath = candidates.find((p) => existsSync15(p));
|
|
9477
9564
|
if (!serverPath) {
|
|
9478
9565
|
process.stderr.write("error: dev-server not found \u2014 reinstall `githolon` or run `npm run build` in the cli package\n");
|
|
9479
9566
|
return 1;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "githolon",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.87.0",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"description": "githolon — the Nomos developer CLI: Rails-style generators for @githolon/dsl domains + the package compiler. Kernel-independent.",
|
|
6
6
|
"license": "SEE LICENSE IN LICENSE.md",
|
|
@@ -29,8 +29,8 @@
|
|
|
29
29
|
},
|
|
30
30
|
"dependencies": {
|
|
31
31
|
"@bjorn3/browser_wasi_shim": "0.4.2",
|
|
32
|
-
"@githolon/client": "^0.
|
|
33
|
-
"@githolon/dsl": "^0.
|
|
32
|
+
"@githolon/client": "^0.87.0",
|
|
33
|
+
"@githolon/dsl": "^0.87.0",
|
|
34
34
|
"isomorphic-git": "^1.38.4"
|
|
35
35
|
},
|
|
36
36
|
"devDependencies": {
|