@tickernelz/paperclip-pro-server 2026.930.2 → 2026.930.4
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/build-info.json +1 -1
- package/dist/modules/run-dispatch/adapters/postgres.d.ts +5 -1
- package/dist/modules/run-dispatch/adapters/postgres.d.ts.map +1 -1
- package/dist/modules/run-dispatch/adapters/postgres.js +2 -1
- package/dist/modules/run-dispatch/adapters/postgres.js.map +1 -1
- package/dist/modules/run-dispatch/index.d.ts +2 -0
- package/dist/modules/run-dispatch/index.d.ts.map +1 -1
- package/dist/modules/run-dispatch/index.js +1 -1
- package/dist/modules/run-dispatch/index.js.map +1 -1
- package/dist/routes/issues.d.ts +6 -0
- package/dist/routes/issues.d.ts.map +1 -1
- package/dist/routes/issues.js +266 -88
- package/dist/routes/issues.js.map +1 -1
- package/dist/services/heartbeat.d.ts +1 -0
- package/dist/services/heartbeat.d.ts.map +1 -1
- package/dist/services/heartbeat.js +100 -20
- package/dist/services/heartbeat.js.map +1 -1
- package/dist/services/native-runtime/native-session-executor.d.ts +7 -2
- package/dist/services/native-runtime/native-session-executor.d.ts.map +1 -1
- package/dist/services/native-runtime/native-session-executor.js +35 -14
- package/dist/services/native-runtime/native-session-executor.js.map +1 -1
- package/dist/services/native-runtime/native-session-executor.test.js +25 -2
- package/dist/services/native-runtime/native-session-executor.test.js.map +1 -1
- package/dist/services/recovery/service.d.ts +1 -0
- package/dist/services/recovery/service.d.ts.map +1 -1
- package/dist/services/recovery/service.js +32 -0
- package/dist/services/recovery/service.js.map +1 -1
- package/dist/services/run-identity.d.ts.map +1 -1
- package/dist/services/run-identity.js +1 -1
- package/dist/services/run-identity.js.map +1 -1
- package/dist/services/steering-acknowledgements.d.ts +1 -0
- package/dist/services/steering-acknowledgements.d.ts.map +1 -1
- package/dist/services/steering-acknowledgements.js +6 -0
- package/dist/services/steering-acknowledgements.js.map +1 -1
- package/dist/services/systemd-notify.d.ts.map +1 -1
- package/dist/services/systemd-notify.js +6 -2
- package/dist/services/systemd-notify.js.map +1 -1
- package/dist/services/systemd-notify.test.d.ts +2 -0
- package/dist/services/systemd-notify.test.d.ts.map +1 -0
- package/dist/services/systemd-notify.test.js +35 -0
- package/dist/services/systemd-notify.test.js.map +1 -0
- package/package.json +21 -21
- package/ui-dist/assets/{Agents.production-T8untZn6.js → Agents.production-DbUeI7Fn.js} +2 -2
- package/ui-dist/assets/{CompanyActivity.production-Cr4M1ZEK.js → CompanyActivity.production-ah_9HNB7.js} +1 -1
- package/ui-dist/assets/{CompanyExport-p04ns6Xl.js → CompanyExport-DfQ2w0Io.js} +1 -1
- package/ui-dist/assets/{CompanySkills.production-PSbLuKmV.js → CompanySkills.production-D1z4_-0O.js} +1 -1
- package/ui-dist/assets/{Costs.production-1J4q1eUe.js → Costs.production-lj6CMOJY.js} +1 -1
- package/ui-dist/assets/{OrgChart.production-BNeUJho5.js → OrgChart.production-BYJcahNU.js} +1 -1
- package/ui-dist/assets/{RoutineDetail.production-B5RS5N7-.js → RoutineDetail.production-7Lqoltnn.js} +1 -1
- package/ui-dist/assets/{Routines.production-Dn91nmsp.js → Routines.production-2drUSpFP.js} +1 -1
- package/ui-dist/assets/{definition-D6egFwaP.js → definition-CN1PqJxy.js} +1 -1
- package/ui-dist/assets/{index-BqF0txu7.js → index-CFJc7t_k.js} +4 -4
- package/ui-dist/index.html +1 -1
- package/ui-dist/sw.js +1 -1
|
@@ -74,6 +74,7 @@ export declare function recoveryService(db: Db, deps: {
|
|
|
74
74
|
has(id: string): boolean;
|
|
75
75
|
}>;
|
|
76
76
|
beforeOrphanedRunTerminalWrite?: (runId: string) => Promise<void>;
|
|
77
|
+
continueProcessGoneRun?: (run: typeof heartbeatRuns.$inferSelect) => Promise<void>;
|
|
77
78
|
}): {
|
|
78
79
|
buildRunOutputSilence: (run: Pick<typeof heartbeatRuns.$inferSelect, "id" | "companyId" | "status" | "lastOutputAt" | "lastOutputSeq" | "lastOutputStream" | "processStartedAt" | "startedAt" | "createdAt">, now?: Date) => Promise<RunOutputSilenceSummary>;
|
|
79
80
|
escalateStrandedRecoveryIssueInPlace: (input: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"service.d.ts","sourceRoot":"","sources":["../../../src/services/recovery/service.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"service.d.ts","sourceRoot":"","sources":["../../../src/services/recovery/service.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { CONVERSATION_CONTINUATION_POLICY, runUsedConversationAdapter } from "../conversation-continuation.js";
|
|
1
2
|
import { settleSlackConversation } from "../slack-conversation-lifecycle.js";
|
|
2
3
|
import { externalConversationStateSql } from "../slack-conversation-state.js";
|
|
3
4
|
import { hasLiveLegacyController } from "../legacy-controller-lease.js";
|
|
@@ -4158,6 +4159,22 @@ export function recoveryService(db, deps) {
|
|
|
4158
4159
|
const message = authority === "issue_terminal"
|
|
4159
4160
|
? "run terminalized by recovery backstop: issue reached a terminal status while heartbeat_runs.status stayed live"
|
|
4160
4161
|
: "run terminalized by recovery backstop: process and sandbox gone while heartbeat_runs.status stayed live";
|
|
4162
|
+
const runResult = parseObject(run.resultJson);
|
|
4163
|
+
const continuationIssue = authority === "process_gone" &&
|
|
4164
|
+
run.runtimeMode === "legacy" &&
|
|
4165
|
+
(!run.errorCode || run.errorCode === "process_detached") &&
|
|
4166
|
+
runResult.executionCancellation === undefined &&
|
|
4167
|
+
runResult.startupCancellation === undefined &&
|
|
4168
|
+
issueId
|
|
4169
|
+
? await db
|
|
4170
|
+
.select({ conversationAgentId: issues.conversationAgentId })
|
|
4171
|
+
.from(issues)
|
|
4172
|
+
.where(and(eq(issues.id, issueId), eq(issues.companyId, run.companyId)))
|
|
4173
|
+
.then((rows) => rows[0] ?? null)
|
|
4174
|
+
: null;
|
|
4175
|
+
const conversationContinuation = continuationIssue !== null &&
|
|
4176
|
+
!continuationIssue.conversationAgentId &&
|
|
4177
|
+
(await runUsedConversationAdapter(db, run));
|
|
4161
4178
|
await deps.beforeOrphanedRunTerminalWrite?.(run.id);
|
|
4162
4179
|
const now = new Date();
|
|
4163
4180
|
const updated = await db
|
|
@@ -4168,6 +4185,13 @@ export function recoveryService(db, deps) {
|
|
|
4168
4185
|
error: run.error ?? (terminalStatus === "interrupted" ? message : null),
|
|
4169
4186
|
errorCode: run.errorCode ??
|
|
4170
4187
|
(terminalStatus === "interrupted" ? errorCode : null),
|
|
4188
|
+
...(conversationContinuation
|
|
4189
|
+
? {
|
|
4190
|
+
resultJson: sql `coalesce(${heartbeatRuns.resultJson}, '{}'::jsonb) || ${JSON.stringify({
|
|
4191
|
+
conversationContinuation: CONVERSATION_CONTINUATION_POLICY,
|
|
4192
|
+
})}::jsonb`,
|
|
4193
|
+
}
|
|
4194
|
+
: {}),
|
|
4171
4195
|
updatedAt: now,
|
|
4172
4196
|
})
|
|
4173
4197
|
.where(and(eq(heartbeatRuns.id, run.id), eq(heartbeatRuns.status, "running"), eq(heartbeatRuns.runtimeMode, run.runtimeMode), nativeRunnerOwnershipNotHeldCondition(),
|
|
@@ -4226,6 +4250,14 @@ export function recoveryService(db, deps) {
|
|
|
4226
4250
|
pid,
|
|
4227
4251
|
processGroupId,
|
|
4228
4252
|
}, "terminalized orphaned running heartbeat run in stale-lock sweep");
|
|
4253
|
+
if (conversationContinuation && deps.continueProcessGoneRun) {
|
|
4254
|
+
try {
|
|
4255
|
+
await deps.continueProcessGoneRun(updated);
|
|
4256
|
+
}
|
|
4257
|
+
catch (error) {
|
|
4258
|
+
logger.error({ err: error, runId: run.id, issueId }, "failed to schedule a continuation for a process-gone run; the sweep still clears the lock");
|
|
4259
|
+
}
|
|
4260
|
+
}
|
|
4229
4261
|
return { terminalized: true, status: updated.status };
|
|
4230
4262
|
}
|
|
4231
4263
|
// Backstop sweeper: clears stale lock columns on issues whose checkoutRunId
|