@promptbook/wizard 0.100.0-2 → 0.100.0-21

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 (49) hide show
  1. package/README.md +1 -0
  2. package/esm/index.es.js +87 -18
  3. package/esm/index.es.js.map +1 -1
  4. package/esm/typings/src/_packages/core.index.d.ts +24 -0
  5. package/esm/typings/src/_packages/types.index.d.ts +28 -0
  6. package/esm/typings/src/book-2.0/agent-source/parseAgentSource.d.ts +30 -0
  7. package/esm/typings/src/book-2.0/agent-source/parseAgentSource.test.d.ts +1 -0
  8. package/esm/typings/src/book-2.0/agent-source/string_book.d.ts +26 -0
  9. package/esm/typings/src/book-2.0/commitments/ACTION/ACTION.d.ts +30 -0
  10. package/esm/typings/src/book-2.0/commitments/FORMAT/FORMAT.d.ts +31 -0
  11. package/esm/typings/src/book-2.0/commitments/KNOWLEDGE/FrontendRAGService.d.ts +48 -0
  12. package/esm/typings/src/book-2.0/commitments/KNOWLEDGE/KNOWLEDGE.d.ts +43 -0
  13. package/esm/typings/src/book-2.0/commitments/KNOWLEDGE/RAGService.d.ts +54 -0
  14. package/esm/typings/src/book-2.0/commitments/KNOWLEDGE/processors/BaseKnowledgeProcessor.d.ts +45 -0
  15. package/esm/typings/src/book-2.0/commitments/KNOWLEDGE/processors/PdfProcessor.d.ts +31 -0
  16. package/esm/typings/src/book-2.0/commitments/KNOWLEDGE/processors/ProcessorFactory.d.ts +23 -0
  17. package/esm/typings/src/book-2.0/commitments/KNOWLEDGE/processors/TextProcessor.d.ts +18 -0
  18. package/esm/typings/src/book-2.0/commitments/KNOWLEDGE/types.d.ts +56 -0
  19. package/esm/typings/src/book-2.0/commitments/KNOWLEDGE/utils/ragHelper.d.ts +34 -0
  20. package/esm/typings/src/book-2.0/commitments/META_IMAGE/META_IMAGE.d.ts +36 -0
  21. package/esm/typings/src/book-2.0/commitments/META_LINK/META_LINK.d.ts +48 -0
  22. package/esm/typings/src/book-2.0/commitments/MODEL/MODEL.d.ts +31 -0
  23. package/esm/typings/src/book-2.0/commitments/NOTE/NOTE.d.ts +41 -0
  24. package/esm/typings/src/book-2.0/commitments/PERSONA/PERSONA.d.ts +38 -0
  25. package/esm/typings/src/book-2.0/commitments/RULE/RULE.d.ts +36 -0
  26. package/esm/typings/src/book-2.0/commitments/SAMPLE/SAMPLE.d.ts +36 -0
  27. package/esm/typings/src/book-2.0/commitments/STYLE/STYLE.d.ts +30 -0
  28. package/esm/typings/src/book-2.0/commitments/_base/BaseCommitmentDefinition.d.ts +42 -0
  29. package/esm/typings/src/book-2.0/commitments/_base/BookCommitment.d.ts +5 -0
  30. package/esm/typings/src/book-2.0/commitments/_base/CommitmentDefinition.d.ts +37 -0
  31. package/esm/typings/src/book-2.0/commitments/_base/NotYetImplementedCommitmentDefinition.d.ts +14 -0
  32. package/esm/typings/src/book-2.0/commitments/_base/createEmptyAgentModelRequirements.d.ts +19 -0
  33. package/esm/typings/src/book-2.0/commitments/_misc/AgentModelRequirements.d.ts +37 -0
  34. package/esm/typings/src/book-2.0/commitments/_misc/AgentSourceParseResult.d.ts +18 -0
  35. package/esm/typings/src/book-2.0/commitments/_misc/ParsedCommitment.d.ts +22 -0
  36. package/esm/typings/src/book-2.0/commitments/_misc/createAgentModelRequirements.d.ts +61 -0
  37. package/esm/typings/src/book-2.0/commitments/_misc/createAgentModelRequirementsWithCommitments.d.ts +35 -0
  38. package/esm/typings/src/book-2.0/commitments/_misc/createCommitmentRegex.d.ts +20 -0
  39. package/esm/typings/src/book-2.0/commitments/_misc/parseAgentSourceWithCommitments.d.ts +24 -0
  40. package/esm/typings/src/book-2.0/commitments/_misc/removeCommentsFromSystemMessage.d.ts +11 -0
  41. package/esm/typings/src/book-2.0/commitments/index.d.ts +56 -0
  42. package/esm/typings/src/book-2.0/utils/profileImageUtils.d.ts +39 -0
  43. package/esm/typings/src/pipeline/book-notation.d.ts +2 -1
  44. package/esm/typings/src/types/typeAliases.d.ts +6 -0
  45. package/esm/typings/src/version.d.ts +1 -1
  46. package/esm/typings/src/wizard/wizard.d.ts +14 -4
  47. package/package.json +2 -2
  48. package/umd/index.umd.js +87 -18
  49. package/umd/index.umd.js.map +1 -1
@@ -0,0 +1,39 @@
1
+ import type { string_url_image } from '../../types/typeAliases';
2
+ /**
3
+ * Extracts profile image URL from agent definition text and returns cleaned system message
4
+ * @param systemMessage The original system message that may contain META IMAGE line
5
+ * @returns Object with profileImageUrl (if found) and cleanedSystemMessage (without META IMAGE line)
6
+ *
7
+ * @private - TODO: [🧠] Maybe should be public?
8
+ */
9
+ export declare function extractProfileImageFromSystemMessage(systemMessage: string): {
10
+ profileImageUrl?: string_url_image;
11
+ cleanedSystemMessage: string;
12
+ };
13
+ /**
14
+ * Extracts persona, examples, and profile image from agent definition text
15
+ * @param systemMessage The original system message that may contain PERSONA, EXAMPLE, and META IMAGE lines
16
+ * @returns Object with extracted information and cleaned system message
17
+ *
18
+ * @private - TODO: [🧠] Maybe should be public?
19
+ */
20
+ export declare function extractAgentMetadata(systemMessage: string): {
21
+ persona?: {
22
+ name: string;
23
+ description?: string;
24
+ };
25
+ examples: string[];
26
+ profileImageUrl?: string_url_image;
27
+ cleanedSystemMessage: string;
28
+ };
29
+ /**
30
+ * Generates a gravatar URL based on agent name for fallback avatar
31
+ * @param name The agent name to generate avatar for
32
+ * @returns Gravatar URL
33
+ *
34
+ * @private - TODO: [🧠] Maybe should be public?
35
+ */
36
+ export declare function generateGravatarUrl(name?: string | null): string;
37
+ /**
38
+ * Note: [💞] Ignore a discrepancy between file name and entity name
39
+ */
@@ -1,3 +1,4 @@
1
+ import type { string_book } from '../book-2.0/agent-source/string_book';
1
2
  import type { PipelineString } from './PipelineString';
2
3
  /**
3
4
  * Tag function for notating a pipeline with a book\`...\ notation as template literal
@@ -12,7 +13,7 @@ import type { PipelineString } from './PipelineString';
12
13
  * @returns the pipeline string
13
14
  * @public exported from `@promptbook/core`
14
15
  */
15
- export declare function book(strings: TemplateStringsArray, ...values: Array<string>): PipelineString;
16
+ export declare function book(strings: TemplateStringsArray, ...values: Array<string>): string_book & PipelineString;
16
17
  /**
17
18
  * TODO: [🧠][🈴] Where is the best location for this file
18
19
  * Note: [💞] Ignore a discrepancy between file name and entity name
@@ -136,6 +136,12 @@ export type ReservedParameters = Record<string_reserved_parameter_name, string_p
136
136
  * For example `"Ai*nautes"`
137
137
  */
138
138
  export type string_title = string;
139
+ /**
140
+ * Semantic helper
141
+ *
142
+ * For example `"My AI Assistant"`
143
+ */
144
+ export type string_agent_name = string;
139
145
  /**
140
146
  * Unstructured description of the persona
141
147
  *
@@ -15,7 +15,7 @@ export declare const BOOK_LANGUAGE_VERSION: string_semantic_version;
15
15
  export declare const PROMPTBOOK_ENGINE_VERSION: string_promptbook_version;
16
16
  /**
17
17
  * Represents the version string of the Promptbook engine.
18
- * It follows semantic versioning (e.g., `0.100.0-1`).
18
+ * It follows semantic versioning (e.g., `0.100.0-20`).
19
19
  *
20
20
  * @generated
21
21
  */
@@ -6,6 +6,15 @@ import type { InputParameters } from '../types/typeAliases';
6
6
  import type { string_filename } from '../types/typeAliases';
7
7
  import type { string_parameter_value } from '../types/typeAliases';
8
8
  import type { string_pipeline_url } from '../types/typeAliases';
9
+ /**
10
+ * Options for wizard methods
11
+ */
12
+ interface WizardOptions {
13
+ /**
14
+ * Whether to enable verbose logging
15
+ */
16
+ isVerbose?: boolean;
17
+ }
9
18
  /**
10
19
  * Wizard for simple usage of the Promptbook
11
20
  * Look at `wizard` for more details
@@ -26,7 +35,7 @@ declare class Wizard {
26
35
  *
27
36
  * Note: This works similar to the `ptbk run` command
28
37
  */
29
- execute(book: string_pipeline_url | string_filename | PipelineString, inputParameters: InputParameters): Promise<{
38
+ execute(book: string_pipeline_url | string_filename | PipelineString, inputParameters: InputParameters, options?: WizardOptions): Promise<{
30
39
  /**
31
40
  * Simple result of the execution
32
41
  */
@@ -36,9 +45,9 @@ declare class Wizard {
36
45
  /**
37
46
  * Provides the tools automatically for the Node.js environment
38
47
  *
39
- * @param pipelineSource
48
+ * @param options
40
49
  */
41
- getExecutionTools(): Promise<Required<Pick<ExecutionTools, 'fs' | 'fetch'>>>;
50
+ getExecutionTools(options?: WizardOptions): Promise<Required<Pick<ExecutionTools, 'fs' | 'fetch'>>>;
42
51
  /**
43
52
  * Load book from the source
44
53
  *
@@ -49,8 +58,9 @@ declare class Wizard {
49
58
  * 3) As a string
50
59
  *
51
60
  * @param pipelineSource
61
+ * @param options
52
62
  */
53
- getCompiledBook(pipelineSource: string_filename | string_pipeline_url | PipelineString): Promise<PipelineJson>;
63
+ getCompiledBook(pipelineSource: string_filename | string_pipeline_url | PipelineString, options?: WizardOptions): Promise<PipelineJson>;
54
64
  }
55
65
  /**
56
66
  * Wizard for simple usage of the Promptbook
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@promptbook/wizard",
3
- "version": "0.100.0-2",
3
+ "version": "0.100.0-21",
4
4
  "description": "Promptbook: Run AI apps in plain human language across multiple models and platforms",
5
5
  "private": false,
6
6
  "sideEffects": false,
@@ -95,7 +95,7 @@
95
95
  "module": "./esm/index.es.js",
96
96
  "typings": "./esm/typings/src/_packages/wizard.index.d.ts",
97
97
  "peerDependencies": {
98
- "@promptbook/core": "0.100.0-2"
98
+ "@promptbook/core": "0.100.0-21"
99
99
  },
100
100
  "dependencies": {
101
101
  "@ai-sdk/deepseek": "0.1.6",
package/umd/index.umd.js CHANGED
@@ -49,7 +49,7 @@
49
49
  * @generated
50
50
  * @see https://github.com/webgptorg/promptbook
51
51
  */
52
- const PROMPTBOOK_ENGINE_VERSION = '0.100.0-2';
52
+ const PROMPTBOOK_ENGINE_VERSION = '0.100.0-21';
53
53
  /**
54
54
  * TODO: string_promptbook_version should be constrained to the all versions of Promptbook engine
55
55
  * Note: [💞] Ignore a discrepancy between file name and entity name
@@ -2720,6 +2720,18 @@
2720
2720
  const OPENAI_MODELS = exportJson({
2721
2721
  name: 'OPENAI_MODELS',
2722
2722
  value: [
2723
+ /**/
2724
+ {
2725
+ modelVariant: 'CHAT',
2726
+ modelTitle: 'gpt-5',
2727
+ modelName: 'gpt-5',
2728
+ modelDescription: "OpenAI's most advanced language model with unprecedented reasoning capabilities and 200K context window. Features revolutionary improvements in complex problem-solving, scientific reasoning, and creative tasks. Demonstrates human-level performance across diverse domains with enhanced safety measures and alignment. Represents the next generation of AI with superior understanding, nuanced responses, and advanced multimodal capabilities.",
2729
+ pricing: {
2730
+ prompt: pricing(`$10.00 / 1M tokens`),
2731
+ output: pricing(`$30.00 / 1M tokens`),
2732
+ },
2733
+ },
2734
+ /**/
2723
2735
  /*/
2724
2736
  {
2725
2737
  modelTitle: 'dall-e-3',
@@ -5184,7 +5196,7 @@
5184
5196
  * Default model for chat variant.
5185
5197
  */
5186
5198
  getDefaultChatModel() {
5187
- return this.getDefaultModel('gpt-4-turbo');
5199
+ return this.getDefaultModel('gpt-5');
5188
5200
  }
5189
5201
  /**
5190
5202
  * Default model for completion variant.
@@ -5974,7 +5986,23 @@
5974
5986
  .join('/') +
5975
5987
  '.' +
5976
5988
  extension;
5977
- await promises.mkdir(path.dirname(cacheFilename), { recursive: true });
5989
+ // Note: Try to create cache directory, but don't fail if filesystem has issues
5990
+ try {
5991
+ await promises.mkdir(path.dirname(cacheFilename), { recursive: true });
5992
+ }
5993
+ catch (error) {
5994
+ // Note: If we can't create cache directory, continue without it
5995
+ // This handles read-only filesystems, permission issues, and missing parent directories
5996
+ if (error instanceof Error && (error.message.includes('EROFS') ||
5997
+ error.message.includes('read-only') ||
5998
+ error.message.includes('EACCES') ||
5999
+ error.message.includes('EPERM') ||
6000
+ error.message.includes('ENOENT'))) ;
6001
+ else {
6002
+ // Re-throw other unexpected errors
6003
+ throw error;
6004
+ }
6005
+ }
5978
6006
  let isDestroyed = true;
5979
6007
  const fileHandler = {
5980
6008
  filename: cacheFilename,
@@ -7738,7 +7766,23 @@
7738
7766
  // <- TODO: [🥬] Encapsulate sha256 to some private utility function
7739
7767
  const rootDirname = path.join(process.cwd(), DEFAULT_DOWNLOAD_CACHE_DIRNAME);
7740
7768
  const filepath = path.join(...nameToSubfolderPath(hash /* <- TODO: [🎎] Maybe add some SHA256 prefix */), `${basename.substring(0, MAX_FILENAME_LENGTH)}.${mimeTypeToExtension(mimeType)}`);
7741
- await tools.fs.mkdir(path.dirname(path.join(rootDirname, filepath)), { recursive: true });
7769
+ // Note: Try to create cache directory, but don't fail if filesystem has issues
7770
+ try {
7771
+ await tools.fs.mkdir(path.dirname(path.join(rootDirname, filepath)), { recursive: true });
7772
+ }
7773
+ catch (error) {
7774
+ // Note: If we can't create cache directory, we'll handle it when trying to write the file
7775
+ // This handles read-only filesystems, permission issues, and missing parent directories
7776
+ if (error instanceof Error && (error.message.includes('EROFS') ||
7777
+ error.message.includes('read-only') ||
7778
+ error.message.includes('EACCES') ||
7779
+ error.message.includes('EPERM') ||
7780
+ error.message.includes('ENOENT'))) ;
7781
+ else {
7782
+ // Re-throw other unexpected errors
7783
+ throw error;
7784
+ }
7785
+ }
7742
7786
  const fileContent = Buffer.from(await response.arrayBuffer());
7743
7787
  if (fileContent.length > DEFAULT_MAX_FILE_SIZE /* <- TODO: Allow to pass different value to remote server */) {
7744
7788
  throw new LimitReachedError(`File is too large (${Math.round(fileContent.length / 1024 / 1024)}MB). Maximum allowed size is ${Math.round(DEFAULT_MAX_FILE_SIZE / 1024 / 1024)}MB.`);
@@ -7753,7 +7797,8 @@
7753
7797
  if (error instanceof Error && (error.message.includes('EROFS') ||
7754
7798
  error.message.includes('read-only') ||
7755
7799
  error.message.includes('EACCES') ||
7756
- error.message.includes('EPERM'))) {
7800
+ error.message.includes('EPERM') ||
7801
+ error.message.includes('ENOENT'))) {
7757
7802
  // Return a handler that works directly with the downloaded content
7758
7803
  return {
7759
7804
  source: name,
@@ -10860,7 +10905,8 @@
10860
10905
  if (error instanceof Error && (error.message.includes('EROFS') ||
10861
10906
  error.message.includes('read-only') ||
10862
10907
  error.message.includes('EACCES') ||
10863
- error.message.includes('EPERM'))) ;
10908
+ error.message.includes('EPERM') ||
10909
+ error.message.includes('ENOENT'))) ;
10864
10910
  else {
10865
10911
  // Re-throw other unexpected errors
10866
10912
  throw error;
@@ -11163,7 +11209,8 @@
11163
11209
  if (error instanceof Error && (error.message.includes('EROFS') ||
11164
11210
  error.message.includes('read-only') ||
11165
11211
  error.message.includes('EACCES') ||
11166
- error.message.includes('EPERM'))) ;
11212
+ error.message.includes('EPERM') ||
11213
+ error.message.includes('ENOENT'))) ;
11167
11214
  else {
11168
11215
  // Re-throw other unexpected errors
11169
11216
  throw error;
@@ -11909,8 +11956,27 @@
11909
11956
  throw new UnexpectedError(`The "${key}" you want to store in JSON file is not serializable as JSON`);
11910
11957
  }
11911
11958
  const fileContent = stringifyPipelineJson(value);
11912
- await promises.mkdir(path.dirname(filename), { recursive: true }); // <- [0]
11913
- await promises.writeFile(filename, fileContent, 'utf-8');
11959
+ // Note: Try to create cache directory and write file, but don't fail if filesystem is read-only or has permission issues
11960
+ try {
11961
+ await promises.mkdir(path.dirname(filename), { recursive: true }); // <- [0]
11962
+ await promises.writeFile(filename, fileContent, 'utf-8');
11963
+ }
11964
+ catch (error) {
11965
+ // Note: If we can't write to cache, silently ignore the error
11966
+ // This handles read-only filesystems, permission issues, and missing parent directories
11967
+ if (error instanceof Error && (error.message.includes('EROFS') ||
11968
+ error.message.includes('read-only') ||
11969
+ error.message.includes('EACCES') ||
11970
+ error.message.includes('EPERM') ||
11971
+ error.message.includes('ENOENT'))) {
11972
+ // Silently ignore filesystem errors - caching is optional
11973
+ return;
11974
+ }
11975
+ else {
11976
+ // Re-throw other unexpected errors
11977
+ throw error;
11978
+ }
11979
+ }
11914
11980
  }
11915
11981
  /**
11916
11982
  * Removes the key/value pair with the given key from the storage, if a key/value pair with the given key exists.
@@ -16790,7 +16856,8 @@
16790
16856
  if (error instanceof Error && (error.message.includes('EROFS') ||
16791
16857
  error.message.includes('read-only') ||
16792
16858
  error.message.includes('EACCES') ||
16793
- error.message.includes('EPERM'))) ;
16859
+ error.message.includes('EPERM') ||
16860
+ error.message.includes('ENOENT'))) ;
16794
16861
  else {
16795
16862
  // Re-throw other unexpected errors
16796
16863
  throw error;
@@ -16917,14 +16984,14 @@
16917
16984
  *
16918
16985
  * Note: This works similar to the `ptbk run` command
16919
16986
  */
16920
- async execute(book, inputParameters) {
16987
+ async execute(book, inputParameters, options = {}) {
16921
16988
  if (!$isRunningInNode()) {
16922
16989
  throw new EnvironmentMismatchError('Wizard works only in Node.js environment');
16923
16990
  }
16924
16991
  // ▶ Get the tools
16925
- const tools = await this.getExecutionTools();
16992
+ const tools = await this.getExecutionTools(options);
16926
16993
  // ▶ Get the Pipeline
16927
- const pipeline = await this.getCompiledBook(book);
16994
+ const pipeline = await this.getCompiledBook(book, options);
16928
16995
  // ▶ Create executor - the function that will execute the Pipeline
16929
16996
  const pipelineExecutor = createPipelineExecutor({ pipeline, tools });
16930
16997
  // 🚀▶ Execute the Pipeline
@@ -16947,15 +17014,16 @@
16947
17014
  /**
16948
17015
  * Provides the tools automatically for the Node.js environment
16949
17016
  *
16950
- * @param pipelineSource
17017
+ * @param options
16951
17018
  */
16952
- async getExecutionTools() {
17019
+ async getExecutionTools(options = {}) {
17020
+ var _a;
16953
17021
  if (this.executionTools !== null) {
16954
17022
  return this.executionTools;
16955
17023
  }
16956
17024
  // TODO: DRY [◽]
16957
17025
  const prepareAndScrapeOptions = {
16958
- isVerbose: false,
17026
+ isVerbose: (_a = options.isVerbose) !== null && _a !== void 0 ? _a : false,
16959
17027
  isCacheReloaded: false, // <- TODO: Allow to pass
16960
17028
  }; /* <- TODO: ` satisfies PrepareAndScrapeOptions` */
16961
17029
  const fs = $provideFilesystemForNode();
@@ -16985,9 +17053,10 @@
16985
17053
  * 3) As a string
16986
17054
  *
16987
17055
  * @param pipelineSource
17056
+ * @param options
16988
17057
  */
16989
- async getCompiledBook(pipelineSource) {
16990
- const tools = await this.getExecutionTools();
17058
+ async getCompiledBook(pipelineSource, options = {}) {
17059
+ const tools = await this.getExecutionTools(options);
16991
17060
  return /* not await */ $getCompiledBook(tools, pipelineSource);
16992
17061
  }
16993
17062
  }