#!/usr/bin/env node 'use strict'; const fs = require('fs'); const path = require('path'); const { createAdapterRegistry, inspectSessionTarget } = require('./lib/session-adapters/registry'); function usage() { console.log([ 'Usage:', ' node scripts/session-inspect.js [--adapter ] [--target-type ] [--write ]', ' node scripts/session-inspect.js --list-adapters', '', 'Targets:', ' Dmux/orchestration plan file', ' Dmux session name when the coordination directory exists', ' claude:latest Most recent Claude session history entry', ' claude: Specific Claude session or alias', ' Direct path to a Claude session file', '', 'Examples:', ' node scripts/session-inspect.js .claude/plan/workflow.json', ' node scripts/session-inspect.js workflow-visual-proof', ' node scripts/session-inspect.js claude:latest', ' node scripts/session-inspect.js latest --target-type claude-history', ' node scripts/session-inspect.js claude:a1b2c3d4 --write /tmp/session.json' ].join('\n')); } function parseArgs(argv) { const args = argv.slice(2); const target = args.find(argument => !argument.startsWith('--')); const listAdapters = args.includes('--list-adapters'); const adapterIndex = args.indexOf('--adapter'); const adapterId = adapterIndex >= 0 ? args[adapterIndex + 1] : null; const targetTypeIndex = args.indexOf('--target-type'); const targetType = targetTypeIndex >= 0 ? args[targetTypeIndex + 1] : null; const writeIndex = args.indexOf('--write'); const writePath = writeIndex >= 0 ? args[writeIndex + 1] : null; return { target, adapterId, targetType, writePath, listAdapters }; } function main() { const { target, adapterId, targetType, writePath, listAdapters } = parseArgs(process.argv); if (listAdapters) { const registry = createAdapterRegistry(); console.log(JSON.stringify({ adapters: registry.listAdapters() }, null, 2)); return; } if (!target) { usage(); process.exit(1); } const inspectTarget = targetType ? { type: targetType, value: target } : target; const snapshot = inspectSessionTarget(inspectTarget, { cwd: process.cwd(), adapterId }); const payload = JSON.stringify(snapshot, null, 2); if (writePath) { const absoluteWritePath = path.resolve(writePath); fs.mkdirSync(path.dirname(absoluteWritePath), { recursive: true }); fs.writeFileSync(absoluteWritePath, payload + '\n', 'utf8'); } console.log(payload); } if (require.main === module) { try { main(); } catch (error) { console.error(`[session-inspect] ${error.message}`); process.exit(1); } } module.exports = { main, parseArgs };