@promptbook/cli 0.112.0-104 โ†’ 0.112.0-105

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (174) hide show
  1. package/apps/agents-server/src/app/admin/image-generator-test/ImageAttachmentsEditor.tsx +19 -3
  2. package/apps/agents-server/src/app/admin/limits/LimitsClient.tsx +11 -12
  3. package/apps/agents-server/src/app/admin/metadata/MetadataClient.tsx +34 -2
  4. package/apps/agents-server/src/app/admin/servers/CreateServerDialog.tsx +6 -1
  5. package/apps/agents-server/src/app/admin/servers/useCreateServerWizard.ts +13 -1
  6. package/apps/agents-server/src/app/agents/[agentName]/AgentChatWrapper.tsx +11 -2
  7. package/apps/agents-server/src/app/agents/[agentName]/AgentProfileChat.tsx +11 -1
  8. package/apps/agents-server/src/app/agents/[agentName]/book/BookEditorWrapper.tsx +7 -1
  9. package/apps/agents-server/src/app/agents/[agentName]/chat/CanonicalAgentChatSurface.tsx +11 -1
  10. package/apps/agents-server/src/app/agents/[agentName]/images/default-avatar.png/route.ts +6 -2
  11. package/apps/agents-server/src/app/api/images/[filename]/route.ts +6 -2
  12. package/apps/agents-server/src/app/api/internal/agent-runner-limits/route.ts +51 -0
  13. package/apps/agents-server/src/app/api/upload/route.ts +48 -12
  14. package/apps/agents-server/src/app/layout.tsx +13 -0
  15. package/apps/agents-server/src/components/FileUploadAvailability/FileUploadAvailabilityContext.tsx +50 -0
  16. package/apps/agents-server/src/components/FileUploadAvailability/FileUploadUnavailableNotice.tsx +45 -0
  17. package/apps/agents-server/src/components/LayoutWrapper/LayoutWrapper.tsx +85 -76
  18. package/apps/agents-server/src/components/NewAgentDialog/NewAgentDialog.tsx +7 -3
  19. package/apps/agents-server/src/components/NewAgentDialog/NewAgentWizardKnowledgeStep.tsx +6 -0
  20. package/apps/agents-server/src/components/NewAgentDialog/useNewAgentWizardKnowledgeState.ts +8 -1
  21. package/apps/agents-server/src/constants/serverLimits.ts +22 -2
  22. package/apps/agents-server/src/database/seedDefaultAgents.ts +218 -0
  23. package/apps/agents-server/src/tools/$provideCdnForServer.ts +72 -8
  24. package/apps/agents-server/src/utils/defaultAgents/loadDefaultAgentBooks.ts +103 -0
  25. package/apps/agents-server/src/utils/knowledge/createInlineKnowledgeSourceUploader.ts +24 -5
  26. package/apps/agents-server/src/utils/serverLimits.ts +26 -1
  27. package/apps/agents-server/src/utils/serverManagement/createManagedServer/seedServerDefaultAgents.ts +1 -85
  28. package/apps/agents-server/src/utils/shareTargetPayloads.ts +20 -2
  29. package/apps/agents-server/src/utils/upload/fileUploadAvailability.ts +91 -0
  30. package/apps/agents-server/src/utils/upload/uploadFileToServer.ts +46 -2
  31. package/esm/apps/agents-server/src/constants/federatedAgentImport.d.ts +42 -0
  32. package/esm/apps/agents-server/src/constants/serverLimits.d.ts +207 -0
  33. package/esm/apps/agents-server/src/constants/toolUsageLimits.d.ts +55 -0
  34. package/esm/index.es.js +602 -39
  35. package/esm/index.es.js.map +1 -1
  36. package/esm/scripts/run-agent-messages/main/AgentMessageFailureTracker.d.ts +27 -0
  37. package/esm/scripts/run-agent-messages/main/handleAgentWatchError.d.ts +4 -0
  38. package/esm/scripts/run-agent-messages/main/runAgentMessages.d.ts +1 -0
  39. package/esm/scripts/run-agent-messages/messages/moveAgentMessageToFailed.d.ts +17 -0
  40. package/esm/src/book-components/BookEditor/BookEditor.d.ts +5 -4
  41. package/esm/src/book-components/BookEditor/BookEditorTheme.d.ts +24 -0
  42. package/esm/src/book-components/BookEditor/useBookEditorMonacoLanguage.d.ts +1 -6
  43. package/esm/src/book-components/BookEditor/useBookEditorMonacoLifecycle.d.ts +1 -4
  44. package/esm/src/book-components/BookEditor/useBookEditorMonacoStyles.d.ts +2 -1
  45. package/esm/src/cli/cli-commands/agent-folder/agentProjectPaths.d.ts +6 -0
  46. package/esm/src/version.d.ts +1 -1
  47. package/package.json +1 -1
  48. package/src/avatars/visuals/octopus3d3AvatarVisual.ts +28 -29
  49. package/src/book-components/BookEditor/BookEditor.tsx +10 -7
  50. package/src/book-components/BookEditor/BookEditorMonaco.tsx +3 -1
  51. package/src/book-components/BookEditor/BookEditorTheme.ts +32 -0
  52. package/src/book-components/BookEditor/useBookEditorMonacoLanguage.ts +12 -15
  53. package/src/book-components/BookEditor/useBookEditorMonacoLifecycle.ts +1 -5
  54. package/src/book-components/BookEditor/useBookEditorMonacoStyles.ts +2 -1
  55. package/src/cli/cli-commands/agent-folder/agentProjectPaths.ts +7 -0
  56. package/src/cli/cli-commands/agents-server/buildAgentsServer.ts +109 -9
  57. package/src/cli/cli-commands/agents-server/startAgentsServer.ts +132 -4
  58. package/src/other/templates/getTemplatesPipelineCollection.ts +729 -854
  59. package/src/version.ts +2 -2
  60. package/src/versions.txt +1 -0
  61. package/umd/apps/agents-server/src/constants/federatedAgentImport.d.ts +42 -0
  62. package/umd/apps/agents-server/src/constants/serverLimits.d.ts +207 -0
  63. package/umd/apps/agents-server/src/constants/toolUsageLimits.d.ts +55 -0
  64. package/umd/index.umd.js +602 -39
  65. package/umd/index.umd.js.map +1 -1
  66. package/umd/scripts/run-agent-messages/main/AgentMessageFailureTracker.d.ts +27 -0
  67. package/umd/scripts/run-agent-messages/main/handleAgentWatchError.d.ts +4 -0
  68. package/umd/scripts/run-agent-messages/main/runAgentMessages.d.ts +1 -0
  69. package/umd/scripts/run-agent-messages/messages/moveAgentMessageToFailed.d.ts +17 -0
  70. package/umd/src/book-components/BookEditor/BookEditor.d.ts +5 -4
  71. package/umd/src/book-components/BookEditor/BookEditorTheme.d.ts +24 -0
  72. package/umd/src/book-components/BookEditor/useBookEditorMonacoLanguage.d.ts +1 -6
  73. package/umd/src/book-components/BookEditor/useBookEditorMonacoLifecycle.d.ts +1 -4
  74. package/umd/src/book-components/BookEditor/useBookEditorMonacoStyles.d.ts +2 -1
  75. package/umd/src/cli/cli-commands/agent-folder/agentProjectPaths.d.ts +6 -0
  76. package/umd/src/version.d.ts +1 -1
  77. package/apps/agents-server/src/message-providers/email/_common/utils/parseEmailAddress.test.ts.todo +0 -108
  78. package/apps/agents-server/src/message-providers/email/_common/utils/parseEmailAddresses.test.ts.todo +0 -117
  79. package/apps/agents-server/src/message-providers/email/_common/utils/stringifyEmailAddress.test.ts.todo +0 -119
  80. package/apps/agents-server/src/message-providers/email/_common/utils/stringifyEmailAddresses.test.ts.todo +0 -74
  81. package/apps/agents-server/src/utils/defaultAgents/defaultAgents.ts +0 -168
  82. package/apps/agents-server/src/utils/defaultAgents/installDefaultAgents.ts +0 -139
  83. package/apps/agents-server/tests/e2e/authentication-and-navigation.spec.ts.todo +0 -178
  84. package/src/_packages/browser.index.ts +0 -31
  85. package/src/_packages/browser.readme.md +0 -43
  86. package/src/book-2.0/agent-source/parseAgentSourceWithCommitments.test.ts.todo +0 -265
  87. package/src/book-components/BookEditor/BookEditorMonaco.test.tsx.todo +0 -115
  88. package/src/book-components/Chat/utils/renderMarkdown.test.ts.tmp +0 -199
  89. package/src/collection/agent-collection/constructors/agent-collection-in-directory/AgentCollectionInDirectory.test.ts.todo +0 -131
  90. package/src/commands/_common/parseCommand.test.ts.todo +0 -48
  91. package/src/commitments/META_LINK/META_LINK.test.ts.todo +0 -75
  92. package/src/conversion/validation/pipelineStringToJson-errors.test.ts.todo +0 -33
  93. package/src/dialogs/simple-prompt/SimplePromptInterfaceTools.ts +0 -51
  94. package/src/executables/browsers/locateSafari.test.ts.tmp +0 -15
  95. package/src/execution/PromptbookFetch.test-type.ts +0 -14
  96. package/src/execution/createPipelineExecutor/00-createPipelineExecutor.test.ts.todo +0 -0
  97. package/src/execution/execution-report/executionReportJsonToString.test.ts.todo +0 -83
  98. package/src/execution/utils/usageToHuman.test.ts.todo +0 -80
  99. package/src/llm-providers/_common/register/$provideLlmToolsForTestingAndScriptsAndPlayground.ts +0 -76
  100. package/src/llm-providers/_common/utils/assertUniqueModels.ts +0 -27
  101. package/src/llm-providers/_multiple/playground/playground.ts +0 -141
  102. package/src/llm-providers/_multiple/playground/tsconfig.json +0 -19
  103. package/src/llm-providers/agent/playground/playground.ts +0 -190
  104. package/src/llm-providers/agent/playground/tsconfig.json +0 -19
  105. package/src/llm-providers/anthropic-claude/playground/playground.ts +0 -99
  106. package/src/llm-providers/anthropic-claude/playground/tsconfig.json +0 -19
  107. package/src/llm-providers/azure-openai/playground/playground.ts +0 -101
  108. package/src/llm-providers/azure-openai/playground/tsconfig.json +0 -19
  109. package/src/llm-providers/ollama/playground/playground.ts +0 -120
  110. package/src/llm-providers/ollama/playground/tsconfig.json +0 -19
  111. package/src/llm-providers/openai/playground/playground.ts +0 -406
  112. package/src/llm-providers/openai/playground/tsconfig.json +0 -19
  113. package/src/llm-providers/remote/playground/playground.ts +0 -144
  114. package/src/llm-providers/remote/playground/tsconfig.json +0 -19
  115. package/src/llm-providers/vercel/playground/playground.ts +0 -133
  116. package/src/llm-providers/vercel/playground/tsconfig.json +0 -19
  117. package/src/personas/preparePersona.test.ts.todo +0 -126
  118. package/src/playground/backup/_playground-boilerplate.ts.txt +0 -37
  119. package/src/playground/backup/playground-agent-os.txt +0 -62
  120. package/src/playground/backup/playground-brj-app.ts.txt +0 -302
  121. package/src/playground/backup/playground-browser-playwright.txt +0 -110
  122. package/src/playground/backup/playground-claude-mcp.txt +0 -43
  123. package/src/playground/backup/playground-document-conversion.txt +0 -84
  124. package/src/playground/backup/playground-glob.ts.txt +0 -42
  125. package/src/playground/backup/playground-mcp-server.txt +0 -1
  126. package/src/playground/backup/playground-openai-agent-kit.txt +0 -73
  127. package/src/playground/backup/playground-openai-function-calling.txt +0 -131
  128. package/src/playground/backup/playground-openai-streaming.ts.txt +0 -68
  129. package/src/playground/backup/playground-scrape-knowledge.txt +0 -65
  130. package/src/playground/backup/playground-scraperFetch.ts.txt +0 -44
  131. package/src/playground/backup/playground-using-openai-compatible-route-on-agents-server.ts.txt +0 -49
  132. package/src/playground/backup/playground-write-pavolhejny-bio.txt +0 -120
  133. package/src/playground/permanent/_boilerplate.ts +0 -54
  134. package/src/playground/permanent/agent-with-browser-playground.ts +0 -92
  135. package/src/playground/permanent/error-handling-playground.ts +0 -103
  136. package/src/playground/playground.ts +0 -36
  137. package/src/playground/tsconfig.json +0 -19
  138. package/src/scrapers/_boilerplate/BoilerplateScraper.test.ts.todo +0 -73
  139. package/src/scrapers/_boilerplate/playground/boilerplate-scraper-playground.ts +0 -79
  140. package/src/scrapers/_boilerplate/playground/tsconfig.json +0 -19
  141. package/src/scrapers/_common/utils/files/blobToDataurl.test.ts.todo +0 -17
  142. package/src/scrapers/_common/utils/files/dataurlToBlob.test.ts.todo +0 -52
  143. package/src/scrapers/_common/utils/files/isValidDataurl.test.ts.todo +0 -42
  144. package/src/scrapers/_common/utils/files/shorten.test.ts.todo +0 -13
  145. package/src/scrapers/document/playground/document-scraper-playground.ts +0 -80
  146. package/src/scrapers/document/playground/tsconfig.json +0 -19
  147. package/src/scrapers/document-legacy/playground/legacy-document-scraper-playground.ts +0 -80
  148. package/src/scrapers/document-legacy/playground/tsconfig.json +0 -19
  149. package/src/scrapers/markdown/playground/markdown-scraper-playground.ts +0 -74
  150. package/src/scrapers/markdown/playground/tsconfig.json +0 -19
  151. package/src/scrapers/markitdown/MarkitdownScraper.test.ts.todo +0 -132
  152. package/src/scrapers/markitdown/playground/markitdown-scraper-playground.ts +0 -91
  153. package/src/scrapers/markitdown/playground/tsconfig.json +0 -19
  154. package/src/scrapers/pdf/PdfScraper.test.ts.todo +0 -52
  155. package/src/scrapers/pdf/playground/pdf-scraper-playground.ts +0 -75
  156. package/src/scrapers/pdf/playground/tsconfig.json +0 -19
  157. package/src/scrapers/website/playground/tsconfig.json +0 -19
  158. package/src/scrapers/website/playground/website-scraper-playground.ts +0 -82
  159. package/src/storage/_common/PromptbookStorage.test-type.ts +0 -14
  160. package/src/storage/local-storage/getIndexedDbStorage.ts +0 -36
  161. package/src/storage/local-storage/getLocalStorage.ts +0 -33
  162. package/src/storage/local-storage/getSessionStorage.ts +0 -33
  163. package/src/storage/local-storage/utils/IndexedDbStorageOptions.ts +0 -16
  164. package/src/storage/local-storage/utils/makePromptbookStorageFromIndexedDb.ts +0 -58
  165. package/src/storage/local-storage/utils/makePromptbookStorageFromWebStorage.ts +0 -45
  166. package/src/transpilers/formatted-book-in-markdown/FormattedBookInMarkdownTranspiler.test.ts.todo +0 -35
  167. package/src/transpilers/openai-sdk/playground/playground.ts +0 -85
  168. package/src/transpilers/openai-sdk/playground/tmp/chatbot-openaisdk-1.js +0 -194
  169. package/src/transpilers/openai-sdk/playground/tmp/package.json +0 -3
  170. package/src/transpilers/openai-sdk/playground/tsconfig.json +0 -18
  171. package/src/utils/editable/utils/findUsableParameters.test.ts.todo +0 -43
  172. package/src/utils/editable/utils/stringifyPipelineJson.test.ts.todo +0 -38
  173. package/src/utils/markdown/prettifyMarkdown.test.ts.tmp +0 -42
  174. package/src/utils/serialization/serializeToPromptbookJavascript.test.ts.todo +0 -116
@@ -1,120 +0,0 @@
1
- #!/usr/bin/env ts-node
2
-
3
- import * as dotenv from 'dotenv';
4
-
5
- dotenv.config({ path: '.env' });
6
-
7
- import colors from 'colors'; // <- TODO: [๐Ÿ”ถ] Make system to put color and style to both node and browser
8
- import { embeddingVectorToString } from '../../../execution/embeddingVectorToString';
9
- import { usageToHuman } from '../../../execution/utils/usageToHuman';
10
- import type { Prompt } from '../../../types/Prompt';
11
- import { keepUnused } from '../../../utils/organization/keepUnused';
12
- // import { OllamaAssistantExecutionTools } from '../OllamaAssistantExecutionTools';
13
- import type { Usage } from '../../../execution/Usage';
14
- import { countUsage } from '../../_common/utils/count-total-usage/countUsage';
15
- import { createOllamaExecutionTools } from '../createOllamaExecutionTools';
16
-
17
- playground()
18
- .catch((error) => {
19
- console.error(colors.bgRed(error.name || 'NamelessError'));
20
- console.error(error);
21
- process.exit(1);
22
- })
23
- .then(() => {
24
- process.exit(0);
25
- });
26
-
27
- /**
28
- * Handles playground.
29
- */
30
- async function playground() {
31
- console.info(`๐Ÿงธ Ollama Playground`);
32
-
33
- // Do here stuff you want to test
34
- //========================================>
35
-
36
- const ollamaExecutionTools = createOllamaExecutionTools({
37
- isVerbose: true,
38
- });
39
-
40
- const ollamaExecutionToolsWithUsage = countUsage(ollamaExecutionTools);
41
-
42
- ollamaExecutionToolsWithUsage.spending().subscribe((usage: Usage) => {
43
- const wordCount = (usage?.input?.wordsCount?.value || 0) + (usage?.output?.wordsCount?.value || 0);
44
- console.log(`[๐Ÿ’ธ] Spending ${wordCount} words`);
45
- });
46
-
47
- keepUnused(ollamaExecutionTools);
48
- keepUnused(embeddingVectorToString);
49
- keepUnused(usageToHuman);
50
- keepUnused<Prompt>();
51
-
52
- /*/
53
- const models = await ollamaExecutionTools.listModels();
54
- console.info({ models });
55
- /**/
56
-
57
- /*/
58
- const completionPrompt = {
59
- title: 'Hello',
60
- parameters: {},
61
- content: `Hello, my name is Alice.`,
62
- modelRequirements: {
63
- modelVariant: 'COMPLETION',
64
- },
65
- } as const satisfies Prompt;
66
- const completionPromptResult = await ollamaExecutionTools.callCompletionModel(completionPrompt);
67
- console.info({ completionPromptResult });
68
- console.info(colors.cyan(usageToHuman(chatPromptResult.usage)));
69
- console.info(colors.green(completionPrompt.content + completionPromptResult.content));
70
- /**/
71
-
72
- /**/
73
- const chatPrompt = {
74
- title: 'Promptbook speech',
75
- parameters: {},
76
- content: `Hello`,
77
- modelRequirements: {
78
- modelVariant: 'CHAT',
79
- // modelName: 'mistral',
80
- systemMessage: 'You are an assistant who only speaks in rhymes.',
81
- temperature: 1.5,
82
- },
83
- } as const satisfies Prompt;
84
- const chatPromptResult = await ollamaExecutionToolsWithUsage.callChatModel!(chatPrompt);
85
- console.info({ chatPromptResult });
86
- console.info(colors.cyan(usageToHuman(chatPromptResult.usage)));
87
- console.info(colors.bgBlue(' User: ') + colors.blue(chatPrompt.content));
88
- console.info(colors.bgGreen(' Chat: ') + colors.green(chatPromptResult.content));
89
- /**/
90
-
91
- /*/
92
- // TODO: Test Translations in playground
93
- /**/
94
-
95
- /*/
96
- const prompt = {
97
- title: 'Hello',
98
- parameters: {},
99
- content: `Hello, my name is Alice.`,
100
- modelRequirements: {
101
- modelVariant: 'EMBEDDING',
102
- // modelName: 'text-embedding-ada-002',
103
- },
104
- } as const satisfies Prompt;
105
- const promptResult = await ollamaExecutionTools.callEmbeddingModel(prompt);
106
- console.info({ promptResult });
107
- console.info(colors.cyan(usageToHuman(chatPromptResult.usage)));
108
- console.info(colors.bgBlue(' User: ') + colors.blue(prompt.content));
109
- console.info(colors.bgGreen(' Embedding: ') + colors.green(embeddingVectorToString(promptResult.content)));
110
- /**/
111
-
112
- /*/
113
- // <- Note: [๐Ÿค–] Test here new model variant if needed
114
- /**/
115
-
116
- //========================================/
117
- }
118
-
119
- // Note: [โšซ] Code for playground [ollama playground](src/llm-providers/ollama/playground/playground.ts) should never be published in any package
120
- // TODO: [main] !!3 Test here that `systemMessage`, `temperature` and `seed` are working correctly
@@ -1,19 +0,0 @@
1
- {
2
- "compilerOptions": {
3
- "target": "esnext",
4
- "module": "commonjs",
5
- "downlevelIteration": true,
6
- "allowJs": true,
7
- "moduleResolution": "node",
8
- "forceConsistentCasingInFileNames": true,
9
- "noImplicitReturns": true,
10
- "noImplicitThis": true,
11
- "noImplicitAny": true,
12
- "strictNullChecks": true,
13
- "experimentalDecorators": true,
14
- "noUnusedLocals": false,
15
- "resolveJsonModule": true,
16
- "esModuleInterop": true
17
- },
18
- "exclude": ["node_modules"]
19
- }
@@ -1,406 +0,0 @@
1
- #!/usr/bin/env ts-node
2
-
3
- import * as dotenv from 'dotenv';
4
-
5
- dotenv.config({ path: '.env' });
6
-
7
- import colors from 'colors'; // <- TODO: [๐Ÿ”ถ] Make system to put color and style to both node and browser
8
- import { embeddingVectorToString } from '../../../execution/embeddingVectorToString';
9
- import { usageToHuman } from '../../../execution/utils/usageToHuman';
10
- import { JavascriptEvalExecutionTools } from '../../../scripting/javascript/JavascriptEvalExecutionTools';
11
- import type { ChatPrompt, Prompt } from '../../../types/Prompt';
12
- import { keepUnused } from '../../../utils/organization/keepUnused';
13
- // import { OpenAiAssistantExecutionTools } from '../OpenAiAssistantExecutionTools';
14
- import { join } from 'path';
15
- import { DEFAULT_EXECUTION_CACHE_DIRNAME } from '../../../config';
16
- import type { Usage } from '../../../execution/Usage';
17
- import { $provideFilesystemForNode } from '../../../scrapers/_common/register/$provideFilesystemForNode';
18
- import { FileCacheStorage } from '../../../storage/file-cache-storage/FileCacheStorage';
19
- import { cacheLlmTools } from '../../_common/utils/cache/cacheLlmTools';
20
- import { countUsage } from '../../_common/utils/count-total-usage/countUsage';
21
- import { OpenAiAgentKitExecutionTools } from '../OpenAiAgentKitExecutionTools';
22
- import { OpenAiExecutionTools } from '../OpenAiExecutionTools';
23
-
24
- playground()
25
- .catch((error) => {
26
- console.error(colors.bgRed(error.name || 'NamelessError'));
27
- console.error(error);
28
- process.exit(1);
29
- })
30
- .then(() => {
31
- process.exit(0);
32
- });
33
-
34
- /**
35
- * Handles playground.
36
- */
37
- async function playground() {
38
- console.info(`๐Ÿงธ OpenAI Playground`);
39
-
40
- // Do here stuff you want to test
41
- //========================================>
42
-
43
- const script = new JavascriptEvalExecutionTools({
44
- functions: {
45
- // TODO: !!!! Normalize function names:
46
- get_coupon_code: async (params: { productCategory: string; discountPercentage: number }) => {
47
- // Simulate generating a coupon code based on product category and discount percentage
48
- const { productCategory, discountPercentage } = params;
49
- const code = `SAVE${discountPercentage}${productCategory.toUpperCase().slice(0, 3)}2025`;
50
-
51
- console.log(
52
- `!!!! [๐Ÿ› ๏ธ] Generated coupon code: ${code} for category: ${productCategory} with discount: ${discountPercentage}%`,
53
- );
54
-
55
- return code;
56
- },
57
- },
58
- });
59
-
60
- let openAiExecutionTools = new OpenAiExecutionTools(
61
- // <- TODO: [๐Ÿงฑ] Implement in a functional (not new Class) way
62
- {
63
- isVerbose: true,
64
- userId: 'playground',
65
- apiKey: process.env.OPENAI_API_KEY!,
66
- executionTools: { script },
67
- },
68
- );
69
-
70
- openAiExecutionTools = cacheLlmTools(openAiExecutionTools, {
71
- storage: new FileCacheStorage(
72
- { fs: $provideFilesystemForNode() },
73
- {
74
- rootFolderPath: join(
75
- process.cwd(),
76
- DEFAULT_EXECUTION_CACHE_DIRNAME,
77
- // <- TODO: [๐Ÿฆ’] Allow to override (pass different value into the function)
78
- ),
79
- },
80
- ),
81
- // isCacheReloaded: isCacheReloaded,
82
- });
83
-
84
- const openAiExecutionToolsWithUsage = countUsage(openAiExecutionTools);
85
-
86
- openAiExecutionToolsWithUsage.spending().subscribe((usage: Usage) => {
87
- const wordCount = (usage?.input?.wordsCount?.value || 0) + (usage?.output?.wordsCount?.value || 0);
88
- console.log(`[๐Ÿ’ธ] Spending ${wordCount} words`);
89
- });
90
-
91
- /*/
92
- const openAiAssistantExecutionTools = new OpenAiAssistantExecutionTools(
93
- // <- TODO: [๐Ÿงฑ] Implement in a functional (not new Class) way
94
- {
95
- isVerbose: true,
96
- userId: 'playground',
97
- apiKey: process.env.OPENAI_API_KEY!,
98
- assistantId: 'asst_CJCZzFCbBL0f2D4OWMXVTdBB',
99
- // <- Note: This is not a private information, just ID of the assistant which is accessible only with correct API key
100
- },
101
- );
102
- /**/
103
-
104
- /*/
105
- const openAiAgentKitExecutionTools = new OpenAiAgentKitExecutionTools({
106
- isVerbose: true,
107
- userId: 'playground',
108
- apiKey: process.env.OPENAI_API_KEY!,
109
- executionTools: { script },
110
- });
111
-
112
- const agentKitPrompt = {
113
- title: 'AgentKit Coupon Demo',
114
- parameters: {},
115
- content: `Generate a coupon code for electronics with 15% off using the tool.`,
116
- tools: [
117
- {
118
- name: 'get_coupon_code',
119
- description: 'Generate a coupon code based on product category and discount percentage',
120
- parameters: {
121
- type: 'object',
122
- properties: {
123
- productCategory: {
124
- type: 'string',
125
- description: 'The category of the product (e.g., electronics, clothing)',
126
- },
127
- discountPercentage: {
128
- type: 'number',
129
- description: 'The discount percentage to apply',
130
- },
131
- },
132
- required: ['productCategory', 'discountPercentage'],
133
- },
134
- },
135
- ],
136
- modelRequirements: {
137
- modelVariant: 'CHAT',
138
- systemMessage:
139
- 'Use the get_coupon_code tool to generate the coupon. Do not invent coupon codes.',
140
- },
141
- } satisfies ChatPrompt;
142
- const agentKitResult = await openAiAgentKitExecutionTools.callChatModel!(agentKitPrompt);
143
- console.info({ agentKitResult });
144
- console.info(colors.cyan(usageToHuman(agentKitResult.usage)));
145
- console.info(colors.bgBlue(' User: ') + colors.blue(agentKitPrompt.content));
146
- console.info(colors.bgGreen(' AgentKit: ') + colors.green(agentKitResult.content));
147
- /**/
148
-
149
- keepUnused(openAiExecutionTools);
150
- keepUnused(OpenAiAgentKitExecutionTools);
151
- // keepUnused(openAiAssistantExecutionTools);
152
- keepUnused(embeddingVectorToString);
153
- keepUnused(usageToHuman);
154
- keepUnused<Prompt>();
155
-
156
- /*/
157
- const models = await openAiExecutionTools.listModels();
158
- console.info({ models });
159
- /**/
160
-
161
- /*/
162
- const imagePrompt = {
163
- title: 'Hello',
164
- parameters: {},
165
- content: `Coffee cup floating in space, surrealistic, vibrant colors, high detail`,
166
- modelRequirements: {
167
- modelVariant: 'IMAGE_GENERATION',
168
- },
169
- } as const satisfies Prompt;
170
- const imagePromptResult = await openAiExecutionTools.callImageGenerationModel(imagePrompt);
171
- console.info({ imagePromptResult });
172
- console.info(colors.cyan(usageToHuman(imagePromptResult.usage)));
173
- console.info(colors.green(imagePromptResult.content));
174
- /**/
175
-
176
- /*/
177
- const completionPrompt = {
178
- title: 'Hello',
179
- parameters: {},
180
- content: `Hello, my name is Alice.`,
181
- modelRequirements: {
182
- modelVariant: 'COMPLETION',
183
- },
184
- } as const satisfies Prompt;
185
- const completionPromptResult = await openAiExecutionTools.callCompletionModel(completionPrompt);
186
- console.info({ completionPromptResult });
187
- console.info(colors.cyan(usageToHuman(chatPromptResult.usage)));
188
- console.info(colors.green(completionPrompt.content + completionPromptResult.content));
189
- /**/
190
-
191
- /**/
192
- const chatPrompt = {
193
- title: 'Prague',
194
- parameters: {},
195
- // thread: [
196
- // // <- TODO: !!! Maybe rename to `previousMessages`
197
- // {
198
- // sender: 'user', // <- [๐Ÿ‘ฅ] TODO: Standardize to `role: 'USER' | 'ASSISTANT'
199
- // content: 'Where is Prague ',
200
- // },
201
- // {
202
- // sender: 'assistant',
203
- // content: 'Prague is a beautiful city located in the Czech Republic.',
204
- // },
205
- // ],
206
- content: `Give me a coupons for grocery shopping in electronics store with a 20% discount.`,
207
-
208
- tools: [
209
- {
210
- name: 'get_coupon_code',
211
-
212
- description: 'Generate a coupon code based on product category and discount percentage',
213
-
214
- parameters: {
215
- type: 'object',
216
- properties: {
217
- productCategory: {
218
- type: 'string',
219
- description: 'The category of the product (e.g., electronics, clothing)',
220
- },
221
- discountPercentage: {
222
- type: 'number',
223
- description: 'The discount percentage to apply',
224
- },
225
- },
226
- required: ['productCategory', 'discountPercentage'],
227
- },
228
- },
229
- ],
230
-
231
- modelRequirements: {
232
- modelVariant: 'CHAT',
233
- systemMessage:
234
- 'You are an helpful assistant who can provide coupon codes, via the get_coupon_code tool. Do not make up coupon codes on your own. Do not provide more that 25% discount and more than 5 coupons per message.',
235
- // modelName: 'gpt-3.5-turbo',
236
- modelName: 'gpt-5',
237
- temperature: 1.5,
238
- },
239
- } /* as const */ satisfies ChatPrompt; /* <- Note: [๐Ÿค›] */
240
- const chatPromptResult = await openAiExecutionToolsWithUsage.callChatModel!(chatPrompt);
241
- console.info({ chatPromptResult });
242
- console.info(colors.cyan(usageToHuman(chatPromptResult.usage)));
243
- console.info(colors.bgBlue(' User: ') + colors.blue(chatPrompt.content));
244
- console.info(colors.bgGreen(' Chat: ') + colors.green(chatPromptResult.content));
245
- /**/
246
-
247
- /**/
248
- // TODO: !!!!! Test
249
- const chatPromptWithFiles = {
250
- title: 'Chat with files',
251
- parameters: {},
252
- content: `What is in these images?`,
253
-
254
- files: [
255
- // Note: In node.js we need to mock the File object or use a real one if available
256
- // For playground purposes, we can use a small transparent pixel
257
- new File(
258
- // cspell:disable
259
- [Buffer.from('R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7', 'base64')],
260
- // cspell:enable
261
- 'pixel.gif',
262
- { type: 'image/gif' },
263
- ),
264
- ],
265
- modelRequirements: {
266
- modelVariant: 'CHAT',
267
- modelName: 'gpt-4o',
268
- },
269
- } satisfies ChatPrompt;
270
- const chatPromptWithFilesResult = await openAiExecutionToolsWithUsage.callChatModel!(chatPromptWithFiles);
271
- console.info({ chatPromptWithFilesResult });
272
- console.info(colors.bgBlue(' User: ') + colors.blue(chatPromptWithFiles.content));
273
- console.info(colors.bgGreen(' Chat: ') + colors.green(chatPromptWithFilesResult.content));
274
- /**/
275
-
276
- /*/
277
- const chatPromptResult2 = await openAiExecutionToolsWithUsage.callChatModel!(chatPrompt);
278
- console.info({ chatPromptResult2 });
279
- console.info(colors.cyan(usageToHuman(chatPromptResult2.usage)));
280
- console.info(colors.bgBlue(' User: ') + colors.blue(chatPrompt.content));
281
- console.info(colors.bgGreen(' Chat: ') + colors.green(chatPromptResult2.content));
282
- /**/
283
-
284
- /*/
285
- // TODO: Test Translations in playground
286
- /**/
287
-
288
- /*/
289
- const prompt = {
290
- title: 'Hello',
291
- parameters: {},
292
- content: `Hello, my name is Alice.`,
293
- modelRequirements: {
294
- modelVariant: 'EMBEDDING',
295
- // modelName: 'text-embedding-ada-002',
296
- },
297
- } as const satisfies Prompt;
298
- const promptResult = await openAiExecutionTools.callEmbeddingModel(prompt);
299
- console.info({ promptResult });
300
- console.info(colors.cyan(usageToHuman(chatPromptResult.usage)));
301
- console.info(colors.bgBlue(' User: ') + colors.blue(prompt.content));
302
- console.info(colors.bgGreen(' Embedding: ') + colors.green(embeddingVectorToString(promptResult.content)));
303
- /**/
304
-
305
- /*/
306
- const chatPrompt = {
307
- title: 'Promptbook speech',
308
- parameters: {},
309
- content: `Write me speech about Promptbook and how it can help me to build the most beautiful chatbot and change the world`,
310
- modelRequirements: {
311
- modelVariant: 'CHAT',
312
- // TODO: [๐Ÿ‘จโ€๐Ÿ‘จโ€๐Ÿ‘งโ€๐Ÿ‘ง] systemMessage: 'You are an assistant who only speaks in rhymes.',
313
- // TODO: [๐Ÿ‘จโ€๐Ÿ‘จโ€๐Ÿ‘งโ€๐Ÿ‘ง] temperature: 1.5,
314
- },
315
-
316
- /*
317
- [๐Ÿ—ฏ]
318
- replyingTo: {
319
-
320
- }
321
- * /
322
- } as const satisfies Prompt;
323
- const chatPromptResult = await openAiAssistantExecutionTools.callChatModel(chatPrompt);
324
- console.info({ chatPromptResult });
325
- console.info(colors.cyan(usageToHuman(chatPromptResult.usage)));
326
- console.info(colors.bgBlue(' User: ') + colors.blue(chatPrompt.content));
327
- console.info(colors.bgGreen(' Assistant: ') + colors.green(chatPromptResult.content));
328
- /**/
329
-
330
- /*/
331
- const openai = await openAiExecutionTools.getClient();
332
- const stream = openai.beta.threads.createAndRunStream({
333
- stream: true,
334
- assistant_id: 'asst_CJCZzFCbBL0f2D4OWMXVTdBB',
335
- // <- Note: This is not a private information, just ID of the assistant which is accessible only with correct API key
336
- thread: {
337
- messages: [{ role: 'user', content: 'What is the meaning of life? I want breathtaking speech.' }],
338
- },
339
- });
340
-
341
- console.log(stream);
342
-
343
- stream.on('connect', () => {
344
- console.log('connect', stream.currentEvent);
345
- });
346
-
347
- stream.on('messageDelta', (messageDelta) => {
348
- console.log('messageDelta', (messageDelta as any).content[0].text);
349
- });
350
-
351
- stream.on('messageCreated', (message) => {
352
- console.log('messageCreated', message);
353
- });
354
-
355
- stream.on('messageDone', (message) => {
356
- console.log('messageDone', message);
357
- });
358
-
359
- const finalMessages = await stream.finalMessages();
360
- console.log('finalMessages', finalMessages, finalMessages[0]!.content[0]!);
361
-
362
- /**/
363
-
364
- /*/
365
- const chatWithToolsPrompt = {
366
- title: 'Chat with tools',
367
- parameters: {},
368
- content: `What is the current weather in Prague?`,
369
- modelRequirements: {
370
- modelVariant: 'CHAT',
371
- modelName: 'gpt-4o',
372
- tools: [
373
- {
374
- name: 'get_current_weather',
375
- description: 'Get the current weather in a given location',
376
- parameters: {
377
- type: 'object',
378
- properties: {
379
- location: {
380
- type: 'string',
381
- description: 'The city and state, e.g. San Francisco, CA',
382
- },
383
- unit: { type: 'string', enum: ['celsius', 'fahrenheit'] },
384
- },
385
- required: ['location'],
386
- },
387
- },
388
- ],
389
- },
390
- } as const satisfies Prompt;
391
- const chatWithToolsResult = await openAiExecutionTools.callChatModel(chatWithToolsPrompt);
392
- console.info({ chatWithToolsResult });
393
- console.info(colors.cyan(usageToHuman(chatWithToolsResult.usage)));
394
- console.info(colors.bgBlue(' User: ') + colors.blue(chatWithToolsPrompt.content));
395
- console.info(colors.bgGreen(' Chat: ') + colors.green(chatWithToolsResult.content));
396
- /**/
397
-
398
- /*/
399
- // <- Note: [๐Ÿค–] Test here new model variant if needed
400
- /**/
401
-
402
- //========================================/
403
- }
404
-
405
- // Note: [โšซ] Code for playground [openai playground](src/llm-providers/openai/playground/playground.ts) should never be published in any package
406
- // TODO: [main] !!3 Test here that `systemMessage`, `temperature` and `seed` are working correctly
@@ -1,19 +0,0 @@
1
- {
2
- "compilerOptions": {
3
- "target": "esnext",
4
- "module": "commonjs",
5
- "downlevelIteration": true,
6
- "allowJs": true,
7
- "moduleResolution": "node",
8
- "forceConsistentCasingInFileNames": true,
9
- "noImplicitReturns": true,
10
- "noImplicitThis": true,
11
- "noImplicitAny": true,
12
- "strictNullChecks": true,
13
- "experimentalDecorators": true,
14
- "noUnusedLocals": false,
15
- "resolveJsonModule": true,
16
- "esModuleInterop": true
17
- },
18
- "exclude": ["node_modules"]
19
- }