briyah 1.2.2 → 1.2.4
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/data/common/config/model_prices.json +41788 -41670
- package/data/common/config/story_models.json +18 -10
- package/data/common/config/story_models_full.json +23 -5
- package/dist-sdk/server/src/ai/LLM/anthropic.service.js +5 -2
- package/dist-sdk/server/src/ai/LLM/deepseek.service.js +1 -1
- package/dist-sdk/server/src/room/room.js +14 -1
- package/docs/classes/Agent.html +14 -14
- package/docs/classes/Briyah.html +10 -10
- package/docs/classes/BriyahConfigService.html +5 -5
- package/docs/classes/Room.html +24 -24
- package/docs/classes/RoomMessage.html +10 -10
- package/docs/enums/MessageAction.html +3 -3
- package/docs/hierarchy.html +1 -1
- package/docs/index.html +2 -2
- package/docs/interfaces/AgentInfo.html +2 -2
- package/docs/interfaces/AgentMessagesResponse.html +2 -2
- package/docs/interfaces/AppService.html +109 -109
- package/docs/interfaces/Artifact.html +3 -3
- package/docs/interfaces/ArtifactMetadata.html +2 -2
- package/docs/interfaces/AttachDocumentResponse.html +2 -2
- package/docs/interfaces/BriyahConfigOptions.html +7 -7
- package/docs/interfaces/ChapterInfo.html +2 -2
- package/docs/interfaces/Character.html +2 -2
- package/docs/interfaces/CreateAgentResponse.html +2 -2
- package/docs/interfaces/CreateRoomResponse.html +2 -2
- package/docs/interfaces/CreateStoryResponse.html +2 -2
- package/docs/interfaces/FileList.html +2 -2
- package/docs/interfaces/FileMetadata.html +3 -3
- package/docs/interfaces/IConfigService.html +3 -3
- package/docs/interfaces/LoggingOptions.html +6 -6
- package/docs/interfaces/Message.html +2 -2
- package/docs/interfaces/ModelInfo.html +2 -2
- package/docs/interfaces/PreparedPromptResponse.html +2 -2
- package/docs/interfaces/ProcessTextResponse.html +2 -2
- package/docs/interfaces/PromptFile.html +2 -2
- package/docs/interfaces/PromptFileContent.html +2 -2
- package/docs/interfaces/PromptFilesResponse.html +2 -2
- package/docs/interfaces/PromptFolder.html +2 -2
- package/docs/interfaces/PromptFoldersResponse.html +2 -2
- package/docs/interfaces/RoomDetails.html +2 -2
- package/docs/interfaces/RoomInfo.html +2 -2
- package/docs/interfaces/RoomMessagesResponse.html +2 -2
- package/docs/interfaces/StoryErrorEvent.html +3 -3
- package/docs/interfaces/StoryIdea.html +2 -2
- package/docs/interfaces/StoryInfo.html +3 -3
- package/docs/interfaces/StoryIntroduceCharacterEvent.html +3 -3
- package/docs/interfaces/StoryProgressChapterEvent.html +3 -3
- package/docs/interfaces/StoryState.html +5 -5
- package/docs/interfaces/StoryStateEvent.html +3 -3
- package/docs/interfaces/Transaction.html +2 -2
- package/docs/interfaces/TransactionHistoryResponse.html +2 -2
- package/docs/modules.html +1 -1
- package/docs/types/PromptScope.html +1 -1
- package/package.json +1 -1
|
@@ -12,30 +12,38 @@
|
|
|
12
12
|
"description": "",
|
|
13
13
|
"service": "Anthropic",
|
|
14
14
|
"model": "claude-haiku-4-5",
|
|
15
|
+
"small_model": "claude-haiku-4-5",
|
|
15
16
|
"cost": "80"
|
|
16
17
|
},
|
|
17
18
|
{
|
|
18
|
-
"name": "Claude Opus 4.
|
|
19
|
+
"name": "Claude Opus 4.8",
|
|
19
20
|
"description": "Overkill for storytelling",
|
|
20
21
|
"service": "Anthropic",
|
|
21
|
-
"model": "claude-opus-4-
|
|
22
|
+
"model": "claude-opus-4-8",
|
|
22
23
|
"small_model": "claude-haiku-4-5",
|
|
23
24
|
"cost": "1500"
|
|
24
25
|
},
|
|
26
|
+
{
|
|
27
|
+
"name": "Claude Fable 5",
|
|
28
|
+
"description": "Way overkill for storytelling",
|
|
29
|
+
"service": "Anthropic",
|
|
30
|
+
"model": "claude-fable-5",
|
|
31
|
+
"small_model": "claude-haiku-4-5",
|
|
32
|
+
"cost": "3000"
|
|
33
|
+
},
|
|
25
34
|
{
|
|
26
35
|
"name": "Grok 4.20",
|
|
27
36
|
"description": "",
|
|
28
37
|
"service": "Grok",
|
|
29
38
|
"model": "grok-4.20-0309-reasoning",
|
|
30
|
-
"small_model": "grok-4.20-beta-0309-non-reasoning",
|
|
31
39
|
"cost": "300"
|
|
32
40
|
},
|
|
33
41
|
{
|
|
34
|
-
"name": "
|
|
35
|
-
"description": "
|
|
36
|
-
"service": "
|
|
37
|
-
"model": "
|
|
38
|
-
"
|
|
42
|
+
"name": "DeepSeek v4",
|
|
43
|
+
"description": "",
|
|
44
|
+
"service": "DeepSeek",
|
|
45
|
+
"model": "deepseek-v4-pro",
|
|
46
|
+
"small_model": "deepseek-v4-flash",
|
|
47
|
+
"cost": "3"
|
|
39
48
|
}
|
|
40
|
-
|
|
41
|
-
]
|
|
49
|
+
]
|
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
[
|
|
2
2
|
{
|
|
3
|
-
"name": "Claude Sonnet 4.
|
|
3
|
+
"name": "Claude Sonnet 4.6",
|
|
4
4
|
"description": "Best storyteller, bar none",
|
|
5
5
|
"service": "Anthropic",
|
|
6
|
-
"model": "claude-sonnet-4-
|
|
6
|
+
"model": "claude-sonnet-4-6",
|
|
7
|
+
"small_model": "claude-haiku-4-5",
|
|
7
8
|
"cost": "300"
|
|
8
9
|
},
|
|
9
10
|
{
|
|
@@ -11,15 +12,25 @@
|
|
|
11
12
|
"description": "",
|
|
12
13
|
"service": "Anthropic",
|
|
13
14
|
"model": "claude-haiku-4-5",
|
|
15
|
+
"small_model": "claude-haiku-4-5",
|
|
14
16
|
"cost": "80"
|
|
15
17
|
},
|
|
16
18
|
{
|
|
17
|
-
"name": "Claude Opus 4.
|
|
19
|
+
"name": "Claude Opus 4.8",
|
|
18
20
|
"description": "Overkill for storytelling",
|
|
19
21
|
"service": "Anthropic",
|
|
20
|
-
"model": "claude-opus-4-
|
|
22
|
+
"model": "claude-opus-4-8",
|
|
23
|
+
"small_model": "claude-haiku-4-5",
|
|
21
24
|
"cost": "1500"
|
|
22
25
|
},
|
|
26
|
+
{
|
|
27
|
+
"name": "Claude Fable 5",
|
|
28
|
+
"description": "Way overkill for storytelling",
|
|
29
|
+
"service": "Anthropic",
|
|
30
|
+
"model": "claude-fable-5",
|
|
31
|
+
"small_model": "claude-haiku-4-5",
|
|
32
|
+
"cost": "3000"
|
|
33
|
+
},
|
|
23
34
|
{
|
|
24
35
|
"name": "Qwen",
|
|
25
36
|
"description": "",
|
|
@@ -40,6 +51,13 @@
|
|
|
40
51
|
"service": "Grok",
|
|
41
52
|
"model": "grok-4.20-0309-reasoning",
|
|
42
53
|
"cost": "300"
|
|
54
|
+
},
|
|
55
|
+
{
|
|
56
|
+
"name": "DeepSeek v4",
|
|
57
|
+
"description": "",
|
|
58
|
+
"service": "DeepSeek",
|
|
59
|
+
"model": "deepseek-v4-pro",
|
|
60
|
+
"small_model": "deepseek-v4-flash",
|
|
61
|
+
"cost": "3"
|
|
43
62
|
}
|
|
44
|
-
|
|
45
63
|
]
|
|
@@ -17,6 +17,7 @@ const base_ai_service_1 = require("./base-ai.service");
|
|
|
17
17
|
const model_prices_1 = require("../model_prices");
|
|
18
18
|
const errors_1 = require("../../common/errors");
|
|
19
19
|
const logger_1 = require("../../common/logger");
|
|
20
|
+
const ai_debug_logger_1 = require("../ai-debug-logger");
|
|
20
21
|
let AnthropicAiService = class AnthropicAiService extends base_ai_service_1.BaseAiService {
|
|
21
22
|
static { AnthropicAiService_1 = this; }
|
|
22
23
|
anthropic;
|
|
@@ -215,7 +216,9 @@ let AnthropicAiService = class AnthropicAiService extends base_ai_service_1.Base
|
|
|
215
216
|
};
|
|
216
217
|
if (this.usesEffortConfig(agent.modelName)) {
|
|
217
218
|
if (agent.reasoningEffort) {
|
|
218
|
-
createParams.thinking =
|
|
219
|
+
createParams.thinking = ai_debug_logger_1.AiDebugLogger.isEnabled()
|
|
220
|
+
? { type: 'adaptive', display: 'summarized' }
|
|
221
|
+
: { type: 'adaptive' };
|
|
219
222
|
createParams.output_config = { effort: agent.reasoningEffort };
|
|
220
223
|
}
|
|
221
224
|
}
|
|
@@ -316,7 +319,7 @@ let AnthropicAiService = class AnthropicAiService extends base_ai_service_1.Base
|
|
|
316
319
|
}
|
|
317
320
|
throw new Error(`Failed to get valid response after ${maxRetries} attempts. Last error: ${lastError?.message || 'Unknown error'}`);
|
|
318
321
|
}
|
|
319
|
-
static EFFORT_CONFIG_MODEL_VERSIONS = ['4-7', '4-8'];
|
|
322
|
+
static EFFORT_CONFIG_MODEL_VERSIONS = ['4-7', '4-8', 'fable'];
|
|
320
323
|
usesEffortConfig(modelName) {
|
|
321
324
|
return AnthropicAiService_1.EFFORT_CONFIG_MODEL_VERSIONS.some((v) => modelName.includes(v));
|
|
322
325
|
}
|
|
@@ -200,7 +200,7 @@ let DeepSeekAiService = class DeepSeekAiService extends base_ai_service_1.BaseAi
|
|
|
200
200
|
model: this.deepseekClient(agent.modelName),
|
|
201
201
|
messages: messages,
|
|
202
202
|
temperature: 0,
|
|
203
|
-
schema: jsonSchema,
|
|
203
|
+
schema: this.jsonSchemaToZod(jsonSchema),
|
|
204
204
|
providerOptions: {
|
|
205
205
|
deepseek: {
|
|
206
206
|
reasoningEffort: reasoningEffort,
|
|
@@ -249,6 +249,10 @@ class Room {
|
|
|
249
249
|
let i = 0;
|
|
250
250
|
while (i < lines.length && lines[i].trim() === '')
|
|
251
251
|
i++;
|
|
252
|
+
const fenceRe = /^\s*```\w*\s*$/;
|
|
253
|
+
const hadLeadingFence = i < lines.length && fenceRe.test(lines[i]);
|
|
254
|
+
if (hadLeadingFence)
|
|
255
|
+
i++;
|
|
252
256
|
const tagLineRe = /^\s*<\w+>[\s\S]*?<\/\w+>\s*$/;
|
|
253
257
|
if (i >= lines.length || !tagLineRe.test(lines[i]))
|
|
254
258
|
return null;
|
|
@@ -261,7 +265,16 @@ class Room {
|
|
|
261
265
|
const preamble = preambleLines.join('\n');
|
|
262
266
|
if (j < lines.length && lines[j].trim() === '')
|
|
263
267
|
j++;
|
|
264
|
-
|
|
268
|
+
let contentLines = lines.slice(j);
|
|
269
|
+
if (hadLeadingFence) {
|
|
270
|
+
let k = contentLines.length - 1;
|
|
271
|
+
while (k >= 0 && contentLines[k].trim() === '')
|
|
272
|
+
k--;
|
|
273
|
+
if (k >= 0 && fenceRe.test(contentLines[k])) {
|
|
274
|
+
contentLines = contentLines.slice(0, k);
|
|
275
|
+
}
|
|
276
|
+
}
|
|
277
|
+
const content = contentLines.join('\n').trimStart();
|
|
265
278
|
return { preamble, content };
|
|
266
279
|
}
|
|
267
280
|
static coerceMessageAction(raw) {
|