@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.
Files changed (66) hide show
  1. package/LICENSE +21 -201
  2. package/README.md +49 -32
  3. package/dist/cli.js +78 -0
  4. package/dist/cli.js.map +1 -1
  5. package/dist/config/load-n8n-engine-config.d.ts +3 -3
  6. package/dist/config/load-n8n-engine-config.d.ts.map +1 -1
  7. package/dist/config/load-n8n-engine-config.js +3 -3
  8. package/dist/config/load-n8n-engine-config.js.map +1 -1
  9. package/dist/config/local-state.d.ts +20 -0
  10. package/dist/config/local-state.d.ts.map +1 -0
  11. package/dist/config/local-state.js +81 -0
  12. package/dist/config/local-state.js.map +1 -0
  13. package/dist/config/n8n-config-service.d.ts +25 -0
  14. package/dist/config/n8n-config-service.d.ts.map +1 -0
  15. package/dist/config/n8n-config-service.js +117 -0
  16. package/dist/config/n8n-config-service.js.map +1 -0
  17. package/dist/config/yagr-config-service.d.ts +2 -0
  18. package/dist/config/yagr-config-service.d.ts.map +1 -1
  19. package/dist/config/yagr-config-service.js +29 -4
  20. package/dist/config/yagr-config-service.js.map +1 -1
  21. package/dist/config/yagr-home.d.ts +15 -0
  22. package/dist/config/yagr-home.d.ts.map +1 -1
  23. package/dist/config/yagr-home.js +44 -4
  24. package/dist/config/yagr-home.js.map +1 -1
  25. package/dist/gateway/webui.d.ts.map +1 -1
  26. package/dist/gateway/webui.js +35 -21
  27. package/dist/gateway/webui.js.map +1 -1
  28. package/dist/index.d.ts +6 -0
  29. package/dist/index.d.ts.map +1 -1
  30. package/dist/index.js +3 -0
  31. package/dist/index.js.map +1 -1
  32. package/dist/prompt/build-system-prompt.d.ts.map +1 -1
  33. package/dist/prompt/build-system-prompt.js +3 -0
  34. package/dist/prompt/build-system-prompt.js.map +1 -1
  35. package/dist/setup.d.ts +5 -3
  36. package/dist/setup.d.ts.map +1 -1
  37. package/dist/setup.js +16 -17
  38. package/dist/setup.js.map +1 -1
  39. package/dist/tools/build-tools.d.ts +57 -28
  40. package/dist/tools/build-tools.d.ts.map +1 -1
  41. package/dist/tools/build-tools.js +2 -0
  42. package/dist/tools/build-tools.js.map +1 -1
  43. package/dist/tools/deploy.d.ts +19 -19
  44. package/dist/tools/generate-workflow.d.ts +8 -8
  45. package/dist/tools/index.d.ts +1 -0
  46. package/dist/tools/index.d.ts.map +1 -1
  47. package/dist/tools/index.js +1 -0
  48. package/dist/tools/index.js.map +1 -1
  49. package/dist/tools/manage-workflow.d.ts +3 -3
  50. package/dist/tools/n8nac.d.ts +12 -12
  51. package/dist/tools/observer.d.ts +8 -0
  52. package/dist/tools/observer.d.ts.map +1 -1
  53. package/dist/tools/observer.js.map +1 -1
  54. package/dist/tools/present-workflow-result.d.ts +32 -0
  55. package/dist/tools/present-workflow-result.d.ts.map +1 -0
  56. package/dist/tools/present-workflow-result.js +30 -0
  57. package/dist/tools/present-workflow-result.js.map +1 -0
  58. package/dist/tools/request-required-action.d.ts +3 -3
  59. package/dist/tools/validate.d.ts +19 -19
  60. package/dist/types.d.ts +8 -0
  61. package/dist/types.d.ts.map +1 -1
  62. package/dist/webui/app.js +385 -49
  63. package/dist/webui/app.js.map +3 -3
  64. package/dist/webui/styles.css +515 -102
  65. package/dist/webui/styles.css.map +2 -2
  66. 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":"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"}
@@ -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":"AAIA,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;AAED,qBAAa,iBAAiB;IAC5B,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAO;IACnC,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAS;;IAWzC,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;CAG9B"}
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 path from 'node:path';
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
- projectName: 'yagr',
21
+ cwd: paths.homeDir,
21
22
  configName: 'credentials',
22
23
  });
23
- this.localConfigPath = path.join(getYagrHomeDir(), 'yagr-config.json');
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":"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"}
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":"AAUA,wBAAgB,gBAAgB,IAAI,MAAM,CAEzC;AAED,wBAAgB,cAAc,IAAI,MAAM,CASvC;AAED,wBAAgB,iBAAiB,IAAI,MAAM,CAI1C"}
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"}
@@ -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 getYagrHomeDir() {
12
- const configuredHome = process.env.YAGR_HOME?.trim();
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(getYagrLaunchDir(), configuredHome);
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(os.homedir(), '.yagr');
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;AAEtE,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,eAAe,EAAE,CAAC;IACjC,OAAO,CAAC,GAAG,CAAC,eAAe,GAAG,gBAAgB,CAAC;AACjD,CAAC;AAED,MAAM,UAAU,gBAAgB;IAC9B,OAAO,OAAO,CAAC,GAAG,CAAC,eAAe,IAAI,gBAAgB,CAAC;AACzD,CAAC;AAED,MAAM,UAAU,cAAc;IAC5B,MAAM,cAAc,GAAG,OAAO,CAAC,GAAG,CAAC,SAAS,EAAE,IAAI,EAAE,CAAC;IACrD,IAAI,cAAc,EAAE,CAAC;QACnB,OAAO,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC;YACpC,CAAC,CAAC,cAAc;YAChB,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,gBAAgB,EAAE,EAAE,cAAc,CAAC,CAAC;IACvD,CAAC;IAED,OAAO,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,OAAO,CAAC,CAAC;AAC1C,CAAC;AAED,MAAM,UAAU,iBAAiB;IAC/B,MAAM,OAAO,GAAG,cAAc,EAAE,CAAC;IACjC,EAAE,CAAC,SAAS,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC3C,OAAO,OAAO,CAAC;AACjB,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;AAErE,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;AAgCrB,MAAM,WAAW,kBAAkB;IACjC,UAAU,EAAE,OAAO,CAAC;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;CACb;AAyDD,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"}
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"}
@@ -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 { promisify } from 'node:util';
8
- import { ConfigService as N8nConfigService, N8nApiClient, WorkspaceSetupService, getDisplayProjectName, } from 'n8nac';
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 N8nConfigService().getLocalConfig();
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 N8nConfigService());
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 N8nConfigService();
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 N8nConfigService();
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 N8nConfigService();
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 runN8nacCommand(['update-ai']);
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 N8nConfigService());
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 runN8nacCommand(args) {
657
- const command = process.platform === 'win32' ? 'npx.cmd' : 'npx';
658
- await execFileAsync(command, ['--yes', 'n8nac', ...args], {
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