synthos 0.7.2 → 0.9.0
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/README.md +215 -65
- package/default-pages/application/page.html +42 -0
- package/default-pages/application/page.json +10 -0
- package/default-pages/elevenlabs_effects_studio/page.html +1363 -0
- package/default-pages/elevenlabs_effects_studio/page.json +11 -0
- package/default-pages/elevenlabs_voice_studio/page.html +801 -0
- package/default-pages/elevenlabs_voice_studio/page.json +11 -0
- package/default-pages/{json_tools.html → json_tools/page.html} +13 -11
- package/default-pages/json_tools/page.json +10 -0
- package/default-pages/my_notes/notes/a1b2c3d4-e5f6-7890-abcd-ef1234567890.json +5 -0
- package/default-pages/my_notes/page.html +132 -0
- package/default-pages/{my_notes.json → my_notes/page.json} +2 -2
- package/default-pages/neon_asteroids/files/Ambient_Space.mp3 +0 -0
- package/default-pages/neon_asteroids/files/Ambient_Space2.mp3 +0 -0
- package/default-pages/neon_asteroids/files/Ambient_Space3.mp3 +0 -0
- package/default-pages/neon_asteroids/files/Asteroid_Explosion.mp3 +0 -0
- package/default-pages/neon_asteroids/files/Hyperspace_Jump.mp3 +0 -0
- package/default-pages/neon_asteroids/files/Laser_Fire.mp3 +0 -0
- package/default-pages/neon_asteroids/files/Menu_Navigate.mp3 +0 -0
- package/default-pages/neon_asteroids/files/Power_Up_Collect.mp3 +0 -0
- package/default-pages/neon_asteroids/files/Saucer_Alert.mp3 +0 -0
- package/default-pages/neon_asteroids/files/Ship_Thrust.mp3 +0 -0
- package/default-pages/neon_asteroids/files/effects.json +74 -0
- package/default-pages/neon_asteroids/page.html +1822 -0
- package/default-pages/{neon_asteroids.json → neon_asteroids/page.json} +3 -3
- package/default-pages/oregon_trail/page.html +323 -0
- package/default-pages/oregon_trail/page.json +12 -0
- package/default-pages/retro_game_starter/page.html +1308 -0
- package/default-pages/retro_game_starter/page.json +12 -0
- package/default-pages/{sidebar_builder.html → sidebar_page/page.html} +12 -10
- package/default-pages/sidebar_page/page.json +10 -0
- package/default-pages/{solar_explorer.html → solar_explorer/page.html} +24 -29
- package/default-pages/{solar_explorer.json → solar_explorer/page.json} +4 -4
- package/default-pages/{solar_tutorial.html → solar_tutorial/page.html} +12 -10
- package/default-pages/solar_tutorial/page.json +10 -0
- package/default-pages/{two-panel_builder.html → two-panel_page/page.html} +13 -11
- package/default-pages/two-panel_page/page.json +10 -0
- package/default-pages/us_map/page.html +193 -0
- package/default-pages/us_map/page.json +12 -0
- package/default-pages/us_map_1850/page.html +326 -0
- package/default-pages/us_map_1850/page.json +12 -0
- package/default-pages/western_cities_1850/page.html +527 -0
- package/default-pages/western_cities_1850/page.json +12 -0
- package/default-themes/aurora-dawn.json +19 -0
- package/default-themes/aurora-dawn.v3.css +198 -0
- package/default-themes/aurora-dusk.json +19 -0
- package/default-themes/aurora-dusk.v3.css +200 -0
- package/default-themes/cosmos-dawn.json +19 -0
- package/default-themes/cosmos-dawn.v3.css +198 -0
- package/default-themes/cosmos-dusk.json +19 -0
- package/default-themes/cosmos-dusk.v3.css +200 -0
- package/default-themes/high-contrast-dark.json +19 -0
- package/default-themes/high-contrast-dark.v3.css +200 -0
- package/default-themes/high-contrast-light.json +19 -0
- package/default-themes/high-contrast-light.v3.css +198 -0
- package/default-themes/{nebula-dawn.css → nebula-dawn.v2.css} +134 -0
- package/default-themes/nebula-dawn.v3.css +199 -0
- package/default-themes/{nebula-dusk.css → nebula-dusk.v2.css} +128 -0
- package/default-themes/nebula-dusk.v3.css +201 -0
- package/default-themes/solar-flare-dawn.json +19 -0
- package/default-themes/solar-flare-dawn.v3.css +198 -0
- package/default-themes/solar-flare-dusk.json +19 -0
- package/default-themes/solar-flare-dusk.v3.css +200 -0
- package/dist/agents/a2a/a2aProvider.d.ts.map +1 -0
- package/dist/agents/a2a/a2aProvider.js +126 -0
- package/dist/agents/a2a/a2aProvider.js.map +1 -0
- package/dist/agents/discovery.d.ts.map +1 -0
- package/dist/agents/discovery.js +52 -0
- package/dist/agents/discovery.js.map +1 -0
- package/dist/agents/index.d.ts +7 -0
- package/dist/agents/index.d.ts.map +1 -0
- package/dist/agents/index.js +20 -0
- package/dist/agents/index.js.map +1 -0
- package/dist/agents/openclaw/gatewayManager.d.ts +117 -0
- package/dist/agents/openclaw/gatewayManager.d.ts.map +1 -0
- package/dist/agents/openclaw/gatewayManager.js +486 -0
- package/dist/agents/openclaw/gatewayManager.js.map +1 -0
- package/dist/agents/openclaw/openclawProvider.d.ts.map +1 -0
- package/dist/agents/openclaw/openclawProvider.js +237 -0
- package/dist/agents/openclaw/openclawProvider.js.map +1 -0
- package/dist/agents/openclaw/sshTunnelManager.d.ts +25 -0
- package/dist/agents/openclaw/sshTunnelManager.d.ts.map +1 -0
- package/dist/agents/openclaw/sshTunnelManager.js +359 -0
- package/dist/agents/openclaw/sshTunnelManager.js.map +1 -0
- package/dist/agents/types.d.ts.map +1 -0
- package/dist/agents/types.js +6 -0
- package/dist/agents/types.js.map +1 -0
- package/dist/builders/anthropic.d.ts +31 -0
- package/dist/builders/anthropic.d.ts.map +1 -0
- package/dist/builders/anthropic.js +227 -0
- package/dist/builders/anthropic.js.map +1 -0
- package/dist/builders/fireworksai.d.ts +9 -0
- package/dist/builders/fireworksai.d.ts.map +1 -0
- package/dist/builders/fireworksai.js +57 -0
- package/dist/builders/fireworksai.js.map +1 -0
- package/dist/builders/index.d.ts +13 -0
- package/dist/builders/index.d.ts.map +1 -0
- package/dist/builders/index.js +31 -0
- package/dist/builders/index.js.map +1 -0
- package/dist/builders/openai.d.ts +8 -0
- package/dist/builders/openai.d.ts.map +1 -0
- package/dist/builders/openai.js +87 -0
- package/dist/builders/openai.js.map +1 -0
- package/dist/builders/types.d.ts +54 -0
- package/dist/builders/types.d.ts.map +1 -0
- package/dist/builders/types.js +211 -0
- package/dist/builders/types.js.map +1 -0
- package/dist/connectors/index.d.ts.map +1 -1
- package/dist/connectors/index.js +3 -2
- package/dist/connectors/index.js.map +1 -1
- package/dist/connectors/registry.d.ts +2 -1
- package/dist/connectors/registry.d.ts.map +1 -1
- package/dist/connectors/registry.js +65 -96
- package/dist/connectors/registry.js.map +1 -1
- package/dist/connectors/types.d.ts.map +1 -1
- package/dist/customizer/Customizer.d.ts +57 -0
- package/dist/customizer/Customizer.d.ts.map +1 -0
- package/dist/customizer/Customizer.js +124 -0
- package/dist/customizer/Customizer.js.map +1 -0
- package/dist/customizer/index.d.ts.map +1 -0
- package/dist/customizer/index.js +9 -0
- package/dist/customizer/index.js.map +1 -0
- package/dist/files.d.ts +17 -0
- package/dist/files.d.ts.map +1 -1
- package/dist/files.js +75 -1
- package/dist/files.js.map +1 -1
- 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 +10 -6
- package/dist/init.d.ts.map +1 -1
- package/dist/init.js +97 -86
- package/dist/init.js.map +1 -1
- package/dist/migrations.d.ts.map +1 -1
- package/dist/migrations.js +142 -145
- package/dist/migrations.js.map +1 -1
- package/dist/models/anthropic.d.ts +24 -0
- package/dist/models/anthropic.d.ts.map +1 -0
- package/dist/models/anthropic.js +103 -0
- package/dist/models/anthropic.js.map +1 -0
- package/dist/models/chainOfThought.d.ts.map +1 -0
- package/dist/models/chainOfThought.js +45 -0
- package/dist/models/chainOfThought.js.map +1 -0
- package/dist/models/fireworksai.d.ts.map +1 -0
- package/dist/models/fireworksai.js +141 -0
- package/dist/models/fireworksai.js.map +1 -0
- package/dist/models/index.d.ts +7 -1
- package/dist/models/index.d.ts.map +1 -1
- package/dist/models/index.js +20 -1
- package/dist/models/index.js.map +1 -1
- package/dist/models/logCompletePrompt.d.ts.map +1 -0
- package/dist/models/logCompletePrompt.js +23 -0
- package/dist/models/logCompletePrompt.js.map +1 -0
- package/dist/models/openai.d.ts +24 -0
- package/dist/models/openai.d.ts.map +1 -0
- package/dist/models/openai.js +101 -0
- package/dist/models/openai.js.map +1 -0
- package/dist/models/providers.d.ts.map +1 -1
- package/dist/models/providers.js +12 -4
- package/dist/models/providers.js.map +1 -1
- package/dist/models/types.d.ts +53 -2
- package/dist/models/types.d.ts.map +1 -1
- package/dist/models/types.js +21 -0
- package/dist/models/types.js.map +1 -1
- package/dist/models/utils.d.ts.map +1 -0
- package/dist/models/utils.js +21 -0
- package/dist/models/utils.js.map +1 -0
- package/dist/pages.d.ts +30 -7
- package/dist/pages.d.ts.map +1 -1
- package/dist/pages.js +177 -55
- package/dist/pages.js.map +1 -1
- package/dist/scripts.d.ts.map +1 -1
- package/dist/scripts.js +4 -3
- package/dist/scripts.js.map +1 -1
- package/dist/service/createCompletePrompt.d.ts.map +1 -1
- package/dist/service/createCompletePrompt.js +9 -6
- package/dist/service/createCompletePrompt.js.map +1 -1
- package/dist/service/generateImage.d.ts.map +1 -1
- package/dist/service/generateImage.js +3 -3
- package/dist/service/generateImage.js.map +1 -1
- package/dist/service/server.d.ts.map +1 -1
- package/dist/service/server.js +39 -7
- package/dist/service/server.js.map +1 -1
- package/dist/service/transformPage.d.ts +47 -18
- package/dist/service/transformPage.d.ts.map +1 -1
- package/dist/service/transformPage.js +559 -270
- package/dist/service/transformPage.js.map +1 -1
- package/dist/service/useAgentRoutes.d.ts +5 -0
- package/dist/service/useAgentRoutes.d.ts.map +1 -0
- package/dist/service/useAgentRoutes.js +392 -0
- package/dist/service/useAgentRoutes.js.map +1 -0
- package/dist/service/useApiRoutes.d.ts.map +1 -1
- package/dist/service/useApiRoutes.js +380 -138
- package/dist/service/useApiRoutes.js.map +1 -1
- package/dist/service/useConnectorRoutes.d.ts.map +1 -1
- package/dist/service/useConnectorRoutes.js +20 -9
- package/dist/service/useConnectorRoutes.js.map +1 -1
- package/dist/service/useFileRoutes.d.ts +4 -0
- package/dist/service/useFileRoutes.d.ts.map +1 -0
- package/dist/service/useFileRoutes.js +122 -0
- package/dist/service/useFileRoutes.js.map +1 -0
- package/dist/service/usePageRoutes.d.ts.map +1 -1
- package/dist/service/usePageRoutes.js +660 -68
- package/dist/service/usePageRoutes.js.map +1 -1
- package/dist/service/useSharedDataRoutes.d.ts +4 -0
- package/dist/service/useSharedDataRoutes.d.ts.map +1 -0
- package/dist/service/useSharedDataRoutes.js +104 -0
- package/dist/service/useSharedDataRoutes.js.map +1 -0
- package/dist/service/useSharedFileRoutes.d.ts +4 -0
- package/dist/service/useSharedFileRoutes.d.ts.map +1 -0
- package/dist/service/useSharedFileRoutes.js +121 -0
- package/dist/service/useSharedFileRoutes.js.map +1 -0
- package/dist/settings.d.ts +3 -1
- package/dist/settings.d.ts.map +1 -1
- package/dist/settings.js +5 -8
- package/dist/settings.js.map +1 -1
- package/dist/synthos-cli.d.ts.map +1 -1
- package/dist/synthos-cli.js +4 -3
- package/dist/synthos-cli.js.map +1 -1
- package/dist/themes.d.ts +15 -0
- package/dist/themes.d.ts.map +1 -1
- package/dist/themes.js +106 -20
- package/dist/themes.js.map +1 -1
- package/migration-rules/v1-to-v2.md +193 -0
- package/migration-rules/v2-to-v3.md +481 -0
- package/package.json +15 -11
- package/required-pages/builder/page.html +43 -0
- package/required-pages/builder/page.json +10 -0
- package/required-pages/pages/page.html +924 -0
- package/required-pages/pages/page.json +10 -0
- package/required-pages/settings/page.html +1753 -0
- package/required-pages/settings/page.json +10 -0
- package/required-pages/synthos_apis/page.html +846 -0
- package/required-pages/synthos_apis/page.json +10 -0
- package/required-pages/{synthos_scripts.html → synthos_scripts/page.html} +13 -11
- package/required-pages/synthos_scripts/page.json +10 -0
- package/service-connectors/airtable/connector.json +27 -0
- package/service-connectors/alpha-vantage/connector.json +26 -0
- package/service-connectors/brave-search/connector.json +26 -0
- package/service-connectors/cloudinary/connector.json +27 -0
- package/service-connectors/deepl/connector.json +28 -0
- package/service-connectors/elevenlabs/connector.json +30 -0
- package/service-connectors/giphy/connector.json +27 -0
- package/service-connectors/github/connector.json +29 -0
- package/service-connectors/huggingface/connector.json +27 -0
- package/service-connectors/imgur/connector.json +29 -0
- package/service-connectors/instagram/connector.json +43 -0
- package/service-connectors/jira/connector.json +28 -0
- package/service-connectors/mapbox/connector.json +26 -0
- package/service-connectors/nasa/connector.json +27 -0
- package/service-connectors/newsapi/connector.json +27 -0
- package/service-connectors/notion/connector.json +28 -0
- package/service-connectors/open-exchange-rates/connector.json +27 -0
- package/service-connectors/openweathermap/connector.json +26 -0
- package/service-connectors/pexels/connector.json +27 -0
- package/service-connectors/resend/connector.json +29 -0
- package/service-connectors/rss2json/connector.json +27 -0
- package/service-connectors/sendgrid/connector.json +27 -0
- package/service-connectors/spoonacular/connector.json +28 -0
- package/service-connectors/stability-ai/connector.json +27 -0
- package/service-connectors/twilio/connector.json +28 -0
- package/service-connectors/unsplash/connector.json +27 -0
- package/service-connectors/wolfram-alpha/connector.json +26 -0
- package/service-connectors/youtube-data/connector.json +30 -0
- package/src/agents/a2a/a2aProvider.ts +110 -0
- package/src/agents/discovery.ts +74 -0
- package/src/agents/index.ts +6 -0
- package/src/agents/openclaw/gatewayManager.ts +570 -0
- package/src/agents/openclaw/openclawProvider.ts +259 -0
- package/src/agents/openclaw/sshTunnelManager.ts +393 -0
- package/src/agents/types.ts +82 -0
- package/src/builders/anthropic.ts +283 -0
- package/src/builders/fireworksai.ts +59 -0
- package/src/builders/index.ts +33 -0
- package/src/builders/openai.ts +89 -0
- package/src/builders/types.ts +261 -0
- package/src/connectors/index.ts +3 -1
- package/src/connectors/registry.ts +40 -96
- package/src/connectors/types.ts +25 -0
- package/src/customizer/Customizer.ts +151 -0
- package/src/customizer/index.ts +5 -0
- package/src/files.ts +71 -0
- package/src/index.ts +2 -1
- package/src/init.ts +138 -97
- package/src/migrations.ts +148 -145
- package/src/models/anthropic.ts +119 -0
- package/src/models/chainOfThought.ts +56 -0
- package/src/models/fireworksai.ts +143 -0
- package/src/models/index.ts +7 -1
- package/src/models/logCompletePrompt.ts +25 -0
- package/src/models/openai.ts +110 -0
- package/src/models/providers.ts +12 -3
- package/src/models/types.ts +97 -2
- package/src/models/utils.ts +16 -0
- package/src/pages.ts +176 -54
- package/src/scripts.ts +2 -2
- package/src/service/createCompletePrompt.ts +3 -1
- package/src/service/generateImage.ts +2 -2
- package/src/service/server.ts +39 -8
- package/src/service/transformPage.ts +605 -301
- package/src/service/useAgentRoutes.ts +428 -0
- package/src/service/useApiRoutes.ts +309 -45
- package/src/service/useConnectorRoutes.ts +21 -10
- package/src/service/useFileRoutes.ts +127 -0
- package/src/service/usePageRoutes.ts +736 -75
- package/src/service/useSharedDataRoutes.ts +106 -0
- package/src/service/useSharedFileRoutes.ts +126 -0
- package/src/settings.ts +8 -10
- package/src/synthos-cli.ts +4 -3
- package/src/themes.ts +103 -20
- package/static-files/favicon.svg +12 -0
- package/static-files/fluentlm-instructions.llmd +868 -0
- package/static-files/fluentlm-instructions.md +1595 -0
- package/static-files/fluentlm.css +4844 -0
- package/static-files/fluentlm.js +3602 -0
- package/static-files/fluentlm.min.css +1 -0
- package/static-files/fluentlm.min.js +1 -0
- package/static-files/helpers.v3.js +304 -0
- package/static-files/page.v3.js +1290 -0
- package/static-files/recommended-frameworks.llmd +81 -0
- package/static-files/recommended-frameworks.md +137 -0
- package/static-files/retro-game.js +877 -0
- package/static-files/shell.css +797 -0
- package/static-files/theme-dark.css +169 -0
- package/static-files/theme-light.css +169 -0
- package/tests/anthropic.spec.ts +84 -0
- package/tests/builders.spec.ts +139 -0
- package/tests/chainOfThought.spec.ts +108 -0
- package/tests/ensureScripts.spec.ts +82 -0
- package/tests/files.spec.ts +233 -0
- package/tests/fireworksai.spec.ts +92 -0
- package/tests/logCompletePrompt.spec.ts +74 -0
- package/tests/migrations.spec.ts +79 -1
- package/tests/openai.spec.ts +71 -0
- package/tests/pages.spec.ts +226 -1
- package/tests/providers.spec.ts +144 -0
- package/tests/scripts.spec.ts +209 -0
- package/tests/transformPage.spec.ts +456 -0
- package/tests/types.spec.ts +23 -0
- package/default-pages/app_builder.html +0 -40
- package/default-pages/app_builder.json +0 -1
- package/default-pages/json_tools.json +0 -1
- package/default-pages/my_notes.html +0 -33
- package/default-pages/neon_asteroids.html +0 -77
- package/default-pages/sidebar_builder.json +0 -1
- package/default-pages/solar_tutorial.json +0 -1
- package/default-pages/two-panel_builder.json +0 -1
- package/dist/connectors/index.d.ts +0 -3
- package/dist/connectors/types.d.ts +0 -61
- package/dist/index.d.ts +0 -7
- package/dist/migrations.d.ts +0 -11
- package/dist/models/providers.d.ts +0 -7
- package/dist/scripts.d.ts +0 -14
- package/dist/service/createCompletePrompt.d.ts +0 -5
- package/dist/service/debugLog.d.ts +0 -11
- package/dist/service/generateImage.d.ts +0 -32
- package/dist/service/index.d.ts +0 -8
- package/dist/service/modelInstructions.d.ts +0 -7
- package/dist/service/requiresSettings.d.ts +0 -3
- package/dist/service/server.d.ts +0 -4
- package/dist/service/useApiRoutes.d.ts +0 -4
- package/dist/service/useConnectorRoutes.d.ts +0 -4
- package/dist/service/useDataRoutes.d.ts +0 -4
- package/dist/service/usePageRoutes.d.ts +0 -5
- package/dist/synthos-cli.d.ts +0 -2
- package/images/home.png +0 -0
- package/images/page-management.png +0 -0
- package/images/settings.png +0 -0
- package/images/synthos-square.png +0 -0
- package/page-scripts/helpers-v2.js +0 -121
- package/page-scripts/page-v2.js +0 -615
- package/required-pages/builder.html +0 -74
- package/required-pages/builder.json +0 -1
- package/required-pages/pages.html +0 -196
- package/required-pages/pages.json +0 -1
- package/required-pages/settings.html +0 -841
- package/required-pages/settings.json +0 -1
- package/required-pages/synthos_apis.html +0 -272
- package/required-pages/synthos_apis.json +0 -1
- package/required-pages/synthos_scripts.json +0 -1
package/dist/migrations.js
CHANGED
|
@@ -22,9 +22,14 @@ var __importStar = (this && this.__importStar) || function (mod) {
|
|
|
22
22
|
__setModuleDefault(result, mod);
|
|
23
23
|
return result;
|
|
24
24
|
};
|
|
25
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
26
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
27
|
+
};
|
|
25
28
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
26
29
|
exports.postProcessV2 = exports.migratePage = void 0;
|
|
27
30
|
const cheerio = __importStar(require("cheerio"));
|
|
31
|
+
const fs = __importStar(require("fs/promises"));
|
|
32
|
+
const path_1 = __importDefault(require("path"));
|
|
28
33
|
const transformPage_1 = require("./service/transformPage");
|
|
29
34
|
/**
|
|
30
35
|
* Registry of migration functions: fromVersion -> transform.
|
|
@@ -32,6 +37,7 @@ const transformPage_1 = require("./service/transformPage");
|
|
|
32
37
|
*/
|
|
33
38
|
const migrations = {
|
|
34
39
|
1: migrateV1toV2,
|
|
40
|
+
2: migrateV2toV3,
|
|
35
41
|
};
|
|
36
42
|
/**
|
|
37
43
|
* Migrate a page's HTML from one version to another by applying
|
|
@@ -49,161 +55,76 @@ async function migratePage(html, fromVersion, toVersion, completePrompt) {
|
|
|
49
55
|
return current;
|
|
50
56
|
}
|
|
51
57
|
exports.migratePage = migratePage;
|
|
52
|
-
/** CSS
|
|
58
|
+
/** CSS selectors provided by the shared theme — used by post-processing to strip leftovers. */
|
|
53
59
|
const SHARED_CSS_SELECTORS = [
|
|
54
|
-
|
|
55
|
-
'body',
|
|
56
|
-
|
|
57
|
-
'.chat-header',
|
|
58
|
-
'.chat-
|
|
59
|
-
'.chat-message',
|
|
60
|
-
'.chat-message p',
|
|
61
|
-
'.chat-message strong',
|
|
62
|
-
'.chat-message pre',
|
|
63
|
-
'.chat-message code',
|
|
64
|
-
'.chat-message a',
|
|
65
|
-
'.link-group',
|
|
66
|
-
'.link-group a',
|
|
60
|
+
// Base
|
|
61
|
+
':root', '*', 'body', 'html',
|
|
62
|
+
// Chat panel
|
|
63
|
+
'.chat-panel', '.chat-header', '.chat-messages',
|
|
64
|
+
'.chat-message', '.chat-message p', '.chat-message p strong', '.chat-message p code',
|
|
65
|
+
'.chat-message strong', '.chat-message pre', '.chat-message code', '.chat-message a',
|
|
67
66
|
'form',
|
|
68
|
-
'.chat-input',
|
|
69
|
-
'.chat-submit',
|
|
70
|
-
'.
|
|
71
|
-
|
|
72
|
-
'.viewer-panel',
|
|
73
|
-
|
|
74
|
-
'.
|
|
75
|
-
|
|
67
|
+
'.chat-input', '.chat-input:focus', '.chat-input::placeholder', '.chat-input:disabled',
|
|
68
|
+
'.chat-submit', '.chat-submit:hover', '.chat-submit:active', '.chat-submit:disabled',
|
|
69
|
+
'.chat-input-wrapper', '.chat-input-wrapper .chat-input',
|
|
70
|
+
// Viewer panel
|
|
71
|
+
'.viewer-panel', '.viewer-panel::before', '.viewer-panel.full-viewer',
|
|
72
|
+
// Loading
|
|
73
|
+
'.loading-overlay', '.spinner', '#loadingOverlay',
|
|
74
|
+
// Chat toggle
|
|
75
|
+
'.chat-toggle', '.chat-toggle:hover', '.chat-toggle-dots', '.chat-toggle-dot',
|
|
76
|
+
'.chat-toggle:hover .chat-toggle-dot',
|
|
77
|
+
'body.chat-collapsed .chat-panel', 'body.chat-collapsed .chat-toggle',
|
|
78
|
+
// Modal system
|
|
79
|
+
'.modal-overlay', '.modal-overlay.show', '.modal-content', '.modal-header',
|
|
80
|
+
'.modal-body', '.modal-footer', '.modal-footer-right',
|
|
81
|
+
'.modal-btn', '.modal-btn-primary', '.modal-btn-primary:hover',
|
|
82
|
+
'.modal-btn-secondary', '.modal-btn-secondary:hover',
|
|
83
|
+
'.modal-btn-danger', '.modal-btn-danger:hover',
|
|
84
|
+
// Form elements
|
|
85
|
+
'.form-group', '.form-group:last-child', '.form-label',
|
|
86
|
+
'.form-input', '.form-input:focus', '.form-input:read-only', '.form-input::placeholder',
|
|
87
|
+
'.checkbox-label', '.checkbox-label input[type="checkbox"]', '.checkbox-label span',
|
|
88
|
+
// Brainstorm
|
|
89
|
+
'.brainstorm-icon-btn', '.brainstorm-icon-btn:hover',
|
|
90
|
+
'.brainstorm-modal .modal-content', '.brainstorm-modal .modal-header',
|
|
91
|
+
'.brainstorm-close-btn', '.brainstorm-close-btn:hover',
|
|
92
|
+
'.brainstorm-messages', '.brainstorm-message', '.brainstorm-user', '.brainstorm-assistant',
|
|
93
|
+
'.brainstorm-input-row', '.brainstorm-input', '.brainstorm-input:focus', '.brainstorm-input::placeholder',
|
|
94
|
+
'.brainstorm-send-btn', '.brainstorm-send-btn:hover', '.brainstorm-send-btn:disabled',
|
|
95
|
+
'.brainstorm-assistant p', '.brainstorm-assistant pre', '.brainstorm-assistant code',
|
|
96
|
+
'.brainstorm-build-row', '.brainstorm-build-btn', '.brainstorm-build-btn:hover',
|
|
97
|
+
'.brainstorm-suggestions', '.brainstorm-suggestion-chip',
|
|
98
|
+
'.brainstorm-suggestion-chip:hover', '.brainstorm-suggestion-chip:disabled',
|
|
99
|
+
'.brainstorm-thinking',
|
|
76
100
|
];
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
## Rules — What to REMOVE
|
|
80
|
-
|
|
81
|
-
1. **Shared CSS rules** — Remove CSS rules that match these selectors **exactly** (they are now in theme.css):
|
|
82
|
-
\`*\`, \`body\`, \`.chat-panel\`, \`.chat-header\`, \`.chat-messages\`, \`.chat-message\` (and descendants like \`.chat-message p\`, \`.chat-message strong\`, \`.chat-message pre\`, \`.chat-message code\`, \`.chat-message a\`), \`.link-group\`, \`.link-group a\`, \`form\`, \`.chat-input\`, \`.chat-submit\`, \`.loading-overlay\`, \`.spinner\`, \`.viewer-panel\`, \`#loadingOverlay\`, \`.chat-submit:disabled\`, \`.chat-input:disabled\`
|
|
83
|
-
Also remove any \`@keyframes spin\` and scrollbar pseudo-element rules (\`::-webkit-scrollbar\`, \`::-webkit-scrollbar-track\`, \`::-webkit-scrollbar-thumb\`).
|
|
84
|
-
**Important:** Only remove rules matching these selectors exactly. Do NOT remove pseudo-element variants (\`.viewer-panel::before\`, \`.viewer-panel::after\`), pseudo-class variants (\`.chat-input:focus\`, \`.chat-submit:hover\`), or any other compound selectors that extend the shared selectors — those are page-specific styles and must be preserved. Also preserve any \`@keyframes\` referenced by page-specific rules (e.g. if a page has \`.viewer-panel::before\` using a custom animation, keep that \`@keyframes\`).
|
|
85
|
-
|
|
86
|
-
2. **Shared inline JS** — Remove these specific code blocks from \`<script>\` tags:
|
|
87
|
-
- \`document.getElementById('chatInput').focus()\` line
|
|
88
|
-
- \`chatForm\` submit event listener (the one with setTimeout and loading overlay)
|
|
89
|
-
- \`saveLink\` click handler
|
|
90
|
-
- \`resetLink\` click handler
|
|
91
|
-
- \`window.onload\` that ONLY scrolls chatMessages (keep other onload logic!)
|
|
92
|
-
- Chat panel toggle IIFE (references \`synthos-chat-collapsed\`)
|
|
93
|
-
- Focus management IIFE (references \`stopImmediatePropagation\`)
|
|
94
|
-
- \`// Basic chat functionality\` comment
|
|
95
|
-
|
|
96
|
-
3. **Empty \`<script>\` tags** — If a script block becomes empty after stripping, remove it entirely.
|
|
97
|
-
|
|
98
|
-
## Rules — What to ADD
|
|
99
|
-
|
|
100
|
-
1. In \`<head>\`, add these two lines right after the \`<title>\` tag (if not already present):
|
|
101
|
-
\`\`\`
|
|
102
|
-
<script src="/api/theme-info.js"></script>
|
|
103
|
-
<link rel="stylesheet" href="/api/theme.css">
|
|
104
|
-
\`\`\`
|
|
105
|
-
|
|
106
|
-
## Rules — What to TRANSFORM
|
|
107
|
-
|
|
108
|
-
### Data/Table API migration
|
|
109
|
-
The data API changed from global tables to **page-scoped** tables:
|
|
110
|
-
- Old: \`/api/data/:table\` → New: \`/api/data/:page/:table\`
|
|
111
|
-
- Old: \`/api/data/:table/:id\` → New: \`/api/data/:page/:table/:id\`
|
|
112
|
-
- Tables are now stored as sub-folders of each page's folder.
|
|
113
|
-
- **Raw fetch() calls** must be updated: e.g. \`fetch('/api/data/notes')\` → \`fetch('/api/data/' + pageName + '/notes')\`
|
|
114
|
-
- **synthos.data.\* helpers** handle this automatically — they read the current page name from \`window.pageInfo.name\`. Prefer converting raw fetch data calls to use the helpers instead:
|
|
115
|
-
- \`fetch('/api/data/notes')\` → \`synthos.data.list('notes')\`
|
|
116
|
-
- \`fetch('/api/data/notes/' + id)\` → \`synthos.data.get('notes', id)\`
|
|
117
|
-
- \`fetch('/api/data/notes', { method: 'POST', ... })\` → \`synthos.data.save('notes', row)\`
|
|
118
|
-
- \`fetch('/api/data/notes/' + id, { method: 'DELETE' })\` → \`synthos.data.remove('notes', id)\`
|
|
119
|
-
|
|
120
|
-
### Color variables
|
|
121
|
-
Replace hardcoded Nebula Dusk colors with CSS variables in **page-specific** CSS only:
|
|
122
|
-
| Hardcoded | CSS Variable |
|
|
123
|
-
|-----------|-------------|
|
|
124
|
-
| \`#667eea\` | \`var(--accent-primary)\` |
|
|
125
|
-
| \`#764ba2\` | \`var(--accent-secondary)\` |
|
|
126
|
-
| \`#f093fb\` | \`var(--accent-tertiary)\` |
|
|
127
|
-
| \`#b794f6\` | \`var(--text-secondary)\` |
|
|
128
|
-
| \`#e0e0e0\` | \`var(--text-primary)\` |
|
|
129
|
-
| \`rgba(138, 43, 226, 0.3)\` or similar purple rgba | \`var(--border-color)\` or \`var(--accent-glow)\` (use border-color for borders, accent-glow for shadows) |
|
|
130
|
-
| \`#1a1a2e\` | \`var(--bg-primary)\` |
|
|
131
|
-
| \`#16213e\` | \`var(--bg-secondary)\` |
|
|
132
|
-
| \`#0f0f23\` | \`var(--bg-tertiary)\` |
|
|
133
|
-
|
|
134
|
-
For gradients using these colors (e.g. \`linear-gradient(135deg, #667eea, #764ba2)\`), replace with \`linear-gradient(135deg, var(--accent-primary), var(--accent-secondary))\`.
|
|
135
|
-
|
|
136
|
-
## Rules — What to PRESERVE (do NOT modify)
|
|
137
|
-
|
|
138
|
-
- ALL viewer-panel HTML content (games, presentations, tools, etc.)
|
|
139
|
-
- ALL page-specific JavaScript (game logic, presentation logic, keyboard handlers, etc.)
|
|
140
|
-
- ALL page-specific CSS (game styles, presentation styles, layout rules for non-shared classes)
|
|
141
|
-
- Chat message history in \`.chat-messages\`
|
|
142
|
-
- \`<div id="thoughts">\` content
|
|
143
|
-
- External CDN script tags (\`<script src="...">\`)
|
|
144
|
-
- The two-panel layout structure (chat-panel + viewer-panel)
|
|
145
|
-
- The \`<div id="loadingOverlay" class="loading-overlay"><div class="spinner"></div></div>\` element
|
|
146
|
-
- The chat form, link-group, chat-header elements (structure only, their CSS is handled by theme)
|
|
147
|
-
|
|
148
|
-
## V2 page structure example
|
|
149
|
-
|
|
150
|
-
\`\`\`html
|
|
151
|
-
<!DOCTYPE html>
|
|
152
|
-
<html lang="en">
|
|
153
|
-
<head>
|
|
154
|
-
<meta charset="UTF-8">
|
|
155
|
-
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
156
|
-
<title>SynthOS - Page Title</title>
|
|
157
|
-
<script src="/api/theme-info.js"></script>
|
|
158
|
-
<link rel="stylesheet" href="/api/theme.css">
|
|
159
|
-
<style>
|
|
160
|
-
/* Only page-specific styles here — no shared chat/layout CSS */
|
|
161
|
-
.my-custom-element {
|
|
162
|
-
color: var(--text-primary);
|
|
163
|
-
background: var(--bg-secondary);
|
|
164
|
-
}
|
|
165
|
-
</style>
|
|
166
|
-
<!-- external CDN scripts if needed -->
|
|
167
|
-
</head>
|
|
168
|
-
<body>
|
|
101
|
+
/** Default chat panel HTML — restored by post-processing if the LLM removes it. */
|
|
102
|
+
const DEFAULT_CHAT_PANEL = `
|
|
169
103
|
<div class="chat-panel">
|
|
170
104
|
<div class="chat-header">SynthOS</div>
|
|
171
105
|
<div class="chat-messages" id="chatMessages">
|
|
172
|
-
|
|
173
|
-
</div>
|
|
174
|
-
<div class="link-group">
|
|
175
|
-
<a href="#" id="saveLink">Save</a>
|
|
176
|
-
<a href="/pages" id="pagesLink">Pages</a>
|
|
177
|
-
<a href="#" id="resetLink">Reset</a>
|
|
106
|
+
<div class="chat-message"><p>Welcome! How can I help you?</p></div>
|
|
178
107
|
</div>
|
|
179
108
|
<form action="/" method="POST" id="chatForm">
|
|
180
|
-
<
|
|
181
|
-
<button type="submit" class="chat-submit">Send</button>
|
|
109
|
+
<textarea class="chat-input" id="chatInput" name="message" rows="2" placeholder="Type a message..."></textarea>
|
|
182
110
|
</form>
|
|
183
|
-
</div
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
</script>
|
|
192
|
-
</body>
|
|
193
|
-
</html>
|
|
194
|
-
\`\`\`
|
|
195
|
-
|
|
196
|
-
## Output format
|
|
197
|
-
|
|
198
|
-
Return ONLY the complete migrated HTML. No markdown fences, no explanation, no commentary. Just the raw HTML starting with \`<!DOCTYPE html>\`.`;
|
|
111
|
+
</div>`;
|
|
112
|
+
/**
|
|
113
|
+
* Load migration rules from the migration-rules/ folder.
|
|
114
|
+
*/
|
|
115
|
+
async function loadMigrationRules(filename) {
|
|
116
|
+
const rulesPath = path_1.default.join(__dirname, '..', 'migration-rules', filename);
|
|
117
|
+
return await fs.readFile(rulesPath, 'utf8');
|
|
118
|
+
}
|
|
199
119
|
/**
|
|
200
120
|
* v1 -> v2: LLM-based migration that strips shared code and adds theme support.
|
|
201
121
|
* Post-processes with cheerio to verify critical elements are present.
|
|
202
122
|
*/
|
|
203
123
|
async function migrateV1toV2(html, completePrompt) {
|
|
204
|
-
const
|
|
124
|
+
const rules = await loadMigrationRules('v1-to-v2.md');
|
|
125
|
+
const system = { role: 'system', content: rules };
|
|
205
126
|
const prompt = { role: 'user', content: `Convert this v1 page to v2 format:\n\n${html}` };
|
|
206
|
-
const result = await completePrompt({ prompt, system
|
|
127
|
+
const result = await completePrompt({ prompt, system });
|
|
207
128
|
if (!result.completed || !result.value) {
|
|
208
129
|
throw new Error('LLM migration failed: ' + (result.error?.message ?? 'no response'));
|
|
209
130
|
}
|
|
@@ -213,14 +134,89 @@ async function migrateV1toV2(html, completePrompt) {
|
|
|
213
134
|
migrated = migrated.replace(/^```(?:html)?\s*\n?/, '').replace(/\n?```\s*$/, '');
|
|
214
135
|
}
|
|
215
136
|
// Post-process with cheerio to verify and fix critical elements
|
|
216
|
-
migrated = postProcessV2(migrated);
|
|
137
|
+
migrated = postProcessV2(migrated, html);
|
|
217
138
|
return migrated;
|
|
218
139
|
}
|
|
140
|
+
/**
|
|
141
|
+
* v2 -> v3: Cheerio-based migration (no LLM).
|
|
142
|
+
* - Removes .link-group div
|
|
143
|
+
* - Converts chat <input> to <textarea>
|
|
144
|
+
* - Removes .chat-submit button (v3 creates it dynamically)
|
|
145
|
+
*/
|
|
146
|
+
async function migrateV2toV3(html, _completePrompt) {
|
|
147
|
+
const $ = cheerio.load(html, { decodeEntities: false });
|
|
148
|
+
// 1. Remove .link-group div and its children
|
|
149
|
+
$('.link-group').remove();
|
|
150
|
+
// 2. Replace <input type="text" id="chatInput" ...> with <textarea>
|
|
151
|
+
const chatInput = $('input#chatInput, input.chat-input');
|
|
152
|
+
if (chatInput.length > 0) {
|
|
153
|
+
chatInput.replaceWith('<textarea class="chat-input" id="chatInput" name="message" rows="2" placeholder="Type a message..."></textarea>');
|
|
154
|
+
}
|
|
155
|
+
// 3. Remove .chat-submit button inside #chatForm (or anywhere)
|
|
156
|
+
$('button.chat-submit').remove();
|
|
157
|
+
// Run through postProcessV2 to ensure structural integrity
|
|
158
|
+
return postProcessV2($.html());
|
|
159
|
+
}
|
|
219
160
|
/**
|
|
220
161
|
* Cheerio-based post-processing to verify the LLM output meets v2 requirements.
|
|
162
|
+
* Uses the original HTML as a fallback source for critical elements.
|
|
221
163
|
*/
|
|
222
|
-
function postProcessV2(html) {
|
|
164
|
+
function postProcessV2(html, originalHtml) {
|
|
223
165
|
const $ = cheerio.load(html, { decodeEntities: false });
|
|
166
|
+
const $original = originalHtml ? cheerio.load(originalHtml, { decodeEntities: false }) : null;
|
|
167
|
+
// --- Critical structural checks ---
|
|
168
|
+
// Ensure chat-panel exists with chatForm
|
|
169
|
+
if ($('#chatForm').length === 0) {
|
|
170
|
+
if ($('.chat-panel').length > 0) {
|
|
171
|
+
// Chat panel exists but form is missing — restore form from original or default
|
|
172
|
+
const originalForm = $original?.('#chatForm').parent('.chat-panel');
|
|
173
|
+
if (originalForm && originalForm.length > 0) {
|
|
174
|
+
$('.chat-panel').replaceWith(originalForm.html());
|
|
175
|
+
}
|
|
176
|
+
else {
|
|
177
|
+
// Append default form
|
|
178
|
+
$('.chat-panel').append(`
|
|
179
|
+
<form action="/" method="POST" id="chatForm">
|
|
180
|
+
<textarea class="chat-input" id="chatInput" name="message" rows="2" placeholder="Type a message..."></textarea>
|
|
181
|
+
</form>`);
|
|
182
|
+
}
|
|
183
|
+
}
|
|
184
|
+
else {
|
|
185
|
+
// Entire chat panel is missing — restore from original or use default
|
|
186
|
+
const originalPanel = $original?.('.chat-panel');
|
|
187
|
+
if (originalPanel && originalPanel.length > 0) {
|
|
188
|
+
$('body').prepend($.html(originalPanel));
|
|
189
|
+
}
|
|
190
|
+
else {
|
|
191
|
+
$('body').prepend(DEFAULT_CHAT_PANEL);
|
|
192
|
+
}
|
|
193
|
+
}
|
|
194
|
+
}
|
|
195
|
+
// Ensure thoughts div exists
|
|
196
|
+
if ($('#thoughts').length === 0) {
|
|
197
|
+
const originalThoughts = $original?.('#thoughts');
|
|
198
|
+
if (originalThoughts && originalThoughts.length > 0) {
|
|
199
|
+
$('body').append($.html(originalThoughts));
|
|
200
|
+
}
|
|
201
|
+
else {
|
|
202
|
+
$('body').append('<div id="thoughts" style="display: none;"></div>');
|
|
203
|
+
}
|
|
204
|
+
}
|
|
205
|
+
// Ensure loadingOverlay exists inside viewer-panel
|
|
206
|
+
const overlay = $('#loadingOverlay');
|
|
207
|
+
const viewerPanel = $('.viewer-panel');
|
|
208
|
+
if (overlay.length === 0 && viewerPanel.length > 0) {
|
|
209
|
+
viewerPanel.append('<div id="loadingOverlay" class="loading-overlay"><div class="spinner"></div></div>');
|
|
210
|
+
}
|
|
211
|
+
else if (overlay.length > 0 && viewerPanel.length > 0) {
|
|
212
|
+
// Move inside viewer-panel if it's outside
|
|
213
|
+
if (overlay.closest('.viewer-panel').length === 0) {
|
|
214
|
+
const overlayHtml = $.html(overlay);
|
|
215
|
+
overlay.remove();
|
|
216
|
+
viewerPanel.append(overlayHtml);
|
|
217
|
+
}
|
|
218
|
+
}
|
|
219
|
+
// --- Theme refs ---
|
|
224
220
|
// Ensure theme-info.js is in <head>
|
|
225
221
|
if ($('script[src="/api/theme-info.js"]').length === 0) {
|
|
226
222
|
const titleEl = $('title');
|
|
@@ -241,7 +237,7 @@ function postProcessV2(html) {
|
|
|
241
237
|
$('head').append('<link rel="stylesheet" href="/api/theme.css">\n');
|
|
242
238
|
}
|
|
243
239
|
}
|
|
244
|
-
//
|
|
240
|
+
// --- Strip leftover shared CSS ---
|
|
245
241
|
$('style').each(function (_, el) {
|
|
246
242
|
let css = $(el).html() ?? '';
|
|
247
243
|
for (const selector of SHARED_CSS_SELECTORS) {
|
|
@@ -251,10 +247,11 @@ function postProcessV2(html) {
|
|
|
251
247
|
const pattern = new RegExp(`(?:^|\\n)\\s*${escaped}\\s*\\{[^}]*\\}`, 'g');
|
|
252
248
|
css = css.replace(pattern, '');
|
|
253
249
|
}
|
|
254
|
-
// Remove @keyframes spin
|
|
250
|
+
// Remove @keyframes spin and nebula-pulse
|
|
255
251
|
css = css.replace(/@keyframes\s+spin\s*\{[^}]*(?:\{[^}]*\}[^}]*)*\}/g, '');
|
|
252
|
+
css = css.replace(/@keyframes\s+nebula-pulse\s*\{[^}]*(?:\{[^}]*\}[^}]*)*\}/g, '');
|
|
256
253
|
// Remove scrollbar pseudo-element rules
|
|
257
|
-
css = css.replace(/(?:^|\n)\s*(?:\*|body|)::-webkit-scrollbar(?:-(?:track|thumb))?\s*\{[^}]*\}/g, '');
|
|
254
|
+
css = css.replace(/(?:^|\n)\s*(?:\*|body|)::-webkit-scrollbar(?:-(?:track|thumb|corner))?(?::hover)?\s*\{[^}]*\}/g, '');
|
|
258
255
|
$(el).html(css);
|
|
259
256
|
});
|
|
260
257
|
// Remove empty <style> blocks
|
package/dist/migrations.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"migrations.js","sourceRoot":"","sources":["../src/migrations.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"migrations.js","sourceRoot":"","sources":["../src/migrations.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import Anthropic from '@anthropic-ai/sdk';
|
|
2
|
+
import { completePrompt, PromptCompletionArgs } from './types';
|
|
3
|
+
export interface AnthropicArgs {
|
|
4
|
+
apiKey: string;
|
|
5
|
+
model: string;
|
|
6
|
+
baseURL?: string;
|
|
7
|
+
temperature?: number;
|
|
8
|
+
maxRetries?: number;
|
|
9
|
+
}
|
|
10
|
+
/**
|
|
11
|
+
* Build the messages array and system content for an Anthropic API request.
|
|
12
|
+
* Pure function — no SDK dependency.
|
|
13
|
+
*/
|
|
14
|
+
export declare function buildAnthropicRequest(args: PromptCompletionArgs, defaultTemp: number): {
|
|
15
|
+
messages: {
|
|
16
|
+
role: string;
|
|
17
|
+
content: string | Anthropic.ContentBlockParam[];
|
|
18
|
+
}[];
|
|
19
|
+
system: string | Anthropic.TextBlockParam[] | undefined;
|
|
20
|
+
temperature: number;
|
|
21
|
+
outputConfig?: Anthropic.OutputConfig;
|
|
22
|
+
};
|
|
23
|
+
export declare function anthropic(args: AnthropicArgs): completePrompt;
|
|
24
|
+
//# sourceMappingURL=anthropic.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"anthropic.d.ts","sourceRoot":"","sources":["../../src/models/anthropic.ts"],"names":[],"mappings":"AAAA,OAAO,SAAS,MAAM,mBAAmB,CAAC;AAC1C,OAAO,EAAmB,cAAc,EAAE,oBAAoB,EAAqC,MAAM,SAAS,CAAC;AAEnH,MAAM,WAAW,aAAa;IAC1B,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC;CACvB;AAED;;;GAGG;AACH,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,oBAAoB,EAAE,WAAW,EAAE,MAAM,GAAG;IACpF,QAAQ,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,GAAG,SAAS,CAAC,iBAAiB,EAAE,CAAA;KAAE,EAAE,CAAC;IAC9E,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,cAAc,EAAE,GAAG,SAAS,CAAC;IACxD,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,CAAC,EAAE,SAAS,CAAC,YAAY,CAAC;CACzC,CAqDA;AAED,wBAAgB,SAAS,CAAC,IAAI,EAAE,aAAa,GAAG,cAAc,CA2C7D"}
|
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.anthropic = exports.buildAnthropicRequest = void 0;
|
|
7
|
+
const sdk_1 = __importDefault(require("@anthropic-ai/sdk"));
|
|
8
|
+
const types_1 = require("./types");
|
|
9
|
+
/**
|
|
10
|
+
* Build the messages array and system content for an Anthropic API request.
|
|
11
|
+
* Pure function — no SDK dependency.
|
|
12
|
+
*/
|
|
13
|
+
function buildAnthropicRequest(args, defaultTemp) {
|
|
14
|
+
const reqTemp = args.temperature ?? defaultTemp;
|
|
15
|
+
const messages = [];
|
|
16
|
+
if (args.history) {
|
|
17
|
+
for (const msg of args.history) {
|
|
18
|
+
messages.push({ role: msg.role, content: msg.content });
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
// Build user content — multimodal when ContentBlock[] is provided
|
|
22
|
+
const promptContent = args.prompt.content;
|
|
23
|
+
let userContent;
|
|
24
|
+
if ((0, types_1.isMultimodalContent)(promptContent)) {
|
|
25
|
+
userContent = promptContent.map(block => {
|
|
26
|
+
if (block.type === 'text') {
|
|
27
|
+
return { type: 'text', text: block.text };
|
|
28
|
+
}
|
|
29
|
+
return {
|
|
30
|
+
type: 'image',
|
|
31
|
+
source: { type: 'base64', media_type: block.mediaType, data: block.data },
|
|
32
|
+
};
|
|
33
|
+
});
|
|
34
|
+
}
|
|
35
|
+
else {
|
|
36
|
+
userContent = promptContent;
|
|
37
|
+
}
|
|
38
|
+
// Structured output via output_config is incompatible with prefilling
|
|
39
|
+
const useJsonPrefill = !args.outputSchema && (args.jsonMode || args.jsonSchema);
|
|
40
|
+
if (useJsonPrefill) {
|
|
41
|
+
messages.push({ role: 'user', content: userContent });
|
|
42
|
+
messages.push({ role: 'assistant', content: '{' });
|
|
43
|
+
}
|
|
44
|
+
else {
|
|
45
|
+
messages.push({ role: 'user', content: userContent });
|
|
46
|
+
}
|
|
47
|
+
let system = args.system?.content;
|
|
48
|
+
if (args.jsonSchema) {
|
|
49
|
+
const schemaInstruction = `\n\nYou must return valid JSON conforming to this schema:\n${JSON.stringify(args.jsonSchema)}`;
|
|
50
|
+
system = system ? system + schemaInstruction : schemaInstruction;
|
|
51
|
+
}
|
|
52
|
+
// Wrap system content with cache_control for prompt caching
|
|
53
|
+
const finalSystem = (system && args.cacheSystem)
|
|
54
|
+
? [{ type: 'text', text: system, cache_control: { type: 'ephemeral' } }]
|
|
55
|
+
: system;
|
|
56
|
+
// Structured output config for constrained decoding
|
|
57
|
+
const outputConfig = args.outputSchema
|
|
58
|
+
? { format: { type: 'json_schema', schema: args.outputSchema } }
|
|
59
|
+
: undefined;
|
|
60
|
+
return { messages, system: finalSystem, temperature: reqTemp, outputConfig };
|
|
61
|
+
}
|
|
62
|
+
exports.buildAnthropicRequest = buildAnthropicRequest;
|
|
63
|
+
function anthropic(args) {
|
|
64
|
+
const { apiKey, model, baseURL, temperature = 0.0, maxRetries } = args;
|
|
65
|
+
const client = new sdk_1.default({ apiKey, baseURL, maxRetries });
|
|
66
|
+
return async (completionArgs) => {
|
|
67
|
+
const { messages, system: systemContent, temperature: reqTemp, outputConfig } = buildAnthropicRequest(completionArgs, temperature);
|
|
68
|
+
const useJsonPrefill = !completionArgs.outputSchema && (completionArgs.jsonMode || completionArgs.jsonSchema);
|
|
69
|
+
try {
|
|
70
|
+
const stream = await client.messages.create({
|
|
71
|
+
model,
|
|
72
|
+
max_tokens: 32768,
|
|
73
|
+
temperature: reqTemp,
|
|
74
|
+
system: systemContent,
|
|
75
|
+
messages: messages,
|
|
76
|
+
stream: true,
|
|
77
|
+
...(outputConfig && { output_config: outputConfig }),
|
|
78
|
+
});
|
|
79
|
+
let text = '';
|
|
80
|
+
for await (const event of stream) {
|
|
81
|
+
if (event.type === 'content_block_delta' && event.delta.type === 'text_delta') {
|
|
82
|
+
text += event.delta.text;
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
if (useJsonPrefill) {
|
|
86
|
+
text = '{' + text;
|
|
87
|
+
}
|
|
88
|
+
return { completed: true, value: text };
|
|
89
|
+
}
|
|
90
|
+
catch (err) {
|
|
91
|
+
let error;
|
|
92
|
+
if (err instanceof sdk_1.default.APIError && err.status !== undefined) {
|
|
93
|
+
error = new types_1.RequestError(err.message, err.status, err.name);
|
|
94
|
+
}
|
|
95
|
+
else {
|
|
96
|
+
error = err;
|
|
97
|
+
}
|
|
98
|
+
return { completed: false, error };
|
|
99
|
+
}
|
|
100
|
+
};
|
|
101
|
+
}
|
|
102
|
+
exports.anthropic = anthropic;
|
|
103
|
+
//# sourceMappingURL=anthropic.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"anthropic.js","sourceRoot":"","sources":["../../src/models/anthropic.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"chainOfThought.d.ts","sourceRoot":"","sources":["../../src/models/chainOfThought.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,SAAS,EAA8B,MAAM,SAAS,CAAC;AAEjF,MAAM,WAAW,eAAe;IAC5B,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,kBAAmB,SAAQ,SAAS;IACjD,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,wBAAsB,cAAc,CAAC,IAAI,EAAE,kBAAkB,GAAG,OAAO,CAAC,eAAe,CAAC,eAAe,CAAC,CAAC,CA0CxG"}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.chainOfThought = void 0;
|
|
4
|
+
async function chainOfThought(args) {
|
|
5
|
+
const { completePrompt, question, temperature, instructions } = args;
|
|
6
|
+
const systemContent = instructions
|
|
7
|
+
? `${instructions}\n\nYou must return your response as a JSON object with "explanation" and "answer" fields.`
|
|
8
|
+
: 'You must return your response as a JSON object with "explanation" and "answer" fields.';
|
|
9
|
+
const system = { role: 'system', content: systemContent };
|
|
10
|
+
const prompt = { role: 'user', content: question };
|
|
11
|
+
const result = await completePrompt({ prompt, system, temperature, jsonMode: true });
|
|
12
|
+
if (!result.completed || !result.value) {
|
|
13
|
+
return { completed: false, error: result.error };
|
|
14
|
+
}
|
|
15
|
+
try {
|
|
16
|
+
let parsed;
|
|
17
|
+
if (typeof result.value === 'object') {
|
|
18
|
+
parsed = result.value;
|
|
19
|
+
}
|
|
20
|
+
else {
|
|
21
|
+
let text = result.value;
|
|
22
|
+
// Strip markdown code fences if present
|
|
23
|
+
text = text.replace(/^```(?:json)?\s*/i, '').replace(/\s*```\s*$/, '');
|
|
24
|
+
// Extract the first JSON object from the text
|
|
25
|
+
const start = text.indexOf('{');
|
|
26
|
+
const end = text.lastIndexOf('}');
|
|
27
|
+
if (start !== -1 && end > start) {
|
|
28
|
+
text = text.substring(start, end + 1);
|
|
29
|
+
}
|
|
30
|
+
parsed = JSON.parse(text);
|
|
31
|
+
}
|
|
32
|
+
return {
|
|
33
|
+
completed: true,
|
|
34
|
+
value: {
|
|
35
|
+
explanation: parsed.explanation ?? '',
|
|
36
|
+
answer: parsed.answer ?? '',
|
|
37
|
+
},
|
|
38
|
+
};
|
|
39
|
+
}
|
|
40
|
+
catch {
|
|
41
|
+
return { completed: false, error: new Error('Failed to parse chain-of-thought response') };
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
exports.chainOfThought = chainOfThought;
|
|
45
|
+
//# sourceMappingURL=chainOfThought.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"chainOfThought.js","sourceRoot":"","sources":["../../src/models/chainOfThought.ts"],"names":[],"mappings":";;;AAaO,KAAK,UAAU,cAAc,CAAC,IAAwB;IACzD,MAAM,EAAE,cAAc,EAAE,QAAQ,EAAE,WAAW,EAAE,YAAY,EAAE,GAAG,IAAI,CAAC;IAErE,MAAM,aAAa,GAAG,YAAY;QAC9B,CAAC,CAAC,GAAG,YAAY,4FAA4F;QAC7G,CAAC,CAAC,wFAAwF,CAAC;IAE/F,MAAM,MAAM,GAAkB,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,aAAa,EAAE,CAAC;IACzE,MAAM,MAAM,GAAgB,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC;IAEhE,MAAM,MAAM,GAAG,MAAM,cAAc,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;IAErF,IAAI,CAAC,MAAM,CAAC,SAAS,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE;QACpC,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,CAAC;KACpD;IAED,IAAI;QACA,IAAI,MAAW,CAAC;QAChB,IAAI,OAAO,MAAM,CAAC,KAAK,KAAK,QAAQ,EAAE;YAClC,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC;SACzB;aAAM;YACH,IAAI,IAAI,GAAG,MAAM,CAAC,KAAe,CAAC;YAClC,wCAAwC;YACxC,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,mBAAmB,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,YAAY,EAAE,EAAE,CAAC,CAAC;YACvE,8CAA8C;YAC9C,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;YAChC,MAAM,GAAG,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;YAClC,IAAI,KAAK,KAAK,CAAC,CAAC,IAAI,GAAG,GAAG,KAAK,EAAE;gBAC7B,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,GAAG,GAAG,CAAC,CAAC,CAAC;aACzC;YACD,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;SAC7B;QACD,OAAO;YACH,SAAS,EAAE,IAAI;YACf,KAAK,EAAE;gBACH,WAAW,EAAE,MAAM,CAAC,WAAW,IAAI,EAAE;gBACrC,MAAM,EAAE,MAAM,CAAC,MAAM,IAAI,EAAE;aAC9B;SACJ,CAAC;KACL;IAAC,MAAM;QACJ,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,KAAK,CAAC,2CAA2C,CAAC,EAAE,CAAC;KAC9F;AACL,CAAC;AA1CD,wCA0CC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fireworksai.d.ts","sourceRoot":"","sources":["../../src/models/fireworksai.ts"],"names":[],"mappings":"AACA,OAAO,EAAmB,cAAc,EAAE,oBAAoB,EAAqC,MAAM,SAAS,CAAC;AAEnH,MAAM,WAAW,eAAe;IAC5B,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;CACxB;AAWD;;;GAGG;AACH,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CA+BhD;AAED;;;GAGG;AACH,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAE3D;AAED;;;GAGG;AACH,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,oBAAoB,EAAE,WAAW,EAAE,MAAM,GAAG;IACpF,QAAQ,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IAC9C,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,OAAO,CAAC;CACpB,CA4BA;AAED,wBAAgB,WAAW,CAAC,IAAI,EAAE,eAAe,GAAG,cAAc,CAyCjE"}
|