@interf/compiler 0.2.5 → 0.3.0
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 +182 -183
- package/dist/commands/benchmark.d.ts.map +1 -1
- package/dist/commands/benchmark.js +60 -351
- package/dist/commands/benchmark.js.map +1 -1
- package/dist/commands/compile.d.ts.map +1 -1
- package/dist/commands/compile.js +43 -110
- package/dist/commands/compile.js.map +1 -1
- package/dist/commands/create-workflow-wizard.d.ts +4 -25
- package/dist/commands/create-workflow-wizard.d.ts.map +1 -1
- package/dist/commands/create-workflow-wizard.js +29 -214
- package/dist/commands/create-workflow-wizard.js.map +1 -1
- package/dist/commands/create.d.ts +2 -11
- package/dist/commands/create.d.ts.map +1 -1
- package/dist/commands/create.js +72 -461
- package/dist/commands/create.js.map +1 -1
- package/dist/commands/default.d.ts.map +1 -1
- package/dist/commands/default.js +16 -28
- package/dist/commands/default.js.map +1 -1
- package/dist/commands/init.d.ts.map +1 -1
- package/dist/commands/init.js +71 -340
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/list.d.ts.map +1 -1
- package/dist/commands/list.js +12 -22
- package/dist/commands/list.js.map +1 -1
- package/dist/commands/reset.d.ts.map +1 -1
- package/dist/commands/reset.js +27 -124
- package/dist/commands/reset.js.map +1 -1
- package/dist/commands/source-config-wizard.d.ts +11 -11
- package/dist/commands/source-config-wizard.d.ts.map +1 -1
- package/dist/commands/source-config-wizard.js +68 -69
- package/dist/commands/source-config-wizard.js.map +1 -1
- package/dist/commands/status.d.ts.map +1 -1
- package/dist/commands/status.js +60 -56
- package/dist/commands/status.js.map +1 -1
- package/dist/commands/verify.d.ts.map +1 -1
- package/dist/commands/verify.js +59 -98
- package/dist/commands/verify.js.map +1 -1
- package/dist/index.d.ts +7 -7
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +4 -6
- package/dist/index.js.map +1 -1
- package/dist/lib/agent-constants.js +1 -1
- package/dist/lib/agent-constants.js.map +1 -1
- package/dist/lib/benchmark-execution.d.ts.map +1 -1
- package/dist/lib/benchmark-execution.js +7 -16
- package/dist/lib/benchmark-execution.js.map +1 -1
- package/dist/lib/benchmark-targets.d.ts +3 -4
- package/dist/lib/benchmark-targets.d.ts.map +1 -1
- package/dist/lib/benchmark-targets.js +9 -55
- package/dist/lib/benchmark-targets.js.map +1 -1
- package/dist/lib/benchmark-types.d.ts +2 -3
- package/dist/lib/benchmark-types.d.ts.map +1 -1
- package/dist/lib/benchmark.d.ts +1 -1
- package/dist/lib/benchmark.d.ts.map +1 -1
- package/dist/lib/benchmark.js +1 -1
- package/dist/lib/benchmark.js.map +1 -1
- package/dist/lib/config.d.ts +1 -2
- package/dist/lib/config.d.ts.map +1 -1
- package/dist/lib/config.js +2 -4
- package/dist/lib/config.js.map +1 -1
- package/dist/lib/discovery.d.ts +1 -1
- package/dist/lib/discovery.d.ts.map +1 -1
- package/dist/lib/discovery.js +7 -2
- package/dist/lib/discovery.js.map +1 -1
- package/dist/lib/eval-packs.d.ts +6 -52
- package/dist/lib/eval-packs.d.ts.map +1 -1
- package/dist/lib/eval-packs.js +11 -39
- package/dist/lib/eval-packs.js.map +1 -1
- package/dist/lib/interf-bootstrap.d.ts +3 -5
- package/dist/lib/interf-bootstrap.d.ts.map +1 -1
- package/dist/lib/interf-bootstrap.js +10 -57
- package/dist/lib/interf-bootstrap.js.map +1 -1
- package/dist/lib/interf-detect.d.ts +13 -11
- package/dist/lib/interf-detect.d.ts.map +1 -1
- package/dist/lib/interf-detect.js +59 -45
- package/dist/lib/interf-detect.js.map +1 -1
- package/dist/lib/interf-scaffold.d.ts +2 -5
- package/dist/lib/interf-scaffold.d.ts.map +1 -1
- package/dist/lib/interf-scaffold.js +98 -235
- package/dist/lib/interf-scaffold.js.map +1 -1
- package/dist/lib/interf-workflow-package.d.ts +1 -2
- package/dist/lib/interf-workflow-package.d.ts.map +1 -1
- package/dist/lib/interf-workflow-package.js +94 -90
- package/dist/lib/interf-workflow-package.js.map +1 -1
- package/dist/lib/interf.d.ts +4 -5
- package/dist/lib/interf.d.ts.map +1 -1
- package/dist/lib/interf.js +3 -6
- package/dist/lib/interf.js.map +1 -1
- package/dist/lib/local-workflows.d.ts +9 -8
- package/dist/lib/local-workflows.d.ts.map +1 -1
- package/dist/lib/local-workflows.js +42 -94
- package/dist/lib/local-workflows.js.map +1 -1
- package/dist/lib/obsidian.d.ts +1 -3
- package/dist/lib/obsidian.d.ts.map +1 -1
- package/dist/lib/obsidian.js +10 -81
- package/dist/lib/obsidian.js.map +1 -1
- package/dist/lib/registry.d.ts +6 -17
- package/dist/lib/registry.d.ts.map +1 -1
- package/dist/lib/registry.js +36 -50
- package/dist/lib/registry.js.map +1 -1
- package/dist/lib/runtime-contracts.d.ts +2 -3
- package/dist/lib/runtime-contracts.d.ts.map +1 -1
- package/dist/lib/runtime-contracts.js +10 -9
- package/dist/lib/runtime-contracts.js.map +1 -1
- package/dist/lib/runtime-reconcile.d.ts +2 -5
- package/dist/lib/runtime-reconcile.d.ts.map +1 -1
- package/dist/lib/runtime-reconcile.js +23 -176
- package/dist/lib/runtime-reconcile.js.map +1 -1
- package/dist/lib/runtime-runs.d.ts.map +1 -1
- package/dist/lib/runtime-runs.js +52 -57
- package/dist/lib/runtime-runs.js.map +1 -1
- package/dist/lib/runtime-types.d.ts +5 -6
- package/dist/lib/runtime-types.d.ts.map +1 -1
- package/dist/lib/runtime.d.ts +2 -2
- package/dist/lib/runtime.d.ts.map +1 -1
- package/dist/lib/runtime.js +1 -1
- package/dist/lib/runtime.js.map +1 -1
- package/dist/lib/schema.d.ts +53 -312
- package/dist/lib/schema.d.ts.map +1 -1
- package/dist/lib/schema.js +39 -206
- package/dist/lib/schema.js.map +1 -1
- package/dist/lib/source-config.d.ts +7 -7
- package/dist/lib/source-config.d.ts.map +1 -1
- package/dist/lib/source-config.js +55 -62
- package/dist/lib/source-config.js.map +1 -1
- package/dist/lib/state-artifacts.d.ts +5 -11
- package/dist/lib/state-artifacts.d.ts.map +1 -1
- package/dist/lib/state-artifacts.js +8 -18
- package/dist/lib/state-artifacts.js.map +1 -1
- package/dist/lib/state-health.d.ts +4 -8
- package/dist/lib/state-health.d.ts.map +1 -1
- package/dist/lib/state-health.js +27 -223
- package/dist/lib/state-health.js.map +1 -1
- package/dist/lib/state-io.d.ts +7 -12
- package/dist/lib/state-io.d.ts.map +1 -1
- package/dist/lib/state-io.js +26 -93
- package/dist/lib/state-io.js.map +1 -1
- package/dist/lib/state-view.d.ts +4 -6
- package/dist/lib/state-view.d.ts.map +1 -1
- package/dist/lib/state-view.js +62 -101
- package/dist/lib/state-view.js.map +1 -1
- package/dist/lib/state.d.ts +5 -5
- package/dist/lib/state.d.ts.map +1 -1
- package/dist/lib/state.js +4 -4
- package/dist/lib/state.js.map +1 -1
- package/dist/lib/summarize-plan.d.ts +2 -2
- package/dist/lib/summarize-plan.d.ts.map +1 -1
- package/dist/lib/summarize-plan.js +13 -13
- package/dist/lib/summarize-plan.js.map +1 -1
- package/dist/lib/{validate-kb.d.ts → validate-workspace.d.ts} +8 -8
- package/dist/lib/validate-workspace.d.ts.map +1 -0
- package/dist/lib/{validate-kb.js → validate-workspace.js} +44 -46
- package/dist/lib/validate-workspace.js.map +1 -0
- package/dist/lib/validate.d.ts +5 -7
- package/dist/lib/validate.d.ts.map +1 -1
- package/dist/lib/validate.js +6 -19
- package/dist/lib/validate.js.map +1 -1
- package/dist/lib/workflow-definitions.d.ts +14 -50
- package/dist/lib/workflow-definitions.d.ts.map +1 -1
- package/dist/lib/workflow-definitions.js +74 -349
- package/dist/lib/workflow-definitions.js.map +1 -1
- package/dist/lib/workflow-helpers.d.ts +3 -4
- package/dist/lib/workflow-helpers.d.ts.map +1 -1
- package/dist/lib/workflow-helpers.js +15 -49
- package/dist/lib/workflow-helpers.js.map +1 -1
- package/dist/lib/workflow-stage-runner.d.ts +1 -2
- package/dist/lib/workflow-stage-runner.d.ts.map +1 -1
- package/dist/lib/workflow-stage-runner.js +4 -6
- package/dist/lib/workflow-stage-runner.js.map +1 -1
- package/dist/lib/workflow-starter-docs.d.ts +3 -5
- package/dist/lib/workflow-starter-docs.d.ts.map +1 -1
- package/dist/lib/workflow-starter-docs.js +2 -17
- package/dist/lib/workflow-starter-docs.js.map +1 -1
- package/dist/lib/workflows.d.ts +9 -14
- package/dist/lib/workflows.d.ts.map +1 -1
- package/dist/lib/workflows.js +13 -30
- package/dist/lib/workflows.js.map +1 -1
- package/dist/lib/workspace-compile.d.ts +50 -0
- package/dist/lib/workspace-compile.d.ts.map +1 -0
- package/dist/lib/{workflows-kb.js → workspace-compile.js} +81 -89
- package/dist/lib/workspace-compile.js.map +1 -0
- package/package.json +9 -9
- package/skills/benchmark/SKILL.md +16 -24
- package/skills/workflow/create/SKILL.md +7 -14
- package/templates/workspace/README.md +23 -0
- package/templates/workspace/interfignore +2 -0
- package/dist/lib/bundled-templates.d.ts +0 -5
- package/dist/lib/bundled-templates.d.ts.map +0 -1
- package/dist/lib/bundled-templates.js +0 -23
- package/dist/lib/bundled-templates.js.map +0 -1
- package/dist/lib/interf-compile-plan.d.ts +0 -12
- package/dist/lib/interf-compile-plan.d.ts.map +0 -1
- package/dist/lib/interf-compile-plan.js +0 -143
- package/dist/lib/interf-compile-plan.js.map +0 -1
- package/dist/lib/validate-interface.d.ts +0 -79
- package/dist/lib/validate-interface.d.ts.map +0 -1
- package/dist/lib/validate-interface.js +0 -535
- package/dist/lib/validate-interface.js.map +0 -1
- package/dist/lib/validate-kb.d.ts.map +0 -1
- package/dist/lib/validate-kb.js.map +0 -1
- package/dist/lib/workflows-interface-contracts.d.ts +0 -24
- package/dist/lib/workflows-interface-contracts.d.ts.map +0 -1
- package/dist/lib/workflows-interface-contracts.js +0 -304
- package/dist/lib/workflows-interface-contracts.js.map +0 -1
- package/dist/lib/workflows-interface.d.ts +0 -72
- package/dist/lib/workflows-interface.d.ts.map +0 -1
- package/dist/lib/workflows-interface.js +0 -377
- package/dist/lib/workflows-interface.js.map +0 -1
- package/dist/lib/workflows-kb.d.ts +0 -50
- package/dist/lib/workflows-kb.d.ts.map +0 -1
- package/dist/lib/workflows-kb.js.map +0 -1
- package/skills/interface/analyze/SKILL.md +0 -191
- package/skills/interface/compile/SKILL.md +0 -152
- package/skills/interface/compile/references/output-format.md +0 -48
- package/skills/interface/create/SKILL.md +0 -87
- package/skills/interface/create/references/compile-plan-format.md +0 -109
- package/skills/interface/create/references/workflows.md +0 -35
- package/skills/interface/query/SKILL.md +0 -48
- package/skills/interface/retrieve/SKILL.md +0 -133
- package/skills/knowledge-base/compile/SKILL.md +0 -196
- package/skills/knowledge-base/compile/references/output-format.md +0 -48
- package/skills/knowledge-base/compile/references/stage-claims.md +0 -60
- package/skills/knowledge-base/compile/references/stage-entities.md +0 -46
- package/skills/knowledge-base/query/SKILL.md +0 -45
- package/skills/knowledge-base/summarize/SKILL.md +0 -152
- package/templates/interface/README.md +0 -159
- package/templates/interface/interfaces.md +0 -102
- package/templates/knowledge-base/README.md +0 -137
- package/templates/knowledge-base/interfignore +0 -19
- package/templates/knowledge-base/registry.md +0 -118
- package/templates/workflow-package/README.md +0 -16
- package/templates/workflow-package/create/SKILL.md +0 -8
- package/templates/workflow-package/interface-query/SKILL.md +0 -29
- package/templates/workflow-package/interface-stage/SKILL.md +0 -13
- package/templates/workflow-package/knowledge-base-query/SKILL.md +0 -36
- package/templates/workflow-package/knowledge-base-stage/SKILL.md +0 -13
- package/templates/workflow-starters/interface/interf/README.md +0 -13
- package/templates/workflow-starters/interface/interf/create/SKILL.md +0 -15
- package/templates/workflow-starters/knowledge-base/interf/README.md +0 -13
- package/templates/workflow-starters/knowledge-base/karpathy/README.md +0 -13
|
@@ -24,9 +24,7 @@ export function refreshWorkspaceBootstrapGuidance(dirPath) {
|
|
|
24
24
|
const querySkillPath = join(dirPath, "workflow", "use", "query", "SKILL.md");
|
|
25
25
|
if (existsSync(querySkillPath)) {
|
|
26
26
|
const current = readFileSync(querySkillPath, "utf8");
|
|
27
|
-
const refreshed =
|
|
28
|
-
? refreshLegacyInterfaceQuerySkill(current)
|
|
29
|
-
: refreshLegacyKnowledgeBaseQuerySkill(current);
|
|
27
|
+
const refreshed = refreshLegacyWorkspaceQuerySkill(current);
|
|
30
28
|
if (refreshed !== current) {
|
|
31
29
|
writeFileSync(querySkillPath, refreshed);
|
|
32
30
|
changed = true;
|
|
@@ -38,14 +36,6 @@ export function refreshWorkspaceBootstrapGuidance(dirPath) {
|
|
|
38
36
|
return changed;
|
|
39
37
|
}
|
|
40
38
|
function manualQueryScopeCopy(scope) {
|
|
41
|
-
if (scope === "interface") {
|
|
42
|
-
return {
|
|
43
|
-
sourceAccessPath: "../../.interf/source-access.json",
|
|
44
|
-
preflightLead: "verify parent KB reachability first, then inspect `../../.interf/source-access.json` immediately and open one `suggested_checks` path",
|
|
45
|
-
topIntro: "Before browsing notes on your own or answering from compiled interface outputs:",
|
|
46
|
-
postPreflight: "after the preflight, use local interface artifacts first, then the parent KB loop, and raw files mainly for quotes or verification",
|
|
47
|
-
};
|
|
48
|
-
}
|
|
49
39
|
return {
|
|
50
40
|
sourceAccessPath: ".interf/source-access.json",
|
|
51
41
|
preflightLead: "inspect `.interf/source-access.json` immediately and open one `suggested_checks` path",
|
|
@@ -85,20 +75,18 @@ export function buildManualQueryFirstReplyRule(scope) {
|
|
|
85
75
|
export function refreshLegacyAgentsBootstrap(content) {
|
|
86
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.";
|
|
87
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.";
|
|
88
|
-
const currentLine = "On the first substantive manual question, run the raw-source gate immediately.
|
|
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.";
|
|
89
79
|
let replaced = content;
|
|
90
80
|
if (replaced.includes(legacyLine))
|
|
91
81
|
replaced = replaced.replace(legacyLine, currentLine);
|
|
92
82
|
if (replaced.includes(previousLine))
|
|
93
83
|
replaced = replaced.replace(previousLine, currentLine);
|
|
94
84
|
let refreshed = insertLineAfterFirstMatch(replaced, (line) => line.startsWith("If `workflow/use/query/` exists, read it before answering manual questions"), currentLine);
|
|
95
|
-
const block =
|
|
96
|
-
? topInterfaceManualPreflightBlock()
|
|
97
|
-
: topKnowledgeBaseManualPreflightBlock();
|
|
85
|
+
const block = topWorkspaceManualPreflightBlock();
|
|
98
86
|
refreshed = insertBlockBeforeFirstMatch(refreshed, (line) => line.startsWith("## How this "), block);
|
|
99
87
|
return refreshed;
|
|
100
88
|
}
|
|
101
|
-
export function
|
|
89
|
+
export function refreshLegacyWorkspaceQuerySkill(content) {
|
|
102
90
|
const legacyBlock = [
|
|
103
91
|
"First-reply rule:",
|
|
104
92
|
"- on your first substantive reply, say whether raw access is confirmed, unverified, or unavailable",
|
|
@@ -106,33 +94,15 @@ export function refreshLegacyKnowledgeBaseQuerySkill(content) {
|
|
|
106
94
|
"- if the user asks whether raw files are reachable, perform the raw-source gate immediately and report the result clearly",
|
|
107
95
|
"",
|
|
108
96
|
].join("\n");
|
|
109
|
-
const currentBlock = buildManualQueryFirstReplyRule("
|
|
110
|
-
const topBlock = buildManualQueryTopPreflightBlock("
|
|
97
|
+
const currentBlock = buildManualQueryFirstReplyRule("workspace").join("\n");
|
|
98
|
+
const topBlock = buildManualQueryTopPreflightBlock("workspace");
|
|
111
99
|
let normalized = content.includes(legacyBlock) ? content.replace(legacyBlock, currentBlock) : content;
|
|
112
100
|
if (normalized.includes("First-reply rule:") &&
|
|
113
101
|
!normalized.includes("plain existence check is not enough")) {
|
|
114
102
|
normalized = normalized.replace("First-reply rule:\n", currentBlock);
|
|
115
103
|
}
|
|
116
104
|
normalized = insertBlockBeforeFirstMatch(normalized, (line) => line.startsWith("Default loop:"), topBlock);
|
|
117
|
-
return insertBlockBeforeFirstMatch(normalized, (line) => line.startsWith("You can edit this file to bias manual question-answering behavior"), buildManualQueryFirstReplyRule("
|
|
118
|
-
}
|
|
119
|
-
export function refreshLegacyInterfaceQuerySkill(content) {
|
|
120
|
-
const legacyBlock = [
|
|
121
|
-
"First-reply rule:",
|
|
122
|
-
"- on your first substantive reply, say whether raw access is confirmed, unverified, or unavailable",
|
|
123
|
-
"- do not trigger a permission prompt just to introduce the workspace",
|
|
124
|
-
"- if the user asks whether raw files are reachable, perform the raw-source gate immediately and report the result clearly",
|
|
125
|
-
"",
|
|
126
|
-
].join("\n");
|
|
127
|
-
const currentBlock = buildManualQueryFirstReplyRule("interface").join("\n");
|
|
128
|
-
const topBlock = buildManualQueryTopPreflightBlock("interface");
|
|
129
|
-
let normalized = content.includes(legacyBlock) ? content.replace(legacyBlock, currentBlock) : content;
|
|
130
|
-
if (normalized.includes("First-reply rule:") &&
|
|
131
|
-
!normalized.includes("plain existence check is not enough")) {
|
|
132
|
-
normalized = normalized.replace("First-reply rule:\n", currentBlock);
|
|
133
|
-
}
|
|
134
|
-
normalized = insertBlockBeforeFirstMatch(normalized, (line) => line.startsWith("Default loop:"), topBlock);
|
|
135
|
-
return insertBlockBeforeFirstMatch(normalized, (line) => line.startsWith("Keep the interface-specific"), buildManualQueryFirstReplyRule("interface"));
|
|
105
|
+
return insertBlockBeforeFirstMatch(normalized, (line) => line.startsWith("You can edit this file to bias manual question-answering behavior"), buildManualQueryFirstReplyRule("workspace"));
|
|
136
106
|
}
|
|
137
107
|
export function insertLineAfterFirstMatch(content, predicate, insertedLine) {
|
|
138
108
|
if (content.includes(insertedLine))
|
|
@@ -163,7 +133,7 @@ export function renderClaudeBootstrap(content) {
|
|
|
163
133
|
"",
|
|
164
134
|
].join("\n");
|
|
165
135
|
}
|
|
166
|
-
export function
|
|
136
|
+
export function topWorkspaceManualPreflightBlock() {
|
|
167
137
|
return [
|
|
168
138
|
"## First question: required preflight",
|
|
169
139
|
"",
|
|
@@ -179,23 +149,6 @@ export function topKnowledgeBaseManualPreflightBlock() {
|
|
|
179
149
|
"",
|
|
180
150
|
];
|
|
181
151
|
}
|
|
182
|
-
export function topInterfaceManualPreflightBlock() {
|
|
183
|
-
return [
|
|
184
|
-
"## First question: required preflight",
|
|
185
|
-
"",
|
|
186
|
-
"Before describing this workspace or answering from compiled notes:",
|
|
187
|
-
"",
|
|
188
|
-
"1. Read local `workflow/use/query/SKILL.md` now.",
|
|
189
|
-
"2. Confirm local interface artifacts are reachable: `home.md`, `knowledge/`, `briefs/`, and local `summaries/`.",
|
|
190
|
-
"3. Confirm parent KB reachability via `../../AGENTS.md`, `../../home.md`, or `../../summaries/`.",
|
|
191
|
-
"4. Inspect `../../.interf/source-access.json` and open one `suggested_checks` path immediately.",
|
|
192
|
-
"5. If the environment asks for permission, request it right away instead of guessing.",
|
|
193
|
-
"6. `Raw access: confirmed` is allowed only after you actually open and inspect that raw file. A plain existence check is not enough.",
|
|
194
|
-
"7. Start the answer with exactly `Raw access: confirmed` or `Raw access: unavailable`.",
|
|
195
|
-
"8. 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.",
|
|
196
|
-
"",
|
|
197
|
-
];
|
|
198
|
-
}
|
|
199
152
|
export function buildWorkspaceRuntimeControlLines(workspaceLabel) {
|
|
200
153
|
return [
|
|
201
154
|
`- Source folder = CLI control plane and real files. This ${workspaceLabel} = generated workspace.`,
|
|
@@ -210,8 +163,8 @@ export function buildWorkspaceAgentLayerLines(stageFolders, workspaceLabel) {
|
|
|
210
163
|
return [
|
|
211
164
|
`Treat \`AGENTS.md\` as the directory-level router for navigation, path rules, command usage, and which local workflow docs to read next.`,
|
|
212
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.`,
|
|
213
|
-
`If \`workflow/use/query/\` exists, read it before answering manual questions from this ${workspaceLabel}
|
|
214
|
-
`On the first substantive manual question, run the raw-source gate immediately.
|
|
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.`,
|
|
215
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.`,
|
|
216
169
|
];
|
|
217
170
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"interf-bootstrap.js","sourceRoot":"","sources":["../../src/lib/interf-bootstrap.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,UAAU,EACV,YAAY,EACZ,aAAa,GACd,MAAM,SAAS,CAAC;AACjB,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"interf-bootstrap.js","sourceRoot":"","sources":["../../src/lib/interf-bootstrap.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,31 +1,33 @@
|
|
|
1
1
|
import { type InterfConfig } from "./schema.js";
|
|
2
2
|
export type { InterfConfig } from "./schema.js";
|
|
3
|
-
|
|
4
|
-
type: "knowledge-base";
|
|
5
|
-
}>;
|
|
6
|
-
export interface ResolvedKnowledgeBase {
|
|
3
|
+
export interface ResolvedWorkspace {
|
|
7
4
|
sourcePath: string;
|
|
8
|
-
|
|
5
|
+
workspacePath: string;
|
|
9
6
|
config: InterfConfig;
|
|
10
7
|
}
|
|
11
8
|
export declare const INTERF_CONTAINER_NAME = "interf";
|
|
9
|
+
export declare const WORKSPACE_CONTAINER_NAME = "workspaces";
|
|
12
10
|
export declare const WORKFLOW_CONTAINER_NAME = "workflows";
|
|
13
11
|
export declare const BENCHMARK_CONTAINER_NAME = "benchmarks";
|
|
14
12
|
export declare const INTERF_CONFIG_FILE = "interf.json";
|
|
15
13
|
export declare const WORKFLOW_PACKAGE_DIR = "workflow";
|
|
16
14
|
export declare function readInterfConfig(dirPath: string): InterfConfig | null;
|
|
15
|
+
export declare function hasSourceFolderInput(config: InterfConfig | null | undefined): config is InterfConfig & {
|
|
16
|
+
source: {
|
|
17
|
+
path: string;
|
|
18
|
+
};
|
|
19
|
+
};
|
|
17
20
|
export declare function detectInterf(cwd: string): {
|
|
18
21
|
path: string;
|
|
19
22
|
config: InterfConfig;
|
|
20
23
|
} | null;
|
|
21
|
-
export declare function
|
|
22
|
-
export declare function
|
|
23
|
-
export declare function
|
|
24
|
-
export declare function listKnowledgeBasesForSourceFolder(sourcePath: string): Array<{
|
|
24
|
+
export declare function resolveWorkspace(cwd: string): ResolvedWorkspace | null;
|
|
25
|
+
export declare function resolveSourceFolderPath(workspacePath: string, config?: InterfConfig | null): string;
|
|
26
|
+
export declare function listWorkspacesForSourceFolder(sourcePath: string): Array<{
|
|
25
27
|
path: string;
|
|
26
|
-
config:
|
|
28
|
+
config: InterfConfig;
|
|
27
29
|
}>;
|
|
28
|
-
export declare function
|
|
30
|
+
export declare function assertWorkspaceContainer(sourcePath: string): string;
|
|
29
31
|
export declare function assertWritableTargetDir(dirPath: string, label: string): void;
|
|
30
32
|
export declare function assertWorkspaceName(name: string, label: string): void;
|
|
31
33
|
//# sourceMappingURL=interf-detect.d.ts.map
|
|
@@ -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;
|
|
1
|
+
{"version":3,"file":"interf-detect.d.ts","sourceRoot":"","sources":["../../src/lib/interf-detect.ts"],"names":[],"mappings":"AAQA,OAAO,EAEL,KAAK,YAAY,EAClB,MAAM,aAAa,CAAC;AAErB,YAAY,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAEhD,MAAM,WAAW,iBAAiB;IAChC,UAAU,EAAE,MAAM,CAAC;IACnB,aAAa,EAAE,MAAM,CAAC;IACtB,MAAM,EAAE,YAAY,CAAC;CACtB;AAED,eAAO,MAAM,qBAAqB,WAAW,CAAC;AAC9C,eAAO,MAAM,wBAAwB,eAAe,CAAC;AACrD,eAAO,MAAM,uBAAuB,cAAc,CAAC;AACnD,eAAO,MAAM,wBAAwB,eAAe,CAAC;AACrD,eAAO,MAAM,kBAAkB,gBAAgB,CAAC;AAChD,eAAO,MAAM,oBAAoB,aAAa,CAAC;AAE/C,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,YAAY,GAAG,IAAI,CAIrE;AAED,wBAAgB,oBAAoB,CAClC,MAAM,EAAE,YAAY,GAAG,IAAI,GAAG,SAAS,GACtC,MAAM,IAAI,YAAY,GAAG;IAAE,MAAM,EAAE;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE,CAAA;CAAE,CAEvD;AAED,wBAAgB,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,YAAY,CAAA;CAAE,GAAG,IAAI,CAwBvF;AAED,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,MAAM,GAAG,iBAAiB,GAAG,IAAI,CAStE;AAED,wBAAgB,uBAAuB,CACrC,aAAa,EAAE,MAAM,EACrB,MAAM,GAAE,YAAY,GAAG,IAAsC,GAC5D,MAAM,CAMR;AA6BD,wBAAgB,6BAA6B,CAC3C,UAAU,EAAE,MAAM,GACjB,KAAK,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,YAAY,CAAA;CAAE,CAAC,CAE/C;AAED,wBAAgB,wBAAwB,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,CA0DnE;AAED,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,CAW5E;AAED,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,CAMrE"}
|
|
@@ -4,6 +4,7 @@ import { warnInterf } from "./logger.js";
|
|
|
4
4
|
import { readJsonFileWithSchema } from "./parse.js";
|
|
5
5
|
import { InterfConfigSchema, } from "./schema.js";
|
|
6
6
|
export const INTERF_CONTAINER_NAME = "interf";
|
|
7
|
+
export const WORKSPACE_CONTAINER_NAME = "workspaces";
|
|
7
8
|
export const WORKFLOW_CONTAINER_NAME = "workflows";
|
|
8
9
|
export const BENCHMARK_CONTAINER_NAME = "benchmarks";
|
|
9
10
|
export const INTERF_CONFIG_FILE = "interf.json";
|
|
@@ -14,52 +15,48 @@ export function readInterfConfig(dirPath) {
|
|
|
14
15
|
return null;
|
|
15
16
|
return readJsonFileWithSchema(configPath, "Interf config", InterfConfigSchema);
|
|
16
17
|
}
|
|
18
|
+
export function hasSourceFolderInput(config) {
|
|
19
|
+
return typeof config?.source?.path === "string" && config.source.path.length > 0;
|
|
20
|
+
}
|
|
17
21
|
export function detectInterf(cwd) {
|
|
18
|
-
// Check if cwd itself is a knowledge-base (has interf.json)
|
|
19
22
|
const config = readInterfConfig(cwd);
|
|
20
23
|
if (config)
|
|
21
24
|
return { path: cwd, config };
|
|
22
|
-
const directChildren =
|
|
25
|
+
const directChildren = listWorkspaceEntries(join(cwd, INTERF_CONTAINER_NAME, WORKSPACE_CONTAINER_NAME));
|
|
23
26
|
if (directChildren.length === 1) {
|
|
24
27
|
return directChildren[0];
|
|
25
28
|
}
|
|
26
29
|
if (basename(cwd) === INTERF_CONTAINER_NAME) {
|
|
27
|
-
const nestedChildren =
|
|
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);
|
|
28
37
|
if (nestedChildren.length === 1) {
|
|
29
38
|
return nestedChildren[0];
|
|
30
39
|
}
|
|
31
40
|
}
|
|
32
41
|
return null;
|
|
33
42
|
}
|
|
34
|
-
export function
|
|
43
|
+
export function resolveWorkspace(cwd) {
|
|
35
44
|
const detected = detectInterf(cwd);
|
|
36
45
|
if (!detected)
|
|
37
46
|
return null;
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
config: detected.config,
|
|
44
|
-
};
|
|
45
|
-
}
|
|
46
|
-
return null;
|
|
47
|
+
return {
|
|
48
|
+
sourcePath: resolveSourceFolderPath(detected.path, detected.config),
|
|
49
|
+
workspacePath: detected.path,
|
|
50
|
+
config: detected.config,
|
|
51
|
+
};
|
|
47
52
|
}
|
|
48
|
-
export function
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
if (!knowledgeBasePath)
|
|
54
|
-
return null;
|
|
55
|
-
return resolve(interfacePath, knowledgeBasePath);
|
|
56
|
-
}
|
|
57
|
-
export function resolveKnowledgeBaseSourcePath(knowledgeBasePath, config = readInterfConfig(knowledgeBasePath)) {
|
|
58
|
-
return config?.type === "knowledge-base" && config.source?.path
|
|
59
|
-
? resolve(knowledgeBasePath, config.source.path)
|
|
60
|
-
: resolve(knowledgeBasePath, "..", "..");
|
|
53
|
+
export function resolveSourceFolderPath(workspacePath, config = readInterfConfig(workspacePath)) {
|
|
54
|
+
if (hasSourceFolderInput(config)) {
|
|
55
|
+
return resolve(workspacePath, config.source.path);
|
|
56
|
+
}
|
|
57
|
+
return resolve(workspacePath, "..", "..", "..");
|
|
61
58
|
}
|
|
62
|
-
function
|
|
59
|
+
function listWorkspaceEntries(containerPath) {
|
|
63
60
|
if (!existsSync(containerPath))
|
|
64
61
|
return [];
|
|
65
62
|
try {
|
|
@@ -77,21 +74,48 @@ function listKnowledgeBaseChildren(containerPath) {
|
|
|
77
74
|
return statSync(entryPath).isDirectory();
|
|
78
75
|
}
|
|
79
76
|
catch (error) {
|
|
80
|
-
warnInterf(`Warning: failed to inspect
|
|
77
|
+
warnInterf(`Warning: failed to inspect workspace candidate at ${entryPath}: ${error instanceof Error ? error.message : String(error)}`);
|
|
81
78
|
return false;
|
|
82
79
|
}
|
|
83
80
|
})
|
|
84
81
|
.map((entryPath) => {
|
|
85
82
|
const config = readInterfConfig(entryPath);
|
|
86
|
-
return config
|
|
83
|
+
return config ? { path: entryPath, config } : null;
|
|
87
84
|
})
|
|
88
85
|
.filter((value) => value !== null);
|
|
89
86
|
}
|
|
90
|
-
export function
|
|
91
|
-
return
|
|
87
|
+
export function listWorkspacesForSourceFolder(sourcePath) {
|
|
88
|
+
return listWorkspaceEntries(join(sourcePath, INTERF_CONTAINER_NAME, WORKSPACE_CONTAINER_NAME));
|
|
92
89
|
}
|
|
93
|
-
export function
|
|
94
|
-
const
|
|
90
|
+
export function assertWorkspaceContainer(sourcePath) {
|
|
91
|
+
const interfRoot = join(sourcePath, INTERF_CONTAINER_NAME);
|
|
92
|
+
if (existsSync(interfRoot)) {
|
|
93
|
+
const stat = statSync(interfRoot);
|
|
94
|
+
if (!stat.isDirectory()) {
|
|
95
|
+
throw new Error(`Interf container exists and is not a directory: ${interfRoot}`);
|
|
96
|
+
}
|
|
97
|
+
const unexpectedRootEntries = readdirSync(interfRoot).filter((entry) => {
|
|
98
|
+
if (entry.startsWith("."))
|
|
99
|
+
return false;
|
|
100
|
+
const entryPath = join(interfRoot, entry);
|
|
101
|
+
if (entry === WORKSPACE_CONTAINER_NAME ||
|
|
102
|
+
entry === WORKFLOW_CONTAINER_NAME ||
|
|
103
|
+
entry === BENCHMARK_CONTAINER_NAME) {
|
|
104
|
+
try {
|
|
105
|
+
return !statSync(entryPath).isDirectory();
|
|
106
|
+
}
|
|
107
|
+
catch (error) {
|
|
108
|
+
warnInterf(`Warning: failed to inspect Interf control-plane path at ${entryPath}: ${error instanceof Error ? error.message : String(error)}`);
|
|
109
|
+
return true;
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
return true;
|
|
113
|
+
});
|
|
114
|
+
if (unexpectedRootEntries.length > 0) {
|
|
115
|
+
throw new Error(`Interf container contains unexpected entries: ${interfRoot}`);
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
const containerPath = join(interfRoot, WORKSPACE_CONTAINER_NAME);
|
|
95
119
|
if (!existsSync(containerPath)) {
|
|
96
120
|
return containerPath;
|
|
97
121
|
}
|
|
@@ -103,15 +127,6 @@ export function assertKnowledgeBaseContainer(sourcePath) {
|
|
|
103
127
|
if (entry.startsWith("."))
|
|
104
128
|
return false;
|
|
105
129
|
const entryPath = join(containerPath, entry);
|
|
106
|
-
if (entry === WORKFLOW_CONTAINER_NAME || entry === BENCHMARK_CONTAINER_NAME) {
|
|
107
|
-
try {
|
|
108
|
-
return !statSync(entryPath).isDirectory();
|
|
109
|
-
}
|
|
110
|
-
catch (error) {
|
|
111
|
-
warnInterf(`Warning: failed to inspect Interf control-plane path at ${entryPath}: ${error instanceof Error ? error.message : String(error)}`);
|
|
112
|
-
return true;
|
|
113
|
-
}
|
|
114
|
-
}
|
|
115
130
|
try {
|
|
116
131
|
if (!statSync(entryPath).isDirectory())
|
|
117
132
|
return true;
|
|
@@ -120,11 +135,10 @@ export function assertKnowledgeBaseContainer(sourcePath) {
|
|
|
120
135
|
warnInterf(`Warning: failed to inspect Interf entry at ${entryPath}: ${error instanceof Error ? error.message : String(error)}`);
|
|
121
136
|
return true;
|
|
122
137
|
}
|
|
123
|
-
|
|
124
|
-
return config?.type !== "knowledge-base";
|
|
138
|
+
return !readInterfConfig(entryPath);
|
|
125
139
|
});
|
|
126
140
|
if (unexpectedEntries.length > 0) {
|
|
127
|
-
throw new Error(`Interf container contains
|
|
141
|
+
throw new Error(`Interf container contains invalid workspace entries: ${containerPath}`);
|
|
128
142
|
}
|
|
129
143
|
return containerPath;
|
|
130
144
|
}
|
|
@@ -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,QAAQ,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpD,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,sBAAsB,EAAE,MAAM,YAAY,CAAC;AACpD,OAAO,EACL,kBAAkB,GAEnB,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"interf-detect.js","sourceRoot":"","sources":["../../src/lib/interf-detect.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,3 @@
|
|
|
1
|
-
|
|
2
|
-
export declare function
|
|
3
|
-
export declare function createKnowledgeBaseWithWorkflow(name: string, sourcePath: string, workflowId?: KnowledgeBaseWorkflowId): string;
|
|
4
|
-
export declare function createInterface(name: string, knowledgeBasePath: string, knowledgeBaseName: string, workflowId?: InterfaceWorkflowId): string;
|
|
5
|
-
export declare function createInterfaceWithWorkflow(name: string, knowledgeBasePath: string, knowledgeBaseName: string, workflowId?: InterfaceWorkflowId): string;
|
|
1
|
+
export declare function createWorkspace(name: string, sourcePath: string, workflowId?: string, about?: string): string;
|
|
2
|
+
export declare function defaultWorkspaceNameForSource(sourcePath: string): string;
|
|
6
3
|
//# sourceMappingURL=interf-scaffold.d.ts.map
|
|
@@ -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":"AAoGA,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"}
|