@promptbook/remote-server 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/remote-server",
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,
@@ -98,7 +98,7 @@
98
98
  "module": "./esm/index.es.js",
99
99
  "typings": "./esm/typings/src/_packages/remote-server.index.d.ts",
100
100
  "peerDependencies": {
101
- "@promptbook/core": "0.112.0-41"
101
+ "@promptbook/core": "0.112.0-43"
102
102
  },
103
103
  "dependencies": {
104
104
  "@mozilla/readability": "0.6.0",
package/umd/index.umd.js CHANGED
@@ -50,7 +50,7 @@
50
50
  * @generated
51
51
  * @see https://github.com/webgptorg/promptbook
52
52
  */
53
- const PROMPTBOOK_ENGINE_VERSION = '0.112.0-41';
53
+ const PROMPTBOOK_ENGINE_VERSION = '0.112.0-43';
54
54
  /**
55
55
  * TODO: string_promptbook_version should be constrained to the all versions of Promptbook engine
56
56
  * Note: [💞] Ignore a discrepancy between file name and entity name
@@ -15839,6 +15839,15 @@
15839
15839
  * Map of team tool titles.
15840
15840
  */
15841
15841
  const teamToolTitles = {};
15842
+ /**
15843
+ * Shared TEAM usage rules appended ahead of teammate listings.
15844
+ *
15845
+ * @private
15846
+ */
15847
+ const TEAM_SYSTEM_MESSAGE_GUIDANCE_LINES = [
15848
+ '- If a teammate is relevant to the request, consult that teammate using the matching tool.',
15849
+ '- Do not ask the user for information that a listed teammate can provide directly.',
15850
+ ];
15842
15851
  /**
15843
15852
  * Constant for remote agents by Url.
15844
15853
  */
@@ -15928,12 +15937,9 @@
15928
15937
  if (updatedTools.some((tool) => tool.name === entry.toolName)) {
15929
15938
  continue;
15930
15939
  }
15931
- const toolDescription = entry.description
15932
- ? `Consult teammate ${entry.teammate.label}\n${entry.description}`
15933
- : `Consult teammate ${entry.teammate.label}`;
15934
15940
  updatedTools.push({
15935
15941
  name: entry.toolName,
15936
- description: toolDescription,
15942
+ description: buildTeamToolDescription(entry),
15937
15943
  parameters: {
15938
15944
  type: 'object',
15939
15945
  properties: {
@@ -16002,22 +16008,72 @@
16002
16008
  /**
16003
16009
  * Builds the textual TEAM section body for the final system message.
16004
16010
  *
16005
- * Each teammate is listed with its tool name and, when available, a one-line description.
16006
- * Uses `spaceTrim` to ensure consistent whitespace and indentation.
16011
+ * Each teammate is listed with its tool name, TEAM instructions, and optional profile hints.
16007
16012
  */
16008
16013
  function buildTeamSystemMessageBody(teamEntries) {
16009
- const lines = teamEntries.map((entry, index) => {
16010
- const toolLine = `${index + 1}) ${entry.teammate.label} tool \`${entry.toolName}\``;
16011
- if (!entry.description) {
16012
- return toolLine;
16013
- }
16014
- return _spaceTrim.spaceTrim(`
16015
- ${toolLine}
16016
- ${entry.description}
16017
- `);
16018
- });
16014
+ const lines = [
16015
+ ...TEAM_SYSTEM_MESSAGE_GUIDANCE_LINES,
16016
+ '',
16017
+ ...teamEntries.map((entry, index) => {
16018
+ const toolLine = `${index + 1}) ${entry.teammate.label} tool \`${entry.toolName}\``;
16019
+ const detailLines = collectTeamEntryDetails(entry).map(formatTeamEntryDetailLine);
16020
+ return [toolLine, ...detailLines].join('\n');
16021
+ }),
16022
+ ];
16019
16023
  return lines.join('\n');
16020
16024
  }
16025
+ /**
16026
+ * Builds the model-visible description for one teammate tool.
16027
+ *
16028
+ * @private
16029
+ */
16030
+ function buildTeamToolDescription(entry) {
16031
+ const detailLines = collectTeamEntryDetails(entry).map(({ label, content }) => `${label}: ${content}`);
16032
+ return [`Consult teammate ${entry.teammate.label}`, ...detailLines].join('\n');
16033
+ }
16034
+ /**
16035
+ * Collects structured teammate details that should stay visible to the model.
16036
+ *
16037
+ * @private
16038
+ */
16039
+ function collectTeamEntryDetails(entry) {
16040
+ var _a;
16041
+ const details = [];
16042
+ const instructions = entry.teammate.instructions.trim();
16043
+ const description = ((_a = entry.description) === null || _a === void 0 ? void 0 : _a.trim()) || '';
16044
+ if (instructions) {
16045
+ details.push({
16046
+ label: 'TEAM instructions',
16047
+ content: instructions,
16048
+ });
16049
+ }
16050
+ if (description) {
16051
+ details.push({
16052
+ label: 'Profile',
16053
+ content: description,
16054
+ });
16055
+ }
16056
+ return details;
16057
+ }
16058
+ /**
16059
+ * Formats one teammate detail line for the TEAM system-message section.
16060
+ *
16061
+ * @private
16062
+ */
16063
+ function formatTeamEntryDetailLine(detail) {
16064
+ return indentMultilineText(`${detail.label}: ${detail.content}`, ' ');
16065
+ }
16066
+ /**
16067
+ * Indents all lines of one potentially multi-line text block.
16068
+ *
16069
+ * @private
16070
+ */
16071
+ function indentMultilineText(text, prefix) {
16072
+ return text
16073
+ .split('\n')
16074
+ .map((line) => `${prefix}${line}`)
16075
+ .join('\n');
16076
+ }
16021
16077
  /**
16022
16078
  * Registers tool function and title for a teammate tool.
16023
16079
  */
@@ -25651,7 +25707,7 @@
25651
25707
  systemMessage: '',
25652
25708
  promptSuffix: '',
25653
25709
  // modelName: 'gpt-5',
25654
- modelName: 'gemini-2.5-flash-lite',
25710
+ modelName: 'gpt-5.4-mini',
25655
25711
  temperature: 0.7,
25656
25712
  topP: 0.9,
25657
25713
  topK: 50,
@@ -30245,7 +30301,7 @@
30245
30301
  /**
30246
30302
  * Constant for default agent kit model name.
30247
30303
  */
30248
- const DEFAULT_AGENT_KIT_MODEL_NAME = 'gpt-5.4-nano';
30304
+ const DEFAULT_AGENT_KIT_MODEL_NAME = 'gpt-5.4-mini';
30249
30305
  /**
30250
30306
  * Creates one structured log entry for streamed tool-call updates.
30251
30307
  *
@@ -32311,6 +32367,7 @@
32311
32367
  * @param agentSource The agent source string that defines the agent's behavior
32312
32368
  */
32313
32369
  constructor(options) {
32370
+ var _a;
32314
32371
  this.options = options;
32315
32372
  /**
32316
32373
  * Cached model requirements to avoid re-parsing the agent source
@@ -32320,6 +32377,7 @@
32320
32377
  * Cached parsed agent information
32321
32378
  */
32322
32379
  this._cachedAgentInfo = null;
32380
+ this.precomputedModelRequirements = (_a = options.precomputedModelRequirements) !== null && _a !== void 0 ? _a : null;
32323
32381
  }
32324
32382
  /**
32325
32383
  * Updates the agent source and clears the cache
@@ -32327,9 +32385,13 @@
32327
32385
  * @param agentSource The new agent source string
32328
32386
  */
32329
32387
  updateAgentSource(agentSource) {
32388
+ if (this.options.agentSource === agentSource) {
32389
+ return;
32390
+ }
32330
32391
  this.options.agentSource = agentSource;
32331
32392
  this._cachedAgentInfo = null;
32332
32393
  this._cachedModelRequirements = null;
32394
+ this.precomputedModelRequirements = null;
32333
32395
  }
32334
32396
  /**
32335
32397
  * Get cached or parse agent information
@@ -32346,6 +32408,16 @@
32346
32408
  * Note: [🐤] This is names `getModelRequirements` *(not `getAgentModelRequirements`)* because in future these two will be united
32347
32409
  */
32348
32410
  async getModelRequirements() {
32411
+ var _a, _b;
32412
+ if (this.precomputedModelRequirements !== null) {
32413
+ if (this.options.isVerbose) {
32414
+ console.info('[🤰]', 'Using precomputed agent model requirements', {
32415
+ agent: this.title,
32416
+ toolCount: (_b = (_a = this.precomputedModelRequirements.tools) === null || _a === void 0 ? void 0 : _a.length) !== null && _b !== void 0 ? _b : 0,
32417
+ });
32418
+ }
32419
+ return this.precomputedModelRequirements;
32420
+ }
32349
32421
  if (this._cachedModelRequirements === null) {
32350
32422
  const preparationStartedAtMs = Date.now();
32351
32423
  if (this.options.isVerbose) {
@@ -32455,6 +32527,7 @@
32455
32527
  * Resolves agent requirements, attachments, and runtime overrides into one forwarded chat prompt.
32456
32528
  */
32457
32529
  async prepareChatPrompt(prompt) {
32530
+ var _a;
32458
32531
  const chatPrompt = this.requireChatPrompt(prompt);
32459
32532
  const { sanitizedRequirements, promptSuffix } = await this.getSanitizedAgentModelRequirements();
32460
32533
  const attachments = normalizeChatAttachments(chatPrompt.attachments);
@@ -32472,7 +32545,16 @@
32472
32545
  mergedTools,
32473
32546
  knowledgeSourcesForAgent,
32474
32547
  });
32475
- console.log('!!!! promptWithAgentModelRequirements:', forwardedPrompt);
32548
+ if (this.options.isVerbose) {
32549
+ console.info('[🤰]', 'Prepared agent chat prompt', {
32550
+ agent: this.title,
32551
+ usedPrecomputedModelRequirements: this.precomputedModelRequirements !== null,
32552
+ toolNames: mergedTools.map((tool) => tool.name),
32553
+ knowledgeSourcesCount: (_a = knowledgeSourcesForAgent === null || knowledgeSourcesForAgent === void 0 ? void 0 : knowledgeSourcesForAgent.length) !== null && _a !== void 0 ? _a : 0,
32554
+ promptSuffixLength: promptSuffix.length,
32555
+ systemMessageLength: sanitizedRequirements.systemMessage.length,
32556
+ });
32557
+ }
32476
32558
  return {
32477
32559
  forwardedPrompt,
32478
32560
  sanitizedRequirements,
@@ -32659,6 +32741,7 @@
32659
32741
  * Runs one prepared prompt through the deprecated OpenAI Assistant backend.
32660
32742
  */
32661
32743
  async callOpenAiAssistantChatModelStream(options) {
32744
+ var _a, _b, _c, _d;
32662
32745
  const assistant = await this.getOrPrepareOpenAiAssistant({
32663
32746
  llmTools: options.llmTools,
32664
32747
  originalPrompt: options.originalPrompt,
@@ -32666,7 +32749,14 @@
32666
32749
  onProgress: options.onProgress,
32667
32750
  });
32668
32751
  const promptWithAgentModelRequirementsForOpenAiAssistantExecutionTools = createOpenAiAssistantPrompt(options.preparedChatPrompt.forwardedPrompt);
32669
- console.log('!!!! promptWithAgentModelRequirementsForOpenAiAssistantExecutionTools:', promptWithAgentModelRequirementsForOpenAiAssistantExecutionTools);
32752
+ if (this.options.isVerbose) {
32753
+ console.info('[🤰]', 'Prepared OpenAI Assistant prompt', {
32754
+ agent: this.title,
32755
+ toolNames: (_b = (_a = promptWithAgentModelRequirementsForOpenAiAssistantExecutionTools.modelRequirements.tools) === null || _a === void 0 ? void 0 : _a.map((tool) => tool.name)) !== null && _b !== void 0 ? _b : [],
32756
+ knowledgeSourcesCount: (_d = (_c = promptWithAgentModelRequirementsForOpenAiAssistantExecutionTools.modelRequirements
32757
+ .knowledgeSources) === null || _c === void 0 ? void 0 : _c.length) !== null && _d !== void 0 ? _d : 0,
32758
+ });
32759
+ }
32670
32760
  return assistant.callChatModelStream(promptWithAgentModelRequirementsForOpenAiAssistantExecutionTools, options.onProgress, options.streamOptions);
32671
32761
  }
32672
32762
  /**
@@ -33357,7 +33447,8 @@
33357
33447
  isVerbose: options.isVerbose,
33358
33448
  llmTools: getSingleLlmExecutionTools(options.executionTools.llm),
33359
33449
  assistantPreparationMode: options.assistantPreparationMode,
33360
- agentSource: agentSource.value, // <- TODO: [🐱‍🚀] Allow to pass BehaviorSubject<string_book> OR refresh llmExecutionTools.callChat on agentSource change
33450
+ agentSource: agentSource.value,
33451
+ precomputedModelRequirements: options.precomputedModelRequirements,
33361
33452
  });
33362
33453
  this._agentName = undefined;
33363
33454
  /**