Skip to content

Commit fd2e32d

Browse files
V48 (specification-implementation): Host hierarchy + rename InlineHost to LocalHost
Establish host-generics (BitcodePipelineHost primitives, SandboxHost base) and generic-hosts/{Local,VercelSandbox} bases. Rename InlineHost/hostKind inline to LocalHost/local everywhere (BITCODE_PIPELINE_HOST=inline remains a BC alias). pipeline-hosts becomes the harness barrel + compatibility re-exports. Align docs with V48 G3-4 host law.
1 parent dcc9f21 commit fd2e32d

49 files changed

Lines changed: 2553 additions & 1573 deletions

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

BITCODE_SPEC_V48.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -411,7 +411,7 @@ Dispatch must use Vercel `waitUntil` (QA F31) — bare `void` after response is
411411

412412
| HostKind | Implementation | Law |
413413
|---|---|---|
414-
| `inline` | `packages/pipeline-hosts` InlineHost + `uapi/lib/deposit-source-provisioning` | Default when `BITCODE_PIPELINE_HOST` unset. Real `git clone` of full tree; Node fs workspace; inventory `paths` + `sources` + `samples`. |
414+
| `local` | `packages/pipeline-hosts` LocalHost + `uapi/lib/deposit-source-provisioning` | Default when `BITCODE_PIPELINE_HOST` unset. Real `git clone` of full tree; Node fs workspace; inventory `paths` + `sources` + `samples`. |
415415
| `sandbox` | `VercelSandboxPipelineHost` + asset-pack harness | When `BITCODE_PIPELINE_HOST=sandbox`. Auth: OIDC or `VERCEL_TOKEN`+team+project — fail closed if missing. Deposit boxes **`persistent: false`**. Create → run harness in-box → stop/delete. Persist `context.sandboxId` while running for cancel. Events: `sandbox-create-started`, `sandbox-created`, `command-started`, `sandbox-stopped`, `sandbox-cancelled`. |
416416

417417
Inventory scope after provision: `applyInventoryScope({ inclusions: forcedInclusions, exclusions: forcedExclusions })`. Prompt path uses `projectInventoryForPrompt` (paths+samples only — never full `sources` in prompts).
@@ -545,7 +545,7 @@ Rebuild order in `buildDepositRouteSession` / `DepositPageClient`:
545545
| `BITCODE_ASSET_PACK_REAL_INFERENCE` | `true` for live deposit |
546546
| `BITCODE_LLM_PROVIDER` / `BITCODE_LLM_MODEL` | `xai` / `grok-build-0.1` default when key present |
547547
| `BITCODE_LLM_CALL_TIMEOUT_MS` | `180000` |
548-
| `BITCODE_PIPELINE_HOST` | unset=inline; `sandbox`=in-box |
548+
| `BITCODE_PIPELINE_HOST` | unset=local; `sandbox`=in-box |
549549
| `XAI_API_KEY` | Required for xAI |
550550
| Vercel sandbox auth | OIDC or token+team+project when sandbox host |
551551
| Supabase | executions + execution_events migrations applied |
@@ -561,7 +561,7 @@ Rebuild order in `buildDepositRouteSession` / `DepositPageClient`:
561561
| Real option projection | `deposit-option-real-synthesis.ts` |
562562
| Policy / admission / earnings | `deposit-asset-pack-option-policy.ts`, `deposit-asset-pack-option-admission.ts`, `depositor-earning-supply-intelligence.ts` |
563563
| Settled demand | `depository-settled-demand-estimate.ts`, `uapi/lib/depository-settled-demand.ts` |
564-
| Hosts | `packages/pipeline-hosts/src/{inline-host,vercel-sandbox-host,asset-pack-harness,host}.ts` |
564+
| Hosts | `packages/pipeline-hosts/src/{local-host,vercel-sandbox-host,asset-pack-harness,host}.ts` |
565565
| Provisioning | `uapi/lib/deposit-source-provisioning.ts` |
566566
| Synthesize route | `uapi/app/api/deposit/synthesize-options/route.ts` |
567567
| Demand route | `uapi/app/api/deposit/demand-estimate/route.ts` |

BITCODE_SPEC_V48_NOTES.md

Lines changed: 19 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -962,10 +962,10 @@ read locally, NEVER across a process/network boundary. The pipeline (Setup →
962962
Validation) speaks only to the primitive, so its behavior is identical on every host.
963963

964964
**HostKinds — two implementations of the primitive:**
965-
- **InlineHost** (`inline-host.ts`) — runs the pipeline in the current box; provisions
965+
- **LocalHost** (`local-host.ts`) — runs the pipeline in the current box; provisions
966966
via a real `git clone` of the full tree to a local working dir (Node-fs workspace).
967967
- **SandboxHost** (`sandbox-host.ts`) — runs the pipeline inside a provisioned, isolated
968-
box that has git + FS, so within it the checkout is local exactly as for InlineHost.
968+
box that has git + FS, so within it the checkout is local exactly as for LocalHost.
969969
It is a base for providers:
970970
- **Vercel** (`VercelSandboxHost`, IMPLEMENTED) — provisions via the Sandbox SDK git
971971
source into the box working directory.
@@ -1034,7 +1034,7 @@ is named in spec for closure):
10341034
built by `buildRealDepositAssetPackOptionSynthesis`; the `/deposit` card renders the
10351035
"If deposited, Bitcode receives" panel.
10361036
- **Host + provisioning.** `packages/pipeline-hosts`: `BitcodePipelineHost` /
1037-
`BitcodeHostWorkspace` / `BitcodeHostCapabilities` (`host.ts`); `InlineHost`;
1037+
`BitcodeHostWorkspace` / `BitcodeHostCapabilities` (`host.ts`); `LocalHost`;
10381038
`SandboxHost` + `VercelSandboxHost` (Vercel provider) + `AwsSandboxHost` (stub);
10391039
`readWorkspaceSources`. `uapi/lib/deposit-source-provisioning.ts`:
10401040
`selectDepositHostKind`, `resolveDepositPipelineHost`, `provisionDepositSourceInventory`.
@@ -1063,14 +1063,14 @@ the live packages and executes the full SDIVF). Deposit reuses that mechanism:
10631063
`VERCEL_PROJECT_ID`. `assertVercelSandboxAuthAvailable` fails closed before create.
10641064
- **Route dispatch.** When `BITCODE_PIPELINE_HOST=sandbox`, the deposit route
10651065
dispatches via `runDepositInBoxHarness``VercelSandboxPipelineHost.runHarness`
1066-
instead of InlineHost provision + in-process SDIVF; it reads `evidence.depositOptions`,
1066+
instead of LocalHost provision + in-process SDIVF; it reads `evidence.depositOptions`,
10671067
runs the SAME pure projection (`validateDepositSynthesisOptions` +
10681068
`buildRealDepositAssetPackOptionSynthesis`) and persists the deposit option
10691069
synthesis. `resolveDepositPipelineHost` is **inline-only** (throws if hostKind is
10701070
sandbox — callers must use the harness path). On `sandbox-created`, the route
10711071
persists `context.sandboxId` on the running execution row for cancel.
10721072
- **Cooperative cancel.** See Gate-3 #26.
1073-
- **Parity of result.** InlineHost and SandboxHost produce the SAME deposit option
1073+
- **Parity of result.** LocalHost and SandboxHost produce the SAME deposit option
10741074
synthesis; only WHERE the pipeline runs differs. Real-sandbox execution is verified
10751075
against deployed sandbox infra; harness plan-building + route dispatch + projection
10761076
are unit-tested with a mocked host.
@@ -1143,13 +1143,13 @@ Parity: ✅ specified + implemented + tested · 🟦 specified + implemented as
11431143
| 15 | card "If deposited, Bitcode receives" | `DepositPageClient.tsx` | depositPageClient.test ||
11441144
| 16 | full SDIVF pipeline only; Validation never skipped | deposit route (flag removed) | depositSynthesizeOptionsRoute.test ||
11451145
| 17 | primitive Host + capabilities + workspace | `BitcodePipelineHost` / `BitcodeHostWorkspace` | inline/sandbox-host.test ||
1146-
| 18 | InlineHost (real clone + Node fs) | `InlineHost` | inline-host.test ||
1146+
| 18 | LocalHost (real clone + Node fs) | `LocalHost` | local-host.test ||
11471147
| 19 | SandboxHost + Vercel provider | `SandboxHost` / `VercelSandboxHost` | sandbox-host.test ||
11481148
| 20 | AWS provider seam | `AwsSandboxHost` (stub: provision throws) | sandbox-host.test | 🟦 |
11491149
| 21 | checkout → sources bridge | `readWorkspaceSources` | inline/sandbox-host.test ||
11501150
| 22 | HostKind selection (configured, not env) | `selectDepositHostKind` / `resolveDepositPipelineHost` | depositSourceProvisioning.test ||
11511151
| 23 | full inventory (sources+samples) + fail-closed exclusions | `provisionDepositSourceInventory` / `applyExclusionsToInventory` | depositSourceProvisioning.test, asset-packs-synthesis.test ||
1152-
| 24 | deposit provisions full checkout via Host | deposit route + `InlineHost` path | depositSynthesizeOptionsRoute.test ||
1152+
| 24 | deposit provisions full checkout via Host | deposit route + `LocalHost` path | depositSynthesizeOptionsRoute.test ||
11531153
| 25 | SandboxHost IN-BOX deposit dispatch (run the pipeline in the box) | harness deposit mode (`synthesizeMode` + steering → in-box runner; `depositOptions` in evidence) + `runDepositInBoxHarness` + route hostKind branch; ephemeral `persistent:false`; OIDC/token auth fail-closed | asset-pack-harness.test, depositSourceProvisioning.test, depositSynthesizeOptionsRoute.test, vercel-sandbox-host.test |* |
11541154
| 26 | Cooperative run cancel | `POST /api/executions/[runId]/cancel` + `execution-cancel.ts` + deposit route polls + sandbox `shouldAbort` + UI Cancel run + `deposit_synthesis_cancelled` analytics | executionCancelRoute.test, vercel-sandbox-host.test (abort), depositPageClient (cancel control) ||
11551155
| 27 | Run configuration locked above telemetry in run detail | `DepositPageClient` config above telemetry; `disabled` when `synthesisRunId` set | depositPageClient.test ||
@@ -1599,3 +1599,15 @@ Compatibility shims remain at `@bitcode/vcs`, `@bitcode/github`, `@bitcode/gitla
15991599
`generic-tools/vcs` and `generic-agents-vcs` are tools/agents over the VCS layer,
16001600
not provider packages.
16011601

1602+
## Host hierarchy modularization + Local rename (Garrett, 2026-07-13)
1603+
1604+
```
1605+
@bitcode/host-generics # primitives (BitcodePipelineHost, SandboxHost)
1606+
→ @bitcode/generic-hosts-local # LocalHost (renamed from InlineHost)
1607+
→ @bitcode/generic-hosts-vercel-sandbox # VercelSandboxHost + PipelineHost harness
1608+
→ @bitcode/pipeline-hosts # AssetPack harness barrel + BC re-exports
1609+
```
1610+
1611+
HostKind `local` replaces `inline` (BITCODE_PIPELINE_HOST; `inline` accepted as alias).
1612+
Spec G3-4 tables updated to LocalHost / hostKind `local`.
1613+

BITCODE_V48_QA.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -593,7 +593,7 @@ lines / UI values into §6 for the QA record.
593593
- `BITCODE_ASSET_PACK_REAL_INFERENCE=true` — the ONLY required flag. Do NOT set
594594
`BITCODE_ASSET_PACK_REAL_INFERENCE_PROFILE` (profiles removed, F26-A; it is a no-op).
595595
- Anthropic key present (default `claude-haiku-4-5` since 2026-07-03; `BITCODE_LLM_MODEL` overrides).
596-
- `BITCODE_PIPELINE_HOST` unset (defaults to `inline`) — the dev Node server IS the
596+
- `BITCODE_PIPELINE_HOST` unset (defaults to `local`) — the dev Node server IS the
597597
inline host, so it must have `git` on PATH + a writable temp dir.
598598
- Supabase LOCAL (decided 2026-07-03): `uapi/.env.local` points at the local stack
599599
(`127.0.0.1:54321`, `supabase start`/Docker running); `dev:remote` serves against it directly.
@@ -611,7 +611,7 @@ the streaming accordion log.
611611

612612
| # | What | COPY | PASS |
613613
|---|---|---|---|
614-
| Host | `Provisioning {repo}@{ref} on the inline host…` then `Checkout ready: N files (M withheld by K protected-IP exclusions; full source measured, S prompt excerpts).` | the "Checkout ready" line | N = the repo's REAL tracked-file count (full repo, not ≤400/≤10); "full source measured"; M = exclusion-withheld files. FAIL if N≤10 or "samples"/API language → stopgap still active |
614+
| Host | `Provisioning {repo}@{ref} on the local host…` then `Checkout ready: N files (M withheld by K protected-IP exclusions; full source measured, S prompt excerpts).` | the "Checkout ready" line | N = the repo's REAL tracked-file count (full repo, not ≤400/≤10); "full source measured"; M = exclusion-withheld files. FAIL if N≤10 or "samples"/API language → stopgap still active |
615615
| Pipeline | `Running SynthesizeAssetPacks (deposit mode): Setup → Discovery → Implementation → Validation → Finish…` | the Phase pills from telemetry | all five phases present; Validation never skipped |
616616
| Absolutes | Validation telemetry shows `AssetPackMeasureAbsolutesAgent:deposit`; card measurements tile: `Functions: <N> functions · <v>% / weight 0.18`, `Types`, `File span`, `Correctness · <v>% / weight 0.28`, `Semantic volume` | the tile values + `output.depositOptionSynthesis.options[i].measurements` | size measures carry `magnitude`(int)+`unit`+`category:'absolute'`; magnitudes are plausible real counts; weights sum to 1. FAIL if `source-coverage`/`demand-alignment`/`reuse-likelihood` appear → placeholders still in use |
617617
| Card payload | option card emerald panel "If deposited, Bitcode receives": patchSummary + "Synthesized contents · N file(s)" (op-colored create/modify/delete) + "Provenant source · N files available to Bitcode" | `…options[i].contents` (patchSummary, fileChanges, provenantSourcePaths, provenantSourceCount) + screenshot | BOTH the synthesized contents AND the provenant source files shown prominently; fileChanges are path+op only (no raw code) |
@@ -641,7 +641,7 @@ cd uapi && pnpm exec jest depositSourceProvisioning depositSynthesizeOptionsRout
641641
```
642642

643643
**5. #25 SandboxHost in-box dispatch (deployment-conditional)**
644-
- Local default is inline. To exercise the sandbox path: `BITCODE_PIPELINE_HOST=sandbox`
644+
- Local default is local host. To exercise the sandbox path: `BITCODE_PIPELINE_HOST=sandbox`
645645
+ sandbox auth (`VERCEL_OIDC_TOKEN` via `vercel env pull`, or
646646
`VERCEL_TOKEN`/`VERCEL_TEAM_ID`/`VERCEL_PROJECT_ID`) + `@vercel/sandbox` + git in the box image.
647647
Missing auth must fail closed with a clear message (not a silent hang).

FAMILIARIZATION.md

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -197,6 +197,19 @@ Compatibility shims: `@bitcode/vcs`, `@bitcode/github`, …
197197
pipeline-local tools e.g. AssetPackLexicalDepositorySearchTool
198198
```
199199

200+
### 3.2.1 Hosts
201+
202+
```
203+
@bitcode/host-generics BitcodePipelineHost primitive
204+
205+
@bitcode/generic-hosts-local LocalHost (default; was InlineHost)
206+
@bitcode/generic-hosts-vercel-sandbox VercelSandboxHost / PipelineHost
207+
208+
@bitcode/pipeline-hosts Harness orchestration + BC re-exports
209+
```
210+
211+
`BITCODE_PIPELINE_HOST`: unset|`local` (default; `inline` alias) | `sandbox`.
212+
200213
### 3.3 Pipelines
201214

202215
**Hierarchy naming law:** names always encode full ancestry
@@ -215,7 +228,7 @@ pipeline-local tools e.g. AssetPackLexicalDepositorySearchTool
215228
216229
@bitcode/pipeline-asset-pack SynthesizeAssetPacksSDIVFPipeline (deposit | read);
217230
future SettleAssetPacksSDIVFPipeline
218-
@bitcode/pipeline-hosts Inline host + Vercel Sandbox harness
231+
@bitcode/pipeline-hosts Local host + Vercel Sandbox harness
219232
```
220233

221234
**SDIVF** = Setup → Discovery → Implementation → Validation → Finish

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -146,7 +146,7 @@ Full QA checklist: `BITCODE_V48_QA.md` → Gate 3 depositing runbook.
146146
|---|---|
147147
| `uapi/` | Next.js app — `/deposits`, `/reads`, `/packs`, APIs |
148148
| `packages/pipelines/asset-pack/` | SynthesizeAssetPacks SDIVF, deposit agents, policy, demand estimate |
149-
| `packages/pipeline-hosts/` | InlineHost, VercelSandbox, harness |
149+
| `packages/pipeline-hosts/` | LocalHost, VercelSandbox, harness |
150150
| `packages/agent-generics/` | PTRR, failsafes, Thinkings, LLM call timeout |
151151
| `packages/generic-llms/` | xAI/Grok and other LLM providers |
152152
| `packages/execution-generics/` | Execution tree, streaming adapters |

internal-docs/BITCODE_SOURCE_LAYOUT.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -212,6 +212,8 @@ packages/generic-<family>/ # README only (no package.json)
212212
| `generic-measurements/` | `measure-agent/`, `absolutes/`, `needinesses/` | `@bitcode/generic-measurements-*` |
213213
| `generic-vcs/` | `github/`, `gitlab/`, `bitbucket/`, `git/` | `@bitcode/generic-vcs-*` |
214214
| `vcs-generics/` | (package root) | `@bitcode/vcs-generics` |
215+
| `host-generics/` | (package root) | `@bitcode/host-generics` |
216+
| `generic-hosts/` | `Local/`, `VercelSandbox/` | `@bitcode/generic-hosts-*` |
215217
| `asset-packs/` | `synthesis/`, `settle/` | `@bitcode/asset-packs-synthesis`, `-settle` |
216218
| `generic-doc-comment-plugins/` | `doc-developing/` | `@bitcode/doc-comment-developing` |
217219

package.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616
"packages/generic-generations/*",
1717
"packages/generic-measurements/*",
1818
"packages/generic-vcs/*",
19+
"packages/generic-hosts/*",
1920
"packages/asset-packs/*",
2021
"packages/generic-doc-comment-plugins/*",
2122
"packages/pipelines/*",
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
module.exports = {
2+
preset: 'ts-jest/presets/js-with-ts',
3+
testEnvironment: 'node',
4+
testMatch: ['**/__tests__/**/*.test.ts'],
5+
roots: ['<rootDir>'],
6+
moduleNameMapper: {
7+
'^@bitcode/host-generics$': '<rootDir>/../../host-generics/src/index.ts',
8+
'^@bitcode/host-generics/(.*)$': '<rootDir>/../../host-generics/src/$1',
9+
},
10+
globals: {
11+
'ts-jest': { tsconfig: '<rootDir>/../../../tsconfig.json', diagnostics: false },
12+
},
13+
};
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
{
2+
"name": "@bitcode/generic-hosts-local",
3+
"version": "0.1.0",
4+
"private": true,
5+
"description": "LocalHost: in-process HostKind (git clone + Node filesystem). Formerly InlineHost.",
6+
"main": "src/index.ts",
7+
"types": "src/index.ts",
8+
"exports": { ".": "./src/index.ts" },
9+
"scripts": {
10+
"test": "pnpm exec jest --config jest.config.cjs --passWithNoTests",
11+
"typecheck": "tsc --noEmit"
12+
},
13+
"dependencies": {
14+
"@bitcode/host-generics": "workspace:*"
15+
},
16+
"devDependencies": {
17+
"@types/jest": "^29.5.12",
18+
"@types/node": "^25.0.0",
19+
"jest": "^29.7.0",
20+
"ts-jest": "^29.1.1",
21+
"typescript": "^5.0.0"
22+
}
23+
}

packages/pipeline-hosts/src/__tests__/inline-host.test.ts renamed to packages/generic-hosts/Local/src/__tests__/local-host.test.ts

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,8 @@ import { promises as fs } from 'node:fs';
22
import os from 'node:os';
33
import path from 'node:path';
44

5-
import { InlineHost, type InlineHostOptions } from '../inline-host';
6-
import { readWorkspaceSources, type HostExec } from '../host';
5+
import { LocalHost, type LocalHostOptions } from '../local-host';
6+
import { readWorkspaceSources, type HostExec } from '@bitcode/host-generics';
77

88
const FIXTURE: Record<string, string> = {
99
'README.md': '# Demo\nA demo project.',
@@ -35,20 +35,20 @@ function fakeExec(): { exec: HostExec; calls: string[][] } {
3535
return { exec, calls };
3636
}
3737

38-
describe('InlineHost (primitive Host implementation)', () => {
38+
describe('LocalHost (primitive Host implementation)', () => {
3939
let rootDir: string;
4040
afterEach(async () => {
4141
if (rootDir) await fs.rm(rootDir, { recursive: true, force: true });
4242
});
4343
async function makeRoot() {
44-
rootDir = await fs.mkdtemp(path.join(os.tmpdir(), 'inline-host-test-'));
44+
rootDir = await fs.mkdtemp(path.join(os.tmpdir(), 'local-host-test-'));
4545
return rootDir;
4646
}
4747

48-
it('reports inline capabilities (clone + filesystem + exec)', async () => {
49-
const host = new InlineHost({ exec: fakeExec().exec, rootDir: await makeRoot() });
48+
it('reports local capabilities (clone + filesystem + exec)', async () => {
49+
const host = new LocalHost({ exec: fakeExec().exec, rootDir: await makeRoot() });
5050
expect(host.capabilities).toMatchObject({
51-
hostKind: 'inline',
51+
hostKind: 'local',
5252
clone: true,
5353
filesystem: true,
5454
exec: true,
@@ -58,7 +58,7 @@ describe('InlineHost (primitive Host implementation)', () => {
5858

5959
it('provisions a full checkout (clone + checkout) and exposes the filesystem', async () => {
6060
const { exec, calls } = fakeExec();
61-
const host = new InlineHost({ exec, rootDir: await makeRoot() });
61+
const host = new LocalHost({ exec, rootDir: await makeRoot() });
6262
const ws = await host.provisionRepository({
6363
repositoryFullName: 'engineeredsoftware/demo',
6464
url: 'https://github.com/engineeredsoftware/demo.git',
@@ -79,7 +79,7 @@ describe('InlineHost (primitive Host implementation)', () => {
7979
});
8080

8181
it('readFile refuses path traversal outside the checkout', async () => {
82-
const host = new InlineHost({ exec: fakeExec().exec, rootDir: await makeRoot() });
82+
const host = new LocalHost({ exec: fakeExec().exec, rootDir: await makeRoot() });
8383
const ws = await host.provisionRepository({
8484
repositoryFullName: 'o/r',
8585
url: 'https://github.com/o/r.git',
@@ -89,7 +89,7 @@ describe('InlineHost (primitive Host implementation)', () => {
8989
});
9090

9191
it('readWorkspaceSources reads full content (all, subset, and bounded)', async () => {
92-
const host = new InlineHost({ exec: fakeExec().exec, rootDir: await makeRoot() });
92+
const host = new LocalHost({ exec: fakeExec().exec, rootDir: await makeRoot() });
9393
const ws = await host.provisionRepository({
9494
repositoryFullName: 'o/r',
9595
url: 'https://github.com/o/r.git',
@@ -115,15 +115,15 @@ describe('InlineHost (primitive Host implementation)', () => {
115115
const url = args[args.length - 2] ?? '';
116116
return { exitCode: 128, stdout: '', stderr: `fatal: could not read from ${url}` };
117117
};
118-
const host = new InlineHost({ exec: failingExec, rootDir: await makeRoot() });
118+
const host = new LocalHost({ exec: failingExec, rootDir: await makeRoot() });
119119
await expect(
120120
host.provisionRepository({
121121
repositoryFullName: 'o/r',
122122
url: 'https://github.com/o/r.git',
123123
revision: 'main',
124124
password: 'ghs_secrettoken',
125125
}),
126-
).rejects.toThrow(/InlineHost git clone failed/);
126+
).rejects.toThrow(/LocalHost git clone failed/);
127127

128128
const cloneCall = calls.find((c) => c[1] === 'clone')!;
129129
const urlArg = cloneCall[2];

0 commit comments

Comments
 (0)