@defai.digital/iterate-domain 13.4.4 → 13.4.7

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.
@@ -1 +1 @@
1
- {"version":3,"file":"controller.d.ts","sourceRoot":"","sources":["../src/controller.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAGH,OAAO,EACL,KAAK,aAAa,EAElB,KAAK,YAAY,EACjB,KAAK,mBAAmB,EACxB,KAAK,qBAAqB,EAG3B,MAAM,0BAA0B,CAAC;AAClC,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAuBrD;;GAEG;AACH,qBAAa,iBAAkB,YAAW,kBAAkB;IAC1D,OAAO,CAAC,aAAa,CAAgB;IACrC,OAAO,CAAC,WAAW,CAAc;;IAOjC;;OAEG;IACH,KAAK,CAAC,OAAO,EAAE,mBAAmB,GAAG,YAAY;IAmCjD;;OAEG;IACH,cAAc,CACZ,KAAK,EAAE,YAAY,EACnB,MAAM,EAAE,aAAa,EACrB,OAAO,CAAC,EAAE,MAAM,GACf,qBAAqB;IA8DxB;;OAEG;IACH,eAAe,CAAC,MAAM,EAAE,aAAa,GAAG,MAAM;IAI9C;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAkDzB;;OAEG;IACH,OAAO,CAAC,cAAc;CAsCvB;AAMD;;GAEG;AACH,wBAAgB,uBAAuB,IAAI,kBAAkB,CAE5D"}
1
+ {"version":3,"file":"controller.d.ts","sourceRoot":"","sources":["../src/controller.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAGH,OAAO,EACL,KAAK,aAAa,EAElB,KAAK,YAAY,EACjB,KAAK,mBAAmB,EACxB,KAAK,qBAAqB,EAG3B,MAAM,0BAA0B,CAAC;AAClC,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAuBrD;;GAEG;AACH,qBAAa,iBAAkB,YAAW,kBAAkB;IAC1D,OAAO,CAAC,aAAa,CAAgB;IACrC,OAAO,CAAC,WAAW,CAAc;;IAOjC;;OAEG;IACH,KAAK,CAAC,OAAO,EAAE,mBAAmB,GAAG,YAAY;IAmCjD;;OAEG;IACH,cAAc,CACZ,KAAK,EAAE,YAAY,EACnB,MAAM,EAAE,aAAa,EACrB,OAAO,CAAC,EAAE,MAAM,GACf,qBAAqB;IA6DxB;;OAEG;IACH,eAAe,CAAC,MAAM,EAAE,aAAa,GAAG,MAAM;IAI9C;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAkDzB;;OAEG;IACH,OAAO,CAAC,cAAc;CAsCvB;AAMD;;GAEG;AACH,wBAAgB,uBAAuB,IAAI,kBAAkB,CAE5D"}
@@ -99,17 +99,18 @@ export class IterateController {
99
99
  }, 'paused', now, content);
100
100
  }
101
101
  }
102
+ // INV-ITER-001: Calculate consecutive errors once at the top to avoid duplicate calculations
103
+ const newConsecutiveErrors = intent === 'error' ? state.consecutiveErrors + 1 : 0;
102
104
  // Check consecutive errors
103
105
  if (intent === 'error') {
104
- const newErrorCount = state.consecutiveErrors + 1;
105
- const errorResult = this.safetyGuard.checkErrors(newErrorCount);
106
+ const errorResult = this.safetyGuard.checkErrors(newConsecutiveErrors);
106
107
  if (!errorResult.safe) {
107
108
  return this.createResponse(state, intent, {
108
109
  type: 'PAUSE',
109
110
  reason: errorResult.reason ?? 'Too many consecutive errors',
110
111
  requiresInput: true,
111
112
  suggestedInput: 'Review the errors and decide how to proceed.',
112
- }, 'paused', now, content, newErrorCount);
113
+ }, 'paused', now, content, newConsecutiveErrors);
113
114
  }
114
115
  }
115
116
  // Map intent to action
@@ -125,9 +126,7 @@ export class IterateController {
125
126
  else {
126
127
  newStatus = 'running';
127
128
  }
128
- // Reset error count on non-error intent
129
- const consecutiveErrors = intent === 'error' ? state.consecutiveErrors + 1 : 0;
130
- return this.createResponse(state, intent, action, newStatus, now, content, consecutiveErrors);
129
+ return this.createResponse(state, intent, action, newStatus, now, content, newConsecutiveErrors);
131
130
  }
132
131
  /**
133
132
  * Get auto-response for CONTINUE action
@@ -1 +1 @@
1
- {"version":3,"file":"controller.js","sourceRoot":"","sources":["../src/controller.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"controller.js","sourceRoot":"","sources":["../src/controller.ts"],"names":[],"mappings":"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"}
package/dist/safety.d.ts CHANGED
@@ -19,8 +19,14 @@ export declare class SafetyGuard implements ISafetyGuard {
19
19
  * Compile all patterns into RegExp objects
20
20
  */
21
21
  private compilePatterns;
22
+ /**
23
+ * Maximum content length to check (prevents ReDoS attacks)
24
+ * INV-SAFE-001: Content length is bounded to prevent catastrophic regex backtracking
25
+ */
26
+ private static readonly MAX_CONTENT_LENGTH;
22
27
  /**
23
28
  * Check content for dangerous patterns
29
+ * INV-SAFE-001: Truncates content to prevent ReDoS
24
30
  */
25
31
  checkContent(content: string): SafetyCheckResult;
26
32
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"safety.d.ts","sourceRoot":"","sources":["../src/safety.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAEL,KAAK,mBAAmB,EACxB,KAAK,iBAAiB,EACvB,MAAM,0BAA0B,CAAC;AAClC,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AA2C/C;;GAEG;AACH,qBAAa,WAAY,YAAW,YAAY;IAC9C,OAAO,CAAC,MAAM,CAAsB;IACpC,OAAO,CAAC,gBAAgB,CAAW;gBAEvB,MAAM,CAAC,EAAE,OAAO,CAAC,mBAAmB,CAAC;IAYjD;;OAEG;IACH,OAAO,CAAC,eAAe;IAiBvB;;OAEG;IACH,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,iBAAiB;IAsBhD;;OAEG;IACH,WAAW,CAAC,iBAAiB,EAAE,MAAM,GAAG,iBAAiB;IAYzD;;OAEG;IACH,SAAS,IAAI,mBAAmB;IAIhC;;OAEG;IACH,OAAO,CAAC,WAAW;CAgCpB;AAMD;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC,mBAAmB,CAAC,GAAG,YAAY,CAErF;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAGtD"}
1
+ {"version":3,"file":"safety.d.ts","sourceRoot":"","sources":["../src/safety.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAEL,KAAK,mBAAmB,EACxB,KAAK,iBAAiB,EACvB,MAAM,0BAA0B,CAAC;AAClC,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AA2C/C;;GAEG;AACH,qBAAa,WAAY,YAAW,YAAY;IAC9C,OAAO,CAAC,MAAM,CAAsB;IACpC,OAAO,CAAC,gBAAgB,CAAW;gBAEvB,MAAM,CAAC,EAAE,OAAO,CAAC,mBAAmB,CAAC;IAYjD;;OAEG;IACH,OAAO,CAAC,eAAe;IAiBvB;;;OAGG;IACH,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,kBAAkB,CAAW;IAErD;;;OAGG;IACH,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,iBAAiB;IA2BhD;;OAEG;IACH,WAAW,CAAC,iBAAiB,EAAE,MAAM,GAAG,iBAAiB;IAYzD;;OAEG;IACH,SAAS,IAAI,mBAAmB;IAIhC;;OAEG;IACH,OAAO,CAAC,WAAW;CAgCpB;AAMD;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC,mBAAmB,CAAC,GAAG,YAAY,CAErF;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAGtD"}
package/dist/safety.js CHANGED
@@ -80,15 +80,25 @@ export class SafetyGuard {
80
80
  }
81
81
  }).filter((p) => p !== null);
82
82
  }
83
+ /**
84
+ * Maximum content length to check (prevents ReDoS attacks)
85
+ * INV-SAFE-001: Content length is bounded to prevent catastrophic regex backtracking
86
+ */
87
+ static MAX_CONTENT_LENGTH = 100_000;
83
88
  /**
84
89
  * Check content for dangerous patterns
90
+ * INV-SAFE-001: Truncates content to prevent ReDoS
85
91
  */
86
92
  checkContent(content) {
87
93
  if (!this.config.enableDangerousPatternDetection) {
88
94
  return { safe: true };
89
95
  }
96
+ // INV-SAFE-001: Limit content length to prevent ReDoS attacks
97
+ const truncatedContent = content.length > SafetyGuard.MAX_CONTENT_LENGTH
98
+ ? content.slice(0, SafetyGuard.MAX_CONTENT_LENGTH)
99
+ : content;
90
100
  for (const pattern of this.compiledPatterns) {
91
- if (pattern.test(content)) {
101
+ if (pattern.test(truncatedContent)) {
92
102
  // Determine severity based on pattern
93
103
  const severity = this.getSeverity(pattern.source);
94
104
  return {
@@ -1 +1 @@
1
- {"version":3,"file":"safety.js","sourceRoot":"","sources":["../src/safety.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"safety.js","sourceRoot":"","sources":["../src/safety.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@defai.digital/iterate-domain",
3
- "version": "13.4.4",
3
+ "version": "13.4.7",
4
4
  "type": "module",
5
5
  "description": "Iterate mode for AutomatosX - autonomous execution with structured intent and safety controls",
6
6
  "license": "BUSL-1.1",
@@ -33,7 +33,7 @@
33
33
  "access": "public"
34
34
  },
35
35
  "dependencies": {
36
- "@defai.digital/contracts": "13.4.4"
36
+ "@defai.digital/contracts": "13.4.7"
37
37
  },
38
38
  "devDependencies": {
39
39
  "typescript": "^5.7.2"
package/src/controller.ts CHANGED
@@ -127,17 +127,19 @@ export class IterateController implements IIterateController {
127
127
  }
128
128
  }
129
129
 
130
+ // INV-ITER-001: Calculate consecutive errors once at the top to avoid duplicate calculations
131
+ const newConsecutiveErrors = intent === 'error' ? state.consecutiveErrors + 1 : 0;
132
+
130
133
  // Check consecutive errors
131
134
  if (intent === 'error') {
132
- const newErrorCount = state.consecutiveErrors + 1;
133
- const errorResult = this.safetyGuard.checkErrors(newErrorCount);
135
+ const errorResult = this.safetyGuard.checkErrors(newConsecutiveErrors);
134
136
  if (!errorResult.safe) {
135
137
  return this.createResponse(state, intent, {
136
138
  type: 'PAUSE',
137
139
  reason: errorResult.reason ?? 'Too many consecutive errors',
138
140
  requiresInput: true,
139
141
  suggestedInput: 'Review the errors and decide how to proceed.',
140
- }, 'paused', now, content, newErrorCount);
142
+ }, 'paused', now, content, newConsecutiveErrors);
141
143
  }
142
144
  }
143
145
 
@@ -154,10 +156,7 @@ export class IterateController implements IIterateController {
154
156
  newStatus = 'running';
155
157
  }
156
158
 
157
- // Reset error count on non-error intent
158
- const consecutiveErrors = intent === 'error' ? state.consecutiveErrors + 1 : 0;
159
-
160
- return this.createResponse(state, intent, action, newStatus, now, content, consecutiveErrors);
159
+ return this.createResponse(state, intent, action, newStatus, now, content, newConsecutiveErrors);
161
160
  }
162
161
 
163
162
  /**
package/src/safety.ts CHANGED
@@ -94,16 +94,28 @@ export class SafetyGuard implements ISafetyGuard {
94
94
  }).filter((p): p is RegExp => p !== null);
95
95
  }
96
96
 
97
+ /**
98
+ * Maximum content length to check (prevents ReDoS attacks)
99
+ * INV-SAFE-001: Content length is bounded to prevent catastrophic regex backtracking
100
+ */
101
+ private static readonly MAX_CONTENT_LENGTH = 100_000;
102
+
97
103
  /**
98
104
  * Check content for dangerous patterns
105
+ * INV-SAFE-001: Truncates content to prevent ReDoS
99
106
  */
100
107
  checkContent(content: string): SafetyCheckResult {
101
108
  if (!this.config.enableDangerousPatternDetection) {
102
109
  return { safe: true };
103
110
  }
104
111
 
112
+ // INV-SAFE-001: Limit content length to prevent ReDoS attacks
113
+ const truncatedContent = content.length > SafetyGuard.MAX_CONTENT_LENGTH
114
+ ? content.slice(0, SafetyGuard.MAX_CONTENT_LENGTH)
115
+ : content;
116
+
105
117
  for (const pattern of this.compiledPatterns) {
106
- if (pattern.test(content)) {
118
+ if (pattern.test(truncatedContent)) {
107
119
  // Determine severity based on pattern
108
120
  const severity = this.getSeverity(pattern.source);
109
121