From fb43fafcfe0c473cdfd2d643b028e72e2577459a Mon Sep 17 00:00:00 2001 From: ddonaldson130 Date: Mon, 6 Jul 2026 21:32:19 -0400 Subject: [PATCH 1/2] fix(docker): copy linear-import package.json before frozen install The Dockerfile pre-copies each workspace package's package.json before 'RUN pnpm install --frozen-lockfile' (a layer-caching optimization), but the list omits plugins/fusion-plugin-linear-import, which pnpm-workspace.yaml lists as a workspace member. Because its package.json is absent during the frozen install layer, pnpm never links that package's devDependencies (@types/node, @types/react), so the later 'pnpm build' fails compiling it with TS2688 'Cannot find type definition file for node/react'. Add the missing COPY line so the plugin's manifest is present during the install layer, matching every other workspace plugin. --- Dockerfile | 1 + 1 file changed, 1 insertion(+) diff --git a/Dockerfile b/Dockerfile index a2bdb7fefc..dc8b31ddbf 100644 --- a/Dockerfile +++ b/Dockerfile @@ -40,6 +40,7 @@ COPY plugins/fusion-plugin-whatsapp-chat/package.json ./plugins/fusion-plugin-wh COPY plugins/fusion-plugin-roadmap/package.json ./plugins/fusion-plugin-roadmap/package.json COPY plugins/fusion-plugin-even-realities-glasses/package.json ./plugins/fusion-plugin-even-realities-glasses/package.json COPY plugins/fusion-plugin-reports/package.json ./plugins/fusion-plugin-reports/package.json +COPY plugins/fusion-plugin-linear-import/package.json ./plugins/fusion-plugin-linear-import/package.json RUN pnpm install --frozen-lockfile From f72585ce77bf5026631cf1262ebec51ec6fd45bf Mon Sep 17 00:00:00 2001 From: ddonaldson130 Date: Mon, 6 Jul 2026 22:03:08 -0400 Subject: [PATCH 2/2] feat(dashboard): expose build timeout & insight extraction in settings UI Both settings already exist in the Settings schema and are honored by the engine, but neither had a control in the dashboard, so users could only change them by hand-editing config.json while the app was closed (the running app rewrites config.json from its DB, clobbering live file edits). - Add 'Build/Verification Timeout (minutes)' to the Scheduling section, next to the existing stuck-task timeout (same minutes<->ms conversion). - Add 'Enable Insight Extraction' + cron schedule to the Memory section, next to the existing auto-summarize controls. Both are placed in their existing project-scoped sections. Follow-up: a global-defaults counterpart could be added if maintainers want these settable at the user/global level too. --- .../components/settings/sections/MemorySection.tsx | 13 +++++++++++++ .../settings/sections/SchedulingSection.tsx | 9 +++++++++ 2 files changed, 22 insertions(+) diff --git a/packages/dashboard/app/components/settings/sections/MemorySection.tsx b/packages/dashboard/app/components/settings/sections/MemorySection.tsx index bb95f708fd..460b1d0851 100644 --- a/packages/dashboard/app/components/settings/sections/MemorySection.tsx +++ b/packages/dashboard/app/components/settings/sections/MemorySection.tsx @@ -112,6 +112,19 @@ export function MemorySection({ scopeBanner, form, setForm, memory }: MemorySect )} +
+ + {t("settings.memory.periodicallyExtractDurableInsightsFromCompletedTasks", "Periodically extract durable insights/learnings from completed tasks into memory")} +
+ + {(form.insightExtractionEnabled || false) && ( +
+ + setForm((f) => ({ ...f, insightExtractionSchedule: e.target.value }))} placeholder={t("settings.memory.02", "0 2 * * *")}/> + {t("settings.memory.cronExpressionForInsightExtractionScheduleDefaultDaily", "Cron expression for insight extraction schedule (default: daily at 2 AM)")} +
)} +
diff --git a/packages/dashboard/app/components/settings/sections/SchedulingSection.tsx b/packages/dashboard/app/components/settings/sections/SchedulingSection.tsx index 48821f433d..ba165300d4 100644 --- a/packages/dashboard/app/components/settings/sections/SchedulingSection.tsx +++ b/packages/dashboard/app/components/settings/sections/SchedulingSection.tsx @@ -106,6 +106,15 @@ export function SchedulingSection({ scopeBanner, form, setForm, globalMaxConcurr }}/> {t("settings.scheduling.timeoutInMinutesForDetectingStuckTasksWhen", "Timeout in minutes for detecting stuck tasks. When a task's agent session shows no activity for longer than this duration, the task is terminated and retried. Leave empty to disable. Suggested: 10.")}
+
+ + { + const val = e.target.value; + const num = Number(val); + setForm((f) => ({ ...f, buildTimeoutMs: val && num > 0 ? num * 60000 : undefined })); + }}/> + {t("settings.scheduling.maximumTimeInMinutesForBuildVerificationCommands", "Maximum time in minutes for build/verification commands before they are killed. Raise for large monorepo or Docker builds. Default: 5.")} +
{