agentlang 0.10.3 → 0.10.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/README.md +22 -9
- package/out/extension/main.cjs +250 -250
- package/out/extension/main.cjs.map +2 -2
- package/out/language/generated/ast.d.ts +7 -7
- package/out/language/generated/ast.d.ts.map +1 -1
- package/out/language/generated/grammar.js +2 -2
- package/out/language/main.cjs +506 -506
- package/out/language/main.cjs.map +3 -3
- package/out/language/parser.d.ts.map +1 -1
- package/out/language/parser.js +9 -2
- package/out/language/parser.js.map +1 -1
- package/out/language/syntax.d.ts +2 -2
- package/out/language/syntax.d.ts.map +1 -1
- package/out/runtime/api.d.ts.map +1 -1
- package/out/runtime/api.js +0 -14
- package/out/runtime/api.js.map +1 -1
- package/out/runtime/defs.d.ts +0 -1
- package/out/runtime/defs.d.ts.map +1 -1
- package/out/runtime/defs.js +1 -2
- package/out/runtime/defs.js.map +1 -1
- package/out/runtime/embeddings/chunker.d.ts +0 -18
- package/out/runtime/embeddings/chunker.d.ts.map +1 -1
- package/out/runtime/embeddings/chunker.js +15 -47
- 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 +11 -22
- package/out/runtime/embeddings/openai.js.map +1 -1
- package/out/runtime/embeddings/provider.d.ts +0 -1
- package/out/runtime/embeddings/provider.d.ts.map +1 -1
- package/out/runtime/embeddings/provider.js +1 -20
- package/out/runtime/embeddings/provider.js.map +1 -1
- package/out/runtime/exec-graph.js +5 -5
- package/out/runtime/exec-graph.js.map +1 -1
- package/out/runtime/interpreter.d.ts +4 -4
- package/out/runtime/interpreter.d.ts.map +1 -1
- package/out/runtime/interpreter.js +27 -16
- package/out/runtime/interpreter.js.map +1 -1
- package/out/runtime/loader.d.ts.map +1 -1
- package/out/runtime/loader.js +6 -2
- package/out/runtime/loader.js.map +1 -1
- package/out/runtime/logger.d.ts.map +1 -1
- package/out/runtime/logger.js +1 -8
- package/out/runtime/logger.js.map +1 -1
- package/out/runtime/module.d.ts +0 -6
- package/out/runtime/module.d.ts.map +1 -1
- package/out/runtime/module.js +1 -58
- package/out/runtime/module.js.map +1 -1
- package/out/runtime/modules/ai.d.ts +4 -4
- package/out/runtime/modules/ai.d.ts.map +1 -1
- package/out/runtime/modules/ai.js +70 -166
- package/out/runtime/modules/ai.js.map +1 -1
- package/out/runtime/modules/auth.d.ts.map +1 -1
- package/out/runtime/modules/auth.js +6 -4
- package/out/runtime/modules/auth.js.map +1 -1
- package/out/runtime/modules/core.d.ts.map +1 -1
- package/out/runtime/modules/core.js +3 -0
- package/out/runtime/modules/core.js.map +1 -1
- package/out/runtime/modules/messaging.d.ts +10 -0
- package/out/runtime/modules/messaging.d.ts.map +1 -0
- package/out/runtime/modules/messaging.js +210 -0
- package/out/runtime/modules/messaging.js.map +1 -0
- package/out/runtime/monitor.d.ts +2 -1
- package/out/runtime/monitor.d.ts.map +1 -1
- package/out/runtime/monitor.js +5 -1
- package/out/runtime/monitor.js.map +1 -1
- package/out/runtime/resolvers/sqldb/database.d.ts.map +1 -1
- package/out/runtime/resolvers/sqldb/database.js +126 -128
- package/out/runtime/resolvers/sqldb/database.js.map +1 -1
- package/out/runtime/resolvers/sqldb/impl.d.ts +0 -1
- package/out/runtime/resolvers/sqldb/impl.d.ts.map +1 -1
- package/out/runtime/resolvers/sqldb/impl.js +0 -3
- package/out/runtime/resolvers/sqldb/impl.js.map +1 -1
- package/out/runtime/services/documentFetcher.d.ts.map +1 -1
- package/out/runtime/services/documentFetcher.js +6 -21
- package/out/runtime/services/documentFetcher.js.map +1 -1
- package/out/runtime/state.d.ts +0 -14
- package/out/runtime/state.d.ts.map +1 -1
- package/out/runtime/state.js +0 -28
- package/out/runtime/state.js.map +1 -1
- package/package.json +19 -19
- package/src/language/agentlang.langium +2 -2
- package/src/language/generated/ast.ts +7 -7
- package/src/language/generated/grammar.ts +2 -2
- package/src/language/parser.ts +9 -2
- package/src/language/syntax.ts +2 -2
- package/src/runtime/api.ts +0 -15
- package/src/runtime/defs.ts +1 -2
- package/src/runtime/embeddings/chunker.ts +14 -52
- package/src/runtime/embeddings/openai.ts +9 -27
- package/src/runtime/embeddings/provider.ts +1 -22
- package/src/runtime/exec-graph.ts +4 -4
- package/src/runtime/interpreter.ts +32 -17
- package/src/runtime/loader.ts +10 -2
- package/src/runtime/logger.ts +1 -12
- package/src/runtime/module.ts +1 -64
- package/src/runtime/modules/ai.ts +81 -206
- package/src/runtime/modules/auth.ts +6 -4
- package/src/runtime/modules/core.ts +4 -0
- package/src/runtime/modules/messaging.ts +228 -0
- package/src/runtime/monitor.ts +10 -1
- package/src/runtime/resolvers/sqldb/database.ts +130 -142
- package/src/runtime/resolvers/sqldb/impl.ts +0 -4
- package/src/runtime/services/documentFetcher.ts +6 -21
- package/src/runtime/state.ts +0 -29
- package/out/runtime/document-retriever.d.ts +0 -24
- package/out/runtime/document-retriever.d.ts.map +0 -1
- package/out/runtime/document-retriever.js +0 -258
- package/out/runtime/document-retriever.js.map +0 -1
- package/out/runtime/resolvers/vector/lancedb-store.d.ts +0 -16
- package/out/runtime/resolvers/vector/lancedb-store.d.ts.map +0 -1
- package/out/runtime/resolvers/vector/lancedb-store.js +0 -159
- package/out/runtime/resolvers/vector/lancedb-store.js.map +0 -1
- package/out/runtime/resolvers/vector/types.d.ts +0 -32
- package/out/runtime/resolvers/vector/types.d.ts.map +0 -1
- package/out/runtime/resolvers/vector/types.js +0 -2
- package/out/runtime/resolvers/vector/types.js.map +0 -1
- package/src/runtime/document-retriever.ts +0 -311
- package/src/runtime/resolvers/vector/lancedb-store.ts +0 -187
- package/src/runtime/resolvers/vector/types.ts +0 -39
package/out/runtime/state.js
CHANGED
|
@@ -34,21 +34,6 @@ export const ConfigSchema = z.object({
|
|
|
34
34
|
type: z.literal('sqlite'),
|
|
35
35
|
dbname: z.string().optional(),
|
|
36
36
|
}),
|
|
37
|
-
z.object({
|
|
38
|
-
type: z.literal('lancedb'),
|
|
39
|
-
path: z.string().optional(),
|
|
40
|
-
}),
|
|
41
|
-
])
|
|
42
|
-
.optional(),
|
|
43
|
-
vectorStore: z
|
|
44
|
-
.discriminatedUnion('type', [
|
|
45
|
-
z.object({
|
|
46
|
-
type: z.literal('pgvector'),
|
|
47
|
-
}),
|
|
48
|
-
z.object({
|
|
49
|
-
type: z.literal('lancedb'),
|
|
50
|
-
dbname: z.string().optional(),
|
|
51
|
-
}),
|
|
52
37
|
])
|
|
53
38
|
.optional(),
|
|
54
39
|
integrations: z
|
|
@@ -92,11 +77,6 @@ export const ConfigSchema = z.object({
|
|
|
92
77
|
enabled: z.boolean().default(false),
|
|
93
78
|
})
|
|
94
79
|
.optional(),
|
|
95
|
-
knowledgeGraph: z
|
|
96
|
-
.object({
|
|
97
|
-
serviceUrl: z.string().default('#js process.env.KNOWLEDGE_SERVICE_URL || ""'),
|
|
98
|
-
})
|
|
99
|
-
.optional(),
|
|
100
80
|
authentication: z
|
|
101
81
|
.discriminatedUnion('service', [
|
|
102
82
|
z.object({
|
|
@@ -169,14 +149,6 @@ export function isMonitoringEnabled() {
|
|
|
169
149
|
var _a;
|
|
170
150
|
return internalMonitoringEnabled || ((_a = AppConfig === null || AppConfig === void 0 ? void 0 : AppConfig.monitoring) === null || _a === void 0 ? void 0 : _a.enabled) === true;
|
|
171
151
|
}
|
|
172
|
-
export function isKnowledgeGraphEnabled() {
|
|
173
|
-
var _a, _b;
|
|
174
|
-
const url = (_b = (_a = AppConfig === null || AppConfig === void 0 ? void 0 : AppConfig.knowledgeGraph) === null || _a === void 0 ? void 0 : _a.serviceUrl) === null || _b === void 0 ? void 0 : _b.trim();
|
|
175
|
-
return !!(url && url.length > 0) || !!process.env.KNOWLEDGE_SERVICE_URL;
|
|
176
|
-
}
|
|
177
|
-
export function getKnowledgeGraphConfig() {
|
|
178
|
-
return AppConfig === null || AppConfig === void 0 ? void 0 : AppConfig.knowledgeGraph;
|
|
179
|
-
}
|
|
180
152
|
export class TtlCache {
|
|
181
153
|
constructor(ttlMs) {
|
|
182
154
|
this.store = new Map();
|
package/out/runtime/state.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"state.js","sourceRoot":"","sources":["../../src/runtime/state.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,2BAA2B;AAC3B,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,CAAC,MAAM,CAAC;IACnC,OAAO,EAAE,CAAC;SACP,MAAM,CAAC;QACN,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;QAChB,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;QAC3B,gBAAgB,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC;KAC7C,CAAC;SACD,OAAO,CAAC;QACP,IAAI,EAAE,IAAI;QACV,IAAI,EAAE,WAAW;QACjB,gBAAgB,EAAE,KAAK;KACxB,CAAC;IACJ,KAAK,EAAE,CAAC;SACL,kBAAkB,CAAC,MAAM,EAAE;QAC1B,CAAC,CAAC,MAAM,CAAC;YACP,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC;YAC3B,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,WAAW,CAAC;YACrC,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,UAAU,CAAC;YACxC,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,UAAU,CAAC;YACxC,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,UAAU,CAAC;YACtC,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC;SAC/B,CAAC;QACF,CAAC,CAAC,MAAM,CAAC;YACP,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC;YACxB,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,WAAW,CAAC;YACrC,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC;YACrC,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC;YACrC,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC;YACnC,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC;SAC/B,CAAC;QACF,CAAC,CAAC,MAAM,CAAC;YACP,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC;YACzB,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;SAC9B,CAAC;
|
|
1
|
+
{"version":3,"file":"state.js","sourceRoot":"","sources":["../../src/runtime/state.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "agentlang",
|
|
3
3
|
"description": "The easiest way to build the most reliable AI agents - enterprise-grade teams of AI agents that collaborate with each other and humans",
|
|
4
|
-
"version": "0.10.
|
|
4
|
+
"version": "0.10.5",
|
|
5
5
|
"license": "Sustainable Use License",
|
|
6
6
|
"author": "agentlang-ai",
|
|
7
7
|
"homepage": "https://github.com/agentlang-ai/agentlang#readme",
|
|
@@ -34,29 +34,12 @@
|
|
|
34
34
|
"access": "public",
|
|
35
35
|
"registry": "https://registry.npmjs.org/"
|
|
36
36
|
},
|
|
37
|
-
"scripts": {
|
|
38
|
-
"build": "tsc -b tsconfig.src.json && tsc -b tsconfig.declarations.json && node esbuild.mjs",
|
|
39
|
-
"build:ts": "tsc -b tsconfig.src.json",
|
|
40
|
-
"watch": "concurrently -n tsc,esbuild -c blue,yellow \"tsc -b tsconfig.src.json --watch\" \"node esbuild.mjs --watch\"",
|
|
41
|
-
"lint": "eslint . --ext .ts",
|
|
42
|
-
"lint:fix": "eslint . --ext .ts --fix",
|
|
43
|
-
"format": "prettier --write \"src/**/*.{js,ts,tsx,json,md}\"",
|
|
44
|
-
"format:check": "prettier --check \"src/**/*.{js,ts,tsx,json,md}\"",
|
|
45
|
-
"langium:generate": "langium generate",
|
|
46
|
-
"langium:generate:production": "langium generate --mode=production",
|
|
47
|
-
"langium:watch": "langium generate --watch",
|
|
48
|
-
"vscode:prepublish": "npm run build && npm run lint",
|
|
49
|
-
"dev": "vite",
|
|
50
|
-
"test": "vitest run",
|
|
51
|
-
"test:verbose": "VITEST_VERBOSE=true vitest run"
|
|
52
|
-
},
|
|
53
37
|
"dependencies": {
|
|
54
38
|
"@aws-sdk/client-cognito-identity": "^3.975.0",
|
|
55
39
|
"@aws-sdk/client-cognito-identity-provider": "^3.975.0",
|
|
56
40
|
"@aws-sdk/client-s3": "^3.975.0",
|
|
57
41
|
"@aws-sdk/credential-providers": "^3.975.0",
|
|
58
42
|
"@isomorphic-git/lightning-fs": "^4.6.2",
|
|
59
|
-
"@lancedb/lancedb": "^0.15.0",
|
|
60
43
|
"@langchain/anthropic": "^1.3.12",
|
|
61
44
|
"@langchain/core": "^1.1.17",
|
|
62
45
|
"@langchain/openai": "^1.2.3",
|
|
@@ -83,6 +66,7 @@
|
|
|
83
66
|
"pgvector": "^0.2.1",
|
|
84
67
|
"reflect-metadata": "^0.2.2",
|
|
85
68
|
"sql.js": "^1.13.0",
|
|
69
|
+
"sqlite-vec": "^0.1.7-alpha.2",
|
|
86
70
|
"typeorm": "^0.3.28",
|
|
87
71
|
"vscode-languageserver": "^9.0.1",
|
|
88
72
|
"winston": "^3.19.0",
|
|
@@ -189,5 +173,21 @@
|
|
|
189
173
|
"*.{json,md,yml,yaml}": [
|
|
190
174
|
"prettier --write"
|
|
191
175
|
]
|
|
176
|
+
},
|
|
177
|
+
"scripts": {
|
|
178
|
+
"build": "tsc -b tsconfig.src.json && tsc -b tsconfig.declarations.json && node esbuild.mjs",
|
|
179
|
+
"build:ts": "tsc -b tsconfig.src.json",
|
|
180
|
+
"watch": "concurrently -n tsc,esbuild -c blue,yellow \"tsc -b tsconfig.src.json --watch\" \"node esbuild.mjs --watch\"",
|
|
181
|
+
"lint": "eslint . --ext .ts",
|
|
182
|
+
"lint:fix": "eslint . --ext .ts --fix",
|
|
183
|
+
"format": "prettier --write \"src/**/*.{js,ts,tsx,json,md}\"",
|
|
184
|
+
"format:check": "prettier --check \"src/**/*.{js,ts,tsx,json,md}\"",
|
|
185
|
+
"langium:generate": "langium generate",
|
|
186
|
+
"langium:generate:production": "langium generate --mode=production",
|
|
187
|
+
"langium:watch": "langium generate --watch",
|
|
188
|
+
"vscode:prepublish": "npm run build && npm run lint",
|
|
189
|
+
"dev": "vite",
|
|
190
|
+
"test": "vitest run",
|
|
191
|
+
"test:verbose": "VITEST_VERBOSE=true vitest run"
|
|
192
192
|
}
|
|
193
|
-
}
|
|
193
|
+
}
|
|
@@ -148,8 +148,8 @@ WhereSpecClause: lhs=QueryId op=SqlComparisonOpr? rhs=Expr;
|
|
|
148
148
|
|
|
149
149
|
GroupByClause: '@groupBy' ('(' (colNames+=QualifiedName (',' colNames+=QualifiedName)*)+ ')');
|
|
150
150
|
OrderByClause: '@orderBy' ('(' (colNames+=QualifiedName (',' colNames+=QualifiedName)*)+ ')') (order=('@asc' | '@desc'))?;
|
|
151
|
-
LimitClause: '@limit' '(' value=
|
|
152
|
-
OffsetClause: '@offset' '(' value=
|
|
151
|
+
LimitClause: '@limit' '(' value=Expr ')';
|
|
152
|
+
OffsetClause: '@offset' '(' value=Expr ')';
|
|
153
153
|
|
|
154
154
|
FullTextSearch: '{' name=QueryId query=Literal options=MapLiteral? '}';
|
|
155
155
|
|
|
@@ -364,7 +364,7 @@ export function isBeforeTriggerDefinition(item: unknown): item is BeforeTriggerD
|
|
|
364
364
|
}
|
|
365
365
|
|
|
366
366
|
export interface BinExpr extends langium.AstNode {
|
|
367
|
-
readonly $container: AttributeDefinition | BinExpr | CaseEntry | FnCall | Group | If | MapEntry | NegExpr | NotExpr | Pattern | SetAttribute | ThrowError | WhereSpecClause;
|
|
367
|
+
readonly $container: AttributeDefinition | BinExpr | CaseEntry | FnCall | Group | If | LimitClause | MapEntry | NegExpr | NotExpr | OffsetClause | Pattern | SetAttribute | ThrowError | WhereSpecClause;
|
|
368
368
|
readonly $type: 'BinExpr';
|
|
369
369
|
e1: Expr | PrimExpr;
|
|
370
370
|
e2: Expr | PrimExpr;
|
|
@@ -873,7 +873,7 @@ export function isGlossaryEntryDefinition(item: unknown): item is GlossaryEntryD
|
|
|
873
873
|
}
|
|
874
874
|
|
|
875
875
|
export interface Group extends langium.AstNode {
|
|
876
|
-
readonly $container: AttributeDefinition | BinExpr | CaseEntry | FnCall | Group | If | MapEntry | NegExpr | NotExpr | Pattern | SetAttribute | ThrowError | WhereSpecClause;
|
|
876
|
+
readonly $container: AttributeDefinition | BinExpr | CaseEntry | FnCall | Group | If | LimitClause | MapEntry | NegExpr | NotExpr | OffsetClause | Pattern | SetAttribute | ThrowError | WhereSpecClause;
|
|
877
877
|
readonly $type: 'Group';
|
|
878
878
|
ge: Expr;
|
|
879
879
|
}
|
|
@@ -1034,7 +1034,7 @@ export function isKvPairs(item: unknown): item is KvPairs {
|
|
|
1034
1034
|
export interface LimitClause extends langium.AstNode {
|
|
1035
1035
|
readonly $container: QueryOption;
|
|
1036
1036
|
readonly $type: 'LimitClause';
|
|
1037
|
-
value:
|
|
1037
|
+
value: Expr;
|
|
1038
1038
|
}
|
|
1039
1039
|
|
|
1040
1040
|
export const LimitClause = {
|
|
@@ -1047,7 +1047,7 @@ export function isLimitClause(item: unknown): item is LimitClause {
|
|
|
1047
1047
|
}
|
|
1048
1048
|
|
|
1049
1049
|
export interface Literal extends langium.AstNode {
|
|
1050
|
-
readonly $container: AttributeDefinition | BinExpr | CaseEntry | CrudMap | FnCall | FullTextSearch | GenericPropertyDef | Group | If | KvPair | MapEntry | NegExpr | NotExpr | Pattern | SetAttribute | ThrowError | WhereSpecClause;
|
|
1050
|
+
readonly $container: AttributeDefinition | BinExpr | CaseEntry | CrudMap | FnCall | FullTextSearch | GenericPropertyDef | Group | If | KvPair | LimitClause | MapEntry | NegExpr | NotExpr | OffsetClause | Pattern | SetAttribute | ThrowError | WhereSpecClause;
|
|
1051
1051
|
readonly $type: 'Literal';
|
|
1052
1052
|
array?: ArrayLiteral;
|
|
1053
1053
|
asyncFnCall?: AsyncFnCall;
|
|
@@ -1162,7 +1162,7 @@ export function isModuleDefinition(item: unknown): item is ModuleDefinition {
|
|
|
1162
1162
|
}
|
|
1163
1163
|
|
|
1164
1164
|
export interface NegExpr extends langium.AstNode {
|
|
1165
|
-
readonly $container: AttributeDefinition | BinExpr | CaseEntry | FnCall | Group | If | MapEntry | NegExpr | NotExpr | Pattern | SetAttribute | ThrowError | WhereSpecClause;
|
|
1165
|
+
readonly $container: AttributeDefinition | BinExpr | CaseEntry | FnCall | Group | If | LimitClause | MapEntry | NegExpr | NotExpr | OffsetClause | Pattern | SetAttribute | ThrowError | WhereSpecClause;
|
|
1166
1166
|
readonly $type: 'NegExpr';
|
|
1167
1167
|
ne: Expr;
|
|
1168
1168
|
}
|
|
@@ -1194,7 +1194,7 @@ export function isNodeDefinition(item: unknown): item is NodeDefinition {
|
|
|
1194
1194
|
}
|
|
1195
1195
|
|
|
1196
1196
|
export interface NotExpr extends langium.AstNode {
|
|
1197
|
-
readonly $container: AttributeDefinition | BinExpr | CaseEntry | FnCall | Group | If | MapEntry | NegExpr | NotExpr | Pattern | SetAttribute | ThrowError | WhereSpecClause;
|
|
1197
|
+
readonly $container: AttributeDefinition | BinExpr | CaseEntry | FnCall | Group | If | LimitClause | MapEntry | NegExpr | NotExpr | OffsetClause | Pattern | SetAttribute | ThrowError | WhereSpecClause;
|
|
1198
1198
|
readonly $type: 'NotExpr';
|
|
1199
1199
|
ne: Expr;
|
|
1200
1200
|
}
|
|
@@ -1211,7 +1211,7 @@ export function isNotExpr(item: unknown): item is NotExpr {
|
|
|
1211
1211
|
export interface OffsetClause extends langium.AstNode {
|
|
1212
1212
|
readonly $container: QueryOption;
|
|
1213
1213
|
readonly $type: 'OffsetClause';
|
|
1214
|
-
value:
|
|
1214
|
+
value: Expr;
|
|
1215
1215
|
}
|
|
1216
1216
|
|
|
1217
1217
|
export const OffsetClause = {
|
|
@@ -4365,7 +4365,7 @@ export const AgentlangGrammar = (): Grammar => loadedAgentlangGrammar ?? (loaded
|
|
|
4365
4365
|
"terminal": {
|
|
4366
4366
|
"$type": "RuleCall",
|
|
4367
4367
|
"rule": {
|
|
4368
|
-
"$ref": "#/rules@
|
|
4368
|
+
"$ref": "#/rules@113"
|
|
4369
4369
|
},
|
|
4370
4370
|
"arguments": []
|
|
4371
4371
|
}
|
|
@@ -4401,7 +4401,7 @@ export const AgentlangGrammar = (): Grammar => loadedAgentlangGrammar ?? (loaded
|
|
|
4401
4401
|
"terminal": {
|
|
4402
4402
|
"$type": "RuleCall",
|
|
4403
4403
|
"rule": {
|
|
4404
|
-
"$ref": "#/rules@
|
|
4404
|
+
"$ref": "#/rules@113"
|
|
4405
4405
|
},
|
|
4406
4406
|
"arguments": []
|
|
4407
4407
|
}
|
package/src/language/parser.ts
CHANGED
|
@@ -294,6 +294,13 @@ function introspectExpression(expr: Expr | undefined): BasePattern {
|
|
|
294
294
|
throw new Error('Failed to introspect expression - ' + expr);
|
|
295
295
|
}
|
|
296
296
|
|
|
297
|
+
function exprToLimitOffset(expr: Expr): number | string | undefined {
|
|
298
|
+
if (isLiteral(expr) && expr.num !== undefined) {
|
|
299
|
+
return expr.num;
|
|
300
|
+
}
|
|
301
|
+
return expr.$cstNode?.text;
|
|
302
|
+
}
|
|
303
|
+
|
|
297
304
|
function introspectQueryPattern(crudMap: CrudMap): CrudPattern {
|
|
298
305
|
if (crudMap) {
|
|
299
306
|
const cp: CrudPattern = new CrudPattern(crudMap.name);
|
|
@@ -327,10 +334,10 @@ function introspectQueryPattern(crudMap: CrudMap): CrudPattern {
|
|
|
327
334
|
cp.orderBy = opts.orderByClause.colNames;
|
|
328
335
|
}
|
|
329
336
|
if (opts.limitClause) {
|
|
330
|
-
cp.limit = opts.limitClause.value;
|
|
337
|
+
cp.limit = exprToLimitOffset(opts.limitClause.value);
|
|
331
338
|
}
|
|
332
339
|
if (opts.offsetClause) {
|
|
333
|
-
cp.offset = opts.offsetClause.value;
|
|
340
|
+
cp.offset = exprToLimitOffset(opts.offsetClause.value);
|
|
334
341
|
}
|
|
335
342
|
cp.isCreate = false;
|
|
336
343
|
cp.isQueryUpdate = false;
|
package/src/language/syntax.ts
CHANGED
|
@@ -413,8 +413,8 @@ export class CrudPattern extends BasePattern {
|
|
|
413
413
|
where: WhereSpecClausePattern[] | undefined;
|
|
414
414
|
groupBy: string[] | undefined;
|
|
415
415
|
orderBy: string[] | undefined;
|
|
416
|
-
limit: number | undefined;
|
|
417
|
-
offset: number | undefined;
|
|
416
|
+
limit: number | string | undefined;
|
|
417
|
+
offset: number | string | undefined;
|
|
418
418
|
isQuery: boolean = false;
|
|
419
419
|
isQueryUpdate: boolean = false;
|
|
420
420
|
isCreate: boolean = false;
|
package/src/runtime/api.ts
CHANGED
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import { fetchConfig as al_fetchConfig } from './interpreter.js';
|
|
2
|
-
import { defaultDataSource } from './resolvers/sqldb/database.js';
|
|
3
2
|
import {
|
|
4
3
|
makeInstance as al_makeInstance,
|
|
5
4
|
isInstanceOfType as al_isInstanceOfType,
|
|
@@ -54,20 +53,6 @@ export function initGlobalApi() {
|
|
|
54
53
|
globalThis.agentlang.exchangeOAuthCode = al_exchangeOAuthCode;
|
|
55
54
|
globalThis.agentlang.getAccessToken = al_getAccessToken;
|
|
56
55
|
|
|
57
|
-
// Expose raw SQL query for resolvers that need direct database access (e.g. pgvector)
|
|
58
|
-
globalThis.agentlang.rawQuery = async (sql: string, params?: any[]) => {
|
|
59
|
-
if (!defaultDataSource || !defaultDataSource.isInitialized) {
|
|
60
|
-
throw new Error('Database not initialized');
|
|
61
|
-
}
|
|
62
|
-
return defaultDataSource.query(sql, params);
|
|
63
|
-
};
|
|
64
|
-
|
|
65
|
-
// Expose database type detection for resolvers
|
|
66
|
-
globalThis.agentlang.getDbType = () => {
|
|
67
|
-
if (!defaultDataSource || !defaultDataSource.isInitialized) return 'unknown';
|
|
68
|
-
return defaultDataSource.options.type;
|
|
69
|
-
};
|
|
70
|
-
|
|
71
56
|
ApiInited = true;
|
|
72
57
|
}
|
|
73
58
|
}
|
package/src/runtime/defs.ts
CHANGED
|
@@ -4,8 +4,7 @@ export const PathAttributeName: string = '__path__';
|
|
|
4
4
|
export const PathAttributeNameQuery: string = '__path__?';
|
|
5
5
|
export const ParentAttributeName: string = '__parent__';
|
|
6
6
|
export const DeletedFlagAttributeName: string = '__is_deleted__';
|
|
7
|
-
export const
|
|
8
|
-
export const TenantAttributeName: string = 'agentId';
|
|
7
|
+
export const TenantAttributeName: string = '__tenant__';
|
|
9
8
|
|
|
10
9
|
export function isPathAttribute(n: string): boolean {
|
|
11
10
|
return n.startsWith(PathAttributeName);
|
|
@@ -1,79 +1,41 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Streaming text chunker - yields chunks one at a time without storing all in memory.
|
|
3
|
-
*/
|
|
4
1
|
export class TextChunker {
|
|
5
2
|
private chunkSize: number;
|
|
6
3
|
private chunkOverlap: number;
|
|
7
4
|
private separators: string[] = ['\n\n', '\n', '. ', ' ', ''];
|
|
8
5
|
|
|
9
6
|
constructor(chunkSize: number = 1000, chunkOverlap: number = 200) {
|
|
10
|
-
|
|
11
|
-
this.
|
|
12
|
-
// Cap overlap to at most 20% of chunk size to ensure progress
|
|
13
|
-
this.chunkOverlap = Math.max(
|
|
14
|
-
0,
|
|
15
|
-
Math.min(chunkOverlap || 200, Math.floor(this.chunkSize * 0.2))
|
|
16
|
-
);
|
|
7
|
+
this.chunkSize = chunkSize;
|
|
8
|
+
this.chunkOverlap = chunkOverlap;
|
|
17
9
|
}
|
|
18
10
|
|
|
19
|
-
|
|
20
|
-
* Calculate total chunks without creating them all in memory.
|
|
21
|
-
* Used for logging/progress tracking.
|
|
22
|
-
*/
|
|
23
|
-
estimateChunks(text: string): number {
|
|
24
|
-
if (text.length <= this.chunkSize) {
|
|
25
|
-
return 1;
|
|
26
|
-
}
|
|
27
|
-
// Rough estimate: (text length / effective chunk size) + 1
|
|
28
|
-
const effectiveChunkSize = this.chunkSize - this.chunkOverlap;
|
|
29
|
-
return Math.ceil(text.length / effectiveChunkSize);
|
|
30
|
-
}
|
|
31
|
-
|
|
32
|
-
/**
|
|
33
|
-
* Streaming generator that yields chunks one at a time.
|
|
34
|
-
* Memory-efficient: doesn't store all chunks in an array.
|
|
35
|
-
*/
|
|
36
|
-
*streamChunks(text: string): Generator<string, void, unknown> {
|
|
11
|
+
splitText(text: string): string[] {
|
|
37
12
|
if (text.length <= this.chunkSize) {
|
|
38
|
-
|
|
39
|
-
return;
|
|
13
|
+
return [text];
|
|
40
14
|
}
|
|
41
15
|
|
|
16
|
+
const chunks: string[] = [];
|
|
42
17
|
let start = 0;
|
|
43
|
-
const minAdvance = Math.max(50, this.chunkSize - this.chunkOverlap); // Ensure we always advance
|
|
44
18
|
|
|
45
19
|
while (start < text.length) {
|
|
46
20
|
let end = Math.min(start + this.chunkSize, text.length);
|
|
47
21
|
|
|
48
22
|
if (end < text.length) {
|
|
49
|
-
|
|
50
|
-
const splitPoint = this.findBestSplitPoint(text, start, end);
|
|
51
|
-
// Only use split point if it gives us reasonable progress
|
|
52
|
-
if (splitPoint - start >= minAdvance * 0.5) {
|
|
53
|
-
end = splitPoint;
|
|
54
|
-
}
|
|
55
|
-
// Otherwise use the hard end to ensure progress
|
|
23
|
+
end = this.findBestSplitPoint(text, start, end);
|
|
56
24
|
}
|
|
57
25
|
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
// Advance by at least minAdvance characters to avoid infinite loops
|
|
61
|
-
const nextStart = end - this.chunkOverlap;
|
|
62
|
-
start = Math.max(nextStart, start + minAdvance * 0.5);
|
|
26
|
+
chunks.push(text.substring(start, end));
|
|
27
|
+
start = end - this.chunkOverlap;
|
|
63
28
|
|
|
64
|
-
if (start
|
|
29
|
+
if (start < 0) start = 0;
|
|
30
|
+
if (start >= text.length - this.chunkOverlap) {
|
|
31
|
+
if (start < text.length) {
|
|
32
|
+
chunks.push(text.substring(start));
|
|
33
|
+
}
|
|
65
34
|
break;
|
|
66
35
|
}
|
|
67
36
|
}
|
|
68
|
-
}
|
|
69
37
|
|
|
70
|
-
|
|
71
|
-
* Legacy method for backwards compatibility.
|
|
72
|
-
* ⚠️ WARNING: This creates all chunks in memory and can cause OOM on large documents.
|
|
73
|
-
* Prefer streamChunks() for large documents.
|
|
74
|
-
*/
|
|
75
|
-
splitText(text: string): string[] {
|
|
76
|
-
return Array.from(this.streamChunks(text));
|
|
38
|
+
return chunks;
|
|
77
39
|
}
|
|
78
40
|
|
|
79
41
|
private findBestSplitPoint(text: string, start: number, end: number): number {
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import { OpenAIEmbeddings } from '@langchain/openai';
|
|
2
2
|
import { EmbeddingProvider, EmbeddingProviderConfig } from './provider.js';
|
|
3
3
|
import { getLocalEnv } from '../auth/defs.js';
|
|
4
|
-
import { logger } from '../logger.js';
|
|
5
4
|
|
|
6
5
|
export interface OpenAIEmbeddingConfig extends EmbeddingProviderConfig {
|
|
7
6
|
model?: string;
|
|
@@ -15,9 +14,6 @@ export class OpenAIEmbeddingProvider extends EmbeddingProvider {
|
|
|
15
14
|
constructor(config?: EmbeddingProviderConfig) {
|
|
16
15
|
super(config || {});
|
|
17
16
|
this.openaiConfig = (this.config as OpenAIEmbeddingConfig) || {};
|
|
18
|
-
logger.debug(
|
|
19
|
-
`[OPENAI-EMBEDDING] Provider created with model: ${this.openaiConfig.model || 'default'}`
|
|
20
|
-
);
|
|
21
17
|
}
|
|
22
18
|
|
|
23
19
|
protected createEmbeddings(): OpenAIEmbeddings {
|
|
@@ -25,40 +21,26 @@ export class OpenAIEmbeddingProvider extends EmbeddingProvider {
|
|
|
25
21
|
apiKey: this.resolveApiKey(),
|
|
26
22
|
};
|
|
27
23
|
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
const openaiConfig = (this.config as OpenAIEmbeddingConfig) || {};
|
|
31
|
-
|
|
32
|
-
if (openaiConfig?.model) {
|
|
33
|
-
config.model = openaiConfig.model;
|
|
24
|
+
if (this.openaiConfig?.model) {
|
|
25
|
+
config.model = this.openaiConfig.model;
|
|
34
26
|
}
|
|
35
27
|
|
|
36
|
-
if (openaiConfig?.dimensions) {
|
|
37
|
-
config.dimensions = openaiConfig.dimensions;
|
|
28
|
+
if (this.openaiConfig?.dimensions) {
|
|
29
|
+
config.dimensions = this.openaiConfig.dimensions;
|
|
38
30
|
}
|
|
39
31
|
|
|
40
|
-
if (openaiConfig?.maxRetries !== undefined) {
|
|
41
|
-
config.maxRetries = openaiConfig.maxRetries;
|
|
32
|
+
if (this.openaiConfig?.maxRetries !== undefined) {
|
|
33
|
+
config.maxRetries = this.openaiConfig.maxRetries;
|
|
42
34
|
}
|
|
43
35
|
|
|
44
36
|
return new OpenAIEmbeddings(config);
|
|
45
37
|
}
|
|
46
38
|
|
|
47
39
|
protected resolveApiKey(): string {
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
const config = this.openaiConfig || (this.config as OpenAIEmbeddingConfig) || {};
|
|
51
|
-
if (config.apiKey) {
|
|
52
|
-
return config.apiKey;
|
|
53
|
-
}
|
|
54
|
-
const envKey = process.env.AGENTLANG_OPENAI_KEY || getLocalEnv('AGENTLANG_OPENAI_KEY');
|
|
55
|
-
if (envKey) {
|
|
56
|
-
return envKey;
|
|
40
|
+
if (this.openaiConfig?.apiKey) {
|
|
41
|
+
return this.openaiConfig.apiKey;
|
|
57
42
|
}
|
|
58
|
-
|
|
59
|
-
`[OPENAI-EMBEDDING] No API key found! Set AGENTLANG_OPENAI_KEY environment variable.`
|
|
60
|
-
);
|
|
61
|
-
return '';
|
|
43
|
+
return process.env.AGENTLANG_OPENAI_KEY || getLocalEnv('AGENTLANG_OPENAI_KEY') || '';
|
|
62
44
|
}
|
|
63
45
|
|
|
64
46
|
getProviderName(): string {
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import { Embeddings } from '@langchain/core/embeddings';
|
|
2
|
-
import { logger } from '../logger.js';
|
|
3
2
|
|
|
4
3
|
export interface EmbeddingProviderConfig {
|
|
5
4
|
chunkSize?: number;
|
|
@@ -24,27 +23,7 @@ export abstract class EmbeddingProvider {
|
|
|
24
23
|
abstract getProviderName(): string;
|
|
25
24
|
|
|
26
25
|
async embedText(text: string): Promise<number[]> {
|
|
27
|
-
|
|
28
|
-
const startTime = Date.now();
|
|
29
|
-
const result = await this.embeddings.embedQuery(text);
|
|
30
|
-
const duration = Date.now() - startTime;
|
|
31
|
-
logger.debug(
|
|
32
|
-
`[EMBEDDING-PROVIDER] embedText completed in ${duration}ms (${result.length} dimensions)`
|
|
33
|
-
);
|
|
34
|
-
return result;
|
|
35
|
-
}
|
|
36
|
-
|
|
37
|
-
async embedTexts(texts: string[]): Promise<number[][]> {
|
|
38
|
-
if (texts.length === 0) return [];
|
|
39
|
-
if (texts.length === 1) return [await this.embedText(texts[0])];
|
|
40
|
-
logger.debug(`[EMBEDDING-PROVIDER] embedTexts called (${texts.length} texts)`);
|
|
41
|
-
const startTime = Date.now();
|
|
42
|
-
const results = await this.embeddings.embedDocuments(texts);
|
|
43
|
-
const duration = Date.now() - startTime;
|
|
44
|
-
logger.debug(
|
|
45
|
-
`[EMBEDDING-PROVIDER] embedTexts completed in ${duration}ms (${texts.length} texts, ${results[0]?.length || 0} dimensions)`
|
|
46
|
-
);
|
|
47
|
-
return results;
|
|
26
|
+
return await this.embeddings.embedQuery(text);
|
|
48
27
|
}
|
|
49
28
|
|
|
50
29
|
getConfig(): EmbeddingProviderConfig {
|
|
@@ -486,18 +486,18 @@ export async function executeEventHelper(eventInstance: Instance, env?: Environm
|
|
|
486
486
|
isLocalEnv = true;
|
|
487
487
|
}
|
|
488
488
|
let g: ExecGraph | undefined;
|
|
489
|
-
let
|
|
489
|
+
let assumedRole: string | undefined;
|
|
490
490
|
if (!isAgentEventInstance(eventInstance)) {
|
|
491
491
|
g = await generateExecutionGraph(fqn);
|
|
492
492
|
if (!g) {
|
|
493
493
|
throw new Error(`Failed to generate graph for event ${fqn}`);
|
|
494
494
|
}
|
|
495
|
-
|
|
495
|
+
assumedRole = getWorkflowForEvent(fqn).getRoleEscalation();
|
|
496
496
|
}
|
|
497
497
|
const oldModuleName = env.switchActiveModuleName(eventInstance.moduleName);
|
|
498
498
|
env.bind(eventInstance.name, eventInstance);
|
|
499
499
|
env.bind(eventInstance.getFqName(), eventInstance);
|
|
500
|
-
if (
|
|
500
|
+
if (assumedRole) env.setAssumedRole(assumedRole);
|
|
501
501
|
try {
|
|
502
502
|
if (g) {
|
|
503
503
|
await executeGraph(g, env);
|
|
@@ -522,7 +522,7 @@ export async function executeEventHelper(eventInstance: Instance, env?: Environm
|
|
|
522
522
|
}
|
|
523
523
|
throw err;
|
|
524
524
|
} finally {
|
|
525
|
-
env.
|
|
525
|
+
env.resetAssumedRole();
|
|
526
526
|
if (!isLocalEnv) env.switchActiveModuleName(oldModuleName);
|
|
527
527
|
}
|
|
528
528
|
}
|