@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,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 });
@@ -1 +1 @@
1
- {"version":3,"file":"interf-scaffold.js","sourceRoot":"","sources":["../../src/lib/interf-scaffold.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"interf-scaffold.js","sourceRoot":"","sources":["../../src/lib/interf-scaffold.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"interf-workflow-package.d.ts","sourceRoot":"","sources":["../../src/lib/interf-workflow-package.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,KAAK,kBAAkB,EAExB,MAAM,2BAA2B,CAAC;AAgJnC,wBAAgB,6BAA6B,CAC3C,aAAa,EAAE,MAAM,EACrB,QAAQ,EAAE,kBAAkB,CAAC,MAAM,CAAC,GACnC,IAAI,CAuBN"}
1
+ {"version":3,"file":"interf-workflow-package.d.ts","sourceRoot":"","sources":["../../src/lib/interf-workflow-package.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,KAAK,kBAAkB,EAExB,MAAM,2BAA2B,CAAC;AAyInC,wBAAgB,6BAA6B,CAC3C,aAAa,EAAE,MAAM,EACrB,QAAQ,EAAE,kBAAkB,CAAC,MAAM,CAAC,GACnC,IAAI,CAwBN"}
@@ -1,6 +1,8 @@
1
1
  import { mkdirSync, writeFileSync } from "node:fs";
2
2
  import { dirname, join } from "node:path";
3
3
  import { WORKFLOW_PACKAGE_DIR } from "./interf-detect.js";
4
+ import { renderWorkspaceQuerySkill } from "./workspace-docs.js";
5
+ import { writeWorkspaceSchemaFile } from "./workspace-schema.js";
4
6
  function workflowPackagePath(dirPath) {
5
7
  return join(dirPath, WORKFLOW_PACKAGE_DIR);
6
8
  }
@@ -15,6 +17,10 @@ function writeWorkflowPackageJson(rootPath, workflow) {
15
17
  writeFileSync(join(rootPath, "workflow.json"), `${JSON.stringify({
16
18
  id: workflow.id,
17
19
  type: "workspace",
20
+ compiler_api: workflow.compilerApi ?? {
21
+ kind: "workspace",
22
+ version: 1,
23
+ },
18
24
  label: workflow.label,
19
25
  hint: workflow.hint,
20
26
  stages: workflow.stages.map((stage) => ({
@@ -23,6 +29,8 @@ function writeWorkflowPackageJson(rootPath, workflow) {
23
29
  description: stage.description,
24
30
  contract_type: stage.contractType,
25
31
  skill_dir: stage.skillDir,
32
+ reads: stage.reads,
33
+ writes: stage.writes,
26
34
  ...(stage.acceptance ? { acceptance: stage.acceptance } : {}),
27
35
  })),
28
36
  ...(workflow.stagePolicyNotes ? { stage_policy_notes: workflow.stagePolicyNotes } : {}),
@@ -30,18 +38,25 @@ function writeWorkflowPackageJson(rootPath, workflow) {
30
38
  }
31
39
  function renderWorkflowReadme(workflow) {
32
40
  const stageLines = workflow.stages
33
- .map((stage) => `- \`${stage.id}\` — ${stage.description} (${stage.contractType})`)
41
+ .map((stage) => `- \`${stage.id}\` — ${stage.description} (${stage.contractType}; reads: ${stage.reads.join(", ")}; writes: ${stage.writes.join(", ")})`)
34
42
  .join("\n");
35
43
  return [
36
44
  `# ${workflow.label}`,
37
45
  "",
38
46
  workflow.hint,
39
47
  "",
48
+ "## Package",
49
+ "",
50
+ "- `workflow.json` = stage graph, compiler API target, and compile contract mapping",
51
+ "- `workspace.schema.json` = deterministic workspace output shape",
52
+ "- `create/`, `compile/stages/`, and `use/query/` = human-readable authoring docs",
53
+ "- Interf projects native agent shells from these docs for query use and stage execution",
54
+ "",
40
55
  "## Stages",
41
56
  "",
42
57
  stageLines,
43
58
  "",
44
- "This workflow package lives under `workflow/` and controls how Interf builds this compiled workspace.",
59
+ "This workflow package lives under `workflow/` and is the reusable artifact that controls how Interf builds this compiled workspace.",
45
60
  "",
46
61
  ].join("\n");
47
62
  }
@@ -55,27 +70,6 @@ function renderCreateSkill(workflow) {
55
70
  "",
56
71
  ].join("\n");
57
72
  }
58
- function renderQuerySkill() {
59
- return [
60
- "# Manual Query Loop",
61
- "",
62
- "Default loop:",
63
- "1. Read `home.md` first.",
64
- "2. Browse `knowledge/` before raw files.",
65
- "3. Use `summaries/` for source-grounded evidence.",
66
- "4. Inspect `.interf/source-access.json` before claiming raw verification.",
67
- "",
68
- "First-reply rule:",
69
- "- on the first substantive manual question, inspect `.interf/source-access.json` immediately and open one `suggested_checks` path",
70
- "- if the environment asks for permission, request it immediately instead of guessing",
71
- "- the first line of the answer must be exactly `Raw access: confirmed` or `Raw access: unavailable`",
72
- "- 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",
73
- "- use `Raw access: unavailable` only after a raw check fails or permission is denied",
74
- "",
75
- "You can edit this file to bias manual question-answering behavior for this workspace.",
76
- "",
77
- ].join("\n");
78
- }
79
73
  function renderStageSkill(workflow, stage) {
80
74
  const notes = workflow.stagePolicyNotes?.[stage.id] ?? [];
81
75
  const stageSpecificNotes = stage.contractType === "workspace-file-evidence"
@@ -91,7 +85,7 @@ function renderStageSkill(workflow, stage) {
91
85
  ]
92
86
  : stage.contractType === "workspace-query-shape"
93
87
  ? [
94
- "Use the workspace focus plus saved question text to shape `home.md` and retrieval routes.",
88
+ "Use the workspace focus plus saved truth-check question text to shape `home.md` and retrieval routes.",
95
89
  "Do not copy expected answers into the workspace.",
96
90
  ]
97
91
  : [];
@@ -129,9 +123,10 @@ export function writeWorkspaceWorkflowPackage(workspacePath, workflow) {
129
123
  mkdirSync(join(workflowDir, "compile", "stages", stage.skillDir), { recursive: true });
130
124
  }
131
125
  writeWorkflowPackageJson(workflowDir, workflow);
126
+ writeWorkspaceSchemaFile(workflowDir, workflow.stages, `${workflow.label} workspace schema`);
132
127
  writeFileSync(join(workflowDir, "README.md"), renderWorkflowReadme(workflow));
133
128
  writeFileSync(join(workflowDir, "create", "SKILL.md"), renderCreateSkill(workflow));
134
- writeFileSync(join(workflowDir, "use", "query", "SKILL.md"), renderQuerySkill());
129
+ writeFileSync(join(workflowDir, "use", "query", "SKILL.md"), renderWorkspaceQuerySkill());
135
130
  for (const stage of workflow.stages) {
136
131
  writeFileSync(join(workflowDir, "compile", "stages", stage.skillDir, "SKILL.md"), renderStageSkill(workflow, stage));
137
132
  }
@@ -1 +1 @@
1
- {"version":3,"file":"interf-workflow-package.js","sourceRoot":"","sources":["../../src/lib/interf-workflow-package.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"interf-workflow-package.js","sourceRoot":"","sources":["../../src/lib/interf-workflow-package.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AACnD,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAK1C,OAAO,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAC1D,OAAO,EAAE,yBAAyB,EAAE,MAAM,qBAAqB,CAAC;AAChE,OAAO,EAAE,wBAAwB,EAAE,MAAM,uBAAuB,CAAC;AAEjE,SAAS,mBAAmB,CAAC,OAAe;IAC1C,OAAO,IAAI,CAAC,OAAO,EAAE,oBAAoB,CAAC,CAAC;AAC7C,CAAC;AAED,SAAS,wBAAwB,CAC/B,OAAe,EACf,IAA+C;IAE/C,KAAK,MAAM,GAAG,IAAI,IAAI,IAAI,EAAE,EAAE,CAAC;QAC7B,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,EAAE,GAAG,CAAC,YAAY,CAAC,CAAC;QACnD,SAAS,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QACpD,aAAa,CAAC,UAAU,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC;IACzC,CAAC;AACH,CAAC;AAED,SAAS,wBAAwB,CAC/B,QAAgB,EAChB,QAAoC;IAEpC,aAAa,CACX,IAAI,CAAC,QAAQ,EAAE,eAAe,CAAC,EAC/B,GAAG,IAAI,CAAC,SAAS,CAAC;QAChB,EAAE,EAAE,QAAQ,CAAC,EAAE;QACf,IAAI,EAAE,WAAW;QACjB,YAAY,EAAE,QAAQ,CAAC,WAAW,IAAI;YACpC,IAAI,EAAE,WAAW;YACjB,OAAO,EAAE,CAAC;SACX;QACD,KAAK,EAAE,QAAQ,CAAC,KAAK;QACrB,IAAI,EAAE,QAAQ,CAAC,IAAI;QACnB,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;YACtC,EAAE,EAAE,KAAK,CAAC,EAAE;YACZ,KAAK,EAAE,KAAK,CAAC,KAAK;YAClB,WAAW,EAAE,KAAK,CAAC,WAAW;YAC9B,aAAa,EAAE,KAAK,CAAC,YAAY;YACjC,SAAS,EAAE,KAAK,CAAC,QAAQ;YACzB,KAAK,EAAE,KAAK,CAAC,KAAK;YAClB,MAAM,EAAE,KAAK,CAAC,MAAM;YACpB,GAAG,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,KAAK,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SAC9D,CAAC,CAAC;QACH,GAAG,CAAC,QAAQ,CAAC,gBAAgB,CAAC,CAAC,CAAC,EAAE,kBAAkB,EAAE,QAAQ,CAAC,gBAAgB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KACxF,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,CAChB,CAAC;AACJ,CAAC;AAED,SAAS,oBAAoB,CAAC,QAAoC;IAChE,MAAM,UAAU,GAAG,QAAQ,CAAC,MAAM;SAC/B,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,OAAO,KAAK,CAAC,EAAE,QAAQ,KAAK,CAAC,WAAW,KAAK,KAAK,CAAC,YAAY,YAAY,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC;SACxJ,IAAI,CAAC,IAAI,CAAC,CAAC;IAEd,OAAO;QACL,KAAK,QAAQ,CAAC,KAAK,EAAE;QACrB,EAAE;QACF,QAAQ,CAAC,IAAI;QACb,EAAE;QACF,YAAY;QACZ,EAAE;QACF,oFAAoF;QACpF,kEAAkE;QAClE,kFAAkF;QAClF,yFAAyF;QACzF,EAAE;QACF,WAAW;QACX,EAAE;QACF,UAAU;QACV,EAAE;QACF,qIAAqI;QACrI,EAAE;KACH,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACf,CAAC;AAED,SAAS,iBAAiB,CAAC,QAAoC;IAC7D,OAAO;QACL,0BAA0B;QAC1B,EAAE;QACF,aAAa,QAAQ,CAAC,EAAE,EAAE;QAC1B,EAAE;QACF,4IAA4I;QAC5I,EAAE;KACH,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACf,CAAC;AAED,SAAS,gBAAgB,CACvB,QAAoC,EACpC,KAA8B;IAE9B,MAAM,KAAK,GAAG,QAAQ,CAAC,gBAAgB,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC;IAC1D,MAAM,kBAAkB,GACtB,KAAK,CAAC,YAAY,KAAK,yBAAyB;QAC9C,CAAC,CAAC;YACE,iJAAiJ;YACjJ,qFAAqF;YACrF,wEAAwE;SACzE;QACH,CAAC,CAAC,KAAK,CAAC,YAAY,KAAK,+BAA+B;YACtD,CAAC,CAAC;gBACE,oEAAoE;gBACpE,8EAA8E;aAC/E;YACH,CAAC,CAAC,KAAK,CAAC,YAAY,KAAK,uBAAuB;gBAC9C,CAAC,CAAC;oBACE,uGAAuG;oBACvG,kDAAkD;iBACnD;gBACL,CAAC,CAAC,EAAE,CAAC;IAEX,OAAO;QACL,KAAK,KAAK,CAAC,KAAK,EAAE;QAClB,EAAE;QACF,KAAK,CAAC,WAAW;QACjB,EAAE;QACF,oBAAoB,KAAK,CAAC,YAAY,IAAI;QAC1C,EAAE;QACF,GAAG,CAAC,kBAAkB,CAAC,MAAM,GAAG,CAAC;YAC/B,CAAC,CAAC;gBACE,iBAAiB;gBACjB,EAAE;gBACF,GAAG,kBAAkB,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,KAAK,IAAI,EAAE,CAAC;gBAChD,EAAE;aACH;YACH,CAAC,CAAC,EAAE,CAAC;QACP,GAAG,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC;YAClB,CAAC,CAAC;gBACE,UAAU;gBACV,EAAE;gBACF,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,KAAK,IAAI,EAAE,CAAC;gBACnC,EAAE;aACH;YACH,CAAC,CAAC,EAAE,CAAC;KACR,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACf,CAAC;AAED,MAAM,UAAU,6BAA6B,CAC3C,aAAqB,EACrB,QAAoC;IAEpC,MAAM,WAAW,GAAG,mBAAmB,CAAC,aAAa,CAAC,CAAC;IACvD,SAAS,CAAC,IAAI,CAAC,WAAW,EAAE,QAAQ,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC5D,SAAS,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,EAAE,OAAO,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAClE,SAAS,CAAC,IAAI,CAAC,WAAW,EAAE,SAAS,EAAE,QAAQ,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAEvE,KAAK,MAAM,KAAK,IAAI,QAAQ,CAAC,MAAM,EAAE,CAAC;QACpC,SAAS,CAAC,IAAI,CAAC,WAAW,EAAE,SAAS,EAAE,QAAQ,EAAE,KAAK,CAAC,QAAQ,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACzF,CAAC;IAED,wBAAwB,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC;IAChD,wBAAwB,CAAC,WAAW,EAAE,QAAQ,CAAC,MAAM,EAAE,GAAG,QAAQ,CAAC,KAAK,mBAAmB,CAAC,CAAC;IAC7F,aAAa,CAAC,IAAI,CAAC,WAAW,EAAE,WAAW,CAAC,EAAE,oBAAoB,CAAC,QAAQ,CAAC,CAAC,CAAC;IAC9E,aAAa,CAAC,IAAI,CAAC,WAAW,EAAE,QAAQ,EAAE,UAAU,CAAC,EAAE,iBAAiB,CAAC,QAAQ,CAAC,CAAC,CAAC;IACpF,aAAa,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,EAAE,OAAO,EAAE,UAAU,CAAC,EAAE,yBAAyB,EAAE,CAAC,CAAC;IAE1F,KAAK,MAAM,KAAK,IAAI,QAAQ,CAAC,MAAM,EAAE,CAAC;QACpC,aAAa,CACX,IAAI,CAAC,WAAW,EAAE,SAAS,EAAE,QAAQ,EAAE,KAAK,CAAC,QAAQ,EAAE,UAAU,CAAC,EAClE,gBAAgB,CAAC,QAAQ,EAAE,KAAK,CAAC,CAClC,CAAC;IACJ,CAAC;IAED,wBAAwB,CAAC,WAAW,EAAE,QAAQ,CAAC,WAAW,CAAC,CAAC;AAC9D,CAAC"}
@@ -1,5 +1,6 @@
1
- export { INTERF_CONTAINER_NAME, WORKSPACE_CONTAINER_NAME, WORKFLOW_CONTAINER_NAME, BENCHMARK_CONTAINER_NAME, INTERF_CONFIG_FILE, WORKFLOW_PACKAGE_DIR, readInterfConfig, detectInterf, resolveWorkspace, resolveSourceFolderPath, listWorkspacesForSourceFolder, hasSourceFolderInput, assertWorkspaceContainer, assertWritableTargetDir, assertWorkspaceName, } from "./interf-detect.js";
1
+ export { INTERF_CONTAINER_NAME, WORKSPACE_CONTAINER_NAME, WORKFLOW_CONTAINER_NAME, BENCHMARK_CONTAINER_NAME, INTERF_CONFIG_FILE, WORKFLOW_PACKAGE_DIR, readInterfConfig, detectInterf, resolveWorkspace, resolveSourceFolderPath, resolveSourceControlPath, listWorkspacesForSourceFolder, hasSourceFolderInput, assertWorkspaceContainer, assertWritableTargetDir, assertWorkspaceName, } from "./interf-detect.js";
2
2
  export type { InterfConfig, ResolvedWorkspace } from "./interf-detect.js";
3
- export { syncClaudeBootstrap, refreshWorkspaceBootstrapGuidance, refreshLegacyAgentsBootstrap, insertLineAfterFirstMatch, insertBlockBeforeFirstMatch, renderClaudeBootstrap, buildWorkspaceRuntimeControlLines, buildWorkspaceAgentLayerLines, } from "./interf-bootstrap.js";
3
+ export { ensureWorkspaceRawBinding, resolveWorkspaceRawPath, syncWorkspaceRawSnapshot, } from "./workspace-raw.js";
4
+ export { refreshWorkspaceBootstrapGuidance, renderClaudeBootstrap, } from "./interf-bootstrap.js";
4
5
  export { createWorkspace, defaultWorkspaceNameForSource, } from "./interf-scaffold.js";
5
6
  //# sourceMappingURL=interf.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"interf.d.ts","sourceRoot":"","sources":["../../src/lib/interf.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,qBAAqB,EACrB,wBAAwB,EACxB,uBAAuB,EACvB,wBAAwB,EACxB,kBAAkB,EAClB,oBAAoB,EACpB,gBAAgB,EAChB,YAAY,EACZ,gBAAgB,EAChB,uBAAuB,EACvB,6BAA6B,EAC7B,oBAAoB,EACpB,wBAAwB,EACxB,uBAAuB,EACvB,mBAAmB,GACpB,MAAM,oBAAoB,CAAC;AAC5B,YAAY,EAAE,YAAY,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAE1E,OAAO,EACL,mBAAmB,EACnB,iCAAiC,EACjC,4BAA4B,EAC5B,yBAAyB,EACzB,2BAA2B,EAC3B,qBAAqB,EACrB,iCAAiC,EACjC,6BAA6B,GAC9B,MAAM,uBAAuB,CAAC;AAE/B,OAAO,EACL,eAAe,EACf,6BAA6B,GAC9B,MAAM,sBAAsB,CAAC"}
1
+ {"version":3,"file":"interf.d.ts","sourceRoot":"","sources":["../../src/lib/interf.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,qBAAqB,EACrB,wBAAwB,EACxB,uBAAuB,EACvB,wBAAwB,EACxB,kBAAkB,EAClB,oBAAoB,EACpB,gBAAgB,EAChB,YAAY,EACZ,gBAAgB,EAChB,uBAAuB,EACvB,wBAAwB,EACxB,6BAA6B,EAC7B,oBAAoB,EACpB,wBAAwB,EACxB,uBAAuB,EACvB,mBAAmB,GACpB,MAAM,oBAAoB,CAAC;AAC5B,YAAY,EAAE,YAAY,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAE1E,OAAO,EACL,yBAAyB,EACzB,uBAAuB,EACvB,wBAAwB,GACzB,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EACL,iCAAiC,EACjC,qBAAqB,GACtB,MAAM,uBAAuB,CAAC;AAE/B,OAAO,EACL,eAAe,EACf,6BAA6B,GAC9B,MAAM,sBAAsB,CAAC"}
@@ -1,4 +1,5 @@
1
- export { INTERF_CONTAINER_NAME, WORKSPACE_CONTAINER_NAME, WORKFLOW_CONTAINER_NAME, BENCHMARK_CONTAINER_NAME, INTERF_CONFIG_FILE, WORKFLOW_PACKAGE_DIR, readInterfConfig, detectInterf, resolveWorkspace, resolveSourceFolderPath, listWorkspacesForSourceFolder, hasSourceFolderInput, assertWorkspaceContainer, assertWritableTargetDir, assertWorkspaceName, } from "./interf-detect.js";
2
- export { syncClaudeBootstrap, refreshWorkspaceBootstrapGuidance, refreshLegacyAgentsBootstrap, insertLineAfterFirstMatch, insertBlockBeforeFirstMatch, renderClaudeBootstrap, buildWorkspaceRuntimeControlLines, buildWorkspaceAgentLayerLines, } from "./interf-bootstrap.js";
1
+ export { INTERF_CONTAINER_NAME, WORKSPACE_CONTAINER_NAME, WORKFLOW_CONTAINER_NAME, BENCHMARK_CONTAINER_NAME, INTERF_CONFIG_FILE, WORKFLOW_PACKAGE_DIR, readInterfConfig, detectInterf, resolveWorkspace, resolveSourceFolderPath, resolveSourceControlPath, listWorkspacesForSourceFolder, hasSourceFolderInput, assertWorkspaceContainer, assertWritableTargetDir, assertWorkspaceName, } from "./interf-detect.js";
2
+ export { ensureWorkspaceRawBinding, resolveWorkspaceRawPath, syncWorkspaceRawSnapshot, } from "./workspace-raw.js";
3
+ export { refreshWorkspaceBootstrapGuidance, renderClaudeBootstrap, } from "./interf-bootstrap.js";
3
4
  export { createWorkspace, defaultWorkspaceNameForSource, } from "./interf-scaffold.js";
4
5
  //# sourceMappingURL=interf.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"interf.js","sourceRoot":"","sources":["../../src/lib/interf.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,qBAAqB,EACrB,wBAAwB,EACxB,uBAAuB,EACvB,wBAAwB,EACxB,kBAAkB,EAClB,oBAAoB,EACpB,gBAAgB,EAChB,YAAY,EACZ,gBAAgB,EAChB,uBAAuB,EACvB,6BAA6B,EAC7B,oBAAoB,EACpB,wBAAwB,EACxB,uBAAuB,EACvB,mBAAmB,GACpB,MAAM,oBAAoB,CAAC;AAG5B,OAAO,EACL,mBAAmB,EACnB,iCAAiC,EACjC,4BAA4B,EAC5B,yBAAyB,EACzB,2BAA2B,EAC3B,qBAAqB,EACrB,iCAAiC,EACjC,6BAA6B,GAC9B,MAAM,uBAAuB,CAAC;AAE/B,OAAO,EACL,eAAe,EACf,6BAA6B,GAC9B,MAAM,sBAAsB,CAAC"}
1
+ {"version":3,"file":"interf.js","sourceRoot":"","sources":["../../src/lib/interf.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,qBAAqB,EACrB,wBAAwB,EACxB,uBAAuB,EACvB,wBAAwB,EACxB,kBAAkB,EAClB,oBAAoB,EACpB,gBAAgB,EAChB,YAAY,EACZ,gBAAgB,EAChB,uBAAuB,EACvB,wBAAwB,EACxB,6BAA6B,EAC7B,oBAAoB,EACpB,wBAAwB,EACxB,uBAAuB,EACvB,mBAAmB,GACpB,MAAM,oBAAoB,CAAC;AAG5B,OAAO,EACL,yBAAyB,EACzB,uBAAuB,EACvB,wBAAwB,GACzB,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EACL,iCAAiC,EACjC,qBAAqB,GACtB,MAAM,uBAAuB,CAAC;AAE/B,OAAO,EACL,eAAe,EACf,6BAA6B,GAC9B,MAAM,sBAAsB,CAAC"}
@@ -1,5 +1,5 @@
1
1
  import { z } from "zod";
2
- import { RuntimeContractTypeSchema, RuntimeStageAcceptanceSchema } from "./schema.js";
2
+ import { WorkflowCompilerApiSchema, RuntimeContractTypeSchema, RuntimeStageAcceptanceSchema, WorkflowStageZoneAccessSchema, type WorkflowWorkspaceSchema } from "./schema.js";
3
3
  export interface LocalWorkflowStarterDoc {
4
4
  relativePath: string;
5
5
  content: string;
@@ -10,19 +10,24 @@ export interface LocalWorkflowStageDefinition {
10
10
  contract_type: z.infer<typeof RuntimeContractTypeSchema>;
11
11
  skill_dir?: string;
12
12
  description?: string;
13
+ reads: z.infer<typeof WorkflowStageZoneAccessSchema>;
14
+ writes: z.infer<typeof WorkflowStageZoneAccessSchema>;
13
15
  acceptance?: z.infer<typeof RuntimeStageAcceptanceSchema>;
14
16
  }
15
17
  export interface LocalWorkflowDefinition {
16
18
  id: string;
17
19
  type: "workspace";
20
+ compiler_api?: z.infer<typeof WorkflowCompilerApiSchema>;
18
21
  label: string;
19
22
  hint: string;
20
23
  extends?: string;
21
24
  stages?: LocalWorkflowStageDefinition[];
22
25
  stage_policy_notes?: Record<string, string[]>;
26
+ workspace_schema: WorkflowWorkspaceSchema;
23
27
  starter_docs: LocalWorkflowStarterDoc[];
24
28
  directoryPath: string;
25
29
  workflowPath: string;
30
+ workspaceSchemaPath: string;
26
31
  }
27
32
  export declare function workflowDefinitionPath(sourcePath: string, id: string): string;
28
33
  export declare function loadWorkflowDefinitionFromDir(dirPath: string): LocalWorkflowDefinition | null;
@@ -1 +1 @@
1
- {"version":3,"file":"local-workflows.d.ts","sourceRoot":"","sources":["../../src/lib/local-workflows.ts"],"names":[],"mappings":"AASA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAKxB,OAAO,EACL,yBAAyB,EACzB,4BAA4B,EAE7B,MAAM,aAAa,CAAC;AAErB,MAAM,WAAW,uBAAuB;IACtC,YAAY,EAAE,MAAM,CAAC;IACrB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,4BAA4B;IAC3C,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,aAAa,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,yBAAyB,CAAC,CAAC;IACzD,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,4BAA4B,CAAC,CAAC;CAC3D;AAED,MAAM,WAAW,uBAAuB;IACtC,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,WAAW,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,4BAA4B,EAAE,CAAC;IACxC,kBAAkB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;IAC9C,YAAY,EAAE,uBAAuB,EAAE,CAAC;IACxC,aAAa,EAAE,MAAM,CAAC;IACtB,YAAY,EAAE,MAAM,CAAC;CACtB;AAyCD,wBAAgB,sBAAsB,CACpC,UAAU,EAAE,MAAM,EAClB,EAAE,EAAE,MAAM,GACT,MAAM,CAER;AAYD,wBAAgB,6BAA6B,CAC3C,OAAO,EAAE,MAAM,GACd,uBAAuB,GAAG,IAAI,CAyBhC;AAED,wBAAgB,4BAA4B,CAC1C,UAAU,EAAE,MAAM,GACjB,uBAAuB,EAAE,CAgB3B;AAED,wBAAgB,2BAA2B,CACzC,UAAU,EAAE,MAAM,EAClB,EAAE,EAAE,MAAM,GACT,uBAAuB,GAAG,IAAI,CAEhC;AAED,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAEnD;AAED,MAAM,WAAW,wBAAwB;IACvC,EAAE,EAAE,OAAO,CAAC;IACZ,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAChC;AAED,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,MAAM,GAAG,wBAAwB,CAyEjF;AAED,wBAAgB,4BAA4B,CAC1C,UAAU,EAAE,MAAM,EAClB,EAAE,EAAE,MAAM,EACV,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACrC,IAAI,EAAE,KAAK,CAAC;IAAE,YAAY,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC,GACrD,MAAM,CAUR"}
1
+ {"version":3,"file":"local-workflows.d.ts","sourceRoot":"","sources":["../../src/lib/local-workflows.ts"],"names":[],"mappings":"AASA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAKxB,OAAO,EACL,yBAAyB,EACzB,yBAAyB,EACzB,4BAA4B,EAC5B,6BAA6B,EAG7B,KAAK,uBAAuB,EAC7B,MAAM,aAAa,CAAC;AAOrB,MAAM,WAAW,uBAAuB;IACtC,YAAY,EAAE,MAAM,CAAC;IACrB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,4BAA4B;IAC3C,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,aAAa,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,yBAAyB,CAAC,CAAC;IACzD,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,6BAA6B,CAAC,CAAC;IACrD,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,6BAA6B,CAAC,CAAC;IACtD,UAAU,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,4BAA4B,CAAC,CAAC;CAC3D;AAED,MAAM,WAAW,uBAAuB;IACtC,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,WAAW,CAAC;IAClB,YAAY,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,yBAAyB,CAAC,CAAC;IACzD,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,4BAA4B,EAAE,CAAC;IACxC,kBAAkB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;IAC9C,gBAAgB,EAAE,uBAAuB,CAAC;IAC1C,YAAY,EAAE,uBAAuB,EAAE,CAAC;IACxC,aAAa,EAAE,MAAM,CAAC;IACtB,YAAY,EAAE,MAAM,CAAC;IACrB,mBAAmB,EAAE,MAAM,CAAC;CAC7B;AA4CD,wBAAgB,sBAAsB,CACpC,UAAU,EAAE,MAAM,EAClB,EAAE,EAAE,MAAM,GACT,MAAM,CAER;AAYD,wBAAgB,6BAA6B,CAC3C,OAAO,EAAE,MAAM,GACd,uBAAuB,GAAG,IAAI,CAkChC;AAED,wBAAgB,4BAA4B,CAC1C,UAAU,EAAE,MAAM,GACjB,uBAAuB,EAAE,CAgB3B;AAED,wBAAgB,2BAA2B,CACzC,UAAU,EAAE,MAAM,EAClB,EAAE,EAAE,MAAM,GACT,uBAAuB,GAAG,IAAI,CAEhC;AAED,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAEnD;AAED,MAAM,WAAW,wBAAwB;IACvC,EAAE,EAAE,OAAO,CAAC;IACZ,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAChC;AAED,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,MAAM,GAAG,wBAAwB,CAsMjF;AAED,wBAAgB,4BAA4B,CAC1C,UAAU,EAAE,MAAM,EAClB,EAAE,EAAE,MAAM,EACV,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACrC,IAAI,EAAE,KAAK,CAAC;IAAE,YAAY,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC,GACrD,MAAM,CA2BR"}
@@ -5,18 +5,22 @@ import { isMarkdownFile } from "./util.js";
5
5
  import { listFilesRecursive } from "./filesystem.js";
6
6
  import { warnInterf } from "./logger.js";
7
7
  import { readJsonFileUnchecked, readJsonFileWithSchema } from "./parse.js";
8
- import { RuntimeContractTypeSchema, RuntimeStageAcceptanceSchema, WorkflowIdPattern, } from "./schema.js";
8
+ import { WorkflowCompilerApiSchema, RuntimeContractTypeSchema, RuntimeStageAcceptanceSchema, WorkflowStageZoneAccessSchema, WorkflowWorkspaceSchemaSchema, WorkflowIdPattern, } from "./schema.js";
9
+ import { BUILTIN_WORKSPACE_ZONE_IDS, writeWorkspaceSchemaFile, workspaceSchemaFilePath, } from "./workspace-schema.js";
9
10
  const LocalWorkflowStageDefinitionSchema = z.object({
10
11
  id: z.string().regex(WorkflowIdPattern),
11
12
  label: z.string().min(1),
12
13
  contract_type: RuntimeContractTypeSchema,
13
14
  skill_dir: z.string().regex(WorkflowIdPattern).optional(),
14
15
  description: z.string().min(1).optional(),
16
+ reads: WorkflowStageZoneAccessSchema,
17
+ writes: WorkflowStageZoneAccessSchema,
15
18
  acceptance: RuntimeStageAcceptanceSchema.optional(),
16
19
  });
17
20
  const LocalWorkflowDefinitionSchema = z.object({
18
21
  id: z.string().regex(WorkflowIdPattern),
19
22
  type: z.literal("workspace"),
23
+ compiler_api: WorkflowCompilerApiSchema.optional(),
20
24
  label: z.string().min(1),
21
25
  hint: z.string().min(1),
22
26
  extends: z.string().regex(WorkflowIdPattern).optional(),
@@ -62,15 +66,21 @@ export function loadWorkflowDefinitionFromDir(dirPath) {
62
66
  const definition = readJsonFileWithSchema(workflowPath, "local workflow definition", LocalWorkflowDefinitionSchema);
63
67
  if (!definition)
64
68
  return null;
69
+ const schemaPath = workspaceSchemaFilePath(dirPath);
70
+ const workspaceSchema = readJsonFileWithSchema(schemaPath, "workspace schema", WorkflowWorkspaceSchemaSchema);
71
+ if (!workspaceSchema)
72
+ return null;
65
73
  if (definition.type !== "workspace") {
66
74
  warnInterf(`Warning: local workflow definition at ${workflowPath} has unexpected type "${definition.type}".`);
67
75
  return null;
68
76
  }
69
77
  return {
70
78
  ...definition,
79
+ workspace_schema: workspaceSchema,
71
80
  starter_docs: collectStarterDocs(dirPath),
72
81
  directoryPath: dirPath,
73
82
  workflowPath,
83
+ workspaceSchemaPath: schemaPath,
74
84
  };
75
85
  }
76
86
  export function listLocalWorkflowDefinitions(sourcePath) {
@@ -99,6 +109,7 @@ export function isWorkflowId(value) {
99
109
  }
100
110
  export function validateWorkflowPackage(dirPath) {
101
111
  const workflowPath = join(dirPath, "workflow.json");
112
+ const schemaPath = workspaceSchemaFilePath(dirPath);
102
113
  if (!existsSync(workflowPath)) {
103
114
  return {
104
115
  ok: false,
@@ -128,6 +139,13 @@ export function validateWorkflowPackage(dirPath) {
128
139
  }
129
140
  const def = parsed.data;
130
141
  const errors = [];
142
+ if (!existsSync(schemaPath)) {
143
+ errors.push("Missing workspace.schema.json.");
144
+ }
145
+ const workspaceSchema = readJsonFileWithSchema(schemaPath, "workspace schema", WorkflowWorkspaceSchemaSchema);
146
+ if (!workspaceSchema) {
147
+ errors.push("workspace.schema.json is missing or invalid.");
148
+ }
131
149
  if (def.stages && def.stages.length > 0) {
132
150
  const order = new Map([
133
151
  ["workspace-file-evidence", 0],
@@ -153,10 +171,118 @@ export function validateWorkflowPackage(dirPath) {
153
171
  }
154
172
  }
155
173
  }
174
+ if (workspaceSchema) {
175
+ const fallbackStages = [
176
+ {
177
+ id: "summarize",
178
+ reads: [BUILTIN_WORKSPACE_ZONE_IDS.RAW, BUILTIN_WORKSPACE_ZONE_IDS.RUNTIME],
179
+ writes: [BUILTIN_WORKSPACE_ZONE_IDS.SUMMARIES],
180
+ },
181
+ {
182
+ id: "structure",
183
+ reads: [BUILTIN_WORKSPACE_ZONE_IDS.SUMMARIES, BUILTIN_WORKSPACE_ZONE_IDS.RUNTIME],
184
+ writes: [
185
+ BUILTIN_WORKSPACE_ZONE_IDS.KNOWLEDGE_ENTITIES,
186
+ BUILTIN_WORKSPACE_ZONE_IDS.KNOWLEDGE_CLAIMS,
187
+ BUILTIN_WORKSPACE_ZONE_IDS.KNOWLEDGE_INDEXES,
188
+ ],
189
+ },
190
+ {
191
+ id: "shape",
192
+ reads: [
193
+ BUILTIN_WORKSPACE_ZONE_IDS.SUMMARIES,
194
+ BUILTIN_WORKSPACE_ZONE_IDS.KNOWLEDGE_ENTITIES,
195
+ BUILTIN_WORKSPACE_ZONE_IDS.KNOWLEDGE_CLAIMS,
196
+ BUILTIN_WORKSPACE_ZONE_IDS.KNOWLEDGE_INDEXES,
197
+ BUILTIN_WORKSPACE_ZONE_IDS.RUNTIME,
198
+ ],
199
+ writes: [
200
+ BUILTIN_WORKSPACE_ZONE_IDS.KNOWLEDGE_INDEXES,
201
+ BUILTIN_WORKSPACE_ZONE_IDS.HOME,
202
+ ],
203
+ },
204
+ ];
205
+ const stages = def.stages ?? fallbackStages;
206
+ const stageIds = new Set(stages.map((stage) => stage.id));
207
+ const seenPaths = new Map();
208
+ const seenZoneIds = new Set();
209
+ const zoneById = new Map(workspaceSchema.zones.map((zone) => [zone.id, zone]));
210
+ const normalizedParts = (value) => value.replaceAll("\\", "/").split("/").filter(Boolean);
211
+ const hasOverlappingPath = (value, other) => {
212
+ const a = normalizedParts(value);
213
+ const b = normalizedParts(other);
214
+ const shorter = a.length <= b.length ? a : b;
215
+ const longer = a.length <= b.length ? b : a;
216
+ return shorter.every((part, index) => longer[index] === part);
217
+ };
218
+ for (const zone of workspaceSchema.zones) {
219
+ if (seenZoneIds.has(zone.id)) {
220
+ errors.push(`workspace.schema.json repeats zone id "${zone.id}".`);
221
+ }
222
+ seenZoneIds.add(zone.id);
223
+ const existingPathOwner = seenPaths.get(zone.path);
224
+ if (existingPathOwner) {
225
+ errors.push(`workspace.schema.json repeats zone path "${zone.path}".`);
226
+ }
227
+ for (const [existingPath, existingZoneId] of seenPaths.entries()) {
228
+ if (existingPath === zone.path)
229
+ continue;
230
+ if (hasOverlappingPath(zone.path, existingPath)) {
231
+ errors.push(`workspace.schema.json zones "${zone.id}" and "${existingZoneId}" overlap on path "${zone.path}" / "${existingPath}".`);
232
+ }
233
+ }
234
+ seenPaths.set(zone.path, zone.id);
235
+ for (const owner of zone.owned_by) {
236
+ if (!stageIds.has(owner)) {
237
+ errors.push(`workspace.schema.json references unknown stage "${owner}" for zone "${zone.path}".`);
238
+ }
239
+ }
240
+ }
241
+ for (const stage of stages) {
242
+ for (const zoneId of stage.reads) {
243
+ if (!zoneById.has(zoneId)) {
244
+ errors.push(`Stage "${stage.id}" reads unknown zone "${zoneId}".`);
245
+ }
246
+ }
247
+ for (const zoneId of stage.writes) {
248
+ const zone = zoneById.get(zoneId);
249
+ if (!zone) {
250
+ errors.push(`Stage "${stage.id}" writes unknown zone "${zoneId}".`);
251
+ continue;
252
+ }
253
+ if (!zone.owned_by.includes(stage.id)) {
254
+ errors.push(`Stage "${stage.id}" writes zone "${zoneId}" but that zone is not owned by the stage in workspace.schema.json.`);
255
+ }
256
+ }
257
+ }
258
+ const requiredZones = [
259
+ { id: BUILTIN_WORKSPACE_ZONE_IDS.RAW, path: "raw", kind: "directory" },
260
+ { id: BUILTIN_WORKSPACE_ZONE_IDS.SUMMARIES, path: "summaries", kind: "directory" },
261
+ { id: BUILTIN_WORKSPACE_ZONE_IDS.KNOWLEDGE_ENTITIES, path: "knowledge/entities", kind: "directory" },
262
+ { id: BUILTIN_WORKSPACE_ZONE_IDS.KNOWLEDGE_CLAIMS, path: "knowledge/claims", kind: "directory" },
263
+ { id: BUILTIN_WORKSPACE_ZONE_IDS.KNOWLEDGE_INDEXES, path: "knowledge/indexes", kind: "directory" },
264
+ { id: BUILTIN_WORKSPACE_ZONE_IDS.HOME, path: "home.md", kind: "file" },
265
+ { id: BUILTIN_WORKSPACE_ZONE_IDS.RUNTIME, path: ".interf", kind: "runtime" },
266
+ ];
267
+ for (const requiredZone of requiredZones) {
268
+ const match = zoneById.get(requiredZone.id);
269
+ if (!match) {
270
+ errors.push(`workspace.schema.json is missing required zone "${requiredZone.id}".`);
271
+ continue;
272
+ }
273
+ if (match.path !== requiredZone.path) {
274
+ errors.push(`workspace.schema.json zone "${requiredZone.id}" should point at "${requiredZone.path}".`);
275
+ }
276
+ if (match.kind !== requiredZone.kind) {
277
+ errors.push(`workspace.schema.json zone "${requiredZone.path}" should be kind "${requiredZone.kind}".`);
278
+ }
279
+ }
280
+ }
156
281
  const stageDirs = listFilesRecursive(join(dirPath, "compile", "stages"), (filePath) => basename(filePath) === "SKILL.md");
157
282
  const counts = {
158
283
  starter_docs: collectStarterDocs(dirPath).length,
159
284
  compile_stage_docs: stageDirs.length,
285
+ workspace_zones: workspaceSchema?.zones.length ?? 0,
160
286
  };
161
287
  return {
162
288
  ok: errors.length === 0,
@@ -168,7 +294,22 @@ export function validateWorkflowPackage(dirPath) {
168
294
  export function writeLocalWorkflowDefinition(sourcePath, id, workflowJson, docs) {
169
295
  const root = workflowDefinitionPath(sourcePath, id);
170
296
  mkdirSync(root, { recursive: true });
171
- writeFileSync(join(root, "workflow.json"), JSON.stringify(workflowJson, null, 2) + "\n");
297
+ const normalizedWorkflowJson = {
298
+ compiler_api: {
299
+ kind: "workspace",
300
+ version: 1,
301
+ },
302
+ ...workflowJson,
303
+ };
304
+ writeFileSync(join(root, "workflow.json"), JSON.stringify(normalizedWorkflowJson, null, 2) + "\n");
305
+ const stages = Array.isArray(normalizedWorkflowJson.stages)
306
+ ? (normalizedWorkflowJson.stages)
307
+ : [
308
+ { id: "summarize", contract_type: "workspace-file-evidence" },
309
+ { id: "structure", contract_type: "workspace-knowledge-structure" },
310
+ { id: "shape", contract_type: "workspace-query-shape" },
311
+ ];
312
+ writeWorkspaceSchemaFile(root, stages, `${String(normalizedWorkflowJson.label ?? id)} workspace schema`);
172
313
  for (const doc of docs) {
173
314
  const targetPath = join(root, doc.relativePath);
174
315
  mkdirSync(dirname(targetPath), { recursive: true });