@interf/compiler 0.2.4 → 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 +194 -148
- 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 -455
- 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 -337
- 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 +13 -6
- package/dist/commands/source-config-wizard.d.ts.map +1 -1
- package/dist/commands/source-config-wizard.js +93 -59
- 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 -5
- package/dist/lib/obsidian.d.ts.map +1 -1
- package/dist/lib/obsidian.js +11 -165
- 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
|
@@ -1,8 +1,9 @@
|
|
|
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
|
-
|
|
5
|
-
|
|
4
|
+
function workflowPackagePath(dirPath) {
|
|
5
|
+
return join(dirPath, WORKFLOW_PACKAGE_DIR);
|
|
6
|
+
}
|
|
6
7
|
function writeWorkflowStarterDocs(dirPath, docs) {
|
|
7
8
|
for (const doc of docs ?? []) {
|
|
8
9
|
const targetPath = join(dirPath, doc.relativePath);
|
|
@@ -10,19 +11,12 @@ function writeWorkflowStarterDocs(dirPath, docs) {
|
|
|
10
11
|
writeFileSync(targetPath, doc.content);
|
|
11
12
|
}
|
|
12
13
|
}
|
|
13
|
-
function
|
|
14
|
-
return join(dirPath, WORKFLOW_PACKAGE_DIR);
|
|
15
|
-
}
|
|
16
|
-
function workflowInterfacesPath(knowledgeBasePath) {
|
|
17
|
-
return join(workflowPackagePath(knowledgeBasePath), "interfaces");
|
|
18
|
-
}
|
|
19
|
-
function writeWorkflowPackageJson(rootPath, targetType, workflow) {
|
|
14
|
+
function writeWorkflowPackageJson(rootPath, workflow) {
|
|
20
15
|
writeFileSync(join(rootPath, "workflow.json"), `${JSON.stringify({
|
|
21
16
|
id: workflow.id,
|
|
22
|
-
type:
|
|
17
|
+
type: "workspace",
|
|
23
18
|
label: workflow.label,
|
|
24
19
|
hint: workflow.hint,
|
|
25
|
-
...(workflow.placeholder ? { placeholder: workflow.placeholder } : {}),
|
|
26
20
|
stages: workflow.stages.map((stage) => ({
|
|
27
21
|
id: stage.id,
|
|
28
22
|
label: stage.label,
|
|
@@ -34,98 +28,108 @@ function writeWorkflowPackageJson(rootPath, targetType, workflow) {
|
|
|
34
28
|
...(workflow.stagePolicyNotes ? { stage_policy_notes: workflow.stagePolicyNotes } : {}),
|
|
35
29
|
}, null, 2)}\n`);
|
|
36
30
|
}
|
|
37
|
-
function
|
|
38
|
-
const stageLines = workflow.stages
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
31
|
+
function renderWorkflowReadme(workflow) {
|
|
32
|
+
const stageLines = workflow.stages
|
|
33
|
+
.map((stage) => `- \`${stage.id}\` — ${stage.description} (${stage.contractType})`)
|
|
34
|
+
.join("\n");
|
|
35
|
+
return [
|
|
36
|
+
`# ${workflow.label}`,
|
|
37
|
+
"",
|
|
38
|
+
workflow.hint,
|
|
39
|
+
"",
|
|
40
|
+
"## Stages",
|
|
41
|
+
"",
|
|
42
|
+
stageLines,
|
|
43
|
+
"",
|
|
44
|
+
"This workflow package lives under `workflow/` and controls how Interf builds this compiled workspace.",
|
|
45
|
+
"",
|
|
46
|
+
].join("\n");
|
|
46
47
|
}
|
|
47
|
-
function
|
|
48
|
-
return
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
48
|
+
function renderCreateSkill(workflow) {
|
|
49
|
+
return [
|
|
50
|
+
"# Workspace Create Notes",
|
|
51
|
+
"",
|
|
52
|
+
`Workflow: ${workflow.id}`,
|
|
53
|
+
"",
|
|
54
|
+
"This workspace uses the built-in Interf structure. Edit these notes only if you want local create-time guidance for agents or maintainers.",
|
|
55
|
+
"",
|
|
56
|
+
].join("\n");
|
|
53
57
|
}
|
|
54
|
-
function
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
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");
|
|
63
78
|
}
|
|
64
|
-
function
|
|
79
|
+
function renderStageSkill(workflow, stage) {
|
|
65
80
|
const notes = workflow.stagePolicyNotes?.[stage.id] ?? [];
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
81
|
+
const stageSpecificNotes = stage.contractType === "workspace-file-evidence"
|
|
82
|
+
? [
|
|
83
|
+
"Each summary must use JSON frontmatter and include `source`, `source_kind`, `evidence_tier`, `truth_mode`, `state`, and a non-empty `abstract`.",
|
|
84
|
+
"Include a clear abstract block in the body so a human can skim the summary quickly.",
|
|
85
|
+
"Do not skip the abstract just because the overview section is present.",
|
|
86
|
+
]
|
|
87
|
+
: stage.contractType === "workspace-knowledge-layer"
|
|
88
|
+
? [
|
|
89
|
+
"Treat the knowledge layer as retrieval structure, not final truth.",
|
|
90
|
+
"Prefer durable entity, claim, and index notes over one giant catch-all file.",
|
|
91
|
+
]
|
|
92
|
+
: [];
|
|
93
|
+
return [
|
|
94
|
+
`# ${stage.label}`,
|
|
95
|
+
"",
|
|
96
|
+
stage.description,
|
|
97
|
+
"",
|
|
98
|
+
`Contract type: \`${stage.contractType}\``,
|
|
99
|
+
"",
|
|
100
|
+
...(stageSpecificNotes.length > 0
|
|
101
|
+
? [
|
|
102
|
+
"## Requirements",
|
|
103
|
+
"",
|
|
104
|
+
...stageSpecificNotes.map((note) => `- ${note}`),
|
|
105
|
+
"",
|
|
106
|
+
]
|
|
107
|
+
: []),
|
|
108
|
+
...(notes.length > 0
|
|
109
|
+
? [
|
|
110
|
+
"## Notes",
|
|
111
|
+
"",
|
|
112
|
+
...notes.map((note) => `- ${note}`),
|
|
113
|
+
"",
|
|
114
|
+
]
|
|
115
|
+
: []),
|
|
116
|
+
].join("\n");
|
|
73
117
|
}
|
|
74
|
-
function
|
|
75
|
-
const
|
|
76
|
-
const topPreflight = isInterface
|
|
77
|
-
? topInterfaceManualPreflightBlock()
|
|
78
|
-
: topKnowledgeBaseManualPreflightBlock();
|
|
79
|
-
if (isInterface) {
|
|
80
|
-
return renderBundledTemplate("workflow-package/interface-query/SKILL.md", {
|
|
81
|
-
top_preflight: topPreflight,
|
|
82
|
-
first_reply_rule: buildManualQueryFirstReplyRule(scope),
|
|
83
|
-
});
|
|
84
|
-
}
|
|
85
|
-
return renderBundledTemplate("workflow-package/knowledge-base-query/SKILL.md", {
|
|
86
|
-
top_preflight: topPreflight,
|
|
87
|
-
first_reply_rule: buildManualQueryFirstReplyRule(scope),
|
|
88
|
-
});
|
|
89
|
-
}
|
|
90
|
-
function writeInterfaceWorkflowTemplate(targetDir, workflow) {
|
|
91
|
-
mkdirSync(join(targetDir, "create"), { recursive: true });
|
|
92
|
-
mkdirSync(join(targetDir, "use", "query"), { recursive: true });
|
|
93
|
-
mkdirSync(join(targetDir, "compile", "stages"), { recursive: true });
|
|
94
|
-
for (const stage of workflow.stages) {
|
|
95
|
-
mkdirSync(join(targetDir, "compile", "stages", stage.skillDir), { recursive: true });
|
|
96
|
-
}
|
|
97
|
-
writeWorkflowPackageJson(targetDir, "interface", workflow);
|
|
98
|
-
writeFileSync(join(targetDir, "README.md"), defaultWorkflowReadme("interface", workflow));
|
|
99
|
-
writeFileSync(join(targetDir, "create", "SKILL.md"), defaultWorkflowCreateSkill("interface", workflow));
|
|
100
|
-
writeFileSync(join(targetDir, "use", "query", "SKILL.md"), defaultQuerySkill("interface"));
|
|
101
|
-
for (const stage of workflow.stages) {
|
|
102
|
-
writeFileSync(join(targetDir, "compile", "stages", stage.skillDir, "SKILL.md"), defaultInterfaceStageSkill(workflow, stage));
|
|
103
|
-
}
|
|
104
|
-
writeWorkflowStarterDocs(targetDir, workflow.starterDocs);
|
|
105
|
-
}
|
|
106
|
-
export function writeKnowledgeBaseWorkflowPackage(knowledgeBasePath, workflow, interfaceTemplates) {
|
|
107
|
-
const workflowDir = workflowPackagePath(knowledgeBasePath);
|
|
118
|
+
export function writeWorkspaceWorkflowPackage(workspacePath, workflow) {
|
|
119
|
+
const workflowDir = workflowPackagePath(workspacePath);
|
|
108
120
|
mkdirSync(join(workflowDir, "create"), { recursive: true });
|
|
109
121
|
mkdirSync(join(workflowDir, "use", "query"), { recursive: true });
|
|
110
122
|
mkdirSync(join(workflowDir, "compile", "stages"), { recursive: true });
|
|
111
123
|
for (const stage of workflow.stages) {
|
|
112
124
|
mkdirSync(join(workflowDir, "compile", "stages", stage.skillDir), { recursive: true });
|
|
113
125
|
}
|
|
114
|
-
writeWorkflowPackageJson(workflowDir,
|
|
115
|
-
writeFileSync(join(workflowDir, "README.md"),
|
|
116
|
-
writeFileSync(join(workflowDir, "create", "SKILL.md"),
|
|
117
|
-
writeFileSync(join(workflowDir, "use", "query", "SKILL.md"),
|
|
126
|
+
writeWorkflowPackageJson(workflowDir, workflow);
|
|
127
|
+
writeFileSync(join(workflowDir, "README.md"), renderWorkflowReadme(workflow));
|
|
128
|
+
writeFileSync(join(workflowDir, "create", "SKILL.md"), renderCreateSkill(workflow));
|
|
129
|
+
writeFileSync(join(workflowDir, "use", "query", "SKILL.md"), renderQuerySkill());
|
|
118
130
|
for (const stage of workflow.stages) {
|
|
119
|
-
writeFileSync(join(workflowDir, "compile", "stages", stage.skillDir, "SKILL.md"),
|
|
131
|
+
writeFileSync(join(workflowDir, "compile", "stages", stage.skillDir, "SKILL.md"), renderStageSkill(workflow, stage));
|
|
120
132
|
}
|
|
121
133
|
writeWorkflowStarterDocs(workflowDir, workflow.starterDocs);
|
|
122
|
-
const interfacesDir = workflowInterfacesPath(knowledgeBasePath);
|
|
123
|
-
mkdirSync(interfacesDir, { recursive: true });
|
|
124
|
-
for (const template of interfaceTemplates) {
|
|
125
|
-
writeInterfaceWorkflowTemplate(join(interfacesDir, template.id), template);
|
|
126
|
-
}
|
|
127
|
-
}
|
|
128
|
-
export function writeInterfaceWorkflowPackage(interfacePath, workflow) {
|
|
129
|
-
writeInterfaceWorkflowTemplate(workflowPackagePath(interfacePath), workflow);
|
|
130
134
|
}
|
|
131
135
|
//# sourceMappingURL=interf-workflow-package.js.map
|
|
@@ -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,6 +1,5 @@
|
|
|
1
|
-
export { INTERF_CONTAINER_NAME, WORKFLOW_CONTAINER_NAME, BENCHMARK_CONTAINER_NAME, INTERF_CONFIG_FILE, WORKFLOW_PACKAGE_DIR, readInterfConfig, detectInterf,
|
|
2
|
-
export type { InterfConfig,
|
|
3
|
-
export { syncClaudeBootstrap, refreshWorkspaceBootstrapGuidance, refreshLegacyAgentsBootstrap,
|
|
4
|
-
export {
|
|
5
|
-
export { createKnowledgeBase, createKnowledgeBaseWithWorkflow, createInterface, createInterfaceWithWorkflow, } from "./interf-scaffold.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, listWorkspacesForSourceFolder, hasSourceFolderInput, assertWorkspaceContainer, assertWritableTargetDir, assertWorkspaceName, } from "./interf-detect.js";
|
|
2
|
+
export type { InterfConfig, ResolvedWorkspace } from "./interf-detect.js";
|
|
3
|
+
export { syncClaudeBootstrap, refreshWorkspaceBootstrapGuidance, refreshLegacyAgentsBootstrap, insertLineAfterFirstMatch, insertBlockBeforeFirstMatch, renderClaudeBootstrap, buildWorkspaceRuntimeControlLines, buildWorkspaceAgentLayerLines, } from "./interf-bootstrap.js";
|
|
4
|
+
export { createWorkspace, defaultWorkspaceNameForSource, } from "./interf-scaffold.js";
|
|
6
5
|
//# 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":"
|
|
1
|
+
{"version":3,"file":"interf.d.ts","sourceRoot":"","sources":["../../src/lib/interf.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,qBAAqB,EACrB,wBAAwB,EACxB,uBAAuB,EACvB,wBAAwB,EACxB,kBAAkB,EAClB,oBAAoB,EACpB,gBAAgB,EAChB,YAAY,EACZ,gBAAgB,EAChB,uBAAuB,EACvB,6BAA6B,EAC7B,oBAAoB,EACpB,wBAAwB,EACxB,uBAAuB,EACvB,mBAAmB,GACpB,MAAM,oBAAoB,CAAC;AAC5B,YAAY,EAAE,YAAY,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAE1E,OAAO,EACL,mBAAmB,EACnB,iCAAiC,EACjC,4BAA4B,EAC5B,yBAAyB,EACzB,2BAA2B,EAC3B,qBAAqB,EACrB,iCAAiC,EACjC,6BAA6B,GAC9B,MAAM,uBAAuB,CAAC;AAE/B,OAAO,EACL,eAAe,EACf,6BAA6B,GAC9B,MAAM,sBAAsB,CAAC"}
|
package/dist/lib/interf.js
CHANGED
|
@@ -1,7 +1,4 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
export {
|
|
4
|
-
export { syncClaudeBootstrap, refreshWorkspaceBootstrapGuidance, refreshLegacyAgentsBootstrap, refreshLegacyKnowledgeBaseQuerySkill, refreshLegacyInterfaceQuerySkill, insertLineAfterFirstMatch, insertBlockBeforeFirstMatch, renderClaudeBootstrap, topKnowledgeBaseManualPreflightBlock, topInterfaceManualPreflightBlock, buildWorkspaceRuntimeControlLines, buildWorkspaceAgentLayerLines, } from "./interf-bootstrap.js";
|
|
5
|
-
export { buildInterfaceStagePolicySection, formatWorkflowStageFolders, formatWorkflowStageSequence, writeInterfaceCompilePlanTemplate, } from "./interf-compile-plan.js";
|
|
6
|
-
export { createKnowledgeBase, createKnowledgeBaseWithWorkflow, createInterface, createInterfaceWithWorkflow, } from "./interf-scaffold.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, listWorkspacesForSourceFolder, hasSourceFolderInput, assertWorkspaceContainer, assertWritableTargetDir, assertWorkspaceName, } from "./interf-detect.js";
|
|
2
|
+
export { syncClaudeBootstrap, refreshWorkspaceBootstrapGuidance, refreshLegacyAgentsBootstrap, insertLineAfterFirstMatch, insertBlockBeforeFirstMatch, renderClaudeBootstrap, buildWorkspaceRuntimeControlLines, buildWorkspaceAgentLayerLines, } from "./interf-bootstrap.js";
|
|
3
|
+
export { createWorkspace, defaultWorkspaceNameForSource, } from "./interf-scaffold.js";
|
|
7
4
|
//# 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,
|
|
1
|
+
{"version":3,"file":"interf.js","sourceRoot":"","sources":["../../src/lib/interf.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,qBAAqB,EACrB,wBAAwB,EACxB,uBAAuB,EACvB,wBAAwB,EACxB,kBAAkB,EAClB,oBAAoB,EACpB,gBAAgB,EAChB,YAAY,EACZ,gBAAgB,EAChB,uBAAuB,EACvB,6BAA6B,EAC7B,oBAAoB,EACpB,wBAAwB,EACxB,uBAAuB,EACvB,mBAAmB,GACpB,MAAM,oBAAoB,CAAC;AAG5B,OAAO,EACL,mBAAmB,EACnB,iCAAiC,EACjC,4BAA4B,EAC5B,yBAAyB,EACzB,2BAA2B,EAC3B,qBAAqB,EACrB,iCAAiC,EACjC,6BAA6B,GAC9B,MAAM,uBAAuB,CAAC;AAE/B,OAAO,EACL,eAAe,EACf,6BAA6B,GAC9B,MAAM,sBAAsB,CAAC"}
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import { z } from "zod";
|
|
2
2
|
import { RuntimeContractTypeSchema, RuntimeStageAcceptanceSchema } from "./schema.js";
|
|
3
|
-
export type WorkflowTargetType = "knowledge-base" | "interface";
|
|
4
3
|
export interface LocalWorkflowStarterDoc {
|
|
5
4
|
relativePath: string;
|
|
6
5
|
content: string;
|
|
@@ -15,21 +14,20 @@ export interface LocalWorkflowStageDefinition {
|
|
|
15
14
|
}
|
|
16
15
|
export interface LocalWorkflowDefinition {
|
|
17
16
|
id: string;
|
|
18
|
-
type:
|
|
17
|
+
type: "workspace";
|
|
19
18
|
label: string;
|
|
20
19
|
hint: string;
|
|
21
20
|
extends?: string;
|
|
22
|
-
placeholder?: string;
|
|
23
21
|
stages?: LocalWorkflowStageDefinition[];
|
|
24
22
|
stage_policy_notes?: Record<string, string[]>;
|
|
25
23
|
starter_docs: LocalWorkflowStarterDoc[];
|
|
26
24
|
directoryPath: string;
|
|
27
25
|
workflowPath: string;
|
|
28
26
|
}
|
|
29
|
-
export declare function workflowDefinitionPath(sourcePath: string,
|
|
30
|
-
export declare function loadWorkflowDefinitionFromDir(dirPath: string
|
|
31
|
-
export declare function listLocalWorkflowDefinitions(sourcePath: string
|
|
32
|
-
export declare function loadLocalWorkflowDefinition(sourcePath: string,
|
|
27
|
+
export declare function workflowDefinitionPath(sourcePath: string, id: string): string;
|
|
28
|
+
export declare function loadWorkflowDefinitionFromDir(dirPath: string): LocalWorkflowDefinition | null;
|
|
29
|
+
export declare function listLocalWorkflowDefinitions(sourcePath: string): LocalWorkflowDefinition[];
|
|
30
|
+
export declare function loadLocalWorkflowDefinition(sourcePath: string, id: string): LocalWorkflowDefinition | null;
|
|
33
31
|
export declare function isWorkflowId(value: string): boolean;
|
|
34
32
|
export interface WorkflowValidationResult {
|
|
35
33
|
ok: boolean;
|
|
@@ -38,5 +36,8 @@ export interface WorkflowValidationResult {
|
|
|
38
36
|
counts: Record<string, number>;
|
|
39
37
|
}
|
|
40
38
|
export declare function validateWorkflowPackage(dirPath: string): WorkflowValidationResult;
|
|
41
|
-
export declare function writeLocalWorkflowDefinition(sourcePath: string,
|
|
39
|
+
export declare function writeLocalWorkflowDefinition(sourcePath: string, id: string, workflowJson: Record<string, unknown>, docs: Array<{
|
|
40
|
+
relativePath: string;
|
|
41
|
+
content: string;
|
|
42
|
+
}>): string;
|
|
42
43
|
//# sourceMappingURL=local-workflows.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"local-workflows.d.ts","sourceRoot":"","sources":["../../src/lib/local-workflows.ts"],"names":[],"mappings":"AASA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAKxB,OAAO,EACL,yBAAyB,EACzB,4BAA4B,EAE7B,MAAM,aAAa,CAAC;AAErB,MAAM,
|
|
1
|
+
{"version":3,"file":"local-workflows.d.ts","sourceRoot":"","sources":["../../src/lib/local-workflows.ts"],"names":[],"mappings":"AASA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAKxB,OAAO,EACL,yBAAyB,EACzB,4BAA4B,EAE7B,MAAM,aAAa,CAAC;AAErB,MAAM,WAAW,uBAAuB;IACtC,YAAY,EAAE,MAAM,CAAC;IACrB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,4BAA4B;IAC3C,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,aAAa,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,yBAAyB,CAAC,CAAC;IACzD,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,4BAA4B,CAAC,CAAC;CAC3D;AAED,MAAM,WAAW,uBAAuB;IACtC,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,WAAW,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,4BAA4B,EAAE,CAAC;IACxC,kBAAkB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;IAC9C,YAAY,EAAE,uBAAuB,EAAE,CAAC;IACxC,aAAa,EAAE,MAAM,CAAC;IACtB,YAAY,EAAE,MAAM,CAAC;CACtB;AAqCD,wBAAgB,sBAAsB,CACpC,UAAU,EAAE,MAAM,EAClB,EAAE,EAAE,MAAM,GACT,MAAM,CAER;AAYD,wBAAgB,6BAA6B,CAC3C,OAAO,EAAE,MAAM,GACd,uBAAuB,GAAG,IAAI,CAyBhC;AAED,wBAAgB,4BAA4B,CAC1C,UAAU,EAAE,MAAM,GACjB,uBAAuB,EAAE,CAgB3B;AAED,wBAAgB,2BAA2B,CACzC,UAAU,EAAE,MAAM,EAClB,EAAE,EAAE,MAAM,GACT,uBAAuB,GAAG,IAAI,CAEhC;AAED,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAEnD;AAED,MAAM,WAAW,wBAAwB;IACvC,EAAE,EAAE,OAAO,CAAC;IACZ,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAChC;AAED,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,MAAM,GAAG,wBAAwB,CA2DjF;AAED,wBAAgB,4BAA4B,CAC1C,UAAU,EAAE,MAAM,EAClB,EAAE,EAAE,MAAM,EACV,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACrC,IAAI,EAAE,KAAK,CAAC;IAAE,YAAY,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC,GACrD,MAAM,CAUR"}
|
|
@@ -16,23 +16,20 @@ const LocalWorkflowStageDefinitionSchema = z.object({
|
|
|
16
16
|
});
|
|
17
17
|
const LocalWorkflowDefinitionSchema = z.object({
|
|
18
18
|
id: z.string().regex(WorkflowIdPattern),
|
|
19
|
-
type: z.
|
|
19
|
+
type: z.literal("workspace"),
|
|
20
20
|
label: z.string().min(1),
|
|
21
21
|
hint: z.string().min(1),
|
|
22
22
|
extends: z.string().regex(WorkflowIdPattern).optional(),
|
|
23
|
-
placeholder: z.string().min(1).optional(),
|
|
24
23
|
stages: z.array(LocalWorkflowStageDefinitionSchema).min(1).optional(),
|
|
25
24
|
stage_policy_notes: z.record(z.string(), z.array(z.string())).optional(),
|
|
26
25
|
}).superRefine((value, ctx) => {
|
|
27
|
-
const allowed =
|
|
28
|
-
? new Set(["kb-file-evidence", "kb-knowledge-layer"])
|
|
29
|
-
: new Set(["interface-retrieval", "interface-analysis", "interface-output"]);
|
|
26
|
+
const allowed = new Set(["workspace-file-evidence", "workspace-knowledge-layer"]);
|
|
30
27
|
for (const [index, stage] of (value.stages ?? []).entries()) {
|
|
31
28
|
if (!allowed.has(stage.contract_type)) {
|
|
32
29
|
ctx.addIssue({
|
|
33
30
|
code: z.ZodIssueCode.custom,
|
|
34
31
|
path: ["stages", index, "contract_type"],
|
|
35
|
-
message: `contract_type "${stage.contract_type}" is not valid for
|
|
32
|
+
message: `contract_type "${stage.contract_type}" is not valid for workspace workflows`,
|
|
36
33
|
});
|
|
37
34
|
}
|
|
38
35
|
}
|
|
@@ -40,29 +37,19 @@ const LocalWorkflowDefinitionSchema = z.object({
|
|
|
40
37
|
function workflowRootPath(sourcePath) {
|
|
41
38
|
return join(sourcePath, "interf", "workflows");
|
|
42
39
|
}
|
|
43
|
-
function
|
|
44
|
-
return join(workflowRootPath(sourcePath),
|
|
45
|
-
}
|
|
46
|
-
export function workflowDefinitionPath(sourcePath, type, id) {
|
|
47
|
-
return join(workflowTypePath(sourcePath, type), id);
|
|
48
|
-
}
|
|
49
|
-
function workflowJsonPath(sourcePath, type, id) {
|
|
50
|
-
return join(workflowDefinitionPath(sourcePath, type, id), "workflow.json");
|
|
40
|
+
export function workflowDefinitionPath(sourcePath, id) {
|
|
41
|
+
return join(workflowRootPath(sourcePath), id);
|
|
51
42
|
}
|
|
52
43
|
function collectStarterDocs(dirPath) {
|
|
53
44
|
return listFilesRecursive(dirPath, isMarkdownFile)
|
|
54
45
|
.filter((filePath) => relative(dirPath, filePath).replaceAll("\\", "/") !== "workflow.json")
|
|
55
|
-
.filter((filePath) => {
|
|
56
|
-
const relativePath = relative(dirPath, filePath).replaceAll("\\", "/");
|
|
57
|
-
return !relativePath.startsWith("interfaces/");
|
|
58
|
-
})
|
|
59
46
|
.map((filePath) => ({
|
|
60
47
|
relativePath: relative(dirPath, filePath).replaceAll("\\", "/"),
|
|
61
48
|
content: readFileSync(filePath, "utf8"),
|
|
62
49
|
}))
|
|
63
50
|
.sort((a, b) => a.relativePath.localeCompare(b.relativePath));
|
|
64
51
|
}
|
|
65
|
-
export function loadWorkflowDefinitionFromDir(dirPath
|
|
52
|
+
export function loadWorkflowDefinitionFromDir(dirPath) {
|
|
66
53
|
const workflowPath = existsSync(join(dirPath, "workflow.json"))
|
|
67
54
|
? join(dirPath, "workflow.json")
|
|
68
55
|
: null;
|
|
@@ -71,8 +58,8 @@ export function loadWorkflowDefinitionFromDir(dirPath, type) {
|
|
|
71
58
|
const definition = readJsonFileWithSchema(workflowPath, "local workflow definition", LocalWorkflowDefinitionSchema);
|
|
72
59
|
if (!definition)
|
|
73
60
|
return null;
|
|
74
|
-
if (definition.type !==
|
|
75
|
-
warnInterf(`Warning: local workflow definition at ${workflowPath} has type "${definition.type}"
|
|
61
|
+
if (definition.type !== "workspace") {
|
|
62
|
+
warnInterf(`Warning: local workflow definition at ${workflowPath} has unexpected type "${definition.type}".`);
|
|
76
63
|
return null;
|
|
77
64
|
}
|
|
78
65
|
return {
|
|
@@ -82,8 +69,8 @@ export function loadWorkflowDefinitionFromDir(dirPath, type) {
|
|
|
82
69
|
workflowPath,
|
|
83
70
|
};
|
|
84
71
|
}
|
|
85
|
-
export function listLocalWorkflowDefinitions(sourcePath
|
|
86
|
-
const root =
|
|
72
|
+
export function listLocalWorkflowDefinitions(sourcePath) {
|
|
73
|
+
const root = workflowRootPath(sourcePath);
|
|
87
74
|
if (!existsSync(root))
|
|
88
75
|
return [];
|
|
89
76
|
return readdirSync(root)
|
|
@@ -96,23 +83,12 @@ export function listLocalWorkflowDefinitions(sourcePath, type) {
|
|
|
96
83
|
return false;
|
|
97
84
|
}
|
|
98
85
|
})
|
|
99
|
-
.map((entryPath) => loadWorkflowDefinitionFromDir(entryPath
|
|
86
|
+
.map((entryPath) => loadWorkflowDefinitionFromDir(entryPath))
|
|
100
87
|
.filter((definition) => definition !== null)
|
|
101
88
|
.sort((a, b) => a.label.localeCompare(b.label));
|
|
102
89
|
}
|
|
103
|
-
export function loadLocalWorkflowDefinition(sourcePath,
|
|
104
|
-
return loadWorkflowDefinitionFromDir(workflowDefinitionPath(sourcePath,
|
|
105
|
-
}
|
|
106
|
-
function assertEmptyWorkflowDir(dirPath) {
|
|
107
|
-
if (!existsSync(dirPath))
|
|
108
|
-
return;
|
|
109
|
-
const stat = statSync(dirPath);
|
|
110
|
-
if (!stat.isDirectory()) {
|
|
111
|
-
throw new Error(`Workflow target exists and is not a directory: ${dirPath}`);
|
|
112
|
-
}
|
|
113
|
-
if (readdirSync(dirPath).length > 0) {
|
|
114
|
-
throw new Error(`Workflow target already exists and is not empty: ${dirPath}`);
|
|
115
|
-
}
|
|
90
|
+
export function loadLocalWorkflowDefinition(sourcePath, id) {
|
|
91
|
+
return loadWorkflowDefinitionFromDir(workflowDefinitionPath(sourcePath, id));
|
|
116
92
|
}
|
|
117
93
|
export function isWorkflowId(value) {
|
|
118
94
|
return WorkflowIdPattern.test(value);
|
|
@@ -123,7 +99,7 @@ export function validateWorkflowPackage(dirPath) {
|
|
|
123
99
|
return {
|
|
124
100
|
ok: false,
|
|
125
101
|
summary: `No workflow.json found at ${dirPath}`,
|
|
126
|
-
errors: [
|
|
102
|
+
errors: ["Missing workflow.json"],
|
|
127
103
|
counts: {},
|
|
128
104
|
};
|
|
129
105
|
}
|
|
@@ -132,7 +108,7 @@ export function validateWorkflowPackage(dirPath) {
|
|
|
132
108
|
return {
|
|
133
109
|
ok: false,
|
|
134
110
|
summary: `Failed to parse workflow.json at ${workflowPath}`,
|
|
135
|
-
errors: [
|
|
111
|
+
errors: ["Invalid JSON in workflow.json"],
|
|
136
112
|
counts: {},
|
|
137
113
|
};
|
|
138
114
|
}
|
|
@@ -149,70 +125,42 @@ export function validateWorkflowPackage(dirPath) {
|
|
|
149
125
|
const def = parsed.data;
|
|
150
126
|
const errors = [];
|
|
151
127
|
if (def.stages && def.stages.length > 0) {
|
|
152
|
-
const
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
if (!allowed.has(stage.contract_type)) {
|
|
157
|
-
errors.push(`Stage "${stage.id}" uses contract_type "${stage.contract_type}" which is not valid for ${def.type} workflows`);
|
|
158
|
-
}
|
|
128
|
+
const contractTypes = def.stages.map((stage) => stage.contract_type);
|
|
129
|
+
const firstCompileStage = contractTypes.findIndex((contractType) => contractType === "workspace-knowledge-layer");
|
|
130
|
+
if (firstCompileStage <= 0) {
|
|
131
|
+
errors.push("Workspace workflows must have at least one workspace-file-evidence stage followed by at least one workspace-knowledge-layer stage.");
|
|
159
132
|
}
|
|
160
|
-
if (
|
|
161
|
-
|
|
162
|
-
const firstKnowledge = types.findIndex((t) => t === "kb-knowledge-layer");
|
|
163
|
-
if (firstKnowledge <= 0) {
|
|
164
|
-
errors.push(`KB workflows must have at least one kb-file-evidence stage followed by at least one kb-knowledge-layer stage`);
|
|
165
|
-
}
|
|
166
|
-
else if (!types.slice(0, firstKnowledge).every((t) => t === "kb-file-evidence")) {
|
|
167
|
-
errors.push(`All stages before the first kb-knowledge-layer must be kb-file-evidence`);
|
|
168
|
-
}
|
|
133
|
+
else if (!contractTypes.slice(0, firstCompileStage).every((contractType) => contractType === "workspace-file-evidence")) {
|
|
134
|
+
errors.push("All stages before the first workspace-knowledge-layer stage must be workspace-file-evidence.");
|
|
169
135
|
}
|
|
170
|
-
if (
|
|
171
|
-
|
|
172
|
-
const firstAnalysis = types.findIndex((t) => t === "interface-analysis");
|
|
173
|
-
const firstOutput = types.findIndex((t) => t === "interface-output");
|
|
174
|
-
if (firstAnalysis <= 0 || firstOutput <= firstAnalysis) {
|
|
175
|
-
errors.push(`Interface workflows must have retrieval stages, then analysis stages, then output stages`);
|
|
176
|
-
}
|
|
136
|
+
else if (!contractTypes.slice(firstCompileStage).every((contractType) => contractType === "workspace-knowledge-layer")) {
|
|
137
|
+
errors.push("All stages after the first workspace-knowledge-layer stage must be workspace-knowledge-layer.");
|
|
177
138
|
}
|
|
178
139
|
}
|
|
179
|
-
const
|
|
180
|
-
const
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
summary: `Workflow "${def.id}" has ${errors.length} issue(s)`,
|
|
185
|
-
errors,
|
|
186
|
-
counts: { stages: stageCount, docs: starterDocs },
|
|
187
|
-
};
|
|
188
|
-
}
|
|
140
|
+
const stageDirs = listFilesRecursive(join(dirPath, "compile", "stages"), (filePath) => basename(filePath) === "SKILL.md");
|
|
141
|
+
const counts = {
|
|
142
|
+
starter_docs: collectStarterDocs(dirPath).length,
|
|
143
|
+
compile_stage_docs: stageDirs.length,
|
|
144
|
+
};
|
|
189
145
|
return {
|
|
190
|
-
ok:
|
|
191
|
-
summary:
|
|
192
|
-
errors
|
|
193
|
-
counts
|
|
146
|
+
ok: errors.length === 0,
|
|
147
|
+
summary: errors.length === 0 ? "Workflow package is valid." : `Workflow package has ${errors.length} issue(s).`,
|
|
148
|
+
errors,
|
|
149
|
+
counts,
|
|
194
150
|
};
|
|
195
151
|
}
|
|
196
|
-
export function writeLocalWorkflowDefinition(sourcePath,
|
|
197
|
-
const
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
const
|
|
201
|
-
|
|
202
|
-
type: definition.type,
|
|
203
|
-
label: definition.label,
|
|
204
|
-
hint: definition.hint,
|
|
205
|
-
...(definition.extends ? { extends: definition.extends } : {}),
|
|
206
|
-
...(definition.placeholder ? { placeholder: definition.placeholder } : {}),
|
|
207
|
-
...(definition.stages ? { stages: definition.stages } : {}),
|
|
208
|
-
...(definition.stage_policy_notes ? { stage_policy_notes: definition.stage_policy_notes } : {}),
|
|
209
|
-
};
|
|
210
|
-
writeFileSync(workflowJsonPath(sourcePath, definition.type, definition.id), `${JSON.stringify(workflowJson, null, 2)}\n`);
|
|
211
|
-
for (const doc of definition.starter_docs) {
|
|
212
|
-
const targetPath = join(dirPath, doc.relativePath);
|
|
152
|
+
export function writeLocalWorkflowDefinition(sourcePath, id, workflowJson, docs) {
|
|
153
|
+
const root = workflowDefinitionPath(sourcePath, id);
|
|
154
|
+
mkdirSync(root, { recursive: true });
|
|
155
|
+
writeFileSync(join(root, "workflow.json"), JSON.stringify(workflowJson, null, 2) + "\n");
|
|
156
|
+
for (const doc of docs) {
|
|
157
|
+
const targetPath = join(root, doc.relativePath);
|
|
213
158
|
mkdirSync(dirname(targetPath), { recursive: true });
|
|
214
159
|
writeFileSync(targetPath, doc.content);
|
|
215
160
|
}
|
|
216
|
-
return
|
|
161
|
+
return root;
|
|
162
|
+
}
|
|
163
|
+
function basename(filePath) {
|
|
164
|
+
return filePath.split(/[\\/]/).pop() ?? filePath;
|
|
217
165
|
}
|
|
218
166
|
//# sourceMappingURL=local-workflows.js.map
|