@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 +4 -0
- package/dist/cli.js +0 -2
- package/dist/eval-cli.js +4 -1
- package/dist/init.d.ts +2 -3
- package/dist/init.js +18 -5
- package/package.json +1 -1
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
|
-
|
|
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
|
|
11
|
-
*
|
|
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
|
-
|
|
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 =
|
|
192
|
-
if (
|
|
193
|
-
console.log(yellow("\n !
|
|
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
|
|
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.
|
|
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",
|