@interf/compiler 0.1.12 → 0.2.1
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 +197 -192
- package/dist/commands/benchmark.d.ts.map +1 -1
- package/dist/commands/benchmark.js +65 -84
- package/dist/commands/benchmark.js.map +1 -1
- package/dist/commands/compile.d.ts.map +1 -1
- package/dist/commands/compile.js +19 -3
- package/dist/commands/compile.js.map +1 -1
- package/dist/commands/create.d.ts +3 -0
- package/dist/commands/create.d.ts.map +1 -1
- package/dist/commands/create.js +39 -14
- package/dist/commands/create.js.map +1 -1
- package/dist/commands/default.d.ts.map +1 -1
- package/dist/commands/default.js +2 -0
- package/dist/commands/default.js.map +1 -1
- package/dist/commands/init.d.ts.map +1 -1
- package/dist/commands/init.js +8 -63
- package/dist/commands/init.js.map +1 -1
- package/dist/index.d.ts +11 -29
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +7 -16
- package/dist/index.js.map +1 -1
- package/dist/lib/agent-args.d.ts +4 -0
- package/dist/lib/agent-args.d.ts.map +1 -0
- package/dist/lib/agent-args.js +42 -0
- package/dist/lib/agent-args.js.map +1 -0
- package/dist/lib/agent-constants.d.ts +6 -0
- package/dist/lib/agent-constants.d.ts.map +1 -0
- package/dist/lib/agent-constants.js +29 -0
- package/dist/lib/agent-constants.js.map +1 -0
- package/dist/lib/agent-detection.d.ts +8 -0
- package/dist/lib/agent-detection.d.ts.map +1 -0
- package/dist/lib/agent-detection.js +66 -0
- package/dist/lib/agent-detection.js.map +1 -0
- package/dist/lib/agent-execution.d.ts +3 -0
- package/dist/lib/agent-execution.d.ts.map +1 -0
- package/dist/lib/agent-execution.js +207 -0
- package/dist/lib/agent-execution.js.map +1 -0
- package/dist/lib/agent-logs.d.ts +3 -0
- package/dist/lib/agent-logs.d.ts.map +1 -0
- package/dist/lib/agent-logs.js +18 -0
- package/dist/lib/agent-logs.js.map +1 -0
- package/dist/lib/agent-preflight.d.ts +8 -0
- package/dist/lib/agent-preflight.d.ts.map +1 -0
- package/dist/lib/agent-preflight.js +77 -0
- package/dist/lib/agent-preflight.js.map +1 -0
- package/dist/lib/agent-render.d.ts +9 -0
- package/dist/lib/agent-render.d.ts.map +1 -0
- package/dist/lib/agent-render.js +219 -0
- package/dist/lib/agent-render.js.map +1 -0
- package/dist/lib/agent-status.d.ts +4 -0
- package/dist/lib/agent-status.d.ts.map +1 -0
- package/dist/lib/agent-status.js +59 -0
- package/dist/lib/agent-status.js.map +1 -0
- package/dist/lib/agent-types.d.ts +31 -0
- package/dist/lib/agent-types.d.ts.map +1 -0
- package/dist/lib/agent-types.js +2 -0
- package/dist/lib/agent-types.js.map +1 -0
- package/dist/lib/agents.d.ts +7 -49
- package/dist/lib/agents.d.ts.map +1 -1
- package/dist/lib/agents.js +8 -554
- package/dist/lib/agents.js.map +1 -1
- package/dist/lib/benchmark-execution.d.ts +9 -0
- package/dist/lib/benchmark-execution.d.ts.map +1 -0
- package/dist/lib/benchmark-execution.js +488 -0
- package/dist/lib/benchmark-execution.js.map +1 -0
- package/dist/lib/benchmark-paths.d.ts +11 -0
- package/dist/lib/benchmark-paths.d.ts.map +1 -0
- package/dist/lib/benchmark-paths.js +38 -0
- package/dist/lib/benchmark-paths.js.map +1 -0
- package/dist/lib/benchmark-specs.d.ts +8 -0
- package/dist/lib/benchmark-specs.d.ts.map +1 -0
- package/dist/lib/benchmark-specs.js +115 -0
- package/dist/lib/benchmark-specs.js.map +1 -0
- package/dist/lib/benchmark-targets.d.ts +5 -0
- package/dist/lib/benchmark-targets.d.ts.map +1 -0
- package/dist/lib/benchmark-targets.js +72 -0
- package/dist/lib/benchmark-targets.js.map +1 -0
- package/dist/lib/benchmark-types.d.ts +19 -0
- package/dist/lib/benchmark-types.d.ts.map +1 -0
- package/dist/lib/benchmark-types.js +2 -0
- package/dist/lib/benchmark-types.js.map +1 -0
- package/dist/lib/benchmark.d.ts +4 -29
- package/dist/lib/benchmark.d.ts.map +1 -1
- package/dist/lib/benchmark.js +3 -324
- package/dist/lib/benchmark.js.map +1 -1
- package/dist/lib/bundled-templates.d.ts +5 -0
- package/dist/lib/bundled-templates.d.ts.map +1 -0
- package/dist/lib/bundled-templates.js +23 -0
- package/dist/lib/bundled-templates.js.map +1 -0
- package/dist/lib/config.d.ts +1 -0
- package/dist/lib/config.d.ts.map +1 -1
- package/dist/lib/config.js +2 -0
- package/dist/lib/config.js.map +1 -1
- package/dist/lib/eval-packs.d.ts +204 -0
- package/dist/lib/eval-packs.d.ts.map +1 -0
- package/dist/lib/eval-packs.js +177 -0
- package/dist/lib/eval-packs.js.map +1 -0
- package/dist/lib/execution-profile.d.ts +18 -0
- package/dist/lib/execution-profile.d.ts.map +1 -0
- package/dist/lib/execution-profile.js +85 -0
- package/dist/lib/execution-profile.js.map +1 -0
- package/dist/lib/interf-bootstrap.d.ts +4 -0
- package/dist/lib/interf-bootstrap.d.ts.map +1 -1
- package/dist/lib/interf-bootstrap.js +71 -68
- package/dist/lib/interf-bootstrap.js.map +1 -1
- package/dist/lib/interf-compile-plan.d.ts +12 -0
- package/dist/lib/interf-compile-plan.d.ts.map +1 -0
- package/dist/lib/interf-compile-plan.js +143 -0
- package/dist/lib/interf-compile-plan.js.map +1 -0
- package/dist/lib/interf-detect.d.ts.map +1 -1
- package/dist/lib/interf-detect.js +11 -10
- package/dist/lib/interf-detect.js.map +1 -1
- package/dist/lib/interf-scaffold.d.ts +1 -10
- package/dist/lib/interf-scaffold.d.ts.map +1 -1
- package/dist/lib/interf-scaffold.js +25 -362
- package/dist/lib/interf-scaffold.js.map +1 -1
- package/dist/lib/interf-workflow-package.d.ts +4 -0
- package/dist/lib/interf-workflow-package.d.ts.map +1 -0
- package/dist/lib/interf-workflow-package.js +131 -0
- package/dist/lib/interf-workflow-package.js.map +1 -0
- package/dist/lib/interf.d.ts +2 -1
- package/dist/lib/interf.d.ts.map +1 -1
- package/dist/lib/interf.js +2 -1
- package/dist/lib/interf.js.map +1 -1
- package/dist/lib/local-workflows.d.ts.map +1 -1
- package/dist/lib/local-workflows.js +8 -12
- package/dist/lib/local-workflows.js.map +1 -1
- package/dist/lib/logger.d.ts +4 -0
- package/dist/lib/logger.d.ts.map +1 -0
- package/dist/lib/logger.js +11 -0
- package/dist/lib/logger.js.map +1 -0
- package/dist/lib/obsidian.d.ts.map +1 -1
- package/dist/lib/obsidian.js +7 -3
- package/dist/lib/obsidian.js.map +1 -1
- package/dist/lib/parse.d.ts +2 -2
- package/dist/lib/parse.d.ts.map +1 -1
- package/dist/lib/parse.js +11 -7
- package/dist/lib/parse.js.map +1 -1
- package/dist/lib/registry.js +3 -3
- package/dist/lib/registry.js.map +1 -1
- package/dist/lib/runtime-acceptance.d.ts +4 -0
- package/dist/lib/runtime-acceptance.d.ts.map +1 -0
- package/dist/lib/runtime-acceptance.js +123 -0
- package/dist/lib/runtime-acceptance.js.map +1 -0
- package/dist/lib/runtime-contracts.d.ts +4 -0
- package/dist/lib/runtime-contracts.d.ts.map +1 -0
- package/dist/lib/runtime-contracts.js +63 -0
- package/dist/lib/runtime-contracts.js.map +1 -0
- package/dist/lib/runtime-paths.d.ts +8 -0
- package/dist/lib/runtime-paths.d.ts.map +1 -0
- package/dist/lib/runtime-paths.js +28 -0
- package/dist/lib/runtime-paths.js.map +1 -0
- package/dist/lib/runtime-prompt.d.ts +3 -0
- package/dist/lib/runtime-prompt.d.ts.map +1 -0
- package/dist/lib/runtime-prompt.js +59 -0
- package/dist/lib/runtime-prompt.js.map +1 -0
- package/dist/lib/runtime-reconcile.d.ts +6 -0
- package/dist/lib/runtime-reconcile.d.ts.map +1 -0
- package/dist/lib/runtime-reconcile.js +339 -0
- package/dist/lib/runtime-reconcile.js.map +1 -0
- package/dist/lib/runtime-runs.d.ts +12 -0
- package/dist/lib/runtime-runs.d.ts.map +1 -0
- package/dist/lib/runtime-runs.js +337 -0
- package/dist/lib/runtime-runs.js.map +1 -0
- package/dist/lib/runtime-types.d.ts +42 -0
- package/dist/lib/runtime-types.d.ts.map +1 -0
- package/dist/lib/runtime-types.js +2 -0
- package/dist/lib/runtime-types.js.map +1 -0
- package/dist/lib/runtime.d.ts +6 -58
- package/dist/lib/runtime.d.ts.map +1 -1
- package/dist/lib/runtime.js +5 -614
- package/dist/lib/runtime.js.map +1 -1
- package/dist/lib/schema.d.ts +156 -13
- package/dist/lib/schema.d.ts.map +1 -1
- package/dist/lib/schema.js +113 -4
- package/dist/lib/schema.js.map +1 -1
- package/dist/lib/source-config.d.ts +13 -0
- package/dist/lib/source-config.d.ts.map +1 -0
- package/dist/lib/source-config.js +75 -0
- package/dist/lib/source-config.js.map +1 -0
- package/dist/lib/state-artifacts.d.ts +15 -0
- package/dist/lib/state-artifacts.d.ts.map +1 -0
- package/dist/lib/state-artifacts.js +24 -0
- package/dist/lib/state-artifacts.js.map +1 -0
- package/dist/lib/state-health.d.ts +9 -0
- package/dist/lib/state-health.d.ts.map +1 -0
- package/dist/lib/state-health.js +330 -0
- package/dist/lib/state-health.js.map +1 -0
- package/dist/lib/state-io.d.ts +15 -0
- package/dist/lib/state-io.d.ts.map +1 -0
- package/dist/lib/state-io.js +219 -0
- package/dist/lib/state-io.js.map +1 -0
- package/dist/lib/state-paths.d.ts +5 -0
- package/dist/lib/state-paths.d.ts.map +1 -0
- package/dist/lib/state-paths.js +19 -0
- package/dist/lib/state-paths.js.map +1 -0
- package/dist/lib/state-view.d.ts +7 -0
- package/dist/lib/state-view.d.ts.map +1 -0
- package/dist/lib/state-view.js +147 -0
- package/dist/lib/state-view.js.map +1 -0
- package/dist/lib/state.d.ts +6 -46
- package/dist/lib/state.d.ts.map +1 -1
- package/dist/lib/state.js +5 -632
- package/dist/lib/state.js.map +1 -1
- package/dist/lib/summarize-plan.d.ts +1 -0
- package/dist/lib/summarize-plan.d.ts.map +1 -1
- package/dist/lib/summarize-plan.js +10 -0
- package/dist/lib/summarize-plan.js.map +1 -1
- package/dist/lib/user-config.js +2 -2
- package/dist/lib/user-config.js.map +1 -1
- package/dist/lib/validate-helpers.d.ts +21 -0
- package/dist/lib/validate-helpers.d.ts.map +1 -0
- package/dist/lib/validate-helpers.js +72 -0
- package/dist/lib/validate-helpers.js.map +1 -0
- package/dist/lib/validate-interface.d.ts +2 -0
- package/dist/lib/validate-interface.d.ts.map +1 -1
- package/dist/lib/validate-interface.js +103 -53
- package/dist/lib/validate-interface.js.map +1 -1
- package/dist/lib/validate-kb.d.ts +8 -0
- package/dist/lib/validate-kb.d.ts.map +1 -1
- package/dist/lib/validate-kb.js +53 -24
- package/dist/lib/validate-kb.js.map +1 -1
- package/dist/lib/validate.d.ts +1 -1
- package/dist/lib/validate.d.ts.map +1 -1
- package/dist/lib/validate.js +5 -2
- package/dist/lib/validate.js.map +1 -1
- package/dist/lib/workflow-definitions.d.ts +1 -1
- package/dist/lib/workflow-definitions.d.ts.map +1 -1
- package/dist/lib/workflow-definitions.js +90 -166
- package/dist/lib/workflow-definitions.js.map +1 -1
- package/dist/lib/workflow-helpers.d.ts.map +1 -1
- package/dist/lib/workflow-helpers.js +6 -3
- package/dist/lib/workflow-helpers.js.map +1 -1
- package/dist/lib/workflow-stage-runner.d.ts +41 -0
- package/dist/lib/workflow-stage-runner.d.ts.map +1 -0
- package/dist/lib/workflow-stage-runner.js +106 -0
- package/dist/lib/workflow-stage-runner.js.map +1 -0
- package/dist/lib/workflow-starter-docs.d.ts +9 -0
- package/dist/lib/workflow-starter-docs.d.ts.map +1 -0
- package/dist/lib/workflow-starter-docs.js +18 -0
- package/dist/lib/workflow-starter-docs.js.map +1 -0
- package/dist/lib/workflows-interface-contracts.d.ts +24 -0
- package/dist/lib/workflows-interface-contracts.d.ts.map +1 -0
- package/dist/lib/workflows-interface-contracts.js +304 -0
- package/dist/lib/workflows-interface-contracts.js.map +1 -0
- package/dist/lib/workflows-interface.d.ts +3 -10
- package/dist/lib/workflows-interface.d.ts.map +1 -1
- package/dist/lib/workflows-interface.js +117 -365
- package/dist/lib/workflows-interface.js.map +1 -1
- package/dist/lib/workflows-kb.d.ts.map +1 -1
- package/dist/lib/workflows-kb.js +79 -55
- package/dist/lib/workflows-kb.js.map +1 -1
- package/dist/lib/workflows.d.ts.map +1 -1
- package/dist/lib/workflows.js +1 -1
- package/dist/lib/workflows.js.map +1 -1
- package/package.json +15 -4
- package/skills/interface/analyze/SKILL.md +79 -28
- package/skills/interface/compile/SKILL.md +27 -28
- package/skills/interface/create/SKILL.md +53 -230
- package/skills/interface/create/references/compile-plan-format.md +31 -31
- package/skills/interface/create/references/workflows.md +17 -32
- package/skills/interface/query/SKILL.md +15 -1
- package/skills/interface/retrieve/SKILL.md +32 -65
- package/skills/knowledge-base/compile/SKILL.md +59 -83
- package/skills/knowledge-base/compile/references/stage-claims.md +1 -1
- package/skills/knowledge-base/compile/references/stage-entities.md +2 -2
- package/skills/knowledge-base/query/SKILL.md +13 -1
- package/skills/knowledge-base/summarize/SKILL.md +54 -24
- package/templates/interface/README.md +13 -12
- package/templates/interface/interfaces.md +14 -11
- package/templates/knowledge-base/README.md +0 -1
- package/templates/knowledge-base/registry.md +15 -15
- package/templates/workflow-package/README.md +16 -0
- package/templates/workflow-package/create/SKILL.md +8 -0
- package/templates/workflow-package/interface-query/SKILL.md +29 -0
- package/templates/workflow-package/interface-stage/SKILL.md +13 -0
- package/templates/workflow-package/knowledge-base-query/SKILL.md +36 -0
- package/templates/workflow-package/knowledge-base-stage/SKILL.md +13 -0
- package/templates/workflow-starters/interface/interf/README.md +13 -0
- package/templates/workflow-starters/interface/interf/create/SKILL.md +15 -0
- package/templates/workflow-starters/knowledge-base/interf/README.md +13 -0
- package/templates/workflow-starters/knowledge-base/karpathy/README.md +13 -0
|
@@ -37,10 +37,55 @@ export function refreshWorkspaceBootstrapGuidance(dirPath) {
|
|
|
37
37
|
}
|
|
38
38
|
return changed;
|
|
39
39
|
}
|
|
40
|
+
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
|
+
return {
|
|
50
|
+
sourceAccessPath: ".interf/source-access.json",
|
|
51
|
+
preflightLead: "inspect `.interf/source-access.json` immediately and open one `suggested_checks` path",
|
|
52
|
+
topIntro: "Before browsing notes on your own or answering from compiled knowledge:",
|
|
53
|
+
postPreflight: "after the preflight, still prefer compiled knowledge unless the user asks for direct quotes or raw verification",
|
|
54
|
+
};
|
|
55
|
+
}
|
|
56
|
+
export function buildManualQueryTopPreflightBlock(scope) {
|
|
57
|
+
const copy = manualQueryScopeCopy(scope);
|
|
58
|
+
return [
|
|
59
|
+
"## First question: required preflight",
|
|
60
|
+
"",
|
|
61
|
+
copy.topIntro,
|
|
62
|
+
"",
|
|
63
|
+
`- ${copy.preflightLead}`,
|
|
64
|
+
"- if the environment asks for permission, request it immediately instead of answering as though raw were missing",
|
|
65
|
+
"- do not claim `Raw access: confirmed` after only checking that a file exists",
|
|
66
|
+
"- the first line of the answer must be exactly `Raw access: confirmed` or `Raw access: unavailable`",
|
|
67
|
+
"",
|
|
68
|
+
];
|
|
69
|
+
}
|
|
70
|
+
export function buildManualQueryFirstReplyRule(scope) {
|
|
71
|
+
const copy = manualQueryScopeCopy(scope);
|
|
72
|
+
return [
|
|
73
|
+
"First-reply rule:",
|
|
74
|
+
`- on the first substantive manual question, ${copy.preflightLead}`,
|
|
75
|
+
"- if the environment asks for permission, request it immediately instead of answering as though raw were missing",
|
|
76
|
+
"- the first line of the answer must be exactly `Raw access: confirmed` or `Raw access: unavailable`",
|
|
77
|
+
"- 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",
|
|
78
|
+
"- use `Raw access: unavailable` only after a raw check fails or permission is denied",
|
|
79
|
+
`- ${copy.postPreflight}`,
|
|
80
|
+
"- 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",
|
|
81
|
+
"- if the PDF page text does not expose the exact value, switch to a concrete local extraction path before saying the number is unavailable",
|
|
82
|
+
"",
|
|
83
|
+
];
|
|
84
|
+
}
|
|
40
85
|
export function refreshLegacyAgentsBootstrap(content) {
|
|
41
86
|
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.";
|
|
42
87
|
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.";
|
|
43
|
-
const currentLine = "On the first substantive manual question, run the raw-source gate immediately. For interfaces, verify parent knowledge-base reachability first, then check raw reachability. 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
|
|
88
|
+
const currentLine = "On the first substantive manual question, run the raw-source gate immediately. For interfaces, verify parent knowledge-base reachability first, then check raw reachability. 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.";
|
|
44
89
|
let replaced = content;
|
|
45
90
|
if (replaced.includes(legacyLine))
|
|
46
91
|
replaced = replaced.replace(legacyLine, currentLine);
|
|
@@ -61,38 +106,15 @@ export function refreshLegacyKnowledgeBaseQuerySkill(content) {
|
|
|
61
106
|
"- if the user asks whether raw files are reachable, perform the raw-source gate immediately and report the result clearly",
|
|
62
107
|
"",
|
|
63
108
|
].join("\n");
|
|
64
|
-
const currentBlock =
|
|
65
|
-
|
|
66
|
-
"- on the first substantive manual question, inspect `.interf/source-access.json` immediately and try one `suggested_checks` path",
|
|
67
|
-
"- if the environment asks for permission, request it immediately instead of answering as though raw were missing",
|
|
68
|
-
"- the first line of the answer must be exactly `Raw access: confirmed` or `Raw access: unavailable`",
|
|
69
|
-
"- use `Raw access: confirmed` only after a suggested raw path is readable from this session",
|
|
70
|
-
"- use `Raw access: unavailable` only after a raw check fails or permission is denied",
|
|
71
|
-
"- after the preflight, still prefer compiled knowledge unless the user asks for direct quotes or raw verification",
|
|
72
|
-
"",
|
|
73
|
-
].join("\n");
|
|
74
|
-
const topBlock = [
|
|
75
|
-
"## First question: required preflight",
|
|
76
|
-
"",
|
|
77
|
-
"Before browsing notes on your own or answering from compiled knowledge:",
|
|
78
|
-
"",
|
|
79
|
-
"- inspect `.interf/source-access.json` immediately and try one `suggested_checks` path",
|
|
80
|
-
"- if the environment asks for permission, request it immediately instead of answering as though raw were missing",
|
|
81
|
-
"- the first line of the answer must be exactly `Raw access: confirmed` or `Raw access: unavailable`",
|
|
82
|
-
"",
|
|
83
|
-
];
|
|
109
|
+
const currentBlock = buildManualQueryFirstReplyRule("knowledge-base").join("\n");
|
|
110
|
+
const topBlock = buildManualQueryTopPreflightBlock("knowledge-base");
|
|
84
111
|
let normalized = content.includes(legacyBlock) ? content.replace(legacyBlock, currentBlock) : content;
|
|
112
|
+
if (normalized.includes("First-reply rule:") &&
|
|
113
|
+
!normalized.includes("plain existence check is not enough")) {
|
|
114
|
+
normalized = normalized.replace("First-reply rule:\n", currentBlock);
|
|
115
|
+
}
|
|
85
116
|
normalized = insertBlockBeforeFirstMatch(normalized, (line) => line.startsWith("Default loop:"), topBlock);
|
|
86
|
-
return insertBlockBeforeFirstMatch(normalized, (line) => line.startsWith("You can edit this file to bias manual question-answering behavior"),
|
|
87
|
-
"First-reply rule:",
|
|
88
|
-
"- on the first substantive manual question, inspect `.interf/source-access.json` immediately and try one `suggested_checks` path",
|
|
89
|
-
"- if the environment asks for permission, request it immediately instead of answering as though raw were missing",
|
|
90
|
-
"- the first line of the answer must be exactly `Raw access: confirmed` or `Raw access: unavailable`",
|
|
91
|
-
"- use `Raw access: confirmed` only after a suggested raw path is readable from this session",
|
|
92
|
-
"- use `Raw access: unavailable` only after a raw check fails or permission is denied",
|
|
93
|
-
"- after the preflight, still prefer compiled knowledge unless the user asks for direct quotes or raw verification",
|
|
94
|
-
"",
|
|
95
|
-
]);
|
|
117
|
+
return insertBlockBeforeFirstMatch(normalized, (line) => line.startsWith("You can edit this file to bias manual question-answering behavior"), buildManualQueryFirstReplyRule("knowledge-base"));
|
|
96
118
|
}
|
|
97
119
|
export function refreshLegacyInterfaceQuerySkill(content) {
|
|
98
120
|
const legacyBlock = [
|
|
@@ -102,38 +124,15 @@ export function refreshLegacyInterfaceQuerySkill(content) {
|
|
|
102
124
|
"- if the user asks whether raw files are reachable, perform the raw-source gate immediately and report the result clearly",
|
|
103
125
|
"",
|
|
104
126
|
].join("\n");
|
|
105
|
-
const currentBlock =
|
|
106
|
-
|
|
107
|
-
"- on the first substantive manual question, verify parent KB reachability first, then inspect `../../.interf/source-access.json` immediately and try one `suggested_checks` path",
|
|
108
|
-
"- if the environment asks for permission, request it immediately instead of answering as though raw were missing",
|
|
109
|
-
"- the first line of the answer must be exactly `Raw access: confirmed` or `Raw access: unavailable`",
|
|
110
|
-
"- use `Raw access: confirmed` only after a suggested raw path is readable from this session",
|
|
111
|
-
"- use `Raw access: unavailable` only after a raw check fails or permission is denied",
|
|
112
|
-
"- after the preflight, use local interface artifacts first, then the parent KB loop, and raw files mainly for quotes or verification",
|
|
113
|
-
"",
|
|
114
|
-
].join("\n");
|
|
115
|
-
const topBlock = [
|
|
116
|
-
"## First question: required preflight",
|
|
117
|
-
"",
|
|
118
|
-
"Before browsing notes on your own or answering from compiled interface outputs:",
|
|
119
|
-
"",
|
|
120
|
-
"- verify parent KB reachability first, then inspect `../../.interf/source-access.json` immediately and try one `suggested_checks` path",
|
|
121
|
-
"- if the environment asks for permission, request it immediately instead of answering as though raw were missing",
|
|
122
|
-
"- the first line of the answer must be exactly `Raw access: confirmed` or `Raw access: unavailable`",
|
|
123
|
-
"",
|
|
124
|
-
];
|
|
127
|
+
const currentBlock = buildManualQueryFirstReplyRule("interface").join("\n");
|
|
128
|
+
const topBlock = buildManualQueryTopPreflightBlock("interface");
|
|
125
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
|
+
}
|
|
126
134
|
normalized = insertBlockBeforeFirstMatch(normalized, (line) => line.startsWith("Default loop:"), topBlock);
|
|
127
|
-
return insertBlockBeforeFirstMatch(normalized, (line) => line.startsWith("Keep the interface-specific
|
|
128
|
-
"First-reply rule:",
|
|
129
|
-
"- on the first substantive manual question, verify parent KB reachability first, then inspect `../../.interf/source-access.json` immediately and try one `suggested_checks` path",
|
|
130
|
-
"- if the environment asks for permission, request it immediately instead of answering as though raw were missing",
|
|
131
|
-
"- the first line of the answer must be exactly `Raw access: confirmed` or `Raw access: unavailable`",
|
|
132
|
-
"- use `Raw access: confirmed` only after a suggested raw path is readable from this session",
|
|
133
|
-
"- use `Raw access: unavailable` only after a raw check fails or permission is denied",
|
|
134
|
-
"- after the preflight, use local interface artifacts first, then the parent KB loop, and raw files mainly for quotes or verification",
|
|
135
|
-
"",
|
|
136
|
-
]);
|
|
135
|
+
return insertBlockBeforeFirstMatch(normalized, (line) => line.startsWith("Keep the interface-specific"), buildManualQueryFirstReplyRule("interface"));
|
|
137
136
|
}
|
|
138
137
|
export function insertLineAfterFirstMatch(content, predicate, insertedLine) {
|
|
139
138
|
if (content.includes(insertedLine))
|
|
@@ -172,9 +171,11 @@ export function topKnowledgeBaseManualPreflightBlock() {
|
|
|
172
171
|
"",
|
|
173
172
|
"1. Read `workflow/use/query/SKILL.md` now.",
|
|
174
173
|
"2. Confirm `home.md`, `knowledge/`, and `summaries/` are reachable.",
|
|
175
|
-
"3. Inspect `.interf/source-access.json` and
|
|
174
|
+
"3. Inspect `.interf/source-access.json` and open one `suggested_checks` path immediately.",
|
|
176
175
|
"4. If the environment asks for permission, request it right away instead of guessing.",
|
|
177
|
-
"5.
|
|
176
|
+
"5. `Raw access: confirmed` is allowed only after you actually open and inspect that raw file. A plain existence check is not enough.",
|
|
177
|
+
"6. Start the answer with exactly `Raw access: confirmed` or `Raw access: unavailable`.",
|
|
178
|
+
"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.",
|
|
178
179
|
"",
|
|
179
180
|
];
|
|
180
181
|
}
|
|
@@ -187,9 +188,11 @@ export function topInterfaceManualPreflightBlock() {
|
|
|
187
188
|
"1. Read local `workflow/use/query/SKILL.md` now.",
|
|
188
189
|
"2. Confirm local interface artifacts are reachable: `home.md`, `knowledge/`, `briefs/`, and local `summaries/`.",
|
|
189
190
|
"3. Confirm parent KB reachability via `../../AGENTS.md`, `../../home.md`, or `../../summaries/`.",
|
|
190
|
-
"4. Inspect `../../.interf/source-access.json` and
|
|
191
|
+
"4. Inspect `../../.interf/source-access.json` and open one `suggested_checks` path immediately.",
|
|
191
192
|
"5. If the environment asks for permission, request it right away instead of guessing.",
|
|
192
|
-
"6.
|
|
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.",
|
|
193
196
|
"",
|
|
194
197
|
];
|
|
195
198
|
}
|
|
@@ -199,8 +202,8 @@ export function buildWorkspaceRuntimeControlLines(workspaceLabel) {
|
|
|
199
202
|
`- The source folder normally has no generated \`AGENTS.md\` or \`CLAUDE.md\`. For agents, this ${workspaceLabel} workspace is the bootstrap entrypoint.`,
|
|
200
203
|
`- \`.interf/run.json\` — current/last deterministic stage run, including executor and timestamps.`,
|
|
201
204
|
`- \`.interf/stage-contract.json\` — machine-readable contract for the active stage.`,
|
|
202
|
-
`- Stage instructions are flexible. Interf cares about contract compliance: reads, writes, verifiers, and
|
|
203
|
-
`- Local workflow docs customize stage implementation. They do not replace the workflow's stage order, proof rules, or
|
|
205
|
+
`- Stage instructions are flexible. Interf cares about contract compliance: reads, writes, verifiers, and runtime reconciliation.`,
|
|
206
|
+
`- Local workflow docs customize stage implementation. They do not replace the workflow's stage order, proof rules, or CLI-owned runtime flow.`,
|
|
204
207
|
];
|
|
205
208
|
}
|
|
206
209
|
export function buildWorkspaceAgentLayerLines(stageFolders, workspaceLabel) {
|
|
@@ -208,7 +211,7 @@ export function buildWorkspaceAgentLayerLines(stageFolders, workspaceLabel) {
|
|
|
208
211
|
`Treat \`AGENTS.md\` as the directory-level router for navigation, path rules, command usage, and which local workflow docs to read next.`,
|
|
209
212
|
`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.`,
|
|
210
213
|
`If \`workflow/use/query/\` exists, read it before answering manual questions from this ${workspaceLabel}. For interfaces, that local query doc may send you to the parent knowledge-base \`../../workflow/use/query/SKILL.md\` loop.`,
|
|
211
|
-
`On the first substantive manual question, run the raw-source gate immediately. For interfaces, verify parent knowledge-base reachability first, then check raw reachability. 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
|
|
214
|
+
`On the first substantive manual question, run the raw-source gate immediately. For interfaces, verify parent knowledge-base reachability first, then check raw reachability. 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.`,
|
|
212
215
|
`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.`,
|
|
213
216
|
];
|
|
214
217
|
}
|
|
@@ -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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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { type InterfaceWorkflowId, type WorkflowStageDefinition } from "./workflow-definitions.js";
|
|
2
|
+
export declare function buildInterfaceStagePolicySection(notes: string[] | undefined): string[];
|
|
3
|
+
export declare function formatWorkflowStageFolders(stages: WorkflowStageDefinition[]): string;
|
|
4
|
+
export declare function formatWorkflowStageSequence(stages: WorkflowStageDefinition[]): string;
|
|
5
|
+
export declare function writeInterfaceCompilePlanTemplate(dirPath: string, options: {
|
|
6
|
+
workflowId: InterfaceWorkflowId;
|
|
7
|
+
sourcePath?: string;
|
|
8
|
+
interfaceName?: string;
|
|
9
|
+
useCase?: string;
|
|
10
|
+
targetQuestions?: string[];
|
|
11
|
+
}): void;
|
|
12
|
+
//# sourceMappingURL=interf-compile-plan.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"interf-compile-plan.d.ts","sourceRoot":"","sources":["../../src/lib/interf-compile-plan.ts"],"names":[],"mappings":"AAEA,OAAO,EAEL,KAAK,mBAAmB,EACxB,KAAK,uBAAuB,EAC7B,MAAM,2BAA2B,CAAC;AAGnC,wBAAgB,gCAAgC,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,SAAS,GAAG,MAAM,EAAE,CAQtF;AAED,wBAAgB,0BAA0B,CAAC,MAAM,EAAE,uBAAuB,EAAE,GAAG,MAAM,CAEpF;AAED,wBAAgB,2BAA2B,CAAC,MAAM,EAAE,uBAAuB,EAAE,GAAG,MAAM,CAErF;AAiID,wBAAgB,iCAAiC,CAC/C,OAAO,EAAE,MAAM,EACf,OAAO,EAAE;IACP,UAAU,EAAE,mBAAmB,CAAC;IAChC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;CAC5B,GACA,IAAI,CAmBN"}
|
|
@@ -0,0 +1,143 @@
|
|
|
1
|
+
import { basename, join } from "node:path";
|
|
2
|
+
import { writeFileSync } from "node:fs";
|
|
3
|
+
import { getInterfaceWorkflow, } from "./workflow-definitions.js";
|
|
4
|
+
import { readInterfConfig } from "./interf-detect.js";
|
|
5
|
+
export function buildInterfaceStagePolicySection(notes) {
|
|
6
|
+
if (!notes || notes.length === 0)
|
|
7
|
+
return [];
|
|
8
|
+
const dedupedNotes = Array.from(new Set(notes));
|
|
9
|
+
return [
|
|
10
|
+
"### Workflow bias",
|
|
11
|
+
...dedupedNotes.map((note) => `- ${note}`),
|
|
12
|
+
"",
|
|
13
|
+
];
|
|
14
|
+
}
|
|
15
|
+
export function formatWorkflowStageFolders(stages) {
|
|
16
|
+
return stages.map((stage) => `\`workflow/compile/stages/${stage.skillDir}/\``).join(", ");
|
|
17
|
+
}
|
|
18
|
+
export function formatWorkflowStageSequence(stages) {
|
|
19
|
+
return stages.map((stage) => stage.label).join(" -> ");
|
|
20
|
+
}
|
|
21
|
+
function renderInterfaceCompilePlanStageSection(stage, index, useCase, notes) {
|
|
22
|
+
const heading = `## Stage ${index + 1} — ${stage.label}`;
|
|
23
|
+
switch (stage.contractType) {
|
|
24
|
+
case "interface-retrieval":
|
|
25
|
+
return [
|
|
26
|
+
heading,
|
|
27
|
+
"### Goal",
|
|
28
|
+
`Retrieve the knowledge-base summaries needed to answer this interface's job: ${useCase}.`,
|
|
29
|
+
"### Filter criteria",
|
|
30
|
+
`- prioritize summaries that directly help answer: ${useCase}`,
|
|
31
|
+
"### Key entities:",
|
|
32
|
+
"- people, companies, products, systems, decisions, claims, and evidence objects tied to the use case",
|
|
33
|
+
"### Priority evidence tiers:",
|
|
34
|
+
"- direct source-backed summaries",
|
|
35
|
+
"- linked supporting summaries that close coverage gaps",
|
|
36
|
+
"### Truth modes to prioritize or downweight:",
|
|
37
|
+
"- prioritize current, observed, and final material",
|
|
38
|
+
"- downweight speculative, stale, or weakly supported material unless needed for coverage",
|
|
39
|
+
"### Expected relevant file count:",
|
|
40
|
+
"- start narrow, then expand until coverage proof is complete",
|
|
41
|
+
...buildInterfaceStagePolicySection(notes),
|
|
42
|
+
"### Method",
|
|
43
|
+
"- scan all parent summary frontmatter before selecting the set",
|
|
44
|
+
"- review candidate abstracts before final selection",
|
|
45
|
+
"- keep the retrieved set narrow, but preserve any summary whose decisive evidence may still live in charts, tables, or appendices",
|
|
46
|
+
"- write `.interf/relevant.json` and `.interf/coverage.json`, then stop",
|
|
47
|
+
"",
|
|
48
|
+
];
|
|
49
|
+
case "interface-analysis":
|
|
50
|
+
return [
|
|
51
|
+
heading,
|
|
52
|
+
"### Goal",
|
|
53
|
+
`Extract the interface-specific structure and findings needed for: ${useCase}.`,
|
|
54
|
+
"### Target ledger:",
|
|
55
|
+
"- list one requested target per bullet with metric, entity/market, period, chart/table kind, and required precision",
|
|
56
|
+
"### Batching:",
|
|
57
|
+
"- analyze relevant summaries in bounded batches, then merge local findings",
|
|
58
|
+
"### Entities:",
|
|
59
|
+
"- derive the entities, themes, and evidence objects this interface needs",
|
|
60
|
+
"### Claims:",
|
|
61
|
+
"- record evidence-backed claims, contradictions, and open questions for the use case",
|
|
62
|
+
...buildInterfaceStagePolicySection(notes),
|
|
63
|
+
"### Method",
|
|
64
|
+
"- use `.interf/relevant.json` and the target ledger as the primary checklist",
|
|
65
|
+
"- keep one result per requested target and preserve metric plus period as part of the target identity",
|
|
66
|
+
"- if exact answers are not preserved in summaries, inspect the raw source for those specific items and record whether they are exact, approximate, or unresolved",
|
|
67
|
+
"- keep raw extraction focused and bounded; stop once every requested target is classified",
|
|
68
|
+
"- write `.interf/analysis.json` with the target ledger and any raw extraction notes",
|
|
69
|
+
"",
|
|
70
|
+
];
|
|
71
|
+
case "interface-output":
|
|
72
|
+
return [
|
|
73
|
+
heading,
|
|
74
|
+
"### Goal",
|
|
75
|
+
"Compile local interface outputs an agent can use immediately.",
|
|
76
|
+
"### Output files",
|
|
77
|
+
"- `home.md`",
|
|
78
|
+
"- `knowledge/`",
|
|
79
|
+
"- `briefs/`",
|
|
80
|
+
"- `summaries/` when interface-local summaries are useful",
|
|
81
|
+
...buildInterfaceStagePolicySection(notes),
|
|
82
|
+
"### Method",
|
|
83
|
+
`- render the smallest useful local output set for: ${useCase}`,
|
|
84
|
+
"- treat Stage 3 of `compile-plan.md` as the output contract and follow the exact filenames it names",
|
|
85
|
+
"- cover every requested target explicitly and keep approximate or unresolved findings labeled as such",
|
|
86
|
+
"- preserve `value_display`, `bin_choice`, `precision`, `source_kind`, and page metadata from `.interf/analysis.json`",
|
|
87
|
+
"- write the requested local outputs, then stop",
|
|
88
|
+
"",
|
|
89
|
+
];
|
|
90
|
+
default:
|
|
91
|
+
return [
|
|
92
|
+
heading,
|
|
93
|
+
"### Goal",
|
|
94
|
+
`Complete the ${stage.label} stage for this interface.`,
|
|
95
|
+
"### Method",
|
|
96
|
+
"- Follow the active stage contract and write the required artifacts.",
|
|
97
|
+
...buildInterfaceStagePolicySection(notes),
|
|
98
|
+
"",
|
|
99
|
+
];
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
function renderInterfaceCompilePlanTemplate(options) {
|
|
103
|
+
const useCase = options.useCase?.trim() || options.workflowPlaceholder || options.workflowHint;
|
|
104
|
+
const stageSections = options.stages.flatMap((stage, index) => renderInterfaceCompilePlanStageSection(stage, index, useCase, options.stagePolicyNotes?.[stage.id]));
|
|
105
|
+
return [
|
|
106
|
+
"# Compile Plan",
|
|
107
|
+
"",
|
|
108
|
+
"## Interface Goal",
|
|
109
|
+
`- workflow: \`${options.workflowId}\` (${options.workflowLabel})`,
|
|
110
|
+
`- use case: ${useCase}`,
|
|
111
|
+
`- method: ${options.workflowHint}`,
|
|
112
|
+
...(options.targetQuestions && options.targetQuestions.length > 0
|
|
113
|
+
? [
|
|
114
|
+
"",
|
|
115
|
+
"### Hard target questions",
|
|
116
|
+
...options.targetQuestions.map((question) => `- ${question}`),
|
|
117
|
+
]
|
|
118
|
+
: []),
|
|
119
|
+
"",
|
|
120
|
+
...stageSections,
|
|
121
|
+
].join("\n");
|
|
122
|
+
}
|
|
123
|
+
export function writeInterfaceCompilePlanTemplate(dirPath, options) {
|
|
124
|
+
const workflow = getInterfaceWorkflow(options.workflowId, {
|
|
125
|
+
sourcePath: options.sourcePath,
|
|
126
|
+
workspacePath: dirPath,
|
|
127
|
+
});
|
|
128
|
+
const config = readInterfConfig(dirPath);
|
|
129
|
+
const interfaceName = options.interfaceName ?? config?.name ?? basename(dirPath);
|
|
130
|
+
const content = renderInterfaceCompilePlanTemplate({
|
|
131
|
+
interfaceName,
|
|
132
|
+
workflowId: workflow.id,
|
|
133
|
+
workflowLabel: workflow.label,
|
|
134
|
+
workflowHint: workflow.hint,
|
|
135
|
+
workflowPlaceholder: workflow.placeholder,
|
|
136
|
+
useCase: options.useCase,
|
|
137
|
+
targetQuestions: options.targetQuestions,
|
|
138
|
+
stages: workflow.stages,
|
|
139
|
+
stagePolicyNotes: workflow.stagePolicyNotes,
|
|
140
|
+
});
|
|
141
|
+
writeFileSync(join(dirPath, "compile-plan.md"), content);
|
|
142
|
+
}
|
|
143
|
+
//# sourceMappingURL=interf-compile-plan.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"interf-compile-plan.js","sourceRoot":"","sources":["../../src/lib/interf-compile-plan.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"interf-detect.d.ts","sourceRoot":"","sources":["../../src/lib/interf-detect.ts"],"names":[],"mappings":"
|
|
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;AACrB,YAAY,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAEhD,KAAK,yBAAyB,GAAG,OAAO,CAAC,YAAY,EAAE;IAAE,IAAI,EAAE,gBAAgB,CAAA;CAAE,CAAC,CAAC;AAEnF,MAAM,WAAW,qBAAqB;IACpC,UAAU,EAAE,MAAM,CAAC;IACnB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,MAAM,EAAE,YAAY,CAAC;CACtB;AAED,eAAO,MAAM,qBAAqB,WAAW,CAAC;AAC9C,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,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,YAAY,CAAA;CAAE,GAAG,IAAI,CAkBvF;AAED,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,MAAM,GAAG,qBAAqB,GAAG,IAAI,CAc9E;AAED,wBAAgB,iCAAiC,CAAC,aAAa,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAMtF;AAED,wBAAgB,8BAA8B,CAC5C,iBAAiB,EAAE,MAAM,EACzB,MAAM,GAAE,YAAY,GAAG,IAA0C,GAChE,MAAM,CAIR;AA6BD,wBAAgB,iCAAiC,CAC/C,UAAU,EAAE,MAAM,GACjB,KAAK,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,yBAAyB,CAAA;CAAE,CAAC,CAE5D;AAED,wBAAgB,4BAA4B,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,CAqCvE;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,6 +1,7 @@
|
|
|
1
1
|
import { existsSync, readdirSync, statSync, } from "node:fs";
|
|
2
2
|
import { basename, join, resolve } from "node:path";
|
|
3
|
-
import {
|
|
3
|
+
import { warnInterf } from "./logger.js";
|
|
4
|
+
import { readJsonFileWithSchema } from "./parse.js";
|
|
4
5
|
import { InterfConfigSchema, } from "./schema.js";
|
|
5
6
|
export const INTERF_CONTAINER_NAME = "interf";
|
|
6
7
|
export const WORKFLOW_CONTAINER_NAME = "workflows";
|
|
@@ -11,11 +12,7 @@ export function readInterfConfig(dirPath) {
|
|
|
11
12
|
const configPath = join(dirPath, INTERF_CONFIG_FILE);
|
|
12
13
|
if (!existsSync(configPath))
|
|
13
14
|
return null;
|
|
14
|
-
|
|
15
|
-
if (!raw)
|
|
16
|
-
return null;
|
|
17
|
-
const parsed = InterfConfigSchema.safeParse(raw);
|
|
18
|
-
return parsed.success ? parsed.data : null;
|
|
15
|
+
return readJsonFileWithSchema(configPath, "Interf config", InterfConfigSchema);
|
|
19
16
|
}
|
|
20
17
|
export function detectInterf(cwd) {
|
|
21
18
|
// Check if cwd itself is a knowledge-base (has interf.json)
|
|
@@ -69,7 +66,8 @@ function listKnowledgeBaseChildren(containerPath) {
|
|
|
69
66
|
if (!statSync(containerPath).isDirectory())
|
|
70
67
|
return [];
|
|
71
68
|
}
|
|
72
|
-
catch {
|
|
69
|
+
catch (error) {
|
|
70
|
+
warnInterf(`Warning: failed to inspect Interf container at ${containerPath}: ${error instanceof Error ? error.message : String(error)}`);
|
|
73
71
|
return [];
|
|
74
72
|
}
|
|
75
73
|
return readdirSync(containerPath)
|
|
@@ -78,7 +76,8 @@ function listKnowledgeBaseChildren(containerPath) {
|
|
|
78
76
|
try {
|
|
79
77
|
return statSync(entryPath).isDirectory();
|
|
80
78
|
}
|
|
81
|
-
catch {
|
|
79
|
+
catch (error) {
|
|
80
|
+
warnInterf(`Warning: failed to inspect knowledge-base candidate at ${entryPath}: ${error instanceof Error ? error.message : String(error)}`);
|
|
82
81
|
return false;
|
|
83
82
|
}
|
|
84
83
|
})
|
|
@@ -108,7 +107,8 @@ export function assertKnowledgeBaseContainer(sourcePath) {
|
|
|
108
107
|
try {
|
|
109
108
|
return !statSync(entryPath).isDirectory();
|
|
110
109
|
}
|
|
111
|
-
catch {
|
|
110
|
+
catch (error) {
|
|
111
|
+
warnInterf(`Warning: failed to inspect Interf control-plane path at ${entryPath}: ${error instanceof Error ? error.message : String(error)}`);
|
|
112
112
|
return true;
|
|
113
113
|
}
|
|
114
114
|
}
|
|
@@ -116,7 +116,8 @@ export function assertKnowledgeBaseContainer(sourcePath) {
|
|
|
116
116
|
if (!statSync(entryPath).isDirectory())
|
|
117
117
|
return true;
|
|
118
118
|
}
|
|
119
|
-
catch {
|
|
119
|
+
catch (error) {
|
|
120
|
+
warnInterf(`Warning: failed to inspect Interf entry at ${entryPath}: ${error instanceof Error ? error.message : String(error)}`);
|
|
120
121
|
return true;
|
|
121
122
|
}
|
|
122
123
|
const config = readInterfConfig(entryPath);
|
|
@@ -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,
|
|
1
|
+
{"version":3,"file":"interf-detect.js","sourceRoot":"","sources":["../../src/lib/interf-detect.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,13 +1,4 @@
|
|
|
1
|
-
import { type
|
|
2
|
-
export declare function buildInterfaceStagePolicySection(notes: string[] | undefined): string[];
|
|
3
|
-
export declare function formatWorkflowStageFolders(stages: WorkflowStageDefinition[]): string;
|
|
4
|
-
export declare function formatWorkflowStageSequence(stages: WorkflowStageDefinition[]): string;
|
|
5
|
-
export declare function writeInterfaceCompilePlanTemplate(dirPath: string, options: {
|
|
6
|
-
workflowId: InterfaceWorkflowId;
|
|
7
|
-
sourcePath?: string;
|
|
8
|
-
interfaceName?: string;
|
|
9
|
-
useCase?: string;
|
|
10
|
-
}): void;
|
|
1
|
+
import { type InterfaceWorkflowId, type KnowledgeBaseWorkflowId } from "./workflow-definitions.js";
|
|
11
2
|
export declare function createKnowledgeBase(name: string, sourcePath: string, workflowId?: KnowledgeBaseWorkflowId): string;
|
|
12
3
|
export declare function createKnowledgeBaseWithWorkflow(name: string, sourcePath: string, workflowId?: KnowledgeBaseWorkflowId): string;
|
|
13
4
|
export declare function createInterface(name: string, knowledgeBasePath: string, knowledgeBaseName: string, workflowId?: InterfaceWorkflowId): string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"interf-scaffold.d.ts","sourceRoot":"","sources":["../../src/lib/interf-scaffold.ts"],"names":[],"mappings":"AAQA,OAAO,
|
|
1
|
+
{"version":3,"file":"interf-scaffold.d.ts","sourceRoot":"","sources":["../../src/lib/interf-scaffold.ts"],"names":[],"mappings":"AAQA,OAAO,EAKL,KAAK,mBAAmB,EACxB,KAAK,uBAAuB,EAC7B,MAAM,2BAA2B,CAAC;AAgDnC,wBAAgB,mBAAmB,CACjC,IAAI,EAAE,MAAM,EACZ,UAAU,EAAE,MAAM,EAClB,UAAU,GAAE,uBAAkC,GAC7C,MAAM,CAER;AAED,wBAAgB,+BAA+B,CAC7C,IAAI,EAAE,MAAM,EACZ,UAAU,EAAE,MAAM,EAClB,UAAU,GAAE,uBAAkC,GAC7C,MAAM,CAuIR;AAED,wBAAgB,eAAe,CAC7B,IAAI,EAAE,MAAM,EACZ,iBAAiB,EAAE,MAAM,EACzB,iBAAiB,EAAE,MAAM,EACzB,UAAU,GAAE,mBAA8B,GACzC,MAAM,CAER;AAED,wBAAgB,2BAA2B,CACzC,IAAI,EAAE,MAAM,EACZ,iBAAiB,EAAE,MAAM,EACzB,iBAAiB,EAAE,MAAM,EACzB,UAAU,GAAE,mBAA8B,GACzC,MAAM,CAuIR"}
|