agentlang 0.3.0 → 0.3.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (79) hide show
  1. package/README.md +276 -30
  2. package/out/api/http.d.ts.map +1 -1
  3. package/out/api/http.js +5 -3
  4. package/out/api/http.js.map +1 -1
  5. package/out/language/agentlang-validator.d.ts.map +1 -1
  6. package/out/language/agentlang-validator.js +24 -4
  7. package/out/language/agentlang-validator.js.map +1 -1
  8. package/out/language/generated/ast.d.ts +58 -7
  9. package/out/language/generated/ast.d.ts.map +1 -1
  10. package/out/language/generated/ast.js +82 -1
  11. package/out/language/generated/ast.js.map +1 -1
  12. package/out/language/generated/grammar.d.ts.map +1 -1
  13. package/out/language/generated/grammar.js +537 -216
  14. package/out/language/generated/grammar.js.map +1 -1
  15. package/out/language/main.cjs +614 -221
  16. package/out/language/main.cjs.map +2 -2
  17. package/out/runtime/agents/common.d.ts +11 -0
  18. package/out/runtime/agents/common.d.ts.map +1 -1
  19. package/out/runtime/agents/common.js +61 -1
  20. package/out/runtime/agents/common.js.map +1 -1
  21. package/out/runtime/exec-graph.d.ts.map +1 -1
  22. package/out/runtime/exec-graph.js +1 -7
  23. package/out/runtime/exec-graph.js.map +1 -1
  24. package/out/runtime/interpreter.d.ts.map +1 -1
  25. package/out/runtime/interpreter.js +45 -17
  26. package/out/runtime/interpreter.js.map +1 -1
  27. package/out/runtime/loader.d.ts +3 -4
  28. package/out/runtime/loader.d.ts.map +1 -1
  29. package/out/runtime/loader.js +91 -12
  30. package/out/runtime/loader.js.map +1 -1
  31. package/out/runtime/module.d.ts +34 -5
  32. package/out/runtime/module.d.ts.map +1 -1
  33. package/out/runtime/module.js +190 -18
  34. package/out/runtime/module.js.map +1 -1
  35. package/out/runtime/modules/ai.d.ts.map +1 -1
  36. package/out/runtime/modules/ai.js +15 -6
  37. package/out/runtime/modules/ai.js.map +1 -1
  38. package/out/runtime/modules/auth.d.ts.map +1 -1
  39. package/out/runtime/modules/auth.js +42 -43
  40. package/out/runtime/modules/auth.js.map +1 -1
  41. package/out/runtime/modules/core.js +1 -1
  42. package/out/runtime/modules/files.d.ts +18 -0
  43. package/out/runtime/modules/files.d.ts.map +1 -0
  44. package/out/runtime/modules/files.js +116 -0
  45. package/out/runtime/modules/files.js.map +1 -0
  46. package/out/runtime/util.d.ts +3 -1
  47. package/out/runtime/util.d.ts.map +1 -1
  48. package/out/runtime/util.js +16 -0
  49. package/out/runtime/util.js.map +1 -1
  50. package/out/setupClassic.d.ts +98 -0
  51. package/out/setupClassic.d.ts.map +1 -0
  52. package/out/setupClassic.js +38 -0
  53. package/out/setupClassic.js.map +1 -0
  54. package/out/setupCommon.d.ts +2 -0
  55. package/out/setupCommon.d.ts.map +1 -0
  56. package/out/setupCommon.js +33 -0
  57. package/out/setupCommon.js.map +1 -0
  58. package/out/setupExtended.d.ts +40 -0
  59. package/out/setupExtended.d.ts.map +1 -0
  60. package/out/setupExtended.js +67 -0
  61. package/out/setupExtended.js.map +1 -0
  62. package/out/syntaxes/agentlang.monarch.js +1 -1
  63. package/out/syntaxes/agentlang.monarch.js.map +1 -1
  64. package/package.json +183 -182
  65. package/src/api/http.ts +5 -3
  66. package/src/language/agentlang-validator.ts +29 -4
  67. package/src/language/agentlang.langium +15 -3
  68. package/src/language/generated/ast.ts +149 -7
  69. package/src/language/generated/grammar.ts +537 -216
  70. package/src/runtime/agents/common.ts +69 -1
  71. package/src/runtime/exec-graph.ts +1 -8
  72. package/src/runtime/interpreter.ts +47 -16
  73. package/src/runtime/loader.ts +105 -9
  74. package/src/runtime/module.ts +213 -24
  75. package/src/runtime/modules/ai.ts +12 -5
  76. package/src/runtime/modules/auth.ts +42 -43
  77. package/src/runtime/modules/core.ts +1 -1
  78. package/src/runtime/util.ts +19 -0
  79. package/src/syntaxes/agentlang.monarch.ts +1 -1
package/package.json CHANGED
@@ -1,183 +1,184 @@
1
1
  {
2
- "name": "agentlang",
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.3.0",
5
- "license": "Sustainable Use License",
6
- "author": "agentlang-ai",
7
- "homepage": "https://github.com/agentlang-ai/agentlang#readme",
8
- "repository": {
9
- "type": "git",
10
- "url": "git+https://github.com/agentlang-ai/agentlang.git"
11
- },
12
- "bugs": {
13
- "url": "https://github.com/agentlang-ai/agentlang/issues"
14
- },
15
- "keywords": [
16
- "agentlang",
17
- "agents-generation",
18
- "ai-agents",
19
- "enterprise",
20
- "multi-agent",
21
- "no-code",
22
- "agent-teams",
23
- "production-ready"
24
- ],
25
- "files": [
26
- "bin",
27
- "out",
28
- "src",
29
- "LICENSE"
30
- ],
31
- "type": "module",
32
- "publishConfig": {
33
- "access": "public",
34
- "registry": "https://registry.npmjs.org/"
35
- },
36
- "dependencies": {
37
- "@aws-sdk/client-cognito-identity": "^3.828.0",
38
- "@aws-sdk/client-cognito-identity-provider": "^3.828.0",
39
- "@aws-sdk/credential-providers": "^3.828.0",
40
- "@isomorphic-git/lightning-fs": "^4.6.1",
41
- "@langchain/anthropic": "^0.3.25",
42
- "@langchain/core": "^0.3.59",
43
- "@langchain/openai": "^0.5.18",
44
- "amazon-cognito-identity-js": "^6.3.15",
45
- "aws-jwt-verify": "^5.1.0",
46
- "bcryptjs": "^3.0.2",
47
- "buffer": "^6.0.3",
48
- "chalk": "~5.3.0",
49
- "commander": "~11.0.0",
50
- "express": "^5.1.0",
51
- "handlebars": "^4.7.8",
52
- "langchain": "^0.3.28",
53
- "langium": "^3.5.0",
54
- "openapi-client-axios": "^7.6.0",
55
- "pg": "^8.16.1",
56
- "pgvector": "^0.2.1",
57
- "sqlite3": "^5.1.7",
58
- "sql.js": "^1.13.0",
59
- "typeorm": "^0.3.25",
60
- "vscode-languageserver": "^9.0.1",
61
- "winston": "^3.17.0",
62
- "winston-daily-rotate-file": "^5.0.0",
63
- "zod": "^3.25.55"
64
- },
65
- "optionalDependencies": {},
66
- "overrides": {
67
- "semver": "^7.5.3",
68
- "trim-newlines": ">=3.0.1"
69
- },
70
- "devDependencies": {
71
- "@codingame/esbuild-import-meta-url-plugin": "~1.0.2",
72
- "@eslint/js": "^9.26.0",
73
- "@types/cookie-parser": "^1.4.9",
74
- "@types/express": "^5.0.1",
75
- "@types/node": "^18.19.110",
76
- "@types/sql.js": "^1.4.9",
77
- "@types/vscode": "^1.100.0",
78
- "@typescript-eslint/eslint-plugin": "~8.32.1",
79
- "@typescript-eslint/parser": "~8.32.1",
80
- "brace-expansion": ">=2.0.2",
81
- "concurrently": "~8.2.1",
82
- "esbuild": "^0.25.4",
83
- "eslint": "~9.26.0",
84
- "generator-langium": "^3.0.0",
85
- "http-server": "~14.1.1",
86
- "langium-cli": "^3.5.0",
87
- "nodemon": "^3.1.10",
88
- "prettier": "^3.5.3",
89
- "typescript": "^5.8.3",
90
- "typescript-eslint": "^8.32.1",
91
- "vite": "^6.3.5",
92
- "vite-plugin-node-polyfills": "^0.24.0",
93
- "vitest": "^3.1.3",
94
- "vscode-languageclient": "^9.0.1",
95
- "vscode-uri": "^3.1.0"
96
- },
97
- "volta": {
98
- "node": ">=20.0.0",
99
- "npm": ">=10.8.2"
100
- },
101
- "displayName": "agentlang",
102
- "engines": {
103
- "vscode": "^1.67.0",
104
- "node": ">=20.0.0"
105
- },
106
- "categories": [
107
- "Programming Languages"
108
- ],
109
- "contributes": {
110
- "languages": [
111
- {
112
- "id": "agentlang",
113
- "aliases": [
114
- "Agentlang",
115
- "agentlang"
116
- ],
117
- "extensions": [
118
- ".al"
119
- ],
120
- "configuration": "./language-configuration.json"
121
- }
122
- ],
123
- "grammars": [
124
- {
125
- "language": "agentlang",
126
- "scopeName": "source.agentlang",
127
- "path": "syntaxes/agentlang.tmLanguage.json"
128
- }
129
- ]
130
- },
131
- "activationEvents": [
132
- "onLanguage:agentlang"
133
- ],
134
- "main": "./out/extension/main.cjs",
135
- "types": "./out/index.d.ts",
136
- "exports": {
137
- ".": {
138
- "types": "./out/index.d.ts",
139
- "import": "./out/extension/main.cjs",
140
- "require": "./out/extension/main.cjs"
141
- },
142
- "./browser": {
143
- "types": "./out/browser.d.ts",
144
- "import": "./out/browser.js",
145
- "default": "./out/browser.js"
146
- },
147
- "./src/*": {
148
- "types": "./out/*.d.ts",
149
- "import": "./out/*.js",
150
- "require": "./out/*.js",
151
- "default": "./out/*.js"
152
- },
153
- "./out/*": "./out/*"
154
- },
155
- "bin": {
156
- "agentlang-cli": "./bin/cli.js"
157
- },
158
- "lint-staged": {
159
- "*.{js,ts,tsx}": [
160
- "eslint --fix --cache",
161
- "prettier --write"
162
- ],
163
- "*.{json,md,yml,yaml}": [
164
- "prettier --write"
165
- ]
166
- },
167
- "scripts": {
168
- "build": "tsc -b tsconfig.src.json && tsc -b tsconfig.declarations.json && node esbuild.mjs",
169
- "build:ts": "tsc -b tsconfig.src.json",
170
- "watch": "concurrently -n tsc,esbuild -c blue,yellow \"tsc -b tsconfig.src.json --watch\" \"node esbuild.mjs --watch\"",
171
- "lint": "eslint . --ext .ts",
172
- "lint:fix": "eslint . --ext .ts --fix",
173
- "format": "prettier --write \"src/**/*.{js,ts,tsx,json,md}\"",
174
- "format:check": "prettier --check \"src/**/*.{js,ts,tsx,json,md}\"",
175
- "langium:generate": "langium generate",
176
- "langium:generate:production": "langium generate --mode=production",
177
- "langium:watch": "langium generate --watch",
178
- "vscode:prepublish": "npm run build && npm run lint",
179
- "dev": "vite",
180
- "test": "vitest run",
181
- "test:verbose": "VITEST_VERBOSE=true vitest run"
182
- }
183
- }
2
+ "name": "agentlang",
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.3.1",
5
+ "license": "Sustainable Use License",
6
+ "author": "agentlang-ai",
7
+ "homepage": "https://github.com/agentlang-ai/agentlang#readme",
8
+ "repository": {
9
+ "type": "git",
10
+ "url": "git+https://github.com/agentlang-ai/agentlang.git"
11
+ },
12
+ "bugs": {
13
+ "url": "https://github.com/agentlang-ai/agentlang/issues"
14
+ },
15
+ "keywords": [
16
+ "agentlang",
17
+ "agents-generation",
18
+ "ai-agents",
19
+ "enterprise",
20
+ "multi-agent",
21
+ "no-code",
22
+ "agent-teams",
23
+ "production-ready"
24
+ ],
25
+ "files": [
26
+ "bin",
27
+ "out",
28
+ "src",
29
+ "LICENSE"
30
+ ],
31
+ "type": "module",
32
+ "publishConfig": {
33
+ "access": "public",
34
+ "registry": "https://registry.npmjs.org/"
35
+ },
36
+ "scripts": {
37
+ "build": "tsc -b tsconfig.src.json && tsc -b tsconfig.declarations.json && node esbuild.mjs",
38
+ "build:ts": "tsc -b tsconfig.src.json",
39
+ "watch": "concurrently -n tsc,esbuild -c blue,yellow \"tsc -b tsconfig.src.json --watch\" \"node esbuild.mjs --watch\"",
40
+ "lint": "eslint . --ext .ts",
41
+ "lint:fix": "eslint . --ext .ts --fix",
42
+ "format": "prettier --write \"src/**/*.{js,ts,tsx,json,md}\"",
43
+ "format:check": "prettier --check \"src/**/*.{js,ts,tsx,json,md}\"",
44
+ "langium:generate": "langium generate",
45
+ "langium:generate:production": "langium generate --mode=production",
46
+ "langium:watch": "langium generate --watch",
47
+ "vscode:prepublish": "npm run build && npm run lint",
48
+ "dev": "vite",
49
+ "test": "vitest run",
50
+ "test:verbose": "VITEST_VERBOSE=true vitest run"
51
+ },
52
+ "dependencies": {
53
+ "@aws-sdk/client-cognito-identity": "^3.828.0",
54
+ "@aws-sdk/client-cognito-identity-provider": "^3.828.0",
55
+ "@aws-sdk/credential-providers": "^3.828.0",
56
+ "@isomorphic-git/lightning-fs": "^4.6.1",
57
+ "@langchain/anthropic": "^0.3.25",
58
+ "@langchain/core": "^0.3.59",
59
+ "@langchain/openai": "^0.5.18",
60
+ "amazon-cognito-identity-js": "^6.3.15",
61
+ "aws-jwt-verify": "^5.1.0",
62
+ "bcryptjs": "^3.0.2",
63
+ "buffer": "^6.0.3",
64
+ "chalk": "~5.3.0",
65
+ "commander": "~11.0.0",
66
+ "express": "^5.1.0",
67
+ "handlebars": "^4.7.8",
68
+ "langchain": "^0.3.28",
69
+ "langium": "^3.5.0",
70
+ "openapi-client-axios": "^7.6.0",
71
+ "pg": "^8.16.1",
72
+ "pgvector": "^0.2.1",
73
+ "sqlite3": "^5.1.7",
74
+ "sql.js": "^1.13.0",
75
+ "typeorm": "^0.3.25",
76
+ "vscode-languageserver": "^9.0.1",
77
+ "winston": "^3.17.0",
78
+ "winston-daily-rotate-file": "^5.0.0",
79
+ "zod": "^3.25.55"
80
+ },
81
+ "optionalDependencies": {},
82
+ "overrides": {
83
+ "semver": "^7.5.3",
84
+ "trim-newlines": ">=3.0.1"
85
+ },
86
+ "devDependencies": {
87
+ "@codingame/esbuild-import-meta-url-plugin": "~1.0.2",
88
+ "@eslint/js": "^9.26.0",
89
+ "@types/cookie-parser": "^1.4.9",
90
+ "@types/express": "^5.0.1",
91
+ "@types/node": "^18.19.110",
92
+ "@types/sql.js": "^1.4.9",
93
+ "@types/vscode": "^1.100.0",
94
+ "@typescript-eslint/eslint-plugin": "~8.32.1",
95
+ "@typescript-eslint/parser": "~8.32.1",
96
+ "brace-expansion": ">=2.0.2",
97
+ "concurrently": "~8.2.1",
98
+ "esbuild": "^0.25.4",
99
+ "eslint": "~9.26.0",
100
+ "generator-langium": "^3.0.0",
101
+ "http-server": "~14.1.1",
102
+ "langium-cli": "^3.5.0",
103
+ "nodemon": "^3.1.10",
104
+ "prettier": "^3.5.3",
105
+ "typescript": "^5.8.3",
106
+ "typescript-eslint": "^8.32.1",
107
+ "vite": "^6.3.5",
108
+ "vite-plugin-node-polyfills": "^0.24.0",
109
+ "vitest": "^3.1.3",
110
+ "vscode-languageclient": "^9.0.1",
111
+ "vscode-uri": "^3.1.0"
112
+ },
113
+ "volta": {
114
+ "node": ">=20.0.0",
115
+ "npm": ">=10.8.2"
116
+ },
117
+ "displayName": "agentlang",
118
+ "engines": {
119
+ "vscode": "^1.67.0",
120
+ "node": ">=20.0.0"
121
+ },
122
+ "categories": [
123
+ "Programming Languages"
124
+ ],
125
+ "contributes": {
126
+ "languages": [
127
+ {
128
+ "id": "agentlang",
129
+ "aliases": [
130
+ "Agentlang",
131
+ "agentlang"
132
+ ],
133
+ "extensions": [
134
+ ".al"
135
+ ],
136
+ "configuration": "./language-configuration.json"
137
+ }
138
+ ],
139
+ "grammars": [
140
+ {
141
+ "language": "agentlang",
142
+ "scopeName": "source.agentlang",
143
+ "path": "syntaxes/agentlang.tmLanguage.json"
144
+ }
145
+ ]
146
+ },
147
+ "activationEvents": [
148
+ "onLanguage:agentlang"
149
+ ],
150
+ "main": "./out/extension/main.cjs",
151
+ "types": "./out/index.d.ts",
152
+ "exports": {
153
+ ".": {
154
+ "types": "./out/index.d.ts",
155
+ "import": "./out/extension/main.cjs",
156
+ "require": "./out/extension/main.cjs"
157
+ },
158
+ "./browser": {
159
+ "types": "./out/browser.d.ts",
160
+ "import": "./out/browser.js",
161
+ "default": "./out/browser.js"
162
+ },
163
+ "./src/*": {
164
+ "types": "./out/*.d.ts",
165
+ "import": "./out/*.js",
166
+ "require": "./out/*.js",
167
+ "default": "./out/*.js"
168
+ },
169
+ "./out/*": "./out/*"
170
+ },
171
+ "bin": {
172
+ "agentlang-cli": "./bin/cli.js"
173
+ },
174
+ "lint-staged": {
175
+ "*.{js,ts,tsx}": [
176
+ "eslint --fix --cache",
177
+ "prettier --write"
178
+ ],
179
+ "*.{json,md,yml,yaml}": [
180
+ "prettier --write"
181
+ ]
182
+ },
183
+ "packageManager": "pnpm@10.13.1+sha512.37ebf1a5c7a30d5fabe0c5df44ee8da4c965ca0c5af3dbab28c3a1681b70a256218d05c81c9c0dcf767ef6b8551eb5b960042b9ed4300c59242336377e01cfad"
184
+ }
package/src/api/http.ts CHANGED
@@ -64,10 +64,12 @@ export function startServer(appSpec: ApplicationSpec, port: number, host?: strin
64
64
  });
65
65
 
66
66
  getAllEventNames().forEach((eventNames: string[], moduleName: string) => {
67
+ const m = fetchModule(moduleName);
67
68
  eventNames.forEach((n: string) => {
68
- app.post(`/${moduleName}/${n}`, (req: Request, res: Response) => {
69
- handleEventPost(moduleName, n, req, res);
70
- });
69
+ if (m.eventIsPublic(n))
70
+ app.post(`/${moduleName}/${n}`, (req: Request, res: Response) => {
71
+ handleEventPost(moduleName, n, req, res);
72
+ });
71
73
  });
72
74
  });
73
75
 
@@ -31,15 +31,37 @@ export class AgentlangValidator {
31
31
  // and report an error when we see one we've already seen
32
32
  const reported = new Set();
33
33
  module.defs.forEach(d => {
34
+ let n: string | undefined;
34
35
  if (!isStandaloneStatement(d)) {
35
- if (d.$type != 'WorkflowDefinition' && reported.has(d.name)) {
36
- accept('error', `Definition has non-unique name '${d.name}'.`, {
36
+ if (
37
+ d.$type === 'PublicWorkflowDefinition' ||
38
+ d.$type === 'PublicAgentDefinition' ||
39
+ d.$type === 'PublicEventDefinition'
40
+ ) {
41
+ n = d.def.name;
42
+ } else {
43
+ n = d.name;
44
+ }
45
+ if (
46
+ d.$type != 'WorkflowDefinition' &&
47
+ d.$type != 'PublicWorkflowDefinition' &&
48
+ d.$type != 'ScenarioDefinition' &&
49
+ d.$type != 'DirectiveDefinition' &&
50
+ d.$type != 'GlossaryEntryDefinition' &&
51
+ reported.has(n)
52
+ ) {
53
+ accept('error', `Definition has non-unique name '${n}'.`, {
37
54
  node: d,
38
55
  property: 'name',
39
56
  });
40
57
  }
41
- if (d.$type != 'FlowDefinition') {
42
- reported.add(d.name);
58
+ if (
59
+ d.$type != 'FlowDefinition' &&
60
+ d.$type != 'ScenarioDefinition' &&
61
+ d.$type != 'DirectiveDefinition' &&
62
+ d.$type != 'GlossaryEntryDefinition'
63
+ ) {
64
+ reported.add(n);
43
65
  }
44
66
  }
45
67
  });
@@ -49,6 +71,9 @@ export class AgentlangValidator {
49
71
  // create a set of visited functions
50
72
  // and report an error when we see one we've already seen
51
73
  const reported = new Set();
74
+ if (def.$type === 'PublicEventDefinition') {
75
+ def = def.def;
76
+ }
52
77
  def.schema.attributes.forEach((a: AttributeDefinition) => {
53
78
  if (reported.has(a.name)) {
54
79
  accept('error', `'${def.name} " - attribute has non-unique name '${a.name}'.`, {
@@ -4,12 +4,13 @@ entry ModuleDefinition: 'module' name=QualifiedName (imports+=Import)* (defs+=De
4
4
 
5
5
  Import: 'import' path=STRING '@as' name=ID;
6
6
 
7
- Definition: SchemaDefinition | RelationshipDefinition | WorkflowDefinition | StandaloneStatement
8
- | AgentDefinition | ResolverDefinition | FlowDefinition | DecisionDefinition;
7
+ Definition: SchemaDefinition | RelationshipDefinition | WorkflowDefinition | PublicWorkflowDefinition | StandaloneStatement
8
+ | AgentDefinition | PublicAgentDefinition | ResolverDefinition | FlowDefinition | DecisionDefinition | ScenarioDefinition
9
+ | DirectiveDefinition | GlossaryEntryDefinition;
9
10
 
10
11
  StandaloneStatement: stmt=Statement;
11
12
 
12
- SchemaDefinition: EntityDefinition | EventDefinition | RecordDefinition;
13
+ SchemaDefinition: EntityDefinition | EventDefinition | PublicEventDefinition | RecordDefinition;
13
14
 
14
15
  PropertyDefinition: (name=TaggedId '(' value=KvPairs ')') | name=TaggedId;
15
16
 
@@ -26,6 +27,7 @@ fragment RecDef: name=QualifiedName extends=ExtendsClause? schema=RecordSchemaDe
26
27
 
27
28
  EntityDefinition: 'entity' RecDef;
28
29
  EventDefinition: 'event' RecDef;
30
+ PublicEventDefinition: '@public' def=EventDefinition;
29
31
  RecordDefinition: 'record' RecDef;
30
32
 
31
33
  ExtendsClause: 'extends' parentName=QualifiedName;
@@ -100,6 +102,8 @@ WorkflowHeaderTag returns string: '@after' | '@before';
100
102
 
101
103
  WorkflowHeaderPrefix returns string: 'create' | 'update' | 'delete';
102
104
 
105
+ PublicWorkflowDefinition: '@public' def=WorkflowDefinition;
106
+
103
107
  Pattern: expr=Expr | crudMap=CrudMap | if=If | forEach=ForEach | delete=Delete | purge=Purge
104
108
  | fullTextSearch=FullTextSearch | return=Return;
105
109
 
@@ -132,6 +136,8 @@ Return: 'return' pattern=Pattern;
132
136
 
133
137
  AgentDefinition: 'agent' name=GenericName (body=GenericDefBody? | '{''}');
134
138
 
139
+ PublicAgentDefinition: '@public' def=AgentDefinition;
140
+
135
141
  GenericDefBody: '{' (attributes+=GenericPropertyDef (',' attributes+=GenericPropertyDef)*)+ '}';
136
142
 
137
143
  GenericPropertyDef: name=ID value=Literal;
@@ -150,6 +156,12 @@ DecisionDefBody: '{' (cases+=CaseEntry (cases+=CaseEntry)*)+ '}';
150
156
 
151
157
  CaseEntry: 'case' '(' cond=Expr ')' Body;
152
158
 
159
+ ScenarioDefinition: 'scenario' name=Ref (body=MapLiteral? | '{''}');
160
+
161
+ DirectiveDefinition: 'directive' name=Ref (body=MapLiteral? | '{''}');
162
+
163
+ GlossaryEntryDefinition: 'glossaryEntry' name=Ref (body=MapLiteral? | '{''}');
164
+
153
165
  ResolverDefinition: 'resolver' name=GenericName '[' (paths+=GenericName (',' paths+=GenericName)*)+ ']'
154
166
  '{' (methods+=ResolverMethodSpec (',' methods+=ResolverMethodSpec)*)+ '}';
155
167