openfox 2.0.0-beta.0 → 2.0.0-beta.2

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.
@@ -193,7 +193,7 @@ async function runCli(options) {
193
193
  if (!configExists) {
194
194
  await runNetworkSetup(mode);
195
195
  }
196
- const { runServe } = await import("./serve-FGPHMDOC.js");
196
+ const { runServe } = await import("./serve-WB62HFNJ.js");
197
197
  const serveOptions = { mode };
198
198
  if (values.port) serveOptions.port = parseInt(values.port);
199
199
  if (values["no-browser"] === true) serveOptions.openBrowser = false;
@@ -205,4 +205,4 @@ async function runCli(options) {
205
205
  export {
206
206
  runCli
207
207
  };
208
- //# sourceMappingURL=chunk-JZQ644DE.js.map
208
+ //# sourceMappingURL=chunk-5M4W3PKD.js.map
@@ -2050,17 +2050,19 @@ function buildReason(metadataEntries) {
2050
2050
  const remaining = entries.filter((e) => e.status !== "passed");
2051
2051
  return `${remaining.length} criteria remaining`;
2052
2052
  }
2053
- async function executeWorkflow(workflow, options) {
2053
+ async function executeWorkflow(workflow, options, subGroup) {
2054
2054
  const { sessionManager, sessionId, llmClient, signal, onMessage } = options;
2055
2055
  const eventStore = getEventStore();
2056
2056
  const startTime = performance.now();
2057
2057
  let iterations = 0;
2058
- let currentStepId = workflow.entryStep;
2058
+ const activeSteps = subGroup ? workflow.steps.filter((s) => s.subGroup === subGroup) : workflow.steps;
2059
+ let currentStepId = subGroup ? activeSteps[0]?.id ?? workflow.entryStep : workflow.entryStep;
2059
2060
  let lastStepOutput = {};
2060
2061
  const firstEntryForStep = /* @__PURE__ */ new Set();
2061
2062
  const messagesBeforeWorkflow = sessionManager.requireSession(sessionId).messages.length;
2063
+ const activeStepIds = new Set(activeSteps.map((s) => s.id));
2062
2064
  const stepsById = /* @__PURE__ */ new Map();
2063
- for (const step of workflow.steps) {
2065
+ for (const step of activeSteps) {
2064
2066
  stepsById.set(step.id, step);
2065
2067
  }
2066
2068
  logger.debug("Workflow executor starting", { sessionId, workflow: workflow.metadata.id });
@@ -2325,7 +2327,9 @@ ${output.slice(0, 1e4)}
2325
2327
  }
2326
2328
  }
2327
2329
  const refreshedSession = sessionManager.requireSession(sessionId);
2328
- const nextStepId = evaluateTransitions(step.transitions, stepOutcome, refreshedSession.metadataEntries);
2330
+ const effectiveTransitions = subGroup ? step.transitions.filter((t) => !t.subGroup || t.subGroup === subGroup) : step.transitions;
2331
+ const rawNextStepId = evaluateTransitions(effectiveTransitions, stepOutcome, refreshedSession.metadataEntries);
2332
+ const nextStepId = subGroup && rawNextStepId !== TERMINAL_DONE && rawNextStepId !== TERMINAL_BLOCKED && !activeStepIds.has(rawNextStepId) ? TERMINAL_DONE : rawNextStepId;
2329
2333
  if (nextStepId === TERMINAL_DONE) {
2330
2334
  sessionManager.setPhase(sessionId, "done");
2331
2335
  const totalTimeSeconds = Math.round((performance.now() - startTime) / 100) / 10;
@@ -2402,8 +2406,12 @@ async function runOrchestrator(options) {
2402
2406
  if (!workflow) {
2403
2407
  throw new Error(`Workflow "${workflowId}" not found`);
2404
2408
  }
2405
- logger.debug("Using workflow executor", { sessionId: options.sessionId, workflow: workflow.metadata.id });
2406
- return executeWorkflow(workflow, options);
2409
+ logger.debug("Using workflow executor", {
2410
+ sessionId: options.sessionId,
2411
+ workflow: workflow.metadata.id,
2412
+ subGroup: options.subGroup
2413
+ });
2414
+ return executeWorkflow(workflow, options, options.subGroup);
2407
2415
  }
2408
2416
 
2409
2417
  // src/server/auth.ts
@@ -3333,6 +3341,7 @@ ${content}` : workflowInfo;
3333
3341
  statsIdentity: statsForSession(sessionId),
3334
3342
  injectBuilderKickoff: !hasUserMessage,
3335
3343
  ...launchPayload?.workflowId ? { workflowId: launchPayload.workflowId } : {},
3344
+ ...launchPayload?.subGroup ? { subGroup: launchPayload.subGroup } : {},
3336
3345
  ...hasUserMessage ? {
3337
3346
  userMessage: {
3338
3347
  content: hasUserContent ? launchPayload.content : "",
@@ -5558,10 +5567,14 @@ function createWorkflowRoutes(configDir, config4, projectDir) {
5558
5567
  if (!Array.isArray(steps) || steps.length === 0) return "Missing required fields: metadata.id, steps";
5559
5568
  return null;
5560
5569
  },
5561
- mapToResponse: (w) => ({
5562
- ...w.metadata,
5563
- startCondition: w.startCondition
5564
- }),
5570
+ mapToResponse: (w) => {
5571
+ const subGroups = [...new Set(w.steps.map((s) => s.subGroup).filter(Boolean))];
5572
+ return {
5573
+ ...w.metadata,
5574
+ startCondition: w.startCondition,
5575
+ subGroups: subGroups.length > 0 ? subGroups : void 0
5576
+ };
5577
+ },
5565
5578
  extraGetData: () => Promise.resolve({ activeWorkflowId: config4.activeWorkflowId ?? "default" }),
5566
5579
  extraRoutes: (router) => {
5567
5580
  router.get("/template-variables", (_req, res) => {
@@ -5735,7 +5748,7 @@ import { Router as Router6 } from "express";
5735
5748
  import { spawn as spawn5 } from "child_process";
5736
5749
 
5737
5750
  // src/constants.ts
5738
- var VERSION = "2.0.0-beta.0";
5751
+ var VERSION = "2.0.0-beta.2";
5739
5752
 
5740
5753
  // src/server/routes/auto-update.ts
5741
5754
  var updateInProgress = false;
@@ -6850,4 +6863,4 @@ export {
6850
6863
  createServerHandle,
6851
6864
  createServer
6852
6865
  };
6853
- //# sourceMappingURL=chunk-CTQ2FS4K.js.map
6866
+ //# sourceMappingURL=chunk-SYUVZOXU.js.map
package/dist/cli/dev.js CHANGED
@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  runCli
4
- } from "../chunk-JZQ644DE.js";
4
+ } from "../chunk-5M4W3PKD.js";
5
5
  import {
6
6
  logger
7
7
  } from "../chunk-K44MW7JJ.js";
package/dist/cli/index.js CHANGED
@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  runCli
4
- } from "../chunk-JZQ644DE.js";
4
+ } from "../chunk-5M4W3PKD.js";
5
5
  import {
6
6
  logger
7
7
  } from "../chunk-K44MW7JJ.js";
package/dist/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "openfox",
3
- "version": "2.0.0-beta.0",
3
+ "version": "2.0.0-beta.2",
4
4
  "description": "Local-LLM-first agentic coding assistant",
5
5
  "type": "module",
6
6
  "bin": {
@@ -6,7 +6,7 @@ import {
6
6
  import {
7
7
  VERSION,
8
8
  createServer
9
- } from "./chunk-CTQ2FS4K.js";
9
+ } from "./chunk-SYUVZOXU.js";
10
10
  import "./chunk-UFY4I643.js";
11
11
  import "./chunk-ALH4KM2Y.js";
12
12
  import "./chunk-PSJIT5LZ.js";
@@ -190,4 +190,4 @@ async function runServe(options) {
190
190
  export {
191
191
  runServe
192
192
  };
193
- //# sourceMappingURL=serve-FGPHMDOC.js.map
193
+ //# sourceMappingURL=serve-WB62HFNJ.js.map
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  createServer,
3
3
  createServerHandle
4
- } from "../chunk-CTQ2FS4K.js";
4
+ } from "../chunk-SYUVZOXU.js";
5
5
  import "../chunk-UFY4I643.js";
6
6
  import "../chunk-ALH4KM2Y.js";
7
7
  import "../chunk-PSJIT5LZ.js";