@lightdash/cli 3.77.0 → 3.78.1
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/.tsbuildinfo.build +1 -1
- package/dist/handlers/aiAgentKnowledgeDocuments.d.ts +14 -0
- package/dist/handlers/aiAgentKnowledgeDocuments.d.ts.map +1 -0
- package/dist/handlers/aiAgentKnowledgeDocuments.js +130 -0
- package/dist/handlers/contentAsCode/projectResources.d.ts +3 -2
- package/dist/handlers/contentAsCode/projectResources.d.ts.map +1 -1
- package/dist/handlers/download.d.ts.map +1 -1
- package/dist/handlers/download.js +7 -3
- package/package.json +3 -3
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { type AgentAsCode, type AgentAsCodeKnowledgeDocument } from '@lightdash/common';
|
|
2
|
+
export declare const KNOWLEDGE_DOCUMENTS_FOLDER_NAME = "knowledge-documents";
|
|
3
|
+
export type AgentAsCodeKnowledgeDocumentFile = Omit<AgentAsCodeKnowledgeDocument, 'content' | 'mimeType'> & {
|
|
4
|
+
file: string;
|
|
5
|
+
};
|
|
6
|
+
/** The agent as it is written to YAML: document content lives in files. */
|
|
7
|
+
export type AgentAsCodeFile = Omit<AgentAsCode, 'knowledgeDocuments'> & {
|
|
8
|
+
knowledgeDocuments?: AgentAsCodeKnowledgeDocumentFile[];
|
|
9
|
+
};
|
|
10
|
+
export declare const toAgentAsCodeFile: (agent: AgentAsCode) => AgentAsCodeFile;
|
|
11
|
+
export declare const writeAgentKnowledgeDocuments: (yamlDirectory: string, agent: AgentAsCode) => Promise<void>;
|
|
12
|
+
/** Resolves each declared `file` against the YAML's directory and inlines its content for upload. */
|
|
13
|
+
export declare const readAgentKnowledgeDocuments: (yamlPath: string, agent: AgentAsCodeFile) => Promise<AgentAsCode>;
|
|
14
|
+
//# sourceMappingURL=aiAgentKnowledgeDocuments.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"aiAgentKnowledgeDocuments.d.ts","sourceRoot":"","sources":["../../src/handlers/aiAgentKnowledgeDocuments.ts"],"names":[],"mappings":"AAAA,OAAO,EAKH,KAAK,WAAW,EAChB,KAAK,4BAA4B,EACpC,MAAM,mBAAmB,CAAC;AAQ3B,eAAO,MAAM,+BAA+B,wBAAwB,CAAC;AAKrE,MAAM,MAAM,gCAAgC,GAAG,IAAI,CAC/C,4BAA4B,EAC5B,SAAS,GAAG,UAAU,CACzB,GAAG;IAEA,IAAI,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF,2EAA2E;AAC3E,MAAM,MAAM,eAAe,GAAG,IAAI,CAAC,WAAW,EAAE,oBAAoB,CAAC,GAAG;IACpE,kBAAkB,CAAC,EAAE,gCAAgC,EAAE,CAAC;CAC3D,CAAC;AA8DF,eAAO,MAAM,iBAAiB,UAAW,WAAW,KAAG,eActD,CAAC;AAIF,eAAO,MAAM,4BAA4B,kBACtB,MAAM,SACd,WAAW,KACnB,OAAO,CAAC,IAAI,CAgBd,CAAC;AAiCF,qGAAqG;AACrG,eAAO,MAAM,2BAA2B,aAC1B,MAAM,SACT,eAAe,KACvB,OAAO,CAAC,WAAW,CAsCrB,CAAC"}
|
|
@@ -0,0 +1,130 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.readAgentKnowledgeDocuments = exports.writeAgentKnowledgeDocuments = exports.toAgentAsCodeFile = exports.KNOWLEDGE_DOCUMENTS_FOLDER_NAME = void 0;
|
|
4
|
+
const tslib_1 = require("tslib");
|
|
5
|
+
const common_1 = require("@lightdash/common");
|
|
6
|
+
const fs_1 = require("fs");
|
|
7
|
+
const path = tslib_1.__importStar(require("path"));
|
|
8
|
+
const fileNames_1 = require("./contentAsCode/fileNames");
|
|
9
|
+
exports.KNOWLEDGE_DOCUMENTS_FOLDER_NAME = 'knowledge-documents';
|
|
10
|
+
const ACCEPTED_EXTENSIONS = ['.md', '.txt'];
|
|
11
|
+
const isEnoent = (error) => error.code === 'ENOENT';
|
|
12
|
+
const toPosix = (filePath) => filePath.split(path.sep).join('/');
|
|
13
|
+
const getDocumentsFolder = (agentSlug) => path.join(agentSlug, exports.KNOWLEDGE_DOCUMENTS_FOLDER_NAME);
|
|
14
|
+
// One allocation per extension: the shared allocator takes a single
|
|
15
|
+
// extension, and names only collide within one.
|
|
16
|
+
const allocateFileNames = (documents) => {
|
|
17
|
+
const indexed = documents.map((document, index) => ({
|
|
18
|
+
index,
|
|
19
|
+
document,
|
|
20
|
+
extension: (0, common_1.getAiAgentDocumentFileExtension)(document.mimeType),
|
|
21
|
+
}));
|
|
22
|
+
const allocated = new Map([...new Set(indexed.map(({ extension }) => extension))].flatMap((extension) => {
|
|
23
|
+
const group = indexed.filter((entry) => entry.extension === extension);
|
|
24
|
+
const fileNames = (0, fileNames_1.allocateContentFileNames)({
|
|
25
|
+
items: group.map(({ document }) => ({
|
|
26
|
+
identity: document.name,
|
|
27
|
+
displayName: document.name,
|
|
28
|
+
})),
|
|
29
|
+
fallbackPrefix: 'knowledge-document',
|
|
30
|
+
extension,
|
|
31
|
+
});
|
|
32
|
+
return group.map(({ index }, position) => [index, fileNames[position]]);
|
|
33
|
+
}));
|
|
34
|
+
return indexed.map(({ index }) => allocated.get(index) ?? '');
|
|
35
|
+
};
|
|
36
|
+
const listDocumentFiles = async (folder) => {
|
|
37
|
+
try {
|
|
38
|
+
return (await fs_1.promises.readdir(folder, { withFileTypes: true }))
|
|
39
|
+
.filter((entry) => entry.isFile() &&
|
|
40
|
+
ACCEPTED_EXTENSIONS.some((extension) => entry.name.endsWith(extension)))
|
|
41
|
+
.map((entry) => entry.name);
|
|
42
|
+
}
|
|
43
|
+
catch (error) {
|
|
44
|
+
if (isEnoent(error))
|
|
45
|
+
return [];
|
|
46
|
+
throw error;
|
|
47
|
+
}
|
|
48
|
+
};
|
|
49
|
+
const toAgentAsCodeFile = (agent) => {
|
|
50
|
+
const { knowledgeDocuments, ...rest } = agent;
|
|
51
|
+
if (knowledgeDocuments === undefined)
|
|
52
|
+
return rest;
|
|
53
|
+
const fileNames = allocateFileNames(knowledgeDocuments);
|
|
54
|
+
return {
|
|
55
|
+
...rest,
|
|
56
|
+
knowledgeDocuments: knowledgeDocuments.map((document, index) => ({
|
|
57
|
+
name: document.name,
|
|
58
|
+
file: toPosix(path.join(getDocumentsFolder(agent.slug), fileNames[index])),
|
|
59
|
+
alwaysIncludeInContext: document.alwaysIncludeInContext,
|
|
60
|
+
})),
|
|
61
|
+
};
|
|
62
|
+
};
|
|
63
|
+
exports.toAgentAsCodeFile = toAgentAsCodeFile;
|
|
64
|
+
// Writes `<slug>/knowledge-documents/` beside the YAML and prunes files no
|
|
65
|
+
// longer declared; an agent without a document list leaves the folder alone.
|
|
66
|
+
const writeAgentKnowledgeDocuments = async (yamlDirectory, agent) => {
|
|
67
|
+
if (agent.knowledgeDocuments === undefined)
|
|
68
|
+
return;
|
|
69
|
+
const folder = path.join(yamlDirectory, getDocumentsFolder(agent.slug));
|
|
70
|
+
const fileNames = allocateFileNames(agent.knowledgeDocuments);
|
|
71
|
+
const existing = await listDocumentFiles(folder);
|
|
72
|
+
if (agent.knowledgeDocuments.length > 0) {
|
|
73
|
+
await fs_1.promises.mkdir(folder, { recursive: true });
|
|
74
|
+
}
|
|
75
|
+
await Promise.all([
|
|
76
|
+
...existing
|
|
77
|
+
.filter((fileName) => !fileNames.includes(fileName))
|
|
78
|
+
.map((fileName) => fs_1.promises.rm(path.join(folder, fileName))),
|
|
79
|
+
...agent.knowledgeDocuments.map((document, index) => fs_1.promises.writeFile(path.join(folder, fileNames[index]), document.content)),
|
|
80
|
+
]);
|
|
81
|
+
};
|
|
82
|
+
exports.writeAgentKnowledgeDocuments = writeAgentKnowledgeDocuments;
|
|
83
|
+
const assertSafeRelativeFile = (file, source) => {
|
|
84
|
+
try {
|
|
85
|
+
(0, fileNames_1.assertSafeContentFilePath)(file);
|
|
86
|
+
}
|
|
87
|
+
catch {
|
|
88
|
+
throw new common_1.ParameterError(`Invalid AI agent file "${source}": knowledge document file "${file}" must be a relative path inside the agent folder`);
|
|
89
|
+
}
|
|
90
|
+
if (!ACCEPTED_EXTENSIONS.some((extension) => file.endsWith(extension))) {
|
|
91
|
+
throw new common_1.ParameterError(`Invalid AI agent file "${source}": knowledge document file "${file}" must end with ${ACCEPTED_EXTENSIONS.join(' or ')}`);
|
|
92
|
+
}
|
|
93
|
+
};
|
|
94
|
+
const readDocumentFile = async (filePath, file, yamlPath) => {
|
|
95
|
+
try {
|
|
96
|
+
return await fs_1.promises.readFile(filePath, 'utf8');
|
|
97
|
+
}
|
|
98
|
+
catch (error) {
|
|
99
|
+
throw new common_1.ParameterError(isEnoent(error)
|
|
100
|
+
? `Invalid AI agent file "${yamlPath}": knowledge document file "${file}" does not exist`
|
|
101
|
+
: `Invalid AI agent file "${yamlPath}": could not read knowledge document file "${file}": ${(0, common_1.getErrorMessage)(error)}`);
|
|
102
|
+
}
|
|
103
|
+
};
|
|
104
|
+
/** Resolves each declared `file` against the YAML's directory and inlines its content for upload. */
|
|
105
|
+
const readAgentKnowledgeDocuments = async (yamlPath, agent) => {
|
|
106
|
+
const { knowledgeDocuments, ...rest } = agent;
|
|
107
|
+
if (knowledgeDocuments === undefined)
|
|
108
|
+
return rest;
|
|
109
|
+
if (!Array.isArray(knowledgeDocuments)) {
|
|
110
|
+
throw new common_1.ParameterError(`Invalid AI agent file "${yamlPath}": knowledgeDocuments must be a list`);
|
|
111
|
+
}
|
|
112
|
+
const directory = path.dirname(yamlPath);
|
|
113
|
+
const resolved = await Promise.all(knowledgeDocuments.map(async (document) => {
|
|
114
|
+
if (typeof document !== 'object' ||
|
|
115
|
+
document === null ||
|
|
116
|
+
typeof document.file !== 'string' ||
|
|
117
|
+
typeof document.name !== 'string') {
|
|
118
|
+
throw new common_1.ParameterError(`Invalid AI agent file "${yamlPath}": each knowledge document needs a name and a file`);
|
|
119
|
+
}
|
|
120
|
+
assertSafeRelativeFile(document.file, yamlPath);
|
|
121
|
+
return {
|
|
122
|
+
name: document.name,
|
|
123
|
+
alwaysIncludeInContext: document.alwaysIncludeInContext === true,
|
|
124
|
+
mimeType: (0, common_1.getAiAgentDocumentMimeType)(document.file),
|
|
125
|
+
content: await readDocumentFile(path.join(directory, document.file), document.file, yamlPath),
|
|
126
|
+
};
|
|
127
|
+
}));
|
|
128
|
+
return { ...rest, knowledgeDocuments: resolved };
|
|
129
|
+
};
|
|
130
|
+
exports.readAgentKnowledgeDocuments = readAgentKnowledgeDocuments;
|
|
@@ -1,8 +1,9 @@
|
|
|
1
|
-
import { type
|
|
1
|
+
import { type AlertAsCode, type DocumentAsCode, type ExternalConnectionAsCode, type GoogleSheetsSyncAsCode, type HomepageAsCode, type ScheduledDeliveryAsCode, type VirtualViewAsCode } from '@lightdash/common';
|
|
2
|
+
import { type AgentAsCodeFile } from '../aiAgentKnowledgeDocuments';
|
|
2
3
|
import type { CodeResourceDefinition } from './resource';
|
|
3
4
|
export declare const HOMEPAGE_CODE_RESOURCE: CodeResourceDefinition<HomepageAsCode>;
|
|
4
5
|
export declare const VIRTUAL_VIEW_CODE_RESOURCE: CodeResourceDefinition<VirtualViewAsCode>;
|
|
5
|
-
export declare const AI_AGENT_CODE_RESOURCE: CodeResourceDefinition<
|
|
6
|
+
export declare const AI_AGENT_CODE_RESOURCE: CodeResourceDefinition<AgentAsCodeFile>;
|
|
6
7
|
export declare const EXTERNAL_CONNECTION_CODE_RESOURCE: CodeResourceDefinition<ExternalConnectionAsCode>;
|
|
7
8
|
export declare const SCHEDULED_DELIVERY_CODE_RESOURCE: CodeResourceDefinition<ScheduledDeliveryAsCode>;
|
|
8
9
|
export declare const ALERT_CODE_RESOURCE: CodeResourceDefinition<AlertAsCode>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"projectResources.d.ts","sourceRoot":"","sources":["../../../src/handlers/contentAsCode/projectResources.ts"],"names":[],"mappings":"AAAA,OAAO,EAKH,KAAK,WAAW,EAChB,KAAK,
|
|
1
|
+
{"version":3,"file":"projectResources.d.ts","sourceRoot":"","sources":["../../../src/handlers/contentAsCode/projectResources.ts"],"names":[],"mappings":"AAAA,OAAO,EAKH,KAAK,WAAW,EAChB,KAAK,cAAc,EACnB,KAAK,wBAAwB,EAC7B,KAAK,sBAAsB,EAC3B,KAAK,cAAc,EACnB,KAAK,uBAAuB,EAC5B,KAAK,iBAAiB,EACzB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,KAAK,eAAe,EAAE,MAAM,8BAA8B,CAAC;AACpE,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,YAAY,CAAC;AAEzD,eAAO,MAAM,sBAAsB,EAAE,sBAAsB,CAAC,cAAc,CAkBzE,CAAC;AAEF,eAAO,MAAM,0BAA0B,EAAE,sBAAsB,CAAC,iBAAiB,CAwB5E,CAAC;AAEN,eAAO,MAAM,sBAAsB,EAAE,sBAAsB,CAAC,eAAe,CAyB1E,CAAC;AAEF,eAAO,MAAM,iCAAiC,EAAE,sBAAsB,CAAC,wBAAwB,CAwB1F,CAAC;AA4CN,eAAO,MAAM,gCAAgC,iDAKvC,CAAC;AAEP,eAAO,MAAM,mBAAmB,qCAI9B,CAAC;AAEH,eAAO,MAAM,2BAA2B,gDAKlC,CAAC;AAEP,eAAO,MAAM,sBAAsB,EAAE,sBAAsB,CAAC,cAAc,CA2BzE,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"download.d.ts","sourceRoot":"","sources":["../../src/handlers/download.ts"],"names":[],"mappings":"AAEA,OAAO,EACH,WAAW,EAMX,0BAA0B,EAI1B,8BAA8B,EAa9B,6BAA6B,EAK7B,WAAW,EAIX,eAAe,EAKf,wBAAwB,EAYxB,cAAc,EAMd,KAAK,WAAW,EAGhB,KAAK,WAAW,EACnB,MAAM,mBAAmB,CAAC;AA2B3B,OAAO,EAIH,KAAK,0BAA0B,EAClC,MAAM,iCAAiC,CAAC;
|
|
1
|
+
{"version":3,"file":"download.d.ts","sourceRoot":"","sources":["../../src/handlers/download.ts"],"names":[],"mappings":"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"}
|
|
@@ -22,6 +22,7 @@ const globalState_1 = tslib_1.__importDefault(require("../globalState"));
|
|
|
22
22
|
const lightdash_config_1 = require("../lightdash-config");
|
|
23
23
|
const styles = tslib_1.__importStar(require("../styles"));
|
|
24
24
|
const contentAsCodeOutput_1 = require("../terminal/contentAsCodeOutput");
|
|
25
|
+
const aiAgentKnowledgeDocuments_1 = require("./aiAgentKnowledgeDocuments");
|
|
25
26
|
const appCodeFiles_1 = require("./apps/appCodeFiles");
|
|
26
27
|
const appsDownload_1 = require("./apps/appsDownload");
|
|
27
28
|
const scaffolding_1 = require("./apps/scaffolding");
|
|
@@ -953,12 +954,15 @@ const downloadAiAgents = async (projectId, ids, implicit, customPath) => {
|
|
|
953
954
|
offset = results.offset;
|
|
954
955
|
total = results.total;
|
|
955
956
|
} while (offset < total);
|
|
957
|
+
const basePath = (0, contentAsCodePaths_1.getDownloadFolder)(customPath);
|
|
956
958
|
await (0, resource_1.writeCodeResourceDocuments)({
|
|
957
959
|
definition: projectResources_1.AI_AGENT_CODE_RESOURCE,
|
|
958
|
-
basePath
|
|
959
|
-
documents: agents,
|
|
960
|
+
basePath,
|
|
961
|
+
documents: agents.map(aiAgentKnowledgeDocuments_1.toAgentAsCodeFile),
|
|
960
962
|
pruneOtherDocuments: ids.length === 0,
|
|
961
963
|
});
|
|
964
|
+
const agentsFolder = path.join(basePath, projectResources_1.AI_AGENT_CODE_RESOURCE.folderName);
|
|
965
|
+
await Promise.all(agents.map((agent) => (0, aiAgentKnowledgeDocuments_1.writeAgentKnowledgeDocuments)(agentsFolder, agent)));
|
|
962
966
|
}
|
|
963
967
|
catch (error) {
|
|
964
968
|
if (implicit && isAiAgentsUnavailableError(error)) {
|
|
@@ -976,7 +980,7 @@ const readAiAgentFiles = async (customPath) => {
|
|
|
976
980
|
basePath: (0, contentAsCodePaths_1.getDownloadFolder)(customPath),
|
|
977
981
|
});
|
|
978
982
|
(0, resource_1.assertCodeResourceFilesValid)(result);
|
|
979
|
-
return result.files.map(({ document }) => document);
|
|
983
|
+
return Promise.all(result.files.map(({ filePath, document }) => (0, aiAgentKnowledgeDocuments_1.readAgentKnowledgeDocuments)(filePath, document)));
|
|
980
984
|
};
|
|
981
985
|
class AiAgentAsCodeUploadError extends Error {
|
|
982
986
|
originalError;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@lightdash/cli",
|
|
3
|
-
"version": "3.
|
|
3
|
+
"version": "3.78.1",
|
|
4
4
|
"description": "Lightdash CLI tool",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"repository": {
|
|
@@ -22,8 +22,8 @@
|
|
|
22
22
|
"@actions/core": "1.11.1",
|
|
23
23
|
"@aws-sdk/credential-providers": "3.995.0",
|
|
24
24
|
"@casl/ability": "6.8.0",
|
|
25
|
-
"@lightdash/common": "3.
|
|
26
|
-
"@lightdash/warehouses": "3.
|
|
25
|
+
"@lightdash/common": "3.78.1",
|
|
26
|
+
"@lightdash/warehouses": "3.78.1",
|
|
27
27
|
"@sidvind/better-ajv-errors": "7.0.0",
|
|
28
28
|
"@types/columnify": "1.5.1",
|
|
29
29
|
"ajv": "8.18.0",
|