@interf/compiler 0.3.1 → 0.3.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +124 -54
- package/dist/commands/compile.d.ts +12 -0
- package/dist/commands/compile.d.ts.map +1 -1
- package/dist/commands/compile.js +233 -29
- package/dist/commands/compile.js.map +1 -1
- package/dist/commands/create.d.ts.map +1 -1
- package/dist/commands/create.js +22 -13
- package/dist/commands/create.js.map +1 -1
- package/dist/commands/default.js +1 -1
- package/dist/commands/default.js.map +1 -1
- package/dist/commands/executor-flow.d.ts +2 -0
- package/dist/commands/executor-flow.d.ts.map +1 -1
- package/dist/commands/executor-flow.js +71 -22
- package/dist/commands/executor-flow.js.map +1 -1
- package/dist/commands/init.d.ts.map +1 -1
- package/dist/commands/init.js +60 -22
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/reset.d.ts.map +1 -1
- package/dist/commands/reset.js +2 -18
- package/dist/commands/reset.js.map +1 -1
- package/dist/commands/source-config-wizard.d.ts +2 -1
- package/dist/commands/source-config-wizard.d.ts.map +1 -1
- package/dist/commands/source-config-wizard.js +87 -16
- package/dist/commands/source-config-wizard.js.map +1 -1
- package/dist/commands/test-flow.d.ts +5 -0
- package/dist/commands/test-flow.d.ts.map +1 -1
- package/dist/commands/test-flow.js +48 -14
- package/dist/commands/test-flow.js.map +1 -1
- package/dist/commands/test.d.ts.map +1 -1
- package/dist/commands/test.js +18 -5
- package/dist/commands/test.js.map +1 -1
- package/dist/commands/workspace-flow.d.ts +3 -1
- package/dist/commands/workspace-flow.d.ts.map +1 -1
- package/dist/commands/workspace-flow.js +4 -3
- package/dist/commands/workspace-flow.js.map +1 -1
- package/dist/lib/agent-shells.d.ts +17 -0
- package/dist/lib/agent-shells.d.ts.map +1 -0
- package/dist/lib/agent-shells.js +294 -0
- package/dist/lib/agent-shells.js.map +1 -0
- package/dist/lib/benchmark-execution.d.ts +5 -1
- package/dist/lib/benchmark-execution.d.ts.map +1 -1
- package/dist/lib/benchmark-execution.js +34 -12
- package/dist/lib/benchmark-execution.js.map +1 -1
- package/dist/lib/benchmark-paths.d.ts +2 -0
- package/dist/lib/benchmark-paths.d.ts.map +1 -1
- package/dist/lib/benchmark-paths.js +6 -0
- package/dist/lib/benchmark-paths.js.map +1 -1
- package/dist/lib/benchmark-sandbox.d.ts +2 -0
- package/dist/lib/benchmark-sandbox.d.ts.map +1 -1
- package/dist/lib/benchmark-sandbox.js +68 -37
- package/dist/lib/benchmark-sandbox.js.map +1 -1
- package/dist/lib/benchmark-targets.js +1 -1
- package/dist/lib/benchmark-targets.js.map +1 -1
- package/dist/lib/interf-bootstrap.d.ts +2 -13
- package/dist/lib/interf-bootstrap.d.ts.map +1 -1
- package/dist/lib/interf-bootstrap.js +7 -164
- package/dist/lib/interf-bootstrap.js.map +1 -1
- package/dist/lib/interf-detect.d.ts +1 -0
- package/dist/lib/interf-detect.d.ts.map +1 -1
- package/dist/lib/interf-detect.js +5 -18
- package/dist/lib/interf-detect.js.map +1 -1
- package/dist/lib/interf-scaffold.d.ts.map +1 -1
- package/dist/lib/interf-scaffold.js +7 -71
- package/dist/lib/interf-scaffold.js.map +1 -1
- package/dist/lib/interf-workflow-package.d.ts.map +1 -1
- package/dist/lib/interf-workflow-package.js +20 -25
- package/dist/lib/interf-workflow-package.js.map +1 -1
- package/dist/lib/interf.d.ts +3 -2
- package/dist/lib/interf.d.ts.map +1 -1
- package/dist/lib/interf.js +3 -2
- package/dist/lib/interf.js.map +1 -1
- package/dist/lib/local-workflows.d.ts +6 -1
- package/dist/lib/local-workflows.d.ts.map +1 -1
- package/dist/lib/local-workflows.js +143 -2
- package/dist/lib/local-workflows.js.map +1 -1
- package/dist/lib/runtime-contracts.d.ts.map +1 -1
- package/dist/lib/runtime-contracts.js +10 -4
- package/dist/lib/runtime-contracts.js.map +1 -1
- package/dist/lib/runtime-prompt.d.ts.map +1 -1
- package/dist/lib/runtime-prompt.js +1 -0
- package/dist/lib/runtime-prompt.js.map +1 -1
- package/dist/lib/runtime-runs.d.ts.map +1 -1
- package/dist/lib/runtime-runs.js +6 -2
- package/dist/lib/runtime-runs.js.map +1 -1
- package/dist/lib/runtime-types.d.ts +1 -0
- package/dist/lib/runtime-types.d.ts.map +1 -1
- package/dist/lib/schema.d.ts +88 -13
- package/dist/lib/schema.d.ts.map +1 -1
- package/dist/lib/schema.js +66 -21
- package/dist/lib/schema.js.map +1 -1
- package/dist/lib/source-config.d.ts +2 -0
- package/dist/lib/source-config.d.ts.map +1 -1
- package/dist/lib/source-config.js +19 -1
- package/dist/lib/source-config.js.map +1 -1
- package/dist/lib/state-artifacts.d.ts +2 -2
- package/dist/lib/state-artifacts.d.ts.map +1 -1
- package/dist/lib/state-artifacts.js +3 -3
- package/dist/lib/state-artifacts.js.map +1 -1
- package/dist/lib/state-io.d.ts +2 -2
- package/dist/lib/state-io.d.ts.map +1 -1
- package/dist/lib/state-io.js +5 -5
- package/dist/lib/state-io.js.map +1 -1
- package/dist/lib/state-paths.d.ts +1 -1
- package/dist/lib/state-paths.d.ts.map +1 -1
- package/dist/lib/state-paths.js +3 -3
- package/dist/lib/state-paths.js.map +1 -1
- package/dist/lib/state-view.d.ts +2 -2
- package/dist/lib/state-view.d.ts.map +1 -1
- package/dist/lib/state-view.js +6 -7
- package/dist/lib/state-view.js.map +1 -1
- package/dist/lib/state.d.ts +4 -4
- package/dist/lib/state.d.ts.map +1 -1
- package/dist/lib/state.js +3 -3
- package/dist/lib/state.js.map +1 -1
- package/dist/lib/workflow-definitions.d.ts +4 -1
- package/dist/lib/workflow-definitions.d.ts.map +1 -1
- package/dist/lib/workflow-definitions.js +38 -3
- package/dist/lib/workflow-definitions.js.map +1 -1
- package/dist/lib/workflow-stage-runner.d.ts +1 -0
- package/dist/lib/workflow-stage-runner.d.ts.map +1 -1
- package/dist/lib/workflow-stage-runner.js +2 -0
- package/dist/lib/workflow-stage-runner.js.map +1 -1
- package/dist/lib/workflows.d.ts +1 -1
- package/dist/lib/workflows.d.ts.map +1 -1
- package/dist/lib/workspace-compile.d.ts +4 -0
- package/dist/lib/workspace-compile.d.ts.map +1 -1
- package/dist/lib/workspace-compile.js +108 -66
- package/dist/lib/workspace-compile.js.map +1 -1
- package/dist/lib/workspace-docs.d.ts +3 -0
- package/dist/lib/workspace-docs.d.ts.map +1 -0
- package/dist/lib/workspace-docs.js +82 -0
- package/dist/lib/workspace-docs.js.map +1 -0
- package/dist/lib/workspace-raw.d.ts +30 -0
- package/dist/lib/workspace-raw.d.ts.map +1 -0
- package/dist/lib/workspace-raw.js +102 -0
- package/dist/lib/workspace-raw.js.map +1 -0
- package/dist/lib/workspace-reset.d.ts +2 -0
- package/dist/lib/workspace-reset.d.ts.map +1 -0
- package/dist/lib/workspace-reset.js +21 -0
- package/dist/lib/workspace-reset.js.map +1 -0
- package/dist/lib/workspace-schema.d.ts +26 -0
- package/dist/lib/workspace-schema.d.ts.map +1 -0
- package/dist/lib/workspace-schema.js +132 -0
- package/dist/lib/workspace-schema.js.map +1 -0
- package/package.json +1 -1
- package/skills/workflow/create/SKILL.md +19 -0
- package/skills/workspace/shape/SKILL.md +1 -1
- package/templates/workspace/README.md +2 -1
|
@@ -1,171 +1,14 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { join } from "node:path";
|
|
1
|
+
import { basename } from "node:path";
|
|
3
2
|
import { readInterfConfig } from "./interf-detect.js";
|
|
4
|
-
|
|
5
|
-
|
|
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
|
-
|
|
15
|
-
const
|
|
16
|
-
|
|
17
|
-
|
|
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":"AAAA,OAAO,
|
|
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,
|
|
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 {
|
|
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:
|
|
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":"AAAA,OAAO,EACL,UAAU,EACV,WAAW,EACX,QAAQ,GACT,MAAM,SAAS,CAAC;AACjB,OAAO,EAAE,
|
|
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":"
|
|
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 {
|
|
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
|
-
|
|
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"), "
|
|
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":"AAAA,OAAO,EACL,YAAY,EACZ,UAAU,EACV,SAAS,EACT,aAAa,GACd,MAAM,SAAS,CAAC;AACjB,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAC3C,OAAO,EAAE,sBAAsB,EAAE,MAAM,aAAa,CAAC;AACrD,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AACjE,OAAO,EACL,yBAAyB,EACzB,SAAS,EACT,kBAAkB,GACnB,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAC;AACtD,OAAO,EACL,wBAAwB,EACxB,uBAAuB,EACvB,mBAAmB,EACnB,kBAAkB,GACnB,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EAAE,
|
|
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;
|
|
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"),
|
|
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":"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;
|
|
1
|
+
{"version":3,"file":"interf-workflow-package.js","sourceRoot":"","sources":["../../src/lib/interf-workflow-package.ts"],"names":[],"mappings":"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"}
|
package/dist/lib/interf.d.ts
CHANGED
|
@@ -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 {
|
|
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
|
package/dist/lib/interf.d.ts.map
CHANGED
|
@@ -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,
|
|
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"}
|
package/dist/lib/interf.js
CHANGED
|
@@ -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 {
|
|
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
|
package/dist/lib/interf.js.map
CHANGED
|
@@ -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,
|
|
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"}
|