fifony 0.1.43 → 0.1.47

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 (65) hide show
  1. package/app/dist/assets/{CommandPalette-M4VAMxCU.js → CommandPalette-CL8p78lG.js} +1 -1
  2. package/app/dist/assets/{KeyboardShortcutsHelp-DkvPUXQq.js → KeyboardShortcutsHelp-CqEFfGcE.js} +1 -1
  3. package/app/dist/assets/OnboardingWizard-BmI50ZUv.js +1 -0
  4. package/app/dist/assets/analytics.lazy-CXGjZabc.js +1 -0
  5. package/app/dist/assets/{api-CkVfYg_m.js → api-CEr_D4e5.js} +1 -1
  6. package/app/dist/assets/{createLucideIcon-Dfk_Hxud.js → createLucideIcon-luywpIq4.js} +1 -1
  7. package/app/dist/assets/index-CEaccpYh.js +96 -0
  8. package/app/dist/assets/index-CzzWGzux.css +1 -0
  9. package/app/dist/assets/vendor-uqBx3VSC.js +9 -0
  10. package/app/dist/index.html +12 -12
  11. package/app/dist/service-worker.js +15 -5
  12. package/dist/agent/pty-daemon.js +3 -2
  13. package/dist/agent/run-local.js +71 -52
  14. package/dist/{agent-RMQTTUEC.js → agent-DFSFG6DG.js} +18 -12
  15. package/dist/{analytics-broadcaster-O6YBP66L.js → analytics-broadcaster-O4AE3RUK.js} +21 -14
  16. package/dist/approve-plan.command-QGQZZXTQ.js +17 -0
  17. package/dist/{chunk-E2EWEYA4.js → chunk-2PRRKBG6.js} +20 -10
  18. package/dist/chunk-5AMWD66T.js +38 -0
  19. package/dist/{chunk-QQQLP3PL.js → chunk-7TXZYZR5.js} +9 -37
  20. package/dist/chunk-AAVROEQC.js +859 -0
  21. package/dist/{chunk-ESWHDHH6.js → chunk-AAZKYWOY.js} +4 -4
  22. package/dist/chunk-EBCSQFPR.js +682 -0
  23. package/dist/{chunk-BRSR26VK.js → chunk-FH7HUPZX.js} +2 -2
  24. package/dist/chunk-HOIOVUHI.js +35 -0
  25. package/dist/{chunk-AILXZ2TD.js → chunk-JRLWLZOD.js} +20 -13
  26. package/dist/{chunk-YRSH2CLW.js → chunk-K36BWMUV.js} +1741 -1216
  27. package/dist/chunk-N4KFNX2G.js +370 -0
  28. package/dist/chunk-PACI3T4I.js +125 -0
  29. package/dist/{chunk-FJNH3G2Z.js → chunk-PI7Y77R3.js} +38 -663
  30. package/dist/{chunk-DVU3CXWA.js → chunk-PXTIWKLQ.js} +2 -1
  31. package/dist/{chunk-SOBLO4YZ.js → chunk-QH6VCTET.js} +316 -127
  32. package/dist/{chunk-MVTGAKQK.js → chunk-QHISYRXJ.js} +2 -2
  33. package/dist/{chunk-42AMQAJG.js → chunk-VM5QAYP5.js} +2 -2
  34. package/dist/cli.js +17 -11
  35. package/dist/create-issue.command-VAKYRECC.js +24 -0
  36. package/dist/{fsm-issue-YGGF7SIL.js → fsm-issue-EHTSKMFN.js} +9 -8
  37. package/dist/fsm-service-7O4AJG2R.js +32 -0
  38. package/dist/{helpers-L7NYO5XS.js → helpers-ON2S7UEF.js} +2 -2
  39. package/dist/{issue-log-broadcaster-WZAHISYB.js → issue-log-broadcaster-FZGVEEIX.js} +20 -13
  40. package/dist/{issues-3QRR7KM6.js → issues-3YNNTB4U.js} +10 -7
  41. package/dist/{log-analyzer-K7MXQB4T.js → log-analyzer-EIX6R6PP.js} +82 -18
  42. package/dist/logger-IFLXTQPS.js +11 -0
  43. package/dist/mcp/server.js +2 -2
  44. package/dist/merge-workspace.command-T2NIGR4M.js +24 -0
  45. package/dist/{parallel-executor-6INE6NDO.js → parallel-executor-DWESCNX3.js} +20 -14
  46. package/dist/queue-workers-V57BYXAY.js +38 -0
  47. package/dist/replan-issue.command-2GQ3QXCR.js +17 -0
  48. package/dist/retry-issue.command-GJBUUYDJ.js +17 -0
  49. package/dist/scheduler-KYILMWLD.js +32 -0
  50. package/dist/{settings-ZAWDCFP2.js → settings-SOTIS6ZD.js} +32 -12
  51. package/dist/settings.resource-JMD3JQOS.js +30 -0
  52. package/dist/{store-M6NCKMZY.js → store-S3NAYZ3S.js} +18 -12
  53. package/dist/{web-push-AX5IIK3P.js → web-push-QCTLS7EJ.js} +3 -3
  54. package/dist/websocket-T2Y3BY4B.js +61 -0
  55. package/dist/{workspace-CJTWFWTJ.js → workspace-OS7GPMCN.js} +7 -6
  56. package/package.json +8 -5
  57. package/app/dist/assets/OnboardingWizard-B7V9hoCR.js +0 -1
  58. package/app/dist/assets/analytics.lazy-zVJdF880.js +0 -1
  59. package/app/dist/assets/index-BpiCi7Ew.css +0 -1
  60. package/app/dist/assets/index-D2INW0zc.js +0 -47
  61. package/app/dist/assets/vendor-BEoYbFV1.js +0 -9
  62. package/dist/queue-workers-XFZK3TT5.js +0 -32
  63. package/dist/replan-issue.command-4UCWYHGZ.js +0 -15
  64. package/dist/scheduler-ZP7GOZDW.js +0 -26
  65. package/dist/settings.resource-5CW456AZ.js +0 -24
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  logger
3
- } from "./chunk-DVU3CXWA.js";
3
+ } from "./chunk-PXTIWKLQ.js";
4
4
 
5
5
  // src/domains/web-push.ts
6
6
  import webpush from "web-push";
@@ -101,4 +101,4 @@ export {
101
101
  getSubscriptionCount,
102
102
  sendPushToAll
103
103
  };
104
- //# sourceMappingURL=chunk-BRSR26VK.js.map
104
+ //# sourceMappingURL=chunk-FH7HUPZX.js.map
@@ -0,0 +1,35 @@
1
+ import {
2
+ transitionIssueCommand
3
+ } from "./chunk-7TXZYZR5.js";
4
+ import {
5
+ assertPlanReadyForExecution
6
+ } from "./chunk-JRLWLZOD.js";
7
+ import {
8
+ ensureGitRepoReadyForWorktrees
9
+ } from "./chunk-QH6VCTET.js";
10
+ import {
11
+ TARGET_ROOT
12
+ } from "./chunk-VM5QAYP5.js";
13
+
14
+ // src/commands/approve-plan.command.ts
15
+ async function approvePlanCommand(input, deps) {
16
+ const { issue } = input;
17
+ if (issue.state !== "Planning") {
18
+ throw new Error(`Cannot approve issue in state ${issue.state}. Must be in Planning.`);
19
+ }
20
+ assertPlanReadyForExecution(issue, "approve this plan");
21
+ ensureGitRepoReadyForWorktrees(TARGET_ROOT, "execute approved plans");
22
+ await transitionIssueCommand(
23
+ { issue, target: "PendingApproval", note: `Plan approved for ${issue.identifier}. Ready for execution.` },
24
+ deps
25
+ );
26
+ await transitionIssueCommand(
27
+ { issue, target: "Queued", note: `${issue.identifier} queued for execution after plan approval.` },
28
+ deps
29
+ );
30
+ }
31
+
32
+ export {
33
+ approvePlanCommand
34
+ };
35
+ //# sourceMappingURL=chunk-HOIOVUHI.js.map
@@ -2,22 +2,22 @@ import {
2
2
  computeDiffStats,
3
3
  removeTestWorkspace,
4
4
  syncIssueDiffStatsToStore
5
- } from "./chunk-SOBLO4YZ.js";
6
- import {
7
- computeMetrics
8
- } from "./chunk-MVTGAKQK.js";
5
+ } from "./chunk-QH6VCTET.js";
9
6
  import {
10
7
  markIssueDirty
11
- } from "./chunk-FJNH3G2Z.js";
8
+ } from "./chunk-PI7Y77R3.js";
12
9
  import {
13
- logger
14
- } from "./chunk-DVU3CXWA.js";
10
+ computeMetrics
11
+ } from "./chunk-QHISYRXJ.js";
15
12
  import {
16
13
  S3DB_ISSUE_RESOURCE,
17
14
  TERMINAL_STATES,
18
15
  isoWeek,
19
16
  now
20
- } from "./chunk-42AMQAJG.js";
17
+ } from "./chunk-VM5QAYP5.js";
18
+ import {
19
+ logger
20
+ } from "./chunk-PXTIWKLQ.js";
21
21
 
22
22
  // src/agents/failure-analyzer.ts
23
23
  function extractFilePaths(output) {
@@ -255,9 +255,9 @@ function emitFsmEvent(issueId, kind, message) {
255
255
  }
256
256
  }
257
257
  if (kind === "state") {
258
- import("./web-push-AX5IIK3P.js").then(({ sendPushToAll, isWebPushReady, SETTING_ID_PUSH_SUBSCRIPTIONS }) => {
258
+ import("./web-push-QCTLS7EJ.js").then(({ sendPushToAll, isWebPushReady, SETTING_ID_PUSH_SUBSCRIPTIONS }) => {
259
259
  if (!isWebPushReady()) return;
260
- import("./settings-ZAWDCFP2.js").then(({ persistSetting }) => {
260
+ import("./settings-SOTIS6ZD.js").then(({ persistSetting }) => {
261
261
  sendPushToAll(
262
262
  { title: "fifony", body: message, tag: issueId, url: "/kanban" },
263
263
  async (subs) => {
@@ -355,7 +355,7 @@ var issueStateMachineConfig = {
355
355
  entry: "onEnterBlocked"
356
356
  },
357
357
  Approved: {
358
- on: { MERGE: "Merged", REOPEN: "Planning" },
358
+ on: { MERGE: "Merged", BLOCK: "Blocked", REOPEN: "Planning" },
359
359
  entry: "onEnterApproved"
360
360
  },
361
361
  Merged: {
@@ -429,7 +429,6 @@ var issueStateMachineConfig = {
429
429
  issue.lastFailedPhase = "review";
430
430
  issue.attempts = (issue.attempts ?? 0) + 1;
431
431
  } else if (event === "UNBLOCK") {
432
- issue.attempts = (issue.attempts ?? 0) + 1;
433
432
  }
434
433
  if (issue.attempts > 0 && issue.lastError) {
435
434
  let fullOutput = "";
@@ -511,6 +510,9 @@ var issueStateMachineConfig = {
511
510
  const note = typeof context.note === "string" ? context.note : "Blocked";
512
511
  if (issue) {
513
512
  issue.lastError = note;
513
+ if (!issue.nextRetryAt && issue.attempts < issue.maxAttempts) {
514
+ issue.nextRetryAt = new Date(Date.now() + 3e4).toISOString();
515
+ }
514
516
  emitFsmEvent(issue.id, "error", `${issue.identifier} blocked: ${note}`);
515
517
  }
516
518
  },
@@ -762,6 +764,11 @@ async function executeTransition(issue, event, context = {}) {
762
764
  }
763
765
  markDirtyAndInvalidate(issue.id);
764
766
  triggerImmediatePersist();
767
+ try {
768
+ const { broadcastIssueTransition } = await import("./websocket-T2Y3BY4B.js");
769
+ broadcastIssueTransition(issue);
770
+ } catch {
771
+ }
765
772
  return { previousState: previous };
766
773
  }
767
774
  async function getIssueTransitionHistory(issueId, options) {
@@ -823,4 +830,4 @@ export {
823
830
  canTransitionIssue,
824
831
  visualizeStateMachine
825
832
  };
826
- //# sourceMappingURL=chunk-AILXZ2TD.js.map
833
+ //# sourceMappingURL=chunk-JRLWLZOD.js.map