night-orch 0.14.0 → 0.15.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.
- package/dist/ops/continue.d.ts.map +1 -1
- package/dist/ops/continue.js +1 -0
- package/dist/ops/continue.js.map +1 -1
- package/dist/reactions/handler.d.ts +4 -5
- package/dist/reactions/handler.d.ts.map +1 -1
- package/dist/reactions/handler.js +55 -19
- package/dist/reactions/handler.js.map +1 -1
- package/dist/reactions/scanner.d.ts.map +1 -1
- package/dist/reactions/scanner.js +17 -10
- package/dist/reactions/scanner.js.map +1 -1
- package/dist/reactions/types.d.ts +6 -0
- package/dist/reactions/types.d.ts.map +1 -1
- package/package.json +1 -1
- package/web/dist/assets/{index-qfMNvs5b.js → index-CmILkIG5.js} +1 -1
- package/web/dist/index.html +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"continue.d.ts","sourceRoot":"","sources":["../../src/ops/continue.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,QAAQ,MAAM,gBAAgB,CAAA;AAC1C,OAAO,KAAK,EAAE,YAAY,EAAgB,MAAM,mBAAmB,CAAA;AACnE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAA;AACrD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAA;
|
|
1
|
+
{"version":3,"file":"continue.d.ts","sourceRoot":"","sources":["../../src/ops/continue.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,QAAQ,MAAM,gBAAgB,CAAA;AAC1C,OAAO,KAAK,EAAE,YAAY,EAAgB,MAAM,mBAAmB,CAAA;AACnE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAA;AACrD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAA;AA2BxD,MAAM,WAAW,oBAAoB;IACnC,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,MAAM,CAAC,EAAE,OAAO,CAAA;IAChB,gBAAgB,CAAC,EAAE,cAAc,CAAA;IACjC,KAAK,CAAC,EAAE,MAAM,CAAA;CACf;AAED,wBAAsB,aAAa,CACjC,EAAE,EAAE,QAAQ,CAAC,QAAQ,EACrB,KAAK,EAAE,YAAY,EACnB,UAAU,EAAE,UAAU,EACtB,WAAW,EAAE,MAAM,EACnB,OAAO,EAAE,MAAM,EACf,OAAO,GAAE,oBAAyB,GACjC,OAAO,CAAC;IAAE,MAAM,EAAE,OAAO,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC,CAoI9C"}
|
package/dist/ops/continue.js
CHANGED
|
@@ -16,6 +16,7 @@ const EMPTY_CURSOR = {
|
|
|
16
16
|
lastReviewId: 0,
|
|
17
17
|
lastCommentId: 0,
|
|
18
18
|
lastCheckConclusion: null,
|
|
19
|
+
lastMergeableState: null,
|
|
19
20
|
};
|
|
20
21
|
const CONTINUABLE_STATUSES = new Set(['blocked', 'review_ready', 'error']);
|
|
21
22
|
const PHASE_CHECKPOINT_FALLBACK_ORDER = ['decide', 'review', 'verify', 'code', 'plan'];
|
package/dist/ops/continue.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"continue.js","sourceRoot":"","sources":["../../src/ops/continue.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"continue.js","sourceRoot":"","sources":["../../src/ops/continue.ts"],"names":[],"mappings":"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"}
|
|
@@ -10,11 +10,10 @@ export interface ReactionHandlerDeps {
|
|
|
10
10
|
repoConfig: Pick<RepoConfig, 'labels' | 'kanban'>;
|
|
11
11
|
}
|
|
12
12
|
/**
|
|
13
|
-
* Handle a reaction by
|
|
14
|
-
*
|
|
15
|
-
*
|
|
16
|
-
*
|
|
17
|
-
* can include it in the coder's prompt.
|
|
13
|
+
* Handle a reaction by queuing a follow-up run. Merge-conflict reactions
|
|
14
|
+
* create a new attempt with `intent='rebase'` so the poller drives the
|
|
15
|
+
* rebase-and-re-verify flow; all other reaction types flip the current
|
|
16
|
+
* run in place back to `queued` and seed reaction context on phase data.
|
|
18
17
|
*/
|
|
19
18
|
export declare function handleReaction(reaction: Reaction, deps: ReactionHandlerDeps): Promise<void>;
|
|
20
19
|
//# sourceMappingURL=handler.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"handler.d.ts","sourceRoot":"","sources":["../../src/reactions/handler.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAA;AAC1C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AACrD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAA;AAClD,OAAO,KAAK,QAAQ,MAAM,gBAAgB,CAAA;AAG1C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAA;
|
|
1
|
+
{"version":3,"file":"handler.d.ts","sourceRoot":"","sources":["../../src/reactions/handler.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAA;AAC1C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AACrD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAA;AAClD,OAAO,KAAK,QAAQ,MAAM,gBAAgB,CAAA;AAG1C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAA;AAMrD,MAAM,WAAW,mBAAmB;IAClC,EAAE,EAAE,QAAQ,CAAC,QAAQ,CAAA;IACrB,KAAK,EAAE,YAAY,CAAA;IACnB,UAAU,EAAE,UAAU,CAAA;IACtB,UAAU,EAAE,IAAI,CAAC,UAAU,EAAE,QAAQ,GAAG,QAAQ,CAAC,CAAA;CAClD;AAED;;;;;GAKG;AACH,wBAAsB,cAAc,CAClC,QAAQ,EAAE,QAAQ,EAClB,IAAI,EAAE,mBAAmB,GACxB,OAAO,CAAC,IAAI,CAAC,CAmGf"}
|
|
@@ -2,15 +2,16 @@ import { transitionLabels } from '../labels/manager.js';
|
|
|
2
2
|
import { buildLabelConfig } from '../labels/config.js';
|
|
3
3
|
import { resolveIssueRepo } from '../utils/issue-repo.js';
|
|
4
4
|
import { logger } from '../utils/logger.js';
|
|
5
|
+
import { createFollowupAttempt, AttemptTerminatedError, AttemptNotFoundError } from '../state/attempts.js';
|
|
6
|
+
import { recordUserAction } from '../state/run-log-events.js';
|
|
5
7
|
/**
|
|
6
|
-
* Handle a reaction by
|
|
7
|
-
*
|
|
8
|
-
*
|
|
9
|
-
*
|
|
10
|
-
* can include it in the coder's prompt.
|
|
8
|
+
* Handle a reaction by queuing a follow-up run. Merge-conflict reactions
|
|
9
|
+
* create a new attempt with `intent='rebase'` so the poller drives the
|
|
10
|
+
* rebase-and-re-verify flow; all other reaction types flip the current
|
|
11
|
+
* run in place back to `queued` and seed reaction context on phase data.
|
|
11
12
|
*/
|
|
12
13
|
export async function handleReaction(reaction, deps) {
|
|
13
|
-
const { forge, runManager, repoConfig } = deps;
|
|
14
|
+
const { db, forge, runManager, repoConfig } = deps;
|
|
14
15
|
logger.info({ repo: reaction.repo, prNumber: reaction.prNumber, issueNumber: reaction.issueNumber, type: reaction.type }, `Handling reaction: ${reaction.summary}`);
|
|
15
16
|
// Find the latest run for this issue
|
|
16
17
|
const run = runManager.getByRepoAndIssue(reaction.repo, reaction.issueNumber);
|
|
@@ -23,22 +24,57 @@ export async function handleReaction(reaction, deps) {
|
|
|
23
24
|
logger.debug({ repo: reaction.repo, issueNumber: reaction.issueNumber, status: run.status }, 'Run not in review_ready state — skipping reaction');
|
|
24
25
|
return;
|
|
25
26
|
}
|
|
26
|
-
|
|
27
|
+
const issueRepo = resolveIssueRepo(run.phaseData, reaction.repo);
|
|
27
28
|
const existingPhaseData = run.phaseData ?? {};
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
29
|
+
if (reaction.type === 'merge_conflict') {
|
|
30
|
+
try {
|
|
31
|
+
const result = createFollowupAttempt(db, {
|
|
32
|
+
previousAttemptId: run.id,
|
|
33
|
+
intent: 'rebase',
|
|
34
|
+
resetBranch: false,
|
|
35
|
+
phaseData: {
|
|
36
|
+
...existingPhaseData,
|
|
37
|
+
issueRepo,
|
|
38
|
+
reactionContext: reaction.context,
|
|
39
|
+
reactionType: reaction.type,
|
|
40
|
+
reactionSummary: reaction.summary,
|
|
41
|
+
},
|
|
42
|
+
controlPayload: {
|
|
43
|
+
issueRepo,
|
|
44
|
+
checkAfter: true,
|
|
45
|
+
requestedAt: new Date().toISOString(),
|
|
46
|
+
preserveBranchState: true,
|
|
47
|
+
},
|
|
48
|
+
});
|
|
49
|
+
recordUserAction(db, {
|
|
50
|
+
runId: result.attemptId,
|
|
51
|
+
kind: 'rebase',
|
|
52
|
+
actor: 'reaction:merge_conflict',
|
|
53
|
+
});
|
|
54
|
+
}
|
|
55
|
+
catch (err) {
|
|
56
|
+
if (err instanceof AttemptTerminatedError || err instanceof AttemptNotFoundError) {
|
|
57
|
+
logger.debug({ repo: reaction.repo, issueNumber: reaction.issueNumber, runId: run.id }, 'Previous attempt already terminated — skipping merge_conflict reaction');
|
|
58
|
+
return;
|
|
59
|
+
}
|
|
60
|
+
throw err;
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
else {
|
|
64
|
+
runManager.update(run.id, {
|
|
65
|
+
status: 'queued',
|
|
66
|
+
lastError: null,
|
|
67
|
+
endedAt: null,
|
|
68
|
+
phaseData: {
|
|
69
|
+
...existingPhaseData,
|
|
70
|
+
reactionContext: reaction.context,
|
|
71
|
+
reactionType: reaction.type,
|
|
72
|
+
reactionSummary: reaction.summary,
|
|
73
|
+
},
|
|
74
|
+
});
|
|
75
|
+
}
|
|
39
76
|
// Transition labels back to ready so the poller picks it up
|
|
40
77
|
try {
|
|
41
|
-
const issueRepo = resolveIssueRepo(run.phaseData, reaction.repo);
|
|
42
78
|
const issue = await forge.getIssue(issueRepo, reaction.issueNumber);
|
|
43
79
|
await transitionLabels(forge, issueRepo, reaction.issueNumber, issue.labels, 'review_ready', 'queued', buildLabelConfig(repoConfig, issue.labels));
|
|
44
80
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"handler.js","sourceRoot":"","sources":["../../src/reactions/handler.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAA;AACvD,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAA;AAEtD,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAA;AACzD,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAA;
|
|
1
|
+
{"version":3,"file":"handler.js","sourceRoot":"","sources":["../../src/reactions/handler.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scanner.d.ts","sourceRoot":"","sources":["../../src/reactions/scanner.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAsD,MAAM,mBAAmB,CAAA;AACzG,OAAO,KAAK,EAAY,cAAc,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAA;
|
|
1
|
+
{"version":3,"file":"scanner.d.ts","sourceRoot":"","sources":["../../src/reactions/scanner.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAsD,MAAM,mBAAmB,CAAA;AACzG,OAAO,KAAK,EAAY,cAAc,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAA;AAW9E;;;;;;;;GAQG;AACH,wBAAsB,gBAAgB,CACpC,KAAK,EAAE,YAAY,EACnB,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,MAAM,EAChB,WAAW,EAAE,MAAM,EACnB,OAAO,EAAE,MAAM,EACf,MAAM,GAAE,cAA6B,GACpC,OAAO,CAAC,kBAAkB,CAAC,CA8G7B"}
|
|
@@ -4,6 +4,7 @@ const EMPTY_CURSOR = {
|
|
|
4
4
|
lastReviewId: 0,
|
|
5
5
|
lastCommentId: 0,
|
|
6
6
|
lastCheckConclusion: null,
|
|
7
|
+
lastMergeableState: null,
|
|
7
8
|
};
|
|
8
9
|
/**
|
|
9
10
|
* Scan a PR for new events that warrant a reaction:
|
|
@@ -19,19 +20,25 @@ export async function scanForReactions(forge, repo, prNumber, issueNumber, botUs
|
|
|
19
20
|
const newCursor = { ...cursor };
|
|
20
21
|
const now = nowUtcIso();
|
|
21
22
|
// 0. Check mergeability (conflicting PRs should trigger rebase flow).
|
|
23
|
+
// Edge-deduped via cursor — emit only on transition into 'conflicting'
|
|
24
|
+
// so a persistently conflicting PR doesn't re-queue on every scan.
|
|
22
25
|
if (forge.getPR) {
|
|
23
26
|
try {
|
|
24
27
|
const pr = await forge.getPR(repo, prNumber);
|
|
25
|
-
if (pr.state === 'open'
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
28
|
+
if (pr.state === 'open') {
|
|
29
|
+
const mergeableState = pr.mergeable === true ? 'mergeable' : pr.mergeable === false ? 'conflicting' : 'unknown';
|
|
30
|
+
if (mergeableState === 'conflicting' && cursor.lastMergeableState !== 'conflicting') {
|
|
31
|
+
reactions.push({
|
|
32
|
+
type: 'merge_conflict',
|
|
33
|
+
repo,
|
|
34
|
+
prNumber,
|
|
35
|
+
issueNumber,
|
|
36
|
+
summary: 'PR has merge conflicts with base branch',
|
|
37
|
+
context: 'PR cannot be merged cleanly. Rebase onto the latest base branch, resolve conflicts, then rerun verify.',
|
|
38
|
+
detectedAt: now,
|
|
39
|
+
});
|
|
40
|
+
}
|
|
41
|
+
newCursor.lastMergeableState = mergeableState;
|
|
35
42
|
}
|
|
36
43
|
}
|
|
37
44
|
catch (err) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scanner.js","sourceRoot":"","sources":["../../src/reactions/scanner.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAA;AAC3C,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAA;AAE5C,MAAM,YAAY,GAAmB;IACnC,YAAY,EAAE,CAAC;IACf,aAAa,EAAE,CAAC;IAChB,mBAAmB,EAAE,IAAI;
|
|
1
|
+
{"version":3,"file":"scanner.js","sourceRoot":"","sources":["../../src/reactions/scanner.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAA;AAC3C,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAA;AAE5C,MAAM,YAAY,GAAmB;IACnC,YAAY,EAAE,CAAC;IACf,aAAa,EAAE,CAAC;IAChB,mBAAmB,EAAE,IAAI;IACzB,kBAAkB,EAAE,IAAI;CACzB,CAAA;AAED;;;;;;;;GAQG;AACH,MAAM,CAAC,KAAK,UAAU,gBAAgB,CACpC,KAAmB,EACnB,IAAY,EACZ,QAAgB,EAChB,WAAmB,EACnB,OAAe,EACf,SAAyB,YAAY;IAErC,MAAM,SAAS,GAAe,EAAE,CAAA;IAChC,MAAM,SAAS,GAAmB,EAAE,GAAG,MAAM,EAAE,CAAA;IAC/C,MAAM,GAAG,GAAG,SAAS,EAAE,CAAA;IAEvB,sEAAsE;IACtE,0EAA0E;IAC1E,sEAAsE;IACtE,IAAI,KAAK,CAAC,KAAK,EAAE,CAAC;QAChB,IAAI,CAAC;YACH,MAAM,EAAE,GAAG,MAAM,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAA;YAC5C,IAAI,EAAE,CAAC,KAAK,KAAK,MAAM,EAAE,CAAC;gBACxB,MAAM,cAAc,GAClB,EAAE,CAAC,SAAS,KAAK,IAAI,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,CAAC,SAAS,KAAK,KAAK,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,SAAS,CAAA;gBAC1F,IAAI,cAAc,KAAK,aAAa,IAAI,MAAM,CAAC,kBAAkB,KAAK,aAAa,EAAE,CAAC;oBACpF,SAAS,CAAC,IAAI,CAAC;wBACb,IAAI,EAAE,gBAAgB;wBACtB,IAAI;wBACJ,QAAQ;wBACR,WAAW;wBACX,OAAO,EAAE,yCAAyC;wBAClD,OAAO,EAAE,wGAAwG;wBACjH,UAAU,EAAE,GAAG;qBAChB,CAAC,CAAA;gBACJ,CAAC;gBACD,SAAS,CAAC,kBAAkB,GAAG,cAAc,CAAA;YAC/C,CAAC;QACH,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,CAAC,KAAK,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,EAAE,EAAE,gDAAgD,CAAC,CAAA;QACzF,CAAC;IACH,CAAC;IAED,qBAAqB;IACrB,IAAI,KAAK,CAAC,gBAAgB,EAAE,CAAC;QAC3B,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,KAAK,CAAC,gBAAgB,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAA;YAC3D,IAAI,MAAM,CAAC,OAAO,KAAK,SAAS,IAAI,MAAM,CAAC,mBAAmB,KAAK,SAAS,EAAE,CAAC;gBAC7E,MAAM,YAAY,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,KAAK,SAAS,CAAC,CAAA;gBAC5E,MAAM,WAAW,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;gBAC9D,SAAS,CAAC,IAAI,CAAC;oBACb,IAAI,EAAE,YAAY;oBAClB,IAAI;oBACJ,QAAQ;oBACR,WAAW;oBACX,OAAO,EAAE,cAAc,WAAW,EAAE;oBACpC,OAAO,EAAE,eAAe,CAAC,MAAM,CAAC;oBAChC,UAAU,EAAE,GAAG;iBAChB,CAAC,CAAA;YACJ,CAAC;YACD,SAAS,CAAC,mBAAmB,GAAG,MAAM,CAAC,OAAO,CAAA;QAChD,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,CAAC,KAAK,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,EAAE,EAAE,6CAA6C,CAAC,CAAA;QACtF,CAAC;IACH,CAAC;IAED,iCAAiC;IACjC,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,MAAM,KAAK,CAAC,aAAa,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAA;QACzD,MAAM,UAAU,GAAG,OAAO,CAAC,MAAM,CAC/B,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,GAAG,MAAM,CAAC,YAAY,IAAI,CAAC,CAAC,IAAI,KAAK,OAAO,CACxD,CAAA;QAED,MAAM,iBAAiB,GAAG,UAAU,CAAC,MAAM,CACzC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,KAAK,mBAAmB,IAAI,CAAC,CAAC,CAAC,KAAK,KAAK,WAAW,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC,CAChG,CAAA;QAED,IAAI,iBAAiB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACjC,SAAS,CAAC,IAAI,CAAC;gBACb,IAAI,EAAE,cAAc;gBACpB,IAAI;gBACJ,QAAQ;gBACR,WAAW;gBACX,OAAO,EAAE,iBAAiB,iBAAiB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;gBAC7F,OAAO,EAAE,mBAAmB,CAAC,iBAAiB,CAAC;gBAC/C,UAAU,EAAE,GAAG;aAChB,CAAC,CAAA;QACJ,CAAC;QAED,MAAM,WAAW,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC,YAAY,CAAC,CAAA;QACxF,SAAS,CAAC,YAAY,GAAG,WAAW,CAAA;IACtC,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,CAAC,KAAK,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,EAAE,EAAE,2CAA2C,CAAC,CAAA;IACpF,CAAC;IAED,0CAA0C;IAC1C,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,oBAAoB,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAA;QACjE,MAAM,WAAW,GAAG,QAAQ,CAAC,MAAM,CACjC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,GAAG,MAAM,CAAC,aAAa,IAAI,CAAC,CAAC,IAAI,KAAK,OAAO,CACzD,CAAA;QAED,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC3B,SAAS,CAAC,IAAI,CAAC;gBACb,IAAI,EAAE,gBAAgB;gBACtB,IAAI;gBACJ,QAAQ;gBACR,WAAW;gBACX,OAAO,EAAE,GAAG,WAAW,CAAC,MAAM,+BAA+B,CAAC,GAAG,IAAI,GAAG,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;gBACtH,OAAO,EAAE,oBAAoB,CAAC,WAAW,CAAC;gBAC1C,UAAU,EAAE,GAAG;aAChB,CAAC,CAAA;QACJ,CAAC;QAED,MAAM,YAAY,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC,aAAa,CAAC,CAAA;QAC3F,SAAS,CAAC,aAAa,GAAG,YAAY,CAAA;IACxC,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,CAAC,KAAK,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,EAAE,EAAE,mDAAmD,CAAC,CAAA;IAC5F,CAAC;IAED,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,CAAA;AACzC,CAAC;AAED,SAAS,eAAe,CAAC,MAAqB;IAC5C,MAAM,KAAK,GAAG,CAAC,wBAAwB,CAAC,CAAA;IACxC,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;QAClC,MAAM,IAAI,GAAG,KAAK,CAAC,UAAU,KAAK,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,UAAU,KAAK,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,UAAU,CAAC,WAAW,EAAE,CAAA;QAC/H,KAAK,CAAC,IAAI,CAAC,MAAM,IAAI,KAAK,KAAK,CAAC,IAAI,GAAG,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,UAAU,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAA;IAC5F,CAAC;IACD,KAAK,CAAC,IAAI,CAAC,6DAA6D,CAAC,CAAA;IACzE,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;AACzB,CAAC;AAED,SAAS,mBAAmB,CAAC,OAAwB;IACnD,MAAM,KAAK,GAAG,CAAC,4BAA4B,CAAC,CAAA;IAC5C,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;QAC7B,KAAK,CAAC,IAAI,CAAC,OAAO,MAAM,CAAC,IAAI,MAAM,MAAM,CAAC,KAAK,EAAE,CAAC,CAAA;QAClD,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC;YACvB,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAA;QAChC,CAAC;QACD,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;IAChB,CAAC;IACD,KAAK,CAAC,IAAI,CAAC,2CAA2C,CAAC,CAAA;IACvD,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;AACzB,CAAC;AAED,SAAS,oBAAoB,CAAC,QAAgC;IAC5D,MAAM,KAAK,GAAG,CAAC,6BAA6B,CAAC,CAAA;IAC7C,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;QAC/B,MAAM,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,CAAA;QACtG,KAAK,CAAC,IAAI,CAAC,OAAO,OAAO,CAAC,IAAI,OAAO,QAAQ,EAAE,CAAC,CAAA;QAChD,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAA;QAC/B,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;IAChB,CAAC;IACD,KAAK,CAAC,IAAI,CAAC,2CAA2C,CAAC,CAAA;IACvD,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;AACzB,CAAC"}
|
|
@@ -37,5 +37,11 @@ export interface ReactionCursor {
|
|
|
37
37
|
lastReviewId: number;
|
|
38
38
|
lastCommentId: number;
|
|
39
39
|
lastCheckConclusion: string | null;
|
|
40
|
+
/**
|
|
41
|
+
* Last observed mergeable state of the PR. `null` means never scanned.
|
|
42
|
+
* `merge_conflict` reactions fire only on edge transitions into
|
|
43
|
+
* 'conflicting' — not on every scan of a persistently conflicting PR.
|
|
44
|
+
*/
|
|
45
|
+
lastMergeableState: 'mergeable' | 'conflicting' | 'unknown' | null;
|
|
40
46
|
}
|
|
41
47
|
//# sourceMappingURL=types.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/reactions/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,aAAa,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAA;AAE3F,MAAM,MAAM,YAAY,GAAG,YAAY,GAAG,cAAc,GAAG,gBAAgB,GAAG,gBAAgB,CAAA;AAE9F,MAAM,WAAW,QAAQ;IACvB,IAAI,EAAE,YAAY,CAAA;IAClB,IAAI,EAAE,MAAM,CAAA;IACZ,QAAQ,EAAE,MAAM,CAAA;IAChB,WAAW,EAAE,MAAM,CAAA;IACnB,8DAA8D;IAC9D,OAAO,EAAE,MAAM,CAAA;IACf,kDAAkD;IAClD,OAAO,EAAE,MAAM,CAAA;IACf,0CAA0C;IAC1C,UAAU,EAAE,MAAM,CAAA;CACnB;AAED,MAAM,WAAW,iBAAkB,SAAQ,QAAQ;IACjD,IAAI,EAAE,YAAY,CAAA;IAClB,WAAW,EAAE,aAAa,CAAA;CAC3B;AAED,MAAM,WAAW,mBAAoB,SAAQ,QAAQ;IACnD,IAAI,EAAE,cAAc,CAAA;IACpB,OAAO,EAAE,aAAa,EAAE,CAAA;CACzB;AAED,MAAM,WAAW,qBAAsB,SAAQ,QAAQ;IACrD,IAAI,EAAE,gBAAgB,CAAA;IACtB,QAAQ,EAAE,oBAAoB,EAAE,CAAA;CACjC;AAED,MAAM,WAAW,kBAAkB;IACjC,SAAS,EAAE,QAAQ,EAAE,CAAA;IACrB,8DAA8D;IAC9D,MAAM,EAAE,cAAc,CAAA;CACvB;AAED;;;GAGG;AACH,MAAM,WAAW,cAAc;IAC7B,YAAY,EAAE,MAAM,CAAA;IACpB,aAAa,EAAE,MAAM,CAAA;IACrB,mBAAmB,EAAE,MAAM,GAAG,IAAI,CAAA;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/reactions/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,aAAa,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAA;AAE3F,MAAM,MAAM,YAAY,GAAG,YAAY,GAAG,cAAc,GAAG,gBAAgB,GAAG,gBAAgB,CAAA;AAE9F,MAAM,WAAW,QAAQ;IACvB,IAAI,EAAE,YAAY,CAAA;IAClB,IAAI,EAAE,MAAM,CAAA;IACZ,QAAQ,EAAE,MAAM,CAAA;IAChB,WAAW,EAAE,MAAM,CAAA;IACnB,8DAA8D;IAC9D,OAAO,EAAE,MAAM,CAAA;IACf,kDAAkD;IAClD,OAAO,EAAE,MAAM,CAAA;IACf,0CAA0C;IAC1C,UAAU,EAAE,MAAM,CAAA;CACnB;AAED,MAAM,WAAW,iBAAkB,SAAQ,QAAQ;IACjD,IAAI,EAAE,YAAY,CAAA;IAClB,WAAW,EAAE,aAAa,CAAA;CAC3B;AAED,MAAM,WAAW,mBAAoB,SAAQ,QAAQ;IACnD,IAAI,EAAE,cAAc,CAAA;IACpB,OAAO,EAAE,aAAa,EAAE,CAAA;CACzB;AAED,MAAM,WAAW,qBAAsB,SAAQ,QAAQ;IACrD,IAAI,EAAE,gBAAgB,CAAA;IACtB,QAAQ,EAAE,oBAAoB,EAAE,CAAA;CACjC;AAED,MAAM,WAAW,kBAAkB;IACjC,SAAS,EAAE,QAAQ,EAAE,CAAA;IACrB,8DAA8D;IAC9D,MAAM,EAAE,cAAc,CAAA;CACvB;AAED;;;GAGG;AACH,MAAM,WAAW,cAAc;IAC7B,YAAY,EAAE,MAAM,CAAA;IACpB,aAAa,EAAE,MAAM,CAAA;IACrB,mBAAmB,EAAE,MAAM,GAAG,IAAI,CAAA;IAClC;;;;OAIG;IACH,kBAAkB,EAAE,WAAW,GAAG,aAAa,GAAG,SAAS,GAAG,IAAI,CAAA;CACnE"}
|
package/package.json
CHANGED
|
@@ -14,4 +14,4 @@ Error generating stack: `+n.message+`
|
|
|
14
14
|
0%, 100% { opacity: 1; }
|
|
15
15
|
50% { opacity: 0.4; }
|
|
16
16
|
}
|
|
17
|
-
`;function qx({status:l,serverUnreachable:o=!1,elapsedSeconds:i}){const u=Ux(l.installMethod);return r.jsxs("div",{"data-theme":"black",style:{position:"fixed",inset:0,zIndex:9999,display:"grid",placeItems:"center",backgroundColor:"rgba(0, 0, 0, 0.78)",backdropFilter:"blur(4px)",padding:"1rem"},role:"dialog","aria-modal":"true","aria-label":"Self update in progress",children:[r.jsx("style",{children:Hx}),r.jsxs("section",{className:"w-full max-w-xl rounded-box border border-base-300/80 bg-base-100/95 p-5 shadow-2xl",children:[r.jsx("h2",{className:"text-lg font-semibold",children:"Applying self-update"}),(l.previousCommit||l.targetCommit)&&r.jsxs("p",{className:"mt-1 font-mono text-xs text-base-content/60",children:[l.previousCommit?.slice(0,8),l.targetCommit&&r.jsxs(r.Fragment,{children:[" → ",l.targetCommit.slice(0,8)]})]}),r.jsxs("div",{className:"mt-3 flex items-center gap-3 text-sm text-base-content/80",children:[r.jsx("span",{className:"loading loading-spinner loading-md text-info"}),r.jsxs("span",{children:["Update in progress",i!=null&&i>0&&r.jsxs(r.Fragment,{children:[" — ",kx(i)]})]})]}),r.jsx("ul",{className:"steps steps-vertical mt-4 w-full",children:u.map(f=>{const h=Bx(f.id,l.state,u),p=h==="done"?"step step-success":h==="active"?"step step-info update-step-active":"step",v=h==="done"?"✓":h==="active"?"●":"○";return r.jsx("li",{className:p,"data-content":v,children:r.jsx("span",{className:h==="pending"?"text-base-content/50":void 0,children:f.label})},f.id)})}),o&&r.jsxs("div",{className:"mt-4 flex items-center gap-2 rounded border border-info/35 bg-info/10 p-2.5 text-xs text-info-content",children:[r.jsx("span",{className:"loading loading-dots loading-xs"}),r.jsx("span",{children:"Server is restarting — reconnecting automatically..."})]}),l.state==="rolling-back"&&r.jsx("div",{className:"mt-4 rounded border border-warning/35 bg-warning/10 p-2 text-xs text-warning-content",children:"Health checks failed. Rolling back to the previous known-good build."}),r.jsx("p",{className:"mt-4 text-xs text-base-content/70",children:"Dashboard controls are temporarily blocked. This page refreshes automatically after a healthy restart."})]})]})}function Yx(l){return eg.createPortal(r.jsx(qx,{...l}),document.body)}function Gx(l){if(!l||typeof l!="object")return null;const o=l.runId,i=l.repo,u=l.issueNumber,f=l.events,h=l.lastEventId;return typeof o!="string"&&typeof i!="string"||!Array.isArray(f)||typeof h!="number"?null:{...typeof o=="string"?{runId:o}:{},...typeof i=="string"?{repo:i}:{},...typeof u=="number"?{issueNumber:u}:{},events:f.filter(p=>!p||typeof p!="object"?!1:typeof p.id=="number"),lastEventId:h}}function Vx(l,o){const i=new Set(l.map(f=>f.id)),u=[...l];for(const f of o)i.has(f.id)||(i.add(f.id),u.push(f));return u.sort((f,h)=>f.id-h.id),u}const Qx="Start self-update now? This pulls latest code, rebuilds, and restarts Night-Orch services.",Xx="Start self-update now? This installs the latest version from npm and restarts Night-Orch services.";function Zx(l,o="unknown"){return l(o==="npm"?Xx:Qx)}const Kx=6e3;function $x(l){return{startedAtMs:l,sawActiveState:!1}}function cc(){return{startedAtMs:null,sawActiveState:!1}}function rc(l){return l!=null&&l.state!=="idle"&&l.state!=="failed"}function Jx(l){return rc(l)?l:null}function Px(l,o,i){return l.startedAtMs==null||l.sawActiveState?!0:o-l.startedAtMs>=i}function Ix(l,o,i,u){return rc(l)?{nextTransition:{startedAtMs:o.startedAtMs,sawActiveState:!0},nextStatus:l,errorMessage:null,shouldReload:!1}:Px(o,i,u)?l.state==="failed"?{nextTransition:cc(),nextStatus:l,errorMessage:`Update failed: ${l.error??"unknown error"}`,shouldReload:!1}:{nextTransition:cc(),nextStatus:l,errorMessage:null,shouldReload:l.state==="idle"}:{nextTransition:o,nextStatus:null,errorMessage:null,shouldReload:!1}}async function Fx(l){const o=await l.fetchUpdateStatus();if(!o)return l.transition;const i=Ix(o,l.transition,l.nowMs?l.nowMs():Date.now(),l.graceMs??Kx);return i.nextStatus&&l.onStatus(i.nextStatus),i.errorMessage&&l.onError(i.errorMessage),i.shouldReload&&l.onReload(),i.nextTransition}const Qu="x-night-orch-intent",Xu="mutate",Wx="x-night-orch-web-token",e1="0.14.0",t1=6e4,Ep=20;function Cp(l){if(!l)return null;try{return decodeURIComponent(l)}catch{return l}}function a1(l){return l===null?"null":typeof l=="boolean"?l?"true":"false":Array.isArray(l)||typeof l=="object"&&l!==null?JSON.stringify(l):String(l)}function nc({activePage:l,issueDetailRunId:o=null,projectDetailRepo:i=null}){const u=of(),[f,h]=A.useState(null),[p,v]=A.useState(null),[b,m]=A.useState(null),[j,y]=A.useState(!0),[x,S]=A.useState(!0),[T,E]=A.useState(!0),[z,_]=A.useState(!1),[k,G]=A.useState("all"),[Z,F]=A.useState("active"),[ee,Q]=A.useState([]),[W,J]=A.useState(!1),[se,X]=A.useState(!1),[ue,de]=A.useState(0),[Ye,_e]=A.useState(!1),[B,$]=A.useState(""),[le,Re]=A.useState([]),[Te,R]=A.useState(null),[q,I]=A.useState(null),[P,ce]=A.useState(null),[he,ye]=A.useState(!1),[Ae,ke]=A.useState(null),[xt,da]=A.useState(!1),[bt,Yn]=A.useState(!0),[qt,Ia]=A.useState(!1),[Yt,St]=A.useState(!1),[Fa,rt]=A.useState(!1),[xa,wa]=A.useState(""),[vl,ha]=A.useState(null),[me,lt]=A.useState(!1),[_t,Gn]=A.useState({}),[Wa,bc]=A.useState(""),[jt,vc]=A.useState({repo:"",issueNumber:"",amount:""}),[en,ma]=A.useState(null),[ut,Sa]=A.useState(null),[Nt,Ti]=A.useState(0),[yc,Mi]=A.useState(null),Gt=A.useRef(null),tn=A.useRef(null),an=A.useRef(""),pa=A.useRef(""),Ft=A.useRef(cc()),nn=A.useRef(Date.now()),_i=A.useRef(bt),hs=A.useRef(P),yl=A.useRef(Ae),ln=A.useRef(Yt),Vn=A.useRef(0),sn=f?.config.repos??[],on=f?.runs.runs??[],Qn=f?.stats.overview.runningRuns??0,Xn=f?.stats.overview.queuedRuns??0,ja=rc(en),ms=A.useMemo(()=>k==="all"?on:on.filter(C=>C.repo===k),[on,k]),Ei=A.useMemo(()=>Z==="active"?ms:ee,[ms,ee,Z]),Na=Z==="active"?j:W,st=Z!=="active"&&Ye,ft=A.useMemo(()=>{const C=new Map;for(const K of on)C.set(K.runId,K);for(const K of ee)C.set(K.runId,K);return C},[on,ee]),dt=A.useMemo(()=>Cp(o),[o]),xl=A.useMemo(()=>Cp(i),[i]),Sl=A.useMemo(()=>dt?ft.get(dt)??null:null,[dt,ft]),jl=Sl??yc,Wt=jl?`${jl.repo}#${jl.issue}`:"",cn=A.useMemo(()=>ja?{label:`updating ${en?.state??"starting"}`,toneClass:"badge-warning"}:xt?z?Qn>0?{label:"processing",toneClass:"badge-success"}:Xn>0?{label:"queued",toneClass:"badge-info"}:{label:"idle",toneClass:"badge-neutral"}:{label:"reconnecting",toneClass:"badge-error"}:{label:"initializing",toneClass:"badge-neutral"},[xt,Xn,Qn,z,ja,en?.state]),ps=A.useMemo(()=>{const C=f?.build?.version??e1,K=f?.build?.gitSha;return f?.build?.installMethod==="git"&&K?`v${C} · ${K.slice(0,8)}`:`v${C}`},[f?.build]),Vt=A.useCallback(async()=>{const C=await fetch("/api/dashboard");if(!C.ok)throw new Error(`Failed to load dashboard (${C.status})`);const K=await C.json();h(K)},[]),Et=A.useCallback(async(C={})=>{if(Z==="active")return;const K=C.append??!1,ge=++Vn.current,He=K?C.offset??0:0;K?X(!0):(Q([]),de(0),_e(!1),J(!0),X(!1));try{const re=new URLSearchParams;k!=="all"&&re.set("repo",k),re.set("view",Z),re.set("limit",String(Ep)),re.set("offset",String(He));const Ge=await fetch(`/api/runs?${re.toString()}`);if(!Ge.ok)throw new Error(`Failed to load runs (${Ge.status})`);const ve=await Ge.json();if(ge!==Vn.current)return;const vt=typeof ve.hasMore=="boolean"?ve.hasMore:ve.runs.length>=Ep,ot=typeof ve.nextOffset=="number"?ve.nextOffset:He+ve.runs.length;Q(At=>{if(!K)return ve.runs;const _l=new Set(At.map(Ot=>Ot.runId)),dn=[...At];for(const Ot of ve.runs)_l.has(Ot.runId)||(_l.add(Ot.runId),dn.push(Ot));return dn}),_e(vt),de(ot)}catch(re){ge===Vn.current&&R(re.message)}finally{ge===Vn.current&&(J(!1),X(!1))}},[Z,k]),ea=A.useCallback(async()=>{const C=await fetch("/api/update-status");return C.ok?await C.json():null},[]),Aa=A.useCallback(async()=>{try{const C=await fetch("/api/session");if(!C.ok)throw new Error(`Failed to initialize web session (${C.status})`);const K=await C.json();Yn(K.operationsEnabled??!0);const ge=K.requiresExternalAuth??K.mutationToken===null;if(Ia(ge),!ge&&K.mutationToken){ke(K.mutationToken),St(!0);return}try{const He=await fetch("/api/auth/session");if(He.ok&&(await He.json()).authenticated===!0){St(!0);return}}catch{}St(!1),rt(!0)}finally{da(!0)}},[]),Ie=A.useCallback(async()=>{if(!xa.trim()){ha("Token is required.");return}lt(!0),ha(null);try{const C=await fetch("/api/auth/session",{method:"POST",headers:{"Content-Type":"application/json",[Qu]:Xu},body:JSON.stringify({token:xa.trim()})});if(C.status===204){St(!0),rt(!1),wa(""),ha(null);return}if(C.status===401){ha("Invalid token. Check NIGHT_ORCH_WEB_AUTH_TOKEN on the server.");return}ha(`Login failed (${C.status}).`)}catch(C){ha(C.message)}finally{lt(!1)}},[xa]),Ci=A.useCallback(async()=>{try{await fetch("/api/auth/logout",{method:"POST",headers:{"Content-Type":"application/json",[Qu]:Xu}})}catch{}St(!1),rt(!0)},[]),Zn=A.useCallback(async()=>{const C=await fetch("/api/projects");if(!C.ok)throw new Error(`Failed to load projects (${C.status})`);const K=await C.json();v(K)},[]),Ct=A.useCallback(async()=>{const C=await fetch("/api/settings");if(!C.ok)throw new Error(`Failed to load settings (${C.status})`);const K=await C.json();m(K),Gn(Object.fromEntries(K.settings.map(ge=>[ge.key,a1(ge.effectiveValue)])))},[]);A.useEffect(()=>{(async()=>{try{y(!0),S(!0),E(!0),await Promise.all([Vt(),Aa(),Zn(),Ct()])}catch(C){R(C.message)}finally{y(!1),S(!1),E(!1)}})()},[Vt,Zn,Aa,Ct]),A.useEffect(()=>{let C=!1;return(async()=>{try{const K=await ea();if(!K||C)return;rc(K)?Ft.current={startedAtMs:null,sawActiveState:!0}:Ft.current=cc(),ma(ge=>ge&&!K.installMethod?{...K,installMethod:ge.installMethod}:K)}catch{}})(),()=>{C=!0}},[ea]),A.useEffect(()=>{G(C=>C==="all"||sn.includes(C)?C:"all")},[sn]),A.useEffect(()=>{if(Z==="active"){Vn.current+=1,Q([]),de(0),_e(!1),J(!1),X(!1);return}Et({append:!1,offset:0})},[Et,Z]),A.useEffect(()=>{_i.current=bt},[bt]),A.useEffect(()=>{hs.current=P},[P]),A.useEffect(()=>{yl.current=Ae},[Ae]),A.useEffect(()=>{ln.current=Yt},[Yt]),A.useEffect(()=>{dt&&$(dt)},[dt]),A.useEffect(()=>{if(!dt){Mi(null);return}Sl&&Mi(Sl)},[dt,Sl]),A.useEffect(()=>{if(!xt)return;let C=!1,K=2e3;const ge=()=>{const He=window.location.protocol==="https:"?"wss":"ws",re=new WebSocket(`${He}://${window.location.host}/ws`);Gt.current=re,re.onopen=()=>{if(C)return;K=2e3,_(!0),re.send(JSON.stringify({type:"refresh"}));const Ge=an.current;if(Ge){const[ve,vt]=Ge.split("#"),ot=Number.parseInt(vt??"",10);ve&&Number.isInteger(ot)&&ot>0&&re.send(JSON.stringify({type:"subscribe-issue-events",repo:ve,issueNumber:ot,since:0}))}},re.onmessage=Ge=>{try{const ve=JSON.parse(Ge.data);if(ve.type==="snapshot"&&ve.payload){h(ve.payload);return}if(ve.type==="run-events"&&ve.payload)return;if(ve.type==="issue-events"&&ve.payload){const vt=Gx(ve.payload);if(!vt||`${vt.repo}#${vt.issueNumber}`!==an.current)return;Re(ot=>Vx(ot,vt.events));return}ve.type==="error"&&ve.error&&I(ve.error)}catch{}},re.onclose=()=>{Gt.current===re&&(Gt.current=null),_(!1),!C&&(tn.current=window.setTimeout(ge,K),K=Math.min(K*2,3e4))},re.onerror=()=>{re.close()}};return ge(),()=>{C=!0,tn.current!==null&&window.clearTimeout(tn.current),Gt.current?.close(),Gt.current=null}},[xt]),A.useEffect(()=>{an.current=Wt;const C=pa.current;C&&C!==Wt?Re([]):!C&&Wt&&Re([]);const K=Gt.current;if(!K||K.readyState!==WebSocket.OPEN){pa.current=Wt;return}if(C&&C!==Wt){const[ge,He]=C.split("#"),re=Number.parseInt(He??"",10);ge&&Number.isInteger(re)&&re>0&&K.send(JSON.stringify({type:"unsubscribe-issue-events",repo:ge,issueNumber:re}))}if(Wt){const[ge,He]=Wt.split("#"),re=Number.parseInt(He??"",10);ge&&Number.isInteger(re)&&re>0&&K.send(JSON.stringify({type:"subscribe-issue-events",repo:ge,issueNumber:re,since:0}))}pa.current=Wt},[Wt,z]);const[rn,gs]=A.useState(!1);A.useEffect(()=>{if(!ja)return;let C=!1,K=0;const ge=async()=>{try{const re=await Fx({fetchUpdateStatus:ea,transition:Ft.current,onStatus:Ge=>{C||(K=0,gs(!1),ma(ve=>ve&&!Ge.installMethod?{...Ge,installMethod:ve.installMethod}:Ge))},onError:Ge=>{C||(K=0,gs(!1),R(Ge))},onReload:()=>{C||window.location.reload()}});C||(Ft.current=re)}catch{K++,!C&&K>=2&&(gs(!0),ma(re=>{if(!re)return re;const Ge=re.installMethod==="npm"?Lx:zx,ve=Ge.indexOf(re.state);if(ve<0||ve>=Ge.length-1)return re;if(K*2>=4*(ve+1)){const ot=Ge[ve+1];if(ot)return{...re,state:ot}}return re}))}};ge();const He=window.setInterval(()=>{ge()},2e3);return()=>{C=!0,window.clearInterval(He)}},[ea,ja]),A.useEffect(()=>{if(!ut)return;const C=window.setInterval(()=>{Ti(Math.floor((Date.now()-ut)/1e3))},1e3);return()=>window.clearInterval(C)},[ut]);const Oe=A.useCallback(async(C,K,ge,He,re)=>{try{if(ce(C),R(null),!Ae&&!Yt)throw rt(!0),new Error("Log in first.");if(!bt)throw new Error("Web operations are disabled by server policy.");const Ge={"Content-Type":"application/json",[Qu]:Xu};Ae&&(Ge[Wx]=Ae);const ve=await fetch(K,{method:"POST",headers:Ge,credentials:"same-origin",body:JSON.stringify(ge)});if(ve.status===401&&qt)throw St(!1),rt(!0),new Error("Session expired. Log in again.");const vt=await ve.json();if(!ve.ok){const At=typeof vt.error=="string"?vt.error:`Operation failed (${ve.status})`;throw new Error(At)}const ot=Sy(vt)??He;return I(ot),(re?.refreshAfterSuccess??!0)&&(await Promise.all([Vt(),Ct()]),Z!=="active"&&await Et({append:!1,offset:0})),!0}catch(Ge){return R(Ge.message),!1}finally{ce(null)}},[Vt,Et,Ct,bt,qt,Z,Yt,Ae]),wi=A.useCallback(async()=>{try{ye(!0),R(null);const C=[Vt(),Zn(),Ct()];l==="issues"&&Z!=="active"&&C.push(Et({append:!1,offset:0})),await Promise.all(C),Gt.current?.readyState===WebSocket.OPEN&&Gt.current.send(JSON.stringify({type:"refresh"}))}catch(C){R(C.message)}finally{ye(!1)}},[l,Vt,Et,Zn,Ct,Z]),bs=A.useCallback(()=>{nn.current=Date.now(),Oe("poll","/api/operations/poll",{},"Manual poll requested")},[Oe]);A.useEffect(()=>{const C=()=>{if(document.visibilityState!=="visible")return;const K=Date.now()-nn.current>=t1,ge=_i.current&&hs.current===null&&(yl.current!==null||ln.current);K&&ge&&bs()};return document.addEventListener("visibilitychange",C),()=>{document.removeEventListener("visibilitychange",C)}},[bs]);const Nl=A.useCallback(()=>{Oe("sync","/api/operations/sync",{},"Sync completed")},[Oe]),Rl=A.useCallback(()=>{Oe("cleanup","/api/operations/cleanup",{},"Cleanup completed")},[Oe]),ga=A.useCallback(C=>{C!==Z&&(C!=="active"&&(J(!0),X(!1)),F(C))},[Z]),Rt=A.useCallback(C=>{u({to:"/$page",params:{page:C}})},[u]),Ai=A.useCallback(C=>{$(C),u({to:"/$page/$detailId",params:{page:"issues",detailId:C}})},[u]),xc=A.useCallback(()=>{u({to:"/$page",params:{page:"issues"}})},[u]),vs=A.useCallback(C=>{u({to:"/$page/$detailId",params:{page:"projects",detailId:C}})},[u]),Oi=A.useCallback(()=>{u({to:"/$page",params:{page:"projects"}})},[u]),Tl=A.useCallback(async()=>{const C=f?.build?.installMethod;if(!(!Zx(He=>window.confirm(He),C==="git"||C==="npm"?C:"unknown")||!await Oe("update","/api/operations/update",{},"Update initiated - pulling and rebuilding...",{refreshAfterSuccess:!1}))){Ft.current=$x(Date.now()),ma({state:"draining",installMethod:C==="git"||C==="npm"?C:void 0}),Sa(Date.now()),Ti(0);try{const He=await ea();if(!He)return;const re=Jx(He);re&&(Ft.current={startedAtMs:Ft.current.startedAtMs,sawActiveState:!0},ma(re))}catch{}}},[ea,Oe]),ta=A.useCallback(async(C,K)=>{window.confirm(K.confirmMessage)&&await Oe(K.operationName,K.endpoint,{repo:C.repo,issueNumber:C.issue,...K.payload},K.fallbackMessage)},[Oe]),wt=A.useCallback((C,K)=>{ta(C,{operationName:"retry",endpoint:"/api/operations/retry",confirmMessage:`Queue fresh retry for ${C.repo}#${C.issue}${K?` with ${K} strategy`:""}?`,fallbackMessage:`Fresh retry queued for ${C.repo}#${C.issue}`,payload:K?{strategy:K}:void 0})},[ta]),ys=A.useCallback((C,K)=>{ta(C,{operationName:"rebase",endpoint:"/api/operations/rebase",confirmMessage:`Queue rebase for ${C.repo}#${C.issue}${K?` with ${K} strategy`:""}?`,fallbackMessage:`Rebase queued for ${C.repo}#${C.issue}`,payload:K?{strategy:K}:void 0})},[ta]),Di=A.useCallback((C,K)=>{ta(C,{operationName:"continue",endpoint:"/api/operations/continue",confirmMessage:`Queue continue pass for ${C.repo}#${C.issue}${K?` with ${K} strategy`:""}?`,fallbackMessage:`Continue pass queued for ${C.repo}#${C.issue}`,payload:K?{strategy:K}:void 0})},[ta]),xs=A.useCallback((C,K)=>{ta(C,{operationName:"delete-entry",endpoint:"/api/operations/delete-entry",confirmMessage:K?`Force delete local entry for ${C.repo}#${C.issue}? This can remove run-local state while shared issue state is still active elsewhere.`:`Delete local entry for ${C.repo}#${C.issue}?`,fallbackMessage:K?`Force-deleted local entry for ${C.repo}#${C.issue}`:`Deleted local entry for ${C.repo}#${C.issue}`,payload:{force:K}})},[ta]),un=A.useCallback(C=>{ta(C,{operationName:"cost-reset",endpoint:"/api/operations/cost-reset",confirmMessage:`Reset accumulated costs for ${C.repo}#${C.issue}? If cost-blocked, it will be re-queued.`,fallbackMessage:`Reset costs for ${C.repo}#${C.issue}`})},[ta]),zi=A.useCallback(C=>{window.confirm(`Bootstrap orchestration labels for ${C}?`)&&Oe("labels-init","/api/operations/labels-init",{repo:C},`Labels initialized for ${C}`)},[Oe]),Li=A.useCallback(async C=>{const K=_t[C];if(K===void 0){R(`No draft value found for ${C}`);return}await Oe(`setting:set:${C}`,"/api/operations/settings/set",{key:C,value:K},`Updated ${C}`)},[Oe,_t]),fn=A.useCallback(async C=>{await Oe(`setting:clear:${C}`,"/api/operations/settings/clear",{key:C},`Cleared override for ${C}`)},[Oe]),Sc=A.useCallback(async C=>{C.preventDefault();const K=Number.parseFloat(Wa);if(!Number.isFinite(K)||K<=0){R("Daily override requires a positive number (USD)");return}await Oe("daily-cost-override:set","/api/operations/daily-cost-override/set",{amountUsd:K},`Raised today's daily cap to $${K.toFixed(2)}`)},[Wa,Oe]),Ui=A.useCallback(async()=>{await Oe("daily-cost-override:clear","/api/operations/daily-cost-override/clear",{},"Cleared today's daily cap override")},[Oe]),Bi=A.useCallback(async()=>{window.confirm("Reset today's accumulated cost counters? Cost-blocked runs will be re-queued.")&&await Oe("daily-cost-reset","/api/operations/daily-cost-reset",{},"Reset today's daily costs and resumed cost-blocked runs")},[Oe]),Ss=A.useCallback(async C=>{C.preventDefault();const K=Number.parseInt(jt.issueNumber,10),ge=Number.parseFloat(jt.amount);if(!jt.repo||!Number.isFinite(K)||K<=0){R("Per-issue override requires a repo and a positive issue number");return}if(!Number.isFinite(ge)||ge<=0){R("Per-issue override requires a positive amount (USD)");return}await Oe("cost-override:set","/api/operations/cost-override/set",{repo:jt.repo,issueNumber:K,amountUsd:ge},`Set cost override for ${jt.repo}#${K} to $${ge.toFixed(2)}`)},[jt,Oe]),jc=A.useCallback(async()=>{const C=Number.parseInt(jt.issueNumber,10);if(!jt.repo||!Number.isFinite(C)||C<=0){R("Clearing a per-issue override requires a repo and a positive issue number");return}await Oe("cost-override:clear","/api/operations/cost-override/clear",{repo:jt.repo,issueNumber:C},`Cleared cost override for ${jt.repo}#${C}`)},[jt,Oe]),Nc=l==="issues"&&dt!==null,Ml=l==="projects"&&xl!==null;return r.jsxs("main",{"data-theme":"black",className:"min-h-screen bg-orch-admin",children:[Fa&&r.jsx("div",{className:"fixed inset-0 z-50 flex items-center justify-center bg-black/80 p-4",role:"dialog","aria-modal":"true","aria-labelledby":"norch-login-title",children:r.jsxs("div",{className:"w-full max-w-sm rounded-lg border border-slate-700 bg-slate-900 p-5 shadow-2xl",children:[r.jsx("h2",{id:"norch-login-title",className:"text-base font-semibold text-slate-100",children:"Sign in"}),r.jsxs("p",{className:"mt-1 text-xs text-slate-400",children:["Enter the ",r.jsx("code",{className:"font-mono",children:"NIGHT_ORCH_WEB_AUTH_TOKEN"})," configured on the server. The browser will keep you signed in via an HttpOnly cookie for 7 days."]}),r.jsx("input",{type:"password",autoFocus:!0,autoComplete:"off",value:xa,onChange:C=>wa(C.target.value),onKeyDown:C=>{C.key==="Enter"&&!me&&Ie()},className:"mt-3 w-full rounded border border-slate-600 bg-slate-950 px-3 py-2 font-mono text-sm text-slate-100 focus:border-orch-accent focus:outline-none",placeholder:"Paste token here"}),vl&&r.jsx("p",{className:"mt-2 text-xs text-rose-400",role:"alert",children:vl}),r.jsx("div",{className:"mt-4 flex justify-end gap-2",children:r.jsx("button",{type:"button",disabled:me,onClick:()=>{Ie()},className:"rounded bg-orch-accent px-3 py-2 text-sm font-medium text-slate-950 hover:bg-orch-accent/90 disabled:opacity-50",children:me?"Signing in…":"Sign in"})})]})}),r.jsx(My,{currentStateLabel:cn.label,currentStateToneClass:cn.toneClass,isWorking:Qn>0||P!==null||ja,socketConnected:z,lastRefreshAt:f?.generatedAt??null,pollIntervalSeconds:f?.config.pollIntervalSeconds??null,reposCount:sn.length,activeRuns:f?.status.activeRuns??0,runningRuns:Qn,queuedRuns:Xn,operationsEnabled:bt,activeOperation:P,isRefreshing:he,onRefresh:()=>{wi()},onPoll:bs,onSync:Nl,onCleanup:Rl,onGoToSettings:()=>{Rt("settings")},onLogout:qt&&Yt?()=>{Ci()}:void 0}),r.jsxs("div",{className:"mx-auto flex w-full max-w-[1550px] flex-col gap-5 px-4 pb-24 pt-5 sm:px-6 md:pb-6 lg:px-8",children:[Te&&r.jsx("div",{className:"alert alert-error shadow-sm",children:r.jsx("span",{children:Te})}),q&&r.jsx("div",{className:"alert alert-info shadow-sm",children:r.jsx("span",{children:q})}),r.jsxs("div",{className:"grid gap-5 md:grid-cols-[auto_minmax(0,1fr)] md:items-stretch md:gap-0",children:[r.jsx(Uy,{activePage:l,onPageChange:Rt}),r.jsxs("div",{className:"flex min-w-0 flex-col gap-5 md:pl-6",children:[l==="issues"&&(Nc?r.jsx(Iy,{run:jl,runId:dt??"",runEvents:le,operationsEnabled:bt,activeOperation:P,onRetry:wt,onRebase:ys,onContinue:Di,onDeleteEntry:xs,onResetCost:un,onBack:xc}):r.jsxs("div",{className:"flex flex-col gap-5",children:[r.jsx(Fu,{snapshot:f}),r.jsxs("section",{className:"grid gap-5 xl:grid-cols-[1.65fr_1fr]",children:[r.jsx(dx,{isLoading:Na,isLoadingMore:se,repos:sn,selectedRepo:k,onSelectedRepoChange:G,runsView:Z,onRunsViewChange:ga,filteredRuns:Ei,canLoadMore:st,onLoadMore:()=>{Et({append:!0,offset:ue})},selectedRunId:B,onOpenRun:Ai,statusTone:sg}),r.jsx(Wy,{operationsEnabled:bt,activeOperation:P,updateStatus:en,installMethod:f?.build?.installMethod,onUpdate:()=>{Tl()}})]})]})),l==="stats"&&r.jsx(Dx,{snapshot:f,socketConnected:z}),l==="projects"&&(Ml?r.jsx(rx,{snapshot:p,repo:xl??"",isLoading:x,operationsEnabled:bt,activeOperation:P,onLabelsInit:zi,onBack:Oi}):r.jsx(fx,{snapshot:p,isLoading:x,onOpenRepo:vs})),l==="settings"&&r.jsxs("div",{className:"flex flex-col gap-5",children:[r.jsx(Ty,{baseDailyBudgetUsd:f?.cost.dailyBudgetUsd??0,dailyBudgetOverrideUsd:f?.cost.dailyBudgetOverrideUsd??null,effectiveDailyBudgetUsd:f?.cost.effectiveDailyBudgetUsd??f?.cost.dailyBudgetUsd??0,todayCostUsd:f?.status.dailyCostUsd??0,activeOperation:P,dailyDraft:Wa,onDailyDraftChange:bc,onDailySubmit:C=>{Sc(C)},onDailyClear:()=>{Ui()},onDailyReset:()=>{Bi()},issueDraft:jt,repos:sn,onIssueDraftChange:C=>{vc(K=>({...K,...C}))},onIssueSubmit:C=>{Ss(C)},onIssueClear:()=>{jc()}}),r.jsx(wx,{settings:b?.settings??[],generatedAt:b?.generatedAt??null,isLoading:T,activeOperation:P,drafts:_t,onDraftChange:(C,K)=>{Gn(ge=>({...ge,[C]:K}))},onApply:C=>{Li(C)},onClear:C=>{fn(C)}})]})]})]}),r.jsxs("div",{className:"flex flex-col items-center gap-2 pb-16 pt-1 md:pb-2",children:[r.jsx("button",{type:"button",className:"btn btn-outline btn-sm border-primary/55 bg-base-200/45 text-primary hover:bg-primary/15",onClick:()=>{window.location.reload()},children:"UI reload"}),r.jsx("span",{className:"text-[10px] text-base-content/50",children:ps})]})]}),ja&&en&&r.jsx(Yx,{status:en,serverUnreachable:rn,elapsedSeconds:Nt})]})}const n1=["issues","stats","projects","settings"];function dg(l){return n1.some(o=>o===l)}function l1(){return r.jsx(lg,{})}function s1(){const{page:l}=hc({from:"/$page"});return r.jsx(nc,{activePage:l})}function i1(){const{page:l,detailId:o}=hc({from:"/$page/$detailId"});return l==="issues"?r.jsx(nc,{activePage:"issues",issueDetailRunId:o}):l==="projects"?r.jsx(nc,{activePage:"projects",projectDetailRepo:o}):r.jsx(nc,{activePage:l})}const gc=ty({component:l1}),o1=cf({getParentRoute:()=>gc,path:"/",loader:()=>yi({to:"/$page",params:{page:"issues"},replace:!0,throw:!0}),component:()=>null}),c1=cf({getParentRoute:()=>gc,path:"$page",loader:({params:l})=>{if(!dg(l.page))return yi({to:"/$page",params:{page:"issues"},replace:!0,throw:!0})},component:s1}),r1=cf({getParentRoute:()=>gc,path:"$page/$detailId",loader:({params:l})=>{if(!dg(l.page))return yi({to:"/$page",params:{page:"issues"},replace:!0,throw:!0});if(l.page!=="issues"&&l.page!=="projects")return yi({to:"/$page",params:{page:l.page},replace:!0,throw:!0})},component:i1}),u1=gc.addChildren([o1,c1,r1]);function f1(){return typeof window>"u"?pv({initialEntries:["/issues"]}):Gp()}function d1(l={}){return dy({routeTree:u1,history:l.history??f1(),isServer:l.isServer})}const h1=d1(),hg=document.getElementById("root");if(!hg)throw new Error("Root container not found");T0.createRoot(hg).render(r.jsx(us.StrictMode,{children:r.jsx(py,{router:h1})}));"serviceWorker"in navigator&&window.addEventListener("load",()=>{navigator.serviceWorker.register("/sw.js").catch(()=>{})});
|
|
17
|
+
`;function qx({status:l,serverUnreachable:o=!1,elapsedSeconds:i}){const u=Ux(l.installMethod);return r.jsxs("div",{"data-theme":"black",style:{position:"fixed",inset:0,zIndex:9999,display:"grid",placeItems:"center",backgroundColor:"rgba(0, 0, 0, 0.78)",backdropFilter:"blur(4px)",padding:"1rem"},role:"dialog","aria-modal":"true","aria-label":"Self update in progress",children:[r.jsx("style",{children:Hx}),r.jsxs("section",{className:"w-full max-w-xl rounded-box border border-base-300/80 bg-base-100/95 p-5 shadow-2xl",children:[r.jsx("h2",{className:"text-lg font-semibold",children:"Applying self-update"}),(l.previousCommit||l.targetCommit)&&r.jsxs("p",{className:"mt-1 font-mono text-xs text-base-content/60",children:[l.previousCommit?.slice(0,8),l.targetCommit&&r.jsxs(r.Fragment,{children:[" → ",l.targetCommit.slice(0,8)]})]}),r.jsxs("div",{className:"mt-3 flex items-center gap-3 text-sm text-base-content/80",children:[r.jsx("span",{className:"loading loading-spinner loading-md text-info"}),r.jsxs("span",{children:["Update in progress",i!=null&&i>0&&r.jsxs(r.Fragment,{children:[" — ",kx(i)]})]})]}),r.jsx("ul",{className:"steps steps-vertical mt-4 w-full",children:u.map(f=>{const h=Bx(f.id,l.state,u),p=h==="done"?"step step-success":h==="active"?"step step-info update-step-active":"step",v=h==="done"?"✓":h==="active"?"●":"○";return r.jsx("li",{className:p,"data-content":v,children:r.jsx("span",{className:h==="pending"?"text-base-content/50":void 0,children:f.label})},f.id)})}),o&&r.jsxs("div",{className:"mt-4 flex items-center gap-2 rounded border border-info/35 bg-info/10 p-2.5 text-xs text-info-content",children:[r.jsx("span",{className:"loading loading-dots loading-xs"}),r.jsx("span",{children:"Server is restarting — reconnecting automatically..."})]}),l.state==="rolling-back"&&r.jsx("div",{className:"mt-4 rounded border border-warning/35 bg-warning/10 p-2 text-xs text-warning-content",children:"Health checks failed. Rolling back to the previous known-good build."}),r.jsx("p",{className:"mt-4 text-xs text-base-content/70",children:"Dashboard controls are temporarily blocked. This page refreshes automatically after a healthy restart."})]})]})}function Yx(l){return eg.createPortal(r.jsx(qx,{...l}),document.body)}function Gx(l){if(!l||typeof l!="object")return null;const o=l.runId,i=l.repo,u=l.issueNumber,f=l.events,h=l.lastEventId;return typeof o!="string"&&typeof i!="string"||!Array.isArray(f)||typeof h!="number"?null:{...typeof o=="string"?{runId:o}:{},...typeof i=="string"?{repo:i}:{},...typeof u=="number"?{issueNumber:u}:{},events:f.filter(p=>!p||typeof p!="object"?!1:typeof p.id=="number"),lastEventId:h}}function Vx(l,o){const i=new Set(l.map(f=>f.id)),u=[...l];for(const f of o)i.has(f.id)||(i.add(f.id),u.push(f));return u.sort((f,h)=>f.id-h.id),u}const Qx="Start self-update now? This pulls latest code, rebuilds, and restarts Night-Orch services.",Xx="Start self-update now? This installs the latest version from npm and restarts Night-Orch services.";function Zx(l,o="unknown"){return l(o==="npm"?Xx:Qx)}const Kx=6e3;function $x(l){return{startedAtMs:l,sawActiveState:!1}}function cc(){return{startedAtMs:null,sawActiveState:!1}}function rc(l){return l!=null&&l.state!=="idle"&&l.state!=="failed"}function Jx(l){return rc(l)?l:null}function Px(l,o,i){return l.startedAtMs==null||l.sawActiveState?!0:o-l.startedAtMs>=i}function Ix(l,o,i,u){return rc(l)?{nextTransition:{startedAtMs:o.startedAtMs,sawActiveState:!0},nextStatus:l,errorMessage:null,shouldReload:!1}:Px(o,i,u)?l.state==="failed"?{nextTransition:cc(),nextStatus:l,errorMessage:`Update failed: ${l.error??"unknown error"}`,shouldReload:!1}:{nextTransition:cc(),nextStatus:l,errorMessage:null,shouldReload:l.state==="idle"}:{nextTransition:o,nextStatus:null,errorMessage:null,shouldReload:!1}}async function Fx(l){const o=await l.fetchUpdateStatus();if(!o)return l.transition;const i=Ix(o,l.transition,l.nowMs?l.nowMs():Date.now(),l.graceMs??Kx);return i.nextStatus&&l.onStatus(i.nextStatus),i.errorMessage&&l.onError(i.errorMessage),i.shouldReload&&l.onReload(),i.nextTransition}const Qu="x-night-orch-intent",Xu="mutate",Wx="x-night-orch-web-token",e1="0.15.0",t1=6e4,Ep=20;function Cp(l){if(!l)return null;try{return decodeURIComponent(l)}catch{return l}}function a1(l){return l===null?"null":typeof l=="boolean"?l?"true":"false":Array.isArray(l)||typeof l=="object"&&l!==null?JSON.stringify(l):String(l)}function nc({activePage:l,issueDetailRunId:o=null,projectDetailRepo:i=null}){const u=of(),[f,h]=A.useState(null),[p,v]=A.useState(null),[b,m]=A.useState(null),[j,y]=A.useState(!0),[x,S]=A.useState(!0),[T,E]=A.useState(!0),[z,_]=A.useState(!1),[k,G]=A.useState("all"),[Z,F]=A.useState("active"),[ee,Q]=A.useState([]),[W,J]=A.useState(!1),[se,X]=A.useState(!1),[ue,de]=A.useState(0),[Ye,_e]=A.useState(!1),[B,$]=A.useState(""),[le,Re]=A.useState([]),[Te,R]=A.useState(null),[q,I]=A.useState(null),[P,ce]=A.useState(null),[he,ye]=A.useState(!1),[Ae,ke]=A.useState(null),[xt,da]=A.useState(!1),[bt,Yn]=A.useState(!0),[qt,Ia]=A.useState(!1),[Yt,St]=A.useState(!1),[Fa,rt]=A.useState(!1),[xa,wa]=A.useState(""),[vl,ha]=A.useState(null),[me,lt]=A.useState(!1),[_t,Gn]=A.useState({}),[Wa,bc]=A.useState(""),[jt,vc]=A.useState({repo:"",issueNumber:"",amount:""}),[en,ma]=A.useState(null),[ut,Sa]=A.useState(null),[Nt,Ti]=A.useState(0),[yc,Mi]=A.useState(null),Gt=A.useRef(null),tn=A.useRef(null),an=A.useRef(""),pa=A.useRef(""),Ft=A.useRef(cc()),nn=A.useRef(Date.now()),_i=A.useRef(bt),hs=A.useRef(P),yl=A.useRef(Ae),ln=A.useRef(Yt),Vn=A.useRef(0),sn=f?.config.repos??[],on=f?.runs.runs??[],Qn=f?.stats.overview.runningRuns??0,Xn=f?.stats.overview.queuedRuns??0,ja=rc(en),ms=A.useMemo(()=>k==="all"?on:on.filter(C=>C.repo===k),[on,k]),Ei=A.useMemo(()=>Z==="active"?ms:ee,[ms,ee,Z]),Na=Z==="active"?j:W,st=Z!=="active"&&Ye,ft=A.useMemo(()=>{const C=new Map;for(const K of on)C.set(K.runId,K);for(const K of ee)C.set(K.runId,K);return C},[on,ee]),dt=A.useMemo(()=>Cp(o),[o]),xl=A.useMemo(()=>Cp(i),[i]),Sl=A.useMemo(()=>dt?ft.get(dt)??null:null,[dt,ft]),jl=Sl??yc,Wt=jl?`${jl.repo}#${jl.issue}`:"",cn=A.useMemo(()=>ja?{label:`updating ${en?.state??"starting"}`,toneClass:"badge-warning"}:xt?z?Qn>0?{label:"processing",toneClass:"badge-success"}:Xn>0?{label:"queued",toneClass:"badge-info"}:{label:"idle",toneClass:"badge-neutral"}:{label:"reconnecting",toneClass:"badge-error"}:{label:"initializing",toneClass:"badge-neutral"},[xt,Xn,Qn,z,ja,en?.state]),ps=A.useMemo(()=>{const C=f?.build?.version??e1,K=f?.build?.gitSha;return f?.build?.installMethod==="git"&&K?`v${C} · ${K.slice(0,8)}`:`v${C}`},[f?.build]),Vt=A.useCallback(async()=>{const C=await fetch("/api/dashboard");if(!C.ok)throw new Error(`Failed to load dashboard (${C.status})`);const K=await C.json();h(K)},[]),Et=A.useCallback(async(C={})=>{if(Z==="active")return;const K=C.append??!1,ge=++Vn.current,He=K?C.offset??0:0;K?X(!0):(Q([]),de(0),_e(!1),J(!0),X(!1));try{const re=new URLSearchParams;k!=="all"&&re.set("repo",k),re.set("view",Z),re.set("limit",String(Ep)),re.set("offset",String(He));const Ge=await fetch(`/api/runs?${re.toString()}`);if(!Ge.ok)throw new Error(`Failed to load runs (${Ge.status})`);const ve=await Ge.json();if(ge!==Vn.current)return;const vt=typeof ve.hasMore=="boolean"?ve.hasMore:ve.runs.length>=Ep,ot=typeof ve.nextOffset=="number"?ve.nextOffset:He+ve.runs.length;Q(At=>{if(!K)return ve.runs;const _l=new Set(At.map(Ot=>Ot.runId)),dn=[...At];for(const Ot of ve.runs)_l.has(Ot.runId)||(_l.add(Ot.runId),dn.push(Ot));return dn}),_e(vt),de(ot)}catch(re){ge===Vn.current&&R(re.message)}finally{ge===Vn.current&&(J(!1),X(!1))}},[Z,k]),ea=A.useCallback(async()=>{const C=await fetch("/api/update-status");return C.ok?await C.json():null},[]),Aa=A.useCallback(async()=>{try{const C=await fetch("/api/session");if(!C.ok)throw new Error(`Failed to initialize web session (${C.status})`);const K=await C.json();Yn(K.operationsEnabled??!0);const ge=K.requiresExternalAuth??K.mutationToken===null;if(Ia(ge),!ge&&K.mutationToken){ke(K.mutationToken),St(!0);return}try{const He=await fetch("/api/auth/session");if(He.ok&&(await He.json()).authenticated===!0){St(!0);return}}catch{}St(!1),rt(!0)}finally{da(!0)}},[]),Ie=A.useCallback(async()=>{if(!xa.trim()){ha("Token is required.");return}lt(!0),ha(null);try{const C=await fetch("/api/auth/session",{method:"POST",headers:{"Content-Type":"application/json",[Qu]:Xu},body:JSON.stringify({token:xa.trim()})});if(C.status===204){St(!0),rt(!1),wa(""),ha(null);return}if(C.status===401){ha("Invalid token. Check NIGHT_ORCH_WEB_AUTH_TOKEN on the server.");return}ha(`Login failed (${C.status}).`)}catch(C){ha(C.message)}finally{lt(!1)}},[xa]),Ci=A.useCallback(async()=>{try{await fetch("/api/auth/logout",{method:"POST",headers:{"Content-Type":"application/json",[Qu]:Xu}})}catch{}St(!1),rt(!0)},[]),Zn=A.useCallback(async()=>{const C=await fetch("/api/projects");if(!C.ok)throw new Error(`Failed to load projects (${C.status})`);const K=await C.json();v(K)},[]),Ct=A.useCallback(async()=>{const C=await fetch("/api/settings");if(!C.ok)throw new Error(`Failed to load settings (${C.status})`);const K=await C.json();m(K),Gn(Object.fromEntries(K.settings.map(ge=>[ge.key,a1(ge.effectiveValue)])))},[]);A.useEffect(()=>{(async()=>{try{y(!0),S(!0),E(!0),await Promise.all([Vt(),Aa(),Zn(),Ct()])}catch(C){R(C.message)}finally{y(!1),S(!1),E(!1)}})()},[Vt,Zn,Aa,Ct]),A.useEffect(()=>{let C=!1;return(async()=>{try{const K=await ea();if(!K||C)return;rc(K)?Ft.current={startedAtMs:null,sawActiveState:!0}:Ft.current=cc(),ma(ge=>ge&&!K.installMethod?{...K,installMethod:ge.installMethod}:K)}catch{}})(),()=>{C=!0}},[ea]),A.useEffect(()=>{G(C=>C==="all"||sn.includes(C)?C:"all")},[sn]),A.useEffect(()=>{if(Z==="active"){Vn.current+=1,Q([]),de(0),_e(!1),J(!1),X(!1);return}Et({append:!1,offset:0})},[Et,Z]),A.useEffect(()=>{_i.current=bt},[bt]),A.useEffect(()=>{hs.current=P},[P]),A.useEffect(()=>{yl.current=Ae},[Ae]),A.useEffect(()=>{ln.current=Yt},[Yt]),A.useEffect(()=>{dt&&$(dt)},[dt]),A.useEffect(()=>{if(!dt){Mi(null);return}Sl&&Mi(Sl)},[dt,Sl]),A.useEffect(()=>{if(!xt)return;let C=!1,K=2e3;const ge=()=>{const He=window.location.protocol==="https:"?"wss":"ws",re=new WebSocket(`${He}://${window.location.host}/ws`);Gt.current=re,re.onopen=()=>{if(C)return;K=2e3,_(!0),re.send(JSON.stringify({type:"refresh"}));const Ge=an.current;if(Ge){const[ve,vt]=Ge.split("#"),ot=Number.parseInt(vt??"",10);ve&&Number.isInteger(ot)&&ot>0&&re.send(JSON.stringify({type:"subscribe-issue-events",repo:ve,issueNumber:ot,since:0}))}},re.onmessage=Ge=>{try{const ve=JSON.parse(Ge.data);if(ve.type==="snapshot"&&ve.payload){h(ve.payload);return}if(ve.type==="run-events"&&ve.payload)return;if(ve.type==="issue-events"&&ve.payload){const vt=Gx(ve.payload);if(!vt||`${vt.repo}#${vt.issueNumber}`!==an.current)return;Re(ot=>Vx(ot,vt.events));return}ve.type==="error"&&ve.error&&I(ve.error)}catch{}},re.onclose=()=>{Gt.current===re&&(Gt.current=null),_(!1),!C&&(tn.current=window.setTimeout(ge,K),K=Math.min(K*2,3e4))},re.onerror=()=>{re.close()}};return ge(),()=>{C=!0,tn.current!==null&&window.clearTimeout(tn.current),Gt.current?.close(),Gt.current=null}},[xt]),A.useEffect(()=>{an.current=Wt;const C=pa.current;C&&C!==Wt?Re([]):!C&&Wt&&Re([]);const K=Gt.current;if(!K||K.readyState!==WebSocket.OPEN){pa.current=Wt;return}if(C&&C!==Wt){const[ge,He]=C.split("#"),re=Number.parseInt(He??"",10);ge&&Number.isInteger(re)&&re>0&&K.send(JSON.stringify({type:"unsubscribe-issue-events",repo:ge,issueNumber:re}))}if(Wt){const[ge,He]=Wt.split("#"),re=Number.parseInt(He??"",10);ge&&Number.isInteger(re)&&re>0&&K.send(JSON.stringify({type:"subscribe-issue-events",repo:ge,issueNumber:re,since:0}))}pa.current=Wt},[Wt,z]);const[rn,gs]=A.useState(!1);A.useEffect(()=>{if(!ja)return;let C=!1,K=0;const ge=async()=>{try{const re=await Fx({fetchUpdateStatus:ea,transition:Ft.current,onStatus:Ge=>{C||(K=0,gs(!1),ma(ve=>ve&&!Ge.installMethod?{...Ge,installMethod:ve.installMethod}:Ge))},onError:Ge=>{C||(K=0,gs(!1),R(Ge))},onReload:()=>{C||window.location.reload()}});C||(Ft.current=re)}catch{K++,!C&&K>=2&&(gs(!0),ma(re=>{if(!re)return re;const Ge=re.installMethod==="npm"?Lx:zx,ve=Ge.indexOf(re.state);if(ve<0||ve>=Ge.length-1)return re;if(K*2>=4*(ve+1)){const ot=Ge[ve+1];if(ot)return{...re,state:ot}}return re}))}};ge();const He=window.setInterval(()=>{ge()},2e3);return()=>{C=!0,window.clearInterval(He)}},[ea,ja]),A.useEffect(()=>{if(!ut)return;const C=window.setInterval(()=>{Ti(Math.floor((Date.now()-ut)/1e3))},1e3);return()=>window.clearInterval(C)},[ut]);const Oe=A.useCallback(async(C,K,ge,He,re)=>{try{if(ce(C),R(null),!Ae&&!Yt)throw rt(!0),new Error("Log in first.");if(!bt)throw new Error("Web operations are disabled by server policy.");const Ge={"Content-Type":"application/json",[Qu]:Xu};Ae&&(Ge[Wx]=Ae);const ve=await fetch(K,{method:"POST",headers:Ge,credentials:"same-origin",body:JSON.stringify(ge)});if(ve.status===401&&qt)throw St(!1),rt(!0),new Error("Session expired. Log in again.");const vt=await ve.json();if(!ve.ok){const At=typeof vt.error=="string"?vt.error:`Operation failed (${ve.status})`;throw new Error(At)}const ot=Sy(vt)??He;return I(ot),(re?.refreshAfterSuccess??!0)&&(await Promise.all([Vt(),Ct()]),Z!=="active"&&await Et({append:!1,offset:0})),!0}catch(Ge){return R(Ge.message),!1}finally{ce(null)}},[Vt,Et,Ct,bt,qt,Z,Yt,Ae]),wi=A.useCallback(async()=>{try{ye(!0),R(null);const C=[Vt(),Zn(),Ct()];l==="issues"&&Z!=="active"&&C.push(Et({append:!1,offset:0})),await Promise.all(C),Gt.current?.readyState===WebSocket.OPEN&&Gt.current.send(JSON.stringify({type:"refresh"}))}catch(C){R(C.message)}finally{ye(!1)}},[l,Vt,Et,Zn,Ct,Z]),bs=A.useCallback(()=>{nn.current=Date.now(),Oe("poll","/api/operations/poll",{},"Manual poll requested")},[Oe]);A.useEffect(()=>{const C=()=>{if(document.visibilityState!=="visible")return;const K=Date.now()-nn.current>=t1,ge=_i.current&&hs.current===null&&(yl.current!==null||ln.current);K&&ge&&bs()};return document.addEventListener("visibilitychange",C),()=>{document.removeEventListener("visibilitychange",C)}},[bs]);const Nl=A.useCallback(()=>{Oe("sync","/api/operations/sync",{},"Sync completed")},[Oe]),Rl=A.useCallback(()=>{Oe("cleanup","/api/operations/cleanup",{},"Cleanup completed")},[Oe]),ga=A.useCallback(C=>{C!==Z&&(C!=="active"&&(J(!0),X(!1)),F(C))},[Z]),Rt=A.useCallback(C=>{u({to:"/$page",params:{page:C}})},[u]),Ai=A.useCallback(C=>{$(C),u({to:"/$page/$detailId",params:{page:"issues",detailId:C}})},[u]),xc=A.useCallback(()=>{u({to:"/$page",params:{page:"issues"}})},[u]),vs=A.useCallback(C=>{u({to:"/$page/$detailId",params:{page:"projects",detailId:C}})},[u]),Oi=A.useCallback(()=>{u({to:"/$page",params:{page:"projects"}})},[u]),Tl=A.useCallback(async()=>{const C=f?.build?.installMethod;if(!(!Zx(He=>window.confirm(He),C==="git"||C==="npm"?C:"unknown")||!await Oe("update","/api/operations/update",{},"Update initiated - pulling and rebuilding...",{refreshAfterSuccess:!1}))){Ft.current=$x(Date.now()),ma({state:"draining",installMethod:C==="git"||C==="npm"?C:void 0}),Sa(Date.now()),Ti(0);try{const He=await ea();if(!He)return;const re=Jx(He);re&&(Ft.current={startedAtMs:Ft.current.startedAtMs,sawActiveState:!0},ma(re))}catch{}}},[ea,Oe]),ta=A.useCallback(async(C,K)=>{window.confirm(K.confirmMessage)&&await Oe(K.operationName,K.endpoint,{repo:C.repo,issueNumber:C.issue,...K.payload},K.fallbackMessage)},[Oe]),wt=A.useCallback((C,K)=>{ta(C,{operationName:"retry",endpoint:"/api/operations/retry",confirmMessage:`Queue fresh retry for ${C.repo}#${C.issue}${K?` with ${K} strategy`:""}?`,fallbackMessage:`Fresh retry queued for ${C.repo}#${C.issue}`,payload:K?{strategy:K}:void 0})},[ta]),ys=A.useCallback((C,K)=>{ta(C,{operationName:"rebase",endpoint:"/api/operations/rebase",confirmMessage:`Queue rebase for ${C.repo}#${C.issue}${K?` with ${K} strategy`:""}?`,fallbackMessage:`Rebase queued for ${C.repo}#${C.issue}`,payload:K?{strategy:K}:void 0})},[ta]),Di=A.useCallback((C,K)=>{ta(C,{operationName:"continue",endpoint:"/api/operations/continue",confirmMessage:`Queue continue pass for ${C.repo}#${C.issue}${K?` with ${K} strategy`:""}?`,fallbackMessage:`Continue pass queued for ${C.repo}#${C.issue}`,payload:K?{strategy:K}:void 0})},[ta]),xs=A.useCallback((C,K)=>{ta(C,{operationName:"delete-entry",endpoint:"/api/operations/delete-entry",confirmMessage:K?`Force delete local entry for ${C.repo}#${C.issue}? This can remove run-local state while shared issue state is still active elsewhere.`:`Delete local entry for ${C.repo}#${C.issue}?`,fallbackMessage:K?`Force-deleted local entry for ${C.repo}#${C.issue}`:`Deleted local entry for ${C.repo}#${C.issue}`,payload:{force:K}})},[ta]),un=A.useCallback(C=>{ta(C,{operationName:"cost-reset",endpoint:"/api/operations/cost-reset",confirmMessage:`Reset accumulated costs for ${C.repo}#${C.issue}? If cost-blocked, it will be re-queued.`,fallbackMessage:`Reset costs for ${C.repo}#${C.issue}`})},[ta]),zi=A.useCallback(C=>{window.confirm(`Bootstrap orchestration labels for ${C}?`)&&Oe("labels-init","/api/operations/labels-init",{repo:C},`Labels initialized for ${C}`)},[Oe]),Li=A.useCallback(async C=>{const K=_t[C];if(K===void 0){R(`No draft value found for ${C}`);return}await Oe(`setting:set:${C}`,"/api/operations/settings/set",{key:C,value:K},`Updated ${C}`)},[Oe,_t]),fn=A.useCallback(async C=>{await Oe(`setting:clear:${C}`,"/api/operations/settings/clear",{key:C},`Cleared override for ${C}`)},[Oe]),Sc=A.useCallback(async C=>{C.preventDefault();const K=Number.parseFloat(Wa);if(!Number.isFinite(K)||K<=0){R("Daily override requires a positive number (USD)");return}await Oe("daily-cost-override:set","/api/operations/daily-cost-override/set",{amountUsd:K},`Raised today's daily cap to $${K.toFixed(2)}`)},[Wa,Oe]),Ui=A.useCallback(async()=>{await Oe("daily-cost-override:clear","/api/operations/daily-cost-override/clear",{},"Cleared today's daily cap override")},[Oe]),Bi=A.useCallback(async()=>{window.confirm("Reset today's accumulated cost counters? Cost-blocked runs will be re-queued.")&&await Oe("daily-cost-reset","/api/operations/daily-cost-reset",{},"Reset today's daily costs and resumed cost-blocked runs")},[Oe]),Ss=A.useCallback(async C=>{C.preventDefault();const K=Number.parseInt(jt.issueNumber,10),ge=Number.parseFloat(jt.amount);if(!jt.repo||!Number.isFinite(K)||K<=0){R("Per-issue override requires a repo and a positive issue number");return}if(!Number.isFinite(ge)||ge<=0){R("Per-issue override requires a positive amount (USD)");return}await Oe("cost-override:set","/api/operations/cost-override/set",{repo:jt.repo,issueNumber:K,amountUsd:ge},`Set cost override for ${jt.repo}#${K} to $${ge.toFixed(2)}`)},[jt,Oe]),jc=A.useCallback(async()=>{const C=Number.parseInt(jt.issueNumber,10);if(!jt.repo||!Number.isFinite(C)||C<=0){R("Clearing a per-issue override requires a repo and a positive issue number");return}await Oe("cost-override:clear","/api/operations/cost-override/clear",{repo:jt.repo,issueNumber:C},`Cleared cost override for ${jt.repo}#${C}`)},[jt,Oe]),Nc=l==="issues"&&dt!==null,Ml=l==="projects"&&xl!==null;return r.jsxs("main",{"data-theme":"black",className:"min-h-screen bg-orch-admin",children:[Fa&&r.jsx("div",{className:"fixed inset-0 z-50 flex items-center justify-center bg-black/80 p-4",role:"dialog","aria-modal":"true","aria-labelledby":"norch-login-title",children:r.jsxs("div",{className:"w-full max-w-sm rounded-lg border border-slate-700 bg-slate-900 p-5 shadow-2xl",children:[r.jsx("h2",{id:"norch-login-title",className:"text-base font-semibold text-slate-100",children:"Sign in"}),r.jsxs("p",{className:"mt-1 text-xs text-slate-400",children:["Enter the ",r.jsx("code",{className:"font-mono",children:"NIGHT_ORCH_WEB_AUTH_TOKEN"})," configured on the server. The browser will keep you signed in via an HttpOnly cookie for 7 days."]}),r.jsx("input",{type:"password",autoFocus:!0,autoComplete:"off",value:xa,onChange:C=>wa(C.target.value),onKeyDown:C=>{C.key==="Enter"&&!me&&Ie()},className:"mt-3 w-full rounded border border-slate-600 bg-slate-950 px-3 py-2 font-mono text-sm text-slate-100 focus:border-orch-accent focus:outline-none",placeholder:"Paste token here"}),vl&&r.jsx("p",{className:"mt-2 text-xs text-rose-400",role:"alert",children:vl}),r.jsx("div",{className:"mt-4 flex justify-end gap-2",children:r.jsx("button",{type:"button",disabled:me,onClick:()=>{Ie()},className:"rounded bg-orch-accent px-3 py-2 text-sm font-medium text-slate-950 hover:bg-orch-accent/90 disabled:opacity-50",children:me?"Signing in…":"Sign in"})})]})}),r.jsx(My,{currentStateLabel:cn.label,currentStateToneClass:cn.toneClass,isWorking:Qn>0||P!==null||ja,socketConnected:z,lastRefreshAt:f?.generatedAt??null,pollIntervalSeconds:f?.config.pollIntervalSeconds??null,reposCount:sn.length,activeRuns:f?.status.activeRuns??0,runningRuns:Qn,queuedRuns:Xn,operationsEnabled:bt,activeOperation:P,isRefreshing:he,onRefresh:()=>{wi()},onPoll:bs,onSync:Nl,onCleanup:Rl,onGoToSettings:()=>{Rt("settings")},onLogout:qt&&Yt?()=>{Ci()}:void 0}),r.jsxs("div",{className:"mx-auto flex w-full max-w-[1550px] flex-col gap-5 px-4 pb-24 pt-5 sm:px-6 md:pb-6 lg:px-8",children:[Te&&r.jsx("div",{className:"alert alert-error shadow-sm",children:r.jsx("span",{children:Te})}),q&&r.jsx("div",{className:"alert alert-info shadow-sm",children:r.jsx("span",{children:q})}),r.jsxs("div",{className:"grid gap-5 md:grid-cols-[auto_minmax(0,1fr)] md:items-stretch md:gap-0",children:[r.jsx(Uy,{activePage:l,onPageChange:Rt}),r.jsxs("div",{className:"flex min-w-0 flex-col gap-5 md:pl-6",children:[l==="issues"&&(Nc?r.jsx(Iy,{run:jl,runId:dt??"",runEvents:le,operationsEnabled:bt,activeOperation:P,onRetry:wt,onRebase:ys,onContinue:Di,onDeleteEntry:xs,onResetCost:un,onBack:xc}):r.jsxs("div",{className:"flex flex-col gap-5",children:[r.jsx(Fu,{snapshot:f}),r.jsxs("section",{className:"grid gap-5 xl:grid-cols-[1.65fr_1fr]",children:[r.jsx(dx,{isLoading:Na,isLoadingMore:se,repos:sn,selectedRepo:k,onSelectedRepoChange:G,runsView:Z,onRunsViewChange:ga,filteredRuns:Ei,canLoadMore:st,onLoadMore:()=>{Et({append:!0,offset:ue})},selectedRunId:B,onOpenRun:Ai,statusTone:sg}),r.jsx(Wy,{operationsEnabled:bt,activeOperation:P,updateStatus:en,installMethod:f?.build?.installMethod,onUpdate:()=>{Tl()}})]})]})),l==="stats"&&r.jsx(Dx,{snapshot:f,socketConnected:z}),l==="projects"&&(Ml?r.jsx(rx,{snapshot:p,repo:xl??"",isLoading:x,operationsEnabled:bt,activeOperation:P,onLabelsInit:zi,onBack:Oi}):r.jsx(fx,{snapshot:p,isLoading:x,onOpenRepo:vs})),l==="settings"&&r.jsxs("div",{className:"flex flex-col gap-5",children:[r.jsx(Ty,{baseDailyBudgetUsd:f?.cost.dailyBudgetUsd??0,dailyBudgetOverrideUsd:f?.cost.dailyBudgetOverrideUsd??null,effectiveDailyBudgetUsd:f?.cost.effectiveDailyBudgetUsd??f?.cost.dailyBudgetUsd??0,todayCostUsd:f?.status.dailyCostUsd??0,activeOperation:P,dailyDraft:Wa,onDailyDraftChange:bc,onDailySubmit:C=>{Sc(C)},onDailyClear:()=>{Ui()},onDailyReset:()=>{Bi()},issueDraft:jt,repos:sn,onIssueDraftChange:C=>{vc(K=>({...K,...C}))},onIssueSubmit:C=>{Ss(C)},onIssueClear:()=>{jc()}}),r.jsx(wx,{settings:b?.settings??[],generatedAt:b?.generatedAt??null,isLoading:T,activeOperation:P,drafts:_t,onDraftChange:(C,K)=>{Gn(ge=>({...ge,[C]:K}))},onApply:C=>{Li(C)},onClear:C=>{fn(C)}})]})]})]}),r.jsxs("div",{className:"flex flex-col items-center gap-2 pb-16 pt-1 md:pb-2",children:[r.jsx("button",{type:"button",className:"btn btn-outline btn-sm border-primary/55 bg-base-200/45 text-primary hover:bg-primary/15",onClick:()=>{window.location.reload()},children:"UI reload"}),r.jsx("span",{className:"text-[10px] text-base-content/50",children:ps})]})]}),ja&&en&&r.jsx(Yx,{status:en,serverUnreachable:rn,elapsedSeconds:Nt})]})}const n1=["issues","stats","projects","settings"];function dg(l){return n1.some(o=>o===l)}function l1(){return r.jsx(lg,{})}function s1(){const{page:l}=hc({from:"/$page"});return r.jsx(nc,{activePage:l})}function i1(){const{page:l,detailId:o}=hc({from:"/$page/$detailId"});return l==="issues"?r.jsx(nc,{activePage:"issues",issueDetailRunId:o}):l==="projects"?r.jsx(nc,{activePage:"projects",projectDetailRepo:o}):r.jsx(nc,{activePage:l})}const gc=ty({component:l1}),o1=cf({getParentRoute:()=>gc,path:"/",loader:()=>yi({to:"/$page",params:{page:"issues"},replace:!0,throw:!0}),component:()=>null}),c1=cf({getParentRoute:()=>gc,path:"$page",loader:({params:l})=>{if(!dg(l.page))return yi({to:"/$page",params:{page:"issues"},replace:!0,throw:!0})},component:s1}),r1=cf({getParentRoute:()=>gc,path:"$page/$detailId",loader:({params:l})=>{if(!dg(l.page))return yi({to:"/$page",params:{page:"issues"},replace:!0,throw:!0});if(l.page!=="issues"&&l.page!=="projects")return yi({to:"/$page",params:{page:l.page},replace:!0,throw:!0})},component:i1}),u1=gc.addChildren([o1,c1,r1]);function f1(){return typeof window>"u"?pv({initialEntries:["/issues"]}):Gp()}function d1(l={}){return dy({routeTree:u1,history:l.history??f1(),isServer:l.isServer})}const h1=d1(),hg=document.getElementById("root");if(!hg)throw new Error("Root container not found");T0.createRoot(hg).render(r.jsx(us.StrictMode,{children:r.jsx(py,{router:h1})}));"serviceWorker"in navigator&&window.addEventListener("load",()=>{navigator.serviceWorker.register("/sw.js").catch(()=>{})});
|
package/web/dist/index.html
CHANGED
|
@@ -15,7 +15,7 @@
|
|
|
15
15
|
rel="stylesheet"
|
|
16
16
|
/>
|
|
17
17
|
<title>night-orch web</title>
|
|
18
|
-
<script type="module" crossorigin src="/assets/index-
|
|
18
|
+
<script type="module" crossorigin src="/assets/index-CmILkIG5.js"></script>
|
|
19
19
|
<link rel="stylesheet" crossorigin href="/assets/index-COWEqCaW.css">
|
|
20
20
|
</head>
|
|
21
21
|
<body>
|