synthos 0.9.0 → 0.10.1

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.
Files changed (118) hide show
  1. package/default-pages/neon_asteroids/page.html +2 -21
  2. package/default-pages/oregon_trail/page.html +3 -19
  3. package/default-pages/solar_explorer/page.html +1 -1
  4. package/default-pages/western_cities_1850/page.html +2 -2
  5. package/dist/agents/a2a/a2aProvider.d.ts +3 -0
  6. package/dist/agents/discovery.d.ts +30 -0
  7. package/dist/agents/openclaw/openclawProvider.d.ts +3 -0
  8. package/dist/agents/types.d.ts +64 -0
  9. package/dist/connectors/index.d.ts +3 -0
  10. package/dist/connectors/types.d.ts +84 -0
  11. package/dist/customizer/Customizer.d.ts +5 -0
  12. package/dist/customizer/Customizer.d.ts.map +1 -1
  13. package/dist/customizer/Customizer.js +10 -0
  14. package/dist/customizer/Customizer.js.map +1 -1
  15. package/dist/customizer/index.d.ts +4 -0
  16. package/dist/index.d.ts +9 -0
  17. package/dist/index.d.ts.map +1 -1
  18. package/dist/index.js +1 -0
  19. package/dist/index.js.map +1 -1
  20. package/dist/init.d.ts +2 -0
  21. package/dist/init.d.ts.map +1 -1
  22. package/dist/init.js +71 -37
  23. package/dist/init.js.map +1 -1
  24. package/dist/migrations.d.ts +12 -0
  25. package/dist/models/chainOfThought.d.ts +12 -0
  26. package/dist/models/fireworksai.d.ts +30 -0
  27. package/dist/models/logCompletePrompt.d.ts +3 -0
  28. package/dist/models/providers.d.ts +8 -0
  29. package/dist/models/utils.d.ts +6 -0
  30. package/dist/pages.d.ts +12 -11
  31. package/dist/pages.d.ts.map +1 -1
  32. package/dist/pages.js +94 -66
  33. package/dist/pages.js.map +1 -1
  34. package/dist/scripts.d.ts +15 -0
  35. package/dist/service/createCompletePrompt.d.ts +6 -0
  36. package/dist/service/createCompletePrompt.d.ts.map +1 -1
  37. package/dist/service/createCompletePrompt.js +2 -2
  38. package/dist/service/createCompletePrompt.js.map +1 -1
  39. package/dist/service/debugLog.d.ts +11 -0
  40. package/dist/service/generateImage.d.ts +32 -0
  41. package/dist/service/index.d.ts +8 -0
  42. package/dist/service/modelInstructions.d.ts +7 -0
  43. package/dist/service/requiresSettings.d.ts +4 -0
  44. package/dist/service/requiresSettings.d.ts.map +1 -1
  45. package/dist/service/requiresSettings.js +3 -3
  46. package/dist/service/requiresSettings.js.map +1 -1
  47. package/dist/service/server.d.ts +5 -0
  48. package/dist/service/useAgentRoutes.js +12 -12
  49. package/dist/service/useAgentRoutes.js.map +1 -1
  50. package/dist/service/useApiRoutes.d.ts +5 -0
  51. package/dist/service/useApiRoutes.d.ts.map +1 -1
  52. package/dist/service/useApiRoutes.js +74 -60
  53. package/dist/service/useApiRoutes.js.map +1 -1
  54. package/dist/service/useConnectorRoutes.d.ts +4 -0
  55. package/dist/service/useConnectorRoutes.js +11 -11
  56. package/dist/service/useConnectorRoutes.js.map +1 -1
  57. package/dist/service/useDataRoutes.d.ts +4 -0
  58. package/dist/service/useDataRoutes.d.ts.map +1 -1
  59. package/dist/service/useDataRoutes.js +13 -10
  60. package/dist/service/useDataRoutes.js.map +1 -1
  61. package/dist/service/useFileRoutes.d.ts.map +1 -1
  62. package/dist/service/useFileRoutes.js +13 -13
  63. package/dist/service/useFileRoutes.js.map +1 -1
  64. package/dist/service/usePageRoutes.d.ts +6 -0
  65. package/dist/service/usePageRoutes.d.ts.map +1 -1
  66. package/dist/service/usePageRoutes.js +54 -38
  67. package/dist/service/usePageRoutes.js.map +1 -1
  68. package/dist/service/useSharedDataRoutes.d.ts.map +1 -1
  69. package/dist/service/useSharedDataRoutes.js +13 -10
  70. package/dist/service/useSharedDataRoutes.js.map +1 -1
  71. package/dist/service/useSharedFileRoutes.d.ts.map +1 -1
  72. package/dist/service/useSharedFileRoutes.js +13 -13
  73. package/dist/service/useSharedFileRoutes.js.map +1 -1
  74. package/dist/settings.d.ts +4 -3
  75. package/dist/settings.d.ts.map +1 -1
  76. package/dist/settings.js +11 -10
  77. package/dist/settings.js.map +1 -1
  78. package/dist/storage/FsStorageProvider.d.ts +25 -0
  79. package/dist/storage/FsStorageProvider.d.ts.map +1 -0
  80. package/dist/storage/FsStorageProvider.js +103 -0
  81. package/dist/storage/FsStorageProvider.js.map +1 -0
  82. package/dist/storage/StorageProvider.d.ts +31 -0
  83. package/dist/storage/StorageProvider.d.ts.map +1 -0
  84. package/dist/storage/StorageProvider.js +3 -0
  85. package/dist/storage/StorageProvider.js.map +1 -0
  86. package/dist/storage/index.d.ts +3 -0
  87. package/dist/storage/index.d.ts.map +1 -0
  88. package/dist/storage/index.js +6 -0
  89. package/dist/storage/index.js.map +1 -0
  90. package/dist/synthos-cli.d.ts +2 -0
  91. package/dist/themes.d.ts.map +1 -1
  92. package/dist/themes.js +42 -18
  93. package/dist/themes.js.map +1 -1
  94. package/package.json +1 -1
  95. package/src/builders/anthropic.ts +5 -5
  96. package/src/customizer/Customizer.ts +12 -0
  97. package/src/index.ts +2 -1
  98. package/src/init.ts +78 -42
  99. package/src/models/providers.ts +2 -2
  100. package/src/pages.ts +98 -67
  101. package/src/service/createCompletePrompt.ts +3 -2
  102. package/src/service/requiresSettings.ts +4 -3
  103. package/src/service/useAgentRoutes.ts +12 -12
  104. package/src/service/useApiRoutes.ts +76 -61
  105. package/src/service/useConnectorRoutes.ts +11 -11
  106. package/src/service/useDataRoutes.ts +13 -10
  107. package/src/service/useFileRoutes.ts +14 -13
  108. package/src/service/usePageRoutes.ts +42 -40
  109. package/src/service/useSharedDataRoutes.ts +13 -10
  110. package/src/service/useSharedFileRoutes.ts +14 -13
  111. package/src/settings.ts +12 -10
  112. package/src/storage/FsStorageProvider.ts +87 -0
  113. package/src/storage/StorageProvider.ts +34 -0
  114. package/src/storage/index.ts +2 -0
  115. package/src/themes.ts +44 -18
  116. package/tests/builders.spec.ts +2 -2
  117. package/tests/pages.spec.ts +54 -84
  118. package/tests/providers.spec.ts +1 -1
@@ -39,7 +39,7 @@ function useAgentRoutes(config, app, customizer) {
39
39
  // Auto-connect all enabled OpenClaw agents on startup
40
40
  (async () => {
41
41
  try {
42
- const settings = await (0, settings_1.loadSettings)(config.pagesFolder);
42
+ const settings = await (0, settings_1.loadSettings)(config);
43
43
  for (const agent of settings.agents ?? []) {
44
44
  tryConnectAgent(agent);
45
45
  }
@@ -51,7 +51,7 @@ function useAgentRoutes(config, app, customizer) {
51
51
  // GET /api/agents — List configured agents (with optional filters)
52
52
  app.get('/api/agents', async (req, res) => {
53
53
  try {
54
- const settings = await (0, settings_1.loadSettings)(config.pagesFolder);
54
+ const settings = await (0, settings_1.loadSettings)(config);
55
55
  let agents = settings.agents ?? [];
56
56
  // Filter by enabled
57
57
  if (req.query.enabled === 'true') {
@@ -103,7 +103,7 @@ function useAgentRoutes(config, app, customizer) {
103
103
  res.status(400).json({ error: 'url and name are required' });
104
104
  return;
105
105
  }
106
- const settings = await (0, settings_1.loadSettings)(config.pagesFolder);
106
+ const settings = await (0, settings_1.loadSettings)(config);
107
107
  const agents = settings.agents ? [...settings.agents] : [];
108
108
  const agentConfig = {
109
109
  id: body.id || (0, uuid_1.v4)(),
@@ -138,7 +138,7 @@ function useAgentRoutes(config, app, customizer) {
138
138
  else {
139
139
  agents.push(agentConfig);
140
140
  }
141
- await (0, settings_1.saveSettings)(config.pagesFolder, { agents });
141
+ await (0, settings_1.saveSettings)(config, { agents });
142
142
  // Auto-connect OpenClaw agents after save
143
143
  tryConnectAgent(agentConfig);
144
144
  res.json(toClientAgent(agentConfig));
@@ -152,7 +152,7 @@ function useAgentRoutes(config, app, customizer) {
152
152
  app.patch('/api/agents/:id', async (req, res) => {
153
153
  try {
154
154
  const { id } = req.params;
155
- const settings = await (0, settings_1.loadSettings)(config.pagesFolder);
155
+ const settings = await (0, settings_1.loadSettings)(config);
156
156
  const agents = settings.agents ? [...settings.agents] : [];
157
157
  const idx = agents.findIndex(a => a.id === id);
158
158
  if (idx === -1) {
@@ -166,7 +166,7 @@ function useAgentRoutes(config, app, customizer) {
166
166
  agents[idx].name = body.name;
167
167
  if (typeof body.description === 'string')
168
168
  agents[idx].description = body.description;
169
- await (0, settings_1.saveSettings)(config.pagesFolder, { agents });
169
+ await (0, settings_1.saveSettings)(config, { agents });
170
170
  // Connect or disconnect based on enabled state
171
171
  if (agents[idx].provider === 'openclaw') {
172
172
  if (agents[idx].enabled) {
@@ -187,14 +187,14 @@ function useAgentRoutes(config, app, customizer) {
187
187
  app.delete('/api/agents/:id', async (req, res) => {
188
188
  try {
189
189
  const { id } = req.params;
190
- const settings = await (0, settings_1.loadSettings)(config.pagesFolder);
190
+ const settings = await (0, settings_1.loadSettings)(config);
191
191
  const agent = (settings.agents ?? []).find(a => a.id === id);
192
192
  // Disconnect if OpenClaw
193
193
  if (agent?.provider === 'openclaw') {
194
194
  (0, agents_1.disconnectAgent)(id);
195
195
  }
196
196
  const agents = (settings.agents ?? []).filter(a => a.id !== id);
197
- await (0, settings_1.saveSettings)(config.pagesFolder, { agents });
197
+ await (0, settings_1.saveSettings)(config, { agents });
198
198
  res.json({ deleted: true });
199
199
  }
200
200
  catch (err) {
@@ -206,7 +206,7 @@ function useAgentRoutes(config, app, customizer) {
206
206
  app.post('/api/agents/:id/connect', async (req, res) => {
207
207
  try {
208
208
  const { id } = req.params;
209
- const settings = await (0, settings_1.loadSettings)(config.pagesFolder);
209
+ const settings = await (0, settings_1.loadSettings)(config);
210
210
  const agent = (settings.agents ?? []).find(a => a.id === id);
211
211
  if (!agent) {
212
212
  res.status(404).json({ error: `Agent "${id}" not found` });
@@ -250,7 +250,7 @@ function useAgentRoutes(config, app, customizer) {
250
250
  res.status(400).json({ error: 'message is required' });
251
251
  return;
252
252
  }
253
- const settings = await (0, settings_1.loadSettings)(config.pagesFolder);
253
+ const settings = await (0, settings_1.loadSettings)(config);
254
254
  const agent = (settings.agents ?? []).find(a => a.id === id);
255
255
  if (!agent) {
256
256
  res.status(404).json({ error: `Agent "${id}" not found` });
@@ -274,7 +274,7 @@ function useAgentRoutes(config, app, customizer) {
274
274
  // Helper: load agent + resolve provider, return 404/400 on failure
275
275
  // -----------------------------------------------------------------------
276
276
  async function withAgent(id, res, fn) {
277
- const settings = await (0, settings_1.loadSettings)(config.pagesFolder);
277
+ const settings = await (0, settings_1.loadSettings)(config);
278
278
  const agent = (settings.agents ?? []).find(a => a.id === id);
279
279
  if (!agent) {
280
280
  res.status(404).json({ error: `Agent "${id}" not found` });
@@ -350,7 +350,7 @@ function useAgentRoutes(config, app, customizer) {
350
350
  res.status(400).json({ error: 'message is required' });
351
351
  return;
352
352
  }
353
- const settings = await (0, settings_1.loadSettings)(config.pagesFolder);
353
+ const settings = await (0, settings_1.loadSettings)(config);
354
354
  const agent = (settings.agents ?? []).find(a => a.id === id);
355
355
  if (!agent) {
356
356
  res.status(404).json({ error: `Agent "${id}" not found` });
@@ -1 +1 @@
1
- {"version":3,"file":"useAgentRoutes.js","sourceRoot":"","sources":["../../src/service/useAgentRoutes.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"useAgentRoutes.js","sourceRoot":"","sources":["../../src/service/useAgentRoutes.ts"],"names":[],"mappings":";;;AAEA,0CAAyD;AACzD,sCAYmB;AACnB,+BAAoC;AAGpC,SAAgB,cAAc,CAAC,MAAqB,EAAE,GAAgB,EAAE,UAAuB;IAC3F,4DAA4D;IAC5D,IAAA,yBAAgB,EAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IAE/B,uGAAuG;IACvG,SAAS,aAAa,CAAC,KAAkB;QACrC,MAAM,EAAE,KAAK,EAAE,CAAC,EAAE,SAAS,EAAE,GAAG,IAAI,EAAE,GAAG,KAAK,CAAC;QAC/C,MAAM,MAAM,GAAG,KAAK,CAAC,QAAQ,KAAK,UAAU,CAAC,CAAC,CAAC,IAAA,uBAAc,EAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QACpF,MAAM,YAAY,GAAG,SAAS,EAAE,OAAO,CAAC,CAAC,CAAC,IAAA,wBAAe,EAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QAChF,+CAA+C;QAC/C,MAAM,eAAe,GAAG,SAAS,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,SAAS,CAAC,OAAO,EAAE,OAAO,EAAE,SAAS,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;QAC3G,OAAO;YACH,GAAG,IAAI;YACP,GAAG,CAAC,eAAe,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,eAAe,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC1D,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,MAAM,CAAC,SAAS,IAAI,MAAM,CAAC,aAAa,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC1E,GAAG,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SAC5C,CAAC;IACN,CAAC;IAED,uEAAuE;IACvE,SAAS,eAAe,CAAC,KAAkB;QACvC,IAAI,KAAK,CAAC,QAAQ,KAAK,UAAU,IAAI,CAAC,KAAK,CAAC,KAAK,IAAI,CAAC,KAAK,CAAC,OAAO;YAAE,OAAO;QAC5E,IAAA,qBAAY,EAAC;YACT,EAAE,EAAE,KAAK,CAAC,EAAE;YACZ,IAAI,EAAE,KAAK,CAAC,IAAI;YAChB,GAAG,EAAE,KAAK,CAAC,GAAG;YACd,KAAK,EAAE,KAAK,CAAC,KAAK;YAClB,SAAS,EAAE,KAAK,CAAC,SAAS;YAC1B,WAAW,EAAE,UAAU,EAAE,WAAW;SACvC,CAAC;aACG,IAAI,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,2CAA2C,KAAK,CAAC,IAAI,GAAG,CAAC,CAAC;aACjF,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,qCAAqC,KAAK,CAAC,IAAI,MAAM,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;IACrI,CAAC;IAED,sDAAsD;IACtD,CAAC,KAAK,IAAI,EAAE;QACR,IAAI;YACA,MAAM,QAAQ,GAAG,MAAM,IAAA,uBAAY,EAAC,MAAM,CAAC,CAAC;YAC5C,KAAK,MAAM,KAAK,IAAI,QAAQ,CAAC,MAAM,IAAI,EAAE,EAAE;gBACvC,eAAe,CAAC,KAAK,CAAC,CAAC;aAC1B;SACJ;QAAC,OAAO,GAAG,EAAE;YACV,OAAO,CAAC,IAAI,CAAC,oDAAoD,EAAE,GAAG,CAAC,CAAC;SAC3E;IACL,CAAC,CAAC,EAAE,CAAC;IAEL,mEAAmE;IACnE,GAAG,CAAC,GAAG,CAAC,aAAa,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE;QACtC,IAAI;YACA,MAAM,QAAQ,GAAG,MAAM,IAAA,uBAAY,EAAC,MAAM,CAAC,CAAC;YAC5C,IAAI,MAAM,GAAG,QAAQ,CAAC,MAAM,IAAI,EAAE,CAAC;YAEnC,oBAAoB;YACpB,IAAI,GAAG,CAAC,KAAK,CAAC,OAAO,KAAK,MAAM,EAAE;gBAC9B,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;aAC1C;YAED,qBAAqB;YACrB,IAAI,OAAO,GAAG,CAAC,KAAK,CAAC,QAAQ,KAAK,QAAQ,EAAE;gBACxC,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;aAClE;YAED,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC,CAAC;SACvC;QAAC,OAAO,GAAY,EAAE;YACnB,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YACnB,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAG,GAAa,CAAC,OAAO,EAAE,CAAC,CAAC;SAC3D;IACL,CAAC,CAAC,CAAC;IAEH,2DAA2D;IAC3D,GAAG,CAAC,IAAI,CAAC,sBAAsB,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE;QAChD,IAAI;YACA,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,GAAG,CAAC,IAAI,CAAC;YACtC,IAAI,CAAC,GAAG,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE;gBACjC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,iBAAiB,EAAE,CAAC,CAAC;gBACnD,OAAO;aACV;YAED,IAAI,IAAI,KAAK,UAAU,EAAE;gBACrB,IAAI,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;oBACrC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,0CAA0C,EAAE,CAAC,CAAC;oBAC5E,OAAO;iBACV;gBACD,MAAM,MAAM,GAAG,MAAM,IAAA,8BAAqB,EAAC,GAAG,EAAE,KAAK,CAAC,CAAC;gBACvD,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;aACpB;iBAAM;gBACH,iBAAiB;gBACjB,MAAM,IAAI,GAAG,MAAM,IAAA,yBAAgB,EAAC,GAAG,CAAC,CAAC;gBACzC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;aAClB;SACJ;QAAC,OAAO,GAAY,EAAE;YACnB,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YACnB,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,6BAA8B,GAAa,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;SAC1F;IACL,CAAC,CAAC,CAAC;IAEH,yCAAyC;IACzC,GAAG,CAAC,IAAI,CAAC,aAAa,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE;QACvC,IAAI;YACA,MAAM,IAAI,GAAG,GAAG,CAAC,IAA4B,CAAC;YAC9C,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;gBACzB,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,2BAA2B,EAAE,CAAC,CAAC;gBAC7D,OAAO;aACV;YAED,MAAM,QAAQ,GAAG,MAAM,IAAA,uBAAY,EAAC,MAAM,CAAC,CAAC;YAC5C,MAAM,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YAE3D,MAAM,WAAW,GAAgB;gBAC7B,EAAE,EAAE,IAAI,CAAC,EAAE,IAAI,IAAA,SAAM,GAAE;gBACvB,GAAG,EAAE,IAAI,CAAC,GAAG;gBACb,IAAI,EAAE,IAAI,CAAC,IAAI;gBACf,WAAW,EAAE,IAAI,CAAC,WAAW,IAAI,EAAE;gBACnC,OAAO,EAAE,IAAI,CAAC,OAAO;gBACrB,OAAO,EAAE,IAAI,CAAC,OAAO,IAAI,IAAI;gBAC7B,QAAQ,EAAE,IAAI,CAAC,QAAQ,IAAI,KAAK;gBAChC,KAAK,EAAE,IAAI,CAAC,KAAK;gBACjB,UAAU,EAAE,IAAI,CAAC,UAAU;gBAC3B,YAAY,EAAE,IAAI,CAAC,YAAY;gBAC/B,MAAM,EAAE,IAAI,CAAC,MAAM;gBACnB,SAAS,EAAE,IAAI,CAAC,SAAS;aAC5B,CAAC;YAEF,sDAAsD;YACtD,MAAM,GAAG,GAAG,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,WAAW,CAAC,EAAE,CAAC,CAAC;YAC3D,IAAI,GAAG,KAAK,CAAC,CAAC,EAAE;gBACZ,+DAA+D;gBAC/D,IAAI,CAAC,WAAW,CAAC,KAAK,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE;oBACzC,WAAW,CAAC,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC;iBACzC;gBACD,IAAI,CAAC,WAAW,CAAC,UAAU,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,UAAU,EAAE;oBACnD,WAAW,CAAC,UAAU,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,UAAU,CAAC;iBACnD;gBACD,wDAAwD;gBACxD,IAAI,CAAC,WAAW,CAAC,SAAS,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,SAAS,EAAE;oBACjD,WAAW,CAAC,SAAS,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,SAAS,CAAC;iBACjD;gBACD,MAAM,CAAC,GAAG,CAAC,GAAG,WAAW,CAAC;aAC7B;iBAAM;gBACH,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;aAC5B;YAED,MAAM,IAAA,uBAAY,EAAC,MAAM,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC;YAEvC,0CAA0C;YAC1C,eAAe,CAAC,WAAW,CAAC,CAAC;YAE7B,GAAG,CAAC,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC,CAAC,CAAC;SACxC;QAAC,OAAO,GAAY,EAAE;YACnB,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YACnB,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAG,GAAa,CAAC,OAAO,EAAE,CAAC,CAAC;SAC3D;IACL,CAAC,CAAC,CAAC;IAEH,oEAAoE;IACpE,GAAG,CAAC,KAAK,CAAC,iBAAiB,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE;QAC5C,IAAI;YACA,MAAM,EAAE,EAAE,EAAE,GAAG,GAAG,CAAC,MAAM,CAAC;YAC1B,MAAM,QAAQ,GAAG,MAAM,IAAA,uBAAY,EAAC,MAAM,CAAC,CAAC;YAC5C,MAAM,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YAC3D,MAAM,GAAG,GAAG,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;YAC/C,IAAI,GAAG,KAAK,CAAC,CAAC,EAAE;gBACZ,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,UAAU,EAAE,aAAa,EAAE,CAAC,CAAC;gBAC3D,OAAO;aACV;YAED,MAAM,IAAI,GAAG,GAAG,CAAC,IAA4B,CAAC;YAC9C,IAAI,OAAO,IAAI,CAAC,OAAO,KAAK,SAAS;gBAAE,MAAM,CAAC,GAAG,CAAC,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;YAC1E,IAAI,OAAO,IAAI,CAAC,IAAI,KAAK,QAAQ;gBAAE,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;YAChE,IAAI,OAAO,IAAI,CAAC,WAAW,KAAK,QAAQ;gBAAE,MAAM,CAAC,GAAG,CAAC,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC;YAErF,MAAM,IAAA,uBAAY,EAAC,MAAM,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC;YAEvC,+CAA+C;YAC/C,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,QAAQ,KAAK,UAAU,EAAE;gBACrC,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE;oBACrB,eAAe,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;iBAChC;qBAAM;oBACH,IAAA,wBAAe,EAAC,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;iBACnC;aACJ;YAED,GAAG,CAAC,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;SACxC;QAAC,OAAO,GAAY,EAAE;YACnB,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YACnB,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAG,GAAa,CAAC,OAAO,EAAE,CAAC,CAAC;SAC3D;IACL,CAAC,CAAC,CAAC;IAEH,wCAAwC;IACxC,GAAG,CAAC,MAAM,CAAC,iBAAiB,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE;QAC7C,IAAI;YACA,MAAM,EAAE,EAAE,EAAE,GAAG,GAAG,CAAC,MAAM,CAAC;YAC1B,MAAM,QAAQ,GAAG,MAAM,IAAA,uBAAY,EAAC,MAAM,CAAC,CAAC;YAC5C,MAAM,KAAK,GAAG,CAAC,QAAQ,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;YAE7D,yBAAyB;YACzB,IAAI,KAAK,EAAE,QAAQ,KAAK,UAAU,EAAE;gBAChC,IAAA,wBAAe,EAAC,EAAE,CAAC,CAAC;aACvB;YAED,MAAM,MAAM,GAAG,CAAC,QAAQ,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;YAChE,MAAM,IAAA,uBAAY,EAAC,MAAM,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC;YACvC,GAAG,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;SAC/B;QAAC,OAAO,GAAY,EAAE;YACnB,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YACnB,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAG,GAAa,CAAC,OAAO,EAAE,CAAC,CAAC;SAC3D;IACL,CAAC,CAAC,CAAC;IAEH,uEAAuE;IACvE,GAAG,CAAC,IAAI,CAAC,yBAAyB,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE;QACnD,IAAI;YACA,MAAM,EAAE,EAAE,EAAE,GAAG,GAAG,CAAC,MAAM,CAAC;YAC1B,MAAM,QAAQ,GAAG,MAAM,IAAA,uBAAY,EAAC,MAAM,CAAC,CAAC;YAC5C,MAAM,KAAK,GAAG,CAAC,QAAQ,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;YAC7D,IAAI,CAAC,KAAK,EAAE;gBACR,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,UAAU,EAAE,aAAa,EAAE,CAAC,CAAC;gBAC3D,OAAO;aACV;YACD,IAAI,KAAK,CAAC,QAAQ,KAAK,UAAU,EAAE;gBAC/B,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,oDAAoD,EAAE,CAAC,CAAC;gBACtF,OAAO;aACV;YACD,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE;gBACd,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,+BAA+B,EAAE,CAAC,CAAC;gBACjE,OAAO;aACV;YAED,MAAM,IAAA,qBAAY,EAAC,EAAE,EAAE,EAAE,KAAK,CAAC,EAAE,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,GAAG,EAAE,KAAK,CAAC,GAAG,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,SAAS,EAAE,KAAK,CAAC,SAAS,EAAE,WAAW,EAAE,UAAU,EAAE,WAAW,EAAE,CAAC,CAAC;YAC7J,MAAM,MAAM,GAAG,IAAA,uBAAc,EAAC,KAAK,CAAC,EAAE,CAAC,CAAC;YACxC,GAAG,CAAC,IAAI,CAAC,EAAE,SAAS,EAAE,MAAM,CAAC,SAAS,EAAE,aAAa,EAAE,MAAM,CAAC,aAAa,EAAE,CAAC,CAAC;SAClF;QAAC,OAAO,GAAY,EAAE;YACnB,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YACnB,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAG,GAAa,CAAC,OAAO,EAAE,CAAC,CAAC;SAC3D;IACL,CAAC,CAAC,CAAC;IAEH,yDAAyD;IACzD,GAAG,CAAC,IAAI,CAAC,4BAA4B,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE;QACtD,IAAI;YACA,MAAM,EAAE,EAAE,EAAE,GAAG,GAAG,CAAC,MAAM,CAAC;YAC1B,IAAA,wBAAe,EAAC,EAAE,CAAC,CAAC;YACpB,GAAG,CAAC,IAAI,CAAC,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC,CAAC;SACpC;QAAC,OAAO,GAAY,EAAE;YACnB,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YACnB,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAG,GAAa,CAAC,OAAO,EAAE,CAAC,CAAC;SAC3D;IACL,CAAC,CAAC,CAAC;IAEH,6EAA6E;IAC7E,GAAG,CAAC,IAAI,CAAC,sBAAsB,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE;QAChD,IAAI;YACA,MAAM,EAAE,EAAE,EAAE,GAAG,GAAG,CAAC,MAAM,CAAC;YAC1B,MAAM,EAAE,OAAO,EAAE,WAAW,EAAE,GAAG,GAAG,CAAC,IAAI,CAAC;YAC1C,IAAI,CAAC,OAAO,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE;gBACzC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,qBAAqB,EAAE,CAAC,CAAC;gBACvD,OAAO;aACV;YAED,MAAM,QAAQ,GAAG,MAAM,IAAA,uBAAY,EAAC,MAAM,CAAC,CAAC;YAC5C,MAAM,KAAK,GAAG,CAAC,QAAQ,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;YAC7D,IAAI,CAAC,KAAK,EAAE;gBACR,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,UAAU,EAAE,aAAa,EAAE,CAAC,CAAC;gBAC3D,OAAO;aACV;YAED,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE;gBAChB,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,UAAU,KAAK,CAAC,IAAI,eAAe,EAAE,CAAC,CAAC;gBACrE,OAAO;aACV;YAED,mCAAmC;YACnC,MAAM,QAAQ,GAAG,KAAK,CAAC,QAAQ,KAAK,UAAU,CAAC,CAAC,CAAC,yBAAgB,CAAC,CAAC,CAAC,oBAAW,CAAC;YAChF,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,IAAI,CAAC,KAAK,EAAE,OAAO,EAAE,WAAW,CAAC,CAAC;YAChE,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;SACpB;QAAC,OAAO,GAAY,EAAE;YACnB,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YACnB,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAG,GAAa,CAAC,OAAO,EAAE,CAAC,CAAC;SAC3D;IACL,CAAC,CAAC,CAAC;IAEH,0EAA0E;IAC1E,mEAAmE;IACnE,0EAA0E;IAC1E,KAAK,UAAU,SAAS,CACpB,EAAU,EACV,GAA+B,EAC/B,EAAkE;QAElE,MAAM,QAAQ,GAAG,MAAM,IAAA,uBAAY,EAAC,MAAM,CAAC,CAAC;QAC5C,MAAM,KAAK,GAAG,CAAC,QAAQ,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;QAC7D,IAAI,CAAC,KAAK,EAAE;YACR,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,UAAU,EAAE,aAAa,EAAE,CAAC,CAAC;YAC3D,OAAO;SACV;QACD,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE;YAChB,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,UAAU,KAAK,CAAC,IAAI,eAAe,EAAE,CAAC,CAAC;YACrE,OAAO;SACV;QACD,MAAM,QAAQ,GAAkB,KAAK,CAAC,QAAQ,KAAK,UAAU,CAAC,CAAC,CAAC,yBAAgB,CAAC,CAAC,CAAC,oBAAW,CAAC;QAC/F,MAAM,EAAE,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;IAC9B,CAAC;IAED,0EAA0E;IAC1E,kCAAkC;IAClC,0EAA0E;IAE1E,uDAAuD;IACvD,GAAG,CAAC,IAAI,CAAC,8BAA8B,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE;QACxD,IAAI;YACA,MAAM,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,EAAE,GAAG,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE;gBAC1D,IAAI,CAAC,QAAQ,CAAC,UAAU,EAAE;oBACtB,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,gDAAgD,EAAE,CAAC,CAAC;oBAClF,OAAO;iBACV;gBACD,MAAM,QAAQ,GAAG,MAAM,QAAQ,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;gBAClD,GAAG,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC;YAC3B,CAAC,CAAC,CAAC;SACN;QAAC,OAAO,GAAY,EAAE;YACnB,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YACnB,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAG,GAAa,CAAC,OAAO,EAAE,CAAC,CAAC;SAC3D;IACL,CAAC,CAAC,CAAC;IAEH,yDAAyD;IACzD,GAAG,CAAC,IAAI,CAAC,4BAA4B,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE;QACtD,IAAI;YACA,MAAM,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,EAAE,GAAG,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE;gBAC1D,IAAI,CAAC,QAAQ,CAAC,SAAS,EAAE;oBACrB,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,gDAAgD,EAAE,CAAC,CAAC;oBAClF,OAAO;iBACV;gBACD,MAAM,QAAQ,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;gBAChC,GAAG,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;YAC3B,CAAC,CAAC,CAAC;SACN;QAAC,OAAO,GAAY,EAAE;YACnB,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YACnB,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAG,GAAa,CAAC,OAAO,EAAE,CAAC,CAAC;SAC3D;IACL,CAAC,CAAC,CAAC;IAEH,6DAA6D;IAC7D,GAAG,CAAC,IAAI,CAAC,4BAA4B,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE;QACtD,IAAI;YACA,MAAM,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,EAAE,GAAG,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE;gBAC1D,IAAI,CAAC,QAAQ,CAAC,YAAY,EAAE;oBACxB,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,gDAAgD,EAAE,CAAC,CAAC;oBAClF,OAAO;iBACV;gBACD,MAAM,QAAQ,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;gBACnC,GAAG,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;YAC3B,CAAC,CAAC,CAAC;SACN;QAAC,OAAO,GAAY,EAAE;YACnB,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YACnB,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAG,GAAa,CAAC,OAAO,EAAE,CAAC,CAAC;SAC3D;IACL,CAAC,CAAC,CAAC;IAEH,uDAAuD;IACvD,GAAG,CAAC,IAAI,CAAC,wBAAwB,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE;QAClD,IAAI;YACA,MAAM,EAAE,EAAE,EAAE,GAAG,GAAG,CAAC,MAAM,CAAC;YAC1B,MAAM,EAAE,OAAO,EAAE,WAAW,EAAE,GAAG,GAAG,CAAC,IAAI,CAAC;YAC1C,IAAI,CAAC,OAAO,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE;gBACzC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,qBAAqB,EAAE,CAAC,CAAC;gBACvD,OAAO;aACV;YAED,MAAM,QAAQ,GAAG,MAAM,IAAA,uBAAY,EAAC,MAAM,CAAC,CAAC;YAC5C,MAAM,KAAK,GAAG,CAAC,QAAQ,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;YAC7D,IAAI,CAAC,KAAK,EAAE;gBACR,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,UAAU,EAAE,aAAa,EAAE,CAAC,CAAC;gBAC3D,OAAO;aACV;YAED,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE;gBAChB,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,UAAU,KAAK,CAAC,IAAI,eAAe,EAAE,CAAC,CAAC;gBACrE,OAAO;aACV;YAED,qBAAqB;YACrB,GAAG,CAAC,SAAS,CAAC,cAAc,EAAE,mBAAmB,CAAC,CAAC;YACnD,GAAG,CAAC,SAAS,CAAC,eAAe,EAAE,UAAU,CAAC,CAAC;YAC3C,GAAG,CAAC,SAAS,CAAC,YAAY,EAAE,YAAY,CAAC,CAAC;YAC1C,GAAG,CAAC,YAAY,EAAE,CAAC;YAEnB,sDAAsD;YACtD,MAAM,QAAQ,GAAG,KAAK,CAAC,QAAQ,KAAK,UAAU,CAAC,CAAC,CAAC,yBAAgB,CAAC,CAAC,CAAC,oBAAW,CAAC;YAEhF,IAAI,KAAK,EAAE,MAAM,KAAK,IAAI,QAAQ,CAAC,UAAU,CAAC,KAAK,EAAE,OAAO,EAAE,WAAW,CAAC,EAAE;gBACxE,GAAG,CAAC,KAAK,CAAC,SAAS,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;gBAChD,IAAI,KAAK,CAAC,IAAI,KAAK,MAAM,IAAI,KAAK,CAAC,IAAI,KAAK,OAAO;oBAAE,MAAM;aAC9D;YAED,GAAG,CAAC,KAAK,CAAC,kBAAkB,CAAC,CAAC;YAC9B,GAAG,CAAC,GAAG,EAAE,CAAC;SACb;QAAC,OAAO,GAAY,EAAE;YACnB,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YACnB,+CAA+C;YAC/C,IAAI,GAAG,CAAC,WAAW,EAAE;gBACjB,GAAG,CAAC,KAAK,CAAC,SAAS,IAAI,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAG,GAAa,CAAC,OAAO,EAAE,CAAC,MAAM,CAAC,CAAC;gBAC1F,GAAG,CAAC,GAAG,EAAE,CAAC;aACb;iBAAM;gBACH,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAG,GAAa,CAAC,OAAO,EAAE,CAAC,CAAC;aAC3D;SACJ;IACL,CAAC,CAAC,CAAC;AACP,CAAC;AAxZD,wCAwZC"}
@@ -0,0 +1,5 @@
1
+ import { Application } from 'express';
2
+ import { SynthOSConfig } from "../init";
3
+ import { Customizer } from "../customizer";
4
+ export declare function useApiRoutes(config: SynthOSConfig, app: Application, customizer?: Customizer): void;
5
+ //# sourceMappingURL=useApiRoutes.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"useApiRoutes.d.ts","sourceRoot":"","sources":["../../src/service/useApiRoutes.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAEtC,OAAO,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AASxC,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAkC3C,wBAAgB,YAAY,CAAC,MAAM,EAAE,aAAa,EAAE,GAAG,EAAE,WAAW,EAAE,UAAU,CAAC,EAAE,UAAU,GAAG,IAAI,CA05BnG"}
1
+ {"version":3,"file":"useApiRoutes.d.ts","sourceRoot":"","sources":["../../src/service/useApiRoutes.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAEtC,OAAO,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AASxC,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAkC3C,wBAAgB,YAAY,CAAC,MAAM,EAAE,aAAa,EAAE,GAAG,EAAE,WAAW,EAAE,UAAU,CAAC,EAAE,UAAU,GAAG,IAAI,CA26BnG"}
@@ -5,7 +5,6 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
6
  exports.useApiRoutes = void 0;
7
7
  const path_1 = __importDefault(require("path"));
8
- const promises_1 = __importDefault(require("fs/promises"));
9
8
  const adm_zip_1 = __importDefault(require("adm-zip"));
10
9
  const pages_1 = require("../pages");
11
10
  const files_1 = require("../files");
@@ -32,9 +31,10 @@ const SERVICE_REGISTRY = [
32
31
  }
33
32
  ];
34
33
  function useApiRoutes(config, app, customizer) {
34
+ const sp = config.storageProvider;
35
35
  // List pages
36
36
  app.get('/api/pages', async (req, res) => {
37
- const pages = await (0, pages_1.listPages)(config.pagesFolder, config.requiredPagesFolders);
37
+ const pages = await (0, pages_1.listPages)(config, config.requiredPagesFolders);
38
38
  res.json(pages);
39
39
  });
40
40
  // Import a page from a zip file
@@ -75,12 +75,12 @@ function useApiRoutes(config, app, customizer) {
75
75
  // Auto-append _1, _2, etc. on name conflicts
76
76
  let finalName = pageName;
77
77
  let suffix = 0;
78
- while (await (0, files_1.checkIfExists)(path_1.default.join(config.pagesFolder, 'pages', finalName))) {
78
+ while (await sp.checkIfExists(path_1.default.join(config.pagesFolder, 'pages', finalName))) {
79
79
  suffix++;
80
80
  finalName = `${pageName}_${suffix}`;
81
81
  }
82
82
  const targetDir = path_1.default.join(config.pagesFolder, 'pages', finalName);
83
- await (0, files_1.ensureFolderExists)(targetDir);
83
+ await sp.ensureFolderExists(targetDir);
84
84
  // Extract entries with path traversal protection
85
85
  for (const entry of entries) {
86
86
  if (entry.isDirectory)
@@ -94,12 +94,12 @@ function useApiRoutes(config, app, customizer) {
94
94
  // Path traversal — skip this entry
95
95
  continue;
96
96
  }
97
- await (0, files_1.ensureFolderExists)(path_1.default.dirname(resolvedPath));
98
- await promises_1.default.writeFile(resolvedPath, entry.getData());
97
+ await sp.ensureFolderExists(path_1.default.dirname(resolvedPath));
98
+ await sp.saveBuffer(resolvedPath, entry.getData());
99
99
  }
100
100
  // Update metadata: set createdDate and lastModified to now
101
101
  const now = new Date().toISOString();
102
- const existingMeta = await (0, pages_1.loadPageMetadata)(config.pagesFolder, finalName);
102
+ const existingMeta = await (0, pages_1.loadPageMetadata)(config, finalName);
103
103
  const metadata = {
104
104
  title: existingMeta?.title ?? '',
105
105
  categories: existingMeta?.categories ?? [],
@@ -110,7 +110,7 @@ function useApiRoutes(config, app, customizer) {
110
110
  pageVersion: existingMeta?.pageVersion ?? pages_1.PAGE_VERSION,
111
111
  mode: existingMeta?.mode ?? 'unlocked',
112
112
  };
113
- await (0, pages_1.savePageMetadata)(config.pagesFolder, finalName, metadata);
113
+ await (0, pages_1.savePageMetadata)(config, finalName, metadata);
114
114
  res.status(201).json({ name: finalName, title: metadata.title });
115
115
  }
116
116
  catch (err) {
@@ -122,7 +122,7 @@ function useApiRoutes(config, app, customizer) {
122
122
  app.get('/api/pages/:name', async (req, res) => {
123
123
  try {
124
124
  const { name } = req.params;
125
- const metadata = await (0, pages_1.loadPageMetadata)(config.pagesFolder, name, config.requiredPagesFolders);
125
+ const metadata = await (0, pages_1.loadPageMetadata)(config, name, config.requiredPagesFolders);
126
126
  if (metadata) {
127
127
  res.json(metadata);
128
128
  }
@@ -172,7 +172,7 @@ function useApiRoutes(config, app, customizer) {
172
172
  return;
173
173
  }
174
174
  // Load existing metadata (or defaults)
175
- const existing = await (0, pages_1.loadPageMetadata)(config.pagesFolder, name, config.requiredPagesFolders);
175
+ const existing = await (0, pages_1.loadPageMetadata)(config, name, config.requiredPagesFolders);
176
176
  const metadata = {
177
177
  title: existing?.title ?? '',
178
178
  categories: existing?.categories ?? [],
@@ -199,19 +199,22 @@ function useApiRoutes(config, app, customizer) {
199
199
  // Promote required page to user folder if being unlocked/designed
200
200
  if (metadata.mode !== 'locked') {
201
201
  const userPagePath = path_1.default.join(config.pagesFolder, 'pages', name, 'page.html');
202
- if (!(await (0, files_1.checkIfExists)(userPagePath))) {
202
+ if (!(await sp.checkIfExists(userPagePath))) {
203
+ // Read from required pages (package content, always local fs)
203
204
  let html;
204
205
  for (const folder of config.requiredPagesFolders) {
205
- html = await (0, pages_1.loadPageState)(folder, name);
206
- if (html)
206
+ const candidate = path_1.default.join(folder, name, 'page.html');
207
+ if (await (0, files_1.checkIfExists)(candidate)) {
208
+ html = await (0, files_1.loadFile)(candidate);
207
209
  break;
210
+ }
208
211
  }
209
212
  if (html) {
210
- await (0, pages_1.savePageState)(config.pagesFolder, name, html);
213
+ await (0, pages_1.savePageState)(config, name, html);
211
214
  }
212
215
  }
213
216
  }
214
- await (0, pages_1.savePageMetadata)(config.pagesFolder, name, metadata);
217
+ await (0, pages_1.savePageMetadata)(config, name, metadata);
215
218
  res.json(metadata);
216
219
  }
217
220
  catch (err) {
@@ -229,7 +232,7 @@ function useApiRoutes(config, app, customizer) {
229
232
  return;
230
233
  }
231
234
  // Load existing metadata (user override → fallback .json → defaults)
232
- let metadata = await (0, pages_1.loadPageMetadata)(config.pagesFolder, name, config.requiredPagesFolders);
235
+ let metadata = await (0, pages_1.loadPageMetadata)(config, name, config.requiredPagesFolders);
233
236
  if (!metadata) {
234
237
  metadata = {
235
238
  title: '',
@@ -243,7 +246,7 @@ function useApiRoutes(config, app, customizer) {
243
246
  };
244
247
  }
245
248
  metadata.pinned = pinned;
246
- await (0, pages_1.savePageMetadata)(config.pagesFolder, name, metadata);
249
+ await (0, pages_1.savePageMetadata)(config, name, metadata);
247
250
  res.json(metadata);
248
251
  }
249
252
  catch (err) {
@@ -263,12 +266,12 @@ function useApiRoutes(config, app, customizer) {
263
266
  // Check if page exists (folder-based or legacy flat file)
264
267
  const folderPath = path_1.default.join(config.pagesFolder, 'pages', name, 'page.html');
265
268
  const flatPath = path_1.default.join(config.pagesFolder, `${name}.html`);
266
- const exists = await (0, files_1.checkIfExists)(folderPath) || await (0, files_1.checkIfExists)(flatPath);
269
+ const exists = await sp.checkIfExists(folderPath) || await sp.checkIfExists(flatPath);
267
270
  if (!exists) {
268
271
  res.status(404).json({ error: `Page "${name}" not found` });
269
272
  return;
270
273
  }
271
- await (0, pages_1.deletePage)(config.pagesFolder, name);
274
+ await (0, pages_1.deletePage)(config, name);
272
275
  res.json({ deleted: true });
273
276
  }
274
277
  catch (err) {
@@ -283,7 +286,7 @@ function useApiRoutes(config, app, customizer) {
283
286
  // Resolve page folder: user pages first, then required pages
284
287
  let pageFolder;
285
288
  const userFolder = path_1.default.join(config.pagesFolder, 'pages', name);
286
- if (await (0, files_1.checkIfExists)(path_1.default.join(userFolder, 'page.html'))) {
289
+ if (await sp.checkIfExists(path_1.default.join(userFolder, 'page.html'))) {
287
290
  pageFolder = userFolder;
288
291
  }
289
292
  else {
@@ -301,13 +304,22 @@ function useApiRoutes(config, app, customizer) {
301
304
  }
302
305
  // List subdirectories, filtering out non-table entries
303
306
  const EXCLUDED = new Set(['files']);
304
- const subdirs = await (0, files_1.listFolders)(pageFolder);
307
+ // Use provider for user folder, local fs for required pages
308
+ const isUserFolder = pageFolder === userFolder;
309
+ const subdirs = isUserFolder
310
+ ? await sp.listFolders(pageFolder)
311
+ : await (0, files_1.listFolders)(pageFolder);
305
312
  const tables = subdirs.filter(d => !EXCLUDED.has(d));
306
313
  // Check if files/ exists and has entries
307
314
  const filesDir = path_1.default.join(pageFolder, 'files');
308
315
  let hasFiles = false;
309
- if (await (0, files_1.checkIfExists)(filesDir)) {
310
- const entries = await promises_1.default.readdir(filesDir);
316
+ const filesDirExists = isUserFolder
317
+ ? await sp.checkIfExists(filesDir)
318
+ : await (0, files_1.checkIfExists)(filesDir);
319
+ if (filesDirExists) {
320
+ const entries = isUserFolder
321
+ ? await sp.listFiles(filesDir)
322
+ : await (0, files_1.listFiles)(filesDir);
311
323
  hasFiles = entries.length > 0;
312
324
  }
313
325
  res.json({ tables, hasFiles });
@@ -347,8 +359,8 @@ function useApiRoutes(config, app, customizer) {
347
359
  break;
348
360
  }
349
361
  }
350
- const sourceExists = await (0, files_1.checkIfExists)(sourceFolderPath)
351
- || await (0, files_1.checkIfExists)(sourceFlatPath)
362
+ const sourceExists = await sp.checkIfExists(sourceFolderPath)
363
+ || await sp.checkIfExists(sourceFlatPath)
352
364
  || !!sourceRequiredPath;
353
365
  if (!sourceExists) {
354
366
  res.status(404).json({ error: `Source page "${sourceName}" not found` });
@@ -357,16 +369,16 @@ function useApiRoutes(config, app, customizer) {
357
369
  // Check target doesn't already exist
358
370
  const targetFolderPath = path_1.default.join(config.pagesFolder, 'pages', targetName, 'page.html');
359
371
  const targetFlatPath = path_1.default.join(config.pagesFolder, `${targetName}.html`);
360
- if (await (0, files_1.checkIfExists)(targetFolderPath) || await (0, files_1.checkIfExists)(targetFlatPath)) {
372
+ if (await sp.checkIfExists(targetFolderPath) || await sp.checkIfExists(targetFlatPath)) {
361
373
  res.status(409).json({ error: `Page "${targetName}" already exists` });
362
374
  return;
363
375
  }
364
- await (0, pages_1.copyPage)(config.pagesFolder, sourceName, targetName, typeof title === 'string' ? title : '', Array.isArray(categories) ? categories : [], config.requiredPagesFolders, {
376
+ await (0, pages_1.copyPage)(config, sourceName, targetName, typeof title === 'string' ? title : '', Array.isArray(categories) ? categories : [], config.requiredPagesFolders, {
365
377
  copyTables: copyTables === true,
366
378
  copyFiles: copyFiles !== false, // default true
367
379
  });
368
380
  // Return the new page metadata
369
- const metadata = await (0, pages_1.loadPageMetadata)(config.pagesFolder, targetName);
381
+ const metadata = await (0, pages_1.loadPageMetadata)(config, targetName);
370
382
  res.status(201).json({ name: targetName, ...metadata });
371
383
  }
372
384
  catch (err) {
@@ -376,7 +388,7 @@ function useApiRoutes(config, app, customizer) {
376
388
  });
377
389
  // Define a route to return settings
378
390
  app.get('/api/settings', async (req, res) => {
379
- const settings = await (0, settings_1.loadSettings)(config.pagesFolder);
391
+ const settings = await (0, settings_1.loadSettings)(config);
380
392
  const providers = createCompletePrompt_1.PROVIDERS.map(p => ({ name: p.name, builderModels: p.builderModels, chatModels: p.chatModels }));
381
393
  res.json({ ...settings, providers });
382
394
  });
@@ -395,7 +407,7 @@ function useApiRoutes(config, app, customizer) {
395
407
  }
396
408
  }
397
409
  // Save settings
398
- await (0, settings_1.saveSettings)(config.pagesFolder, settings);
410
+ await (0, settings_1.saveSettings)(config, settings);
399
411
  res.redirect('/builder');
400
412
  }
401
413
  catch (err) {
@@ -405,7 +417,7 @@ function useApiRoutes(config, app, customizer) {
405
417
  });
406
418
  // Define a route to generate an image
407
419
  app.post('/api/generate/image', async (req, res) => {
408
- await (0, requiresSettings_1.requiresSettings)(res, config.pagesFolder, async (settings) => {
420
+ await (0, requiresSettings_1.requiresSettings)(res, config, async (settings) => {
409
421
  const { prompt, shape, style } = req.body;
410
422
  const builder = (0, settings_1.getModelEntry)(settings, 'builder');
411
423
  const { configuration, imageQuality, provider } = builder;
@@ -422,9 +434,9 @@ function useApiRoutes(config, app, customizer) {
422
434
  });
423
435
  // Define a route to generate a completion using chain-of-thought
424
436
  app.post('/api/generate/completion', async (req, res) => {
425
- await (0, requiresSettings_1.requiresSettings)(res, config.pagesFolder, async (settings) => {
437
+ await (0, requiresSettings_1.requiresSettings)(res, config, async (settings) => {
426
438
  const { prompt, temperature } = req.body;
427
- const completePrompt = await (0, createCompletePrompt_1.createCompletePrompt)(config.pagesFolder, 'chat', req.body.model);
439
+ const completePrompt = await (0, createCompletePrompt_1.createCompletePrompt)(config, 'chat', req.body.model);
428
440
  const response = await (0, models_1.chainOfThought)({ question: prompt, temperature, completePrompt });
429
441
  if (response.completed) {
430
442
  res.json(response.value ?? {});
@@ -438,9 +450,9 @@ function useApiRoutes(config, app, customizer) {
438
450
  // Brainstorm endpoint
439
451
  if (!customizer || customizer.isEnabled('brainstorm'))
440
452
  app.post('/api/brainstorm', async (req, res) => {
441
- await (0, requiresSettings_1.requiresSettings)(res, config.pagesFolder, async (settings) => {
453
+ await (0, requiresSettings_1.requiresSettings)(res, config, async (settings) => {
442
454
  const { context, messages } = req.body;
443
- const completePrompt = await (0, createCompletePrompt_1.createCompletePrompt)(config.pagesFolder, 'chat');
455
+ const completePrompt = await (0, createCompletePrompt_1.createCompletePrompt)(config, 'chat');
444
456
  const productName = customizer?.productName ?? 'SynthOS';
445
457
  const system = {
446
458
  role: 'system',
@@ -509,11 +521,10 @@ Return ONLY the JSON object.`
509
521
  // Define a route for running configured scripts
510
522
  if (!customizer || customizer.isEnabled('scripts'))
511
523
  app.post('/api/scripts/:id', async (req, res) => {
512
- await (0, requiresSettings_1.requiresSettings)(res, config.pagesFolder, async (settings) => {
524
+ await (0, requiresSettings_1.requiresSettings)(res, config, async (settings) => {
513
525
  const { id } = req.params;
514
- const pagesFolder = config.pagesFolder;
515
526
  const scriptId = id;
516
- const response = await (0, scripts_1.executeScript)({ pagesFolder, scriptId, variables: req.body });
527
+ const response = await (0, scripts_1.executeScript)({ pagesFolder: config.pagesFolder, scriptId, variables: req.body });
517
528
  if (response.completed) {
518
529
  // Return the response as text
519
530
  const value = (response.value?.output ?? (response.value?.errors ?? []).join('\n')).trim();
@@ -529,7 +540,7 @@ Return ONLY the JSON object.`
529
540
  // Return theme info as a self-executing JS script
530
541
  app.get('/api/theme-info.js', async (req, res) => {
531
542
  try {
532
- const settings = await (0, settings_1.loadSettings)(config.pagesFolder);
543
+ const settings = await (0, settings_1.loadSettings)(config);
533
544
  const themeName = settings.theme ?? 'nebula-dusk';
534
545
  const info = await (0, themes_1.loadThemeInfo)(themeName, config);
535
546
  if (!info) {
@@ -559,12 +570,13 @@ Return ONLY the JSON object.`
559
570
  res.status(400).send('// Missing page query parameter');
560
571
  return;
561
572
  }
562
- const metadata = await (0, pages_1.loadPageMetadata)(config.pagesFolder, page, config.requiredPagesFolders);
573
+ const metadata = await (0, pages_1.loadPageMetadata)(config, page, config.requiredPagesFolders);
563
574
  const mode = metadata?.mode ?? 'unlocked';
564
575
  const title = metadata?.title ?? '';
565
576
  const categories = metadata?.categories ?? [];
566
577
  const isRequiredPage = config.requiredPages.includes(page);
567
- const info = JSON.stringify({ name: page, mode, latestPageVersion: pages_1.PAGE_VERSION, title, categories, isRequiredPage });
578
+ const productName = customizer?.productName ?? 'SynthOS';
579
+ const info = JSON.stringify({ name: page, mode, latestPageVersion: pages_1.PAGE_VERSION, title, categories, isRequiredPage, productName });
568
580
  const js = [
569
581
  `window.pageInfo=${info};`,
570
582
  `if(window.pageInfo.mode==="locked"){`,
@@ -585,7 +597,7 @@ Return ONLY the JSON object.`
585
597
  // Return the current theme as CSS
586
598
  app.get('/api/theme.css', async (req, res) => {
587
599
  try {
588
- const settings = await (0, settings_1.loadSettings)(config.pagesFolder);
600
+ const settings = await (0, settings_1.loadSettings)(config);
589
601
  const themeName = settings.theme ?? 'nebula-dusk';
590
602
  const css = await (0, themes_1.loadTheme)(themeName, config);
591
603
  if (!css) {
@@ -667,7 +679,7 @@ Return ONLY the JSON object.`
667
679
  // Return user's configured services (API keys masked)
668
680
  app.get('/api/services', async (_req, res) => {
669
681
  try {
670
- const settings = await (0, settings_1.loadSettings)(config.pagesFolder);
682
+ const settings = await (0, settings_1.loadSettings)(config);
671
683
  const services = settings.services ?? {};
672
684
  const masked = {};
673
685
  for (const [id, cfg] of Object.entries(services)) {
@@ -687,7 +699,7 @@ Return ONLY the JSON object.`
687
699
  app.post('/api/services', async (req, res) => {
688
700
  try {
689
701
  const incoming = req.body;
690
- const settings = await (0, settings_1.loadSettings)(config.pagesFolder);
702
+ const settings = await (0, settings_1.loadSettings)(config);
691
703
  const existing = settings.services ?? {};
692
704
  // Build merged config — empty apiKey means "keep existing"
693
705
  const merged = {};
@@ -707,7 +719,7 @@ Return ONLY the JSON object.`
707
719
  }
708
720
  }
709
721
  }
710
- await (0, settings_1.saveSettings)(config.pagesFolder, { services: merged });
722
+ await (0, settings_1.saveSettings)(config, { services: merged });
711
723
  res.json({ saved: true });
712
724
  }
713
725
  catch (err) {
@@ -726,7 +738,7 @@ Return ONLY the JSON object.`
726
738
  res.status(400).json({ error: 'query is required' });
727
739
  return;
728
740
  }
729
- const settings = await (0, settings_1.loadSettings)(config.pagesFolder);
741
+ const settings = await (0, settings_1.loadSettings)(config);
730
742
  const braveConfig = settings.connectors?.['brave-search'] ?? settings.services?.['brave-search'];
731
743
  if (!braveConfig || !braveConfig.enabled || !braveConfig.apiKey) {
732
744
  res.status(400).json({ error: 'Brave Search is not configured or not enabled. Add your API key in Settings > Services.' });
@@ -769,7 +781,7 @@ Return ONLY the JSON object.`
769
781
  try {
770
782
  const { name } = req.params;
771
783
  // Load current metadata
772
- const metadata = await (0, pages_1.loadPageMetadata)(config.pagesFolder, name, config.requiredPagesFolders);
784
+ const metadata = await (0, pages_1.loadPageMetadata)(config, name, config.requiredPagesFolders);
773
785
  if (!metadata) {
774
786
  res.status(404).json({ error: `Page "${name}" not found` });
775
787
  return;
@@ -786,29 +798,31 @@ Return ONLY the JSON object.`
786
798
  return;
787
799
  }
788
800
  // Run LLM-based migration
789
- const completePrompt = await (0, createCompletePrompt_1.createCompletePrompt)(config.pagesFolder, 'builder');
801
+ const completePrompt = await (0, createCompletePrompt_1.createCompletePrompt)(config, 'builder');
790
802
  const migratedHtml = await (0, migrations_1.migratePage)(html, currentVersion, pages_1.PAGE_VERSION, completePrompt);
791
803
  // Save upgraded HTML to v2 folder structure
792
- await (0, pages_1.savePageState)(config.pagesFolder, name, migratedHtml);
804
+ await (0, pages_1.savePageState)(config, name, migratedHtml);
793
805
  // Backup original page to .migrated/ before overwriting
794
806
  const migratedFolder = path_1.default.join(config.pagesFolder, '.migrated');
795
807
  // Handle legacy flat file (<localFolder>/pagename.html)
796
808
  const flatPath = path_1.default.join(config.pagesFolder, `${name}.html`);
797
- if (await (0, files_1.checkIfExists)(flatPath)) {
798
- await (0, files_1.copyFile)(flatPath, migratedFolder);
799
- await (0, files_1.deleteFile)(flatPath);
809
+ if (await sp.checkIfExists(flatPath)) {
810
+ await sp.ensureFolderExists(migratedFolder);
811
+ const flatData = await sp.loadBuffer(flatPath);
812
+ await sp.saveBuffer(path_1.default.join(migratedFolder, `${name}.html`), flatData);
813
+ await sp.deleteFile(flatPath);
800
814
  }
801
815
  // Handle folder-based page (<localFolder>/pages/name/)
802
816
  const folderPath = path_1.default.join(config.pagesFolder, 'pages', name);
803
- if (await (0, files_1.checkIfExists)(folderPath)) {
804
- await (0, files_1.copyFolderRecursive)(folderPath, path_1.default.join(migratedFolder, name));
817
+ if (await sp.checkIfExists(folderPath)) {
818
+ await sp.copyFolderRecursive(folderPath, path_1.default.join(migratedFolder, name));
805
819
  }
806
820
  // Clear stale version files (undo snapshots from the old page version)
807
- await (0, pages_1.clearVersions)(config.pagesFolder, name);
821
+ await (0, pages_1.clearVersions)(config, name);
808
822
  // Update metadata
809
823
  metadata.pageVersion = pages_1.PAGE_VERSION;
810
824
  metadata.lastModified = new Date().toISOString();
811
- await (0, pages_1.savePageMetadata)(config.pagesFolder, name, metadata);
825
+ await (0, pages_1.savePageMetadata)(config, name, metadata);
812
826
  res.json({ upgraded: true, fromVersion: currentVersion, toVersion: pages_1.PAGE_VERSION });
813
827
  }
814
828
  catch (err) {
@@ -824,13 +838,13 @@ Return ONLY the JSON object.`
824
838
  const userPageDir = path_1.default.join(config.pagesFolder, 'pages', name);
825
839
  let requiredPageDir;
826
840
  for (const folder of config.requiredPagesFolders) {
827
- if (await (0, files_1.checkIfExists)(path_1.default.join(folder, name, 'page.html'))) {
841
+ if (await (0, files_1.checkIfExists)(path_1.default.join(folder, name, 'page.html'))) { // package content, local fs
828
842
  requiredPageDir = path_1.default.join(folder, name);
829
843
  break;
830
844
  }
831
845
  }
832
846
  let sourceDir = null;
833
- if (await (0, files_1.checkIfExists)(path_1.default.join(userPageDir, 'page.html'))) {
847
+ if (await sp.checkIfExists(path_1.default.join(userPageDir, 'page.html'))) {
834
848
  sourceDir = userPageDir;
835
849
  }
836
850
  else if (requiredPageDir) {
@@ -869,7 +883,7 @@ Return ONLY the JSON object.`
869
883
  });
870
884
  // Ask a question about a page (with full page HTML context)
871
885
  app.post('/api/pages/:name/ask', async (req, res) => {
872
- await (0, requiresSettings_1.requiresSettings)(res, config.pagesFolder, async (settings) => {
886
+ await (0, requiresSettings_1.requiresSettings)(res, config, async (settings) => {
873
887
  const { name } = req.params;
874
888
  const { question } = req.body;
875
889
  if (typeof question !== 'string' || !question.trim()) {
@@ -883,7 +897,7 @@ Return ONLY the JSON object.`
883
897
  return;
884
898
  }
885
899
  // Create completion (uses 'chat' model, not 'builder')
886
- const complete = await (0, createCompletePrompt_1.createCompletePrompt)(config.pagesFolder, 'chat', req.body.model);
900
+ const complete = await (0, createCompletePrompt_1.createCompletePrompt)(config, 'chat', req.body.model);
887
901
  const system = {
888
902
  role: 'system',
889
903
  content: `You are a helpful assistant. The user will ask questions about a web page. Answer based on the page content provided.\n\n<PAGE_HTML>\n${html}`