Files
petya 75601988c2 Initial commit: LangChain evolution tutorial deck (132 slides)
- Cover, TOC, 5 dividers, 3 recap slides
- 5 sections (chains, langgraph, deepagents, openswe, ecosystem)
- design-system.js with theme tokens + 9 helper functions
- research/: timeline + sources + per-tech notes
- final-compile.js + merge.js for rebuild pipeline
- output/: langchain-evolution.pptx (2.3 MB) + langchain-evolution.pdf (1.1 MB) + 7 sample previews
2026-06-22 11:29:03 +03:00

112 lines
4.4 KiB
JavaScript

/**
* slides/section4-openswe/compile.js
* ----------------------------------------------------------------------------
* Compiles all Open SWE section slides into section4.pptx.
*
* Usage:
* node compile.js
*
* Output:
* ../section4.pptx (relative to this file)
* ../section4.pdf (via libreoffice)
* ../section4-page-N.png (preview images via pdftoppm)
*/
'use strict';
const path = require('path');
const fs = require('fs');
const pptxgen = require('pptxgenjs');
const ds = require('../../design-system');
const { theme, helpers } = ds;
// Import all slide builders in order.
const slides = [
require('./01-cover'),
require('./02-what-is-openswe'),
require('./03-architecture-overview'),
require('./04-create-deep-agent'),
require('./05-agents-md-context'),
require('./06-middleware'),
require('./07-sandbox-providers'),
require('./08-sandbox-imports'),
require('./09-installation-1'),
require('./10-installation-2'),
require('./11-github-app'),
require('./12-langsmith'),
require('./13-triggers-overview'),
require('./14-triggers-thread-id'),
require('./15-webhook-endpoints'),
require('./16-dashboard-ui'),
require('./17-per-user-settings'),
require('./18-customization-6-points'),
require('./19-three-graphs'),
require('./20-observability'),
require('./21-production-ready'),
require('./22-typescript'),
require('./23-pros-cons'),
require('./24-roadmap'),
];
async function main() {
console.log('[compile] building section4.pptx with ' + slides.length + ' slides');
const pres = new pptxgen();
pres.layout = 'LAYOUT_16x9';
pres.title = 'lc-evo-deck / Stage 4: Open SWE';
pres.subject = 'LangChain Evolution Deck -- Open SWE section';
pres.company = 'lc-evo-deck';
for (let i = 0; i < slides.length; i++) {
const mod = slides[i];
const builder = pickBuilder(mod);
if (typeof builder !== 'function') {
throw new Error('slide ' + (i + 1) + ': no builder function');
}
builder(pres, theme);
}
// Output: one level up from this file, into sec4-openswe/ root.
const outDir = path.resolve(__dirname, '..', '..');
const outPath = path.join(outDir, 'section4.pptx');
await pres.writeFile({ fileName: outPath });
console.log('[compile] wrote ' + outPath);
return outPath;
}
function pickBuilder(mod) {
// Each slide file exports either buildX or default.
if (typeof mod.buildCover === 'function') return mod.buildCover;
if (typeof mod.buildWhatIsOpenSWE === 'function') return mod.buildWhatIsOpenSWE;
if (typeof mod.buildArchitectureOverview === 'function') return mod.buildArchitectureOverview;
if (typeof mod.buildCreateDeepAgent === 'function') return mod.buildCreateDeepAgent;
if (typeof mod.buildAgentsMdConvention === 'function') return mod.buildAgentsMdConvention;
if (typeof mod.buildMiddleware === 'function') return mod.buildMiddleware;
if (typeof mod.buildSandboxProviders === 'function') return mod.buildSandboxProviders;
if (typeof mod.buildSandboxImports === 'function') return mod.buildSandboxImports;
if (typeof mod.buildInstallPart1 === 'function') return mod.buildInstallPart1;
if (typeof mod.buildInstallPart2 === 'function') return mod.buildInstallPart2;
if (typeof mod.buildGithubApp === 'function') return mod.buildGithubApp;
if (typeof mod.buildLangSmithSetup === 'function') return mod.buildLangSmithSetup;
if (typeof mod.buildTriggersOverview === 'function') return mod.buildTriggersOverview;
if (typeof mod.buildTriggerRouting === 'function') return mod.buildTriggerRouting;
if (typeof mod.buildWebhookEndpoints === 'function') return mod.buildWebhookEndpoints;
if (typeof mod.buildDashboardUI === 'function') return mod.buildDashboardUI;
if (typeof mod.buildPerUserSettings === 'function') return mod.buildPerUserSettings;
if (typeof mod.buildCustomization6 === 'function') return mod.buildCustomization6;
if (typeof mod.buildThreeGraphs === 'function') return mod.buildThreeGraphs;
if (typeof mod.buildObservability === 'function') return mod.buildObservability;
if (typeof mod.buildProductionReady === 'function') return mod.buildProductionReady;
if (typeof mod.buildTypescript === 'function') return mod.buildTypescript;
if (typeof mod.buildProsConsComparison === 'function') return mod.buildProsConsComparison;
if (typeof mod.buildRoadmap === 'function') return mod.buildRoadmap;
return null;
}
main().catch(function (err) {
console.error('[compile] failed:', err);
process.exit(1);
});