From 5c1e1800f07e709cd92dbb5d7b7c2bfed933e214 Mon Sep 17 00:00:00 2001 From: Kjell Tore Guttormsen Date: Thu, 18 Jun 2026 12:11:11 +0200 Subject: [PATCH] =?UTF-8?q?refactor(linkedin-studio):=20M0-12=20=E2=80=94?= =?UTF-8?q?=20wire=20+=20run=20migrateData=20(data=20externalized=20before?= =?UTF-8?q?=20scrub)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- hooks/scripts/session-start.mjs | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/hooks/scripts/session-start.mjs b/hooks/scripts/session-start.mjs index 86fd23d..09fa0d9 100644 --- a/hooks/scripts/session-start.mjs +++ b/hooks/scripts/session-start.mjs @@ -9,6 +9,7 @@ import { calculateScore } from './personalization-score.mjs'; import { queueToday, queueOverdue, queueUpcoming } from './queue-manager.mjs'; import { applyWeekRollover } from './week-rollover.mjs'; import { getDataRoot } from './data-root.mjs'; +import { migrateData } from './migrate-data.mjs'; const __dirname = dirname(fileURLToPath(import.meta.url)); const PLUGIN_ROOT = join(__dirname, '..', '..'); @@ -44,6 +45,16 @@ function dayOfWeek() { let context = ''; +// M0: relocate per-user data to the external root on first run. Idempotent +// (silent no-op once .migrated exists); must precede every moved-path read +// (voice/profile/scaffold scores, queue, content-history). +let m0Migration = { status: 'skip', moved: [], copied: [] }; +try { + m0Migration = migrateData(); +} catch { + // Non-critical: never block session start on migration failure. +} + if (existsSync(STATE_FILE)) { const stateContent = readFileSync(STATE_FILE, 'utf-8'); @@ -423,6 +434,11 @@ if (!existsSync(rememberFile) && existsSync(rememberTemplate)) { context += `\\n## Session Context (from REMEMBER.md)\\n${rememberSummary.replace(/\n/g, '\\n')}\\n`; } +// M0: log one line when the migration actually relocated data (D5). +if (m0Migration.status === 'migrated' && (m0Migration.moved.length || m0Migration.copied.length)) { + context += `\\nLinkedIn Studio: migrated ${m0Migration.moved.length} file(s) + ${m0Migration.copied.length} scaffold(s) to the external data root.\\n`; +} + // Output JSON for Claude Code const output = { continue: true,