@interf/compiler 0.3.1 → 0.3.3

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.
Files changed (148) hide show
  1. package/README.md +124 -54
  2. package/dist/commands/compile.d.ts +12 -0
  3. package/dist/commands/compile.d.ts.map +1 -1
  4. package/dist/commands/compile.js +233 -29
  5. package/dist/commands/compile.js.map +1 -1
  6. package/dist/commands/create.d.ts.map +1 -1
  7. package/dist/commands/create.js +22 -13
  8. package/dist/commands/create.js.map +1 -1
  9. package/dist/commands/default.js +1 -1
  10. package/dist/commands/default.js.map +1 -1
  11. package/dist/commands/executor-flow.d.ts +2 -0
  12. package/dist/commands/executor-flow.d.ts.map +1 -1
  13. package/dist/commands/executor-flow.js +71 -22
  14. package/dist/commands/executor-flow.js.map +1 -1
  15. package/dist/commands/init.d.ts.map +1 -1
  16. package/dist/commands/init.js +60 -22
  17. package/dist/commands/init.js.map +1 -1
  18. package/dist/commands/reset.d.ts.map +1 -1
  19. package/dist/commands/reset.js +2 -18
  20. package/dist/commands/reset.js.map +1 -1
  21. package/dist/commands/source-config-wizard.d.ts +2 -1
  22. package/dist/commands/source-config-wizard.d.ts.map +1 -1
  23. package/dist/commands/source-config-wizard.js +87 -16
  24. package/dist/commands/source-config-wizard.js.map +1 -1
  25. package/dist/commands/test-flow.d.ts +5 -0
  26. package/dist/commands/test-flow.d.ts.map +1 -1
  27. package/dist/commands/test-flow.js +48 -14
  28. package/dist/commands/test-flow.js.map +1 -1
  29. package/dist/commands/test.d.ts.map +1 -1
  30. package/dist/commands/test.js +18 -5
  31. package/dist/commands/test.js.map +1 -1
  32. package/dist/commands/workspace-flow.d.ts +3 -1
  33. package/dist/commands/workspace-flow.d.ts.map +1 -1
  34. package/dist/commands/workspace-flow.js +4 -3
  35. package/dist/commands/workspace-flow.js.map +1 -1
  36. package/dist/lib/agent-shells.d.ts +17 -0
  37. package/dist/lib/agent-shells.d.ts.map +1 -0
  38. package/dist/lib/agent-shells.js +294 -0
  39. package/dist/lib/agent-shells.js.map +1 -0
  40. package/dist/lib/benchmark-execution.d.ts +5 -1
  41. package/dist/lib/benchmark-execution.d.ts.map +1 -1
  42. package/dist/lib/benchmark-execution.js +34 -12
  43. package/dist/lib/benchmark-execution.js.map +1 -1
  44. package/dist/lib/benchmark-paths.d.ts +2 -0
  45. package/dist/lib/benchmark-paths.d.ts.map +1 -1
  46. package/dist/lib/benchmark-paths.js +6 -0
  47. package/dist/lib/benchmark-paths.js.map +1 -1
  48. package/dist/lib/benchmark-sandbox.d.ts +2 -0
  49. package/dist/lib/benchmark-sandbox.d.ts.map +1 -1
  50. package/dist/lib/benchmark-sandbox.js +68 -37
  51. package/dist/lib/benchmark-sandbox.js.map +1 -1
  52. package/dist/lib/benchmark-targets.js +1 -1
  53. package/dist/lib/benchmark-targets.js.map +1 -1
  54. package/dist/lib/interf-bootstrap.d.ts +2 -13
  55. package/dist/lib/interf-bootstrap.d.ts.map +1 -1
  56. package/dist/lib/interf-bootstrap.js +7 -164
  57. package/dist/lib/interf-bootstrap.js.map +1 -1
  58. package/dist/lib/interf-detect.d.ts +1 -0
  59. package/dist/lib/interf-detect.d.ts.map +1 -1
  60. package/dist/lib/interf-detect.js +5 -18
  61. package/dist/lib/interf-detect.js.map +1 -1
  62. package/dist/lib/interf-scaffold.d.ts.map +1 -1
  63. package/dist/lib/interf-scaffold.js +7 -71
  64. package/dist/lib/interf-scaffold.js.map +1 -1
  65. package/dist/lib/interf-workflow-package.d.ts.map +1 -1
  66. package/dist/lib/interf-workflow-package.js +20 -25
  67. package/dist/lib/interf-workflow-package.js.map +1 -1
  68. package/dist/lib/interf.d.ts +3 -2
  69. package/dist/lib/interf.d.ts.map +1 -1
  70. package/dist/lib/interf.js +3 -2
  71. package/dist/lib/interf.js.map +1 -1
  72. package/dist/lib/local-workflows.d.ts +6 -1
  73. package/dist/lib/local-workflows.d.ts.map +1 -1
  74. package/dist/lib/local-workflows.js +143 -2
  75. package/dist/lib/local-workflows.js.map +1 -1
  76. package/dist/lib/runtime-contracts.d.ts.map +1 -1
  77. package/dist/lib/runtime-contracts.js +10 -4
  78. package/dist/lib/runtime-contracts.js.map +1 -1
  79. package/dist/lib/runtime-prompt.d.ts.map +1 -1
  80. package/dist/lib/runtime-prompt.js +1 -0
  81. package/dist/lib/runtime-prompt.js.map +1 -1
  82. package/dist/lib/runtime-runs.d.ts.map +1 -1
  83. package/dist/lib/runtime-runs.js +6 -2
  84. package/dist/lib/runtime-runs.js.map +1 -1
  85. package/dist/lib/runtime-types.d.ts +1 -0
  86. package/dist/lib/runtime-types.d.ts.map +1 -1
  87. package/dist/lib/schema.d.ts +88 -13
  88. package/dist/lib/schema.d.ts.map +1 -1
  89. package/dist/lib/schema.js +66 -21
  90. package/dist/lib/schema.js.map +1 -1
  91. package/dist/lib/source-config.d.ts +2 -0
  92. package/dist/lib/source-config.d.ts.map +1 -1
  93. package/dist/lib/source-config.js +19 -1
  94. package/dist/lib/source-config.js.map +1 -1
  95. package/dist/lib/state-artifacts.d.ts +2 -2
  96. package/dist/lib/state-artifacts.d.ts.map +1 -1
  97. package/dist/lib/state-artifacts.js +3 -3
  98. package/dist/lib/state-artifacts.js.map +1 -1
  99. package/dist/lib/state-io.d.ts +2 -2
  100. package/dist/lib/state-io.d.ts.map +1 -1
  101. package/dist/lib/state-io.js +5 -5
  102. package/dist/lib/state-io.js.map +1 -1
  103. package/dist/lib/state-paths.d.ts +1 -1
  104. package/dist/lib/state-paths.d.ts.map +1 -1
  105. package/dist/lib/state-paths.js +3 -3
  106. package/dist/lib/state-paths.js.map +1 -1
  107. package/dist/lib/state-view.d.ts +2 -2
  108. package/dist/lib/state-view.d.ts.map +1 -1
  109. package/dist/lib/state-view.js +6 -7
  110. package/dist/lib/state-view.js.map +1 -1
  111. package/dist/lib/state.d.ts +4 -4
  112. package/dist/lib/state.d.ts.map +1 -1
  113. package/dist/lib/state.js +3 -3
  114. package/dist/lib/state.js.map +1 -1
  115. package/dist/lib/workflow-definitions.d.ts +4 -1
  116. package/dist/lib/workflow-definitions.d.ts.map +1 -1
  117. package/dist/lib/workflow-definitions.js +38 -3
  118. package/dist/lib/workflow-definitions.js.map +1 -1
  119. package/dist/lib/workflow-stage-runner.d.ts +1 -0
  120. package/dist/lib/workflow-stage-runner.d.ts.map +1 -1
  121. package/dist/lib/workflow-stage-runner.js +2 -0
  122. package/dist/lib/workflow-stage-runner.js.map +1 -1
  123. package/dist/lib/workflows.d.ts +1 -1
  124. package/dist/lib/workflows.d.ts.map +1 -1
  125. package/dist/lib/workspace-compile.d.ts +4 -0
  126. package/dist/lib/workspace-compile.d.ts.map +1 -1
  127. package/dist/lib/workspace-compile.js +108 -66
  128. package/dist/lib/workspace-compile.js.map +1 -1
  129. package/dist/lib/workspace-docs.d.ts +3 -0
  130. package/dist/lib/workspace-docs.d.ts.map +1 -0
  131. package/dist/lib/workspace-docs.js +82 -0
  132. package/dist/lib/workspace-docs.js.map +1 -0
  133. package/dist/lib/workspace-raw.d.ts +30 -0
  134. package/dist/lib/workspace-raw.d.ts.map +1 -0
  135. package/dist/lib/workspace-raw.js +102 -0
  136. package/dist/lib/workspace-raw.js.map +1 -0
  137. package/dist/lib/workspace-reset.d.ts +2 -0
  138. package/dist/lib/workspace-reset.d.ts.map +1 -0
  139. package/dist/lib/workspace-reset.js +21 -0
  140. package/dist/lib/workspace-reset.js.map +1 -0
  141. package/dist/lib/workspace-schema.d.ts +26 -0
  142. package/dist/lib/workspace-schema.d.ts.map +1 -0
  143. package/dist/lib/workspace-schema.js +132 -0
  144. package/dist/lib/workspace-schema.js.map +1 -0
  145. package/package.json +1 -1
  146. package/skills/workflow/create/SKILL.md +19 -0
  147. package/skills/workspace/shape/SKILL.md +1 -1
  148. package/templates/workspace/README.md +2 -1
@@ -3,6 +3,11 @@ import { createRawBenchmarkTarget, listBenchmarkTargets, runBenchmarkAuto, saveB
3
3
  import { buildBenchmarkSpecFromSourceFolderConfig } from "../lib/source-config.js";
4
4
  import { resolveOrConfigureLocalExecutor } from "./executor-flow.js";
5
5
  import { findBuiltWorkspacePath } from "./workspace-flow.js";
6
+ export function questionPassRate(outcome) {
7
+ return outcome.result.totalCases > 0
8
+ ? Math.round((outcome.result.passedCases / outcome.result.totalCases) * 100)
9
+ : 0;
10
+ }
6
11
  function specNeedsExecutor(spec) {
7
12
  return spec.cases.some((entry) => !entry.file || Boolean(entry.answer));
8
13
  }
@@ -13,11 +18,30 @@ async function resolveExecutorForSpec(spec, executionProfile) {
13
18
  return resolveOrConfigureLocalExecutor({
14
19
  preflight: true,
15
20
  executionProfile,
21
+ purpose: "test",
16
22
  });
17
23
  }
18
- function printOutcomeSummary(prefix, outcome) {
24
+ export function printSavedTestOutcome(prefix, outcome) {
19
25
  const color = outcome.result.ok ? chalk.green : chalk.red;
20
- console.log(color(` ${prefix}: ${outcome.result.passedCases}/${outcome.result.totalCases} cases, ${outcome.result.passedChecks}/${outcome.result.totalChecks} checks`));
26
+ const status = outcome.result.ok ? chalk.green("PASS") : chalk.red("FAIL");
27
+ console.log(chalk.bold(` ${prefix}`));
28
+ console.log();
29
+ console.log(color(` ${status} ${outcome.result.passedCases}/${outcome.result.totalCases} questions`));
30
+ console.log();
31
+ for (const [index, caseResult] of outcome.result.caseResults.entries()) {
32
+ const caseStatus = caseResult.ok ? chalk.green("PASS") : chalk.red("FAIL");
33
+ console.log(` ${caseStatus} Truth Check ${index + 1}`);
34
+ console.log(chalk.dim(` ${caseResult.question}`));
35
+ const failedChecks = caseResult.checks.filter((entry) => !entry.ok).slice(0, 3);
36
+ for (const failedCheck of failedChecks) {
37
+ console.log(chalk.dim(` Failed criterion: ${failedCheck.label}: ${failedCheck.detail}`));
38
+ }
39
+ }
40
+ console.log();
41
+ if (outcome.result.sandbox_path) {
42
+ console.log(chalk.dim(` Preserved sandbox: ${outcome.result.sandbox_path}`));
43
+ console.log();
44
+ }
21
45
  console.log(chalk.dim(` Saved run: ${outcome.runPath}`));
22
46
  }
23
47
  export function printSavedTestComparison(rawOutcome, workspaceOutcome) {
@@ -25,23 +49,21 @@ export function printSavedTestComparison(rawOutcome, workspaceOutcome) {
25
49
  return;
26
50
  console.log();
27
51
  if (rawOutcome) {
28
- printOutcomeSummary("Raw files", rawOutcome);
52
+ printSavedTestOutcome("Raw files", rawOutcome);
29
53
  }
30
54
  if (workspaceOutcome) {
31
- printOutcomeSummary("Compiled workspace", workspaceOutcome);
55
+ if (rawOutcome)
56
+ console.log();
57
+ printSavedTestOutcome("Compiled workspace", workspaceOutcome);
32
58
  }
33
59
  if (rawOutcome && workspaceOutcome) {
34
- const rawChecks = rawOutcome.result.totalChecks > 0
35
- ? Math.round((rawOutcome.result.passedChecks / rawOutcome.result.totalChecks) * 100)
36
- : 0;
37
- const workspaceChecks = workspaceOutcome.result.totalChecks > 0
38
- ? Math.round((workspaceOutcome.result.passedChecks / workspaceOutcome.result.totalChecks) * 100)
39
- : 0;
40
- const delta = workspaceChecks - rawChecks;
60
+ const rawQuestions = questionPassRate(rawOutcome);
61
+ const workspaceQuestions = questionPassRate(workspaceOutcome);
62
+ const delta = workspaceQuestions - rawQuestions;
41
63
  const color = delta >= 0 ? chalk.green : chalk.red;
42
64
  const direction = delta >= 0 ? "improved" : "decreased";
43
65
  console.log();
44
- console.log(color(` Accuracy ${direction} from ${rawChecks}% to ${workspaceChecks}%.`));
66
+ console.log(color(` Truth-check pass rate ${direction} from ${rawQuestions}% to ${workspaceQuestions}%.`));
45
67
  }
46
68
  }
47
69
  export async function runSavedRawTest(options) {
@@ -54,13 +76,19 @@ export async function runSavedRawTest(options) {
54
76
  return null;
55
77
  }
56
78
  const { executor, error } = await resolveExecutorForSpec(spec, options.executionProfile);
79
+ if (!executor && !error) {
80
+ return null;
81
+ }
57
82
  if (!executor && error) {
58
83
  process.exitCode = 1;
59
84
  console.log(chalk.red(error));
60
85
  return null;
61
86
  }
62
87
  const target = createRawBenchmarkTarget(options.sourcePath);
63
- const run = await runBenchmarkAuto(options.sourcePath, spec, [target], { executor });
88
+ const run = await runBenchmarkAuto(options.sourcePath, spec, [target], {
89
+ executor,
90
+ preserveSandboxes: options.preserveSandboxes ?? "on-failure",
91
+ });
64
92
  const result = run.results[0];
65
93
  if (!result)
66
94
  return null;
@@ -88,12 +116,18 @@ export async function runSavedWorkspaceTest(options) {
88
116
  return null;
89
117
  }
90
118
  const { executor, error } = await resolveExecutorForSpec(spec, options.executionProfile);
119
+ if (!executor && !error) {
120
+ return null;
121
+ }
91
122
  if (!executor && error) {
92
123
  process.exitCode = 1;
93
124
  console.log(chalk.red(error));
94
125
  return null;
95
126
  }
96
- const run = await runBenchmarkAuto(options.sourcePath, spec, [target], { executor });
127
+ const run = await runBenchmarkAuto(options.sourcePath, spec, [target], {
128
+ executor,
129
+ preserveSandboxes: options.preserveSandboxes ?? "on-failure",
130
+ });
97
131
  const result = run.results[0];
98
132
  if (!result)
99
133
  return null;
@@ -1 +1 @@
1
- {"version":3,"file":"test-flow.js","sourceRoot":"","sources":["../../src/commands/test-flow.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"test-flow.js","sourceRoot":"","sources":["../../src/commands/test-flow.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"test.d.ts","sourceRoot":"","sources":["../../src/commands/test.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AAuB3C,eAAO,MAAM,WAAW,EAAE,aAQzB,CAAC;AAkDF,wBAAsB,cAAc,CAAC,IAAI,GAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CA8EtF"}
1
+ {"version":3,"file":"test.d.ts","sourceRoot":"","sources":["../../src/commands/test.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AAwB3C,eAAO,MAAM,WAAW,EAAE,aAczB,CAAC;AAuDF,wBAAsB,cAAc,CAAC,IAAI,GAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAkFtF"}
@@ -1,6 +1,6 @@
1
1
  import chalk from "chalk";
2
2
  import * as p from "@clack/prompts";
3
- import { detectInterf, resolveSourceFolderPath, } from "../lib/interf.js";
3
+ import { detectInterf, resolveSourceControlPath, } from "../lib/interf.js";
4
4
  import { loadSourceFolderConfig } from "../lib/source-config.js";
5
5
  import { addExecutionProfileOptions, executionProfileFromArgv, } from "../lib/execution-profile.js";
6
6
  import { chooseWorkspaceConfigToBuild, findBuiltWorkspacePath, findSavedWorkspaceConfig, } from "./workspace-flow.js";
@@ -8,12 +8,20 @@ import { printSavedTestComparison, runSavedRawTest, runSavedWorkspaceTest, } fro
8
8
  export const testCommand = {
9
9
  command: "test",
10
10
  aliases: ["benchmark"],
11
- describe: "Run your saved questions on raw files or a workspace",
12
- builder: (yargs) => addExecutionProfileOptions(yargs),
11
+ describe: "Run saved truth checks on raw data or a workspace",
12
+ builder: (yargs) => addExecutionProfileOptions(yargs).option("keep-sandboxes", {
13
+ type: "boolean",
14
+ default: false,
15
+ describe: "Keep every raw or workspace test sandbox under interf/benchmarks/sandboxes for review instead of pruning successful runs",
16
+ }),
13
17
  handler: async (argv) => {
14
18
  await runTestCommand(argv);
15
19
  },
16
20
  };
21
+ function readSandboxRetentionMode(argv) {
22
+ const enabled = argv["keep-sandboxes"] ?? argv.keepSandboxes ?? false;
23
+ return enabled ? "always" : "on-failure";
24
+ }
17
25
  async function chooseTestMode(options) {
18
26
  if (!options.hasBuiltWorkspace) {
19
27
  const selected = await p.select({
@@ -62,7 +70,7 @@ async function chooseTestMode(options) {
62
70
  export async function runTestCommand(argv = {}) {
63
71
  const cwd = process.cwd();
64
72
  const detected = detectInterf(cwd);
65
- const sourcePath = detected ? resolveSourceFolderPath(detected.path, detected.config) : cwd;
73
+ const sourcePath = detected ? resolveSourceControlPath(detected.path) : cwd;
66
74
  const config = loadSourceFolderConfig(sourcePath);
67
75
  if (!config) {
68
76
  process.exitCode = 1;
@@ -76,6 +84,8 @@ export async function runTestCommand(argv = {}) {
76
84
  sourcePath,
77
85
  selectMessage: "Which workspace do you want to test?",
78
86
  });
87
+ if (selectedWorkspace === undefined)
88
+ return;
79
89
  if (!selectedWorkspace) {
80
90
  process.exitCode = 1;
81
91
  console.log(chalk.red(" No workspaces are set up for this folder yet."));
@@ -84,11 +94,12 @@ export async function runTestCommand(argv = {}) {
84
94
  }
85
95
  if (selectedWorkspace.checks.length === 0) {
86
96
  process.exitCode = 1;
87
- console.log(chalk.red(` Workspace "${selectedWorkspace.name}" does not have any saved questions yet.`));
97
+ console.log(chalk.red(` Workspace "${selectedWorkspace.name}" does not have any saved truth checks yet.`));
88
98
  console.log(chalk.dim(" Run `interf` or `interf init` to add a few first."));
89
99
  return;
90
100
  }
91
101
  const executionProfile = executionProfileFromArgv(argv);
102
+ const preserveSandboxes = readSandboxRetentionMode(argv);
92
103
  const builtWorkspacePath = detected?.path ?? findBuiltWorkspacePath(sourcePath, selectedWorkspace.name);
93
104
  const hasBuiltWorkspace = Boolean(builtWorkspacePath);
94
105
  const mode = detected
@@ -110,6 +121,7 @@ export async function runTestCommand(argv = {}) {
110
121
  sourcePath,
111
122
  workspaceConfig: selectedWorkspace,
112
123
  executionProfile,
124
+ preserveSandboxes,
113
125
  })
114
126
  : null;
115
127
  const workspaceOutcome = mode === "workspace" || mode === "both"
@@ -118,6 +130,7 @@ export async function runTestCommand(argv = {}) {
118
130
  workspaceConfig: selectedWorkspace,
119
131
  executionProfile,
120
132
  workspacePath: builtWorkspacePath,
133
+ preserveSandboxes,
121
134
  })
122
135
  : null;
123
136
  if ((mode === "workspace" || mode === "both") && !workspaceOutcome) {
@@ -1 +1 @@
1
- {"version":3,"file":"test.js","sourceRoot":"","sources":["../../src/commands/test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"test.js","sourceRoot":"","sources":["../../src/commands/test.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,5 @@
1
1
  import type { SourceWorkspaceConfig } from "../lib/schema.js";
2
+ import { type StageShellRetentionMode } from "../lib/workflows.js";
2
3
  import type { WorkflowExecutor } from "../lib/executors.js";
3
4
  import type { WorkspaceCompileResult } from "../lib/workflows.js";
4
5
  export interface SavedWorkspaceEntry {
@@ -11,11 +12,12 @@ export declare function findSavedWorkspaceConfig(sourcePath: string, workspaceNa
11
12
  export declare function chooseWorkspaceConfigToBuild(options: {
12
13
  sourcePath: string;
13
14
  selectMessage: string;
14
- }): Promise<SourceWorkspaceConfig | null>;
15
+ }): Promise<SourceWorkspaceConfig | null | undefined>;
15
16
  export declare function createWorkspaceFromConfig(sourcePath: string, workspaceConfig: Pick<SourceWorkspaceConfig, "name" | "about" | "workflow">): string;
16
17
  export declare function ensureWorkspaceFromConfig(sourcePath: string, workspaceConfig: Pick<SourceWorkspaceConfig, "name" | "about" | "workflow">): string;
17
18
  export declare function compileWorkspaceWithReporter(executor: WorkflowExecutor, workspacePath: string, options?: {
18
19
  heading?: string;
19
20
  successMessage?: string;
21
+ preserveStageShells?: StageShellRetentionMode;
20
22
  }): Promise<WorkspaceCompileResult>;
21
23
  //# sourceMappingURL=workspace-flow.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"workspace-flow.d.ts","sourceRoot":"","sources":["../../src/commands/workspace-flow.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,kBAAkB,CAAC;AAM9D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAE5D,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,qBAAqB,CAAC;AAElE,MAAM,WAAW,mBAAmB;IAClC,MAAM,EAAE,qBAAqB,CAAC;IAC9B,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;CACrB;AASD,wBAAgB,yBAAyB,CAAC,UAAU,EAAE,MAAM,GAAG,mBAAmB,EAAE,CASnF;AAED,wBAAgB,sBAAsB,CACpC,UAAU,EAAE,MAAM,EAClB,aAAa,EAAE,MAAM,GACpB,MAAM,GAAG,IAAI,CAEf;AAED,wBAAgB,wBAAwB,CACtC,UAAU,EAAE,MAAM,EAClB,aAAa,EAAE,MAAM,GACpB,qBAAqB,GAAG,IAAI,CAE9B;AAED,wBAAsB,4BAA4B,CAAC,OAAO,EAAE;IAC1D,UAAU,EAAE,MAAM,CAAC;IACnB,aAAa,EAAE,MAAM,CAAC;CACvB,GAAG,OAAO,CAAC,qBAAqB,GAAG,IAAI,CAAC,CAyBxC;AAED,wBAAgB,yBAAyB,CACvC,UAAU,EAAE,MAAM,EAClB,eAAe,EAAE,IAAI,CAAC,qBAAqB,EAAE,MAAM,GAAG,OAAO,GAAG,UAAU,CAAC,GAC1E,MAAM,CAUR;AAED,wBAAgB,yBAAyB,CACvC,UAAU,EAAE,MAAM,EAClB,eAAe,EAAE,IAAI,CAAC,qBAAqB,EAAE,MAAM,GAAG,OAAO,GAAG,UAAU,CAAC,GAC1E,MAAM,CAQR;AAED,wBAAsB,4BAA4B,CAChD,QAAQ,EAAE,gBAAgB,EAC1B,aAAa,EAAE,MAAM,EACrB,OAAO,GAAE;IACP,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,cAAc,CAAC,EAAE,MAAM,CAAC;CACpB,GACL,OAAO,CAAC,sBAAsB,CAAC,CA2BjC"}
1
+ {"version":3,"file":"workspace-flow.d.ts","sourceRoot":"","sources":["../../src/commands/workspace-flow.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,kBAAkB,CAAC;AAC9D,OAAO,EAGL,KAAK,uBAAuB,EAE7B,MAAM,qBAAqB,CAAC;AAC7B,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAE5D,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,qBAAqB,CAAC;AAElE,MAAM,WAAW,mBAAmB;IAClC,MAAM,EAAE,qBAAqB,CAAC;IAC9B,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;CACrB;AASD,wBAAgB,yBAAyB,CAAC,UAAU,EAAE,MAAM,GAAG,mBAAmB,EAAE,CASnF;AAED,wBAAgB,sBAAsB,CACpC,UAAU,EAAE,MAAM,EAClB,aAAa,EAAE,MAAM,GACpB,MAAM,GAAG,IAAI,CAEf;AAED,wBAAgB,wBAAwB,CACtC,UAAU,EAAE,MAAM,EAClB,aAAa,EAAE,MAAM,GACpB,qBAAqB,GAAG,IAAI,CAE9B;AAED,wBAAsB,4BAA4B,CAAC,OAAO,EAAE;IAC1D,UAAU,EAAE,MAAM,CAAC;IACnB,aAAa,EAAE,MAAM,CAAC;CACvB,GAAG,OAAO,CAAC,qBAAqB,GAAG,IAAI,GAAG,SAAS,CAAC,CAyBpD;AAED,wBAAgB,yBAAyB,CACvC,UAAU,EAAE,MAAM,EAClB,eAAe,EAAE,IAAI,CAAC,qBAAqB,EAAE,MAAM,GAAG,OAAO,GAAG,UAAU,CAAC,GAC1E,MAAM,CAUR;AAED,wBAAgB,yBAAyB,CACvC,UAAU,EAAE,MAAM,EAClB,eAAe,EAAE,IAAI,CAAC,qBAAqB,EAAE,MAAM,GAAG,OAAO,GAAG,UAAU,CAAC,GAC1E,MAAM,CAQR;AAED,wBAAsB,4BAA4B,CAChD,QAAQ,EAAE,gBAAgB,EAC1B,aAAa,EAAE,MAAM,EACrB,OAAO,GAAE;IACP,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,mBAAmB,CAAC,EAAE,uBAAuB,CAAC;CAC1C,GACL,OAAO,CAAC,sBAAsB,CAAC,CA4BjC"}
@@ -10,8 +10,8 @@ function formatSavedWorkspaceHint(config) {
10
10
  if (config.about)
11
11
  return config.about;
12
12
  if (checkCount === 0)
13
- return "No saved questions yet";
14
- return `${checkCount} saved question${checkCount === 1 ? "" : "s"}`;
13
+ return "No saved truth checks yet";
14
+ return `${checkCount} saved truth check${checkCount === 1 ? "" : "s"}`;
15
15
  }
16
16
  export function listSavedWorkspaceEntries(sourcePath) {
17
17
  const builtByName = new Map(listWorkspacesForSourceFolder(sourcePath).map((entry) => [entry.config.name, entry.path]));
@@ -46,7 +46,7 @@ export async function chooseWorkspaceConfigToBuild(options) {
46
46
  })),
47
47
  });
48
48
  if (p.isCancel(selected))
49
- return null;
49
+ return undefined;
50
50
  return savedEntries.find((entry) => entry.config.name === selected)?.config ?? null;
51
51
  }
52
52
  export function createWorkspaceFromConfig(sourcePath, workspaceConfig) {
@@ -79,6 +79,7 @@ export async function compileWorkspaceWithReporter(executor, workspacePath, opti
79
79
  executor,
80
80
  workspacePath,
81
81
  reporter,
82
+ preserveStageShells: options.preserveStageShells,
82
83
  });
83
84
  if (!result.ok) {
84
85
  return result;
@@ -1 +1 @@
1
- {"version":3,"file":"workspace-flow.js","sourceRoot":"","sources":["../../src/commands/workspace-flow.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"workspace-flow.js","sourceRoot":"","sources":["../../src/commands/workspace-flow.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,17 @@
1
+ import type { RuntimeContractType, WorkflowZoneId } from "./schema.js";
2
+ export interface NativeStageDefinition {
3
+ id: string;
4
+ label: string;
5
+ description: string;
6
+ contractType: RuntimeContractType;
7
+ skillDir: string;
8
+ reads: WorkflowZoneId[];
9
+ writes: WorkflowZoneId[];
10
+ }
11
+ export declare function renderClaudeBootstrap(content: string): string;
12
+ export declare function pruneStageExecutionShells(workspacePath: string): void;
13
+ export declare function projectWorkspaceQueryShell(workspacePath: string, workspaceName: string, workflowId: string, about?: string): boolean;
14
+ export declare function createStageExecutionShell(workspacePath: string, workspaceName: string, workflowId: string, stage: NativeStageDefinition): {
15
+ rootPath: string;
16
+ };
17
+ //# sourceMappingURL=agent-shells.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agent-shells.d.ts","sourceRoot":"","sources":["../../src/lib/agent-shells.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAGV,mBAAmB,EAGnB,cAAc,EACf,MAAM,aAAa,CAAC;AAWrB,MAAM,WAAW,qBAAqB;IACpC,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,mBAAmB,CAAC;IAClC,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,cAAc,EAAE,CAAC;IACxB,MAAM,EAAE,cAAc,EAAE,CAAC;CAC1B;AA4UD,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAO7D;AAED,wBAAgB,yBAAyB,CAAC,aAAa,EAAE,MAAM,GAAG,IAAI,CAErE;AAED,wBAAgB,0BAA0B,CACxC,aAAa,EAAE,MAAM,EACrB,aAAa,EAAE,MAAM,EACrB,UAAU,EAAE,MAAM,EAClB,KAAK,CAAC,EAAE,MAAM,GACb,OAAO,CAeT;AAED,wBAAgB,yBAAyB,CACvC,aAAa,EAAE,MAAM,EACrB,aAAa,EAAE,MAAM,EACrB,UAAU,EAAE,MAAM,EAClB,KAAK,EAAE,qBAAqB,GAC3B;IAAE,QAAQ,EAAE,MAAM,CAAA;CAAE,CAoCtB"}
@@ -0,0 +1,294 @@
1
+ import { existsSync, mkdirSync, readFileSync, rmSync, writeFileSync, symlinkSync, } from "node:fs";
2
+ import { dirname, join } from "node:path";
3
+ import { WORKFLOW_PACKAGE_DIR } from "./interf-detect.js";
4
+ import { renderWorkspaceAgents, renderWorkspaceQuerySkill, } from "./workspace-docs.js";
5
+ import { ensureWorkspaceZoneTargets, readWorkspaceSchemaFile, workspaceZoneAbsolutePath, } from "./workspace-schema.js";
6
+ const LOCAL_SKILL_ROOTS = [
7
+ ".claude/skills",
8
+ ".codex/skills",
9
+ ".agents/skills",
10
+ ".cursor/skills",
11
+ ];
12
+ function stageShellsRoot(workspacePath) {
13
+ return join(workspacePath, ".interf", "execution-shells");
14
+ }
15
+ function stageShellWorkflowRoot(shellRoot) {
16
+ return join(shellRoot, WORKFLOW_PACKAGE_DIR);
17
+ }
18
+ function shellInputZonePath(shellRoot, zoneId) {
19
+ return join(shellRoot, "inputs", zoneId);
20
+ }
21
+ function shellOutputZonePath(shellRoot, zoneId) {
22
+ return join(shellRoot, "outputs", zoneId);
23
+ }
24
+ function shellRuntimePath(shellRoot, relativePath) {
25
+ return join(shellRoot, "runtime", relativePath);
26
+ }
27
+ function writeIfChanged(path, content) {
28
+ if (existsSync(path) && readFileSync(path, "utf8") === content) {
29
+ return false;
30
+ }
31
+ mkdirSync(dirname(path), { recursive: true });
32
+ writeFileSync(path, content);
33
+ return true;
34
+ }
35
+ function writeNativeSkillCopies(rootPath, skillName, content) {
36
+ let changed = false;
37
+ for (const skillsRoot of LOCAL_SKILL_ROOTS) {
38
+ const skillPath = join(rootPath, skillsRoot, skillName, "SKILL.md");
39
+ changed = writeIfChanged(skillPath, content) || changed;
40
+ }
41
+ return changed;
42
+ }
43
+ function linkPath(targetPath, linkPathname) {
44
+ mkdirSync(dirname(linkPathname), { recursive: true });
45
+ symlinkSync(targetPath, linkPathname);
46
+ }
47
+ function loadWorkspaceSchema(workspacePath) {
48
+ const schema = readWorkspaceSchemaFile(join(workspacePath, WORKFLOW_PACKAGE_DIR));
49
+ if (!schema) {
50
+ throw new Error(`Missing workflow workspace schema at ${join(workspacePath, WORKFLOW_PACKAGE_DIR, "workspace.schema.json")}`);
51
+ }
52
+ return schema;
53
+ }
54
+ function zoneMap(schema) {
55
+ return new Map(schema.zones.map((zone) => [zone.id, zone]));
56
+ }
57
+ function zoneOrThrow(zones, zoneId) {
58
+ const zone = zones.get(zoneId);
59
+ if (!zone) {
60
+ throw new Error(`Missing workspace schema zone "${zoneId}" for stage shell projection.`);
61
+ }
62
+ return zone;
63
+ }
64
+ function ensureWorkspaceExecutionSurface(workspacePath) {
65
+ mkdirSync(join(workspacePath, ".interf"), { recursive: true });
66
+ mkdirSync(join(workspacePath, WORKFLOW_PACKAGE_DIR), { recursive: true });
67
+ const schema = loadWorkspaceSchema(workspacePath);
68
+ ensureWorkspaceZoneTargets(workspacePath, schema);
69
+ return schema;
70
+ }
71
+ function readStageMethodDoc(workspacePath, stage) {
72
+ const path = join(workspacePath, WORKFLOW_PACKAGE_DIR, "compile", "stages", stage.skillDir, "SKILL.md");
73
+ if (!existsSync(path))
74
+ return null;
75
+ return readFileSync(path, "utf8").trim();
76
+ }
77
+ function stageWorkflowDocsPath(workspacePath, stage) {
78
+ return join(workspacePath, WORKFLOW_PACKAGE_DIR, "compile", "stages", stage.skillDir);
79
+ }
80
+ function renderStageExecutionAgents(workspaceName, workflowId, stage) {
81
+ return [
82
+ `# ${workspaceName} — ${stage.label} Execution Shell`,
83
+ "",
84
+ "This is an ephemeral Interf stage-execution shell.",
85
+ "It is for automated pipeline execution only, not for manual querying.",
86
+ "",
87
+ "## Start Here",
88
+ "",
89
+ "1. Read `runtime/stage-contract.json` now.",
90
+ "2. Read `runtime/paths.json` now.",
91
+ "3. Use the local native `interf-stage` skill now.",
92
+ `4. Execute only the current stage: \`${stage.id}\` (${stage.label}).`,
93
+ "",
94
+ "## Shell ABI",
95
+ "",
96
+ "- `inputs/<zone-id>/` = read mounts for the current stage.",
97
+ "- `outputs/<zone-id>/` = write mounts for the current stage.",
98
+ "- schema-declared workspace paths are also projected at the shell root so workflow-relative contract paths stay valid.",
99
+ "- `runtime/` = stage contract and machine-readable path map for this shell.",
100
+ "- `workflow/` = workflow metadata, workspace schema, and docs for the current stage only.",
101
+ "",
102
+ "## Boundaries",
103
+ "",
104
+ `- Workflow: \`${workflowId}\`.`,
105
+ `- Contract type: \`${stage.contractType}\`.`,
106
+ "- This shell has its own AGENTS/CLAUDE/native skills. It does not inherit the compiled workspace query shell.",
107
+ "- The compiled workspace root itself is not linked into this shell.",
108
+ "- Do not switch into query mode or act like a user-facing assistant.",
109
+ "- Do not modify files under `inputs/` unless the same zone is also mounted under `outputs/`.",
110
+ "",
111
+ "## Current Stage Zones",
112
+ "",
113
+ `- reads: ${stage.reads.join(", ")}`,
114
+ `- writes: ${stage.writes.join(", ")}`,
115
+ "",
116
+ "## Goal",
117
+ "",
118
+ "- complete the current stage",
119
+ "- honor the deterministic contract",
120
+ "- write outputs through the declared zone mounts",
121
+ "- stop when the stage is complete",
122
+ "",
123
+ ].join("\n");
124
+ }
125
+ function renderStageExecutionSkill(stage, stageMethodDoc) {
126
+ return [
127
+ "---",
128
+ "name: interf-stage",
129
+ "description: >",
130
+ ` Native local execution skill for the ${stage.label} stage in this Interf`,
131
+ " compile run. Use it only inside an automated stage execution shell.",
132
+ "---",
133
+ "",
134
+ `# Interf Stage Execution — ${stage.label}`,
135
+ "",
136
+ "This local native skill exists for automated Interf stage execution.",
137
+ "Read `runtime/stage-contract.json` first.",
138
+ "Then read `runtime/paths.json` and use the mounted `inputs/` and `outputs/` zones for this stage.",
139
+ "Do not switch into manual query mode.",
140
+ "",
141
+ "## Current Stage",
142
+ "",
143
+ `- id: \`${stage.id}\``,
144
+ `- label: ${stage.label}`,
145
+ `- contract type: \`${stage.contractType}\``,
146
+ `- reads: ${stage.reads.join(", ")}`,
147
+ `- writes: ${stage.writes.join(", ")}`,
148
+ `- editable source: \`workflow/compile/stages/${stage.skillDir}/SKILL.md\``,
149
+ "",
150
+ ...(stageMethodDoc
151
+ ? [
152
+ "## Stage Method",
153
+ "",
154
+ stageMethodDoc,
155
+ "",
156
+ ]
157
+ : []),
158
+ ].join("\n");
159
+ }
160
+ function renderWorkspaceQueryNativeSkill() {
161
+ return [
162
+ "---",
163
+ "name: interf-query",
164
+ "description: >",
165
+ " Native local query skill for this Interf compiled workspace. Use it for",
166
+ " manual questions against the compiled workspace and its raw fallback.",
167
+ "---",
168
+ "",
169
+ "# Interf Query",
170
+ "",
171
+ "This is the native local query skill for an Interf compiled workspace.",
172
+ "Use it when reading this workspace manually.",
173
+ "Editable source: `workflow/use/query/SKILL.md`.",
174
+ "",
175
+ renderWorkspaceQuerySkill().trim(),
176
+ "",
177
+ ].join("\n");
178
+ }
179
+ function syncWorkspaceNativeQuerySkillCopies(workspacePath) {
180
+ return writeNativeSkillCopies(workspacePath, "interf-query", renderWorkspaceQueryNativeSkill());
181
+ }
182
+ function projectWorkflowMetadata(workspacePath, shellRoot, stage) {
183
+ const workflowRoot = stageShellWorkflowRoot(shellRoot);
184
+ mkdirSync(join(workflowRoot, "compile", "stages"), { recursive: true });
185
+ const workflowJsonPath = join(workspacePath, WORKFLOW_PACKAGE_DIR, "workflow.json");
186
+ if (existsSync(workflowJsonPath)) {
187
+ linkPath(workflowJsonPath, join(workflowRoot, "workflow.json"));
188
+ }
189
+ const workspaceSchemaPath = join(workspacePath, WORKFLOW_PACKAGE_DIR, "workspace.schema.json");
190
+ if (existsSync(workspaceSchemaPath)) {
191
+ linkPath(workspaceSchemaPath, join(workflowRoot, "workspace.schema.json"));
192
+ }
193
+ const readmePath = join(workspacePath, WORKFLOW_PACKAGE_DIR, "README.md");
194
+ if (existsSync(readmePath)) {
195
+ linkPath(readmePath, join(workflowRoot, "README.md"));
196
+ }
197
+ const stageDocsPath = stageWorkflowDocsPath(workspacePath, stage);
198
+ if (existsSync(stageDocsPath)) {
199
+ linkPath(stageDocsPath, join(workflowRoot, "compile", "stages", stage.skillDir));
200
+ }
201
+ }
202
+ function projectWorkspaceSchemaZones(workspacePath, shellRoot, schema) {
203
+ for (const zone of schema.zones) {
204
+ linkPath(workspaceZoneAbsolutePath(workspacePath, zone), join(shellRoot, zone.path));
205
+ }
206
+ }
207
+ function buildStageZoneMounts(workspacePath, shellRoot, stage, schema) {
208
+ const zones = zoneMap(schema);
209
+ const mountFor = (zoneId) => {
210
+ const zone = zoneOrThrow(zones, zoneId);
211
+ return {
212
+ zone_id: zone.id,
213
+ workspace_path: zone.path,
214
+ shell_root_path: zone.path,
215
+ input_mount_path: stage.reads.includes(zoneId) ? `inputs/${zone.id}` : null,
216
+ output_mount_path: stage.writes.includes(zoneId) ? `outputs/${zone.id}` : null,
217
+ };
218
+ };
219
+ return {
220
+ reads: stage.reads.map(mountFor),
221
+ writes: stage.writes.map(mountFor),
222
+ };
223
+ }
224
+ function projectStageZoneMountAliases(workspacePath, shellRoot, stage, schema) {
225
+ const zones = zoneMap(schema);
226
+ for (const zoneId of new Set([...stage.reads, ...stage.writes])) {
227
+ const zone = zoneOrThrow(zones, zoneId);
228
+ const targetPath = workspaceZoneAbsolutePath(workspacePath, zone);
229
+ if (stage.reads.includes(zoneId)) {
230
+ linkPath(targetPath, shellInputZonePath(shellRoot, zoneId));
231
+ }
232
+ if (stage.writes.includes(zoneId)) {
233
+ linkPath(targetPath, shellOutputZonePath(shellRoot, zoneId));
234
+ }
235
+ }
236
+ }
237
+ function writeExecutionShellPathsFile(shellRoot, workflowId, stage, mounts) {
238
+ const paths = {
239
+ kind: "interf-execution-shell",
240
+ version: 1,
241
+ workflow: workflowId,
242
+ stage: stage.id,
243
+ reads: mounts.reads,
244
+ writes: mounts.writes,
245
+ };
246
+ writeFileSync(shellRuntimePath(shellRoot, "paths.json"), `${JSON.stringify(paths, null, 2)}\n`);
247
+ }
248
+ export function renderClaudeBootstrap(content) {
249
+ return [
250
+ "<!-- Generated from AGENTS.md. Edit AGENTS.md; Interf will rewrite this file. -->",
251
+ "",
252
+ content.trimEnd(),
253
+ "",
254
+ ].join("\n");
255
+ }
256
+ export function pruneStageExecutionShells(workspacePath) {
257
+ rmSync(stageShellsRoot(workspacePath), { recursive: true, force: true });
258
+ }
259
+ export function projectWorkspaceQueryShell(workspacePath, workspaceName, workflowId, about) {
260
+ const agentsContent = renderWorkspaceAgents(workspaceName, workflowId, about);
261
+ const querySkillContent = renderWorkspaceQuerySkill();
262
+ let changed = false;
263
+ changed = writeIfChanged(join(workspacePath, "AGENTS.md"), agentsContent) || changed;
264
+ changed =
265
+ writeIfChanged(join(workspacePath, "CLAUDE.md"), renderClaudeBootstrap(agentsContent)) || changed;
266
+ const querySkillPath = join(workspacePath, WORKFLOW_PACKAGE_DIR, "use", "query", "SKILL.md");
267
+ mkdirSync(dirname(querySkillPath), { recursive: true });
268
+ changed = writeIfChanged(querySkillPath, querySkillContent) || changed;
269
+ changed = syncWorkspaceNativeQuerySkillCopies(workspacePath) || changed;
270
+ return changed;
271
+ }
272
+ export function createStageExecutionShell(workspacePath, workspaceName, workflowId, stage) {
273
+ const schema = ensureWorkspaceExecutionSurface(workspacePath);
274
+ const shellsRoot = stageShellsRoot(workspacePath);
275
+ const shellRoot = join(shellsRoot, `${stage.id}-${Date.now().toString(36)}-${Math.random().toString(36).slice(2, 8)}`);
276
+ mkdirSync(shellRoot, { recursive: true });
277
+ mkdirSync(join(shellRoot, "runtime"), { recursive: true });
278
+ mkdirSync(join(shellRoot, "inputs"), { recursive: true });
279
+ mkdirSync(join(shellRoot, "outputs"), { recursive: true });
280
+ linkPath(join(workspacePath, "interf.json"), join(shellRoot, "interf.json"));
281
+ linkPath(join(workspacePath, ".interf", "stage-contract.json"), shellRuntimePath(shellRoot, "stage-contract.json"));
282
+ projectWorkspaceSchemaZones(workspacePath, shellRoot, schema);
283
+ projectWorkflowMetadata(workspacePath, shellRoot, stage);
284
+ projectStageZoneMountAliases(workspacePath, shellRoot, stage, schema);
285
+ writeExecutionShellPathsFile(shellRoot, workflowId, stage, buildStageZoneMounts(workspacePath, shellRoot, stage, schema));
286
+ const agentsContent = renderStageExecutionAgents(workspaceName, workflowId, stage);
287
+ writeFileSync(join(shellRoot, "AGENTS.md"), `${agentsContent}\n`);
288
+ writeFileSync(join(shellRoot, "CLAUDE.md"), renderClaudeBootstrap(agentsContent));
289
+ writeNativeSkillCopies(shellRoot, "interf-stage", renderStageExecutionSkill(stage, readStageMethodDoc(workspacePath, stage)));
290
+ return {
291
+ rootPath: shellRoot,
292
+ };
293
+ }
294
+ //# sourceMappingURL=agent-shells.js.map