@interf/compiler 0.3.2 → 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 (136) hide show
  1. package/README.md +96 -57
  2. package/dist/commands/compile.d.ts +2 -0
  3. package/dist/commands/compile.d.ts.map +1 -1
  4. package/dist/commands/compile.js +42 -10
  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 +5 -5
  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/init.js +18 -22
  12. package/dist/commands/init.js.map +1 -1
  13. package/dist/commands/source-config-wizard.d.ts +2 -1
  14. package/dist/commands/source-config-wizard.d.ts.map +1 -1
  15. package/dist/commands/source-config-wizard.js +29 -27
  16. package/dist/commands/source-config-wizard.js.map +1 -1
  17. package/dist/commands/test-flow.d.ts +4 -0
  18. package/dist/commands/test-flow.d.ts.map +1 -1
  19. package/dist/commands/test-flow.js +24 -13
  20. package/dist/commands/test-flow.js.map +1 -1
  21. package/dist/commands/test.d.ts.map +1 -1
  22. package/dist/commands/test.js +16 -5
  23. package/dist/commands/test.js.map +1 -1
  24. package/dist/commands/workspace-flow.d.ts +2 -0
  25. package/dist/commands/workspace-flow.d.ts.map +1 -1
  26. package/dist/commands/workspace-flow.js +3 -2
  27. package/dist/commands/workspace-flow.js.map +1 -1
  28. package/dist/lib/agent-shells.d.ts +17 -0
  29. package/dist/lib/agent-shells.d.ts.map +1 -0
  30. package/dist/lib/agent-shells.js +294 -0
  31. package/dist/lib/agent-shells.js.map +1 -0
  32. package/dist/lib/benchmark-execution.d.ts +5 -1
  33. package/dist/lib/benchmark-execution.d.ts.map +1 -1
  34. package/dist/lib/benchmark-execution.js +34 -12
  35. package/dist/lib/benchmark-execution.js.map +1 -1
  36. package/dist/lib/benchmark-paths.d.ts +2 -0
  37. package/dist/lib/benchmark-paths.d.ts.map +1 -1
  38. package/dist/lib/benchmark-paths.js +6 -0
  39. package/dist/lib/benchmark-paths.js.map +1 -1
  40. package/dist/lib/benchmark-sandbox.d.ts +2 -0
  41. package/dist/lib/benchmark-sandbox.d.ts.map +1 -1
  42. package/dist/lib/benchmark-sandbox.js +68 -37
  43. package/dist/lib/benchmark-sandbox.js.map +1 -1
  44. package/dist/lib/benchmark-targets.js +1 -1
  45. package/dist/lib/benchmark-targets.js.map +1 -1
  46. package/dist/lib/interf-bootstrap.d.ts +2 -13
  47. package/dist/lib/interf-bootstrap.d.ts.map +1 -1
  48. package/dist/lib/interf-bootstrap.js +7 -164
  49. package/dist/lib/interf-bootstrap.js.map +1 -1
  50. package/dist/lib/interf-detect.d.ts +1 -0
  51. package/dist/lib/interf-detect.d.ts.map +1 -1
  52. package/dist/lib/interf-detect.js +5 -18
  53. package/dist/lib/interf-detect.js.map +1 -1
  54. package/dist/lib/interf-scaffold.d.ts.map +1 -1
  55. package/dist/lib/interf-scaffold.js +7 -71
  56. package/dist/lib/interf-scaffold.js.map +1 -1
  57. package/dist/lib/interf-workflow-package.d.ts.map +1 -1
  58. package/dist/lib/interf-workflow-package.js +20 -25
  59. package/dist/lib/interf-workflow-package.js.map +1 -1
  60. package/dist/lib/interf.d.ts +3 -2
  61. package/dist/lib/interf.d.ts.map +1 -1
  62. package/dist/lib/interf.js +3 -2
  63. package/dist/lib/interf.js.map +1 -1
  64. package/dist/lib/local-workflows.d.ts +6 -1
  65. package/dist/lib/local-workflows.d.ts.map +1 -1
  66. package/dist/lib/local-workflows.js +143 -2
  67. package/dist/lib/local-workflows.js.map +1 -1
  68. package/dist/lib/runtime-contracts.d.ts.map +1 -1
  69. package/dist/lib/runtime-contracts.js +10 -4
  70. package/dist/lib/runtime-contracts.js.map +1 -1
  71. package/dist/lib/runtime-prompt.d.ts.map +1 -1
  72. package/dist/lib/runtime-prompt.js +1 -0
  73. package/dist/lib/runtime-prompt.js.map +1 -1
  74. package/dist/lib/runtime-runs.d.ts.map +1 -1
  75. package/dist/lib/runtime-runs.js +6 -2
  76. package/dist/lib/runtime-runs.js.map +1 -1
  77. package/dist/lib/runtime-types.d.ts +1 -0
  78. package/dist/lib/runtime-types.d.ts.map +1 -1
  79. package/dist/lib/schema.d.ts +88 -23
  80. package/dist/lib/schema.d.ts.map +1 -1
  81. package/dist/lib/schema.js +66 -37
  82. package/dist/lib/schema.js.map +1 -1
  83. package/dist/lib/source-config.d.ts +3 -3
  84. package/dist/lib/source-config.d.ts.map +1 -1
  85. package/dist/lib/source-config.js +8 -6
  86. package/dist/lib/source-config.js.map +1 -1
  87. package/dist/lib/state-artifacts.d.ts +2 -2
  88. package/dist/lib/state-artifacts.d.ts.map +1 -1
  89. package/dist/lib/state-artifacts.js +3 -3
  90. package/dist/lib/state-artifacts.js.map +1 -1
  91. package/dist/lib/state-io.d.ts +2 -2
  92. package/dist/lib/state-io.d.ts.map +1 -1
  93. package/dist/lib/state-io.js +5 -5
  94. package/dist/lib/state-io.js.map +1 -1
  95. package/dist/lib/state-paths.d.ts +1 -1
  96. package/dist/lib/state-paths.d.ts.map +1 -1
  97. package/dist/lib/state-paths.js +3 -3
  98. package/dist/lib/state-paths.js.map +1 -1
  99. package/dist/lib/state-view.d.ts +2 -2
  100. package/dist/lib/state-view.d.ts.map +1 -1
  101. package/dist/lib/state-view.js +6 -7
  102. package/dist/lib/state-view.js.map +1 -1
  103. package/dist/lib/state.d.ts +4 -4
  104. package/dist/lib/state.d.ts.map +1 -1
  105. package/dist/lib/state.js +3 -3
  106. package/dist/lib/state.js.map +1 -1
  107. package/dist/lib/workflow-definitions.d.ts +4 -1
  108. package/dist/lib/workflow-definitions.d.ts.map +1 -1
  109. package/dist/lib/workflow-definitions.js +38 -3
  110. package/dist/lib/workflow-definitions.js.map +1 -1
  111. package/dist/lib/workflow-stage-runner.d.ts +1 -0
  112. package/dist/lib/workflow-stage-runner.d.ts.map +1 -1
  113. package/dist/lib/workflow-stage-runner.js +2 -0
  114. package/dist/lib/workflow-stage-runner.js.map +1 -1
  115. package/dist/lib/workflows.d.ts +1 -1
  116. package/dist/lib/workflows.d.ts.map +1 -1
  117. package/dist/lib/workspace-compile.d.ts +4 -0
  118. package/dist/lib/workspace-compile.d.ts.map +1 -1
  119. package/dist/lib/workspace-compile.js +108 -66
  120. package/dist/lib/workspace-compile.js.map +1 -1
  121. package/dist/lib/workspace-docs.d.ts +3 -0
  122. package/dist/lib/workspace-docs.d.ts.map +1 -0
  123. package/dist/lib/workspace-docs.js +82 -0
  124. package/dist/lib/workspace-docs.js.map +1 -0
  125. package/dist/lib/workspace-raw.d.ts +30 -0
  126. package/dist/lib/workspace-raw.d.ts.map +1 -0
  127. package/dist/lib/workspace-raw.js +102 -0
  128. package/dist/lib/workspace-raw.js.map +1 -0
  129. package/dist/lib/workspace-schema.d.ts +26 -0
  130. package/dist/lib/workspace-schema.d.ts.map +1 -0
  131. package/dist/lib/workspace-schema.js +132 -0
  132. package/dist/lib/workspace-schema.js.map +1 -0
  133. package/package.json +1 -1
  134. package/skills/workflow/create/SKILL.md +19 -0
  135. package/skills/workspace/shape/SKILL.md +1 -1
  136. package/templates/workspace/README.md +2 -1
@@ -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,CA+EtF"}
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;
@@ -86,11 +94,12 @@ export async function runTestCommand(argv = {}) {
86
94
  }
87
95
  if (selectedWorkspace.checks.length === 0) {
88
96
  process.exitCode = 1;
89
- 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.`));
90
98
  console.log(chalk.dim(" Run `interf` or `interf init` to add a few first."));
91
99
  return;
92
100
  }
93
101
  const executionProfile = executionProfileFromArgv(argv);
102
+ const preserveSandboxes = readSandboxRetentionMode(argv);
94
103
  const builtWorkspacePath = detected?.path ?? findBuiltWorkspacePath(sourcePath, selectedWorkspace.name);
95
104
  const hasBuiltWorkspace = Boolean(builtWorkspacePath);
96
105
  const mode = detected
@@ -112,6 +121,7 @@ export async function runTestCommand(argv = {}) {
112
121
  sourcePath,
113
122
  workspaceConfig: selectedWorkspace,
114
123
  executionProfile,
124
+ preserveSandboxes,
115
125
  })
116
126
  : null;
117
127
  const workspaceOutcome = mode === "workspace" || mode === "both"
@@ -120,6 +130,7 @@ export async function runTestCommand(argv = {}) {
120
130
  workspaceConfig: selectedWorkspace,
121
131
  executionProfile,
122
132
  workspacePath: builtWorkspacePath,
133
+ preserveSandboxes,
123
134
  })
124
135
  : null;
125
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 {
@@ -17,5 +18,6 @@ export declare function ensureWorkspaceFromConfig(sourcePath: string, workspaceC
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,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;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]));
@@ -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":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,KAAK,CAAC,MAAM,gBAAgB,CAAC;AACpC,OAAO,EAAE,6BAA6B,EAAE,MAAM,kBAAkB,CAAC;AACjE,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EACL,yBAAyB,EACzB,0BAA0B,EAC1B,sBAAsB,GACvB,MAAM,yBAAyB,CAAC;AAEjC,OAAO,EACL,gBAAgB,EAChB,eAAe,GAGhB,MAAM,qBAAqB,CAAC;AAE7B,OAAO,EAAE,8BAA8B,EAAE,MAAM,6BAA6B,CAAC;AAQ7E,SAAS,wBAAwB,CAAC,MAA6B;IAC7D,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC;IACxC,IAAI,MAAM,CAAC,KAAK;QAAE,OAAO,MAAM,CAAC,KAAK,CAAC;IACtC,IAAI,UAAU,KAAK,CAAC;QAAE,OAAO,2BAA2B,CAAC;IACzD,OAAO,GAAG,UAAU,qBAAqB,UAAU,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC;AACzE,CAAC;AAED,MAAM,UAAU,yBAAyB,CAAC,UAAkB;IAC1D,MAAM,WAAW,GAAG,IAAI,GAAG,CACzB,6BAA6B,CAAC,UAAU,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,CAC1F,CAAC;IAEF,OAAO,0BAA0B,CAAC,sBAAsB,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;QACrF,MAAM;QACN,IAAI,EAAE,WAAW,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,IAAI;KAC3C,CAAC,CAAC,CAAC;AACN,CAAC;AAED,MAAM,UAAU,sBAAsB,CACpC,UAAkB,EAClB,aAAqB;IAErB,OAAO,yBAAyB,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,KAAK,aAAa,CAAC,EAAE,IAAI,IAAI,IAAI,CAAC;AAClH,CAAC;AAED,MAAM,UAAU,wBAAwB,CACtC,UAAkB,EAClB,aAAqB;IAErB,OAAO,yBAAyB,CAAC,sBAAsB,CAAC,UAAU,CAAC,EAAE,aAAa,CAAC,CAAC;AACtF,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,4BAA4B,CAAC,OAGlD;IACC,MAAM,YAAY,GAAG,yBAAyB,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;IAEnE,IAAI,YAAY,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC9B,OAAO,IAAI,CAAC;IACd,CAAC;IAED,IAAI,YAAY,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC9B,OAAO,YAAY,CAAC,CAAC,CAAC,EAAE,MAAM,IAAI,IAAI,CAAC;IACzC,CAAC;IAED,MAAM,QAAQ,GAAG,MAAM,CAAC,CAAC,MAAM,CAAC;QAC9B,OAAO,EAAE,OAAO,CAAC,aAAa;QAC9B,OAAO,EAAE,YAAY,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;YACpC,KAAK,EAAE,KAAK,CAAC,MAAM,CAAC,IAAI;YACxB,KAAK,EAAE,KAAK,CAAC,MAAM,CAAC,IAAI;YACxB,IAAI,EAAE;gBACJ,wBAAwB,CAAC,KAAK,CAAC,MAAM,CAAC;gBACtC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe;aACvC,CAAC,IAAI,CAAC,KAAK,CAAC;SACd,CAAC,CAAC;KACJ,CAAC,CAAC;IACH,IAAI,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC;QAAE,OAAO,SAAS,CAAC;IAE3C,OAAO,YAAY,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,KAAK,QAAQ,CAAC,EAAE,MAAM,IAAI,IAAI,CAAC;AACtF,CAAC;AAED,MAAM,UAAU,yBAAyB,CACvC,UAAkB,EAClB,eAA2E;IAE3E,MAAM,UAAU,GAAG,eAAe,CAAC,QAAQ,IAAI,QAAQ,CAAC;IACxD,MAAM,aAAa,GAAG,eAAe,CACnC,eAAe,CAAC,IAAI,EACpB,UAAU,EACV,UAAU,EACV,eAAe,CAAC,KAAK,CACtB,CAAC;IACF,YAAY,CAAC,eAAe,CAAC,IAAI,EAAE,aAAa,EAAE,UAAU,CAAC,CAAC;IAC9D,OAAO,aAAa,CAAC;AACvB,CAAC;AAED,MAAM,UAAU,yBAAyB,CACvC,UAAkB,EAClB,eAA2E;IAE3E,MAAM,YAAY,GAAG,sBAAsB,CAAC,UAAU,EAAE,eAAe,CAAC,IAAI,CAAC,CAAC;IAC9E,IAAI,YAAY,EAAE,CAAC;QACjB,YAAY,CAAC,eAAe,CAAC,IAAI,EAAE,YAAY,EAAE,eAAe,CAAC,QAAQ,IAAI,QAAQ,CAAC,CAAC;QACvF,OAAO,YAAY,CAAC;IACtB,CAAC;IAED,OAAO,yBAAyB,CAAC,UAAU,EAAE,eAAe,CAAC,CAAC;AAChE,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,4BAA4B,CAChD,QAA0B,EAC1B,aAAqB,EACrB,UAII,EAAE;IAEN,OAAO,CAAC,GAAG,EAAE,CAAC;IACd,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,OAAO,CAAC,OAAO,IAAI,gCAAgC,EAAE,CAAC,CAAC,CAAC;IACpF,MAAM,YAAY,GAAG,8BAA8B,CAAC,QAAQ,CAAC,gBAAgB,CAAC,CAAC;IAC/E,IAAI,YAAY,EAAE,CAAC;QACjB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,wBAAwB,YAAY,EAAE,CAAC,CAAC,CAAC;IACjE,CAAC;IACD,OAAO,CAAC,GAAG,EAAE,CAAC;IAEd,MAAM,QAAQ,GAAqB;QACjC,IAAI,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,OAAO,EAAE,CAAC,CAAC;QACzD,SAAS,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,GAAG,EAAE;KAC/B,CAAC;IAEF,MAAM,MAAM,GAAG,MAAM,gBAAgB,CAAC;QACpC,QAAQ;QACR,aAAa;QACb,QAAQ;QACR,mBAAmB,EAAE,OAAO,CAAC,mBAAmB;KACjD,CAAC,CAAC;IAEH,IAAI,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC;QACf,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,OAAO,CAAC,GAAG,EAAE,CAAC;IACd,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,OAAO,CAAC,cAAc,IAAI,2BAA2B,EAAE,CAAC,CAAC,CAAC;IACzF,OAAO,MAAM,CAAC;AAChB,CAAC"}
@@ -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
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agent-shells.js","sourceRoot":"","sources":["../../src/lib/agent-shells.ts"],"names":[],"mappings":"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"}
@@ -1,9 +1,13 @@
1
1
  import { type WorkflowExecutor } from "./executors.js";
2
2
  import type { BenchmarkRunResult, BenchmarkTargetCandidate, LoadedBenchmarkSpec } from "./benchmark-types.js";
3
+ import { type BenchmarkSandboxRetentionMode } from "./benchmark-sandbox.js";
3
4
  export declare function runBenchmark(sourcePath: string, spec: LoadedBenchmarkSpec, targets: BenchmarkTargetCandidate[]): BenchmarkRunResult;
4
- export declare function runBenchmarkWithJudge(sourcePath: string, spec: LoadedBenchmarkSpec, targets: BenchmarkTargetCandidate[], executor: WorkflowExecutor): Promise<BenchmarkRunResult>;
5
+ export declare function runBenchmarkWithJudge(sourcePath: string, spec: LoadedBenchmarkSpec, targets: BenchmarkTargetCandidate[], executor: WorkflowExecutor, options?: {
6
+ preserveSandboxes?: BenchmarkSandboxRetentionMode;
7
+ }): Promise<BenchmarkRunResult>;
5
8
  export declare function runBenchmarkAuto(sourcePath: string, spec: LoadedBenchmarkSpec, targets: BenchmarkTargetCandidate[], options?: {
6
9
  executor?: WorkflowExecutor | null;
10
+ preserveSandboxes?: BenchmarkSandboxRetentionMode;
7
11
  }): Promise<BenchmarkRunResult>;
8
12
  export declare function saveBenchmarkRun(sourcePath: string, result: BenchmarkRunResult): string;
9
13
  //# sourceMappingURL=benchmark-execution.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"benchmark-execution.d.ts","sourceRoot":"","sources":["../../src/lib/benchmark-execution.ts"],"names":[],"mappings":"AAUA,OAAO,EAA4B,KAAK,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AACjF,OAAO,KAAK,EAIV,kBAAkB,EAClB,wBAAwB,EAExB,mBAAmB,EACpB,MAAM,sBAAsB,CAAC;AAigB9B,wBAAgB,YAAY,CAC1B,UAAU,EAAE,MAAM,EAClB,IAAI,EAAE,mBAAmB,EACzB,OAAO,EAAE,wBAAwB,EAAE,GAClC,kBAAkB,CAmBpB;AAED,wBAAsB,qBAAqB,CACzC,UAAU,EAAE,MAAM,EAClB,IAAI,EAAE,mBAAmB,EACzB,OAAO,EAAE,wBAAwB,EAAE,EACnC,QAAQ,EAAE,gBAAgB,GACzB,OAAO,CAAC,kBAAkB,CAAC,CA8B7B;AAED,wBAAsB,gBAAgB,CACpC,UAAU,EAAE,MAAM,EAClB,IAAI,EAAE,mBAAmB,EACzB,OAAO,EAAE,wBAAwB,EAAE,EACnC,OAAO,CAAC,EAAE;IACR,QAAQ,CAAC,EAAE,gBAAgB,GAAG,IAAI,CAAC;CACpC,GACA,OAAO,CAAC,kBAAkB,CAAC,CAS7B;AAED,wBAAgB,gBAAgB,CAC9B,UAAU,EAAE,MAAM,EAClB,MAAM,EAAE,kBAAkB,GACzB,MAAM,CAkCR"}
1
+ {"version":3,"file":"benchmark-execution.d.ts","sourceRoot":"","sources":["../../src/lib/benchmark-execution.ts"],"names":[],"mappings":"AAUA,OAAO,EAA4B,KAAK,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AACjF,OAAO,KAAK,EAIV,kBAAkB,EAClB,wBAAwB,EAExB,mBAAmB,EACpB,MAAM,sBAAsB,CAAC;AAQ9B,OAAO,EAEL,KAAK,6BAA6B,EACnC,MAAM,wBAAwB,CAAC;AAigBhC,wBAAgB,YAAY,CAC1B,UAAU,EAAE,MAAM,EAClB,IAAI,EAAE,mBAAmB,EACzB,OAAO,EAAE,wBAAwB,EAAE,GAClC,kBAAkB,CAmBpB;AAED,wBAAsB,qBAAqB,CACzC,UAAU,EAAE,MAAM,EAClB,IAAI,EAAE,mBAAmB,EACzB,OAAO,EAAE,wBAAwB,EAAE,EACnC,QAAQ,EAAE,gBAAgB,EAC1B,OAAO,GAAE;IACP,iBAAiB,CAAC,EAAE,6BAA6B,CAAC;CAC9C,GACL,OAAO,CAAC,kBAAkB,CAAC,CAgD7B;AAED,wBAAsB,gBAAgB,CACpC,UAAU,EAAE,MAAM,EAClB,IAAI,EAAE,mBAAmB,EACzB,OAAO,EAAE,wBAAwB,EAAE,EACnC,OAAO,CAAC,EAAE;IACR,QAAQ,CAAC,EAAE,gBAAgB,GAAG,IAAI,CAAC;IACnC,iBAAiB,CAAC,EAAE,6BAA6B,CAAC;CACnD,GACA,OAAO,CAAC,kBAAkB,CAAC,CAW7B;AAED,wBAAgB,gBAAgB,CAC9B,UAAU,EAAE,MAAM,EAClB,MAAM,EAAE,kBAAkB,GACzB,MAAM,CAkCR"}
@@ -2,8 +2,8 @@ import { existsSync, mkdirSync, mkdtempSync, readFileSync, rmSync, writeFileSync
2
2
  import { join } from "node:path";
3
3
  import { tmpdir } from "node:os";
4
4
  import { buildRuntimeExecutorInfo } from "./executors.js";
5
- import { benchmarkRunGitignorePath, benchmarkRunsPath, } from "./benchmark-paths.js";
6
- import { createBenchmarkSandbox } from "./benchmark-sandbox.js";
5
+ import { benchmarkRunGitignorePath, benchmarkRunsPath, benchmarkSandboxGitignorePath, benchmarkSandboxesPath, normalizeBenchmarkId, } from "./benchmark-paths.js";
6
+ import { createBenchmarkSandbox, } from "./benchmark-sandbox.js";
7
7
  function parseWords(content) {
8
8
  return content.trim().split(/\s+/).filter(Boolean).length;
9
9
  }
@@ -199,10 +199,12 @@ function buildBenchmarkQueryPrompt(target, benchmarkCase, answerPath, tracePath)
199
199
  ? [
200
200
  "You are running an Interf benchmark inside an isolated sandboxed compiled workspace.",
201
201
  "Read `AGENTS.md` first.",
202
- "Then read `workflow/use/query/SKILL.md`.",
202
+ "Use the local native `interf-query` skill available in this workspace.",
203
+ "If you need the editable method source, read `workflow/use/query/SKILL.md`.",
203
204
  "Answer the benchmark question the same way you would answer a real user inside this compiled workspace.",
204
205
  "Prefer `home.md`, `knowledge/`, and `summaries/` before raw fallback.",
205
- "The source-folder control plane is intentionally absent from this sandbox. Work only from the sandboxed workspace and sandboxed raw files.",
206
+ "This sandbox is self-contained: the copied workspace has its own sanitized `raw/` fallback via `interf.json` `source.path`.",
207
+ "The source-folder control plane is intentionally absent from this sandbox. Work only from this sandboxed workspace and its embedded raw files.",
206
208
  ]
207
209
  : [
208
210
  "You are running an Interf baseline test inside an isolated sandbox of the raw files for this folder.",
@@ -371,7 +373,7 @@ async function runBenchmarkCaseWithJudge(target, benchmarkCase, executor) {
371
373
  checks,
372
374
  };
373
375
  }
374
- function buildBenchmarkTargetResult(target, caseResults) {
376
+ function buildBenchmarkTargetResult(target, caseResults, options = {}) {
375
377
  const passedCases = caseResults.filter((result) => result.ok).length;
376
378
  const passedChecks = caseResults.reduce((total, result) => total + result.passedChecks, 0);
377
379
  const totalChecks = caseResults.reduce((total, result) => total + result.totalChecks, 0);
@@ -382,6 +384,7 @@ function buildBenchmarkTargetResult(target, caseResults) {
382
384
  path: target.path,
383
385
  workflow: target.workflow,
384
386
  },
387
+ ...(options.sandboxPath ? { sandbox_path: options.sandboxPath } : {}),
385
388
  ok: passedCases === caseResults.length,
386
389
  passedCases,
387
390
  totalCases: caseResults.length,
@@ -390,11 +393,11 @@ function buildBenchmarkTargetResult(target, caseResults) {
390
393
  caseResults,
391
394
  };
392
395
  }
393
- function buildBenchmarkRunResult(sourcePath, spec, results, executor) {
396
+ function buildBenchmarkRunResult(sourcePath, spec, results, executor, generatedAt) {
394
397
  return {
395
398
  kind: "interf-benchmark-run",
396
399
  version: 1,
397
- generated_at: new Date().toISOString(),
400
+ generated_at: generatedAt ?? new Date().toISOString(),
398
401
  benchmark: {
399
402
  id: spec.id,
400
403
  name: spec.name,
@@ -429,14 +432,17 @@ export function runBenchmark(sourcePath, spec, targets) {
429
432
  const results = targets.map((target) => buildBenchmarkTargetResult(target, spec.cases.map((benchmarkCase) => runBenchmarkCase(target, benchmarkCase))));
430
433
  return buildBenchmarkRunResult(sourcePath, spec, results);
431
434
  }
432
- export async function runBenchmarkWithJudge(sourcePath, spec, targets, executor) {
435
+ export async function runBenchmarkWithJudge(sourcePath, spec, targets, executor, options = {}) {
436
+ const preserveMode = options.preserveSandboxes ?? "on-failure";
437
+ const generatedAt = new Date().toISOString();
438
+ const sandboxRunId = `${generatedAt.replace(/[:.]/g, "-")}-${spec.id}`;
433
439
  for (const target of targets) {
434
440
  if (target.type !== spec.type) {
435
441
  throw new Error(`Benchmark target type mismatch: expected ${spec.type}, got ${target.type}`);
436
442
  }
437
443
  }
438
444
  const results = [];
439
- for (const target of targets) {
445
+ for (const [index, target] of targets.entries()) {
440
446
  const sandbox = createBenchmarkSandbox(target);
441
447
  try {
442
448
  const sandboxTarget = {
@@ -452,20 +458,36 @@ export async function runBenchmarkWithJudge(sourcePath, spec, targets, executor)
452
458
  caseResults.push(await runBenchmarkCaseWithJudge(sandboxTarget, benchmarkCase, executor));
453
459
  }
454
460
  }
455
- results.push(buildBenchmarkTargetResult(target, caseResults));
461
+ let sandboxPath;
462
+ const targetResult = buildBenchmarkTargetResult(target, caseResults);
463
+ const shouldPreserveSandbox = preserveMode === "always" || !targetResult.ok;
464
+ if (shouldPreserveSandbox) {
465
+ const sandboxRoot = benchmarkSandboxesPath(sourcePath, target.type);
466
+ mkdirSync(sandboxRoot, { recursive: true });
467
+ const gitignorePath = benchmarkSandboxGitignorePath(sourcePath, target.type);
468
+ if (!existsSync(gitignorePath)) {
469
+ writeFileSync(gitignorePath, "*\n!.gitignore\n");
470
+ }
471
+ const sandboxPathName = `${String(index + 1).padStart(2, "0")}-${normalizeBenchmarkId(target.name) || target.type}`;
472
+ sandbox.preserve(join(sandboxRoot, sandboxRunId, sandboxPathName));
473
+ sandboxPath = sandbox.targetPath;
474
+ }
475
+ results.push(buildBenchmarkTargetResult(target, caseResults, { sandboxPath }));
456
476
  }
457
477
  finally {
458
478
  sandbox.cleanup();
459
479
  }
460
480
  }
461
- return buildBenchmarkRunResult(sourcePath, spec, results, executor);
481
+ return buildBenchmarkRunResult(sourcePath, spec, results, executor, generatedAt);
462
482
  }
463
483
  export async function runBenchmarkAuto(sourcePath, spec, targets, options) {
464
484
  if (spec.cases.some((benchmarkCase) => benchmarkCaseNeedsExecutor(benchmarkCase))) {
465
485
  if (!options?.executor) {
466
486
  throw new Error("This benchmark needs a live local executor, but no executor was provided.");
467
487
  }
468
- return runBenchmarkWithJudge(sourcePath, spec, targets, options.executor);
488
+ return runBenchmarkWithJudge(sourcePath, spec, targets, options.executor, {
489
+ preserveSandboxes: options.preserveSandboxes,
490
+ });
469
491
  }
470
492
  return runBenchmark(sourcePath, spec, targets);
471
493
  }