@interf/compiler 0.9.5 → 0.13.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 +96 -92
- package/TRADEMARKS.md +2 -13
- package/agent-skills/interf-actions/SKILL.md +95 -36
- package/agent-skills/interf-actions/references/cli.md +118 -51
- package/builtin-methods/interf-default/README.md +3 -4
- package/builtin-methods/interf-default/compile/stages/shape/SKILL.md +2 -2
- package/builtin-methods/interf-default/compile/stages/summarize/SKILL.md +2 -1
- package/builtin-methods/interf-default/improve/SKILL.md +1 -1
- package/builtin-methods/interf-default/method.json +10 -4
- package/builtin-methods/interf-default/method.schema.json +0 -9
- package/builtin-methods/interf-default/use/query/SKILL.md +5 -5
- package/dist/cli/commands/compile.d.ts +8 -25
- package/dist/cli/commands/compile.js +75 -360
- package/dist/cli/commands/doctor.js +1 -1
- package/dist/cli/commands/login.d.ts +7 -0
- package/dist/cli/commands/login.js +39 -0
- package/dist/cli/commands/logout.d.ts +2 -0
- package/dist/cli/commands/logout.js +16 -0
- package/dist/cli/commands/method.d.ts +2 -0
- package/dist/cli/commands/method.js +113 -0
- package/dist/cli/commands/prep.d.ts +2 -0
- package/dist/cli/commands/prep.js +134 -0
- package/dist/cli/commands/reset.d.ts +8 -1
- package/dist/cli/commands/reset.js +47 -26
- package/dist/cli/commands/runs.d.ts +2 -0
- package/dist/cli/commands/runs.js +120 -0
- package/dist/cli/commands/status.d.ts +6 -1
- package/dist/cli/commands/status.js +68 -111
- package/dist/cli/commands/test.d.ts +6 -14
- package/dist/cli/commands/test.js +65 -181
- package/dist/cli/commands/web.d.ts +0 -9
- package/dist/cli/commands/web.js +147 -120
- package/dist/cli/commands/wizard.d.ts +9 -0
- package/dist/cli/commands/wizard.js +442 -0
- package/dist/cli/index.d.ts +7 -6
- package/dist/cli/index.js +13 -10
- package/dist/compiler-ui/404.html +1 -1
- package/dist/compiler-ui/__next.__PAGE__.txt +2 -2
- package/dist/compiler-ui/__next._full.txt +3 -3
- package/dist/compiler-ui/__next._head.txt +1 -1
- package/dist/compiler-ui/__next._index.txt +2 -2
- package/dist/compiler-ui/__next._tree.txt +2 -2
- package/dist/compiler-ui/_next/static/chunks/{18a8f2jkv3z.c.css → 045gole2ojo3g.css} +1 -1
- package/dist/compiler-ui/_next/static/chunks/{177mvn4rse235.js → 17t-lulmyawg5.js} +9 -9
- package/dist/compiler-ui/_not-found/__next._full.txt +2 -2
- package/dist/compiler-ui/_not-found/__next._head.txt +1 -1
- package/dist/compiler-ui/_not-found/__next._index.txt +2 -2
- package/dist/compiler-ui/_not-found/__next._not-found.__PAGE__.txt +1 -1
- package/dist/compiler-ui/_not-found/__next._not-found.txt +1 -1
- package/dist/compiler-ui/_not-found/__next._tree.txt +2 -2
- package/dist/compiler-ui/_not-found.html +1 -1
- package/dist/compiler-ui/_not-found.txt +2 -2
- package/dist/compiler-ui/index.html +1 -1
- package/dist/compiler-ui/index.txt +3 -3
- package/dist/packages/agents/lib/shells.d.ts +1 -1
- package/dist/packages/agents/lib/shells.js +111 -52
- package/dist/packages/agents/lib/user-config.d.ts +4 -2
- package/dist/packages/agents/lib/user-config.js +15 -7
- package/dist/packages/compiler/compiled-paths.d.ts +9 -2
- package/dist/packages/compiler/compiled-paths.js +30 -15
- package/dist/packages/compiler/compiled-pipeline.js +23 -3
- package/dist/packages/compiler/compiled-stage-plan.js +4 -0
- package/dist/packages/compiler/compiled-target.d.ts +1 -1
- package/dist/packages/compiler/compiled-target.js +1 -1
- package/dist/packages/compiler/index.d.ts +1 -0
- package/dist/packages/compiler/index.js +1 -0
- package/dist/packages/compiler/lib/schema.d.ts +26 -31
- package/dist/packages/compiler/lib/schema.js +1 -12
- package/dist/packages/compiler/method-runs.d.ts +2 -3
- package/dist/packages/compiler/method-runs.js +2 -3
- package/dist/packages/compiler/reset.js +3 -1
- package/dist/packages/compiler/runtime-contracts.js +0 -3
- package/dist/packages/compiler/runtime-prompt.js +1 -1
- package/dist/packages/compiler/source-files.d.ts +46 -0
- package/dist/packages/compiler/source-files.js +149 -0
- package/dist/packages/compiler/state-artifacts.d.ts +3 -2
- package/dist/packages/compiler/state-artifacts.js +4 -3
- package/dist/packages/compiler/state-io.d.ts +3 -2
- package/dist/packages/compiler/state-io.js +11 -5
- package/dist/packages/compiler/state-paths.d.ts +2 -1
- package/dist/packages/compiler/state-paths.js +6 -3
- package/dist/packages/compiler/state-view.d.ts +3 -2
- package/dist/packages/compiler/state-view.js +18 -28
- package/dist/packages/compiler/state.d.ts +4 -4
- package/dist/packages/compiler/state.js +3 -3
- package/dist/packages/contracts/index.d.ts +1 -1
- package/dist/packages/contracts/lib/preparation-paths.d.ts +117 -0
- package/dist/packages/contracts/lib/preparation-paths.js +177 -0
- package/dist/packages/contracts/lib/schema.d.ts +85 -5
- package/dist/packages/contracts/lib/schema.js +46 -1
- package/dist/packages/execution/lib/schema.d.ts +50 -50
- package/dist/packages/execution/lib/schema.js +1 -1
- package/dist/packages/local-service/action-definitions.d.ts +14 -14
- package/dist/packages/local-service/action-definitions.js +27 -28
- package/dist/packages/local-service/action-planner.js +2 -1
- package/dist/packages/local-service/client.d.ts +51 -52
- package/dist/packages/local-service/client.js +132 -140
- package/dist/packages/local-service/connection-config.d.ts +38 -0
- package/dist/packages/local-service/connection-config.js +75 -0
- package/dist/packages/local-service/index.d.ts +11 -7
- package/dist/packages/local-service/index.js +6 -4
- package/dist/packages/local-service/instance-paths.d.ts +100 -0
- package/dist/packages/local-service/instance-paths.js +165 -0
- package/dist/packages/local-service/lib/schema.d.ts +405 -2297
- package/dist/packages/local-service/lib/schema.js +146 -62
- package/dist/packages/local-service/native-run-handlers.js +3 -3
- package/dist/packages/local-service/preparation-store.d.ts +92 -0
- package/dist/packages/local-service/preparation-store.js +171 -0
- package/dist/packages/local-service/routes.d.ts +33 -16
- package/dist/packages/local-service/routes.js +44 -20
- package/dist/packages/local-service/run-observability.js +11 -11
- package/dist/packages/local-service/runtime-caches.d.ts +76 -0
- package/dist/packages/local-service/runtime-caches.js +191 -0
- package/dist/packages/local-service/runtime-event-applier.d.ts +12 -0
- package/dist/packages/local-service/runtime-event-applier.js +177 -0
- package/dist/packages/local-service/runtime-persistence.d.ts +47 -0
- package/dist/packages/local-service/runtime-persistence.js +137 -0
- package/dist/packages/local-service/runtime-proposal-helpers.d.ts +35 -0
- package/dist/packages/local-service/runtime-proposal-helpers.js +251 -0
- package/dist/packages/local-service/runtime-resource-builders.d.ts +52 -0
- package/dist/packages/local-service/runtime-resource-builders.js +149 -0
- package/dist/packages/local-service/runtime.d.ts +197 -43
- package/dist/packages/local-service/runtime.js +800 -974
- package/dist/packages/local-service/server.d.ts +15 -0
- package/dist/packages/local-service/server.js +641 -273
- package/dist/packages/local-service/service-registry.d.ts +47 -0
- package/dist/packages/local-service/service-registry.js +137 -0
- package/dist/packages/method-authoring/method-authoring.d.ts +1 -1
- package/dist/packages/method-authoring/method-authoring.js +2 -2
- package/dist/packages/method-authoring/method-improvement.js +1 -1
- package/dist/packages/method-package/builtin-compiled-method.d.ts +4 -5
- package/dist/packages/method-package/builtin-compiled-method.js +8 -14
- package/dist/packages/method-package/context-interface.d.ts +4 -40
- package/dist/packages/method-package/context-interface.js +1 -23
- package/dist/packages/method-package/interf-method-package.d.ts +4 -4
- package/dist/packages/method-package/interf-method-package.js +21 -33
- package/dist/packages/method-package/local-methods.d.ts +10 -6
- package/dist/packages/method-package/local-methods.js +57 -39
- package/dist/packages/method-package/method-definitions.d.ts +8 -34
- package/dist/packages/method-package/method-definitions.js +49 -37
- package/dist/packages/method-package/method-helpers.d.ts +1 -13
- package/dist/packages/method-package/method-helpers.js +8 -42
- package/dist/packages/method-package/method-stage-runner.js +2 -2
- package/dist/packages/method-package/user-methods.d.ts +17 -0
- package/dist/packages/method-package/user-methods.js +77 -0
- package/dist/packages/project-model/index.d.ts +0 -1
- package/dist/packages/project-model/index.js +0 -1
- package/dist/packages/project-model/interf-detect.d.ts +8 -3
- package/dist/packages/project-model/interf-detect.js +34 -34
- package/dist/packages/project-model/interf-scaffold.d.ts +3 -3
- package/dist/packages/project-model/interf-scaffold.js +23 -32
- package/dist/packages/project-model/lib/schema.js +38 -1
- package/dist/packages/project-model/preparation-entries.d.ts +5 -5
- package/dist/packages/project-model/preparation-entries.js +14 -14
- package/dist/packages/project-model/source-config.d.ts +11 -11
- package/dist/packages/project-model/source-config.js +74 -46
- package/dist/packages/project-model/source-folders.d.ts +5 -5
- package/dist/packages/project-model/source-folders.js +14 -14
- package/dist/packages/shared/filesystem.d.ts +7 -0
- package/dist/packages/shared/filesystem.js +97 -10
- package/dist/packages/testing/lib/schema.d.ts +10 -10
- package/dist/packages/testing/lib/schema.js +2 -2
- package/dist/packages/testing/readiness-check-run.d.ts +4 -4
- package/dist/packages/testing/readiness-check-run.js +36 -36
- package/dist/packages/testing/test-execution.js +6 -6
- package/dist/packages/testing/test-paths.js +4 -3
- package/dist/packages/testing/test-sandbox.d.ts +0 -1
- package/dist/packages/testing/test-sandbox.js +14 -30
- package/dist/packages/testing/test-targets.d.ts +1 -1
- package/dist/packages/testing/test-targets.js +6 -6
- package/dist/packages/testing/test.d.ts +1 -1
- package/dist/packages/testing/test.js +1 -1
- package/package.json +3 -4
- package/CHANGELOG.md +0 -93
- package/LICENSE +0 -183
- package/dist/cli/commands/action-input-cli.d.ts +0 -25
- package/dist/cli/commands/action-input-cli.js +0 -73
- package/dist/cli/commands/control-path.d.ts +0 -11
- package/dist/cli/commands/control-path.js +0 -72
- package/dist/cli/commands/create-method-wizard.d.ts +0 -64
- package/dist/cli/commands/create-method-wizard.js +0 -434
- package/dist/cli/commands/create.d.ts +0 -6
- package/dist/cli/commands/create.js +0 -183
- package/dist/cli/commands/default.d.ts +0 -2
- package/dist/cli/commands/default.js +0 -39
- package/dist/cli/commands/executor-flow.d.ts +0 -29
- package/dist/cli/commands/executor-flow.js +0 -163
- package/dist/cli/commands/init.d.ts +0 -26
- package/dist/cli/commands/init.js +0 -771
- package/dist/cli/commands/list.d.ts +0 -2
- package/dist/cli/commands/list.js +0 -30
- package/dist/cli/commands/preparation-action.d.ts +0 -8
- package/dist/cli/commands/preparation-action.js +0 -29
- package/dist/cli/commands/preparation-picker.d.ts +0 -5
- package/dist/cli/commands/preparation-picker.js +0 -36
- package/dist/cli/commands/preparation-selection.d.ts +0 -6
- package/dist/cli/commands/preparation-selection.js +0 -11
- package/dist/cli/commands/service-action-flow.d.ts +0 -9
- package/dist/cli/commands/service-action-flow.js +0 -19
- package/dist/cli/commands/source-config-wizard.d.ts +0 -51
- package/dist/cli/commands/source-config-wizard.js +0 -670
- package/dist/cli/commands/verify.d.ts +0 -2
- package/dist/cli/commands/verify.js +0 -94
- package/dist/packages/compiler/raw-snapshot.d.ts +0 -49
- package/dist/packages/compiler/raw-snapshot.js +0 -101
- package/dist/packages/method-package/index.d.ts +0 -11
- package/dist/packages/method-package/index.js +0 -11
- package/dist/packages/method-package/method-stage-policy.d.ts +0 -5
- package/dist/packages/method-package/method-stage-policy.js +0 -31
- package/dist/packages/project-model/project-paths.d.ts +0 -12
- package/dist/packages/project-model/project-paths.js +0 -33
- /package/dist/compiler-ui/_next/static/{84FaeF3EzBF9kKTMjSEVN → C6vVfy3aeYuIO3d2AoNvC}/_buildManifest.js +0 -0
- /package/dist/compiler-ui/_next/static/{84FaeF3EzBF9kKTMjSEVN → C6vVfy3aeYuIO3d2AoNvC}/_clientMiddlewareManifest.js +0 -0
- /package/dist/compiler-ui/_next/static/{84FaeF3EzBF9kKTMjSEVN → C6vVfy3aeYuIO3d2AoNvC}/_ssgManifest.js +0 -0
|
@@ -5,6 +5,5 @@ export * as interf from "./interf.js";
|
|
|
5
5
|
export * as detect from "./interf-detect.js";
|
|
6
6
|
export * as bootstrap from "./interf-bootstrap.js";
|
|
7
7
|
export * as scaffold from "./interf-scaffold.js";
|
|
8
|
-
export * as projectPaths from "./project-paths.js";
|
|
9
8
|
export * as preparationEntries from "./preparation-entries.js";
|
|
10
9
|
export type { InterfConfig, MethodId, PreparationName, SourceFolderBinding, SourcePreparationConfig, SourceReadinessCheck, SourceFolderConfig, } from "./lib/schema.js";
|
|
@@ -5,5 +5,4 @@ export * as interf from "./interf.js";
|
|
|
5
5
|
export * as detect from "./interf-detect.js";
|
|
6
6
|
export * as bootstrap from "./interf-bootstrap.js";
|
|
7
7
|
export * as scaffold from "./interf-scaffold.js";
|
|
8
|
-
export * as projectPaths from "./project-paths.js";
|
|
9
8
|
export * as preparationEntries from "./preparation-entries.js";
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { type InterfConfig } from "./lib/schema.js";
|
|
2
2
|
export type { InterfConfig } from "./lib/schema.js";
|
|
3
3
|
export interface ResolvedCompiled {
|
|
4
|
-
|
|
4
|
+
prepDataDir: string;
|
|
5
5
|
compiledPath: string;
|
|
6
6
|
config: InterfConfig;
|
|
7
7
|
}
|
|
@@ -16,6 +16,11 @@ export declare function hasSourceFolderInput(config: InterfConfig | null | undef
|
|
|
16
16
|
path: string;
|
|
17
17
|
};
|
|
18
18
|
};
|
|
19
|
+
export declare function hasSourcePreparationInput(config: InterfConfig | null | undefined): config is InterfConfig & {
|
|
20
|
+
source: {
|
|
21
|
+
preparation_path: string;
|
|
22
|
+
};
|
|
23
|
+
};
|
|
19
24
|
export declare function detectInterf(cwd: string): {
|
|
20
25
|
path: string;
|
|
21
26
|
config: InterfConfig;
|
|
@@ -24,10 +29,10 @@ export declare function resolveCompiled(cwd: string): ResolvedCompiled | null;
|
|
|
24
29
|
export declare function resolveSourceFolderPath(compiledPath: string, config?: InterfConfig | null): string;
|
|
25
30
|
export declare function resolveSourceControlPath(compiledPath: string): string;
|
|
26
31
|
export declare function resolveSourceInputPath(compiledPath: string): string;
|
|
27
|
-
export declare function listPortableContextsForSourceFolder(
|
|
32
|
+
export declare function listPortableContextsForSourceFolder(prepDataDir: string): Array<{
|
|
28
33
|
path: string;
|
|
29
34
|
config: InterfConfig;
|
|
30
35
|
}>;
|
|
31
|
-
export declare function assertCompiledContainer(
|
|
36
|
+
export declare function assertCompiledContainer(prepDataDir: string): string;
|
|
32
37
|
export declare function assertWritableTargetDir(dirPath: string, label: string): void;
|
|
33
38
|
export declare function assertCompiledName(name: string, label: string): void;
|
|
@@ -2,7 +2,7 @@ import { existsSync, readdirSync, statSync, } from "node:fs";
|
|
|
2
2
|
import { join, resolve } from "node:path";
|
|
3
3
|
import { warnInterf } from "../shared/logger.js";
|
|
4
4
|
import { readJsonFileUnchecked } from "../shared/parse.js";
|
|
5
|
-
import {
|
|
5
|
+
import { asPreparationDataDir, preparationPortableContextPath, } from "../contracts/lib/preparation-paths.js";
|
|
6
6
|
import { resolveSourceControlPathForCompiled, compiledInterfConfigPath, } from "../compiler/compiled-paths.js";
|
|
7
7
|
import { InterfConfigSchema, } from "./lib/schema.js";
|
|
8
8
|
import { assertPathWithinRoot } from "../shared/path-guards.js";
|
|
@@ -33,6 +33,9 @@ export function readInterfConfig(dirPath) {
|
|
|
33
33
|
export function hasSourceFolderInput(config) {
|
|
34
34
|
return typeof config?.source?.path === "string" && config.source.path.length > 0;
|
|
35
35
|
}
|
|
36
|
+
export function hasSourcePreparationInput(config) {
|
|
37
|
+
return typeof config?.source?.preparation_path === "string" && config.source.preparation_path.length > 0;
|
|
38
|
+
}
|
|
36
39
|
export function detectInterf(cwd) {
|
|
37
40
|
const config = readInterfConfig(cwd);
|
|
38
41
|
if (config)
|
|
@@ -44,49 +47,48 @@ export function resolveCompiled(cwd) {
|
|
|
44
47
|
if (!detected)
|
|
45
48
|
return null;
|
|
46
49
|
return {
|
|
47
|
-
|
|
50
|
+
prepDataDir: resolveSourceControlPath(detected.path),
|
|
48
51
|
compiledPath: detected.path,
|
|
49
52
|
config: detected.config,
|
|
50
53
|
};
|
|
51
54
|
}
|
|
52
55
|
export function resolveSourceFolderPath(compiledPath, config = null) {
|
|
53
56
|
const resolvedConfig = config ?? readInterfConfig(compiledPath);
|
|
57
|
+
if (hasSourcePreparationInput(resolvedConfig)) {
|
|
58
|
+
return resolve(compiledPath, resolvedConfig.source.preparation_path);
|
|
59
|
+
}
|
|
54
60
|
if (hasSourceFolderInput(resolvedConfig)) {
|
|
55
|
-
return assertPathWithinRoot(compiledPath, resolve(compiledPath, resolvedConfig.source.path), "Compiled
|
|
61
|
+
return assertPathWithinRoot(compiledPath, resolve(compiledPath, resolvedConfig.source.path), "Compiled source path");
|
|
56
62
|
}
|
|
57
|
-
|
|
63
|
+
throw new Error(`Portable Context at ${compiledPath} is missing source.preparation_path or source.path in ${compiledInterfConfigPath(compiledPath)}.`);
|
|
58
64
|
}
|
|
59
65
|
export function resolveSourceControlPath(compiledPath) {
|
|
60
66
|
return resolveSourceControlPathForCompiled(compiledPath);
|
|
61
67
|
}
|
|
62
68
|
export function resolveSourceInputPath(compiledPath) {
|
|
63
69
|
const config = readInterfConfig(compiledPath);
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
: null;
|
|
67
|
-
if (sourceBinding) {
|
|
68
|
-
return resolve(compiledPath, sourceBinding);
|
|
70
|
+
if (hasSourcePreparationInput(config)) {
|
|
71
|
+
return resolve(compiledPath, config.source.preparation_path);
|
|
69
72
|
}
|
|
70
73
|
throw new Error(`Portable context is missing source.preparation_path in ${compiledInterfConfigPath(compiledPath)}.`);
|
|
71
74
|
}
|
|
72
|
-
export function listPortableContextsForSourceFolder(
|
|
73
|
-
|
|
74
|
-
if (!existsSync(interfRoot))
|
|
75
|
+
export function listPortableContextsForSourceFolder(prepDataDir) {
|
|
76
|
+
if (!existsSync(prepDataDir))
|
|
75
77
|
return [];
|
|
76
78
|
try {
|
|
77
|
-
if (!statSync(
|
|
79
|
+
if (!statSync(prepDataDir).isDirectory())
|
|
78
80
|
return [];
|
|
79
81
|
}
|
|
80
82
|
catch (error) {
|
|
81
|
-
warnInterf(`Warning: failed to inspect Interf
|
|
83
|
+
warnInterf(`Warning: failed to inspect Interf Workspace at ${prepDataDir}: ${error instanceof Error ? error.message : String(error)}`);
|
|
82
84
|
return [];
|
|
83
85
|
}
|
|
84
|
-
return readdirSync(
|
|
86
|
+
return readdirSync(prepDataDir)
|
|
85
87
|
.filter((entry) => !entry.startsWith(".") &&
|
|
86
88
|
entry !== METHOD_CONTAINER_NAME &&
|
|
87
89
|
entry !== TEST_CONTAINER_NAME &&
|
|
88
90
|
entry !== INTERF_CONFIG_FILE)
|
|
89
|
-
.map((entry) =>
|
|
91
|
+
.map((entry) => preparationPortableContextPath(asPreparationDataDir(prepDataDir), entry))
|
|
90
92
|
.filter((compiledPath) => existsSync(compiledPath))
|
|
91
93
|
.map((compiledPath) => {
|
|
92
94
|
const config = readInterfConfig(compiledPath);
|
|
@@ -94,17 +96,16 @@ export function listPortableContextsForSourceFolder(sourcePath) {
|
|
|
94
96
|
})
|
|
95
97
|
.filter((value) => value !== null);
|
|
96
98
|
}
|
|
97
|
-
export function assertCompiledContainer(
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
const stat = statSync(interfRoot);
|
|
99
|
+
export function assertCompiledContainer(prepDataDir) {
|
|
100
|
+
if (existsSync(prepDataDir)) {
|
|
101
|
+
const stat = statSync(prepDataDir);
|
|
101
102
|
if (!stat.isDirectory()) {
|
|
102
|
-
throw new Error(`Interf
|
|
103
|
+
throw new Error(`Interf Workspace exists and is not a directory: ${prepDataDir}`);
|
|
103
104
|
}
|
|
104
|
-
const unexpectedRootEntries = readdirSync(
|
|
105
|
+
const unexpectedRootEntries = readdirSync(prepDataDir).filter((entry) => {
|
|
105
106
|
if (entry.startsWith("."))
|
|
106
107
|
return false;
|
|
107
|
-
const entryPath = join(
|
|
108
|
+
const entryPath = join(prepDataDir, entry);
|
|
108
109
|
if (entry === INTERF_CONFIG_FILE) {
|
|
109
110
|
try {
|
|
110
111
|
return !statSync(entryPath).isFile();
|
|
@@ -133,22 +134,21 @@ export function assertCompiledContainer(sourcePath) {
|
|
|
133
134
|
}
|
|
134
135
|
});
|
|
135
136
|
if (unexpectedRootEntries.length > 0) {
|
|
136
|
-
throw new Error(`Interf
|
|
137
|
+
throw new Error(`Interf Workspace contains unexpected entries: ${prepDataDir}`);
|
|
137
138
|
}
|
|
138
139
|
}
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
return containerPath;
|
|
140
|
+
if (!existsSync(prepDataDir)) {
|
|
141
|
+
return prepDataDir;
|
|
142
142
|
}
|
|
143
|
-
const stat = statSync(
|
|
143
|
+
const stat = statSync(prepDataDir);
|
|
144
144
|
if (!stat.isDirectory()) {
|
|
145
|
-
throw new Error(`Interf
|
|
145
|
+
throw new Error(`Interf Workspace exists and is not a directory: ${prepDataDir}`);
|
|
146
146
|
}
|
|
147
|
-
const unexpectedEntries = readdirSync(
|
|
147
|
+
const unexpectedEntries = readdirSync(prepDataDir).filter((entry) => {
|
|
148
148
|
if (entry.startsWith("."))
|
|
149
149
|
return false;
|
|
150
150
|
if (entry === INTERF_CONFIG_FILE) {
|
|
151
|
-
const entryPath = join(
|
|
151
|
+
const entryPath = join(prepDataDir, entry);
|
|
152
152
|
try {
|
|
153
153
|
return !statSync(entryPath).isFile();
|
|
154
154
|
}
|
|
@@ -160,7 +160,7 @@ export function assertCompiledContainer(sourcePath) {
|
|
|
160
160
|
if (entry === METHOD_CONTAINER_NAME ||
|
|
161
161
|
entry === TEST_CONTAINER_NAME)
|
|
162
162
|
return false;
|
|
163
|
-
const entryPath = join(
|
|
163
|
+
const entryPath = join(prepDataDir, entry);
|
|
164
164
|
try {
|
|
165
165
|
if (!statSync(entryPath).isDirectory())
|
|
166
166
|
return true;
|
|
@@ -172,9 +172,9 @@ export function assertCompiledContainer(sourcePath) {
|
|
|
172
172
|
return false;
|
|
173
173
|
});
|
|
174
174
|
if (unexpectedEntries.length > 0) {
|
|
175
|
-
throw new Error(`Interf
|
|
175
|
+
throw new Error(`Interf Workspace contains invalid Preparation entries: ${prepDataDir}`);
|
|
176
176
|
}
|
|
177
|
-
return
|
|
177
|
+
return prepDataDir;
|
|
178
178
|
}
|
|
179
179
|
export function assertWritableTargetDir(dirPath, label) {
|
|
180
180
|
if (!existsSync(dirPath))
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
export declare function ensurePortableContextScaffold(
|
|
2
|
-
export declare function createCompiled(name: string,
|
|
3
|
-
export declare function defaultCompiledNameForSource(
|
|
1
|
+
export declare function ensurePortableContextScaffold(prepDataDir: string, preparationName: string, methodId?: string): string;
|
|
2
|
+
export declare function createCompiled(name: string, prepDataDir: string, methodId: string | undefined, about: string | undefined, sourceFolderPath: string): string;
|
|
3
|
+
export declare function defaultCompiledNameForSource(prepDataDir: string): string;
|
|
@@ -4,12 +4,11 @@ import { getCompiledMethod } from "../method-package/method-definitions.js";
|
|
|
4
4
|
import { loadMethodDefinitionFromDir, seedLocalDefaultMethod } from "../method-package/local-methods.js";
|
|
5
5
|
import { initializeCompiledRuntimeState, } from "../compiler/state.js";
|
|
6
6
|
import { refreshCompiledBootstrapGuidance } from "../agents/lib/compiled-bootstrap.js";
|
|
7
|
-
import { syncCompiledRawSnapshot } from "../compiler/raw-snapshot.js";
|
|
8
7
|
import { assertCompiledContainer, assertCompiledName, } from "./interf-detect.js";
|
|
9
8
|
import { seedCompiledMethodPackage } from "../method-package/interf-method-package.js";
|
|
10
|
-
import {
|
|
9
|
+
import { asPreparationDataDir, preparationPortableContextPath, } from "../contracts/lib/preparation-paths.js";
|
|
11
10
|
import { ensureCompiledZoneTargets, readCompiledSchemaFile } from "../compiler/compiled-schema.js";
|
|
12
|
-
import { findSourcePreparationConfig,
|
|
11
|
+
import { findSourcePreparationConfig, loadSourceFolderConfig, methodIdForSourcePreparationConfig, resolveSourcePreparationPath, saveCompiledInterfConfig, } from "./source-config.js";
|
|
13
12
|
import { defaultControlPathForCompiled, testRootForCompiled, methodPackagePathForCompiled } from "../compiler/compiled-paths.js";
|
|
14
13
|
import { DEFAULT_METHOD_ID } from "../methods/method-resolution.js";
|
|
15
14
|
const DEFAULT_INTERFIGNORE = [
|
|
@@ -67,20 +66,20 @@ function localMethodMatches(compiledPath, methodId) {
|
|
|
67
66
|
const localMethod = loadMethodDefinitionFromDir(methodPackagePathForCompiled(compiledPath));
|
|
68
67
|
return localMethod?.id === methodId;
|
|
69
68
|
}
|
|
70
|
-
export function ensurePortableContextScaffold(
|
|
69
|
+
export function ensurePortableContextScaffold(prepDataDir, preparationName, methodId = DEFAULT_METHOD_ID) {
|
|
71
70
|
assertCompiledName(preparationName, "Portable context");
|
|
72
|
-
assertCompiledContainer(
|
|
73
|
-
const compiledPath =
|
|
71
|
+
assertCompiledContainer(prepDataDir);
|
|
72
|
+
const compiledPath = preparationPortableContextPath(asPreparationDataDir(prepDataDir), preparationName);
|
|
74
73
|
mkdirSync(compiledPath, { recursive: true });
|
|
75
74
|
mkdirSync(testRootForCompiled(compiledPath), { recursive: true });
|
|
76
75
|
if (methodId === "interf-default") {
|
|
77
|
-
seedLocalDefaultMethod({
|
|
76
|
+
seedLocalDefaultMethod({ prepDataDir });
|
|
78
77
|
}
|
|
79
|
-
const selectedMethod = getCompiledMethod(methodId, {
|
|
78
|
+
const selectedMethod = getCompiledMethod(methodId, { prepDataDir });
|
|
80
79
|
if (!localMethodMatches(compiledPath, selectedMethod.id)) {
|
|
81
80
|
seedCompiledMethodPackage({
|
|
82
81
|
compiledPath,
|
|
83
|
-
|
|
82
|
+
prepDataDir,
|
|
84
83
|
methodId: selectedMethod.id,
|
|
85
84
|
});
|
|
86
85
|
}
|
|
@@ -89,26 +88,20 @@ export function ensurePortableContextScaffold(sourcePath, preparationName, metho
|
|
|
89
88
|
}
|
|
90
89
|
return compiledPath;
|
|
91
90
|
}
|
|
92
|
-
export function createCompiled(name,
|
|
91
|
+
export function createCompiled(name, prepDataDir, methodId = DEFAULT_METHOD_ID, about, sourceFolderPath) {
|
|
93
92
|
assertCompiledName(name, "Portable context");
|
|
94
|
-
|
|
93
|
+
if (!sourceFolderPath || typeof sourceFolderPath !== "string") {
|
|
94
|
+
throw new Error("createCompiled requires an explicit sourceFolderPath. Pass the absolute Source Folder path the portable context binds to.");
|
|
95
|
+
}
|
|
96
|
+
const savedCompiled = findSourcePreparationConfig(loadSourceFolderConfig(prepDataDir), name);
|
|
95
97
|
const effectiveMethodId = methodIdForSourcePreparationConfig(savedCompiled) ?? methodId;
|
|
96
|
-
const selectedMethod = getCompiledMethod(effectiveMethodId, {
|
|
97
|
-
const compiledPath = ensurePortableContextScaffold(
|
|
98
|
+
const selectedMethod = getCompiledMethod(effectiveMethodId, { prepDataDir });
|
|
99
|
+
const compiledPath = ensurePortableContextScaffold(prepDataDir, name, selectedMethod.id);
|
|
98
100
|
const resolvedAbout = about ?? savedCompiled?.about;
|
|
99
|
-
const resolvedSourceFolderPath =
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
if (sourceFolderPath) {
|
|
104
|
-
return sourceFolderPath;
|
|
105
|
-
}
|
|
106
|
-
const configuredPreparations = listSourcePreparationConfigs(loadSourceFolderConfig(sourcePath));
|
|
107
|
-
if (configuredPreparations.length === 1) {
|
|
108
|
-
return resolveSourcePreparationPath(sourcePath, configuredPreparations[0]);
|
|
109
|
-
}
|
|
110
|
-
throw new Error("Cannot infer the source folder for this portable context. Select a source folder first or pass an explicit source folder path.");
|
|
111
|
-
})();
|
|
101
|
+
const resolvedSourceFolderPath = savedCompiled
|
|
102
|
+
? resolveSourcePreparationPath(prepDataDir, savedCompiled)
|
|
103
|
+
: sourceFolderPath;
|
|
104
|
+
const sourceRelativePath = relative(compiledPath, resolvedSourceFolderPath).split(sep).join("/") || ".";
|
|
112
105
|
saveCompiledInterfConfig(compiledPath, {
|
|
113
106
|
type: "compiled",
|
|
114
107
|
name,
|
|
@@ -126,13 +119,11 @@ export function createCompiled(name, sourcePath, methodId = DEFAULT_METHOD_ID, a
|
|
|
126
119
|
local_draft: false,
|
|
127
120
|
},
|
|
128
121
|
source: {
|
|
129
|
-
path:
|
|
122
|
+
path: sourceRelativePath,
|
|
130
123
|
control_path: defaultControlPathForCompiled(compiledPath),
|
|
131
|
-
preparation_path:
|
|
124
|
+
preparation_path: sourceRelativePath,
|
|
132
125
|
},
|
|
133
126
|
});
|
|
134
|
-
mkdirSync(join(compiledPath, "raw"), { recursive: true });
|
|
135
|
-
syncCompiledRawSnapshot(compiledPath, resolvedSourceFolderPath);
|
|
136
127
|
writeFileSync(join(compiledPath, ".interfignore"), DEFAULT_INTERFIGNORE);
|
|
137
128
|
scaffoldCompiledOutputs(compiledPath, name, about);
|
|
138
129
|
refreshCompiledBootstrapGuidance(compiledPath);
|
|
@@ -140,6 +131,6 @@ export function createCompiled(name, sourcePath, methodId = DEFAULT_METHOD_ID, a
|
|
|
140
131
|
initializeCompiledRuntimeState(compiledPath);
|
|
141
132
|
return compiledPath;
|
|
142
133
|
}
|
|
143
|
-
export function defaultCompiledNameForSource(
|
|
144
|
-
return basename(
|
|
134
|
+
export function defaultCompiledNameForSource(prepDataDir) {
|
|
135
|
+
return basename(prepDataDir);
|
|
145
136
|
}
|
|
@@ -1,6 +1,35 @@
|
|
|
1
1
|
import { z } from "zod";
|
|
2
|
+
import { isAbsolute, normalize } from "node:path";
|
|
2
3
|
import { InterfIdPattern, MethodIdSchema, PreparationNameSchema, SourceCompiledMaxAttemptsSchema, SourceCompiledMaxLoopsSchema, TestCaseExpectSchema, } from "../../contracts/lib/schema.js";
|
|
3
4
|
export { MethodIdSchema, PreparationNameSchema, } from "../../contracts/lib/schema.js";
|
|
5
|
+
/**
|
|
6
|
+
* Absolute paths that an attacker-controlled config must never reach. The
|
|
7
|
+
* compiler treats `preparation.path` as a filesystem instruction — letting
|
|
8
|
+
* a browser-tab forge `/etc` or `/sys` could mutate or read system state.
|
|
9
|
+
* The list mirrors the CSO review allowlist.
|
|
10
|
+
*/
|
|
11
|
+
const FORBIDDEN_ABSOLUTE_PATH_PREFIXES = [
|
|
12
|
+
"/etc",
|
|
13
|
+
"/sys",
|
|
14
|
+
"/proc",
|
|
15
|
+
"/dev",
|
|
16
|
+
"/var/run",
|
|
17
|
+
"/var/lib",
|
|
18
|
+
"/usr",
|
|
19
|
+
"/bin",
|
|
20
|
+
"/sbin",
|
|
21
|
+
"/boot",
|
|
22
|
+
];
|
|
23
|
+
function isForbiddenAbsolutePath(value) {
|
|
24
|
+
if (!isAbsolute(value))
|
|
25
|
+
return false;
|
|
26
|
+
const normalized = normalize(value);
|
|
27
|
+
for (const prefix of FORBIDDEN_ABSOLUTE_PATH_PREFIXES) {
|
|
28
|
+
if (normalized === prefix || normalized.startsWith(`${prefix}/`))
|
|
29
|
+
return true;
|
|
30
|
+
}
|
|
31
|
+
return false;
|
|
32
|
+
}
|
|
4
33
|
export const SourceReadinessCheckSchema = z.object({
|
|
5
34
|
id: z.string().regex(InterfIdPattern).optional(),
|
|
6
35
|
question: z.string().min(1),
|
|
@@ -19,7 +48,15 @@ export const SourceReadinessCheckSchema = z.object({
|
|
|
19
48
|
export const SourcePreparationConfigSchema = z.object({
|
|
20
49
|
id: z.string().regex(InterfIdPattern).optional(),
|
|
21
50
|
name: PreparationNameSchema,
|
|
22
|
-
path: z
|
|
51
|
+
path: z
|
|
52
|
+
.string()
|
|
53
|
+
.min(1)
|
|
54
|
+
.refine((value) => !isForbiddenAbsolutePath(value), {
|
|
55
|
+
message: "Preparation path may not target system directories (/etc, /sys, /proc, /dev, /usr, /bin, /sbin, /boot, /var/run, /var/lib).",
|
|
56
|
+
})
|
|
57
|
+
.refine((value) => !value.split(/[/\\]/).some((segment) => segment === ".."), {
|
|
58
|
+
message: "Preparation path may not contain `..` segments.",
|
|
59
|
+
}),
|
|
23
60
|
about: z.string().min(1).optional(),
|
|
24
61
|
method: MethodIdSchema.optional(),
|
|
25
62
|
max_attempts: SourceCompiledMaxAttemptsSchema.optional(),
|
|
@@ -4,8 +4,8 @@ export interface SavedPreparationEntry {
|
|
|
4
4
|
path: string | null;
|
|
5
5
|
localDraft: boolean;
|
|
6
6
|
}
|
|
7
|
-
export declare function listSavedPreparationEntries(
|
|
8
|
-
export declare function findBuiltPortableContextPath(
|
|
9
|
-
export declare function findSavedPreparationConfig(
|
|
10
|
-
export declare function createPortableContextFromConfig(
|
|
11
|
-
export declare function ensurePortableContextFromConfig(
|
|
7
|
+
export declare function listSavedPreparationEntries(prepDataDir: string): SavedPreparationEntry[];
|
|
8
|
+
export declare function findBuiltPortableContextPath(prepDataDir: string, preparationName: string): string | null;
|
|
9
|
+
export declare function findSavedPreparationConfig(prepDataDir: string, preparationName: string): SourcePreparationConfig | null;
|
|
10
|
+
export declare function createPortableContextFromConfig(prepDataDir: string, preparationConfig: SourcePreparationConfig): string;
|
|
11
|
+
export declare function ensurePortableContextFromConfig(prepDataDir: string, preparationConfig: SourcePreparationConfig): string;
|
|
@@ -2,9 +2,9 @@ import { listPortableContextsForSourceFolder, } from "./interf-detect.js";
|
|
|
2
2
|
import { createCompiled, ensurePortableContextScaffold, } from "./interf-scaffold.js";
|
|
3
3
|
import { listSourcePreparationConfigs, loadCompiledPreparationConfig, loadSourceFolderConfig, resolveSourcePreparationPath, sourcePreparationConfigFromInterfConfig, syncCompiledInterfConfigFromSourcePreparationConfig, } from "./source-config.js";
|
|
4
4
|
import { DEFAULT_METHOD_ID, methodIdForSourcePreparationConfig, } from "../methods/method-resolution.js";
|
|
5
|
-
export function listSavedPreparationEntries(
|
|
5
|
+
export function listSavedPreparationEntries(prepDataDir) {
|
|
6
6
|
const builtEntries = new Map();
|
|
7
|
-
for (const builtContext of listPortableContextsForSourceFolder(
|
|
7
|
+
for (const builtContext of listPortableContextsForSourceFolder(prepDataDir)) {
|
|
8
8
|
const preparationConfig = loadCompiledPreparationConfig(builtContext.path)
|
|
9
9
|
?? sourcePreparationConfigFromInterfConfig(builtContext.config);
|
|
10
10
|
builtEntries.set(builtContext.config.name, {
|
|
@@ -14,7 +14,7 @@ export function listSavedPreparationEntries(sourcePath) {
|
|
|
14
14
|
});
|
|
15
15
|
}
|
|
16
16
|
const entries = new Map();
|
|
17
|
-
for (const config of listSourcePreparationConfigs(loadSourceFolderConfig(
|
|
17
|
+
for (const config of listSourcePreparationConfigs(loadSourceFolderConfig(prepDataDir))) {
|
|
18
18
|
const built = builtEntries.get(config.name);
|
|
19
19
|
entries.set(config.name, {
|
|
20
20
|
config,
|
|
@@ -24,26 +24,26 @@ export function listSavedPreparationEntries(sourcePath) {
|
|
|
24
24
|
}
|
|
25
25
|
return Array.from(entries.values()).sort((left, right) => left.config.name.localeCompare(right.config.name));
|
|
26
26
|
}
|
|
27
|
-
export function findBuiltPortableContextPath(
|
|
28
|
-
return listSavedPreparationEntries(
|
|
27
|
+
export function findBuiltPortableContextPath(prepDataDir, preparationName) {
|
|
28
|
+
return listSavedPreparationEntries(prepDataDir).find((entry) => entry.config.name === preparationName)?.path ?? null;
|
|
29
29
|
}
|
|
30
|
-
export function findSavedPreparationConfig(
|
|
31
|
-
return listSavedPreparationEntries(
|
|
30
|
+
export function findSavedPreparationConfig(prepDataDir, preparationName) {
|
|
31
|
+
return listSavedPreparationEntries(prepDataDir).find((entry) => entry.config.name === preparationName)?.config ?? null;
|
|
32
32
|
}
|
|
33
|
-
export function createPortableContextFromConfig(
|
|
33
|
+
export function createPortableContextFromConfig(prepDataDir, preparationConfig) {
|
|
34
34
|
const methodId = methodIdForSourcePreparationConfig(preparationConfig) ?? DEFAULT_METHOD_ID;
|
|
35
|
-
const sourceFolderPath = resolveSourcePreparationPath(
|
|
36
|
-
const compiledPath = createCompiled(preparationConfig.name,
|
|
35
|
+
const sourceFolderPath = resolveSourcePreparationPath(prepDataDir, preparationConfig);
|
|
36
|
+
const compiledPath = createCompiled(preparationConfig.name, prepDataDir, methodId, preparationConfig.about, sourceFolderPath);
|
|
37
37
|
syncCompiledInterfConfigFromSourcePreparationConfig(compiledPath, preparationConfig);
|
|
38
38
|
return compiledPath;
|
|
39
39
|
}
|
|
40
|
-
export function ensurePortableContextFromConfig(
|
|
40
|
+
export function ensurePortableContextFromConfig(prepDataDir, preparationConfig) {
|
|
41
41
|
const methodId = methodIdForSourcePreparationConfig(preparationConfig) ?? DEFAULT_METHOD_ID;
|
|
42
|
-
const existingPath = findBuiltPortableContextPath(
|
|
42
|
+
const existingPath = findBuiltPortableContextPath(prepDataDir, preparationConfig.name);
|
|
43
43
|
if (existingPath) {
|
|
44
|
-
ensurePortableContextScaffold(
|
|
44
|
+
ensurePortableContextScaffold(prepDataDir, preparationConfig.name, methodId);
|
|
45
45
|
syncCompiledInterfConfigFromSourcePreparationConfig(existingPath, preparationConfig);
|
|
46
46
|
return existingPath;
|
|
47
47
|
}
|
|
48
|
-
return createPortableContextFromConfig(
|
|
48
|
+
return createPortableContextFromConfig(prepDataDir, preparationConfig);
|
|
49
49
|
}
|
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
import { type InterfConfig, type SourceFolderBinding, type SourceReadinessCheck, type SourcePreparationConfig, type SourceFolderConfig } from "./lib/schema.js";
|
|
2
2
|
import type { TestSpec, TestTargetType } from "../testing/lib/schema.js";
|
|
3
3
|
export declare const SOURCE_FOLDER_CONFIG_FILE = "interf.json";
|
|
4
|
-
export declare const SOURCE_FOLDER_CONFIG_PATH = "interf
|
|
4
|
+
export declare const SOURCE_FOLDER_CONFIG_PATH = "interf.json";
|
|
5
5
|
export interface LoadedSourceTestSpec extends TestSpec {
|
|
6
6
|
id: string;
|
|
7
7
|
filePath: string;
|
|
8
8
|
}
|
|
9
|
-
export declare function sourceFolderConfigPath(
|
|
10
|
-
export declare function resolveSourceFolderConfigPath(
|
|
9
|
+
export declare function sourceFolderConfigPath(prepDataDir: string): string;
|
|
10
|
+
export declare function resolveSourceFolderConfigPath(prepDataDir: string): string;
|
|
11
11
|
export declare function fingerprintReadinessChecks(checks: SourceReadinessCheck[]): string;
|
|
12
|
-
export declare function loadSourceFolderConfig(
|
|
12
|
+
export declare function loadSourceFolderConfig(prepDataDir: string): SourceFolderConfig | null;
|
|
13
13
|
export interface WritableSourceProjectConfig {
|
|
14
14
|
source_folder?: SourceFolderBinding;
|
|
15
15
|
preparations?: SourcePreparationConfig[];
|
|
@@ -21,13 +21,13 @@ export declare function resolvePreparationCompileMaxLoops(preparationConfig: Pic
|
|
|
21
21
|
export declare function getDefaultSourcePreparationConfig(config: SourceFolderConfig | null): SourcePreparationConfig | null;
|
|
22
22
|
export declare function findSourcePreparationConfig(config: SourceFolderConfig | null, preparationName: string): SourcePreparationConfig | null;
|
|
23
23
|
export declare function configuredSourceFolderPath(config: SourceFolderConfig | WritableSourceProjectConfig | null | undefined): string | null;
|
|
24
|
-
export declare function resolveConfiguredSourceFolderPath(
|
|
25
|
-
export declare function saveSourceFolderConfig(
|
|
26
|
-
export declare function appendSourcePreparationChecks(
|
|
27
|
-
export declare function upsertSourcePreparationConfig(
|
|
24
|
+
export declare function resolveConfiguredSourceFolderPath(prepDataDir: string, config?: SourceFolderConfig | WritableSourceProjectConfig | null | undefined): string | null;
|
|
25
|
+
export declare function saveSourceFolderConfig(prepDataDir: string, config: WritableSourceProjectConfig): void;
|
|
26
|
+
export declare function appendSourcePreparationChecks(prepDataDir: string, preparationName: string, checks: SourceReadinessCheck[]): void;
|
|
27
|
+
export declare function upsertSourcePreparationConfig(prepDataDir: string, preparationConfig: SourcePreparationConfig, options?: {
|
|
28
28
|
matchName?: string;
|
|
29
29
|
}): void;
|
|
30
|
-
export declare function removeSourcePreparationConfig(
|
|
30
|
+
export declare function removeSourcePreparationConfig(prepDataDir: string, preparationName: string): boolean;
|
|
31
31
|
export declare function compiledMaxAttempts(maxAttempts: number | null | undefined): number | undefined;
|
|
32
32
|
export declare function compiledMaxLoops(maxLoops: number | null | undefined): number | undefined;
|
|
33
33
|
export declare function sourcePreparationConfigFromInterfConfig(config: InterfConfig, preparationPath?: string): SourcePreparationConfig;
|
|
@@ -35,7 +35,7 @@ export declare function loadCompiledPreparationConfig(compiledPath: string): Sou
|
|
|
35
35
|
export declare function saveCompiledInterfConfig(compiledPath: string, config: InterfConfig): InterfConfig;
|
|
36
36
|
export declare function syncCompiledInterfConfigFromSourcePreparationConfig(compiledPath: string, preparationConfig: SourcePreparationConfig): InterfConfig;
|
|
37
37
|
export declare function buildTestSpecFromSourceFolderConfig(options: {
|
|
38
|
-
|
|
38
|
+
prepDataDir: string;
|
|
39
39
|
targetName?: string | null;
|
|
40
40
|
targetType?: TestTargetType;
|
|
41
41
|
}): LoadedSourceTestSpec | null;
|
|
@@ -43,4 +43,4 @@ export declare function buildTestSpecFromCompiledPreparationConfig(options: {
|
|
|
43
43
|
compiledPath: string;
|
|
44
44
|
targetType?: TestTargetType;
|
|
45
45
|
}): LoadedSourceTestSpec | null;
|
|
46
|
-
export declare function resolveSourcePreparationPath(
|
|
46
|
+
export declare function resolveSourcePreparationPath(prepDataDir: string, preparationConfig: Pick<SourcePreparationConfig, "path">): string;
|