@volter/world-runtime 2.0.9 → 2.0.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/dist/known-external-services.json +8 -4
- package/dist/src/branch.js +32 -1
- package/known-external-services.json +8 -4
- package/package.json +4 -4
- package/src/branch.ts +16 -1
|
@@ -17,6 +17,14 @@
|
|
|
17
17
|
"disposition": "acknowledged",
|
|
18
18
|
"reason": "acknowledged: config-time OpenAI-compatible adapter, no vendor of its own — coverage is judged per repo by the provider host it is configured against; mapping it to one vendor would be the googleapis-umbrella lie (census 2026-08-31, ×14)"
|
|
19
19
|
},
|
|
20
|
+
"@daily-co/daily-js": {
|
|
21
|
+
"disposition": "demanded",
|
|
22
|
+
"reason": "vendor daily (daily.co), its call client (the call machine from c.daily.co, signalling on gs.daily.co, WebRTC media): the daily pack serves Daily's REST API and a room's page, not the call, so the call client is a coverage gap (§9 of twin-daily, 2026-09-28)"
|
|
23
|
+
},
|
|
24
|
+
"@daily-co/daily-react": {
|
|
25
|
+
"disposition": "demanded",
|
|
26
|
+
"reason": "vendor daily (daily.co), React hooks over its call client (@daily-co/daily-js): the daily pack serves Daily's REST API and a room's page, not the call, so the call client is a coverage gap (§9 of twin-daily, 2026-09-28)"
|
|
27
|
+
},
|
|
20
28
|
"@azure/communication-email": {
|
|
21
29
|
"disposition": "demanded",
|
|
22
30
|
"reason": "vendor azure (Communication Services area; one family pack per the census rulings' convention 1), pack demanded by census 2026-08-31 (×1)"
|
|
@@ -511,10 +519,6 @@
|
|
|
511
519
|
"disposition": "demanded",
|
|
512
520
|
"reason": "vendor crowdin, pack demanded by census 2026-08-31 (×1)"
|
|
513
521
|
},
|
|
514
|
-
"daily": {
|
|
515
|
-
"disposition": "demanded",
|
|
516
|
-
"reason": "vendor daily.co, pack demanded by census 2026-08-31 (×1)"
|
|
517
|
-
},
|
|
518
522
|
"daytona": {
|
|
519
523
|
"disposition": "demanded",
|
|
520
524
|
"reason": "vendor daytona, pack demanded by census 2026-08-31 (×1)"
|
package/dist/src/branch.js
CHANGED
|
@@ -46,7 +46,38 @@ export async function branchWorld(base, name, options = {}) {
|
|
|
46
46
|
throw new Error(`volter-world branch: ${base} has a managed database, which keeps no history to branch from at an instant or position; branch from its current state`);
|
|
47
47
|
}
|
|
48
48
|
refuseLiveDatabases(from, databases);
|
|
49
|
-
|
|
49
|
+
// a branch that fails to boot (a twin whose mounted version breaks the config's pin) leaves no half-made branch behind:
|
|
50
|
+
// its record without a fork would check out later as an empty World
|
|
51
|
+
const existed = (() => { try {
|
|
52
|
+
statusWorld(name, root);
|
|
53
|
+
return true;
|
|
54
|
+
}
|
|
55
|
+
catch {
|
|
56
|
+
return false;
|
|
57
|
+
} })();
|
|
58
|
+
let instance;
|
|
59
|
+
try {
|
|
60
|
+
instance = await upWorld(existsSync(from.configPath) ? from.configPath : from.config, { name, root, mode: from.mode, envFile });
|
|
61
|
+
}
|
|
62
|
+
catch (error) {
|
|
63
|
+
let recorded = false;
|
|
64
|
+
if (!existed) {
|
|
65
|
+
try {
|
|
66
|
+
statusWorld(name, root);
|
|
67
|
+
recorded = true;
|
|
68
|
+
}
|
|
69
|
+
catch { /* the boot recorded nothing */ }
|
|
70
|
+
}
|
|
71
|
+
if (recorded) {
|
|
72
|
+
try {
|
|
73
|
+
await downWorld(name, root, { purge: true });
|
|
74
|
+
}
|
|
75
|
+
catch (cleanup) {
|
|
76
|
+
throw new Error(`${error instanceof Error ? error.message : String(error)} (and the half-made branch ${name} could not be removed: ${cleanup instanceof Error ? cleanup.message : String(cleanup)})`);
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
throw error;
|
|
80
|
+
}
|
|
50
81
|
const forked = {};
|
|
51
82
|
try {
|
|
52
83
|
if (from.origin) {
|
|
@@ -17,6 +17,14 @@
|
|
|
17
17
|
"disposition": "acknowledged",
|
|
18
18
|
"reason": "acknowledged: config-time OpenAI-compatible adapter, no vendor of its own — coverage is judged per repo by the provider host it is configured against; mapping it to one vendor would be the googleapis-umbrella lie (census 2026-08-31, ×14)"
|
|
19
19
|
},
|
|
20
|
+
"@daily-co/daily-js": {
|
|
21
|
+
"disposition": "demanded",
|
|
22
|
+
"reason": "vendor daily (daily.co), its call client (the call machine from c.daily.co, signalling on gs.daily.co, WebRTC media): the daily pack serves Daily's REST API and a room's page, not the call, so the call client is a coverage gap (§9 of twin-daily, 2026-09-28)"
|
|
23
|
+
},
|
|
24
|
+
"@daily-co/daily-react": {
|
|
25
|
+
"disposition": "demanded",
|
|
26
|
+
"reason": "vendor daily (daily.co), React hooks over its call client (@daily-co/daily-js): the daily pack serves Daily's REST API and a room's page, not the call, so the call client is a coverage gap (§9 of twin-daily, 2026-09-28)"
|
|
27
|
+
},
|
|
20
28
|
"@azure/communication-email": {
|
|
21
29
|
"disposition": "demanded",
|
|
22
30
|
"reason": "vendor azure (Communication Services area; one family pack per the census rulings' convention 1), pack demanded by census 2026-08-31 (×1)"
|
|
@@ -511,10 +519,6 @@
|
|
|
511
519
|
"disposition": "demanded",
|
|
512
520
|
"reason": "vendor crowdin, pack demanded by census 2026-08-31 (×1)"
|
|
513
521
|
},
|
|
514
|
-
"daily": {
|
|
515
|
-
"disposition": "demanded",
|
|
516
|
-
"reason": "vendor daily.co, pack demanded by census 2026-08-31 (×1)"
|
|
517
|
-
},
|
|
518
522
|
"daytona": {
|
|
519
523
|
"disposition": "demanded",
|
|
520
524
|
"reason": "vendor daytona, pack demanded by census 2026-08-31 (×1)"
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@volter/world-runtime",
|
|
3
|
-
"version": "2.0.
|
|
3
|
+
"version": "2.0.11",
|
|
4
4
|
"description": "World configs for twins: boot named local runtimes, allocate ports, generate world.env/instance.json, and run apps against fake-key twin worlds.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"twin",
|
|
@@ -67,14 +67,14 @@
|
|
|
67
67
|
"node": ">=22.3"
|
|
68
68
|
},
|
|
69
69
|
"peerDependencies": {
|
|
70
|
-
"@volter/world-core": "2.0.
|
|
70
|
+
"@volter/world-core": "2.0.7",
|
|
71
71
|
"@volter/world-console": "2.0.6"
|
|
72
72
|
},
|
|
73
73
|
"dependencies": {
|
|
74
74
|
"@electric-sql/pglite": "0.5.8",
|
|
75
75
|
"@electric-sql/pglite-pgvector": "0.0.9",
|
|
76
76
|
"@volter/world-access": "2.0.1",
|
|
77
|
-
"@volter/world-core": "2.0.
|
|
77
|
+
"@volter/world-core": "2.0.7",
|
|
78
78
|
"pg-gateway": "0.3.0-beta.4",
|
|
79
79
|
"smol-toml": "^1.8.0"
|
|
80
80
|
},
|
|
@@ -84,6 +84,6 @@
|
|
|
84
84
|
}
|
|
85
85
|
},
|
|
86
86
|
"optionalDependencies": {
|
|
87
|
-
"@volter/twin-mongodb": "0.1.
|
|
87
|
+
"@volter/twin-mongodb": "0.1.7"
|
|
88
88
|
}
|
|
89
89
|
}
|
package/src/branch.ts
CHANGED
|
@@ -48,7 +48,22 @@ export async function branchWorld(base: string, name: string, options: BranchOpt
|
|
|
48
48
|
throw new Error(`volter-world branch: ${base} has a managed database, which keeps no history to branch from at an instant or position; branch from its current state`);
|
|
49
49
|
}
|
|
50
50
|
refuseLiveDatabases(from, databases);
|
|
51
|
-
|
|
51
|
+
// a branch that fails to boot (a twin whose mounted version breaks the config's pin) leaves no half-made branch behind:
|
|
52
|
+
// its record without a fork would check out later as an empty World
|
|
53
|
+
const existed = (() => { try { statusWorld(name, root); return true; } catch { return false; } })();
|
|
54
|
+
let instance: WorldInstance;
|
|
55
|
+
try {
|
|
56
|
+
instance = await upWorld(existsSync(from.configPath) ? from.configPath : from.config, { name, root, mode: from.mode, envFile });
|
|
57
|
+
} catch (error) {
|
|
58
|
+
let recorded = false;
|
|
59
|
+
if (!existed) { try { statusWorld(name, root); recorded = true; } catch { /* the boot recorded nothing */ } }
|
|
60
|
+
if (recorded) {
|
|
61
|
+
try { await downWorld(name, root, { purge: true }); } catch (cleanup) {
|
|
62
|
+
throw new Error(`${error instanceof Error ? error.message : String(error)} (and the half-made branch ${name} could not be removed: ${cleanup instanceof Error ? cleanup.message : String(cleanup)})`);
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
throw error;
|
|
66
|
+
}
|
|
52
67
|
const forked: Record<string, string[]> = {};
|
|
53
68
|
try {
|
|
54
69
|
if (from.origin) { instance.origin = { ...from.origin }; saveWorldInstance(instance); }
|