fifony 0.1.41 → 0.1.42

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.
@@ -1,4 +1,4 @@
1
- const CACHE_VERSION = "1774419722401";
1
+ const CACHE_VERSION = "1774421145935";
2
2
  const CORE_CACHE = `fifony-core-${CACHE_VERSION}`;
3
3
  const ASSET_CACHE = `fifony-assets-${CACHE_VERSION}`;
4
4
  const APP_SHELL_ROUTES = [
@@ -24,20 +24,20 @@ import {
24
24
  startApiServer,
25
25
  syncRuntimeConfigSettings,
26
26
  validateConfig
27
- } from "../chunk-7F2SO6LO.js";
27
+ } from "../chunk-JTKUWIQD.js";
28
28
  import {
29
29
  cleanTerminalWorkspaces,
30
30
  initQueueWorkers,
31
31
  recoverOrphans,
32
32
  recoverState,
33
33
  stopQueueWorkers
34
- } from "../chunk-OJ5DRPWW.js";
34
+ } from "../chunk-RBDBGU2C.js";
35
35
  import {
36
36
  initWebPush
37
37
  } from "../chunk-I2UHVKHS.js";
38
38
  import {
39
39
  computeMetrics
40
- } from "../chunk-EKTVD4JS.js";
40
+ } from "../chunk-H5N7O5NP.js";
41
41
  import {
42
42
  detectAvailableProviders,
43
43
  detectDefaultBranch,
@@ -45,7 +45,7 @@ import {
45
45
  getProviderDefaultCommand,
46
46
  resolveDefaultProvider,
47
47
  setSkipSource
48
- } from "../chunk-LKCD6T6N.js";
48
+ } from "../chunk-NB44PCD2.js";
49
49
  import {
50
50
  debugBoot,
51
51
  fail,
@@ -15,10 +15,10 @@ import {
15
15
  runIssueOnce,
16
16
  runPlanningJob,
17
17
  tryParseJsonOutput
18
- } from "./chunk-7F2SO6LO.js";
19
- import "./chunk-OJ5DRPWW.js";
18
+ } from "./chunk-JTKUWIQD.js";
19
+ import "./chunk-RBDBGU2C.js";
20
20
  import "./chunk-I2UHVKHS.js";
21
- import "./chunk-EKTVD4JS.js";
21
+ import "./chunk-H5N7O5NP.js";
22
22
  import {
23
23
  buildPrompt,
24
24
  buildProviderBasePrompt,
@@ -35,7 +35,7 @@ import {
35
35
  runCommandWithTimeout,
36
36
  runHook,
37
37
  shouldSkipMergePath
38
- } from "./chunk-LKCD6T6N.js";
38
+ } from "./chunk-NB44PCD2.js";
39
39
  import "./chunk-2CVTK5F2.js";
40
40
  import "./chunk-37N5OFHM.js";
41
41
  import "./chunk-DVU3CXWA.js";
@@ -72,4 +72,4 @@ export {
72
72
  shouldSkipMergePath,
73
73
  tryParseJsonOutput
74
74
  };
75
- //# sourceMappingURL=agent-3NXSH3K3.js.map
75
+ //# sourceMappingURL=agent-NNGZEKZH.js.map
@@ -2,7 +2,7 @@ import {
2
2
  computeDiffStats,
3
3
  removeTestWorkspace,
4
4
  syncIssueDiffStatsToStore
5
- } from "./chunk-LKCD6T6N.js";
5
+ } from "./chunk-NB44PCD2.js";
6
6
  import {
7
7
  isoWeek,
8
8
  now
@@ -335,7 +335,7 @@ function emitFsmEvent(issueId, kind, message) {
335
335
  if (kind === "state") {
336
336
  import("./web-push-CRVDJKWR.js").then(({ sendPushToAll, isWebPushReady, SETTING_ID_PUSH_SUBSCRIPTIONS }) => {
337
337
  if (!isWebPushReady()) return;
338
- import("./settings-QSKX6J5K.js").then(({ persistSetting }) => {
338
+ import("./settings-NGY33WQE.js").then(({ persistSetting }) => {
339
339
  sendPushToAll(
340
340
  { title: "fifony", body: message, tag: issueId, url: "/kanban" },
341
341
  async (subs) => {
@@ -891,4 +891,4 @@ export {
891
891
  canTransitionIssue,
892
892
  visualizeStateMachine
893
893
  };
894
- //# sourceMappingURL=chunk-EKTVD4JS.js.map
894
+ //# sourceMappingURL=chunk-H5N7O5NP.js.map
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  enqueue
3
- } from "./chunk-OJ5DRPWW.js";
3
+ } from "./chunk-RBDBGU2C.js";
4
4
  import {
5
5
  SETTING_ID_PUSH_SUBSCRIPTIONS,
6
6
  addSubscription,
@@ -32,7 +32,7 @@ import {
32
32
  snapshotAndClearDirtyEventIds,
33
33
  snapshotAndClearDirtyIssueIds,
34
34
  snapshotAndClearDirtyIssuePlanIds
35
- } from "./chunk-EKTVD4JS.js";
35
+ } from "./chunk-H5N7O5NP.js";
36
36
  import {
37
37
  ADAPTERS,
38
38
  assertIssueHasGitWorktree,
@@ -65,7 +65,7 @@ import {
65
65
  removeTestWorkspace,
66
66
  runCommandWithTimeout,
67
67
  runHook
68
- } from "./chunk-LKCD6T6N.js";
68
+ } from "./chunk-NB44PCD2.js";
69
69
  import {
70
70
  appendFileTail,
71
71
  clamp,
@@ -1895,6 +1895,13 @@ import { join as join6, resolve as resolve2 } from "path";
1895
1895
  // src/agents/catalog.ts
1896
1896
  import { existsSync as existsSync4, mkdirSync as mkdirSync2, readFileSync as readFileSync4, writeFileSync as writeFileSync3 } from "fs";
1897
1897
  import { join as join5 } from "path";
1898
+ function getActiveProviderDirs() {
1899
+ const providers = detectAvailableProviders();
1900
+ const dirMap = { claude: ".claude", codex: ".codex", gemini: ".gemini" };
1901
+ const dirs = providers.filter((p) => p.available).map((p) => dirMap[p.name]).filter(Boolean);
1902
+ if (!dirs.includes(".claude")) dirs.push(".claude");
1903
+ return [...new Set(dirs)];
1904
+ }
1898
1905
  function parseFrontmatter(content) {
1899
1906
  const match = content.match(/^---\r?\n([\s\S]*?)\r?\n---/);
1900
1907
  if (!match) return {};
@@ -1980,86 +1987,80 @@ function filterByDomains(catalog, domains) {
1980
1987
  function installAgents(targetRoot, agentNames, catalog) {
1981
1988
  const result = { installed: [], skipped: [], errors: [] };
1982
1989
  const catalogMap = new Map(catalog.map((entry) => [entry.name, entry]));
1983
- const agentsDir = join5(targetRoot, ".claude", "agents");
1984
- try {
1985
- mkdirSync2(agentsDir, { recursive: true });
1986
- } catch (error) {
1987
- logger.error({ err: error, path: agentsDir }, "Failed to create agents directory");
1988
- result.errors.push({ name: "_directory", error: `Failed to create ${agentsDir}` });
1989
- return result;
1990
- }
1990
+ const providerDirs = getActiveProviderDirs();
1991
1991
  for (const name of agentNames) {
1992
1992
  const entry = catalogMap.get(name);
1993
1993
  if (!entry) {
1994
1994
  result.errors.push({ name, error: "Agent not found in catalog" });
1995
1995
  continue;
1996
1996
  }
1997
- const filePath = join5(agentsDir, `${name}.md`);
1998
- if (existsSync4(filePath)) {
1999
- result.skipped.push(name);
2000
- continue;
2001
- }
2002
- try {
2003
- writeFileSync3(filePath, entry.content, "utf8");
2004
- result.installed.push(name);
2005
- logger.info({ agent: name, path: filePath }, "Agent installed");
2006
- } catch (error) {
2007
- result.errors.push({
2008
- name,
2009
- error: error instanceof Error ? error.message : String(error)
2010
- });
1997
+ let installedAny = false;
1998
+ let skippedAll = true;
1999
+ for (const providerDir of providerDirs) {
2000
+ const agentsDir = join5(targetRoot, providerDir, "agents");
2001
+ try {
2002
+ mkdirSync2(agentsDir, { recursive: true });
2003
+ } catch {
2004
+ }
2005
+ const filePath = join5(agentsDir, `${name}.md`);
2006
+ if (existsSync4(filePath)) continue;
2007
+ skippedAll = false;
2008
+ try {
2009
+ writeFileSync3(filePath, entry.content, "utf8");
2010
+ installedAny = true;
2011
+ logger.info({ agent: name, path: filePath, provider: providerDir }, "Agent installed");
2012
+ } catch (error) {
2013
+ result.errors.push({ name, error: `${providerDir}: ${error instanceof Error ? error.message : String(error)}` });
2014
+ }
2011
2015
  }
2016
+ if (installedAny) result.installed.push(name);
2017
+ else if (skippedAll) result.skipped.push(name);
2012
2018
  }
2013
2019
  return result;
2014
2020
  }
2015
2021
  function installSkills(targetRoot, skillNames, catalog) {
2016
2022
  const result = { installed: [], skipped: [], errors: [] };
2017
2023
  const catalogMap = new Map(catalog.map((entry) => [entry.name, entry]));
2018
- const skillsDir = join5(targetRoot, ".claude", "skills");
2019
- try {
2020
- mkdirSync2(skillsDir, { recursive: true });
2021
- } catch (error) {
2022
- logger.error({ err: error, path: skillsDir }, "Failed to create skills directory");
2023
- result.errors.push({ name: "_directory", error: `Failed to create ${skillsDir}` });
2024
- return result;
2025
- }
2024
+ const providerDirs = getActiveProviderDirs();
2026
2025
  for (const name of skillNames) {
2027
2026
  const entry = catalogMap.get(name);
2028
2027
  if (!entry) {
2029
2028
  result.errors.push({ name, error: "Skill not found in catalog" });
2030
2029
  continue;
2031
2030
  }
2032
- const skillDir = join5(skillsDir, name);
2033
- const filePath = join5(skillDir, "SKILL.md");
2034
- if (existsSync4(filePath)) {
2035
- result.skipped.push(name);
2036
- continue;
2037
- }
2038
- try {
2039
- mkdirSync2(skillDir, { recursive: true });
2040
- if (entry.installType === "bundled" && entry.content) {
2041
- writeFileSync3(filePath, entry.content, "utf8");
2042
- } else {
2043
- const referenceContent = [
2044
- `# ${entry.displayName}`,
2045
- "",
2046
- entry.description,
2047
- "",
2048
- `**Source**: ${entry.source}`,
2049
- entry.url ? `**URL**: ${entry.url}` : "",
2050
- "",
2051
- `> This skill references an external resource. Install it from the source above.`
2052
- ].filter(Boolean).join("\n");
2053
- writeFileSync3(filePath, referenceContent, "utf8");
2054
- }
2055
- result.installed.push(name);
2056
- logger.info({ skill: name, path: filePath, type: entry.installType }, "Skill installed");
2057
- } catch (error) {
2058
- result.errors.push({
2059
- name,
2060
- error: error instanceof Error ? error.message : String(error)
2061
- });
2031
+ let installedAny = false;
2032
+ let skippedAll = true;
2033
+ for (const providerDir of providerDirs) {
2034
+ const skillsDir = join5(targetRoot, providerDir, "skills");
2035
+ const skillDir = join5(skillsDir, name);
2036
+ const filePath = join5(skillDir, "SKILL.md");
2037
+ if (existsSync4(filePath)) continue;
2038
+ skippedAll = false;
2039
+ try {
2040
+ mkdirSync2(skillDir, { recursive: true });
2041
+ if (entry.installType === "bundled" && entry.content) {
2042
+ writeFileSync3(filePath, entry.content, "utf8");
2043
+ } else {
2044
+ const referenceContent = [
2045
+ `# ${entry.displayName}`,
2046
+ "",
2047
+ entry.description,
2048
+ "",
2049
+ `**Source**: ${entry.source}`,
2050
+ entry.url ? `**URL**: ${entry.url}` : "",
2051
+ "",
2052
+ `> This skill references an external resource. Install it from the source above.`
2053
+ ].filter(Boolean).join("\n");
2054
+ writeFileSync3(filePath, referenceContent, "utf8");
2055
+ }
2056
+ installedAny = true;
2057
+ logger.info({ skill: name, path: filePath, type: entry.installType, provider: providerDir }, "Skill installed");
2058
+ } catch (error) {
2059
+ result.errors.push({ name, error: `${providerDir}: ${error instanceof Error ? error.message : String(error)}` });
2060
+ }
2062
2061
  }
2062
+ if (installedAny) result.installed.push(name);
2063
+ else if (skippedAll) result.skipped.push(name);
2063
2064
  }
2064
2065
  return result;
2065
2066
  }
@@ -3159,7 +3160,7 @@ function generatePlanInBackground(issue, config, _workflowDefinition, callbacks,
3159
3160
  applyUsage(issue, usage);
3160
3161
  applySuggestions(issue, plan);
3161
3162
  try {
3162
- const { savePlanForIssue: savePlanForIssue2 } = await import("./store-XQOXIGVN.js");
3163
+ const { savePlanForIssue: savePlanForIssue2 } = await import("./store-4HCGBN4L.js");
3163
3164
  await savePlanForIssue2(issue.id, plan, issue.planVersion);
3164
3165
  } catch {
3165
3166
  }
@@ -3196,7 +3197,7 @@ function refinePlanInBackground(issue, feedback, config, _workflowDefinition, ca
3196
3197
  applyUsage(issue, usage);
3197
3198
  applySuggestions(issue, plan);
3198
3199
  try {
3199
- const { savePlanForIssue: savePlanForIssue2 } = await import("./store-XQOXIGVN.js");
3200
+ const { savePlanForIssue: savePlanForIssue2 } = await import("./store-4HCGBN4L.js");
3200
3201
  await savePlanForIssue2(issue.id, plan, issue.planVersion);
3201
3202
  } catch {
3202
3203
  }
@@ -3481,7 +3482,7 @@ async function runPlanningJob(state, issue) {
3481
3482
  issue.plan = plan;
3482
3483
  issue.planVersion = Math.max(issue.planVersion ?? 0, 1);
3483
3484
  try {
3484
- const { savePlanForIssue: savePlanForIssue2 } = await import("./store-XQOXIGVN.js");
3485
+ const { savePlanForIssue: savePlanForIssue2 } = await import("./store-4HCGBN4L.js");
3485
3486
  await savePlanForIssue2(issue.id, plan, issue.planVersion);
3486
3487
  logger.debug({ issueId: issue.id, planVersion: issue.planVersion }, "[Agent] Plan saved to issue_plans resource");
3487
3488
  } catch (err) {
@@ -3717,7 +3718,7 @@ async function runIssueOnce(state, issue, running) {
3717
3718
  const { workspacePath, promptText, promptFile } = await prepareWorkspace(issue, state, state.config.defaultBranch);
3718
3719
  container.issueRepository.markDirty(issue.id);
3719
3720
  try {
3720
- const { getIssueStateResource: getIssueStateResource2 } = await import("./store-XQOXIGVN.js");
3721
+ const { getIssueStateResource: getIssueStateResource2 } = await import("./store-4HCGBN4L.js");
3721
3722
  const res = getIssueStateResource2();
3722
3723
  if (res) {
3723
3724
  await res.patch(issue.id, {
@@ -6046,7 +6047,7 @@ function registerStateRoutes(app, state) {
6046
6047
  if (!issueId) return c.json({ ok: false, error: "Issue id is required." }, 400);
6047
6048
  const issue = findIssue(state, issueId);
6048
6049
  if (!issue) return c.json({ ok: false, error: "Issue not found." }, 404);
6049
- const { dryMerge } = await import("./workspace-74FGSSKX.js");
6050
+ const { dryMerge } = await import("./workspace-D3F3XGSI.js");
6050
6051
  const result = dryMerge(issue);
6051
6052
  return c.json({ ok: true, ...result });
6052
6053
  } catch (error) {
@@ -6061,7 +6062,7 @@ function registerStateRoutes(app, state) {
6061
6062
  if (!issueId) return c.json({ ok: false, error: "Issue id is required." }, 400);
6062
6063
  const issue = findIssue(state, issueId);
6063
6064
  if (!issue) return c.json({ ok: false, error: "Issue not found." }, 404);
6064
- const { rebaseWorktree: rebaseWorktree2 } = await import("./workspace-74FGSSKX.js");
6065
+ const { rebaseWorktree: rebaseWorktree2 } = await import("./workspace-D3F3XGSI.js");
6065
6066
  const result = rebaseWorktree2(issue);
6066
6067
  if (result.success) {
6067
6068
  addEvent(state, issue.id, "info", `Branch ${issue.branchName} rebased onto ${issue.baseBranch}.`);
@@ -6178,7 +6179,7 @@ function registerStateRoutes(app, state) {
6178
6179
  const issue = findIssue(state, issueId);
6179
6180
  if (!issue) return c.json({ ok: false, error: "Issue not found." }, 404);
6180
6181
  try {
6181
- const { getIssueTransitionHistory } = await import("./issue-state-machine-NB6NLAX2.js");
6182
+ const { getIssueTransitionHistory } = await import("./issue-state-machine-GPQNZYUZ.js");
6182
6183
  const limit = parseInt(c.req.query("limit") ?? "50", 10);
6183
6184
  const offset = parseInt(c.req.query("offset") ?? "0", 10);
6184
6185
  const transitions = await getIssueTransitionHistory(issue.id, { limit, offset });
@@ -6189,7 +6190,7 @@ function registerStateRoutes(app, state) {
6189
6190
  });
6190
6191
  app.get("/api/state-machine/transitions", async (c) => {
6191
6192
  try {
6192
- const { getStateMachineTransitions } = await import("./issue-state-machine-NB6NLAX2.js");
6193
+ const { getStateMachineTransitions } = await import("./issue-state-machine-GPQNZYUZ.js");
6193
6194
  return c.json({ ok: true, transitions: getStateMachineTransitions() });
6194
6195
  } catch (error) {
6195
6196
  return c.json({ ok: false, error: error instanceof Error ? error.message : String(error) }, 500);
@@ -6197,7 +6198,7 @@ function registerStateRoutes(app, state) {
6197
6198
  });
6198
6199
  app.get("/api/state-machine/visualize", async (c) => {
6199
6200
  try {
6200
- const { visualizeStateMachine } = await import("./issue-state-machine-NB6NLAX2.js");
6201
+ const { visualizeStateMachine } = await import("./issue-state-machine-GPQNZYUZ.js");
6201
6202
  const dot = visualizeStateMachine();
6202
6203
  if (!dot) return c.json({ ok: false, error: "Visualization not available." }, 404);
6203
6204
  return c.json({ ok: true, dot });
@@ -6974,7 +6975,7 @@ import { randomUUID as randomUUID2 } from "crypto";
6974
6975
  import { basename as basename4, extname as extname2, join as join18 } from "path";
6975
6976
  function registerMiscRoutes(app, state) {
6976
6977
  app.get("/api/queue/stats", async (c) => {
6977
- const { getQueueStats } = await import("./queue-workers-3RTEU5EW.js");
6978
+ const { getQueueStats } = await import("./queue-workers-XZ6DGH4W.js");
6978
6979
  return c.json(await getQueueStats());
6979
6980
  });
6980
6981
  app.post("/api/issues/:id/push", async (c) => {
@@ -7925,7 +7926,7 @@ async function closeStateStore() {
7925
7926
  logger.info("[Store] Closing state store and plugins");
7926
7927
  clearApiRuntimeContext();
7927
7928
  try {
7928
- const { stopQueueWorkers } = await import("./queue-workers-3RTEU5EW.js");
7929
+ const { stopQueueWorkers } = await import("./queue-workers-XZ6DGH4W.js");
7929
7930
  await stopQueueWorkers();
7930
7931
  } catch (error) {
7931
7932
  logger.warn(`Failed to stop queue workers: ${String(error)}`);
@@ -8402,4 +8403,4 @@ export {
8402
8403
  syncReferenceRepositories,
8403
8404
  importReferenceArtifacts
8404
8405
  };
8405
- //# sourceMappingURL=chunk-7F2SO6LO.js.map
8406
+ //# sourceMappingURL=chunk-JTKUWIQD.js.map
@@ -2214,7 +2214,7 @@ function parseDiffStats(issue, raw) {
2214
2214
  }
2215
2215
  async function syncIssueDiffStatsToStore(issue) {
2216
2216
  if (!issue?.id) return;
2217
- const { getIssueStateResource } = await import("./store-XQOXIGVN.js");
2217
+ const { getIssueStateResource } = await import("./store-4HCGBN4L.js");
2218
2218
  const issueResource = getIssueStateResource();
2219
2219
  if (!issueResource) return;
2220
2220
  const toNumber = (value) => {
@@ -2488,4 +2488,4 @@ export {
2488
2488
  hydrateIssuePathsFromWorkspace,
2489
2489
  writeVersionedArtifacts
2490
2490
  };
2491
- //# sourceMappingURL=chunk-LKCD6T6N.js.map
2491
+ //# sourceMappingURL=chunk-NB44PCD2.js.map
@@ -26,7 +26,7 @@ async function initQueueWorkers(state) {
26
26
  }, 3e4);
27
27
  persistInterval = setInterval(() => {
28
28
  if (!active || !runtimeState) return;
29
- import("./store-XQOXIGVN.js").then(
29
+ import("./store-4HCGBN4L.js").then(
30
30
  ({ persistState }) => persistState(runtimeState).catch(() => {
31
31
  })
32
32
  ).catch(() => {
@@ -116,11 +116,11 @@ function sortQueue() {
116
116
  }
117
117
  async function dispatchPlan(issue) {
118
118
  logger.info({ issueId: issue.id, identifier: issue.identifier }, "[Queue] Dispatching plan job");
119
- const { runPlanningJob } = await import("./issue-runner-WJLBV5ZF.js");
119
+ const { runPlanningJob } = await import("./issue-runner-CMZPSVC7.js");
120
120
  await runPlanningJob(runtimeState, issue);
121
121
  }
122
122
  async function dispatchExecute(issue) {
123
- const { runIssueOnce } = await import("./issue-runner-WJLBV5ZF.js");
123
+ const { runIssueOnce } = await import("./issue-runner-CMZPSVC7.js");
124
124
  while (active && runtimeState) {
125
125
  const current = getCurrentIssue(issue.id);
126
126
  if (!current || current.state !== "Queued" && current.state !== "Running") break;
@@ -130,12 +130,12 @@ async function dispatchExecute(issue) {
130
130
  }
131
131
  async function dispatchReview(issue) {
132
132
  logger.info({ issueId: issue.id, identifier: issue.identifier }, "[Queue] Dispatching review job");
133
- const { runIssueOnce } = await import("./issue-runner-WJLBV5ZF.js");
133
+ const { runIssueOnce } = await import("./issue-runner-CMZPSVC7.js");
134
134
  await runIssueOnce(runtimeState, issue, running);
135
135
  }
136
136
  async function checkStaleIssues() {
137
137
  if (!runtimeState) return;
138
- const { ensureNotStale } = await import("./scheduler-UBWYIIAN.js");
138
+ const { ensureNotStale } = await import("./scheduler-NVE6L3P7.js");
139
139
  await ensureNotStale(runtimeState, runtimeState.config.staleInProgressTimeoutMs);
140
140
  }
141
141
  var draining = false;
@@ -188,7 +188,7 @@ async function enqueue(issue, job) {
188
188
  async function recoverState() {
189
189
  if (!runtimeState) return;
190
190
  try {
191
- const { getIssueStateMachinePlugin, ISSUE_STATE_MACHINE_ID } = await import("./issue-state-machine-NB6NLAX2.js");
191
+ const { getIssueStateMachinePlugin, ISSUE_STATE_MACHINE_ID } = await import("./issue-state-machine-GPQNZYUZ.js");
192
192
  const fsmPlugin = getIssueStateMachinePlugin();
193
193
  if (fsmPlugin?.getState) {
194
194
  for (const issue of runtimeState.issues) {
@@ -226,9 +226,9 @@ async function recoverState() {
226
226
  }
227
227
  async function recoverOrphans() {
228
228
  if (!runtimeState) return;
229
- const { isAgentStillRunning, cleanStalePidFile } = await import("./agent-3NXSH3K3.js");
230
- const { executeTransition } = await import("./issue-state-machine-NB6NLAX2.js");
231
- const { addEvent } = await import("./issues-WWHNHXXK.js");
229
+ const { isAgentStillRunning, cleanStalePidFile } = await import("./agent-NNGZEKZH.js");
230
+ const { executeTransition } = await import("./issue-state-machine-GPQNZYUZ.js");
231
+ const { addEvent } = await import("./issues-MZLRSXD6.js");
232
232
  const candidates = runtimeState.issues.filter((i) => i.state === "Running" || i.state === "Queued");
233
233
  logger.debug({ count: candidates.length }, "[Queue] Checking for orphaned agent processes");
234
234
  for (const issue of candidates) {
@@ -266,7 +266,7 @@ function cleanTerminalWorkspaces() {
266
266
  logger.info({ count: terminals.length }, "[Queue] Scheduling terminal workspace cleanup in background");
267
267
  const state = runtimeState;
268
268
  setImmediate(async () => {
269
- const { cleanWorkspace } = await import("./agent-3NXSH3K3.js");
269
+ const { cleanWorkspace } = await import("./agent-NNGZEKZH.js");
270
270
  for (const issue of terminals) {
271
271
  try {
272
272
  await cleanWorkspace(issue.id, issue, state);
@@ -300,4 +300,4 @@ export {
300
300
  cleanTerminalWorkspaces,
301
301
  getQueueStats
302
302
  };
303
- //# sourceMappingURL=chunk-OJ5DRPWW.js.map
303
+ //# sourceMappingURL=chunk-RBDBGU2C.js.map
package/dist/cli.js CHANGED
@@ -3,11 +3,11 @@ import {
3
3
  importReferenceArtifacts,
4
4
  listReferenceRepositories,
5
5
  syncReferenceRepositories
6
- } from "./chunk-7F2SO6LO.js";
7
- import "./chunk-OJ5DRPWW.js";
6
+ } from "./chunk-JTKUWIQD.js";
7
+ import "./chunk-RBDBGU2C.js";
8
8
  import "./chunk-I2UHVKHS.js";
9
- import "./chunk-EKTVD4JS.js";
10
- import "./chunk-LKCD6T6N.js";
9
+ import "./chunk-H5N7O5NP.js";
10
+ import "./chunk-NB44PCD2.js";
11
11
  import "./chunk-2CVTK5F2.js";
12
12
  import "./chunk-37N5OFHM.js";
13
13
  import "./chunk-DVU3CXWA.js";
@@ -1,11 +1,11 @@
1
1
  import {
2
2
  runIssueOnce,
3
3
  runPlanningJob
4
- } from "./chunk-7F2SO6LO.js";
5
- import "./chunk-OJ5DRPWW.js";
4
+ } from "./chunk-JTKUWIQD.js";
5
+ import "./chunk-RBDBGU2C.js";
6
6
  import "./chunk-I2UHVKHS.js";
7
- import "./chunk-EKTVD4JS.js";
8
- import "./chunk-LKCD6T6N.js";
7
+ import "./chunk-H5N7O5NP.js";
8
+ import "./chunk-NB44PCD2.js";
9
9
  import "./chunk-2CVTK5F2.js";
10
10
  import "./chunk-37N5OFHM.js";
11
11
  import "./chunk-DVU3CXWA.js";
@@ -13,4 +13,4 @@ export {
13
13
  runIssueOnce,
14
14
  runPlanningJob
15
15
  };
16
- //# sourceMappingURL=issue-runner-WJLBV5ZF.js.map
16
+ //# sourceMappingURL=issue-runner-CMZPSVC7.js.map
@@ -16,8 +16,8 @@ import {
16
16
  setIssueResourceStateApi,
17
17
  setIssueStateMachinePlugin,
18
18
  visualizeStateMachine
19
- } from "./chunk-EKTVD4JS.js";
20
- import "./chunk-LKCD6T6N.js";
19
+ } from "./chunk-H5N7O5NP.js";
20
+ import "./chunk-NB44PCD2.js";
21
21
  import "./chunk-2CVTK5F2.js";
22
22
  import "./chunk-37N5OFHM.js";
23
23
  import "./chunk-DVU3CXWA.js";
@@ -40,4 +40,4 @@ export {
40
40
  setIssueStateMachinePlugin,
41
41
  visualizeStateMachine
42
42
  };
43
- //# sourceMappingURL=issue-state-machine-NB6NLAX2.js.map
43
+ //# sourceMappingURL=issue-state-machine-GPQNZYUZ.js.map
@@ -11,13 +11,13 @@ import {
11
11
  normalizeIssue,
12
12
  transitionIssue,
13
13
  validateConfig
14
- } from "./chunk-7F2SO6LO.js";
15
- import "./chunk-OJ5DRPWW.js";
14
+ } from "./chunk-JTKUWIQD.js";
15
+ import "./chunk-RBDBGU2C.js";
16
16
  import "./chunk-I2UHVKHS.js";
17
17
  import {
18
18
  computeMetrics
19
- } from "./chunk-EKTVD4JS.js";
20
- import "./chunk-LKCD6T6N.js";
19
+ } from "./chunk-H5N7O5NP.js";
20
+ import "./chunk-NB44PCD2.js";
21
21
  import "./chunk-2CVTK5F2.js";
22
22
  import "./chunk-37N5OFHM.js";
23
23
  import "./chunk-DVU3CXWA.js";
@@ -36,4 +36,4 @@ export {
36
36
  transitionIssue,
37
37
  validateConfig
38
38
  };
39
- //# sourceMappingURL=issues-WWHNHXXK.js.map
39
+ //# sourceMappingURL=issues-MZLRSXD6.js.map
@@ -7,7 +7,7 @@ import {
7
7
  recoverOrphans,
8
8
  recoverState,
9
9
  stopQueueWorkers
10
- } from "./chunk-OJ5DRPWW.js";
10
+ } from "./chunk-RBDBGU2C.js";
11
11
  import "./chunk-37N5OFHM.js";
12
12
  import "./chunk-DVU3CXWA.js";
13
13
  export {
@@ -20,4 +20,4 @@ export {
20
20
  recoverState,
21
21
  stopQueueWorkers
22
22
  };
23
- //# sourceMappingURL=queue-workers-3RTEU5EW.js.map
23
+ //# sourceMappingURL=queue-workers-XZ6DGH4W.js.map
@@ -4,11 +4,11 @@ import {
4
4
  hasTerminalQueue,
5
5
  installGracefulShutdown,
6
6
  isShuttingDown
7
- } from "./chunk-7F2SO6LO.js";
8
- import "./chunk-OJ5DRPWW.js";
7
+ } from "./chunk-JTKUWIQD.js";
8
+ import "./chunk-RBDBGU2C.js";
9
9
  import "./chunk-I2UHVKHS.js";
10
- import "./chunk-EKTVD4JS.js";
11
- import "./chunk-LKCD6T6N.js";
10
+ import "./chunk-H5N7O5NP.js";
11
+ import "./chunk-NB44PCD2.js";
12
12
  import "./chunk-2CVTK5F2.js";
13
13
  import "./chunk-37N5OFHM.js";
14
14
  import "./chunk-DVU3CXWA.js";
@@ -19,4 +19,4 @@ export {
19
19
  installGracefulShutdown,
20
20
  isShuttingDown
21
21
  };
22
- //# sourceMappingURL=scheduler-UBWYIIAN.js.map
22
+ //# sourceMappingURL=scheduler-NVE6L3P7.js.map
@@ -30,11 +30,11 @@ import {
30
30
  persistWorkerConcurrencySetting,
31
31
  persistWorkflowConfig,
32
32
  syncRuntimeConfigSettings
33
- } from "./chunk-7F2SO6LO.js";
34
- import "./chunk-OJ5DRPWW.js";
33
+ } from "./chunk-JTKUWIQD.js";
34
+ import "./chunk-RBDBGU2C.js";
35
35
  import "./chunk-I2UHVKHS.js";
36
- import "./chunk-EKTVD4JS.js";
37
- import "./chunk-LKCD6T6N.js";
36
+ import "./chunk-H5N7O5NP.js";
37
+ import "./chunk-NB44PCD2.js";
38
38
  import "./chunk-2CVTK5F2.js";
39
39
  import "./chunk-37N5OFHM.js";
40
40
  import "./chunk-DVU3CXWA.js";
@@ -71,4 +71,4 @@ export {
71
71
  persistWorkflowConfig,
72
72
  syncRuntimeConfigSettings
73
73
  };
74
- //# sourceMappingURL=settings-QSKX6J5K.js.map
74
+ //# sourceMappingURL=settings-NGY33WQE.js.map
@@ -21,16 +21,16 @@ import {
21
21
  replacePersistedSetting,
22
22
  savePlanForIssue,
23
23
  setActiveApiPlugin
24
- } from "./chunk-7F2SO6LO.js";
25
- import "./chunk-OJ5DRPWW.js";
24
+ } from "./chunk-JTKUWIQD.js";
25
+ import "./chunk-RBDBGU2C.js";
26
26
  import "./chunk-I2UHVKHS.js";
27
27
  import {
28
28
  hasDirtyState,
29
29
  markEventDirty,
30
30
  markIssueDirty,
31
31
  markIssuePlanDirty
32
- } from "./chunk-EKTVD4JS.js";
33
- import "./chunk-LKCD6T6N.js";
32
+ } from "./chunk-H5N7O5NP.js";
33
+ import "./chunk-NB44PCD2.js";
34
34
  import "./chunk-2CVTK5F2.js";
35
35
  import "./chunk-37N5OFHM.js";
36
36
  import "./chunk-DVU3CXWA.js";
@@ -62,4 +62,4 @@ export {
62
62
  savePlanForIssue,
63
63
  setActiveApiPlugin
64
64
  };
65
- //# sourceMappingURL=store-XQOXIGVN.js.map
65
+ //# sourceMappingURL=store-4HCGBN4L.js.map
@@ -23,7 +23,7 @@ import {
23
23
  shouldSkipMergePath,
24
24
  syncIssueDiffStatsToStore,
25
25
  writeVersionedArtifacts
26
- } from "./chunk-LKCD6T6N.js";
26
+ } from "./chunk-NB44PCD2.js";
27
27
  import "./chunk-2CVTK5F2.js";
28
28
  import "./chunk-37N5OFHM.js";
29
29
  import "./chunk-DVU3CXWA.js";
@@ -53,4 +53,4 @@ export {
53
53
  syncIssueDiffStatsToStore,
54
54
  writeVersionedArtifacts
55
55
  };
56
- //# sourceMappingURL=workspace-74FGSSKX.js.map
56
+ //# sourceMappingURL=workspace-D3F3XGSI.js.map
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "fifony",
3
- "version": "0.1.41",
3
+ "version": "0.1.42",
4
4
  "private": false,
5
5
  "type": "module",
6
6
  "license": "Apache-2.0",