mirror of
https://github.com/windmill-labs/windmill.git
synced 2026-10-13 00:03:00 +00:00
* feat: lint AI agent tool names and flow groups in wmill lint * refactor: assemble chat and CLI AI guidance from one topic table * feat: share flow groups, reuse and pipeline guidance with the CLI skills * feat: share raw app, data table and secret guidance between chat and CLI * docs: document the shared AI guidance source for contributors * fix: keep wmill lint running on flows with malformed collections * fix: reject skill descriptions that are not plain YAML text * fix: tighten fence typos, script base scope and app prompt order * fix: skip tool name checks on agent steps linked to a saved agent * fix: catch any misspelled prompt fence and soften the tool name claim * fix: align cli eval harness with the files and steps wmill init adds * fix: drop cli eval checks that expect unrequested deploy commands * fix: list ansible as mainless and c# Main in script base guidance
120 lines
3.5 KiB
TypeScript
120 lines
3.5 KiB
TypeScript
// Auto-generated by generate.py - DO NOT EDIT
|
|
// Re-export all prompts
|
|
export * from './prompts';
|
|
|
|
import * as prompts from './prompts';
|
|
|
|
// Languages that use the TypeScript SDK
|
|
const TS_SDK_LANGUAGES = ['bun', 'deno', 'nativets', 'bunnative'];
|
|
|
|
// Languages that use the Python SDK
|
|
const PY_SDK_LANGUAGES = ['python3'];
|
|
|
|
// Languages that use the TypeScript Workflow-as-Code SDK
|
|
const WAC_TS_SDK_LANGUAGES = ['bun'];
|
|
|
|
// Languages that use the Python Workflow-as-Code SDK
|
|
const WAC_PY_SDK_LANGUAGES = PY_SDK_LANGUAGES;
|
|
|
|
// Helper to combine prompts for scripts
|
|
export function getScriptPrompt(language: string): string {
|
|
const langKey = `LANG_${language.toUpperCase()}` as keyof typeof prompts;
|
|
const langPrompt = (prompts as Record<string, string>)[langKey] || '';
|
|
|
|
// Determine which SDK to include based on language
|
|
let sdkPrompt = '';
|
|
if (TS_SDK_LANGUAGES.includes(language)) {
|
|
sdkPrompt = prompts.SDK_TYPESCRIPT;
|
|
} else if (PY_SDK_LANGUAGES.includes(language)) {
|
|
sdkPrompt = prompts.SDK_PYTHON;
|
|
}
|
|
|
|
return [
|
|
prompts.SCRIPT_BASE,
|
|
langPrompt,
|
|
sdkPrompt
|
|
].filter(Boolean).join('\n\n');
|
|
}
|
|
|
|
// Helper to combine prompts for flows
|
|
export function getFlowPrompt(): string {
|
|
return [
|
|
prompts.FLOW_BASE,
|
|
prompts.OPENFLOW_SCHEMA
|
|
].filter(Boolean).join('\n\n');
|
|
}
|
|
|
|
// Helper for resource & variable authoring
|
|
export function getResourcePrompt(): string {
|
|
return [
|
|
prompts.RESOURCES_BASE
|
|
].filter(Boolean).join('\n\n');
|
|
}
|
|
|
|
// Helper for raw app authoring (chat consumers). Inline backend runnables are
|
|
// ordinary Windmill jobs, so the reference has to carry the SDK the runnable
|
|
// calls — without it an agent invents client functions and hand-rolls HTTP.
|
|
// Only one SDK is returned: both would double an already large tool result.
|
|
export function getRawAppPrompt(language?: string): string {
|
|
const sdkPrompt = PY_SDK_LANGUAGES.includes(language ?? '')
|
|
? prompts.SDK_PYTHON
|
|
: prompts.SDK_TYPESCRIPT;
|
|
|
|
return [
|
|
prompts.RAW_APP_BASE,
|
|
sdkPrompt
|
|
].filter(Boolean).join('\n\n');
|
|
}
|
|
|
|
// Helper for data pipeline authoring (chat consumers)
|
|
export function getPipelinePrompt(): string {
|
|
return [
|
|
prompts.PIPELINE_BASE
|
|
].filter(Boolean).join('\n\n');
|
|
}
|
|
|
|
// Helper to get the datatable SQL SDK reference (wmill.datatable()).
|
|
// Pass a language to get only that SDK; omit it to get both.
|
|
export function getDatatableSdkReference(language?: string): string {
|
|
if (language == null) {
|
|
return [
|
|
prompts.DATATABLE_SDK_TYPESCRIPT,
|
|
prompts.DATATABLE_SDK_PYTHON
|
|
].filter(Boolean).join('\n\n');
|
|
}
|
|
if (TS_SDK_LANGUAGES.includes(language)) {
|
|
return prompts.DATATABLE_SDK_TYPESCRIPT;
|
|
}
|
|
if (PY_SDK_LANGUAGES.includes(language)) {
|
|
return prompts.DATATABLE_SDK_PYTHON;
|
|
}
|
|
// Unknown language: return both rather than nothing.
|
|
return [
|
|
prompts.DATATABLE_SDK_TYPESCRIPT,
|
|
prompts.DATATABLE_SDK_PYTHON
|
|
].filter(Boolean).join('\n\n');
|
|
}
|
|
|
|
// Helper to combine prompts for Workflow-as-Code scripts
|
|
export function getWorkflowAsCodePrompt(language?: string): string {
|
|
let sdkPrompt = '';
|
|
|
|
if (language == null) {
|
|
sdkPrompt = [
|
|
prompts.WAC_SDK_TYPESCRIPT,
|
|
prompts.WAC_SDK_PYTHON
|
|
].filter(Boolean).join('\n\n');
|
|
} else if (WAC_TS_SDK_LANGUAGES.includes(language)) {
|
|
sdkPrompt = prompts.WAC_SDK_TYPESCRIPT;
|
|
} else if (WAC_PY_SDK_LANGUAGES.includes(language)) {
|
|
sdkPrompt = prompts.WAC_SDK_PYTHON;
|
|
} else {
|
|
return '';
|
|
}
|
|
|
|
return [
|
|
prompts.WORKFLOW_AS_CODE_BASE,
|
|
sdkPrompt
|
|
].filter(Boolean).join('\n\n');
|
|
}
|