@kybernesis/create 0.17.2 → 0.18.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/README.md CHANGED
@@ -10,6 +10,10 @@ npm create @kybernesis acme-atlas
10
10
  npx @kybernesis/create init acme-atlas
11
11
  ```
12
12
 
13
+ ## Core on exe hosts
14
+
15
+ `kyb init --host=exe` always installs the agent's computer (`@kybernesis/computer`: a persistent desktop with Chrome a person can watch and take over) and its vault (`@kybernesis/vault`: per-agent, per-person logins and cards it fills on that computer without seeing them). They are not options. A Vercel host gets neither, because a function cannot keep a desktop alive, and init says so.
16
+
13
17
  ## `kyb init [name]`
14
18
 
15
19
  Scaffolds the full Kybernesis stack:
package/dist/cli.js CHANGED
@@ -105,7 +105,6 @@ function usage(command) {
105
105
  --model-reach=<reach> ${dim("claude-sub (exe only; default: host route)")}
106
106
  --subagents=a,b ${dim("department subagents")}
107
107
  --engineer ${dim("add the engineer layer")}
108
- --no-computer ${dim("skip the agent's own desktop + Chrome (on by default on exe)")}
109
108
  --studio ${dim("wire KYBER Studio local/manage routes")}
110
109
  --yes, -y ${dim("no prompts")}
111
110
 
@@ -230,7 +229,6 @@ ${dim(" npm i -g @kybernesis/create@latest")}
230
229
  --model=<id> ${dim("provider/model-id; bare claude-opus-5 for claude-sub")}
231
230
  --model-reach=<r> ${dim("claude-sub (exe only); env: KYB_MODEL_REACH")}
232
231
  --engineer ${dim("add the engineer layer: workshop sandbox + vision dev loop")}
233
- --no-computer ${dim("skip the agent's own computer (desktop + Chrome you can watch; on by default on exe hosts)")}
234
232
  --studio ${dim("wire for KYBER Studio: local execution + management routes")}
235
233
  --yes ${dim("no prompts; take flags and defaults")}
236
234
  ${bold("kyb add channel <kind>")}
package/dist/eval-cli.js CHANGED
@@ -20,7 +20,10 @@ const CONDEMNED = /CORRUPTED_EVENT_LOG|REPLAY_DIVERGENCE/;
20
20
  const JUDGE_FAILURE = /judge[^\n]*(unreachable|ECONNREFUSED|fetch failed|HTTP \d{3}|Unauthenticated|no credentials|not valid)/i;
21
21
  function main() {
22
22
  const args = process.argv.slice(2);
23
- const child = spawn("npx", ["eve", "eval", ...args], { stdio: ["inherit", "pipe", "pipe"], env: process.env });
23
+ // An eval's routine deliveries land in throwaway sessions; they must never
24
+ // become the agent's canonical conversation (see @kybernesis/manage).
25
+ const env = { ...process.env, KYB_CANONICAL_SESSION: "off" };
26
+ const child = spawn("npx", ["eve", "eval", ...args], { stdio: ["inherit", "pipe", "pipe"], env });
24
27
  let condemned = 0;
25
28
  let judgeFailures = 0;
26
29
  const scan = (chunk, out) => {
package/dist/init.d.ts CHANGED
@@ -7,9 +7,8 @@ export declare function finalizeGithubToolsRegistryMount(cwd: string, registryAd
7
7
  export interface InitOptions {
8
8
  engineer?: boolean;
9
9
  /**
10
- * The agent's own computer: a persistent Docker desktop with Chrome a person
11
- * can watch and take over. Part of the core install on exe hosts (a Vercel
12
- * function cannot keep a desktop alive); `false` opts out.
10
+ * @deprecated The agent's computer is core on exe hosts and cannot be opted
11
+ * out of; the flag is accepted and ignored so old scripts keep working.
13
12
  */
14
13
  computer?: boolean;
15
14
  /**
package/dist/init.js CHANGED
@@ -16,6 +16,11 @@ import { MODEL_REACH_ENV, resolveModelScaffold } from "./model-reach.js";
16
16
  // `identity` gives the agent its .agent name surface: the owner connects it
17
17
  // from the ARP console with one click and never touches this repo again.
18
18
  const CORE_ITEMS = ["enterprise", "arcana", "evals", "identity"];
19
+ // Core on every exe host, not elective (Ian, 2026-10-07): the agent's own
20
+ // computer, and its own per-person vault that fills logins and cards on it. A
21
+ // Vercel function cannot keep a desktop alive, so there — and only there —
22
+ // both are skipped, and init says so out loud.
23
+ const CORE_EXE_ITEMS = ["vault"];
19
24
  // Official eve-registry limbs installed with the engineer subagent.
20
25
  // connection/vercel is Vercel-Connect-backed, so it is VERCEL-HOST ONLY: on a
21
26
  // self-hosted agent it cannot get an OIDC token and the agent fails to boot.
@@ -36,7 +41,9 @@ export function finalizeGithubToolsRegistryMount(cwd, registryAddSucceeded) {
36
41
  }
37
42
  export async function init(rawName, options = {}) {
38
43
  const engineer = options.engineer === true;
39
- const computer = options.computer !== false;
44
+ if (options.computer === false) {
45
+ console.log(yellow(" ! --no-computer is ignored: the agent's computer and vault are core on exe hosts."));
46
+ }
40
47
  const studio = options.studio === true;
41
48
  const nonInteractive = options.yes === true;
42
49
  const name = slug(rawName ?? (await ask("Agent name (kebab-case)?", "acme-agent")));
@@ -188,13 +195,18 @@ export async function init(rawName, options = {}) {
188
195
  console.log(yellow(` ! ${item} did not install cleanly — re-run: npx eve add ${item}`));
189
196
  }
190
197
  }
191
- const compPlan = computer && host === "exe" ? computerPlan(name) : null;
192
- if (options.computer === true && host !== "exe") {
193
- console.log(yellow("\n ! --computer needs a Docker host (exe.dev); a Vercel function cannot keep a desktop alive. Skipped."));
198
+ const compPlan = host === "exe" ? computerPlan(name) : null;
199
+ if (host !== "exe") {
200
+ console.log(yellow("\n ! No computer and no vault on a Vercel host: a function cannot keep a desktop alive, and the vault fills on the computer. Use --host=exe for the full agent."));
194
201
  }
195
202
  if (compPlan) {
196
- console.log(bold("\n2e The agent's computer: persistent desktop + Chrome, sighted computer tool, browser guard …"));
203
+ console.log(bold("\n2e Core on exe: the agent's computer (desktop + Chrome, sighted tool, browser guard) and its vault …"));
197
204
  run("npm", ["install", ...compPlan.deps, "--no-audit", "--no-fund"], { cwd: dir, allowFail: true });
205
+ for (const item of CORE_EXE_ITEMS) {
206
+ const ok = run("npx", ["eve", "add", `@kybernesis/${item}`, "--overwrite"], { cwd: dir, allowFail: true });
207
+ if (!ok)
208
+ console.log(yellow(` ! @kybernesis/${item} did not install cleanly — re-run: npx eve add @kybernesis/${item}`));
209
+ }
198
210
  }
199
211
  console.log(bold("\n2d Seeding the FDE Claude Code skill suite (.claude/skills) …"));
200
212
  try {
@@ -413,6 +425,7 @@ export async function init(rawName, options = {}) {
413
425
  studio ? "KYBER Studio (local execution + management routes)" : null,
414
426
  engineer ? "engineer subagent (workshop + vision loop)" : null,
415
427
  compPlan ? "its own computer (desktop + Chrome, watch and take over)" : null,
428
+ compPlan ? "its own vault (logins and cards it fills without seeing)" : null,
416
429
  depts.length ? `${depts.length} dept subagent(s)` : null,
417
430
  ].filter(Boolean);
418
431
  const steps = [
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@kybernesis/create",
3
- "version": "0.17.2",
3
+ "version": "0.18.0",
4
4
  "description": "The Kybernesis agent scaffolder and FDE toolkit: one command to a governed, remembering, multiplayer, self-testing eve agent \u2014 plus doctor and upgrade.",
5
5
  "license": "Apache-2.0",
6
6
  "type": "module",