Q53: stalled goal reviews leave a visible state and a resume path
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
1 parent
69e991ff93
commit
ec2698575d
15 files changed
+149
-45
No files matched your search
@@ -32,6 +32,7 @@ import { IntegrationKeyStore } from "../services/integration-key-store";
|
||||
import { importStagedSkills, stageBuiltinSkillsLibrary } from "../services/builtin-skills";
|
||||
import { coalesce } from "./coalesce";
|
||||
import { normalizeExternalBrowserUrl } from "./external-url";
|
||||
import { resumeGoal } from "../services/goal-review-service";
|
||||
|
||||
export interface IpcDeps {
|
||||
connection: DatabaseConnection;
|
||||
@@ -171,6 +172,7 @@ export function registerIpcHandlers(deps: IpcDeps): void {
|
||||
ipcMain.handle(IPC_CHANNELS.deleteDocument, (_event, input) => mutate(() => documents.delete(input)));
|
||||
ipcMain.handle(IPC_CHANNELS.createKnowledgeEntry, (_event, input) => mutate(() => knowledge.create(input)));
|
||||
ipcMain.handle(IPC_CHANNELS.deleteKnowledgeEntry, (_event, input) => mutate(() => knowledge.delete(input)));
|
||||
ipcMain.handle(IPC_CHANNELS.resumeGoal, (_event, input) => mutate(() => resumeGoal(deps.connection.db, organization, input.orgId, input.goalId)));
|
||||
ipcMain.handle(IPC_CHANNELS.updateKnowledgeEntry, (_event, input) => mutate(() => knowledge.update(input)));
|
||||
ipcMain.handle(IPC_CHANNELS.listDocumentVersions, (_event, input) => query("document_versions_failed", () =>
|
||||
documents.versions(input.orgId, input.documentId).map((v) => ({
|
||||
|
||||
@@ -3,7 +3,7 @@ import type { DatabaseConnection } from "../database/connection";
|
||||
import { IPC_CHANNELS } from "../../shared/ipc";
|
||||
import { expireStaleChatWakes } from "../services/chat-agent-wake-service";
|
||||
import { OrganizationService } from "../services/organization-service";
|
||||
import { spawnGoalReviews } from "../services/goal-review-service";
|
||||
import { markStalledGoals, spawnGoalReviews } from "../services/goal-review-service";
|
||||
import { TaskExecutionService } from "../services/task-execution-service";
|
||||
import { runningWorkspaceWriter } from "../services/workspace-write-lock";
|
||||
|
||||
@@ -132,7 +132,8 @@ export function startTaskQueueWorker(input: TaskQueueWorkerInput): () => void {
|
||||
// Goal checkpoints first, so a review task created this tick is
|
||||
// eligible for the same tick's heartbeat enqueue below.
|
||||
const reviews = input.connection.transaction(() => spawnGoalReviews(input.connection.db, organization));
|
||||
if (reviews.length > 0) notifyDataChanged();
|
||||
const stalledGoals = input.connection.transaction(() => markStalledGoals(input.connection.db));
|
||||
if (reviews.length > 0 || stalledGoals > 0) notifyDataChanged();
|
||||
const enqueued = input.connection.transaction(() => taskExecution.enqueueHeartbeatRuns());
|
||||
if (enqueued.length > 0) notifyDataChanged();
|
||||
dispatch("interactive");
|
||||
|
||||
Reference in new issue
Block a user