fifony 0.1.48-next.bfbc1ea → 0.1.48-next.c33c5fb
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/app/dist/service-worker.js +1 -1
- package/dist/agent/run-local.js +11 -11
- package/dist/{agent-E352B3RG.js → agent-SXSSNBZH.js} +11 -11
- package/dist/{analytics-broadcaster-S344UHAX.js → analytics-broadcaster-IXTUZGUL.js} +11 -11
- package/dist/{approve-plan.command-Y3NMO6UQ.js → approve-plan.command-OP53B7QE.js} +8 -8
- package/dist/{bootstrap-ZQR2XS2X.js → bootstrap-SWWOOGYE.js} +11 -11
- package/dist/{chunk-3MCINODI.js → chunk-2NCZAEN7.js} +4 -4
- package/dist/{chunk-GHO7EIRU.js → chunk-3CE23MKX.js} +4 -4
- package/dist/{chunk-RF366QKS.js → chunk-43PQD3XN.js} +4 -4
- package/dist/{chunk-YYCJRMSO.js → chunk-4JFRWK52.js} +6 -5
- package/dist/{chunk-PXD2FZ5R.js → chunk-77KTPWXP.js} +2 -2
- package/dist/{chunk-QZJ7U74Z.js → chunk-7AZGQCL2.js} +4 -4
- package/dist/{chunk-MFISONUO.js → chunk-BDDWYCKY.js} +72 -72
- package/dist/{chunk-U27J4TFK.js → chunk-LXTFQJRH.js} +3 -3
- package/dist/{chunk-S67ULJ46.js → chunk-S6LBB6CO.js} +2 -2
- package/dist/{chunk-4AAYWWX4.js → chunk-SWXQQ5UB.js} +3 -3
- package/dist/cli.js +10 -10
- package/dist/{create-issue.command-GITDNMED.js → create-issue.command-GYSDX752.js} +11 -11
- package/dist/{fsm-agent-S54PD67L.js → fsm-agent-USEQHEXT.js} +11 -11
- package/dist/{fsm-issue-J6SAII6X.js → fsm-issue-EO4B3QZF.js} +5 -5
- package/dist/{issue-log-broadcaster-WXAN6XYI.js → issue-log-broadcaster-ZBEAGBKS.js} +11 -11
- package/dist/{issues-VZNRW3CP.js → issues-QQN6PLJE.js} +4 -4
- package/dist/{log-analyzer-GKL45OV7.js → log-analyzer-J6KMCYDA.js} +11 -11
- package/dist/mcp/server.js +1 -1
- package/dist/{merge-workspace.command-TZQYLE2Z.js → merge-workspace.command-CZJJITOW.js} +11 -11
- package/dist/{parallel-executor-ZMFTS4PS.js → parallel-executor-7I6EAOIE.js} +11 -11
- package/dist/{queue-workers-U3GBRUWT.js → queue-workers-6CZCZXC6.js} +11 -11
- package/dist/{replan-issue.command-YBMKK536.js → replan-issue.command-Q4UFOTUE.js} +8 -8
- package/dist/{retry-issue.command-TNW6LS4Q.js → retry-issue.command-X2O5A2N4.js} +8 -8
- package/dist/{scheduler-W2RPX7S6.js → scheduler-FD2EQCNG.js} +11 -11
- package/dist/{settings-WPDBW6TO.js → settings-NJ4QWYAD.js} +11 -11
- package/dist/{settings.resource-PAR7LX4U.js → settings.resource-GTSYBMVW.js} +11 -11
- package/dist/{store-U2L3L3DF.js → store-QBKBIGBF.js} +11 -11
- package/dist/{workspace-NRG27NFU.js → workspace-HEMUOHRV.js} +4 -4
- package/package.json +1 -1
package/dist/agent/run-local.js
CHANGED
|
@@ -31,21 +31,21 @@ import {
|
|
|
31
31
|
stopQueueWorkers,
|
|
32
32
|
syncRuntimeConfigSettings,
|
|
33
33
|
upsertVariableInVaulter
|
|
34
|
-
} from "../chunk-
|
|
35
|
-
import "../chunk-
|
|
36
|
-
import "../chunk-
|
|
34
|
+
} from "../chunk-BDDWYCKY.js";
|
|
35
|
+
import "../chunk-LXTFQJRH.js";
|
|
36
|
+
import "../chunk-2NCZAEN7.js";
|
|
37
37
|
import "../chunk-TX7ISB2L.js";
|
|
38
38
|
import {
|
|
39
39
|
initWebPush
|
|
40
40
|
} from "../chunk-FH7HUPZX.js";
|
|
41
|
-
import "../chunk-
|
|
42
|
-
import "../chunk-
|
|
43
|
-
import "../chunk-
|
|
41
|
+
import "../chunk-S6LBB6CO.js";
|
|
42
|
+
import "../chunk-7AZGQCL2.js";
|
|
43
|
+
import "../chunk-43PQD3XN.js";
|
|
44
44
|
import {
|
|
45
45
|
detectDefaultBranch,
|
|
46
46
|
getGitRepoStatus,
|
|
47
47
|
setSkipSource
|
|
48
|
-
} from "../chunk-
|
|
48
|
+
} from "../chunk-4JFRWK52.js";
|
|
49
49
|
import {
|
|
50
50
|
addEvent,
|
|
51
51
|
applyWorkflowConfig,
|
|
@@ -56,12 +56,12 @@ import {
|
|
|
56
56
|
hydrate,
|
|
57
57
|
resolveProjectMetadata,
|
|
58
58
|
validateConfig
|
|
59
|
-
} from "../chunk-
|
|
59
|
+
} from "../chunk-SWXQQ5UB.js";
|
|
60
60
|
import {
|
|
61
61
|
detectAvailableProviders,
|
|
62
62
|
getProviderDefaultCommand,
|
|
63
63
|
resolveDefaultProvider
|
|
64
|
-
} from "../chunk-
|
|
64
|
+
} from "../chunk-77KTPWXP.js";
|
|
65
65
|
import "../chunk-SQ734TQC.js";
|
|
66
66
|
import {
|
|
67
67
|
broadcastToWebSocketClients,
|
|
@@ -81,7 +81,7 @@ import {
|
|
|
81
81
|
getReverseProxyRuntimeSnapshotStatus
|
|
82
82
|
} from "../chunk-BENC6AV2.js";
|
|
83
83
|
import "../chunk-3NE23NYW.js";
|
|
84
|
-
import "../chunk-
|
|
84
|
+
import "../chunk-3CE23MKX.js";
|
|
85
85
|
import {
|
|
86
86
|
debugBoot,
|
|
87
87
|
fail,
|
|
@@ -503,7 +503,7 @@ async function main() {
|
|
|
503
503
|
hydrate(state.issues);
|
|
504
504
|
if (!runOnce) {
|
|
505
505
|
try {
|
|
506
|
-
const { bootstrapGlobalChat } = await import("../bootstrap-
|
|
506
|
+
const { bootstrapGlobalChat } = await import("../bootstrap-SWWOOGYE.js");
|
|
507
507
|
bootstrapGlobalChat(state);
|
|
508
508
|
} catch (err) {
|
|
509
509
|
logger.warn({ err }, "[Boot] Failed to schedule global chat bootstrap");
|
|
@@ -13,14 +13,14 @@ import {
|
|
|
13
13
|
runManagedReviewJob,
|
|
14
14
|
runPlanningJob,
|
|
15
15
|
tryParseJsonOutput
|
|
16
|
-
} from "./chunk-
|
|
17
|
-
import "./chunk-
|
|
18
|
-
import "./chunk-
|
|
16
|
+
} from "./chunk-BDDWYCKY.js";
|
|
17
|
+
import "./chunk-LXTFQJRH.js";
|
|
18
|
+
import "./chunk-2NCZAEN7.js";
|
|
19
19
|
import "./chunk-TX7ISB2L.js";
|
|
20
20
|
import "./chunk-FH7HUPZX.js";
|
|
21
|
-
import "./chunk-
|
|
22
|
-
import "./chunk-
|
|
23
|
-
import "./chunk-
|
|
21
|
+
import "./chunk-S6LBB6CO.js";
|
|
22
|
+
import "./chunk-7AZGQCL2.js";
|
|
23
|
+
import "./chunk-43PQD3XN.js";
|
|
24
24
|
import {
|
|
25
25
|
attachToDaemon,
|
|
26
26
|
buildPrompt,
|
|
@@ -39,9 +39,9 @@ import {
|
|
|
39
39
|
runHook,
|
|
40
40
|
shouldSkipMergePath,
|
|
41
41
|
writeToDaemon
|
|
42
|
-
} from "./chunk-
|
|
43
|
-
import "./chunk-
|
|
44
|
-
import "./chunk-
|
|
42
|
+
} from "./chunk-4JFRWK52.js";
|
|
43
|
+
import "./chunk-SWXQQ5UB.js";
|
|
44
|
+
import "./chunk-77KTPWXP.js";
|
|
45
45
|
import "./chunk-SQ734TQC.js";
|
|
46
46
|
import "./chunk-SLKYFN3Q.js";
|
|
47
47
|
import "./chunk-4QXECRSB.js";
|
|
@@ -59,7 +59,7 @@ import {
|
|
|
59
59
|
readDaemonExit,
|
|
60
60
|
readDaemonPid
|
|
61
61
|
} from "./chunk-3NE23NYW.js";
|
|
62
|
-
import "./chunk-
|
|
62
|
+
import "./chunk-3CE23MKX.js";
|
|
63
63
|
import "./chunk-VBXVP4BX.js";
|
|
64
64
|
import "./chunk-WZ2BMCEV.js";
|
|
65
65
|
import "./chunk-PXTIWKLQ.js";
|
|
@@ -105,4 +105,4 @@ export {
|
|
|
105
105
|
tryParseJsonOutput,
|
|
106
106
|
writeToDaemon
|
|
107
107
|
};
|
|
108
|
-
//# sourceMappingURL=agent-
|
|
108
|
+
//# sourceMappingURL=agent-SXSSNBZH.js.map
|
|
@@ -1,20 +1,20 @@
|
|
|
1
1
|
import {
|
|
2
2
|
getEcDailyEvents,
|
|
3
3
|
getEcDailyLines
|
|
4
|
-
} from "./chunk-
|
|
5
|
-
import "./chunk-
|
|
6
|
-
import "./chunk-
|
|
4
|
+
} from "./chunk-BDDWYCKY.js";
|
|
5
|
+
import "./chunk-LXTFQJRH.js";
|
|
6
|
+
import "./chunk-2NCZAEN7.js";
|
|
7
7
|
import "./chunk-TX7ISB2L.js";
|
|
8
8
|
import "./chunk-FH7HUPZX.js";
|
|
9
|
-
import "./chunk-
|
|
10
|
-
import "./chunk-
|
|
11
|
-
import "./chunk-
|
|
12
|
-
import "./chunk-
|
|
9
|
+
import "./chunk-S6LBB6CO.js";
|
|
10
|
+
import "./chunk-7AZGQCL2.js";
|
|
11
|
+
import "./chunk-43PQD3XN.js";
|
|
12
|
+
import "./chunk-4JFRWK52.js";
|
|
13
13
|
import {
|
|
14
14
|
getAnalytics,
|
|
15
15
|
getHourlySnapshot
|
|
16
|
-
} from "./chunk-
|
|
17
|
-
import "./chunk-
|
|
16
|
+
} from "./chunk-SWXQQ5UB.js";
|
|
17
|
+
import "./chunk-77KTPWXP.js";
|
|
18
18
|
import "./chunk-SQ734TQC.js";
|
|
19
19
|
import {
|
|
20
20
|
analyticsRoomHasSubscribers,
|
|
@@ -30,7 +30,7 @@ import "./chunk-JIEKFAM4.js";
|
|
|
30
30
|
import "./chunk-F3V43TLJ.js";
|
|
31
31
|
import "./chunk-BENC6AV2.js";
|
|
32
32
|
import "./chunk-3NE23NYW.js";
|
|
33
|
-
import "./chunk-
|
|
33
|
+
import "./chunk-3CE23MKX.js";
|
|
34
34
|
import "./chunk-VBXVP4BX.js";
|
|
35
35
|
import "./chunk-WZ2BMCEV.js";
|
|
36
36
|
import {
|
|
@@ -155,4 +155,4 @@ export {
|
|
|
155
155
|
pushLinesAnalytics,
|
|
156
156
|
pushTokenAnalytics
|
|
157
157
|
};
|
|
158
|
-
//# sourceMappingURL=analytics-broadcaster-
|
|
158
|
+
//# sourceMappingURL=analytics-broadcaster-IXTUZGUL.js.map
|
|
@@ -1,16 +1,16 @@
|
|
|
1
1
|
import {
|
|
2
2
|
approvePlanCommand
|
|
3
|
-
} from "./chunk-
|
|
4
|
-
import "./chunk-
|
|
5
|
-
import "./chunk-
|
|
6
|
-
import "./chunk-
|
|
7
|
-
import "./chunk-
|
|
8
|
-
import "./chunk-
|
|
3
|
+
} from "./chunk-2NCZAEN7.js";
|
|
4
|
+
import "./chunk-7AZGQCL2.js";
|
|
5
|
+
import "./chunk-43PQD3XN.js";
|
|
6
|
+
import "./chunk-4JFRWK52.js";
|
|
7
|
+
import "./chunk-SWXQQ5UB.js";
|
|
8
|
+
import "./chunk-77KTPWXP.js";
|
|
9
9
|
import "./chunk-SQ734TQC.js";
|
|
10
10
|
import "./chunk-4QXECRSB.js";
|
|
11
11
|
import "./chunk-W5IULOWV.js";
|
|
12
12
|
import "./chunk-JIEKFAM4.js";
|
|
13
|
-
import "./chunk-
|
|
13
|
+
import "./chunk-3CE23MKX.js";
|
|
14
14
|
import "./chunk-VBXVP4BX.js";
|
|
15
15
|
import "./chunk-WZ2BMCEV.js";
|
|
16
16
|
import "./chunk-PXTIWKLQ.js";
|
|
@@ -18,4 +18,4 @@ import "./chunk-Z6ZWNWWR.js";
|
|
|
18
18
|
export {
|
|
19
19
|
approvePlanCommand
|
|
20
20
|
};
|
|
21
|
-
//# sourceMappingURL=approve-plan.command-
|
|
21
|
+
//# sourceMappingURL=approve-plan.command-OP53B7QE.js.map
|
|
@@ -1,21 +1,21 @@
|
|
|
1
1
|
import {
|
|
2
2
|
buildGlobalChatPrompt,
|
|
3
3
|
chatWithIssue
|
|
4
|
-
} from "./chunk-
|
|
5
|
-
import "./chunk-
|
|
6
|
-
import "./chunk-
|
|
4
|
+
} from "./chunk-BDDWYCKY.js";
|
|
5
|
+
import "./chunk-LXTFQJRH.js";
|
|
6
|
+
import "./chunk-2NCZAEN7.js";
|
|
7
7
|
import {
|
|
8
8
|
loadCliSession
|
|
9
9
|
} from "./chunk-TX7ISB2L.js";
|
|
10
10
|
import "./chunk-FH7HUPZX.js";
|
|
11
|
-
import "./chunk-
|
|
12
|
-
import "./chunk-
|
|
13
|
-
import "./chunk-
|
|
14
|
-
import "./chunk-
|
|
15
|
-
import "./chunk-
|
|
11
|
+
import "./chunk-S6LBB6CO.js";
|
|
12
|
+
import "./chunk-7AZGQCL2.js";
|
|
13
|
+
import "./chunk-43PQD3XN.js";
|
|
14
|
+
import "./chunk-4JFRWK52.js";
|
|
15
|
+
import "./chunk-SWXQQ5UB.js";
|
|
16
16
|
import {
|
|
17
17
|
detectAvailableProviders
|
|
18
|
-
} from "./chunk-
|
|
18
|
+
} from "./chunk-77KTPWXP.js";
|
|
19
19
|
import "./chunk-SQ734TQC.js";
|
|
20
20
|
import "./chunk-SLKYFN3Q.js";
|
|
21
21
|
import "./chunk-4QXECRSB.js";
|
|
@@ -24,7 +24,7 @@ import "./chunk-JIEKFAM4.js";
|
|
|
24
24
|
import "./chunk-F3V43TLJ.js";
|
|
25
25
|
import "./chunk-BENC6AV2.js";
|
|
26
26
|
import "./chunk-3NE23NYW.js";
|
|
27
|
-
import "./chunk-
|
|
27
|
+
import "./chunk-3CE23MKX.js";
|
|
28
28
|
import "./chunk-VBXVP4BX.js";
|
|
29
29
|
import "./chunk-WZ2BMCEV.js";
|
|
30
30
|
import {
|
|
@@ -79,4 +79,4 @@ function bootstrapGlobalChat(state, options = {}) {
|
|
|
79
79
|
export {
|
|
80
80
|
bootstrapGlobalChat
|
|
81
81
|
};
|
|
82
|
-
//# sourceMappingURL=bootstrap-
|
|
82
|
+
//# sourceMappingURL=bootstrap-SWWOOGYE.js.map
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import {
|
|
2
2
|
transitionIssueCommand
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-7AZGQCL2.js";
|
|
4
4
|
import {
|
|
5
5
|
assertPlanReadyForExecution
|
|
6
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-43PQD3XN.js";
|
|
7
7
|
import {
|
|
8
8
|
ensureGitRepoReadyForWorktrees
|
|
9
|
-
} from "./chunk-
|
|
9
|
+
} from "./chunk-4JFRWK52.js";
|
|
10
10
|
import {
|
|
11
11
|
TARGET_ROOT,
|
|
12
12
|
init_constants
|
|
@@ -34,4 +34,4 @@ async function approvePlanCommand(input, deps) {
|
|
|
34
34
|
export {
|
|
35
35
|
approvePlanCommand
|
|
36
36
|
};
|
|
37
|
-
//# sourceMappingURL=chunk-
|
|
37
|
+
//# sourceMappingURL=chunk-2NCZAEN7.js.map
|
|
@@ -5,7 +5,7 @@ import { TemplateEngine } from "recker";
|
|
|
5
5
|
var PROMPT_TEMPLATES = {
|
|
6
6
|
"agent-provider-base": '{{#if isPlanner}}\nRole: planner.\nAnalyze the issue and prepare an execution plan for the implementation agents.\nDo not claim the issue is complete unless the plan itself is the deliverable.\n{{else}}\n{{#if isReviewer}}\nRole: reviewer.\nInspect the workspace and review the current implementation critically.\nIf rework is required, emit `FIFONY_STATUS=continue` and provide actionable `nextPrompt` feedback.\nEmit `FIFONY_STATUS=done` only when the work is acceptable.\n{{else}}\nRole: executor.\nImplement the required changes in the workspace.\nUse any planner guidance or prior reviewer feedback already persisted in the workspace.\n{{/if}}\n{{/if}}\n\n{{#if hasImpeccableOverlay}}\nImpeccable overlay is active.\nRaise the bar on UI polish, clarity, responsiveness, visual hierarchy, and interaction quality.\n{{#if isReviewer}}\nReview with a stricter frontend and product-quality standard than a normal correctness-only pass.\n{{else}}\nWhen touching frontend work, do not settle for baseline implementation quality.\n{{/if}}\n{{/if}}\n\n{{#if hasFrontendDesignOverlay}}\nFrontend-design overlay is active.\nPrefer stronger hierarchy, spacing, and readability decisions over generic implementation choices.\n{{/if}}\n\n{{#if selectionReason}}\nSelection reason: {{selectionReason}}\n{{/if}}\n{{#if overlays.length}}\nActive overlays:\n{{#each overlays}}\n- {{this}}\n{{/each}}\n{{/if}}\n\n{{#if profileInstructions}}\n## Agent Profile\n{{profileInstructions}}\n{{/if}}\n\n{{#if capabilitiesManifest}}\n{{capabilitiesManifest}}\n{{/if}}\n\n{{#if skillContext}}\n{{skillContext}}\n{{/if}}\n\n{{#if targetPaths.length}}\nTarget paths: {{targetPaths | join ", "}}\n{{/if}}\n\nWorkspace: {{workspacePath}}\n\n{{basePrompt}}\n',
|
|
7
7
|
// src/agents/prompts/agent-provider-base.stub.md
|
|
8
|
-
"agent-turn": 'Continue working on {{issueIdentifier}}.\nTurn {{turnIndex}} of {{maxTurns}}.\n\n{{#if isFinalTurns}}\n\u26A0\uFE0F **Turn budget warning: {{turnsRemaining}} turn(s) remaining.**\nThis is one of your last turns. Prioritize delivering working, testable code over perfection.\nIf the issue cannot be completed in {{turnsRemaining}} turn(s), write a `fifony-result.json` with `"status": "blocked"` and a clear summary of what remains.\n{{/if}}\n{{#if isContextPressure}}\n\u26A0\uFE0F **Context pressure: ~{{contextWindowPct}}% of context window used.**\nAvoid loading large files unnecessarily. Prefer targeted edits over full rewrites. If helpful, write a checkpoint file summarizing progress so far.\n{{/if}}\n\n## Turn Guidance\n\n- Go straight to the point
|
|
8
|
+
"agent-turn": 'Continue working on {{issueIdentifier}}.\nTurn {{turnIndex}} of {{maxTurns}}.\n\n{{#if isFinalTurns}}\n\u26A0\uFE0F **Turn budget warning: {{turnsRemaining}} turn(s) remaining.**\nThis is one of your last turns. Prioritize delivering working, testable code over perfection.\nIf the issue cannot be completed in {{turnsRemaining}} turn(s), write a `fifony-result.json` with `"status": "blocked"` and a clear summary of what remains.\n{{/if}}\n{{#if isContextPressure}}\n\u26A0\uFE0F **Context pressure: ~{{contextWindowPct}}% of context window used.**\nAvoid loading large files unnecessarily. Prefer targeted edits over full rewrites. If helpful, write a checkpoint file summarizing progress so far.\n{{/if}}\n\n## Turn Guidance\n\n- **Go straight to the point.** Try the simplest approach first.\n- **Diagnose before retrying.** If your previous approach failed, read the error carefully and understand WHY before trying again. Do not retry the identical action.\n- **Pivot on repeated failure.** If you have seen the same error type twice in a row, abandon the current approach entirely and try a fundamentally different strategy. Persistence without diagnosis is not a virtue.\n- **Build on partial progress.** If you made some progress last turn, build on it \u2014 do not restart from scratch.\n- **Keep output concise.** Lead with what you did and what happened, not reasoning or preamble.\n- **Verify before claiming done.** Run tests, check the build, inspect output. Report outcomes faithfully. Never claim "all tests pass" when output shows failures.\n\n## Acceptance Criteria (source of truth)\n\nRead `execution-payload.json` in the workspace. The `acceptanceCriteria` array is the exact checklist the reviewer will grade. Use it to stay on scope and know when you are done \u2014 the criterion `doneWhen` on each plan step is your gate before moving to the next step.\n\nBase objective:\n{{basePrompt}}\n\nContinuation guidance:\n{{continuation}}\n\nPrevious command output tail:\n```text\n{{outputTail}}\n```\n\nBefore exiting successfully, emit one of the following control markers:\n- `FIFONY_STATUS=continue` if more turns are required.\n- `FIFONY_STATUS=done` if the issue is complete.\n- `FIFONY_STATUS=blocked` if manual intervention is required.\nYou may also write `fifony-result.json` with `{ "status": "...", "summary": "...", "nextPrompt": "..." }`.\n',
|
|
9
9
|
// src/agents/prompts/agent-turn.stub.md
|
|
10
10
|
"compile-contract-negotiation": 'Negotiate the pre-execution contract for {{issueIdentifier}} before any code is written.\n\nTitle: {{title}}\nDescription: {{description}}\nWorkspace: {{workspacePath}}\n\n# Your Role: Adversarial Contract Negotiator\n\nYou are reviewing the execution contract before implementation begins.\nYour job is to make sure the planner and the executor cannot move the goalposts later.\n\nYou are NOT reviewing code. You are reviewing whether the planned work is concrete, testable, scoped correctly, and hard enough for the later execution/review loop to enforce.\n\nRound {{round}} of {{maxRounds}}.\n\n# Reviewer Routing\n\nProvider: {{reviewerProvider}}{{#if reviewerModel}} / {{reviewerModel}}{{/if}}{{#if reviewerEffort}} / effort {{reviewerEffort}}{{/if}}\n{{#if reviewerSelectionReason}}\nSelection reason: {{reviewerSelectionReason}}\n{{/if}}\n{{#if reviewerOverlays.length}}\nReviewer overlays:\n{{#each reviewerOverlays}}\n- {{value}}\n{{/each}}\n{{/if}}\n\n{{#if reviewProfile}}\n# Review Profile\n\nPrimary profile: **{{reviewProfile.primary}}**\nSeverity bias: {{reviewProfile.severityBias}}\n{{#if reviewProfileSecondary.length}}\nSecondary profiles:\n{{#each reviewProfileSecondary}}\n- {{value}}\n{{/each}}\n{{/if}}\n{{#if reviewProfileRationale.length}}\nWhy this profile was selected:\n{{#each reviewProfileRationale}}\n- {{value}}\n{{/each}}\n{{/if}}\nFocus areas:\n{{#each reviewProfileFocusAreas}}\n- {{value}}\n{{/each}}\nFailure modes to probe aggressively:\n{{#each reviewProfileFailureModes}}\n- {{value}}\n{{/each}}\nEvidence priorities:\n{{#each reviewProfileEvidencePriorities}}\n- {{value}}\n{{/each}}\n{{/if}}\n\n{{#if planPrompt}}\n# Current Plan\n\n{{planPrompt}}\n{{/if}}\n\n{{#if acceptanceCriteria.length}}\n# Acceptance Criteria\n\nReview these as a contract, not as execution results:\n{{#each acceptanceCriteria}}\n- **{{id}}** [{{category}}]{{#if blocking}} blocking{{else}} advisory{{/if}}, weight {{weight}}: {{description}}\n Verify via: {{verificationMethod}}\n Evidence expected: {{evidenceExpected}}\n{{/each}}\n{{/if}}\n\n{{#if executionContract}}\n# Execution Contract\n\nSummary: {{executionContract.summary}}\nCheckpoint policy: {{executionContract.checkpointPolicy}}\n{{#if deliverables.length}}\nDeliverables:\n{{#each deliverables}}\n- {{value}}\n{{/each}}\n{{/if}}\n{{#if requiredChecks.length}}\nRequired checks:\n{{#each requiredChecks}}\n- {{value}}\n{{/each}}\n{{/if}}\n{{#if requiredEvidence.length}}\nRequired evidence:\n{{#each requiredEvidence}}\n- {{value}}\n{{/each}}\n{{/if}}\n{{#if executionContract.focusAreas.length}}\nFocus areas:\n{{#each executionContract.focusAreas}}\n- {{this}}\n{{/each}}\n{{/if}}\n{{/if}}\n\n{{#if currentNegotiationStatus}}\n# Negotiation History\n\nCurrent negotiation status: {{currentNegotiationStatus}}\n{{#if priorNegotiationSummary}}\nPrevious negotiation feedback:\n{{priorNegotiationSummary}}\n{{/if}}\n{{/if}}\n\n# What to critique\n\nLook for:\n- vague or untestable acceptance criteria\n- missing blocking criteria for risky behavior\n- missing validation commands or required evidence\n- focus areas that are too broad or too weak\n- harness mode that is too weak for the risk level\n- execution steps that do not actually line up with the contract\n- contracts that are easy for the executor to game with superficial implementation\n\n# Output decision\n\nUse `approved` only when the contract is specific enough that:\n- an executor can build against it without ambiguity\n- a reviewer can fail it with concrete evidence\n- the harness mode and checkpoint policy match the real risk\n\nUse `revise` whenever any blocking concern remains.\n\nAt the end of your response, you MUST emit a JSON block tagged `contract_decision` in exactly this format:\n\n```json contract_decision\n{\n "status": "approved",\n "summary": "Short summary of the contract quality.",\n "rationale": "Why the contract is or is not execution-ready.",\n "concerns": [\n {\n "id": "NC-1",\n "severity": "blocking",\n "area": "acceptance_criteria",\n "problem": "The current criteria do not prove that the API contract is preserved.",\n "requiredChange": "Add a blocking criterion that requires probing the route and checking status codes and payload shape."\n }\n ]\n}\n```\n\nRules:\n- `status` must be `approved` or `revise`.\n- If any concern has severity `blocking`, `status` MUST be `revise`.\n- `concerns` must be empty when `status` is `approved`.\n- `area` must be one of: `harness_mode`, `steps`, `acceptance_criteria`, `execution_contract`, `validation`, `suggested_paths`.\n- Keep concerns concrete and directly actionable by the planner.\n\nAfter the `contract_decision` block:\n- If `status` is `approved`, emit `FIFONY_STATUS=done`\n- If `status` is `revise`, emit `FIFONY_STATUS=continue` and put the most important contract fixes in `nextPrompt`\n',
|
|
11
11
|
// src/agents/prompts/compile-contract-negotiation.stub.md
|
|
@@ -126,7 +126,7 @@ Before reporting done, verify:
|
|
|
126
126
|
// src/agents/prompts/integrations-agency-agents.stub.md
|
|
127
127
|
"integrations-impeccable": '# Impeccable integration idea\n\nUse impeccable-oriented skills as a frontend review layer around fifony issues.\n\nSuggested pattern:\n\n1. Use `agency-senior-developer` or `codex` as executor.\n2. Route UI-heavy issues to a reviewer prompt that explicitly asks for impeccable-style critique.\n3. Expose the resulting review through the fifony MCP prompts or as a follow-up review issue.\n\nSuggested labels:\n- frontend\n- ui\n- design-system\n\nSuggested reviewer prompt seed:\n"Review this implementation using impeccable standards for frontend quality, polish, hierarchy, spacing, responsiveness, and interaction clarity."\n',
|
|
128
128
|
// src/agents/prompts/integrations-impeccable.stub.md
|
|
129
|
-
"mcp-code-review": "# Code Review
|
|
129
|
+
"mcp-code-review": "# Adversarial Code Review \u2014 Issue {{issueId}}\n\n## Issue Context\n- **Title**: {{title}}\n- **Description**: {{description}}\n- **State**: {{state}}\n\n## Change Summary\n- **Files Changed**: {{filesChanged}}\n- **Total Additions**: +{{totalAdditions}}\n- **Total Deletions**: -{{totalDeletions}}\n\n### Files\n| Path | Status | Additions | Deletions |\n|------|--------|-----------|-----------|\n{{#each files}}\n| {{path}} | {{status}} | +{{additions}} | -{{deletions}} |\n{{/each}}\n\n## Diff\n```diff\n{{diff}}\n```\n\n## Your Role: Adversarial Quality Gate\n\nYou are NOT a collaborator \u2014 you are a skeptical evaluator. Your job is to find reasons to FAIL this work, not to be encouraging. Assume the implementation is incomplete until proven otherwise.\n\nVerification means PROVING the code works, not confirming it exists:\n- Read the actual files, trace the code path, do not trust the diff alone.\n- If something looks off, dig in. Never rubber-stamp weak work.\n- Never claim a criterion PASS without concrete evidence of what you observed.\n\n## Review Dimensions\n\nGrade each dimension with **PASS**, **FAIL**, or **SKIP** (only if truly untestable). Provide concrete evidence for every grade.\n\n### 1. Correctness\nDoes the implementation correctly solve what the issue describes?\n- Trace the code path for the primary scenario.\n- Verify edge cases are handled (empty input, boundary values, error states).\n- Check that the change does not silently no-op in a common scenario.\n\n### 2. Regression\nDoes this change break existing behavior anywhere?\n- Inspect callers of modified functions/components.\n- Check for changes in API contracts, return shapes, or event signatures.\n- Look for silent behavioral changes in unchanged code paths.\n\n### 3. Security\nAre there exploitable vulnerabilities introduced?\n- User-controlled input reaching SQL, shell, filesystem, or eval paths.\n- Hardcoded credentials, tokens, or environment URLs.\n- Missing authorization checks on new endpoints or state transitions.\n- XSS vectors in rendered output.\n\n### 4. Test Coverage\nAre new behaviors covered by tests?\n- New logic without a test is a liability.\n- Tests must describe behavior (observable outcomes), not implementation.\n- Verify tests actually run and would fail without the change.\n\n### 5. Code Quality\nIs the code readable and consistent with the codebase?\n- No unnecessary abstractions, helpers, or complexity for one-time use.\n- Names describe intent, not implementation.\n- No dead code, unused imports, or commented-out blocks.\n\n## Verdict\n\nAfter grading all dimensions, emit:\n\n```\nOVERALL: PASS | FAIL\nBLOCKING FINDINGS:\n- [dimension] <concrete issue>\nADVISORY FINDINGS:\n- [dimension] <non-blocking concern>\n```\n\nA single FAIL on Correctness, Regression, or Security is enough to FAIL the whole review.\nTest Coverage and Code Quality findings are advisory unless they represent an obvious gap in a critical path.\n",
|
|
130
130
|
// src/agents/prompts/mcp-code-review.stub.md
|
|
131
131
|
"mcp-code-review-empty": "# Code Review for {{issueId}}\n\nNo code changes found for this issue. The workspace may not have been created yet or no modifications were made.\n",
|
|
132
132
|
// src/agents/prompts/mcp-code-review-empty.stub.md
|
|
@@ -182,7 +182,7 @@ Return ONLY the JSON object. No markdown fences, no explanation, no extra text.
|
|
|
182
182
|
// src/agents/prompts/project-analysis.stub.md
|
|
183
183
|
"workflow-default": "You are working on {{issue.identifier}}.\n\nTitle: {{issue.title}}\nDescription:\n{{issue.description}}\n",
|
|
184
184
|
// src/agents/prompts/workflow-default.stub.md
|
|
185
|
-
"workflow-plan-section": '## Execution Plan\n\nComplexity: {{estimatedComplexity}}\nSummary: {{summary}}\n\nSteps:\n{{#each steps}}\n{{step}}. {{action}}{{#if files.length}} (files: {{files | join ", "}}){{/if}}{{#if details}}
|
|
185
|
+
"workflow-plan-section": '## Execution Plan\n\nComplexity: {{estimatedComplexity}}\nSummary: {{summary}}\n\nSteps:\n{{#each steps}}\n{{step}}. {{action}}{{#if files.length}} (files: {{files | join ", "}}){{/if}}{{#if details}} \u2014 {{details}}{{/if}}\n{{#if doneWhen}} \u2713 done when: {{doneWhen}}{{/if}}\n{{/each}}\n\nEach step has a `done when` criterion. Do not advance to the next step until the criterion is met.\nComplete each step in order. The `execution-payload.json` in the workspace contains the full plan with acceptance criteria \u2014 use it as the source of truth.\n'
|
|
186
186
|
// src/agents/prompts/workflow-plan-section.stub.md
|
|
187
187
|
};
|
|
188
188
|
|
|
@@ -206,4 +206,4 @@ async function renderPromptString(template, context = {}) {
|
|
|
206
206
|
export {
|
|
207
207
|
renderPrompt
|
|
208
208
|
};
|
|
209
|
-
//# sourceMappingURL=chunk-
|
|
209
|
+
//# sourceMappingURL=chunk-3CE23MKX.js.map
|
|
@@ -2,10 +2,10 @@ import {
|
|
|
2
2
|
computeDiffStats,
|
|
3
3
|
removeTestWorkspace,
|
|
4
4
|
syncIssueDiffStatsToStore
|
|
5
|
-
} from "./chunk-
|
|
5
|
+
} from "./chunk-4JFRWK52.js";
|
|
6
6
|
import {
|
|
7
7
|
markIssueDirty
|
|
8
|
-
} from "./chunk-
|
|
8
|
+
} from "./chunk-77KTPWXP.js";
|
|
9
9
|
import {
|
|
10
10
|
computeMetrics
|
|
11
11
|
} from "./chunk-4QXECRSB.js";
|
|
@@ -265,7 +265,7 @@ function emitFsmEvent(issueId, kind, message) {
|
|
|
265
265
|
if (kind === "state") {
|
|
266
266
|
import("./web-push-X2LLMQ4M.js").then(({ sendPushToAll, isWebPushReady, SETTING_ID_PUSH_SUBSCRIPTIONS }) => {
|
|
267
267
|
if (!isWebPushReady()) return;
|
|
268
|
-
import("./settings-
|
|
268
|
+
import("./settings-NJ4QWYAD.js").then(({ persistSetting }) => {
|
|
269
269
|
sendPushToAll(
|
|
270
270
|
{ title: "fifony", body: message, tag: issueId, url: "/kanban" },
|
|
271
271
|
async (subs) => {
|
|
@@ -850,4 +850,4 @@ export {
|
|
|
850
850
|
canTransitionIssue,
|
|
851
851
|
visualizeStateMachine
|
|
852
852
|
};
|
|
853
|
-
//# sourceMappingURL=chunk-
|
|
853
|
+
//# sourceMappingURL=chunk-43PQD3XN.js.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import {
|
|
2
2
|
markIssueDirty,
|
|
3
3
|
normalizeAgentProvider
|
|
4
|
-
} from "./chunk-
|
|
4
|
+
} from "./chunk-77KTPWXP.js";
|
|
5
5
|
import {
|
|
6
6
|
init_template_variants,
|
|
7
7
|
template_variants_exports
|
|
@@ -14,7 +14,7 @@ import {
|
|
|
14
14
|
} from "./chunk-JIEKFAM4.js";
|
|
15
15
|
import {
|
|
16
16
|
renderPrompt
|
|
17
|
-
} from "./chunk-
|
|
17
|
+
} from "./chunk-3CE23MKX.js";
|
|
18
18
|
import {
|
|
19
19
|
appendFileTail,
|
|
20
20
|
idToSafePath,
|
|
@@ -1826,7 +1826,8 @@ async function buildPrompt(issue, _workflowDefinition) {
|
|
|
1826
1826
|
step: step.step,
|
|
1827
1827
|
action: step.action,
|
|
1828
1828
|
files: step.files ?? [],
|
|
1829
|
-
details: step.details ?? ""
|
|
1829
|
+
details: step.details ?? "",
|
|
1830
|
+
doneWhen: step.doneWhen ?? ""
|
|
1830
1831
|
}))
|
|
1831
1832
|
});
|
|
1832
1833
|
return `${rendered}
|
|
@@ -2809,7 +2810,7 @@ function parseDiffStats(issue, raw) {
|
|
|
2809
2810
|
}
|
|
2810
2811
|
async function syncIssueDiffStatsToStore(issue) {
|
|
2811
2812
|
if (!issue?.id) return;
|
|
2812
|
-
const { getIssueStateResource } = await import("./store-
|
|
2813
|
+
const { getIssueStateResource } = await import("./store-QBKBIGBF.js");
|
|
2813
2814
|
const issueResource = getIssueStateResource();
|
|
2814
2815
|
if (!issueResource) return;
|
|
2815
2816
|
const toNumber = (value) => {
|
|
@@ -3119,4 +3120,4 @@ export {
|
|
|
3119
3120
|
hydrateIssuePathsFromWorkspace,
|
|
3120
3121
|
writeVersionedArtifacts
|
|
3121
3122
|
};
|
|
3122
|
-
//# sourceMappingURL=chunk-
|
|
3123
|
+
//# sourceMappingURL=chunk-4JFRWK52.js.map
|
|
@@ -5,7 +5,7 @@ import {
|
|
|
5
5
|
} from "./chunk-W5IULOWV.js";
|
|
6
6
|
import {
|
|
7
7
|
renderPrompt
|
|
8
|
-
} from "./chunk-
|
|
8
|
+
} from "./chunk-3CE23MKX.js";
|
|
9
9
|
import {
|
|
10
10
|
init_helpers,
|
|
11
11
|
sleep
|
|
@@ -1814,4 +1814,4 @@ export {
|
|
|
1814
1814
|
getReviewProvider,
|
|
1815
1815
|
getSessionProvidersForIssue
|
|
1816
1816
|
};
|
|
1817
|
-
//# sourceMappingURL=chunk-
|
|
1817
|
+
//# sourceMappingURL=chunk-77KTPWXP.js.map
|
|
@@ -6,13 +6,13 @@ import {
|
|
|
6
6
|
getIssueTransitionHistory,
|
|
7
7
|
getStateMachineTransitions,
|
|
8
8
|
visualizeStateMachine
|
|
9
|
-
} from "./chunk-
|
|
9
|
+
} from "./chunk-43PQD3XN.js";
|
|
10
10
|
import {
|
|
11
11
|
transitionIssue
|
|
12
|
-
} from "./chunk-
|
|
12
|
+
} from "./chunk-SWXQQ5UB.js";
|
|
13
13
|
import {
|
|
14
14
|
markIssueDirty
|
|
15
|
-
} from "./chunk-
|
|
15
|
+
} from "./chunk-77KTPWXP.js";
|
|
16
16
|
import {
|
|
17
17
|
init_helpers,
|
|
18
18
|
now
|
|
@@ -126,4 +126,4 @@ export {
|
|
|
126
126
|
deleteIssueStateMachineResourceState,
|
|
127
127
|
transitionIssueCommand
|
|
128
128
|
};
|
|
129
|
-
//# sourceMappingURL=chunk-
|
|
129
|
+
//# sourceMappingURL=chunk-7AZGQCL2.js.map
|