unoverse 0.1.9 → 0.1.11

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/bin/unoverse.mjs CHANGED
@@ -50,9 +50,12 @@ const OPERATOR_COMMANDS = new Set([
50
50
 
51
51
  const [, , cmd, ...args] = process.argv;
52
52
 
53
- // Same visual language as the operator half and the boot readout
54
- // (packages/base/src/boot.ts): dim structure, ONE accent, green for the words you type.
55
- // NO_COLOR is honoured — a help screen is the first thing piped into a file.
53
+ // FIRST CONTACT. Someone who has never seen this reads it, so it answers two questions
54
+ // before listing anything: what is this, and what do I type first. A flat list of six
55
+ // commands answered neither.
56
+ //
57
+ // Visual language matches the boot readout (packages/base/src/boot.ts): dim structure,
58
+ // one accent, green for the words you type. No em dashes (house style).
56
59
  const COLOR = !process.env.NO_COLOR && process.stdout.isTTY !== false;
57
60
  const paint = (code) => (t) => (COLOR ? `\x1b[${code}m${t}\x1b[0m` : t);
58
61
  const bold = paint("1");
@@ -60,29 +63,25 @@ const dim = paint("2");
60
63
  const cyan = paint("36");
61
64
  const green = paint("32");
62
65
 
63
- const CMDS = [
64
- ["create [name]", "What are you building? Studio project · universe · client app",
65
- "No name scaffolds into the folder you are in; a name makes one"],
66
- ["studio", "Author components, nodes, agent skills"],
67
- ["where", "Your universe's addresses, probed live, not recited"],
68
- ["update", "Update this CLI to the latest version"],
69
- ["help", "This"],
70
- ];
71
- const PAD = Math.max(...CMDS.map(([c]) => c.length));
66
+ const PAD = 16;
67
+ const row = (cmd, desc) => ` ${green(cmd)}${" ".repeat(Math.max(1, PAD - cmd.length))}${desc}`;
72
68
 
73
69
  const HELP = [
74
70
  "",
75
71
  ` ${cyan("⬡")} ${bold("unoverse")}`,
76
72
  "",
77
- ...CMDS.flatMap(([cmd, desc, note]) => [
78
- ` ${green(cmd)}${" ".repeat(PAD - cmd.length)} ${desc}`,
79
- ...(note ? [` ${" ".repeat(PAD)} ${dim(note)}`] : []),
80
- ]),
73
+ ` ${dim("Build agent-powered apps. Interfaces as data, workflows on a canvas,")}`,
74
+ ` ${dim("agent skills in plain markdown.")}`,
75
+ "",
76
+ ` ${bold("First time")}`,
77
+ row("create", `Asks what you're building, then sets it up`),
78
+ "",
79
+ ` ${bold("After that")}`,
80
+ row("studio", "Design components, nodes and agent skills"),
81
+ row("where", "Your universe's addresses"),
82
+ row("update", "Update this CLI"),
81
83
  "",
82
84
  ].join("\n");
83
- // NO "in a universe folder, add: ..." line. It named a thing a new user has never seen
84
- // and listed commands they cannot run. The CLI already knows where you are standing, so
85
- // those commands appear when they apply and stay invisible when they do not.
86
85
 
87
86
  switch (cmd) {
88
87
  case "create":
package/lib/create.mjs CHANGED
@@ -99,14 +99,15 @@ export async function create(nameArg) {
99
99
  const rl = createInterface({ input: process.stdin, output: process.stdout });
100
100
  try {
101
101
  console.log(`\n ${cyan("⬡ What are you building?")}\n`);
102
- console.log(" 1. A Studio project — author components, nodes, agent skills (most people start here)");
103
- console.log(" 2. A universe — run the full platform on your own infrastructure (operators)");
104
- console.log(" 3. A client app — a website/embed against an existing universe\n");
102
+ console.log(` 1. ${"A Studio project".padEnd(20)}Components, nodes and agent skills`);
103
+ console.log(` ${dim(" " + "".padEnd(20) + "Most people start here")}`);
104
+ console.log(` 2. ${"A universe".padEnd(20)}Run the platform on your own infrastructure`);
105
+ console.log(` 3. ${"A client app".padEnd(20)}A website that talks to a universe\n`);
105
106
 
106
107
  const choice = (await ask(rl, "Choose [1]: ")) || "1";
107
108
 
108
109
  if (choice === "1") {
109
- console.log(`\n ${dim("Launching Unoverse Studio it creates and manages your projects.")}\n`);
110
+ console.log(`\n ${dim("Launching Unoverse Studio. It creates and manages your projects.")}\n`);
110
111
  rl.close();
111
112
  const r = spawnSync("npx", ["-y", "@unoverse-platform/studio@latest"], { stdio: "inherit" });
112
113
  process.exit(r.status ?? 0);
@@ -114,10 +115,10 @@ export async function create(nameArg) {
114
115
 
115
116
  if (choice === "2") {
116
117
  console.log(`\n ${cyan("A universe needs a registry access token.")}`);
117
- console.log(` ${dim("It authorizes the platform's images issued by your Unoverse admin.")}\n`);
118
+ console.log(` ${dim("It authorizes the platform's images. Your Unoverse admin issues it.")}\n`);
118
119
  const token = await ask(rl, "Registry access token: ");
119
120
  if (!token) {
120
- fail("no token the universe kit is available to licensed operators");
121
+ fail("no token. The universe kit is available to licensed operators");
121
122
  process.exit(1);
122
123
  }
123
124
  process.stdout.write(" validating against the registry...");
@@ -145,7 +146,7 @@ export async function create(nameArg) {
145
146
  env: { ...process.env, UNOVERSE_DOCR_TOKEN: token },
146
147
  });
147
148
  if (r.status !== 0) {
148
- fail("setup did not finish run 'unoverse init' in that folder to pick it up");
149
+ fail("setup did not finish. Run 'unoverse init' in that folder to pick it up");
149
150
  process.exit(r.status ?? 1);
150
151
  }
151
152
  console.log(`
@@ -153,7 +154,7 @@ export async function create(nameArg) {
153
154
  cd ${name}`}
154
155
  unoverse start
155
156
 
156
- ${cyan("Build with Claude:")} open the folder in Claude Code it ships an
157
+ ${cyan("Build with Claude:")} open the folder in Claude Code. It ships an
157
158
  authoring skill (components, nodes, agent skills) and a builder MCP that
158
159
  constructs workflows live on your Canvas. Ask for what you want.
159
160
  `);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "unoverse",
3
- "version": "0.1.9",
3
+ "version": "0.1.11",
4
4
  "description": "The Unoverse front door — create a Studio project, a universe, or a client app, and launch Studio.",
5
5
  "license": "SEE LICENSE IN README.md",
6
6
  "type": "module",