@interf/compiler 0.3.2 → 0.3.4

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 (139) hide show
  1. package/README.md +124 -173
  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 +2 -2
  10. package/dist/commands/default.js.map +1 -1
  11. package/dist/commands/doctor.js +7 -7
  12. package/dist/commands/doctor.js.map +1 -1
  13. package/dist/commands/init.js +19 -23
  14. package/dist/commands/init.js.map +1 -1
  15. package/dist/commands/source-config-wizard.d.ts +2 -1
  16. package/dist/commands/source-config-wizard.d.ts.map +1 -1
  17. package/dist/commands/source-config-wizard.js +29 -27
  18. package/dist/commands/source-config-wizard.js.map +1 -1
  19. package/dist/commands/test-flow.d.ts +4 -0
  20. package/dist/commands/test-flow.d.ts.map +1 -1
  21. package/dist/commands/test-flow.js +24 -13
  22. package/dist/commands/test-flow.js.map +1 -1
  23. package/dist/commands/test.d.ts.map +1 -1
  24. package/dist/commands/test.js +16 -5
  25. package/dist/commands/test.js.map +1 -1
  26. package/dist/commands/workspace-flow.d.ts +2 -0
  27. package/dist/commands/workspace-flow.d.ts.map +1 -1
  28. package/dist/commands/workspace-flow.js +3 -2
  29. package/dist/commands/workspace-flow.js.map +1 -1
  30. package/dist/lib/agent-shells.d.ts +17 -0
  31. package/dist/lib/agent-shells.d.ts.map +1 -0
  32. package/dist/lib/agent-shells.js +295 -0
  33. package/dist/lib/agent-shells.js.map +1 -0
  34. package/dist/lib/benchmark-execution.d.ts +5 -1
  35. package/dist/lib/benchmark-execution.d.ts.map +1 -1
  36. package/dist/lib/benchmark-execution.js +34 -12
  37. package/dist/lib/benchmark-execution.js.map +1 -1
  38. package/dist/lib/benchmark-paths.d.ts +2 -0
  39. package/dist/lib/benchmark-paths.d.ts.map +1 -1
  40. package/dist/lib/benchmark-paths.js +6 -0
  41. package/dist/lib/benchmark-paths.js.map +1 -1
  42. package/dist/lib/benchmark-sandbox.d.ts +2 -0
  43. package/dist/lib/benchmark-sandbox.d.ts.map +1 -1
  44. package/dist/lib/benchmark-sandbox.js +68 -37
  45. package/dist/lib/benchmark-sandbox.js.map +1 -1
  46. package/dist/lib/benchmark-targets.js +1 -1
  47. package/dist/lib/benchmark-targets.js.map +1 -1
  48. package/dist/lib/interf-bootstrap.d.ts +2 -13
  49. package/dist/lib/interf-bootstrap.d.ts.map +1 -1
  50. package/dist/lib/interf-bootstrap.js +7 -164
  51. package/dist/lib/interf-bootstrap.js.map +1 -1
  52. package/dist/lib/interf-detect.d.ts +1 -0
  53. package/dist/lib/interf-detect.d.ts.map +1 -1
  54. package/dist/lib/interf-detect.js +5 -18
  55. package/dist/lib/interf-detect.js.map +1 -1
  56. package/dist/lib/interf-scaffold.d.ts.map +1 -1
  57. package/dist/lib/interf-scaffold.js +7 -71
  58. package/dist/lib/interf-scaffold.js.map +1 -1
  59. package/dist/lib/interf-workflow-package.d.ts.map +1 -1
  60. package/dist/lib/interf-workflow-package.js +21 -26
  61. package/dist/lib/interf-workflow-package.js.map +1 -1
  62. package/dist/lib/interf.d.ts +3 -2
  63. package/dist/lib/interf.d.ts.map +1 -1
  64. package/dist/lib/interf.js +3 -2
  65. package/dist/lib/interf.js.map +1 -1
  66. package/dist/lib/local-workflows.d.ts +6 -1
  67. package/dist/lib/local-workflows.d.ts.map +1 -1
  68. package/dist/lib/local-workflows.js +143 -2
  69. package/dist/lib/local-workflows.js.map +1 -1
  70. package/dist/lib/runtime-contracts.d.ts.map +1 -1
  71. package/dist/lib/runtime-contracts.js +10 -4
  72. package/dist/lib/runtime-contracts.js.map +1 -1
  73. package/dist/lib/runtime-prompt.d.ts.map +1 -1
  74. package/dist/lib/runtime-prompt.js +1 -0
  75. package/dist/lib/runtime-prompt.js.map +1 -1
  76. package/dist/lib/runtime-runs.d.ts.map +1 -1
  77. package/dist/lib/runtime-runs.js +6 -2
  78. package/dist/lib/runtime-runs.js.map +1 -1
  79. package/dist/lib/runtime-types.d.ts +1 -0
  80. package/dist/lib/runtime-types.d.ts.map +1 -1
  81. package/dist/lib/schema.d.ts +88 -23
  82. package/dist/lib/schema.d.ts.map +1 -1
  83. package/dist/lib/schema.js +66 -37
  84. package/dist/lib/schema.js.map +1 -1
  85. package/dist/lib/source-config.d.ts +3 -3
  86. package/dist/lib/source-config.d.ts.map +1 -1
  87. package/dist/lib/source-config.js +8 -6
  88. package/dist/lib/source-config.js.map +1 -1
  89. package/dist/lib/state-artifacts.d.ts +2 -2
  90. package/dist/lib/state-artifacts.d.ts.map +1 -1
  91. package/dist/lib/state-artifacts.js +3 -3
  92. package/dist/lib/state-artifacts.js.map +1 -1
  93. package/dist/lib/state-io.d.ts +2 -2
  94. package/dist/lib/state-io.d.ts.map +1 -1
  95. package/dist/lib/state-io.js +5 -5
  96. package/dist/lib/state-io.js.map +1 -1
  97. package/dist/lib/state-paths.d.ts +1 -1
  98. package/dist/lib/state-paths.d.ts.map +1 -1
  99. package/dist/lib/state-paths.js +3 -3
  100. package/dist/lib/state-paths.js.map +1 -1
  101. package/dist/lib/state-view.d.ts +2 -2
  102. package/dist/lib/state-view.d.ts.map +1 -1
  103. package/dist/lib/state-view.js +6 -7
  104. package/dist/lib/state-view.js.map +1 -1
  105. package/dist/lib/state.d.ts +4 -4
  106. package/dist/lib/state.d.ts.map +1 -1
  107. package/dist/lib/state.js +3 -3
  108. package/dist/lib/state.js.map +1 -1
  109. package/dist/lib/workflow-definitions.d.ts +4 -1
  110. package/dist/lib/workflow-definitions.d.ts.map +1 -1
  111. package/dist/lib/workflow-definitions.js +41 -6
  112. package/dist/lib/workflow-definitions.js.map +1 -1
  113. package/dist/lib/workflow-stage-runner.d.ts +1 -0
  114. package/dist/lib/workflow-stage-runner.d.ts.map +1 -1
  115. package/dist/lib/workflow-stage-runner.js +2 -0
  116. package/dist/lib/workflow-stage-runner.js.map +1 -1
  117. package/dist/lib/workflows.d.ts +1 -1
  118. package/dist/lib/workflows.d.ts.map +1 -1
  119. package/dist/lib/workspace-compile.d.ts +4 -0
  120. package/dist/lib/workspace-compile.d.ts.map +1 -1
  121. package/dist/lib/workspace-compile.js +108 -66
  122. package/dist/lib/workspace-compile.js.map +1 -1
  123. package/dist/lib/workspace-docs.d.ts +3 -0
  124. package/dist/lib/workspace-docs.d.ts.map +1 -0
  125. package/dist/lib/workspace-docs.js +82 -0
  126. package/dist/lib/workspace-docs.js.map +1 -0
  127. package/dist/lib/workspace-raw.d.ts +30 -0
  128. package/dist/lib/workspace-raw.d.ts.map +1 -0
  129. package/dist/lib/workspace-raw.js +102 -0
  130. package/dist/lib/workspace-raw.js.map +1 -0
  131. package/dist/lib/workspace-schema.d.ts +26 -0
  132. package/dist/lib/workspace-schema.d.ts.map +1 -0
  133. package/dist/lib/workspace-schema.js +132 -0
  134. package/dist/lib/workspace-schema.js.map +1 -0
  135. package/package.json +2 -2
  136. package/skills/benchmark/SKILL.md +4 -4
  137. package/skills/workflow/create/SKILL.md +23 -4
  138. package/skills/workspace/shape/SKILL.md +1 -1
  139. package/templates/workspace/README.md +4 -3
@@ -1,21 +1,13 @@
1
- import { copyFileSync, cpSync, linkSync, mkdirSync, mkdtempSync, rmSync, writeFileSync, } from "node:fs";
1
+ import { cpSync, existsSync, mkdirSync, mkdtempSync, renameSync, rmSync, writeFileSync, } from "node:fs";
2
2
  import { tmpdir } from "node:os";
3
- import { dirname, join, relative, sep, } from "node:path";
4
- import { discoverSourceFiles } from "./discovery.js";
5
- import { readInterfConfig, resolveSourceFolderPath } from "./interf.js";
3
+ import { dirname, join, relative, sep } from "node:path";
4
+ import { refreshWorkspaceBootstrapGuidance } from "./interf-bootstrap.js";
5
+ import { readInterfConfig, resolveSourceControlPath, resolveWorkspaceRawPath } from "./interf.js";
6
6
  import { refreshWorkspaceArtifacts } from "./state.js";
7
+ import { projectRawSnapshot } from "./workspace-raw.js";
7
8
  function toPortableRelativePath(fromPath, toPath) {
8
9
  return relative(fromPath, toPath).split(sep).join("/");
9
10
  }
10
- function materializeFile(sourceFilePath, targetFilePath) {
11
- mkdirSync(dirname(targetFilePath), { recursive: true });
12
- try {
13
- linkSync(sourceFilePath, targetFilePath);
14
- }
15
- catch {
16
- copyFileSync(sourceFilePath, targetFilePath);
17
- }
18
- }
19
11
  function writeWorkspaceConfig(workspacePath, config) {
20
12
  writeFileSync(join(workspacePath, "interf.json"), `${JSON.stringify(config, null, 2)}\n`);
21
13
  }
@@ -28,34 +20,55 @@ function sanitizeWorkspaceArtifacts(workspacePath) {
28
20
  }
29
21
  }
30
22
  export function createBenchmarkSandbox(target) {
31
- const sourceConfig = target.type === "workspace" ? readInterfConfig(target.path) : null;
32
- const sourcePath = target.type === "workspace"
33
- ? resolveSourceFolderPath(target.path, sourceConfig)
34
- : target.path;
35
- const discovery = discoverSourceFiles(sourcePath, target.type === "workspace" ? target.path : sourcePath);
36
- const sandboxRoot = mkdtempSync(join(tmpdir(), "interf-benchmark-sandbox-"));
37
- const sandboxRawPath = join(sandboxRoot, "raw");
38
- const sandboxWorkspacePath = join(sandboxRoot, "interf", "workspaces", target.name);
23
+ let sandboxRoot = mkdtempSync(join(tmpdir(), "interf-benchmark-sandbox-"));
24
+ let preserved = false;
25
+ const sandboxWorkspacePath = () => (target.type === "workspace"
26
+ ? join(sandboxRoot, "interf", "workspaces", target.name)
27
+ : null);
28
+ const sandboxRawPath = () => (target.type === "workspace"
29
+ ? join(sandboxRoot, "interf", "workspaces", target.name, "raw")
30
+ : join(sandboxRoot, "raw"));
31
+ const sandboxTargetPath = () => (target.type === "workspace"
32
+ ? join(sandboxRoot, "interf", "workspaces", target.name)
33
+ : join(sandboxRoot, "raw"));
39
34
  try {
40
- mkdirSync(sandboxRawPath, { recursive: true });
41
- for (const relativeSourcePath of discovery.sourceFiles) {
42
- materializeFile(join(sourcePath, relativeSourcePath), join(sandboxRawPath, relativeSourcePath));
43
- }
44
35
  if (target.type === "workspace") {
45
- mkdirSync(dirname(sandboxWorkspacePath), { recursive: true });
46
- cpSync(target.path, sandboxWorkspacePath, { recursive: true });
47
- sanitizeWorkspaceArtifacts(sandboxWorkspacePath);
48
- const sandboxConfig = readInterfConfig(sandboxWorkspacePath);
36
+ mkdirSync(dirname(sandboxTargetPath()), { recursive: true });
37
+ cpSync(target.path, sandboxTargetPath(), { recursive: true });
38
+ sanitizeWorkspaceArtifacts(sandboxTargetPath());
39
+ const sandboxConfig = readInterfConfig(sandboxTargetPath());
49
40
  if (!sandboxConfig) {
50
- throw new Error(`Sandbox workspace is missing interf.json: ${sandboxWorkspacePath}`);
41
+ throw new Error(`Sandbox workspace is missing interf.json: ${sandboxTargetPath()}`);
42
+ }
43
+ if (!existsSync(resolveWorkspaceRawPath(sandboxTargetPath(), sandboxConfig))) {
44
+ const controlSourcePath = resolveSourceControlPath(target.path);
45
+ projectRawSnapshot({
46
+ sourcePath: controlSourcePath,
47
+ destinationPath: sandboxRawPath(),
48
+ workspacePath: target.path,
49
+ mode: "link-or-copy",
50
+ prune: false,
51
+ preserveTimestamps: false,
52
+ });
51
53
  }
52
- writeWorkspaceConfig(sandboxWorkspacePath, {
54
+ writeWorkspaceConfig(sandboxTargetPath(), {
53
55
  ...sandboxConfig,
54
56
  source: {
55
- path: toPortableRelativePath(sandboxWorkspacePath, sandboxRawPath),
57
+ path: toPortableRelativePath(sandboxTargetPath(), sandboxRawPath()),
56
58
  },
57
59
  });
58
- refreshWorkspaceArtifacts(sandboxWorkspacePath, { ensureViewSpec: true });
60
+ refreshWorkspaceBootstrapGuidance(sandboxTargetPath());
61
+ refreshWorkspaceArtifacts(sandboxTargetPath(), { ensureViewSpec: true });
62
+ }
63
+ else {
64
+ projectRawSnapshot({
65
+ sourcePath: target.path,
66
+ destinationPath: sandboxRawPath(),
67
+ workspacePath: target.path,
68
+ mode: "link-or-copy",
69
+ prune: false,
70
+ preserveTimestamps: false,
71
+ });
59
72
  }
60
73
  }
61
74
  catch (error) {
@@ -63,11 +76,29 @@ export function createBenchmarkSandbox(target) {
63
76
  throw error;
64
77
  }
65
78
  return {
66
- rootPath: sandboxRoot,
67
- rawPath: sandboxRawPath,
68
- targetPath: target.type === "workspace" ? sandboxWorkspacePath : sandboxRawPath,
69
- workspacePath: target.type === "workspace" ? sandboxWorkspacePath : null,
79
+ get rootPath() {
80
+ return sandboxRoot;
81
+ },
82
+ get rawPath() {
83
+ return sandboxRawPath();
84
+ },
85
+ get targetPath() {
86
+ return sandboxTargetPath();
87
+ },
88
+ get workspacePath() {
89
+ return sandboxWorkspacePath();
90
+ },
91
+ preserve(destinationPath) {
92
+ mkdirSync(dirname(destinationPath), { recursive: true });
93
+ rmSync(destinationPath, { recursive: true, force: true });
94
+ renameSync(sandboxRoot, destinationPath);
95
+ sandboxRoot = destinationPath;
96
+ preserved = true;
97
+ return sandboxRoot;
98
+ },
70
99
  cleanup() {
100
+ if (preserved)
101
+ return;
71
102
  rmSync(sandboxRoot, { recursive: true, force: true });
72
103
  },
73
104
  };
@@ -1 +1 @@
1
- {"version":3,"file":"benchmark-sandbox.js","sourceRoot":"","sources":["../../src/lib/benchmark-sandbox.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"benchmark-sandbox.js","sourceRoot":"","sources":["../../src/lib/benchmark-sandbox.ts"],"names":[],"mappings":"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"}
@@ -28,7 +28,7 @@ export function createRawBenchmarkTarget(sourcePath) {
28
28
  workflow: "raw",
29
29
  status: "compiled",
30
30
  stage: "raw",
31
- summary: "Run the saved questions against an isolated sandbox of the raw files.",
31
+ summary: "Run the saved truth checks against an isolated sandbox of the raw files.",
32
32
  eligible: true,
33
33
  };
34
34
  }
@@ -1 +1 @@
1
- {"version":3,"file":"benchmark-targets.js","sourceRoot":"","sources":["../../src/lib/benchmark-targets.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,6BAA6B,EAAE,MAAM,aAAa,CAAC;AAC5D,OAAO,EAAE,sBAAsB,EAAE,MAAM,YAAY,CAAC;AAMpD,SAAS,sBAAsB,CAAC,MAAgC;IAC9D,OAAO,GAAG,MAAM,CAAC,IAAI,SAAS,MAAM,CAAC,QAAQ,EAAE,CAAC;AAClD,CAAC;AAED,MAAM,UAAU,6BAA6B,CAAC,UAAkB;IAC9D,OAAO,6BAA6B,CAAC,UAAU,CAAC;SAC7C,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE;QACxB,MAAM,MAAM,GAAG,sBAAsB,CAAC,IAAI,CAAC,CAAC;QAC5C,OAAO;YACL,IAAI,EAAE,WAAoB;YAC1B,IAAI,EAAE,MAAM,CAAC,IAAI;YACjB,IAAI;YACJ,QAAQ,EAAE,MAAM,CAAC,QAAQ,IAAI,QAAQ;YACrC,MAAM,EAAE,MAAM,CAAC,MAAM;YACrB,KAAK,EAAE,MAAM,CAAC,KAAK;YACnB,OAAO,EAAE,MAAM,CAAC,OAAO;YACvB,QAAQ,EAAE,MAAM,CAAC,MAAM,KAAK,UAAU;SACvC,CAAC;IACJ,CAAC,CAAC;SACD,IAAI,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,sBAAsB,CAAC,IAAI,CAAC,CAAC,aAAa,CAAC,sBAAsB,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AACtG,CAAC;AAED,MAAM,UAAU,wBAAwB,CAAC,UAAkB;IACzD,OAAO;QACL,IAAI,EAAE,KAAK;QACX,IAAI,EAAE,KAAK;QACX,IAAI,EAAE,UAAU;QAChB,QAAQ,EAAE,KAAK;QACf,MAAM,EAAE,UAAU;QAClB,KAAK,EAAE,KAAK;QACZ,OAAO,EAAE,uEAAuE;QAChF,QAAQ,EAAE,IAAI;KACf,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,oBAAoB,CAClC,UAAkB;IAElB,OAAO,6BAA6B,CAAC,UAAU,CAAC,CAAC;AACnD,CAAC"}
1
+ {"version":3,"file":"benchmark-targets.js","sourceRoot":"","sources":["../../src/lib/benchmark-targets.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,6BAA6B,EAAE,MAAM,aAAa,CAAC;AAC5D,OAAO,EAAE,sBAAsB,EAAE,MAAM,YAAY,CAAC;AAMpD,SAAS,sBAAsB,CAAC,MAAgC;IAC9D,OAAO,GAAG,MAAM,CAAC,IAAI,SAAS,MAAM,CAAC,QAAQ,EAAE,CAAC;AAClD,CAAC;AAED,MAAM,UAAU,6BAA6B,CAAC,UAAkB;IAC9D,OAAO,6BAA6B,CAAC,UAAU,CAAC;SAC7C,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE;QACxB,MAAM,MAAM,GAAG,sBAAsB,CAAC,IAAI,CAAC,CAAC;QAC5C,OAAO;YACL,IAAI,EAAE,WAAoB;YAC1B,IAAI,EAAE,MAAM,CAAC,IAAI;YACjB,IAAI;YACJ,QAAQ,EAAE,MAAM,CAAC,QAAQ,IAAI,QAAQ;YACrC,MAAM,EAAE,MAAM,CAAC,MAAM;YACrB,KAAK,EAAE,MAAM,CAAC,KAAK;YACnB,OAAO,EAAE,MAAM,CAAC,OAAO;YACvB,QAAQ,EAAE,MAAM,CAAC,MAAM,KAAK,UAAU;SACvC,CAAC;IACJ,CAAC,CAAC;SACD,IAAI,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,sBAAsB,CAAC,IAAI,CAAC,CAAC,aAAa,CAAC,sBAAsB,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AACtG,CAAC;AAED,MAAM,UAAU,wBAAwB,CAAC,UAAkB;IACzD,OAAO;QACL,IAAI,EAAE,KAAK;QACX,IAAI,EAAE,KAAK;QACX,IAAI,EAAE,UAAU;QAChB,QAAQ,EAAE,KAAK;QACf,MAAM,EAAE,UAAU;QAClB,KAAK,EAAE,KAAK;QACZ,OAAO,EAAE,0EAA0E;QACnF,QAAQ,EAAE,IAAI;KACf,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,oBAAoB,CAClC,UAAkB;IAElB,OAAO,6BAA6B,CAAC,UAAU,CAAC,CAAC;AACnD,CAAC"}
@@ -1,15 +1,4 @@
1
- type ManualQueryScope = "workspace";
2
- export declare function syncClaudeBootstrap(dirPath: string): void;
1
+ import { renderClaudeBootstrap } from "./agent-shells.js";
2
+ export { renderClaudeBootstrap };
3
3
  export declare function refreshWorkspaceBootstrapGuidance(dirPath: string): boolean;
4
- export declare function buildManualQueryTopPreflightBlock(scope: ManualQueryScope): string[];
5
- export declare function buildManualQueryFirstReplyRule(scope: ManualQueryScope): string[];
6
- export declare function refreshLegacyAgentsBootstrap(content: string): string;
7
- export declare function refreshLegacyWorkspaceQuerySkill(content: string): string;
8
- export declare function insertLineAfterFirstMatch(content: string, predicate: (line: string) => boolean, insertedLine: string): string;
9
- export declare function insertBlockBeforeFirstMatch(content: string, predicate: (line: string) => boolean, blockLines: string[]): string;
10
- export declare function renderClaudeBootstrap(content: string): string;
11
- export declare function topWorkspaceManualPreflightBlock(): string[];
12
- export declare function buildWorkspaceRuntimeControlLines(workspaceLabel: string): string[];
13
- export declare function buildWorkspaceAgentLayerLines(stageFolders: string, workspaceLabel: string): string[];
14
- export {};
15
4
  //# sourceMappingURL=interf-bootstrap.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"interf-bootstrap.d.ts","sourceRoot":"","sources":["../../src/lib/interf-bootstrap.ts"],"names":[],"mappings":"AAOA,KAAK,gBAAgB,GAAG,WAAW,CAAC;AAEpC,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAIzD;AAED,wBAAgB,iCAAiC,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CA8B1E;AAgBD,wBAAgB,iCAAiC,CAAC,KAAK,EAAE,gBAAgB,GAAG,MAAM,EAAE,CAanF;AAED,wBAAgB,8BAA8B,CAAC,KAAK,EAAE,gBAAgB,GAAG,MAAM,EAAE,CAchF;AAED,wBAAgB,4BAA4B,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAmBpE;AAED,wBAAgB,gCAAgC,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CA2BxE;AAED,wBAAgB,yBAAyB,CACvC,OAAO,EAAE,MAAM,EACf,SAAS,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,EACpC,YAAY,EAAE,MAAM,GACnB,MAAM,CAOR;AAED,wBAAgB,2BAA2B,CACzC,OAAO,EAAE,MAAM,EACf,SAAS,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,EACpC,UAAU,EAAE,MAAM,EAAE,GACnB,MAAM,CAQR;AAED,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAO7D;AAED,wBAAgB,gCAAgC,IAAI,MAAM,EAAE,CAe3D;AAED,wBAAgB,iCAAiC,CAAC,cAAc,EAAE,MAAM,GAAG,MAAM,EAAE,CASlF;AAED,wBAAgB,6BAA6B,CAAC,YAAY,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,GAAG,MAAM,EAAE,CAQpG"}
1
+ {"version":3,"file":"interf-bootstrap.d.ts","sourceRoot":"","sources":["../../src/lib/interf-bootstrap.ts"],"names":[],"mappings":"AAEA,OAAO,EAA8B,qBAAqB,EAAE,MAAM,mBAAmB,CAAC;AAEtF,OAAO,EAAE,qBAAqB,EAAE,CAAC;AAEjC,wBAAgB,iCAAiC,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAS1E"}
@@ -1,171 +1,14 @@
1
- import { existsSync, readFileSync, writeFileSync, } from "node:fs";
2
- import { join } from "node:path";
1
+ import { basename } from "node:path";
3
2
  import { readInterfConfig } from "./interf-detect.js";
4
- export function syncClaudeBootstrap(dirPath) {
5
- const agentsPath = join(dirPath, "AGENTS.md");
6
- if (!existsSync(agentsPath))
7
- return;
8
- writeFileSync(join(dirPath, "CLAUDE.md"), renderClaudeBootstrap(readFileSync(agentsPath, "utf8")));
9
- }
3
+ import { projectWorkspaceQueryShell, renderClaudeBootstrap } from "./agent-shells.js";
4
+ export { renderClaudeBootstrap };
10
5
  export function refreshWorkspaceBootstrapGuidance(dirPath) {
11
6
  const config = readInterfConfig(dirPath);
12
7
  if (!config)
13
8
  return false;
14
- let changed = false;
15
- const agentsPath = join(dirPath, "AGENTS.md");
16
- if (existsSync(agentsPath)) {
17
- const current = readFileSync(agentsPath, "utf8");
18
- const refreshed = refreshLegacyAgentsBootstrap(current);
19
- if (refreshed !== current) {
20
- writeFileSync(agentsPath, refreshed);
21
- changed = true;
22
- }
23
- }
24
- const querySkillPath = join(dirPath, "workflow", "use", "query", "SKILL.md");
25
- if (existsSync(querySkillPath)) {
26
- const current = readFileSync(querySkillPath, "utf8");
27
- const refreshed = refreshLegacyWorkspaceQuerySkill(current);
28
- if (refreshed !== current) {
29
- writeFileSync(querySkillPath, refreshed);
30
- changed = true;
31
- }
32
- }
33
- if (changed || existsSync(agentsPath)) {
34
- syncClaudeBootstrap(dirPath);
35
- }
36
- return changed;
37
- }
38
- function manualQueryScopeCopy(scope) {
39
- return {
40
- sourceAccessPath: ".interf/source-access.json",
41
- preflightLead: "inspect `.interf/source-access.json` immediately and open one `suggested_checks` path",
42
- topIntro: "Before browsing notes on your own or answering from compiled knowledge:",
43
- postPreflight: "after the preflight, still prefer compiled knowledge unless the user asks for direct quotes or raw verification",
44
- };
45
- }
46
- export function buildManualQueryTopPreflightBlock(scope) {
47
- const copy = manualQueryScopeCopy(scope);
48
- return [
49
- "## First question: required preflight",
50
- "",
51
- copy.topIntro,
52
- "",
53
- `- ${copy.preflightLead}`,
54
- "- if the environment asks for permission, request it immediately instead of answering as though raw were missing",
55
- "- do not claim `Raw access: confirmed` after only checking that a file exists",
56
- "- the first line of the answer must be exactly `Raw access: confirmed` or `Raw access: unavailable`",
57
- "",
58
- ];
59
- }
60
- export function buildManualQueryFirstReplyRule(scope) {
61
- const copy = manualQueryScopeCopy(scope);
62
- return [
63
- "First-reply rule:",
64
- `- on the first substantive manual question, ${copy.preflightLead}`,
65
- "- if the environment asks for permission, request it immediately instead of answering as though raw were missing",
66
- "- the first line of the answer must be exactly `Raw access: confirmed` or `Raw access: unavailable`",
67
- "- use `Raw access: confirmed` only after you actually open and inspect a suggested raw path from this session; a plain existence check is not enough",
68
- "- use `Raw access: unavailable` only after a raw check fails or permission is denied",
69
- `- ${copy.postPreflight}`,
70
- "- if the question depends on PDF charts, tables, or image-derived evidence, inspect the raw source and say whether the value was text-derived, table-derived, or chart-derived",
71
- "- if the PDF page text does not expose the exact value, switch to a concrete local extraction path before saying the number is unavailable",
72
- "",
73
- ];
74
- }
75
- export function refreshLegacyAgentsBootstrap(content) {
76
- const legacyLine = "On the first substantive reply in a manual session, make the raw-access status explicit: confirmed, unverified, or unavailable. Do not trigger a permission prompt just to greet the user; verify raw access only when the user asks about raw files or the answer depends on raw verification.";
77
- const previousLine = "On the first substantive reply in a manual session, start with exactly one line: `Raw access: unverified`, `Raw access: confirmed`, or `Raw access: unavailable`. Use `unverified` until you actually run the raw-source gate, `confirmed` only after a suggested raw path is readable, and `unavailable` only after a raw check fails or permission is denied. Do not trigger a permission prompt just to greet the user; verify raw access only when the user asks about raw files or the answer depends on raw verification.";
78
- const currentLine = "On the first substantive manual question, run the raw-source gate immediately. Check raw reachability before guessing. If the environment asks for permission, request it immediately. After that check, start the answer with exactly one line: `Raw access: confirmed` or `Raw access: unavailable`. `confirmed` means you actually opened and inspected at least one suggested raw path; a plain existence check is not enough. `unavailable` means the raw check failed or permission was denied.";
79
- let replaced = content;
80
- if (replaced.includes(legacyLine))
81
- replaced = replaced.replace(legacyLine, currentLine);
82
- if (replaced.includes(previousLine))
83
- replaced = replaced.replace(previousLine, currentLine);
84
- let refreshed = insertLineAfterFirstMatch(replaced, (line) => line.startsWith("If `workflow/use/query/` exists, read it before answering manual questions"), currentLine);
85
- const block = topWorkspaceManualPreflightBlock();
86
- refreshed = insertBlockBeforeFirstMatch(refreshed, (line) => line.startsWith("## How this "), block);
87
- return refreshed;
88
- }
89
- export function refreshLegacyWorkspaceQuerySkill(content) {
90
- const legacyBlock = [
91
- "First-reply rule:",
92
- "- on your first substantive reply, say whether raw access is confirmed, unverified, or unavailable",
93
- "- do not trigger a permission prompt just to introduce the workspace",
94
- "- if the user asks whether raw files are reachable, perform the raw-source gate immediately and report the result clearly",
95
- "",
96
- ].join("\n");
97
- const currentBlock = buildManualQueryFirstReplyRule("workspace").join("\n");
98
- const topBlock = buildManualQueryTopPreflightBlock("workspace");
99
- let normalized = content.includes(legacyBlock) ? content.replace(legacyBlock, currentBlock) : content;
100
- if (normalized.includes("First-reply rule:") &&
101
- !normalized.includes("plain existence check is not enough")) {
102
- normalized = normalized.replace("First-reply rule:\n", currentBlock);
103
- }
104
- normalized = insertBlockBeforeFirstMatch(normalized, (line) => line.startsWith("Default loop:"), topBlock);
105
- return insertBlockBeforeFirstMatch(normalized, (line) => line.startsWith("You can edit this file to bias manual question-answering behavior"), buildManualQueryFirstReplyRule("workspace"));
106
- }
107
- export function insertLineAfterFirstMatch(content, predicate, insertedLine) {
108
- if (content.includes(insertedLine))
109
- return content;
110
- const lines = content.split("\n");
111
- const index = lines.findIndex(predicate);
112
- if (index === -1)
113
- return content;
114
- lines.splice(index + 1, 0, insertedLine);
115
- return lines.join("\n");
116
- }
117
- export function insertBlockBeforeFirstMatch(content, predicate, blockLines) {
118
- const marker = blockLines.find((line) => line.trim().length > 0);
119
- if (marker && content.includes(marker))
120
- return content;
121
- const lines = content.split("\n");
122
- const index = lines.findIndex(predicate);
123
- if (index === -1)
124
- return content;
125
- lines.splice(index, 0, ...blockLines);
126
- return lines.join("\n");
127
- }
128
- export function renderClaudeBootstrap(content) {
129
- return [
130
- "<!-- Generated from AGENTS.md. Edit AGENTS.md; Interf will rewrite this file. -->",
131
- "",
132
- content.trimEnd(),
133
- "",
134
- ].join("\n");
135
- }
136
- export function topWorkspaceManualPreflightBlock() {
137
- return [
138
- "## First question: required preflight",
139
- "",
140
- "Before describing this workspace or answering from compiled notes:",
141
- "",
142
- "1. Read `workflow/use/query/SKILL.md` now.",
143
- "2. Confirm `home.md`, `knowledge/`, and `summaries/` are reachable.",
144
- "3. Inspect `.interf/source-access.json` and open one `suggested_checks` path immediately.",
145
- "4. If the environment asks for permission, request it right away instead of guessing.",
146
- "5. `Raw access: confirmed` is allowed only after you actually open and inspect that raw file. A plain existence check is not enough.",
147
- "6. Start the answer with exactly `Raw access: confirmed` or `Raw access: unavailable`.",
148
- "7. If an exact chart value matters and the PDF page text does not expose it, switch to a concrete local extraction path before saying the number is unavailable.",
149
- "",
150
- ];
151
- }
152
- export function buildWorkspaceRuntimeControlLines(workspaceLabel) {
153
- return [
154
- `- Source folder = CLI control plane and real files. This ${workspaceLabel} = generated workspace.`,
155
- `- The source folder normally has no generated \`AGENTS.md\` or \`CLAUDE.md\`. For agents, this ${workspaceLabel} workspace is the bootstrap entrypoint.`,
156
- `- \`.interf/run.json\` — current/last deterministic stage run, including executor and timestamps.`,
157
- `- \`.interf/stage-contract.json\` — machine-readable contract for the active stage.`,
158
- `- Stage instructions are flexible. Interf cares about contract compliance: reads, writes, verifiers, and runtime reconciliation.`,
159
- `- Local workflow docs customize stage implementation. They do not replace the workflow's stage order, proof rules, or CLI-owned runtime flow.`,
160
- ];
161
- }
162
- export function buildWorkspaceAgentLayerLines(stageFolders, workspaceLabel) {
163
- return [
164
- `Treat \`AGENTS.md\` as the directory-level router for navigation, path rules, command usage, and which local workflow docs to read next.`,
165
- `Treat local \`workflow/.../SKILL.md\` files as workspace instruction docs. Do not assume they are globally installed slash-command skills; load them because \`AGENTS.md\` or the stage contract points to them.`,
166
- `If \`workflow/use/query/\` exists, read it before answering manual questions from this ${workspaceLabel}.`,
167
- `On the first substantive manual question, run the raw-source gate immediately. Inspect \`.interf/source-access.json\` and open one suggested path. If the environment asks for permission, request it immediately instead of guessing. After that check, start the answer with exactly one line: \`Raw access: confirmed\` or \`Raw access: unavailable\`. \`confirmed\` means you actually opened and inspected at least one suggested raw path; a plain existence check is not enough. \`unavailable\` means the raw check failed or permission was denied. If an exact chart value matters and the PDF page text does not expose it, switch to a concrete local extraction path before saying the number is unavailable.`,
168
- `If local workflow docs exist under \`workflow/compile/stages/\` (${stageFolders}), read them before running a stage. A doc can declare \`mode: extend\` or \`mode: override\` in JSON frontmatter. Override replaces the bundled workflow instructions for that stage, but Interf still enforces the same proof, schema, verifier, and state-machine rules.`,
169
- ];
9
+ const workspaceName = config.name ?? basename(dirPath);
10
+ const workflowId = config.workflow ?? "interf";
11
+ const about = typeof config.about === "string" && config.about.length > 0 ? config.about : undefined;
12
+ return projectWorkspaceQueryShell(dirPath, workspaceName, workflowId, about);
170
13
  }
171
14
  //# sourceMappingURL=interf-bootstrap.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"interf-bootstrap.js","sourceRoot":"","sources":["../../src/lib/interf-bootstrap.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"interf-bootstrap.js","sourceRoot":"","sources":["../../src/lib/interf-bootstrap.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AACrC,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAE,0BAA0B,EAAE,qBAAqB,EAAE,MAAM,mBAAmB,CAAC;AAEtF,OAAO,EAAE,qBAAqB,EAAE,CAAC;AAEjC,MAAM,UAAU,iCAAiC,CAAC,OAAe;IAC/D,MAAM,MAAM,GAAG,gBAAgB,CAAC,OAAO,CAAC,CAAC;IACzC,IAAI,CAAC,MAAM;QAAE,OAAO,KAAK,CAAC;IAE1B,MAAM,aAAa,GAAG,MAAM,CAAC,IAAI,IAAI,QAAQ,CAAC,OAAO,CAAC,CAAC;IACvD,MAAM,UAAU,GAAG,MAAM,CAAC,QAAQ,IAAI,QAAQ,CAAC;IAC/C,MAAM,KAAK,GAAG,OAAO,MAAM,CAAC,KAAK,KAAK,QAAQ,IAAI,MAAM,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC;IAErG,OAAO,0BAA0B,CAAC,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,KAAK,CAAC,CAAC;AAC/E,CAAC"}
@@ -23,6 +23,7 @@ export declare function detectInterf(cwd: string): {
23
23
  } | null;
24
24
  export declare function resolveWorkspace(cwd: string): ResolvedWorkspace | null;
25
25
  export declare function resolveSourceFolderPath(workspacePath: string, config?: InterfConfig | null): string;
26
+ export declare function resolveSourceControlPath(workspacePath: string): string;
26
27
  export declare function listWorkspacesForSourceFolder(sourcePath: string): Array<{
27
28
  path: string;
28
29
  config: InterfConfig;
@@ -1 +1 @@
1
- {"version":3,"file":"interf-detect.d.ts","sourceRoot":"","sources":["../../src/lib/interf-detect.ts"],"names":[],"mappings":"AAQA,OAAO,EAEL,KAAK,YAAY,EAClB,MAAM,aAAa,CAAC;AAErB,YAAY,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAEhD,MAAM,WAAW,iBAAiB;IAChC,UAAU,EAAE,MAAM,CAAC;IACnB,aAAa,EAAE,MAAM,CAAC;IACtB,MAAM,EAAE,YAAY,CAAC;CACtB;AAED,eAAO,MAAM,qBAAqB,WAAW,CAAC;AAC9C,eAAO,MAAM,wBAAwB,eAAe,CAAC;AACrD,eAAO,MAAM,uBAAuB,cAAc,CAAC;AACnD,eAAO,MAAM,wBAAwB,eAAe,CAAC;AACrD,eAAO,MAAM,kBAAkB,gBAAgB,CAAC;AAChD,eAAO,MAAM,oBAAoB,aAAa,CAAC;AAE/C,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,YAAY,GAAG,IAAI,CAIrE;AAED,wBAAgB,oBAAoB,CAClC,MAAM,EAAE,YAAY,GAAG,IAAI,GAAG,SAAS,GACtC,MAAM,IAAI,YAAY,GAAG;IAAE,MAAM,EAAE;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE,CAAA;CAAE,CAEvD;AAED,wBAAgB,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,YAAY,CAAA;CAAE,GAAG,IAAI,CAwBvF;AAED,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,MAAM,GAAG,iBAAiB,GAAG,IAAI,CAStE;AAED,wBAAgB,uBAAuB,CACrC,aAAa,EAAE,MAAM,EACrB,MAAM,GAAE,YAAY,GAAG,IAAsC,GAC5D,MAAM,CAMR;AA6BD,wBAAgB,6BAA6B,CAC3C,UAAU,EAAE,MAAM,GACjB,KAAK,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,YAAY,CAAA;CAAE,CAAC,CAE/C;AAED,wBAAgB,wBAAwB,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,CA0DnE;AAED,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,CAW5E;AAED,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,CAMrE"}
1
+ {"version":3,"file":"interf-detect.d.ts","sourceRoot":"","sources":["../../src/lib/interf-detect.ts"],"names":[],"mappings":"AAQA,OAAO,EAEL,KAAK,YAAY,EAClB,MAAM,aAAa,CAAC;AAErB,YAAY,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAEhD,MAAM,WAAW,iBAAiB;IAChC,UAAU,EAAE,MAAM,CAAC;IACnB,aAAa,EAAE,MAAM,CAAC;IACtB,MAAM,EAAE,YAAY,CAAC;CACtB;AAED,eAAO,MAAM,qBAAqB,WAAW,CAAC;AAC9C,eAAO,MAAM,wBAAwB,eAAe,CAAC;AACrD,eAAO,MAAM,uBAAuB,cAAc,CAAC;AACnD,eAAO,MAAM,wBAAwB,eAAe,CAAC;AACrD,eAAO,MAAM,kBAAkB,gBAAgB,CAAC;AAChD,eAAO,MAAM,oBAAoB,aAAa,CAAC;AAE/C,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,YAAY,GAAG,IAAI,CAIrE;AAED,wBAAgB,oBAAoB,CAClC,MAAM,EAAE,YAAY,GAAG,IAAI,GAAG,SAAS,GACtC,MAAM,IAAI,YAAY,GAAG;IAAE,MAAM,EAAE;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE,CAAA;CAAE,CAEvD;AAED,wBAAgB,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,YAAY,CAAA;CAAE,GAAG,IAAI,CAIvF;AAED,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,MAAM,GAAG,iBAAiB,GAAG,IAAI,CAStE;AAED,wBAAgB,uBAAuB,CACrC,aAAa,EAAE,MAAM,EACrB,MAAM,GAAE,YAAY,GAAG,IAAsC,GAC5D,MAAM,CAMR;AAED,wBAAgB,wBAAwB,CAAC,aAAa,EAAE,MAAM,GAAG,MAAM,CAEtE;AA6BD,wBAAgB,6BAA6B,CAC3C,UAAU,EAAE,MAAM,GACjB,KAAK,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,YAAY,CAAA;CAAE,CAAC,CAE/C;AAED,wBAAgB,wBAAwB,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,CA0DnE;AAED,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,CAW5E;AAED,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,CAMrE"}
@@ -1,5 +1,5 @@
1
1
  import { existsSync, readdirSync, statSync, } from "node:fs";
2
- import { basename, join, resolve } from "node:path";
2
+ import { join, resolve } from "node:path";
3
3
  import { warnInterf } from "./logger.js";
4
4
  import { readJsonFileWithSchema } from "./parse.js";
5
5
  import { InterfConfigSchema, } from "./schema.js";
@@ -22,22 +22,6 @@ export function detectInterf(cwd) {
22
22
  const config = readInterfConfig(cwd);
23
23
  if (config)
24
24
  return { path: cwd, config };
25
- const directChildren = listWorkspaceEntries(join(cwd, INTERF_CONTAINER_NAME, WORKSPACE_CONTAINER_NAME));
26
- if (directChildren.length === 1) {
27
- return directChildren[0];
28
- }
29
- if (basename(cwd) === INTERF_CONTAINER_NAME) {
30
- const nestedChildren = listWorkspaceEntries(join(cwd, WORKSPACE_CONTAINER_NAME));
31
- if (nestedChildren.length === 1) {
32
- return nestedChildren[0];
33
- }
34
- }
35
- if (basename(cwd) === WORKSPACE_CONTAINER_NAME) {
36
- const nestedChildren = listWorkspaceEntries(cwd);
37
- if (nestedChildren.length === 1) {
38
- return nestedChildren[0];
39
- }
40
- }
41
25
  return null;
42
26
  }
43
27
  export function resolveWorkspace(cwd) {
@@ -45,7 +29,7 @@ export function resolveWorkspace(cwd) {
45
29
  if (!detected)
46
30
  return null;
47
31
  return {
48
- sourcePath: resolveSourceFolderPath(detected.path, detected.config),
32
+ sourcePath: resolveSourceControlPath(detected.path),
49
33
  workspacePath: detected.path,
50
34
  config: detected.config,
51
35
  };
@@ -54,6 +38,9 @@ export function resolveSourceFolderPath(workspacePath, config = readInterfConfig
54
38
  if (hasSourceFolderInput(config)) {
55
39
  return resolve(workspacePath, config.source.path);
56
40
  }
41
+ return resolve(workspacePath, "raw");
42
+ }
43
+ export function resolveSourceControlPath(workspacePath) {
57
44
  return resolve(workspacePath, "..", "..", "..");
58
45
  }
59
46
  function listWorkspaceEntries(containerPath) {
@@ -1 +1 @@
1
- {"version":3,"file":"interf-detect.js","sourceRoot":"","sources":["../../src/lib/interf-detect.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"interf-detect.js","sourceRoot":"","sources":["../../src/lib/interf-detect.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"interf-scaffold.d.ts","sourceRoot":"","sources":["../../src/lib/interf-scaffold.ts"],"names":[],"mappings":"AAqGA,wBAAgB,eAAe,CAC7B,IAAI,EAAE,MAAM,EACZ,UAAU,EAAE,MAAM,EAClB,UAAU,SAAW,EACrB,KAAK,CAAC,EAAE,MAAM,GACb,MAAM,CAwDR;AAED,wBAAgB,6BAA6B,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,CAExE"}
1
+ {"version":3,"file":"interf-scaffold.d.ts","sourceRoot":"","sources":["../../src/lib/interf-scaffold.ts"],"names":[],"mappings":"AAiCA,wBAAgB,eAAe,CAC7B,IAAI,EAAE,MAAM,EACZ,UAAU,EAAE,MAAM,EAClB,UAAU,SAAW,EACrB,KAAK,CAAC,EAAE,MAAM,GACb,MAAM,CAwDR;AAED,wBAAgB,6BAA6B,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,CAExE"}
@@ -5,78 +5,12 @@ import { getWorkspaceWorkflow } from "./workflow-definitions.js";
5
5
  import { refreshWorkspaceArtifacts, saveState, initWorkspaceState, } from "./state.js";
6
6
  import { writeObsidianDefaults } from "./obsidian.js";
7
7
  import { assertWorkspaceContainer, assertWritableTargetDir, assertWorkspaceName, INTERF_CONFIG_FILE, } from "./interf-detect.js";
8
- import { renderClaudeBootstrap } from "./interf-bootstrap.js";
8
+ import { refreshWorkspaceBootstrapGuidance } from "./interf-bootstrap.js";
9
9
  import { writeWorkspaceWorkflowPackage } from "./interf-workflow-package.js";
10
+ import { syncWorkspaceRawSnapshot } from "./workspace-raw.js";
10
11
  function writeInterfConfigFile(dirPath, config) {
11
12
  writeFileSync(join(dirPath, INTERF_CONFIG_FILE), `${JSON.stringify(config, null, 2)}\n`);
12
13
  }
13
- function writeAgentBootstrapFiles(dirPath, content) {
14
- writeFileSync(join(dirPath, "AGENTS.md"), content);
15
- writeFileSync(join(dirPath, "CLAUDE.md"), renderClaudeBootstrap(content));
16
- }
17
- function renderWorkspaceAgents(name, workflowId, about) {
18
- return [
19
- `# ${name}`,
20
- "",
21
- "This is an Interf compiled workspace.",
22
- "It is a file-based layer on top of the raw files, built for agents to navigate, retrieve evidence, and answer more accurately.",
23
- "",
24
- ...(about
25
- ? [
26
- `About: ${about}`,
27
- "",
28
- ]
29
- : []),
30
- "## First question: required preflight",
31
- "",
32
- "Before describing this workspace or answering from compiled notes:",
33
- "",
34
- "1. Read `workflow/use/query/SKILL.md` now.",
35
- "2. Confirm `home.md`, `knowledge/`, and `summaries/` are reachable.",
36
- "3. Inspect `.interf/source-access.json` and open one `suggested_checks` path immediately.",
37
- "4. If the environment asks for permission, request it right away instead of guessing.",
38
- "5. `Raw access: confirmed` is allowed only after you actually open and inspect that raw file. A plain existence check is not enough.",
39
- "6. Start the answer with exactly `Raw access: confirmed` or `Raw access: unavailable`.",
40
- "",
41
- "## How this workspace works",
42
- "",
43
- "- `interf.json` points back to the source folder via `source.path`.",
44
- `- Workflow: \`${workflowId}\`.`,
45
- "- `workflow/` is the local editable method package for this workspace.",
46
- "- `workflow/use/query/` defines how agents should use this workspace manually.",
47
- "- `workflow/compile/stages/` defines stage-specific local docs for automated runs.",
48
- "- `summaries/` contains per-file evidence objects.",
49
- "- `knowledge/` contains the cross-file knowledge layer and navigation structure.",
50
- "- `home.md` is the starting note.",
51
- "- `.interf/run.json`, `.interf/health.json`, `.interf/view-spec.json`, and `.interf/source-access.json` are CLI-owned runtime artifacts.",
52
- "",
53
- "## Manual query rules",
54
- "",
55
- "- Prefer `home.md`, `knowledge/`, and `summaries/` before raw files.",
56
- "- Read `workflow/use/query/SKILL.md` before answering substantive questions.",
57
- "- Use raw files for quotes, verification, ambiguity, or evidence the compiled layer does not expose well.",
58
- "- If exact chart, table, or image-derived evidence matters, inspect the raw source and say whether the answer was text-derived, table-derived, or chart-derived.",
59
- "- Do not claim raw verification after only checking that a file exists.",
60
- "",
61
- "## Commands",
62
- "",
63
- "```",
64
- "interf compile build this compiled workspace",
65
- "interf test run saved questions against this workspace",
66
- "interf verify summarize verify summary coverage",
67
- "interf verify structure verify cross-file structure outputs",
68
- "interf verify compile verify compile outputs",
69
- "interf status show deterministic health",
70
- "```",
71
- "",
72
- "## Rules",
73
- "",
74
- "- Do not modify raw source files.",
75
- "- Treat compiled notes as working retrieval artifacts, not final truth.",
76
- "- When confidence is low, follow links outward or verify against raw files before answering strongly.",
77
- "",
78
- ].join("\n");
79
- }
80
14
  export function createWorkspace(name, sourcePath, workflowId = "interf", about) {
81
15
  assertWorkspaceName(name, "Workspace");
82
16
  const containerPath = assertWorkspaceContainer(sourcePath);
@@ -91,14 +25,16 @@ export function createWorkspace(name, sourcePath, workflowId = "interf", about)
91
25
  ...(about ? { about } : {}),
92
26
  workflow: selectedWorkflow.id,
93
27
  source: {
94
- path: "../../..",
28
+ path: "./raw",
95
29
  },
96
30
  });
31
+ mkdirSync(join(workspacePath, "raw"), { recursive: true });
32
+ syncWorkspaceRawSnapshot(workspacePath, sourcePath);
97
33
  if (existsSync(WORKSPACE_INTERFIGNORE)) {
98
34
  copyFileSync(WORKSPACE_INTERFIGNORE, join(workspacePath, ".interfignore"));
99
35
  }
100
36
  writeWorkspaceWorkflowPackage(workspacePath, selectedWorkflow);
101
- writeAgentBootstrapFiles(workspacePath, renderWorkspaceAgents(name, selectedWorkflow.id, about));
37
+ refreshWorkspaceBootstrapGuidance(workspacePath);
102
38
  writeFileSync(join(workspacePath, "home.md"), [
103
39
  `# ${name} — Home`,
104
40
  "",
@@ -106,7 +42,7 @@ export function createWorkspace(name, sourcePath, workflowId = "interf", about)
106
42
  ...(about ? ["", `About: ${about}`] : []),
107
43
  "",
108
44
  ].join("\n"));
109
- writeFileSync(join(workspacePath, ".gitignore"), "summaries/\nknowledge/\n.interf/\n.obsidian/\n");
45
+ writeFileSync(join(workspacePath, ".gitignore"), "raw/\nsummaries/\nknowledge/\n.interf/\n.obsidian/\n");
110
46
  saveState(workspacePath, initWorkspaceState());
111
47
  writeFileSync(join(workspacePath, ".interf", "inventory.json"), JSON.stringify({ total: 0, files: [] }, null, 2) + "\n");
112
48
  refreshWorkspaceArtifacts(workspacePath, { ensureViewSpec: true });