@interf/compiler 0.2.5 → 0.3.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 +192 -187
- package/dist/bin.js +3 -3
- package/dist/bin.js.map +1 -1
- package/dist/commands/compile.d.ts +1 -0
- package/dist/commands/compile.d.ts.map +1 -1
- package/dist/commands/compile.js +45 -138
- 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 +46 -222
- 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 +78 -477
- package/dist/commands/create.js.map +1 -1
- package/dist/commands/default.d.ts.map +1 -1
- package/dist/commands/default.js +27 -43
- package/dist/commands/default.js.map +1 -1
- package/dist/commands/doctor.js +2 -2
- package/dist/commands/doctor.js.map +1 -1
- package/dist/commands/executor-flow.d.ts +9 -0
- package/dist/commands/executor-flow.d.ts.map +1 -0
- package/dist/commands/executor-flow.js +55 -0
- package/dist/commands/executor-flow.js.map +1 -0
- package/dist/commands/init.d.ts +1 -0
- package/dist/commands/init.d.ts.map +1 -1
- package/dist/commands/init.js +320 -321
- 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 +10 -11
- package/dist/commands/source-config-wizard.d.ts.map +1 -1
- package/dist/commands/source-config-wizard.js +100 -97
- 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/test-flow.d.ts +21 -0
- package/dist/commands/test-flow.d.ts.map +1 -0
- package/dist/commands/test-flow.js +106 -0
- package/dist/commands/test-flow.js.map +1 -0
- package/dist/commands/test.d.ts +4 -0
- package/dist/commands/test.d.ts.map +1 -0
- package/dist/commands/test.js +131 -0
- package/dist/commands/test.js.map +1 -0
- package/dist/commands/verify.d.ts.map +1 -1
- package/dist/commands/verify.js +63 -98
- package/dist/commands/verify.js.map +1 -1
- package/dist/commands/workspace-flow.d.ts +21 -0
- package/dist/commands/workspace-flow.d.ts.map +1 -0
- package/dist/commands/workspace-flow.js +90 -0
- package/dist/commands/workspace-flow.js.map +1 -0
- package/dist/index.d.ts +8 -8
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +5 -7
- 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/agent-detection.js +4 -4
- package/dist/lib/agent-detection.js.map +1 -1
- package/dist/lib/agent-skills.js +6 -6
- package/dist/lib/agent-skills.js.map +1 -1
- package/dist/lib/benchmark-execution.d.ts.map +1 -1
- package/dist/lib/benchmark-execution.js +32 -19
- package/dist/lib/benchmark-execution.js.map +1 -1
- package/dist/lib/benchmark-sandbox.d.ts +10 -0
- package/dist/lib/benchmark-sandbox.d.ts.map +1 -0
- package/dist/lib/benchmark-sandbox.js +75 -0
- package/dist/lib/benchmark-sandbox.js.map +1 -0
- package/dist/lib/benchmark-targets.d.ts +4 -4
- package/dist/lib/benchmark-targets.d.ts.map +1 -1
- package/dist/lib/benchmark-targets.js +20 -54
- 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 +99 -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 +99 -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 +56 -92
- 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 +4 -3
- package/dist/lib/runtime-contracts.d.ts.map +1 -1
- package/dist/lib/runtime-contracts.js +125 -9
- package/dist/lib/runtime-contracts.js.map +1 -1
- package/dist/lib/runtime-reconcile.d.ts +3 -5
- package/dist/lib/runtime-reconcile.d.ts.map +1 -1
- package/dist/lib/runtime-reconcile.js +70 -167
- 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 +61 -57
- package/dist/lib/runtime-runs.js.map +1 -1
- package/dist/lib/runtime-types.d.ts +16 -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 +69 -311
- package/dist/lib/schema.d.ts.map +1 -1
- package/dist/lib/schema.js +49 -210
- package/dist/lib/schema.js.map +1 -1
- package/dist/lib/source-config.d.ts +8 -7
- package/dist/lib/source-config.d.ts.map +1 -1
- package/dist/lib/source-config.js +59 -63
- 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 +52 -233
- 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 +32 -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} +49 -8
- package/dist/lib/validate-workspace.d.ts.map +1 -0
- package/dist/lib/validate-workspace.js +398 -0
- 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 +22 -20
- 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 +100 -353
- 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 +17 -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 +15 -30
- package/dist/lib/workflows.js.map +1 -1
- package/dist/lib/workspace-compile.d.ts +51 -0
- package/dist/lib/workspace-compile.d.ts.map +1 -0
- package/dist/lib/workspace-compile.js +397 -0
- package/dist/lib/workspace-compile.js.map +1 -0
- package/package.json +9 -9
- package/skills/benchmark/SKILL.md +20 -27
- package/skills/workflow/create/SKILL.md +10 -14
- package/skills/workspace/shape/SKILL.md +15 -0
- package/skills/workspace/structure/SKILL.md +15 -0
- package/skills/workspace/summarize/SKILL.md +15 -0
- package/templates/workspace/README.md +23 -0
- package/templates/workspace/interfignore +2 -0
- package/dist/commands/benchmark.d.ts +0 -3
- package/dist/commands/benchmark.d.ts.map +0 -1
- package/dist/commands/benchmark.js +0 -374
- package/dist/commands/benchmark.js.map +0 -1
- 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 +0 -252
- 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 +0 -306
- 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,4 +1,3 @@
|
|
|
1
1
|
import { type WorkflowDefinition } from "./workflow-definitions.js";
|
|
2
|
-
export declare function
|
|
3
|
-
export declare function writeInterfaceWorkflowPackage(interfacePath: string, workflow: WorkflowDefinition<string>): void;
|
|
2
|
+
export declare function writeWorkspaceWorkflowPackage(workspacePath: string, workflow: WorkflowDefinition<string>): void;
|
|
4
3
|
//# sourceMappingURL=interf-workflow-package.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"interf-workflow-package.d.ts","sourceRoot":"","sources":["../../src/lib/interf-workflow-package.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,KAAK,kBAAkB,EAExB,MAAM,2BAA2B,CAAC;
|
|
1
|
+
{"version":3,"file":"interf-workflow-package.d.ts","sourceRoot":"","sources":["../../src/lib/interf-workflow-package.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,KAAK,kBAAkB,EAExB,MAAM,2BAA2B,CAAC;AAgJnC,wBAAgB,6BAA6B,CAC3C,aAAa,EAAE,MAAM,EACrB,QAAQ,EAAE,kBAAkB,CAAC,MAAM,CAAC,GACnC,IAAI,CAuBN"}
|
|
@@ -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,113 @@ 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-structure"
|
|
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
|
+
: stage.contractType === "workspace-query-shape"
|
|
93
|
+
? [
|
|
94
|
+
"Use the workspace focus plus saved question text to shape `home.md` and retrieval routes.",
|
|
95
|
+
"Do not copy expected answers into the workspace.",
|
|
96
|
+
]
|
|
97
|
+
: [];
|
|
98
|
+
return [
|
|
99
|
+
`# ${stage.label}`,
|
|
100
|
+
"",
|
|
101
|
+
stage.description,
|
|
102
|
+
"",
|
|
103
|
+
`Contract type: \`${stage.contractType}\``,
|
|
104
|
+
"",
|
|
105
|
+
...(stageSpecificNotes.length > 0
|
|
106
|
+
? [
|
|
107
|
+
"## Requirements",
|
|
108
|
+
"",
|
|
109
|
+
...stageSpecificNotes.map((note) => `- ${note}`),
|
|
110
|
+
"",
|
|
111
|
+
]
|
|
112
|
+
: []),
|
|
113
|
+
...(notes.length > 0
|
|
114
|
+
? [
|
|
115
|
+
"## Notes",
|
|
116
|
+
"",
|
|
117
|
+
...notes.map((note) => `- ${note}`),
|
|
118
|
+
"",
|
|
119
|
+
]
|
|
120
|
+
: []),
|
|
121
|
+
].join("\n");
|
|
73
122
|
}
|
|
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);
|
|
123
|
+
export function writeWorkspaceWorkflowPackage(workspacePath, workflow) {
|
|
124
|
+
const workflowDir = workflowPackagePath(workspacePath);
|
|
108
125
|
mkdirSync(join(workflowDir, "create"), { recursive: true });
|
|
109
126
|
mkdirSync(join(workflowDir, "use", "query"), { recursive: true });
|
|
110
127
|
mkdirSync(join(workflowDir, "compile", "stages"), { recursive: true });
|
|
111
128
|
for (const stage of workflow.stages) {
|
|
112
129
|
mkdirSync(join(workflowDir, "compile", "stages", stage.skillDir), { recursive: true });
|
|
113
130
|
}
|
|
114
|
-
writeWorkflowPackageJson(workflowDir,
|
|
115
|
-
writeFileSync(join(workflowDir, "README.md"),
|
|
116
|
-
writeFileSync(join(workflowDir, "create", "SKILL.md"),
|
|
117
|
-
writeFileSync(join(workflowDir, "use", "query", "SKILL.md"),
|
|
131
|
+
writeWorkflowPackageJson(workflowDir, workflow);
|
|
132
|
+
writeFileSync(join(workflowDir, "README.md"), renderWorkflowReadme(workflow));
|
|
133
|
+
writeFileSync(join(workflowDir, "create", "SKILL.md"), renderCreateSkill(workflow));
|
|
134
|
+
writeFileSync(join(workflowDir, "use", "query", "SKILL.md"), renderQuerySkill());
|
|
118
135
|
for (const stage of workflow.stages) {
|
|
119
|
-
writeFileSync(join(workflowDir, "compile", "stages", stage.skillDir, "SKILL.md"),
|
|
136
|
+
writeFileSync(join(workflowDir, "compile", "stages", stage.skillDir, "SKILL.md"), renderStageSkill(workflow, stage));
|
|
120
137
|
}
|
|
121
138
|
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
139
|
}
|
|
131
140
|
//# 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;AAyCD,wBAAgB,sBAAsB,CACpC,UAAU,EAAE,MAAM,EAClB,EAAE,EAAE,MAAM,GACT,MAAM,CAER;AAYD,wBAAgB,6BAA6B,CAC3C,OAAO,EAAE,MAAM,GACd,uBAAuB,GAAG,IAAI,CAyBhC;AAED,wBAAgB,4BAA4B,CAC1C,UAAU,EAAE,MAAM,GACjB,uBAAuB,EAAE,CAgB3B;AAED,wBAAgB,2BAA2B,CACzC,UAAU,EAAE,MAAM,EAClB,EAAE,EAAE,MAAM,GACT,uBAAuB,GAAG,IAAI,CAEhC;AAED,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAEnD;AAED,MAAM,WAAW,wBAAwB;IACvC,EAAE,EAAE,OAAO,CAAC;IACZ,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAChC;AAED,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,MAAM,GAAG,wBAAwB,CAyEjF;AAED,wBAAgB,4BAA4B,CAC1C,UAAU,EAAE,MAAM,EAClB,EAAE,EAAE,MAAM,EACV,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACrC,IAAI,EAAE,KAAK,CAAC;IAAE,YAAY,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC,GACrD,MAAM,CAUR"}
|
|
@@ -16,23 +16,24 @@ 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
|
-
|
|
29
|
-
|
|
26
|
+
const allowed = new Set([
|
|
27
|
+
"workspace-file-evidence",
|
|
28
|
+
"workspace-knowledge-structure",
|
|
29
|
+
"workspace-query-shape",
|
|
30
|
+
]);
|
|
30
31
|
for (const [index, stage] of (value.stages ?? []).entries()) {
|
|
31
32
|
if (!allowed.has(stage.contract_type)) {
|
|
32
33
|
ctx.addIssue({
|
|
33
34
|
code: z.ZodIssueCode.custom,
|
|
34
35
|
path: ["stages", index, "contract_type"],
|
|
35
|
-
message: `contract_type "${stage.contract_type}" is not valid for
|
|
36
|
+
message: `contract_type "${stage.contract_type}" is not valid for workspace workflows`,
|
|
36
37
|
});
|
|
37
38
|
}
|
|
38
39
|
}
|
|
@@ -40,29 +41,19 @@ const LocalWorkflowDefinitionSchema = z.object({
|
|
|
40
41
|
function workflowRootPath(sourcePath) {
|
|
41
42
|
return join(sourcePath, "interf", "workflows");
|
|
42
43
|
}
|
|
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");
|
|
44
|
+
export function workflowDefinitionPath(sourcePath, id) {
|
|
45
|
+
return join(workflowRootPath(sourcePath), id);
|
|
51
46
|
}
|
|
52
47
|
function collectStarterDocs(dirPath) {
|
|
53
48
|
return listFilesRecursive(dirPath, isMarkdownFile)
|
|
54
49
|
.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
50
|
.map((filePath) => ({
|
|
60
51
|
relativePath: relative(dirPath, filePath).replaceAll("\\", "/"),
|
|
61
52
|
content: readFileSync(filePath, "utf8"),
|
|
62
53
|
}))
|
|
63
54
|
.sort((a, b) => a.relativePath.localeCompare(b.relativePath));
|
|
64
55
|
}
|
|
65
|
-
export function loadWorkflowDefinitionFromDir(dirPath
|
|
56
|
+
export function loadWorkflowDefinitionFromDir(dirPath) {
|
|
66
57
|
const workflowPath = existsSync(join(dirPath, "workflow.json"))
|
|
67
58
|
? join(dirPath, "workflow.json")
|
|
68
59
|
: null;
|
|
@@ -71,8 +62,8 @@ export function loadWorkflowDefinitionFromDir(dirPath, type) {
|
|
|
71
62
|
const definition = readJsonFileWithSchema(workflowPath, "local workflow definition", LocalWorkflowDefinitionSchema);
|
|
72
63
|
if (!definition)
|
|
73
64
|
return null;
|
|
74
|
-
if (definition.type !==
|
|
75
|
-
warnInterf(`Warning: local workflow definition at ${workflowPath} has type "${definition.type}"
|
|
65
|
+
if (definition.type !== "workspace") {
|
|
66
|
+
warnInterf(`Warning: local workflow definition at ${workflowPath} has unexpected type "${definition.type}".`);
|
|
76
67
|
return null;
|
|
77
68
|
}
|
|
78
69
|
return {
|
|
@@ -82,8 +73,8 @@ export function loadWorkflowDefinitionFromDir(dirPath, type) {
|
|
|
82
73
|
workflowPath,
|
|
83
74
|
};
|
|
84
75
|
}
|
|
85
|
-
export function listLocalWorkflowDefinitions(sourcePath
|
|
86
|
-
const root =
|
|
76
|
+
export function listLocalWorkflowDefinitions(sourcePath) {
|
|
77
|
+
const root = workflowRootPath(sourcePath);
|
|
87
78
|
if (!existsSync(root))
|
|
88
79
|
return [];
|
|
89
80
|
return readdirSync(root)
|
|
@@ -96,23 +87,12 @@ export function listLocalWorkflowDefinitions(sourcePath, type) {
|
|
|
96
87
|
return false;
|
|
97
88
|
}
|
|
98
89
|
})
|
|
99
|
-
.map((entryPath) => loadWorkflowDefinitionFromDir(entryPath
|
|
90
|
+
.map((entryPath) => loadWorkflowDefinitionFromDir(entryPath))
|
|
100
91
|
.filter((definition) => definition !== null)
|
|
101
92
|
.sort((a, b) => a.label.localeCompare(b.label));
|
|
102
93
|
}
|
|
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
|
-
}
|
|
94
|
+
export function loadLocalWorkflowDefinition(sourcePath, id) {
|
|
95
|
+
return loadWorkflowDefinitionFromDir(workflowDefinitionPath(sourcePath, id));
|
|
116
96
|
}
|
|
117
97
|
export function isWorkflowId(value) {
|
|
118
98
|
return WorkflowIdPattern.test(value);
|
|
@@ -123,7 +103,7 @@ export function validateWorkflowPackage(dirPath) {
|
|
|
123
103
|
return {
|
|
124
104
|
ok: false,
|
|
125
105
|
summary: `No workflow.json found at ${dirPath}`,
|
|
126
|
-
errors: [
|
|
106
|
+
errors: ["Missing workflow.json"],
|
|
127
107
|
counts: {},
|
|
128
108
|
};
|
|
129
109
|
}
|
|
@@ -132,7 +112,7 @@ export function validateWorkflowPackage(dirPath) {
|
|
|
132
112
|
return {
|
|
133
113
|
ok: false,
|
|
134
114
|
summary: `Failed to parse workflow.json at ${workflowPath}`,
|
|
135
|
-
errors: [
|
|
115
|
+
errors: ["Invalid JSON in workflow.json"],
|
|
136
116
|
counts: {},
|
|
137
117
|
};
|
|
138
118
|
}
|
|
@@ -149,70 +129,54 @@ export function validateWorkflowPackage(dirPath) {
|
|
|
149
129
|
const def = parsed.data;
|
|
150
130
|
const errors = [];
|
|
151
131
|
if (def.stages && def.stages.length > 0) {
|
|
152
|
-
const
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
132
|
+
const order = new Map([
|
|
133
|
+
["workspace-file-evidence", 0],
|
|
134
|
+
["workspace-knowledge-structure", 1],
|
|
135
|
+
["workspace-query-shape", 2],
|
|
136
|
+
]);
|
|
137
|
+
const contractTypes = def.stages.map((stage) => stage.contract_type);
|
|
138
|
+
if (def.stages.length < 3) {
|
|
139
|
+
errors.push("Workspace workflows must include summarize, structure, and shape stages in order.");
|
|
140
|
+
}
|
|
141
|
+
else if (!contractTypes.every((contractType, index) => index === 0 || (order.get(contractType) ?? -1) >= (order.get(contractTypes[index - 1]) ?? -1))) {
|
|
142
|
+
errors.push("Workspace workflow stages must keep non-decreasing order: file-evidence -> knowledge-structure -> query-shape.");
|
|
159
143
|
}
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
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`);
|
|
144
|
+
else {
|
|
145
|
+
if (!contractTypes.includes("workspace-file-evidence")) {
|
|
146
|
+
errors.push("Workspace workflows must include at least one workspace-file-evidence stage.");
|
|
165
147
|
}
|
|
166
|
-
|
|
167
|
-
errors.push(
|
|
148
|
+
if (!contractTypes.includes("workspace-knowledge-structure")) {
|
|
149
|
+
errors.push("Workspace workflows must include at least one workspace-knowledge-structure stage.");
|
|
168
150
|
}
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
const types = def.stages.map((s) => s.contract_type);
|
|
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`);
|
|
151
|
+
if (!contractTypes.includes("workspace-query-shape")) {
|
|
152
|
+
errors.push("Workspace workflows must include at least one workspace-query-shape stage.");
|
|
176
153
|
}
|
|
177
154
|
}
|
|
178
155
|
}
|
|
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
|
-
}
|
|
156
|
+
const stageDirs = listFilesRecursive(join(dirPath, "compile", "stages"), (filePath) => basename(filePath) === "SKILL.md");
|
|
157
|
+
const counts = {
|
|
158
|
+
starter_docs: collectStarterDocs(dirPath).length,
|
|
159
|
+
compile_stage_docs: stageDirs.length,
|
|
160
|
+
};
|
|
189
161
|
return {
|
|
190
|
-
ok:
|
|
191
|
-
summary:
|
|
192
|
-
errors
|
|
193
|
-
counts
|
|
162
|
+
ok: errors.length === 0,
|
|
163
|
+
summary: errors.length === 0 ? "Workflow package is valid." : `Workflow package has ${errors.length} issue(s).`,
|
|
164
|
+
errors,
|
|
165
|
+
counts,
|
|
194
166
|
};
|
|
195
167
|
}
|
|
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);
|
|
168
|
+
export function writeLocalWorkflowDefinition(sourcePath, id, workflowJson, docs) {
|
|
169
|
+
const root = workflowDefinitionPath(sourcePath, id);
|
|
170
|
+
mkdirSync(root, { recursive: true });
|
|
171
|
+
writeFileSync(join(root, "workflow.json"), JSON.stringify(workflowJson, null, 2) + "\n");
|
|
172
|
+
for (const doc of docs) {
|
|
173
|
+
const targetPath = join(root, doc.relativePath);
|
|
213
174
|
mkdirSync(dirname(targetPath), { recursive: true });
|
|
214
175
|
writeFileSync(targetPath, doc.content);
|
|
215
176
|
}
|
|
216
|
-
return
|
|
177
|
+
return root;
|
|
178
|
+
}
|
|
179
|
+
function basename(filePath) {
|
|
180
|
+
return filePath.split(/[\\/]/).pop() ?? filePath;
|
|
217
181
|
}
|
|
218
182
|
//# sourceMappingURL=local-workflows.js.map
|