@duckcodeailabs/dql-cli 1.6.11 → 1.6.12

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 (33) hide show
  1. package/dist/assets/dql-notebook/assets/index-McpLeeN0.js +3802 -0
  2. package/dist/assets/dql-notebook/index.html +1 -1
  3. package/dist/llm/analytics-tools.d.ts +7 -0
  4. package/dist/llm/analytics-tools.d.ts.map +1 -0
  5. package/dist/llm/analytics-tools.js +178 -0
  6. package/dist/llm/analytics-tools.js.map +1 -0
  7. package/dist/llm/index.d.ts.map +1 -1
  8. package/dist/llm/index.js +3 -1
  9. package/dist/llm/index.js.map +1 -1
  10. package/dist/llm/mcp-config.d.ts +43 -0
  11. package/dist/llm/mcp-config.d.ts.map +1 -0
  12. package/dist/llm/mcp-config.js +327 -0
  13. package/dist/llm/mcp-config.js.map +1 -0
  14. package/dist/llm/providers/dql-agent-provider.d.ts +1 -1
  15. package/dist/llm/providers/dql-agent-provider.d.ts.map +1 -1
  16. package/dist/llm/providers/dql-agent-provider.js +9 -1
  17. package/dist/llm/providers/dql-agent-provider.js.map +1 -1
  18. package/dist/llm/providers/native-sdk-provider.d.ts +4 -0
  19. package/dist/llm/providers/native-sdk-provider.d.ts.map +1 -0
  20. package/dist/llm/providers/native-sdk-provider.js +319 -0
  21. package/dist/llm/providers/native-sdk-provider.js.map +1 -0
  22. package/dist/llm/types.d.ts +1 -1
  23. package/dist/llm/types.d.ts.map +1 -1
  24. package/dist/local-runtime.d.ts +2 -0
  25. package/dist/local-runtime.d.ts.map +1 -1
  26. package/dist/local-runtime.js +132 -19
  27. package/dist/local-runtime.js.map +1 -1
  28. package/dist/package.json +13 -11
  29. package/dist/settings/provider-settings.d.ts +2 -0
  30. package/dist/settings/provider-settings.d.ts.map +1 -1
  31. package/dist/settings/provider-settings.js +49 -10
  32. package/dist/settings/provider-settings.js.map +1 -1
  33. package/package.json +14 -12
@@ -7,7 +7,7 @@
7
7
  <link rel="preconnect" href="https://fonts.googleapis.com" />
8
8
  <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin />
9
9
  <link href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700;800&family=JetBrains+Mono:wght@400;500;600;700&family=Kalam:wght@400;700&family=Caveat:wght@400;600;700&display=swap" rel="stylesheet" />
10
- <script type="module" crossorigin src="/assets/index-CEMXuPm0.js"></script>
10
+ <script type="module" crossorigin src="/assets/index-McpLeeN0.js"></script>
11
11
  <link rel="modulepreload" crossorigin href="/assets/react-CRB3T2We.js">
12
12
  <link rel="modulepreload" crossorigin href="/assets/codemirror-DJYUkPr1.js">
13
13
  <link rel="stylesheet" crossorigin href="/assets/index-RaDW1A5g.css">
@@ -0,0 +1,7 @@
1
+ import { DQLContext } from '@duckcodeailabs/dql-mcp';
2
+ import type { AgentRunRequest, AgentTurn } from './types.js';
3
+ import { type AgentTool } from './tools.js';
4
+ export declare function buildAnalyticsAgentTools(ctx: DQLContext, req: AgentRunRequest): AgentTool[];
5
+ export declare function analyticsSystemPrompt(ctx: DQLContext, req: AgentRunRequest): string;
6
+ export declare function emitProposalFromSuggestBlock(input: unknown, output: unknown, emit: (turn: AgentTurn) => void): void;
7
+ //# sourceMappingURL=analytics-tools.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"analytics-tools.d.ts","sourceRoot":"","sources":["../../src/llm/analytics-tools.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAErD,OAAO,KAAK,EAAE,eAAe,EAAE,SAAS,EAAiB,MAAM,YAAY,CAAC;AAC5E,OAAO,EAAmB,KAAK,SAAS,EAAE,MAAM,YAAY,CAAC;AAiC7D,wBAAgB,wBAAwB,CAAC,GAAG,EAAE,UAAU,EAAE,GAAG,EAAE,eAAe,GAAG,SAAS,EAAE,CA+E3F;AAED,wBAAgB,qBAAqB,CAAC,GAAG,EAAE,UAAU,EAAE,GAAG,EAAE,eAAe,GAAG,MAAM,CA0BnF;AAED,wBAAgB,4BAA4B,CAAC,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,IAAI,EAAE,SAAS,KAAK,IAAI,GAAG,IAAI,CAwBnH"}
@@ -0,0 +1,178 @@
1
+ import { buildAgentTools } from './tools.js';
2
+ const QUERY_CERTIFIED_BLOCK_SCHEMA = {
3
+ type: 'object',
4
+ additionalProperties: false,
5
+ required: ['name'],
6
+ properties: {
7
+ name: { type: 'string', description: 'Certified DQL block name to execute.' },
8
+ limit: { type: 'number', description: 'Maximum rows to return in the tool result. Default 200.' },
9
+ },
10
+ };
11
+ const INSPECT_RUNTIME_SCHEMA_SCHEMA = {
12
+ type: 'object',
13
+ additionalProperties: false,
14
+ required: ['question'],
15
+ properties: {
16
+ question: { type: 'string', description: 'The user question or analytical task to inspect schema for.' },
17
+ },
18
+ };
19
+ const EXECUTE_GENERATED_SQL_SCHEMA = {
20
+ type: 'object',
21
+ additionalProperties: false,
22
+ required: ['sql'],
23
+ properties: {
24
+ sql: {
25
+ type: 'string',
26
+ description: 'Read-only SQL to execute as a bounded, uncertified preview. DQL will add safety limits.',
27
+ },
28
+ },
29
+ };
30
+ export function buildAnalyticsAgentTools(ctx, req) {
31
+ return [
32
+ ...buildAgentTools(ctx),
33
+ {
34
+ name: 'query_certified_block',
35
+ description: 'Execute a certified DQL block by name through the local governed runtime. ' +
36
+ 'Use this when a certified block exactly answers the question.',
37
+ inputSchema: QUERY_CERTIFIED_BLOCK_SCHEMA,
38
+ run: async (args) => {
39
+ if (!req.executeCertifiedBlock) {
40
+ return { error: 'Certified block execution is not available in this host.' };
41
+ }
42
+ const input = objectArgs(args);
43
+ const name = requiredString(input.name, 'name');
44
+ const result = await req.executeCertifiedBlock(blockNodeFor(name));
45
+ const limit = typeof input.limit === 'number' && Number.isFinite(input.limit)
46
+ ? Math.max(1, Math.min(10000, Math.floor(input.limit)))
47
+ : 200;
48
+ return {
49
+ trust: 'certified',
50
+ block: name,
51
+ rowCount: result.rowCount,
52
+ executionTime: result.executionTime,
53
+ columns: result.columns,
54
+ rows: Array.isArray(result.rows) ? result.rows.slice(0, limit) : [],
55
+ sql: result.sql,
56
+ chartConfig: result.chartConfig,
57
+ blockPath: result.blockPath,
58
+ };
59
+ },
60
+ },
61
+ {
62
+ name: 'inspect_runtime_schema',
63
+ description: 'Inspect runtime table and column context for an arbitrary analytics question. ' +
64
+ 'Use this before writing new SQL when no certified block directly answers the question.',
65
+ inputSchema: INSPECT_RUNTIME_SCHEMA_SCHEMA,
66
+ run: async (args) => {
67
+ if (!req.getSchemaContext) {
68
+ return { error: 'Runtime schema inspection is not available in this host.' };
69
+ }
70
+ const input = objectArgs(args);
71
+ const question = requiredString(input.question, 'question');
72
+ const tables = await req.getSchemaContext(question);
73
+ return {
74
+ question,
75
+ tables: tables.slice(0, 24),
76
+ tableCount: tables.length,
77
+ };
78
+ },
79
+ },
80
+ {
81
+ name: 'execute_generated_sql',
82
+ description: 'Execute generated SQL as a bounded, uncertified preview. ' +
83
+ 'Use only after inspecting DQL/DBT/semantic context and only for read-only SELECT/WITH analysis.',
84
+ inputSchema: EXECUTE_GENERATED_SQL_SCHEMA,
85
+ run: async (args) => {
86
+ if (!req.executeGeneratedSql) {
87
+ return { error: 'Generated SQL preview execution is not available in this host.' };
88
+ }
89
+ const input = objectArgs(args);
90
+ const sql = requiredString(input.sql, 'sql');
91
+ const result = await req.executeGeneratedSql(sql);
92
+ return {
93
+ trust: 'uncertified',
94
+ reviewStatus: 'draft_ready',
95
+ warning: 'Generated SQL results are a preview and require analyst review before certification.',
96
+ rowCount: result.rowCount,
97
+ executionTime: result.executionTime,
98
+ columns: result.columns,
99
+ rows: Array.isArray(result.rows) ? result.rows.slice(0, 200) : [],
100
+ sql: result.sql ?? sql,
101
+ chartConfig: result.chartConfig,
102
+ };
103
+ },
104
+ },
105
+ ];
106
+ }
107
+ export function analyticsSystemPrompt(ctx, req) {
108
+ const domains = Array.from(new Set(Object.values(ctx.manifest.blocks).map((block) => block.domain).filter(Boolean))).sort();
109
+ const upstream = req.upstream?.sql?.trim();
110
+ const context = req.conversationContext;
111
+ const lines = [
112
+ 'You are the DQL agentic analytics runtime.',
113
+ 'Answer business questions by using tools, not by guessing from memory.',
114
+ '',
115
+ 'Tool order and trust policy:',
116
+ '1. Search DQL knowledge graph, certified blocks, business views, semantic objects, DQL manifest, and dbt/source metadata first.',
117
+ '2. If a certified block exactly answers the question, run query_certified_block and label the result certified.',
118
+ '3. If the question needs a different grain, entity list, ranking, drilldown, or filter, inspect_runtime_schema before writing SQL.',
119
+ '4. Use execute_generated_sql only for read-only SELECT/WITH SQL previews. Label those results uncertified and review-required.',
120
+ '5. Use external MCP servers only as optional extra context; never let them bypass DQL validation, execution safety, or certification.',
121
+ '6. When producing a reusable asset, call suggest_block or describe the draft block path and review status.',
122
+ '',
123
+ 'Final answers must include: answer, table/result summary when available, SQL when generated, trust status, and next review/certification action.',
124
+ `Project context: ${Object.keys(ctx.manifest.blocks).length} blocks. Domains: ${domains.join(', ') || '(none yet)'}.`,
125
+ upstream ? `Current UI/app context:\n${upstream}` : '',
126
+ context?.sourceCertifiedBlock ? `Selected/source certified block: ${context.sourceCertifiedBlock}` : '',
127
+ context?.sourceQuestion ? `Prior question: ${context.sourceQuestion}` : '',
128
+ context?.sourceAnswerSummary ? `Prior answer summary: ${context.sourceAnswerSummary}` : '',
129
+ context?.requestedFilters?.length ? `Remembered filters: ${context.requestedFilters.join(', ')}` : '',
130
+ context?.requestedDimensions?.length ? `Remembered dimensions: ${context.requestedDimensions.join(', ')}` : '',
131
+ ];
132
+ return lines.filter(Boolean).join('\n');
133
+ }
134
+ export function emitProposalFromSuggestBlock(input, output, emit) {
135
+ if (!input || typeof input !== 'object')
136
+ return;
137
+ const proposalInput = input;
138
+ if (!proposalInput.name || !proposalInput.sql)
139
+ return;
140
+ const outputRecord = output && typeof output === 'object'
141
+ ? output
142
+ : {};
143
+ emit({
144
+ kind: 'proposal',
145
+ proposal: {
146
+ name: String(proposalInput.name),
147
+ domain: String(proposalInput.domain ?? ''),
148
+ owner: String(proposalInput.owner ?? ''),
149
+ description: String(proposalInput.description ?? ''),
150
+ sql: String(proposalInput.sql),
151
+ tags: Array.isArray(proposalInput.tags) ? proposalInput.tags.map(String) : undefined,
152
+ chartType: typeof proposalInput.chartType === 'string' ? proposalInput.chartType : undefined,
153
+ },
154
+ governance: {
155
+ certified: Boolean(outputRecord.certified),
156
+ errors: Array.isArray(outputRecord.errors) ? outputRecord.errors.map(String) : [],
157
+ warnings: Array.isArray(outputRecord.warnings) ? outputRecord.warnings.map(String) : [],
158
+ },
159
+ });
160
+ }
161
+ function blockNodeFor(name) {
162
+ return {
163
+ nodeId: `block:${name}`,
164
+ kind: 'block',
165
+ name,
166
+ sourceTier: 'certified_artifact',
167
+ certification: 'certified',
168
+ };
169
+ }
170
+ function objectArgs(args) {
171
+ return args && typeof args === 'object' && !Array.isArray(args) ? args : {};
172
+ }
173
+ function requiredString(value, field) {
174
+ if (typeof value !== 'string' || !value.trim())
175
+ throw new Error(`${field} is required`);
176
+ return value.trim();
177
+ }
178
+ //# sourceMappingURL=analytics-tools.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"analytics-tools.js","sourceRoot":"","sources":["../../src/llm/analytics-tools.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/llm/index.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAE1D,OAAO,EACL,KAAK,eAAe,EACpB,KAAK,WAAW,EAChB,KAAK,SAAS,EACd,KAAK,aAAa,EAClB,KAAK,QAAQ,EACb,KAAK,WAAW,EAChB,KAAK,UAAU,GAChB,MAAM,YAAY,CAAC;AAgBpB,wBAAgB,SAAS,CAAC,QAAQ,EAAE,UAAU,GAAG,WAAW,GAAG,IAAI,CAElE"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/llm/index.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAE1D,OAAO,EACL,KAAK,eAAe,EACpB,KAAK,WAAW,EAChB,KAAK,SAAS,EACd,KAAK,aAAa,EAClB,KAAK,QAAQ,EACb,KAAK,WAAW,EAChB,KAAK,UAAU,GAChB,MAAM,YAAY,CAAC;AAiBpB,wBAAgB,SAAS,CAAC,QAAQ,EAAE,UAAU,GAAG,WAAW,GAAG,IAAI,CAElE"}
package/dist/llm/index.js CHANGED
@@ -1,15 +1,17 @@
1
1
  import { claudeAgentSdkRunner } from './providers/claude-agent-sdk.js';
2
2
  import { claudeCodeRunner } from './providers/claude-code.js';
3
3
  import { createDqlAgentProviderRunner } from './providers/dql-agent-provider.js';
4
+ import { anthropicSdkRunner, openAiSdkRunner } from './providers/native-sdk-provider.js';
4
5
  /**
5
6
  * Registry of available LLM providers. Notebook and App chat default to the
6
7
  * Settings-resolved DQL agent providers. Claude Agent SDK / Claude Code remain
7
8
  * explicit experimental runners for MCP-oriented workflows.
8
9
  */
9
10
  const RUNNERS = {
11
+ anthropic: anthropicSdkRunner,
10
12
  'claude-agent-sdk': claudeAgentSdkRunner,
11
13
  'claude-code': claudeCodeRunner,
12
- openai: createDqlAgentProviderRunner('openai'),
14
+ openai: openAiSdkRunner,
13
15
  gemini: createDqlAgentProviderRunner('gemini'),
14
16
  ollama: createDqlAgentProviderRunner('ollama'),
15
17
  'custom-openai': createDqlAgentProviderRunner('custom-openai'),
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/llm/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,iCAAiC,CAAC;AACvE,OAAO,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AAC9D,OAAO,EAAE,4BAA4B,EAAE,MAAM,mCAAmC,CAAC;AAajF;;;;GAIG;AACH,MAAM,OAAO,GAAoC;IAC/C,kBAAkB,EAAE,oBAAoB;IACxC,aAAa,EAAE,gBAAgB;IAC/B,MAAM,EAAE,4BAA4B,CAAC,QAAQ,CAAC;IAC9C,MAAM,EAAE,4BAA4B,CAAC,QAAQ,CAAC;IAC9C,MAAM,EAAE,4BAA4B,CAAC,QAAQ,CAAC;IAC9C,eAAe,EAAE,4BAA4B,CAAC,eAAe,CAAC;CAC/D,CAAC;AAEF,MAAM,UAAU,SAAS,CAAC,QAAoB;IAC5C,OAAO,OAAO,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC;AACnC,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/llm/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,iCAAiC,CAAC;AACvE,OAAO,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AAC9D,OAAO,EAAE,4BAA4B,EAAE,MAAM,mCAAmC,CAAC;AACjF,OAAO,EAAE,kBAAkB,EAAE,eAAe,EAAE,MAAM,oCAAoC,CAAC;AAazF;;;;GAIG;AACH,MAAM,OAAO,GAAoC;IAC/C,SAAS,EAAE,kBAAkB;IAC7B,kBAAkB,EAAE,oBAAoB;IACxC,aAAa,EAAE,gBAAgB;IAC/B,MAAM,EAAE,eAAe;IACvB,MAAM,EAAE,4BAA4B,CAAC,QAAQ,CAAC;IAC9C,MAAM,EAAE,4BAA4B,CAAC,QAAQ,CAAC;IAC9C,eAAe,EAAE,4BAA4B,CAAC,eAAe,CAAC;CAC/D,CAAC;AAEF,MAAM,UAAU,SAAS,CAAC,QAAoB;IAC5C,OAAO,OAAO,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC;AACnC,CAAC"}
@@ -0,0 +1,43 @@
1
+ export type NativeMcpProvider = 'openai' | 'anthropic';
2
+ export interface RemoteMcpServer {
3
+ kind?: 'server' | 'connector';
4
+ name: string;
5
+ url?: string;
6
+ connectorId?: string;
7
+ description?: string;
8
+ authorizationToken?: string;
9
+ authorizationTokenEnv?: string;
10
+ allowedTools?: string[];
11
+ enabled: boolean;
12
+ trusted: boolean;
13
+ deferLoading?: boolean;
14
+ providers?: NativeMcpProvider[];
15
+ }
16
+ export interface RemoteMcpLoadResult {
17
+ path: string;
18
+ servers: RemoteMcpServer[];
19
+ warnings: string[];
20
+ }
21
+ export interface RedactedRemoteMcpEntry extends Omit<RemoteMcpServer, 'authorizationToken'> {
22
+ kind: 'server' | 'connector';
23
+ hasAuthorizationToken: boolean;
24
+ authorizationTokenPreview?: string;
25
+ }
26
+ export interface RemoteMcpSettings {
27
+ path: string;
28
+ entries: RedactedRemoteMcpEntry[];
29
+ warnings: string[];
30
+ }
31
+ export interface RemoteMcpSettingsInput {
32
+ entries?: unknown;
33
+ }
34
+ export declare function remoteMcpConfigPath(projectRoot: string): string;
35
+ export declare function loadRemoteMcpServers(projectRoot: string, provider: NativeMcpProvider): RemoteMcpLoadResult;
36
+ export declare function listRemoteMcpSettings(projectRoot: string): RemoteMcpSettings;
37
+ export declare function saveRemoteMcpSettings(projectRoot: string, input: RemoteMcpSettingsInput): RemoteMcpSettings;
38
+ export declare function openAiMcpTools(servers: RemoteMcpServer[]): Record<string, unknown>[];
39
+ export declare function anthropicMcpConfig(servers: RemoteMcpServer[]): {
40
+ mcpServers: Record<string, unknown>[];
41
+ toolsets: Record<string, unknown>[];
42
+ };
43
+ //# sourceMappingURL=mcp-config.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mcp-config.d.ts","sourceRoot":"","sources":["../../src/llm/mcp-config.ts"],"names":[],"mappings":"AAGA,MAAM,MAAM,iBAAiB,GAAG,QAAQ,GAAG,WAAW,CAAC;AAEvD,MAAM,WAAW,eAAe;IAC9B,IAAI,CAAC,EAAE,QAAQ,GAAG,WAAW,CAAC;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,OAAO,CAAC;IACjB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,SAAS,CAAC,EAAE,iBAAiB,EAAE,CAAC;CACjC;AAED,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,eAAe,EAAE,CAAC;IAC3B,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB;AAED,MAAM,WAAW,sBAAuB,SAAQ,IAAI,CAAC,eAAe,EAAE,oBAAoB,CAAC;IACzF,IAAI,EAAE,QAAQ,GAAG,WAAW,CAAC;IAC7B,qBAAqB,EAAE,OAAO,CAAC;IAC/B,yBAAyB,CAAC,EAAE,MAAM,CAAC;CACpC;AAED,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,sBAAsB,EAAE,CAAC;IAClC,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB;AAED,MAAM,WAAW,sBAAsB;IACrC,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAOD,wBAAgB,mBAAmB,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CAE/D;AAED,wBAAgB,oBAAoB,CAAC,WAAW,EAAE,MAAM,EAAE,QAAQ,EAAE,iBAAiB,GAAG,mBAAmB,CAiC1G;AAED,wBAAgB,qBAAqB,CAAC,WAAW,EAAE,MAAM,GAAG,iBAAiB,CAO5E;AAED,wBAAgB,qBAAqB,CAAC,WAAW,EAAE,MAAM,EAAE,KAAK,EAAE,sBAAsB,GAAG,iBAAiB,CA0C3G;AAED,wBAAgB,cAAc,CAAC,OAAO,EAAE,eAAe,EAAE,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAwBpF;AAED,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,eAAe,EAAE,GAAG;IAC9D,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAC;IACtC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAC;CACrC,CAmBA"}
@@ -0,0 +1,327 @@
1
+ import { chmodSync, existsSync, mkdirSync, readFileSync, writeFileSync } from 'node:fs';
2
+ import { dirname, join } from 'node:path';
3
+ export function remoteMcpConfigPath(projectRoot) {
4
+ return join(projectRoot, '.dql', 'mcp-servers.json');
5
+ }
6
+ export function loadRemoteMcpServers(projectRoot, provider) {
7
+ const path = remoteMcpConfigPath(projectRoot);
8
+ if (!existsSync(path))
9
+ return { path, servers: [], warnings: [] };
10
+ let parsed;
11
+ try {
12
+ parsed = JSON.parse(readFileSync(path, 'utf-8'));
13
+ }
14
+ catch (error) {
15
+ return {
16
+ path,
17
+ servers: [],
18
+ warnings: [`Could not read MCP config at ${path}: ${error instanceof Error ? error.message : String(error)}`],
19
+ };
20
+ }
21
+ const warnings = [];
22
+ const servers = [
23
+ ...normalizeEntries(parsed.servers, 'server', warnings),
24
+ ...normalizeEntries(parsed.connectors, 'connector', warnings),
25
+ ].filter((server) => {
26
+ if (!server.enabled)
27
+ return false;
28
+ if (server.providers?.length && !server.providers.includes(provider))
29
+ return false;
30
+ if (!server.trusted) {
31
+ warnings.push(`MCP ${server.connectorId ? 'connector' : 'server'} "${server.name}" is skipped because trusted=true is required.`);
32
+ return false;
33
+ }
34
+ if (provider === 'anthropic' && server.connectorId) {
35
+ warnings.push(`MCP connector "${server.name}" is OpenAI-only and was skipped for Anthropic.`);
36
+ return false;
37
+ }
38
+ return true;
39
+ });
40
+ return { path, servers, warnings };
41
+ }
42
+ export function listRemoteMcpSettings(projectRoot) {
43
+ const { path, parsed, warnings } = readRawMcpConfig(projectRoot);
44
+ const entries = [
45
+ ...normalizeEntries(parsed?.servers, 'server', warnings),
46
+ ...normalizeEntries(parsed?.connectors, 'connector', warnings),
47
+ ].map(redactEntry);
48
+ return { path, entries, warnings };
49
+ }
50
+ export function saveRemoteMcpSettings(projectRoot, input) {
51
+ const current = listRemoteMcpSecrets(projectRoot);
52
+ const warnings = [];
53
+ const entries = normalizeSaveEntries(input.entries, current, warnings);
54
+ const servers = entries
55
+ .filter((entry) => entry.kind !== 'connector')
56
+ .map((entry) => compactObject({
57
+ name: entry.name,
58
+ url: entry.url,
59
+ description: entry.description,
60
+ authorizationToken: entry.authorizationToken,
61
+ authorizationTokenEnv: entry.authorizationTokenEnv,
62
+ allowedTools: entry.allowedTools,
63
+ enabled: entry.enabled,
64
+ trusted: entry.trusted,
65
+ deferLoading: entry.deferLoading,
66
+ providers: entry.providers,
67
+ }));
68
+ const connectors = entries
69
+ .filter((entry) => entry.kind === 'connector')
70
+ .map((entry) => compactObject({
71
+ name: entry.name,
72
+ connectorId: entry.connectorId,
73
+ description: entry.description,
74
+ authorizationToken: entry.authorizationToken,
75
+ authorizationTokenEnv: entry.authorizationTokenEnv,
76
+ allowedTools: entry.allowedTools,
77
+ enabled: entry.enabled,
78
+ trusted: entry.trusted,
79
+ deferLoading: entry.deferLoading,
80
+ providers: entry.providers,
81
+ }));
82
+ const path = remoteMcpConfigPath(projectRoot);
83
+ mkdirSync(dirname(path), { recursive: true });
84
+ writeFileSync(path, JSON.stringify({ version: 1, servers, connectors }, null, 2) + '\n', 'utf-8');
85
+ try {
86
+ chmodSync(path, 0o600);
87
+ }
88
+ catch {
89
+ // Best effort on filesystems that do not support POSIX modes.
90
+ }
91
+ const next = listRemoteMcpSettings(projectRoot);
92
+ return { ...next, warnings: [...warnings, ...next.warnings] };
93
+ }
94
+ export function openAiMcpTools(servers) {
95
+ return servers.map((server) => {
96
+ const authorization = authToken(server);
97
+ if (server.connectorId) {
98
+ return compactObject({
99
+ type: 'mcp',
100
+ server_label: server.name,
101
+ connector_id: server.connectorId,
102
+ authorization,
103
+ allowed_tools: nonEmpty(server.allowedTools),
104
+ require_approval: 'never',
105
+ });
106
+ }
107
+ return compactObject({
108
+ type: 'mcp',
109
+ server_label: server.name,
110
+ server_description: server.description,
111
+ server_url: server.url,
112
+ headers: authorization ? { Authorization: `Bearer ${authorization}` } : undefined,
113
+ allowed_tools: nonEmpty(server.allowedTools),
114
+ defer_loading: server.deferLoading === true ? true : undefined,
115
+ require_approval: 'never',
116
+ });
117
+ });
118
+ }
119
+ export function anthropicMcpConfig(servers) {
120
+ const remoteServers = servers.filter((server) => server.url && !server.connectorId);
121
+ return {
122
+ mcpServers: remoteServers.map((server) => compactObject({
123
+ type: 'url',
124
+ url: server.url,
125
+ name: server.name,
126
+ authorization_token: authToken(server),
127
+ })),
128
+ toolsets: remoteServers.map((server) => compactObject({
129
+ type: 'mcp_toolset',
130
+ mcp_server_name: server.name,
131
+ default_config: {
132
+ enabled: true,
133
+ defer_loading: server.deferLoading === true,
134
+ },
135
+ configs: allowedToolConfig(server.allowedTools),
136
+ })),
137
+ };
138
+ }
139
+ function normalizeEntries(input, kind, warnings) {
140
+ if (!Array.isArray(input))
141
+ return [];
142
+ const out = [];
143
+ for (const entry of input) {
144
+ if (!entry || typeof entry !== 'object') {
145
+ warnings.push(`Ignoring invalid MCP ${kind} entry.`);
146
+ continue;
147
+ }
148
+ const raw = entry;
149
+ const name = cleanName(raw.name ?? raw.server_label ?? raw.serverLabel);
150
+ if (!name) {
151
+ warnings.push(`Ignoring MCP ${kind} with missing or invalid name.`);
152
+ continue;
153
+ }
154
+ const url = cleanUrl(raw.url ?? raw.server_url ?? raw.serverUrl);
155
+ const connectorId = cleanString(raw.connectorId ?? raw.connector_id);
156
+ if (kind === 'server' && !url) {
157
+ warnings.push(`Ignoring MCP server "${name}" because url/server_url is required.`);
158
+ continue;
159
+ }
160
+ if (kind === 'connector' && !connectorId) {
161
+ warnings.push(`Ignoring MCP connector "${name}" because connectorId is required.`);
162
+ continue;
163
+ }
164
+ out.push({
165
+ kind,
166
+ name,
167
+ url,
168
+ connectorId,
169
+ description: cleanString(raw.description ?? raw.server_description ?? raw.serverDescription),
170
+ authorizationToken: cleanString(raw.authorizationToken ?? raw.authorization ?? raw.authorization_token),
171
+ authorizationTokenEnv: cleanString(raw.authorizationTokenEnv ?? raw.authorizationEnv ?? raw.authorization_token_env),
172
+ allowedTools: cleanStringArray(raw.allowedTools ?? raw.allowed_tools),
173
+ enabled: raw.enabled !== false,
174
+ trusted: raw.trusted === true,
175
+ deferLoading: raw.deferLoading === true || raw.defer_loading === true,
176
+ providers: cleanProviderArray(raw.providers),
177
+ });
178
+ }
179
+ return out;
180
+ }
181
+ function readRawMcpConfig(projectRoot) {
182
+ const path = remoteMcpConfigPath(projectRoot);
183
+ if (!existsSync(path))
184
+ return { path, parsed: undefined, warnings: [] };
185
+ try {
186
+ return { path, parsed: JSON.parse(readFileSync(path, 'utf-8')), warnings: [] };
187
+ }
188
+ catch (error) {
189
+ return {
190
+ path,
191
+ parsed: undefined,
192
+ warnings: [`Could not read MCP config at ${path}: ${error instanceof Error ? error.message : String(error)}`],
193
+ };
194
+ }
195
+ }
196
+ function listRemoteMcpSecrets(projectRoot) {
197
+ const { parsed } = readRawMcpConfig(projectRoot);
198
+ const warnings = [];
199
+ const entries = [
200
+ ...normalizeEntries(parsed?.servers, 'server', warnings),
201
+ ...normalizeEntries(parsed?.connectors, 'connector', warnings),
202
+ ];
203
+ return new Map(entries.map((entry) => [entryKey(entry.kind ?? 'server', entry.name), entry]));
204
+ }
205
+ function normalizeSaveEntries(input, current, warnings) {
206
+ if (!Array.isArray(input))
207
+ return [];
208
+ const entries = [];
209
+ for (const rawEntry of input) {
210
+ if (!rawEntry || typeof rawEntry !== 'object') {
211
+ warnings.push('Ignoring invalid MCP connection.');
212
+ continue;
213
+ }
214
+ const raw = rawEntry;
215
+ const kind = raw.kind === 'connector' ? 'connector' : 'server';
216
+ const name = cleanName(raw.name);
217
+ if (!name) {
218
+ warnings.push('Ignoring MCP connection with missing name.');
219
+ continue;
220
+ }
221
+ const url = cleanUrl(raw.url ?? raw.server_url ?? raw.serverUrl);
222
+ const connectorId = cleanString(raw.connectorId ?? raw.connector_id);
223
+ if (kind === 'server' && !url) {
224
+ warnings.push(`Ignoring MCP server "${name}" because URL is required.`);
225
+ continue;
226
+ }
227
+ if (kind === 'connector' && !connectorId) {
228
+ warnings.push(`Ignoring MCP connector "${name}" because connector ID is required.`);
229
+ continue;
230
+ }
231
+ const existing = current.get(entryKey(kind, name));
232
+ const newToken = cleanString(raw.authorizationToken ?? raw.authorization ?? raw.authorization_token);
233
+ entries.push({
234
+ kind,
235
+ name,
236
+ url,
237
+ connectorId,
238
+ description: cleanString(raw.description ?? raw.server_description ?? raw.serverDescription),
239
+ authorizationToken: newToken ?? existing?.authorizationToken,
240
+ authorizationTokenEnv: cleanString(raw.authorizationTokenEnv ?? raw.authorizationEnv ?? raw.authorization_token_env),
241
+ allowedTools: cleanStringArray(raw.allowedTools ?? raw.allowed_tools),
242
+ enabled: raw.enabled !== false,
243
+ trusted: raw.trusted === true,
244
+ deferLoading: raw.deferLoading === true || raw.defer_loading === true,
245
+ providers: cleanProviderArray(raw.providers),
246
+ });
247
+ }
248
+ return entries;
249
+ }
250
+ function redactEntry(entry) {
251
+ const hasAuthorizationToken = Boolean(entry.authorizationToken?.trim());
252
+ const { authorizationToken: _authorizationToken, ...safe } = entry;
253
+ return {
254
+ ...safe,
255
+ kind: entry.kind ?? (entry.connectorId ? 'connector' : 'server'),
256
+ hasAuthorizationToken,
257
+ authorizationTokenPreview: hasAuthorizationToken ? previewSecret(entry.authorizationToken) : undefined,
258
+ };
259
+ }
260
+ function entryKey(kind, name) {
261
+ return `${kind}:${name}`;
262
+ }
263
+ function authToken(server) {
264
+ if (server.authorizationTokenEnv) {
265
+ const value = process.env[server.authorizationTokenEnv]?.trim();
266
+ if (value)
267
+ return value;
268
+ }
269
+ return server.authorizationToken?.trim() || undefined;
270
+ }
271
+ function allowedToolConfig(tools) {
272
+ const names = nonEmpty(tools);
273
+ if (!names)
274
+ return undefined;
275
+ return Object.fromEntries(names.map((tool) => [tool, { enabled: true, defer_loading: true }]));
276
+ }
277
+ function compactObject(input) {
278
+ return Object.fromEntries(Object.entries(input).filter(([, value]) => {
279
+ if (value === undefined || value === null)
280
+ return false;
281
+ if (Array.isArray(value) && value.length === 0)
282
+ return false;
283
+ if (typeof value === 'object' && !Array.isArray(value) && Object.keys(value).length === 0)
284
+ return false;
285
+ return true;
286
+ }));
287
+ }
288
+ function nonEmpty(values) {
289
+ return values?.length ? values : undefined;
290
+ }
291
+ function cleanName(value) {
292
+ const raw = cleanString(value);
293
+ if (!raw)
294
+ return undefined;
295
+ const safe = raw.replace(/[^A-Za-z0-9_-]/g, '_').slice(0, 64);
296
+ return safe || undefined;
297
+ }
298
+ function cleanUrl(value) {
299
+ const raw = cleanString(value);
300
+ if (!raw)
301
+ return undefined;
302
+ if (!/^https?:\/\//i.test(raw))
303
+ return undefined;
304
+ return raw;
305
+ }
306
+ function cleanString(value) {
307
+ return typeof value === 'string' && value.trim() ? value.trim() : undefined;
308
+ }
309
+ function cleanStringArray(value) {
310
+ if (!Array.isArray(value))
311
+ return undefined;
312
+ const values = value.map(cleanString).filter((item) => Boolean(item));
313
+ return values.length ? Array.from(new Set(values)) : undefined;
314
+ }
315
+ function cleanProviderArray(value) {
316
+ const values = cleanStringArray(value);
317
+ if (!values)
318
+ return undefined;
319
+ const providers = values.filter((item) => item === 'openai' || item === 'anthropic');
320
+ return providers.length ? providers : undefined;
321
+ }
322
+ function previewSecret(secret) {
323
+ if (secret.length <= 8)
324
+ return '********';
325
+ return `${secret.slice(0, 4)}...${secret.slice(-4)}`;
326
+ }
327
+ //# sourceMappingURL=mcp-config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mcp-config.js","sourceRoot":"","sources":["../../src/llm/mcp-config.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  import type { AgentRunner, ProviderId } from '../types.js';
2
- type SimpleProviderId = Extract<ProviderId, 'openai' | 'gemini' | 'ollama' | 'custom-openai'>;
2
+ type SimpleProviderId = Extract<ProviderId, 'anthropic' | 'openai' | 'gemini' | 'ollama' | 'custom-openai'>;
3
3
  export declare function createDqlAgentProviderRunner(id: SimpleProviderId): AgentRunner;
4
4
  export {};
5
5
  //# sourceMappingURL=dql-agent-provider.d.ts.map