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.
- package/default-pages/neon_asteroids/page.html +2 -21
- package/default-pages/oregon_trail/page.html +3 -19
- package/default-pages/solar_explorer/page.html +1 -1
- package/default-pages/western_cities_1850/page.html +2 -2
- package/dist/agents/a2a/a2aProvider.d.ts +3 -0
- package/dist/agents/discovery.d.ts +30 -0
- package/dist/agents/openclaw/openclawProvider.d.ts +3 -0
- package/dist/agents/types.d.ts +64 -0
- package/dist/connectors/index.d.ts +3 -0
- package/dist/connectors/types.d.ts +84 -0
- package/dist/customizer/Customizer.d.ts +5 -0
- package/dist/customizer/Customizer.d.ts.map +1 -1
- package/dist/customizer/Customizer.js +10 -0
- package/dist/customizer/Customizer.js.map +1 -1
- package/dist/customizer/index.d.ts +4 -0
- package/dist/index.d.ts +9 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/init.d.ts +2 -0
- package/dist/init.d.ts.map +1 -1
- package/dist/init.js +71 -37
- package/dist/init.js.map +1 -1
- package/dist/migrations.d.ts +12 -0
- package/dist/models/chainOfThought.d.ts +12 -0
- package/dist/models/fireworksai.d.ts +30 -0
- package/dist/models/logCompletePrompt.d.ts +3 -0
- package/dist/models/providers.d.ts +8 -0
- package/dist/models/utils.d.ts +6 -0
- package/dist/pages.d.ts +12 -11
- package/dist/pages.d.ts.map +1 -1
- package/dist/pages.js +94 -66
- package/dist/pages.js.map +1 -1
- package/dist/scripts.d.ts +15 -0
- package/dist/service/createCompletePrompt.d.ts +6 -0
- package/dist/service/createCompletePrompt.d.ts.map +1 -1
- package/dist/service/createCompletePrompt.js +2 -2
- package/dist/service/createCompletePrompt.js.map +1 -1
- package/dist/service/debugLog.d.ts +11 -0
- package/dist/service/generateImage.d.ts +32 -0
- package/dist/service/index.d.ts +8 -0
- package/dist/service/modelInstructions.d.ts +7 -0
- package/dist/service/requiresSettings.d.ts +4 -0
- package/dist/service/requiresSettings.d.ts.map +1 -1
- package/dist/service/requiresSettings.js +3 -3
- package/dist/service/requiresSettings.js.map +1 -1
- package/dist/service/server.d.ts +5 -0
- package/dist/service/useAgentRoutes.js +12 -12
- package/dist/service/useAgentRoutes.js.map +1 -1
- package/dist/service/useApiRoutes.d.ts +5 -0
- package/dist/service/useApiRoutes.d.ts.map +1 -1
- package/dist/service/useApiRoutes.js +74 -60
- package/dist/service/useApiRoutes.js.map +1 -1
- package/dist/service/useConnectorRoutes.d.ts +4 -0
- package/dist/service/useConnectorRoutes.js +11 -11
- package/dist/service/useConnectorRoutes.js.map +1 -1
- package/dist/service/useDataRoutes.d.ts +4 -0
- package/dist/service/useDataRoutes.d.ts.map +1 -1
- package/dist/service/useDataRoutes.js +13 -10
- package/dist/service/useDataRoutes.js.map +1 -1
- package/dist/service/useFileRoutes.d.ts.map +1 -1
- package/dist/service/useFileRoutes.js +13 -13
- package/dist/service/useFileRoutes.js.map +1 -1
- package/dist/service/usePageRoutes.d.ts +6 -0
- package/dist/service/usePageRoutes.d.ts.map +1 -1
- package/dist/service/usePageRoutes.js +54 -38
- package/dist/service/usePageRoutes.js.map +1 -1
- package/dist/service/useSharedDataRoutes.d.ts.map +1 -1
- package/dist/service/useSharedDataRoutes.js +13 -10
- package/dist/service/useSharedDataRoutes.js.map +1 -1
- package/dist/service/useSharedFileRoutes.d.ts.map +1 -1
- package/dist/service/useSharedFileRoutes.js +13 -13
- package/dist/service/useSharedFileRoutes.js.map +1 -1
- package/dist/settings.d.ts +4 -3
- package/dist/settings.d.ts.map +1 -1
- package/dist/settings.js +11 -10
- package/dist/settings.js.map +1 -1
- package/dist/storage/FsStorageProvider.d.ts +25 -0
- package/dist/storage/FsStorageProvider.d.ts.map +1 -0
- package/dist/storage/FsStorageProvider.js +103 -0
- package/dist/storage/FsStorageProvider.js.map +1 -0
- package/dist/storage/StorageProvider.d.ts +31 -0
- package/dist/storage/StorageProvider.d.ts.map +1 -0
- package/dist/storage/StorageProvider.js +3 -0
- package/dist/storage/StorageProvider.js.map +1 -0
- package/dist/storage/index.d.ts +3 -0
- package/dist/storage/index.d.ts.map +1 -0
- package/dist/storage/index.js +6 -0
- package/dist/storage/index.js.map +1 -0
- package/dist/synthos-cli.d.ts +2 -0
- package/dist/themes.d.ts.map +1 -1
- package/dist/themes.js +42 -18
- package/dist/themes.js.map +1 -1
- package/package.json +1 -1
- package/src/builders/anthropic.ts +5 -5
- package/src/customizer/Customizer.ts +12 -0
- package/src/index.ts +2 -1
- package/src/init.ts +78 -42
- package/src/models/providers.ts +2 -2
- package/src/pages.ts +98 -67
- package/src/service/createCompletePrompt.ts +3 -2
- package/src/service/requiresSettings.ts +4 -3
- package/src/service/useAgentRoutes.ts +12 -12
- package/src/service/useApiRoutes.ts +76 -61
- package/src/service/useConnectorRoutes.ts +11 -11
- package/src/service/useDataRoutes.ts +13 -10
- package/src/service/useFileRoutes.ts +14 -13
- package/src/service/usePageRoutes.ts +42 -40
- package/src/service/useSharedDataRoutes.ts +13 -10
- package/src/service/useSharedFileRoutes.ts +14 -13
- package/src/settings.ts +12 -10
- package/src/storage/FsStorageProvider.ts +87 -0
- package/src/storage/StorageProvider.ts +34 -0
- package/src/storage/index.ts +2 -0
- package/src/themes.ts +44 -18
- package/tests/builders.spec.ts +2 -2
- package/tests/pages.spec.ts +54 -84
- package/tests/providers.spec.ts +1 -1
package/dist/settings.d.ts
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { ModelEntry } from './models';
|
|
2
2
|
import { AgentConfig } from './agents';
|
|
3
|
+
import { SynthOSConfig } from './init';
|
|
3
4
|
export interface ServiceConfig {
|
|
4
5
|
apiKey: string;
|
|
5
6
|
enabled: boolean;
|
|
@@ -38,7 +39,7 @@ export declare const DefaultSettings: SettingsV2;
|
|
|
38
39
|
* Find a model entry by its `use` field. Falls back to default if not found.
|
|
39
40
|
*/
|
|
40
41
|
export declare function getModelEntry(settings: SettingsV2, use: 'builder' | 'chat'): ModelEntry;
|
|
41
|
-
export declare function hasConfiguredSettings(
|
|
42
|
-
export declare function loadSettings(
|
|
43
|
-
export declare function saveSettings(
|
|
42
|
+
export declare function hasConfiguredSettings(config: SynthOSConfig): Promise<boolean>;
|
|
43
|
+
export declare function loadSettings(config: SynthOSConfig): Promise<SettingsV2>;
|
|
44
|
+
export declare function saveSettings(config: SynthOSConfig, settings: Partial<SettingsV2>): Promise<void>;
|
|
44
45
|
//# sourceMappingURL=settings.d.ts.map
|
package/dist/settings.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"settings.d.ts","sourceRoot":"","sources":["../src/settings.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"settings.d.ts","sourceRoot":"","sources":["../src/settings.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAgC,MAAM,UAAU,CAAC;AACpE,OAAO,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AACvC,OAAO,EAAE,aAAa,EAAE,MAAM,QAAQ,CAAC;AAIvC,MAAM,WAAW,aAAa;IAC1B,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,OAAO,CAAC;CACpB;AAED,MAAM,MAAM,cAAc,GAAG;IAAE,CAAC,SAAS,EAAE,MAAM,GAAG,aAAa,CAAA;CAAE,CAAC;AAGpE,YAAY,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAE3C;;GAEG;AACH,MAAM,WAAW,UAAU;IACvB,aAAa,EAAE,MAAM,CAAC;IACtB,KAAK,EAAE,MAAM,CAAC;IACd,YAAY,EAAE,UAAU,GAAG,IAAI,CAAC;IAChC,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,cAAc,CAAC;CAC7B;AAED;;GAEG;AACH,MAAM,WAAW,UAAU;IACvB,OAAO,EAAE,CAAC,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,UAAU,EAAE,CAAC;IACrB,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,QAAQ,CAAC,EAAE,cAAc,CAAC;IAC1B,UAAU,CAAC,EAAE,cAAc,CAAC;IAC5B,MAAM,CAAC,EAAE,WAAW,EAAE,CAAC;IACvB,eAAe,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;CACtC;AAED,eAAO,MAAM,eAAe,EAAE,UA0B7B,CAAC;AAEF;;GAEG;AACH,wBAAgB,aAAa,CAAC,QAAQ,EAAE,UAAU,EAAE,GAAG,EAAE,SAAS,GAAG,MAAM,GAAG,UAAU,CAIvF;AAiDD,wBAAsB,qBAAqB,CAAC,MAAM,EAAE,aAAa,GAAG,OAAO,CAAC,OAAO,CAAC,CAUnF;AAED,wBAAsB,YAAY,CAAC,MAAM,EAAE,aAAa,GAAG,OAAO,CAAC,UAAU,CAAC,CAgC7E;AAED,wBAAsB,YAAY,CAAC,MAAM,EAAE,aAAa,EAAE,QAAQ,EAAE,OAAO,CAAC,UAAU,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAQtG"}
|
package/dist/settings.js
CHANGED
|
@@ -4,7 +4,6 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
6
|
exports.saveSettings = exports.loadSettings = exports.hasConfiguredSettings = exports.getModelEntry = exports.DefaultSettings = void 0;
|
|
7
|
-
const files_1 = require("./files");
|
|
8
7
|
const path_1 = __importDefault(require("path"));
|
|
9
8
|
const models_1 = require("./models");
|
|
10
9
|
let _settings;
|
|
@@ -89,8 +88,8 @@ function migrateV1toV2(raw) {
|
|
|
89
88
|
services: v1.services,
|
|
90
89
|
};
|
|
91
90
|
}
|
|
92
|
-
async function hasConfiguredSettings(
|
|
93
|
-
const settings = await loadSettings(
|
|
91
|
+
async function hasConfiguredSettings(config) {
|
|
92
|
+
const settings = await loadSettings(config);
|
|
94
93
|
const builder = getModelEntry(settings, 'builder');
|
|
95
94
|
if (typeof builder.configuration.apiKey !== 'string' || builder.configuration.apiKey.length == 0) {
|
|
96
95
|
return false;
|
|
@@ -101,18 +100,19 @@ async function hasConfiguredSettings(folder) {
|
|
|
101
100
|
return true;
|
|
102
101
|
}
|
|
103
102
|
exports.hasConfiguredSettings = hasConfiguredSettings;
|
|
104
|
-
async function loadSettings(
|
|
103
|
+
async function loadSettings(config) {
|
|
104
|
+
const sp = config.storageProvider;
|
|
105
105
|
if (_settings == undefined) {
|
|
106
|
-
const filename = path_1.default.join(
|
|
107
|
-
if (await
|
|
106
|
+
const filename = path_1.default.join(config.pagesFolder, 'settings.json');
|
|
107
|
+
if (await sp.checkIfExists(filename)) {
|
|
108
108
|
try {
|
|
109
|
-
const raw = JSON.parse(await
|
|
109
|
+
const raw = JSON.parse(await sp.loadFile(filename));
|
|
110
110
|
if (!raw.version) {
|
|
111
111
|
// V1 file — migrate
|
|
112
112
|
console.log('Migrating settings.json from v1 to v2...');
|
|
113
113
|
const migrated = migrateV1toV2(raw);
|
|
114
114
|
_settings = migrated;
|
|
115
|
-
await
|
|
115
|
+
await sp.saveFile(filename, JSON.stringify(migrated, null, 4));
|
|
116
116
|
}
|
|
117
117
|
else {
|
|
118
118
|
_settings = raw;
|
|
@@ -133,13 +133,14 @@ async function loadSettings(folder) {
|
|
|
133
133
|
return merged;
|
|
134
134
|
}
|
|
135
135
|
exports.loadSettings = loadSettings;
|
|
136
|
-
async function saveSettings(
|
|
136
|
+
async function saveSettings(config, settings) {
|
|
137
|
+
const sp = config.storageProvider;
|
|
137
138
|
_settings = { ..._settings, ...settings };
|
|
138
139
|
if (settings.models) {
|
|
139
140
|
_settings.models = settings.models;
|
|
140
141
|
}
|
|
141
142
|
_settings.version = 2;
|
|
142
|
-
await
|
|
143
|
+
await sp.saveFile(path_1.default.join(config.pagesFolder, 'settings.json'), JSON.stringify(_settings, null, 4));
|
|
143
144
|
}
|
|
144
145
|
exports.saveSettings = saveSettings;
|
|
145
146
|
//# sourceMappingURL=settings.js.map
|
package/dist/settings.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"settings.js","sourceRoot":"","sources":["../src/settings.ts"],"names":[],"mappings":";;;;;;AAAA,
|
|
1
|
+
{"version":3,"file":"settings.js","sourceRoot":"","sources":["../src/settings.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
/// <reference types="node" />
|
|
2
|
+
import { StorageProvider } from './StorageProvider';
|
|
3
|
+
/**
|
|
4
|
+
* Default StorageProvider backed by the local filesystem via `fs/promises`.
|
|
5
|
+
* Mirrors the existing logic in `files.ts`.
|
|
6
|
+
*/
|
|
7
|
+
export declare class FsStorageProvider implements StorageProvider {
|
|
8
|
+
checkIfExists(filePath: string): Promise<boolean>;
|
|
9
|
+
loadFile(filePath: string): Promise<string>;
|
|
10
|
+
saveFile(filePath: string, content: string): Promise<void>;
|
|
11
|
+
deleteFile(filePath: string): Promise<void>;
|
|
12
|
+
saveBuffer(filePath: string, data: Buffer): Promise<void>;
|
|
13
|
+
loadBuffer(filePath: string): Promise<Buffer>;
|
|
14
|
+
stat(filePath: string): Promise<{
|
|
15
|
+
size: number;
|
|
16
|
+
isFile: boolean;
|
|
17
|
+
}>;
|
|
18
|
+
createReadStream(filePath: string): NodeJS.ReadableStream;
|
|
19
|
+
listFiles(dirPath: string): Promise<string[]>;
|
|
20
|
+
listFolders(dirPath: string): Promise<string[]>;
|
|
21
|
+
ensureFolderExists(dirPath: string): Promise<void>;
|
|
22
|
+
deleteFolder(dirPath: string): Promise<void>;
|
|
23
|
+
copyFolderRecursive(srcPath: string, destPath: string): Promise<void>;
|
|
24
|
+
}
|
|
25
|
+
//# sourceMappingURL=FsStorageProvider.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"FsStorageProvider.d.ts","sourceRoot":"","sources":["../../src/storage/FsStorageProvider.ts"],"names":[],"mappings":";AAGA,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAEpD;;;GAGG;AACH,qBAAa,iBAAkB,YAAW,eAAe;IAG/C,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IASjD,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAI3C,QAAQ,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAI1D,UAAU,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAM3C,UAAU,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAIzD,UAAU,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAI7C,IAAI,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,OAAO,CAAA;KAAE,CAAC;IAKxE,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAAC,cAAc;IAMnD,SAAS,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAI7C,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAO/C,kBAAkB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAIlD,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAI5C,mBAAmB,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAa9E"}
|
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
19
|
+
if (mod && mod.__esModule) return mod;
|
|
20
|
+
var result = {};
|
|
21
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
22
|
+
__setModuleDefault(result, mod);
|
|
23
|
+
return result;
|
|
24
|
+
};
|
|
25
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
26
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
27
|
+
};
|
|
28
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
29
|
+
exports.FsStorageProvider = void 0;
|
|
30
|
+
const fs = __importStar(require("fs/promises"));
|
|
31
|
+
const fs_1 = require("fs");
|
|
32
|
+
const path_1 = __importDefault(require("path"));
|
|
33
|
+
/**
|
|
34
|
+
* Default StorageProvider backed by the local filesystem via `fs/promises`.
|
|
35
|
+
* Mirrors the existing logic in `files.ts`.
|
|
36
|
+
*/
|
|
37
|
+
class FsStorageProvider {
|
|
38
|
+
// --- Text file operations ---
|
|
39
|
+
async checkIfExists(filePath) {
|
|
40
|
+
try {
|
|
41
|
+
await fs.access(filePath);
|
|
42
|
+
return true;
|
|
43
|
+
}
|
|
44
|
+
catch {
|
|
45
|
+
return false;
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
async loadFile(filePath) {
|
|
49
|
+
return await fs.readFile(filePath, 'utf8');
|
|
50
|
+
}
|
|
51
|
+
async saveFile(filePath, content) {
|
|
52
|
+
await fs.writeFile(filePath, content, 'utf8');
|
|
53
|
+
}
|
|
54
|
+
async deleteFile(filePath) {
|
|
55
|
+
await fs.unlink(filePath);
|
|
56
|
+
}
|
|
57
|
+
// --- Binary file operations ---
|
|
58
|
+
async saveBuffer(filePath, data) {
|
|
59
|
+
await fs.writeFile(filePath, data);
|
|
60
|
+
}
|
|
61
|
+
async loadBuffer(filePath) {
|
|
62
|
+
return await fs.readFile(filePath);
|
|
63
|
+
}
|
|
64
|
+
async stat(filePath) {
|
|
65
|
+
const s = await fs.stat(filePath);
|
|
66
|
+
return { size: s.size, isFile: s.isFile() };
|
|
67
|
+
}
|
|
68
|
+
createReadStream(filePath) {
|
|
69
|
+
return (0, fs_1.createReadStream)(filePath);
|
|
70
|
+
}
|
|
71
|
+
// --- Directory operations ---
|
|
72
|
+
async listFiles(dirPath) {
|
|
73
|
+
return (await fs.readdir(dirPath)).filter(file => !file.startsWith('.') && file.includes('.'));
|
|
74
|
+
}
|
|
75
|
+
async listFolders(dirPath) {
|
|
76
|
+
const entries = await fs.readdir(dirPath, { withFileTypes: true });
|
|
77
|
+
return entries
|
|
78
|
+
.filter(entry => entry.isDirectory() && !entry.name.startsWith('.'))
|
|
79
|
+
.map(entry => entry.name);
|
|
80
|
+
}
|
|
81
|
+
async ensureFolderExists(dirPath) {
|
|
82
|
+
await fs.mkdir(dirPath, { recursive: true });
|
|
83
|
+
}
|
|
84
|
+
async deleteFolder(dirPath) {
|
|
85
|
+
await fs.rm(dirPath, { recursive: true });
|
|
86
|
+
}
|
|
87
|
+
async copyFolderRecursive(srcPath, destPath) {
|
|
88
|
+
await this.ensureFolderExists(destPath);
|
|
89
|
+
const entries = await fs.readdir(srcPath, { withFileTypes: true });
|
|
90
|
+
for (const entry of entries) {
|
|
91
|
+
const src = path_1.default.join(srcPath, entry.name);
|
|
92
|
+
const dest = path_1.default.join(destPath, entry.name);
|
|
93
|
+
if (entry.isDirectory()) {
|
|
94
|
+
await this.copyFolderRecursive(src, dest);
|
|
95
|
+
}
|
|
96
|
+
else {
|
|
97
|
+
await fs.copyFile(src, dest);
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
exports.FsStorageProvider = FsStorageProvider;
|
|
103
|
+
//# sourceMappingURL=FsStorageProvider.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"FsStorageProvider.js","sourceRoot":"","sources":["../../src/storage/FsStorageProvider.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
/// <reference types="node" />
|
|
2
|
+
/**
|
|
3
|
+
* Abstraction over user-mutable storage (pages, settings, themes, data, uploads).
|
|
4
|
+
*
|
|
5
|
+
* All paths are absolute. Callers build paths with `path.join(config.pagesFolder, ...)`
|
|
6
|
+
* exactly as they do today — the provider simply executes the I/O against
|
|
7
|
+
* whatever backend it wraps (local filesystem, blob storage, etc.).
|
|
8
|
+
*
|
|
9
|
+
* Package/read-only content (required-pages, default-themes, static-files,
|
|
10
|
+
* service-connectors) stays on local filesystem and is NOT routed through
|
|
11
|
+
* this interface.
|
|
12
|
+
*/
|
|
13
|
+
export interface StorageProvider {
|
|
14
|
+
checkIfExists(filePath: string): Promise<boolean>;
|
|
15
|
+
loadFile(filePath: string): Promise<string>;
|
|
16
|
+
saveFile(filePath: string, content: string): Promise<void>;
|
|
17
|
+
deleteFile(filePath: string): Promise<void>;
|
|
18
|
+
saveBuffer(filePath: string, data: Buffer): Promise<void>;
|
|
19
|
+
loadBuffer(filePath: string): Promise<Buffer>;
|
|
20
|
+
stat(filePath: string): Promise<{
|
|
21
|
+
size: number;
|
|
22
|
+
isFile: boolean;
|
|
23
|
+
}>;
|
|
24
|
+
createReadStream(filePath: string): NodeJS.ReadableStream;
|
|
25
|
+
listFiles(dirPath: string): Promise<string[]>;
|
|
26
|
+
listFolders(dirPath: string): Promise<string[]>;
|
|
27
|
+
ensureFolderExists(dirPath: string): Promise<void>;
|
|
28
|
+
deleteFolder(dirPath: string): Promise<void>;
|
|
29
|
+
copyFolderRecursive(srcPath: string, destPath: string): Promise<void>;
|
|
30
|
+
}
|
|
31
|
+
//# sourceMappingURL=StorageProvider.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"StorageProvider.d.ts","sourceRoot":"","sources":["../../src/storage/StorageProvider.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;GAUG;AACH,MAAM,WAAW,eAAe;IAG5B,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAClD,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IAC5C,QAAQ,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC3D,UAAU,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAI5C,UAAU,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC1D,UAAU,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IAC9C,IAAI,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,OAAO,CAAA;KAAE,CAAC,CAAC;IACnE,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAAC,cAAc,CAAC;IAI1D,SAAS,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;IAC9C,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;IAChD,kBAAkB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACnD,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC7C,mBAAmB,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACzE"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"StorageProvider.js","sourceRoot":"","sources":["../../src/storage/StorageProvider.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/storage/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.FsStorageProvider = void 0;
|
|
4
|
+
var FsStorageProvider_1 = require("./FsStorageProvider");
|
|
5
|
+
Object.defineProperty(exports, "FsStorageProvider", { enumerable: true, get: function () { return FsStorageProvider_1.FsStorageProvider; } });
|
|
6
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/storage/index.ts"],"names":[],"mappings":";;;AACA,yDAAwD;AAA/C,sHAAA,iBAAiB,OAAA"}
|
package/dist/themes.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"themes.d.ts","sourceRoot":"","sources":["../src/themes.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,aAAa,EAAE,MAAM,QAAQ,CAAC;AAEvC,eAAO,MAAM,aAAa,IAAI,CAAC;AAE/B,MAAM,WAAW,SAAS;IACtB,IAAI,EAAE,OAAO,GAAG,MAAM,CAAC;IACvB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAClC;AAMD;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,MAAM,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,GAAG,SAAS,CAOlG;
|
|
1
|
+
{"version":3,"file":"themes.d.ts","sourceRoot":"","sources":["../src/themes.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,aAAa,EAAE,MAAM,QAAQ,CAAC;AAEvC,eAAO,MAAM,aAAa,IAAI,CAAC;AAE/B,MAAM,WAAW,SAAS;IACtB,IAAI,EAAE,OAAO,GAAG,MAAM,CAAC;IACvB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAClC;AAMD;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,MAAM,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,GAAG,SAAS,CAOlG;AAwCD,wBAAsB,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,aAAa,GAAG,OAAO,CAAC,MAAM,CAAC,CAQ3F;AAED,wBAAsB,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,aAAa,GAAG,OAAO,CAAC,SAAS,GAAG,SAAS,CAAC,CAkBvG;AAED,wBAAsB,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,aAAa,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAkBhG;AAED,wBAAsB,UAAU,CAAC,MAAM,EAAE,aAAa,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAsBzE;AAED;;GAEG;AACH,wBAAsB,iBAAiB,CAAC,MAAM,EAAE,aAAa,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAmChF"}
|
package/dist/themes.js
CHANGED
|
@@ -26,10 +26,29 @@ function parseThemeFilename(filename) {
|
|
|
26
26
|
}
|
|
27
27
|
exports.parseThemeFilename = parseThemeFilename;
|
|
28
28
|
/**
|
|
29
|
-
* Find the CSS file for a theme by name in a folder.
|
|
29
|
+
* Find the CSS file for a theme by name in a user folder (via storageProvider).
|
|
30
30
|
* Prefers the highest-versioned file (e.g. name.v2.css over name.css).
|
|
31
31
|
*/
|
|
32
|
-
async function
|
|
32
|
+
async function findUserThemeCssFile(config, folder, name) {
|
|
33
|
+
const sp = config.storageProvider;
|
|
34
|
+
if (!await sp.checkIfExists(folder))
|
|
35
|
+
return undefined;
|
|
36
|
+
const files = await sp.listFiles(folder);
|
|
37
|
+
let best;
|
|
38
|
+
for (const f of files) {
|
|
39
|
+
const parsed = parseThemeFilename(f);
|
|
40
|
+
if (parsed && parsed.name === name) {
|
|
41
|
+
if (!best || parsed.version > best.version) {
|
|
42
|
+
best = { path: path_1.default.join(folder, f), version: parsed.version };
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
return best;
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* Find the CSS file for a theme by name in a local-fs folder (package defaults).
|
|
50
|
+
*/
|
|
51
|
+
async function findDefaultThemeCssFile(folder, name) {
|
|
33
52
|
if (!await (0, files_1.checkIfExists)(folder))
|
|
34
53
|
return undefined;
|
|
35
54
|
const files = await (0, files_1.listFiles)(folder);
|
|
@@ -45,11 +64,11 @@ async function findThemeCssFile(folder, name) {
|
|
|
45
64
|
return best;
|
|
46
65
|
}
|
|
47
66
|
async function loadThemeVersion(name, config) {
|
|
48
|
-
const local = await
|
|
67
|
+
const local = await findUserThemeCssFile(config, userThemesFolder(config), name);
|
|
49
68
|
if (local)
|
|
50
69
|
return local.version;
|
|
51
70
|
for (const folder of config.defaultThemesFolders) {
|
|
52
|
-
const def = await
|
|
71
|
+
const def = await findDefaultThemeCssFile(folder, name);
|
|
53
72
|
if (def)
|
|
54
73
|
return def.version;
|
|
55
74
|
}
|
|
@@ -57,12 +76,14 @@ async function loadThemeVersion(name, config) {
|
|
|
57
76
|
}
|
|
58
77
|
exports.loadThemeVersion = loadThemeVersion;
|
|
59
78
|
async function loadThemeInfo(name, config) {
|
|
60
|
-
|
|
79
|
+
const sp = config.storageProvider;
|
|
80
|
+
// Check user's local themes first (user storage)
|
|
61
81
|
const localPath = path_1.default.join(userThemesFolder(config), `${name}.json`);
|
|
62
|
-
if (await
|
|
63
|
-
const raw = await
|
|
82
|
+
if (await sp.checkIfExists(localPath)) {
|
|
83
|
+
const raw = await sp.loadFile(localPath);
|
|
64
84
|
return raw ? JSON.parse(raw) : undefined;
|
|
65
85
|
}
|
|
86
|
+
// Fall back to package defaults (local fs)
|
|
66
87
|
const defaultPath = await (0, files_1.findFileInFolders)(config.defaultThemesFolders, `${name}.json`);
|
|
67
88
|
if (defaultPath) {
|
|
68
89
|
const raw = await (0, files_1.loadFile)(defaultPath);
|
|
@@ -72,14 +93,15 @@ async function loadThemeInfo(name, config) {
|
|
|
72
93
|
}
|
|
73
94
|
exports.loadThemeInfo = loadThemeInfo;
|
|
74
95
|
async function loadTheme(name, config) {
|
|
75
|
-
|
|
76
|
-
|
|
96
|
+
const sp = config.storageProvider;
|
|
97
|
+
// Check user's local themes first (user storage)
|
|
98
|
+
const local = await findUserThemeCssFile(config, userThemesFolder(config), name);
|
|
77
99
|
if (local) {
|
|
78
|
-
return await
|
|
100
|
+
return await sp.loadFile(local.path);
|
|
79
101
|
}
|
|
80
|
-
// Search all default theme folders
|
|
102
|
+
// Search all default theme folders (local fs)
|
|
81
103
|
for (const folder of config.defaultThemesFolders) {
|
|
82
|
-
const def = await
|
|
104
|
+
const def = await findDefaultThemeCssFile(folder, name);
|
|
83
105
|
if (def) {
|
|
84
106
|
return await (0, files_1.loadFile)(def.path);
|
|
85
107
|
}
|
|
@@ -88,18 +110,19 @@ async function loadTheme(name, config) {
|
|
|
88
110
|
}
|
|
89
111
|
exports.loadTheme = loadTheme;
|
|
90
112
|
async function listThemes(config) {
|
|
113
|
+
const sp = config.storageProvider;
|
|
91
114
|
const names = new Set();
|
|
92
|
-
// Collect from user's local themes folder
|
|
115
|
+
// Collect from user's local themes folder (user storage)
|
|
93
116
|
const localFolder = userThemesFolder(config);
|
|
94
|
-
if (await
|
|
95
|
-
const files = await
|
|
117
|
+
if (await sp.checkIfExists(localFolder)) {
|
|
118
|
+
const files = await sp.listFiles(localFolder);
|
|
96
119
|
for (const f of files) {
|
|
97
120
|
const parsed = parseThemeFilename(f);
|
|
98
121
|
if (parsed)
|
|
99
122
|
names.add(parsed.name);
|
|
100
123
|
}
|
|
101
124
|
}
|
|
102
|
-
// Collect from all default theme folders
|
|
125
|
+
// Collect from all default theme folders (local fs)
|
|
103
126
|
const defaultFiles = await (0, files_1.listFilesFromFolders)(config.defaultThemesFolders);
|
|
104
127
|
for (const f of defaultFiles) {
|
|
105
128
|
const parsed = parseThemeFilename(f);
|
|
@@ -113,11 +136,12 @@ exports.listThemes = listThemes;
|
|
|
113
136
|
* Compare local theme versions against defaults and return themes that need upgrading.
|
|
114
137
|
*/
|
|
115
138
|
async function getOutdatedThemes(config) {
|
|
139
|
+
const sp = config.storageProvider;
|
|
116
140
|
const localFolder = userThemesFolder(config);
|
|
117
|
-
if (!await
|
|
141
|
+
if (!await sp.checkIfExists(localFolder))
|
|
118
142
|
return [];
|
|
119
143
|
const defaultFiles = await (0, files_1.listFilesFromFolders)(config.defaultThemesFolders);
|
|
120
|
-
const localFiles = await
|
|
144
|
+
const localFiles = await sp.listFiles(localFolder);
|
|
121
145
|
// Build maps: theme name → highest version
|
|
122
146
|
const defaultVersions = new Map();
|
|
123
147
|
for (const f of defaultFiles) {
|
package/dist/themes.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"themes.js","sourceRoot":"","sources":["../src/themes.ts"],"names":[],"mappings":";;;;;;AAAA,gDAAwB;AACxB,mCAAsG;AAGzF,QAAA,aAAa,GAAG,CAAC,CAAC;AAO/B,SAAS,gBAAgB,CAAC,MAAqB;IAC3C,OAAO,cAAI,CAAC,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC;AACnD,CAAC;AAED;;;;GAIG;AACH,SAAgB,kBAAkB,CAAC,QAAgB;IAC/C,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC;QAAE,OAAO,SAAS,CAAC;IACjD,MAAM,cAAc,GAAG,QAAQ,CAAC,KAAK,CAAC,qBAAqB,CAAC,CAAC;IAC7D,IAAI,cAAc,EAAE;QAChB,OAAO,EAAE,IAAI,EAAE,cAAc,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,QAAQ,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC;KAChF;IACD,OAAO,EAAE,IAAI,EAAE,QAAQ,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC;AAChE,CAAC;AAPD,gDAOC;AAED;;;GAGG;AACH,KAAK,UAAU,
|
|
1
|
+
{"version":3,"file":"themes.js","sourceRoot":"","sources":["../src/themes.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -54,7 +54,7 @@ export async function classifyRequest(
|
|
|
54
54
|
userMessage: string
|
|
55
55
|
): Promise<ClassifyResult> {
|
|
56
56
|
try {
|
|
57
|
-
const sonnet = createAnthropicModel({ apiKey, model: 'claude-sonnet-4-
|
|
57
|
+
const sonnet = createAnthropicModel({ apiKey, model: 'claude-sonnet-4-6' });
|
|
58
58
|
const result = await sonnet({
|
|
59
59
|
system: { role: 'system', content: CLASSIFIER_SYSTEM_PROMPT },
|
|
60
60
|
prompt: { role: 'user', content: `<PAGE_HTML>\n${pageHtml}\n\n<USER_MESSAGE>\n${userMessage}` },
|
|
@@ -147,14 +147,14 @@ export function createAnthropicBuilder(
|
|
|
147
147
|
|
|
148
148
|
// Easy changes use Sonnet with default schema (ranged allowed)
|
|
149
149
|
if (classifyResult.classification === 'easy-change') {
|
|
150
|
-
let sonnet: completePrompt = createAnthropicModel({ apiKey: options.apiKey, model: 'claude-sonnet-4-
|
|
150
|
+
let sonnet: completePrompt = createAnthropicModel({ apiKey: options.apiKey, model: 'claude-sonnet-4-6' });
|
|
151
151
|
if (options.wrapModel) sonnet = options.wrapModel(sonnet);
|
|
152
152
|
return buildWithModel(sonnet, currentPage, additionalSections, userMessage, userInstructions, name, attachments);
|
|
153
153
|
}
|
|
154
154
|
|
|
155
155
|
// Medium changes use Sonnet with no ranged writes
|
|
156
156
|
if (classifyResult.classification === 'medium-change') {
|
|
157
|
-
let sonnet: completePrompt = createAnthropicModel({ apiKey: options.apiKey, model: 'claude-sonnet-4-
|
|
157
|
+
let sonnet: completePrompt = createAnthropicModel({ apiKey: options.apiKey, model: 'claude-sonnet-4-6' });
|
|
158
158
|
if (options.wrapModel) sonnet = options.wrapModel(sonnet);
|
|
159
159
|
return buildWithModel(sonnet, currentPage, additionalSections, userMessage, userInstructions, name, attachments, noRanged);
|
|
160
160
|
}
|
|
@@ -243,8 +243,8 @@ export async function buildWithModel(
|
|
|
243
243
|
|
|
244
244
|
function routeLabel(classification: Classification, configuredModel: string): string {
|
|
245
245
|
if (classification === 'question') return 'classifier (answered inline)';
|
|
246
|
-
if (classification === 'easy-change') return 'claude-sonnet-4-
|
|
247
|
-
if (classification === 'medium-change') return 'claude-sonnet-4-
|
|
246
|
+
if (classification === 'easy-change') return 'claude-sonnet-4-6';
|
|
247
|
+
if (classification === 'medium-change') return 'claude-sonnet-4-6 (no ranged)';
|
|
248
248
|
if (classification === 're-write') return configuredModel + ' (re-write)';
|
|
249
249
|
return configuredModel + ' (no ranged)';
|
|
250
250
|
}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { Application } from 'express';
|
|
2
2
|
import { SynthOSConfig } from '../init';
|
|
3
3
|
import { ContextSection } from '../builders/types';
|
|
4
|
+
import { StorageProvider, FsStorageProvider } from '../storage';
|
|
4
5
|
|
|
5
6
|
export type RouteInstaller = (config: SynthOSConfig, app: Application) => void;
|
|
6
7
|
|
|
@@ -17,6 +18,17 @@ export class Customizer {
|
|
|
17
18
|
/** Custom context sections appended to the builder's additional sections. */
|
|
18
19
|
protected customContextSections: ContextSection[] = [];
|
|
19
20
|
|
|
21
|
+
private _storageProvider?: StorageProvider;
|
|
22
|
+
|
|
23
|
+
/** Storage provider for user-mutable data (pages, settings, themes, uploads).
|
|
24
|
+
* Override in a derived class to swap the storage backend (e.g. Azure Blob). */
|
|
25
|
+
get storageProvider(): StorageProvider {
|
|
26
|
+
if (!this._storageProvider) {
|
|
27
|
+
this._storageProvider = new FsStorageProvider();
|
|
28
|
+
}
|
|
29
|
+
return this._storageProvider;
|
|
30
|
+
}
|
|
31
|
+
|
|
20
32
|
// --- Local data folder ---
|
|
21
33
|
// Override in a derived class to change the local project folder name.
|
|
22
34
|
|
package/src/index.ts
CHANGED