githolon 0.99.0 → 0.100.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.
Files changed (2) hide show
  1. package/dist/cli.mjs +66 -129
  2. package/package.json +3 -3
package/dist/cli.mjs CHANGED
@@ -6083,7 +6083,11 @@ async function runChildBirthLeg(eng, ws, lawHash, cb, frameworkHash) {
6083
6083
  const checks = downgraded.certChecks !== void 0 ? ` certChecks=${JSON.stringify(downgraded.certChecks)}` : "";
6084
6084
  lines.push(`\u26A0 child ${childWs} was born UNWARRANTED \u2014 ${String(downgraded.reason ?? "cert not seeded")}${checks}`);
6085
6085
  }
6086
- lines.push(`\u2713 child birth ${cb.parentDomain}/${cb.birthDirectiveId} \u2014 ${childWs} born (the offer-effect folded the child genesis through the child's OWN gate)`);
6086
+ if (cb.businessAggregateId !== void 0) {
6087
+ lines.push(`\u2713 birth(${cb.businessAggregateId}) \u2014 business facts became a durable holon`);
6088
+ } else {
6089
+ lines.push(`\u2713 child birth ${cb.parentDomain}/${cb.birthDirectiveId} \u2014 ${childWs} born (the offer-effect folded the child genesis through the child's OWN gate)`);
6090
+ }
6087
6091
  const installed = (hash) => {
6088
6092
  try {
6089
6093
  return qById(eng, childWs, `domain-installation:${hash}`).length > 0;
@@ -6097,7 +6101,11 @@ async function runChildBirthLeg(eng, ws, lawHash, cb, frameworkHash) {
6097
6101
  if (!installed(lawHash)) {
6098
6102
  return done(false, `the born child ${childWs} did not install the child law in-chain (domain-installation:${lawHash.slice(0, 12)}\u2026 absent) \u2014 the genesis nomos/installDomain did not fold (by-hash byte routing failed: does the parent fold this law?)`);
6099
6103
  }
6100
- lines.push(`\u2713 the born child installed the framework + child law IN-CHAIN (the genesis installDomain\xD72 folded)`);
6104
+ if (cb.businessAggregateId !== void 0) {
6105
+ lines.push(`\u2713 law travelled with ${cb.businessAggregateId} and admitted its first business fact`);
6106
+ } else {
6107
+ lines.push(`\u2713 the born child installed the framework + child law IN-CHAIN (the genesis installDomain\xD72 folded)`);
6108
+ }
6101
6109
  let seedRows = [];
6102
6110
  if (cb.childSeedInstanceId !== void 0) {
6103
6111
  try {
@@ -6116,7 +6124,9 @@ async function runChildBirthLeg(eng, ws, lawHash, cb, frameworkHash) {
6116
6124
  if ((cb.childSeedInstanceId !== void 0 || cb.childQuery !== void 0) && seedRows.length < 1) {
6117
6125
  return done(false, `the born child ${childWs} did not seed ${cb.childSeedAggregateId ?? "its genesis record"} (${cb.childSeedDirectiveId} produced no readable row) \u2014 the child genesis seed did not run`);
6118
6126
  }
6119
- lines.push(`\u2713 the born child's genesis seed ran \u2014 ${cb.childSeedDirectiveId} produced ${seedRows.length} readable ${cb.childSeedAggregateId ?? "row"}(s) in ${childWs}`);
6127
+ if (cb.businessAggregateId === void 0) {
6128
+ lines.push(`\u2713 the born child's genesis seed ran \u2014 ${cb.childSeedDirectiveId} produced ${seedRows.length} readable ${cb.childSeedAggregateId ?? "row"}(s) in ${childWs}`);
6129
+ }
6120
6130
  let verdict;
6121
6131
  try {
6122
6132
  verdict = verifyChainLocal(eng, childWs);
@@ -6126,7 +6136,11 @@ async function runChildBirthLeg(eng, ws, lawHash, cb, frameworkHash) {
6126
6136
  if (verdict.valid !== true) {
6127
6137
  return done(false, `the born child ${childWs} FAILED verify_chain at ${verdict.check ?? "?"}${verdict.atIndex !== void 0 ? ` (intent ${verdict.atIndex})` : ""}: ${verdict.error ?? "invalid"} \u2014 the child's own gate refused its genesis`);
6128
6138
  }
6129
- lines.push(`\u2713 verify_chain GREEN on the born child ${childWs} (${verdict.plansRerun ?? "?"} plans re-run \u2014 it self-validates from intent 0 through its OWN gate)`);
6139
+ if (cb.businessAggregateId !== void 0) {
6140
+ lines.push(`\u2713 full history replayed green locally (${verdict.plansRerun ?? "?"} plans re-run)`);
6141
+ } else {
6142
+ lines.push(`\u2713 verify_chain GREEN on the born child ${childWs} (${verdict.plansRerun ?? "?"} plans re-run \u2014 it self-validates from intent 0 through its OWN gate)`);
6143
+ }
6130
6144
  const bornEntry = (res.born ?? []).find((b) => b?.workspace === childWs);
6131
6145
  const packed = packBornChildren(eng, bornEntry === void 0 ? [] : [bornEntry]);
6132
6146
  const childPack = packed.find((b) => b.workspace === childWs);
@@ -6148,7 +6162,11 @@ async function runChildBirthLeg(eng, ws, lawHash, cb, frameworkHash) {
6148
6162
  return done(false, `the recovered child ${childWs} verified but its business root ${cb.childSeedInstanceId} was missing`);
6149
6163
  }
6150
6164
  }
6151
- lines.push(`\u2713 persistence + recovery \u2014 child custody packed, resident copy discarded, verify_chain GREEN and ${cb.childSeedInstanceId ?? cb.childSeedAggregateId ?? "the business root"} readable after reopen`);
6165
+ if (cb.businessAggregateId !== void 0) {
6166
+ lines.push(`\u2713 persistence + recovery \u2014 evicted, restored from durable custody, and ${cb.businessAggregateId} read back`);
6167
+ } else {
6168
+ lines.push(`\u2713 persistence + recovery \u2014 child custody packed, resident copy discarded, verify_chain GREEN and ${cb.childSeedInstanceId ?? cb.childSeedAggregateId ?? "the business root"} readable after reopen`);
6169
+ }
6152
6170
  return done(true);
6153
6171
  }
6154
6172
  function seatRelationAuthority(eng, ws, lawHash, rb, actor, stamp, lines, authorSecret, subjectActor = actor) {
@@ -6388,7 +6406,7 @@ async function runOfflineProofStandalone(proofPath, cloud, domain) {
6388
6406
  }
6389
6407
  const deployBody = JSON.parse(readFileSync7(deployFile, "utf8"));
6390
6408
  const lawHash = await sha256hex(deployBody.packageUsda);
6391
- console.log(`githolon proof \u2014 OFFLINE legs on a local holon (the cloud loop: githolon proof --live)`);
6409
+ console.log(`githolon proof \u2014 generated business proof in the real local engine`);
6392
6410
  const runtimeKind = legs.childBirth !== void 0 || (legs.childBirths?.length ?? 0) > 0 ? "test-mint" : "production";
6393
6411
  const { eng } = await holonEngine(cloud, deployBody, "githolon-proof", runtimeKind);
6394
6412
  const ws = "proof-offline";
@@ -6403,7 +6421,7 @@ async function runOfflineProofStandalone(proofPath, cloud, domain) {
6403
6421
  }
6404
6422
  console.log(`
6405
6423
  OFFLINE PROOF GREEN (${Math.round(v.ms)}ms) \u2014 the same legs rerun on every save in \`githolon dev\`.`);
6406
- console.log(`Deploy with confidence when ready: githolon ws create <ws> && githolon deploy <ws> (or the full cloud proof: githolon proof --live)`);
6424
+ console.log(`Run the same generated business proof against Nomos Cloud when ready: githolon proof --live`);
6407
6425
  return 0;
6408
6426
  }
6409
6427
  var keyHashOf, OFFLINE_PROOF_VERIFIER;
@@ -8823,7 +8841,7 @@ var HELP = {
8823
8841
  },
8824
8842
  proof: {
8825
8843
  usage: "githolon proof [build/<name>.proof.mts] [--domain <key>] [--live] [--keep]",
8826
- what: "Run the proof GENERATED from your law. DEFAULT: the OFFLINE legs on a LOCAL holon \u2014 the\nsame engine plane the cloud edge runs; no cloud workspace is touched (develop/play/understand\nhere, deploy with confidence after). --domain <key> proves a SPECIFIC domain of a multi-domain\npackage (offline; the default is the first). --live runs the full cloud loop (throwaway\nworkspace \u2192 deploy \u2192 offline write \u2192 admission \u2192 cloud reads \u2192 convergence). The throwaway is\ncreated REGISTERED (a signed createWorkspace at root \u2014 your principal needs creation authority\nthere) and RETIRED on every exit via the lawful retireOwnWorkspace; --keep keeps it. ALL GREEN or it names the jam. The offline\nlegs also rerun on every save in `githolon dev`.",
8844
+ what: "Run the proof GENERATED from your business law. By default it drives the real local engine:\nbirth, full-history verification, durable custody, eviction, restore, and read-back. --live runs the\nsame business proof against Nomos Cloud; identity, provisioning, persistence, and cleanup remain\ninside Nomos. --domain selects one domain in a multi-domain package. ALL GREEN or it names the jam.",
8827
8845
  examples: ["githolon proof", "githolon proof --domain co2_platform", "githolon proof --live", "githolon proof --live --keep"]
8828
8846
  },
8829
8847
  dev: {
@@ -8911,7 +8929,7 @@ var HELP = {
8911
8929
  },
8912
8930
  login: {
8913
8931
  usage: "githolon login --agent | --token <refresh_token>",
8914
- what: "Establish the principal births ride. --agent self-onboards an anonymous VERIFIED identity\n(no human, no browser; linkable later); --token adopts an existing captain app session.\nSessions live in ~/.holon/credentials.json and auto-refresh.",
8932
+ what: "Establish the identity Nomos uses beneath birth. --agent creates a verified development identity\n(no browser; linkable later); --token adopts an existing session. Credentials auto-refresh.",
8915
8933
  examples: ["githolon login --agent", "githolon login --token <refresh_token>"]
8916
8934
  },
8917
8935
  whoami: {
@@ -8932,16 +8950,14 @@ var HELP = {
8932
8950
  what: "Clear the session. Stored workspace secrets are KEPT."
8933
8951
  },
8934
8952
  ws: {
8935
- usage: "githolon ws <create|status|retire|reclaim> [<name>] [--principal <uid|token>] [--via <parent>] [--parent <ws>] [--cloud <url>] [--target <name>]",
8936
- what: "Workspace lifecycle on Nomos Cloud. `create` births one (NO host secret is issued \u2014\nownership is a ledger fact; deploy is open + kernel-gated) or, with --via <parent>, requests it\nas a SIGNED createWorkspace governance offer. `status` shows lineage/phase/verdicts. `retire`\nand `reclaim` are SIGNED governance offers to the parent (default root) \u2014 never host-author\nendpoints; retire withdraws the law (data retained), reclaim authorizes the bailiff to drop\ncustody (only a retired workspace; never root). `status` with no <name> resolves the project's\n`workspace` binding.",
8953
+ usage: "githolon ws <status|retire|reclaim> [<name>] [--parent <ws>] [--cloud <url>] [--target <name>]",
8954
+ what: "Operator inspection and disposal of existing cloud custody. Application creation is not here:\ndeclare birth(Aggregate, spec) and call the generated app.birth(businessFacts). `status` inspects\nlineage and verdicts; `retire` withdraws law while retaining data; `reclaim` discards custody only\nafter retirement.",
8937
8955
  flags: [
8938
- ["--principal <p>", "the birth's principal (uid or access token; remembered as the default)"],
8939
- ["--via <parent>", "ws create: sign a createWorkspace offer at <parent> instead of the raw birth"],
8940
8956
  ["--parent <ws>", "retire/reclaim: the governance workspace to sign against (default root)"],
8941
8957
  ["--cloud <url>", "target cloud (default: $NOMOS_CLOUD or the public cloud)"],
8942
8958
  ["--target <name>", "ws status: pick among the project's named workspace targets"]
8943
8959
  ],
8944
- examples: ["githolon ws create my-guestbook", "githolon ws create app1 --via co2", "githolon ws status", "githolon ws retire my-guestbook"]
8960
+ examples: ["githolon ws status", "githolon ws retire my-guestbook"]
8945
8961
  },
8946
8962
  key: {
8947
8963
  usage: "githolon key <enroll|show|import|export> [--principal <uid>] [--secret <key>] [--sha256] [--format hex|base64] [--parent <ws>] [--yes]",
@@ -8977,9 +8993,8 @@ var HELP = {
8977
8993
  ],
8978
8994
  examples: [
8979
8995
  `githolon gov root grantCreation --payload '{"principal":"d205ca94-\u2026"}' --as 32c7100e-\u2026 --stamp`,
8980
- "githolon gov co2-platform birthHome --payload-file home.json --as d205ca94-\u2026",
8981
- "githolon gov root birthChild --payload-file co2.json --as 32c7100e-\u2026 --save co2.offer.json",
8982
- "githolon gov relay root co2.offer.json"
8996
+ "githolon gov root setGovernancePosture --payload-file posture.json --as 32c7100e-\u2026 --save posture.offer.json",
8997
+ "githolon gov relay root posture.offer.json"
8983
8998
  ]
8984
8999
  },
8985
9000
  rebirth: {
@@ -9050,12 +9065,12 @@ var HELP = {
9050
9065
  },
9051
9066
  git: {
9052
9067
  usage: "githolon git <setup | remote [<ws>] [<remoteName>]> [--cloud <url>] [--target <name>]",
9053
- what: "Stock git as the sync transport. `setup` installs the credential helper for the cloud host;\n`remote` wires this repo to a workspace (then push your session branch: git push nomos\nrefs/heads/session/<id>). `main` is not push-writable \u2014 a workspace is born by its PARENT\nauthoring its birth (birthHome/birthChild), never by a push. With no <ws>, the project's\n`workspace` binding resolves it.",
9068
+ what: "Operator transport plumbing for existing holons. `setup` installs the credential helper;\n`remote` wires a local repo to existing cloud custody. Application code does not use git to\ncreate business things; it calls the generated birth(businessFacts).",
9054
9069
  examples: ["githolon git setup", "githolon git remote my-guestbook", "git push nomos refs/heads/session/dev"]
9055
9070
  },
9056
9071
  ledger: {
9057
9072
  usage: "githolon ledger <init|verify> <dir> [--file <deploy.json>] [--cloud <url>]",
9058
- what: "Mint + assert a holon ON YOUR MACHINE. `init` writes genesis + your compiled law as a normal\ngit repo, verified by the SAME wasm gate the cloud runs; `verify` re-runs the chain's\nself-verification from disk. Push the repo to an unborn workspace to birth it.",
9073
+ what: "Low-level local custody and verification for framework development. `init` writes compiled\nlaw into a git-backed holon; `verify` replays its full history. Application packages use the\ngenerated birth(businessFacts) surface instead.",
9059
9074
  examples: ["githolon ledger init ./my-holon", "githolon ledger verify ./my-holon"]
9060
9075
  }
9061
9076
  };
@@ -9555,117 +9570,37 @@ async function status(wsArg, opts) {
9555
9570
  // src/cli.ts
9556
9571
  var KINDS = ["domain", "aggregate", "intent"];
9557
9572
  var DEFAULT_OUT = "domains";
9558
- var USAGE = `githolon \u2014 the Nomos developer CLI
9559
-
9560
- The inner loop:
9561
- githolon dev watch \u2192 recompile \u2192 law LIVE in a local holon \u2192
9562
- the generated proof's offline legs rerun \u2192 local
9563
- reads served \u2014 sub-second, offline after warmup
9564
- githolon status [<ws>] local law hash vs the DEPLOYED law, remedy named
9565
- githolon replay <ws|dir> the ledger as film: step the chain intent-by-
9566
- intent; finale = the verify_chain verdict
9567
- githolon scene <ws|dir> [--out <dir>] the ledger as a PORTABLE USD scene: verify_chain-
9568
- gated chain\u2192USD projection (.usda + .usdz, loads
9569
- in three.js/usdview/QuickLook; timeCode = index)
9570
- githolon decrypt <ws> --as <p> --secret <b64> clone + decrypt as a principal: unwrap their scope
9571
- --query <id> [--param k=v] keys from the chain, read private fields in cleartext
9572
-
9573
- Authoring:
9574
- githolon check [config] [--json] [--against <p>] run the author-time gate (static twins) on
9575
- ./nomos.package.mjs \u2014 the unified report; exits
9576
- non-zero on any REFUSE (compile runs it implicitly).
9577
- --json emits the findings (with file:line) as an array
9578
- githolon compat <ws-url|deploy.json|dir> [--json] THE CI GATE: compare the current build's interface
9579
- against a target's installed law, PER MEMBER (#72
9580
- subtyping); exits non-zero on any incompatible member
9581
- githolon lsp the author-time gate as a stdio Language Server:
9582
- red squiggles while you write law (VS Code/Neovim/\u2026)
9583
- githolon mcp the author-time gate as a stdio MCP server for AI
9584
- agents (Codex/Claude): tools nomos_check +
9585
- nomos_evolve_preview. Setup: codex mcp add nomos -- githolon mcp
9586
- githolon compile [compiler args] compile the package by ./nomos.package.mjs
9587
- githolon init-editor write .vscode/extensions.json recommending the
9588
- Nomos Law extension \u2014 the check gate as red
9589
- squiggles while you type (idempotent)
9590
- githolon proof [build/<name>.proof.mts] run the proof GENERATED from your law, live
9591
- (every compile emits it; ALL GREEN or it names the jam)
9592
- githolon harness-install --deploy <deploy.json[,...]> offline install for the headless TEST HARNESS:
9593
- --workspace <ws> --out <snapshot> install tenant law IN-CHAIN (no cloud), write the
9594
- restore snapshot, print { ok, snapshot, lawHashes }
9595
- githolon generate <domain|aggregate|intent> <name> [options]
9596
- githolon g <domain|aggregate|intent> <name> [options]
9573
+ var USAGE = `githolon \u2014 model a business; Nomos owns the compute science
9597
9574
 
9598
- Identity (~/.holon/credentials.json \u2014 sessions auto-refresh):
9599
- githolon login --agent anonymous sign-in: a verified self-onboarded identity
9600
- githolon login --token <refresh_token> adopt an existing captain app session
9601
- githolon whoami show the principal births will ride + keys on file
9602
- githolon use [<uid>] [--clear] set/show/clear the ACTIVE signing principal: the one
9603
- deploy/gov/grant/key author as (--as overrides per-cmd)
9604
- githolon logout clear the session (workspace secrets kept)
9605
- githolon key enroll [--principal <uid>] [--parent <ws>] [--domain <d>] [--directive <id>] mint a signing device key + enroll it on-chain (the signing directive is DISCOVERED from the parent's installed law; the flags override)
9606
- (secret stays local; warrants SIGNED governance)
9607
- githolon key import --principal <uid> --secret <key> bring an EXISTING admin key into ~/.holon (accepts
9608
- hex / base64 seed, or --sha256 <passphrase>)
9609
- githolon key show | export [--principal <uid>] the device key's public identity (export --yes: secret)
9575
+ Start here:
9576
+ githolon compile compile aggregates, birth, directives, and reads into law + a typed client
9577
+ githolon proof run the generated business proof in the real local engine
9578
+ githolon dev watch, compile, and rerun that proof on every save
9579
+ githolon check explain anything the law can already prove it would refuse
9610
9580
 
9611
- Governance (SIGNED client-side, relayed as {intentBytes} \u2014 never a host-author endpoint):
9612
- githolon gov <ws> <directive> [--domain <d>] author ANY governance directive (domain discovered
9613
- [--payload <json>] from installed law; --domain overrides) as a signed offer
9614
- [--as <uid>] [--stamp] [--save <file>] to <ws> (--save signs without relaying; relay later)
9615
- githolon gov relay <ws> <offer-file> relay a saved offer (the only step that hits the cloud)
9616
- githolon gov rebirth <ws> --reason <text> LAWFUL SUPERSESSION (recovery verb 3): supersede a
9617
- [--dry-run [--json]] [--yes] scarred chain; --dry-run = READ-ONLY impact report
9618
- githolon rebirth plan <ws> [--reason <text>] [--out D] write a stable plan.json + impact.md (rebirths-as-code)
9619
- githolon rebirth apply --plan <plan.json> drift-pinned apply of a reviewed plan \u2192 certificate.json
9620
- --gcp-secret nomos-root-custodian-key [--yes] (apply needs the ROOT CUSTODIAN seed; --gcp-secret is blessed)
9621
- githolon replay <ws> --repair execute the repair matching a red verify (\u2192 certificate)
9622
- githolon grant <admin|creation> <principal> [--label L] grant authority at the parent (default root)
9623
- githolon grant quota <principal> --max <N> grant a per-principal workspace allowance
9624
- githolon revoke <admin|creation> <principal> revoke it (the revoked fact rides the chain)
9625
- (all gated by the parent's law: only an admin's
9626
- signature is admitted; --parent <p> targets a platform)
9581
+ The application surface is one idea:
9582
+ const thing = await app.birth(businessFacts)
9627
9583
 
9628
- Nomos Cloud (a bare <ws> resolves from nomos.package.mjs's optional \`workspace\` binding;
9629
- deploy is OPEN + kernel-gated \u2014 births return no host secret, ownership is a ledger fact):
9630
- githolon ws create <name> [--principal <uid|token>] birth a workspace (no host secret is issued)
9631
- (no identity on file? it self-onboards an agent login)
9632
- githolon ws create <name> --via <parent> request it as a SIGNED createWorkspace governance
9633
- offer at the parent
9634
- githolon ws status [<name>] workspace status (lineage, phase, verdicts)
9635
- githolon ws retire <name> [--parent <ws>] retire a workspace via a SIGNED governance offer;
9636
- quota freed; data retained; reads keep serving
9637
- githolon ws reclaim <name> [--parent <ws>] lawful custody discard via a SIGNED governance offer
9638
- (only a retired workspace; never root)
9639
- githolon deploy [<ws>] [--file <deploy.json>] deploy build/*.deploy.json \u2014 DEFAULT replace-current:
9640
- [--keep-beside] [--retire-replaced] new law becomes active; prior install is superseded
9641
- per domain key (prints what moved). --keep-beside
9642
- installs beside; --retire-replaced marks retired
9643
- githolon domains status <ws> per domain key: active law plus superseded/retired
9644
- [--explain-current-interface] lineage (active = served now)
9645
- githolon domains retire <ws> <hashOrKey> retire an install (marks it retired \u2014 replayable,
9646
- [--with <hashOrKey>] no longer served) via a signed installDomain offer
9647
- githolon dlq sweep <ws> [--depth <n>] [--full] sweep a platform subtree's dead-letter queues
9648
- (registry-enumerated; exit 2 when jams exist)
9649
- githolon secret set <ws> <push-password> store a git push password (authenticated git sync)
9650
- githolon secret rotate <ws> RETIRED \u2014 host holds no ownership credential (410)
9584
+ A born aggregate is a holon: its law, facts, and history travel together. Nomos owns durable identity,
9585
+ authorship, local execution, validation, persistence, synchronisation, provenance, and recovery beneath
9586
+ that call. Those mechanisms are not separate application workflows.
9651
9587
 
9652
- Git lane (stock git as the sync transport \u2014 main is not push-writable; a workspace is born by its parent):
9653
- githolon git setup install the credential helper for the cloud host
9654
- githolon git remote [<ws>] [<remoteName>] wire this repo to a workspace (default name: nomos)
9655
- then: git push nomos refs/heads/session/<id>
9588
+ Useful authoring commands:
9589
+ githolon generate <domain|aggregate|intent> <name>
9590
+ githolon compat <target>
9591
+ githolon lsp
9592
+ githolon mcp
9593
+ githolon login --agent
9656
9594
 
9657
- The local-first lane (mint + assert a holon on YOUR machine, under YOUR identity):
9658
- githolon ledger init <dir> genesis + your compiled law, verified by the SAME
9659
- wasm gate the cloud runs, written as a git repo
9660
- githolon ledger verify <dir> re-run the chain's self-verification from disk
9595
+ Operational and inspection commands remain available to maintain Nomos itself. Ask any command for its
9596
+ focused screen: githolon <command> --help (for example: status, replay, scene, deploy, domains, or gov).
9661
9597
 
9662
9598
  Options:
9663
- --cloud <url> target cloud (default: $NOMOS_CLOUD or https://nomos.captainapp.co.uk)
9664
- --target <name> pick among the project's named workspace targets (workspace: { dev: \u2026, prod: \u2026 })
9665
- --out <dir> generate: target directory (default: ${DEFAULT_OUT})
9666
- --force generate: overwrite an existing file
9667
- --dry-run generate: print to stdout, write nothing
9668
- -h, --help top level here; \`githolon <command> --help\` for that command's flags + examples
9599
+ --cloud <url> target cloud
9600
+ --out <dir> generate into a different directory (default: ${DEFAULT_OUT})
9601
+ --force overwrite generated source
9602
+ --dry-run print generated source without writing it
9603
+ -h, --help show this page; githolon <command> --help shows one focused command
9669
9604
  `;
9670
9605
  function cloudArgs(rest) {
9671
9606
  const pos = [];
@@ -9839,7 +9774,7 @@ async function runProof(args) {
9839
9774
  const tsxPkg = JSON.parse(readFileSync16(join17(tsxDir, "package.json"), "utf8"));
9840
9775
  const tsxBinRel = typeof tsxPkg.bin === "string" ? tsxPkg.bin : tsxPkg.bin?.["tsx"];
9841
9776
  const tsxCli = join17(tsxDir, tsxBinRel ?? "dist/cli.mjs");
9842
- console.log("githolon proof --live \u2014 the full cloud loop (throwaway workspace, retired on exit" + (keep ? "; --keep: kept" : "") + ")");
9777
+ console.log("githolon proof --live \u2014 the generated business proof against Nomos Cloud" + (keep ? " (--keep preserves its temporary custody)" : ""));
9843
9778
  const { wsCreate: wsCreate2, wsRetire: wsRetire2 } = await Promise.resolve().then(() => (init_cloud(), cloud_exports));
9844
9779
  const { resolveGovernancePrincipal: resolveGovernancePrincipal2 } = await Promise.resolve().then(() => (init_governance(), governance_exports));
9845
9780
  const { login: login2, activePrincipal: activePrincipal2 } = await Promise.resolve().then(() => (init_cloud(), cloud_exports));
@@ -9859,11 +9794,7 @@ async function runProof(args) {
9859
9794
  const cr = await wsCreate2(ws, { via: "root", principal });
9860
9795
  if (cr !== 0) {
9861
9796
  return refuse(
9862
- `proof --live: registered create refused at root \u2014 principal ${principal} lacks creation authority, and the open birth lane would leak an unretirable workspace.
9863
- remedies:
9864
- \u2022 ask an operator: githolon grant creation ${principal} (then rerun)
9865
- \u2022 or pre-create a REGISTERED workspace yourself and hand it over: NOMOS_WS=<ws> githolon proof --live
9866
- \u2022 or develop offline (no cloud workspace at all): githolon proof`
9797
+ `proof --live: Nomos could not establish safe custody for birth as ${principal}. This is a framework failure: no manual grant, key, parent, or provisioning step is part of the application contract. The local business proof remains available with: githolon proof`
9867
9798
  );
9868
9799
  }
9869
9800
  }
@@ -10176,6 +10107,12 @@ ${commandHelp("status")}`);
10176
10107
  }
10177
10108
  return status(pos[0], opts);
10178
10109
  }
10110
+ if (argv[0] === "ws" && argv[1] === "create") {
10111
+ process.stderr.write(
10112
+ "error: `githolon ws create` is not an application birth API. Declare birth(Aggregate, spec) and call the generated app.birth(businessFacts); Nomos owns custody beneath it.\n"
10113
+ );
10114
+ return 1;
10115
+ }
10179
10116
  if (argv[0] === "ws" || argv[0] === "deploy" || argv[0] === "secret") {
10180
10117
  return runCloud(argv);
10181
10118
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "githolon",
3
- "version": "0.99.0",
3
+ "version": "0.100.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.99.0",
33
- "@githolon/dsl": "^0.99.0",
32
+ "@githolon/client": "^0.100.0",
33
+ "@githolon/dsl": "^0.100.0",
34
34
  "isomorphic-git": "^1.38.4"
35
35
  },
36
36
  "devDependencies": {