@agent-native/dispatch 0.7.0 → 0.8.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/README.md +37 -0
- package/dist/actions/apply-dream-proposal.d.ts +3 -0
- package/dist/actions/apply-dream-proposal.d.ts.map +1 -0
- package/dist/actions/apply-dream-proposal.js +11 -0
- package/dist/actions/apply-dream-proposal.js.map +1 -0
- package/dist/actions/create-dream-report.d.ts +3 -0
- package/dist/actions/create-dream-report.d.ts.map +1 -0
- package/dist/actions/create-dream-report.js +67 -0
- package/dist/actions/create-dream-report.js.map +1 -0
- package/dist/actions/create-workspace-resource.js +3 -3
- package/dist/actions/create-workspace-resource.js.map +1 -1
- package/dist/actions/delete-workspace-resource.js +1 -1
- package/dist/actions/delete-workspace-resource.js.map +1 -1
- package/dist/actions/ensure-dream-job.d.ts +3 -0
- package/dist/actions/ensure-dream-job.d.ts.map +1 -0
- package/dist/actions/ensure-dream-job.js +73 -0
- package/dist/actions/ensure-dream-job.js.map +1 -0
- package/dist/actions/get-dream-settings.d.ts +3 -0
- package/dist/actions/get-dream-settings.d.ts.map +1 -0
- package/dist/actions/get-dream-settings.js +11 -0
- package/dist/actions/get-dream-settings.js.map +1 -0
- package/dist/actions/get-dream.d.ts +3 -0
- package/dist/actions/get-dream.d.ts.map +1 -0
- package/dist/actions/get-dream.js +13 -0
- package/dist/actions/get-dream.js.map +1 -0
- package/dist/actions/get-workspace-resource-effective-context.d.ts +3 -0
- package/dist/actions/get-workspace-resource-effective-context.d.ts.map +1 -0
- package/dist/actions/get-workspace-resource-effective-context.js +27 -0
- package/dist/actions/get-workspace-resource-effective-context.js.map +1 -0
- package/dist/actions/index.d.ts.map +1 -1
- package/dist/actions/index.js +30 -4
- package/dist/actions/index.js.map +1 -1
- package/dist/actions/list-dream-candidates.d.ts +3 -0
- package/dist/actions/list-dream-candidates.d.ts.map +1 -0
- package/dist/actions/list-dream-candidates.js +68 -0
- package/dist/actions/list-dream-candidates.js.map +1 -0
- package/dist/actions/list-dreams.d.ts +3 -0
- package/dist/actions/list-dreams.d.ts.map +1 -0
- package/dist/actions/list-dreams.js +17 -0
- package/dist/actions/list-dreams.js.map +1 -0
- package/dist/actions/list-workspace-resources-for-app.d.ts +3 -0
- package/dist/actions/list-workspace-resources-for-app.d.ts.map +1 -0
- package/dist/actions/list-workspace-resources-for-app.js +12 -0
- package/dist/actions/list-workspace-resources-for-app.js.map +1 -0
- package/dist/actions/list-workspace-resources.js +1 -1
- package/dist/actions/list-workspace-resources.js.map +1 -1
- package/dist/actions/navigate.d.ts +1 -0
- package/dist/actions/navigate.d.ts.map +1 -1
- package/dist/actions/navigate.js +2 -1
- package/dist/actions/navigate.js.map +1 -1
- package/dist/actions/preview-dream-proposal.d.ts +3 -0
- package/dist/actions/preview-dream-proposal.d.ts.map +1 -0
- package/dist/actions/preview-dream-proposal.js +13 -0
- package/dist/actions/preview-dream-proposal.js.map +1 -0
- package/dist/actions/preview-workspace-resource-change.d.ts +3 -0
- package/dist/actions/preview-workspace-resource-change.d.ts.map +1 -0
- package/dist/actions/preview-workspace-resource-change.js +24 -0
- package/dist/actions/preview-workspace-resource-change.js.map +1 -0
- package/dist/actions/reject-dream-proposal.d.ts +3 -0
- package/dist/actions/reject-dream-proposal.d.ts.map +1 -0
- package/dist/actions/reject-dream-proposal.js +12 -0
- package/dist/actions/reject-dream-proposal.js.map +1 -0
- package/dist/actions/restore-starter-workspace-resources.d.ts +3 -0
- package/dist/actions/restore-starter-workspace-resources.d.ts.map +1 -0
- package/dist/actions/restore-starter-workspace-resources.js +14 -0
- package/dist/actions/restore-starter-workspace-resources.js.map +1 -0
- package/dist/actions/send-code-agent-remote-command.d.ts +3 -0
- package/dist/actions/send-code-agent-remote-command.d.ts.map +1 -0
- package/dist/actions/send-code-agent-remote-command.js +53 -0
- package/dist/actions/send-code-agent-remote-command.js.map +1 -0
- package/dist/actions/set-dream-settings.d.ts +3 -0
- package/dist/actions/set-dream-settings.d.ts.map +1 -0
- package/dist/actions/set-dream-settings.js +41 -0
- package/dist/actions/set-dream-settings.js.map +1 -0
- package/dist/actions/update-workspace-resource.js +1 -1
- package/dist/actions/update-workspace-resource.js.map +1 -1
- package/dist/actions/view-screen.d.ts.map +1 -1
- package/dist/actions/view-screen.js +73 -2
- package/dist/actions/view-screen.js.map +1 -1
- package/dist/components/approval-value-block.d.ts +7 -0
- package/dist/components/approval-value-block.d.ts.map +1 -0
- package/dist/components/approval-value-block.js +22 -0
- package/dist/components/approval-value-block.js.map +1 -0
- package/dist/components/create-app-popover.d.ts.map +1 -1
- package/dist/components/create-app-popover.js +3 -2
- package/dist/components/create-app-popover.js.map +1 -1
- package/dist/components/layout/Layout.d.ts.map +1 -1
- package/dist/components/layout/Layout.js +8 -1
- package/dist/components/layout/Layout.js.map +1 -1
- package/dist/components/ui/chart.d.ts +1 -1
- package/dist/components/workspace-app-card.d.ts.map +1 -1
- package/dist/components/workspace-app-card.js +25 -4
- package/dist/components/workspace-app-card.js.map +1 -1
- package/dist/components/workspace-resource-effective-stack.d.ts +11 -0
- package/dist/components/workspace-resource-effective-stack.d.ts.map +1 -0
- package/dist/components/workspace-resource-effective-stack.js +59 -0
- package/dist/components/workspace-resource-effective-stack.js.map +1 -0
- package/dist/components/workspace-resource-impact-preview.d.ts +9 -0
- package/dist/components/workspace-resource-impact-preview.d.ts.map +1 -0
- package/dist/components/workspace-resource-impact-preview.js +39 -0
- package/dist/components/workspace-resource-impact-preview.js.map +1 -0
- package/dist/db/migrations.d.ts.map +1 -1
- package/dist/db/migrations.js +59 -0
- package/dist/db/migrations.js.map +1 -1
- package/dist/db/schema.d.ts +714 -0
- package/dist/db/schema.d.ts.map +1 -1
- package/dist/db/schema.js +44 -2
- package/dist/db/schema.js.map +1 -1
- package/dist/hooks/use-navigation-state.d.ts +3 -0
- package/dist/hooks/use-navigation-state.d.ts.map +1 -1
- package/dist/hooks/use-navigation-state.js +23 -3
- package/dist/hooks/use-navigation-state.js.map +1 -1
- package/dist/lib/utils.d.ts +2 -1
- package/dist/lib/utils.d.ts.map +1 -1
- package/dist/lib/utils.js +5 -1
- package/dist/lib/utils.js.map +1 -1
- package/dist/routes/index.d.ts.map +1 -1
- package/dist/routes/index.js +1 -0
- package/dist/routes/index.js.map +1 -1
- package/dist/routes/pages/approval.d.ts.map +1 -1
- package/dist/routes/pages/approval.js +4 -1
- package/dist/routes/pages/approval.js.map +1 -1
- package/dist/routes/pages/approvals.js +1 -1
- package/dist/routes/pages/approvals.js.map +1 -1
- package/dist/routes/pages/dream-settings.d.ts +34 -0
- package/dist/routes/pages/dream-settings.d.ts.map +1 -0
- package/dist/routes/pages/dream-settings.js +68 -0
- package/dist/routes/pages/dream-settings.js.map +1 -0
- package/dist/routes/pages/dreams.d.ts +5 -0
- package/dist/routes/pages/dreams.d.ts.map +1 -0
- package/dist/routes/pages/dreams.js +435 -0
- package/dist/routes/pages/dreams.js.map +1 -0
- package/dist/routes/pages/workspace.d.ts.map +1 -1
- package/dist/routes/pages/workspace.js +187 -35
- package/dist/routes/pages/workspace.js.map +1 -1
- package/dist/server/lib/app-creation-store.d.ts.map +1 -1
- package/dist/server/lib/app-creation-store.js +3 -2
- package/dist/server/lib/app-creation-store.js.map +1 -1
- package/dist/server/lib/dispatch-integrations.d.ts +1 -1
- package/dist/server/lib/dispatch-integrations.d.ts.map +1 -1
- package/dist/server/lib/dispatch-integrations.js +9 -4
- package/dist/server/lib/dispatch-integrations.js.map +1 -1
- package/dist/server/lib/dispatch-remote-commands.d.ts +83 -0
- package/dist/server/lib/dispatch-remote-commands.d.ts.map +1 -0
- package/dist/server/lib/dispatch-remote-commands.js +256 -0
- package/dist/server/lib/dispatch-remote-commands.js.map +1 -0
- package/dist/server/lib/dispatch-store.d.ts +26 -0
- package/dist/server/lib/dispatch-store.d.ts.map +1 -1
- package/dist/server/lib/dispatch-store.js +17 -1
- package/dist/server/lib/dispatch-store.js.map +1 -1
- package/dist/server/lib/dreams-store.d.ts +398 -0
- package/dist/server/lib/dreams-store.d.ts.map +1 -0
- package/dist/server/lib/dreams-store.js +2330 -0
- package/dist/server/lib/dreams-store.js.map +1 -0
- package/dist/server/lib/thread-debug-store.d.ts +2 -2
- package/dist/server/lib/vault-store.d.ts +1 -1
- package/dist/server/lib/workspace-resources-store.d.ts +181 -17
- package/dist/server/lib/workspace-resources-store.d.ts.map +1 -1
- package/dist/server/lib/workspace-resources-store.js +737 -108
- package/dist/server/lib/workspace-resources-store.js.map +1 -1
- package/package.json +4 -2
- package/src/actions/apply-dream-proposal.ts +12 -0
- package/src/actions/create-dream-report.ts +76 -0
- package/src/actions/create-workspace-resource.ts +3 -3
- package/src/actions/delete-workspace-resource.ts +1 -1
- package/src/actions/ensure-dream-job.ts +76 -0
- package/src/actions/get-dream-settings.ts +12 -0
- package/src/actions/get-dream.ts +14 -0
- package/src/actions/get-workspace-resource-effective-context.ts +34 -0
- package/src/actions/index.spec.ts +26 -0
- package/src/actions/index.ts +31 -4
- package/src/actions/list-dream-candidates.ts +77 -0
- package/src/actions/list-dreams.ts +17 -0
- package/src/actions/list-workspace-resources-for-app.ts +13 -0
- package/src/actions/list-workspace-resources.ts +1 -1
- package/src/actions/navigate.ts +2 -1
- package/src/actions/preview-dream-proposal.ts +14 -0
- package/src/actions/preview-workspace-resource-change.ts +25 -0
- package/src/actions/reject-dream-proposal.ts +12 -0
- package/src/actions/restore-starter-workspace-resources.ts +17 -0
- package/src/actions/send-code-agent-remote-command.ts +59 -0
- package/src/actions/set-dream-settings.spec.ts +81 -0
- package/src/actions/set-dream-settings.ts +44 -0
- package/src/actions/update-workspace-resource.ts +1 -1
- package/src/actions/view-screen.ts +90 -2
- package/src/components/approval-value-block.spec.tsx +59 -0
- package/src/components/approval-value-block.tsx +33 -0
- package/src/components/create-app-popover.tsx +3 -2
- package/src/components/layout/Layout.tsx +8 -0
- package/src/components/workspace-app-card.tsx +166 -1
- package/src/components/workspace-resource-effective-stack.spec.tsx +125 -0
- package/src/components/workspace-resource-effective-stack.tsx +141 -0
- package/src/components/workspace-resource-impact-preview.spec.tsx +147 -0
- package/src/components/workspace-resource-impact-preview.tsx +116 -0
- package/src/db/migrations.ts +59 -0
- package/src/db/schema.ts +46 -2
- package/src/hooks/use-navigation-state.ts +24 -5
- package/src/lib/utils.ts +6 -1
- package/src/routes/index.ts +1 -0
- package/src/routes/pages/approval.tsx +14 -1
- package/src/routes/pages/approvals.tsx +1 -1
- package/src/routes/pages/dream-settings.spec.ts +130 -0
- package/src/routes/pages/dream-settings.ts +103 -0
- package/src/routes/pages/dreams.tsx +1828 -0
- package/src/routes/pages/workspace.tsx +577 -97
- package/src/server/lib/app-creation-store.ts +3 -2
- package/src/server/lib/dispatch-integrations.ts +10 -3
- package/src/server/lib/dispatch-remote-commands.spec.ts +167 -0
- package/src/server/lib/dispatch-remote-commands.ts +375 -0
- package/src/server/lib/dispatch-store.ts +37 -1
- package/src/server/lib/dreams-store.spec.ts +1492 -0
- package/src/server/lib/dreams-store.ts +3168 -0
- package/src/server/lib/workspace-resource-approval-lifecycle.spec.ts +236 -0
- package/src/server/lib/workspace-resources-store.spec.ts +1106 -0
- package/src/server/lib/workspace-resources-store.ts +1001 -134
- package/dist/actions/sync-workspace-resources-to-all.d.ts +0 -3
- package/dist/actions/sync-workspace-resources-to-all.d.ts.map +0 -1
- package/dist/actions/sync-workspace-resources-to-all.js +0 -9
- package/dist/actions/sync-workspace-resources-to-all.js.map +0 -1
- package/dist/actions/sync-workspace-resources-to-app.d.ts +0 -3
- package/dist/actions/sync-workspace-resources-to-app.d.ts.map +0 -1
- package/dist/actions/sync-workspace-resources-to-app.js +0 -11
- package/dist/actions/sync-workspace-resources-to-app.js.map +0 -1
- package/src/actions/sync-workspace-resources-to-all.ts +0 -10
- package/src/actions/sync-workspace-resources-to-app.ts +0 -12
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dreams-store.js","sourceRoot":"","sources":["../../../src/server/lib/dreams-store.ts"],"names":[],"mappings":"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","sourcesContent":["import crypto from \"node:crypto\";\nimport { and, desc, eq, inArray, isNull, or } from \"drizzle-orm\";\nimport {\n resourceGetByPath,\n resourceList,\n resourcePut,\n SHARED_OWNER,\n} from \"@agent-native/core/resources/store\";\nimport {\n getOrgSetting,\n getUserSetting,\n putOrgSetting,\n putUserSetting,\n} from \"@agent-native/core/settings\";\nimport { getDb, schema } from \"../../db/index.js\";\nimport {\n createApprovalRequest,\n currentOrgId,\n currentOwnerEmail,\n getApprovalPolicy,\n recordAudit,\n type DispatchCtx,\n} from \"./dispatch-store.js\";\nimport {\n getAgentThreadDebug,\n listThreadDebugSources,\n searchAgentThreads,\n} from \"./thread-debug-store.js\";\nimport {\n createWorkspaceResource,\n listWorkspaceResources,\n updateWorkspaceResource,\n type WorkspaceResourceKind,\n type WorkspaceResourceScope,\n} from \"./workspace-resources-store.js\";\n\nconst DEFAULT_DREAM_LIMIT = 20;\nconst MAX_DREAM_LIMIT = 50;\nconst DEFAULT_SOURCE_TIMEOUT_MS = 15_000;\nconst MAX_SOURCE_TIMEOUT_MS = 60_000;\nconst DEFAULT_SOURCE_CONCURRENCY = 2;\nconst MAX_SOURCE_CONCURRENCY = 8;\nconst DEFAULT_SOURCE_START_STAGGER_MS = 250;\nconst MAX_SOURCE_START_STAGGER_MS = 5_000;\nconst DEFAULT_THREAD_CONCURRENCY = 3;\nconst MAX_THREAD_CONCURRENCY = 10;\nconst DEFAULT_THREAD_TIMEOUT_MS = 8_000;\nconst MAX_THREAD_TIMEOUT_MS = 30_000;\nconst MEMORY_INDEX_PATH = \"memory/MEMORY.md\";\nconst DREAM_JOB_PATH = \"jobs/dispatch-dream.md\";\nconst DEFAULT_DREAM_CRON = \"0 9 * * 1\";\nconst DREAM_SETTINGS_KEY = \"dispatch-dream-settings\";\n\ntype DreamRow = typeof schema.dispatchDreams.$inferSelect;\ntype DreamProposalRow = typeof schema.dispatchDreamProposals.$inferSelect;\n\ntype DreamStatus = \"running\" | \"completed\" | \"failed\";\ntype ProposalStatus = \"pending\" | \"approval_requested\" | \"applied\" | \"rejected\";\ntype ProposalTargetType =\n | \"personal-memory\"\n | \"shared-learnings\"\n | \"workspace-instruction\"\n | \"workspace-skill\"\n | \"workspace-knowledge\"\n | \"workspace-agent\";\ntype ProposalRisk = \"low\" | \"medium\" | \"high\";\ntype DreamSourceStatus = \"ok\" | \"timed_out\" | \"error\";\n\nexport interface DreamSourceHealth {\n sourceId: string;\n label?: string | null;\n status: DreamSourceStatus;\n startedAt: number;\n completedAt: number;\n durationMs: number;\n timeoutMs: number;\n inspectedThreadCount: number;\n candidateCount: number;\n errorCount: number;\n threadErrorCount: number;\n message?: string | null;\n}\n\ninterface DreamCandidateReason {\n code: string;\n label: string;\n score: number;\n evidenceCount: number;\n}\n\nexport interface DreamEvidence {\n kind: string;\n label: string;\n snippet: string;\n threadId: string;\n threadTitle?: string;\n sourceId?: string | null;\n runId?: string | null;\n messageIndex?: number;\n createdAt?: number | null;\n}\n\nexport interface DreamCandidate {\n thread: {\n id: string;\n ownerEmail: string;\n title: string;\n preview: string;\n messageCount: number;\n createdAt: number;\n updatedAt: number;\n };\n sourceId: string;\n score: number;\n reasons: DreamCandidateReason[];\n evidenceCounts: Record<string, number>;\n evidence: DreamEvidence[];\n latestRunStatus: string | null;\n}\n\nexport interface DreamProposalInput {\n targetType: ProposalTargetType;\n targetPath: string;\n title: string;\n summary: string;\n rationale: string;\n content: string;\n evidence: DreamEvidence[];\n confidence: number;\n risk: ProposalRisk;\n}\n\nexport interface DreamMemoryNote {\n path: string;\n content: string;\n}\n\nexport interface DreamMemoryContext {\n personalIndex: string;\n personalNotes: DreamMemoryNote[];\n sharedLearnings: string;\n workspaceResources?: DreamMemoryNote[];\n}\n\nexport interface DreamProposalBuildResult {\n proposals: DreamProposalInput[];\n guardrailNotes: string[];\n}\n\nexport interface DreamProposalBuildOptions {\n personalMemoryAllowed?: boolean;\n personalMemoryBlockReason?: string | null;\n}\n\nexport interface DreamSettings {\n scope: \"user\" | \"org\";\n scopeId: string;\n enabled: boolean;\n schedule: string;\n sourceId: string;\n sourceIds: string[];\n allSources: boolean;\n query: string | null;\n limit: number;\n sourceTimeoutMs: number;\n sourceConcurrency: number;\n sourceStartStaggerMs: number;\n threadConcurrency: number;\n threadTimeoutMs: number;\n minCandidateCount: number;\n}\n\nfunction id() {\n return crypto.randomUUID();\n}\n\nfunction now() {\n return Date.now();\n}\n\nfunction today() {\n return new Date().toISOString().slice(0, 10);\n}\n\nfunction clampLimit(limit: number | undefined) {\n return Math.max(1, Math.min(MAX_DREAM_LIMIT, limit ?? DEFAULT_DREAM_LIMIT));\n}\n\nfunction clampSourceTimeoutMs(timeoutMs: number | undefined) {\n const parsed = Number(timeoutMs ?? DEFAULT_SOURCE_TIMEOUT_MS);\n if (!Number.isFinite(parsed)) return DEFAULT_SOURCE_TIMEOUT_MS;\n return Math.max(1, Math.min(MAX_SOURCE_TIMEOUT_MS, Math.floor(parsed)));\n}\n\nfunction clampSourceConcurrency(value: number | undefined) {\n const parsed = Number(value ?? DEFAULT_SOURCE_CONCURRENCY);\n if (!Number.isFinite(parsed)) return DEFAULT_SOURCE_CONCURRENCY;\n return Math.max(1, Math.min(MAX_SOURCE_CONCURRENCY, Math.floor(parsed)));\n}\n\nfunction clampSourceStartStaggerMs(value: number | undefined) {\n const parsed = Number(value ?? DEFAULT_SOURCE_START_STAGGER_MS);\n if (!Number.isFinite(parsed)) return DEFAULT_SOURCE_START_STAGGER_MS;\n return Math.max(0, Math.min(MAX_SOURCE_START_STAGGER_MS, Math.floor(parsed)));\n}\n\nfunction clampThreadConcurrency(value: number | undefined) {\n const parsed = Number(value ?? DEFAULT_THREAD_CONCURRENCY);\n if (!Number.isFinite(parsed)) return DEFAULT_THREAD_CONCURRENCY;\n return Math.max(1, Math.min(MAX_THREAD_CONCURRENCY, Math.floor(parsed)));\n}\n\nfunction clampThreadTimeoutMs(\n value: number | undefined,\n sourceTimeoutMs: number,\n) {\n const fallback = Math.min(\n DEFAULT_THREAD_TIMEOUT_MS,\n Math.max(1_000, Math.floor(sourceTimeoutMs * 0.6)),\n );\n const parsed = Number(value ?? fallback);\n if (!Number.isFinite(parsed)) return fallback;\n return Math.max(\n 1,\n Math.min(MAX_THREAD_TIMEOUT_MS, sourceTimeoutMs, Math.floor(parsed)),\n );\n}\n\nfunction clampMinCandidateCount(value: number | undefined) {\n const parsed = Number(value ?? 1);\n if (!Number.isFinite(parsed)) return 1;\n return Math.max(0, Math.min(50, Math.floor(parsed)));\n}\n\nfunction dreamSettingsScope() {\n const orgId = currentOrgId();\n if (orgId) return { scope: \"org\" as const, scopeId: orgId };\n return { scope: \"user\" as const, scopeId: currentOwnerEmail() };\n}\n\nfunction normalizeSourceIds(value: unknown): string[] {\n if (!Array.isArray(value)) return [];\n return Array.from(\n new Set(\n value\n .map((entry) => String(entry ?? \"\").trim())\n .filter(Boolean)\n .slice(0, 50),\n ),\n );\n}\n\nfunction normalizeDreamSettings(\n raw: Record<string, unknown> | null | undefined,\n): Omit<DreamSettings, \"scope\" | \"scopeId\"> {\n const sourceIds = normalizeSourceIds(raw?.sourceIds);\n const sourceId = String(raw?.sourceId ?? \"\").trim() || \"all\";\n return {\n enabled: raw?.enabled === true,\n schedule:\n typeof raw?.schedule === \"string\" && cronLooksValid(raw.schedule)\n ? raw.schedule\n : DEFAULT_DREAM_CRON,\n sourceId,\n sourceIds,\n allSources:\n raw?.allSources === true || sourceId === \"all\" || sourceIds.length > 0,\n query:\n typeof raw?.query === \"string\" && raw.query.trim()\n ? raw.query.trim()\n : null,\n limit: clampLimit(Number(raw?.limit ?? 8)),\n sourceTimeoutMs: clampSourceTimeoutMs(\n Number(raw?.sourceTimeoutMs ?? 30_000),\n ),\n sourceConcurrency: clampSourceConcurrency(\n Number(raw?.sourceConcurrency ?? DEFAULT_SOURCE_CONCURRENCY),\n ),\n sourceStartStaggerMs: clampSourceStartStaggerMs(\n Number(raw?.sourceStartStaggerMs ?? DEFAULT_SOURCE_START_STAGGER_MS),\n ),\n threadConcurrency: clampThreadConcurrency(\n Number(raw?.threadConcurrency ?? DEFAULT_THREAD_CONCURRENCY),\n ),\n threadTimeoutMs: clampThreadTimeoutMs(\n Number(raw?.threadTimeoutMs ?? DEFAULT_THREAD_TIMEOUT_MS),\n clampSourceTimeoutMs(Number(raw?.sourceTimeoutMs ?? 30_000)),\n ),\n minCandidateCount: clampMinCandidateCount(\n Number(raw?.minCandidateCount ?? 1),\n ),\n };\n}\n\nexport async function getDreamSettings(): Promise<DreamSettings> {\n const scope = dreamSettingsScope();\n const raw =\n scope.scope === \"org\"\n ? await getOrgSetting(scope.scopeId, DREAM_SETTINGS_KEY)\n : await getUserSetting(scope.scopeId, DREAM_SETTINGS_KEY);\n return {\n ...scope,\n ...normalizeDreamSettings(raw as Record<string, unknown> | null),\n };\n}\n\nexport async function setDreamSettings(\n input: Partial<\n Pick<\n DreamSettings,\n | \"enabled\"\n | \"schedule\"\n | \"sourceId\"\n | \"sourceIds\"\n | \"allSources\"\n | \"query\"\n | \"limit\"\n | \"sourceTimeoutMs\"\n | \"sourceConcurrency\"\n | \"sourceStartStaggerMs\"\n | \"threadConcurrency\"\n | \"threadTimeoutMs\"\n | \"minCandidateCount\"\n >\n >,\n): Promise<DreamSettings> {\n if (input.schedule && !cronLooksValid(input.schedule)) {\n throw new Error(\n 'Invalid cron expression. Use a standard five-field cron like \"0 9 * * 1\".',\n );\n }\n const current = await getDreamSettings();\n const next = normalizeDreamSettings({\n ...current,\n ...input,\n sourceIds:\n input.sourceIds !== undefined\n ? normalizeSourceIds(input.sourceIds)\n : current.sourceIds,\n query:\n input.query === undefined\n ? current.query\n : input.query?.trim()\n ? input.query.trim()\n : null,\n });\n const scope = dreamSettingsScope();\n if (scope.scope === \"org\") {\n await putOrgSetting(scope.scopeId, DREAM_SETTINGS_KEY, next);\n } else {\n await putUserSetting(scope.scopeId, DREAM_SETTINGS_KEY, next);\n }\n await recordAudit({\n action: \"dream.settings.updated\",\n targetType: \"dream-settings\",\n targetId: DREAM_SETTINGS_KEY,\n summary: next.enabled\n ? \"Updated and enabled recurring Dispatch dream settings\"\n : \"Updated recurring Dispatch dream settings\",\n metadata: next,\n });\n return getDreamSettings();\n}\n\nclass DreamSourceTimeoutError extends Error {\n readonly code = \"DREAM_SOURCE_TIMEOUT\";\n\n constructor(sourceId: string, timeoutMs: number) {\n super(`Dream source \"${sourceId}\" timed out after ${timeoutMs}ms.`);\n this.name = \"DreamSourceTimeoutError\";\n }\n}\n\nasync function withTimeout<T>(\n promise: Promise<T>,\n sourceId: string,\n timeoutMs: number,\n): Promise<T> {\n let timeout: ReturnType<typeof setTimeout> | null = null;\n try {\n return await Promise.race([\n promise,\n new Promise<T>((_, reject) => {\n timeout = setTimeout(\n () => reject(new DreamSourceTimeoutError(sourceId, timeoutMs)),\n timeoutMs,\n );\n }),\n ]);\n } finally {\n if (timeout) clearTimeout(timeout);\n }\n}\n\nfunction isDreamSourceTimeout(error: unknown): boolean {\n return (\n error instanceof DreamSourceTimeoutError ||\n (error as any)?.code === \"DREAM_SOURCE_TIMEOUT\"\n );\n}\n\nfunction sleep(ms: number): Promise<void> {\n if (ms <= 0) return Promise.resolve();\n return new Promise((resolve) => setTimeout(resolve, ms));\n}\n\nfunction compactErrorMessage(error: unknown): string {\n return compactText((error as Error)?.message ?? error, 320);\n}\n\nasync function mapWithConcurrency<T, R>(\n items: T[],\n concurrency: number,\n worker: (item: T, index: number) => Promise<R>,\n): Promise<R[]> {\n const results: R[] = new Array(items.length);\n let nextIndex = 0;\n const workerCount = Math.max(1, Math.min(concurrency, items.length));\n await Promise.all(\n Array.from({ length: workerCount }, async () => {\n while (nextIndex < items.length) {\n const index = nextIndex;\n nextIndex += 1;\n results[index] = await worker(items[index]!, index);\n }\n }),\n );\n return results;\n}\n\nfunction scopeFor<T extends { ownerEmail: any; orgId: any }>(\n table: T,\n ctx: DispatchCtx,\n) {\n if (!ctx.orgId) {\n return and(eq(table.ownerEmail, ctx.ownerEmail), isNull(table.orgId));\n }\n return or(eq(table.ownerEmail, ctx.ownerEmail), eq(table.orgId, ctx.orgId));\n}\n\nfunction safeJson(value: unknown): string {\n try {\n return JSON.stringify(value ?? null);\n } catch {\n return \"null\";\n }\n}\n\nfunction safeJsonParse<T>(value: unknown, fallback: T): T {\n if (value == null || value === \"\") return fallback;\n try {\n return JSON.parse(String(value)) as T;\n } catch {\n return fallback;\n }\n}\n\nfunction compactText(value: unknown, max = 260): string {\n const raw =\n typeof value === \"string\" ? value : value == null ? \"\" : safeJson(value);\n const redacted = raw\n .replace(/sk-[A-Za-z0-9_-]{12,}/g, \"sk-REDACTED\")\n .replace(/anthropic-[A-Za-z0-9_-]{12,}/gi, \"anthropic-REDACTED\")\n .replace(/Bearer\\s+[A-Za-z0-9._~+/=-]{12,}/gi, \"Bearer REDACTED\")\n .replace(/\\b[A-Za-z0-9+/]{32,}={0,2}\\b/g, \"REDACTED_TOKEN\")\n .replace(/\\s+/g, \" \")\n .trim();\n if (redacted.length <= max) return redacted;\n return `${redacted.slice(0, max - 1).trimEnd()}…`;\n}\n\nfunction slugify(value: string): string {\n const slug = value\n .toLowerCase()\n .replace(/[^a-z0-9]+/g, \"-\")\n .replace(/^-+|-+$/g, \"\")\n .slice(0, 64);\n return slug || \"dispatch-dream\";\n}\n\nfunction parseNumber(value: unknown): number | null {\n const parsed = Number(value);\n return Number.isFinite(parsed) ? parsed : null;\n}\n\nfunction objectText(value: unknown): string {\n return compactText(value, 1_200).toLowerCase();\n}\n\nfunction isFailureStatus(status: unknown): boolean {\n const value = String(status ?? \"\").toLowerCase();\n return (\n value.includes(\"fail\") ||\n value.includes(\"error\") ||\n value.includes(\"abort\") ||\n value.includes(\"cancel\") ||\n value.includes(\"timeout\")\n );\n}\n\nfunction isSuccessStatus(status: unknown): boolean {\n const value = String(status ?? \"\").toLowerCase();\n return (\n value === \"success\" ||\n value === \"succeeded\" ||\n value === \"completed\" ||\n value === \"complete\"\n );\n}\n\nfunction isNegativeFeedback(row: Record<string, unknown>): boolean {\n const text = objectText(row);\n const rating =\n parseNumber((row as any).rating) ??\n parseNumber((row as any).score) ??\n parseNumber((row as any).value);\n return (\n text.includes(\"thumbs_down\") ||\n text.includes(\"negative\") ||\n text.includes(\"bad\") ||\n text.includes(\"incorrect\") ||\n text.includes(\"not helpful\") ||\n (rating != null && rating <= 2)\n );\n}\n\nfunction lowerString(value: unknown): string {\n return String(value ?? \"\").toLowerCase();\n}\n\nfunction sameOwnerEmail(a: unknown, b: unknown): boolean {\n const left = String(a ?? \"\")\n .trim()\n .toLowerCase();\n const right = String(b ?? \"\")\n .trim()\n .toLowerCase();\n return Boolean(left && right && left === right);\n}\n\nfunction isEvalFailure(row: Record<string, unknown>): boolean {\n const passed = (row as any).passed;\n const score = parseNumber((row as any).score);\n const status = lowerString((row as any).status);\n const result = lowerString((row as any).result ?? (row as any).outcome);\n return (\n passed === false ||\n status === \"failed\" ||\n status === \"failure\" ||\n status === \"regression\" ||\n result === \"failed\" ||\n result === \"failure\" ||\n result === \"regression\" ||\n (score != null && score < 0.7)\n );\n}\n\nfunction isLowSatisfaction(row: Record<string, unknown>): boolean {\n const text = objectText(row);\n const score =\n parseNumber((row as any).score) ??\n parseNumber((row as any).satisfaction) ??\n parseNumber((row as any).value);\n return (\n text.includes(\"frustrat\") ||\n text.includes(\"unsatisfied\") ||\n text.includes(\"low\") ||\n (score != null && score < 0.65)\n );\n}\n\nfunction reason(\n code: string,\n label: string,\n score: number,\n evidenceCount: number,\n): DreamCandidateReason {\n return { code, label, score, evidenceCount };\n}\n\ntype DreamEvidenceInput = Omit<DreamEvidence, \"snippet\"> & {\n snippet: unknown;\n};\n\nfunction isRecord(value: unknown): value is Record<string, unknown> {\n return Boolean(value && typeof value === \"object\" && !Array.isArray(value));\n}\n\nfunction firstString(\n record: Record<string, unknown>,\n keys: string[],\n): string | null {\n for (const key of keys) {\n const value = record[key];\n if (typeof value === \"string\" && value.trim()) return value.trim();\n }\n return null;\n}\n\nfunction firstNumber(\n record: Record<string, unknown>,\n keys: string[],\n): number | null {\n for (const key of keys) {\n const value = parseNumber(record[key]);\n if (value != null) return value;\n }\n return null;\n}\n\nfunction metadataRecord(value: unknown): Record<string, unknown> {\n if (isRecord(value)) return value;\n if (typeof value !== \"string\" || !value.trim()) return {};\n const parsed = safeJsonParse<Record<string, unknown> | null>(value, null);\n return isRecord(parsed) ? parsed : {};\n}\n\nfunction maybeJsonRecord(value: unknown): Record<string, unknown> | null {\n if (isRecord(value)) return value;\n if (typeof value !== \"string\" || !value.trim().startsWith(\"{\")) return null;\n const parsed = safeJsonParse<Record<string, unknown> | null>(value, null);\n return isRecord(parsed) ? parsed : null;\n}\n\nfunction humanizeKey(value: string): string {\n return value\n .replace(/([a-z0-9])([A-Z])/g, \"$1 $2\")\n .replace(/[_-]+/g, \" \")\n .replace(/\\s+/g, \" \")\n .trim()\n .toLowerCase();\n}\n\nfunction formatNumber(value: number): string {\n return Number.isInteger(value) ? String(value) : value.toFixed(3);\n}\n\nfunction formatMetadataComparison(\n metadata: Record<string, unknown>,\n): string | null {\n for (const [key, rawActual] of Object.entries(metadata)) {\n if (!/^actual/i.test(key)) continue;\n const expectedKey = key.replace(/^actual/i, \"expected\");\n const actual = parseNumber(rawActual);\n const expected = parseNumber(metadata[expectedKey]);\n if (actual == null || expected == null) continue;\n const rawMetric = key.replace(/^actual/i, \"\");\n const normalizedMetric = rawMetric\n .replace(/[^a-z0-9]+/gi, \"\")\n .toLowerCase();\n const metric =\n normalizedMetric === \"ms\"\n ? \"latency\"\n : normalizedMetric.includes(\"cx\")\n ? \"cost\"\n : humanizeKey(rawMetric) || \"value\";\n const unit = /ms$/i.test(key) ? \"ms\" : \"\";\n return `${metric}: actual ${formatNumber(actual)}${unit}, expected ${formatNumber(expected)}${unit}`;\n }\n\n const actualMs = firstNumber(metadata, [\n \"actualMs\",\n \"actual_ms\",\n \"durationMs\",\n \"duration_ms\",\n ]);\n const expectedMs = firstNumber(metadata, [\n \"expectedMs\",\n \"expected_ms\",\n \"maxMs\",\n \"max_ms\",\n \"thresholdMs\",\n \"threshold_ms\",\n ]);\n if (actualMs != null && expectedMs != null) {\n return `latency: actual ${formatNumber(actualMs)}ms, expected ${formatNumber(expectedMs)}ms`;\n }\n\n return null;\n}\n\nfunction formatEvalFailureEvidence(value: unknown): string {\n const record = maybeJsonRecord(value);\n if (!record) return compactText(value);\n const metadata = metadataRecord(record.metadata ?? record.details);\n const name =\n firstString(record, [\n \"name\",\n \"criteria\",\n \"criterion\",\n \"evalName\",\n \"eval_id\",\n \"metric\",\n \"type\",\n ]) ?? \"evaluation\";\n const score = firstNumber(record, [\"score\", \"value\"]);\n const status =\n firstString(record, [\"status\", \"result\", \"outcome\"]) ??\n (record.passed === false ? \"failed\" : null);\n const message = firstString(record, [\n \"message\",\n \"error\",\n \"reason\",\n \"summary\",\n \"notes\",\n ]);\n const comparison = formatMetadataComparison(metadata);\n const pieces = [`${humanizeKey(name)}${status ? ` ${status}` : \" failed\"}`];\n if (score != null) pieces.push(`score ${formatNumber(score)}`);\n if (comparison) pieces.push(comparison);\n if (message) pieces.push(compactText(message, 120));\n return compactText(pieces.join(\"; \"), 240);\n}\n\nfunction formatToolErrorEvidence(value: unknown): string {\n const record = maybeJsonRecord(value);\n if (!record) return compactText(value);\n const event = isRecord(record.event) ? record.event : record;\n const parsedResult = safeJsonParse<Record<string, unknown> | null>(\n event.result,\n null,\n );\n const source = isRecord(parsedResult) ? parsedResult : event;\n const code = firstString(source, [\"errorCode\", \"code\", \"status\"]);\n const message =\n firstString(source, [\"error\", \"message\", \"reason\", \"result\"]) ??\n firstString(event, [\"error\", \"message\", \"reason\", \"result\"]);\n if (message && /^tool error\\b/i.test(message.trim())) {\n return compactText(message, 240);\n }\n const prefix = code ? `Tool error (${code})` : \"Tool error\";\n return compactText(`${prefix}: ${message ?? compactText(value, 180)}`, 240);\n}\n\nfunction formatFeedbackEvidence(kind: string, value: unknown): string {\n const record = maybeJsonRecord(value);\n if (!record) return compactText(value);\n const rating = firstNumber(record, [\"rating\", \"score\", \"satisfaction\"]);\n const message =\n firstString(record, [\n \"feedback\",\n \"comment\",\n \"message\",\n \"reason\",\n \"text\",\n \"body\",\n ]) ?? firstString(record, [\"status\", \"result\", \"outcome\"]);\n const prefix =\n kind === \"low-satisfaction\"\n ? \"Low satisfaction signal\"\n : \"Negative feedback\";\n const ratingText = rating != null ? ` (score ${formatNumber(rating)})` : \"\";\n return compactText(\n `${prefix}${ratingText}: ${message ?? compactText(value, 180)}`,\n 240,\n );\n}\n\nfunction formatSuccessEvidence(value: unknown): string {\n const record = maybeJsonRecord(value);\n if (!record) return compactText(value);\n const label =\n firstString(record, [\"title\", \"name\", \"summary\", \"description\", \"path\"]) ??\n firstString(record, [\"run_id\", \"id\"]);\n return compactText(`Successful checkpoint${label ? `: ${label}` : \"\"}`, 220);\n}\n\nfunction formatEvidenceSnippet(kind: string, value: unknown): string {\n if (kind === \"eval-failure\") return formatEvalFailureEvidence(value);\n if (kind === \"tool-error\") return formatToolErrorEvidence(value);\n if (kind === \"negative-feedback\" || kind === \"low-satisfaction\") {\n return formatFeedbackEvidence(kind, value);\n }\n if (kind === \"verified-success\") return formatSuccessEvidence(value);\n return compactText(value);\n}\n\nfunction normalizeEvidenceQuote(value: string): string {\n return value\n .toLowerCase()\n .replace(/[0-9a-f]{8}-[0-9a-f-]{27,}/g, \" id \")\n .replace(\n /\\b(?:run|thread|message|event)[_-]?id[:=]?\\s*[a-z0-9._:-]+/gi,\n \" id \",\n )\n .replace(/[^a-z0-9]+/g, \" \")\n .replace(/\\s+/g, \" \")\n .trim();\n}\n\nfunction evidenceDedupeKey(entry: DreamEvidence): string {\n return [\n entry.threadId,\n entry.kind,\n normalizeEvidenceQuote(entry.snippet),\n ].join(\"\\u0000\");\n}\n\nfunction normalizeEvidence(input: DreamEvidenceInput): DreamEvidence | null {\n const snippet = formatEvidenceSnippet(input.kind, input.snippet);\n if (!snippet.trim()) return null;\n return { ...input, snippet };\n}\n\nfunction addEvidence(\n bucket: DreamEvidence[],\n input: DreamEvidenceInput,\n max = 12,\n) {\n const normalized = normalizeEvidence(input);\n if (!normalized) return;\n const key = evidenceDedupeKey(normalized);\n if (bucket.some((entry) => evidenceDedupeKey(entry) === key)) return;\n if (bucket.length >= max) return;\n bucket.push(normalized);\n}\n\nfunction stripInjectedUserContext(text: string): string {\n const marker = text.search(/(?:^|\\n)\\s*<context>/i);\n return (marker >= 0 ? text.slice(0, marker) : text).trim();\n}\n\nfunction isCorrectionSignal(lower: string): boolean {\n return (\n /\\b(actually|wrong|not what i meant|you should)\\b/.test(lower) ||\n /\\b(don't|do not|never)\\b/.test(lower) ||\n /\\b(no|instead)\\b[,.!?:;-]/.test(lower) ||\n /\\bfrom now on\\b/.test(lower)\n );\n}\n\nfunction isToolErrorEvent(value: unknown): boolean {\n const event = (value as any)?.event ?? value;\n const type = lowerString(event?.type);\n const status = lowerString(event?.status);\n if (\n type.includes(\"error\") ||\n type.includes(\"exception\") ||\n type.includes(\"failed\") ||\n status === \"error\" ||\n status === \"failed\"\n ) {\n return true;\n }\n\n const result =\n typeof event?.result === \"string\"\n ? event.result.trim().toLowerCase()\n : typeof event?.error === \"string\"\n ? event.error.trim().toLowerCase()\n : \"\";\n if (!result) return false;\n if (\n result.startsWith(\"error:\") ||\n result.startsWith(\"failed:\") ||\n result.includes(\"exception\") ||\n result.includes(\"timed out\")\n ) {\n return true;\n }\n\n const parsed = safeJsonParse<Record<string, unknown> | null>(\n event?.result,\n null,\n );\n const parsedStatus = lowerString(parsed?.status ?? parsed?.state);\n return parsedStatus === \"failed\" || parsedStatus === \"error\";\n}\n\nfunction analyzeThreadDebug(debug: any, sourceId: string): DreamCandidate {\n const evidence: DreamEvidence[] = [];\n const reasons: DreamCandidateReason[] = [];\n const counts: Record<string, number> = {\n explicitCorrections: 0,\n rememberRequests: 0,\n failedRuns: 0,\n toolErrors: 0,\n negativeFeedback: 0,\n evalFailures: 0,\n lowSatisfaction: 0,\n frustration: 0,\n verifiedSuccess: 0,\n };\n\n const thread = debug.thread;\n const threadTitle = thread.title || thread.preview || thread.id;\n const messages = Array.isArray(debug.messages) ? debug.messages : [];\n\n for (const message of messages) {\n const text = stripInjectedUserContext(String(message?.text ?? \"\"));\n if (message?.role !== \"user\" || !text.trim()) continue;\n const lower = text.toLowerCase();\n const isRemember =\n /\\b(remember|for future|next time|from now on|always)\\b/.test(lower);\n const isCorrection = isCorrectionSignal(lower);\n const isFrustration =\n /\\b(frustrat|again|still|why did|keeps? doing|same mistake)\\b/.test(\n lower,\n );\n if (isRemember) {\n counts.rememberRequests += 1;\n addEvidence(evidence, {\n kind: \"remember-request\",\n label: \"User asked the agent to remember something\",\n snippet: text,\n threadId: thread.id,\n threadTitle,\n messageIndex: message.index,\n createdAt: parseNumber(message.createdAt),\n });\n }\n if (isCorrection) {\n counts.explicitCorrections += 1;\n addEvidence(evidence, {\n kind: \"explicit-correction\",\n label: \"User corrected the agent\",\n snippet: text,\n threadId: thread.id,\n threadTitle,\n messageIndex: message.index,\n createdAt: parseNumber(message.createdAt),\n });\n }\n if (isFrustration) {\n counts.frustration += 1;\n addEvidence(evidence, {\n kind: \"frustration\",\n label: \"User expressed friction or repeated failure\",\n snippet: text,\n threadId: thread.id,\n threadTitle,\n messageIndex: message.index,\n createdAt: parseNumber(message.createdAt),\n });\n }\n }\n\n const runs = Array.isArray(debug.runs) ? debug.runs : [];\n for (const run of runs) {\n if (isFailureStatus(run?.status) || run?.abortReason) {\n counts.failedRuns += 1;\n addEvidence(evidence, {\n kind: \"failed-run\",\n label: \"Run failed or aborted\",\n snippet: `${run?.status ?? \"unknown\"}${run?.abortReason ? `: ${run.abortReason}` : \"\"}`,\n threadId: thread.id,\n threadTitle,\n runId: run?.id ?? null,\n createdAt: parseNumber(run?.completedAt ?? run?.startedAt),\n });\n }\n const events = Array.isArray(run?.events) ? run.events : [];\n for (const event of events) {\n if (!isToolErrorEvent(event)) continue;\n counts.toolErrors += 1;\n addEvidence(evidence, {\n kind: \"tool-error\",\n label: \"Tool call reported an error\",\n snippet: event,\n threadId: thread.id,\n threadTitle,\n runId: run?.id ?? null,\n });\n }\n }\n\n const feedback = Array.isArray(debug.feedback) ? debug.feedback : [];\n for (const row of feedback) {\n if (!isNegativeFeedback(row)) continue;\n counts.negativeFeedback += 1;\n addEvidence(evidence, {\n kind: \"negative-feedback\",\n label: \"Negative feedback was recorded\",\n snippet: row,\n threadId: thread.id,\n threadTitle,\n });\n }\n\n const evals = Array.isArray(debug.evals) ? debug.evals : [];\n for (const row of evals) {\n if (!isEvalFailure(row)) continue;\n counts.evalFailures += 1;\n addEvidence(evidence, {\n kind: \"eval-failure\",\n label: \"Evaluation failed or scored low\",\n snippet: row,\n threadId: thread.id,\n threadTitle,\n runId: typeof row?.run_id === \"string\" ? row.run_id : null,\n });\n }\n\n const satisfaction = Array.isArray(debug.satisfaction)\n ? debug.satisfaction\n : [];\n for (const row of satisfaction) {\n if (!isLowSatisfaction(row)) continue;\n counts.lowSatisfaction += 1;\n addEvidence(evidence, {\n kind: \"low-satisfaction\",\n label: \"Satisfaction signal was low\",\n snippet: row,\n threadId: thread.id,\n threadTitle,\n });\n }\n\n const checkpoints = Array.isArray(debug.checkpoints) ? debug.checkpoints : [];\n const latestRunStatus =\n runs.length > 0 && typeof runs[0]?.status === \"string\"\n ? runs[0].status\n : null;\n if (\n runs.some((run: any) => isSuccessStatus(run?.status)) &&\n checkpoints.length > 0 &&\n counts.failedRuns === 0\n ) {\n counts.verifiedSuccess += 1;\n addEvidence(evidence, {\n kind: \"verified-success\",\n label: \"Successful run produced a checkpoint\",\n snippet: checkpoints[0],\n threadId: thread.id,\n threadTitle,\n runId:\n typeof checkpoints[0]?.run_id === \"string\"\n ? checkpoints[0].run_id\n : null,\n });\n }\n\n if (counts.rememberRequests) {\n reasons.push(\n reason(\n \"remember-request\",\n \"User explicitly asked the agent to remember something\",\n counts.rememberRequests * 30,\n counts.rememberRequests,\n ),\n );\n }\n if (counts.explicitCorrections) {\n reasons.push(\n reason(\n \"explicit-correction\",\n \"User corrections should be considered for memory\",\n counts.explicitCorrections * 25,\n counts.explicitCorrections,\n ),\n );\n }\n if (counts.failedRuns) {\n reasons.push(\n reason(\n \"failed-run\",\n \"Failed or aborted runs are useful dream material\",\n counts.failedRuns * 12,\n counts.failedRuns,\n ),\n );\n }\n if (counts.toolErrors) {\n reasons.push(\n reason(\n \"tool-error\",\n \"Tool errors repeated inside the run\",\n Math.min(30, counts.toolErrors * 4),\n counts.toolErrors,\n ),\n );\n }\n if (counts.negativeFeedback) {\n reasons.push(\n reason(\n \"negative-feedback\",\n \"User feedback indicates the run may contain a lesson\",\n counts.negativeFeedback * 20,\n counts.negativeFeedback,\n ),\n );\n }\n if (counts.evalFailures) {\n reasons.push(\n reason(\n \"eval-failure\",\n \"Evaluation signals found a failure\",\n counts.evalFailures * 20,\n counts.evalFailures,\n ),\n );\n }\n if (counts.lowSatisfaction || counts.frustration) {\n const total = counts.lowSatisfaction + counts.frustration;\n reasons.push(\n reason(\n \"satisfaction-friction\",\n \"Satisfaction or user wording suggests friction\",\n total * 10,\n total,\n ),\n );\n }\n if (counts.verifiedSuccess) {\n reasons.push(\n reason(\n \"verified-success\",\n \"Successful checkpointed workflow may be worth preserving\",\n 8,\n counts.verifiedSuccess,\n ),\n );\n }\n\n const score = reasons.reduce((sum, entry) => sum + entry.score, 0);\n\n return {\n thread: {\n id: thread.id,\n ownerEmail: thread.ownerEmail,\n title: thread.title,\n preview: thread.preview,\n messageCount: thread.messageCount,\n createdAt: thread.createdAt,\n updatedAt: thread.updatedAt,\n },\n sourceId,\n score,\n reasons,\n evidenceCounts: counts,\n evidence: evidence.map((entry) => ({\n ...entry,\n sourceId: entry.sourceId ?? sourceId,\n })),\n latestRunStatus,\n };\n}\n\ninterface ListDreamCandidatesInput {\n sourceId?: string;\n sourceIds?: string[];\n allSources?: boolean;\n query?: string;\n ownerEmail?: string;\n limit?: number;\n sourceTimeoutMs?: number;\n sourceConcurrency?: number;\n sourceStartStaggerMs?: number;\n threadConcurrency?: number;\n threadTimeoutMs?: number;\n}\n\ninterface DreamSourceRef {\n id: string;\n label?: string | null;\n}\n\ninterface DreamSourceScanResult {\n source: Record<string, unknown>;\n access: Record<string, unknown> | null;\n query: string | null;\n inspectedThreadCount: number;\n candidateCount: number;\n errors: Array<Record<string, unknown>>;\n candidates: DreamCandidate[];\n sources: DreamSourceHealth[];\n}\n\nfunction wantsAllDreamSources(input: ListDreamCandidatesInput): boolean {\n return Boolean(input.allSources || input.sourceId?.trim() === \"all\");\n}\n\nasync function dreamSourceRefs(\n input: ListDreamCandidatesInput,\n): Promise<DreamSourceRef[]> {\n const explicit = Array.from(\n new Set(\n (input.sourceIds ?? [])\n .map((sourceId) => sourceId.trim())\n .filter(Boolean),\n ),\n );\n if (explicit.length > 0) {\n return explicit.map((sourceId) => ({ id: sourceId, label: sourceId }));\n }\n\n const sourceId = input.sourceId?.trim() || \"current\";\n if (!wantsAllDreamSources(input)) {\n return [{ id: sourceId, label: sourceId }];\n }\n\n const listed = await listThreadDebugSources();\n const sources = listed.sources\n .filter((source) => source.connected)\n .map((source) => ({ id: source.id, label: source.label }));\n return sources.length > 0\n ? sources\n : [{ id: \"current\", label: \"Current Dispatch DB\" }];\n}\n\nasync function inspectDreamSource(\n input: ListDreamCandidatesInput,\n sourceId: string,\n sourceTimeoutMs: number,\n): Promise<Omit<DreamSourceScanResult, \"sources\">> {\n const limit = clampLimit(input.limit);\n const threadConcurrency = clampThreadConcurrency(input.threadConcurrency);\n const threadTimeoutMs = clampThreadTimeoutMs(\n input.threadTimeoutMs,\n sourceTimeoutMs,\n );\n const search = await searchAgentThreads({\n sourceId,\n query: input.query,\n ownerEmail: input.ownerEmail,\n limit,\n });\n\n const inspected = await mapWithConcurrency(\n search.threads,\n threadConcurrency,\n async (thread) => {\n const startedAt = now();\n try {\n const debug = await withTimeout(\n getAgentThreadDebug({\n sourceId,\n threadId: thread.id,\n ownerEmail: input.ownerEmail,\n maxRuns: 10,\n maxEvents: 300,\n maxTraceSpans: 200,\n }),\n `${sourceId}:${thread.id}`,\n threadTimeoutMs,\n );\n return {\n candidate: analyzeThreadDebug(debug, sourceId),\n error: null,\n };\n } catch (error) {\n const timedOut = isDreamSourceTimeout(error);\n return {\n candidate: null,\n error: {\n threadId: thread.id,\n sourceId,\n durationMs: now() - startedAt,\n timedOut,\n message: timedOut\n ? `Timed out after ${threadTimeoutMs}ms`\n : String((error as Error)?.message ?? error),\n },\n };\n }\n },\n );\n\n const candidates = inspected\n .map((entry) => entry.candidate)\n .filter((entry): entry is DreamCandidate => Boolean(entry))\n .filter((entry) => entry.score > 0)\n .sort(\n (a, b) => b.score - a.score || b.thread.updatedAt - a.thread.updatedAt,\n );\n\n return {\n source: search.source,\n access: search.access,\n query: search.query,\n inspectedThreadCount: search.threads.length,\n candidateCount: candidates.length,\n errors: inspected\n .map((entry) => entry.error)\n .filter((entry): entry is Record<string, unknown> => Boolean(entry)),\n candidates,\n };\n}\n\nasync function scanDreamSource(\n input: ListDreamCandidatesInput,\n source: DreamSourceRef,\n timeoutMs: number,\n): Promise<DreamSourceScanResult> {\n const startedAt = now();\n try {\n const result = await withTimeout(\n inspectDreamSource(input, source.id, timeoutMs),\n source.id,\n timeoutMs,\n );\n const completedAt = now();\n const durationMs = completedAt - startedAt;\n const sourceInfo = result.source ?? {};\n const sourceId = String(sourceInfo.id ?? source.id);\n const label = String(sourceInfo.label ?? source.label ?? source.id);\n return {\n ...result,\n sources: [\n {\n sourceId,\n label,\n status: \"ok\",\n startedAt,\n completedAt,\n durationMs,\n timeoutMs,\n inspectedThreadCount: result.inspectedThreadCount,\n candidateCount: result.candidateCount,\n errorCount: result.errors.length,\n threadErrorCount: result.errors.length,\n },\n ],\n };\n } catch (error) {\n const completedAt = now();\n const durationMs = completedAt - startedAt;\n const timedOut = isDreamSourceTimeout(error);\n const message = timedOut\n ? `Timed out after ${timeoutMs}ms`\n : compactErrorMessage(error);\n const status: DreamSourceStatus = timedOut ? \"timed_out\" : \"error\";\n return {\n source: {\n id: source.id,\n label: source.label ?? source.id,\n kind: \"unknown\",\n databaseUrlEnv: null,\n },\n access: null,\n query: input.query?.trim() || null,\n inspectedThreadCount: 0,\n candidateCount: 0,\n errors: [{ sourceId: source.id, message }],\n candidates: [],\n sources: [\n {\n sourceId: source.id,\n label: source.label ?? source.id,\n status,\n startedAt,\n completedAt,\n durationMs,\n timeoutMs,\n inspectedThreadCount: 0,\n candidateCount: 0,\n errorCount: 1,\n threadErrorCount: 0,\n message,\n },\n ],\n };\n }\n}\n\nexport async function listDreamCandidates(input: ListDreamCandidatesInput) {\n const timeoutMs = clampSourceTimeoutMs(input.sourceTimeoutMs);\n const sources = await dreamSourceRefs(input);\n const sourceConcurrency = clampSourceConcurrency(input.sourceConcurrency);\n const sourceStartStaggerMs = clampSourceStartStaggerMs(\n input.sourceStartStaggerMs,\n );\n const scanResults = await mapWithConcurrency(\n sources,\n sourceConcurrency,\n async (source, index) => {\n if (sources.length > 1 && sourceStartStaggerMs > 0) {\n await sleep((index % sourceConcurrency) * sourceStartStaggerMs);\n }\n return scanDreamSource(input, source, timeoutMs);\n },\n );\n const aggregate = wantsAllDreamSources(input) || sources.length > 1;\n const candidates = dedupeDreamCandidates(\n scanResults.flatMap((result) => result.candidates),\n ).sort(\n (a, b) => b.score - a.score || b.thread.updatedAt - a.thread.updatedAt,\n );\n const sourceHealth = scanResults.flatMap((result) => result.sources);\n\n return {\n source: aggregate\n ? {\n id: \"all\",\n label: \"All configured sources\",\n kind: \"aggregate\",\n databaseUrlEnv: null,\n }\n : scanResults[0]?.source,\n access: aggregate\n ? { scope: \"combined\", sourceCount: sources.length }\n : scanResults[0]?.access,\n query: input.query?.trim() || scanResults[0]?.query || null,\n inspectedThreadCount: scanResults.reduce(\n (sum, result) => sum + result.inspectedThreadCount,\n 0,\n ),\n candidateCount: candidates.length,\n errors: scanResults.flatMap((result) => result.errors),\n sources: sourceHealth,\n candidates,\n };\n}\n\nfunction describeOwnerScope(scope: string): string {\n return scope.includes(\"@\") ? \"another user\" : `\"${scope}\"`;\n}\n\nfunction personalMemoryBlockReasonForDream(\n result: Awaited<ReturnType<typeof listDreamCandidates>>,\n creatorEmail: string,\n): string | null {\n const otherOwnerCount = new Set(\n result.candidates\n .map((candidate) => candidate.thread.ownerEmail)\n .filter((owner) => owner && !sameOwnerEmail(owner, creatorEmail))\n .map((owner) => owner.trim().toLowerCase()),\n ).size;\n if (otherOwnerCount === 1) {\n return \"source evidence includes a thread owned by another user\";\n }\n if (otherOwnerCount > 1) {\n return `source evidence includes threads owned by ${otherOwnerCount} other users`;\n }\n\n const scope = String((result.access as any)?.scope ?? \"\").trim();\n if (scope && !sameOwnerEmail(scope, creatorEmail)) {\n return `the source owner scope is ${describeOwnerScope(scope)} rather than the dream creator's personal scope`;\n }\n return null;\n}\n\nfunction evidenceSummary(evidence: DreamEvidence[], max = 6): string {\n return evidence\n .slice(0, max)\n .map((entry) => {\n const title = entry.threadTitle || entry.threadId;\n return `- ${entry.label} in ${title} (${entry.threadId}): ${entry.snippet}`;\n })\n .join(\"\\n\");\n}\n\nfunction collectCandidateEvidence(\n candidates: DreamCandidate[],\n kinds: string[],\n): DreamEvidence[] {\n const allowed = new Set(kinds);\n const evidence: DreamEvidence[] = [];\n for (const candidate of candidates) {\n for (const entry of candidate.evidence) {\n if (!allowed.has(entry.kind)) continue;\n addEvidence(\n evidence,\n {\n ...entry,\n sourceId: entry.sourceId ?? candidate.sourceId,\n },\n 80,\n );\n }\n }\n return evidence;\n}\n\nfunction dedupeDreamCandidates(candidates: DreamCandidate[]): DreamCandidate[] {\n const byThread = new Map<string, DreamCandidate>();\n for (const candidate of candidates) {\n const key = `${candidate.thread.ownerEmail.trim().toLowerCase()}:${candidate.thread.id}`;\n const existing = byThread.get(key);\n if (\n !existing ||\n candidate.score > existing.score ||\n (candidate.score === existing.score &&\n candidate.thread.updatedAt > existing.thread.updatedAt)\n ) {\n byThread.set(key, candidate);\n }\n }\n return [...byThread.values()];\n}\n\nfunction uniqueEvidenceThreads(evidence: DreamEvidence[]): Set<string> {\n return new Set(\n evidence\n .map((entry) => entry.threadId?.trim())\n .filter((threadId): threadId is string => Boolean(threadId)),\n );\n}\n\nfunction uniqueEvidenceSources(evidence: DreamEvidence[]): Set<string> {\n return new Set(\n evidence\n .map((entry) => entry.sourceId?.trim())\n .filter((sourceId): sourceId is string => Boolean(sourceId)),\n );\n}\n\nfunction evidenceSpansMultipleThreadsOrSources(\n evidence: DreamEvidence[],\n): boolean {\n return (\n uniqueEvidenceThreads(evidence).size >= 2 ||\n uniqueEvidenceSources(evidence).size >= 2\n );\n}\n\nfunction evidenceStrengthCount(evidence: DreamEvidence[]): number {\n return Math.max(\n uniqueEvidenceThreads(evidence).size,\n uniqueEvidenceSources(evidence).size,\n );\n}\n\nconst UI_WORDING_TERMS =\n /\\b(ui|screen|page|view|button|label|copy|wording|modal|dialog|dropdown|menu|toolbar|sidebar|composer|sheet|tab|card|toast|form|field|layout|click|open|close)\\b/i;\n\nfunction looksLikeSingleAppUiWordingCorrection(\n evidence: DreamEvidence[],\n): boolean {\n if (uniqueEvidenceSources(evidence).size > 1) return false;\n return evidence.some((entry) => {\n if (![\"explicit-correction\", \"remember-request\"].includes(entry.kind)) {\n return false;\n }\n return UI_WORDING_TERMS.test(entry.snippet);\n });\n}\n\nconst NON_DURABLE_FAILURE_TERMS =\n /\\b(credits[- ]?limit|daily ai credits|current plan|missing[_ -]?credentials|no llm provider|provider key|connect builder\\.io|email[_ -]?verification[_ -]?required|verify their email|gateway)\\b/i;\n\nfunction isDurableFailureEvidence(entry: DreamEvidence): boolean {\n if (entry.kind === \"eval-failure\") return false;\n if (entry.kind === \"tool-error\") {\n return !NON_DURABLE_FAILURE_TERMS.test(entry.snippet);\n }\n if (entry.kind === \"failed-run\") {\n const normalized = normalizeEvidenceQuote(entry.snippet);\n return Boolean(\n normalized && ![\"errored\", \"failed\", \"aborted\"].includes(normalized),\n );\n }\n return true;\n}\n\nfunction proposalFailureEvidence(\n evidence: DreamEvidence[],\n max = 10,\n): DreamEvidence[] {\n const durable = evidence.filter(isDurableFailureEvidence);\n const supporting = evidence.filter((entry) => entry.kind === \"eval-failure\");\n return [...durable, ...supporting].slice(0, max);\n}\n\nfunction evidenceProvenance(date: string, evidence: DreamEvidence[]): string {\n const threads = [...uniqueEvidenceThreads(evidence)].slice(0, 8).join(\", \");\n const sources = [...uniqueEvidenceSources(evidence)].slice(0, 8).join(\", \");\n return `Provenance: Dispatch dream ${date}; source threads: ${threads || \"none recorded\"}${sources ? `; sources: ${sources}` : \"\"}`;\n}\n\nfunction addSuppressionNote(notes: string[], note: string) {\n if (!notes.includes(note)) notes.push(note);\n}\n\nfunction noProposalSuppressionNotes(input: {\n explicitEvidence: DreamEvidence[];\n failureEvidence: DreamEvidence[];\n durableFailureEvidence: DreamEvidence[];\n successEvidence: DreamEvidence[];\n personalMemoryAllowed: boolean;\n personalMemoryBlockReason: string;\n}): string[] {\n const notes: string[] = [];\n\n if (input.explicitEvidence.length > 0) {\n if (!input.personalMemoryAllowed) {\n if (!evidenceSpansMultipleThreadsOrSources(input.explicitEvidence)) {\n addSuppressionNote(\n notes,\n `Skipped explicit user-correction proposals because personal memory is blocked (${input.personalMemoryBlockReason}) and the remaining correction evidence did not span multiple threads or source apps.`,\n );\n } else if (input.explicitEvidence.length < 2) {\n addSuppressionNote(\n notes,\n `Skipped explicit user-correction proposals because personal memory is blocked (${input.personalMemoryBlockReason}) and only one source-backed correction survived filtering.`,\n );\n }\n }\n\n if (looksLikeSingleAppUiWordingCorrection(input.explicitEvidence)) {\n addSuppressionNote(\n notes,\n \"Skipped workspace-instruction promotion for explicit corrections because the evidence looked like single-app UI wording rather than an all-app operating rule.\",\n );\n }\n }\n\n if (input.failureEvidence.length > 0) {\n if (input.durableFailureEvidence.length === 0) {\n addSuppressionNote(\n notes,\n \"Skipped failure proposals because the signals were eval-only noise or non-durable setup, quota, provider, or verification issues.\",\n );\n } else if (input.durableFailureEvidence.length < 2) {\n addSuppressionNote(\n notes,\n \"Skipped failure proposals because fewer than two durable failure signals survived filtering.\",\n );\n } else if (\n !evidenceSpansMultipleThreadsOrSources(input.durableFailureEvidence)\n ) {\n addSuppressionNote(\n notes,\n \"Skipped failure proposals because durable failure evidence did not span multiple threads or source apps.\",\n );\n } else if (input.durableFailureEvidence.length < 4) {\n addSuppressionNote(\n notes,\n \"Skipped workspace-instruction promotion for failures because fewer than four durable failure signals survived filtering.\",\n );\n }\n }\n\n if (\n input.successEvidence.length > 0 &&\n (input.successEvidence.length < 2 ||\n !evidenceSpansMultipleThreadsOrSources(input.successEvidence))\n ) {\n addSuppressionNote(\n notes,\n \"Skipped success-pattern proposals because successful checkpoint evidence did not repeat across multiple threads or source apps.\",\n );\n }\n\n return notes;\n}\n\nconst STOP_WORDS = new Set([\n \"about\",\n \"after\",\n \"again\",\n \"agent\",\n \"always\",\n \"because\",\n \"before\",\n \"being\",\n \"could\",\n \"dispatch\",\n \"doing\",\n \"dream\",\n \"found\",\n \"from\",\n \"have\",\n \"into\",\n \"just\",\n \"latest\",\n \"memory\",\n \"next\",\n \"note\",\n \"please\",\n \"proposal\",\n \"recent\",\n \"remember\",\n \"review\",\n \"should\",\n \"source\",\n \"summary\",\n \"that\",\n \"their\",\n \"there\",\n \"these\",\n \"thing\",\n \"thread\",\n \"threads\",\n \"user\",\n \"using\",\n \"with\",\n \"would\",\n]);\n\nfunction emptyMemoryContext(): DreamMemoryContext {\n return {\n personalIndex: \"\",\n personalNotes: [],\n sharedLearnings: \"\",\n workspaceResources: [],\n };\n}\n\nfunction normalizeMemoryText(value: string): string {\n return value\n .toLowerCase()\n .replace(/`[^`]*`/g, \" \")\n .replace(/\\[[^\\]]*\\]\\([^)]*\\)/g, \" \")\n .replace(/https?:\\/\\/\\S+/g, \" \")\n .replace(/[^a-z0-9@._/-]+/g, \" \")\n .replace(/\\s+/g, \" \")\n .trim();\n}\n\nfunction tokenSet(value: string): Set<string> {\n const tokens = normalizeMemoryText(value)\n .split(\" \")\n .filter((token) => token.length >= 4 && !STOP_WORDS.has(token));\n return new Set(tokens);\n}\n\nfunction containmentScore(needle: string, haystack: string): number {\n const needleTokens = tokenSet(needle);\n if (needleTokens.size === 0) return 0;\n const haystackTokens = tokenSet(haystack);\n let matches = 0;\n for (const token of needleTokens) {\n if (haystackTokens.has(token)) matches += 1;\n }\n return matches / needleTokens.size;\n}\n\nfunction hasExactSourceMatch(\n evidence: DreamEvidence[],\n content: string,\n): boolean {\n const normalized = normalizeMemoryText(content);\n return evidence.some((entry) => {\n if (entry.threadId && normalized.includes(entry.threadId.toLowerCase())) {\n return true;\n }\n if (entry.runId && normalized.includes(entry.runId.toLowerCase())) {\n return true;\n }\n return false;\n });\n}\n\nfunction evidenceSignalText(evidence: DreamEvidence[]): string {\n return evidence.map((entry) => entry.snippet).join(\"\\n\");\n}\n\nfunction hasCorrectionLanguage(evidence: DreamEvidence[]): boolean {\n return evidence.some((entry) => {\n if (entry.kind !== \"explicit-correction\") return false;\n const text = entry.snippet.toLowerCase();\n return /\\b(actually|instead|don't|do not|never|wrong|not what i meant|from now on|you should)\\b/.test(\n text,\n );\n });\n}\n\nfunction findPersonalMemoryMatch(\n memoryContext: DreamMemoryContext,\n evidence: DreamEvidence[],\n): {\n note: DreamMemoryNote;\n score: number;\n exactSource: boolean;\n} | null {\n const signal = evidenceSignalText(evidence);\n let best: {\n note: DreamMemoryNote;\n score: number;\n exactSource: boolean;\n } | null = null;\n\n for (const note of memoryContext.personalNotes) {\n const exactSource = hasExactSourceMatch(evidence, note.content);\n const score = exactSource ? 1 : containmentScore(signal, note.content);\n if (!best || score > best.score) {\n best = { note, score, exactSource };\n }\n }\n\n if (!best) return null;\n if (best.exactSource || best.score >= 0.42) return best;\n return null;\n}\n\nfunction sharedLearningLooksCaptured(\n memoryContext: DreamMemoryContext,\n evidence: DreamEvidence[],\n): boolean {\n if (!memoryContext.sharedLearnings.trim()) return false;\n if (hasExactSourceMatch(evidence, memoryContext.sharedLearnings)) return true;\n return (\n containmentScore(\n evidenceSignalText(evidence),\n memoryContext.sharedLearnings,\n ) >= 0.58\n );\n}\n\nfunction workspaceResourceLooksCaptured(\n memoryContext: DreamMemoryContext,\n evidence: DreamEvidence[],\n): boolean {\n const resources = memoryContext.workspaceResources ?? [];\n if (resources.length === 0) return false;\n return resources.some((resource) => {\n if (hasExactSourceMatch(evidence, resource.content)) return true;\n return (\n containmentScore(evidenceSignalText(evidence), resource.content) >= 0.62\n );\n });\n}\n\nfunction personalIndexLooksCaptured(\n memoryContext: DreamMemoryContext,\n evidence: DreamEvidence[],\n): boolean {\n if (!memoryContext.personalIndex.trim()) return false;\n if (hasExactSourceMatch(evidence, memoryContext.personalIndex)) return true;\n return (\n containmentScore(\n evidenceSignalText(evidence),\n memoryContext.personalIndex,\n ) >= 0.72\n );\n}\n\nfunction proposalLooksCaptured(\n proposal: DreamProposalInput,\n memoryContext: DreamMemoryContext,\n): boolean {\n if (proposal.targetType === \"shared-learnings\") {\n return sharedLearningLooksCaptured(memoryContext, proposal.evidence);\n }\n if (proposal.targetType.startsWith(\"workspace-\")) {\n return workspaceResourceLooksCaptured(memoryContext, proposal.evidence);\n }\n if (personalIndexLooksCaptured(memoryContext, proposal.evidence)) {\n return true;\n }\n const match = findPersonalMemoryMatch(memoryContext, proposal.evidence);\n return Boolean(match?.exactSource || (match && match.score >= 0.72));\n}\n\nasync function loadDreamMemoryContext(\n owner: string,\n): Promise<DreamMemoryContext> {\n const [index, shared, personalMetas, workspaceResources] = await Promise.all([\n resourceGetByPath(owner, MEMORY_INDEX_PATH),\n resourceGetByPath(SHARED_OWNER, \"LEARNINGS.md\"),\n resourceList(owner, \"memory/\").catch(() => []),\n listWorkspaceResources().catch(() => []),\n ]);\n const paths = personalMetas\n .map((entry) => entry.path)\n .filter((path) => path !== MEMORY_INDEX_PATH && path.endsWith(\".md\"))\n .slice(0, 30);\n const personalNotes = (\n await Promise.all(\n paths.map(async (path) => {\n const resource = await resourceGetByPath(owner, path).catch(() => null);\n if (!resource?.content) return null;\n return { path, content: resource.content };\n }),\n )\n ).filter((entry): entry is DreamMemoryNote => Boolean(entry));\n\n return {\n personalIndex: index?.content ?? \"\",\n personalNotes,\n sharedLearnings: shared?.content ?? \"\",\n workspaceResources: workspaceResources.map((resource) => ({\n path: resource.path,\n content: resource.content,\n })),\n };\n}\n\nfunction applyMemoryGuardrails(\n proposals: DreamProposalInput[],\n memoryContext: DreamMemoryContext,\n): DreamProposalBuildResult {\n const guarded: DreamProposalInput[] = [];\n const guardrailNotes: string[] = [];\n\n for (const proposal of proposals) {\n if (\n proposal.targetType === \"personal-memory\" &&\n hasCorrectionLanguage(proposal.evidence)\n ) {\n const match = findPersonalMemoryMatch(memoryContext, proposal.evidence);\n if (match?.exactSource) {\n guardrailNotes.push(\n `Skipped duplicate proposal \"${proposal.title}\" because existing memory already appears to capture the source evidence.`,\n );\n continue;\n }\n if (match && match.score >= 0.42) {\n guarded.push({\n ...proposal,\n targetPath: match.note.path,\n title: \"Update existing memory from recent corrections\",\n summary: `Existing memory at ${match.note.path} may be stale; update it with the latest explicit correction evidence.`,\n rationale: `${proposal.rationale} A related personal memory already exists, so the dream should update it instead of creating a parallel note.`,\n content: [\n \"# Dispatch Dream Memory Update\",\n \"\",\n `Existing memory: ${match.note.path}`,\n \"\",\n \"Recent agent runs contained newer explicit user-grounded lessons:\",\n \"\",\n evidenceSummary(proposal.evidence, 10),\n ].join(\"\\n\"),\n });\n guardrailNotes.push(\n `Retargeted proposal \"${proposal.title}\" to existing memory ${match.note.path} to avoid creating a stale duplicate.`,\n );\n continue;\n }\n }\n\n if (proposalLooksCaptured(proposal, memoryContext)) {\n guardrailNotes.push(\n `Skipped duplicate proposal \"${proposal.title}\" because existing memory already appears to capture the source evidence.`,\n );\n continue;\n }\n\n guarded.push(proposal);\n }\n\n return { proposals: guarded, guardrailNotes };\n}\n\nfunction makeReport(input: {\n title: string;\n sourceId: string;\n query: string | null;\n candidates: DreamCandidate[];\n inspectedThreadCount: number;\n proposals: DreamProposalInput[];\n guardrailNotes?: string[];\n sourceHealth?: DreamSourceHealth[];\n}) {\n const completedSourceCount =\n input.sourceHealth?.filter((source) => source.status === \"ok\").length ?? 0;\n const lines = [\n `# ${input.title}`,\n \"\",\n `Generated: ${new Date().toISOString()}`,\n `Source: ${input.sourceId}`,\n `Query: ${input.query || \"(recent threads)\"}`,\n `Inspected threads: ${input.inspectedThreadCount}`,\n `Candidates: ${input.candidates.length}`,\n `Proposals: ${input.proposals.length}`,\n ];\n\n if (input.sourceHealth && input.sourceHealth.length > 0) {\n lines.push(\n `Sources completed: ${completedSourceCount}/${input.sourceHealth.length}`,\n );\n lines.push(\"\", \"## Source Health\");\n for (const source of input.sourceHealth) {\n const label = source.label || source.sourceId;\n const message = source.message\n ? ` — ${compactText(source.message, 160)}`\n : \"\";\n lines.push(\n `- ${label} (${source.sourceId}): ${source.status} in ${source.durationMs}ms, ${source.inspectedThreadCount} inspected, ${source.candidateCount} candidates, ${source.errorCount} errors${message}`,\n );\n }\n }\n\n lines.push(\"\", \"## Candidate Signals\");\n\n if (input.candidates.length === 0) {\n lines.push(\"\", \"No dream-worthy signals were found in this pass.\");\n } else {\n for (const candidate of input.candidates.slice(0, 12)) {\n lines.push(\n \"\",\n `### ${candidate.thread.title || candidate.thread.id}`,\n \"\",\n `- Thread: ${candidate.thread.id}`,\n `- Score: ${candidate.score}`,\n `- Latest run status: ${candidate.latestRunStatus || \"unknown\"}`,\n `- Reasons: ${candidate.reasons.map((entry) => entry.label).join(\"; \")}`,\n \"\",\n \"Evidence:\",\n evidenceSummary(candidate.evidence, 4) ||\n \"- No compact evidence available.\",\n );\n }\n }\n\n if (input.guardrailNotes && input.guardrailNotes.length > 0) {\n lines.push(\"\", \"## Proposal Guardrails\");\n for (const note of input.guardrailNotes) {\n lines.push(\"\", `- ${note}`);\n }\n }\n\n lines.push(\"\", \"## Proposals\");\n if (input.proposals.length === 0) {\n lines.push(\"\", \"No durable changes were proposed.\");\n } else {\n for (const proposal of input.proposals) {\n lines.push(\n \"\",\n `### ${proposal.title}`,\n \"\",\n `- Target: ${proposal.targetType} at ${proposal.targetPath}`,\n `- Confidence: ${proposal.confidence}`,\n `- Risk: ${proposal.risk}`,\n `- Summary: ${proposal.summary}`,\n \"\",\n \"Evidence:\",\n evidenceSummary(proposal.evidence, 5),\n );\n }\n }\n\n return lines.join(\"\\n\").trimEnd() + \"\\n\";\n}\n\nexport function buildProposalInputs(\n candidates: DreamCandidate[],\n memoryContext: DreamMemoryContext = emptyMemoryContext(),\n options: DreamProposalBuildOptions = {},\n): DreamProposalBuildResult {\n const proposals: DreamProposalInput[] = [];\n const personalMemoryAllowed = options.personalMemoryAllowed ?? true;\n const personalMemoryBlockReason =\n options.personalMemoryBlockReason?.trim() ||\n \"source owner scope differs from the dream creator's personal scope\";\n let routedPersonalMemory = false;\n const explicitEvidence = collectCandidateEvidence(candidates, [\n \"remember-request\",\n \"explicit-correction\",\n ]);\n const failureEvidence = collectCandidateEvidence(candidates, [\n \"failed-run\",\n \"tool-error\",\n \"negative-feedback\",\n \"eval-failure\",\n \"low-satisfaction\",\n \"frustration\",\n ]);\n const durableFailureEvidence = failureEvidence.filter(\n isDurableFailureEvidence,\n );\n const failureProposalEvidence = proposalFailureEvidence(failureEvidence, 10);\n const successEvidence = collectCandidateEvidence(candidates, [\n \"verified-success\",\n ]);\n const date = today();\n const explicitStrengthCount = evidenceStrengthCount(explicitEvidence);\n const durableFailureStrengthCount = evidenceStrengthCount(\n durableFailureEvidence,\n );\n const successStrengthCount = evidenceStrengthCount(successEvidence);\n\n if (explicitEvidence.length > 0) {\n const title = `Dispatch dream memory ${date}`;\n if (personalMemoryAllowed) {\n proposals.push({\n targetType: \"personal-memory\",\n targetPath: `memory/${slugify(title)}.md`,\n title: \"Save explicit user corrections from recent agent runs\",\n summary:\n \"Recent threads contain explicit user corrections or remember requests that may be worth preserving as personal memory.\",\n rationale:\n \"Explicit user corrections and remember requests are high-signal, user-grounded evidence for personal memory.\",\n content: [\n \"# Dispatch Dream Memory\",\n \"\",\n \"Recent agent runs contained explicit user-grounded lessons:\",\n \"\",\n evidenceSummary(explicitEvidence, 10),\n ].join(\"\\n\"),\n evidence: explicitEvidence.slice(0, 10),\n confidence: Math.min(95, 70 + explicitEvidence.length * 5),\n risk: \"low\",\n });\n } else if (\n explicitEvidence.length >= 2 &&\n evidenceSpansMultipleThreadsOrSources(explicitEvidence)\n ) {\n routedPersonalMemory = true;\n proposals.push({\n targetType: \"shared-learnings\",\n targetPath: \"LEARNINGS.md\",\n title: \"Review explicit user corrections as shared learnings\",\n summary:\n \"Recent admin-visible threads contain explicit user corrections or remember requests that should stay reviewable as shared learnings instead of personal memory.\",\n rationale: `Personal memory is blocked because ${personalMemoryBlockReason}. Shared learnings keep the evidence visible for review without writing another user's snippets into the dream creator's memory.`,\n content: [\n \"Recent Dispatch dream review found explicit user-grounded lessons in admin-visible threads.\",\n \"\",\n `Provenance: Personal memory was disabled for this proposal because ${personalMemoryBlockReason}.`,\n \"\",\n evidenceSummary(explicitEvidence, 10),\n ].join(\"\\n\"),\n evidence: explicitEvidence.slice(0, 10),\n confidence: Math.min(95, 70 + explicitEvidence.length * 5),\n risk: \"medium\",\n });\n }\n }\n\n if (\n durableFailureEvidence.length >= 2 &&\n evidenceSpansMultipleThreadsOrSources(durableFailureEvidence)\n ) {\n proposals.push({\n targetType: \"shared-learnings\",\n targetPath: \"LEARNINGS.md\",\n title: \"Record recurring Dispatch agent-run failure patterns\",\n summary:\n \"Multiple recent threads or source apps show failure, tool-error, eval, or satisfaction signals that should be reviewed as a team learning.\",\n rationale:\n \"Repeated grounded failure signals across more than one thread or source app are good candidates for shared learnings, but remain pending for review.\",\n content: [\n \"Recent Dispatch dream review found recurring agent-run failure signals.\",\n \"\",\n evidenceSummary(failureProposalEvidence, 8),\n ].join(\"\\n\"),\n evidence: failureProposalEvidence.slice(0, 8),\n confidence: Math.min(85, 50 + durableFailureStrengthCount * 10),\n risk: \"medium\",\n });\n }\n\n if (\n explicitEvidence.length >= 3 &&\n evidenceSpansMultipleThreadsOrSources(explicitEvidence) &&\n !looksLikeSingleAppUiWordingCorrection(explicitEvidence)\n ) {\n proposals.push({\n targetType: \"workspace-instruction\",\n targetPath: `instructions/${slugify(`dream-corrections-${date}`)}.md`,\n title: \"Create workspace instruction from repeated user corrections\",\n summary:\n \"Repeated explicit user corrections or remember requests should become an all-app workspace instruction after review.\",\n rationale:\n \"Repeated corrections across more than one thread or source app are stronger than one-off memory. A workspace instruction lets every app inherit the reviewed behavior.\",\n content: [\n \"# Dream-Derived Workspace Instruction\",\n \"\",\n \"Apply this only after reviewing the cited source threads.\",\n \"\",\n \"Recent agent runs contained repeated user-grounded corrections or remember requests:\",\n \"\",\n evidenceSummary(explicitEvidence, 10),\n \"\",\n \"Instruction draft:\",\n \"\",\n \"- Preserve explicit user corrections as durable behavior only when the evidence is user-authored and source-backed.\",\n \"- Prefer existing workspace resources, skills, and app conventions before introducing a new pattern.\",\n \"- If the same correction appears across apps or threads, treat it as a candidate for a workspace-level instruction instead of only personal memory.\",\n \"\",\n evidenceProvenance(date, explicitEvidence),\n ].join(\"\\n\"),\n evidence: explicitEvidence.slice(0, 10),\n confidence: Math.min(90, 60 + explicitStrengthCount * 8),\n risk: \"medium\",\n });\n }\n\n if (\n durableFailureEvidence.length >= 4 &&\n evidenceSpansMultipleThreadsOrSources(durableFailureEvidence)\n ) {\n proposals.push({\n targetType: \"workspace-instruction\",\n targetPath: `instructions/${slugify(`dream-run-reliability-${date}`)}.md`,\n title: \"Create workspace instruction for recurring agent-run friction\",\n summary:\n \"Recurring frustration and failure signals across threads or source apps should become a reviewed workspace reliability instruction.\",\n rationale:\n \"Repeated failure or frustration signals across multiple threads or source apps are useful as a shared guardrail, but they need review before they affect all app agents.\",\n content: [\n \"# Dream-Derived Agent Reliability Instruction\",\n \"\",\n \"Apply this only after reviewing the cited source threads.\",\n \"\",\n \"Recent agent runs contained recurring friction or failure signals:\",\n \"\",\n evidenceSummary(failureProposalEvidence, 10),\n \"\",\n \"Instruction draft:\",\n \"\",\n \"- When a task repeats a prior failure mode, pause to inspect source context, previous attempts, and existing docs before changing code or data.\",\n \"- Prefer small, verified changes with provenance over broad rewrites when responding to user frustration.\",\n \"- Convert repeated failures into a durable workspace resource only after evidence spans multiple threads or apps.\",\n \"\",\n evidenceProvenance(date, failureProposalEvidence),\n ].join(\"\\n\"),\n evidence: failureProposalEvidence.slice(0, 10),\n confidence: Math.min(85, 50 + durableFailureStrengthCount * 8),\n risk: \"medium\",\n });\n }\n\n if (\n proposals.length === 0 &&\n successEvidence.length >= 2 &&\n evidenceSpansMultipleThreadsOrSources(successEvidence)\n ) {\n if (personalMemoryAllowed) {\n proposals.push({\n targetType: \"personal-memory\",\n targetPath: `memory/${slugify(`dispatch-success-patterns-${date}`)}.md`,\n title: \"Preserve successful Dispatch workflow patterns\",\n summary:\n \"Recent successful checkpointed runs may contain reusable workflow patterns.\",\n rationale:\n \"Checkpointed successful runs are lower-risk candidates for personal memory when no correction or failure proposals are present.\",\n content: [\n \"# Successful Dispatch Patterns\",\n \"\",\n \"Recent checkpointed runs worth reviewing:\",\n \"\",\n evidenceSummary(successEvidence, 8),\n ].join(\"\\n\"),\n evidence: successEvidence.slice(0, 8),\n confidence: 60,\n risk: \"low\",\n });\n } else {\n routedPersonalMemory = true;\n proposals.push({\n targetType: \"shared-learnings\",\n targetPath: \"LEARNINGS.md\",\n title: \"Review successful Dispatch workflow patterns\",\n summary:\n \"Recent successful checkpointed runs may contain reusable workflow patterns, but the source scope is not personal to the dream creator.\",\n rationale: `Personal memory is blocked because ${personalMemoryBlockReason}. Shared learnings keep the cross-owner workflow evidence reviewable.`,\n content: [\n \"Recent Dispatch dream review found checkpointed runs worth reviewing.\",\n \"\",\n `Provenance: Personal memory was disabled for this proposal because ${personalMemoryBlockReason}.`,\n \"\",\n evidenceSummary(successEvidence, 8),\n ].join(\"\\n\"),\n evidence: successEvidence.slice(0, 8),\n confidence: 60,\n risk: \"medium\",\n });\n }\n }\n\n if (\n successEvidence.length >= 2 &&\n evidenceSpansMultipleThreadsOrSources(successEvidence)\n ) {\n proposals.push({\n targetType: \"workspace-skill\",\n targetPath: `skills/${slugify(`dispatch-success-patterns-${date}`)}/SKILL.md`,\n title: \"Create workspace skill from successful Dispatch patterns\",\n summary:\n \"Successful checkpointed workflows across multiple threads may deserve a reusable all-app skill.\",\n rationale:\n \"Repeated successful, checkpointed workflows are candidates for reusable skills when they can be stated as a repeatable procedure and reviewed by a human.\",\n content: [\n \"---\",\n `name: ${slugify(`dispatch-success-patterns-${date}`)}`,\n \"description: >-\",\n \" Use when a task resembles recent successful Dispatch workflows and the agent needs a reviewed repeatable procedure.\",\n \"---\",\n \"\",\n \"# Dispatch Success Patterns\",\n \"\",\n \"This skill was drafted from a Dispatch dream report. Review and tighten it before applying broadly.\",\n \"\",\n \"## Source Evidence\",\n \"\",\n evidenceSummary(successEvidence, 10),\n \"\",\n \"## Procedure Draft\",\n \"\",\n \"1. Identify the source thread or workflow that most closely matches the current task.\",\n \"2. Reuse the verified sequence of actions only after checking current app state and available actions.\",\n \"3. Run the smallest relevant verification step before presenting the result.\",\n \"4. Record any user correction as a new dream candidate rather than silently broadening the skill.\",\n ].join(\"\\n\"),\n evidence: successEvidence.slice(0, 10),\n confidence: Math.min(80, 50 + successStrengthCount * 10),\n risk: \"medium\",\n });\n }\n\n const suppressionNotes = noProposalSuppressionNotes({\n explicitEvidence,\n failureEvidence,\n durableFailureEvidence,\n successEvidence,\n personalMemoryAllowed,\n personalMemoryBlockReason,\n });\n const result = applyMemoryGuardrails(proposals, memoryContext);\n if (routedPersonalMemory) {\n result.guardrailNotes.unshift(\n `Routed personal-memory dream proposals to shared learnings because ${personalMemoryBlockReason}.`,\n );\n }\n if (result.proposals.length === 0) {\n for (const note of suppressionNotes) {\n addSuppressionNote(result.guardrailNotes, note);\n }\n }\n return result;\n}\n\nfunction summarizeDream(\n candidates: DreamCandidate[],\n proposals: number,\n sourceHealth: DreamSourceHealth[] = [],\n): string {\n const failedSources = sourceHealth.filter((source) => source.status !== \"ok\");\n const sourcePrefix =\n sourceHealth.length > 1\n ? `${sourceHealth.length - failedSources.length}/${sourceHealth.length} sources completed${failedSources.length > 0 ? ` with ${failedSources.length} partial` : \"\"}. `\n : \"\";\n if (candidates.length === 0) {\n return `${sourcePrefix}No dream-worthy signals were found in the inspected threads.`;\n }\n const topReason = candidates[0]?.reasons[0]?.label ?? \"agent-run signals\";\n return `${sourcePrefix}Reviewed ${candidates.length} candidate thread(s), led by ${topReason}. Created ${proposals} proposal(s).`;\n}\n\nfunction serializeProposal(row: DreamProposalRow) {\n return {\n ...row,\n evidence: safeJsonParse<DreamEvidence[]>(row.evidence, []),\n };\n}\n\nfunction serializeDream(row: DreamRow) {\n return {\n ...row,\n sourceHealth: safeJsonParse<DreamSourceHealth[]>(\n (row as DreamRow & { sourceHealth?: string | null }).sourceHealth,\n [],\n ),\n };\n}\n\nasync function getDreamRow(\n dreamId: string,\n ctx: DispatchCtx = { ownerEmail: currentOwnerEmail(), orgId: currentOrgId() },\n) {\n const db = getDb();\n const [row] = await db\n .select()\n .from(schema.dispatchDreams)\n .where(\n and(\n eq(schema.dispatchDreams.id, dreamId),\n scopeFor(schema.dispatchDreams, ctx),\n ),\n )\n .limit(1);\n return row ?? null;\n}\n\nasync function getProposalRow(\n proposalId: string,\n ctx: DispatchCtx = { ownerEmail: currentOwnerEmail(), orgId: currentOrgId() },\n) {\n const db = getDb();\n const [row] = await db\n .select()\n .from(schema.dispatchDreamProposals)\n .where(\n and(\n eq(schema.dispatchDreamProposals.id, proposalId),\n scopeFor(schema.dispatchDreamProposals, ctx),\n ),\n )\n .limit(1);\n return row ?? null;\n}\n\nexport async function createDreamReport(input: {\n sourceId?: string;\n sourceIds?: string[];\n allSources?: boolean;\n query?: string;\n ownerEmail?: string;\n limit?: number;\n sourceTimeoutMs?: number;\n sourceConcurrency?: number;\n sourceStartStaggerMs?: number;\n threadConcurrency?: number;\n threadTimeoutMs?: number;\n title?: string;\n}) {\n const db = getDb();\n const timestamp = now();\n const ownerEmail = currentOwnerEmail();\n const orgId = currentOrgId();\n const dreamId = id();\n const allSources =\n wantsAllDreamSources(input) || (input.sourceIds?.length ?? 0) > 0;\n const sourceId = allSources ? \"all\" : input.sourceId?.trim() || \"current\";\n const query = input.query?.trim() || null;\n const title = input.title?.trim() || `Dispatch dream ${today()}`;\n\n await db.insert(schema.dispatchDreams).values({\n id: dreamId,\n ownerEmail,\n orgId,\n sourceId,\n title,\n status: \"running\" satisfies DreamStatus,\n query,\n report: null,\n summary: null,\n sourceHealth: null,\n candidateCount: 0,\n inspectedThreadCount: 0,\n createdBy: ownerEmail,\n error: null,\n startedAt: timestamp,\n completedAt: null,\n createdAt: timestamp,\n updatedAt: timestamp,\n });\n\n try {\n const result = await listDreamCandidates({\n sourceId,\n sourceIds: input.sourceIds,\n allSources,\n query: input.query,\n ownerEmail: input.ownerEmail,\n limit: input.limit,\n sourceTimeoutMs: input.sourceTimeoutMs,\n sourceConcurrency: input.sourceConcurrency,\n sourceStartStaggerMs: input.sourceStartStaggerMs,\n threadConcurrency: input.threadConcurrency,\n threadTimeoutMs: input.threadTimeoutMs,\n });\n const memoryContext = await loadDreamMemoryContext(ownerEmail).catch(() =>\n emptyMemoryContext(),\n );\n const personalMemoryBlockReason = personalMemoryBlockReasonForDream(\n result,\n ownerEmail,\n );\n const proposalBuild = buildProposalInputs(\n result.candidates,\n memoryContext,\n {\n personalMemoryAllowed: personalMemoryBlockReason == null,\n personalMemoryBlockReason,\n },\n );\n const proposalInputs = proposalBuild.proposals;\n const report = makeReport({\n title,\n sourceId,\n query,\n candidates: result.candidates,\n inspectedThreadCount: result.inspectedThreadCount,\n proposals: proposalInputs,\n guardrailNotes: proposalBuild.guardrailNotes,\n sourceHealth: result.sources,\n });\n const summary = summarizeDream(\n result.candidates,\n proposalInputs.length,\n result.sources,\n );\n const completedAt = now();\n\n if (proposalInputs.length > 0) {\n await db.insert(schema.dispatchDreamProposals).values(\n proposalInputs.map((proposal) => ({\n id: id(),\n dreamId,\n ownerEmail,\n orgId,\n targetType: proposal.targetType,\n targetPath: proposal.targetPath,\n title: proposal.title,\n summary: proposal.summary,\n rationale: proposal.rationale,\n content: proposal.content,\n evidence: safeJson(proposal.evidence),\n confidence: proposal.confidence,\n risk: proposal.risk,\n status: \"pending\" satisfies ProposalStatus,\n appliedBy: null,\n appliedAt: null,\n rejectedBy: null,\n rejectedAt: null,\n createdAt: completedAt,\n updatedAt: completedAt,\n })),\n );\n }\n\n await db\n .update(schema.dispatchDreams)\n .set({\n status: \"completed\" satisfies DreamStatus,\n report,\n summary,\n sourceHealth: safeJson(result.sources),\n candidateCount: result.candidateCount,\n inspectedThreadCount: result.inspectedThreadCount,\n completedAt,\n updatedAt: completedAt,\n })\n .where(eq(schema.dispatchDreams.id, dreamId));\n\n await recordAudit({\n action: \"dream.created\",\n targetType: \"dream\",\n targetId: dreamId,\n summary,\n metadata: {\n sourceId,\n query,\n candidates: result.candidateCount,\n inspectedThreads: result.inspectedThreadCount,\n proposals: proposalInputs.length,\n sources: result.sources,\n personalMemoryBlocked: personalMemoryBlockReason,\n },\n });\n\n return getDream(dreamId);\n } catch (error) {\n const failedAt = now();\n const message = String((error as Error)?.message ?? error);\n await db\n .update(schema.dispatchDreams)\n .set({\n status: \"failed\" satisfies DreamStatus,\n error: message,\n completedAt: failedAt,\n updatedAt: failedAt,\n })\n .where(eq(schema.dispatchDreams.id, dreamId));\n await recordAudit({\n action: \"dream.failed\",\n targetType: \"dream\",\n targetId: dreamId,\n summary: `Dream report failed: ${message}`,\n metadata: { sourceId, query },\n });\n throw error;\n }\n}\n\nexport async function listDreams(\n input: {\n limit?: number;\n status?: DreamStatus | \"all\";\n } = {},\n) {\n const db = getDb();\n const ctx = { ownerEmail: currentOwnerEmail(), orgId: currentOrgId() };\n const limit = Math.max(1, Math.min(100, input.limit ?? 25));\n const filters = [scopeFor(schema.dispatchDreams, ctx)];\n if (input.status && input.status !== \"all\") {\n filters.push(eq(schema.dispatchDreams.status, input.status));\n }\n const dreams = await db\n .select()\n .from(schema.dispatchDreams)\n .where(and(...filters))\n .orderBy(desc(schema.dispatchDreams.updatedAt))\n .limit(limit);\n\n const dreamIds = dreams.map((dream) => dream.id);\n const proposals =\n dreamIds.length === 0\n ? []\n : await db\n .select()\n .from(schema.dispatchDreamProposals)\n .where(inArray(schema.dispatchDreamProposals.dreamId, dreamIds));\n\n const counts = new Map<string, Record<string, number>>();\n for (const proposal of proposals) {\n const existing = counts.get(proposal.dreamId) ?? {};\n existing[proposal.status] = (existing[proposal.status] ?? 0) + 1;\n existing.total = (existing.total ?? 0) + 1;\n counts.set(proposal.dreamId, existing);\n }\n\n return {\n count: dreams.length,\n dreams: dreams.map((dream) => ({\n ...serializeDream(dream),\n proposalCounts: counts.get(dream.id) ?? { total: 0 },\n })),\n };\n}\n\nexport async function getDream(dreamId: string) {\n const db = getDb();\n const dream = await getDreamRow(dreamId);\n if (!dream) throw new Error(\"Dream not found\");\n const proposals = await db\n .select()\n .from(schema.dispatchDreamProposals)\n .where(eq(schema.dispatchDreamProposals.dreamId, dream.id))\n .orderBy(desc(schema.dispatchDreamProposals.createdAt));\n\n return {\n dream: serializeDream(dream),\n proposals: proposals.map(serializeProposal),\n };\n}\n\nasync function savePersonalMemory(proposal: DreamProposalRow) {\n if (proposal.targetType !== \"personal-memory\") {\n throw new Error(\"Proposal is not a personal-memory proposal\");\n }\n const owner = proposal.ownerEmail;\n if (owner !== currentOwnerEmail()) {\n throw new Error(\"Personal memory proposals can only be applied by owner\");\n }\n const targetPath = personalMemoryTargetPath(proposal);\n if (targetPath === MEMORY_INDEX_PATH || !targetPath.endsWith(\".md\")) {\n throw new Error(\"Personal memory proposals must target memory/<name>.md\");\n }\n const name = targetPath.replace(/^memory\\//, \"\").replace(/\\.md$/, \"\");\n const date = today();\n const description = compactText(proposal.summary, 140);\n const evidence = safeJsonParse<DreamEvidence[]>(proposal.evidence, []);\n const fileContent = [\n \"---\",\n \"type: feedback\",\n `description: ${JSON.stringify(description.replace(/\\n/g, \" \"))}`,\n `updated: ${date}`,\n \"---\",\n \"\",\n proposal.content.trim(),\n \"\",\n \"## Provenance\",\n \"\",\n `Dream: ${proposal.dreamId}`,\n `Proposal: ${proposal.id}`,\n \"\",\n evidenceSummary(evidence, 10),\n \"\",\n ].join(\"\\n\");\n\n await resourcePut(owner, targetPath, fileContent, \"text/markdown\", {\n createdBy: \"agent\",\n metadata: { dreamId: proposal.dreamId, proposalId: proposal.id },\n });\n\n const existingIndex = await resourceGetByPath(owner, MEMORY_INDEX_PATH);\n const index = existingIndex?.content ?? \"# Memory Index\\n\";\n const entryLine = `- [${name}](${name}.md) — ${description}`;\n const entryPrefix = `- [${name}]`;\n let found = false;\n const lines = index.split(\"\\n\").map((line) => {\n if (line.startsWith(entryPrefix)) {\n found = true;\n return entryLine;\n }\n return line;\n });\n if (!found) lines.push(entryLine);\n const updatedIndex = lines.join(\"\\n\").trimEnd() + \"\\n\";\n\n await resourcePut(owner, MEMORY_INDEX_PATH, updatedIndex, \"text/markdown\", {\n createdBy: \"agent\",\n metadata: { dreamId: proposal.dreamId, proposalId: proposal.id },\n });\n\n return {\n resourcePath: targetPath,\n indexPath: MEMORY_INDEX_PATH,\n indexLineCount: updatedIndex.split(\"\\n\").length,\n };\n}\n\nasync function appendSharedLearning(proposal: DreamProposalRow) {\n if (proposal.targetType !== \"shared-learnings\") {\n throw new Error(\"Proposal is not a shared-learnings proposal\");\n }\n const evidence = safeJsonParse<DreamEvidence[]>(proposal.evidence, []);\n const existing = await resourceGetByPath(SHARED_OWNER, \"LEARNINGS.md\");\n const current =\n existing?.content ??\n \"# Learnings\\n\\n## Preferences\\n\\n## Corrections\\n\\n## Patterns\\n\";\n const sources = [...new Set(evidence.map((entry) => entry.threadId))]\n .slice(0, 6)\n .join(\", \");\n const entry = [\n `- ${today()}: ${compactText(proposal.summary, 220)}`,\n ` Source dream: ${proposal.dreamId}; source threads: ${sources || \"none recorded\"}.`,\n ].join(\"\\n\");\n const updated = current.includes(\"## Patterns\")\n ? current.replace(\"## Patterns\", `## Patterns\\n\\n${entry}`)\n : `${current.trimEnd()}\\n\\n## Patterns\\n\\n${entry}\\n`;\n\n await resourcePut(SHARED_OWNER, \"LEARNINGS.md\", updated, \"text/markdown\", {\n createdBy: \"agent\",\n metadata: { dreamId: proposal.dreamId, proposalId: proposal.id },\n });\n\n return {\n resourcePath: \"LEARNINGS.md\",\n owner: SHARED_OWNER,\n };\n}\n\nfunction workspaceResourceKindForTarget(\n targetType: string,\n): WorkspaceResourceKind | null {\n if (targetType === \"workspace-instruction\") return \"instruction\";\n if (targetType === \"workspace-skill\") return \"skill\";\n if (targetType === \"workspace-knowledge\") return \"knowledge\";\n if (targetType === \"workspace-agent\") return \"agent\";\n return null;\n}\n\nfunction workspaceResourceName(proposal: DreamProposalRow): string {\n return proposal.title\n .replace(/^Create workspace (instruction|skill|knowledge|agent) from /i, \"\")\n .replace(/^Create workspace (instruction|skill|knowledge|agent) /i, \"\")\n .trim()\n .replace(/^./, (char) => char.toUpperCase());\n}\n\nfunction personalMemoryTargetPath(proposal: DreamProposalRow): string {\n return proposal.targetPath.startsWith(\"memory/\")\n ? proposal.targetPath\n : `memory/${slugify(proposal.title)}.md`;\n}\n\nfunction validateWorkspaceResourcePath(\n kind: WorkspaceResourceKind,\n path: string,\n) {\n if (!path.trim() || path.includes(\"..\") || path.startsWith(\"/\")) {\n throw new Error(\"Workspace resource proposal has an invalid target path\");\n }\n if (kind === \"instruction\") {\n if (path === \"AGENTS.md\" || path.startsWith(\"instructions/\")) return;\n throw new Error(\n \"Workspace instruction proposals must target AGENTS.md or instructions/<name>.md\",\n );\n }\n if (kind === \"skill\") {\n if (path.startsWith(\"skills/\") && path.endsWith(\"/SKILL.md\")) return;\n throw new Error(\n \"Workspace skill proposals must target skills/<name>/SKILL.md\",\n );\n }\n if (kind === \"knowledge\") {\n if (path.startsWith(\"context/\")) return;\n throw new Error(\n \"Workspace knowledge proposals must target context/<name>.md\",\n );\n }\n if (kind === \"agent\") {\n if (path.startsWith(\"agents/\") && path.endsWith(\".md\")) return;\n throw new Error(\"Workspace agent proposals must target agents/<name>.md\");\n }\n}\n\nasync function applyWorkspaceResourceProposal(proposal: DreamProposalRow) {\n const kind = workspaceResourceKindForTarget(proposal.targetType);\n if (!kind)\n throw new Error(`Unsupported workspace target: ${proposal.targetType}`);\n validateWorkspaceResourcePath(kind, proposal.targetPath);\n const scope: WorkspaceResourceScope = \"all\";\n const resources = await listWorkspaceResources({ kind });\n const existing = resources.find(\n (resource) => resource.path === proposal.targetPath,\n );\n const name = workspaceResourceName(proposal);\n const description = compactText(proposal.summary, 220);\n if (existing) {\n const updated = await updateWorkspaceResource(existing.id, {\n name,\n description,\n content: proposal.content,\n scope,\n });\n return {\n action: \"updated\",\n resourceId: updated?.id ?? existing.id,\n resourcePath: proposal.targetPath,\n kind,\n scope,\n };\n }\n\n const created = await createWorkspaceResource({\n kind,\n name,\n description,\n path: proposal.targetPath,\n content: proposal.content,\n scope,\n });\n return {\n action: \"created\",\n resourceId: created?.id ?? null,\n resourcePath: proposal.targetPath,\n kind,\n scope,\n };\n}\n\nfunction proposalRequiresApproval(proposal: DreamProposalRow): boolean {\n return proposal.targetType !== \"personal-memory\";\n}\n\nexport async function previewDreamProposal(proposalId: string) {\n const proposal = await getProposalRow(proposalId);\n if (!proposal) throw new Error(\"Dream proposal not found\");\n\n let currentContent: string | null = null;\n let targetExists = false;\n let operation: \"create\" | \"update\" | \"append\" = \"create\";\n let target = {\n type: proposal.targetType,\n path: proposal.targetPath,\n kind: null as WorkspaceResourceKind | null,\n resourceId: null as string | null,\n };\n\n if (proposal.targetType === \"personal-memory\") {\n const targetPath = personalMemoryTargetPath(proposal);\n const existing = await resourceGetByPath(proposal.ownerEmail, targetPath);\n currentContent = existing?.content ?? null;\n targetExists = Boolean(existing);\n operation = targetExists ? \"update\" : \"create\";\n target = { ...target, path: targetPath };\n } else if (proposal.targetType === \"shared-learnings\") {\n const existing = await resourceGetByPath(SHARED_OWNER, \"LEARNINGS.md\");\n currentContent = existing?.content ?? null;\n targetExists = Boolean(existing);\n operation = \"append\";\n target = { ...target, path: \"LEARNINGS.md\" };\n } else if (proposal.targetType.startsWith(\"workspace-\")) {\n const kind = workspaceResourceKindForTarget(proposal.targetType);\n if (!kind) {\n throw new Error(`Unsupported workspace target: ${proposal.targetType}`);\n }\n validateWorkspaceResourcePath(kind, proposal.targetPath);\n const resources = await listWorkspaceResources({ kind });\n const existing = resources.find(\n (resource) => resource.path === proposal.targetPath,\n );\n currentContent = existing?.content ?? null;\n targetExists = Boolean(existing);\n operation = existing ? \"update\" : \"create\";\n target = {\n ...target,\n kind,\n resourceId: existing?.id ?? null,\n };\n }\n\n const approvalPolicy = await getApprovalPolicy();\n const requiresApproval = proposalRequiresApproval(proposal);\n\n return {\n proposal: serializeProposal(proposal),\n target,\n operation,\n targetExists,\n currentContent,\n proposedContent: proposal.content,\n approval: {\n required: requiresApproval,\n policyEnabled: approvalPolicy.enabled,\n willRequestApproval: requiresApproval && approvalPolicy.enabled,\n },\n };\n}\n\nasync function requestDreamProposalApproval(proposal: DreamProposalRow) {\n const db = getDb();\n const timestamp = now();\n await db\n .update(schema.dispatchDreamProposals)\n .set({\n status: \"approval_requested\" satisfies ProposalStatus,\n updatedAt: timestamp,\n })\n .where(eq(schema.dispatchDreamProposals.id, proposal.id));\n\n const approval = await createApprovalRequest({\n changeType: \"dream-proposal.apply\",\n targetType: \"dream-proposal\",\n targetId: proposal.id,\n summary: `Apply dream proposal: ${proposal.title}`,\n payload: { proposalId: proposal.id },\n beforeValue: serializeProposal(proposal),\n afterValue: {\n ...serializeProposal(proposal),\n status: \"applied\" satisfies ProposalStatus,\n },\n });\n\n await recordAudit({\n action: \"dream.proposal.approval-requested\",\n targetType: \"dream-proposal\",\n targetId: proposal.id,\n summary: `Requested approval for dream proposal: ${proposal.title}`,\n metadata: {\n dreamId: proposal.dreamId,\n approvalId: approval?.id ?? null,\n targetType: proposal.targetType,\n targetPath: proposal.targetPath,\n },\n });\n\n return {\n proposal: serializeProposal((await getProposalRow(proposal.id))!),\n approval,\n result: {\n approvalRequired: true,\n approvalId: approval?.id ?? null,\n },\n };\n}\n\nasync function applyDreamProposalDirect(\n proposal: DreamProposalRow,\n actor = currentOwnerEmail(),\n) {\n const db = getDb();\n let result: unknown;\n if (proposal.targetType === \"personal-memory\") {\n result = await savePersonalMemory(proposal);\n } else if (proposal.targetType === \"shared-learnings\") {\n result = await appendSharedLearning(proposal);\n } else if (proposal.targetType.startsWith(\"workspace-\")) {\n result = await applyWorkspaceResourceProposal(proposal);\n } else {\n throw new Error(\n `Unsupported dream proposal target: ${proposal.targetType}`,\n );\n }\n\n const timestamp = now();\n await db\n .update(schema.dispatchDreamProposals)\n .set({\n status: \"applied\" satisfies ProposalStatus,\n appliedBy: actor,\n appliedAt: timestamp,\n updatedAt: timestamp,\n })\n .where(eq(schema.dispatchDreamProposals.id, proposal.id));\n\n await recordAudit({\n action: \"dream.proposal.applied\",\n targetType: \"dream-proposal\",\n targetId: proposal.id,\n summary: `Applied dream proposal: ${proposal.title}`,\n actor,\n metadata: {\n dreamId: proposal.dreamId,\n targetType: proposal.targetType,\n targetPath: proposal.targetPath,\n result,\n },\n });\n\n return {\n proposal: serializeProposal((await getProposalRow(proposal.id))!),\n result,\n };\n}\n\nexport async function applyApprovedDreamProposal(\n proposalId: string,\n actor = currentOwnerEmail(),\n ctx: DispatchCtx = { ownerEmail: currentOwnerEmail(), orgId: currentOrgId() },\n) {\n const proposal = await getProposalRow(proposalId, ctx);\n if (!proposal) throw new Error(\"Dream proposal not found\");\n if (![\"pending\", \"approval_requested\"].includes(proposal.status)) {\n throw new Error(\"Only pending dream proposals can be applied\");\n }\n return applyDreamProposalDirect(proposal, actor);\n}\n\nexport async function applyDreamProposal(proposalId: string) {\n const proposal = await getProposalRow(proposalId);\n if (!proposal) throw new Error(\"Dream proposal not found\");\n if (proposal.status === \"approval_requested\") {\n throw new Error(\"Dream proposal is already waiting for approval\");\n }\n if (proposal.status !== \"pending\") {\n throw new Error(\"Only pending dream proposals can be applied\");\n }\n\n if (proposalRequiresApproval(proposal)) {\n const policy = await getApprovalPolicy();\n if (policy.enabled) {\n return requestDreamProposalApproval(proposal);\n }\n }\n\n return applyDreamProposalDirect(proposal);\n}\n\nexport async function rejectDreamProposal(\n proposalId: string,\n reason?: string | null,\n) {\n const db = getDb();\n const proposal = await getProposalRow(proposalId);\n if (!proposal) throw new Error(\"Dream proposal not found\");\n if (![\"pending\", \"approval_requested\"].includes(proposal.status)) {\n throw new Error(\"Only pending dream proposals can be rejected\");\n }\n const timestamp = now();\n await db\n .update(schema.dispatchDreamProposals)\n .set({\n status: \"rejected\" satisfies ProposalStatus,\n rejectedBy: currentOwnerEmail(),\n rejectedAt: timestamp,\n updatedAt: timestamp,\n })\n .where(eq(schema.dispatchDreamProposals.id, proposal.id));\n\n await recordAudit({\n action: \"dream.proposal.rejected\",\n targetType: \"dream-proposal\",\n targetId: proposal.id,\n summary: `Rejected dream proposal: ${proposal.title}`,\n metadata: {\n dreamId: proposal.dreamId,\n reason: reason || null,\n },\n });\n\n return serializeProposal((await getProposalRow(proposal.id))!);\n}\n\nfunction cronLooksValid(schedule: string): boolean {\n const parts = schedule.trim().split(/\\s+/);\n if (parts.length !== 5) return false;\n return parts.every((part) => /^[\\d*/,\\-]+$/.test(part));\n}\n\nfunction dreamJobBody(settings: Omit<DreamSettings, \"scope\" | \"scopeId\">) {\n const queryLine = settings.query\n ? `- Use query \"${settings.query}\" to focus the dream pass.`\n : \"- Review recent threads without a search query.\";\n const sourceLine =\n settings.sourceIds.length > 0\n ? `- sourceIds: ${JSON.stringify(settings.sourceIds)}`\n : `- sourceId: \"${settings.sourceId}\"`;\n return `# Dispatch Dream\n\nRun a safe Dispatch dreaming pass.\n\n1. Call \\`list-dream-candidates\\` with:\n ${sourceLine}\n - allSources: ${settings.allSources}\n ${queryLine}\n - ownerEmail: \"*\"\n - limit: ${settings.limit}\n - sourceTimeoutMs: ${settings.sourceTimeoutMs}\n - sourceConcurrency: ${settings.sourceConcurrency}\n - sourceStartStaggerMs: ${settings.sourceStartStaggerMs}\n - threadConcurrency: ${settings.threadConcurrency}\n - threadTimeoutMs: ${settings.threadTimeoutMs}\n2. If fewer than ${settings.minCandidateCount} candidate thread(s) are found, stop without creating a report.\n3. Call \\`create-dream-report\\` with the same source/query/limit/timeout settings.\n4. Review the returned proposals and evidence.\n5. Do not auto-apply shared/team changes, workspace instructions, workspace skills, AGENTS.md changes, or jobs.\n6. Only apply personal-memory proposals when the evidence is explicit user-grounded correction or a remember request.\n7. Leave all other proposals pending for a human to review.\n`;\n}\n\nexport async function ensureDreamJob(input: {\n schedule?: string;\n sourceId?: string;\n sourceIds?: string[];\n allSources?: boolean;\n query?: string;\n limit?: number;\n sourceTimeoutMs?: number;\n sourceConcurrency?: number;\n sourceStartStaggerMs?: number;\n threadConcurrency?: number;\n threadTimeoutMs?: number;\n minCandidateCount?: number;\n}) {\n const saved = await getDreamSettings();\n const settings = normalizeDreamSettings({\n ...saved,\n ...input,\n query:\n input.query === undefined\n ? saved.query\n : input.query?.trim()\n ? input.query.trim()\n : null,\n sourceIds:\n input.sourceIds !== undefined\n ? normalizeSourceIds(input.sourceIds)\n : saved.sourceIds,\n });\n const schedule = input.schedule?.trim() || settings.schedule;\n if (!cronLooksValid(schedule)) {\n throw new Error(\n 'Invalid cron expression. Use a standard five-field cron like \"0 9 * * 1\".',\n );\n }\n const owner = currentOwnerEmail();\n const orgId = currentOrgId();\n const jobSettings = { ...settings, schedule, enabled: true };\n const content = [\n \"---\",\n `schedule: \"${schedule}\"`,\n \"enabled: true\",\n `createdBy: ${owner}`,\n ...(orgId ? [`orgId: ${orgId}`] : []),\n \"runAs: creator\",\n \"---\",\n \"\",\n dreamJobBody(jobSettings),\n ].join(\"\\n\");\n\n const resource = await resourcePut(\n owner,\n DREAM_JOB_PATH,\n content,\n \"text/markdown\",\n {\n createdBy: \"agent\",\n metadata: jobSettings,\n },\n );\n\n await setDreamSettings(jobSettings);\n await recordAudit({\n action: \"dream.job.ensured\",\n targetType: \"job\",\n targetId: DREAM_JOB_PATH,\n summary: \"Ensured weekly Dispatch dream recurring job\",\n metadata: jobSettings,\n });\n\n return {\n path: resource.path,\n owner: resource.owner,\n schedule,\n enabled: true,\n runAs: \"creator\",\n sourceId: jobSettings.sourceId,\n sourceIds: jobSettings.sourceIds,\n allSources: jobSettings.allSources,\n query: jobSettings.query,\n limit: jobSettings.limit,\n sourceTimeoutMs: jobSettings.sourceTimeoutMs,\n sourceConcurrency: jobSettings.sourceConcurrency,\n sourceStartStaggerMs: jobSettings.sourceStartStaggerMs,\n threadConcurrency: jobSettings.threadConcurrency,\n threadTimeoutMs: jobSettings.threadTimeoutMs,\n minCandidateCount: jobSettings.minCandidateCount,\n };\n}\n"]}
|
|
@@ -32,7 +32,7 @@ export declare function searchAgentThreads(input: {
|
|
|
32
32
|
source: {
|
|
33
33
|
id: string;
|
|
34
34
|
label: string;
|
|
35
|
-
kind: "
|
|
35
|
+
kind: "current" | "env" | "configured";
|
|
36
36
|
databaseUrlEnv: string;
|
|
37
37
|
};
|
|
38
38
|
access: {
|
|
@@ -64,7 +64,7 @@ export declare function getAgentThreadDebug(input: {
|
|
|
64
64
|
source: {
|
|
65
65
|
id: string;
|
|
66
66
|
label: string;
|
|
67
|
-
kind: "
|
|
67
|
+
kind: "current" | "env" | "configured";
|
|
68
68
|
databaseUrlEnv: string;
|
|
69
69
|
};
|
|
70
70
|
access: {
|
|
@@ -205,7 +205,7 @@ export declare function syncGrantsToApp(appId: string, ctx?: VaultCtx): Promise<
|
|
|
205
205
|
synced: number;
|
|
206
206
|
keys: string[];
|
|
207
207
|
credentialStore: {
|
|
208
|
-
scope: "
|
|
208
|
+
scope: "workspace" | "org";
|
|
209
209
|
scopeId: string;
|
|
210
210
|
synced: number;
|
|
211
211
|
};
|