@dexto/core 1.2.5 → 1.2.6

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 (57) hide show
  1. package/dist/agent/schemas.cjs +23 -19
  2. package/dist/agent/schemas.d.ts +111 -107
  3. package/dist/agent/schemas.d.ts.map +1 -1
  4. package/dist/agent/schemas.js +7 -3
  5. package/dist/memory/index.cjs +2 -0
  6. package/dist/memory/index.d.ts +1 -1
  7. package/dist/memory/index.d.ts.map +1 -1
  8. package/dist/memory/index.js +3 -1
  9. package/dist/memory/schemas.cjs +10 -0
  10. package/dist/memory/schemas.d.ts +33 -4
  11. package/dist/memory/schemas.d.ts.map +1 -1
  12. package/dist/memory/schemas.js +9 -0
  13. package/dist/prompts/index.cjs +6 -8
  14. package/dist/prompts/index.d.ts +2 -4
  15. package/dist/prompts/index.d.ts.map +1 -1
  16. package/dist/prompts/index.js +4 -6
  17. package/dist/prompts/prompt-manager.cjs +2 -4
  18. package/dist/prompts/prompt-manager.d.ts.map +1 -1
  19. package/dist/prompts/prompt-manager.js +2 -4
  20. package/dist/prompts/providers/config-prompt-provider.cjs +331 -0
  21. package/dist/prompts/providers/config-prompt-provider.d.ts +34 -0
  22. package/dist/prompts/providers/config-prompt-provider.d.ts.map +1 -0
  23. package/dist/prompts/providers/config-prompt-provider.js +308 -0
  24. package/dist/prompts/schemas.cjs +42 -23
  25. package/dist/prompts/schemas.d.ts +121 -12
  26. package/dist/prompts/schemas.d.ts.map +1 -1
  27. package/dist/prompts/schemas.js +39 -22
  28. package/dist/prompts/types.d.ts +1 -1
  29. package/dist/prompts/types.d.ts.map +1 -1
  30. package/dist/systemPrompt/in-built-prompts.cjs +0 -5
  31. package/dist/systemPrompt/in-built-prompts.d.ts +1 -2
  32. package/dist/systemPrompt/in-built-prompts.d.ts.map +1 -1
  33. package/dist/systemPrompt/in-built-prompts.js +0 -4
  34. package/dist/systemPrompt/manager.cjs +24 -19
  35. package/dist/systemPrompt/manager.d.ts +2 -2
  36. package/dist/systemPrompt/manager.d.ts.map +1 -1
  37. package/dist/systemPrompt/manager.js +24 -19
  38. package/dist/systemPrompt/registry.cjs +1 -2
  39. package/dist/systemPrompt/registry.d.ts +1 -1
  40. package/dist/systemPrompt/registry.d.ts.map +1 -1
  41. package/dist/systemPrompt/registry.js +1 -2
  42. package/dist/systemPrompt/schemas.cjs +3 -17
  43. package/dist/systemPrompt/schemas.d.ts +13 -189
  44. package/dist/systemPrompt/schemas.d.ts.map +1 -1
  45. package/dist/systemPrompt/schemas.js +3 -17
  46. package/dist/utils/service-initializer.cjs +1 -0
  47. package/dist/utils/service-initializer.d.ts.map +1 -1
  48. package/dist/utils/service-initializer.js +1 -0
  49. package/package.json +1 -1
  50. package/dist/prompts/providers/file-prompt-provider.cjs +0 -401
  51. package/dist/prompts/providers/file-prompt-provider.d.ts +0 -49
  52. package/dist/prompts/providers/file-prompt-provider.d.ts.map +0 -1
  53. package/dist/prompts/providers/file-prompt-provider.js +0 -378
  54. package/dist/prompts/providers/starter-prompt-provider.cjs +0 -172
  55. package/dist/prompts/providers/starter-prompt-provider.d.ts +0 -47
  56. package/dist/prompts/providers/starter-prompt-provider.d.ts.map +0 -1
  57. package/dist/prompts/providers/starter-prompt-provider.js +0 -149
@@ -111,19 +111,48 @@ export declare const ListMemoriesOptionsSchema: z.ZodObject<{
111
111
  offset: z.ZodOptional<z.ZodNumber>;
112
112
  }, "strict", z.ZodTypeAny, {
113
113
  source?: "user" | "system" | undefined;
114
- limit?: number | undefined;
114
+ pinned?: boolean | undefined;
115
115
  tags?: string[] | undefined;
116
+ limit?: number | undefined;
116
117
  offset?: number | undefined;
117
- pinned?: boolean | undefined;
118
118
  }, {
119
119
  source?: "user" | "system" | undefined;
120
- limit?: number | undefined;
120
+ pinned?: boolean | undefined;
121
121
  tags?: string[] | undefined;
122
+ limit?: number | undefined;
122
123
  offset?: number | undefined;
123
- pinned?: boolean | undefined;
124
+ }>;
125
+ /**
126
+ * Configuration schema for memory inclusion in system prompts.
127
+ * This is a top-level agent config field that controls how memories
128
+ * are injected into the system prompt.
129
+ */
130
+ export declare const MemoriesConfigSchema: z.ZodObject<{
131
+ enabled: z.ZodDefault<z.ZodBoolean>;
132
+ priority: z.ZodDefault<z.ZodNumber>;
133
+ includeTimestamps: z.ZodDefault<z.ZodBoolean>;
134
+ includeTags: z.ZodDefault<z.ZodBoolean>;
135
+ limit: z.ZodOptional<z.ZodNumber>;
136
+ pinnedOnly: z.ZodDefault<z.ZodBoolean>;
137
+ }, "strict", z.ZodTypeAny, {
138
+ enabled: boolean;
139
+ priority: number;
140
+ includeTimestamps: boolean;
141
+ includeTags: boolean;
142
+ pinnedOnly: boolean;
143
+ limit?: number | undefined;
144
+ }, {
145
+ enabled?: boolean | undefined;
146
+ limit?: number | undefined;
147
+ priority?: number | undefined;
148
+ includeTimestamps?: boolean | undefined;
149
+ includeTags?: boolean | undefined;
150
+ pinnedOnly?: boolean | undefined;
124
151
  }>;
125
152
  export type ValidatedMemory = z.output<typeof MemorySchema>;
126
153
  export type ValidatedCreateMemoryInput = z.output<typeof CreateMemoryInputSchema>;
127
154
  export type ValidatedUpdateMemoryInput = z.output<typeof UpdateMemoryInputSchema>;
128
155
  export type ValidatedListMemoriesOptions = z.output<typeof ListMemoriesOptionsSchema>;
156
+ export type MemoriesConfig = z.input<typeof MemoriesConfigSchema>;
157
+ export type ValidatedMemoriesConfig = z.output<typeof MemoriesConfigSchema>;
129
158
  //# sourceMappingURL=schemas.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"schemas.d.ts","sourceRoot":"","sources":["../../src/memory/schemas.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAUxB,eAAO,MAAM,kBAAkB,+BAA8D,CAAC;AAE9F,eAAO,MAAM,oBAAoB;;;;;;;;;gCAMD,CAAC;AAEjC,eAAO,MAAM,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAqBwB,CAAC;AAElD,eAAO,MAAM,uBAAuB;;;;;;;;;;;;;;;;;;;;;;;;;;;EAkBY,CAAC;AAEjD,eAAO,MAAM,uBAAuB;;;;;;;;;;;;;;;;;;;;;;;;;;;EAqBkB,CAAC;AAEvD,eAAO,MAAM,yBAAyB;;;;;;;;;;;;;;;;;;EASO,CAAC;AAE9C,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,YAAY,CAAC,CAAC;AAC5D,MAAM,MAAM,0BAA0B,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,uBAAuB,CAAC,CAAC;AAClF,MAAM,MAAM,0BAA0B,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,uBAAuB,CAAC,CAAC;AAClF,MAAM,MAAM,4BAA4B,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,yBAAyB,CAAC,CAAC"}
1
+ {"version":3,"file":"schemas.d.ts","sourceRoot":"","sources":["../../src/memory/schemas.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAUxB,eAAO,MAAM,kBAAkB,+BAA8D,CAAC;AAE9F,eAAO,MAAM,oBAAoB;;;;;;;;;gCAMD,CAAC;AAEjC,eAAO,MAAM,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAqBwB,CAAC;AAElD,eAAO,MAAM,uBAAuB;;;;;;;;;;;;;;;;;;;;;;;;;;;EAkBY,CAAC;AAEjD,eAAO,MAAM,uBAAuB;;;;;;;;;;;;;;;;;;;;;;;;;;;EAqBkB,CAAC;AAEvD,eAAO,MAAM,yBAAyB;;;;;;;;;;;;;;;;;;EASO,CAAC;AAE9C;;;;GAIG;AACH,eAAO,MAAM,oBAAoB;;;;;;;;;;;;;;;;;;;;;EA6BgC,CAAC;AAElE,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,YAAY,CAAC,CAAC;AAC5D,MAAM,MAAM,0BAA0B,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,uBAAuB,CAAC,CAAC;AAClF,MAAM,MAAM,0BAA0B,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,uBAAuB,CAAC,CAAC;AAClF,MAAM,MAAM,4BAA4B,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,yBAAyB,CAAC,CAAC;AACtF,MAAM,MAAM,cAAc,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,oBAAoB,CAAC,CAAC;AAClE,MAAM,MAAM,uBAAuB,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,oBAAoB,CAAC,CAAC"}
@@ -44,9 +44,18 @@ const ListMemoriesOptionsSchema = z.object({
44
44
  limit: z.number().int().positive().optional().describe("Limit number of results"),
45
45
  offset: z.number().int().nonnegative().optional().describe("Skip first N results")
46
46
  }).strict().describe("Options for listing memories");
47
+ const MemoriesConfigSchema = z.object({
48
+ enabled: z.boolean().default(false).describe("Whether to include memories in system prompt (optional"),
49
+ priority: z.number().int().nonnegative().default(40).describe("Priority in system prompt (lower = earlier)"),
50
+ includeTimestamps: z.boolean().default(false).describe("Whether to include timestamps in memory display"),
51
+ includeTags: z.boolean().default(true).describe("Whether to include tags in memory display"),
52
+ limit: z.number().int().positive().optional().describe("Maximum number of memories to include"),
53
+ pinnedOnly: z.boolean().default(false).describe("Only include pinned memories")
54
+ }).strict().describe("Memory configuration for system prompt inclusion");
47
55
  export {
48
56
  CreateMemoryInputSchema,
49
57
  ListMemoriesOptionsSchema,
58
+ MemoriesConfigSchema,
50
59
  MemoryMetadataSchema,
51
60
  MemorySchema,
52
61
  MemorySourceSchema,
@@ -19,12 +19,12 @@ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: tru
19
19
  var prompts_exports = {};
20
20
  __export(prompts_exports, {
21
21
  CustomPromptProvider: () => import_custom_prompt_provider.CustomPromptProvider,
22
- FilePromptProvider: () => import_file_prompt_provider.FilePromptProvider,
22
+ FilePromptSchema: () => import_schemas.FilePromptSchema,
23
+ InlinePromptSchema: () => import_schemas.InlinePromptSchema,
23
24
  MCPPromptProvider: () => import_mcp_prompt_provider.MCPPromptProvider,
24
25
  PromptError: () => import_errors.PromptError,
25
26
  PromptManager: () => import_prompt_manager.PromptManager,
26
- StarterPromptProvider: () => import_starter_prompt_provider.StarterPromptProvider,
27
- StarterPromptsSchema: () => import_schemas.StarterPromptsSchema,
27
+ PromptsSchema: () => import_schemas.PromptsSchema,
28
28
  appendContext: () => import_utils.appendContext,
29
29
  flattenPromptResult: () => import_utils.flattenPromptResult,
30
30
  normalizePromptArgs: () => import_utils.normalizePromptArgs
@@ -32,8 +32,6 @@ __export(prompts_exports, {
32
32
  module.exports = __toCommonJS(prompts_exports);
33
33
  var import_prompt_manager = require("./prompt-manager.js");
34
34
  var import_mcp_prompt_provider = require("./providers/mcp-prompt-provider.js");
35
- var import_file_prompt_provider = require("./providers/file-prompt-provider.js");
36
- var import_starter_prompt_provider = require("./providers/starter-prompt-provider.js");
37
35
  var import_custom_prompt_provider = require("./providers/custom-prompt-provider.js");
38
36
  var import_errors = require("./errors.js");
39
37
  var import_schemas = require("./schemas.js");
@@ -41,12 +39,12 @@ var import_utils = require("./utils.js");
41
39
  // Annotate the CommonJS export names for ESM import in node:
42
40
  0 && (module.exports = {
43
41
  CustomPromptProvider,
44
- FilePromptProvider,
42
+ FilePromptSchema,
43
+ InlinePromptSchema,
45
44
  MCPPromptProvider,
46
45
  PromptError,
47
46
  PromptManager,
48
- StarterPromptProvider,
49
- StarterPromptsSchema,
47
+ PromptsSchema,
50
48
  appendContext,
51
49
  flattenPromptResult,
52
50
  normalizePromptArgs
@@ -1,12 +1,10 @@
1
1
  export { PromptManager } from './prompt-manager.js';
2
2
  export { MCPPromptProvider } from './providers/mcp-prompt-provider.js';
3
- export { FilePromptProvider } from './providers/file-prompt-provider.js';
4
- export { StarterPromptProvider } from './providers/starter-prompt-provider.js';
5
3
  export { CustomPromptProvider } from './providers/custom-prompt-provider.js';
6
4
  export type { CreateCustomPromptInput } from './providers/custom-prompt-provider.js';
7
5
  export { PromptError } from './errors.js';
8
- export { StarterPromptsSchema } from './schemas.js';
9
- export type { ValidatedStarterPromptsConfig } from './schemas.js';
6
+ export { PromptsSchema, InlinePromptSchema, FilePromptSchema } from './schemas.js';
7
+ export type { ValidatedPromptsConfig, ValidatedInlinePrompt, ValidatedFilePrompt, ValidatedPrompt, PromptsConfig, } from './schemas.js';
10
8
  export type { PromptInfo, PromptSet, PromptProvider, PromptArgument, PromptDefinition, } from './types.js';
11
9
  export { flattenPromptResult, normalizePromptArgs, appendContext } from './utils.js';
12
10
  export type { FlattenedPromptResult } from './utils.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/prompts/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,iBAAiB,EAAE,MAAM,oCAAoC,CAAC;AACvE,OAAO,EAAE,kBAAkB,EAAE,MAAM,qCAAqC,CAAC;AACzE,OAAO,EAAE,qBAAqB,EAAE,MAAM,wCAAwC,CAAC;AAC/E,OAAO,EAAE,oBAAoB,EAAE,MAAM,uCAAuC,CAAC;AAC7E,YAAY,EAAE,uBAAuB,EAAE,MAAM,uCAAuC,CAAC;AACrF,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAC;AACpD,YAAY,EAAE,6BAA6B,EAAE,MAAM,cAAc,CAAC;AAClE,YAAY,EACR,UAAU,EACV,SAAS,EACT,cAAc,EACd,cAAc,EACd,gBAAgB,GACnB,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AACrF,YAAY,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/prompts/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,iBAAiB,EAAE,MAAM,oCAAoC,CAAC;AACvE,OAAO,EAAE,oBAAoB,EAAE,MAAM,uCAAuC,CAAC;AAC7E,YAAY,EAAE,uBAAuB,EAAE,MAAM,uCAAuC,CAAC;AACrF,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,EAAE,aAAa,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AACnF,YAAY,EACR,sBAAsB,EACtB,qBAAqB,EACrB,mBAAmB,EACnB,eAAe,EACf,aAAa,GAChB,MAAM,cAAc,CAAC;AACtB,YAAY,EACR,UAAU,EACV,SAAS,EACT,cAAc,EACd,cAAc,EACd,gBAAgB,GACnB,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AACrF,YAAY,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAC"}
@@ -1,20 +1,18 @@
1
1
  import "../chunk-C6A6W6XS.js";
2
2
  import { PromptManager } from "./prompt-manager.js";
3
3
  import { MCPPromptProvider } from "./providers/mcp-prompt-provider.js";
4
- import { FilePromptProvider } from "./providers/file-prompt-provider.js";
5
- import { StarterPromptProvider } from "./providers/starter-prompt-provider.js";
6
4
  import { CustomPromptProvider } from "./providers/custom-prompt-provider.js";
7
5
  import { PromptError } from "./errors.js";
8
- import { StarterPromptsSchema } from "./schemas.js";
6
+ import { PromptsSchema, InlinePromptSchema, FilePromptSchema } from "./schemas.js";
9
7
  import { flattenPromptResult, normalizePromptArgs, appendContext } from "./utils.js";
10
8
  export {
11
9
  CustomPromptProvider,
12
- FilePromptProvider,
10
+ FilePromptSchema,
11
+ InlinePromptSchema,
13
12
  MCPPromptProvider,
14
13
  PromptError,
15
14
  PromptManager,
16
- StarterPromptProvider,
17
- StarterPromptsSchema,
15
+ PromptsSchema,
18
16
  appendContext,
19
17
  flattenPromptResult,
20
18
  normalizePromptArgs
@@ -22,8 +22,7 @@ __export(prompt_manager_exports, {
22
22
  });
23
23
  module.exports = __toCommonJS(prompt_manager_exports);
24
24
  var import_mcp_prompt_provider = require("./providers/mcp-prompt-provider.js");
25
- var import_file_prompt_provider = require("./providers/file-prompt-provider.js");
26
- var import_starter_prompt_provider = require("./providers/starter-prompt-provider.js");
25
+ var import_config_prompt_provider = require("./providers/config-prompt-provider.js");
27
26
  var import_custom_prompt_provider = require("./providers/custom-prompt-provider.js");
28
27
  var import_errors = require("./errors.js");
29
28
  var import_types = require("../logger/v2/types.js");
@@ -34,8 +33,7 @@ class PromptManager {
34
33
  this.database = database;
35
34
  this.logger = logger.createChild(import_types.DextoLogComponent.PROMPT);
36
35
  this.providers.set("mcp", new import_mcp_prompt_provider.MCPPromptProvider(mcpManager, this.logger));
37
- this.providers.set("file", new import_file_prompt_provider.FilePromptProvider({ resourceManager }, this.logger));
38
- this.providers.set("starter", new import_starter_prompt_provider.StarterPromptProvider(agentConfig, this.logger));
36
+ this.providers.set("config", new import_config_prompt_provider.ConfigPromptProvider(agentConfig, this.logger));
39
37
  this.providers.set(
40
38
  "custom",
41
39
  new import_custom_prompt_provider.CustomPromptProvider(this.database, resourceManager, this.logger)
@@ -1 +1 @@
1
- {"version":3,"file":"prompt-manager.d.ts","sourceRoot":"","sources":["../../src/prompts/prompt-manager.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,KAAK,EAAE,SAAS,EAAkB,UAAU,EAAE,MAAM,YAAY,CAAC;AACxE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,oCAAoC,CAAC;AAC1E,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAChE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAIxD,OAAO,EAEH,KAAK,uBAAuB,EAC/B,MAAM,uCAAuC,CAAC;AAE/C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAE1D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAC/D,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,8BAA8B,CAAC;AAU7D,qBAAa,aAAa;IAWlB,OAAO,CAAC,QAAQ,CAAC,QAAQ;IACzB,OAAO,CAAC,QAAQ,CAAC,QAAQ;IAX7B,OAAO,CAAC,SAAS,CAA0C;IAC3D,OAAO,CAAC,WAAW,CAA4C;IAC/D,OAAO,CAAC,QAAQ,CAAkC;IAClD,OAAO,CAAC,YAAY,CAA8B;IAClD,OAAO,CAAC,MAAM,CAAe;gBAGzB,UAAU,EAAE,UAAU,EACtB,eAAe,EAAE,eAAe,EAChC,WAAW,EAAE,oBAAoB,EAChB,QAAQ,EAAE,aAAa,EACvB,QAAQ,EAAE,QAAQ,EACnC,MAAM,EAAE,YAAY;IAyClB,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAK3B,IAAI,IAAI,OAAO,CAAC,SAAS,CAAC;IAU1B,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAKnC,mBAAmB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,YAAY,EAAE,gBAAgB,GAAG,IAAI,CAAC;IAY9F;;;;;;;;;;;;;OAaG;IACG,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,eAAe,CAAC;IAkDjF,gBAAgB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAa7D,kBAAkB,CAAC,KAAK,EAAE,uBAAuB,GAAG,OAAO,CAAC,UAAU,CAAC;IAUvE,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IASrD;;;;;;;;;;;;OAYG;IACG,aAAa,CACf,IAAI,EAAE,MAAM,EACZ,OAAO,GAAE;QACL,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;KAC7B,GACP,OAAO,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,EAAE,CAAA;KAAE,CAAC;IAiC3C,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAU9B;;OAEG;YACW,sBAAsB;IA+BpC;;OAEG;IACH,OAAO,CAAC,sBAAsB;IA+B9B,OAAO,CAAC,kBAAkB;YAqBZ,WAAW;YAgBX,UAAU;IA4BxB,OAAO,CAAC,YAAY;YA8DN,SAAS;CAgB1B"}
1
+ {"version":3,"file":"prompt-manager.d.ts","sourceRoot":"","sources":["../../src/prompts/prompt-manager.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,KAAK,EAAE,SAAS,EAAkB,UAAU,EAAE,MAAM,YAAY,CAAC;AACxE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,oCAAoC,CAAC;AAC1E,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAChE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAGxD,OAAO,EAEH,KAAK,uBAAuB,EAC/B,MAAM,uCAAuC,CAAC;AAE/C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAE1D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAC/D,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,8BAA8B,CAAC;AAU7D,qBAAa,aAAa;IAWlB,OAAO,CAAC,QAAQ,CAAC,QAAQ;IACzB,OAAO,CAAC,QAAQ,CAAC,QAAQ;IAX7B,OAAO,CAAC,SAAS,CAA0C;IAC3D,OAAO,CAAC,WAAW,CAA4C;IAC/D,OAAO,CAAC,QAAQ,CAAkC;IAClD,OAAO,CAAC,YAAY,CAA8B;IAClD,OAAO,CAAC,MAAM,CAAe;gBAGzB,UAAU,EAAE,UAAU,EACtB,eAAe,EAAE,eAAe,EAChC,WAAW,EAAE,oBAAoB,EAChB,QAAQ,EAAE,aAAa,EACvB,QAAQ,EAAE,QAAQ,EACnC,MAAM,EAAE,YAAY;IAwClB,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAK3B,IAAI,IAAI,OAAO,CAAC,SAAS,CAAC;IAU1B,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAKnC,mBAAmB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,YAAY,EAAE,gBAAgB,GAAG,IAAI,CAAC;IAY9F;;;;;;;;;;;;;OAaG;IACG,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,eAAe,CAAC;IAkDjF,gBAAgB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAa7D,kBAAkB,CAAC,KAAK,EAAE,uBAAuB,GAAG,OAAO,CAAC,UAAU,CAAC;IAUvE,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IASrD;;;;;;;;;;;;OAYG;IACG,aAAa,CACf,IAAI,EAAE,MAAM,EACZ,OAAO,GAAE;QACL,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;KAC7B,GACP,OAAO,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,EAAE,CAAA;KAAE,CAAC;IAiC3C,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAU9B;;OAEG;YACW,sBAAsB;IA+BpC;;OAEG;IACH,OAAO,CAAC,sBAAsB;IA+B9B,OAAO,CAAC,kBAAkB;YAqBZ,WAAW;YAgBX,UAAU;IA4BxB,OAAO,CAAC,YAAY;YA8DN,SAAS;CAgB1B"}
@@ -1,7 +1,6 @@
1
1
  import "../chunk-C6A6W6XS.js";
2
2
  import { MCPPromptProvider } from "./providers/mcp-prompt-provider.js";
3
- import { FilePromptProvider } from "./providers/file-prompt-provider.js";
4
- import { StarterPromptProvider } from "./providers/starter-prompt-provider.js";
3
+ import { ConfigPromptProvider } from "./providers/config-prompt-provider.js";
5
4
  import {
6
5
  CustomPromptProvider
7
6
  } from "./providers/custom-prompt-provider.js";
@@ -14,8 +13,7 @@ class PromptManager {
14
13
  this.database = database;
15
14
  this.logger = logger.createChild(DextoLogComponent.PROMPT);
16
15
  this.providers.set("mcp", new MCPPromptProvider(mcpManager, this.logger));
17
- this.providers.set("file", new FilePromptProvider({ resourceManager }, this.logger));
18
- this.providers.set("starter", new StarterPromptProvider(agentConfig, this.logger));
16
+ this.providers.set("config", new ConfigPromptProvider(agentConfig, this.logger));
19
17
  this.providers.set(
20
18
  "custom",
21
19
  new CustomPromptProvider(this.database, resourceManager, this.logger)
@@ -0,0 +1,331 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: true });
9
+ };
10
+ var __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from === "object" || typeof from === "function") {
12
+ for (let key of __getOwnPropNames(from))
13
+ if (!__hasOwnProp.call(to, key) && key !== except)
14
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
+ }
16
+ return to;
17
+ };
18
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
+ var config_prompt_provider_exports = {};
20
+ __export(config_prompt_provider_exports, {
21
+ ConfigPromptProvider: () => ConfigPromptProvider
22
+ });
23
+ module.exports = __toCommonJS(config_prompt_provider_exports);
24
+ var import_types = require("../../logger/v2/types.js");
25
+ var import_errors = require("../errors.js");
26
+ var import_utils = require("../utils.js");
27
+ var import_name_validation = require("../name-validation.js");
28
+ var import_promises = require("fs/promises");
29
+ var import_fs = require("fs");
30
+ var import_path = require("path");
31
+ class ConfigPromptProvider {
32
+ prompts = [];
33
+ promptsCache = [];
34
+ promptContent = /* @__PURE__ */ new Map();
35
+ cacheValid = false;
36
+ logger;
37
+ constructor(agentConfig, logger) {
38
+ this.logger = logger.createChild(import_types.DextoLogComponent.PROMPT);
39
+ this.prompts = agentConfig.prompts;
40
+ this.buildPromptsCache();
41
+ }
42
+ getSource() {
43
+ return "config";
44
+ }
45
+ invalidateCache() {
46
+ this.cacheValid = false;
47
+ this.promptsCache = [];
48
+ this.promptContent.clear();
49
+ this.logger.debug("ConfigPromptProvider cache invalidated");
50
+ }
51
+ updateConfig(agentConfig) {
52
+ this.prompts = agentConfig.prompts;
53
+ this.invalidateCache();
54
+ this.buildPromptsCache();
55
+ }
56
+ async listPrompts(_cursor) {
57
+ if (!this.cacheValid) {
58
+ await this.buildPromptsCache();
59
+ }
60
+ return {
61
+ prompts: this.promptsCache
62
+ };
63
+ }
64
+ async getPrompt(name, args) {
65
+ if (!this.cacheValid) {
66
+ await this.buildPromptsCache();
67
+ }
68
+ const promptInfo = this.promptsCache.find((p) => p.name === name);
69
+ if (!promptInfo) {
70
+ throw import_errors.PromptError.notFound(name);
71
+ }
72
+ let content = this.promptContent.get(name);
73
+ if (!content) {
74
+ throw import_errors.PromptError.missingText();
75
+ }
76
+ content = this.applyArguments(content, args);
77
+ return {
78
+ description: promptInfo.description,
79
+ messages: [
80
+ {
81
+ role: "user",
82
+ content: {
83
+ type: "text",
84
+ text: content
85
+ }
86
+ }
87
+ ]
88
+ };
89
+ }
90
+ async getPromptDefinition(name) {
91
+ if (!this.cacheValid) {
92
+ await this.buildPromptsCache();
93
+ }
94
+ const promptInfo = this.promptsCache.find((p) => p.name === name);
95
+ if (!promptInfo) {
96
+ return null;
97
+ }
98
+ return {
99
+ name: promptInfo.name,
100
+ ...promptInfo.title && { title: promptInfo.title },
101
+ ...promptInfo.description && { description: promptInfo.description },
102
+ ...promptInfo.arguments && { arguments: promptInfo.arguments }
103
+ };
104
+ }
105
+ async buildPromptsCache() {
106
+ const cache = [];
107
+ const contentMap = /* @__PURE__ */ new Map();
108
+ for (const prompt of this.prompts) {
109
+ try {
110
+ if (prompt.type === "inline") {
111
+ const { info, content } = this.processInlinePrompt(prompt);
112
+ cache.push(info);
113
+ contentMap.set(info.name, content);
114
+ } else if (prompt.type === "file") {
115
+ const result = await this.processFilePrompt(prompt);
116
+ if (result) {
117
+ cache.push(result.info);
118
+ contentMap.set(result.info.name, result.content);
119
+ }
120
+ }
121
+ } catch (error) {
122
+ this.logger.warn(
123
+ `Failed to process prompt: ${error instanceof Error ? error.message : String(error)}`
124
+ );
125
+ }
126
+ }
127
+ cache.sort((a, b) => {
128
+ const priorityA = a.metadata?.priority ?? 0;
129
+ const priorityB = b.metadata?.priority ?? 0;
130
+ return priorityB - priorityA;
131
+ });
132
+ this.promptsCache = cache;
133
+ this.promptContent = contentMap;
134
+ this.cacheValid = true;
135
+ this.logger.debug(`Cached ${cache.length} config prompts`);
136
+ }
137
+ processInlinePrompt(prompt) {
138
+ const promptName = `config:${prompt.id}`;
139
+ const promptInfo = {
140
+ name: promptName,
141
+ title: prompt.title,
142
+ description: prompt.description,
143
+ source: "config",
144
+ metadata: {
145
+ type: "inline",
146
+ category: prompt.category,
147
+ priority: prompt.priority,
148
+ showInStarters: prompt.showInStarters,
149
+ originalId: prompt.id
150
+ }
151
+ };
152
+ return { info: promptInfo, content: prompt.prompt };
153
+ }
154
+ async processFilePrompt(prompt) {
155
+ const filePath = prompt.file;
156
+ if (!(0, import_fs.existsSync)(filePath)) {
157
+ this.logger.warn(`Prompt file not found: ${filePath}`);
158
+ return null;
159
+ }
160
+ try {
161
+ const resolvedDir = await (0, import_promises.realpath)((0, import_path.dirname)(filePath));
162
+ const resolvedFile = await (0, import_promises.realpath)(filePath);
163
+ const rel = (0, import_path.relative)(resolvedDir, resolvedFile);
164
+ if (rel.startsWith(".." + import_path.sep) || rel === "..") {
165
+ this.logger.warn(
166
+ `Skipping prompt file '${filePath}': path traversal attempt detected (resolved outside directory)`
167
+ );
168
+ return null;
169
+ }
170
+ } catch (realpathError) {
171
+ this.logger.warn(
172
+ `Skipping prompt file '${filePath}': unable to resolve path (${realpathError instanceof Error ? realpathError.message : String(realpathError)})`
173
+ );
174
+ return null;
175
+ }
176
+ try {
177
+ const rawContent = await (0, import_promises.readFile)(filePath, "utf-8");
178
+ const parsed = this.parseMarkdownPrompt(rawContent, filePath);
179
+ try {
180
+ (0, import_name_validation.assertValidPromptName)(parsed.id, {
181
+ context: `file prompt '${filePath}'`,
182
+ hint: "Use kebab-case in the 'id:' frontmatter field or file name."
183
+ });
184
+ } catch (validationError) {
185
+ this.logger.warn(
186
+ `Invalid prompt name in '${filePath}': ${validationError instanceof Error ? validationError.message : String(validationError)}`
187
+ );
188
+ return null;
189
+ }
190
+ const promptInfo = {
191
+ name: `config:${parsed.id}`,
192
+ title: parsed.title,
193
+ description: parsed.description,
194
+ source: "config",
195
+ ...parsed.arguments && { arguments: parsed.arguments },
196
+ metadata: {
197
+ type: "file",
198
+ filePath,
199
+ category: parsed.category,
200
+ priority: parsed.priority,
201
+ showInStarters: prompt.showInStarters,
202
+ originalId: parsed.id
203
+ }
204
+ };
205
+ return { info: promptInfo, content: parsed.content };
206
+ } catch (error) {
207
+ this.logger.warn(
208
+ `Failed to read prompt file ${filePath}: ${error instanceof Error ? error.message : String(error)}`
209
+ );
210
+ return null;
211
+ }
212
+ }
213
+ parseMarkdownPrompt(rawContent, filePath) {
214
+ const lines = rawContent.trim().split("\n");
215
+ const fileName = filePath.split("/").pop()?.replace(/\.md$/, "") ?? "unknown";
216
+ let id = fileName;
217
+ let title = fileName;
218
+ let description = `File prompt: ${fileName}`;
219
+ let category;
220
+ let priority;
221
+ let argumentHint;
222
+ let contentBody;
223
+ if (lines[0]?.trim() === "---") {
224
+ let frontmatterEnd = 0;
225
+ for (let i = 1; i < lines.length; i++) {
226
+ if (lines[i]?.trim() === "---") {
227
+ frontmatterEnd = i;
228
+ break;
229
+ }
230
+ }
231
+ if (frontmatterEnd > 0) {
232
+ const frontmatterLines = lines.slice(1, frontmatterEnd);
233
+ contentBody = lines.slice(frontmatterEnd + 1).join("\n");
234
+ for (const line of frontmatterLines) {
235
+ const match = (key) => {
236
+ const regex = new RegExp(`${key}:\\s*(?:['"](.+)['"]|(.+))`);
237
+ const m = line.match(regex);
238
+ return m ? (m[1] || m[2] || "").trim() : null;
239
+ };
240
+ if (line.includes("id:")) {
241
+ const val = match("id");
242
+ if (val) id = val;
243
+ } else if (line.includes("title:")) {
244
+ const val = match("title");
245
+ if (val) title = val;
246
+ } else if (line.includes("description:")) {
247
+ const val = match("description");
248
+ if (val) description = val;
249
+ } else if (line.includes("category:")) {
250
+ const val = match("category");
251
+ if (val) category = val;
252
+ } else if (line.includes("priority:")) {
253
+ const val = match("priority");
254
+ if (val) priority = parseInt(val, 10);
255
+ } else if (line.includes("argument-hint:")) {
256
+ const val = match("argument-hint");
257
+ if (val) argumentHint = val;
258
+ }
259
+ }
260
+ } else {
261
+ contentBody = rawContent;
262
+ }
263
+ } else {
264
+ contentBody = rawContent;
265
+ }
266
+ if (title === fileName) {
267
+ for (const line of contentBody.trim().split("\n")) {
268
+ if (line.trim().startsWith("#")) {
269
+ title = line.trim().replace(/^#+\s*/, "");
270
+ break;
271
+ }
272
+ }
273
+ }
274
+ const parsedArguments = argumentHint ? this.parseArgumentHint(argumentHint) : void 0;
275
+ return {
276
+ id,
277
+ title,
278
+ description,
279
+ content: contentBody.trim(),
280
+ ...category !== void 0 && { category },
281
+ ...priority !== void 0 && { priority },
282
+ ...parsedArguments !== void 0 && { arguments: parsedArguments }
283
+ };
284
+ }
285
+ parseArgumentHint(hint) {
286
+ const args = [];
287
+ const argPattern = /\[([^\]]+)\]/g;
288
+ let match;
289
+ while ((match = argPattern.exec(hint)) !== null) {
290
+ const argText = match[1];
291
+ if (!argText) continue;
292
+ const isOptional = argText.endsWith("?");
293
+ const name = isOptional ? argText.slice(0, -1).trim() : argText.trim();
294
+ if (name) {
295
+ args.push({
296
+ name,
297
+ required: !isOptional
298
+ });
299
+ }
300
+ }
301
+ return args;
302
+ }
303
+ applyArguments(content, args) {
304
+ const detectionTarget = content.replaceAll("$$", "");
305
+ const usesPositionalPlaceholders = /\$[1-9](?!\d)/.test(detectionTarget) || detectionTarget.includes("$ARGUMENTS");
306
+ const expanded = (0, import_utils.expandPlaceholders)(content, args).trim();
307
+ if (!args || typeof args !== "object" || Object.keys(args).length === 0) {
308
+ return expanded;
309
+ }
310
+ if (!usesPositionalPlaceholders) {
311
+ if (args._context) {
312
+ const contextString = String(args._context);
313
+ return `${expanded}
314
+
315
+ Context: ${contextString}`;
316
+ }
317
+ const argEntries = Object.entries(args).filter(([key]) => !key.startsWith("_"));
318
+ if (argEntries.length > 0) {
319
+ const formattedArgs = argEntries.map(([key, value]) => `${key}: ${value}`).join(", ");
320
+ return `${expanded}
321
+
322
+ Arguments: ${formattedArgs}`;
323
+ }
324
+ }
325
+ return expanded;
326
+ }
327
+ }
328
+ // Annotate the CommonJS export names for ESM import in node:
329
+ 0 && (module.exports = {
330
+ ConfigPromptProvider
331
+ });
@@ -0,0 +1,34 @@
1
+ import type { PromptProvider, PromptDefinition, PromptListResult } from '../types.js';
2
+ import type { GetPromptResult } from '@modelcontextprotocol/sdk/types.js';
3
+ import type { ValidatedAgentConfig } from '../../agent/schemas.js';
4
+ import type { IDextoLogger } from '../../logger/v2/types.js';
5
+ /**
6
+ * Config Prompt Provider - Unified provider for prompts from agent configuration
7
+ *
8
+ * Handles both inline prompts (text defined directly in config) and file-based prompts
9
+ * (loaded from markdown files). This replaces the old StarterPromptProvider and
10
+ * FilePromptProvider with a single, unified approach.
11
+ *
12
+ * Prompts with showInStarters: true are displayed as clickable buttons in the WebUI.
13
+ */
14
+ export declare class ConfigPromptProvider implements PromptProvider {
15
+ private prompts;
16
+ private promptsCache;
17
+ private promptContent;
18
+ private cacheValid;
19
+ private logger;
20
+ constructor(agentConfig: ValidatedAgentConfig, logger: IDextoLogger);
21
+ getSource(): string;
22
+ invalidateCache(): void;
23
+ updateConfig(agentConfig: ValidatedAgentConfig): void;
24
+ listPrompts(_cursor?: string): Promise<PromptListResult>;
25
+ getPrompt(name: string, args?: Record<string, unknown>): Promise<GetPromptResult>;
26
+ getPromptDefinition(name: string): Promise<PromptDefinition | null>;
27
+ private buildPromptsCache;
28
+ private processInlinePrompt;
29
+ private processFilePrompt;
30
+ private parseMarkdownPrompt;
31
+ private parseArgumentHint;
32
+ private applyArguments;
33
+ }
34
+ //# sourceMappingURL=config-prompt-provider.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config-prompt-provider.d.ts","sourceRoot":"","sources":["../../../src/prompts/providers/config-prompt-provider.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAc,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAClG,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,oCAAoC,CAAC;AAC1E,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAEnE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAS7D;;;;;;;;GAQG;AACH,qBAAa,oBAAqB,YAAW,cAAc;IACvD,OAAO,CAAC,OAAO,CAAyB;IACxC,OAAO,CAAC,YAAY,CAAoB;IACxC,OAAO,CAAC,aAAa,CAAkC;IACvD,OAAO,CAAC,UAAU,CAAkB;IACpC,OAAO,CAAC,MAAM,CAAe;gBAEjB,WAAW,EAAE,oBAAoB,EAAE,MAAM,EAAE,YAAY;IAMnE,SAAS,IAAI,MAAM;IAInB,eAAe,IAAI,IAAI;IAOvB,YAAY,CAAC,WAAW,EAAE,oBAAoB,GAAG,IAAI;IAM/C,WAAW,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAUxD,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,eAAe,CAAC;IAgCjF,mBAAmB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,GAAG,IAAI,CAAC;YAkB3D,iBAAiB;IAsC/B,OAAO,CAAC,mBAAmB;YAsBb,iBAAiB;IAwE/B,OAAO,CAAC,mBAAmB;IA+F3B,OAAO,CAAC,iBAAiB;IAyBzB,OAAO,CAAC,cAAc;CA+BzB"}