@promptbook/browser 0.112.0-41 → 0.112.0-43

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 (32) hide show
  1. package/README.md +10 -3
  2. package/esm/index.es.js +113 -22
  3. package/esm/index.es.js.map +1 -1
  4. package/esm/src/book-components/Chat/Chat/ChatProps.d.ts +1 -1
  5. package/esm/src/cli/cli-commands/coder/getTypescriptModule.d.ts +19 -0
  6. package/esm/src/cli/cli-commands/coder/getTypescriptModule.test.d.ts +1 -0
  7. package/esm/src/cli/cli-commands/coder/mergeStringRecordJsonFile.test.d.ts +1 -0
  8. package/esm/src/cli/cli-commands/coder/verify.test.d.ts +1 -0
  9. package/esm/src/collection/agent-collection/constructors/agent-collection-in-supabase/AgentCollectionInSupabase.d.ts +2 -14
  10. package/esm/src/collection/agent-collection/constructors/agent-collection-in-supabase/createAgentPersistenceRecords.d.ts +40 -0
  11. package/esm/src/collection/agent-collection/constructors/agent-collection-in-supabase/createAgentPersistenceRecords.test.d.ts +1 -0
  12. package/esm/src/llm-providers/agent/Agent.test.d.ts +1 -0
  13. package/esm/src/llm-providers/agent/AgentLlmExecutionTools.d.ts +4 -0
  14. package/esm/src/llm-providers/agent/AgentOptions.d.ts +8 -0
  15. package/esm/src/llm-providers/agent/CreateAgentLlmExecutionToolsOptions.d.ts +9 -0
  16. package/esm/src/version.d.ts +1 -1
  17. package/package.json +2 -2
  18. package/umd/index.umd.js +113 -22
  19. package/umd/index.umd.js.map +1 -1
  20. package/umd/src/book-components/Chat/Chat/ChatProps.d.ts +1 -1
  21. package/umd/src/cli/cli-commands/coder/getTypescriptModule.d.ts +19 -0
  22. package/umd/src/cli/cli-commands/coder/getTypescriptModule.test.d.ts +1 -0
  23. package/umd/src/cli/cli-commands/coder/mergeStringRecordJsonFile.test.d.ts +1 -0
  24. package/umd/src/cli/cli-commands/coder/verify.test.d.ts +1 -0
  25. package/umd/src/collection/agent-collection/constructors/agent-collection-in-supabase/AgentCollectionInSupabase.d.ts +2 -14
  26. package/umd/src/collection/agent-collection/constructors/agent-collection-in-supabase/createAgentPersistenceRecords.d.ts +40 -0
  27. package/umd/src/collection/agent-collection/constructors/agent-collection-in-supabase/createAgentPersistenceRecords.test.d.ts +1 -0
  28. package/umd/src/llm-providers/agent/Agent.test.d.ts +1 -0
  29. package/umd/src/llm-providers/agent/AgentLlmExecutionTools.d.ts +4 -0
  30. package/umd/src/llm-providers/agent/AgentOptions.d.ts +8 -0
  31. package/umd/src/llm-providers/agent/CreateAgentLlmExecutionToolsOptions.d.ts +9 -0
  32. package/umd/src/version.d.ts +1 -1
@@ -745,7 +745,7 @@ export type ChatProps = {
745
745
  * - `BUBBLE_MODE`: keeps the default bubble appearance for all messages.
746
746
  * - `ARTICLE_MODE`: keeps user bubbles while rendering assistant replies as borderless article blocks.
747
747
  *
748
- * @default 'BUBBLE_MODE'
748
+ * @default 'ARTICLE_MODE'
749
749
  */
750
750
  readonly CHAT_VISUAL_MODE?: ChatVisualMode;
751
751
  /**
@@ -0,0 +1,19 @@
1
+ /**
2
+ * Possible runtime shapes returned when importing the `typescript` package.
3
+ */
4
+ type ImportedTypescriptModule = typeof import('typescript') | {
5
+ default: typeof import('typescript');
6
+ };
7
+ /**
8
+ * Loads the TypeScript runtime used for parsing JSONC-style project files.
9
+ *
10
+ * @private internal utility of `coder init`
11
+ */
12
+ export declare function getTypescriptModule(): Promise<typeof import('typescript')>;
13
+ /**
14
+ * Normalizes CommonJS-via-`default` and direct namespace imports of TypeScript.
15
+ *
16
+ * @private internal utility of `getTypescriptModule`
17
+ */
18
+ export declare function normalizeImportedTypescriptModule(importedTypescriptModule: ImportedTypescriptModule): typeof import('typescript');
19
+ export {};
@@ -0,0 +1 @@
1
+ export {};
@@ -4,23 +4,11 @@ import type { string_book } from '../../../../book-2.0/agent-source/string_book'
4
4
  import type { string_agent_name, string_agent_permanent_id } from '../../../../types/typeAliases';
5
5
  import { AgentCollectionInSupabaseOptions } from './AgentCollectionInSupabaseOptions';
6
6
  import type { AgentsDatabaseSchema } from './AgentsDatabaseSchema';
7
+ import { type CreateAgentPersistenceRecordsOptions } from './createAgentPersistenceRecords';
7
8
  /**
8
9
  * Options for creating a new agent entry.
9
10
  */
10
- type CreateAgentOptions = {
11
- /**
12
- * Visibility for the new agent.
13
- */
14
- readonly visibility?: 'PRIVATE' | 'UNLISTED' | 'PUBLIC';
15
- /**
16
- * Folder identifier to assign the new agent to.
17
- */
18
- readonly folderId?: number | null;
19
- /**
20
- * Sort order for the agent within its parent folder.
21
- */
22
- readonly sortOrder?: number;
23
- };
11
+ type CreateAgentOptions = CreateAgentPersistenceRecordsOptions;
24
12
  /**
25
13
  * Optional controls for persisting one source update.
26
14
  */
@@ -0,0 +1,40 @@
1
+ import type { AgentBasicInformation } from '../../../../book-2.0/agent-source/AgentBasicInformation';
2
+ import type { string_book } from '../../../../book-2.0/agent-source/string_book';
3
+ import type { CreateAgentInput } from '../../CreateAgentInput';
4
+ import type { AgentsDatabaseSchema } from './AgentsDatabaseSchema';
5
+ /**
6
+ * Optional persistence overrides for one new agent row.
7
+ *
8
+ * @private shared persistence helper for `AgentCollectionInSupabase`
9
+ */
10
+ export type CreateAgentPersistenceRecordsOptions = Omit<CreateAgentInput, 'source'>;
11
+ /**
12
+ * Prepared insert rows and returned profile for one newly persisted agent.
13
+ *
14
+ * @private shared persistence helper for `AgentCollectionInSupabase`
15
+ */
16
+ export type CreateAgentPersistenceRecordsResult = {
17
+ /**
18
+ * Parsed created agent profile including the resolved permanent id.
19
+ */
20
+ readonly createdAgent: AgentBasicInformation & Required<Pick<AgentBasicInformation, 'permanentId'>>;
21
+ /**
22
+ * Insert row for the `Agent` table.
23
+ */
24
+ readonly agentInsertRecord: AgentsDatabaseSchema['public']['Tables']['Agent']['Insert'];
25
+ /**
26
+ * Insert row for the `AgentHistory` table.
27
+ */
28
+ readonly agentHistoryInsertRecord: AgentsDatabaseSchema['public']['Tables']['AgentHistory']['Insert'];
29
+ };
30
+ /**
31
+ * Builds normalized insert rows for a newly created persisted agent.
32
+ *
33
+ * @param agentSource - Source content of the agent.
34
+ * @param options - Optional folder placement, ordering, and visibility overrides.
35
+ * @param createdAt - Shared creation timestamp used across all persisted rows.
36
+ * @returns Insert rows and the created agent profile.
37
+ *
38
+ * @private shared persistence helper for `AgentCollectionInSupabase`
39
+ */
40
+ export declare function createAgentPersistenceRecords(agentSource: string_book, options?: CreateAgentPersistenceRecordsOptions, createdAt?: string): CreateAgentPersistenceRecordsResult;
@@ -0,0 +1 @@
1
+ export {};
@@ -44,6 +44,10 @@ export declare class AgentLlmExecutionTools implements LlmExecutionTools {
44
44
  * Cached parsed agent information
45
45
  */
46
46
  private _cachedAgentInfo;
47
+ /**
48
+ * Optional server-precomputed model requirements reused until the source changes.
49
+ */
50
+ private precomputedModelRequirements;
47
51
  /**
48
52
  * Creates new AgentLlmExecutionTools
49
53
  *
@@ -1,4 +1,5 @@
1
1
  import type { string_book } from '../../book-2.0/agent-source/string_book';
2
+ import type { AgentModelRequirements } from '../../book-2.0/agent-source/AgentModelRequirements';
2
3
  import type { CommonToolsOptions } from '../../execution/CommonToolsOptions';
3
4
  import type { ExecutionTools } from '../../execution/ExecutionTools';
4
5
  import type { Updatable } from '../../types/Updatable';
@@ -27,6 +28,13 @@ export type AgentOptions = CommonToolsOptions & {
27
28
  * The source of the agent
28
29
  */
29
30
  agentSource: Updatable<string_book>;
31
+ /**
32
+ * Optional precomputed model requirements reused until `agentSource` changes.
33
+ *
34
+ * This keeps the actual runtime prompt aligned with server-prepared requirements
35
+ * such as compact-reference-resolved `TEAM` tools.
36
+ */
37
+ precomputedModelRequirements?: AgentModelRequirements;
30
38
  /**
31
39
  * Teacher agent for self-learning
32
40
  *
@@ -1,4 +1,5 @@
1
1
  import type { string_book } from '../../book-2.0/agent-source/string_book';
2
+ import type { AgentModelRequirements } from '../../book-2.0/agent-source/AgentModelRequirements';
2
3
  import type { CommonToolsOptions } from '../../execution/CommonToolsOptions';
3
4
  import type { LlmExecutionTools } from '../../execution/LlmExecutionTools';
4
5
  import type { OpenAiAgentKitExecutionTools } from '../openai/OpenAiAgentKitExecutionTools';
@@ -25,4 +26,12 @@ export type CreateAgentLlmExecutionToolsOptions = CommonToolsOptions & {
25
26
  * The agent source string that defines the agent's behavior
26
27
  */
27
28
  agentSource: string_book;
29
+ /**
30
+ * Optional precomputed model requirements reused until `agentSource` changes.
31
+ *
32
+ * This is useful for runtimes such as Agents Server that already resolved compact
33
+ * references (for example in `TEAM`) and need the executed prompt to stay aligned
34
+ * with the server-prepared tool list.
35
+ */
36
+ precomputedModelRequirements?: AgentModelRequirements;
28
37
  };
@@ -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.112.0-40`).
18
+ * It follows semantic versioning (e.g., `0.112.0-42`).
19
19
  *
20
20
  * @generated
21
21
  */
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@promptbook/browser",
3
- "version": "0.112.0-41",
3
+ "version": "0.112.0-43",
4
4
  "description": "Promptbook: Turn your company's scattered knowledge into AI ready books",
5
5
  "private": false,
6
6
  "sideEffects": false,
@@ -97,7 +97,7 @@
97
97
  "module": "./esm/index.es.js",
98
98
  "typings": "./esm/typings/src/_packages/browser.index.d.ts",
99
99
  "peerDependencies": {
100
- "@promptbook/core": "0.112.0-41"
100
+ "@promptbook/core": "0.112.0-43"
101
101
  },
102
102
  "dependencies": {
103
103
  "@openai/agents": "0.4.12",
package/umd/index.umd.js CHANGED
@@ -27,7 +27,7 @@
27
27
  * @generated
28
28
  * @see https://github.com/webgptorg/promptbook
29
29
  */
30
- const PROMPTBOOK_ENGINE_VERSION = '0.112.0-41';
30
+ const PROMPTBOOK_ENGINE_VERSION = '0.112.0-43';
31
31
  /**
32
32
  * TODO: string_promptbook_version should be constrained to the all versions of Promptbook engine
33
33
  * Note: [💞] Ignore a discrepancy between file name and entity name
@@ -10125,6 +10125,15 @@
10125
10125
  * Map of team tool titles.
10126
10126
  */
10127
10127
  const teamToolTitles = {};
10128
+ /**
10129
+ * Shared TEAM usage rules appended ahead of teammate listings.
10130
+ *
10131
+ * @private
10132
+ */
10133
+ const TEAM_SYSTEM_MESSAGE_GUIDANCE_LINES = [
10134
+ '- If a teammate is relevant to the request, consult that teammate using the matching tool.',
10135
+ '- Do not ask the user for information that a listed teammate can provide directly.',
10136
+ ];
10128
10137
  /**
10129
10138
  * Constant for remote agents by Url.
10130
10139
  */
@@ -10214,12 +10223,9 @@
10214
10223
  if (updatedTools.some((tool) => tool.name === entry.toolName)) {
10215
10224
  continue;
10216
10225
  }
10217
- const toolDescription = entry.description
10218
- ? `Consult teammate ${entry.teammate.label}\n${entry.description}`
10219
- : `Consult teammate ${entry.teammate.label}`;
10220
10226
  updatedTools.push({
10221
10227
  name: entry.toolName,
10222
- description: toolDescription,
10228
+ description: buildTeamToolDescription(entry),
10223
10229
  parameters: {
10224
10230
  type: 'object',
10225
10231
  properties: {
@@ -10288,22 +10294,72 @@
10288
10294
  /**
10289
10295
  * Builds the textual TEAM section body for the final system message.
10290
10296
  *
10291
- * Each teammate is listed with its tool name and, when available, a one-line description.
10292
- * Uses `spaceTrim` to ensure consistent whitespace and indentation.
10297
+ * Each teammate is listed with its tool name, TEAM instructions, and optional profile hints.
10293
10298
  */
10294
10299
  function buildTeamSystemMessageBody(teamEntries) {
10295
- const lines = teamEntries.map((entry, index) => {
10296
- const toolLine = `${index + 1}) ${entry.teammate.label} tool \`${entry.toolName}\``;
10297
- if (!entry.description) {
10298
- return toolLine;
10299
- }
10300
- return spacetrim.spaceTrim(`
10301
- ${toolLine}
10302
- ${entry.description}
10303
- `);
10304
- });
10300
+ const lines = [
10301
+ ...TEAM_SYSTEM_MESSAGE_GUIDANCE_LINES,
10302
+ '',
10303
+ ...teamEntries.map((entry, index) => {
10304
+ const toolLine = `${index + 1}) ${entry.teammate.label} tool \`${entry.toolName}\``;
10305
+ const detailLines = collectTeamEntryDetails(entry).map(formatTeamEntryDetailLine);
10306
+ return [toolLine, ...detailLines].join('\n');
10307
+ }),
10308
+ ];
10305
10309
  return lines.join('\n');
10306
10310
  }
10311
+ /**
10312
+ * Builds the model-visible description for one teammate tool.
10313
+ *
10314
+ * @private
10315
+ */
10316
+ function buildTeamToolDescription(entry) {
10317
+ const detailLines = collectTeamEntryDetails(entry).map(({ label, content }) => `${label}: ${content}`);
10318
+ return [`Consult teammate ${entry.teammate.label}`, ...detailLines].join('\n');
10319
+ }
10320
+ /**
10321
+ * Collects structured teammate details that should stay visible to the model.
10322
+ *
10323
+ * @private
10324
+ */
10325
+ function collectTeamEntryDetails(entry) {
10326
+ var _a;
10327
+ const details = [];
10328
+ const instructions = entry.teammate.instructions.trim();
10329
+ const description = ((_a = entry.description) === null || _a === void 0 ? void 0 : _a.trim()) || '';
10330
+ if (instructions) {
10331
+ details.push({
10332
+ label: 'TEAM instructions',
10333
+ content: instructions,
10334
+ });
10335
+ }
10336
+ if (description) {
10337
+ details.push({
10338
+ label: 'Profile',
10339
+ content: description,
10340
+ });
10341
+ }
10342
+ return details;
10343
+ }
10344
+ /**
10345
+ * Formats one teammate detail line for the TEAM system-message section.
10346
+ *
10347
+ * @private
10348
+ */
10349
+ function formatTeamEntryDetailLine(detail) {
10350
+ return indentMultilineText(`${detail.label}: ${detail.content}`, ' ');
10351
+ }
10352
+ /**
10353
+ * Indents all lines of one potentially multi-line text block.
10354
+ *
10355
+ * @private
10356
+ */
10357
+ function indentMultilineText(text, prefix) {
10358
+ return text
10359
+ .split('\n')
10360
+ .map((line) => `${prefix}${line}`)
10361
+ .join('\n');
10362
+ }
10307
10363
  /**
10308
10364
  * Registers tool function and title for a teammate tool.
10309
10365
  */
@@ -22878,7 +22934,7 @@
22878
22934
  systemMessage: '',
22879
22935
  promptSuffix: '',
22880
22936
  // modelName: 'gpt-5',
22881
- modelName: 'gemini-2.5-flash-lite',
22937
+ modelName: 'gpt-5.4-mini',
22882
22938
  temperature: 0.7,
22883
22939
  topP: 0.9,
22884
22940
  topK: 50,
@@ -27472,7 +27528,7 @@
27472
27528
  /**
27473
27529
  * Constant for default agent kit model name.
27474
27530
  */
27475
- const DEFAULT_AGENT_KIT_MODEL_NAME = 'gpt-5.4-nano';
27531
+ const DEFAULT_AGENT_KIT_MODEL_NAME = 'gpt-5.4-mini';
27476
27532
  /**
27477
27533
  * Creates one structured log entry for streamed tool-call updates.
27478
27534
  *
@@ -29538,6 +29594,7 @@
29538
29594
  * @param agentSource The agent source string that defines the agent's behavior
29539
29595
  */
29540
29596
  constructor(options) {
29597
+ var _a;
29541
29598
  this.options = options;
29542
29599
  /**
29543
29600
  * Cached model requirements to avoid re-parsing the agent source
@@ -29547,6 +29604,7 @@
29547
29604
  * Cached parsed agent information
29548
29605
  */
29549
29606
  this._cachedAgentInfo = null;
29607
+ this.precomputedModelRequirements = (_a = options.precomputedModelRequirements) !== null && _a !== void 0 ? _a : null;
29550
29608
  }
29551
29609
  /**
29552
29610
  * Updates the agent source and clears the cache
@@ -29554,9 +29612,13 @@
29554
29612
  * @param agentSource The new agent source string
29555
29613
  */
29556
29614
  updateAgentSource(agentSource) {
29615
+ if (this.options.agentSource === agentSource) {
29616
+ return;
29617
+ }
29557
29618
  this.options.agentSource = agentSource;
29558
29619
  this._cachedAgentInfo = null;
29559
29620
  this._cachedModelRequirements = null;
29621
+ this.precomputedModelRequirements = null;
29560
29622
  }
29561
29623
  /**
29562
29624
  * Get cached or parse agent information
@@ -29573,6 +29635,16 @@
29573
29635
  * Note: [🐤] This is names `getModelRequirements` *(not `getAgentModelRequirements`)* because in future these two will be united
29574
29636
  */
29575
29637
  async getModelRequirements() {
29638
+ var _a, _b;
29639
+ if (this.precomputedModelRequirements !== null) {
29640
+ if (this.options.isVerbose) {
29641
+ console.info('[🤰]', 'Using precomputed agent model requirements', {
29642
+ agent: this.title,
29643
+ toolCount: (_b = (_a = this.precomputedModelRequirements.tools) === null || _a === void 0 ? void 0 : _a.length) !== null && _b !== void 0 ? _b : 0,
29644
+ });
29645
+ }
29646
+ return this.precomputedModelRequirements;
29647
+ }
29576
29648
  if (this._cachedModelRequirements === null) {
29577
29649
  const preparationStartedAtMs = Date.now();
29578
29650
  if (this.options.isVerbose) {
@@ -29682,6 +29754,7 @@
29682
29754
  * Resolves agent requirements, attachments, and runtime overrides into one forwarded chat prompt.
29683
29755
  */
29684
29756
  async prepareChatPrompt(prompt) {
29757
+ var _a;
29685
29758
  const chatPrompt = this.requireChatPrompt(prompt);
29686
29759
  const { sanitizedRequirements, promptSuffix } = await this.getSanitizedAgentModelRequirements();
29687
29760
  const attachments = normalizeChatAttachments(chatPrompt.attachments);
@@ -29699,7 +29772,16 @@
29699
29772
  mergedTools,
29700
29773
  knowledgeSourcesForAgent,
29701
29774
  });
29702
- console.log('!!!! promptWithAgentModelRequirements:', forwardedPrompt);
29775
+ if (this.options.isVerbose) {
29776
+ console.info('[🤰]', 'Prepared agent chat prompt', {
29777
+ agent: this.title,
29778
+ usedPrecomputedModelRequirements: this.precomputedModelRequirements !== null,
29779
+ toolNames: mergedTools.map((tool) => tool.name),
29780
+ knowledgeSourcesCount: (_a = knowledgeSourcesForAgent === null || knowledgeSourcesForAgent === void 0 ? void 0 : knowledgeSourcesForAgent.length) !== null && _a !== void 0 ? _a : 0,
29781
+ promptSuffixLength: promptSuffix.length,
29782
+ systemMessageLength: sanitizedRequirements.systemMessage.length,
29783
+ });
29784
+ }
29703
29785
  return {
29704
29786
  forwardedPrompt,
29705
29787
  sanitizedRequirements,
@@ -29886,6 +29968,7 @@
29886
29968
  * Runs one prepared prompt through the deprecated OpenAI Assistant backend.
29887
29969
  */
29888
29970
  async callOpenAiAssistantChatModelStream(options) {
29971
+ var _a, _b, _c, _d;
29889
29972
  const assistant = await this.getOrPrepareOpenAiAssistant({
29890
29973
  llmTools: options.llmTools,
29891
29974
  originalPrompt: options.originalPrompt,
@@ -29893,7 +29976,14 @@
29893
29976
  onProgress: options.onProgress,
29894
29977
  });
29895
29978
  const promptWithAgentModelRequirementsForOpenAiAssistantExecutionTools = createOpenAiAssistantPrompt(options.preparedChatPrompt.forwardedPrompt);
29896
- console.log('!!!! promptWithAgentModelRequirementsForOpenAiAssistantExecutionTools:', promptWithAgentModelRequirementsForOpenAiAssistantExecutionTools);
29979
+ if (this.options.isVerbose) {
29980
+ console.info('[🤰]', 'Prepared OpenAI Assistant prompt', {
29981
+ agent: this.title,
29982
+ toolNames: (_b = (_a = promptWithAgentModelRequirementsForOpenAiAssistantExecutionTools.modelRequirements.tools) === null || _a === void 0 ? void 0 : _a.map((tool) => tool.name)) !== null && _b !== void 0 ? _b : [],
29983
+ knowledgeSourcesCount: (_d = (_c = promptWithAgentModelRequirementsForOpenAiAssistantExecutionTools.modelRequirements
29984
+ .knowledgeSources) === null || _c === void 0 ? void 0 : _c.length) !== null && _d !== void 0 ? _d : 0,
29985
+ });
29986
+ }
29897
29987
  return assistant.callChatModelStream(promptWithAgentModelRequirementsForOpenAiAssistantExecutionTools, options.onProgress, options.streamOptions);
29898
29988
  }
29899
29989
  /**
@@ -30584,7 +30674,8 @@
30584
30674
  isVerbose: options.isVerbose,
30585
30675
  llmTools: getSingleLlmExecutionTools(options.executionTools.llm),
30586
30676
  assistantPreparationMode: options.assistantPreparationMode,
30587
- agentSource: agentSource.value, // <- TODO: [🐱‍🚀] Allow to pass BehaviorSubject<string_book> OR refresh llmExecutionTools.callChat on agentSource change
30677
+ agentSource: agentSource.value,
30678
+ precomputedModelRequirements: options.precomputedModelRequirements,
30588
30679
  });
30589
30680
  this._agentName = undefined;
30590
30681
  /**