agentlang 0.10.2 → 0.10.3
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/README.md +7 -14
- package/out/api/http.d.ts +4 -0
- package/out/api/http.d.ts.map +1 -1
- package/out/api/http.js +171 -26
- package/out/api/http.js.map +1 -1
- package/out/cli/main.d.ts.map +1 -1
- package/out/cli/main.js +3 -0
- package/out/cli/main.js.map +1 -1
- package/out/extension/main.cjs +250 -250
- package/out/extension/main.cjs.map +2 -2
- package/out/language/agentlang-validator.d.ts.map +1 -1
- package/out/language/agentlang-validator.js +4 -0
- package/out/language/agentlang-validator.js.map +1 -1
- package/out/language/error-reporter.d.ts +53 -0
- package/out/language/error-reporter.d.ts.map +1 -0
- package/out/language/error-reporter.js +879 -0
- package/out/language/error-reporter.js.map +1 -0
- package/out/language/generated/ast.d.ts +51 -1
- package/out/language/generated/ast.d.ts.map +1 -1
- package/out/language/generated/ast.js +40 -0
- package/out/language/generated/ast.js.map +1 -1
- package/out/language/generated/grammar.d.ts.map +1 -1
- package/out/language/generated/grammar.js +286 -190
- package/out/language/generated/grammar.js.map +1 -1
- package/out/language/main.cjs +828 -694
- package/out/language/main.cjs.map +3 -3
- package/out/language/parser.d.ts +4 -2
- package/out/language/parser.d.ts.map +1 -1
- package/out/language/parser.js +30 -97
- package/out/language/parser.js.map +1 -1
- package/out/language/syntax.d.ts +2 -0
- package/out/language/syntax.d.ts.map +1 -1
- package/out/language/syntax.js +6 -0
- package/out/language/syntax.js.map +1 -1
- package/out/runtime/api.d.ts.map +1 -1
- package/out/runtime/api.js +22 -0
- package/out/runtime/api.js.map +1 -1
- package/out/runtime/defs.d.ts +1 -0
- package/out/runtime/defs.d.ts.map +1 -1
- package/out/runtime/defs.js +2 -1
- package/out/runtime/defs.js.map +1 -1
- package/out/runtime/document-retriever.d.ts +24 -0
- package/out/runtime/document-retriever.d.ts.map +1 -0
- package/out/runtime/document-retriever.js +258 -0
- package/out/runtime/document-retriever.js.map +1 -0
- package/out/runtime/embeddings/chunker.d.ts +18 -0
- package/out/runtime/embeddings/chunker.d.ts.map +1 -1
- package/out/runtime/embeddings/chunker.js +47 -15
- package/out/runtime/embeddings/chunker.js.map +1 -1
- package/out/runtime/embeddings/openai.d.ts.map +1 -1
- package/out/runtime/embeddings/openai.js +22 -9
- package/out/runtime/embeddings/openai.js.map +1 -1
- package/out/runtime/embeddings/provider.d.ts +1 -0
- package/out/runtime/embeddings/provider.d.ts.map +1 -1
- package/out/runtime/embeddings/provider.js +20 -1
- package/out/runtime/embeddings/provider.js.map +1 -1
- package/out/runtime/integration-client.d.ts +21 -0
- package/out/runtime/integration-client.d.ts.map +1 -0
- package/out/runtime/integration-client.js +112 -0
- package/out/runtime/integration-client.js.map +1 -0
- package/out/runtime/integrations.d.ts.map +1 -1
- package/out/runtime/integrations.js +20 -9
- package/out/runtime/integrations.js.map +1 -1
- package/out/runtime/interpreter.d.ts +1 -0
- package/out/runtime/interpreter.d.ts.map +1 -1
- package/out/runtime/interpreter.js +152 -17
- package/out/runtime/interpreter.js.map +1 -1
- package/out/runtime/loader.d.ts.map +1 -1
- package/out/runtime/loader.js +70 -7
- package/out/runtime/loader.js.map +1 -1
- package/out/runtime/logger.d.ts.map +1 -1
- package/out/runtime/logger.js +8 -1
- package/out/runtime/logger.js.map +1 -1
- package/out/runtime/module.d.ts +10 -0
- package/out/runtime/module.d.ts.map +1 -1
- package/out/runtime/module.js +68 -3
- package/out/runtime/module.js.map +1 -1
- package/out/runtime/modules/ai.d.ts +9 -2
- package/out/runtime/modules/ai.d.ts.map +1 -1
- package/out/runtime/modules/ai.js +219 -67
- package/out/runtime/modules/ai.js.map +1 -1
- package/out/runtime/resolvers/interface.d.ts +4 -0
- package/out/runtime/resolvers/interface.d.ts.map +1 -1
- package/out/runtime/resolvers/interface.js +14 -1
- package/out/runtime/resolvers/interface.js.map +1 -1
- package/out/runtime/resolvers/sqldb/database.d.ts +2 -0
- package/out/runtime/resolvers/sqldb/database.d.ts.map +1 -1
- package/out/runtime/resolvers/sqldb/database.js +142 -126
- package/out/runtime/resolvers/sqldb/database.js.map +1 -1
- package/out/runtime/resolvers/sqldb/dbutil.d.ts.map +1 -1
- package/out/runtime/resolvers/sqldb/dbutil.js +8 -0
- package/out/runtime/resolvers/sqldb/dbutil.js.map +1 -1
- package/out/runtime/resolvers/sqldb/impl.d.ts +1 -0
- package/out/runtime/resolvers/sqldb/impl.d.ts.map +1 -1
- package/out/runtime/resolvers/sqldb/impl.js +7 -0
- package/out/runtime/resolvers/sqldb/impl.js.map +1 -1
- package/out/runtime/resolvers/vector/lancedb-store.d.ts +16 -0
- package/out/runtime/resolvers/vector/lancedb-store.d.ts.map +1 -0
- package/out/runtime/resolvers/vector/lancedb-store.js +159 -0
- package/out/runtime/resolvers/vector/lancedb-store.js.map +1 -0
- package/out/runtime/resolvers/vector/types.d.ts +32 -0
- package/out/runtime/resolvers/vector/types.d.ts.map +1 -0
- package/out/runtime/resolvers/vector/types.js +2 -0
- package/out/runtime/resolvers/vector/types.js.map +1 -0
- package/out/runtime/services/documentFetcher.d.ts.map +1 -1
- package/out/runtime/services/documentFetcher.js +21 -6
- package/out/runtime/services/documentFetcher.js.map +1 -1
- package/out/runtime/state.d.ts +19 -1
- package/out/runtime/state.d.ts.map +1 -1
- package/out/runtime/state.js +36 -1
- package/out/runtime/state.js.map +1 -1
- package/out/syntaxes/agentlang.monarch.js +1 -1
- package/out/syntaxes/agentlang.monarch.js.map +1 -1
- package/package.json +19 -19
- package/src/api/http.ts +197 -37
- package/src/cli/main.ts +3 -0
- package/src/language/agentlang-validator.ts +3 -0
- package/src/language/agentlang.langium +3 -1
- package/src/language/error-reporter.ts +1028 -0
- package/src/language/generated/ast.ts +62 -0
- package/src/language/generated/grammar.ts +286 -190
- package/src/language/parser.ts +31 -100
- package/src/language/syntax.ts +8 -0
- package/src/runtime/api.ts +31 -0
- package/src/runtime/defs.ts +2 -1
- package/src/runtime/document-retriever.ts +311 -0
- package/src/runtime/embeddings/chunker.ts +52 -14
- package/src/runtime/embeddings/openai.ts +27 -9
- package/src/runtime/embeddings/provider.ts +22 -1
- package/src/runtime/integration-client.ts +158 -0
- package/src/runtime/integrations.ts +20 -11
- package/src/runtime/interpreter.ts +142 -12
- package/src/runtime/loader.ts +83 -5
- package/src/runtime/logger.ts +12 -1
- package/src/runtime/module.ts +78 -3
- package/src/runtime/modules/ai.ts +263 -76
- package/src/runtime/resolvers/interface.ts +19 -1
- package/src/runtime/resolvers/sqldb/database.ts +158 -130
- package/src/runtime/resolvers/sqldb/dbutil.ts +8 -0
- package/src/runtime/resolvers/sqldb/impl.ts +8 -0
- package/src/runtime/resolvers/vector/lancedb-store.ts +187 -0
- package/src/runtime/resolvers/vector/types.ts +39 -0
- package/src/runtime/services/documentFetcher.ts +21 -6
- package/src/runtime/state.ts +40 -1
- package/src/syntaxes/agentlang.monarch.ts +1 -1
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
let host;
|
|
2
|
+
let headers;
|
|
3
|
+
export function configureIntegrationClient(h, hdrs) {
|
|
4
|
+
host = h;
|
|
5
|
+
headers = hdrs;
|
|
6
|
+
}
|
|
7
|
+
export function isIntegrationClientConfigured() {
|
|
8
|
+
return host !== undefined;
|
|
9
|
+
}
|
|
10
|
+
export async function getIntegrationAuthHeaders(integrationName) {
|
|
11
|
+
var _a;
|
|
12
|
+
if (!host) {
|
|
13
|
+
throw new Error('Integration client not configured — call configureIntegrationClient() first');
|
|
14
|
+
}
|
|
15
|
+
const url = `${host}/integmanager.auth/authHeaders/${encodeURIComponent(integrationName)}`;
|
|
16
|
+
const response = await fetch(url, {
|
|
17
|
+
method: 'GET',
|
|
18
|
+
headers: Object.assign({ 'Content-Type': 'application/json' }, headers),
|
|
19
|
+
});
|
|
20
|
+
if (!response.ok) {
|
|
21
|
+
throw new Error(`Failed to get auth headers for integration "${integrationName}": ${response.status} ${response.statusText}`);
|
|
22
|
+
}
|
|
23
|
+
const data = await response.json();
|
|
24
|
+
// The response is either the entity directly or wrapped in an array
|
|
25
|
+
const result = Array.isArray(data) ? data[0] : data;
|
|
26
|
+
return (_a = result === null || result === void 0 ? void 0 : result.headers) !== null && _a !== void 0 ? _a : {};
|
|
27
|
+
}
|
|
28
|
+
export async function refreshIntegrationAuth(integrationName) {
|
|
29
|
+
if (!host) {
|
|
30
|
+
throw new Error('Integration client not configured — call configureIntegrationClient() first');
|
|
31
|
+
}
|
|
32
|
+
const url = `${host}/integmanager.auth/authRefresh`;
|
|
33
|
+
const response = await fetch(url, {
|
|
34
|
+
method: 'POST',
|
|
35
|
+
headers: Object.assign({ 'Content-Type': 'application/json' }, headers),
|
|
36
|
+
body: JSON.stringify({ integrationName }),
|
|
37
|
+
});
|
|
38
|
+
if (!response.ok) {
|
|
39
|
+
throw new Error(`Failed to refresh auth for integration "${integrationName}": ${response.status} ${response.statusText}`);
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
export async function integrationAuthFetch(integrationName, url, options = {}) {
|
|
43
|
+
const authHeaders = await getIntegrationAuthHeaders(integrationName);
|
|
44
|
+
const mergedHeaders = Object.assign(Object.assign({}, authHeaders), (options.headers || {}));
|
|
45
|
+
return fetch(url, Object.assign(Object.assign({}, options), { headers: mergedHeaders }));
|
|
46
|
+
}
|
|
47
|
+
// --- OAuth consent flow helpers ---
|
|
48
|
+
export async function getOAuthAuthorizeUrl(integrationName, redirectUri) {
|
|
49
|
+
if (!host) {
|
|
50
|
+
throw new Error('Integration client not configured — call configureIntegrationClient() first');
|
|
51
|
+
}
|
|
52
|
+
const params = new URLSearchParams({
|
|
53
|
+
action: 'authorize',
|
|
54
|
+
integrationName,
|
|
55
|
+
redirectUri,
|
|
56
|
+
});
|
|
57
|
+
const url = `${host}/integmanager.auth/oauthFlow?${params.toString()}`;
|
|
58
|
+
const response = await fetch(url, {
|
|
59
|
+
method: 'GET',
|
|
60
|
+
headers: Object.assign({ 'Content-Type': 'application/json' }, headers),
|
|
61
|
+
});
|
|
62
|
+
if (!response.ok) {
|
|
63
|
+
throw new Error(`Failed to get OAuth authorize URL for "${integrationName}": ${response.status} ${response.statusText}`);
|
|
64
|
+
}
|
|
65
|
+
const data = await response.json();
|
|
66
|
+
const result = Array.isArray(data) ? data[0] : data;
|
|
67
|
+
return { authorizationUrl: result.authorizationUrl, state: result.state };
|
|
68
|
+
}
|
|
69
|
+
export async function exchangeOAuthCode(integrationName, code, state) {
|
|
70
|
+
if (!host) {
|
|
71
|
+
throw new Error('Integration client not configured — call configureIntegrationClient() first');
|
|
72
|
+
}
|
|
73
|
+
const url = `${host}/integmanager.auth/oauthFlow`;
|
|
74
|
+
const response = await fetch(url, {
|
|
75
|
+
method: 'POST',
|
|
76
|
+
headers: Object.assign({ 'Content-Type': 'application/json' }, headers),
|
|
77
|
+
body: JSON.stringify({ action: 'exchange', integrationName, code, state }),
|
|
78
|
+
});
|
|
79
|
+
if (!response.ok) {
|
|
80
|
+
throw new Error(`Failed to exchange OAuth code for "${integrationName}": ${response.status} ${response.statusText}`);
|
|
81
|
+
}
|
|
82
|
+
const data = await response.json();
|
|
83
|
+
const result = Array.isArray(data) ? data[0] : data;
|
|
84
|
+
return {
|
|
85
|
+
accessToken: result.accessToken,
|
|
86
|
+
refreshToken: result.refreshToken,
|
|
87
|
+
expiresIn: result.expiresIn,
|
|
88
|
+
tokenType: result.tokenType,
|
|
89
|
+
};
|
|
90
|
+
}
|
|
91
|
+
export async function getIntegrationAccessToken(integrationName) {
|
|
92
|
+
if (!host) {
|
|
93
|
+
throw new Error('Integration client not configured — call configureIntegrationClient() first');
|
|
94
|
+
}
|
|
95
|
+
const params = new URLSearchParams({ integrationName });
|
|
96
|
+
const url = `${host}/integmanager.auth/oauthToken?${params.toString()}`;
|
|
97
|
+
const response = await fetch(url, {
|
|
98
|
+
method: 'GET',
|
|
99
|
+
headers: Object.assign({ 'Content-Type': 'application/json' }, headers),
|
|
100
|
+
});
|
|
101
|
+
if (!response.ok) {
|
|
102
|
+
throw new Error(`Failed to get access token for "${integrationName}": ${response.status} ${response.statusText}`);
|
|
103
|
+
}
|
|
104
|
+
const data = await response.json();
|
|
105
|
+
const result = Array.isArray(data) ? data[0] : data;
|
|
106
|
+
return {
|
|
107
|
+
accessToken: result.accessToken,
|
|
108
|
+
expiresIn: result.expiresIn,
|
|
109
|
+
tokenType: result.tokenType,
|
|
110
|
+
};
|
|
111
|
+
}
|
|
112
|
+
//# sourceMappingURL=integration-client.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"integration-client.js","sourceRoot":"","sources":["../../src/runtime/integration-client.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"integrations.d.ts","sourceRoot":"","sources":["../../src/runtime/integrations.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"integrations.d.ts","sourceRoot":"","sources":["../../src/runtime/integrations.ts"],"names":[],"mappings":"AAMA,wBAAsB,mBAAmB,CACvC,gBAAgB,EAAE,MAAM,EACxB,QAAQ,EAAE,MAAM,GAAG,SAAS,EAC5B,QAAQ,EAAE,MAAM,GAAG,SAAS,EAC5B,cAAc,EAAE,MAAM,iBAoCvB;AAwCD,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,GAAG,CAmB1E"}
|
|
@@ -7,7 +7,8 @@ export async function prepareIntegrations(integManagerHost, username, password,
|
|
|
7
7
|
const keys = [...integConfig.keys()];
|
|
8
8
|
for (let i = 0; i < keys.length; ++i) {
|
|
9
9
|
const configName = keys[i];
|
|
10
|
-
const
|
|
10
|
+
const entry = integConfig.get(configName);
|
|
11
|
+
const configPath = typeof entry === 'string' ? entry : entry === null || entry === void 0 ? void 0 : entry.config;
|
|
11
12
|
if (configPath) {
|
|
12
13
|
const apiUrl = mkApiUrl(integManagerHost, configPath);
|
|
13
14
|
try {
|
|
@@ -22,9 +23,6 @@ export async function prepareIntegrations(integManagerHost, username, password,
|
|
|
22
23
|
const data = await response.json();
|
|
23
24
|
if (data.length > 0) {
|
|
24
25
|
const inst = data[0].config;
|
|
25
|
-
if (inst.type == 'custom' && isString(inst.parameter)) {
|
|
26
|
-
inst.parameter = new Map(Object.entries(JSON.parse(inst.parameter)));
|
|
27
|
-
}
|
|
28
26
|
Integrations.set(configName, inst);
|
|
29
27
|
}
|
|
30
28
|
else {
|
|
@@ -64,15 +62,28 @@ function mkApiUrl(integManagerHost, configPath) {
|
|
|
64
62
|
const parts = configPath.split('/');
|
|
65
63
|
const integId = parts[0];
|
|
66
64
|
const configId = parts[1];
|
|
67
|
-
return `${integManagerHost}/${IntegManagerModel}/integration/${integId}/integrationConfig/config/${configId}`;
|
|
65
|
+
return `${integManagerHost}/${IntegManagerModel}/integration/${integId}/integrationConfig/config/${configId}?tree=true`;
|
|
68
66
|
}
|
|
69
67
|
export function getIntegrationConfig(name, configName) {
|
|
70
68
|
const config = Integrations.get(name);
|
|
71
|
-
if (config)
|
|
72
|
-
return config.parameter.get(configName);
|
|
73
|
-
}
|
|
74
|
-
else {
|
|
69
|
+
if (!config)
|
|
75
70
|
return undefined;
|
|
71
|
+
if (config.parameter == null)
|
|
72
|
+
return undefined;
|
|
73
|
+
if (config.parameter instanceof Map) {
|
|
74
|
+
return Object.fromEntries(config.parameter).get(configName);
|
|
75
|
+
}
|
|
76
|
+
if (isString(config.parameter)) {
|
|
77
|
+
try {
|
|
78
|
+
return JSON.parse(config.parameter)[configName];
|
|
79
|
+
}
|
|
80
|
+
catch (_a) {
|
|
81
|
+
return undefined;
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
if (typeof config.parameter === 'object') {
|
|
85
|
+
return config.parameter[configName];
|
|
76
86
|
}
|
|
87
|
+
return undefined;
|
|
77
88
|
}
|
|
78
89
|
//# sourceMappingURL=integrations.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"integrations.js","sourceRoot":"","sources":["../../src/runtime/integrations.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"integrations.js","sourceRoot":"","sources":["../../src/runtime/integrations.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AAErC,MAAM,YAAY,GAAG,IAAI,GAAG,EAAe,CAAC;AAE5C,MAAM,iBAAiB,GAAG,mBAAmB,CAAC;AAE9C,MAAM,CAAC,KAAK,UAAU,mBAAmB,CACvC,gBAAwB,EACxB,QAA4B,EAC5B,QAA4B,EAC5B,cAAsB;IAEtB,MAAM,WAAW,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC,CAAC;IAC5D,MAAM,eAAe,GAAG,MAAM,mBAAmB,CAAC,gBAAgB,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC;IACxF,MAAM,IAAI,GAAG,CAAC,GAAG,WAAW,CAAC,IAAI,EAAE,CAAC,CAAC;IACrC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE,CAAC;QACrC,MAAM,UAAU,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;QAC3B,MAAM,KAAK,GAAG,WAAW,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;QAC1C,MAAM,UAAU,GAAG,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,MAAM,CAAC;QACrE,IAAI,UAAU,EAAE,CAAC;YACf,MAAM,MAAM,GAAG,QAAQ,CAAC,gBAAgB,EAAE,UAAU,CAAC,CAAC;YACtD,IAAI,CAAC;gBACH,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,MAAM,EAAE;oBACnC,MAAM,EAAE,KAAK;oBACb,OAAO,EAAE,eAAe;iBACzB,CAAC,CAAC;gBAEH,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;oBACjB,OAAO,CAAC,KAAK,CACX,mCAAmC,UAAU,yBAAyB,QAAQ,CAAC,MAAM,IAAI,QAAQ,CAAC,IAAI,IAAI,QAAQ,CAAC,UAAU,EAAE,CAChI,CAAC;oBACF,SAAS;gBACX,CAAC;gBAED,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;gBACnC,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBACpB,MAAM,IAAI,GAAQ,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;oBACjC,YAAY,CAAC,GAAG,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;gBACrC,CAAC;qBAAM,CAAC;oBACN,OAAO,CAAC,KAAK,CAAC,6BAA6B,UAAU,EAAE,CAAC,CAAC;gBAC3D,CAAC;YACH,CAAC;YAAC,OAAO,KAAU,EAAE,CAAC;gBACpB,OAAO,CAAC,KAAK,CAAC,kCAAkC,UAAU,GAAG,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;YAChF,CAAC;QACH,CAAC;IACH,CAAC;AACH,CAAC;AAED,KAAK,UAAU,mBAAmB,CAChC,IAAY,EACZ,QAAiB,EACjB,QAAiB;IAEjB,MAAM,UAAU,GAAG,EAAE,cAAc,EAAE,kBAAkB,EAAE,CAAC;IAC1D,IAAI,QAAQ,IAAI,QAAQ,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAChD,MAAM,MAAM,GAAG,GAAG,IAAI,uBAAuB,CAAC;QAC9C,MAAM,IAAI,GAAG,EAAE,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC;QACrD,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,MAAM,EAAE;YACnC,MAAM,EAAE,MAAM;YACd,OAAO,EAAE,UAAU;YACnB,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;SAC3B,CAAC,CAAC;QAEH,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;YACjB,MAAM,IAAI,KAAK,CACb,+DAA+D,QAAQ,CAAC,MAAM,EAAE,CACjF,CAAC;QACJ,CAAC;QAED,MAAM,YAAY,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;QAC3C,OAAO;YACL,aAAa,EAAE,UAAU,YAAY,CAAC,QAAQ,EAAE;YAChD,cAAc,EAAE,kBAAkB;SACnC,CAAC;IACJ,CAAC;SAAM,CAAC;QACN,OAAO,UAAU,CAAC;IACpB,CAAC;AACH,CAAC;AAED,SAAS,QAAQ,CAAC,gBAAwB,EAAE,UAAkB;IAC5D,MAAM,KAAK,GAAG,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACpC,MAAM,OAAO,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;IACzB,MAAM,QAAQ,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;IAC1B,OAAO,GAAG,gBAAgB,IAAI,iBAAiB,gBAAgB,OAAO,6BAA6B,QAAQ,YAAY,CAAC;AAC1H,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAC,IAAY,EAAE,UAAkB;IACnE,MAAM,MAAM,GAAQ,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IAC3C,IAAI,CAAC,MAAM;QAAE,OAAO,SAAS,CAAC;IAC9B,IAAI,MAAM,CAAC,SAAS,IAAI,IAAI;QAAE,OAAO,SAAS,CAAC;IAE/C,IAAI,MAAM,CAAC,SAAS,YAAY,GAAG,EAAE,CAAC;QACpC,OAAO,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;IAC9D,CAAC;IACD,IAAI,QAAQ,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE,CAAC;QAC/B,IAAI,CAAC;YACH,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,UAAU,CAAC,CAAC;QAClD,CAAC;QAAC,WAAM,CAAC;YACP,OAAO,SAAS,CAAC;QACnB,CAAC;IACH,CAAC;IACD,IAAI,OAAO,MAAM,CAAC,SAAS,KAAK,QAAQ,EAAE,CAAC;QACzC,OAAO,MAAM,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;IACtC,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC"}
|
|
@@ -191,6 +191,7 @@ export declare function restartFlow(flowContext: string[], userData: string, env
|
|
|
191
191
|
export declare function handleOpenApiEvent(eventInst: Instance, env: Environment): Promise<void>;
|
|
192
192
|
export declare function maybeDeleteQueriedInstances(queryEnv: Environment, env: Environment, purge?: boolean): Promise<void>;
|
|
193
193
|
export declare function evaluateExpression(expr: Expr, env: Environment): Promise<void>;
|
|
194
|
+
export declare function extractRefsFromExpr(expr: Expr): string[];
|
|
194
195
|
export declare function callPostEventOnSubscription(crudType: CrudType, inst: Instance, env?: Environment): Promise<any>;
|
|
195
196
|
export declare function runPostCreateEvents(inst: Instance, env: Environment): Promise<void>;
|
|
196
197
|
export declare function runPostUpdateEvents(inst: Instance, oldInst: Instance | undefined, env: Environment): Promise<void>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"interpreter.d.ts","sourceRoot":"","sources":["../../src/runtime/interpreter.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,OAAO,EACP,MAAM,EACN,IAAI,EAEJ,OAAO,EACP,cAAc,EAEd,EAAE,EACF,WAAW,EAWX,OAAO,EACP,KAAK,EAEL,MAAM,EACN,WAAW,EAIX,SAAS,EACT,UAAU,EAEX,MAAM,8BAA8B,CAAC;AACtC,OAAO,EAOL,QAAQ,
|
|
1
|
+
{"version":3,"file":"interpreter.d.ts","sourceRoot":"","sources":["../../src/runtime/interpreter.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
import { isBinExpr, isGroup, isLiteral, isNegExpr, isNotExpr, isReturn, } from '../language/generated/ast.js';
|
|
2
|
-
import { Agent, defineAgentEvent, getOneOfRef, getRelationship, getWorkflow, Instance, isAgentEventInstance, isBetweenRelationship, isContainsRelationship, isEmptyWorkflow, isEntityInstance, isEventInstance, isInstanceOfType, isOneToOneBetweenRelationship, isTimer, makeInstance, maybeInstanceAsString, newInstanceAttributes, PlaceholderRecordEntry, setMetaAttributes, } from './module.js';
|
|
2
|
+
import { Agent, defineAgentEvent, getOneOfRef, getRelationship, getWorkflow, Instance, isAgentEventInstance, isBetweenRelationship, isContainsRelationship, isEmptyWorkflow, isEntityInstance, isEventInstance, isInstanceOfType, getAllBetweenRelationshipsForEntity, isOneToOneBetweenRelationship, isTimer, makeInstance, maybeInstanceAsString, newInstanceAttributes, PlaceholderRecordEntry, setMetaAttributes, } from './module.js';
|
|
3
3
|
import { Resolver } from './resolvers/interface.js';
|
|
4
4
|
import { ResolverAuthInfo } from './resolvers/authinfo.js';
|
|
5
5
|
import { SqlDbResolver } from './resolvers/sqldb/impl.js';
|
|
6
|
-
import { CrudType, DefaultModuleName, escapeFqName, escapeQueryName, fqNameFromPath, isCoreModule, isFqName, isPath, isString, makeCoreModuleName, makeFqName, nameToPath, preprocessRawConfig, QuerySuffix, restoreSpecialChars, splitRefs, } from './util.js';
|
|
6
|
+
import { CrudType, DefaultModuleName, escapeFqName, escapeQueryName, firstAliasSpec, fqNameFromPath, isCoreModule, isFqName, isPath, isString, makeCoreModuleName, makeFqName, nameToPath, preprocessRawConfig, QuerySuffix, restoreSpecialChars, splitFqName, splitRefs, } from './util.js';
|
|
7
7
|
import { getResolver, getResolverNameForPath } from './resolvers/registry.js';
|
|
8
8
|
import { extractQueryOptions, parseStatement, parseWorkflow, } from '../language/parser.js';
|
|
9
9
|
import { AdminSession, AdminUserId } from './auth/defs.js';
|
|
10
|
-
import { AgentEntityName, AgentFqName, AgentInstance, findAgentByName, normalizeGeneratedCode, saveFlowStepResult, } from './modules/ai.js';
|
|
10
|
+
import { AgentCancelledException, AgentEntityName, AgentFqName, AgentInstance, checkCancelled, clearCancellation, findAgentByName, normalizeGeneratedCode, saveFlowStepResult, } from './modules/ai.js';
|
|
11
11
|
import { logger } from './logger.js';
|
|
12
12
|
import { FlowSuspensionTag, ParentAttributeName, PathAttributeName, PathAttributeNameQuery, } from './defs.js';
|
|
13
13
|
import { addCreateAudit, addDeleteAudit, addUpdateAudit, createSuspension, flushMonitoringData, triggerTimer, } from './modules/core.js';
|
|
@@ -865,10 +865,11 @@ export async function evaluateStatement(stmt, env) {
|
|
|
865
865
|
handlersPushed = env.pushHandlers(handlers);
|
|
866
866
|
}
|
|
867
867
|
await evaluatePattern(stmt.pattern, env);
|
|
868
|
+
let skipOuterAlias = false;
|
|
868
869
|
if (hasHints) {
|
|
869
|
-
await maybeHandleEmpty(hints, env);
|
|
870
|
+
skipOuterAlias = await maybeHandleEmpty(hints, env);
|
|
870
871
|
}
|
|
871
|
-
if (hasHints) {
|
|
872
|
+
if (hasHints && !skipOuterAlias) {
|
|
872
873
|
maybeBindStatementResultToAlias(hints, env);
|
|
873
874
|
}
|
|
874
875
|
await maybeHandleNotFound(handlers, env);
|
|
@@ -905,10 +906,17 @@ async function maybeHandleEmpty(hints, env) {
|
|
|
905
906
|
const newEnv = new Environment('empty-env', env).unsetEventExecutor();
|
|
906
907
|
await evaluateStatement(rh.emptySpec.stmt, newEnv);
|
|
907
908
|
env.setLastResult(newEnv.getLastResult());
|
|
909
|
+
// If inner statement has its own @as, propagate binding to parent env
|
|
910
|
+
const innerAlias = firstAliasSpec(rh.emptySpec.stmt);
|
|
911
|
+
if (innerAlias) {
|
|
912
|
+
maybeBindStatementResultToAlias(rh.emptySpec.stmt.hints, env);
|
|
913
|
+
return true; // signal: skip outer @as
|
|
914
|
+
}
|
|
908
915
|
break;
|
|
909
916
|
}
|
|
910
917
|
}
|
|
911
918
|
}
|
|
919
|
+
return false;
|
|
912
920
|
}
|
|
913
921
|
async function maybeHandleError(handlers, reason, env) {
|
|
914
922
|
const handler = handlers ? handlers.get('error') : undefined;
|
|
@@ -1276,9 +1284,15 @@ function maybeSetQueryClauses(inst, qopts) {
|
|
|
1276
1284
|
if (qopts.orderByClause) {
|
|
1277
1285
|
inst.setOrderBy(qopts.orderByClause.colNames, qopts.orderByClause.order === '@desc');
|
|
1278
1286
|
}
|
|
1287
|
+
if (qopts.limitClause) {
|
|
1288
|
+
inst.setLimit(qopts.limitClause.value);
|
|
1289
|
+
}
|
|
1290
|
+
if (qopts.offsetClause) {
|
|
1291
|
+
inst.setOffset(qopts.offsetClause.value);
|
|
1292
|
+
}
|
|
1279
1293
|
}
|
|
1280
1294
|
async function evaluateCrudMap(crud, env) {
|
|
1281
|
-
var _a, _b, _c;
|
|
1295
|
+
var _a, _b, _c, _d;
|
|
1282
1296
|
const qopts = extractQueryOptions(crud);
|
|
1283
1297
|
if (!env.isInUpsertMode() && qopts.upsert !== undefined) {
|
|
1284
1298
|
return await evaluateUpsert(crud, env);
|
|
@@ -1322,7 +1336,7 @@ async function evaluateCrudMap(crud, env) {
|
|
|
1322
1336
|
}
|
|
1323
1337
|
const res = await getResolverForPath(entryName, moduleName, env);
|
|
1324
1338
|
let r;
|
|
1325
|
-
await computeExprAttributes(inst,
|
|
1339
|
+
await computeExprAttributes(inst, (_b = crud.body) === null || _b === void 0 ? void 0 : _b.attributes, inst.attributes, env);
|
|
1326
1340
|
await setMetaAttributes(inst.attributes, env);
|
|
1327
1341
|
if (env.isInUpsertMode()) {
|
|
1328
1342
|
await runPreUpdateEvents(inst, env);
|
|
@@ -1449,7 +1463,7 @@ async function evaluateCrudMap(crud, env) {
|
|
|
1449
1463
|
const resolver = await getResolverForPath(lastRes[0].name, lastRes[0].moduleName, env);
|
|
1450
1464
|
const res = new Array();
|
|
1451
1465
|
for (let i = 0; i < lastRes.length; ++i) {
|
|
1452
|
-
await computeExprAttributes(lastRes[i], (
|
|
1466
|
+
await computeExprAttributes(lastRes[i], (_c = crud.body) === null || _c === void 0 ? void 0 : _c.attributes, attrs, env);
|
|
1453
1467
|
env.attributes.set('__patch', attrs);
|
|
1454
1468
|
await runPreUpdateEvents(lastRes[i], env);
|
|
1455
1469
|
await setMetaAttributes(attrs, env, true);
|
|
@@ -1465,7 +1479,7 @@ async function evaluateCrudMap(crud, env) {
|
|
|
1465
1479
|
}
|
|
1466
1480
|
else {
|
|
1467
1481
|
const res = await getResolverForPath(lastRes.name, lastRes.moduleName, env);
|
|
1468
|
-
await computeExprAttributes(lastRes, (
|
|
1482
|
+
await computeExprAttributes(lastRes, (_d = crud.body) === null || _d === void 0 ? void 0 : _d.attributes, attrs, env);
|
|
1469
1483
|
await runPreUpdateEvents(lastRes, env);
|
|
1470
1484
|
const finalInst = await res.updateInstance(lastRes, attrs);
|
|
1471
1485
|
await runPostUpdateEvents(finalInst, lastRes, env);
|
|
@@ -1568,24 +1582,103 @@ async function computeExprAttributes(inst, origAttrs, updatedAttrs, env) {
|
|
|
1568
1582
|
if (v !== undefined)
|
|
1569
1583
|
newEnv.bind(k, v);
|
|
1570
1584
|
});
|
|
1585
|
+
// Bind related instances from between-relationships so that @expr references
|
|
1586
|
+
// like DeptEmployee.Department.BudgetMultiplier can be resolved via followReference.
|
|
1587
|
+
const entityFqName = inst.getFqName();
|
|
1588
|
+
const fqParts = splitFqName(entityFqName);
|
|
1589
|
+
const rels = getAllBetweenRelationshipsForEntity(fqParts[0], fqParts[1]);
|
|
1590
|
+
for (const rel of rels) {
|
|
1591
|
+
const isFirst = rel.isFirstNodeName(entityFqName);
|
|
1592
|
+
// Only bind if this entity is on a valid side for single-entity resolution
|
|
1593
|
+
if (rel.isManyToMany())
|
|
1594
|
+
continue;
|
|
1595
|
+
if (rel.isOneToMany() && isFirst)
|
|
1596
|
+
continue;
|
|
1597
|
+
// Determine the target entity on the other side
|
|
1598
|
+
const targetNode = isFirst ? rel.node2 : rel.node1;
|
|
1599
|
+
const targetAlias = targetNode.alias;
|
|
1600
|
+
let connectedInst;
|
|
1601
|
+
// Fast path: check if the environment carries between-rel info for this relationship
|
|
1602
|
+
const betRelInfo = env.getBetweenRelInfo();
|
|
1603
|
+
if (betRelInfo && betRelInfo.relationship.name === rel.name) {
|
|
1604
|
+
connectedInst = betRelInfo.connectedInstance;
|
|
1605
|
+
}
|
|
1606
|
+
else if (inst.lookup(PathAttributeName)) {
|
|
1607
|
+
// Slow path: query the connected instance through the resolver.
|
|
1608
|
+
// Only possible if the current instance has been persisted (has a __path__).
|
|
1609
|
+
try {
|
|
1610
|
+
const targetFqName = targetNode.path.asFqName();
|
|
1611
|
+
const targetParts = splitFqName(targetFqName);
|
|
1612
|
+
const res = await getResolverForPath(targetParts[1], targetParts[0], env);
|
|
1613
|
+
const queryInst = Instance.EmptyInstance(targetParts[1], targetParts[0]);
|
|
1614
|
+
const connected = await res.queryConnectedInstances(rel, inst, queryInst);
|
|
1615
|
+
if (connected && connected.length > 0) {
|
|
1616
|
+
connectedInst = connected[0];
|
|
1617
|
+
}
|
|
1618
|
+
}
|
|
1619
|
+
catch (reason) {
|
|
1620
|
+
logger.debug(`Relationship query failed (e.g. not yet linked) - skip binding - ${reason}`);
|
|
1621
|
+
}
|
|
1622
|
+
}
|
|
1623
|
+
if (connectedInst) {
|
|
1624
|
+
const relMap = new Map();
|
|
1625
|
+
relMap.set(targetAlias, connectedInst);
|
|
1626
|
+
newEnv.bind(rel.name, relMap);
|
|
1627
|
+
}
|
|
1628
|
+
}
|
|
1629
|
+
// Build a map of user-provided values for @expr attributes so that
|
|
1630
|
+
// overrides are applied inline during expression evaluation, allowing
|
|
1631
|
+
// dependent expressions to see the user's value immediately.
|
|
1632
|
+
let userExprOverrides;
|
|
1633
|
+
if (exprAttrs && origAttrs) {
|
|
1634
|
+
for (let i = 0; i < origAttrs.length; ++i) {
|
|
1635
|
+
const a = origAttrs[i];
|
|
1636
|
+
const n = a.name;
|
|
1637
|
+
if (exprAttrs.has(n) && !n.endsWith(QuerySuffix) && a.value !== undefined) {
|
|
1638
|
+
if (userExprOverrides === undefined) {
|
|
1639
|
+
userExprOverrides = new Map();
|
|
1640
|
+
}
|
|
1641
|
+
userExprOverrides.set(n, a.value);
|
|
1642
|
+
}
|
|
1643
|
+
}
|
|
1644
|
+
}
|
|
1571
1645
|
if (exprAttrs) {
|
|
1572
1646
|
const ks = [...exprAttrs.keys()];
|
|
1573
1647
|
for (let i = 0; i < ks.length; ++i) {
|
|
1574
1648
|
const n = ks[i];
|
|
1575
|
-
const
|
|
1576
|
-
if (
|
|
1577
|
-
|
|
1578
|
-
|
|
1579
|
-
|
|
1580
|
-
|
|
1581
|
-
|
|
1649
|
+
const userValue = userExprOverrides === null || userExprOverrides === void 0 ? void 0 : userExprOverrides.get(n);
|
|
1650
|
+
if (userValue !== undefined) {
|
|
1651
|
+
// User explicitly provided a value for this @expr attribute - use it
|
|
1652
|
+
await evaluateExpression(userValue, newEnv);
|
|
1653
|
+
}
|
|
1654
|
+
else {
|
|
1655
|
+
// No user override - evaluate the @expr expression
|
|
1656
|
+
const expr = exprAttrs.get(n);
|
|
1657
|
+
if (expr) {
|
|
1658
|
+
await evaluateExpression(expr, newEnv);
|
|
1659
|
+
}
|
|
1660
|
+
else {
|
|
1661
|
+
continue;
|
|
1662
|
+
}
|
|
1582
1663
|
}
|
|
1664
|
+
const v = newEnv.getLastResult();
|
|
1665
|
+
newEnv.bind(n, v);
|
|
1666
|
+
inst.attributes.set(n, v);
|
|
1667
|
+
updatedAttrs === null || updatedAttrs === void 0 ? void 0 : updatedAttrs.set(n, v);
|
|
1583
1668
|
}
|
|
1584
1669
|
}
|
|
1585
|
-
|
|
1670
|
+
// Re-evaluate non-@expr attribute expressions from origAttrs in the context
|
|
1671
|
+
// of the queried instance. This handles workflow update expressions like
|
|
1672
|
+
// `balance balance + (balance * interestRate) + makeDeposit.amount` where
|
|
1673
|
+
// the local attribute references must resolve from the existing instance.
|
|
1674
|
+
// Only runs on the update path (where updatedAttrs is a separate map from
|
|
1675
|
+
// inst.attributes) to avoid double-evaluating expressions on create.
|
|
1676
|
+
if (origAttrs && updatedAttrs && updatedAttrs !== inst.attributes) {
|
|
1586
1677
|
for (let i = 0; i < origAttrs.length; ++i) {
|
|
1587
1678
|
const a = origAttrs[i];
|
|
1588
1679
|
const n = a.name;
|
|
1680
|
+
if (exprAttrs === null || exprAttrs === void 0 ? void 0 : exprAttrs.has(n))
|
|
1681
|
+
continue;
|
|
1589
1682
|
if (!n.endsWith(QuerySuffix) && updatedAttrs.has(n) && a.value !== undefined) {
|
|
1590
1683
|
await evaluateExpression(a.value, newEnv);
|
|
1591
1684
|
const v = newEnv.getLastResult();
|
|
@@ -1710,6 +1803,8 @@ async function agentInvoke(agent, msg, env) {
|
|
|
1710
1803
|
invokeDebugMsg = `\nMessage=${msg}`;
|
|
1711
1804
|
console.debug(invokeDebugMsg);
|
|
1712
1805
|
//
|
|
1806
|
+
const agentChatId = env.getAgentChatId() || env.getActiveChatId() || '';
|
|
1807
|
+
await clearCancellation(agentChatId);
|
|
1713
1808
|
const monitoringEnabled = isMonitoringEnabled();
|
|
1714
1809
|
await agent.invoke(msg, env);
|
|
1715
1810
|
let result = env.getLastResult();
|
|
@@ -1724,6 +1819,7 @@ async function agentInvoke(agent, msg, env) {
|
|
|
1724
1819
|
}
|
|
1725
1820
|
let retries = 0;
|
|
1726
1821
|
while (true) {
|
|
1822
|
+
await checkCancelled(agentChatId);
|
|
1727
1823
|
try {
|
|
1728
1824
|
let rs = result ? normalizeGeneratedCode(result) : '';
|
|
1729
1825
|
if (agent.tools) {
|
|
@@ -1790,6 +1886,7 @@ async function agentInvoke(agent, msg, env) {
|
|
|
1790
1886
|
else {
|
|
1791
1887
|
let retries = 0;
|
|
1792
1888
|
while (true) {
|
|
1889
|
+
await checkCancelled(agentChatId);
|
|
1793
1890
|
try {
|
|
1794
1891
|
result = normalizeGeneratedCode(result);
|
|
1795
1892
|
const obj = agent.maybeValidateJsonResponse(result);
|
|
@@ -1886,9 +1983,11 @@ async function iterateOnFlow(flow, rootAgent, msg, env) {
|
|
|
1886
1983
|
rootAgent.disableSession();
|
|
1887
1984
|
const chatId = (_a = env.getActiveEventInstance()) === null || _a === void 0 ? void 0 : _a.lookup('chatId');
|
|
1888
1985
|
const iterId = chatId || crypto.randomUUID();
|
|
1986
|
+
await clearCancellation(iterId);
|
|
1889
1987
|
let step = '';
|
|
1890
1988
|
let fullFlowRetries = 0;
|
|
1891
1989
|
while (true) {
|
|
1990
|
+
await checkCancelled(iterId);
|
|
1892
1991
|
try {
|
|
1893
1992
|
const initContext = msg;
|
|
1894
1993
|
const s = `Now consider the following flowchart and return the next step:\n${flow}\n
|
|
@@ -1911,6 +2010,7 @@ async function iterateOnFlow(flow, rootAgent, msg, env) {
|
|
|
1911
2010
|
env.flagMonitorEntryAsFlow().incrementMonitor();
|
|
1912
2011
|
}
|
|
1913
2012
|
while (step != 'DONE' && !executedSteps.has(step)) {
|
|
2013
|
+
await checkCancelled(iterId);
|
|
1914
2014
|
if (stepc > MaxFlowSteps) {
|
|
1915
2015
|
throw new Error(`Flow execution exceeded maximum steps limit`);
|
|
1916
2016
|
}
|
|
@@ -1967,6 +2067,9 @@ async function iterateOnFlow(flow, rootAgent, msg, env) {
|
|
|
1967
2067
|
}
|
|
1968
2068
|
}
|
|
1969
2069
|
catch (reason) {
|
|
2070
|
+
if (reason instanceof AgentCancelledException) {
|
|
2071
|
+
throw reason;
|
|
2072
|
+
}
|
|
1970
2073
|
if (fullFlowRetries < MaxFlowRetries) {
|
|
1971
2074
|
msg = `The previous attempt failed at step ${step} with the error ${reason}. Restart the flow the appropriate step
|
|
1972
2075
|
(maybe even from the first step) and try to fix the issue.`;
|
|
@@ -2178,6 +2281,38 @@ export async function evaluateExpression(expr, env) {
|
|
|
2178
2281
|
}
|
|
2179
2282
|
env.setLastResult(result);
|
|
2180
2283
|
}
|
|
2284
|
+
export function extractRefsFromExpr(expr) {
|
|
2285
|
+
const refs = [];
|
|
2286
|
+
function walk(e) {
|
|
2287
|
+
if (isBinExpr(e)) {
|
|
2288
|
+
walk(e.e1);
|
|
2289
|
+
walk(e.e2);
|
|
2290
|
+
}
|
|
2291
|
+
else if (isLiteral(e)) {
|
|
2292
|
+
if (e.ref)
|
|
2293
|
+
refs.push(e.ref);
|
|
2294
|
+
if (e.fnCall) {
|
|
2295
|
+
for (const arg of e.fnCall.args)
|
|
2296
|
+
walk(arg);
|
|
2297
|
+
}
|
|
2298
|
+
if (e.asyncFnCall) {
|
|
2299
|
+
for (const arg of e.asyncFnCall.fnCall.args)
|
|
2300
|
+
walk(arg);
|
|
2301
|
+
}
|
|
2302
|
+
}
|
|
2303
|
+
else if (isGroup(e)) {
|
|
2304
|
+
walk(e.ge);
|
|
2305
|
+
}
|
|
2306
|
+
else if (isNegExpr(e)) {
|
|
2307
|
+
walk(e.ne);
|
|
2308
|
+
}
|
|
2309
|
+
else if (isNotExpr(e)) {
|
|
2310
|
+
walk(e.ne);
|
|
2311
|
+
}
|
|
2312
|
+
}
|
|
2313
|
+
walk(expr);
|
|
2314
|
+
return refs;
|
|
2315
|
+
}
|
|
2181
2316
|
async function getRef(r, src, env) {
|
|
2182
2317
|
if (Instance.IsInstance(src))
|
|
2183
2318
|
return src.lookup(r);
|