@made-by-moonlight/athene-core 0.9.1
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/LICENSE +22 -0
- package/README.md +241 -0
- package/dist/activity-events.d.ts +42 -0
- package/dist/activity-events.d.ts.map +1 -0
- package/dist/activity-events.js +192 -0
- package/dist/activity-events.js.map +1 -0
- package/dist/activity-log.d.ts +71 -0
- package/dist/activity-log.d.ts.map +1 -0
- package/dist/activity-log.js +203 -0
- package/dist/activity-log.js.map +1 -0
- package/dist/activity-signal.d.ts +20 -0
- package/dist/activity-signal.d.ts.map +1 -0
- package/dist/activity-signal.js +91 -0
- package/dist/activity-signal.js.map +1 -0
- package/dist/agent-report.d.ts +148 -0
- package/dist/agent-report.d.ts.map +1 -0
- package/dist/agent-report.js +516 -0
- package/dist/agent-report.js.map +1 -0
- package/dist/agent-selection.d.ts +31 -0
- package/dist/agent-selection.d.ts.map +1 -0
- package/dist/agent-selection.js +69 -0
- package/dist/agent-selection.js.map +1 -0
- package/dist/agent-workspace-hooks.d.ts +74 -0
- package/dist/agent-workspace-hooks.d.ts.map +1 -0
- package/dist/agent-workspace-hooks.js +988 -0
- package/dist/agent-workspace-hooks.js.map +1 -0
- package/dist/atomic-write.d.ts +6 -0
- package/dist/atomic-write.d.ts.map +1 -0
- package/dist/atomic-write.js +49 -0
- package/dist/atomic-write.js.map +1 -0
- package/dist/cleanup-stack.d.ts +37 -0
- package/dist/cleanup-stack.d.ts.map +1 -0
- package/dist/cleanup-stack.js +45 -0
- package/dist/cleanup-stack.js.map +1 -0
- package/dist/code-review-manager.d.ts +118 -0
- package/dist/code-review-manager.d.ts.map +1 -0
- package/dist/code-review-manager.js +719 -0
- package/dist/code-review-manager.js.map +1 -0
- package/dist/code-review-store.d.ts +114 -0
- package/dist/code-review-store.d.ts.map +1 -0
- package/dist/code-review-store.js +346 -0
- package/dist/code-review-store.js.map +1 -0
- package/dist/config-generator.d.ts +84 -0
- package/dist/config-generator.d.ts.map +1 -0
- package/dist/config-generator.js +295 -0
- package/dist/config-generator.js.map +1 -0
- package/dist/config.d.ts +55 -0
- package/dist/config.d.ts.map +1 -0
- package/dist/config.js +852 -0
- package/dist/config.js.map +1 -0
- package/dist/daemon-children.d.ts +55 -0
- package/dist/daemon-children.d.ts.map +1 -0
- package/dist/daemon-children.js +435 -0
- package/dist/daemon-children.js.map +1 -0
- package/dist/dashboard-notifications.d.ts +42 -0
- package/dist/dashboard-notifications.d.ts.map +1 -0
- package/dist/dashboard-notifications.js +123 -0
- package/dist/dashboard-notifications.js.map +1 -0
- package/dist/events-db.d.ts +39 -0
- package/dist/events-db.d.ts.map +1 -0
- package/dist/events-db.js +185 -0
- package/dist/events-db.js.map +1 -0
- package/dist/feature-flags.d.ts +2 -0
- package/dist/feature-flags.d.ts.map +1 -0
- package/dist/feature-flags.js +9 -0
- package/dist/feature-flags.js.map +1 -0
- package/dist/feedback-tools.d.ts +97 -0
- package/dist/feedback-tools.d.ts.map +1 -0
- package/dist/feedback-tools.js +161 -0
- package/dist/feedback-tools.js.map +1 -0
- package/dist/file-lock.d.ts +5 -0
- package/dist/file-lock.d.ts.map +1 -0
- package/dist/file-lock.js +59 -0
- package/dist/file-lock.js.map +1 -0
- package/dist/format-automated-comments.d.ts +18 -0
- package/dist/format-automated-comments.d.ts.map +1 -0
- package/dist/gh-trace.d.ts +57 -0
- package/dist/gh-trace.d.ts.map +1 -0
- package/dist/gh-trace.js +320 -0
- package/dist/gh-trace.js.map +1 -0
- package/dist/git-activity.d.ts +10 -0
- package/dist/git-activity.d.ts.map +1 -0
- package/dist/git-activity.js +30 -0
- package/dist/git-activity.js.map +1 -0
- package/dist/global-config.d.ts +1085 -0
- package/dist/global-config.d.ts.map +1 -0
- package/dist/global-config.js +1067 -0
- package/dist/global-config.js.map +1 -0
- package/dist/index.d.ts +91 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +59 -0
- package/dist/index.js.map +1 -0
- package/dist/key-value.d.ts +7 -0
- package/dist/key-value.d.ts.map +1 -0
- package/dist/key-value.js +24 -0
- package/dist/key-value.js.map +1 -0
- package/dist/lifecycle-manager.d.ts +22 -0
- package/dist/lifecycle-manager.d.ts.map +1 -0
- package/dist/lifecycle-manager.js +2813 -0
- package/dist/lifecycle-manager.js.map +1 -0
- package/dist/lifecycle-state.d.ts +28 -0
- package/dist/lifecycle-state.d.ts.map +1 -0
- package/dist/lifecycle-state.js +446 -0
- package/dist/lifecycle-state.js.map +1 -0
- package/dist/lifecycle-status-decisions.d.ts +85 -0
- package/dist/lifecycle-status-decisions.d.ts.map +1 -0
- package/dist/lifecycle-status-decisions.js +262 -0
- package/dist/lifecycle-status-decisions.js.map +1 -0
- package/dist/lifecycle-transition.d.ts +81 -0
- package/dist/lifecycle-transition.d.ts.map +1 -0
- package/dist/lifecycle-transition.js +207 -0
- package/dist/lifecycle-transition.js.map +1 -0
- package/dist/metadata.d.ts +54 -0
- package/dist/metadata.d.ts.map +1 -0
- package/dist/metadata.js +484 -0
- package/dist/metadata.js.map +1 -0
- package/dist/migration/storage-v2.d.ts +76 -0
- package/dist/migration/storage-v2.d.ts.map +1 -0
- package/dist/migration/storage-v2.js +1614 -0
- package/dist/migration/storage-v2.js.map +1 -0
- package/dist/notification-data.d.ts +135 -0
- package/dist/notification-data.d.ts.map +1 -0
- package/dist/notification-data.js +204 -0
- package/dist/notification-data.js.map +1 -0
- package/dist/notification-observability.d.ts +21 -0
- package/dist/notification-observability.d.ts.map +1 -0
- package/dist/notification-observability.js +154 -0
- package/dist/notification-observability.js.map +1 -0
- package/dist/notifier-resolution.d.ts +14 -0
- package/dist/notifier-resolution.d.ts.map +1 -0
- package/dist/notifier-resolution.js +23 -0
- package/dist/notifier-resolution.js.map +1 -0
- package/dist/observability.d.ts +100 -0
- package/dist/observability.d.ts.map +1 -0
- package/dist/observability.js +535 -0
- package/dist/observability.js.map +1 -0
- package/dist/opencode-agents-md.d.ts +3 -0
- package/dist/opencode-agents-md.d.ts.map +1 -0
- package/dist/opencode-agents-md.js +40 -0
- package/dist/opencode-agents-md.js.map +1 -0
- package/dist/opencode-config.d.ts +2 -0
- package/dist/opencode-config.d.ts.map +1 -0
- package/dist/opencode-config.js +17 -0
- package/dist/opencode-config.js.map +1 -0
- package/dist/opencode-session-id.d.ts +2 -0
- package/dist/opencode-session-id.d.ts.map +1 -0
- package/dist/opencode-session-id.js +12 -0
- package/dist/opencode-session-id.js.map +1 -0
- package/dist/opencode-shared.d.ts +80 -0
- package/dist/opencode-shared.d.ts.map +1 -0
- package/dist/opencode-shared.js +202 -0
- package/dist/opencode-shared.js.map +1 -0
- package/dist/orchestrator-prompt.d.ts +19 -0
- package/dist/orchestrator-prompt.d.ts.map +1 -0
- package/dist/orchestrator-prompt.js +130 -0
- package/dist/orchestrator-prompt.js.map +1 -0
- package/dist/orchestrator-session-strategy.d.ts +5 -0
- package/dist/orchestrator-session-strategy.d.ts.map +1 -0
- package/dist/orchestrator-session-strategy.js +13 -0
- package/dist/orchestrator-session-strategy.js.map +1 -0
- package/dist/paths.d.ts +145 -0
- package/dist/paths.d.ts.map +1 -0
- package/dist/paths.js +288 -0
- package/dist/paths.js.map +1 -0
- package/dist/platform.d.ts +32 -0
- package/dist/platform.d.ts.map +1 -0
- package/dist/platform.js +211 -0
- package/dist/platform.js.map +1 -0
- package/dist/plugin-registry.d.ts +15 -0
- package/dist/plugin-registry.d.ts.map +1 -0
- package/dist/plugin-registry.js +499 -0
- package/dist/plugin-registry.js.map +1 -0
- package/dist/portfolio-projects.d.ts +7 -0
- package/dist/portfolio-projects.d.ts.map +1 -0
- package/dist/portfolio-projects.js +65 -0
- package/dist/portfolio-projects.js.map +1 -0
- package/dist/portfolio-registry.d.ts +42 -0
- package/dist/portfolio-registry.d.ts.map +1 -0
- package/dist/portfolio-registry.js +311 -0
- package/dist/portfolio-registry.js.map +1 -0
- package/dist/portfolio-routing.d.ts +5 -0
- package/dist/portfolio-routing.d.ts.map +1 -0
- package/dist/portfolio-routing.js +24 -0
- package/dist/portfolio-routing.js.map +1 -0
- package/dist/portfolio-session-service.d.ts +15 -0
- package/dist/portfolio-session-service.d.ts.map +1 -0
- package/dist/portfolio-session-service.js +206 -0
- package/dist/portfolio-session-service.js.map +1 -0
- package/dist/process-cache.d.ts +32 -0
- package/dist/process-cache.d.ts.map +1 -0
- package/dist/process-cache.js +44 -0
- package/dist/process-cache.js.map +1 -0
- package/dist/project-resolver.d.ts +5 -0
- package/dist/project-resolver.d.ts.map +1 -0
- package/dist/project-resolver.js +20 -0
- package/dist/project-resolver.js.map +1 -0
- package/dist/prompt-builder.d.ts +42 -0
- package/dist/prompt-builder.d.ts.map +1 -0
- package/dist/prompt-builder.js +182 -0
- package/dist/prompt-builder.js.map +1 -0
- package/dist/prompts/orchestrator.md.js +4 -0
- package/dist/prompts/orchestrator.md.js.map +1 -0
- package/dist/query-activity-events.d.ts +42 -0
- package/dist/query-activity-events.d.ts.map +1 -0
- package/dist/query-activity-events.js +170 -0
- package/dist/query-activity-events.js.map +1 -0
- package/dist/recovery/actions.d.ts +7 -0
- package/dist/recovery/actions.d.ts.map +1 -0
- package/dist/recovery/index.d.ts +8 -0
- package/dist/recovery/index.d.ts.map +1 -0
- package/dist/recovery/logger.d.ts +12 -0
- package/dist/recovery/logger.d.ts.map +1 -0
- package/dist/recovery/manager.d.ts +24 -0
- package/dist/recovery/manager.d.ts.map +1 -0
- package/dist/recovery/scanner.d.ts +11 -0
- package/dist/recovery/scanner.d.ts.map +1 -0
- package/dist/recovery/types.d.ts +170 -0
- package/dist/recovery/types.d.ts.map +1 -0
- package/dist/recovery/validator.d.ts +8 -0
- package/dist/recovery/validator.d.ts.map +1 -0
- package/dist/report-watcher.d.ts +93 -0
- package/dist/report-watcher.d.ts.map +1 -0
- package/dist/report-watcher.js +182 -0
- package/dist/report-watcher.js.map +1 -0
- package/dist/scm-webhook-utils.d.ts +6 -0
- package/dist/scm-webhook-utils.d.ts.map +1 -0
- package/dist/scm-webhook-utils.js +36 -0
- package/dist/scm-webhook-utils.js.map +1 -0
- package/dist/session-manager.d.ts +22 -0
- package/dist/session-manager.d.ts.map +1 -0
- package/dist/session-manager.js +3077 -0
- package/dist/session-manager.js.map +1 -0
- package/dist/spawn-target.d.ts +23 -0
- package/dist/spawn-target.d.ts.map +1 -0
- package/dist/spawn-target.js +39 -0
- package/dist/spawn-target.js.map +1 -0
- package/dist/storage-key.d.ts +9 -0
- package/dist/storage-key.d.ts.map +1 -0
- package/dist/storage-key.js +59 -0
- package/dist/storage-key.js.map +1 -0
- package/dist/tmux.d.ts +39 -0
- package/dist/tmux.d.ts.map +1 -0
- package/dist/tmux.js +141 -0
- package/dist/tmux.js.map +1 -0
- package/dist/types.d.ts +1496 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +215 -0
- package/dist/types.js.map +1 -0
- package/dist/update-cache.d.ts +59 -0
- package/dist/update-cache.d.ts.map +1 -0
- package/dist/update-cache.js +77 -0
- package/dist/update-cache.js.map +1 -0
- package/dist/utils/metadata-flatten.d.ts +3 -0
- package/dist/utils/metadata-flatten.d.ts.map +1 -0
- package/dist/utils/metadata-flatten.js +18 -0
- package/dist/utils/metadata-flatten.js.map +1 -0
- package/dist/utils/pr.d.ts +7 -0
- package/dist/utils/pr.d.ts.map +1 -0
- package/dist/utils/pr.js +97 -0
- package/dist/utils/pr.js.map +1 -0
- package/dist/utils/session-from-metadata.d.ts +16 -0
- package/dist/utils/session-from-metadata.d.ts.map +1 -0
- package/dist/utils/session-from-metadata.js +87 -0
- package/dist/utils/session-from-metadata.js.map +1 -0
- package/dist/utils/session-id.d.ts +4 -0
- package/dist/utils/session-id.d.ts.map +1 -0
- package/dist/utils/session-id.js +9 -0
- package/dist/utils/session-id.js.map +1 -0
- package/dist/utils/validation.d.ts +9 -0
- package/dist/utils/validation.d.ts.map +1 -0
- package/dist/utils/validation.js +45 -0
- package/dist/utils/validation.js.map +1 -0
- package/dist/utils.d.ts +65 -0
- package/dist/utils.d.ts.map +1 -0
- package/dist/utils.js +189 -0
- package/dist/utils.js.map +1 -0
- package/dist/version-compare.d.ts +27 -0
- package/dist/version-compare.d.ts.map +1 -0
- package/dist/version-compare.js +121 -0
- package/dist/version-compare.js.map +1 -0
- package/dist/windows-pty-registry.d.ts +27 -0
- package/dist/windows-pty-registry.d.ts.map +1 -0
- package/dist/windows-pty-registry.js +109 -0
- package/dist/windows-pty-registry.js.map +1 -0
- package/package.json +110 -0
|
@@ -0,0 +1,446 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
import { parsePrFromUrl } from './utils/pr.js';
|
|
3
|
+
import { safeJsonParse, validateStatus } from './utils/validation.js';
|
|
4
|
+
|
|
5
|
+
const TimestampSchema = z.string().nullable();
|
|
6
|
+
const RuntimeHandleSchema = z.object({
|
|
7
|
+
id: z.string(),
|
|
8
|
+
runtimeName: z.string(),
|
|
9
|
+
data: z.preprocess((value) => {
|
|
10
|
+
if (value !== null && typeof value === "object" && !Array.isArray(value)) {
|
|
11
|
+
return value;
|
|
12
|
+
}
|
|
13
|
+
return {};
|
|
14
|
+
}, z.record(z.unknown())),
|
|
15
|
+
});
|
|
16
|
+
const CanonicalSessionLifecycleSchema = z.object({
|
|
17
|
+
version: z.literal(2),
|
|
18
|
+
session: z
|
|
19
|
+
.object({
|
|
20
|
+
kind: z.enum(["worker", "orchestrator"]),
|
|
21
|
+
state: z.enum([
|
|
22
|
+
"not_started",
|
|
23
|
+
"working",
|
|
24
|
+
"idle",
|
|
25
|
+
"needs_input",
|
|
26
|
+
"stuck",
|
|
27
|
+
"detecting",
|
|
28
|
+
"done",
|
|
29
|
+
"terminated",
|
|
30
|
+
]),
|
|
31
|
+
reason: z.enum([
|
|
32
|
+
"spawn_requested",
|
|
33
|
+
"agent_acknowledged",
|
|
34
|
+
"task_in_progress",
|
|
35
|
+
"pr_created",
|
|
36
|
+
"pr_closed_waiting_decision",
|
|
37
|
+
"fixing_ci",
|
|
38
|
+
"resolving_review_comments",
|
|
39
|
+
"awaiting_user_input",
|
|
40
|
+
"awaiting_external_review",
|
|
41
|
+
"research_complete",
|
|
42
|
+
"merged_waiting_decision",
|
|
43
|
+
"manually_killed",
|
|
44
|
+
"runtime_lost",
|
|
45
|
+
"agent_process_exited",
|
|
46
|
+
"probe_failure",
|
|
47
|
+
"error_in_process",
|
|
48
|
+
"auto_cleanup",
|
|
49
|
+
"pr_merged",
|
|
50
|
+
]),
|
|
51
|
+
startedAt: TimestampSchema,
|
|
52
|
+
completedAt: TimestampSchema,
|
|
53
|
+
terminatedAt: TimestampSchema,
|
|
54
|
+
lastTransitionAt: z.string(),
|
|
55
|
+
})
|
|
56
|
+
.partial()
|
|
57
|
+
.optional(),
|
|
58
|
+
pr: z
|
|
59
|
+
.object({
|
|
60
|
+
state: z.enum(["none", "open", "merged", "closed"]),
|
|
61
|
+
reason: z.enum([
|
|
62
|
+
"not_created",
|
|
63
|
+
"in_progress",
|
|
64
|
+
"ci_failing",
|
|
65
|
+
"review_pending",
|
|
66
|
+
"changes_requested",
|
|
67
|
+
"approved",
|
|
68
|
+
"merge_ready",
|
|
69
|
+
"merged",
|
|
70
|
+
"closed_unmerged",
|
|
71
|
+
"cleared_on_restore",
|
|
72
|
+
]),
|
|
73
|
+
number: z.number().int().nullable(),
|
|
74
|
+
url: z.string().nullable(),
|
|
75
|
+
lastObservedAt: TimestampSchema,
|
|
76
|
+
})
|
|
77
|
+
.partial()
|
|
78
|
+
.optional(),
|
|
79
|
+
runtime: z
|
|
80
|
+
.object({
|
|
81
|
+
state: z.enum(["unknown", "alive", "exited", "missing", "probe_failed"]),
|
|
82
|
+
reason: z.enum([
|
|
83
|
+
"spawn_incomplete",
|
|
84
|
+
"process_running",
|
|
85
|
+
"process_missing",
|
|
86
|
+
"tmux_missing",
|
|
87
|
+
"manual_kill_requested",
|
|
88
|
+
"probe_error",
|
|
89
|
+
"pr_merged_cleanup",
|
|
90
|
+
"auto_cleanup",
|
|
91
|
+
]),
|
|
92
|
+
lastObservedAt: TimestampSchema,
|
|
93
|
+
handle: RuntimeHandleSchema.nullable(),
|
|
94
|
+
tmuxName: z.string().nullable(),
|
|
95
|
+
})
|
|
96
|
+
.partial()
|
|
97
|
+
.optional(),
|
|
98
|
+
});
|
|
99
|
+
const TERMINAL_CANONICAL_SESSION_STATES = new Set([
|
|
100
|
+
"done",
|
|
101
|
+
"terminated",
|
|
102
|
+
]);
|
|
103
|
+
function clearTerminalMarkersForNonTerminalState(lifecycle) {
|
|
104
|
+
if (TERMINAL_CANONICAL_SESSION_STATES.has(lifecycle.session.state))
|
|
105
|
+
return;
|
|
106
|
+
lifecycle.session.completedAt = null;
|
|
107
|
+
lifecycle.session.terminatedAt = null;
|
|
108
|
+
}
|
|
109
|
+
function normalizeTimestamp(value, fallback = null) {
|
|
110
|
+
if (typeof value !== "string")
|
|
111
|
+
return fallback;
|
|
112
|
+
const parsed = Date.parse(value);
|
|
113
|
+
return Number.isNaN(parsed) ? fallback : new Date(parsed).toISOString();
|
|
114
|
+
}
|
|
115
|
+
function normalizeRuntimeHandle(value) {
|
|
116
|
+
if (!value || typeof value !== "object")
|
|
117
|
+
return null;
|
|
118
|
+
const record = value;
|
|
119
|
+
if (typeof record["id"] !== "string" || typeof record["runtimeName"] !== "string")
|
|
120
|
+
return null;
|
|
121
|
+
const data = record["data"];
|
|
122
|
+
return {
|
|
123
|
+
id: record["id"],
|
|
124
|
+
runtimeName: record["runtimeName"],
|
|
125
|
+
data: data && typeof data === "object" ? data : {},
|
|
126
|
+
};
|
|
127
|
+
}
|
|
128
|
+
function createInitialCanonicalLifecycle(kind, now = new Date()) {
|
|
129
|
+
const timestamp = now.toISOString();
|
|
130
|
+
return {
|
|
131
|
+
version: 2,
|
|
132
|
+
session: {
|
|
133
|
+
kind,
|
|
134
|
+
state: "not_started",
|
|
135
|
+
reason: "spawn_requested",
|
|
136
|
+
startedAt: null,
|
|
137
|
+
completedAt: null,
|
|
138
|
+
terminatedAt: null,
|
|
139
|
+
lastTransitionAt: timestamp,
|
|
140
|
+
},
|
|
141
|
+
pr: {
|
|
142
|
+
state: "none",
|
|
143
|
+
reason: "not_created",
|
|
144
|
+
number: null,
|
|
145
|
+
url: null,
|
|
146
|
+
lastObservedAt: null,
|
|
147
|
+
},
|
|
148
|
+
runtime: {
|
|
149
|
+
state: "unknown",
|
|
150
|
+
reason: "spawn_incomplete",
|
|
151
|
+
lastObservedAt: null,
|
|
152
|
+
handle: null,
|
|
153
|
+
tmuxName: null,
|
|
154
|
+
},
|
|
155
|
+
};
|
|
156
|
+
}
|
|
157
|
+
function synthesizeSessionState(status) {
|
|
158
|
+
switch (status) {
|
|
159
|
+
case "spawning":
|
|
160
|
+
return { state: "not_started", reason: "spawn_requested" };
|
|
161
|
+
case "needs_input":
|
|
162
|
+
return { state: "needs_input", reason: "awaiting_user_input" };
|
|
163
|
+
case "stuck":
|
|
164
|
+
return { state: "stuck", reason: "probe_failure" };
|
|
165
|
+
case "errored":
|
|
166
|
+
return { state: "terminated", reason: "error_in_process" };
|
|
167
|
+
case "killed":
|
|
168
|
+
case "terminated":
|
|
169
|
+
case "cleanup":
|
|
170
|
+
return { state: "terminated", reason: "manually_killed" };
|
|
171
|
+
case "done":
|
|
172
|
+
return { state: "done", reason: "research_complete" };
|
|
173
|
+
case "merged":
|
|
174
|
+
return { state: "idle", reason: "merged_waiting_decision" };
|
|
175
|
+
case "idle":
|
|
176
|
+
return { state: "idle", reason: "awaiting_external_review" };
|
|
177
|
+
default:
|
|
178
|
+
return { state: "working", reason: "task_in_progress" };
|
|
179
|
+
}
|
|
180
|
+
}
|
|
181
|
+
function synthesizePRState(meta, status) {
|
|
182
|
+
const prUrl = meta["pr"] ?? null;
|
|
183
|
+
if (!prUrl) {
|
|
184
|
+
// Legacy metadata can record `status=merged` without `pr=` (the PR URL was
|
|
185
|
+
// never written, or was pruned). Preserve the terminal truth — the legacy
|
|
186
|
+
// status is authoritative for session terminality — so downstream
|
|
187
|
+
// consumers like isTerminalSession don't lose the "merged" signal.
|
|
188
|
+
if (status === "merged") {
|
|
189
|
+
return { state: "merged", reason: "merged", number: null, url: null };
|
|
190
|
+
}
|
|
191
|
+
return { state: "none", reason: "not_created", number: null, url: null };
|
|
192
|
+
}
|
|
193
|
+
const parsed = parsePrFromUrl(prUrl);
|
|
194
|
+
return {
|
|
195
|
+
state: status === "merged" ? "merged" : "open",
|
|
196
|
+
reason: status === "merged" ? "merged" : "in_progress",
|
|
197
|
+
number: parsed?.number ?? null,
|
|
198
|
+
url: prUrl,
|
|
199
|
+
};
|
|
200
|
+
}
|
|
201
|
+
function synthesizeRuntimeState(meta, runtimeHandle) {
|
|
202
|
+
const tmuxName = meta["tmuxName"]?.trim() || null;
|
|
203
|
+
const handle = runtimeHandle ?? (meta["runtimeHandle"] ? safeJsonParse(meta["runtimeHandle"]) : null);
|
|
204
|
+
if (handle || tmuxName) {
|
|
205
|
+
return {
|
|
206
|
+
state: "unknown",
|
|
207
|
+
reason: "spawn_incomplete",
|
|
208
|
+
handle: handle ?? null,
|
|
209
|
+
tmuxName,
|
|
210
|
+
};
|
|
211
|
+
}
|
|
212
|
+
return {
|
|
213
|
+
state: "unknown",
|
|
214
|
+
reason: "spawn_incomplete",
|
|
215
|
+
handle: null,
|
|
216
|
+
tmuxName: null,
|
|
217
|
+
};
|
|
218
|
+
}
|
|
219
|
+
function synthesizeCanonicalLifecycle(meta, options = {}) {
|
|
220
|
+
const status = options.status ?? validateStatus(meta["status"]);
|
|
221
|
+
const sessionKind = options.sessionKind ??
|
|
222
|
+
(meta["role"] === "orchestrator" || options.sessionId?.endsWith("-orchestrator")
|
|
223
|
+
? "orchestrator"
|
|
224
|
+
: "worker");
|
|
225
|
+
const now = options.createdAt?.toISOString() ??
|
|
226
|
+
normalizeTimestamp(meta["createdAt"], new Date().toISOString()) ??
|
|
227
|
+
new Date().toISOString();
|
|
228
|
+
const sessionState = synthesizeSessionState(status);
|
|
229
|
+
const pr = synthesizePRState(meta, status);
|
|
230
|
+
const runtime = synthesizeRuntimeState(meta, options.runtimeHandle ?? null);
|
|
231
|
+
return {
|
|
232
|
+
version: 2,
|
|
233
|
+
session: {
|
|
234
|
+
kind: sessionKind,
|
|
235
|
+
state: sessionState.state,
|
|
236
|
+
reason: sessionState.reason,
|
|
237
|
+
startedAt: status === "spawning" ? null : now,
|
|
238
|
+
completedAt: status === "done" ? now : null,
|
|
239
|
+
terminatedAt: status === "killed" || status === "terminated" || status === "cleanup" ? now : null,
|
|
240
|
+
lastTransitionAt: now,
|
|
241
|
+
},
|
|
242
|
+
pr: {
|
|
243
|
+
state: pr.state,
|
|
244
|
+
reason: pr.reason,
|
|
245
|
+
number: pr.number,
|
|
246
|
+
url: pr.url,
|
|
247
|
+
lastObservedAt: pr.url ? now : null,
|
|
248
|
+
},
|
|
249
|
+
runtime: {
|
|
250
|
+
state: runtime.state,
|
|
251
|
+
reason: runtime.reason,
|
|
252
|
+
lastObservedAt: runtime.handle || runtime.tmuxName ? now : null,
|
|
253
|
+
handle: runtime.handle,
|
|
254
|
+
tmuxName: runtime.tmuxName,
|
|
255
|
+
},
|
|
256
|
+
};
|
|
257
|
+
}
|
|
258
|
+
function normalizePayloadLifecycle(payload, meta, options = {}) {
|
|
259
|
+
const synthesized = synthesizeCanonicalLifecycle(meta, options);
|
|
260
|
+
const payloadSession = payload.session;
|
|
261
|
+
const payloadPr = payload.pr;
|
|
262
|
+
const payloadRuntime = payload.runtime;
|
|
263
|
+
const hasPayloadSessionKind = Object.hasOwn(payloadSession ?? {}, "kind");
|
|
264
|
+
const hasPayloadSessionState = Object.hasOwn(payloadSession ?? {}, "state");
|
|
265
|
+
const hasPayloadSessionReason = Object.hasOwn(payloadSession ?? {}, "reason");
|
|
266
|
+
const hasPayloadSessionStartedAt = Object.hasOwn(payloadSession ?? {}, "startedAt");
|
|
267
|
+
const hasPayloadSessionCompletedAt = Object.hasOwn(payloadSession ?? {}, "completedAt");
|
|
268
|
+
const hasPayloadSessionTerminatedAt = Object.hasOwn(payloadSession ?? {}, "terminatedAt");
|
|
269
|
+
const hasPayloadSessionLastTransitionAt = Object.hasOwn(payloadSession ?? {}, "lastTransitionAt");
|
|
270
|
+
const hasPayloadPrState = Object.hasOwn(payloadPr ?? {}, "state");
|
|
271
|
+
const hasPayloadPrReason = Object.hasOwn(payloadPr ?? {}, "reason");
|
|
272
|
+
const hasPayloadPrNumber = Object.hasOwn(payloadPr ?? {}, "number");
|
|
273
|
+
const hasPayloadPrUrl = Object.hasOwn(payloadPr ?? {}, "url");
|
|
274
|
+
const hasPayloadPrLastObservedAt = Object.hasOwn(payloadPr ?? {}, "lastObservedAt");
|
|
275
|
+
const hasPayloadRuntimeState = Object.hasOwn(payloadRuntime ?? {}, "state");
|
|
276
|
+
const hasPayloadRuntimeReason = Object.hasOwn(payloadRuntime ?? {}, "reason");
|
|
277
|
+
const hasPayloadRuntimeLastObservedAt = Object.hasOwn(payloadRuntime ?? {}, "lastObservedAt");
|
|
278
|
+
const hasPayloadRuntimeHandle = Object.hasOwn(payloadRuntime ?? {}, "handle");
|
|
279
|
+
const hasPayloadRuntimeTmuxName = Object.hasOwn(payloadRuntime ?? {}, "tmuxName");
|
|
280
|
+
return {
|
|
281
|
+
version: 2,
|
|
282
|
+
session: {
|
|
283
|
+
kind: hasPayloadSessionKind
|
|
284
|
+
? payloadSession?.kind === "orchestrator"
|
|
285
|
+
? "orchestrator"
|
|
286
|
+
: "worker"
|
|
287
|
+
: synthesized.session.kind,
|
|
288
|
+
state: hasPayloadSessionState
|
|
289
|
+
? payloadSession?.state ?? synthesized.session.state
|
|
290
|
+
: synthesized.session.state,
|
|
291
|
+
reason: hasPayloadSessionReason
|
|
292
|
+
? payloadSession?.reason ?? synthesized.session.reason
|
|
293
|
+
: synthesized.session.reason,
|
|
294
|
+
startedAt: hasPayloadSessionStartedAt
|
|
295
|
+
? normalizeTimestamp(payloadSession?.startedAt)
|
|
296
|
+
: synthesized.session.startedAt,
|
|
297
|
+
completedAt: hasPayloadSessionCompletedAt
|
|
298
|
+
? normalizeTimestamp(payloadSession?.completedAt)
|
|
299
|
+
: synthesized.session.completedAt,
|
|
300
|
+
terminatedAt: hasPayloadSessionTerminatedAt
|
|
301
|
+
? normalizeTimestamp(payloadSession?.terminatedAt)
|
|
302
|
+
: synthesized.session.terminatedAt,
|
|
303
|
+
lastTransitionAt: hasPayloadSessionLastTransitionAt
|
|
304
|
+
? normalizeTimestamp(payloadSession?.lastTransitionAt, synthesized.session.lastTransitionAt) ??
|
|
305
|
+
synthesized.session.lastTransitionAt
|
|
306
|
+
: synthesized.session.lastTransitionAt,
|
|
307
|
+
},
|
|
308
|
+
pr: {
|
|
309
|
+
state: hasPayloadPrState
|
|
310
|
+
? payloadPr?.state ?? synthesized.pr.state
|
|
311
|
+
: synthesized.pr.state,
|
|
312
|
+
reason: hasPayloadPrReason
|
|
313
|
+
? payloadPr?.reason ?? synthesized.pr.reason
|
|
314
|
+
: synthesized.pr.reason,
|
|
315
|
+
number: hasPayloadPrNumber
|
|
316
|
+
? typeof payloadPr?.number === "number"
|
|
317
|
+
? payloadPr.number
|
|
318
|
+
: null
|
|
319
|
+
: synthesized.pr.number,
|
|
320
|
+
url: hasPayloadPrUrl ? (typeof payloadPr?.url === "string" ? payloadPr.url : null) : synthesized.pr.url,
|
|
321
|
+
lastObservedAt: hasPayloadPrLastObservedAt
|
|
322
|
+
? normalizeTimestamp(payloadPr?.lastObservedAt)
|
|
323
|
+
: synthesized.pr.lastObservedAt,
|
|
324
|
+
},
|
|
325
|
+
runtime: {
|
|
326
|
+
state: hasPayloadRuntimeState
|
|
327
|
+
? payloadRuntime?.state ?? synthesized.runtime.state
|
|
328
|
+
: synthesized.runtime.state,
|
|
329
|
+
reason: hasPayloadRuntimeReason
|
|
330
|
+
? payloadRuntime?.reason ??
|
|
331
|
+
synthesized.runtime.reason
|
|
332
|
+
: synthesized.runtime.reason,
|
|
333
|
+
lastObservedAt: hasPayloadRuntimeLastObservedAt
|
|
334
|
+
? normalizeTimestamp(payloadRuntime?.lastObservedAt)
|
|
335
|
+
: synthesized.runtime.lastObservedAt,
|
|
336
|
+
handle: hasPayloadRuntimeHandle
|
|
337
|
+
? normalizeRuntimeHandle(payloadRuntime?.handle)
|
|
338
|
+
: synthesized.runtime.handle,
|
|
339
|
+
tmuxName: hasPayloadRuntimeTmuxName
|
|
340
|
+
? typeof payloadRuntime?.tmuxName === "string"
|
|
341
|
+
? payloadRuntime.tmuxName
|
|
342
|
+
: null
|
|
343
|
+
: synthesized.runtime.tmuxName,
|
|
344
|
+
},
|
|
345
|
+
};
|
|
346
|
+
}
|
|
347
|
+
function parseCanonicalLifecycle(meta, options = {}) {
|
|
348
|
+
const parsed = meta["lifecycle"]
|
|
349
|
+
? safeJsonParse(meta["lifecycle"])
|
|
350
|
+
: meta["statePayload"] && meta["stateVersion"] === "2"
|
|
351
|
+
? safeJsonParse(meta["statePayload"])
|
|
352
|
+
: null;
|
|
353
|
+
const validated = CanonicalSessionLifecycleSchema.safeParse(parsed);
|
|
354
|
+
if (validated.success) {
|
|
355
|
+
return normalizePayloadLifecycle(validated.data, meta, options);
|
|
356
|
+
}
|
|
357
|
+
return synthesizeCanonicalLifecycle(meta, options);
|
|
358
|
+
}
|
|
359
|
+
function deriveLegacyStatus(lifecycle) {
|
|
360
|
+
switch (lifecycle.session.state) {
|
|
361
|
+
case "not_started":
|
|
362
|
+
return "spawning";
|
|
363
|
+
case "needs_input":
|
|
364
|
+
return "needs_input";
|
|
365
|
+
case "stuck":
|
|
366
|
+
return "stuck";
|
|
367
|
+
case "done":
|
|
368
|
+
return "done";
|
|
369
|
+
case "terminated":
|
|
370
|
+
// Derive specific terminal status from lifecycle reason
|
|
371
|
+
switch (lifecycle.session.reason) {
|
|
372
|
+
case "manually_killed":
|
|
373
|
+
case "runtime_lost":
|
|
374
|
+
return "killed";
|
|
375
|
+
case "auto_cleanup":
|
|
376
|
+
case "pr_merged":
|
|
377
|
+
return "cleanup";
|
|
378
|
+
case "error_in_process":
|
|
379
|
+
case "probe_failure":
|
|
380
|
+
return "errored";
|
|
381
|
+
default:
|
|
382
|
+
return "terminated";
|
|
383
|
+
}
|
|
384
|
+
case "detecting":
|
|
385
|
+
return "detecting";
|
|
386
|
+
}
|
|
387
|
+
if (lifecycle.pr.state === "merged") {
|
|
388
|
+
return "merged";
|
|
389
|
+
}
|
|
390
|
+
if (lifecycle.pr.state === "open") {
|
|
391
|
+
if (lifecycle.pr.reason === "ci_failing")
|
|
392
|
+
return "ci_failed";
|
|
393
|
+
if (lifecycle.pr.reason === "changes_requested")
|
|
394
|
+
return "changes_requested";
|
|
395
|
+
if (lifecycle.pr.reason === "review_pending")
|
|
396
|
+
return "review_pending";
|
|
397
|
+
if (lifecycle.pr.reason === "approved")
|
|
398
|
+
return "approved";
|
|
399
|
+
if (lifecycle.pr.reason === "merge_ready")
|
|
400
|
+
return "mergeable";
|
|
401
|
+
return "pr_open";
|
|
402
|
+
}
|
|
403
|
+
switch (lifecycle.session.state) {
|
|
404
|
+
case "idle":
|
|
405
|
+
return "idle";
|
|
406
|
+
case "working":
|
|
407
|
+
return "working";
|
|
408
|
+
default:
|
|
409
|
+
return "working";
|
|
410
|
+
}
|
|
411
|
+
}
|
|
412
|
+
/**
|
|
413
|
+
* Build a minimal metadata patch for persisting lifecycle state outside the polling loop.
|
|
414
|
+
* Used by writeCanonicalLifecycle() and agent-report writes. Does NOT include detecting
|
|
415
|
+
* or evidence metadata — use buildTransitionMetadataPatch() for lifecycle poll transitions.
|
|
416
|
+
*/
|
|
417
|
+
function buildLifecycleMetadataPatch(lifecycle) {
|
|
418
|
+
return {
|
|
419
|
+
lifecycle: JSON.stringify(lifecycle),
|
|
420
|
+
// status is NOT persisted — computed on read via deriveLegacyStatus()
|
|
421
|
+
pr: lifecycle.pr.url ?? "",
|
|
422
|
+
runtimeHandle: lifecycle.runtime.handle ? JSON.stringify(lifecycle.runtime.handle) : "",
|
|
423
|
+
tmuxName: lifecycle.runtime.tmuxName ?? "",
|
|
424
|
+
role: lifecycle.session.kind === "orchestrator" ? "orchestrator" : "",
|
|
425
|
+
};
|
|
426
|
+
}
|
|
427
|
+
function cloneLifecycle(lifecycle) {
|
|
428
|
+
return {
|
|
429
|
+
version: 2,
|
|
430
|
+
session: { ...lifecycle.session },
|
|
431
|
+
pr: { ...lifecycle.pr },
|
|
432
|
+
runtime: {
|
|
433
|
+
...lifecycle.runtime,
|
|
434
|
+
handle: lifecycle.runtime.handle
|
|
435
|
+
? {
|
|
436
|
+
id: lifecycle.runtime.handle.id,
|
|
437
|
+
runtimeName: lifecycle.runtime.handle.runtimeName,
|
|
438
|
+
data: structuredClone(lifecycle.runtime.handle.data),
|
|
439
|
+
}
|
|
440
|
+
: null,
|
|
441
|
+
},
|
|
442
|
+
};
|
|
443
|
+
}
|
|
444
|
+
|
|
445
|
+
export { buildLifecycleMetadataPatch, clearTerminalMarkersForNonTerminalState, cloneLifecycle, createInitialCanonicalLifecycle, deriveLegacyStatus, parseCanonicalLifecycle };
|
|
446
|
+
//# sourceMappingURL=lifecycle-state.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"lifecycle-state.js","sources":["../src/lifecycle-state.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
import { type ActivitySignal, type CanonicalPRReason, type CanonicalPRState, type CanonicalSessionReason, type CanonicalSessionState, type CIStatus, type PREnrichmentData, type SessionStatus } from "./types.js";
|
|
2
|
+
export declare const DETECTING_MAX_ATTEMPTS = 3;
|
|
3
|
+
/** Hard time cap for detecting state — escalate after this regardless of attempts. */
|
|
4
|
+
export declare const DETECTING_MAX_DURATION_MS: number;
|
|
5
|
+
type ProbeState = "alive" | "dead" | "unknown";
|
|
6
|
+
type PRReviewDecision = PREnrichmentData["reviewDecision"];
|
|
7
|
+
type LifecycleSessionState = CanonicalSessionState;
|
|
8
|
+
type LifecycleSessionReason = CanonicalSessionReason;
|
|
9
|
+
type LifecyclePRState = CanonicalPRState;
|
|
10
|
+
type LifecyclePRReason = CanonicalPRReason;
|
|
11
|
+
interface LifecycleDecision {
|
|
12
|
+
status: SessionStatus;
|
|
13
|
+
evidence: string;
|
|
14
|
+
detecting: {
|
|
15
|
+
attempts: number;
|
|
16
|
+
/** ISO timestamp when detecting state was first entered (for time-based escalation). */
|
|
17
|
+
startedAt?: string;
|
|
18
|
+
/** Hash of evidence to detect unchanged evidence across polls. */
|
|
19
|
+
evidenceHash?: string;
|
|
20
|
+
};
|
|
21
|
+
sessionState?: LifecycleSessionState;
|
|
22
|
+
sessionReason?: LifecycleSessionReason;
|
|
23
|
+
prState?: LifecyclePRState;
|
|
24
|
+
prReason?: LifecyclePRReason;
|
|
25
|
+
}
|
|
26
|
+
export declare function hashEvidence(evidence: string): string;
|
|
27
|
+
interface OpenPRDecisionInput {
|
|
28
|
+
reviewDecision: PRReviewDecision;
|
|
29
|
+
ciFailing: boolean;
|
|
30
|
+
mergeable: boolean;
|
|
31
|
+
shouldEscalateIdleToStuck: boolean;
|
|
32
|
+
idleWasBlocked: boolean;
|
|
33
|
+
activityEvidence: string;
|
|
34
|
+
}
|
|
35
|
+
interface ProbeResult {
|
|
36
|
+
state: ProbeState;
|
|
37
|
+
failed: boolean;
|
|
38
|
+
}
|
|
39
|
+
interface ProbeDecisionInput {
|
|
40
|
+
currentAttempts: number;
|
|
41
|
+
runtimeProbe: ProbeResult;
|
|
42
|
+
processProbe: ProbeResult;
|
|
43
|
+
canProbeRuntimeIdentity: boolean;
|
|
44
|
+
activitySignal: ActivitySignal;
|
|
45
|
+
activityEvidence: string;
|
|
46
|
+
idleWasBlocked: boolean;
|
|
47
|
+
/** ISO timestamp when detecting first started (from metadata). */
|
|
48
|
+
detectingStartedAt?: string;
|
|
49
|
+
/** Previous evidence hash (from metadata). */
|
|
50
|
+
previousEvidenceHash?: string;
|
|
51
|
+
}
|
|
52
|
+
export interface DetectingDecisionInput {
|
|
53
|
+
currentAttempts: number;
|
|
54
|
+
idleWasBlocked: boolean;
|
|
55
|
+
evidence: string;
|
|
56
|
+
reason?: LifecycleSessionReason;
|
|
57
|
+
/** ISO timestamp when detecting first started (from metadata). */
|
|
58
|
+
detectingStartedAt?: string;
|
|
59
|
+
/** Previous evidence hash (from metadata). */
|
|
60
|
+
previousEvidenceHash?: string;
|
|
61
|
+
/** Current time for time-based escalation check. */
|
|
62
|
+
now?: Date;
|
|
63
|
+
}
|
|
64
|
+
/**
|
|
65
|
+
* Check if detecting has exceeded its time budget.
|
|
66
|
+
*/
|
|
67
|
+
export declare function isDetectingTimedOut(detectingStartedAt: string | undefined, now?: Date): boolean;
|
|
68
|
+
export declare function createDetectingDecision(input: DetectingDecisionInput | (Pick<ProbeDecisionInput, "currentAttempts" | "idleWasBlocked"> & {
|
|
69
|
+
evidence: string;
|
|
70
|
+
reason?: LifecycleSessionReason;
|
|
71
|
+
})): LifecycleDecision;
|
|
72
|
+
export declare function parseAttemptCount(raw: string | undefined): number;
|
|
73
|
+
export declare function resolveProbeDecision(input: ProbeDecisionInput): LifecycleDecision | null;
|
|
74
|
+
export declare function resolvePREnrichmentDecision(cachedData: PREnrichmentData, options: Pick<OpenPRDecisionInput, "shouldEscalateIdleToStuck" | "idleWasBlocked" | "activityEvidence">): LifecycleDecision;
|
|
75
|
+
export declare function resolvePRLiveDecision(input: {
|
|
76
|
+
prState: "open" | "merged" | "closed";
|
|
77
|
+
ciStatus: CIStatus;
|
|
78
|
+
reviewDecision: PRReviewDecision;
|
|
79
|
+
mergeable: boolean;
|
|
80
|
+
shouldEscalateIdleToStuck: boolean;
|
|
81
|
+
idleWasBlocked: boolean;
|
|
82
|
+
activityEvidence: string;
|
|
83
|
+
}): LifecycleDecision;
|
|
84
|
+
export type { LifecycleDecision };
|
|
85
|
+
//# sourceMappingURL=lifecycle-status-decisions.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"lifecycle-status-decisions.d.ts","sourceRoot":"","sources":["../src/lifecycle-status-decisions.ts"],"names":[],"mappings":"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"}
|