@misterscan/sesi 1.2.1 → 1.2.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.
@@ -6,18 +6,70 @@ const types_1 = require("./types");
6
6
  const builtins_1 = require("./builtins");
7
7
  const ai_runtime_1 = require("./ai-runtime");
8
8
  class Interpreter {
9
- constructor() {
9
+ constructor(scriptDir, options) {
10
10
  this.prompts = new Map();
11
11
  this.memory = new Map();
12
12
  this.exports = new Map();
13
+ this.safeMode = true;
14
+ this.allowUnsafeFs = false;
15
+ this.allowedPaths = [];
16
+ this.safeMode = options?.safeMode ?? (process.env.SESI_SAFE_MODE !== 'false');
17
+ this.allowUnsafeFs = options?.allowUnsafeFs ?? (process.env.SESI_UNSAFE_FS === 'true');
18
+ this.allowedPaths = options?.allowedPaths || [process.cwd()];
19
+ if (scriptDir && !this.allowedPaths.includes(scriptDir)) {
20
+ this.allowedPaths.push(scriptDir);
21
+ }
22
+ if (this.safeMode) {
23
+ this.allowUnsafeFs = false;
24
+ }
13
25
  this.globalEnv = new types_1.Environment();
14
26
  this.currentEnv = this.globalEnv;
27
+ this.scriptDir = scriptDir;
15
28
  // Add built-in functions
16
29
  const builtins = (0, builtins_1.getBuiltins)(this);
17
30
  for (const [name, fn] of builtins) {
18
31
  this.globalEnv.define(name, fn);
19
32
  }
20
33
  }
34
+ /**
35
+ * Resolves a local module path by searching in priority order:
36
+ * 1. Relative to the script's own directory (if known)
37
+ * 2. Relative to the current working directory
38
+ * 3. Each directory listed in the SESI_PATH environment variable (colon/semicolon separated)
39
+ * 4. The global Sesi library directory: ~/.sesi/lib
40
+ */
41
+ resolveModulePath(source) {
42
+ const fs = require('fs');
43
+ const path = require('path');
44
+ const os = require('os');
45
+ let filePath = source;
46
+ if (!filePath.endsWith('.sesi'))
47
+ filePath += '.sesi';
48
+ const searchDirs = [];
49
+ // 1. Script's own directory
50
+ if (this.scriptDir)
51
+ searchDirs.push(this.scriptDir);
52
+ // 2. Current working directory
53
+ searchDirs.push(process.cwd());
54
+ // 3. SESI_PATH environment variable (semicolon or colon separated)
55
+ if (this.safeMode !== true) {
56
+ const sesiPath = process.env.SESI_PATH || '';
57
+ if (sesiPath) {
58
+ const sep = process.platform === 'win32' ? ';' : ':';
59
+ sesiPath.split(sep).filter(Boolean).forEach(p => searchDirs.push(p));
60
+ }
61
+ }
62
+ // 4. Global library: ~/.sesi/lib
63
+ if (this.safeMode !== true) {
64
+ searchDirs.push(path.join(os.homedir(), '.sesi', 'lib'));
65
+ }
66
+ for (const dir of searchDirs) {
67
+ const resolved = path.resolve(dir, filePath);
68
+ if (fs.existsSync(resolved))
69
+ return resolved;
70
+ }
71
+ return null;
72
+ }
21
73
  async interpret(program) {
22
74
  for (const statement of program.statements) {
23
75
  await this.executeStatement(statement);
@@ -305,6 +357,11 @@ class Interpreter {
305
357
  }
306
358
  async evaluateAssignment(expr) {
307
359
  const value = await this.evaluateExpression(expr.right);
360
+ const isDangerousKey = (key) => {
361
+ return key === '__proto__' || key === 'prototype' || key === 'constructor' ||
362
+ key === '__defineGetter__' || key === '__defineSetter__' ||
363
+ key === '__lookupGetter__' || key === '__lookupSetter__';
364
+ };
308
365
  if (expr.left.type === 'Identifier') {
309
366
  const name = (expr.left).name;
310
367
  this.currentEnv.set(name, value);
@@ -319,6 +376,9 @@ class Interpreter {
319
376
  const indexExpr = expr.left;
320
377
  const obj = await this.evaluateExpression(indexExpr.object);
321
378
  const index = await this.evaluateExpression(indexExpr.index);
379
+ if (typeof index === 'string' && isDangerousKey(index)) {
380
+ throw new Error(`Prototype pollution attempt blocked: Cannot set property "${index}"`);
381
+ }
322
382
  if (Array.isArray(obj) && typeof index === 'number') {
323
383
  obj[index] = value;
324
384
  }
@@ -330,6 +390,9 @@ class Interpreter {
330
390
  if (expr.left.type === 'MemberExpression') {
331
391
  const memberExpr = expr.left;
332
392
  const obj = await this.evaluateExpression(memberExpr.object);
393
+ if (isDangerousKey(memberExpr.property)) {
394
+ throw new Error(`Prototype pollution attempt blocked: Cannot set property "${memberExpr.property}"`);
395
+ }
333
396
  if (typeof obj === 'object' && obj !== null) {
334
397
  obj[memberExpr.property] = value;
335
398
  }
@@ -375,7 +438,7 @@ class Interpreter {
375
438
  return elements;
376
439
  }
377
440
  async evaluateObject(expr) {
378
- const obj = {};
441
+ const obj = Object.create(null);
379
442
  for (const prop of expr.properties) {
380
443
  obj[prop.key] = await this.evaluateExpression(prop.value);
381
444
  }
@@ -413,6 +476,9 @@ class Interpreter {
413
476
  if (typeof raw === 'object' && raw !== null) {
414
477
  thinkingLevel = raw;
415
478
  }
479
+ else if (typeof raw === 'string') {
480
+ thinkingLevel = raw;
481
+ }
416
482
  }
417
483
  let cache;
418
484
  if (expr.config?.cache) {
@@ -457,6 +523,9 @@ class Interpreter {
457
523
  if (typeof raw === 'object' && raw !== null) {
458
524
  thinkingLevel = raw;
459
525
  }
526
+ else if (typeof raw === 'string') {
527
+ thinkingLevel = raw;
528
+ }
460
529
  }
461
530
  let cache;
462
531
  if (expr.config?.cache) {
@@ -465,6 +534,17 @@ class Interpreter {
465
534
  cache = raw;
466
535
  }
467
536
  }
537
+ let search;
538
+ if (expr.config?.search) {
539
+ const raw = await this.evaluateExpression(expr.config.search);
540
+ if (typeof raw === 'boolean') {
541
+ search = raw;
542
+ }
543
+ else if (typeof raw === 'string') {
544
+ // Backwards compatibility for truthy string values
545
+ search = raw === 'google' || raw === 'true';
546
+ }
547
+ }
468
548
  const response = await ai_runtime_1.aiRuntime.callModel({
469
549
  model: expr.modelName,
470
550
  prompt: promptText,
@@ -473,6 +553,7 @@ class Interpreter {
473
553
  images: imagePaths,
474
554
  thinkingLevel,
475
555
  cache,
556
+ search,
476
557
  });
477
558
  return response.text;
478
559
  }
@@ -486,10 +567,17 @@ class Interpreter {
486
567
  return structured;
487
568
  }
488
569
  async evaluateToolCall(expr) {
570
+ const sensitiveBuiltins = ['exec', 'spawn'];
571
+ if (sensitiveBuiltins.includes(expr.functionName)) {
572
+ throw new Error(`Security Violation: Automated execution of sensitive tool "${expr.functionName}" is forbidden.`);
573
+ }
489
574
  const fn = this.currentEnv.get(expr.functionName);
490
575
  if (typeof fn !== 'object' || !fn || fn.type !== 'function') {
491
576
  throw new Error(`Tool not found: ${expr.functionName}`);
492
577
  }
578
+ if (fn.name === 'exec' || fn.name === 'spawn' || (fn.isBuiltin && sensitiveBuiltins.includes(fn.name))) {
579
+ throw new Error(`Security Violation: Automated execution of sensitive tool "${fn.name || expr.functionName}" is forbidden.`);
580
+ }
493
581
  const args = [];
494
582
  for (const arg of expr.arguments) {
495
583
  args.push(await this.evaluateExpression(arg));
@@ -538,22 +626,51 @@ class Interpreter {
538
626
  }
539
627
  else {
540
628
  const fs = require('fs');
541
- const path = require('path');
542
- let filePath = source;
543
- if (!filePath.endsWith('.sesi')) {
544
- filePath += '.sesi';
629
+ const resolvedPath = this.resolveModulePath(source);
630
+ if (!resolvedPath) {
631
+ const searchedDirs = [];
632
+ const os = require('os');
633
+ const path = require('path');
634
+ if (this.scriptDir)
635
+ searchedDirs.push(this.scriptDir);
636
+ searchedDirs.push(process.cwd());
637
+ if (this.safeMode !== true) {
638
+ const sesiPath = process.env.SESI_PATH || '';
639
+ if (sesiPath) {
640
+ const sep = process.platform === 'win32' ? ';' : ':';
641
+ sesiPath.split(sep).filter(Boolean).forEach(p => searchedDirs.push(p));
642
+ }
643
+ searchedDirs.push(path.join(os.homedir(), '.sesi', 'lib'));
644
+ }
645
+ throw new Error(`Module not found: "${source}"\nSearched in:\n ${searchedDirs.join('\n ')}\n` +
646
+ `Tip: add a folder to SESI_PATH, or place shared modules in ~/.sesi/lib`);
545
647
  }
546
- const resolvedPath = path.resolve(process.cwd(), filePath);
547
- if (!fs.existsSync(resolvedPath)) {
548
- throw new Error(`Module not found: ${source}`);
648
+ if (this.safeMode === true) {
649
+ const path = require('path');
650
+ const isSafe = (dir) => {
651
+ const relative = path.relative(dir, resolvedPath);
652
+ return relative === '' || (!relative.startsWith('..') && !path.isAbsolute(relative));
653
+ };
654
+ const allowed = [process.cwd()];
655
+ if (this.scriptDir)
656
+ allowed.push(this.scriptDir);
657
+ if (!allowed.some(isSafe)) {
658
+ throw new Error(`Security Violation: Import path "${resolvedPath}" lies outside allowed directories.`);
659
+ }
549
660
  }
550
661
  const content = fs.readFileSync(resolvedPath, 'utf-8');
662
+ const path = require('path');
551
663
  const { Lexer } = require('./lexer');
552
664
  const { Parser } = require('./parser');
553
665
  const lexer = new Lexer(content);
554
666
  const parser = new Parser(lexer.scanTokens());
555
667
  const program = parser.parse();
556
- const subInterpreter = new Interpreter();
668
+ // Sub-interpreter inherits the resolved module's own directory so its imports also resolve correctly
669
+ const subInterpreter = new Interpreter(path.dirname(resolvedPath), {
670
+ safeMode: this.safeMode,
671
+ allowUnsafeFs: this.allowUnsafeFs,
672
+ allowedPaths: this.allowedPaths
673
+ });
557
674
  await subInterpreter.interpret(program);
558
675
  moduleExports = subInterpreter.exports;
559
676
  }
@@ -653,7 +770,7 @@ class Interpreter {
653
770
  if (typeof str !== 'string')
654
771
  return null;
655
772
  try {
656
- return JSON.parse(str);
773
+ return (0, builtins_1.stripPrototypes)(JSON.parse(str));
657
774
  }
658
775
  catch (e) {
659
776
  return null;
@@ -1 +1 @@
1
- {"version":3,"file":"interpreter.js","sourceRoot":"","sources":["../src/interpreter.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"interpreter.js","sourceRoot":"","sources":["../src/interpreter.ts"],"names":[],"mappings":"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"}
package/dist/parser.d.ts CHANGED
@@ -35,6 +35,7 @@ export declare class Parser {
35
35
  private arrayLiteral;
36
36
  private objectLiteral;
37
37
  private promptExpression;
38
+ private hasSecondBlock;
38
39
  private imageCall;
39
40
  private modelCall;
40
41
  private structuredOutput;
@@ -1 +1 @@
1
- {"version":3,"file":"parser.d.ts","sourceRoot":"","sources":["../src/parser.ts"],"names":[],"mappings":"AACA,OAAO,EACL,KAAK,KAAK,EAEV,KAAK,OAAO,EAyCb,MAAM,SAAS,CAAC;AAEjB,qBAAa,MAAM;IACjB,OAAO,CAAC,MAAM,CAAU;IACxB,OAAO,CAAC,OAAO,CAAa;gBAEhB,MAAM,EAAE,KAAK,EAAE;IAI3B,KAAK,IAAI,OAAO;IAchB,OAAO,CAAC,SAAS;IA0BjB,OAAO,CAAC,YAAY;IAwBpB,OAAO,CAAC,cAAc;IAsBtB,OAAO,CAAC,iBAAiB;IA4CzB,OAAO,CAAC,WAAW;IAyBnB,OAAO,CAAC,cAAc;IActB,OAAO,CAAC,YAAY;IA8BpB,OAAO,CAAC,eAAe;IAgBvB,OAAO,CAAC,cAAc;IAStB,OAAO,CAAC,iBAAiB;IASzB,OAAO,CAAC,YAAY;IAyBpB,OAAO,CAAC,eAAe;IAyBvB,OAAO,CAAC,eAAe;IAqBvB,OAAO,CAAC,eAAe;IAuCvB,OAAO,CAAC,cAAc;IAqBtB,OAAO,CAAC,mBAAmB;IAY3B,OAAO,CAAC,UAAU;IAIlB,OAAO,CAAC,UAAU;IAgBlB,OAAO,CAAC,SAAS;IAkBjB,OAAO,CAAC,UAAU;IAiBlB,OAAO,CAAC,QAAQ;IAkBhB,OAAO,CAAC,UAAU;IAkBlB,OAAO,CAAC,QAAQ;IAkBhB,OAAO,CAAC,cAAc;IAkBtB,OAAO,CAAC,KAAK;IAeb,OAAO,CAAC,OAAO;IA+Bf,OAAO,CAAC,UAAU;IAuBlB,OAAO,CAAC,OAAO;IA+Hf,OAAO,CAAC,YAAY;IAmBpB,OAAO,CAAC,aAAa;IAsBrB,OAAO,CAAC,gBAAgB;IA8BxB,OAAO,CAAC,SAAS;IA0FjB,OAAO,CAAC,SAAS;IA0FjB,OAAO,CAAC,gBAAgB;IAgCxB,OAAO,CAAC,QAAQ;IAuBhB,OAAO,CAAC,cAAc;IAqDtB,OAAO,CAAC,YAAY;IAIpB,OAAO,CAAC,KAAK;IAUb,OAAO,CAAC,KAAK;IAKb,OAAO,CAAC,OAAO;IAKf,OAAO,CAAC,OAAO;IAIf,OAAO,CAAC,IAAI;IAIZ,OAAO,CAAC,QAAQ;IAIhB,OAAO,CAAC,OAAO;IAKf,OAAO,CAAC,mBAAmB;IAU3B,OAAO,CAAC,WAAW;IAanB,OAAO,CAAC,SAAS;CAIlB"}
1
+ {"version":3,"file":"parser.d.ts","sourceRoot":"","sources":["../src/parser.ts"],"names":[],"mappings":"AACA,OAAO,EACL,KAAK,KAAK,EAEV,KAAK,OAAO,EAyCb,MAAM,SAAS,CAAC;AAEjB,qBAAa,MAAM;IACjB,OAAO,CAAC,MAAM,CAAU;IACxB,OAAO,CAAC,OAAO,CAAa;gBAEhB,MAAM,EAAE,KAAK,EAAE;IAI3B,KAAK,IAAI,OAAO;IAchB,OAAO,CAAC,SAAS;IA0BjB,OAAO,CAAC,YAAY;IAwBpB,OAAO,CAAC,cAAc;IAsBtB,OAAO,CAAC,iBAAiB;IA4CzB,OAAO,CAAC,WAAW;IAyBnB,OAAO,CAAC,cAAc;IActB,OAAO,CAAC,YAAY;IA8BpB,OAAO,CAAC,eAAe;IAgBvB,OAAO,CAAC,cAAc;IAStB,OAAO,CAAC,iBAAiB;IASzB,OAAO,CAAC,YAAY;IAyBpB,OAAO,CAAC,eAAe;IAyBvB,OAAO,CAAC,eAAe;IAqBvB,OAAO,CAAC,eAAe;IAuCvB,OAAO,CAAC,cAAc;IAqBtB,OAAO,CAAC,mBAAmB;IAY3B,OAAO,CAAC,UAAU;IAIlB,OAAO,CAAC,UAAU;IAgBlB,OAAO,CAAC,SAAS;IAkBjB,OAAO,CAAC,UAAU;IAiBlB,OAAO,CAAC,QAAQ;IAkBhB,OAAO,CAAC,UAAU;IAkBlB,OAAO,CAAC,QAAQ;IAkBhB,OAAO,CAAC,cAAc;IAkBtB,OAAO,CAAC,KAAK;IAeb,OAAO,CAAC,OAAO;IA+Bf,OAAO,CAAC,UAAU;IAuBlB,OAAO,CAAC,OAAO;IA+Hf,OAAO,CAAC,YAAY;IAuBpB,OAAO,CAAC,aAAa;IA0BrB,OAAO,CAAC,gBAAgB;IA8BxB,OAAO,CAAC,cAAc;IA8BtB,OAAO,CAAC,SAAS;IA6FjB,OAAO,CAAC,SAAS;IA6FjB,OAAO,CAAC,gBAAgB;IAgCxB,OAAO,CAAC,QAAQ;IAuBhB,OAAO,CAAC,cAAc;IAqDtB,OAAO,CAAC,YAAY;IAIpB,OAAO,CAAC,KAAK;IAUb,OAAO,CAAC,KAAK;IAKb,OAAO,CAAC,OAAO;IAKf,OAAO,CAAC,OAAO;IAIf,OAAO,CAAC,IAAI;IAIZ,OAAO,CAAC,QAAQ;IAIhB,OAAO,CAAC,OAAO;IAKf,OAAO,CAAC,mBAAmB;IAU3B,OAAO,CAAC,WAAW;IAanB,OAAO,CAAC,SAAS;CAIlB"}
package/dist/parser.js CHANGED
@@ -631,11 +631,15 @@ class Parser {
631
631
  arrayLiteral() {
632
632
  const line = this.previous().line;
633
633
  const elements = [];
634
+ this.skipNewlines();
634
635
  if (!this.check('RIGHT_BRACKET')) {
635
636
  do {
637
+ this.skipNewlines();
636
638
  elements.push(this.assignment());
639
+ this.skipNewlines();
637
640
  } while (this.match('COMMA'));
638
641
  }
642
+ this.skipNewlines();
639
643
  this.consume('RIGHT_BRACKET', 'Expected ] after array elements');
640
644
  return {
641
645
  type: 'ArrayLiteral',
@@ -646,14 +650,18 @@ class Parser {
646
650
  objectLiteral() {
647
651
  const line = this.previous().line;
648
652
  const properties = [];
653
+ this.skipNewlines();
649
654
  if (!this.check('RIGHT_BRACE')) {
650
655
  do {
656
+ this.skipNewlines();
651
657
  const key = this.consume('STRING', 'Expected string key').literal;
652
658
  this.consume('COLON', 'Expected : after object key');
653
659
  const value = this.assignment();
654
660
  properties.push({ key: key, value });
661
+ this.skipNewlines();
655
662
  } while (this.match('COMMA'));
656
663
  }
664
+ this.skipNewlines();
657
665
  this.consume('RIGHT_BRACE', 'Expected } after object properties');
658
666
  return {
659
667
  type: 'ObjectLiteral',
@@ -688,6 +696,34 @@ class Parser {
688
696
  line,
689
697
  };
690
698
  }
699
+ hasSecondBlock() {
700
+ let braceCount = 0;
701
+ let i = this.current;
702
+ if (i >= this.tokens.length || this.tokens[i].type !== 'LEFT_BRACE') {
703
+ return false;
704
+ }
705
+ while (i < this.tokens.length) {
706
+ const token = this.tokens[i];
707
+ if (token.type === 'LEFT_BRACE') {
708
+ braceCount++;
709
+ }
710
+ else if (token.type === 'RIGHT_BRACE') {
711
+ braceCount--;
712
+ if (braceCount === 0) {
713
+ let nextIdx = i + 1;
714
+ while (nextIdx < this.tokens.length && this.tokens[nextIdx].type === 'NEWLINE') {
715
+ nextIdx++;
716
+ }
717
+ if (nextIdx < this.tokens.length && this.tokens[nextIdx].type === 'LEFT_BRACE') {
718
+ return true;
719
+ }
720
+ return false;
721
+ }
722
+ }
723
+ i++;
724
+ }
725
+ return false;
726
+ }
691
727
  imageCall() {
692
728
  const line = this.previous().line;
693
729
  this.consume('LEFT_PAREN', 'Expected ( after image');
@@ -696,16 +732,8 @@ class Parser {
696
732
  let config;
697
733
  this.skipNewlines();
698
734
  let hasConfig = false;
699
- if (this.check('LEFT_BRACE')) {
700
- const insideToken = this.tokens[this.current + 1];
701
- if (insideToken.type === 'RIGHT_BRACE' && this.current + 2 < this.tokens.length && this.tokens[this.current + 2].type === 'LEFT_BRACE') {
702
- hasConfig = true;
703
- }
704
- else if (insideToken.type === 'STRING' || insideToken.type === 'IDENTIFIER') {
705
- if (this.current + 2 < this.tokens.length && this.tokens[this.current + 2].type === 'COLON') {
706
- hasConfig = true;
707
- }
708
- }
735
+ if (this.check('LEFT_BRACE') && this.hasSecondBlock()) {
736
+ hasConfig = true;
709
737
  }
710
738
  if (hasConfig) {
711
739
  this.advance(); // consume LEFT_BRACE
@@ -715,12 +743,23 @@ class Parser {
715
743
  let key;
716
744
  if (this.check('STRING')) {
717
745
  key = this.consume('STRING', '').literal;
746
+ this.consume('COLON', 'Expected : after config key');
747
+ config[key] = this.assignment();
718
748
  }
719
749
  else {
720
750
  key = this.consume('IDENTIFIER', 'Expected config key').lexeme;
751
+ if (this.match('COLON')) {
752
+ config[key] = this.assignment();
753
+ }
754
+ else {
755
+ config[key] = {
756
+ type: 'Literal',
757
+ value: true,
758
+ rawType: 'bool',
759
+ line: this.previous().line,
760
+ };
761
+ }
721
762
  }
722
- this.consume('COLON', 'Expected : after config key');
723
- config[key] = this.assignment();
724
763
  } while (this.match('COMMA'));
725
764
  }
726
765
  this.consume('RIGHT_BRACE', 'Expected } after config');
@@ -784,16 +823,8 @@ class Parser {
784
823
  let config;
785
824
  this.skipNewlines();
786
825
  let hasConfig = false;
787
- if (this.check('LEFT_BRACE')) {
788
- const insideToken = this.tokens[this.current + 1];
789
- if (insideToken.type === 'RIGHT_BRACE' && this.current + 2 < this.tokens.length && this.tokens[this.current + 2].type === 'LEFT_BRACE') {
790
- hasConfig = true;
791
- }
792
- else if (insideToken.type === 'STRING' || insideToken.type === 'IDENTIFIER') {
793
- if (this.current + 2 < this.tokens.length && this.tokens[this.current + 2].type === 'COLON') {
794
- hasConfig = true;
795
- }
796
- }
826
+ if (this.check('LEFT_BRACE') && this.hasSecondBlock()) {
827
+ hasConfig = true;
797
828
  }
798
829
  if (hasConfig) {
799
830
  this.advance(); // consume LEFT_BRACE
@@ -803,12 +834,23 @@ class Parser {
803
834
  let key;
804
835
  if (this.check('STRING')) {
805
836
  key = this.consume('STRING', '').literal;
837
+ this.consume('COLON', 'Expected : after config key');
838
+ config[key] = this.assignment();
806
839
  }
807
840
  else {
808
841
  key = this.consume('IDENTIFIER', 'Expected config key').lexeme;
842
+ if (this.match('COLON')) {
843
+ config[key] = this.assignment();
844
+ }
845
+ else {
846
+ config[key] = {
847
+ type: 'Literal',
848
+ value: true,
849
+ rawType: 'bool',
850
+ line: this.previous().line,
851
+ };
852
+ }
809
853
  }
810
- this.consume('COLON', 'Expected : after config key');
811
- config[key] = this.assignment();
812
854
  } while (this.match('COMMA'));
813
855
  }
814
856
  this.consume('RIGHT_BRACE', 'Expected } after config');