@interf/compiler 0.2.5 → 0.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (240) hide show
  1. package/README.md +182 -183
  2. package/dist/commands/benchmark.d.ts.map +1 -1
  3. package/dist/commands/benchmark.js +60 -351
  4. package/dist/commands/benchmark.js.map +1 -1
  5. package/dist/commands/compile.d.ts.map +1 -1
  6. package/dist/commands/compile.js +43 -110
  7. package/dist/commands/compile.js.map +1 -1
  8. package/dist/commands/create-workflow-wizard.d.ts +4 -25
  9. package/dist/commands/create-workflow-wizard.d.ts.map +1 -1
  10. package/dist/commands/create-workflow-wizard.js +29 -214
  11. package/dist/commands/create-workflow-wizard.js.map +1 -1
  12. package/dist/commands/create.d.ts +2 -11
  13. package/dist/commands/create.d.ts.map +1 -1
  14. package/dist/commands/create.js +72 -461
  15. package/dist/commands/create.js.map +1 -1
  16. package/dist/commands/default.d.ts.map +1 -1
  17. package/dist/commands/default.js +16 -28
  18. package/dist/commands/default.js.map +1 -1
  19. package/dist/commands/init.d.ts.map +1 -1
  20. package/dist/commands/init.js +71 -340
  21. package/dist/commands/init.js.map +1 -1
  22. package/dist/commands/list.d.ts.map +1 -1
  23. package/dist/commands/list.js +12 -22
  24. package/dist/commands/list.js.map +1 -1
  25. package/dist/commands/reset.d.ts.map +1 -1
  26. package/dist/commands/reset.js +27 -124
  27. package/dist/commands/reset.js.map +1 -1
  28. package/dist/commands/source-config-wizard.d.ts +11 -11
  29. package/dist/commands/source-config-wizard.d.ts.map +1 -1
  30. package/dist/commands/source-config-wizard.js +68 -69
  31. package/dist/commands/source-config-wizard.js.map +1 -1
  32. package/dist/commands/status.d.ts.map +1 -1
  33. package/dist/commands/status.js +60 -56
  34. package/dist/commands/status.js.map +1 -1
  35. package/dist/commands/verify.d.ts.map +1 -1
  36. package/dist/commands/verify.js +59 -98
  37. package/dist/commands/verify.js.map +1 -1
  38. package/dist/index.d.ts +7 -7
  39. package/dist/index.d.ts.map +1 -1
  40. package/dist/index.js +4 -6
  41. package/dist/index.js.map +1 -1
  42. package/dist/lib/agent-constants.js +1 -1
  43. package/dist/lib/agent-constants.js.map +1 -1
  44. package/dist/lib/benchmark-execution.d.ts.map +1 -1
  45. package/dist/lib/benchmark-execution.js +7 -16
  46. package/dist/lib/benchmark-execution.js.map +1 -1
  47. package/dist/lib/benchmark-targets.d.ts +3 -4
  48. package/dist/lib/benchmark-targets.d.ts.map +1 -1
  49. package/dist/lib/benchmark-targets.js +9 -55
  50. package/dist/lib/benchmark-targets.js.map +1 -1
  51. package/dist/lib/benchmark-types.d.ts +2 -3
  52. package/dist/lib/benchmark-types.d.ts.map +1 -1
  53. package/dist/lib/benchmark.d.ts +1 -1
  54. package/dist/lib/benchmark.d.ts.map +1 -1
  55. package/dist/lib/benchmark.js +1 -1
  56. package/dist/lib/benchmark.js.map +1 -1
  57. package/dist/lib/config.d.ts +1 -2
  58. package/dist/lib/config.d.ts.map +1 -1
  59. package/dist/lib/config.js +2 -4
  60. package/dist/lib/config.js.map +1 -1
  61. package/dist/lib/discovery.d.ts +1 -1
  62. package/dist/lib/discovery.d.ts.map +1 -1
  63. package/dist/lib/discovery.js +7 -2
  64. package/dist/lib/discovery.js.map +1 -1
  65. package/dist/lib/eval-packs.d.ts +6 -52
  66. package/dist/lib/eval-packs.d.ts.map +1 -1
  67. package/dist/lib/eval-packs.js +11 -39
  68. package/dist/lib/eval-packs.js.map +1 -1
  69. package/dist/lib/interf-bootstrap.d.ts +3 -5
  70. package/dist/lib/interf-bootstrap.d.ts.map +1 -1
  71. package/dist/lib/interf-bootstrap.js +10 -57
  72. package/dist/lib/interf-bootstrap.js.map +1 -1
  73. package/dist/lib/interf-detect.d.ts +13 -11
  74. package/dist/lib/interf-detect.d.ts.map +1 -1
  75. package/dist/lib/interf-detect.js +59 -45
  76. package/dist/lib/interf-detect.js.map +1 -1
  77. package/dist/lib/interf-scaffold.d.ts +2 -5
  78. package/dist/lib/interf-scaffold.d.ts.map +1 -1
  79. package/dist/lib/interf-scaffold.js +98 -235
  80. package/dist/lib/interf-scaffold.js.map +1 -1
  81. package/dist/lib/interf-workflow-package.d.ts +1 -2
  82. package/dist/lib/interf-workflow-package.d.ts.map +1 -1
  83. package/dist/lib/interf-workflow-package.js +94 -90
  84. package/dist/lib/interf-workflow-package.js.map +1 -1
  85. package/dist/lib/interf.d.ts +4 -5
  86. package/dist/lib/interf.d.ts.map +1 -1
  87. package/dist/lib/interf.js +3 -6
  88. package/dist/lib/interf.js.map +1 -1
  89. package/dist/lib/local-workflows.d.ts +9 -8
  90. package/dist/lib/local-workflows.d.ts.map +1 -1
  91. package/dist/lib/local-workflows.js +42 -94
  92. package/dist/lib/local-workflows.js.map +1 -1
  93. package/dist/lib/obsidian.d.ts +1 -3
  94. package/dist/lib/obsidian.d.ts.map +1 -1
  95. package/dist/lib/obsidian.js +10 -81
  96. package/dist/lib/obsidian.js.map +1 -1
  97. package/dist/lib/registry.d.ts +6 -17
  98. package/dist/lib/registry.d.ts.map +1 -1
  99. package/dist/lib/registry.js +36 -50
  100. package/dist/lib/registry.js.map +1 -1
  101. package/dist/lib/runtime-contracts.d.ts +2 -3
  102. package/dist/lib/runtime-contracts.d.ts.map +1 -1
  103. package/dist/lib/runtime-contracts.js +10 -9
  104. package/dist/lib/runtime-contracts.js.map +1 -1
  105. package/dist/lib/runtime-reconcile.d.ts +2 -5
  106. package/dist/lib/runtime-reconcile.d.ts.map +1 -1
  107. package/dist/lib/runtime-reconcile.js +23 -176
  108. package/dist/lib/runtime-reconcile.js.map +1 -1
  109. package/dist/lib/runtime-runs.d.ts.map +1 -1
  110. package/dist/lib/runtime-runs.js +52 -57
  111. package/dist/lib/runtime-runs.js.map +1 -1
  112. package/dist/lib/runtime-types.d.ts +5 -6
  113. package/dist/lib/runtime-types.d.ts.map +1 -1
  114. package/dist/lib/runtime.d.ts +2 -2
  115. package/dist/lib/runtime.d.ts.map +1 -1
  116. package/dist/lib/runtime.js +1 -1
  117. package/dist/lib/runtime.js.map +1 -1
  118. package/dist/lib/schema.d.ts +53 -312
  119. package/dist/lib/schema.d.ts.map +1 -1
  120. package/dist/lib/schema.js +39 -206
  121. package/dist/lib/schema.js.map +1 -1
  122. package/dist/lib/source-config.d.ts +7 -7
  123. package/dist/lib/source-config.d.ts.map +1 -1
  124. package/dist/lib/source-config.js +55 -62
  125. package/dist/lib/source-config.js.map +1 -1
  126. package/dist/lib/state-artifacts.d.ts +5 -11
  127. package/dist/lib/state-artifacts.d.ts.map +1 -1
  128. package/dist/lib/state-artifacts.js +8 -18
  129. package/dist/lib/state-artifacts.js.map +1 -1
  130. package/dist/lib/state-health.d.ts +4 -8
  131. package/dist/lib/state-health.d.ts.map +1 -1
  132. package/dist/lib/state-health.js +27 -223
  133. package/dist/lib/state-health.js.map +1 -1
  134. package/dist/lib/state-io.d.ts +7 -12
  135. package/dist/lib/state-io.d.ts.map +1 -1
  136. package/dist/lib/state-io.js +26 -93
  137. package/dist/lib/state-io.js.map +1 -1
  138. package/dist/lib/state-view.d.ts +4 -6
  139. package/dist/lib/state-view.d.ts.map +1 -1
  140. package/dist/lib/state-view.js +62 -101
  141. package/dist/lib/state-view.js.map +1 -1
  142. package/dist/lib/state.d.ts +5 -5
  143. package/dist/lib/state.d.ts.map +1 -1
  144. package/dist/lib/state.js +4 -4
  145. package/dist/lib/state.js.map +1 -1
  146. package/dist/lib/summarize-plan.d.ts +2 -2
  147. package/dist/lib/summarize-plan.d.ts.map +1 -1
  148. package/dist/lib/summarize-plan.js +13 -13
  149. package/dist/lib/summarize-plan.js.map +1 -1
  150. package/dist/lib/{validate-kb.d.ts → validate-workspace.d.ts} +8 -8
  151. package/dist/lib/validate-workspace.d.ts.map +1 -0
  152. package/dist/lib/{validate-kb.js → validate-workspace.js} +44 -46
  153. package/dist/lib/validate-workspace.js.map +1 -0
  154. package/dist/lib/validate.d.ts +5 -7
  155. package/dist/lib/validate.d.ts.map +1 -1
  156. package/dist/lib/validate.js +6 -19
  157. package/dist/lib/validate.js.map +1 -1
  158. package/dist/lib/workflow-definitions.d.ts +14 -50
  159. package/dist/lib/workflow-definitions.d.ts.map +1 -1
  160. package/dist/lib/workflow-definitions.js +74 -349
  161. package/dist/lib/workflow-definitions.js.map +1 -1
  162. package/dist/lib/workflow-helpers.d.ts +3 -4
  163. package/dist/lib/workflow-helpers.d.ts.map +1 -1
  164. package/dist/lib/workflow-helpers.js +15 -49
  165. package/dist/lib/workflow-helpers.js.map +1 -1
  166. package/dist/lib/workflow-stage-runner.d.ts +1 -2
  167. package/dist/lib/workflow-stage-runner.d.ts.map +1 -1
  168. package/dist/lib/workflow-stage-runner.js +4 -6
  169. package/dist/lib/workflow-stage-runner.js.map +1 -1
  170. package/dist/lib/workflow-starter-docs.d.ts +3 -5
  171. package/dist/lib/workflow-starter-docs.d.ts.map +1 -1
  172. package/dist/lib/workflow-starter-docs.js +2 -17
  173. package/dist/lib/workflow-starter-docs.js.map +1 -1
  174. package/dist/lib/workflows.d.ts +9 -14
  175. package/dist/lib/workflows.d.ts.map +1 -1
  176. package/dist/lib/workflows.js +13 -30
  177. package/dist/lib/workflows.js.map +1 -1
  178. package/dist/lib/workspace-compile.d.ts +50 -0
  179. package/dist/lib/workspace-compile.d.ts.map +1 -0
  180. package/dist/lib/{workflows-kb.js → workspace-compile.js} +81 -89
  181. package/dist/lib/workspace-compile.js.map +1 -0
  182. package/package.json +9 -9
  183. package/skills/benchmark/SKILL.md +16 -24
  184. package/skills/workflow/create/SKILL.md +7 -14
  185. package/templates/workspace/README.md +23 -0
  186. package/templates/workspace/interfignore +2 -0
  187. package/dist/lib/bundled-templates.d.ts +0 -5
  188. package/dist/lib/bundled-templates.d.ts.map +0 -1
  189. package/dist/lib/bundled-templates.js +0 -23
  190. package/dist/lib/bundled-templates.js.map +0 -1
  191. package/dist/lib/interf-compile-plan.d.ts +0 -12
  192. package/dist/lib/interf-compile-plan.d.ts.map +0 -1
  193. package/dist/lib/interf-compile-plan.js +0 -143
  194. package/dist/lib/interf-compile-plan.js.map +0 -1
  195. package/dist/lib/validate-interface.d.ts +0 -79
  196. package/dist/lib/validate-interface.d.ts.map +0 -1
  197. package/dist/lib/validate-interface.js +0 -535
  198. package/dist/lib/validate-interface.js.map +0 -1
  199. package/dist/lib/validate-kb.d.ts.map +0 -1
  200. package/dist/lib/validate-kb.js.map +0 -1
  201. package/dist/lib/workflows-interface-contracts.d.ts +0 -24
  202. package/dist/lib/workflows-interface-contracts.d.ts.map +0 -1
  203. package/dist/lib/workflows-interface-contracts.js +0 -304
  204. package/dist/lib/workflows-interface-contracts.js.map +0 -1
  205. package/dist/lib/workflows-interface.d.ts +0 -72
  206. package/dist/lib/workflows-interface.d.ts.map +0 -1
  207. package/dist/lib/workflows-interface.js +0 -377
  208. package/dist/lib/workflows-interface.js.map +0 -1
  209. package/dist/lib/workflows-kb.d.ts +0 -50
  210. package/dist/lib/workflows-kb.d.ts.map +0 -1
  211. package/dist/lib/workflows-kb.js.map +0 -1
  212. package/skills/interface/analyze/SKILL.md +0 -191
  213. package/skills/interface/compile/SKILL.md +0 -152
  214. package/skills/interface/compile/references/output-format.md +0 -48
  215. package/skills/interface/create/SKILL.md +0 -87
  216. package/skills/interface/create/references/compile-plan-format.md +0 -109
  217. package/skills/interface/create/references/workflows.md +0 -35
  218. package/skills/interface/query/SKILL.md +0 -48
  219. package/skills/interface/retrieve/SKILL.md +0 -133
  220. package/skills/knowledge-base/compile/SKILL.md +0 -196
  221. package/skills/knowledge-base/compile/references/output-format.md +0 -48
  222. package/skills/knowledge-base/compile/references/stage-claims.md +0 -60
  223. package/skills/knowledge-base/compile/references/stage-entities.md +0 -46
  224. package/skills/knowledge-base/query/SKILL.md +0 -45
  225. package/skills/knowledge-base/summarize/SKILL.md +0 -152
  226. package/templates/interface/README.md +0 -159
  227. package/templates/interface/interfaces.md +0 -102
  228. package/templates/knowledge-base/README.md +0 -137
  229. package/templates/knowledge-base/interfignore +0 -19
  230. package/templates/knowledge-base/registry.md +0 -118
  231. package/templates/workflow-package/README.md +0 -16
  232. package/templates/workflow-package/create/SKILL.md +0 -8
  233. package/templates/workflow-package/interface-query/SKILL.md +0 -29
  234. package/templates/workflow-package/interface-stage/SKILL.md +0 -13
  235. package/templates/workflow-package/knowledge-base-query/SKILL.md +0 -36
  236. package/templates/workflow-package/knowledge-base-stage/SKILL.md +0 -13
  237. package/templates/workflow-starters/interface/interf/README.md +0 -13
  238. package/templates/workflow-starters/interface/interf/create/SKILL.md +0 -15
  239. package/templates/workflow-starters/knowledge-base/interf/README.md +0 -13
  240. package/templates/workflow-starters/knowledge-base/karpathy/README.md +0 -13
@@ -1,18 +1,9 @@
1
1
  import type { CommandModule } from "yargs";
2
2
  import type { WorkflowExecutionProfile } from "../lib/executors.js";
3
- import type { SourceInterfaceConfig } from "../lib/schema.js";
4
- export { type WorkflowWizardPrompts, buildKnowledgeBaseWorkflowOptions, buildInterfaceWorkflowOptions, buildStandaloneInterfaceWorkflowOptions, selectWorkflowTargetType, formatWorkflowLabel, CREATE_NEW_WORKFLOW_VALUE, chooseKnowledgeBaseWorkflow, chooseInterfaceWorkflow, createWorkflowWizard, createKnowledgeBaseWorkflowWizard, createInterfaceWorkflowWizard, } from "./create-workflow-wizard.js";
5
3
  export declare const createCommand: CommandModule;
6
- export declare function createKnowledgeBaseWizard(options?: {
4
+ export declare function createWorkspaceWizard(options?: {
7
5
  intro?: boolean;
8
- skipSkillInstall?: boolean;
9
6
  executionProfile?: WorkflowExecutionProfile;
10
7
  }): Promise<void>;
11
- export declare function createInterfaceWizard(options?: {
12
- intro?: boolean;
13
- knowledgeBasePathOverride?: string;
14
- knowledgeBaseNameOverride?: string;
15
- executionProfile?: WorkflowExecutionProfile;
16
- suggestedInterface?: SourceInterfaceConfig;
17
- }): Promise<void>;
8
+ export { type WorkflowWizardPrompts, formatWorkflowLabel, chooseWorkspaceWorkflow, createWorkflowWizard, createWorkspaceWorkflowWizard, } from "./create-workflow-wizard.js";
18
9
  //# sourceMappingURL=create.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"create.d.ts","sourceRoot":"","sources":["../../src/commands/create.ts"],"names":[],"mappings":"AA+BA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AAO3C,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,qBAAqB,CAAC;AAKpE,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,kBAAkB,CAAC;AAQ9D,OAAO,EACL,KAAK,qBAAqB,EAC1B,iCAAiC,EACjC,6BAA6B,EAC7B,uCAAuC,EACvC,wBAAwB,EACxB,mBAAmB,EACnB,yBAAyB,EACzB,2BAA2B,EAC3B,uBAAuB,EACvB,oBAAoB,EACpB,iCAAiC,EACjC,6BAA6B,GAC9B,MAAM,6BAA6B,CAAC;AAwErC,eAAO,MAAM,aAAa,EAAE,aA8D3B,CAAC;AAEF,wBAAsB,yBAAyB,CAC7C,OAAO,GAAE;IACP,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,gBAAgB,CAAC,EAAE,wBAAwB,CAAC;CACxC,iBA4JP;AAED,wBAAsB,qBAAqB,CACzC,OAAO,GAAE;IACP,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,yBAAyB,CAAC,EAAE,MAAM,CAAC;IACnC,yBAAyB,CAAC,EAAE,MAAM,CAAC;IACnC,gBAAgB,CAAC,EAAE,wBAAwB,CAAC;IAC5C,kBAAkB,CAAC,EAAE,qBAAqB,CAAC;CACvC,iBA+QP"}
1
+ {"version":3,"file":"create.d.ts","sourceRoot":"","sources":["../../src/commands/create.ts"],"names":[],"mappings":"AAiBA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AAO3C,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,qBAAqB,CAAC;AAyCpE,eAAO,MAAM,aAAa,EAAE,aAmC3B,CAAC;AAEF,wBAAsB,qBAAqB,CACzC,OAAO,GAAE;IACP,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,gBAAgB,CAAC,EAAE,wBAAwB,CAAC;CACxC,iBAmFP;AAkCD,OAAO,EACL,KAAK,qBAAqB,EAC1B,mBAAmB,EACnB,uBAAuB,EACvB,oBAAoB,EACpB,6BAA6B,GAC9B,MAAM,6BAA6B,CAAC"}
@@ -1,29 +1,20 @@
1
1
  import chalk from "chalk";
2
2
  import { basename } from "node:path";
3
3
  import * as p from "@clack/prompts";
4
- import { detectInterf, listKnowledgeBasesForSourceFolder, readInterfConfig, resolveInterfaceKnowledgeBasePath, resolveKnowledgeBaseSourcePath, writeInterfaceCompilePlanTemplate, } from "../lib/interf.js";
5
- import { discoverSourceFiles } from "../lib/discovery.js";
6
- import { addKnowledgeBaseWithWorkflow, addInterface, loadRegistry } from "../lib/registry.js";
4
+ import { detectInterf, defaultWorkspaceNameForSource, listWorkspacesForSourceFolder, } from "../lib/interf.js";
5
+ import { addWorkspace, } from "../lib/registry.js";
7
6
  import { resolveLocalExecutor } from "../lib/executors.js";
8
- import { formatInterfaceWorkflowStageStep, formatKnowledgeBaseWorkflowStageStep, listInterfaceWorkflowChoices, listKnowledgeBaseInterfaceWorkflowChoices, resolveInterfaceWorkflowFromConfig, resolveKnowledgeBaseWorkflowFromConfig, } from "../lib/workflow-definitions.js";
9
- import { createKnowledgeBase, createInterface, compileKnowledgeBase as compileKnowledgeBaseWorkflow, compileInterface as compileInterfaceWorkflow, } from "../lib/workflows.js";
7
+ import { createWorkspace, compileWorkspace, } from "../lib/workflows.js";
10
8
  import { slugify } from "../lib/util.js";
11
9
  import { addExecutionProfileOptions, executionProfileFromArgv, formatWorkflowExecutionProfile, } from "../lib/execution-profile.js";
12
- import { loadSourceFolderConfig, upsertSourceFolderInterfaceConfig, } from "../lib/source-config.js";
13
- import { promptSingleInterfaceConfig } from "./source-config-wizard.js";
14
- import { chooseKnowledgeBaseWorkflow, chooseInterfaceWorkflow, createWorkflowWizard, } from "./create-workflow-wizard.js";
15
- export { buildKnowledgeBaseWorkflowOptions, buildInterfaceWorkflowOptions, buildStandaloneInterfaceWorkflowOptions, selectWorkflowTargetType, formatWorkflowLabel, CREATE_NEW_WORKFLOW_VALUE, chooseKnowledgeBaseWorkflow, chooseInterfaceWorkflow, createWorkflowWizard, createKnowledgeBaseWorkflowWizard, createInterfaceWorkflowWizard, } from "./create-workflow-wizard.js";
10
+ import { chooseWorkspaceWorkflow, createWorkflowWizard, } from "./create-workflow-wizard.js";
16
11
  function normalizeCreateTarget(value) {
17
12
  if (!value)
18
13
  return null;
19
14
  switch (value) {
20
- case "knowledge-base":
21
- case "knowledgebase":
22
- case "base":
23
- case "kb":
24
- return "knowledge-base";
25
- case "interface":
26
- return "interface";
15
+ case "workspace":
16
+ case "ws":
17
+ return "workspace";
27
18
  case "workflow":
28
19
  case "wf":
29
20
  return "workflow";
@@ -32,57 +23,28 @@ function normalizeCreateTarget(value) {
32
23
  }
33
24
  }
34
25
  async function selectCreateTarget() {
35
- const detected = detectInterf(process.cwd());
36
- const registry = loadRegistry();
37
- if (!detected && registry.knowledgeBases.length === 0) {
38
- return "knowledge-base";
39
- }
40
- const recommendInterface = Boolean(detected);
41
26
  return p.select({
42
27
  message: "Create what?",
43
- options: recommendInterface
44
- ? [
45
- {
46
- value: "interface",
47
- label: "Interface (Recommended)",
48
- hint: "Create a task-specific interface on top of an existing knowledge base",
49
- },
50
- {
51
- value: "knowledge-base",
52
- label: "Knowledge Base",
53
- hint: "Attach the current folder as a new local knowledge base",
54
- },
55
- {
56
- value: "workflow",
57
- label: "Workflow",
58
- hint: "Create a reusable workflow package for knowledge bases or interfaces",
59
- },
60
- ]
61
- : [
62
- {
63
- value: "knowledge-base",
64
- label: "Knowledge Base (Recommended)",
65
- hint: "Attach the current folder as a new local knowledge base",
66
- },
67
- {
68
- value: "interface",
69
- label: "Interface",
70
- hint: "Create an interface from a knowledge base already in your registry",
71
- },
72
- {
73
- value: "workflow",
74
- label: "Workflow",
75
- hint: "Create a reusable workflow package for knowledge bases or interfaces",
76
- },
77
- ],
28
+ options: [
29
+ {
30
+ value: "workspace",
31
+ label: "Workspace (Recommended)",
32
+ hint: "Create a compiled workspace for this folder",
33
+ },
34
+ {
35
+ value: "workflow",
36
+ label: "Workflow",
37
+ hint: "Create a reusable local workflow package",
38
+ },
39
+ ],
78
40
  });
79
41
  }
80
42
  export const createCommand = {
81
43
  command: "create [type]",
82
- describe: "Create a knowledge base, interface, or reusable workflow, or choose when omitted",
44
+ describe: "Create a compiled workspace or reusable workflow",
83
45
  builder: (yargs) => addExecutionProfileOptions(yargs.positional("type", {
84
46
  type: "string",
85
- describe: "Type to create (`knowledge-base`, `interface`, or `workflow`)",
47
+ describe: "Type to create (`workspace` or `workflow`)",
86
48
  default: undefined,
87
49
  })),
88
50
  handler: async (argv) => {
@@ -100,456 +62,105 @@ export const createCommand = {
100
62
  return;
101
63
  type = selected;
102
64
  }
103
- if (type === "knowledge-base") {
104
- await createKnowledgeBaseWizard({ executionProfile });
105
- return;
106
- }
107
65
  if (type === "workflow") {
108
- const cwd = process.cwd();
109
- const detected = detectInterf(cwd);
110
- let sourcePath = cwd;
111
- let knowledgeBasePath;
112
- if (detected?.config.type === "knowledge-base") {
113
- knowledgeBasePath = detected.path;
114
- sourcePath = resolveKnowledgeBaseSourcePath(detected.path);
115
- }
116
- else if (detected?.config.type === "interface") {
117
- const parentKnowledgeBasePath = resolveInterfaceKnowledgeBasePath(detected.path);
118
- if (parentKnowledgeBasePath) {
119
- knowledgeBasePath = parentKnowledgeBasePath;
120
- sourcePath = resolveKnowledgeBaseSourcePath(parentKnowledgeBasePath);
121
- }
122
- }
123
- else {
124
- const localKnowledgeBases = listKnowledgeBasesForSourceFolder(cwd);
125
- if (localKnowledgeBases.length === 1) {
126
- const localKnowledgeBase = localKnowledgeBases[0];
127
- knowledgeBasePath = localKnowledgeBase.path;
128
- sourcePath = resolveKnowledgeBaseSourcePath(localKnowledgeBase.path);
129
- }
130
- }
131
- await createWorkflowWizard({ sourcePath, knowledgeBasePath });
66
+ await createWorkflowWizard({ sourcePath: process.cwd() });
132
67
  return;
133
68
  }
134
- await createInterfaceWizard({ executionProfile });
69
+ await createWorkspaceWizard({ executionProfile });
135
70
  },
136
71
  };
137
- export async function createKnowledgeBaseWizard(options = {}) {
72
+ export async function createWorkspaceWizard(options = {}) {
138
73
  if (options.intro !== false) {
139
- p.intro(chalk.bold("Create a knowledge base"));
74
+ p.intro(chalk.bold("Create a workspace"));
140
75
  }
141
- p.log.info("Interf prepares a shared workspace beside this folder for your agent.");
142
- p.log.info("In Interf, that shared workspace is called a knowledge base. Your raw files stay where they are; the knowledge base lives under `./interf/<name>/`.");
143
76
  const cwd = process.cwd();
144
- const currentConfig = readInterfConfig(cwd);
145
- if (currentConfig) {
77
+ const detected = detectInterf(cwd);
78
+ if (detected) {
146
79
  process.exitCode = 1;
147
- p.log.error("You are already inside an Interf knowledge base or interface.");
80
+ p.log.error("You are already inside a compiled workspace.");
148
81
  return;
149
82
  }
150
- const existingKnowledgeBases = listKnowledgeBasesForSourceFolder(cwd);
151
- if (existingKnowledgeBases.length > 0) {
152
- p.log.info(`This source folder already has ${existingKnowledgeBases.length} knowledge base${existingKnowledgeBases.length === 1 ? "" : "s"}. Creating another is fine when you want to compare workflows on the same data.`);
83
+ const existing = listWorkspacesForSourceFolder(cwd);
84
+ if (existing.length > 0) {
85
+ p.log.info(`This folder already has ${existing.length} workspace${existing.length === 1 ? "" : "s"}. Creating another is fine when you want to compare workflows or keep separate compiled surfaces.`);
153
86
  }
154
- const defaultName = slugify(basename(cwd));
87
+ p.log.info("Interf builds a compiled workspace on top of your raw files. Your files stay where they are and stay the source of truth.");
88
+ const defaultName = slugify(defaultWorkspaceNameForSource(cwd) || basename(cwd));
155
89
  const rawName = await p.text({
156
- message: "Knowledge base name?",
157
- placeholder: defaultName || "my-knowledge-base",
90
+ message: "Workspace name?",
91
+ placeholder: defaultName || "my-workspace",
158
92
  initialValue: defaultName,
159
- validate: (v) => (v.length === 0 ? "Name is required" : undefined),
93
+ validate: (value) => (value.trim().length === 0 ? "Name is required" : undefined),
160
94
  });
161
95
  if (p.isCancel(rawName))
162
96
  return;
163
97
  const name = slugify(rawName);
164
98
  if (name !== rawName) {
165
- p.log.info(`Knowledge base name: ${name}`);
99
+ p.log.info(`Workspace name: ${name}`);
166
100
  }
167
- const workflowChoice = await chooseKnowledgeBaseWorkflow(cwd);
101
+ const about = await p.text({
102
+ message: "What is this workspace for? (optional)",
103
+ placeholder: "Quarterly results workspace for finance reporting and strategy questions",
104
+ });
105
+ if (p.isCancel(about))
106
+ return;
107
+ const workflowChoice = await chooseWorkspaceWorkflow(cwd);
168
108
  if (p.isCancel(workflowChoice))
169
109
  return;
170
- const selectedWorkflow = workflowChoice;
171
- const s = p.spinner();
172
- if (!options.skipSkillInstall) {
173
- p.log.info("Interf uses bundled stage instructions and local workflow docs by default. Run `interf init` to choose a default executor for compile and benchmark runs.");
174
- }
175
- // Create
176
- s.start("Creating knowledge base...");
177
- let knowledgeBasePath;
110
+ const workflowId = workflowChoice;
111
+ const spinner = p.spinner();
112
+ spinner.start("Creating workspace...");
113
+ let workspacePath = "";
178
114
  try {
179
- knowledgeBasePath = createKnowledgeBase(name, cwd, selectedWorkflow);
115
+ workspacePath = createWorkspace(name, cwd, workflowId, String(about).trim().length > 0 ? String(about).trim() : undefined);
116
+ addWorkspace(name, workspacePath, workflowId);
117
+ spinner.stop("Workspace created.");
180
118
  }
181
119
  catch (error) {
182
- s.stop("Create failed");
120
+ spinner.stop("Workspace creation failed.");
183
121
  process.exitCode = 1;
184
- p.log.error(error instanceof Error ? error.message : "Failed to create knowledge base.");
122
+ p.log.error(error instanceof Error ? error.message : String(error));
185
123
  return;
186
124
  }
187
- addKnowledgeBaseWithWorkflow(name, knowledgeBasePath, selectedWorkflow);
188
- s.stop(`Knowledge base "${name}" created`);
189
- const createdKnowledgeBaseConfig = readInterfConfig(knowledgeBasePath);
190
- if (createdKnowledgeBaseConfig?.workflow) {
191
- p.log.info(`Workflow: ${createdKnowledgeBaseConfig.workflow}`);
192
- }
193
- // Discovery preflight
194
- const discovery = discoverSourceFiles(cwd, knowledgeBasePath);
195
- p.log.info(`Found ${discovery.totalCount} source files ready to summarize and compile.`);
196
- if (discovery.ignoredCount > 0) {
197
- p.log.info("This count already excludes Interf files, hidden folders, and anything matched by `.interfignore`.");
198
- }
199
- p.log.info("Interf writes a normal folder you can open in Obsidian or any markdown app.");
200
- const buildNow = await p.confirm({
201
- message: "Compile this knowledge base now?",
125
+ const compileNow = await p.confirm({
126
+ message: "Build the compiled workspace now?",
202
127
  initialValue: true,
203
128
  });
204
- if (p.isCancel(buildNow))
205
- return;
206
- if (buildNow) {
207
- const { executor, error } = resolveLocalExecutor({ executionProfile: options.executionProfile });
208
- if (!executor) {
209
- process.exitCode = 1;
210
- p.log.warn(error ?? "No local executor detected.");
211
- p.outro([
212
- `Knowledge base: ${knowledgeBasePath}`,
213
- `Next: run \`interf compile\` from ${cwd} once an executor is configured.`,
214
- ].join("\n"));
215
- return;
216
- }
217
- const profileLabel = formatWorkflowExecutionProfile(executor.executionProfile);
218
- if (profileLabel) {
219
- p.log.info(`Execution profile: ${profileLabel}`);
220
- }
221
- const compiled = await runKnowledgeBaseCompile(executor, knowledgeBasePath);
222
- if (compiled) {
223
- const configuredInterface = loadSourceFolderConfig(cwd)?.interfaces?.[0];
224
- const createFirstInterface = await p.confirm({
225
- message: configuredInterface
226
- ? `Create the configured interface "${configuredInterface.name}" now?`
227
- : "Create a first interface now?",
228
- initialValue: Boolean(configuredInterface),
229
- });
230
- if (p.isCancel(createFirstInterface))
231
- return;
232
- if (createFirstInterface) {
233
- await createInterfaceWizard({
234
- intro: false,
235
- knowledgeBasePathOverride: knowledgeBasePath,
236
- knowledgeBaseNameOverride: name,
237
- executionProfile: options.executionProfile,
238
- suggestedInterface: configuredInterface
239
- ? { name: configuredInterface.name, about: configuredInterface.about }
240
- : undefined,
241
- });
242
- return;
243
- }
244
- p.outro([
245
- `Knowledge base ready: ${knowledgeBasePath}`,
246
- `CLI control plane: ${cwd}`,
247
- `Workspace entrypoint: ${knowledgeBasePath}`,
248
- `Open this folder to inspect the compiled workspace: ${knowledgeBasePath}`,
249
- `If you use Obsidian, open this folder as the vault to browse the graph.`,
250
- `Next: \`interf create interface\` from ${cwd} when you want a focused interface for a specific job.`,
251
- ].join("\n"));
252
- return;
253
- }
254
- p.outro([
255
- `Knowledge base created: ${knowledgeBasePath}`,
256
- `The compile did not complete cleanly.`,
257
- `Next: rerun \`cd ${knowledgeBasePath} && interf compile\` after fixing the reported issue, or run \`interf compile\` from ${cwd}.`,
258
- ].join("\n"));
259
- process.exitCode = 1;
129
+ if (p.isCancel(compileNow) || !compileNow) {
130
+ p.outro(`Next: cd ${workspacePath}\n interf compile`);
260
131
  return;
261
132
  }
262
- p.outro([
263
- `Knowledge base created: ${knowledgeBasePath}`,
264
- `CLI control plane: ${cwd}`,
265
- `Workspace entrypoint: ${knowledgeBasePath}`,
266
- `Open this folder to inspect the compiled workspace: ${knowledgeBasePath}`,
267
- `Next: run \`cd ${knowledgeBasePath} && interf compile\`, or run \`interf compile\` from ${cwd}.`,
268
- ].join("\n"));
269
- }
270
- export async function createInterfaceWizard(options = {}) {
271
- if (options.intro !== false) {
272
- p.intro(chalk.bold("Create an interface"));
273
- }
274
- p.log.info("Start with the main compiled workspace first.");
275
- p.log.info("An interface is a second compiled workspace for one recurring job on top of the main compiled workspace.");
276
- p.log.info("Use it when one shared workspace is not enough and your agent needs narrower retrieval, job-specific outputs, or extra task-specific evals.");
277
- // Find the knowledge-base — either cwd has interf/ or we look up registry
278
- const cwd = process.cwd();
279
- const detected = detectInterf(cwd);
280
- const localKnowledgeBases = listKnowledgeBasesForSourceFolder(cwd);
281
- let knowledgeBasePath;
282
- let connectedKnowledgeBaseName;
283
- if (options.knowledgeBasePathOverride && options.knowledgeBaseNameOverride) {
284
- knowledgeBasePath = options.knowledgeBasePathOverride;
285
- connectedKnowledgeBaseName = options.knowledgeBaseNameOverride;
286
- }
287
- else if (detected && detected.config.type === "knowledge-base") {
288
- const useCurrentKnowledgeBase = await p.confirm({
289
- message: `Use the current knowledge base "${detected.config.name}"?`,
290
- initialValue: true,
291
- });
292
- if (p.isCancel(useCurrentKnowledgeBase))
293
- return;
294
- if (useCurrentKnowledgeBase) {
295
- knowledgeBasePath = detected.path;
296
- connectedKnowledgeBaseName = detected.config.name;
297
- }
298
- else {
299
- const availableKnowledgeBases = [
300
- ...localKnowledgeBases
301
- .filter((knowledgeBase) => knowledgeBase.path !== detected.path)
302
- .map((knowledgeBase) => ({
303
- path: knowledgeBase.path,
304
- name: knowledgeBase.config.name,
305
- label: `${knowledgeBase.config.name} (${knowledgeBase.path})`,
306
- })),
307
- ...loadRegistry().knowledgeBases
308
- .filter((knowledgeBase) => knowledgeBase.path !== detected.path)
309
- .map((knowledgeBase) => ({
310
- path: knowledgeBase.path,
311
- name: knowledgeBase.name,
312
- label: `${knowledgeBase.name} (${knowledgeBase.path})`,
313
- })),
314
- ];
315
- const uniqueKnowledgeBases = Array.from(new Map(availableKnowledgeBases.map((knowledgeBase) => [knowledgeBase.path, knowledgeBase])).values());
316
- if (uniqueKnowledgeBases.length === 0) {
317
- process.exitCode = 1;
318
- p.log.error("No other knowledge bases found. Use the current one or create another knowledge base first.");
319
- return;
320
- }
321
- const choice = await p.select({
322
- message: "Which knowledge base?",
323
- options: uniqueKnowledgeBases.map((knowledgeBase) => ({
324
- value: knowledgeBase.path,
325
- label: knowledgeBase.label,
326
- })),
327
- });
328
- if (p.isCancel(choice))
329
- return;
330
- const knowledgeBase = uniqueKnowledgeBases.find((entry) => entry.path === choice);
331
- knowledgeBasePath = knowledgeBase.path;
332
- connectedKnowledgeBaseName = knowledgeBase.name;
333
- }
334
- }
335
- else if (localKnowledgeBases.length > 0) {
336
- const choice = await p.select({
337
- message: "Which local knowledge base?",
338
- options: localKnowledgeBases.map((knowledgeBase) => ({
339
- value: knowledgeBase.path,
340
- label: `${knowledgeBase.config.name} (${knowledgeBase.path})`,
341
- })),
342
- });
343
- if (p.isCancel(choice))
344
- return;
345
- const knowledgeBase = localKnowledgeBases.find((entry) => entry.path === choice);
346
- knowledgeBasePath = knowledgeBase.path;
347
- connectedKnowledgeBaseName = knowledgeBase.config.name;
348
- }
349
- else {
350
- const reg = loadRegistry();
351
- if (reg.knowledgeBases.length === 0) {
352
- process.exitCode = 1;
353
- p.log.error("No knowledge bases found. Create one first: interf create knowledge-base");
354
- return;
355
- }
356
- const choice = await p.select({
357
- message: "Which knowledge base?",
358
- options: reg.knowledgeBases.map((knowledgeBase) => ({
359
- value: knowledgeBase.path,
360
- label: `${knowledgeBase.name} (${knowledgeBase.path})`,
361
- })),
362
- });
363
- if (p.isCancel(choice))
364
- return;
365
- const knowledgeBase = reg.knowledgeBases.find((entry) => entry.path === choice);
366
- knowledgeBasePath = knowledgeBase.path;
367
- connectedKnowledgeBaseName = knowledgeBase.name;
368
- }
369
- const sourcePath = resolveKnowledgeBaseSourcePath(knowledgeBasePath);
370
- const configuredInterfaces = loadSourceFolderConfig(sourcePath)?.interfaces ?? [];
371
- let interfaceConfig = null;
372
- let createdFromConfigWizard = false;
373
- if (options.suggestedInterface?.name) {
374
- interfaceConfig =
375
- configuredInterfaces.find((entry) => entry.name === options.suggestedInterface?.name) ??
376
- options.suggestedInterface;
377
- p.log.info(`Using configured interface "${interfaceConfig.name}" from ${sourcePath}/interf.config.json.`);
378
- p.log.info(`Interface purpose: ${interfaceConfig.about}`);
379
- }
380
- else if (configuredInterfaces.length === 1) {
381
- interfaceConfig = configuredInterfaces[0];
382
- p.log.info(`Using configured interface "${interfaceConfig.name}" from ${sourcePath}/interf.config.json.`);
383
- p.log.info(`Interface purpose: ${interfaceConfig.about}`);
384
- }
385
- else if (configuredInterfaces.length > 1) {
386
- const choice = await p.select({
387
- message: "Which configured interface?",
388
- options: [
389
- ...configuredInterfaces.map((entry) => ({
390
- value: entry.name,
391
- label: entry.name,
392
- hint: entry.about,
393
- })),
394
- {
395
- value: "__create_new__",
396
- label: "Create new interface",
397
- hint: "Add a new interface to interf.config.json first",
398
- },
399
- ],
400
- });
401
- if (p.isCancel(choice))
402
- return;
403
- if (choice !== "__create_new__") {
404
- interfaceConfig = configuredInterfaces.find((entry) => entry.name === choice);
405
- p.log.info(`Using configured interface "${interfaceConfig.name}" from ${sourcePath}/interf.config.json.`);
406
- p.log.info(`Interface purpose: ${interfaceConfig.about}`);
407
- }
408
- }
409
- if (!interfaceConfig) {
410
- interfaceConfig = await promptSingleInterfaceConfig();
411
- if (!interfaceConfig)
412
- return;
413
- upsertSourceFolderInterfaceConfig(sourcePath, interfaceConfig);
414
- createdFromConfigWizard = true;
415
- p.log.info(`Saved interface "${interfaceConfig.name}" to ${sourcePath}/interf.config.json.`);
416
- }
417
- const name = interfaceConfig.name;
418
- const workflowChoices = Array.from(new Map([
419
- ...listKnowledgeBaseInterfaceWorkflowChoices(knowledgeBasePath),
420
- ...listInterfaceWorkflowChoices(sourcePath),
421
- ].map((option) => [option.id, option])).values());
422
- let selectedWorkflow;
423
- if (workflowChoices.length === 1) {
424
- selectedWorkflow = workflowChoices[0].id;
425
- p.log.info(`Workflow: ${workflowChoices[0].label}`);
426
- }
427
- else {
428
- const workflow = await chooseInterfaceWorkflow(knowledgeBasePath);
429
- if (p.isCancel(workflow))
430
- return;
431
- selectedWorkflow = workflow;
432
- }
433
- const workflowInfo = workflowChoices.find((option) => option.id === selectedWorkflow);
434
- const interfaceStageSequence = workflowInfo.stages.map((stage) => stage.label).join(" -> ");
435
- p.log.info(`Interface workflow = the default ${interfaceStageSequence} method for this interface. You can edit it later in \`workflow/\` or create your own saved workflow.`);
436
- p.log.info(`${workflowInfo.label}: ${workflowInfo.hint}`);
437
133
  const { executor, error } = resolveLocalExecutor({ executionProfile: options.executionProfile });
438
134
  if (!executor) {
439
135
  process.exitCode = 1;
440
- p.log.error(error ?? "No coding agent detected. Install Claude Code or Codex to create interfaces.");
136
+ p.log.error(error ?? "No coding agent detected.");
441
137
  return;
442
138
  }
139
+ await compileWorkspaceAfterCreate(executor, workspacePath);
140
+ }
141
+ async function compileWorkspaceAfterCreate(executor, workspacePath) {
142
+ console.log();
443
143
  const profileLabel = formatWorkflowExecutionProfile(executor.executionProfile);
444
144
  if (profileLabel) {
445
- p.log.info(`Execution profile: ${profileLabel}`);
446
- }
447
- let dirPath;
448
- try {
449
- dirPath = createInterface(name, knowledgeBasePath, connectedKnowledgeBaseName, selectedWorkflow);
450
- }
451
- catch (error) {
452
- process.exitCode = 1;
453
- p.log.error(error instanceof Error ? error.message : "Failed to create interface scaffold.");
454
- return;
455
- }
456
- p.log.info(`Created interface scaffold at ${dirPath}`);
457
- p.log.info(`This interface is for: ${interfaceConfig.about.trim()}`);
458
- p.log.info("When you compile it, Interf narrows retrieval and writes outputs for that recurring job.");
459
- if (createdFromConfigWizard) {
460
- p.log.info("The interface config is now the source of truth. This command used it to create the scaffold.");
461
- }
462
- const createdInterfaceConfig = readInterfConfig(dirPath);
463
- if (createdInterfaceConfig?.workflow) {
464
- p.log.info(`Workflow: ${createdInterfaceConfig.workflow}`);
465
- }
466
- writeInterfaceCompilePlanTemplate(dirPath, {
467
- workflowId: selectedWorkflow,
468
- sourcePath,
469
- interfaceName: name,
470
- useCase: interfaceConfig.about.trim(),
471
- });
472
- addInterface(name, dirPath, connectedKnowledgeBaseName, knowledgeBasePath, selectedWorkflow);
473
- const buildNow = await p.confirm({
474
- message: "Compile this interface now?",
475
- initialValue: true,
476
- });
477
- if (p.isCancel(buildNow))
478
- return;
479
- if (buildNow) {
480
- const built = await runInterfaceCompile(executor, dirPath);
481
- if (built) {
482
- p.outro([
483
- `Interface ready: ${dirPath}`,
484
- `CLI control plane: ${sourcePath}`,
485
- `Workspace entrypoint: ${dirPath}`,
486
- `Open the main workspace here: ${knowledgeBasePath}`,
487
- `Open the interface here: ${dirPath}`,
488
- `If you use Obsidian, open the knowledge-base folder as the vault so interface links resolve cleanly.`,
489
- ].join("\n"));
490
- return;
491
- }
492
- p.outro([
493
- `Interface created: ${dirPath}`,
494
- `The compile did not complete cleanly.`,
495
- `Next: rerun \`cd ${dirPath} && interf compile\` after fixing the reported issue, or run \`interf compile\` from the source folder.`,
496
- ].join("\n"));
497
- process.exitCode = 1;
498
- return;
145
+ console.log(chalk.dim(` Execution profile: ${profileLabel}`));
146
+ console.log();
499
147
  }
500
- p.outro([
501
- `Interface created: ${dirPath}`,
502
- `CLI control plane: ${sourcePath}`,
503
- `Workspace entrypoint: ${dirPath}`,
504
- `Open the interface here: ${dirPath}`,
505
- `If you use Obsidian, open the knowledge-base folder as the vault: ${knowledgeBasePath}`,
506
- `Next: run \`cd ${dirPath} && interf compile\`, or run \`interf compile\` from ${sourcePath}.`,
507
- ].join("\n"));
508
- }
509
- function createWizardReporter() {
510
- return {
148
+ const reporter = {
511
149
  line: (message) => console.log(chalk.dim(` ${message}`)),
512
150
  blankLine: () => console.log(),
513
151
  };
514
- }
515
- async function runKnowledgeBaseCompile(executor, knowledgeBasePath) {
516
- console.log();
517
- console.log(chalk.bold(" Compiling knowledge base..."));
518
- console.log();
519
- const result = await compileKnowledgeBaseWorkflow({
152
+ const result = await compileWorkspace({
520
153
  executor,
521
- knowledgeBasePath,
522
- reporter: createWizardReporter(),
154
+ workspacePath,
155
+ reporter,
523
156
  });
524
157
  if (!result.ok) {
525
158
  process.exitCode = 1;
526
- const workflowId = resolveKnowledgeBaseWorkflowFromConfig(readInterfConfig(knowledgeBasePath));
527
- const failedStage = formatKnowledgeBaseWorkflowStageStep(workflowId, result.failedStage ?? "compile", { workspacePath: knowledgeBasePath });
528
- console.log(chalk.red(` ${failedStage} failed.`));
529
- return false;
530
- }
531
- console.log();
532
- console.log(chalk.green(" ✓ Knowledge base ready."));
533
- return true;
534
- }
535
- async function runInterfaceCompile(executor, interfacePath) {
536
- console.log();
537
- console.log(chalk.bold(" Compiling interface..."));
538
- console.log();
539
- const result = await compileInterfaceWorkflow({
540
- executor,
541
- knowledgeBasePath: interfacePath,
542
- reporter: createWizardReporter(),
543
- });
544
- if (!result.ok) {
545
- process.exitCode = 1;
546
- const workflowId = resolveInterfaceWorkflowFromConfig(readInterfConfig(interfacePath));
547
- const failedStage = formatInterfaceWorkflowStageStep(workflowId, result.failedStage ?? "compile", { workspacePath: interfacePath });
548
- console.log(chalk.red(` ${failedStage} failed.`));
549
- return false;
159
+ console.log(chalk.red(" Workspace compile failed."));
160
+ return;
550
161
  }
551
162
  console.log();
552
- console.log(chalk.green(" ✓ Interface ready."));
553
- return true;
163
+ console.log(chalk.green(" ✓ Compiled workspace ready."));
554
164
  }
165
+ export { formatWorkflowLabel, chooseWorkspaceWorkflow, createWorkflowWizard, createWorkspaceWorkflowWizard, } from "./create-workflow-wizard.js";
555
166
  //# sourceMappingURL=create.js.map