|
@@ -9,12 +9,13 @@
|
|
|
// from live session memory), refresh (keyless replay that rewrites goldens).
|
|
// from live session memory), refresh (keyless replay that rewrites goldens).
|
|
|
//
|
|
//
|
|
|
// Composition divergences from `dsh web`, all deliberate, all via include
|
|
// Composition divergences from `dsh web`, all deliberate, all via include
|
|
|
-// patches after the shipped surface overlay: temp persistenceRoot;
|
|
|
|
|
-// workspace-context disabled (recorded fixtures must not embed this repo's
|
|
|
|
|
-// AGENTS.md); session-title-llm disabled (its fire-and-forget title call
|
|
|
|
|
-// would race the loop for the session's replay cursor); webserver pinned to
|
|
|
|
|
-// port 0 with the built dist; keyless modes disable llm-deepseek and fill
|
|
|
|
|
-// the open llm seam post-boot with installLlmReplay on the settled root ctx
|
|
|
|
|
|
|
+// patches after the shipped surface overlay: temp persistenceRoot; local skill
|
|
|
|
|
+// roots confined to the temp workspace; workspace-context disabled (recorded
|
|
|
|
|
+// fixtures must not embed this repo's AGENTS.md); session-title-llm disabled
|
|
|
|
|
+// (its fire-and-forget title call would race the loop for the session's replay
|
|
|
|
|
+// cursor); webserver pinned to port 0 with the built dist; keyless modes
|
|
|
|
|
+// disable llm-deepseek and fill the open llm seam post-boot with
|
|
|
|
|
+// installLlmReplay on the settled root ctx
|
|
|
// (the plugin-row path discards the ReplayHandle; the direct install keeps
|
|
// (the plugin-row path discards the ReplayHandle; the direct install keeps
|
|
|
// assertConsumed for the teardown fixture-consumption check).
|
|
// assertConsumed for the teardown fixture-consumption check).
|
|
|
import { existsSync } from 'node:fs'
|
|
import { existsSync } from 'node:fs'
|
|
@@ -172,6 +173,19 @@ export async function launchWebScaffold(options: LaunchOptions = {}): Promise<We
|
|
|
// per write; the scaffold restores the original cwd after boot, so the
|
|
// per write; the scaffold restores the original cwd after boot, so the
|
|
|
// row gets an absolute temp root (removed with the workspace at close).
|
|
// row gets an absolute temp root (removed with the workspace at close).
|
|
|
{ id: 'storage-json', config: { root: join(workspaceCwd, '.dsh-storages') } },
|
|
{ id: 'storage-json', config: { root: join(workspaceCwd, '.dsh-storages') } },
|
|
|
|
|
+ // Skill discovery is model-visible input. Pin every host-level root inside
|
|
|
|
|
+ // the owned temp world so ~/.dsh, ~/.agents, and a bundled-root env setting
|
|
|
|
|
+ // cannot change replay requests or conversation goldens. Project roots stay
|
|
|
|
|
+ // enabled against the same empty temp workspace, preserving the real seam.
|
|
|
|
|
+ {
|
|
|
|
|
+ id: 'skill-local',
|
|
|
|
|
+ config: {
|
|
|
|
|
+ dshHome: join(workspaceCwd, '.dsh-home'),
|
|
|
|
|
+ agentsHome: join(workspaceCwd, '.agents-home'),
|
|
|
|
|
+ bundledSkillDir: join(workspaceCwd, '.bundled-skills'),
|
|
|
|
|
+ watch: false,
|
|
|
|
|
+ },
|
|
|
|
|
+ },
|
|
|
// fs/bash cwd default to process.cwd(); the gateway injects the same
|
|
// fs/bash cwd default to process.cwd(); the gateway injects the same
|
|
|
// value into session.cwd — chdir below anchors all three to the temp
|
|
// value into session.cwd — chdir below anchors all three to the temp
|
|
|
// workspace, keeping the composition untouched.
|
|
// workspace, keeping the composition untouched.
|