@promptbook/wizard 0.105.0-6 → 0.105.0-8
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/esm/index.es.js +102 -12
- package/esm/index.es.js.map +1 -1
- package/esm/typings/src/commitments/NOTE/NOTE.d.ts +2 -2
- package/esm/typings/src/commitments/USE_SEARCH_ENGINE/USE_SEARCH_ENGINE.d.ts +6 -0
- package/esm/typings/src/commitments/index.d.ts +1 -1
- package/esm/typings/src/llm-providers/agent/Agent.d.ts +1 -0
- package/esm/typings/src/llm-providers/agent/AgentOptions.d.ts +7 -0
- package/esm/typings/src/llm-providers/agent/RemoteAgentOptions.d.ts +1 -1
- package/esm/typings/src/version.d.ts +1 -1
- package/package.json +2 -2
- package/umd/index.umd.js +102 -12
- package/umd/index.umd.js.map +1 -1
|
@@ -26,8 +26,8 @@ import { BaseCommitmentDefinition } from '../_base/BaseCommitmentDefinition';
|
|
|
26
26
|
*
|
|
27
27
|
* @private [🪔] Maybe export the commitments through some package
|
|
28
28
|
*/
|
|
29
|
-
export declare class NoteCommitmentDefinition extends BaseCommitmentDefinition<'NOTE' | 'NOTES' | 'COMMENT' | 'NONCE'> {
|
|
30
|
-
constructor(type?: 'NOTE' | 'NOTES' | 'COMMENT' | 'NONCE');
|
|
29
|
+
export declare class NoteCommitmentDefinition extends BaseCommitmentDefinition<'NOTE' | 'NOTES' | 'COMMENT' | 'NONCE' | 'TODO'> {
|
|
30
|
+
constructor(type?: 'NOTE' | 'NOTES' | 'COMMENT' | 'NONCE' | 'TODO');
|
|
31
31
|
/**
|
|
32
32
|
* Short one-line description of NOTE.
|
|
33
33
|
*/
|
|
@@ -1,4 +1,6 @@
|
|
|
1
|
+
import { string_javascript_name } from '../../_packages/types.index';
|
|
1
2
|
import type { AgentModelRequirements } from '../../book-2.0/agent-source/AgentModelRequirements';
|
|
3
|
+
import { ToolFunction } from '../../scripting/javascript/JavascriptExecutionToolsOptions';
|
|
2
4
|
import { BaseCommitmentDefinition } from '../_base/BaseCommitmentDefinition';
|
|
3
5
|
/**
|
|
4
6
|
* USE SEARCH ENGINE commitment definition
|
|
@@ -32,6 +34,10 @@ export declare class UseSearchEngineCommitmentDefinition extends BaseCommitmentD
|
|
|
32
34
|
*/
|
|
33
35
|
get documentation(): string;
|
|
34
36
|
applyToAgentModelRequirements(requirements: AgentModelRequirements, content: string): AgentModelRequirements;
|
|
37
|
+
/**
|
|
38
|
+
* Gets the `web_search` tool function implementation.
|
|
39
|
+
*/
|
|
40
|
+
getToolFunctions(): Record<string_javascript_name, ToolFunction>;
|
|
35
41
|
}
|
|
36
42
|
/**
|
|
37
43
|
* Note: [💞] Ignore a discrepancy between file name and entity name
|
|
@@ -44,7 +44,7 @@ import { NotYetImplementedCommitmentDefinition } from './_base/NotYetImplemented
|
|
|
44
44
|
*
|
|
45
45
|
* @private Use functions to access commitments instead of this array directly
|
|
46
46
|
*/
|
|
47
|
-
export declare const COMMITMENT_REGISTRY: readonly [PersonaCommitmentDefinition, PersonaCommitmentDefinition, KnowledgeCommitmentDefinition, MemoryCommitmentDefinition, MemoryCommitmentDefinition, StyleCommitmentDefinition, StyleCommitmentDefinition, RuleCommitmentDefinition, RuleCommitmentDefinition, LanguageCommitmentDefinition, LanguageCommitmentDefinition, SampleCommitmentDefinition, SampleCommitmentDefinition, FormatCommitmentDefinition, FormatCommitmentDefinition, FromCommitmentDefinition, ImportCommitmentDefinition, ImportCommitmentDefinition, ModelCommitmentDefinition, ModelCommitmentDefinition, ActionCommitmentDefinition, ActionCommitmentDefinition, ComponentCommitmentDefinition, MetaImageCommitmentDefinition, MetaColorCommitmentDefinition, MetaFontCommitmentDefinition, MetaLinkCommitmentDefinition, MetaCommitmentDefinition, NoteCommitmentDefinition, NoteCommitmentDefinition, NoteCommitmentDefinition, NoteCommitmentDefinition, GoalCommitmentDefinition, GoalCommitmentDefinition, InitialMessageCommitmentDefinition, UserMessageCommitmentDefinition, AgentMessageCommitmentDefinition, MessageCommitmentDefinition, MessageCommitmentDefinition, ScenarioCommitmentDefinition, ScenarioCommitmentDefinition, DeleteCommitmentDefinition, DeleteCommitmentDefinition, DeleteCommitmentDefinition, DeleteCommitmentDefinition, DictionaryCommitmentDefinition, OpenCommitmentDefinition, ClosedCommitmentDefinition, UseBrowserCommitmentDefinition, UseSearchEngineCommitmentDefinition, UseTimeCommitmentDefinition, UseMcpCommitmentDefinition, UseCommitmentDefinition, NotYetImplementedCommitmentDefinition<"EXPECT">, NotYetImplementedCommitmentDefinition<"BEHAVIOUR">, NotYetImplementedCommitmentDefinition<"BEHAVIOURS">, NotYetImplementedCommitmentDefinition<"AVOID">, NotYetImplementedCommitmentDefinition<"AVOIDANCE">, NotYetImplementedCommitmentDefinition<"CONTEXT">];
|
|
47
|
+
export declare const COMMITMENT_REGISTRY: readonly [PersonaCommitmentDefinition, PersonaCommitmentDefinition, KnowledgeCommitmentDefinition, MemoryCommitmentDefinition, MemoryCommitmentDefinition, StyleCommitmentDefinition, StyleCommitmentDefinition, RuleCommitmentDefinition, RuleCommitmentDefinition, LanguageCommitmentDefinition, LanguageCommitmentDefinition, SampleCommitmentDefinition, SampleCommitmentDefinition, FormatCommitmentDefinition, FormatCommitmentDefinition, FromCommitmentDefinition, ImportCommitmentDefinition, ImportCommitmentDefinition, ModelCommitmentDefinition, ModelCommitmentDefinition, ActionCommitmentDefinition, ActionCommitmentDefinition, ComponentCommitmentDefinition, MetaImageCommitmentDefinition, MetaColorCommitmentDefinition, MetaFontCommitmentDefinition, MetaLinkCommitmentDefinition, MetaCommitmentDefinition, NoteCommitmentDefinition, NoteCommitmentDefinition, NoteCommitmentDefinition, NoteCommitmentDefinition, NoteCommitmentDefinition, GoalCommitmentDefinition, GoalCommitmentDefinition, InitialMessageCommitmentDefinition, UserMessageCommitmentDefinition, AgentMessageCommitmentDefinition, MessageCommitmentDefinition, MessageCommitmentDefinition, ScenarioCommitmentDefinition, ScenarioCommitmentDefinition, DeleteCommitmentDefinition, DeleteCommitmentDefinition, DeleteCommitmentDefinition, DeleteCommitmentDefinition, DictionaryCommitmentDefinition, OpenCommitmentDefinition, ClosedCommitmentDefinition, UseBrowserCommitmentDefinition, UseSearchEngineCommitmentDefinition, UseTimeCommitmentDefinition, UseMcpCommitmentDefinition, UseCommitmentDefinition, NotYetImplementedCommitmentDefinition<"EXPECT">, NotYetImplementedCommitmentDefinition<"BEHAVIOUR">, NotYetImplementedCommitmentDefinition<"BEHAVIOURS">, NotYetImplementedCommitmentDefinition<"AVOID">, NotYetImplementedCommitmentDefinition<"AVOIDANCE">, NotYetImplementedCommitmentDefinition<"CONTEXT">];
|
|
48
48
|
/**
|
|
49
49
|
* Gets a commitment definition by its type
|
|
50
50
|
* @param type The commitment type to look up
|
|
@@ -72,6 +72,7 @@ export declare class Agent extends AgentLlmExecutionTools implements LlmExecutio
|
|
|
72
72
|
*/
|
|
73
73
|
get parameters(): Array<BookParameter>;
|
|
74
74
|
readonly agentSource: BehaviorSubject<string_book>;
|
|
75
|
+
private readonly teacherAgent;
|
|
75
76
|
constructor(options: AgentOptions);
|
|
76
77
|
/**
|
|
77
78
|
* Calls the chat model with agent-specific system prompt and requirements with streaming
|
|
@@ -2,6 +2,7 @@ import type { string_book } from '../../book-2.0/agent-source/string_book';
|
|
|
2
2
|
import type { CommonToolsOptions } from '../../execution/CommonToolsOptions';
|
|
3
3
|
import type { ExecutionTools } from '../../execution/ExecutionTools';
|
|
4
4
|
import type { Updatable } from '../../types/Updatable';
|
|
5
|
+
import { Agent } from './Agent';
|
|
5
6
|
/**
|
|
6
7
|
* Options for creating an Agent
|
|
7
8
|
*/
|
|
@@ -16,4 +17,10 @@ export type AgentOptions = CommonToolsOptions & {
|
|
|
16
17
|
* The source of the agent
|
|
17
18
|
*/
|
|
18
19
|
agentSource: Updatable<string_book>;
|
|
20
|
+
/**
|
|
21
|
+
* Teacher agent for self-learning
|
|
22
|
+
*
|
|
23
|
+
* Note: If provided, the agent can do full self-learning from the teacher agent during its operation.
|
|
24
|
+
*/
|
|
25
|
+
teacherAgent: Agent | null;
|
|
19
26
|
};
|
|
@@ -3,7 +3,7 @@ import type { string_agent_url } from '../../types/typeAliases';
|
|
|
3
3
|
/**
|
|
4
4
|
* Options for creating a Remote Agent
|
|
5
5
|
*/
|
|
6
|
-
export type RemoteAgentOptions = CommonToolsOptions & {
|
|
6
|
+
export type RemoteAgentOptions = Omit<CommonToolsOptions, 'teacherAgent'> & {
|
|
7
7
|
/**
|
|
8
8
|
* Url of the remote agent
|
|
9
9
|
*/
|
|
@@ -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.105.0-
|
|
18
|
+
* It follows semantic versioning (e.g., `0.105.0-7`).
|
|
19
19
|
*
|
|
20
20
|
* @generated
|
|
21
21
|
*/
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@promptbook/wizard",
|
|
3
|
-
"version": "0.105.0-
|
|
3
|
+
"version": "0.105.0-8",
|
|
4
4
|
"description": "Promptbook: Turn your company's scattered knowledge into AI ready books",
|
|
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.105.0-
|
|
98
|
+
"@promptbook/core": "0.105.0-8"
|
|
99
99
|
},
|
|
100
100
|
"dependencies": {
|
|
101
101
|
"@ai-sdk/deepseek": "0.1.17",
|
package/umd/index.umd.js
CHANGED
|
@@ -48,7 +48,7 @@
|
|
|
48
48
|
* @generated
|
|
49
49
|
* @see https://github.com/webgptorg/promptbook
|
|
50
50
|
*/
|
|
51
|
-
const PROMPTBOOK_ENGINE_VERSION = '0.105.0-
|
|
51
|
+
const PROMPTBOOK_ENGINE_VERSION = '0.105.0-8';
|
|
52
52
|
/**
|
|
53
53
|
* TODO: string_promptbook_version should be constrained to the all versions of Promptbook engine
|
|
54
54
|
* Note: [💞] Ignore a discrepancy between file name and entity name
|
|
@@ -7717,6 +7717,16 @@
|
|
|
7717
7717
|
trimmedText = spaceTrim$1.spaceTrim(trimmedText);
|
|
7718
7718
|
}
|
|
7719
7719
|
let processedText = trimmedText;
|
|
7720
|
+
// Check for markdown code block
|
|
7721
|
+
const codeBlockRegex = /^```[a-z]*\n([\s\S]*?)\n```\s*$/;
|
|
7722
|
+
const codeBlockMatch = processedText.match(codeBlockRegex);
|
|
7723
|
+
if (codeBlockMatch && codeBlockMatch[1] !== undefined) {
|
|
7724
|
+
// Check if there's only one code block
|
|
7725
|
+
const codeBlockCount = (processedText.match(/```/g) || []).length / 2;
|
|
7726
|
+
if (codeBlockCount === 1) {
|
|
7727
|
+
return unwrapResult(codeBlockMatch[1], { isTrimmed: false, isIntroduceSentenceRemoved: false });
|
|
7728
|
+
}
|
|
7729
|
+
}
|
|
7720
7730
|
if (isIntroduceSentenceRemoved) {
|
|
7721
7731
|
const introduceSentenceRegex = /^[a-zěščřžýáíéúů:\s]*:\s*/i;
|
|
7722
7732
|
if (introduceSentenceRegex.test(text)) {
|
|
@@ -7724,6 +7734,14 @@
|
|
|
7724
7734
|
processedText = processedText.replace(introduceSentenceRegex, '');
|
|
7725
7735
|
}
|
|
7726
7736
|
processedText = spaceTrim$1.spaceTrim(processedText);
|
|
7737
|
+
// Check again for code block after removing introduce sentence
|
|
7738
|
+
const codeBlockMatch2 = processedText.match(codeBlockRegex);
|
|
7739
|
+
if (codeBlockMatch2 && codeBlockMatch2[1] !== undefined) {
|
|
7740
|
+
const codeBlockCount = (processedText.match(/```/g) || []).length / 2;
|
|
7741
|
+
if (codeBlockCount === 1) {
|
|
7742
|
+
return unwrapResult(codeBlockMatch2[1], { isTrimmed: false, isIntroduceSentenceRemoved: false });
|
|
7743
|
+
}
|
|
7744
|
+
}
|
|
7727
7745
|
}
|
|
7728
7746
|
if (processedText.length < 3) {
|
|
7729
7747
|
return trimmedText;
|
|
@@ -17707,6 +17725,46 @@
|
|
|
17707
17725
|
* Note: [💞] Ignore a discrepancy between file name and entity name
|
|
17708
17726
|
*/
|
|
17709
17727
|
|
|
17728
|
+
/**
|
|
17729
|
+
* A search engine implementation that uses the SerpApi to fetch Google search results.
|
|
17730
|
+
*
|
|
17731
|
+
* @private <- TODO: !!!! Export via some package
|
|
17732
|
+
*/
|
|
17733
|
+
class SerpSearchEngine {
|
|
17734
|
+
get title() {
|
|
17735
|
+
return 'SerpApi Search Engine';
|
|
17736
|
+
}
|
|
17737
|
+
get description() {
|
|
17738
|
+
return 'Search engine that uses SerpApi to fetch Google search results';
|
|
17739
|
+
}
|
|
17740
|
+
checkConfiguration() {
|
|
17741
|
+
if (!process.env.SERP_API_KEY) {
|
|
17742
|
+
throw new Error('SERP_API_KEY is not configured');
|
|
17743
|
+
}
|
|
17744
|
+
}
|
|
17745
|
+
async search(query) {
|
|
17746
|
+
const apiKey = process.env.SERP_API_KEY;
|
|
17747
|
+
if (!apiKey) {
|
|
17748
|
+
throw new Error('SERP_API_KEY is not configured');
|
|
17749
|
+
}
|
|
17750
|
+
const url = new URL('https://serpapi.com/search');
|
|
17751
|
+
url.searchParams.set('q', query);
|
|
17752
|
+
url.searchParams.set('api_key', apiKey);
|
|
17753
|
+
url.searchParams.set('engine', 'google');
|
|
17754
|
+
const response = await fetch(url.toString());
|
|
17755
|
+
if (!response.ok) {
|
|
17756
|
+
const body = await response.text();
|
|
17757
|
+
throw new Error(`SerpApi failed with status ${response.status}: ${response.statusText}\n${body}`);
|
|
17758
|
+
}
|
|
17759
|
+
const data = (await response.json());
|
|
17760
|
+
return (data.organic_results || []).map((item) => ({
|
|
17761
|
+
title: item.title,
|
|
17762
|
+
url: item.link,
|
|
17763
|
+
snippet: item.snippet || '',
|
|
17764
|
+
}));
|
|
17765
|
+
}
|
|
17766
|
+
}
|
|
17767
|
+
|
|
17710
17768
|
/**
|
|
17711
17769
|
* USE SEARCH ENGINE commitment definition
|
|
17712
17770
|
*
|
|
@@ -17783,18 +17841,13 @@
|
|
|
17783
17841
|
? existingTools
|
|
17784
17842
|
: [
|
|
17785
17843
|
...existingTools,
|
|
17786
|
-
{ type: 'web_search' },
|
|
17787
|
-
// <- Note: [🔰] This is just using simple native search tool by OpenAI @see https://platform.openai.com/docs/guides/tools-web-search
|
|
17788
|
-
// In future we will use proper MCP search tool:
|
|
17789
|
-
/*
|
|
17790
|
-
|
|
17791
17844
|
{
|
|
17792
17845
|
name: 'web_search',
|
|
17793
|
-
description: spaceTrim(`
|
|
17794
|
-
|
|
17795
|
-
|
|
17796
|
-
|
|
17797
|
-
|
|
17846
|
+
description: spaceTrim$1.spaceTrim(`
|
|
17847
|
+
Search the internet for information.
|
|
17848
|
+
Use this tool when you need to find up-to-date information or facts that you don't know.
|
|
17849
|
+
${!content ? '' : `Search scope / instructions: ${content}`}
|
|
17850
|
+
`),
|
|
17798
17851
|
parameters: {
|
|
17799
17852
|
type: 'object',
|
|
17800
17853
|
properties: {
|
|
@@ -17806,7 +17859,6 @@
|
|
|
17806
17859
|
required: ['query'],
|
|
17807
17860
|
},
|
|
17808
17861
|
},
|
|
17809
|
-
*/
|
|
17810
17862
|
];
|
|
17811
17863
|
// Return requirements with updated tools and metadata
|
|
17812
17864
|
return {
|
|
@@ -17818,6 +17870,33 @@
|
|
|
17818
17870
|
},
|
|
17819
17871
|
};
|
|
17820
17872
|
}
|
|
17873
|
+
/**
|
|
17874
|
+
* Gets the `web_search` tool function implementation.
|
|
17875
|
+
*/
|
|
17876
|
+
getToolFunctions() {
|
|
17877
|
+
return {
|
|
17878
|
+
async web_search(args) {
|
|
17879
|
+
console.log('!!!! [Tool] web_search called', { args });
|
|
17880
|
+
const { query } = args;
|
|
17881
|
+
if (!query) {
|
|
17882
|
+
throw new Error('Search query is required');
|
|
17883
|
+
}
|
|
17884
|
+
const searchEngine = new SerpSearchEngine();
|
|
17885
|
+
const results = await searchEngine.search(query);
|
|
17886
|
+
return spaceTrim$1.spaceTrim((block) => `
|
|
17887
|
+
Search results for "${query}":
|
|
17888
|
+
|
|
17889
|
+
${block(results
|
|
17890
|
+
.map((result) => spaceTrim$1.spaceTrim(`
|
|
17891
|
+
- **${result.title}**
|
|
17892
|
+
${result.url}
|
|
17893
|
+
${result.snippet}
|
|
17894
|
+
`))
|
|
17895
|
+
.join('\n\n'))}
|
|
17896
|
+
`);
|
|
17897
|
+
},
|
|
17898
|
+
};
|
|
17899
|
+
}
|
|
17821
17900
|
}
|
|
17822
17901
|
/**
|
|
17823
17902
|
* Note: [💞] Ignore a discrepancy between file name and entity name
|
|
@@ -18061,6 +18140,7 @@
|
|
|
18061
18140
|
new NoteCommitmentDefinition('NOTES'),
|
|
18062
18141
|
new NoteCommitmentDefinition('COMMENT'),
|
|
18063
18142
|
new NoteCommitmentDefinition('NONCE'),
|
|
18143
|
+
new NoteCommitmentDefinition('TODO'),
|
|
18064
18144
|
new GoalCommitmentDefinition('GOAL'),
|
|
18065
18145
|
new GoalCommitmentDefinition('GOALS'),
|
|
18066
18146
|
new InitialMessageCommitmentDefinition(),
|
|
@@ -20095,6 +20175,16 @@
|
|
|
20095
20175
|
}
|
|
20096
20176
|
}
|
|
20097
20177
|
}
|
|
20178
|
+
if (shouldCache && promptResult.toolCalls !== undefined) {
|
|
20179
|
+
// Note: Do not cache results that contain tool calls because they are dynamic and should be always fresh
|
|
20180
|
+
// For example, it doesn't make sense to cache the message 'What time is it? 3:30 pm' because when the question is asked another time, it can be a different time.
|
|
20181
|
+
shouldCache = false;
|
|
20182
|
+
if (isVerbose) {
|
|
20183
|
+
console.info('Not caching result that contains tool calls for key:', key, {
|
|
20184
|
+
toolCalls: promptResult.toolCalls,
|
|
20185
|
+
});
|
|
20186
|
+
}
|
|
20187
|
+
}
|
|
20098
20188
|
if (shouldCache) {
|
|
20099
20189
|
await storage.setItem(key, {
|
|
20100
20190
|
date: $getCurrentDate(),
|