@orbytautomation/engine 0.2.0 → 0.2.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.
@@ -1 +1 @@
1
- {"version":3,"file":"SchemaValidator.d.ts","sourceRoot":"","sources":["../../src/parser/SchemaValidator.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAGH,OAAO,EAAuB,KAAK,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AACtF,OAAO,EAML,UAAU,EAEX,MAAM,oBAAoB,CAAC;AAE5B;;GAEG;AACH,qBAAa,eAAe;IAC1B;;;;;;OAMG;IACH,MAAM,CAAC,QAAQ,CAAC,WAAW,EAAE,OAAO,GAAG,qBAAqB;IA2B5D;;;;;;OAMG;IACH,OAAO,CAAC,MAAM,CAAC,qBAAqB;IA0EpC;;;;OAIG;IACH,OAAO,CAAC,MAAM,CAAC,oBAAoB;IAkBnC;;;;;OAKG;IACH,OAAO,CAAC,MAAM,CAAC,iBAAiB;IAwChC;;;;;OAKG;IACH,MAAM,CAAC,OAAO,CAAC,WAAW,EAAE,OAAO,GAAG,OAAO;IAS7C;;;;;OAKG;IACH,MAAM,CAAC,SAAS,CAAC,WAAW,EAAE,OAAO,GAAG;QACtC,OAAO,EAAE,OAAO,CAAC;QACjB,IAAI,CAAC,EAAE,qBAAqB,CAAC;QAC7B,KAAK,CAAC,EAAE,UAAU,CAAC;KACpB;CAmBF"}
1
+ {"version":3,"file":"SchemaValidator.d.ts","sourceRoot":"","sources":["../../src/parser/SchemaValidator.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAGH,OAAO,EAAuB,KAAK,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AACtF,OAAO,EAML,UAAU,EAEX,MAAM,oBAAoB,CAAC;AAE5B;;GAEG;AACH,qBAAa,eAAe;IAC1B;;;;;;OAMG;IACH,MAAM,CAAC,QAAQ,CAAC,WAAW,EAAE,OAAO,GAAG,qBAAqB;IA2B5D;;;;;;OAMG;IACH,OAAO,CAAC,MAAM,CAAC,qBAAqB;IAyFpC;;;;OAIG;IACH,OAAO,CAAC,MAAM,CAAC,oBAAoB;IAkBnC;;;;;OAKG;IACH,OAAO,CAAC,MAAM,CAAC,iBAAiB;IAwChC;;;;;OAKG;IACH,MAAM,CAAC,OAAO,CAAC,WAAW,EAAE,OAAO,GAAG,OAAO;IAS7C;;;;;OAKG;IACH,MAAM,CAAC,SAAS,CAAC,WAAW,EAAE,OAAO,GAAG;QACtC,OAAO,EAAE,OAAO,CAAC;QACjB,IAAI,CAAC,EAAE,qBAAqB,CAAC;QAC7B,KAAK,CAAC,EAAE,UAAU,CAAC;KACpB;CAmBF"}
@@ -53,6 +53,13 @@ export class SchemaValidator {
53
53
  if (!obj || typeof obj !== 'object') {
54
54
  return;
55
55
  }
56
+ // Free-form field paths - these can contain any user-defined keys
57
+ const FREE_FORM_PATHS = ['annotations', 'context', 'secrets', 'inputs'];
58
+ const isFreeFormPath = FREE_FORM_PATHS.some(fp => path === fp || path.endsWith('.' + fp));
59
+ // Skip validation for free-form paths (user can define any fields)
60
+ if (isFreeFormPath) {
61
+ return;
62
+ }
56
63
  const validFields = getValidFields(path);
57
64
  const actualFields = Object.keys(obj);
58
65
  for (const field of actualFields) {
@@ -85,10 +92,15 @@ export class SchemaValidator {
85
92
  });
86
93
  }
87
94
  // Recursively validate nested objects
95
+ // Skip validation for free-form fields (user-defined content)
96
+ const FREE_FORM_FIELDS = ['annotations', 'context', 'with', 'outputs', 'env', 'secrets', 'inputs'];
88
97
  const value = obj[field];
89
98
  if (value && typeof value === 'object' && !Array.isArray(value)) {
90
- const nestedPath = path === 'root' ? field : `${path}.${field}`;
91
- this.validateUnknownFields(value, nestedPath);
99
+ // Don't validate contents of free-form fields (they can contain any keys)
100
+ if (!FREE_FORM_FIELDS.includes(field)) {
101
+ const nestedPath = path === 'root' ? field : `${path}.${field}`;
102
+ this.validateUnknownFields(value, nestedPath);
103
+ }
92
104
  }
93
105
  // Validate array items (steps, triggers, etc.)
94
106
  if (Array.isArray(value)) {
@@ -1 +1 @@
1
- {"version":3,"file":"SchemaValidator.js","sourceRoot":"","sources":["../../src/parser/SchemaValidator.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"SchemaValidator.js","sourceRoot":"","sources":["../../src/parser/SchemaValidator.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,mBAAmB,EAA8B,MAAM,qBAAqB,CAAC;AACtF,OAAO,EACL,WAAW,EACX,WAAW,EACX,YAAY,EACZ,cAAc,EACd,YAAY,EACZ,UAAU,EACV,aAAa,GACd,MAAM,oBAAoB,CAAC;AAE5B;;GAEG;AACH,MAAM,OAAO,eAAe;IAC1B;;;;;;OAMG;IACH,MAAM,CAAC,QAAQ,CAAC,WAAoB;QAClC,IAAI,CAAC;YACH,gDAAgD;YAChD,IAAI,CAAC,qBAAqB,CAAC,WAAkC,EAAE,MAAM,CAAC,CAAC;YAEvE,+DAA+D;YAC/D,MAAM,SAAS,GAAG,mBAAmB,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;YAEzD,kCAAkC;YAClC,IAAI,CAAC,oBAAoB,CAAC,SAAS,CAAC,CAAC;YAErC,OAAO,SAAS,CAAC;QACnB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,4CAA4C;YAC5C,IAAI,KAAK,YAAY,UAAU,EAAE,CAAC;gBAChC,MAAM,KAAK,CAAC;YACd,CAAC;YAED,wDAAwD;YACxD,IAAI,KAAK,YAAY,CAAC,CAAC,QAAQ,EAAE,CAAC;gBAChC,MAAM,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC;YACtC,CAAC;YAED,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC;IAED;;;;;;OAMG;IACK,MAAM,CAAC,qBAAqB,CAClC,GAAwB,EACxB,IAAY;QAEZ,IAAI,CAAC,GAAG,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE,CAAC;YACpC,OAAO;QACT,CAAC;QAED,kEAAkE;QAClE,MAAM,eAAe,GAAG,CAAC,aAAa,EAAE,SAAS,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAC;QACxE,MAAM,cAAc,GAAG,eAAe,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,KAAK,EAAE,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,GAAG,EAAE,CAAC,CAAC,CAAC;QAE1F,mEAAmE;QACnE,IAAI,cAAc,EAAE,CAAC;YACnB,OAAO;QACT,CAAC;QAED,MAAM,WAAW,GAAG,cAAc,CAAC,IAAI,CAAC,CAAC;QACzC,MAAM,YAAY,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAEtC,KAAK,MAAM,KAAK,IAAI,YAAY,EAAE,CAAC;YACjC,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,IAAI,CAAC,EAAE,CAAC;gBAC/B,sCAAsC;gBACtC,MAAM,WAAW,GAAG,WAAW,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC;gBACxE,MAAM,SAAS,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC;gBAEjC,qDAAqD;gBACrD,IAAI,IAAY,CAAC;gBACjB,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBAC3B,IAAI,GAAG,wBAAwB,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC;gBAC9E,CAAC;qBAAM,IAAI,SAAS,EAAE,CAAC;oBACrB,IAAI,GAAG,iBAAiB,SAAS,IAAI,CAAC;gBACxC,CAAC;qBAAM,CAAC;oBACN,IAAI,GAAG,mBAAmB,IAAI,KAAK,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;gBAC1E,CAAC;gBAED,+DAA+D;gBAC/D,IAAI,SAAS,IAAI,YAAY,CAAC,KAAK,EAAE,SAAS,CAAC,EAAE,CAAC;oBAChD,IAAI,GAAG,8BAA8B,SAAS,IAAI,CAAC;gBACrD,CAAC;gBAED,uCAAuC;gBACvC,MAAM,IAAI,WAAW,CAAC;oBACpB,IAAI,EAAE,WAAkB;oBACxB,OAAO,EAAE,kBAAkB,KAAK,GAAG;oBACnC,IAAI,EAAE,IAAI,KAAK,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,IAAI,KAAK,EAAE;oBAClD,IAAI;oBACJ,QAAQ,EAAE,aAAa,CAAC,KAAK;iBAC9B,CAAC,CAAC;YACL,CAAC;YAED,sCAAsC;YACtC,8DAA8D;YAC9D,MAAM,gBAAgB,GAAG,CAAC,aAAa,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAC;YACnG,MAAM,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC;YAEzB,IAAI,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;gBAChE,0EAA0E;gBAC1E,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;oBACtC,MAAM,UAAU,GAAG,IAAI,KAAK,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,IAAI,KAAK,EAAE,CAAC;oBAChE,IAAI,CAAC,qBAAqB,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC;gBAChD,CAAC;YACH,CAAC;YAED,+CAA+C;YAC/C,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;gBACzB,IAAI,KAAK,KAAK,OAAO,EAAE,CAAC;oBACtB,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE;wBAC5B,IAAI,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE,CAAC;4BACrC,IAAI,CAAC,qBAAqB,CACxB,IAAI,EACJ,kBAAkB,KAAK,GAAG,CAC3B,CAAC;wBACJ,CAAC;oBACH,CAAC,CAAC,CAAC;gBACL,CAAC;qBAAM,IAAI,KAAK,KAAK,UAAU,EAAE,CAAC;oBAChC,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE;wBAC5B,IAAI,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE,CAAC;4BACrC,IAAI,CAAC,qBAAqB,CACxB,IAAI,EACJ,YAAY,KAAK,GAAG,CACrB,CAAC;wBACJ,CAAC;oBACH,CAAC,CAAC,CAAC;gBACL,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IAED;;;;OAIG;IACK,MAAM,CAAC,oBAAoB,CAAC,QAA+B;QACjE,gCAAgC;QAChC,IAAI,CAAC,QAAQ,CAAC,QAAQ,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC;YACnD,MAAM,WAAW,CAAC,YAAY,CAAC,gBAAgB,EAAE,UAAU,CAAC,CAAC;QAC/D,CAAC;QAED,oCAAoC;QACpC,IAAI,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACzC,MAAM,IAAI,WAAW,CAAC;gBACpB,IAAI,EAAE,WAAkB;gBACxB,OAAO,EAAE,yCAAyC;gBAClD,IAAI,EAAE,gBAAgB;gBACtB,IAAI,EAAE,wCAAwC;gBAC9C,QAAQ,EAAE,OAAc;aACzB,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED;;;;;OAKG;IACK,MAAM,CAAC,iBAAiB,CAAC,KAAiB;QAChD,+DAA+D;QAC/D,MAAM,UAAU,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QACnC,MAAM,IAAI,GAAG,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAEvC,oDAAoD;QACpD,QAAQ,UAAU,CAAC,IAAI,EAAE,CAAC;YACxB,KAAK,cAAc;gBACjB,qDAAqD;gBACrD,MAAM,YAAY,GAAI,UAAkB,CAAC,QAAQ,IAAI,SAAS,CAAC;gBAC/D,MAAM,YAAY,GAAI,UAAkB,CAAC,QAAQ,IAAI,SAAS,CAAC;gBAC/D,OAAO,WAAW,CAAC,WAAW,CAC5B,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,IAAI,SAAS,EAClC,YAAY,EACZ,MAAM,CAAC,YAAY,CAAC,EACpB,IAAI,CACL,CAAC;YAEJ,KAAK,eAAe;gBAClB,gCAAgC;gBAChC,OAAO,IAAI,WAAW,CAAC;oBACrB,IAAI,EAAE,WAAkB;oBACxB,OAAO,EAAE,UAAU,CAAC,OAAO;oBAC3B,IAAI;oBACJ,IAAI,EAAE,gEAAgE;oBACtE,QAAQ,EAAE,aAAa,CAAC,KAAK;iBAC9B,CAAC,CAAC;YAEL;gBACE,uBAAuB;gBACvB,OAAO,IAAI,WAAW,CAAC;oBACrB,IAAI,EAAE,WAAkB;oBACxB,OAAO,EAAE,UAAU,CAAC,OAAO;oBAC3B,IAAI;oBACJ,IAAI,EAAE,0CAA0C;oBAChD,QAAQ,EAAE,aAAa,CAAC,KAAK;iBAC9B,CAAC,CAAC;QACP,CAAC;IACH,CAAC;IAED;;;;;OAKG;IACH,MAAM,CAAC,OAAO,CAAC,WAAoB;QACjC,IAAI,CAAC;YACH,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;YAC3B,OAAO,IAAI,CAAC;QACd,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,KAAK,CAAC;QACf,CAAC;IACH,CAAC;IAED;;;;;OAKG;IACH,MAAM,CAAC,SAAS,CAAC,WAAoB;QAKnC,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;YACxC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;QACjC,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,KAAK,YAAY,UAAU,EAAE,CAAC;gBAChC,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC;YACnC,CAAC;YACD,yBAAyB;YACzB,OAAO;gBACL,OAAO,EAAE,KAAK;gBACd,KAAK,EAAE,IAAI,WAAW,CAAC;oBACrB,IAAI,EAAE,WAAkB;oBACxB,OAAO,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe;oBACjE,QAAQ,EAAE,OAAc;iBACzB,CAAC;aACH,CAAC;QACJ,CAAC;IACH,CAAC;CACF"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@orbytautomation/engine",
3
- "version": "0.2.0",
3
+ "version": "0.2.1",
4
4
  "description": "Orbyt - Automation Engine Framework",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -1,20 +0,0 @@
1
- version: "1.0"
2
- kind: workflow
3
-
4
- metadata:
5
- name: Security Test - Reserved Annotation
6
- description: Attempts to use reserved annotation namespaces
7
-
8
- annotations:
9
- # ❌ INVALID: Reserved annotation prefixes
10
- engine.version: "fake-1.0"
11
- system.override: "attempt"
12
- internal.bypass: true
13
- ai.intent: "data-pipeline" # This one is OK
14
-
15
- workflow:
16
- steps:
17
- - id: test-step
18
- uses: shell.exec
19
- with:
20
- command: echo "Should not execute"
@@ -1,21 +0,0 @@
1
- version: "1.0"
2
- kind: workflow
3
-
4
- metadata:
5
- name: Security Test - Reserved Context Field
6
- description: Attempts to set reserved fields in context
7
-
8
- context:
9
- # ❌ INVALID: Reserved fields in context
10
- _internal:
11
- hack: "attempt"
12
- _billing:
13
- free: true
14
- myData: "this is allowed"
15
-
16
- workflow:
17
- steps:
18
- - id: test-step
19
- uses: shell.exec
20
- with:
21
- command: echo "Should not execute"
package/test-security.mjs DELETED
@@ -1,148 +0,0 @@
1
- #!/usr/bin/env node
2
- /**
3
- * Security Validation Test
4
- *
5
- * This script tests that the engine REJECTS workflows with reserved fields
6
- * using the new WorkflowLoader architecture.
7
- *
8
- * Architecture:
9
- * - WorkflowLoader handles file I/O and parsing (utility layer)
10
- * - Engine receives validated objects (execution layer)
11
- * - This test acts as a CLI would (interface layer)
12
- */
13
-
14
- import { OrbytEngine, WorkflowLoader } from './dist/index.js';
15
-
16
- /**
17
- * Test a workflow that should be REJECTED due to security violations
18
- */
19
- async function testSecurityViolation(engine, testFile, description) {
20
- console.log(`\n📝 ${description}`);
21
- console.log('-'.repeat(60));
22
-
23
- try {
24
- const workflow = await WorkflowLoader.fromFile(testFile);
25
- await engine.run(workflow);
26
-
27
- console.log('\n❌ SECURITY FAILURE: Workflow was NOT rejected!');
28
- console.log(` File: ${testFile}`);
29
- console.log(' Reserved fields were accepted. This is a security vulnerability.');
30
- return false;
31
- } catch (error) {
32
- if (error.message.includes('SECURITY VIOLATION') || error.message.includes('reserved')) {
33
- console.log('\n✅ SUCCESS: Workflow correctly rejected!');
34
- console.log(`\nError details:`);
35
- console.log(error.message);
36
- return true;
37
- } else {
38
- console.log('\n⚠️ Workflow failed but not due to security validation:');
39
- console.log(error.message);
40
- console.log('\nStack:');
41
- console.log(error.stack);
42
- return false;
43
- }
44
- }
45
- }
46
-
47
- /**
48
- * Test a workflow that should PASS (no security violations)
49
- */
50
- async function testValidWorkflow(engine, testFile, description) {
51
- console.log(`\n📝 ${description}`);
52
- console.log('-'.repeat(60));
53
-
54
- try {
55
- const workflow = await WorkflowLoader.fromFile(testFile);
56
- await engine.run(workflow);
57
- console.log('\n✅ SUCCESS: Valid workflow executed!');
58
- return true;
59
- } catch (error) {
60
- console.log('\n❌ FAILURE: Valid workflow was rejected!');
61
- console.log(error.message);
62
- console.log('\nStack:');
63
- console.log(error.stack);
64
- return false;
65
- }
66
- }
67
-
68
- async function testSecurityValidation() {
69
- console.log('🔒 Security Validation Test Suite');
70
- console.log('='.repeat(60));
71
- console.log('\nTesting WorkflowLoader + OrbytEngine architecture');
72
- console.log('Goal: Ensure 0% chance of reserved field manipulation\n');
73
-
74
- const engine = new OrbytEngine({
75
- logLevel: 'silent'
76
- });
77
-
78
- const results = [];
79
-
80
- // Test 1: Root-level reserved fields
81
- results.push(await testSecurityViolation(
82
- engine,
83
- './test-security.yaml',
84
- 'Test 1: Reserved fields at root level (should REJECT)'
85
- ));
86
-
87
- console.log('\n' + '='.repeat(60));
88
-
89
- // Test 2: Context-level reserved fields
90
- results.push(await testSecurityViolation(
91
- engine,
92
- './test-security-context.yaml',
93
- 'Test 2: Reserved fields in context (should REJECT)'
94
- ));
95
-
96
- console.log('\n' + '='.repeat(60));
97
-
98
- // Test 3: Reserved annotation prefixes
99
- results.push(await testSecurityViolation(
100
- engine,
101
- './test-security-annotations.yaml',
102
- 'Test 3: Reserved annotation prefixes (should REJECT)'
103
- ));
104
-
105
- console.log('\n' + '='.repeat(60));
106
-
107
- // Test 4: Valid workflow (should pass)
108
- results.push(await testValidWorkflow(
109
- engine,
110
- './test-valid-workflow.yaml',
111
- 'Test 4: Valid workflow with no violations (should ACCEPT)'
112
- ));
113
-
114
- console.log('\n' + '='.repeat(60));
115
-
116
- // Summary
117
- const passed = results.filter(r => r === true).length;
118
- const total = results.length;
119
-
120
- console.log('\n📊 Test Summary');
121
- console.log('='.repeat(60));
122
- console.log(`\nPassed: ${passed}/${total}`);
123
-
124
- if (passed === total) {
125
- console.log('\n🎉 All security tests passed!');
126
- console.log('\n✓ Reserved fields at root level are blocked');
127
- console.log('✓ Reserved fields in context are blocked');
128
- console.log('✓ Reserved annotation prefixes are blocked');
129
- console.log('✓ Valid workflows execute normally');
130
- console.log('\n✅ Security architecture is working correctly!');
131
- return true;
132
- } else {
133
- console.log('\n❌ Some tests failed! Security validation is not working correctly.');
134
- return false;
135
- }
136
- }
137
-
138
- // Run the test suite
139
- testSecurityValidation()
140
- .then(success => {
141
- process.exit(success ? 0 : 1);
142
- })
143
- .catch(error => {
144
- console.error('\n💥 Unexpected error during testing:');
145
- console.error(error);
146
- process.exit(1);
147
- });
148
-
@@ -1,19 +0,0 @@
1
- version: "1.0"
2
- kind: workflow
3
-
4
- metadata:
5
- name: Security Test - Reserved Field at Root
6
- description: Attempts to set _internal field at workflow root level
7
-
8
- # ❌ INVALID: Reserved field at root level
9
- _internal:
10
- usage:
11
- stepCount: 999
12
- manipulated: true
13
-
14
- workflow:
15
- steps:
16
- - id: test-step
17
- uses: shell.exec
18
- with:
19
- command: echo "This should never execute"
@@ -1,26 +0,0 @@
1
- version: "1.0"
2
- kind: workflow
3
-
4
- metadata:
5
- name: Valid Test Workflow
6
- description: A clean workflow with no reserved fields
7
-
8
- annotations:
9
- ai.intent: "testing"
10
- custom.tag: "security-test"
11
-
12
- context:
13
- testData: "allowed"
14
- customField: "also allowed"
15
-
16
- workflow:
17
- steps:
18
- - id: echo-step
19
- uses: shell.exec
20
- with:
21
- command: echo "Hello from valid workflow"
22
-
23
- - id: success-step
24
- uses: shell.exec
25
- with:
26
- command: echo "Security validation passed!"