@dexto/core 1.5.6 → 1.5.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/dist/agent/DextoAgent.cjs +189 -30
- package/dist/agent/DextoAgent.d.ts +44 -9
- package/dist/agent/DextoAgent.d.ts.map +1 -1
- package/dist/agent/DextoAgent.js +190 -31
- package/dist/agent/schemas.cjs +5 -0
- package/dist/agent/schemas.d.ts +456 -66
- package/dist/agent/schemas.d.ts.map +1 -1
- package/dist/agent/schemas.js +5 -0
- package/dist/context/manager.cjs +1 -1
- package/dist/context/manager.js +1 -1
- package/dist/context/utils.cjs +90 -17
- package/dist/context/utils.d.ts.map +1 -1
- package/dist/context/utils.js +90 -17
- package/dist/errors/types.cjs +2 -1
- package/dist/errors/types.d.ts +2 -1
- package/dist/errors/types.d.ts.map +1 -1
- package/dist/errors/types.js +2 -1
- package/dist/events/index.cjs +4 -1
- package/dist/events/index.d.ts +37 -2
- package/dist/events/index.d.ts.map +1 -1
- package/dist/events/index.js +4 -1
- package/dist/image/types.d.ts +15 -0
- package/dist/image/types.d.ts.map +1 -1
- package/dist/index.browser.d.ts +1 -1
- package/dist/index.browser.d.ts.map +1 -1
- package/dist/llm/curation-config.cjs +82 -0
- package/dist/llm/curation-config.d.ts +13 -0
- package/dist/llm/curation-config.d.ts.map +1 -0
- package/dist/llm/curation-config.js +59 -0
- package/dist/llm/curation.cjs +57 -0
- package/dist/llm/curation.d.ts +16 -0
- package/dist/llm/curation.d.ts.map +1 -0
- package/dist/llm/curation.js +34 -0
- package/dist/llm/error-codes.cjs +1 -0
- package/dist/llm/error-codes.d.ts +1 -0
- package/dist/llm/error-codes.d.ts.map +1 -1
- package/dist/llm/error-codes.js +1 -0
- package/dist/llm/errors.cjs +16 -1
- package/dist/llm/errors.d.ts +15 -8
- package/dist/llm/errors.d.ts.map +1 -1
- package/dist/llm/errors.js +16 -1
- package/dist/llm/executor/provider-options.cjs +1 -1
- package/dist/llm/executor/provider-options.js +1 -1
- package/dist/llm/executor/turn-executor.cjs +35 -2
- package/dist/llm/executor/turn-executor.d.ts.map +1 -1
- package/dist/llm/executor/turn-executor.js +35 -2
- package/dist/llm/index.cjs +14 -3
- package/dist/llm/index.d.ts +3 -1
- package/dist/llm/index.d.ts.map +1 -1
- package/dist/llm/index.js +13 -2
- package/dist/llm/registry/auto-update.cjs +263 -0
- package/dist/llm/registry/auto-update.d.ts +27 -0
- package/dist/llm/registry/auto-update.d.ts.map +1 -0
- package/dist/llm/registry/auto-update.js +227 -0
- package/dist/llm/registry/index.cjs +806 -0
- package/dist/llm/{registry.d.ts → registry/index.d.ts} +67 -13
- package/dist/llm/registry/index.d.ts.map +1 -0
- package/dist/llm/registry/index.js +756 -0
- package/dist/llm/registry/models.generated.cjs +4861 -0
- package/dist/llm/registry/models.generated.d.ts +431 -0
- package/dist/llm/registry/models.generated.d.ts.map +1 -0
- package/dist/llm/registry/models.generated.js +4838 -0
- package/dist/llm/registry/models.manual.cjs +44 -0
- package/dist/llm/registry/models.manual.d.ts +22 -0
- package/dist/llm/registry/models.manual.d.ts.map +1 -0
- package/dist/llm/registry/models.manual.js +21 -0
- package/dist/llm/registry/sync.cjs +354 -0
- package/dist/llm/registry/sync.d.ts +41 -0
- package/dist/llm/registry/sync.d.ts.map +1 -0
- package/dist/llm/registry/sync.js +328 -0
- package/dist/llm/resolver.cjs +29 -7
- package/dist/llm/resolver.d.ts +1 -1
- package/dist/llm/resolver.d.ts.map +1 -1
- package/dist/llm/resolver.js +31 -8
- package/dist/llm/schemas.cjs +13 -1
- package/dist/llm/schemas.d.ts +59 -59
- package/dist/llm/schemas.d.ts.map +1 -1
- package/dist/llm/schemas.js +14 -1
- package/dist/llm/services/factory.cjs +43 -27
- package/dist/llm/services/factory.d.ts +20 -1
- package/dist/llm/services/factory.d.ts.map +1 -1
- package/dist/llm/services/factory.js +44 -28
- package/dist/llm/services/test-utils.integration.cjs +5 -1
- package/dist/llm/services/test-utils.integration.d.ts.map +1 -1
- package/dist/llm/services/test-utils.integration.js +5 -1
- package/dist/llm/services/vercel.cjs +4 -1
- package/dist/llm/services/vercel.d.ts +1 -0
- package/dist/llm/services/vercel.d.ts.map +1 -1
- package/dist/llm/services/vercel.js +4 -1
- package/dist/llm/types.cjs +5 -2
- package/dist/llm/types.d.ts +1 -1
- package/dist/llm/types.d.ts.map +1 -1
- package/dist/llm/types.js +5 -2
- package/dist/llm/validation.cjs +1 -1
- package/dist/llm/validation.js +1 -1
- package/dist/logger/v2/dexto-logger.cjs +4 -0
- package/dist/logger/v2/dexto-logger.d.ts +3 -0
- package/dist/logger/v2/dexto-logger.d.ts.map +1 -1
- package/dist/logger/v2/dexto-logger.js +4 -0
- package/dist/logger/v2/types.d.ts +2 -0
- package/dist/logger/v2/types.d.ts.map +1 -1
- package/dist/mcp/error-codes.cjs +1 -0
- package/dist/mcp/error-codes.d.ts +1 -0
- package/dist/mcp/error-codes.d.ts.map +1 -1
- package/dist/mcp/error-codes.js +1 -0
- package/dist/mcp/errors.cjs +13 -0
- package/dist/mcp/errors.d.ts +7 -0
- package/dist/mcp/errors.d.ts.map +1 -1
- package/dist/mcp/errors.js +13 -0
- package/dist/mcp/manager.cjs +46 -4
- package/dist/mcp/manager.d.ts +10 -2
- package/dist/mcp/manager.d.ts.map +1 -1
- package/dist/mcp/manager.js +46 -4
- package/dist/mcp/mcp-client.cjs +89 -5
- package/dist/mcp/mcp-client.d.ts +5 -1
- package/dist/mcp/mcp-client.d.ts.map +1 -1
- package/dist/mcp/mcp-client.js +89 -5
- package/dist/mcp/schemas.cjs +6 -1
- package/dist/mcp/schemas.d.ts +1 -1
- package/dist/mcp/schemas.d.ts.map +1 -1
- package/dist/mcp/schemas.js +6 -1
- package/dist/mcp/types.d.ts +5 -0
- package/dist/mcp/types.d.ts.map +1 -1
- package/dist/prompts/index.d.ts +1 -1
- package/dist/prompts/index.d.ts.map +1 -1
- package/dist/prompts/prompt-manager.cjs +90 -4
- package/dist/prompts/prompt-manager.d.ts +16 -6
- package/dist/prompts/prompt-manager.d.ts.map +1 -1
- package/dist/prompts/prompt-manager.js +90 -4
- package/dist/prompts/providers/config-prompt-provider.cjs +104 -10
- package/dist/prompts/providers/config-prompt-provider.d.ts.map +1 -1
- package/dist/prompts/providers/config-prompt-provider.js +105 -11
- package/dist/prompts/providers/custom-prompt-provider.cjs +1 -0
- package/dist/prompts/providers/custom-prompt-provider.d.ts.map +1 -1
- package/dist/prompts/providers/custom-prompt-provider.js +1 -0
- package/dist/prompts/providers/mcp-prompt-provider.cjs +1 -0
- package/dist/prompts/providers/mcp-prompt-provider.d.ts.map +1 -1
- package/dist/prompts/providers/mcp-prompt-provider.js +1 -0
- package/dist/prompts/schemas.cjs +28 -2
- package/dist/prompts/schemas.d.ts +130 -0
- package/dist/prompts/schemas.d.ts.map +1 -1
- package/dist/prompts/schemas.js +28 -2
- package/dist/prompts/types.d.ts +55 -3
- package/dist/prompts/types.d.ts.map +1 -1
- package/dist/resources/handlers/filesystem-handler.cjs +25 -0
- package/dist/resources/handlers/filesystem-handler.d.ts +1 -0
- package/dist/resources/handlers/filesystem-handler.d.ts.map +1 -1
- package/dist/resources/handlers/filesystem-handler.js +25 -0
- package/dist/session/chat-session.cjs +1 -1
- package/dist/session/chat-session.d.ts +1 -1
- package/dist/session/chat-session.d.ts.map +1 -1
- package/dist/session/chat-session.js +1 -1
- package/dist/session/index.d.ts +1 -1
- package/dist/session/index.d.ts.map +1 -1
- package/dist/session/message-queue.cjs +29 -5
- package/dist/session/message-queue.d.ts +3 -1
- package/dist/session/message-queue.d.ts.map +1 -1
- package/dist/session/message-queue.js +29 -5
- package/dist/session/session-manager.cjs +84 -3
- package/dist/session/session-manager.d.ts +12 -0
- package/dist/session/session-manager.d.ts.map +1 -1
- package/dist/session/session-manager.js +74 -3
- package/dist/session/types.d.ts +1 -0
- package/dist/session/types.d.ts.map +1 -1
- package/dist/systemPrompt/contributors.cjs +42 -0
- package/dist/systemPrompt/contributors.d.ts +13 -0
- package/dist/systemPrompt/contributors.d.ts.map +1 -1
- package/dist/systemPrompt/contributors.js +41 -0
- package/dist/tools/errors.cjs +7 -3
- package/dist/tools/errors.d.ts +5 -1
- package/dist/tools/errors.d.ts.map +1 -1
- package/dist/tools/errors.js +7 -3
- package/dist/tools/internal-tools/constants.cjs +2 -1
- package/dist/tools/internal-tools/constants.d.ts +1 -1
- package/dist/tools/internal-tools/constants.d.ts.map +1 -1
- package/dist/tools/internal-tools/constants.js +2 -1
- package/dist/tools/internal-tools/implementations/invoke-skill-tool.cjs +140 -0
- package/dist/tools/internal-tools/implementations/invoke-skill-tool.d.ts +24 -0
- package/dist/tools/internal-tools/implementations/invoke-skill-tool.d.ts.map +1 -0
- package/dist/tools/internal-tools/implementations/invoke-skill-tool.js +117 -0
- package/dist/tools/internal-tools/provider.cjs +15 -0
- package/dist/tools/internal-tools/provider.d.ts +15 -1
- package/dist/tools/internal-tools/provider.d.ts.map +1 -1
- package/dist/tools/internal-tools/provider.js +15 -0
- package/dist/tools/internal-tools/registry.cjs +6 -0
- package/dist/tools/internal-tools/registry.d.ts +35 -1
- package/dist/tools/internal-tools/registry.d.ts.map +1 -1
- package/dist/tools/internal-tools/registry.js +6 -0
- package/dist/tools/schemas.d.ts +1 -1
- package/dist/tools/schemas.d.ts.map +1 -1
- package/dist/tools/tool-call-metadata.cjs +75 -0
- package/dist/tools/tool-call-metadata.d.ts +16 -0
- package/dist/tools/tool-call-metadata.d.ts.map +1 -0
- package/dist/tools/tool-call-metadata.js +51 -0
- package/dist/tools/tool-manager.cjs +481 -103
- package/dist/tools/tool-manager.d.ts +131 -9
- package/dist/tools/tool-manager.d.ts.map +1 -1
- package/dist/tools/tool-manager.js +482 -104
- package/dist/utils/api-key-resolver.cjs +5 -2
- package/dist/utils/api-key-resolver.d.ts.map +1 -1
- package/dist/utils/api-key-resolver.js +5 -2
- package/dist/utils/env.cjs +49 -0
- package/dist/utils/env.d.ts +4 -0
- package/dist/utils/env.d.ts.map +1 -0
- package/dist/utils/env.js +24 -0
- package/dist/utils/index.cjs +3 -1
- package/dist/utils/index.d.ts +1 -0
- package/dist/utils/index.d.ts.map +1 -1
- package/dist/utils/index.js +1 -0
- package/dist/utils/service-initializer.cjs +25 -7
- package/dist/utils/service-initializer.d.ts +24 -1
- package/dist/utils/service-initializer.d.ts.map +1 -1
- package/dist/utils/service-initializer.js +25 -7
- package/package.json +6 -2
- package/dist/llm/registry.cjs +0 -1631
- package/dist/llm/registry.d.ts.map +0 -1
- package/dist/llm/registry.js +0 -1586
|
@@ -95,9 +95,50 @@ class PromptManager {
|
|
|
95
95
|
name: info.name,
|
|
96
96
|
...info.title && { title: info.title },
|
|
97
97
|
...info.description && { description: info.description },
|
|
98
|
-
...info.arguments && { arguments: info.arguments }
|
|
98
|
+
...info.arguments && { arguments: info.arguments },
|
|
99
|
+
// Claude Code compatibility fields
|
|
100
|
+
...info.disableModelInvocation !== void 0 && {
|
|
101
|
+
disableModelInvocation: info.disableModelInvocation
|
|
102
|
+
},
|
|
103
|
+
...info.userInvocable !== void 0 && { userInvocable: info.userInvocable },
|
|
104
|
+
...info.allowedTools !== void 0 && { allowedTools: info.allowedTools },
|
|
105
|
+
...info.model !== void 0 && { model: info.model },
|
|
106
|
+
...info.context !== void 0 && { context: info.context },
|
|
107
|
+
...info.agent !== void 0 && { agent: info.agent }
|
|
99
108
|
};
|
|
100
109
|
}
|
|
110
|
+
/**
|
|
111
|
+
* List prompts that should appear in the CLI slash command menu.
|
|
112
|
+
* Filters out prompts with `userInvocable: false`.
|
|
113
|
+
* These prompts are intended for user invocation via `/` commands.
|
|
114
|
+
*/
|
|
115
|
+
async listUserInvocablePrompts() {
|
|
116
|
+
await this.ensureCache();
|
|
117
|
+
const index = this.promptIndex ?? /* @__PURE__ */ new Map();
|
|
118
|
+
const result = {};
|
|
119
|
+
for (const [key, entry] of index.entries()) {
|
|
120
|
+
if (entry.info.userInvocable !== false) {
|
|
121
|
+
result[key] = entry.info;
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
return result;
|
|
125
|
+
}
|
|
126
|
+
/**
|
|
127
|
+
* List prompts that can be auto-invoked by the LLM.
|
|
128
|
+
* Filters out prompts with `disableModelInvocation: true`.
|
|
129
|
+
* These prompts should appear in the system prompt as available skills.
|
|
130
|
+
*/
|
|
131
|
+
async listAutoInvocablePrompts() {
|
|
132
|
+
await this.ensureCache();
|
|
133
|
+
const index = this.promptIndex ?? /* @__PURE__ */ new Map();
|
|
134
|
+
const result = {};
|
|
135
|
+
for (const [key, entry] of index.entries()) {
|
|
136
|
+
if (entry.info.disableModelInvocation !== true) {
|
|
137
|
+
result[key] = entry.info;
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
return result;
|
|
141
|
+
}
|
|
101
142
|
/**
|
|
102
143
|
* Retrieve a prompt from the appropriate provider.
|
|
103
144
|
*
|
|
@@ -184,15 +225,17 @@ class PromptManager {
|
|
|
184
225
|
* - Passing `_context` through to providers so they can decide whether to append it
|
|
185
226
|
* (e.g., file prompts without placeholders will append `Context: ...`)
|
|
186
227
|
* - Prompt execution and flattening
|
|
228
|
+
* - Returning per-prompt overrides (allowedTools, model) for the invoker to apply
|
|
187
229
|
*
|
|
188
230
|
* @param name The prompt name or alias
|
|
189
231
|
* @param options Optional configuration for prompt resolution
|
|
190
|
-
* @returns Promise resolving to the resolved text and
|
|
232
|
+
* @returns Promise resolving to the resolved text, resource URIs, and optional overrides
|
|
191
233
|
*/
|
|
192
234
|
async resolvePrompt(name, options = {}) {
|
|
193
235
|
const args = { ...options.args };
|
|
194
236
|
if (options.context?.trim()) args._context = options.context.trim();
|
|
195
237
|
const resolvedName = await this.resolvePromptKey(name) ?? name;
|
|
238
|
+
const promptDef = await this.getPromptDefinition(resolvedName);
|
|
196
239
|
const normalized = (0, import_utils.normalizePromptArgs)(args);
|
|
197
240
|
const providerArgs = normalized.context ? { ...normalized.args, _context: normalized.context } : normalized.args;
|
|
198
241
|
const promptResult = await this.getPrompt(resolvedName, providerArgs);
|
|
@@ -200,7 +243,15 @@ class PromptManager {
|
|
|
200
243
|
if (!flattened.text && flattened.resourceUris.length === 0) {
|
|
201
244
|
throw import_errors.PromptError.emptyResolvedContent(resolvedName);
|
|
202
245
|
}
|
|
203
|
-
return {
|
|
246
|
+
return {
|
|
247
|
+
text: flattened.text,
|
|
248
|
+
resources: flattened.resourceUris,
|
|
249
|
+
// Include per-prompt overrides from prompt definition
|
|
250
|
+
...promptDef?.allowedTools && { allowedTools: promptDef.allowedTools },
|
|
251
|
+
...promptDef?.model && { model: promptDef.model },
|
|
252
|
+
...promptDef?.context && { context: promptDef.context },
|
|
253
|
+
...promptDef?.agent && { agent: promptDef.agent }
|
|
254
|
+
};
|
|
204
255
|
}
|
|
205
256
|
async refresh() {
|
|
206
257
|
this.promptIndex = void 0;
|
|
@@ -235,7 +286,25 @@ class PromptManager {
|
|
|
235
286
|
const serverPrompts = prompts.filter(
|
|
236
287
|
(p) => p.metadata && typeof p.metadata === "object" && "serverName" in p.metadata && p.metadata.serverName === serverName
|
|
237
288
|
);
|
|
289
|
+
const displayNameCounts = /* @__PURE__ */ new Map();
|
|
290
|
+
for (const entry of this.promptIndex.values()) {
|
|
291
|
+
const displayName = entry.info.displayName || entry.info.name;
|
|
292
|
+
displayNameCounts.set(
|
|
293
|
+
displayName,
|
|
294
|
+
(displayNameCounts.get(displayName) || 0) + 1
|
|
295
|
+
);
|
|
296
|
+
}
|
|
297
|
+
for (const prompt of serverPrompts) {
|
|
298
|
+
const displayName = prompt.displayName || prompt.name;
|
|
299
|
+
displayNameCounts.set(
|
|
300
|
+
displayName,
|
|
301
|
+
(displayNameCounts.get(displayName) || 0) + 1
|
|
302
|
+
);
|
|
303
|
+
}
|
|
238
304
|
for (const prompt of serverPrompts) {
|
|
305
|
+
const displayName = prompt.displayName || prompt.name;
|
|
306
|
+
const hasCollision = (displayNameCounts.get(displayName) || 0) > 1;
|
|
307
|
+
prompt.commandName = hasCollision ? `${prompt.source}:${displayName}` : displayName;
|
|
239
308
|
this.insertPrompt(this.promptIndex, this.aliasMap, "mcp", prompt);
|
|
240
309
|
}
|
|
241
310
|
} catch (error) {
|
|
@@ -303,11 +372,12 @@ class PromptManager {
|
|
|
303
372
|
async buildCache() {
|
|
304
373
|
const index = /* @__PURE__ */ new Map();
|
|
305
374
|
const aliases = /* @__PURE__ */ new Map();
|
|
375
|
+
const collectedPrompts = [];
|
|
306
376
|
for (const [providerName, provider] of this.providers) {
|
|
307
377
|
try {
|
|
308
378
|
const { prompts } = await provider.listPrompts();
|
|
309
379
|
for (const prompt of prompts) {
|
|
310
|
-
|
|
380
|
+
collectedPrompts.push({ providerName, prompt });
|
|
311
381
|
}
|
|
312
382
|
} catch (error) {
|
|
313
383
|
this.logger.error(
|
|
@@ -315,6 +385,19 @@ class PromptManager {
|
|
|
315
385
|
);
|
|
316
386
|
}
|
|
317
387
|
}
|
|
388
|
+
const displayNameCounts = /* @__PURE__ */ new Map();
|
|
389
|
+
for (const { prompt } of collectedPrompts) {
|
|
390
|
+
const displayName = prompt.displayName || prompt.name;
|
|
391
|
+
displayNameCounts.set(displayName, (displayNameCounts.get(displayName) || 0) + 1);
|
|
392
|
+
}
|
|
393
|
+
for (const { prompt } of collectedPrompts) {
|
|
394
|
+
const displayName = prompt.displayName || prompt.name;
|
|
395
|
+
const hasCollision = (displayNameCounts.get(displayName) || 0) > 1;
|
|
396
|
+
prompt.commandName = hasCollision ? `${prompt.source}:${displayName}` : displayName;
|
|
397
|
+
}
|
|
398
|
+
for (const { providerName, prompt } of collectedPrompts) {
|
|
399
|
+
this.insertPrompt(index, aliases, providerName, prompt);
|
|
400
|
+
}
|
|
318
401
|
this.promptIndex = index;
|
|
319
402
|
this.aliasMap = aliases;
|
|
320
403
|
if (index.size > 0) {
|
|
@@ -369,6 +452,9 @@ class PromptManager {
|
|
|
369
452
|
}
|
|
370
453
|
}
|
|
371
454
|
}
|
|
455
|
+
if (entryInfo.commandName && !aliases.has(entryInfo.commandName)) {
|
|
456
|
+
aliases.set(entryInfo.commandName, key);
|
|
457
|
+
}
|
|
372
458
|
}
|
|
373
459
|
async findEntry(name) {
|
|
374
460
|
await this.ensureCache();
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { MCPManager } from '../mcp/manager.js';
|
|
2
|
-
import type { PromptSet, PromptInfo } from './types.js';
|
|
2
|
+
import type { PromptSet, PromptInfo, ResolvedPromptResult } from './types.js';
|
|
3
3
|
import type { GetPromptResult } from '@modelcontextprotocol/sdk/types.js';
|
|
4
4
|
import type { ValidatedAgentConfig } from '../agent/schemas.js';
|
|
5
5
|
import type { PromptsConfig } from './schemas.js';
|
|
@@ -22,6 +22,18 @@ export declare class PromptManager {
|
|
|
22
22
|
list(): Promise<PromptSet>;
|
|
23
23
|
has(name: string): Promise<boolean>;
|
|
24
24
|
getPromptDefinition(name: string): Promise<import('./types.js').PromptDefinition | null>;
|
|
25
|
+
/**
|
|
26
|
+
* List prompts that should appear in the CLI slash command menu.
|
|
27
|
+
* Filters out prompts with `userInvocable: false`.
|
|
28
|
+
* These prompts are intended for user invocation via `/` commands.
|
|
29
|
+
*/
|
|
30
|
+
listUserInvocablePrompts(): Promise<PromptSet>;
|
|
31
|
+
/**
|
|
32
|
+
* List prompts that can be auto-invoked by the LLM.
|
|
33
|
+
* Filters out prompts with `disableModelInvocation: true`.
|
|
34
|
+
* These prompts should appear in the system prompt as available skills.
|
|
35
|
+
*/
|
|
36
|
+
listAutoInvocablePrompts(): Promise<PromptSet>;
|
|
25
37
|
/**
|
|
26
38
|
* Retrieve a prompt from the appropriate provider.
|
|
27
39
|
*
|
|
@@ -48,18 +60,16 @@ export declare class PromptManager {
|
|
|
48
60
|
* - Passing `_context` through to providers so they can decide whether to append it
|
|
49
61
|
* (e.g., file prompts without placeholders will append `Context: ...`)
|
|
50
62
|
* - Prompt execution and flattening
|
|
63
|
+
* - Returning per-prompt overrides (allowedTools, model) for the invoker to apply
|
|
51
64
|
*
|
|
52
65
|
* @param name The prompt name or alias
|
|
53
66
|
* @param options Optional configuration for prompt resolution
|
|
54
|
-
* @returns Promise resolving to the resolved text and
|
|
67
|
+
* @returns Promise resolving to the resolved text, resource URIs, and optional overrides
|
|
55
68
|
*/
|
|
56
69
|
resolvePrompt(name: string, options?: {
|
|
57
70
|
context?: string;
|
|
58
71
|
args?: Record<string, unknown>;
|
|
59
|
-
}): Promise<
|
|
60
|
-
text: string;
|
|
61
|
-
resources: string[];
|
|
62
|
-
}>;
|
|
72
|
+
}): Promise<ResolvedPromptResult>;
|
|
63
73
|
refresh(): Promise<void>;
|
|
64
74
|
/**
|
|
65
75
|
* Updates the config prompts at runtime.
|
|
@@ -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;
|
|
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,oBAAoB,EAAE,MAAM,YAAY,CAAC;AAC9F,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,oCAAoC,CAAC;AAC1E,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAChE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAClD,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;IAYlB,OAAO,CAAC,QAAQ,CAAC,QAAQ;IACzB,OAAO,CAAC,QAAQ,CAAC,QAAQ;IAZ7B,OAAO,CAAC,SAAS,CAA0C;IAC3D,OAAO,CAAC,cAAc,CAAuB;IAC7C,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;IAqB9F;;;;OAIG;IACG,wBAAwB,IAAI,OAAO,CAAC,SAAS,CAAC;IAapD;;;;OAIG;IACG,wBAAwB,IAAI,OAAO,CAAC,SAAS,CAAC;IAapD;;;;;;;;;;;;;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;;;;;;;;;;;;;OAaG;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,oBAAoB,CAAC;IA4C1B,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAU9B;;;OAGG;IACH,mBAAmB,CAAC,OAAO,EAAE,aAAa,GAAG,IAAI;IAOjD;;OAEG;YACW,sBAAsB;IAsDpC;;OAEG;IACH,OAAO,CAAC,sBAAsB;IA+B9B,OAAO,CAAC,kBAAkB;YAqBZ,WAAW;YAgBX,UAAU;IAoDxB,OAAO,CAAC,YAAY;YAmEN,SAAS;CAgB1B"}
|
|
@@ -75,9 +75,50 @@ class PromptManager {
|
|
|
75
75
|
name: info.name,
|
|
76
76
|
...info.title && { title: info.title },
|
|
77
77
|
...info.description && { description: info.description },
|
|
78
|
-
...info.arguments && { arguments: info.arguments }
|
|
78
|
+
...info.arguments && { arguments: info.arguments },
|
|
79
|
+
// Claude Code compatibility fields
|
|
80
|
+
...info.disableModelInvocation !== void 0 && {
|
|
81
|
+
disableModelInvocation: info.disableModelInvocation
|
|
82
|
+
},
|
|
83
|
+
...info.userInvocable !== void 0 && { userInvocable: info.userInvocable },
|
|
84
|
+
...info.allowedTools !== void 0 && { allowedTools: info.allowedTools },
|
|
85
|
+
...info.model !== void 0 && { model: info.model },
|
|
86
|
+
...info.context !== void 0 && { context: info.context },
|
|
87
|
+
...info.agent !== void 0 && { agent: info.agent }
|
|
79
88
|
};
|
|
80
89
|
}
|
|
90
|
+
/**
|
|
91
|
+
* List prompts that should appear in the CLI slash command menu.
|
|
92
|
+
* Filters out prompts with `userInvocable: false`.
|
|
93
|
+
* These prompts are intended for user invocation via `/` commands.
|
|
94
|
+
*/
|
|
95
|
+
async listUserInvocablePrompts() {
|
|
96
|
+
await this.ensureCache();
|
|
97
|
+
const index = this.promptIndex ?? /* @__PURE__ */ new Map();
|
|
98
|
+
const result = {};
|
|
99
|
+
for (const [key, entry] of index.entries()) {
|
|
100
|
+
if (entry.info.userInvocable !== false) {
|
|
101
|
+
result[key] = entry.info;
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
return result;
|
|
105
|
+
}
|
|
106
|
+
/**
|
|
107
|
+
* List prompts that can be auto-invoked by the LLM.
|
|
108
|
+
* Filters out prompts with `disableModelInvocation: true`.
|
|
109
|
+
* These prompts should appear in the system prompt as available skills.
|
|
110
|
+
*/
|
|
111
|
+
async listAutoInvocablePrompts() {
|
|
112
|
+
await this.ensureCache();
|
|
113
|
+
const index = this.promptIndex ?? /* @__PURE__ */ new Map();
|
|
114
|
+
const result = {};
|
|
115
|
+
for (const [key, entry] of index.entries()) {
|
|
116
|
+
if (entry.info.disableModelInvocation !== true) {
|
|
117
|
+
result[key] = entry.info;
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
return result;
|
|
121
|
+
}
|
|
81
122
|
/**
|
|
82
123
|
* Retrieve a prompt from the appropriate provider.
|
|
83
124
|
*
|
|
@@ -164,15 +205,17 @@ class PromptManager {
|
|
|
164
205
|
* - Passing `_context` through to providers so they can decide whether to append it
|
|
165
206
|
* (e.g., file prompts without placeholders will append `Context: ...`)
|
|
166
207
|
* - Prompt execution and flattening
|
|
208
|
+
* - Returning per-prompt overrides (allowedTools, model) for the invoker to apply
|
|
167
209
|
*
|
|
168
210
|
* @param name The prompt name or alias
|
|
169
211
|
* @param options Optional configuration for prompt resolution
|
|
170
|
-
* @returns Promise resolving to the resolved text and
|
|
212
|
+
* @returns Promise resolving to the resolved text, resource URIs, and optional overrides
|
|
171
213
|
*/
|
|
172
214
|
async resolvePrompt(name, options = {}) {
|
|
173
215
|
const args = { ...options.args };
|
|
174
216
|
if (options.context?.trim()) args._context = options.context.trim();
|
|
175
217
|
const resolvedName = await this.resolvePromptKey(name) ?? name;
|
|
218
|
+
const promptDef = await this.getPromptDefinition(resolvedName);
|
|
176
219
|
const normalized = normalizePromptArgs(args);
|
|
177
220
|
const providerArgs = normalized.context ? { ...normalized.args, _context: normalized.context } : normalized.args;
|
|
178
221
|
const promptResult = await this.getPrompt(resolvedName, providerArgs);
|
|
@@ -180,7 +223,15 @@ class PromptManager {
|
|
|
180
223
|
if (!flattened.text && flattened.resourceUris.length === 0) {
|
|
181
224
|
throw PromptError.emptyResolvedContent(resolvedName);
|
|
182
225
|
}
|
|
183
|
-
return {
|
|
226
|
+
return {
|
|
227
|
+
text: flattened.text,
|
|
228
|
+
resources: flattened.resourceUris,
|
|
229
|
+
// Include per-prompt overrides from prompt definition
|
|
230
|
+
...promptDef?.allowedTools && { allowedTools: promptDef.allowedTools },
|
|
231
|
+
...promptDef?.model && { model: promptDef.model },
|
|
232
|
+
...promptDef?.context && { context: promptDef.context },
|
|
233
|
+
...promptDef?.agent && { agent: promptDef.agent }
|
|
234
|
+
};
|
|
184
235
|
}
|
|
185
236
|
async refresh() {
|
|
186
237
|
this.promptIndex = void 0;
|
|
@@ -215,7 +266,25 @@ class PromptManager {
|
|
|
215
266
|
const serverPrompts = prompts.filter(
|
|
216
267
|
(p) => p.metadata && typeof p.metadata === "object" && "serverName" in p.metadata && p.metadata.serverName === serverName
|
|
217
268
|
);
|
|
269
|
+
const displayNameCounts = /* @__PURE__ */ new Map();
|
|
270
|
+
for (const entry of this.promptIndex.values()) {
|
|
271
|
+
const displayName = entry.info.displayName || entry.info.name;
|
|
272
|
+
displayNameCounts.set(
|
|
273
|
+
displayName,
|
|
274
|
+
(displayNameCounts.get(displayName) || 0) + 1
|
|
275
|
+
);
|
|
276
|
+
}
|
|
277
|
+
for (const prompt of serverPrompts) {
|
|
278
|
+
const displayName = prompt.displayName || prompt.name;
|
|
279
|
+
displayNameCounts.set(
|
|
280
|
+
displayName,
|
|
281
|
+
(displayNameCounts.get(displayName) || 0) + 1
|
|
282
|
+
);
|
|
283
|
+
}
|
|
218
284
|
for (const prompt of serverPrompts) {
|
|
285
|
+
const displayName = prompt.displayName || prompt.name;
|
|
286
|
+
const hasCollision = (displayNameCounts.get(displayName) || 0) > 1;
|
|
287
|
+
prompt.commandName = hasCollision ? `${prompt.source}:${displayName}` : displayName;
|
|
219
288
|
this.insertPrompt(this.promptIndex, this.aliasMap, "mcp", prompt);
|
|
220
289
|
}
|
|
221
290
|
} catch (error) {
|
|
@@ -283,11 +352,12 @@ class PromptManager {
|
|
|
283
352
|
async buildCache() {
|
|
284
353
|
const index = /* @__PURE__ */ new Map();
|
|
285
354
|
const aliases = /* @__PURE__ */ new Map();
|
|
355
|
+
const collectedPrompts = [];
|
|
286
356
|
for (const [providerName, provider] of this.providers) {
|
|
287
357
|
try {
|
|
288
358
|
const { prompts } = await provider.listPrompts();
|
|
289
359
|
for (const prompt of prompts) {
|
|
290
|
-
|
|
360
|
+
collectedPrompts.push({ providerName, prompt });
|
|
291
361
|
}
|
|
292
362
|
} catch (error) {
|
|
293
363
|
this.logger.error(
|
|
@@ -295,6 +365,19 @@ class PromptManager {
|
|
|
295
365
|
);
|
|
296
366
|
}
|
|
297
367
|
}
|
|
368
|
+
const displayNameCounts = /* @__PURE__ */ new Map();
|
|
369
|
+
for (const { prompt } of collectedPrompts) {
|
|
370
|
+
const displayName = prompt.displayName || prompt.name;
|
|
371
|
+
displayNameCounts.set(displayName, (displayNameCounts.get(displayName) || 0) + 1);
|
|
372
|
+
}
|
|
373
|
+
for (const { prompt } of collectedPrompts) {
|
|
374
|
+
const displayName = prompt.displayName || prompt.name;
|
|
375
|
+
const hasCollision = (displayNameCounts.get(displayName) || 0) > 1;
|
|
376
|
+
prompt.commandName = hasCollision ? `${prompt.source}:${displayName}` : displayName;
|
|
377
|
+
}
|
|
378
|
+
for (const { providerName, prompt } of collectedPrompts) {
|
|
379
|
+
this.insertPrompt(index, aliases, providerName, prompt);
|
|
380
|
+
}
|
|
298
381
|
this.promptIndex = index;
|
|
299
382
|
this.aliasMap = aliases;
|
|
300
383
|
if (index.size > 0) {
|
|
@@ -349,6 +432,9 @@ class PromptManager {
|
|
|
349
432
|
}
|
|
350
433
|
}
|
|
351
434
|
}
|
|
435
|
+
if (entryInfo.commandName && !aliases.has(entryInfo.commandName)) {
|
|
436
|
+
aliases.set(entryInfo.commandName, key);
|
|
437
|
+
}
|
|
352
438
|
}
|
|
353
439
|
async findEntry(name) {
|
|
354
440
|
await this.ensureCache();
|
|
@@ -29,6 +29,21 @@ var import_name_validation = require("../name-validation.js");
|
|
|
29
29
|
var import_promises = require("fs/promises");
|
|
30
30
|
var import_fs = require("fs");
|
|
31
31
|
var import_path = require("path");
|
|
32
|
+
const CLAUDE_CODE_TOOL_MAP = {
|
|
33
|
+
// Bash/process tools
|
|
34
|
+
bash: "custom--bash_exec",
|
|
35
|
+
// Filesystem tools
|
|
36
|
+
read: "custom--read_file",
|
|
37
|
+
write: "custom--write_file",
|
|
38
|
+
edit: "custom--edit_file",
|
|
39
|
+
glob: "custom--glob_files",
|
|
40
|
+
grep: "custom--grep_content",
|
|
41
|
+
// Internal tools
|
|
42
|
+
task: "internal--delegate_task"
|
|
43
|
+
};
|
|
44
|
+
function normalizeAllowedTools(tools) {
|
|
45
|
+
return tools.map((tool) => CLAUDE_CODE_TOOL_MAP[tool.toLowerCase()] ?? tool);
|
|
46
|
+
}
|
|
32
47
|
class ConfigPromptProvider {
|
|
33
48
|
prompts = [];
|
|
34
49
|
promptsCache = [];
|
|
@@ -106,7 +121,20 @@ class ConfigPromptProvider {
|
|
|
106
121
|
name: promptInfo.name,
|
|
107
122
|
...promptInfo.title && { title: promptInfo.title },
|
|
108
123
|
...promptInfo.description && { description: promptInfo.description },
|
|
109
|
-
...promptInfo.arguments && { arguments: promptInfo.arguments }
|
|
124
|
+
...promptInfo.arguments && { arguments: promptInfo.arguments },
|
|
125
|
+
// Claude Code compatibility fields
|
|
126
|
+
...promptInfo.disableModelInvocation !== void 0 && {
|
|
127
|
+
disableModelInvocation: promptInfo.disableModelInvocation
|
|
128
|
+
},
|
|
129
|
+
...promptInfo.userInvocable !== void 0 && {
|
|
130
|
+
userInvocable: promptInfo.userInvocable
|
|
131
|
+
},
|
|
132
|
+
...promptInfo.allowedTools !== void 0 && {
|
|
133
|
+
allowedTools: promptInfo.allowedTools
|
|
134
|
+
},
|
|
135
|
+
...promptInfo.model !== void 0 && { model: promptInfo.model },
|
|
136
|
+
...promptInfo.context !== void 0 && { context: promptInfo.context },
|
|
137
|
+
...promptInfo.agent !== void 0 && { agent: promptInfo.agent }
|
|
110
138
|
};
|
|
111
139
|
}
|
|
112
140
|
async buildPromptsCache() {
|
|
@@ -149,6 +177,13 @@ class ConfigPromptProvider {
|
|
|
149
177
|
title: prompt.title,
|
|
150
178
|
description: prompt.description,
|
|
151
179
|
source: "config",
|
|
180
|
+
// Claude Code compatibility fields
|
|
181
|
+
disableModelInvocation: prompt["disable-model-invocation"],
|
|
182
|
+
userInvocable: prompt["user-invocable"],
|
|
183
|
+
allowedTools: prompt["allowed-tools"] ? normalizeAllowedTools(prompt["allowed-tools"]) : void 0,
|
|
184
|
+
model: prompt.model,
|
|
185
|
+
context: prompt.context,
|
|
186
|
+
agent: prompt.agent,
|
|
152
187
|
metadata: {
|
|
153
188
|
type: "inline",
|
|
154
189
|
category: prompt.category,
|
|
@@ -195,20 +230,37 @@ class ConfigPromptProvider {
|
|
|
195
230
|
);
|
|
196
231
|
return null;
|
|
197
232
|
}
|
|
233
|
+
const disableModelInvocation = prompt["disable-model-invocation"] ?? parsed.disableModelInvocation;
|
|
234
|
+
const userInvocable = prompt["user-invocable"] ?? parsed.userInvocable;
|
|
235
|
+
const rawAllowedTools = prompt["allowed-tools"] ?? parsed.allowedTools;
|
|
236
|
+
const allowedTools = rawAllowedTools ? normalizeAllowedTools(rawAllowedTools) : void 0;
|
|
237
|
+
const model = prompt.model ?? parsed.model;
|
|
238
|
+
const context = prompt.context ?? parsed.context;
|
|
239
|
+
const agent = prompt.agent ?? parsed.agent;
|
|
240
|
+
const displayName = parsed.id;
|
|
241
|
+
const promptName = prompt.namespace ? `config:${prompt.namespace}:${parsed.id}` : `config:${parsed.id}`;
|
|
198
242
|
const promptInfo = {
|
|
199
|
-
name:
|
|
200
|
-
displayName
|
|
243
|
+
name: promptName,
|
|
244
|
+
displayName,
|
|
201
245
|
title: parsed.title,
|
|
202
246
|
description: parsed.description,
|
|
203
247
|
source: "config",
|
|
204
248
|
...parsed.arguments && { arguments: parsed.arguments },
|
|
249
|
+
// Claude Code compatibility fields
|
|
250
|
+
...disableModelInvocation !== void 0 && { disableModelInvocation },
|
|
251
|
+
...userInvocable !== void 0 && { userInvocable },
|
|
252
|
+
...allowedTools !== void 0 && { allowedTools },
|
|
253
|
+
...model !== void 0 && { model },
|
|
254
|
+
...context !== void 0 && { context },
|
|
255
|
+
...agent !== void 0 && { agent },
|
|
205
256
|
metadata: {
|
|
206
257
|
type: "file",
|
|
207
258
|
filePath,
|
|
208
259
|
category: parsed.category,
|
|
209
260
|
priority: parsed.priority,
|
|
210
261
|
showInStarters: prompt.showInStarters,
|
|
211
|
-
originalId: parsed.id
|
|
262
|
+
originalId: parsed.id,
|
|
263
|
+
...prompt.namespace && { namespace: prompt.namespace }
|
|
212
264
|
}
|
|
213
265
|
};
|
|
214
266
|
return { info: promptInfo, content: parsed.content };
|
|
@@ -221,13 +273,21 @@ class ConfigPromptProvider {
|
|
|
221
273
|
}
|
|
222
274
|
parseMarkdownPrompt(rawContent, filePath) {
|
|
223
275
|
const lines = rawContent.trim().split("\n");
|
|
224
|
-
const fileName =
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
let
|
|
276
|
+
const fileName = (0, import_path.basename)(filePath, ".md") || "unknown";
|
|
277
|
+
const parentDir = (0, import_path.basename)((0, import_path.dirname)(filePath)) || "unknown";
|
|
278
|
+
const defaultId = fileName.toUpperCase() === "SKILL" ? parentDir : fileName;
|
|
279
|
+
let id = defaultId;
|
|
280
|
+
let title = defaultId;
|
|
281
|
+
let description = `File prompt: ${defaultId}`;
|
|
228
282
|
let category;
|
|
229
283
|
let priority;
|
|
230
284
|
let argumentHint;
|
|
285
|
+
let disableModelInvocation;
|
|
286
|
+
let userInvocable;
|
|
287
|
+
let allowedTools;
|
|
288
|
+
let model;
|
|
289
|
+
let context;
|
|
290
|
+
let agent;
|
|
231
291
|
let contentBody;
|
|
232
292
|
if (lines[0]?.trim() === "---") {
|
|
233
293
|
let frontmatterEnd = 0;
|
|
@@ -246,9 +306,18 @@ class ConfigPromptProvider {
|
|
|
246
306
|
const m = line.match(regex);
|
|
247
307
|
return m ? (m[1] || m[2] || "").trim() : null;
|
|
248
308
|
};
|
|
309
|
+
const matchBool = (key) => {
|
|
310
|
+
const val = match(key);
|
|
311
|
+
if (val === "true") return true;
|
|
312
|
+
if (val === "false") return false;
|
|
313
|
+
return void 0;
|
|
314
|
+
};
|
|
249
315
|
if (line.includes("id:")) {
|
|
250
316
|
const val = match("id");
|
|
251
317
|
if (val) id = val;
|
|
318
|
+
} else if (line.includes("name:") && !line.includes("display-name:")) {
|
|
319
|
+
const val = match("name");
|
|
320
|
+
if (val && id === defaultId) id = val;
|
|
252
321
|
} else if (line.includes("title:")) {
|
|
253
322
|
const val = match("title");
|
|
254
323
|
if (val) title = val;
|
|
@@ -264,15 +333,34 @@ class ConfigPromptProvider {
|
|
|
264
333
|
} else if (line.includes("argument-hint:")) {
|
|
265
334
|
const val = match("argument-hint");
|
|
266
335
|
if (val) argumentHint = val;
|
|
336
|
+
} else if (line.includes("disable-model-invocation:")) {
|
|
337
|
+
disableModelInvocation = matchBool("disable-model-invocation");
|
|
338
|
+
} else if (line.includes("user-invocable:")) {
|
|
339
|
+
userInvocable = matchBool("user-invocable");
|
|
340
|
+
} else if (line.includes("model:")) {
|
|
341
|
+
const val = match("model");
|
|
342
|
+
if (val) model = val;
|
|
343
|
+
} else if (line.includes("context:")) {
|
|
344
|
+
const val = match("context");
|
|
345
|
+
if (val === "fork" || val === "inline") context = val;
|
|
346
|
+
} else if (line.includes("agent:")) {
|
|
347
|
+
const val = match("agent");
|
|
348
|
+
if (val) agent = val;
|
|
267
349
|
}
|
|
268
350
|
}
|
|
351
|
+
const frontmatterText = frontmatterLines.join("\n");
|
|
352
|
+
const allowedToolsMatch = frontmatterText.match(/allowed-tools:\s*\[([^\]]*)\]/);
|
|
353
|
+
if (allowedToolsMatch) {
|
|
354
|
+
const rawContent2 = allowedToolsMatch[1]?.trim() ?? "";
|
|
355
|
+
allowedTools = rawContent2.length === 0 ? [] : rawContent2.split(",").map((s) => s.trim().replace(/^['"]|['"]$/g, "")).filter((s) => s.length > 0);
|
|
356
|
+
}
|
|
269
357
|
} else {
|
|
270
358
|
contentBody = rawContent;
|
|
271
359
|
}
|
|
272
360
|
} else {
|
|
273
361
|
contentBody = rawContent;
|
|
274
362
|
}
|
|
275
|
-
if (title ===
|
|
363
|
+
if (title === defaultId) {
|
|
276
364
|
for (const line of contentBody.trim().split("\n")) {
|
|
277
365
|
if (line.trim().startsWith("#")) {
|
|
278
366
|
title = line.trim().replace(/^#+\s*/, "");
|
|
@@ -288,7 +376,13 @@ class ConfigPromptProvider {
|
|
|
288
376
|
content: contentBody.trim(),
|
|
289
377
|
...category !== void 0 && { category },
|
|
290
378
|
...priority !== void 0 && { priority },
|
|
291
|
-
...parsedArguments !== void 0 && { arguments: parsedArguments }
|
|
379
|
+
...parsedArguments !== void 0 && { arguments: parsedArguments },
|
|
380
|
+
...disableModelInvocation !== void 0 && { disableModelInvocation },
|
|
381
|
+
...userInvocable !== void 0 && { userInvocable },
|
|
382
|
+
...allowedTools !== void 0 && { allowedTools },
|
|
383
|
+
...model !== void 0 && { model },
|
|
384
|
+
...context !== void 0 && { context },
|
|
385
|
+
...agent !== void 0 && { agent }
|
|
292
386
|
};
|
|
293
387
|
}
|
|
294
388
|
parseArgumentHint(hint) {
|
|
@@ -1 +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;AACnE,OAAO,KAAK,EAA4B,aAAa,EAAE,MAAM,eAAe,CAAC;AAE7E,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;
|
|
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;AACnE,OAAO,KAAK,EAA4B,aAAa,EAAE,MAAM,eAAe,CAAC;AAE7E,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AA4C7D;;;;;;;;GAQG;AACH,qBAAa,oBAAqB,YAAW,cAAc;IACvD,OAAO,CAAC,OAAO,CAAqB;IACpC,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,aAAa,CAAC,OAAO,EAAE,aAAa,GAAG,IAAI;IAYrC,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;YA+B3D,iBAAiB;IAsC/B,OAAO,CAAC,mBAAmB;YAgCb,iBAAiB;IAkG/B,OAAO,CAAC,mBAAmB;IAmK3B,OAAO,CAAC,iBAAiB;IAyBzB,OAAO,CAAC,cAAc;CA+BzB"}
|