@yagr/agent 0.1.0 → 0.2.5
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/LICENSE +21 -201
- package/README.md +49 -32
- package/dist/cli.js +78 -0
- package/dist/cli.js.map +1 -1
- package/dist/config/load-n8n-engine-config.d.ts +3 -3
- package/dist/config/load-n8n-engine-config.d.ts.map +1 -1
- package/dist/config/load-n8n-engine-config.js +3 -3
- package/dist/config/load-n8n-engine-config.js.map +1 -1
- package/dist/config/local-state.d.ts +20 -0
- package/dist/config/local-state.d.ts.map +1 -0
- package/dist/config/local-state.js +81 -0
- package/dist/config/local-state.js.map +1 -0
- package/dist/config/n8n-config-service.d.ts +25 -0
- package/dist/config/n8n-config-service.d.ts.map +1 -0
- package/dist/config/n8n-config-service.js +117 -0
- package/dist/config/n8n-config-service.js.map +1 -0
- package/dist/config/yagr-config-service.d.ts +2 -0
- package/dist/config/yagr-config-service.d.ts.map +1 -1
- package/dist/config/yagr-config-service.js +29 -4
- package/dist/config/yagr-config-service.js.map +1 -1
- package/dist/config/yagr-home.d.ts +15 -0
- package/dist/config/yagr-home.d.ts.map +1 -1
- package/dist/config/yagr-home.js +44 -4
- package/dist/config/yagr-home.js.map +1 -1
- package/dist/gateway/webui.d.ts.map +1 -1
- package/dist/gateway/webui.js +35 -21
- package/dist/gateway/webui.js.map +1 -1
- package/dist/index.d.ts +6 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -0
- package/dist/index.js.map +1 -1
- package/dist/prompt/build-system-prompt.d.ts.map +1 -1
- package/dist/prompt/build-system-prompt.js +3 -0
- package/dist/prompt/build-system-prompt.js.map +1 -1
- package/dist/setup.d.ts +5 -3
- package/dist/setup.d.ts.map +1 -1
- package/dist/setup.js +16 -17
- package/dist/setup.js.map +1 -1
- package/dist/tools/build-tools.d.ts +57 -28
- package/dist/tools/build-tools.d.ts.map +1 -1
- package/dist/tools/build-tools.js +2 -0
- package/dist/tools/build-tools.js.map +1 -1
- package/dist/tools/deploy.d.ts +19 -19
- package/dist/tools/generate-workflow.d.ts +8 -8
- package/dist/tools/index.d.ts +1 -0
- package/dist/tools/index.d.ts.map +1 -1
- package/dist/tools/index.js +1 -0
- package/dist/tools/index.js.map +1 -1
- package/dist/tools/manage-workflow.d.ts +3 -3
- package/dist/tools/n8nac.d.ts +12 -12
- package/dist/tools/observer.d.ts +8 -0
- package/dist/tools/observer.d.ts.map +1 -1
- package/dist/tools/observer.js.map +1 -1
- package/dist/tools/present-workflow-result.d.ts +32 -0
- package/dist/tools/present-workflow-result.d.ts.map +1 -0
- package/dist/tools/present-workflow-result.js +30 -0
- package/dist/tools/present-workflow-result.js.map +1 -0
- package/dist/tools/request-required-action.d.ts +3 -3
- package/dist/tools/validate.d.ts +19 -19
- package/dist/types.d.ts +8 -0
- package/dist/types.d.ts.map +1 -1
- package/dist/webui/app.js +385 -49
- package/dist/webui/app.js.map +3 -3
- package/dist/webui/styles.css +515 -102
- package/dist/webui/styles.css.map +2 -2
- package/package.json +3 -3
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
import fsPromises from 'node:fs/promises';
|
|
2
|
+
import path from 'node:path';
|
|
3
|
+
import { YagrN8nConfigService } from './n8n-config-service.js';
|
|
4
|
+
import { getYagrPaths } from './yagr-home.js';
|
|
5
|
+
function uniquePaths(values) {
|
|
6
|
+
return Array.from(new Set(values.filter(Boolean)));
|
|
7
|
+
}
|
|
8
|
+
function isPathWithin(child, parent) {
|
|
9
|
+
const relative = path.relative(parent, child);
|
|
10
|
+
return relative === '' || (!relative.startsWith('..') && !path.isAbsolute(relative));
|
|
11
|
+
}
|
|
12
|
+
function collapsePaths(values) {
|
|
13
|
+
const normalized = uniquePaths(values).sort((left, right) => left.length - right.length);
|
|
14
|
+
return normalized.filter((candidate, index) => {
|
|
15
|
+
return !normalized.slice(0, index).some((parent) => parent !== candidate && isPathWithin(candidate, parent));
|
|
16
|
+
});
|
|
17
|
+
}
|
|
18
|
+
function resolveWorkspacePaths(paths) {
|
|
19
|
+
const n8nConfig = new YagrN8nConfigService().getLocalConfig();
|
|
20
|
+
if (!n8nConfig.syncFolder) {
|
|
21
|
+
return { workspacePaths: [], preservedWorkspacePaths: [] };
|
|
22
|
+
}
|
|
23
|
+
const resolvedSyncFolder = path.isAbsolute(n8nConfig.syncFolder)
|
|
24
|
+
? n8nConfig.syncFolder
|
|
25
|
+
: path.resolve(paths.homeDir, n8nConfig.syncFolder);
|
|
26
|
+
if (isPathWithin(resolvedSyncFolder, paths.homeDir)) {
|
|
27
|
+
return { workspacePaths: [resolvedSyncFolder], preservedWorkspacePaths: [] };
|
|
28
|
+
}
|
|
29
|
+
return { workspacePaths: [], preservedWorkspacePaths: [resolvedSyncFolder] };
|
|
30
|
+
}
|
|
31
|
+
export function buildYagrCleanupPlan(scope = 'config+creds') {
|
|
32
|
+
const paths = getYagrPaths();
|
|
33
|
+
const configPaths = uniquePaths([paths.yagrConfigPath, paths.n8nConfigPath]);
|
|
34
|
+
const credentialPaths = uniquePaths([
|
|
35
|
+
paths.yagrCredentialsPath,
|
|
36
|
+
paths.n8nCredentialsPath,
|
|
37
|
+
paths.legacyYagrCredentialsDir,
|
|
38
|
+
paths.legacyN8nCredentialsDir,
|
|
39
|
+
]);
|
|
40
|
+
const { workspacePaths, preservedWorkspacePaths } = resolveWorkspacePaths(paths);
|
|
41
|
+
let deletePaths;
|
|
42
|
+
switch (scope) {
|
|
43
|
+
case 'config':
|
|
44
|
+
deletePaths = [...configPaths];
|
|
45
|
+
break;
|
|
46
|
+
case 'config+creds':
|
|
47
|
+
deletePaths = [...configPaths, ...credentialPaths];
|
|
48
|
+
break;
|
|
49
|
+
case 'full':
|
|
50
|
+
deletePaths = [paths.homeDir, paths.legacyYagrCredentialsDir, paths.legacyN8nCredentialsDir];
|
|
51
|
+
break;
|
|
52
|
+
default:
|
|
53
|
+
deletePaths = [...configPaths, ...credentialPaths];
|
|
54
|
+
break;
|
|
55
|
+
}
|
|
56
|
+
return {
|
|
57
|
+
scope,
|
|
58
|
+
paths,
|
|
59
|
+
configPaths,
|
|
60
|
+
credentialPaths,
|
|
61
|
+
deletePaths: collapsePaths(deletePaths),
|
|
62
|
+
workspacePaths,
|
|
63
|
+
preservedWorkspacePaths,
|
|
64
|
+
};
|
|
65
|
+
}
|
|
66
|
+
async function removePath(targetPath) {
|
|
67
|
+
await fsPromises.rm(targetPath, { recursive: true, force: true });
|
|
68
|
+
}
|
|
69
|
+
export async function resetYagrLocalState(scope, options = {}) {
|
|
70
|
+
const plan = buildYagrCleanupPlan(scope);
|
|
71
|
+
if (!options.dryRun) {
|
|
72
|
+
for (const targetPath of plan.deletePaths) {
|
|
73
|
+
await removePath(targetPath);
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
return {
|
|
77
|
+
plan,
|
|
78
|
+
removedPaths: [...plan.deletePaths],
|
|
79
|
+
};
|
|
80
|
+
}
|
|
81
|
+
//# sourceMappingURL=local-state.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"local-state.js","sourceRoot":"","sources":["../../src/config/local-state.ts"],"names":[],"mappings":"AACA,OAAO,UAAU,MAAM,kBAAkB,CAAC;AAC1C,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAC;AAC/D,OAAO,EAAE,YAAY,EAAkB,MAAM,gBAAgB,CAAC;AAc9D,SAAS,WAAW,CAAC,MAAgB;IACnC,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;AACrD,CAAC;AAED,SAAS,YAAY,CAAC,KAAa,EAAE,MAAc;IACjD,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;IAC9C,OAAO,QAAQ,KAAK,EAAE,IAAI,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC;AACvF,CAAC;AAED,SAAS,aAAa,CAAC,MAAgB;IACrC,MAAM,UAAU,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC;IACzF,OAAO,UAAU,CAAC,MAAM,CAAC,CAAC,SAAS,EAAE,KAAK,EAAE,EAAE;QAC5C,OAAO,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,KAAK,SAAS,IAAI,YAAY,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC,CAAC;IAC/G,CAAC,CAAC,CAAC;AACL,CAAC;AAED,SAAS,qBAAqB,CAAC,KAAgB;IAC7C,MAAM,SAAS,GAAG,IAAI,oBAAoB,EAAE,CAAC,cAAc,EAAE,CAAC;IAC9D,IAAI,CAAC,SAAS,CAAC,UAAU,EAAE,CAAC;QAC1B,OAAO,EAAE,cAAc,EAAE,EAAE,EAAE,uBAAuB,EAAE,EAAE,EAAE,CAAC;IAC7D,CAAC;IAED,MAAM,kBAAkB,GAAG,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,UAAU,CAAC;QAC9D,CAAC,CAAC,SAAS,CAAC,UAAU;QACtB,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,EAAE,SAAS,CAAC,UAAU,CAAC,CAAC;IAEtD,IAAI,YAAY,CAAC,kBAAkB,EAAE,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC;QACpD,OAAO,EAAE,cAAc,EAAE,CAAC,kBAAkB,CAAC,EAAE,uBAAuB,EAAE,EAAE,EAAE,CAAC;IAC/E,CAAC;IAED,OAAO,EAAE,cAAc,EAAE,EAAE,EAAE,uBAAuB,EAAE,CAAC,kBAAkB,CAAC,EAAE,CAAC;AAC/E,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAC,QAAwB,cAAc;IACzE,MAAM,KAAK,GAAG,YAAY,EAAE,CAAC;IAC7B,MAAM,WAAW,GAAG,WAAW,CAAC,CAAC,KAAK,CAAC,cAAc,EAAE,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC;IAC7E,MAAM,eAAe,GAAG,WAAW,CAAC;QAClC,KAAK,CAAC,mBAAmB;QACzB,KAAK,CAAC,kBAAkB;QACxB,KAAK,CAAC,wBAAwB;QAC9B,KAAK,CAAC,uBAAuB;KAC9B,CAAC,CAAC;IACH,MAAM,EAAE,cAAc,EAAE,uBAAuB,EAAE,GAAG,qBAAqB,CAAC,KAAK,CAAC,CAAC;IAEjF,IAAI,WAAqB,CAAC;IAC1B,QAAQ,KAAK,EAAE,CAAC;QACd,KAAK,QAAQ;YACX,WAAW,GAAG,CAAC,GAAG,WAAW,CAAC,CAAC;YAC/B,MAAM;QACR,KAAK,cAAc;YACjB,WAAW,GAAG,CAAC,GAAG,WAAW,EAAE,GAAG,eAAe,CAAC,CAAC;YACnD,MAAM;QACR,KAAK,MAAM;YACT,WAAW,GAAG,CAAC,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,wBAAwB,EAAE,KAAK,CAAC,uBAAuB,CAAC,CAAC;YAC7F,MAAM;QACR;YACE,WAAW,GAAG,CAAC,GAAG,WAAW,EAAE,GAAG,eAAe,CAAC,CAAC;YACnD,MAAM;IACV,CAAC;IAED,OAAO;QACL,KAAK;QACL,KAAK;QACL,WAAW;QACX,eAAe;QACf,WAAW,EAAE,aAAa,CAAC,WAAW,CAAC;QACvC,cAAc;QACd,uBAAuB;KACxB,CAAC;AACJ,CAAC;AAOD,KAAK,UAAU,UAAU,CAAC,UAAkB;IAC1C,MAAM,UAAU,CAAC,EAAE,CAAC,UAAU,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;AACpE,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,mBAAmB,CAAC,KAAqB,EAAE,UAAgC,EAAE;IACjG,MAAM,IAAI,GAAG,oBAAoB,CAAC,KAAK,CAAC,CAAC;IACzC,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC;QACpB,KAAK,MAAM,UAAU,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;YAC1C,MAAM,UAAU,CAAC,UAAU,CAAC,CAAC;QAC/B,CAAC;IACH,CAAC;IAED,OAAO;QACL,IAAI;QACJ,YAAY,EAAE,CAAC,GAAG,IAAI,CAAC,WAAW,CAAC;KACpC,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
export interface YagrN8nLocalConfig {
|
|
2
|
+
host?: string;
|
|
3
|
+
syncFolder?: string;
|
|
4
|
+
projectId?: string;
|
|
5
|
+
projectName?: string;
|
|
6
|
+
instanceIdentifier?: string;
|
|
7
|
+
customNodesPath?: string;
|
|
8
|
+
}
|
|
9
|
+
export declare class YagrN8nConfigService {
|
|
10
|
+
private readonly globalStore;
|
|
11
|
+
private readonly localConfigPath;
|
|
12
|
+
private readonly legacyCredentialsPath;
|
|
13
|
+
constructor();
|
|
14
|
+
getLocalConfig(): YagrN8nLocalConfig;
|
|
15
|
+
saveLocalConfig(config: YagrN8nLocalConfig): void;
|
|
16
|
+
saveBootstrapState(host: string, syncFolder?: string): void;
|
|
17
|
+
getApiKey(host: string): string | undefined;
|
|
18
|
+
saveApiKey(host: string, apiKey: string): void;
|
|
19
|
+
clearLocalConfig(): void;
|
|
20
|
+
clearAllApiKeys(): void;
|
|
21
|
+
getOrCreateInstanceIdentifier(host: string): Promise<string>;
|
|
22
|
+
private normalizeHost;
|
|
23
|
+
private migrateLegacyCredentials;
|
|
24
|
+
}
|
|
25
|
+
//# sourceMappingURL=n8n-config-service.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"n8n-config-service.d.ts","sourceRoot":"","sources":["../../src/config/n8n-config-service.ts"],"names":[],"mappings":"AAKA,MAAM,WAAW,kBAAkB;IACjC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAMD,qBAAa,oBAAoB;IAC/B,OAAO,CAAC,QAAQ,CAAC,WAAW,CAA2B;IACvD,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAS;IACzC,OAAO,CAAC,QAAQ,CAAC,qBAAqB,CAAS;;IAc/C,cAAc,IAAI,kBAAkB;IAapC,eAAe,CAAC,MAAM,EAAE,kBAAkB,GAAG,IAAI;IAIjD,kBAAkB,CAAC,IAAI,EAAE,MAAM,EAAE,UAAU,SAAc,GAAG,IAAI;IAchE,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS;IAK3C,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI;IAM9C,gBAAgB,IAAI,IAAI;IAMxB,eAAe,IAAI,IAAI;IAIjB,6BAA6B,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IA0BlE,OAAO,CAAC,aAAa;IASrB,OAAO,CAAC,wBAAwB;CAoBjC"}
|
|
@@ -0,0 +1,117 @@
|
|
|
1
|
+
import Conf from 'conf';
|
|
2
|
+
import fs from 'node:fs';
|
|
3
|
+
import { createFallbackInstanceIdentifier, resolveInstanceIdentifier } from 'n8nac';
|
|
4
|
+
import { ensureYagrHomeDir, getYagrPaths } from './yagr-home.js';
|
|
5
|
+
export class YagrN8nConfigService {
|
|
6
|
+
globalStore;
|
|
7
|
+
localConfigPath;
|
|
8
|
+
legacyCredentialsPath;
|
|
9
|
+
constructor() {
|
|
10
|
+
const paths = getYagrPaths();
|
|
11
|
+
ensureYagrHomeDir();
|
|
12
|
+
this.globalStore = new Conf({
|
|
13
|
+
cwd: paths.homeDir,
|
|
14
|
+
configName: 'n8n-credentials',
|
|
15
|
+
});
|
|
16
|
+
this.localConfigPath = paths.n8nConfigPath;
|
|
17
|
+
this.legacyCredentialsPath = paths.legacyN8nCredentialsPath;
|
|
18
|
+
this.migrateLegacyCredentials();
|
|
19
|
+
}
|
|
20
|
+
getLocalConfig() {
|
|
21
|
+
if (!fs.existsSync(this.localConfigPath)) {
|
|
22
|
+
return {};
|
|
23
|
+
}
|
|
24
|
+
try {
|
|
25
|
+
const content = fs.readFileSync(this.localConfigPath, 'utf-8');
|
|
26
|
+
return JSON.parse(content);
|
|
27
|
+
}
|
|
28
|
+
catch {
|
|
29
|
+
return {};
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
saveLocalConfig(config) {
|
|
33
|
+
fs.writeFileSync(this.localConfigPath, JSON.stringify(config, null, 2));
|
|
34
|
+
}
|
|
35
|
+
saveBootstrapState(host, syncFolder = 'workflows') {
|
|
36
|
+
const current = this.getLocalConfig();
|
|
37
|
+
const bootstrapState = {
|
|
38
|
+
host,
|
|
39
|
+
syncFolder,
|
|
40
|
+
};
|
|
41
|
+
if (current.customNodesPath) {
|
|
42
|
+
bootstrapState.customNodesPath = current.customNodesPath;
|
|
43
|
+
}
|
|
44
|
+
this.saveLocalConfig(bootstrapState);
|
|
45
|
+
}
|
|
46
|
+
getApiKey(host) {
|
|
47
|
+
const credentials = this.globalStore.get('hosts') ?? {};
|
|
48
|
+
return credentials[this.normalizeHost(host)];
|
|
49
|
+
}
|
|
50
|
+
saveApiKey(host, apiKey) {
|
|
51
|
+
const credentials = this.globalStore.get('hosts') ?? {};
|
|
52
|
+
credentials[this.normalizeHost(host)] = apiKey;
|
|
53
|
+
this.globalStore.set('hosts', credentials);
|
|
54
|
+
}
|
|
55
|
+
clearLocalConfig() {
|
|
56
|
+
if (fs.existsSync(this.localConfigPath)) {
|
|
57
|
+
fs.unlinkSync(this.localConfigPath);
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
clearAllApiKeys() {
|
|
61
|
+
this.globalStore.set('hosts', {});
|
|
62
|
+
}
|
|
63
|
+
async getOrCreateInstanceIdentifier(host) {
|
|
64
|
+
const local = this.getLocalConfig();
|
|
65
|
+
const apiKey = this.getApiKey(host);
|
|
66
|
+
if (!apiKey) {
|
|
67
|
+
throw new Error('API key not found');
|
|
68
|
+
}
|
|
69
|
+
try {
|
|
70
|
+
const { identifier } = await resolveInstanceIdentifier({ host, apiKey });
|
|
71
|
+
this.saveLocalConfig({
|
|
72
|
+
...local,
|
|
73
|
+
host,
|
|
74
|
+
instanceIdentifier: identifier,
|
|
75
|
+
});
|
|
76
|
+
return identifier;
|
|
77
|
+
}
|
|
78
|
+
catch {
|
|
79
|
+
const fallbackIdentifier = createFallbackInstanceIdentifier(host, apiKey);
|
|
80
|
+
this.saveLocalConfig({
|
|
81
|
+
...local,
|
|
82
|
+
host,
|
|
83
|
+
instanceIdentifier: fallbackIdentifier,
|
|
84
|
+
});
|
|
85
|
+
return fallbackIdentifier;
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
normalizeHost(host) {
|
|
89
|
+
try {
|
|
90
|
+
const url = new URL(host);
|
|
91
|
+
return url.origin;
|
|
92
|
+
}
|
|
93
|
+
catch {
|
|
94
|
+
return host.replace(/\/$/, '');
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
migrateLegacyCredentials() {
|
|
98
|
+
if (this.globalStore.path === this.legacyCredentialsPath) {
|
|
99
|
+
return;
|
|
100
|
+
}
|
|
101
|
+
const currentHosts = this.globalStore.get('hosts') ?? {};
|
|
102
|
+
if (Object.keys(currentHosts).length > 0 || !fs.existsSync(this.legacyCredentialsPath)) {
|
|
103
|
+
return;
|
|
104
|
+
}
|
|
105
|
+
try {
|
|
106
|
+
const content = JSON.parse(fs.readFileSync(this.legacyCredentialsPath, 'utf-8'));
|
|
107
|
+
const legacyHosts = content.hosts ?? {};
|
|
108
|
+
if (Object.keys(legacyHosts).length > 0) {
|
|
109
|
+
this.globalStore.set('hosts', legacyHosts);
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
catch {
|
|
113
|
+
// Ignore malformed legacy files and start fresh in the Yagr home.
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
//# sourceMappingURL=n8n-config-service.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"n8n-config-service.js","sourceRoot":"","sources":["../../src/config/n8n-config-service.ts"],"names":[],"mappings":"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"}
|
|
@@ -31,6 +31,7 @@ export interface YagrLocalConfig {
|
|
|
31
31
|
export declare class YagrConfigService {
|
|
32
32
|
private readonly globalStore;
|
|
33
33
|
private readonly localConfigPath;
|
|
34
|
+
private readonly legacyCredentialsPath;
|
|
34
35
|
constructor();
|
|
35
36
|
getLocalConfig(): YagrLocalConfig;
|
|
36
37
|
saveLocalConfig(config: YagrLocalConfig): void;
|
|
@@ -47,5 +48,6 @@ export declare class YagrConfigService {
|
|
|
47
48
|
getTelegramBotToken(): string | undefined;
|
|
48
49
|
saveTelegramBotToken(botToken: string): void;
|
|
49
50
|
clearTelegramBotToken(): void;
|
|
51
|
+
private migrateLegacyCredentials;
|
|
50
52
|
}
|
|
51
53
|
//# sourceMappingURL=yagr-config-service.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"yagr-config-service.d.ts","sourceRoot":"","sources":["../../src/config/yagr-config-service.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"yagr-config-service.d.ts","sourceRoot":"","sources":["../../src/config/yagr-config-service.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAC1D,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAC;AAEzE,wBAAgB,wBAAwB,CAAC,QAAQ,EAAE,SAAS,MAAM,EAAE,GAAG,SAAS,GAAG,cAAc,EAAE,CAUlG;AAED,MAAM,WAAW,sBAAsB;IACrC,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,kBAAkB;IACjC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,WAAW,CAAC,EAAE,sBAAsB,EAAE,CAAC;CACxC;AAED,MAAM,WAAW,iBAAiB;IAChC,eAAe,CAAC,EAAE,cAAc,EAAE,CAAC;IACnC,KAAK,CAAC,EAAE;QACN,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,IAAI,CAAC,EAAE,MAAM,CAAC;KACf,CAAC;CACH;AAED,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,EAAE,iBAAiB,CAAC;IAC7B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,iBAAiB,CAAC;IAC5B,QAAQ,CAAC,EAAE,kBAAkB,CAAC;CAC/B;AASD,qBAAa,iBAAiB;IAC5B,OAAO,CAAC,QAAQ,CAAC,WAAW,CAA4B;IACxD,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAS;IACzC,OAAO,CAAC,QAAQ,CAAC,qBAAqB,CAAS;;IAc/C,cAAc,IAAI,eAAe;IAajC,eAAe,CAAC,MAAM,EAAE,eAAe,GAAG,IAAI;IAI9C,iBAAiB,CAAC,OAAO,EAAE,CAAC,MAAM,EAAE,eAAe,KAAK,eAAe,GAAG,eAAe;IAMzF,yBAAyB,IAAI,cAAc,EAAE;IAa7C,yBAAyB,CAAC,QAAQ,EAAE,cAAc,EAAE,GAAG,eAAe;IAWtE,oBAAoB,CAAC,OAAO,EAAE,cAAc,GAAG,eAAe;IAK9D,qBAAqB,CAAC,OAAO,EAAE,cAAc,GAAG,eAAe;IAK/D,SAAS,CAAC,QAAQ,EAAE,iBAAiB,GAAG,MAAM,GAAG,SAAS;IAK1D,UAAU,CAAC,QAAQ,EAAE,iBAAiB,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI;IAM7D,SAAS,CAAC,QAAQ,EAAE,iBAAiB,GAAG,OAAO;IAI/C,gBAAgB,IAAI,IAAI;IAMxB,eAAe,IAAI,IAAI;IAIvB,mBAAmB,IAAI,MAAM,GAAG,SAAS;IAIzC,oBAAoB,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI;IAI5C,qBAAqB,IAAI,IAAI;IAI7B,OAAO,CAAC,wBAAwB;CAuBjC"}
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import Conf from 'conf';
|
|
2
2
|
import fs from 'node:fs';
|
|
3
|
-
import
|
|
4
|
-
import { ensureYagrHomeDir, getYagrHomeDir } from './yagr-home.js';
|
|
3
|
+
import { ensureYagrHomeDir, getYagrPaths } from './yagr-home.js';
|
|
5
4
|
export function normalizeGatewaySurfaces(surfaces) {
|
|
6
5
|
const normalized = [];
|
|
7
6
|
for (const surface of surfaces ?? []) {
|
|
@@ -14,13 +13,17 @@ export function normalizeGatewaySurfaces(surfaces) {
|
|
|
14
13
|
export class YagrConfigService {
|
|
15
14
|
globalStore;
|
|
16
15
|
localConfigPath;
|
|
16
|
+
legacyCredentialsPath;
|
|
17
17
|
constructor() {
|
|
18
|
+
const paths = getYagrPaths();
|
|
18
19
|
ensureYagrHomeDir();
|
|
19
20
|
this.globalStore = new Conf({
|
|
20
|
-
|
|
21
|
+
cwd: paths.homeDir,
|
|
21
22
|
configName: 'credentials',
|
|
22
23
|
});
|
|
23
|
-
this.localConfigPath =
|
|
24
|
+
this.localConfigPath = paths.yagrConfigPath;
|
|
25
|
+
this.legacyCredentialsPath = paths.legacyYagrCredentialsPath;
|
|
26
|
+
this.migrateLegacyCredentials();
|
|
24
27
|
}
|
|
25
28
|
getLocalConfig() {
|
|
26
29
|
if (!fs.existsSync(this.localConfigPath)) {
|
|
@@ -99,5 +102,27 @@ export class YagrConfigService {
|
|
|
99
102
|
clearTelegramBotToken() {
|
|
100
103
|
this.globalStore.delete('telegram.botToken');
|
|
101
104
|
}
|
|
105
|
+
migrateLegacyCredentials() {
|
|
106
|
+
if (this.globalStore.path === this.legacyCredentialsPath) {
|
|
107
|
+
return;
|
|
108
|
+
}
|
|
109
|
+
const currentProviders = this.globalStore.get('providers') ?? {};
|
|
110
|
+
const currentBotToken = this.globalStore.get('telegram.botToken');
|
|
111
|
+
if ((Object.keys(currentProviders).length > 0 || currentBotToken) || !fs.existsSync(this.legacyCredentialsPath)) {
|
|
112
|
+
return;
|
|
113
|
+
}
|
|
114
|
+
try {
|
|
115
|
+
const content = JSON.parse(fs.readFileSync(this.legacyCredentialsPath, 'utf-8'));
|
|
116
|
+
if (content.providers && Object.keys(content.providers).length > 0) {
|
|
117
|
+
this.globalStore.set('providers', content.providers);
|
|
118
|
+
}
|
|
119
|
+
if (content.telegram?.botToken) {
|
|
120
|
+
this.globalStore.set('telegram.botToken', content.telegram.botToken);
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
catch {
|
|
124
|
+
// Ignore malformed legacy files and start fresh in the Yagr home.
|
|
125
|
+
}
|
|
126
|
+
}
|
|
102
127
|
}
|
|
103
128
|
//# sourceMappingURL=yagr-config-service.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"yagr-config-service.js","sourceRoot":"","sources":["../../src/config/yagr-config-service.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,
|
|
1
|
+
{"version":3,"file":"yagr-config-service.js","sourceRoot":"","sources":["../../src/config/yagr-config-service.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,19 @@
|
|
|
1
|
+
export interface YagrPaths {
|
|
2
|
+
launchDir: string;
|
|
3
|
+
homeDir: string;
|
|
4
|
+
yagrConfigPath: string;
|
|
5
|
+
yagrCredentialsPath: string;
|
|
6
|
+
n8nConfigPath: string;
|
|
7
|
+
n8nCredentialsPath: string;
|
|
8
|
+
legacyYagrCredentialsDir: string;
|
|
9
|
+
legacyYagrCredentialsPath: string;
|
|
10
|
+
legacyN8nCredentialsDir: string;
|
|
11
|
+
legacyN8nCredentialsPath: string;
|
|
12
|
+
}
|
|
1
13
|
export declare function getYagrLaunchDir(): string;
|
|
14
|
+
export declare function resolveYagrHomeDir(env?: NodeJS.ProcessEnv, platform?: NodeJS.Platform, homedir?: string, launchDir?: string): string;
|
|
2
15
|
export declare function getYagrHomeDir(): string;
|
|
16
|
+
export declare function resolveLegacyConfStorePath(projectName: string, configName: string, env?: NodeJS.ProcessEnv, platform?: NodeJS.Platform, homedir?: string): string;
|
|
17
|
+
export declare function getYagrPaths(): YagrPaths;
|
|
3
18
|
export declare function ensureYagrHomeDir(): string;
|
|
4
19
|
//# sourceMappingURL=yagr-home.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"yagr-home.d.ts","sourceRoot":"","sources":["../../src/config/yagr-home.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"yagr-home.d.ts","sourceRoot":"","sources":["../../src/config/yagr-home.ts"],"names":[],"mappings":"AAMA,MAAM,WAAW,SAAS;IACxB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,cAAc,EAAE,MAAM,CAAC;IACvB,mBAAmB,EAAE,MAAM,CAAC;IAC5B,aAAa,EAAE,MAAM,CAAC;IACtB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,wBAAwB,EAAE,MAAM,CAAC;IACjC,yBAAyB,EAAE,MAAM,CAAC;IAClC,uBAAuB,EAAE,MAAM,CAAC;IAChC,wBAAwB,EAAE,MAAM,CAAC;CAClC;AAMD,wBAAgB,gBAAgB,IAAI,MAAM,CAEzC;AAED,wBAAgB,kBAAkB,CAChC,GAAG,GAAE,MAAM,CAAC,UAAwB,EACpC,QAAQ,GAAE,MAAM,CAAC,QAA2B,EAC5C,OAAO,GAAE,MAAqB,EAC9B,SAAS,GAAE,MAA2B,GACrC,MAAM,CAkBR;AAED,wBAAgB,cAAc,IAAI,MAAM,CAEvC;AAED,wBAAgB,0BAA0B,CACxC,WAAW,EAAE,MAAM,EACnB,UAAU,EAAE,MAAM,EAClB,GAAG,GAAE,MAAM,CAAC,UAAwB,EACpC,QAAQ,GAAE,MAAM,CAAC,QAA2B,EAC5C,OAAO,GAAE,MAAqB,GAC7B,MAAM,CAaR;AAED,wBAAgB,YAAY,IAAI,SAAS,CAkBxC;AAED,wBAAgB,iBAAiB,IAAI,MAAM,CAI1C"}
|
package/dist/config/yagr-home.js
CHANGED
|
@@ -8,14 +8,54 @@ if (!process.env.YAGR_LAUNCH_CWD) {
|
|
|
8
8
|
export function getYagrLaunchDir() {
|
|
9
9
|
return process.env.YAGR_LAUNCH_CWD ?? initialLaunchDir;
|
|
10
10
|
}
|
|
11
|
-
export function
|
|
12
|
-
const configuredHome =
|
|
11
|
+
export function resolveYagrHomeDir(env = process.env, platform = process.platform, homedir = os.homedir(), launchDir = getYagrLaunchDir()) {
|
|
12
|
+
const configuredHome = env.YAGR_HOME?.trim();
|
|
13
13
|
if (configuredHome) {
|
|
14
14
|
return path.isAbsolute(configuredHome)
|
|
15
15
|
? configuredHome
|
|
16
|
-
: path.resolve(
|
|
16
|
+
: path.resolve(launchDir, configuredHome);
|
|
17
|
+
}
|
|
18
|
+
if (platform === 'win32') {
|
|
19
|
+
const appDataDir = env.APPDATA?.trim();
|
|
20
|
+
if (appDataDir) {
|
|
21
|
+
return path.join(appDataDir, 'yagr');
|
|
22
|
+
}
|
|
23
|
+
return path.join(homedir, 'AppData', 'Roaming', 'yagr');
|
|
17
24
|
}
|
|
18
|
-
return path.join(
|
|
25
|
+
return path.join(homedir, '.yagr');
|
|
26
|
+
}
|
|
27
|
+
export function getYagrHomeDir() {
|
|
28
|
+
return resolveYagrHomeDir(process.env, process.platform, os.homedir(), getYagrLaunchDir());
|
|
29
|
+
}
|
|
30
|
+
export function resolveLegacyConfStorePath(projectName, configName, env = process.env, platform = process.platform, homedir = os.homedir()) {
|
|
31
|
+
const suffix = `${projectName}-nodejs`;
|
|
32
|
+
if (platform === 'win32') {
|
|
33
|
+
const appDataDir = env.APPDATA?.trim() || path.join(homedir, 'AppData', 'Roaming');
|
|
34
|
+
return path.join(appDataDir, suffix, `${configName}.json`);
|
|
35
|
+
}
|
|
36
|
+
if (platform === 'darwin') {
|
|
37
|
+
return path.join(homedir, 'Library', 'Preferences', suffix, `${configName}.json`);
|
|
38
|
+
}
|
|
39
|
+
const xdgConfigHome = env.XDG_CONFIG_HOME?.trim() || path.join(homedir, '.config');
|
|
40
|
+
return path.join(xdgConfigHome, suffix, `${configName}.json`);
|
|
41
|
+
}
|
|
42
|
+
export function getYagrPaths() {
|
|
43
|
+
const launchDir = getYagrLaunchDir();
|
|
44
|
+
const homeDir = getYagrHomeDir();
|
|
45
|
+
const legacyYagrCredentialsPath = resolveLegacyConfStorePath('yagr', 'credentials');
|
|
46
|
+
const legacyN8nCredentialsPath = resolveLegacyConfStorePath('n8nac', 'credentials');
|
|
47
|
+
return {
|
|
48
|
+
launchDir,
|
|
49
|
+
homeDir,
|
|
50
|
+
yagrConfigPath: path.join(homeDir, 'yagr-config.json'),
|
|
51
|
+
yagrCredentialsPath: path.join(homeDir, 'credentials.json'),
|
|
52
|
+
n8nConfigPath: path.join(homeDir, 'n8nac-config.json'),
|
|
53
|
+
n8nCredentialsPath: path.join(homeDir, 'n8n-credentials.json'),
|
|
54
|
+
legacyYagrCredentialsDir: path.dirname(legacyYagrCredentialsPath),
|
|
55
|
+
legacyYagrCredentialsPath,
|
|
56
|
+
legacyN8nCredentialsDir: path.dirname(legacyN8nCredentialsPath),
|
|
57
|
+
legacyN8nCredentialsPath,
|
|
58
|
+
};
|
|
19
59
|
}
|
|
20
60
|
export function ensureYagrHomeDir() {
|
|
21
61
|
const homeDir = getYagrHomeDir();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"yagr-home.js","sourceRoot":"","sources":["../../src/config/yagr-home.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAE7B,MAAM,gBAAgB,GAAG,OAAO,CAAC,GAAG,CAAC,eAAe,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"yagr-home.js","sourceRoot":"","sources":["../../src/config/yagr-home.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"webui.d.ts","sourceRoot":"","sources":["../../src/gateway/webui.ts"],"names":[],"mappings":"AAeA,OAAO,EAAE,iBAAiB,EAAE,MAAM,kCAAkC,CAAC;
|
|
1
|
+
{"version":3,"file":"webui.d.ts","sourceRoot":"","sources":["../../src/gateway/webui.ts"],"names":[],"mappings":"AAeA,OAAO,EAAE,iBAAiB,EAAE,MAAM,kCAAkC,CAAC;AACrE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAOlD,OAAO,KAAK,EAAW,oBAAoB,EAAE,MAAM,YAAY,CAAC;AAChE,OAAO,KAAK,EAIV,cAAc,EAGf,MAAM,aAAa,CAAC;AA+BrB,MAAM,WAAW,kBAAkB;IACjC,UAAU,EAAE,OAAO,CAAC;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;CACb;AA0DD,wBAAgB,qBAAqB,CAAC,aAAa,oBAA0B,GAAG,kBAAkB,CAQjG;AAED,wBAAgB,yBAAyB,CACvC,cAAc,EAAE,MAAM,OAAO,CAAC,MAAM,CAAC,EACrC,OAAO,GAAE,cAAmB,EAC5B,aAAa,oBAA0B,GACtC,oBAAoB,CAUtB"}
|
package/dist/gateway/webui.js
CHANGED
|
@@ -1,18 +1,17 @@
|
|
|
1
1
|
import { randomUUID } from 'node:crypto';
|
|
2
2
|
import { createServer } from 'node:http';
|
|
3
|
-
import { execFile } from 'node:child_process';
|
|
4
3
|
import { readFile } from 'node:fs/promises';
|
|
5
4
|
import path from 'node:path';
|
|
6
5
|
import { fileURLToPath } from 'node:url';
|
|
7
|
-
import {
|
|
8
|
-
import {
|
|
6
|
+
import { N8nApiClient, WorkspaceSetupService, getDisplayProjectName, } from 'n8nac';
|
|
7
|
+
import { Command } from 'commander';
|
|
8
|
+
import { UpdateAiCommand } from 'n8nac/dist/commands/init-ai.js';
|
|
9
9
|
import { YagrAgent } from '../agent.js';
|
|
10
|
+
import { YagrN8nConfigService } from '../config/n8n-config-service.js';
|
|
10
11
|
import { YagrConfigService } from '../config/yagr-config-service.js';
|
|
11
|
-
import { getYagrHomeDir } from '../config/yagr-home.js';
|
|
12
12
|
import { createOnboardingToken, getTelegramGatewayStatus, resetTelegramGateway, } from './telegram.js';
|
|
13
13
|
import { getYagrSetupStatus } from '../setup.js';
|
|
14
14
|
import { resolveLanguageModelConfig } from '../llm/create-language-model.js';
|
|
15
|
-
const execFileAsync = promisify(execFile);
|
|
16
15
|
const __filename = fileURLToPath(import.meta.url);
|
|
17
16
|
const __dirname = path.dirname(__filename);
|
|
18
17
|
const DEFAULT_HOST = '127.0.0.1';
|
|
@@ -25,6 +24,7 @@ const VALID_PROVIDERS = [
|
|
|
25
24
|
'mistral',
|
|
26
25
|
'openrouter',
|
|
27
26
|
];
|
|
27
|
+
const ACTIVE_WEBUI_SURFACES = ['webui'];
|
|
28
28
|
const WEB_UI_HTML = `<!doctype html>
|
|
29
29
|
<html lang="en">
|
|
30
30
|
<head>
|
|
@@ -164,7 +164,7 @@ class WebUiGateway {
|
|
|
164
164
|
if (method === 'POST' && url.pathname === '/api/n8n/projects') {
|
|
165
165
|
const body = await this.readJson(request);
|
|
166
166
|
const projects = await this.fetchN8nProjects(String(body.host ?? ''), body.apiKey ? String(body.apiKey) : undefined);
|
|
167
|
-
const current = new
|
|
167
|
+
const current = new YagrN8nConfigService().getLocalConfig();
|
|
168
168
|
this.sendJson(response, 200, {
|
|
169
169
|
projects: projects.map((project) => ({ id: project.id, name: getDisplayProjectName(project) })),
|
|
170
170
|
selectedProjectId: current.projectId,
|
|
@@ -259,7 +259,9 @@ class WebUiGateway {
|
|
|
259
259
|
if (!message) {
|
|
260
260
|
throw new Error('Message is required.');
|
|
261
261
|
}
|
|
262
|
-
const setupStatus = getYagrSetupStatus(this.configService, new
|
|
262
|
+
const setupStatus = getYagrSetupStatus(this.configService, new YagrN8nConfigService(), {
|
|
263
|
+
activeSurfaces: [...ACTIVE_WEBUI_SURFACES],
|
|
264
|
+
});
|
|
263
265
|
if (!setupStatus.ready) {
|
|
264
266
|
throw new Error(`Yagr is not ready yet. Missing: ${setupStatus.missingSteps.join(', ')}.`);
|
|
265
267
|
}
|
|
@@ -302,14 +304,16 @@ class WebUiGateway {
|
|
|
302
304
|
this.sendJson(response, 404, { error: 'Not found' });
|
|
303
305
|
}
|
|
304
306
|
async buildSnapshot() {
|
|
305
|
-
const n8nService = new
|
|
307
|
+
const n8nService = new YagrN8nConfigService();
|
|
306
308
|
const n8nConfig = n8nService.getLocalConfig();
|
|
307
|
-
const setupStatus = getYagrSetupStatus(this.configService, n8nService
|
|
309
|
+
const setupStatus = getYagrSetupStatus(this.configService, n8nService, {
|
|
310
|
+
activeSurfaces: [...ACTIVE_WEBUI_SURFACES],
|
|
311
|
+
});
|
|
308
312
|
const telegramStatus = getTelegramGatewayStatus(this.configService);
|
|
309
313
|
const webUiStatus = getWebUiGatewayStatus(this.configService);
|
|
310
314
|
const yagrConfig = this.configService.getLocalConfig();
|
|
311
|
-
const enabledSurfaces = this.configService.getEnabledGatewaySurfaces();
|
|
312
|
-
const startableSurfaces = enabledSurfaces.filter((surface) => surface === 'telegram' && telegramStatus.configured);
|
|
315
|
+
const enabledSurfaces = Array.from(new Set([...this.configService.getEnabledGatewaySurfaces(), ...ACTIVE_WEBUI_SURFACES]));
|
|
316
|
+
const startableSurfaces = enabledSurfaces.filter((surface) => surface === 'webui' || (surface === 'telegram' && telegramStatus.configured));
|
|
313
317
|
let availableModels = [];
|
|
314
318
|
if (yagrConfig.provider) {
|
|
315
319
|
const apiKey = this.configService.getApiKey(yagrConfig.provider);
|
|
@@ -355,7 +359,7 @@ class WebUiGateway {
|
|
|
355
359
|
if (!normalizedHost) {
|
|
356
360
|
throw new Error('n8n host is required.');
|
|
357
361
|
}
|
|
358
|
-
const configService = new
|
|
362
|
+
const configService = new YagrN8nConfigService();
|
|
359
363
|
const apiKey = apiKeyOverride ?? configService.getApiKey(normalizedHost);
|
|
360
364
|
if (!apiKey) {
|
|
361
365
|
throw new Error('No n8n API key available for that host.');
|
|
@@ -377,7 +381,7 @@ class WebUiGateway {
|
|
|
377
381
|
if (!projectId) {
|
|
378
382
|
throw new Error('Select an n8n project first.');
|
|
379
383
|
}
|
|
380
|
-
const configService = new
|
|
384
|
+
const configService = new YagrN8nConfigService();
|
|
381
385
|
const apiKey = input.apiKey?.trim() || configService.getApiKey(host);
|
|
382
386
|
if (!apiKey) {
|
|
383
387
|
throw new Error('An n8n API key is required.');
|
|
@@ -399,7 +403,7 @@ class WebUiGateway {
|
|
|
399
403
|
});
|
|
400
404
|
WorkspaceSetupService.ensureWorkspaceFiles(syncFolder);
|
|
401
405
|
try {
|
|
402
|
-
await
|
|
406
|
+
await refreshAiContext({ host, apiKey });
|
|
403
407
|
return undefined;
|
|
404
408
|
}
|
|
405
409
|
catch (error) {
|
|
@@ -455,7 +459,9 @@ class WebUiGateway {
|
|
|
455
459
|
this.sendText(response, 200, content, contentType);
|
|
456
460
|
}
|
|
457
461
|
async handleStreamingChat(response, sessionId, message) {
|
|
458
|
-
const setupStatus = getYagrSetupStatus(this.configService, new
|
|
462
|
+
const setupStatus = getYagrSetupStatus(this.configService, new YagrN8nConfigService(), {
|
|
463
|
+
activeSurfaces: [...ACTIVE_WEBUI_SURFACES],
|
|
464
|
+
});
|
|
459
465
|
if (!setupStatus.ready) {
|
|
460
466
|
this.sendJson(response, 400, { error: `Yagr is not ready yet. Missing: ${setupStatus.missingSteps.join(', ')}.` });
|
|
461
467
|
return;
|
|
@@ -524,6 +530,17 @@ class WebUiGateway {
|
|
|
524
530
|
});
|
|
525
531
|
return;
|
|
526
532
|
}
|
|
533
|
+
if (event.type === 'embed') {
|
|
534
|
+
writeEvent({
|
|
535
|
+
type: 'embed',
|
|
536
|
+
kind: event.kind,
|
|
537
|
+
workflowId: event.workflowId,
|
|
538
|
+
url: event.url,
|
|
539
|
+
title: event.title,
|
|
540
|
+
diagram: event.diagram,
|
|
541
|
+
});
|
|
542
|
+
return;
|
|
543
|
+
}
|
|
527
544
|
};
|
|
528
545
|
const pushCompactionEvent = (event) => {
|
|
529
546
|
writeEvent({
|
|
@@ -653,11 +670,8 @@ async function resolveTelegramBotIdentity(botToken) {
|
|
|
653
670
|
firstName: me.first_name,
|
|
654
671
|
};
|
|
655
672
|
}
|
|
656
|
-
async function
|
|
657
|
-
const
|
|
658
|
-
await
|
|
659
|
-
cwd: getYagrHomeDir(),
|
|
660
|
-
env: process.env,
|
|
661
|
-
});
|
|
673
|
+
async function refreshAiContext(credentials) {
|
|
674
|
+
const updateAi = new UpdateAiCommand(new Command());
|
|
675
|
+
await updateAi.run({}, credentials);
|
|
662
676
|
}
|
|
663
677
|
//# sourceMappingURL=webui.js.map
|