@minded-ai/mindedjs 3.0.4-beta.2 → 3.0.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/dist/playbooks/playbooks.d.ts +2 -1
- package/dist/playbooks/playbooks.d.ts.map +1 -1
- package/dist/playbooks/playbooks.js +8 -2
- package/dist/playbooks/playbooks.js.map +1 -1
- package/dist/toolsLibrary/extraction.js +1 -1
- package/dist/toolsLibrary/extraction.js.map +1 -1
- package/docs/.gitbook/assets/agent-lifecycle-security.svg +4 -0
- package/docs/.gitbook/assets/credentials-lifecycle.svg +4 -0
- package/docs/.gitbook/assets/rpa-execution-flow.svg +4 -0
- package/docs/.gitbook/assets/system-overview.svg +4 -0
- package/docs/.gitbook/assets/tenant-isolation-overview.svg +4 -0
- package/docs/SUMMARY.md +1 -0
- package/docs/platform/security-architecture.md +361 -0
- package/package.json +2 -2
- package/src/playbooks/playbooks.ts +10 -3
- package/src/toolsLibrary/extraction.ts +2 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"playbooks.d.ts","sourceRoot":"","sources":["../../src/playbooks/playbooks.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAGrD,MAAM,MAAM,QAAQ,GAAG;IACrB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,eAAe,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"playbooks.d.ts","sourceRoot":"","sources":["../../src/playbooks/playbooks.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAGrD,MAAM,MAAM,QAAQ,GAAG;IACrB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,eAAe,EAAE,CAAC;IAC3B,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB,CAAC;AAyFF;;GAEG;AACH,wBAAsB,aAAa,CAAC,oBAAoB,CAAC,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,QAAQ,EAAE,CAAC,CAsBxF;AAuDD;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,SAAS,EAAE,QAAQ,EAAE,GAAG,MAAM,GAAG,IAAI,CAmBrE"}
|
|
@@ -158,7 +158,7 @@ function loadPlaybooksFromDirectories(directories) {
|
|
|
158
158
|
try {
|
|
159
159
|
const fileContent = fs.readFileSync(file, 'utf8');
|
|
160
160
|
const playbook = yaml.load(fileContent);
|
|
161
|
-
if (playbook && playbook.name && playbook.blocks) {
|
|
161
|
+
if (playbook && playbook.name && (playbook.blocks || playbook.prompt)) {
|
|
162
162
|
playbooks.push(playbook);
|
|
163
163
|
logger_1.logger.info({ msg: `Loaded playbook: ${playbook.name} from ${file}` });
|
|
164
164
|
}
|
|
@@ -199,7 +199,13 @@ function combinePlaybooks(playbooks) {
|
|
|
199
199
|
}
|
|
200
200
|
// Combine all playbooks into sections
|
|
201
201
|
const sections = playbooks.map((playbook) => {
|
|
202
|
-
|
|
202
|
+
let markdownContent = playbook.prompt;
|
|
203
|
+
if (!markdownContent && playbook.blocks) {
|
|
204
|
+
markdownContent = editorJsToMarkdown(playbook.blocks);
|
|
205
|
+
}
|
|
206
|
+
if (!markdownContent) {
|
|
207
|
+
throw new Error('Playbook must have either a prompt or blocks');
|
|
208
|
+
}
|
|
203
209
|
return `# ${playbook.name}\n${markdownContent}`;
|
|
204
210
|
});
|
|
205
211
|
const combinedPlaybooks = sections.join('\n\n');
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"playbooks.js","sourceRoot":"","sources":["../../src/playbooks/playbooks.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"playbooks.js","sourceRoot":"","sources":["../../src/playbooks/playbooks.ts"],"names":[],"mappings":"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"}
|
|
@@ -21,7 +21,7 @@ const DEFAULT_CONFIG = {
|
|
|
21
21
|
*/
|
|
22
22
|
function schemaToJsonFormat(schema) {
|
|
23
23
|
// Use zod-to-json-schema for robust conversion
|
|
24
|
-
// Type assertion to avoid excessive type depth inference
|
|
24
|
+
// Type assertion to avoid excessive type depth inference (TS2589)
|
|
25
25
|
const jsonSchema = (0, zod_to_json_schema_1.zodToJsonSchema)(schema, {
|
|
26
26
|
target: 'openApi3',
|
|
27
27
|
$refStrategy: 'none', // Inline all references for simpler prompts
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"extraction.js","sourceRoot":"","sources":["../../src/toolsLibrary/extraction.ts"],"names":[],"mappings":";;;AAwHA,0BAoHC;AAQD,0CAqBC;AAzQD,6BAAwB;AACxB,2DAAqD;AAErD,4CAAyC;AACzC,mEAAkE;AAClE,uDAAyD;AAQzD,SAAS,wBAAwB,CAAC,GAAsB;IACtD,OAAO,sBAAsB,IAAI,GAAG,IAAI,OAAQ,GAAW,CAAC,oBAAoB,KAAK,UAAU,CAAC;AAClG,CAAC;AAgBD,wBAAwB;AACxB,MAAM,cAAc,GAA8B;IAChD,UAAU,EAAE,CAAC;IACb,UAAU,EAAE,IAAI;CACjB,CAAC;AAEF;;GAEG;AACH,SAAS,kBAAkB,CAAC,MAAwB;IAClD,+CAA+C;IAC/C,
|
|
1
|
+
{"version":3,"file":"extraction.js","sourceRoot":"","sources":["../../src/toolsLibrary/extraction.ts"],"names":[],"mappings":";;;AAwHA,0BAoHC;AAQD,0CAqBC;AAzQD,6BAAwB;AACxB,2DAAqD;AAErD,4CAAyC;AACzC,mEAAkE;AAClE,uDAAyD;AAQzD,SAAS,wBAAwB,CAAC,GAAsB;IACtD,OAAO,sBAAsB,IAAI,GAAG,IAAI,OAAQ,GAAW,CAAC,oBAAoB,KAAK,UAAU,CAAC;AAClG,CAAC;AAgBD,wBAAwB;AACxB,MAAM,cAAc,GAA8B;IAChD,UAAU,EAAE,CAAC;IACb,UAAU,EAAE,IAAI;CACjB,CAAC;AAEF;;GAEG;AACH,SAAS,kBAAkB,CAAC,MAAwB;IAClD,+CAA+C;IAC/C,kEAAkE;IAClE,MAAM,UAAU,GAAG,IAAA,oCAAe,EAAC,MAAa,EAAE;QAChD,MAAM,EAAE,UAAU;QAClB,YAAY,EAAE,MAAM,EAAE,4CAA4C;KACnE,CAAC,CAAC;IAEH,iDAAiD;IACjD,IAAI,OAAO,UAAU,KAAK,QAAQ,IAAI,UAAU,KAAK,IAAI,IAAI,SAAS,IAAI,UAAU,EAAE,CAAC;QACrF,OAAQ,UAAkB,CAAC,OAAO,CAAC;IACrC,CAAC;IAED,OAAO,IAAI,CAAC,SAAS,CAAC,UAAU,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;AAC7C,CAAC;AAED;;GAEG;AACH,SAAS,qBAAqB,CAC5B,UAAkB,EAClB,MAAwB,EACxB,QAA4D,EAC5D,OAAe;IAEf,MAAM,iBAAiB,GAAG,kBAAkB,CAAC,MAAM,CAAC,CAAC;IACrD,IAAI,MAAM,GAAG,GAAG,UAAU,8BAA8B,iBAAiB,MAAM,CAAC;IAEhF,2BAA2B;IAC3B,IAAI,QAAQ,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACpC,MAAM,IAAI,aAAa,CAAC;QACxB,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;YAC/B,MAAM,IAAI,UAAU,OAAO,CAAC,KAAK,aAAa,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC;QACrF,CAAC;IACH,CAAC;IAED,MAAM,IAAI,wFAAwF,CAAC;IACnG,MAAM,IAAI,6BAA6B,OAAO,EAAE,CAAC;IAEjD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;GAEG;AACH,SAAS,cAAc,CAAC,MAAW,EAAE,MAAwB;IAC3D,IAAI,CAAC;QACH,gCAAgC;QAChC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QACrB,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC;IACrC,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,KAAK,YAAY,OAAC,CAAC,QAAQ,EAAE,CAAC;YAChC,6CAA6C;YAC7C,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE;gBACtC,MAAM,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;gBAChC,OAAO,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,KAAK,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC;YACxD,CAAC,CAAC,CAAC;YACH,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC;QAClC,CAAC;QACD,wBAAwB;QACxB,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,0BAA0B,CAAC,EAAE,CAAC;IACzG,CAAC;AACH,CAAC;AAED;;;;;;;;;;;;;;;GAeG;AACI,KAAK,UAAU,OAAO,CAC3B,OAAe,EACf,MAAwB,EACxB,GAAsB,EACtB,gBAAwB,CAAC;IAEzB,MAAM,YAAY,GAAG,EAAE,GAAG,cAAc,EAAE,GAAG,MAAM,EAAE,CAAC;IAEtD,IAAI,CAAC;QACH,MAAM,UAAU,GAAG,YAAY,CAAC,YAAY,IAAI,wDAAwD,CAAC;QAEzG,IAAI,MAAW,CAAC;QAEhB,IAAI,YAAY,CAAC,UAAU,EAAE,CAAC;YAC5B,oDAAoD;YACpD,IAAI,CAAC;gBACH,8CAA8C;gBAC9C,IAAI,wBAAwB,CAAC,GAAG,CAAC,EAAE,CAAC;oBAClC,qFAAqF;oBACrF,2EAA2E;oBAC3E,IAAI,MAAM,GAAG,UAAU,CAAC;oBAExB,sDAAsD;oBACtD,IAAI,YAAY,CAAC,QAAQ,IAAI,YAAY,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;wBAC9D,MAAM,IAAI,iBAAiB,CAAC;wBAC5B,KAAK,MAAM,OAAO,IAAI,YAAY,CAAC,QAAQ,EAAE,CAAC;4BAC5C,MAAM,IAAI,UAAU,OAAO,CAAC,KAAK,aAAa,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC;wBACrF,CAAC;oBACH,CAAC;oBAED,MAAM,IAAI,iCAAiC,OAAO,EAAE,CAAC;oBAErD,MAAM,aAAa,GAAG,GAAG,CAAC,oBAAoB,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;oBACpE,MAAM,QAAQ,GAAG,CAAC,IAAI,wBAAa,CAAC,MAAM,CAAC,CAAC,CAAC;oBAC7C,MAAM,GAAG,MAAM,aAAa,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;oBAE9C,iEAAiE;oBACjE,OAAO,MAA0B,CAAC;gBACpC,CAAC;qBAAM,CAAC;oBACN,mFAAmF;oBACnF,eAAM,CAAC,IAAI,CAAC;wBACV,OAAO,EAAE,wFAAwF;qBAClG,CAAC,CAAC;oBAEH,qEAAqE;oBACrE,MAAM,MAAM,GAAG,qBAAqB,CAAC,UAAU,EAAE,YAAY,CAAC,MAAM,EAAE,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;oBAEtG,MAAM,MAAM,GAAG,IAAI,iCAAgB,EAAE,CAAC;oBACtC,MAAM,QAAQ,GAAG,CAAC,IAAI,wBAAa,CAAC,MAAM,CAAC,CAAC,CAAC;oBAC7C,MAAM,GAAG,MAAM,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;oBAEjD,sBAAsB;oBACtB,MAAM,UAAU,GAAG,cAAc,CAAC,MAAM,EAAE,YAAY,CAAC,MAAM,CAAC,CAAC;oBAE/D,IAAI,CAAC,UAAU,CAAC,KAAK,IAAI,aAAa,GAAG,CAAC,YAAY,CAAC,UAAU,IAAI,CAAC,CAAC,EAAE,CAAC;wBACxE,eAAM,CAAC,IAAI,CAAC;4BACV,OAAO,EAAE,wCAAwC;4BACjD,MAAM,EAAE,UAAU,CAAC,MAAM;4BACzB,OAAO,EAAE,aAAa,GAAG,CAAC;yBAC3B,CAAC,CAAC;wBAEH,4CAA4C;wBAC5C,MAAM,WAAW,GAAG;4BAClB,GAAG,MAAM;4BACT,YAAY,EAAE,GAAG,UAAU,2CAA2C,UAAU,CAAC,MAAM,CAAC,IAAI,CAC1F,IAAI,CACL,yDAAyD;yBAC3D,CAAC;wBAEF,OAAO,OAAO,CAAC,OAAO,EAAE,WAAW,EAAE,GAAG,EAAE,aAAa,GAAG,CAAC,CAAC,CAAC;oBAC/D,CAAC;yBAAM,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC;wBAC7B,eAAM,CAAC,KAAK,CAAC;4BACX,OAAO,EAAE,gDAAgD;4BACzD,MAAM,EAAE,UAAU,CAAC,MAAM;yBAC1B,CAAC,CAAC;wBAEH,IAAI,YAAY,CAAC,YAAY,EAAE,CAAC;4BAC9B,OAAO,YAAY,CAAC,YAAY,CAAC;wBACnC,CAAC;wBAED,MAAM,IAAI,KAAK,CAAC,iCAAiC,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;oBACnF,CAAC;gBACH,CAAC;YACH,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,yDAAyD;gBACzD,IAAI,aAAa,GAAG,CAAC,YAAY,CAAC,UAAU,IAAI,CAAC,CAAC,EAAE,CAAC;oBACnD,eAAM,CAAC,IAAI,CAAC;wBACV,OAAO,EAAE,oCAAoC;wBAC7C,KAAK,EAAE,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe;wBAC3D,OAAO,EAAE,aAAa,GAAG,CAAC;qBAC3B,CAAC,CAAC;oBAEH,OAAO,OAAO,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,aAAa,GAAG,CAAC,CAAC,CAAC;gBAC1D,CAAC;qBAAM,CAAC;oBACN,MAAM,GAAG,CAAC;gBACZ,CAAC;YACH,CAAC;QACH,CAAC;aAAM,CAAC;YACN,sDAAsD;YACtD,MAAM,MAAM,GAAG,qBAAqB,CAAC,UAAU,EAAE,YAAY,CAAC,MAAM,EAAE,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;YAEtG,MAAM,MAAM,GAAG,IAAI,iCAAgB,EAAE,CAAC;YACtC,MAAM,QAAQ,GAAG,CAAC,IAAI,wBAAa,CAAC,MAAM,CAAC,CAAC,CAAC;YAC7C,MAAM,GAAG,MAAM,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;QACnD,CAAC;QAED,OAAO,MAA0B,CAAC;IACpC,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,eAAM,CAAC,KAAK,CAAC,EAAE,OAAO,EAAE,mBAAmB,EAAE,GAAG,EAAE,CAAC,CAAC;QAEpD,IAAI,YAAY,CAAC,YAAY,EAAE,CAAC;YAC9B,OAAO,YAAY,CAAC,YAAY,CAAC;QACnC,CAAC;QAED,MAAM,GAAG,CAAC;IACZ,CAAC;AACH,CAAC;AAED;;;;;GAKG;AACH,SAAgB,eAAe,CAAC,cAAyC,EAAE,OAAmC;IAC5G,IAAI,MAAwB,CAAC;IAE7B,IAAI,OAAO,cAAc,KAAK,QAAQ,EAAE,CAAC;QACvC,kFAAkF;QAClF,MAAM,GAAG;YACP,MAAM,EAAE,OAAC,CAAC,MAAM,CAAC;gBACf,MAAM,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,sBAAsB,CAAC;aACpD,CAAC;YACF,YAAY,EAAE,cAAc;YAC5B,GAAG,OAAO;SACX,CAAC;IACJ,CAAC;SAAM,CAAC;QACN,0BAA0B;QAC1B,MAAM,GAAG;YACP,MAAM,EAAE,cAAc;YACtB,GAAG,OAAO;SACX,CAAC;IACJ,CAAC;IAED,OAAO,CAAC,OAAe,EAAE,GAAsB,EAAE,EAAE,CAAC,OAAO,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,CAAC,CAAC;AACpF,CAAC;AAED,iCAAiC;AACpB,QAAA,MAAM,GAAG,OAAC,CAAC,MAAM,CAAC;IAC7B,OAAO,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,yCAAyC,CAAC;IACvE,MAAM,EAAE,OAAC,CAAC,MAAM,CAAC,OAAC,CAAC,GAAG,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,6DAA6D,CAAC;IAC5G,YAAY,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,qCAAqC,CAAC;IACnF,QAAQ,EAAE,OAAC;SACR,KAAK,CACJ,OAAC,CAAC,MAAM,CAAC;QACP,KAAK,EAAE,OAAC,CAAC,MAAM,EAAE;QACjB,MAAM,EAAE,OAAC,CAAC,GAAG,EAAE;KAChB,CAAC,CACH;SACA,QAAQ,EAAE;SACV,QAAQ,CAAC,kCAAkC,CAAC;IAC/C,UAAU,EAAE,OAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,uDAAuD,CAAC;IAClH,UAAU,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,+CAA+C,CAAC;IACtG,YAAY,EAAE,OAAC,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,6CAA6C,CAAC;CACzF,CAAC,CAAC;AAEH,MAAM,cAAc,GAA6B;IAC/C,IAAI,EAAE,mBAAmB;IACzB,WAAW,EACT,+UAA+U;IACjV,KAAK,EAAE,cAAM;IACb,QAAQ,EAAE,KAAK;IACf,OAAO,EAAE,KAAK,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,EAAE;QACzC,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,YAAY,EAAE,QAAQ,EAAE,UAAU,EAAE,UAAU,EAAE,YAAY,EAAE,GAAG,KAAK,CAAC;QAE7G,eAAM,CAAC,IAAI,CAAC;YACV,OAAO,EAAE,4BAA4B;YACrC,SAAS,EAAE,KAAK,CAAC,SAAS;YAC1B,aAAa,EAAE,OAAO,CAAC,MAAM;YAC7B,SAAS,EAAE,CAAC,CAAC,WAAW;SACzB,CAAC,CAAC;QAEH,iDAAiD;QACjD,IAAI,gBAAkC,CAAC;QACvC,IAAI,WAAW,EAAE,CAAC;YAChB,kDAAkD;YAClD,MAAM,QAAQ,GAA8B,EAAE,CAAC;YAE/C,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE,CAAC;gBACvD,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;oBAChD,MAAM,WAAW,GAAG,KAAY,CAAC;oBACjC,IAAI,OAAkB,CAAC;oBAEvB,+DAA+D;oBAC/D,IAAI,WAAW,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;wBAClC,OAAO,GAAG,OAAC,CAAC,MAAM,EAAE,CAAC;oBACvB,CAAC;yBAAM,IAAI,WAAW,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;wBACzC,OAAO,GAAG,OAAC,CAAC,MAAM,EAAE,CAAC;oBACvB,CAAC;yBAAM,IAAI,WAAW,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;wBAC1C,OAAO,GAAG,OAAC,CAAC,OAAO,EAAE,CAAC;oBACxB,CAAC;yBAAM,IAAI,WAAW,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;wBACxC,OAAO,GAAG,OAAC,CAAC,KAAK,CAAC,OAAC,CAAC,GAAG,EAAE,CAAC,CAAC;oBAC7B,CAAC;yBAAM,IAAI,WAAW,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;wBACzC,OAAO,GAAG,OAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;oBACzB,CAAC;yBAAM,CAAC;wBACN,0CAA0C;wBAC1C,OAAO,GAAG,OAAC,CAAC,MAAM,EAAE,CAAC;oBACvB,CAAC;oBAED,+BAA+B;oBAC/B,IAAI,WAAW,CAAC,WAAW,EAAE,CAAC;wBAC5B,OAAO,GAAG,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC;oBACtD,CAAC;oBAED,yBAAyB;oBACzB,IAAI,WAAW,CAAC,QAAQ,KAAK,KAAK,EAAE,CAAC;wBACnC,OAAO,GAAG,OAAO,CAAC,QAAQ,EAAE,CAAC;oBAC/B,CAAC;oBAED,QAAQ,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC;gBAC1B,CAAC;qBAAM,CAAC;oBACN,sCAAsC;oBACtC,QAAQ,CAAC,GAAG,CAAC,GAAG,OAAC,CAAC,MAAM,EAAE,CAAC;gBAC7B,CAAC;YACH,CAAC;YAED,gBAAgB,GAAG,OAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;QACxC,CAAC;aAAM,CAAC;YACN,kCAAkC;YAClC,gBAAgB,GAAG,OAAC,CAAC,MAAM,CAAC;gBAC1B,MAAM,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,sBAAsB,CAAC;aACpD,CAAC,CAAC;QACL,CAAC;QAED,MAAM,MAAM,GAAqB;YAC/B,MAAM,EAAE,gBAAgB;YACxB,YAAY;YACZ,QAAQ;YACR,UAAU;YACV,UAAU;YACV,YAAY;SACb,CAAC;QAEF,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC;YAEzD,eAAM,CAAC,IAAI,CAAC;gBACV,OAAO,EAAE,sBAAsB;gBAC/B,SAAS,EAAE,KAAK,CAAC,SAAS;gBAC1B,UAAU,EAAE,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC;aAChC,CAAC,CAAC;YAEH,KAAK,CAAC,MAAM,CAAC,cAAc,GAAG;gBAC5B,OAAO,EAAE,OAAO,CAAC,SAAS,CAAC,CAAC,EAAE,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;gBACxE,MAAM;gBACN,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;aACpC,CAAC;YAEF,OAAO;gBACL,MAAM;aACP,CAAC;QACJ,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,eAAM,CAAC,KAAK,CAAC;gBACX,OAAO,EAAE,mBAAmB;gBAC5B,SAAS,EAAE,KAAK,CAAC,SAAS;gBAC1B,GAAG;aACJ,CAAC,CAAC;YAEH,MAAM,GAAG,CAAC;QACZ,CAAC;IACH,CAAC;CACF,CAAC;AAEF,kBAAe,cAAc,CAAC"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
|
2
|
+
<!-- Do not edit this file with editors other than draw.io -->
|
|
3
|
+
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
|
|
4
|
+
<svg xmlns="http://www.w3.org/2000/svg" style="background: transparent; background-color: transparent; color-scheme: light dark;" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" width="350px" height="1285px" viewBox="0 0 350 1285" content="<mxfile host="app.diagrams.net" agent="Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/143.0.0.0 Safari/537.36" version="29.2.7"> <diagram name="Architecture Overview" id="lUb2Yy0VcGrDcHUANlMM"> <mxGraphModel dx="1426" dy="683" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="850" pageHeight="1100" math="0" shadow="0"> <root> <mxCell id="0" /> <mxCell id="1" parent="0" /> <mxCell id="qiHXacqECXXAYTJ9b62k-160" parent="1" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#f5f5f5;strokeColor=#666666;fontColor=#333333;align=center;verticalAlign=middle;fontSize=16;labelBackgroundColor=none;" value="&lt;b&gt;AGENT LIFECYCLE&lt;/b&gt;" vertex="1"> <mxGeometry height="40" width="280" x="683.5" y="140" as="geometry" /> </mxCell> <mxCell id="qiHXacqECXXAYTJ9b62k-161" parent="1" style="rounded=0;whiteSpace=wrap;html=1;align=left;spacingLeft=10;spacingTop=5;spacingBottom=5;fontSize=16;labelBackgroundColor=none;" value="&lt;ul style=&quot;padding-left: 10px;&quot;&gt;&lt;li&gt;Pull latest vetted image&lt;/li&gt;&lt;li&gt;Scan for vulnerabilities&lt;/li&gt;&lt;li&gt;Apply security patches&lt;/li&gt;&lt;li&gt;Configure network policies&lt;/li&gt;&lt;li&gt;Set resource limits&lt;/li&gt;&lt;li&gt;Initialize audit logging&lt;/li&gt;&lt;/ul&gt;" vertex="1"> <mxGeometry height="140" width="242" x="708" y="240" as="geometry" /> </mxCell> <mxCell id="qiHXacqECXXAYTJ9b62k-162" parent="1" style="rounded=0;whiteSpace=wrap;html=1;align=left;spacingLeft=10;spacingTop=5;spacingBottom=5;fontSize=16;labelBackgroundColor=none;" value="&lt;ul style=&quot;padding-left: 10px;&quot;&gt;&lt;li&gt;Load security policies&lt;/li&gt;&lt;li&gt;Establish secure connection&lt;/li&gt;&lt;li&gt;Verify agent identity&lt;/li&gt;&lt;li&gt;Fetch encrypted credentials&lt;/li&gt;&lt;li&gt;Initialize monitoring agent&lt;/li&gt;&lt;li&gt;Register with orchestrator&lt;/li&gt;&lt;/ul&gt;" vertex="1"> <mxGeometry height="130" width="241" x="709" y="445" as="geometry" /> </mxCell> <mxCell id="qiHXacqECXXAYTJ9b62k-163" parent="1" style="rounded=0;whiteSpace=wrap;html=1;align=left;spacingLeft=10;spacingTop=5;spacingBottom=5;fontSize=16;labelBackgroundColor=none;" value="&lt;ul style=&quot;padding-left: 10px;&quot;&gt;&lt;li&gt;Execute flows&lt;/li&gt;&lt;li&gt;All actions validated&lt;/li&gt;&lt;li&gt;Continuous monitoring&lt;/li&gt;&lt;li&gt;Health checks&lt;/li&gt;&lt;li&gt;Log all operations&lt;/li&gt;&lt;li&gt;Resource usage tracking&lt;/li&gt;&lt;/ul&gt;" vertex="1"> <mxGeometry height="130" width="242" x="708" y="632" as="geometry" /> </mxCell> <mxCell id="qiHXacqECXXAYTJ9b62k-164" parent="1" style="text;html=1;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;whiteSpace=wrap;rounded=0;fontSize=16;labelBackgroundColor=none;" value="[Idle Timeout]" vertex="1"> <mxGeometry height="20" width="100" x="861" y="792" as="geometry" /> </mxCell> <mxCell id="qiHXacqECXXAYTJ9b62k-165" parent="1" style="text;html=1;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;whiteSpace=wrap;rounded=0;fontStyle=2;fontSize=16;labelBackgroundColor=none;" value="Graceful shutdown" vertex="1"> <mxGeometry height="20" width="139" x="861" y="829" as="geometry" /> </mxCell> <mxCell id="qiHXacqECXXAYTJ9b62k-166" parent="1" style="text;html=1;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;whiteSpace=wrap;rounded=0;fontSize=16;labelBackgroundColor=none;" value="[Task Complete]" vertex="1"> <mxGeometry height="20" width="117" x="863" y="875" as="geometry" /> </mxCell> <mxCell id="qiHXacqECXXAYTJ9b62k-167" parent="1" style="text;html=1;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;whiteSpace=wrap;rounded=0;fontStyle=2;fontSize=16;labelBackgroundColor=none;" value="Cleanup &amp;amp; shutdown" vertex="1"> <mxGeometry height="20" width="157" x="863" y="913" as="geometry" /> </mxCell> <mxCell id="Aohr6ZUG_8G47jTySdQy-1" edge="1" parent="1" style="edgeStyle=none;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0.25;entryY=0;entryDx=0;entryDy=0;fontSize=16;" value=""> <mxGeometry relative="1" as="geometry"> <Array as="points"> <mxPoint x="892" y="994" /> </Array> <mxPoint x="892" y="984" as="sourcePoint" /> <mxPoint x="892" y="1010" as="targetPoint" /> </mxGeometry> </mxCell> <mxCell id="qiHXacqECXXAYTJ9b62k-168" parent="1" style="text;html=1;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;whiteSpace=wrap;rounded=0;fontSize=16;labelBackgroundColor=none;" value="[Security Violation]" vertex="1"> <mxGeometry height="20" width="136" x="862" y="966" as="geometry" /> </mxCell> <mxCell id="qiHXacqECXXAYTJ9b62k-169" parent="1" style="text;html=1;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;whiteSpace=wrap;rounded=0;fontStyle=2;fontSize=16;labelBackgroundColor=none;" value="Immediate shutdown" vertex="1"> <mxGeometry height="20" width="158" x="860" y="1007" as="geometry" /> </mxCell> <mxCell id="qiHXacqECXXAYTJ9b62k-170" parent="1" style="rounded=0;whiteSpace=wrap;html=1;align=left;spacingLeft=10;spacingTop=5;spacingBottom=5;fontSize=16;labelBackgroundColor=none;" value="&lt;ul style=&quot;padding-left: 10px;&quot;&gt;&lt;li&gt;Clear credentials from memory&lt;/li&gt;&lt;li&gt;Flush logs to storage&lt;/li&gt;&lt;li&gt;Terminate active connections&lt;/li&gt;&lt;li&gt;Delete temporary files&lt;/li&gt;&lt;li&gt;Release resources&lt;/li&gt;&lt;li&gt;Notify orchestrator&lt;/li&gt;&lt;/ul&gt;" vertex="1"> <mxGeometry height="170" width="243" x="707" y="1077" as="geometry" /> </mxCell> <mxCell id="qiHXacqECXXAYTJ9b62k-171" parent="1" style="rounded=0;whiteSpace=wrap;html=1;align=left;spacingLeft=10;spacingTop=5;spacingBottom=5;fontSize=16;labelBackgroundColor=none;" value="&lt;ul style=&quot;padding-left: 10px;&quot;&gt;&lt;li&gt;Destroy pod/container&lt;/li&gt;&lt;li&gt;Remove ephemeral storage&lt;/li&gt;&lt;li&gt;Verify no data leakage&lt;/li&gt;&lt;li&gt;Archive audit logs&lt;/li&gt;&lt;li&gt;Update metrics&lt;/li&gt;&lt;/ul&gt;" vertex="1"> <mxGeometry height="120" width="244" x="706" y="1300" as="geometry" /> </mxCell> <mxCell id="qiHXacqECXXAYTJ9b62k-172" edge="1" parent="1" source="qiHXacqECXXAYTJ9b62k-161" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;fontSize=16;labelBackgroundColor=none;" target="qiHXacqECXXAYTJ9b62k-162" value=""> <mxGeometry relative="1" as="geometry" /> </mxCell> <mxCell id="qiHXacqECXXAYTJ9b62k-173" edge="1" parent="1" source="qiHXacqECXXAYTJ9b62k-162" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;fontSize=16;labelBackgroundColor=none;" target="qiHXacqECXXAYTJ9b62k-163" value=""> <mxGeometry relative="1" as="geometry" /> </mxCell> <mxCell id="qiHXacqECXXAYTJ9b62k-174" edge="1" parent="1" source="qiHXacqECXXAYTJ9b62k-163" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0.5;entryY=0;entryDx=0;entryDy=0;fontSize=16;labelBackgroundColor=none;" target="qiHXacqECXXAYTJ9b62k-170" value=""> <mxGeometry relative="1" as="geometry" /> </mxCell> <mxCell id="qiHXacqECXXAYTJ9b62k-175" edge="1" parent="1" source="qiHXacqECXXAYTJ9b62k-170" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;fontSize=16;labelBackgroundColor=none;" target="qiHXacqECXXAYTJ9b62k-171" value=""> <mxGeometry relative="1" as="geometry" /> </mxCell> <mxCell id="qiHXacqECXXAYTJ9b62k-178" edge="1" parent="1" style="endArrow=classic;html=1;rounded=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;fontSize=16;labelBackgroundColor=none;" value=""> <mxGeometry height="50" relative="1" width="50" as="geometry"> <mxPoint x="830" y="977" as="sourcePoint" /> <mxPoint x="863" y="977" as="targetPoint" /> </mxGeometry> </mxCell> <mxCell id="qiHXacqECXXAYTJ9b62k-238" parent="1" style="text;whiteSpace=wrap;html=1;fontColor=default;labelBackgroundColor=none;fontSize=16;" value="&lt;span style=&quot;font-family: Helvetica; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 700; letter-spacing: normal; orphans: 2; text-align: center; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; white-space: normal; text-decoration-thickness: initial; text-decoration-style: initial; text-decoration-color: initial; float: none; display: inline !important;&quot;&gt;[1] PROVISIONING&lt;/span&gt;" vertex="1"> <mxGeometry height="40" width="160" x="680" y="210" as="geometry" /> </mxCell> <mxCell id="qiHXacqECXXAYTJ9b62k-239" parent="1" style="text;whiteSpace=wrap;html=1;fontSize=16;labelBackgroundColor=none;" value="&lt;span style=&quot;font-family: Helvetica; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 700; letter-spacing: normal; orphans: 2; text-align: center; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; white-space: normal; text-decoration-thickness: initial; text-decoration-style: initial; text-decoration-color: initial; float: none; display: inline !important;&quot;&gt;&lt;font&gt;[2] INITIALIZATION&lt;/font&gt;&lt;/span&gt;" vertex="1"> <mxGeometry height="40" width="160" x="670" y="413" as="geometry" /> </mxCell> <mxCell id="qiHXacqECXXAYTJ9b62k-240" parent="1" style="text;whiteSpace=wrap;html=1;fontSize=16;labelBackgroundColor=none;" value="&lt;b style=&quot;forced-color-adjust: none; font-family: Helvetica; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; letter-spacing: normal; orphans: 2; text-align: left; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; white-space: normal; text-decoration-thickness: initial; text-decoration-style: initial; text-decoration-color: initial; box-shadow: none !important;&quot;&gt;&lt;font&gt;[3] ACTIVE STATE&lt;/font&gt;&lt;/b&gt;" vertex="1"> <mxGeometry height="40" width="140" x="680" y="593" as="geometry" /> </mxCell> <mxCell id="qiHXacqECXXAYTJ9b62k-241" parent="1" style="text;whiteSpace=wrap;html=1;labelBackgroundColor=none;fontColor=default;fontSize=16;" value="&lt;b style=&quot;forced-color-adjust: none; font-family: Helvetica; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; letter-spacing: normal; orphans: 2; text-align: left; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; white-space: normal; text-decoration-thickness: initial; text-decoration-style: initial; text-decoration-color: initial; box-shadow: none !important;&quot;&gt;[4] SHUTDOWN&lt;/b&gt;&lt;br align=&quot;left&quot; style=&quot;forced-color-adjust: none; font-family: Helvetica; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: left; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; white-space: normal; text-decoration-thickness: initial; text-decoration-style: initial; text-decoration-color: initial; box-shadow: none !important;&quot;&gt;" vertex="1"> <mxGeometry height="40" width="130" x="680" y="1039" as="geometry" /> </mxCell> <mxCell id="qiHXacqECXXAYTJ9b62k-242" parent="1" style="text;whiteSpace=wrap;html=1;fontSize=16;labelBackgroundColor=none;" value="&lt;b style=&quot;forced-color-adjust: none; font-family: Helvetica; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; letter-spacing: normal; orphans: 2; text-align: left; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; white-space: normal; text-decoration-thickness: initial; text-decoration-style: initial; text-decoration-color: initial; box-shadow: none !important;&quot;&gt;&lt;font&gt;[5] CLEANUP&lt;/font&gt;&lt;/b&gt;" vertex="1"> <mxGeometry height="40" width="110" x="680" y="1260" as="geometry" /> </mxCell> <mxCell id="Aohr6ZUG_8G47jTySdQy-3" edge="1" parent="1" style="endArrow=classic;html=1;rounded=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;fontSize=16;labelBackgroundColor=none;" value=""> <mxGeometry height="50" relative="1" width="50" as="geometry"> <mxPoint x="830" y="888" as="sourcePoint" /> <mxPoint x="865" y="888" as="targetPoint" /> </mxGeometry> </mxCell> <mxCell id="Aohr6ZUG_8G47jTySdQy-4" edge="1" parent="1" style="edgeStyle=none;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0.25;entryY=0;entryDx=0;entryDy=0;fontSize=16;" value=""> <mxGeometry relative="1" as="geometry"> <Array as="points"> <mxPoint x="890" y="903" /> </Array> <mxPoint x="890" y="893" as="sourcePoint" /> <mxPoint x="890" y="919" as="targetPoint" /> </mxGeometry> </mxCell> <mxCell id="Aohr6ZUG_8G47jTySdQy-5" edge="1" parent="1" style="edgeStyle=none;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0.25;entryY=0;entryDx=0;entryDy=0;fontSize=16;" value=""> <mxGeometry relative="1" as="geometry"> <Array as="points"> <mxPoint x="889" y="820" /> </Array> <mxPoint x="889" y="810" as="sourcePoint" /> <mxPoint x="889" y="836" as="targetPoint" /> </mxGeometry> </mxCell> <mxCell id="T9pB_ysCbEszbst1waTv-1" edge="1" parent="1" style="endArrow=classic;html=1;rounded=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;fontSize=16;labelBackgroundColor=none;" value=""> <mxGeometry height="50" relative="1" width="50" as="geometry"> <mxPoint x="828" y="803" as="sourcePoint" /> <mxPoint x="863" y="803" as="targetPoint" /> </mxGeometry> </mxCell> </root> </mxGraphModel> </diagram> </mxfile> "><defs/><g><g data-cell-id="0"><g data-cell-id="1"><g data-cell-id="qiHXacqECXXAYTJ9b62k-160"><g transform="translate(0.5,0.5)"><rect x="13.5" y="0" width="280" height="40" fill="#f5f5f5" stroke="#666666" pointer-events="all" style="fill: light-dark(rgb(245, 245, 245), rgb(26, 26, 26)); stroke: light-dark(rgb(102, 102, 102), rgb(149, 149, 149));"/></g><g><g><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 278px; height: 1px; padding-top: 20px; margin-left: 15px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; color: #333333; "><div style="display: inline-block; font-size: 16px; font-family: Helvetica; color: light-dark(#333333, #c1c1c1); line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; "><b>AGENT LIFECYCLE</b></div></div></div></foreignObject><text x="154" y="25" fill="#333333" font-family="Helvetica" font-size="16px" text-anchor="middle">AGENT LIFECYCLE</text></switch></g></g></g><g data-cell-id="qiHXacqECXXAYTJ9b62k-161"><g transform="translate(0.5,0.5)"><rect x="38" y="100" width="242" height="140" fill="#ffffff" stroke="#000000" pointer-events="all" style="fill: light-dark(#ffffff, var(--ge-dark-color, #121212)); stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/></g><g><g><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe flex-start; width: 230px; height: 1px; padding-top: 170px; margin-left: 50px;"><div style="box-sizing: border-box; font-size: 0; text-align: left; color: #000000; "><div style="display: inline-block; font-size: 16px; font-family: Helvetica; color: light-dark(#000000, #ffffff); line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; "><ul style="padding-left: 10px;"><li>Pull latest vetted image</li><li>Scan for vulnerabilities</li><li>Apply security patches</li><li>Configure network policies</li><li>Set resource limits</li><li>Initialize audit logging</li></ul></div></div></div></foreignObject><text x="50" y="175" fill="light-dark(#000000, #ffffff)" font-family="Helvetica" font-size="16px">Pull latest vetted imageScan...</text></switch></g></g></g><g data-cell-id="qiHXacqECXXAYTJ9b62k-162"><g transform="translate(0.5,0.5)"><rect x="39" y="305" width="241" height="130" fill="#ffffff" stroke="#000000" pointer-events="all" style="fill: light-dark(#ffffff, var(--ge-dark-color, #121212)); stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/></g><g><g><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe flex-start; width: 229px; height: 1px; padding-top: 370px; margin-left: 51px;"><div style="box-sizing: border-box; font-size: 0; text-align: left; color: #000000; "><div style="display: inline-block; font-size: 16px; font-family: Helvetica; color: light-dark(#000000, #ffffff); line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; "><ul style="padding-left: 10px;"><li>Load security policies</li><li>Establish secure connection</li><li>Verify agent identity</li><li>Fetch encrypted credentials</li><li>Initialize monitoring agent</li><li>Register with orchestrator</li></ul></div></div></div></foreignObject><text x="51" y="375" fill="light-dark(#000000, #ffffff)" font-family="Helvetica" font-size="16px">Load security policiesEstabli...</text></switch></g></g></g><g data-cell-id="qiHXacqECXXAYTJ9b62k-163"><g transform="translate(0.5,0.5)"><rect x="38" y="492" width="242" height="130" fill="#ffffff" stroke="#000000" pointer-events="all" style="fill: light-dark(#ffffff, var(--ge-dark-color, #121212)); stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/></g><g><g><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe flex-start; width: 230px; height: 1px; padding-top: 557px; margin-left: 50px;"><div style="box-sizing: border-box; font-size: 0; text-align: left; color: #000000; "><div style="display: inline-block; font-size: 16px; font-family: Helvetica; color: light-dark(#000000, #ffffff); line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; "><ul style="padding-left: 10px;"><li>Execute flows</li><li>All actions validated</li><li>Continuous monitoring</li><li>Health checks</li><li>Log all operations</li><li>Resource usage tracking</li></ul></div></div></div></foreignObject><text x="50" y="562" fill="light-dark(#000000, #ffffff)" font-family="Helvetica" font-size="16px">Execute flowsAll actions vali...</text></switch></g></g></g><g data-cell-id="qiHXacqECXXAYTJ9b62k-164"><g transform="translate(0.5,0.5)"><rect x="191" y="652" width="100" height="20" fill="none" stroke="none" pointer-events="all"/></g><g><g><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe flex-start; width: 98px; height: 1px; padding-top: 662px; margin-left: 193px;"><div style="box-sizing: border-box; font-size: 0; text-align: left; color: #000000; "><div style="display: inline-block; font-size: 16px; font-family: Helvetica; color: light-dark(#000000, #ffffff); line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">[Idle Timeout]</div></div></div></foreignObject><text x="193" y="667" fill="light-dark(#000000, #ffffff)" font-family="Helvetica" font-size="16px">[Idle Timeou...</text></switch></g></g></g><g data-cell-id="qiHXacqECXXAYTJ9b62k-165"><g transform="translate(0.5,0.5)"><rect x="191" y="689" width="139" height="20" fill="none" stroke="none" pointer-events="all"/></g><g><g><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe flex-start; width: 137px; height: 1px; padding-top: 699px; margin-left: 193px;"><div style="box-sizing: border-box; font-size: 0; text-align: left; color: #000000; "><div style="display: inline-block; font-size: 16px; font-family: Helvetica; color: light-dark(#000000, #ffffff); line-height: 1.2; pointer-events: all; font-style: italic; white-space: normal; word-wrap: normal; ">Graceful shutdown</div></div></div></foreignObject><text x="193" y="704" fill="light-dark(#000000, #ffffff)" font-family="Helvetica" font-size="16px" font-style="italic">Graceful shutdown</text></switch></g></g></g><g data-cell-id="qiHXacqECXXAYTJ9b62k-166"><g transform="translate(0.5,0.5)"><rect x="193" y="735" width="117" height="20" fill="none" stroke="none" pointer-events="all"/></g><g><g><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe flex-start; width: 115px; height: 1px; padding-top: 745px; margin-left: 195px;"><div style="box-sizing: border-box; font-size: 0; text-align: left; color: #000000; "><div style="display: inline-block; font-size: 16px; font-family: Helvetica; color: light-dark(#000000, #ffffff); line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">[Task Complete]</div></div></div></foreignObject><text x="195" y="750" fill="light-dark(#000000, #ffffff)" font-family="Helvetica" font-size="16px">[Task Complete]</text></switch></g></g></g><g data-cell-id="qiHXacqECXXAYTJ9b62k-167"><g transform="translate(0.5,0.5)"><rect x="193" y="773" width="157" height="20" fill="none" stroke="none" pointer-events="all"/></g><g><g><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe flex-start; width: 155px; height: 1px; padding-top: 783px; margin-left: 195px;"><div style="box-sizing: border-box; font-size: 0; text-align: left; color: #000000; "><div style="display: inline-block; font-size: 16px; font-family: Helvetica; color: light-dark(#000000, #ffffff); line-height: 1.2; pointer-events: all; font-style: italic; white-space: normal; word-wrap: normal; ">Cleanup & shutdown</div></div></div></foreignObject><text x="195" y="788" fill="light-dark(#000000, #ffffff)" font-family="Helvetica" font-size="16px" font-style="italic">Cleanup & shutdown</text></switch></g></g></g><g data-cell-id="Aohr6ZUG_8G47jTySdQy-1"><g transform="translate(0.5,0.5)"><path d="M 222 844 L 222 854 L 222 863.63" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="stroke" style="stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/><path d="M 222 868.88 L 218.5 861.88 L 222 863.63 L 225.5 861.88 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="all" style="fill: light-dark(rgb(0, 0, 0), rgb(255, 255, 255)); stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/></g></g><g data-cell-id="qiHXacqECXXAYTJ9b62k-168"><g transform="translate(0.5,0.5)"><rect x="192" y="826" width="136" height="20" fill="none" stroke="none" pointer-events="all"/></g><g><g><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe flex-start; width: 134px; height: 1px; padding-top: 836px; margin-left: 194px;"><div style="box-sizing: border-box; font-size: 0; text-align: left; color: #000000; "><div style="display: inline-block; font-size: 16px; font-family: Helvetica; color: light-dark(#000000, #ffffff); line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">[Security Violation]</div></div></div></foreignObject><text x="194" y="841" fill="light-dark(#000000, #ffffff)" font-family="Helvetica" font-size="16px">[Security Violati...</text></switch></g></g></g><g data-cell-id="qiHXacqECXXAYTJ9b62k-169"><g transform="translate(0.5,0.5)"><rect x="190" y="867" width="158" height="20" fill="none" stroke="none" pointer-events="all"/></g><g><g><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe flex-start; width: 156px; height: 1px; padding-top: 877px; margin-left: 192px;"><div style="box-sizing: border-box; font-size: 0; text-align: left; color: #000000; "><div style="display: inline-block; font-size: 16px; font-family: Helvetica; color: light-dark(#000000, #ffffff); line-height: 1.2; pointer-events: all; font-style: italic; white-space: normal; word-wrap: normal; ">Immediate shutdown</div></div></div></foreignObject><text x="192" y="882" fill="light-dark(#000000, #ffffff)" font-family="Helvetica" font-size="16px" font-style="italic">Immediate shutdown</text></switch></g></g></g><g data-cell-id="qiHXacqECXXAYTJ9b62k-170"><g transform="translate(0.5,0.5)"><rect x="37" y="937" width="243" height="170" fill="#ffffff" stroke="#000000" pointer-events="all" style="fill: light-dark(#ffffff, var(--ge-dark-color, #121212)); stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/></g><g><g><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe flex-start; width: 231px; height: 1px; padding-top: 1022px; margin-left: 49px;"><div style="box-sizing: border-box; font-size: 0; text-align: left; color: #000000; "><div style="display: inline-block; font-size: 16px; font-family: Helvetica; color: light-dark(#000000, #ffffff); line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; "><ul style="padding-left: 10px;"><li>Clear credentials from memory</li><li>Flush logs to storage</li><li>Terminate active connections</li><li>Delete temporary files</li><li>Release resources</li><li>Notify orchestrator</li></ul></div></div></div></foreignObject><text x="49" y="1027" fill="light-dark(#000000, #ffffff)" font-family="Helvetica" font-size="16px">Clear credentials from memory...</text></switch></g></g></g><g data-cell-id="qiHXacqECXXAYTJ9b62k-171"><g transform="translate(0.5,0.5)"><rect x="36" y="1160" width="244" height="120" fill="#ffffff" stroke="#000000" pointer-events="all" style="fill: light-dark(#ffffff, var(--ge-dark-color, #121212)); stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/></g><g><g><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe flex-start; width: 232px; height: 1px; padding-top: 1220px; margin-left: 48px;"><div style="box-sizing: border-box; font-size: 0; text-align: left; color: #000000; "><div style="display: inline-block; font-size: 16px; font-family: Helvetica; color: light-dark(#000000, #ffffff); line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; "><ul style="padding-left: 10px;"><li>Destroy pod/container</li><li>Remove ephemeral storage</li><li>Verify no data leakage</li><li>Archive audit logs</li><li>Update metrics</li></ul></div></div></div></foreignObject><text x="48" y="1225" fill="light-dark(#000000, #ffffff)" font-family="Helvetica" font-size="16px">Destroy pod/containerRemove e...</text></switch></g></g></g><g data-cell-id="qiHXacqECXXAYTJ9b62k-172"><g transform="translate(0.5,0.5)"><path d="M 159 240 L 159 272.5 L 159.4 298.63" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="stroke" style="stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/><path d="M 159.48 303.88 L 155.88 296.94 L 159.4 298.63 L 162.87 296.83 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="all" style="fill: light-dark(rgb(0, 0, 0), rgb(255, 255, 255)); stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/></g></g><g data-cell-id="qiHXacqECXXAYTJ9b62k-173"><g transform="translate(0.5,0.5)"><path d="M 159.5 435 L 159.5 463.5 L 159.11 485.63" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="stroke" style="stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/><path d="M 159.02 490.88 L 155.64 483.82 L 159.11 485.63 L 162.64 483.94 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="all" style="fill: light-dark(rgb(0, 0, 0), rgb(255, 255, 255)); stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/></g></g><g data-cell-id="qiHXacqECXXAYTJ9b62k-174"><g transform="translate(0.5,0.5)"><path d="M 159 622 L 159 779.5 L 158.52 930.63" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="stroke" style="stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/><path d="M 158.5 935.88 L 155.03 928.87 L 158.52 930.63 L 162.03 928.89 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="all" style="fill: light-dark(rgb(0, 0, 0), rgb(255, 255, 255)); stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/></g></g><g data-cell-id="qiHXacqECXXAYTJ9b62k-175"><g transform="translate(0.5,0.5)"><path d="M 158.5 1107 L 158.5 1133.5 L 158.12 1153.63" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="stroke" style="stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/><path d="M 158.02 1158.88 L 154.65 1151.82 L 158.12 1153.63 L 161.65 1151.95 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="all" style="fill: light-dark(rgb(0, 0, 0), rgb(255, 255, 255)); stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/></g></g><g data-cell-id="qiHXacqECXXAYTJ9b62k-178"><g transform="translate(0.5,0.5)"><path d="M 160 837 L 186.63 837" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="stroke" style="stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/><path d="M 191.88 837 L 184.88 840.5 L 186.63 837 L 184.88 833.5 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="all" style="fill: light-dark(rgb(0, 0, 0), rgb(255, 255, 255)); stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/></g></g><g data-cell-id="qiHXacqECXXAYTJ9b62k-238"><g transform="translate(0.5,0.5)"><rect x="10" y="70" width="160" height="40" fill="none" stroke="none" pointer-events="all"/></g><g><g><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe flex-start; justify-content: unsafe flex-start; width: 158px; height: 1px; padding-top: 77px; margin-left: 12px;"><div style="box-sizing: border-box; font-size: 0; text-align: left; color: #000000; "><div style="display: inline-block; font-size: 16px; font-family: Helvetica; color: light-dark(#000000, #ffffff); line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; "><span style="font-family: Helvetica; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 700; letter-spacing: normal; orphans: 2; text-align: center; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; white-space: normal; text-decoration-thickness: initial; text-decoration-style: initial; text-decoration-color: initial; float: none; display: inline !important;">[1] PROVISIONING</span></div></div></div></foreignObject><text x="12" y="93" fill="light-dark(#000000, #ffffff)" font-family="Helvetica" font-size="16px">[1] PROVISIONING</text></switch></g></g></g><g data-cell-id="qiHXacqECXXAYTJ9b62k-239"><g transform="translate(0.5,0.5)"><rect x="0" y="273" width="160" height="40" fill="none" stroke="none" pointer-events="all"/></g><g><g><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe flex-start; justify-content: unsafe flex-start; width: 158px; height: 1px; padding-top: 280px; margin-left: 2px;"><div style="box-sizing: border-box; font-size: 0; text-align: left; color: #000000; "><div style="display: inline-block; font-size: 16px; font-family: Helvetica; color: light-dark(#000000, #ffffff); line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; "><span style="font-family: Helvetica; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 700; letter-spacing: normal; orphans: 2; text-align: center; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; white-space: normal; text-decoration-thickness: initial; text-decoration-style: initial; text-decoration-color: initial; float: none; display: inline !important;"><font>[2] INITIALIZATION</font></span></div></div></div></foreignObject><text x="2" y="296" fill="light-dark(#000000, #ffffff)" font-family="Helvetica" font-size="16px">[2] INITIALIZATION</text></switch></g></g></g><g data-cell-id="qiHXacqECXXAYTJ9b62k-240"><g transform="translate(0.5,0.5)"><rect x="10" y="453" width="140" height="40" fill="none" stroke="none" pointer-events="all"/></g><g><g><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe flex-start; justify-content: unsafe flex-start; width: 138px; height: 1px; padding-top: 460px; margin-left: 12px;"><div style="box-sizing: border-box; font-size: 0; text-align: left; color: #000000; "><div style="display: inline-block; font-size: 16px; font-family: Helvetica; color: light-dark(#000000, #ffffff); line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; "><b style="forced-color-adjust: none; font-family: Helvetica; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; letter-spacing: normal; orphans: 2; text-align: left; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; white-space: normal; text-decoration-thickness: initial; text-decoration-style: initial; text-decoration-color: initial; box-shadow: none !important;"><font>[3] ACTIVE STATE</font></b></div></div></div></foreignObject><text x="12" y="476" fill="light-dark(#000000, #ffffff)" font-family="Helvetica" font-size="16px">[3] ACTIVE STATE</text></switch></g></g></g><g data-cell-id="qiHXacqECXXAYTJ9b62k-241"><g transform="translate(0.5,0.5)"><rect x="10" y="899" width="130" height="40" fill="none" stroke="none" pointer-events="all"/></g><g><g><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe flex-start; justify-content: unsafe flex-start; width: 128px; height: 1px; padding-top: 906px; margin-left: 12px;"><div style="box-sizing: border-box; font-size: 0; text-align: left; color: #000000; "><div style="display: inline-block; font-size: 16px; font-family: Helvetica; color: light-dark(#000000, #ffffff); line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; "><b style="forced-color-adjust: none; font-family: Helvetica; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; letter-spacing: normal; orphans: 2; text-align: left; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; white-space: normal; text-decoration-thickness: initial; text-decoration-style: initial; text-decoration-color: initial; box-shadow: none !important;">[4] SHUTDOWN</b><br align="left" style="forced-color-adjust: none; font-family: Helvetica; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: left; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; white-space: normal; text-decoration-thickness: initial; text-decoration-style: initial; text-decoration-color: initial; box-shadow: none !important;" /></div></div></div></foreignObject><text x="12" y="922" fill="light-dark(#000000, #ffffff)" font-family="Helvetica" font-size="16px">[4] SHUTDOWN
</text></switch></g></g></g><g data-cell-id="qiHXacqECXXAYTJ9b62k-242"><g transform="translate(0.5,0.5)"><rect x="10" y="1120" width="110" height="40" fill="none" stroke="none" pointer-events="all"/></g><g><g><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe flex-start; justify-content: unsafe flex-start; width: 108px; height: 1px; padding-top: 1127px; margin-left: 12px;"><div style="box-sizing: border-box; font-size: 0; text-align: left; color: #000000; "><div style="display: inline-block; font-size: 16px; font-family: Helvetica; color: light-dark(#000000, #ffffff); line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; "><b style="forced-color-adjust: none; font-family: Helvetica; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; letter-spacing: normal; orphans: 2; text-align: left; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; white-space: normal; text-decoration-thickness: initial; text-decoration-style: initial; text-decoration-color: initial; box-shadow: none !important;"><font>[5] CLEANUP</font></b></div></div></div></foreignObject><text x="12" y="1143" fill="light-dark(#000000, #ffffff)" font-family="Helvetica" font-size="16px">[5] CLEANUP</text></switch></g></g></g><g data-cell-id="Aohr6ZUG_8G47jTySdQy-3"><g transform="translate(0.5,0.5)"><path d="M 160 748 L 188.63 748" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="stroke" style="stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/><path d="M 193.88 748 L 186.88 751.5 L 188.63 748 L 186.88 744.5 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="all" style="fill: light-dark(rgb(0, 0, 0), rgb(255, 255, 255)); stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/></g></g><g data-cell-id="Aohr6ZUG_8G47jTySdQy-4"><g transform="translate(0.5,0.5)"><path d="M 220 753 L 220 763 L 220 772.63" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="stroke" style="stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/><path d="M 220 777.88 L 216.5 770.88 L 220 772.63 L 223.5 770.88 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="all" style="fill: light-dark(rgb(0, 0, 0), rgb(255, 255, 255)); stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/></g></g><g data-cell-id="Aohr6ZUG_8G47jTySdQy-5"><g transform="translate(0.5,0.5)"><path d="M 219 670 L 219 680 L 219 689.63" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="stroke" style="stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/><path d="M 219 694.88 L 215.5 687.88 L 219 689.63 L 222.5 687.88 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="all" style="fill: light-dark(rgb(0, 0, 0), rgb(255, 255, 255)); stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/></g></g><g data-cell-id="T9pB_ysCbEszbst1waTv-1"><g transform="translate(0.5,0.5)"><path d="M 158 663 L 186.63 663" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="stroke" style="stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/><path d="M 191.88 663 L 184.88 666.5 L 186.63 663 L 184.88 659.5 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="all" style="fill: light-dark(rgb(0, 0, 0), rgb(255, 255, 255)); stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/></g></g></g></g></g><switch><g requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"/><a transform="translate(0,-5)" xlink:href="https://www.drawio.com/doc/faq/svg-export-text-problems" target="_blank"><text text-anchor="middle" font-size="10px" x="50%" y="100%">Text is not SVG - cannot display</text></a></switch></svg>
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
|
2
|
+
<!-- Do not edit this file with editors other than draw.io -->
|
|
3
|
+
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
|
|
4
|
+
<svg xmlns="http://www.w3.org/2000/svg" style="background: transparent; background-color: transparent; color-scheme: light dark;" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" width="1223px" height="1171px" viewBox="0 0 1223 1171" content="<mxfile host="app.diagrams.net" agent="Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/143.0.0.0 Safari/537.36" version="29.2.7"> <diagram name="Architecture Overview" id="lUb2Yy0VcGrDcHUANlMM"> <mxGraphModel dx="1678" dy="804" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="850" pageHeight="1100" math="0" shadow="0"> <root> <mxCell id="0" /> <mxCell id="1" parent="0" /> <mxCell id="qiHXacqECXXAYTJ9b62k-41" parent="1" style="shape=umlLifeline;perimeter=lifelinePerimeter;whiteSpace=wrap;container=1;dropTarget=0;collapsible=0;recursiveResize=0;outlineConnect=0;portConstraint=eastwest;newEdgeStyle={&quot;edgeStyle&quot;:&quot;elbowEdgeStyle&quot;,&quot;elbow&quot;:&quot;vertical&quot;,&quot;curved&quot;:0,&quot;rounded&quot;:0};size=65;labelBackgroundColor=none;fontSize=16;" value="CUSTOMER ADMIN" vertex="1"> <mxGeometry height="1170" width="167" x="20" y="20" as="geometry" /> </mxCell> <mxCell id="qiHXacqECXXAYTJ9b62k-42" parent="1" style="shape=umlLifeline;perimeter=lifelinePerimeter;whiteSpace=wrap;container=1;dropTarget=0;collapsible=0;recursiveResize=0;outlineConnect=0;portConstraint=eastwest;newEdgeStyle={&quot;edgeStyle&quot;:&quot;elbowEdgeStyle&quot;,&quot;elbow&quot;:&quot;vertical&quot;,&quot;curved&quot;:0,&quot;rounded&quot;:0};size=65;labelBackgroundColor=none;fontSize=16;" value="MINDED BACKEND" vertex="1"> <mxGeometry height="1170" width="163" x="385" y="20" as="geometry" /> </mxCell> <mxCell id="qiHXacqECXXAYTJ9b62k-43" parent="1" style="shape=umlLifeline;perimeter=lifelinePerimeter;whiteSpace=wrap;container=1;dropTarget=0;collapsible=0;recursiveResize=0;outlineConnect=0;portConstraint=eastwest;newEdgeStyle={&quot;edgeStyle&quot;:&quot;elbowEdgeStyle&quot;,&quot;elbow&quot;:&quot;vertical&quot;,&quot;curved&quot;:0,&quot;rounded&quot;:0};size=65;labelBackgroundColor=none;fontSize=16;" value="KMS&#xa;(KEY MGMT)" vertex="1"> <mxGeometry height="1170" width="150" x="766" y="20" as="geometry" /> </mxCell> <mxCell id="qiHXacqECXXAYTJ9b62k-44" parent="1" style="shape=umlLifeline;perimeter=lifelinePerimeter;whiteSpace=wrap;container=1;dropTarget=0;collapsible=0;recursiveResize=0;outlineConnect=0;portConstraint=eastwest;newEdgeStyle={&quot;edgeStyle&quot;:&quot;elbowEdgeStyle&quot;,&quot;elbow&quot;:&quot;vertical&quot;,&quot;curved&quot;:0,&quot;rounded&quot;:0};size=65;labelBackgroundColor=none;fontSize=16;" value="AGENT POD" vertex="1"> <mxGeometry height="1170" width="150" x="966" y="20" as="geometry" /> </mxCell> <mxCell id="qiHXacqECXXAYTJ9b62k-45" edge="1" parent="1" source="qiHXacqECXXAYTJ9b62k-41" style="verticalAlign=bottom;edgeStyle=elbowEdgeStyle;elbow=vertical;curved=0;rounded=0;endArrow=block;labelBackgroundColor=none;fontSize=16;" target="qiHXacqECXXAYTJ9b62k-42" value="1. Provide Credentials&#xa;(via secure form)"> <mxGeometry relative="1" as="geometry"> <Array as="points"> <mxPoint x="294" y="123" /> </Array> </mxGeometry> </mxCell> <mxCell id="qiHXacqECXXAYTJ9b62k-46" edge="1" parent="1" style="verticalAlign=bottom;edgeStyle=elbowEdgeStyle;elbow=vertical;curved=0;rounded=0;endArrow=block;labelBackgroundColor=none;fontSize=16;" value="2. Request Encryption Key&#xa;(per tenant)"> <mxGeometry relative="1" as="geometry"> <Array as="points"> <mxPoint x="662" y="157" /> </Array> <mxPoint x="465.82352941176487" y="157" as="sourcePoint" /> <mxPoint x="840.5" y="157" as="targetPoint" /> </mxGeometry> </mxCell> <mxCell id="qiHXacqECXXAYTJ9b62k-47" edge="1" parent="1" style="verticalAlign=bottom;edgeStyle=elbowEdgeStyle;elbow=vertical;curved=0;rounded=0;dashed=1;dashPattern=2 3;endArrow=block;labelBackgroundColor=none;fontSize=16;" value="3. Return Encryption Key"> <mxGeometry relative="1" as="geometry"> <Array as="points"> <mxPoint x="665" y="201" /> </Array> <mxPoint x="840.5" y="201" as="sourcePoint" /> <mxPoint x="465.82352941176487" y="201" as="targetPoint" /> </mxGeometry> </mxCell> <mxCell id="qiHXacqECXXAYTJ9b62k-48" edge="1" parent="1" style="verticalAlign=bottom;edgeStyle=elbowEdgeStyle;elbow=vertical;curved=0;rounded=0;endArrow=block;labelBackgroundColor=none;fontSize=16;" value="4. Encrypt Credentials&#xa;(AES-256-GCM)"> <mxGeometry relative="1" as="geometry"> <Array as="points"> <mxPoint x="662" y="254" /> </Array> <mxPoint x="465.82352941176487" y="254" as="sourcePoint" /> <mxPoint x="840.5" y="254" as="targetPoint" /> </mxGeometry> </mxCell> <mxCell id="qiHXacqECXXAYTJ9b62k-49" edge="1" parent="1" source="qiHXacqECXXAYTJ9b62k-42" style="curved=1;endArrow=block;rounded=0;labelBackgroundColor=none;fontSize=16;" target="qiHXacqECXXAYTJ9b62k-42" value="5. Store (Database)&#xa;{&#xa; agentId: &quot;...&quot;,&#xa; encrypted: &quot;...&quot;,&#xa; keyId: &quot;...&quot;,&#xa; metadata: {...}&#xa;}"> <mxGeometry relative="1" x="0.1489" y="72" as="geometry"> <mxPoint as="offset" /> <Array as="points"> <mxPoint x="518" y="315" /> <mxPoint x="518" y="345" /> </Array> </mxGeometry> </mxCell> <mxCell id="qiHXacqECXXAYTJ9b62k-50" edge="1" parent="1" source="qiHXacqECXXAYTJ9b62k-42" style="verticalAlign=bottom;edgeStyle=elbowEdgeStyle;elbow=vertical;curved=0;rounded=0;dashed=1;dashPattern=2 3;endArrow=block;labelBackgroundColor=none;fontSize=16;" target="qiHXacqECXXAYTJ9b62k-41" value="6. Confirm Stored Securely"> <mxGeometry relative="1" as="geometry"> <Array as="points"> <mxPoint x="297" y="393" /> </Array> </mxGeometry> </mxCell> <mxCell id="qiHXacqECXXAYTJ9b62k-51" edge="1" parent="1" style="verticalAlign=bottom;edgeStyle=elbowEdgeStyle;elbow=vertical;curved=0;rounded=0;endArrow=block;labelBackgroundColor=none;fontSize=16;" value="7. Agent needs to execute"> <mxGeometry relative="1" as="geometry"> <Array as="points"> <mxPoint x="765" y="424" /> </Array> <mxPoint x="1040.5" y="424" as="sourcePoint" /> <mxPoint x="465.82352941176487" y="424" as="targetPoint" /> </mxGeometry> </mxCell> <mxCell id="qiHXacqECXXAYTJ9b62k-52" edge="1" parent="1" source="qiHXacqECXXAYTJ9b62k-44" style="verticalAlign=bottom;edgeStyle=elbowEdgeStyle;elbow=vertical;curved=0;rounded=0;endArrow=block;labelBackgroundColor=none;fontSize=16;" target="qiHXacqECXXAYTJ9b62k-42" value="8. Request Credentials&#xa;(with auth token)"> <mxGeometry relative="1" as="geometry"> <Array as="points"> <mxPoint x="765" y="489" /> </Array> </mxGeometry> </mxCell> <mxCell id="qiHXacqECXXAYTJ9b62k-53" edge="1" parent="1" source="qiHXacqECXXAYTJ9b62k-42" style="curved=1;endArrow=block;rounded=0;labelBackgroundColor=none;fontSize=16;" target="qiHXacqECXXAYTJ9b62k-42" value="9. Verify Token &amp; Permissions"> <mxGeometry relative="1" x="-0.0298" y="112" as="geometry"> <mxPoint as="offset" /> <Array as="points"> <mxPoint x="518" y="537" /> <mxPoint x="518" y="567" /> </Array> </mxGeometry> </mxCell> <mxCell id="qiHXacqECXXAYTJ9b62k-54" edge="1" parent="1" source="qiHXacqECXXAYTJ9b62k-42" style="verticalAlign=bottom;edgeStyle=elbowEdgeStyle;elbow=vertical;curved=0;rounded=0;endArrow=block;labelBackgroundColor=none;fontSize=16;" target="qiHXacqECXXAYTJ9b62k-43" value="10. Fetch Encryption Key"> <mxGeometry relative="1" as="geometry"> <Array as="points"> <mxPoint x="662" y="615" /> </Array> </mxGeometry> </mxCell> <mxCell id="qiHXacqECXXAYTJ9b62k-55" edge="1" parent="1" source="qiHXacqECXXAYTJ9b62k-43" style="verticalAlign=bottom;edgeStyle=elbowEdgeStyle;elbow=vertical;curved=0;rounded=0;dashed=1;dashPattern=2 3;endArrow=block;labelBackgroundColor=none;fontSize=16;" target="qiHXacqECXXAYTJ9b62k-42" value="11. Return Key"> <mxGeometry relative="1" as="geometry"> <Array as="points"> <mxPoint x="665" y="663" /> </Array> </mxGeometry> </mxCell> <mxCell id="qiHXacqECXXAYTJ9b62k-56" edge="1" parent="1" source="qiHXacqECXXAYTJ9b62k-42" style="verticalAlign=bottom;edgeStyle=elbowEdgeStyle;elbow=vertical;curved=0;rounded=0;endArrow=block;labelBackgroundColor=none;fontSize=16;" target="qiHXacqECXXAYTJ9b62k-43" value="12. Decrypt Credentials"> <mxGeometry relative="1" as="geometry"> <Array as="points"> <mxPoint x="662" y="711" /> </Array> </mxGeometry> </mxCell> <mxCell id="qiHXacqECXXAYTJ9b62k-57" edge="1" parent="1" source="qiHXacqECXXAYTJ9b62k-42" style="verticalAlign=bottom;edgeStyle=elbowEdgeStyle;elbow=vertical;curved=0;rounded=0;dashed=1;dashPattern=2 3;endArrow=block;labelBackgroundColor=none;fontSize=16;" target="qiHXacqECXXAYTJ9b62k-44" value="13. Return (in memory only)"> <mxGeometry relative="1" as="geometry"> <Array as="points"> <mxPoint x="762" y="759" /> </Array> </mxGeometry> </mxCell> <mxCell id="qiHXacqECXXAYTJ9b62k-58" edge="1" parent="1" source="qiHXacqECXXAYTJ9b62k-44" style="curved=1;endArrow=block;rounded=0;labelBackgroundColor=none;fontSize=16;" target="qiHXacqECXXAYTJ9b62k-44" value="14. Use credentials&#xa;(RPA action)"> <mxGeometry relative="1" x="-0.18" y="58" as="geometry"> <mxPoint y="1" as="offset" /> <Array as="points"> <mxPoint x="1092" y="807" /> <mxPoint x="1092" y="837" /> </Array> </mxGeometry> </mxCell> <mxCell id="qiHXacqECXXAYTJ9b62k-59" edge="1" parent="1" source="qiHXacqECXXAYTJ9b62k-44" style="curved=1;endArrow=block;rounded=0;labelBackgroundColor=none;fontSize=16;" target="qiHXacqECXXAYTJ9b62k-44" value="15. Clear from memory"> <mxGeometry relative="1" x="-0.225" y="68" as="geometry"> <mxPoint y="-5" as="offset" /> <Array as="points"> <mxPoint x="1092" y="885" /> <mxPoint x="1092" y="915" /> </Array> </mxGeometry> </mxCell> <mxCell id="qiHXacqECXXAYTJ9b62k-60" edge="1" parent="1" style="verticalAlign=bottom;edgeStyle=elbowEdgeStyle;elbow=vertical;curved=0;rounded=0;endArrow=block;labelBackgroundColor=none;fontSize=16;" value="16. Log Usage&#xa;(audit trail)"> <mxGeometry relative="1" as="geometry"> <Array as="points"> <mxPoint x="765" y="945" /> </Array> <mxPoint x="1040.5" y="945" as="sourcePoint" /> <mxPoint x="465.82352941176487" y="945" as="targetPoint" /> </mxGeometry> </mxCell> <mxCell id="qiHXacqECXXAYTJ9b62k-61" edge="1" parent="1" style="verticalAlign=bottom;edgeStyle=elbowEdgeStyle;elbow=vertical;curved=0;rounded=0;endArrow=block;labelBackgroundColor=none;fontSize=16;" value="17. Rotate Credentials"> <mxGeometry relative="1" as="geometry"> <Array as="points"> <mxPoint x="294" y="976" /> </Array> <mxPoint x="102.82352941176464" y="976" as="sourcePoint" /> <mxPoint x="466" y="976" as="targetPoint" /> </mxGeometry> </mxCell> <mxCell id="qiHXacqECXXAYTJ9b62k-62" edge="1" parent="1" style="verticalAlign=bottom;edgeStyle=elbowEdgeStyle;elbow=vertical;curved=0;rounded=0;endArrow=block;labelBackgroundColor=none;fontSize=16;" value="18. Revoke Old&#xa;(immediately)"> <mxGeometry relative="1" as="geometry"> <Array as="points"> <mxPoint x="662" y="1017" /> </Array> <mxPoint x="465.82352941176487" y="1017" as="sourcePoint" /> <mxPoint x="840.5" y="1017" as="targetPoint" /> </mxGeometry> </mxCell> <mxCell id="qiHXacqECXXAYTJ9b62k-63" edge="1" parent="1" style="verticalAlign=bottom;edgeStyle=elbowEdgeStyle;elbow=vertical;curved=0;rounded=0;endArrow=block;labelBackgroundColor=none;fontSize=16;" value="19. Encrypt &amp; Store New"> <mxGeometry relative="1" as="geometry"> <Array as="points"> <mxPoint x="665" y="1062" /> </Array> <mxPoint x="840.5" y="1062" as="sourcePoint" /> <mxPoint x="465.82352941176487" y="1062" as="targetPoint" /> </mxGeometry> </mxCell> <mxCell id="qiHXacqECXXAYTJ9b62k-64" edge="1" parent="1" style="curved=1;dashed=1;dashPattern=2 3;endArrow=block;rounded=0;labelBackgroundColor=none;fontSize=16;" value="20. Active Sessions Notified"> <mxGeometry relative="1" x="-0.0447" y="102" as="geometry"> <mxPoint y="-1" as="offset" /> <Array as="points"> <mxPoint x="518" y="1108" /> <mxPoint x="518" y="1138" /> </Array> <mxPoint x="465.82352941176487" y="1108" as="sourcePoint" /> <mxPoint x="465.82352941176487" y="1138" as="targetPoint" /> </mxGeometry> </mxCell> </root> </mxGraphModel> </diagram> </mxfile> "><defs/><g><g data-cell-id="0"><g data-cell-id="1"><g data-cell-id="qiHXacqECXXAYTJ9b62k-41"><g transform="translate(0.5,0.5)"><rect x="0" y="0" width="167" height="65" fill="#ffffff" stroke="#000000" pointer-events="all" style="fill: light-dark(#ffffff, var(--ge-dark-color, #121212)); stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/><path d="M 83.5 65 L 83.5 1170" fill="none" stroke="#000000" stroke-miterlimit="10" stroke-dasharray="3 3" pointer-events="all" style="stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/></g><g><g><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 165px; height: 1px; padding-top: 33px; margin-left: 1px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; color: #000000; "><div style="display: inline-block; font-size: 16px; font-family: Helvetica; color: light-dark(#000000, #ffffff); line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">CUSTOMER ADMIN</div></div></div></foreignObject><text x="83" y="37" fill="light-dark(#000000, #ffffff)" font-family="Helvetica" font-size="16px" text-anchor="middle">CUSTOMER ADMIN</text></switch></g></g></g><g data-cell-id="qiHXacqECXXAYTJ9b62k-42"><g transform="translate(0.5,0.5)"><rect x="365" y="0" width="163" height="65" fill="#ffffff" stroke="#000000" pointer-events="all" style="fill: light-dark(#ffffff, var(--ge-dark-color, #121212)); stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/><path d="M 446.5 65 L 446.5 1170" fill="none" stroke="#000000" stroke-miterlimit="10" stroke-dasharray="3 3" pointer-events="all" style="stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/></g><g><g><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 161px; height: 1px; padding-top: 33px; margin-left: 366px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; color: #000000; "><div style="display: inline-block; font-size: 16px; font-family: Helvetica; color: light-dark(#000000, #ffffff); line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">MINDED BACKEND</div></div></div></foreignObject><text x="447" y="37" fill="light-dark(#000000, #ffffff)" font-family="Helvetica" font-size="16px" text-anchor="middle">MINDED BACKEND</text></switch></g></g></g><g data-cell-id="qiHXacqECXXAYTJ9b62k-43"><g transform="translate(0.5,0.5)"><rect x="746" y="0" width="150" height="65" fill="#ffffff" stroke="#000000" pointer-events="all" style="fill: light-dark(#ffffff, var(--ge-dark-color, #121212)); stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/><path d="M 821 65 L 821 1170" fill="none" stroke="#000000" stroke-miterlimit="10" stroke-dasharray="3 3" pointer-events="all" style="stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/></g><g><g><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 148px; height: 1px; padding-top: 33px; margin-left: 747px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; color: #000000; "><div style="display: inline-block; font-size: 16px; font-family: Helvetica; color: light-dark(#000000, #ffffff); line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">KMS<br />(KEY MGMT)</div></div></div></foreignObject><text x="821" y="37" fill="light-dark(#000000, #ffffff)" font-family="Helvetica" font-size="16px" text-anchor="middle">KMS...</text></switch></g></g></g><g data-cell-id="qiHXacqECXXAYTJ9b62k-44"><g transform="translate(0.5,0.5)"><rect x="946" y="0" width="150" height="65" fill="#ffffff" stroke="#000000" pointer-events="all" style="fill: light-dark(#ffffff, var(--ge-dark-color, #121212)); stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/><path d="M 1021 65 L 1021 1170" fill="none" stroke="#000000" stroke-miterlimit="10" stroke-dasharray="3 3" pointer-events="all" style="stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/></g><g><g><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 148px; height: 1px; padding-top: 33px; margin-left: 947px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; color: #000000; "><div style="display: inline-block; font-size: 16px; font-family: Helvetica; color: light-dark(#000000, #ffffff); line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">AGENT POD</div></div></div></foreignObject><text x="1021" y="37" fill="light-dark(#000000, #ffffff)" font-family="Helvetica" font-size="16px" text-anchor="middle">AGENT POD</text></switch></g></g></g><g data-cell-id="qiHXacqECXXAYTJ9b62k-45"><g transform="translate(0.5,0.5)"><path d="M 82.82 103 L 274 103 L 437.88 103" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="stroke" style="stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/><path d="M 444.88 103 L 437.88 106.5 L 437.88 99.5 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="all" style="fill: light-dark(rgb(0, 0, 0), rgb(255, 255, 255)); stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/></g><g><g fill="#000000" font-family="Helvetica" text-anchor="middle" font-size="16px" style="fill: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"><text x="264" y="79">1. Provide Credentials</text><text x="264" y="98">(via secure form)</text></g></g></g><g data-cell-id="qiHXacqECXXAYTJ9b62k-46"><g transform="translate(0.5,0.5)"><path d="M 445.82 137 L 642 137 L 812.38 137" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="stroke" style="stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/><path d="M 819.38 137 L 812.38 140.5 L 812.38 133.5 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="all" style="fill: light-dark(rgb(0, 0, 0), rgb(255, 255, 255)); stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/></g><g><g fill="#000000" font-family="Helvetica" text-anchor="middle" font-size="16px" style="fill: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"><text x="632.88" y="113">2. Request Encryption Key</text><text x="632.88" y="132">(per tenant)</text></g></g></g><g data-cell-id="qiHXacqECXXAYTJ9b62k-47"><g transform="translate(0.5,0.5)"><path d="M 820.5 181 L 645 181 L 453.94 181" fill="none" stroke="#000000" stroke-miterlimit="10" stroke-dasharray="2 3" pointer-events="stroke" style="stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/><path d="M 446.94 181 L 453.94 177.5 L 453.94 184.5 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="all" style="fill: light-dark(rgb(0, 0, 0), rgb(255, 255, 255)); stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/></g><g><g fill="#000000" font-family="Helvetica" text-anchor="middle" font-size="16px" style="fill: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"><text x="633.44" y="176">3. Return Encryption Key</text></g></g></g><g data-cell-id="qiHXacqECXXAYTJ9b62k-48"><g transform="translate(0.5,0.5)"><path d="M 445.82 234 L 642 234 L 812.38 234" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="stroke" style="stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/><path d="M 819.38 234 L 812.38 237.5 L 812.38 230.5 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="all" style="fill: light-dark(rgb(0, 0, 0), rgb(255, 255, 255)); stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/></g><g><g fill="#000000" font-family="Helvetica" text-anchor="middle" font-size="16px" style="fill: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"><text x="632.88" y="210">4. Encrypt Credentials</text><text x="632.88" y="229">(AES-256-GCM)</text></g></g></g><g data-cell-id="qiHXacqECXXAYTJ9b62k-49"><g transform="translate(0.5,0.5)"><path d="M 445.82 295 Q 498 295 498 310 Q 498 325 453.94 325" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="stroke" style="stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/><path d="M 446.94 325 L 453.94 321.5 L 453.94 328.5 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="all" style="fill: light-dark(rgb(0, 0, 0), rgb(255, 255, 255)); stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/></g><g><g fill="#000000" font-family="Helvetica" text-anchor="middle" font-size="16px" style="fill: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"><text x="570" y="270.47">5. Store (Database)</text><text x="570" y="289.47">{</text><text x="570" y="308.47"> agentId: "...",</text><text x="570" y="327.47"> encrypted: "...",</text><text x="570" y="346.47"> keyId: "...",</text><text x="570" y="365.47"> metadata: {...}</text><text x="570" y="384.47">}</text></g></g></g><g data-cell-id="qiHXacqECXXAYTJ9b62k-50"><g transform="translate(0.5,0.5)"><path d="M 446 373 L 277 373 L 90.94 373" fill="none" stroke="#000000" stroke-miterlimit="10" stroke-dasharray="2 3" pointer-events="stroke" style="stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/><path d="M 83.94 373 L 90.94 369.5 L 90.94 376.5 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="all" style="fill: light-dark(rgb(0, 0, 0), rgb(255, 255, 255)); stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/></g><g><g fill="#000000" font-family="Helvetica" text-anchor="middle" font-size="16px" style="fill: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"><text x="264.82" y="368">6. Confirm Stored Securely</text></g></g></g><g data-cell-id="qiHXacqECXXAYTJ9b62k-51"><g transform="translate(0.5,0.5)"><path d="M 1020.5 404 L 745 404 L 453.94 404" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="stroke" style="stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/><path d="M 446.94 404 L 453.94 400.5 L 453.94 407.5 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="all" style="fill: light-dark(rgb(0, 0, 0), rgb(255, 255, 255)); stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/></g><g><g fill="#000000" font-family="Helvetica" text-anchor="middle" font-size="16px" style="fill: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"><text x="733.44" y="399">7. Agent needs to execute</text></g></g></g><g data-cell-id="qiHXacqECXXAYTJ9b62k-52"><g transform="translate(0.5,0.5)"><path d="M 1020.5 469 L 745 469 L 453.94 469" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="stroke" style="stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/><path d="M 446.94 469 L 453.94 465.5 L 453.94 472.5 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="all" style="fill: light-dark(rgb(0, 0, 0), rgb(255, 255, 255)); stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/></g><g><g fill="#000000" font-family="Helvetica" text-anchor="middle" font-size="16px" style="fill: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"><text x="733.44" y="445">8. Request Credentials</text><text x="733.44" y="464">(with auth token)</text></g></g></g><g data-cell-id="qiHXacqECXXAYTJ9b62k-53"><g transform="translate(0.5,0.5)"><path d="M 445.82 517 Q 498 517 498 532 Q 498 547 453.94 547" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="stroke" style="stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/><path d="M 446.94 547 L 453.94 543.5 L 453.94 550.5 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="all" style="fill: light-dark(rgb(0, 0, 0), rgb(255, 255, 255)); stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/></g><g><g fill="#000000" font-family="Helvetica" text-anchor="middle" font-size="16px" style="fill: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"><text x="610" y="536.53">9. Verify Token & Permissions</text></g></g></g><g data-cell-id="qiHXacqECXXAYTJ9b62k-54"><g transform="translate(0.5,0.5)"><path d="M 445.82 595 L 642 595 L 812.38 595" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="stroke" style="stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/><path d="M 819.38 595 L 812.38 598.5 L 812.38 591.5 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="all" style="fill: light-dark(rgb(0, 0, 0), rgb(255, 255, 255)); stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/></g><g><g fill="#000000" font-family="Helvetica" text-anchor="middle" font-size="16px" style="fill: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"><text x="632.88" y="590">10. Fetch Encryption Key</text></g></g></g><g data-cell-id="qiHXacqECXXAYTJ9b62k-55"><g transform="translate(0.5,0.5)"><path d="M 820.5 643 L 645 643 L 453.94 643" fill="none" stroke="#000000" stroke-miterlimit="10" stroke-dasharray="2 3" pointer-events="stroke" style="stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/><path d="M 446.94 643 L 453.94 639.5 L 453.94 646.5 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="all" style="fill: light-dark(rgb(0, 0, 0), rgb(255, 255, 255)); stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/></g><g><g fill="#000000" font-family="Helvetica" text-anchor="middle" font-size="16px" style="fill: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"><text x="633.44" y="638">11. Return Key</text></g></g></g><g data-cell-id="qiHXacqECXXAYTJ9b62k-56"><g transform="translate(0.5,0.5)"><path d="M 445.82 691 L 642 691 L 812.38 691" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="stroke" style="stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/><path d="M 819.38 691 L 812.38 694.5 L 812.38 687.5 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="all" style="fill: light-dark(rgb(0, 0, 0), rgb(255, 255, 255)); stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/></g><g><g fill="#000000" font-family="Helvetica" text-anchor="middle" font-size="16px" style="fill: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"><text x="632.88" y="686">12. Decrypt Credentials</text></g></g></g><g data-cell-id="qiHXacqECXXAYTJ9b62k-57"><g transform="translate(0.5,0.5)"><path d="M 445.82 739 L 742 739 L 1012.38 739" fill="none" stroke="#000000" stroke-miterlimit="10" stroke-dasharray="2 3" pointer-events="stroke" style="stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/><path d="M 1019.38 739 L 1012.38 742.5 L 1012.38 735.5 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="all" style="fill: light-dark(rgb(0, 0, 0), rgb(255, 255, 255)); stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/></g><g><g fill="#000000" font-family="Helvetica" text-anchor="middle" font-size="16px" style="fill: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"><text x="732.88" y="734">13. Return (in memory only)</text></g></g></g><g data-cell-id="qiHXacqECXXAYTJ9b62k-58"><g transform="translate(0.5,0.5)"><path d="M 1020.32 787 Q 1072 787 1072 802 Q 1072 817 1028.44 817" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="stroke" style="stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/><path d="M 1021.44 817 L 1028.44 813.5 L 1028.44 820.5 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="all" style="fill: light-dark(rgb(0, 0, 0), rgb(255, 255, 255)); stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/></g><g><g fill="#000000" font-family="Helvetica" text-anchor="middle" font-size="16px" style="fill: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"><text x="1130" y="787.94">14. Use credentials</text><text x="1130" y="806.94">(RPA action)</text></g></g></g><g data-cell-id="qiHXacqECXXAYTJ9b62k-59"><g transform="translate(0.5,0.5)"><path d="M 1020.32 865 Q 1072 865 1072 880 Q 1072 895 1028.44 895" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="stroke" style="stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/><path d="M 1021.44 895 L 1028.44 891.5 L 1028.44 898.5 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="all" style="fill: light-dark(rgb(0, 0, 0), rgb(255, 255, 255)); stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/></g><g><g fill="#000000" font-family="Helvetica" text-anchor="middle" font-size="16px" style="fill: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"><text x="1140" y="867.09">15. Clear from memory</text></g></g></g><g data-cell-id="qiHXacqECXXAYTJ9b62k-60"><g transform="translate(0.5,0.5)"><path d="M 1020.5 925 L 745 925 L 453.94 925" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="stroke" style="stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/><path d="M 446.94 925 L 453.94 921.5 L 453.94 928.5 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="all" style="fill: light-dark(rgb(0, 0, 0), rgb(255, 255, 255)); stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/></g><g><g fill="#000000" font-family="Helvetica" text-anchor="middle" font-size="16px" style="fill: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"><text x="733.44" y="901">16. Log Usage</text><text x="733.44" y="920">(audit trail)</text></g></g></g><g data-cell-id="qiHXacqECXXAYTJ9b62k-61"><g transform="translate(0.5,0.5)"><path d="M 82.82 956 L 274 956 L 437.88 956" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="stroke" style="stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/><path d="M 444.88 956 L 437.88 959.5 L 437.88 952.5 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="all" style="fill: light-dark(rgb(0, 0, 0), rgb(255, 255, 255)); stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/></g><g><g fill="#000000" font-family="Helvetica" text-anchor="middle" font-size="16px" style="fill: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"><text x="264" y="951">17. Rotate Credentials</text></g></g></g><g data-cell-id="qiHXacqECXXAYTJ9b62k-62"><g transform="translate(0.5,0.5)"><path d="M 445.82 997 L 642 997 L 812.38 997" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="stroke" style="stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/><path d="M 819.38 997 L 812.38 1000.5 L 812.38 993.5 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="all" style="fill: light-dark(rgb(0, 0, 0), rgb(255, 255, 255)); stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/></g><g><g fill="#000000" font-family="Helvetica" text-anchor="middle" font-size="16px" style="fill: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"><text x="632.88" y="973">18. Revoke Old</text><text x="632.88" y="992">(immediately)</text></g></g></g><g data-cell-id="qiHXacqECXXAYTJ9b62k-63"><g transform="translate(0.5,0.5)"><path d="M 820.5 1042 L 645 1042 L 453.94 1042" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="stroke" style="stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/><path d="M 446.94 1042 L 453.94 1038.5 L 453.94 1045.5 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="all" style="fill: light-dark(rgb(0, 0, 0), rgb(255, 255, 255)); stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/></g><g><g fill="#000000" font-family="Helvetica" text-anchor="middle" font-size="16px" style="fill: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"><text x="633.44" y="1037">19. Encrypt & Store New</text></g></g></g><g data-cell-id="qiHXacqECXXAYTJ9b62k-64"><g transform="translate(0.5,0.5)"><path d="M 445.82 1088 Q 498 1088 498 1103 Q 498 1118 453.94 1118" fill="none" stroke="#000000" stroke-miterlimit="10" stroke-dasharray="2 3" pointer-events="stroke" style="stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/><path d="M 446.94 1118 L 453.94 1114.5 L 453.94 1121.5 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="all" style="fill: light-dark(rgb(0, 0, 0), rgb(255, 255, 255)); stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/></g><g><g fill="#000000" font-family="Helvetica" text-anchor="middle" font-size="16px" style="fill: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"><text x="600" y="1106.53">20. Active Sessions Notified</text></g></g></g></g></g></g><switch><g requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"/><a transform="translate(0,-5)" xlink:href="https://www.drawio.com/doc/faq/svg-export-text-problems" target="_blank"><text text-anchor="middle" font-size="10px" x="50%" y="100%">Text is not SVG - cannot display</text></a></switch></svg>
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
|
2
|
+
<!-- Do not edit this file with editors other than draw.io -->
|
|
3
|
+
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
|
|
4
|
+
<svg xmlns="http://www.w3.org/2000/svg" style="background: transparent; background-color: transparent; color-scheme: light dark;" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" width="1329px" height="1257px" viewBox="0 0 1329 1257" content="<mxfile host="app.diagrams.net" agent="Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/143.0.0.0 Safari/537.36" version="29.2.7"> <diagram name="Architecture Overview" id="lUb2Yy0VcGrDcHUANlMM"> <mxGraphModel dx="2194" dy="1051" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="850" pageHeight="1100" math="0" shadow="0"> <root> <mxCell id="0" /> <mxCell id="1" parent="0" /> <mxCell id="qiHXacqECXXAYTJ9b62k-89" parent="1" style="shape=umlLifeline;perimeter=lifelinePerimeter;whiteSpace=wrap;container=1;dropTarget=0;collapsible=0;recursiveResize=0;outlineConnect=0;portConstraint=eastwest;newEdgeStyle={&quot;edgeStyle&quot;:&quot;elbowEdgeStyle&quot;,&quot;elbow&quot;:&quot;vertical&quot;,&quot;curved&quot;:0,&quot;rounded&quot;:0};size=65;labelBackgroundColor=none;fontSize=16;" value="WEBHOOK/ &#xa;SCHEDULE" vertex="1"> <mxGeometry height="1246" width="150" x="208" y="1070" as="geometry" /> </mxCell> <mxCell id="qiHXacqECXXAYTJ9b62k-91" parent="1" style="shape=umlLifeline;perimeter=lifelinePerimeter;whiteSpace=wrap;container=1;dropTarget=0;collapsible=0;recursiveResize=0;outlineConnect=0;portConstraint=eastwest;newEdgeStyle={&quot;edgeStyle&quot;:&quot;elbowEdgeStyle&quot;,&quot;elbow&quot;:&quot;vertical&quot;,&quot;curved&quot;:0,&quot;rounded&quot;:0};size=65;labelBackgroundColor=none;fontSize=16;" value="AGENT FLOW" vertex="1"> <mxGeometry height="1246" width="150" x="420" y="1070" as="geometry" /> </mxCell> <mxCell id="qiHXacqECXXAYTJ9b62k-92" parent="1" style="shape=umlLifeline;perimeter=lifelinePerimeter;whiteSpace=wrap;container=1;dropTarget=0;collapsible=0;recursiveResize=0;outlineConnect=0;portConstraint=eastwest;newEdgeStyle={&quot;edgeStyle&quot;:&quot;elbowEdgeStyle&quot;,&quot;elbow&quot;:&quot;vertical&quot;,&quot;curved&quot;:0,&quot;rounded&quot;:0};size=65;labelBackgroundColor=none;fontSize=16;" value="SECURITY GATEWAY" vertex="1"> <mxGeometry height="1246" width="173" x="654" y="1070" as="geometry" /> </mxCell> <mxCell id="qiHXacqECXXAYTJ9b62k-93" parent="1" style="shape=umlLifeline;perimeter=lifelinePerimeter;whiteSpace=wrap;container=1;dropTarget=0;collapsible=0;recursiveResize=0;outlineConnect=0;portConstraint=eastwest;newEdgeStyle={&quot;edgeStyle&quot;:&quot;elbowEdgeStyle&quot;,&quot;elbow&quot;:&quot;vertical&quot;,&quot;curved&quot;:0,&quot;rounded&quot;:0};size=65;labelBackgroundColor=none;fontSize=16;" value="RPA NODE" vertex="1"> <mxGeometry height="1246" width="150" x="920" y="1070" as="geometry" /> </mxCell> <mxCell id="qiHXacqECXXAYTJ9b62k-94" parent="1" style="shape=umlLifeline;perimeter=lifelinePerimeter;whiteSpace=wrap;container=1;dropTarget=0;collapsible=0;recursiveResize=0;outlineConnect=0;portConstraint=eastwest;newEdgeStyle={&quot;edgeStyle&quot;:&quot;elbowEdgeStyle&quot;,&quot;elbow&quot;:&quot;vertical&quot;,&quot;curved&quot;:0,&quot;rounded&quot;:0};size=65;labelBackgroundColor=none;fontSize=16;" value="CUSTOMER BACKEND" vertex="1"> <mxGeometry height="1246" width="185" x="1350" y="1060" as="geometry" /> </mxCell> <mxCell id="qiHXacqECXXAYTJ9b62k-96" edge="1" parent="1" style="verticalAlign=bottom;edgeStyle=elbowEdgeStyle;elbow=vertical;curved=0;rounded=0;endArrow=block;labelBackgroundColor=none;fontSize=16;" value="2. VALIDATION CHECKS"> <mxGeometry relative="1" as="geometry"> <Array as="points"> <mxPoint x="626" y="1235" /> </Array> <mxPoint x="493.8333333333335" y="1235" as="sourcePoint" /> <mxPoint x="740" y="1235" as="targetPoint" /> </mxGeometry> </mxCell> <mxCell id="qiHXacqECXXAYTJ9b62k-97" edge="1" parent="1" style="curved=1;endArrow=block;rounded=0;labelBackgroundColor=none;fontSize=16;" value="Verify URL is whitelisted"> <mxGeometry relative="1" x="-0.0601" y="89" as="geometry"> <mxPoint y="-1" as="offset" /> <Array as="points"> <mxPoint x="791" y="1269" /> <mxPoint x="791" y="1299" /> </Array> <mxPoint x="739.4615384615386" y="1269" as="sourcePoint" /> <mxPoint x="739.4615384615386" y="1299" as="targetPoint" /> </mxGeometry> </mxCell> <mxCell id="qiHXacqECXXAYTJ9b62k-98" edge="1" parent="1" source="qiHXacqECXXAYTJ9b62k-92" style="curved=1;endArrow=block;rounded=0;labelBackgroundColor=none;fontSize=16;" target="qiHXacqECXXAYTJ9b62k-92" value="Verify action is allowed"> <mxGeometry relative="1" x="-0.0301" y="89" as="geometry"> <mxPoint as="offset" /> <Array as="points"> <mxPoint x="791" y="1347" /> <mxPoint x="791" y="1377" /> </Array> </mxGeometry> </mxCell> <mxCell id="qiHXacqECXXAYTJ9b62k-99" edge="1" parent="1" style="curved=1;endArrow=block;rounded=0;labelBackgroundColor=none;fontSize=16;" value="Validate params &#xa;against schema"> <mxGeometry relative="1" y="62" as="geometry"> <mxPoint y="1" as="offset" /> <Array as="points"> <mxPoint x="788" y="1425" /> <mxPoint x="788" y="1455" /> </Array> <mxPoint x="736.3333333333335" y="1425" as="sourcePoint" /> <mxPoint x="736.3333333333335" y="1455" as="targetPoint" /> </mxGeometry> </mxCell> <mxCell id="qiHXacqECXXAYTJ9b62k-100" edge="1" parent="1" source="qiHXacqECXXAYTJ9b62k-92" style="curved=1;endArrow=block;rounded=0;labelBackgroundColor=none;fontSize=16;" target="qiHXacqECXXAYTJ9b62k-92" value="Check param signatures"> <mxGeometry relative="1" x="0.0301" y="89" as="geometry"> <mxPoint y="-1" as="offset" /> <Array as="points"> <mxPoint x="791" y="1503" /> <mxPoint x="791" y="1533" /> </Array> </mxGeometry> </mxCell> <mxCell id="qiHXacqECXXAYTJ9b62k-101" edge="1" parent="1" source="qiHXacqECXXAYTJ9b62k-92" style="curved=1;endArrow=block;rounded=0;labelBackgroundColor=none;fontSize=16;" target="qiHXacqECXXAYTJ9b62k-92" value="Verify agent permissions"> <mxGeometry relative="1" x="0.0601" y="89" as="geometry"> <mxPoint as="offset" /> <Array as="points"> <mxPoint x="791" y="1581" /> <mxPoint x="791" y="1611" /> </Array> </mxGeometry> </mxCell> <mxCell id="qiHXacqECXXAYTJ9b62k-102" edge="1" parent="1" source="qiHXacqECXXAYTJ9b62k-92" style="curved=1;endArrow=block;rounded=0;labelBackgroundColor=none;fontSize=16;" target="qiHXacqECXXAYTJ9b62k-92" value="3. Request Credentials"> <mxGeometry relative="1" x="-0.0601" y="89" as="geometry"> <mxPoint y="-1" as="offset" /> <Array as="points"> <mxPoint x="791" y="1659" /> <mxPoint x="791" y="1689" /> </Array> </mxGeometry> </mxCell> <mxCell id="qiHXacqECXXAYTJ9b62k-103" edge="1" parent="1" source="qiHXacqECXXAYTJ9b62k-92" style="curved=1;endArrow=block;rounded=0;labelBackgroundColor=none;fontSize=16;" target="qiHXacqECXXAYTJ9b62k-92" value="4. Log Request (audit trail)"> <mxGeometry relative="1" x="-0.0301" y="109" as="geometry"> <mxPoint as="offset" /> <Array as="points"> <mxPoint x="791" y="1737" /> <mxPoint x="791" y="1767" /> </Array> </mxGeometry> </mxCell> <mxCell id="qiHXacqECXXAYTJ9b62k-104" edge="1" parent="1" source="qiHXacqECXXAYTJ9b62k-92" style="verticalAlign=bottom;edgeStyle=elbowEdgeStyle;elbow=vertical;curved=0;rounded=0;endArrow=block;labelBackgroundColor=none;fontSize=16;" target="qiHXacqECXXAYTJ9b62k-93" value="5. Pass to RPA (if all checks passed)"> <mxGeometry relative="1" as="geometry"> <Array as="points"> <mxPoint x="914" y="1815" /> </Array> </mxGeometry> </mxCell> <mxCell id="qiHXacqECXXAYTJ9b62k-105" edge="1" parent="1" style="curved=1;endArrow=block;rounded=0;align=left;labelBackgroundColor=none;fontSize=16;" value="6. EXECUTE&#xa;Check URL again (defense in depth)&#xa;Sanitize input&#xa;Prevent code injection"> <mxGeometry relative="1" x="-0.0488" y="18" as="geometry"> <mxPoint as="offset" /> <Array as="points"> <mxPoint x="1122" y="1842" /> <mxPoint x="1122" y="1872" /> </Array> <mxPoint x="993.5" y="1842" as="sourcePoint" /> <mxPoint x="993.5" y="1872" as="targetPoint" /> </mxGeometry> </mxCell> <mxCell id="qiHXacqECXXAYTJ9b62k-106" edge="1" parent="1" style="verticalAlign=bottom;edgeStyle=elbowEdgeStyle;elbow=vertical;curved=0;rounded=0;endArrow=block;labelBackgroundColor=none;fontSize=16;" value="7. Make Request&#xa;POST /api/action (TLS encrypted)"> <mxGeometry relative="1" as="geometry"> <Array as="points"> <mxPoint x="1340" y="1956" /> </Array> <mxPoint x="993.9615384615386" y="1956" as="sourcePoint" /> <mxPoint x="1442" y="1956" as="targetPoint" /> </mxGeometry> </mxCell> <mxCell id="qiHXacqECXXAYTJ9b62k-107" edge="1" parent="1" style="curved=1;endArrow=block;rounded=0;labelBackgroundColor=none;fontSize=16;" value="Process Action"> <mxGeometry relative="1" x="-1" y="-21" as="geometry"> <mxPoint x="-11" y="-4" as="offset" /> <Array as="points"> <mxPoint x="1490" y="1993" /> <mxPoint x="1510" y="2034" /> </Array> <mxPoint x="1441.461538461538" y="1993" as="sourcePoint" /> <mxPoint x="1441.461538461538" y="2034" as="targetPoint" /> </mxGeometry> </mxCell> <mxCell id="qiHXacqECXXAYTJ9b62k-108" edge="1" parent="1" style="verticalAlign=bottom;edgeStyle=elbowEdgeStyle;elbow=vertical;curved=0;rounded=0;endArrow=block;labelBackgroundColor=none;fontSize=16;" value="8. Response&#xa;{ success: true, data: {...} }&#xa;"> <mxGeometry relative="1" x="0.1237" as="geometry"> <mxPoint as="offset" /> <Array as="points"> <mxPoint x="1343" y="2087" /> </Array> <mxPoint x="1442" y="2087" as="sourcePoint" /> <mxPoint x="993.5" y="2087" as="targetPoint" /> </mxGeometry> </mxCell> <mxCell id="qiHXacqECXXAYTJ9b62k-109" edge="1" parent="1" style="verticalAlign=bottom;edgeStyle=elbowEdgeStyle;elbow=vertical;curved=0;rounded=0;endArrow=block;labelBackgroundColor=none;fontSize=16;" value="10. Log Response (audit trail)"> <mxGeometry relative="1" as="geometry"> <Array as="points" /> <mxPoint x="1000" y="2123" as="sourcePoint" /> <mxPoint x="739.4615384615386" y="2123.5384615384614" as="targetPoint" /> </mxGeometry> </mxCell> <mxCell id="qiHXacqECXXAYTJ9b62k-110" edge="1" parent="1" style="verticalAlign=bottom;edgeStyle=elbowEdgeStyle;elbow=vertical;curved=0;rounded=0;endArrow=block;labelBackgroundColor=none;fontSize=16;" value="11. Return Result&#xa;{ success: true, data: {...}, executionId }"> <mxGeometry relative="1" x="0.0562" y="-22" as="geometry"> <mxPoint x="1" as="offset" /> <Array as="points" /> <mxPoint x="740" y="2151.996666666667" as="sourcePoint" /> <mxPoint x="493.8333333333335" y="2151.996666666667" as="targetPoint" /> </mxGeometry> </mxCell> <mxCell id="qiHXacqECXXAYTJ9b62k-111" edge="1" parent="1" source="qiHXacqECXXAYTJ9b62k-92" style="verticalAlign=bottom;edgeStyle=elbowEdgeStyle;elbow=vertical;curved=0;rounded=0;endArrow=block;labelBackgroundColor=none;fontSize=16;" target="qiHXacqECXXAYTJ9b62k-91" value="12. Continue Flow"> <mxGeometry relative="1" as="geometry"> <Array as="points"> <mxPoint x="629" y="2211" /> </Array> </mxGeometry> </mxCell> <mxCell id="qiHXacqECXXAYTJ9b62k-114" edge="1" parent="1" style="verticalAlign=bottom;edgeStyle=elbowEdgeStyle;elbow=vertical;curved=0;rounded=0;endArrow=block;labelBackgroundColor=none;fontSize=16;" value="1. EXECUTE RPA ACTION"> <mxGeometry relative="1" as="geometry"> <Array as="points"> <mxPoint x="630" y="1189" /> </Array> <mxPoint x="498" y="1189" as="sourcePoint" /> <mxPoint x="744" y="1189" as="targetPoint" /> </mxGeometry> </mxCell> <mxCell id="qiHXacqECXXAYTJ9b62k-117" edge="1" parent="1" style="verticalAlign=bottom;edgeStyle=elbowEdgeStyle;elbow=vertical;curved=0;rounded=0;endArrow=block;labelBackgroundColor=none;fontSize=16;" target="qiHXacqECXXAYTJ9b62k-91" value="trigger"> <mxGeometry relative="1" as="geometry"> <Array as="points"> <mxPoint x="395" y="1160" /> </Array> <mxPoint x="283" y="1160" as="sourcePoint" /> <mxPoint x="473" y="1160" as="targetPoint" /> </mxGeometry> </mxCell> <mxCell id="qiHXacqECXXAYTJ9b62k-254" parent="1" style="text;whiteSpace=wrap;html=1;labelBackgroundColor=none;fontSize=16;" value="&lt;span style=&quot;color: rgb(0, 0, 0); font-family: Helvetica; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: center; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; white-space: nowrap; text-decoration-thickness: initial; text-decoration-style: initial; text-decoration-color: initial; float: none; display: inline !important;&quot;&gt;9. SANITIZE Response&lt;/span&gt;&lt;br style=&quot;forced-color-adjust: none; padding: 0px; margin: 0px; color: rgb(0, 0, 0); font-family: Helvetica; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: center; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; white-space: nowrap; text-decoration-thickness: initial; text-decoration-style: initial; text-decoration-color: initial;&quot;&gt;&lt;span style=&quot;color: rgb(0, 0, 0); font-family: Helvetica; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: center; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; white-space: nowrap; text-decoration-thickness: initial; text-decoration-style: initial; text-decoration-color: initial; float: none; display: inline !important;&quot;&gt;&amp;nbsp;Remove secrets&lt;/span&gt;&lt;br style=&quot;forced-color-adjust: none; padding: 0px; margin: 0px; color: rgb(0, 0, 0); font-family: Helvetica; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: center; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; white-space: nowrap; text-decoration-thickness: initial; text-decoration-style: initial; text-decoration-color: initial;&quot;&gt;&lt;span style=&quot;color: rgb(0, 0, 0); font-family: Helvetica; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: center; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; white-space: nowrap; text-decoration-thickness: initial; text-decoration-style: initial; text-decoration-color: initial; float: none; display: inline !important;&quot;&gt;Validate format&lt;/span&gt;" vertex="1"> <mxGeometry height="80" width="200" x="1140" y="2100" as="geometry" /> </mxCell> </root> </mxGraphModel> </diagram> </mxfile> "><defs/><g><g data-cell-id="0"><g data-cell-id="1"><g data-cell-id="qiHXacqECXXAYTJ9b62k-89"><g transform="translate(0.5,0.5)"><rect x="0" y="10" width="150" height="65" fill="#ffffff" stroke="#000000" pointer-events="all" style="fill: light-dark(#ffffff, var(--ge-dark-color, #121212)); stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/><path d="M 75 75 L 75 1256" fill="none" stroke="#000000" stroke-miterlimit="10" stroke-dasharray="3 3" pointer-events="all" style="stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/></g><g><g><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 148px; height: 1px; padding-top: 43px; margin-left: 1px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; color: #000000; "><div style="display: inline-block; font-size: 16px; font-family: Helvetica; color: light-dark(#000000, #ffffff); line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">WEBHOOK/ <br />SCHEDULE</div></div></div></foreignObject><text x="75" y="47" fill="light-dark(#000000, #ffffff)" font-family="Helvetica" font-size="16px" text-anchor="middle">WEBHOOK/...</text></switch></g></g></g><g data-cell-id="qiHXacqECXXAYTJ9b62k-91"><g transform="translate(0.5,0.5)"><rect x="212" y="10" width="150" height="65" fill="#ffffff" stroke="#000000" pointer-events="all" style="fill: light-dark(#ffffff, var(--ge-dark-color, #121212)); stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/><path d="M 287 75 L 287 1256" fill="none" stroke="#000000" stroke-miterlimit="10" stroke-dasharray="3 3" pointer-events="all" style="stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/></g><g><g><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 148px; height: 1px; padding-top: 43px; margin-left: 213px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; color: #000000; "><div style="display: inline-block; font-size: 16px; font-family: Helvetica; color: light-dark(#000000, #ffffff); line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">AGENT FLOW</div></div></div></foreignObject><text x="287" y="47" fill="light-dark(#000000, #ffffff)" font-family="Helvetica" font-size="16px" text-anchor="middle">AGENT FLOW</text></switch></g></g></g><g data-cell-id="qiHXacqECXXAYTJ9b62k-92"><g transform="translate(0.5,0.5)"><rect x="446" y="10" width="173" height="65" fill="#ffffff" stroke="#000000" pointer-events="all" style="fill: light-dark(#ffffff, var(--ge-dark-color, #121212)); stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/><path d="M 532.5 75 L 532.5 1256" fill="none" stroke="#000000" stroke-miterlimit="10" stroke-dasharray="3 3" pointer-events="all" style="stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/></g><g><g><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 171px; height: 1px; padding-top: 43px; margin-left: 447px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; color: #000000; "><div style="display: inline-block; font-size: 16px; font-family: Helvetica; color: light-dark(#000000, #ffffff); line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">SECURITY GATEWAY</div></div></div></foreignObject><text x="533" y="47" fill="light-dark(#000000, #ffffff)" font-family="Helvetica" font-size="16px" text-anchor="middle">SECURITY GATEWAY</text></switch></g></g></g><g data-cell-id="qiHXacqECXXAYTJ9b62k-93"><g transform="translate(0.5,0.5)"><rect x="712" y="10" width="150" height="65" fill="#ffffff" stroke="#000000" pointer-events="all" style="fill: light-dark(#ffffff, var(--ge-dark-color, #121212)); stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/><path d="M 787 75 L 787 1256" fill="none" stroke="#000000" stroke-miterlimit="10" stroke-dasharray="3 3" pointer-events="all" style="stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/></g><g><g><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 148px; height: 1px; padding-top: 43px; margin-left: 713px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; color: #000000; "><div style="display: inline-block; font-size: 16px; font-family: Helvetica; color: light-dark(#000000, #ffffff); line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">RPA NODE</div></div></div></foreignObject><text x="787" y="47" fill="light-dark(#000000, #ffffff)" font-family="Helvetica" font-size="16px" text-anchor="middle">RPA NODE</text></switch></g></g></g><g data-cell-id="qiHXacqECXXAYTJ9b62k-94"><g transform="translate(0.5,0.5)"><rect x="1142" y="0" width="185" height="65" fill="#ffffff" stroke="#000000" pointer-events="all" style="fill: light-dark(#ffffff, var(--ge-dark-color, #121212)); stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/><path d="M 1234.5 65 L 1234.5 1246" fill="none" stroke="#000000" stroke-miterlimit="10" stroke-dasharray="3 3" pointer-events="all" style="stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/></g><g><g><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 183px; height: 1px; padding-top: 33px; margin-left: 1143px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; color: #000000; "><div style="display: inline-block; font-size: 16px; font-family: Helvetica; color: light-dark(#000000, #ffffff); line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">CUSTOMER BACKEND</div></div></div></foreignObject><text x="1234" y="37" fill="light-dark(#000000, #ffffff)" font-family="Helvetica" font-size="16px" text-anchor="middle">CUSTOMER BACKEND</text></switch></g></g></g><g data-cell-id="qiHXacqECXXAYTJ9b62k-96"><g transform="translate(0.5,0.5)"><path d="M 285.83 175 L 418 175 L 523.88 175" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="stroke" style="stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/><path d="M 530.88 175 L 523.88 178.5 L 523.88 171.5 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="all" style="fill: light-dark(rgb(0, 0, 0), rgb(255, 255, 255)); stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/></g><g><g fill="#000000" font-family="Helvetica" text-anchor="middle" font-size="16px" style="fill: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"><text x="408.91" y="170">2. VALIDATION CHECKS</text></g></g></g><g data-cell-id="qiHXacqECXXAYTJ9b62k-97"><g transform="translate(0.5,0.5)"><path d="M 531.46 209 Q 583 209 583 224 Q 583 239 539.58 239" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="stroke" style="stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/><path d="M 532.58 239 L 539.58 235.5 L 539.58 242.5 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="all" style="fill: light-dark(rgb(0, 0, 0), rgb(255, 255, 255)); stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/></g><g><g fill="#000000" font-family="Helvetica" text-anchor="middle" font-size="16px" style="fill: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"><text x="672" y="226.54">Verify URL is whitelisted</text></g></g></g><g data-cell-id="qiHXacqECXXAYTJ9b62k-98"><g transform="translate(0.5,0.5)"><path d="M 531.46 287 Q 583 287 583 302 Q 583 317 539.58 317" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="stroke" style="stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/><path d="M 532.58 317 L 539.58 313.5 L 539.58 320.5 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="all" style="fill: light-dark(rgb(0, 0, 0), rgb(255, 255, 255)); stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/></g><g><g fill="#000000" font-family="Helvetica" text-anchor="middle" font-size="16px" style="fill: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"><text x="672" y="307.08">Verify action is allowed</text></g></g></g><g data-cell-id="qiHXacqECXXAYTJ9b62k-99"><g transform="translate(0.5,0.5)"><path d="M 528.33 365 Q 580 365 580 380 Q 580 395 536.45 395" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="stroke" style="stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/><path d="M 529.45 395 L 536.45 391.5 L 536.45 398.5 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="all" style="fill: light-dark(rgb(0, 0, 0), rgb(255, 255, 255)); stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/></g><g><g fill="#000000" font-family="Helvetica" text-anchor="middle" font-size="16px" style="fill: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"><text x="642" y="377.99">Validate params </text><text x="642" y="396.99">against schema</text></g></g></g><g data-cell-id="qiHXacqECXXAYTJ9b62k-100"><g transform="translate(0.5,0.5)"><path d="M 531.46 443 Q 583 443 583 458 Q 583 473 539.58 473" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="stroke" style="stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/><path d="M 532.58 473 L 539.58 469.5 L 539.58 476.5 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="all" style="fill: light-dark(rgb(0, 0, 0), rgb(255, 255, 255)); stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/></g><g><g fill="#000000" font-family="Helvetica" text-anchor="middle" font-size="16px" style="fill: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"><text x="672" y="466.69">Check param signatures</text></g></g></g><g data-cell-id="qiHXacqECXXAYTJ9b62k-101"><g transform="translate(0.5,0.5)"><path d="M 531.46 521 Q 583 521 583 536 Q 583 551 539.58 551" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="stroke" style="stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/><path d="M 532.58 551 L 539.58 547.5 L 539.58 554.5 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="all" style="fill: light-dark(rgb(0, 0, 0), rgb(255, 255, 255)); stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/></g><g><g fill="#000000" font-family="Helvetica" text-anchor="middle" font-size="16px" style="fill: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"><text x="672" y="547.23">Verify agent permissions</text></g></g></g><g data-cell-id="qiHXacqECXXAYTJ9b62k-102"><g transform="translate(0.5,0.5)"><path d="M 531.46 599 Q 583 599 583 614 Q 583 629 539.58 629" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="stroke" style="stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/><path d="M 532.58 629 L 539.58 625.5 L 539.58 632.5 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="all" style="fill: light-dark(rgb(0, 0, 0), rgb(255, 255, 255)); stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/></g><g><g fill="#000000" font-family="Helvetica" text-anchor="middle" font-size="16px" style="fill: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"><text x="672" y="616.54">3. Request Credentials</text></g></g></g><g data-cell-id="qiHXacqECXXAYTJ9b62k-103"><g transform="translate(0.5,0.5)"><path d="M 531.46 677 Q 583 677 583 692 Q 583 707 539.58 707" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="stroke" style="stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/><path d="M 532.58 707 L 539.58 703.5 L 539.58 710.5 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="all" style="fill: light-dark(rgb(0, 0, 0), rgb(255, 255, 255)); stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/></g><g><g fill="#000000" font-family="Helvetica" text-anchor="middle" font-size="16px" style="fill: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"><text x="692" y="697.08">4. Log Request (audit trail)</text></g></g></g><g data-cell-id="qiHXacqECXXAYTJ9b62k-104"><g transform="translate(0.5,0.5)"><path d="M 531.46 755 L 706 755 L 778.38 755" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="stroke" style="stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/><path d="M 785.38 755 L 778.38 758.5 L 778.38 751.5 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="all" style="fill: light-dark(rgb(0, 0, 0), rgb(255, 255, 255)); stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/></g><g><g fill="#000000" font-family="Helvetica" text-anchor="middle" font-size="16px" style="fill: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"><text x="659.15" y="750">5. Pass to RPA (if all checks passed)</text></g></g></g><g data-cell-id="qiHXacqECXXAYTJ9b62k-105"><g transform="translate(0.5,0.5)"><path d="M 785.5 782 Q 914 782 914 797 Q 914 812 793.62 812" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="stroke" style="stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/><path d="M 786.62 812 L 793.62 808.5 L 793.62 815.5 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="all" style="fill: light-dark(rgb(0, 0, 0), rgb(255, 255, 255)); stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/></g><g><g fill="#000000" font-family="Helvetica" font-size="16px" style="fill: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"><text x="934" y="768.92">6. EXECUTE</text><text x="934" y="787.92">Check URL again (defense in depth)</text><text x="934" y="806.92">Sanitize input</text><text x="934" y="825.92">Prevent code injection</text></g></g></g><g data-cell-id="qiHXacqECXXAYTJ9b62k-106"><g transform="translate(0.5,0.5)"><path d="M 785.96 896 L 1132 896 L 1225.88 896" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="stroke" style="stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/><path d="M 1232.88 896 L 1225.88 899.5 L 1225.88 892.5 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="all" style="fill: light-dark(rgb(0, 0, 0), rgb(255, 255, 255)); stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/></g><g><g fill="#000000" font-family="Helvetica" text-anchor="middle" font-size="16px" style="fill: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"><text x="1010.58" y="872">7. Make Request</text><text x="1010.58" y="891">POST /api/action (TLS encrypted)</text></g></g></g><g data-cell-id="qiHXacqECXXAYTJ9b62k-107"><g transform="translate(0.5,0.5)"><path d="M 1233.46 933 Q 1282 933 1292 953.5 Q 1302 974 1241.58 974" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="stroke" style="stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/><path d="M 1234.58 974 L 1241.58 970.5 L 1241.58 977.5 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="all" style="fill: light-dark(rgb(0, 0, 0), rgb(255, 255, 255)); stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/></g><g><g fill="#000000" font-family="Helvetica" text-anchor="middle" font-size="16px" style="fill: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"><text x="1222.46" y="957">Process Action</text></g></g></g><g data-cell-id="qiHXacqECXXAYTJ9b62k-108"><g transform="translate(0.5,0.5)"><path d="M 1234 1027 L 1135 1027 L 793.62 1027" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="stroke" style="stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/><path d="M 786.62 1027 L 793.62 1023.5 L 793.62 1030.5 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="all" style="fill: light-dark(rgb(0, 0, 0), rgb(255, 255, 255)); stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/></g><g><g fill="#000000" font-family="Helvetica" text-anchor="middle" font-size="16px" style="fill: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"><text x="981.69" y="984">8. Response</text><text x="981.69" y="1003">{ success: true, data: {...} }</text></g></g></g><g data-cell-id="qiHXacqECXXAYTJ9b62k-109"><g transform="translate(0.5,0.5)"><path d="M 792 1063 L 539.58 1062.85" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="stroke" style="stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/><path d="M 532.58 1062.85 L 539.58 1059.35 L 539.58 1066.35 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="all" style="fill: light-dark(rgb(0, 0, 0), rgb(255, 255, 255)); stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/></g><g><g fill="#000000" font-family="Helvetica" text-anchor="middle" font-size="16px" style="fill: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"><text x="661.38" y="1057.85">10. Log Response (audit trail)</text></g></g></g><g data-cell-id="qiHXacqECXXAYTJ9b62k-110"><g transform="translate(0.5,0.5)"><path d="M 532 1092 L 293.95 1092.07" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="stroke" style="stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/><path d="M 286.95 1092.08 L 293.95 1088.57 L 293.95 1095.57 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="all" style="fill: light-dark(rgb(0, 0, 0), rgb(255, 255, 255)); stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/></g><g><g fill="#000000" font-family="Helvetica" text-anchor="middle" font-size="16px" style="fill: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"><text x="402.31" y="1046.08">11. Return Result</text><text x="402.31" y="1065.08">{ success: true, data: {...}, executionId }</text></g></g></g><g data-cell-id="qiHXacqECXXAYTJ9b62k-111"><g transform="translate(0.5,0.5)"><path d="M 532 1151 L 421 1151 L 294.08 1151" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="stroke" style="stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/><path d="M 287.08 1151 L 294.08 1147.5 L 294.08 1154.5 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="all" style="fill: light-dark(rgb(0, 0, 0), rgb(255, 255, 255)); stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/></g><g><g fill="#000000" font-family="Helvetica" text-anchor="middle" font-size="16px" style="fill: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"><text x="408.92" y="1146">12. Continue Flow</text></g></g></g><g data-cell-id="qiHXacqECXXAYTJ9b62k-114"><g transform="translate(0.5,0.5)"><path d="M 290 129 L 422 129 L 527.88 129" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="stroke" style="stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/><path d="M 534.88 129 L 527.88 132.5 L 527.88 125.5 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="all" style="fill: light-dark(rgb(0, 0, 0), rgb(255, 255, 255)); stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/></g><g><g fill="#000000" font-family="Helvetica" text-anchor="middle" font-size="16px" style="fill: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"><text x="413.08" y="124">1. EXECUTE RPA ACTION</text></g></g></g><g data-cell-id="qiHXacqECXXAYTJ9b62k-117"><g transform="translate(0.5,0.5)"><path d="M 75 100 L 187 100 L 278.38 100" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="stroke" style="stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/><path d="M 285.38 100 L 278.38 103.5 L 278.38 96.5 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="all" style="fill: light-dark(rgb(0, 0, 0), rgb(255, 255, 255)); stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/></g><g><g fill="#000000" font-family="Helvetica" text-anchor="middle" font-size="16px" style="fill: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"><text x="181.15" y="95">trigger</text></g></g></g><g data-cell-id="qiHXacqECXXAYTJ9b62k-254"><g transform="translate(0.5,0.5)"><rect x="932" y="1040" width="200" height="80" fill="none" stroke="none" pointer-events="all"/></g><g><g><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe flex-start; justify-content: unsafe flex-start; width: 198px; height: 1px; padding-top: 1047px; margin-left: 934px;"><div style="box-sizing: border-box; font-size: 0; text-align: left; color: #000000; "><div style="display: inline-block; font-size: 16px; font-family: Helvetica; color: light-dark(#000000, #ffffff); line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; "><span style="color: light-dark(rgb(0, 0, 0), rgb(237, 237, 237)); font-family: Helvetica; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: center; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; white-space: nowrap; text-decoration-thickness: initial; text-decoration-style: initial; text-decoration-color: initial; float: none; display: inline !important;">9. SANITIZE Response</span><br style="forced-color-adjust: none; padding: 0px; margin: 0px; color: light-dark(rgb(0, 0, 0), rgb(237, 237, 237)); font-family: Helvetica; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: center; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; white-space: nowrap; text-decoration-thickness: initial; text-decoration-style: initial; text-decoration-color: initial;" /><span style="color: light-dark(rgb(0, 0, 0), rgb(237, 237, 237)); font-family: Helvetica; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: center; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; white-space: nowrap; text-decoration-thickness: initial; text-decoration-style: initial; text-decoration-color: initial; float: none; display: inline !important;"> Remove secrets</span><br style="forced-color-adjust: none; padding: 0px; margin: 0px; color: light-dark(rgb(0, 0, 0), rgb(237, 237, 237)); font-family: Helvetica; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: center; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; white-space: nowrap; text-decoration-thickness: initial; text-decoration-style: initial; text-decoration-color: initial;" /><span style="color: light-dark(rgb(0, 0, 0), rgb(237, 237, 237)); font-family: Helvetica; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: center; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; white-space: nowrap; text-decoration-thickness: initial; text-decoration-style: initial; text-decoration-color: initial; float: none; display: inline !important;">Validate format</span></div></div></div></foreignObject><text x="934" y="1063" fill="light-dark(#000000, #ffffff)" font-family="Helvetica" font-size="16px">9. SANITIZE Response...</text></switch></g></g></g></g></g></g><switch><g requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"/><a transform="translate(0,-5)" xlink:href="https://www.drawio.com/doc/faq/svg-export-text-problems" target="_blank"><text text-anchor="middle" font-size="10px" x="50%" y="100%">Text is not SVG - cannot display</text></a></switch></svg>
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
|
2
|
+
<!-- Do not edit this file with editors other than draw.io -->
|
|
3
|
+
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
|
|
4
|
+
<svg xmlns="http://www.w3.org/2000/svg" style="background: transparent; background-color: transparent; color-scheme: light dark;" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" width="501px" height="722px" viewBox="0 0 501 722" content="<mxfile host="app.diagrams.net" agent="Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/143.0.0.0 Safari/537.36" version="29.2.7"> <diagram name="Architecture Overview" id="lUb2Yy0VcGrDcHUANlMM"> <mxGraphModel dx="576" dy="683" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="850" pageHeight="1100" math="0" shadow="0"> <root> <mxCell id="0" /> <mxCell id="1" parent="0" /> <mxCell id="S4bgjokdCwapD7wrW9yR-26" parent="1" style="swimlane;whiteSpace=wrap;html=1;fillColor=#f5f5f5;strokeColor=#333333;fontSize=16;fontStyle=1;labelBackgroundColor=none;" value="CUSTOMER ENVIRONMENT" vertex="1"> <mxGeometry height="200" width="500" x="1280" y="329" as="geometry" /> </mxCell> <mxCell id="S4bgjokdCwapD7wrW9yR-27" parent="S4bgjokdCwapD7wrW9yR-26" style="swimlane;whiteSpace=wrap;html=1;fillColor=#ffffff;strokeColor=#666666;fontSize=16;fontStyle=1;labelBackgroundColor=none;" value="Backend/Backoffice Site (Customer&#39;s Private Network)" vertex="1"> <mxGeometry height="100" width="460" x="20" y="54" as="geometry" /> </mxCell> <mxCell id="S4bgjokdCwapD7wrW9yR-28" parent="S4bgjokdCwapD7wrW9yR-27" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#e6e6e6;strokeColor=#666666;fontSize=16;labelBackgroundColor=none;" value="Internal APIs" vertex="1"> <mxGeometry height="30" width="130" x="18" y="40" as="geometry" /> </mxCell> <mxCell id="S4bgjokdCwapD7wrW9yR-29" parent="S4bgjokdCwapD7wrW9yR-27" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#e6e6e6;strokeColor=#666666;fontSize=16;labelBackgroundColor=none;" value="Business Systems" vertex="1"> <mxGeometry height="30" width="140" x="160" y="40" as="geometry" /> </mxCell> <mxCell id="S4bgjokdCwapD7wrW9yR-30" parent="S4bgjokdCwapD7wrW9yR-27" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#e6e6e6;strokeColor=#666666;fontSize=16;labelBackgroundColor=none;" value="Databases" vertex="1"> <mxGeometry height="30" width="130" x="313" y="40" as="geometry" /> </mxCell> <mxCell id="S4bgjokdCwapD7wrW9yR-31" parent="S4bgjokdCwapD7wrW9yR-26" style="text;html=1;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;fontSize=16;fontStyle=1;labelBackgroundColor=none;" value="RPA Access (IP Whitelisted)" vertex="1"> <mxGeometry height="20" width="234" x="143" y="168" as="geometry" /> </mxCell> <mxCell id="S4bgjokdCwapD7wrW9yR-51" edge="1" parent="1" source="S4bgjokdCwapD7wrW9yR-32" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=0;exitDx=0;exitDy=0;entryX=0.5;entryY=1;entryDx=0;entryDy=0;fontSize=16;labelBackgroundColor=none;" target="S4bgjokdCwapD7wrW9yR-26"> <mxGeometry relative="1" as="geometry" /> </mxCell> <mxCell id="S4bgjokdCwapD7wrW9yR-32" parent="1" style="text;html=1;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;fontSize=16;fontStyle=1;labelBackgroundColor=none;" value="INTERNET BOUNDARY" vertex="1"> <mxGeometry height="30" width="150" x="1455" y="556" as="geometry" /> </mxCell> <mxCell id="S4bgjokdCwapD7wrW9yR-50" edge="1" parent="1" source="S4bgjokdCwapD7wrW9yR-34" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=0;exitDx=0;exitDy=0;entryX=0.5;entryY=1;entryDx=0;entryDy=0;fontSize=16;labelBackgroundColor=none;" target="S4bgjokdCwapD7wrW9yR-32"> <mxGeometry relative="1" as="geometry" /> </mxCell> <mxCell id="S4bgjokdCwapD7wrW9yR-34" parent="1" style="swimlane;whiteSpace=wrap;html=1;fillColor=#f5f5f5;strokeColor=#333333;fontSize=16;fontStyle=1;labelBackgroundColor=none;" value="MINDED INFRASTRUCTURE (K8S)" vertex="1"> <mxGeometry height="440" width="500" x="1280" y="610" as="geometry" /> </mxCell> <mxCell id="S4bgjokdCwapD7wrW9yR-35" parent="S4bgjokdCwapD7wrW9yR-34" style="swimlane;whiteSpace=wrap;html=1;fillColor=#ffffff;strokeColor=#666666;fontSize=16;fontStyle=1;labelBackgroundColor=none;" value="VPC (ISOLATED - OUTBOUND ONLY)" vertex="1"> <mxGeometry height="260" width="460" x="20" y="40" as="geometry" /> </mxCell> <mxCell id="S4bgjokdCwapD7wrW9yR-36" parent="S4bgjokdCwapD7wrW9yR-35" style="swimlane;whiteSpace=wrap;html=1;fillColor=#ffffff;strokeColor=#666666;fontSize=16;fontStyle=1;labelBackgroundColor=none;" value="K8s Pod - Agent Instance" vertex="1"> <mxGeometry height="210" width="420" x="20" y="40" as="geometry" /> </mxCell> <mxCell id="S4bgjokdCwapD7wrW9yR-37" parent="S4bgjokdCwapD7wrW9yR-36" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#dae8fc;strokeColor=#6c8ebf;fontSize=16;labelBackgroundColor=none;" value="Agent Runtime" vertex="1"> <mxGeometry height="40" width="100" x="40" y="45" as="geometry" /> </mxCell> <mxCell id="S4bgjokdCwapD7wrW9yR-38" parent="S4bgjokdCwapD7wrW9yR-36" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#dae8fc;strokeColor=#6c8ebf;fontSize=16;labelBackgroundColor=none;" value="RPA Node" vertex="1"> <mxGeometry height="40" width="100" x="160" y="45" as="geometry" /> </mxCell> <mxCell id="S4bgjokdCwapD7wrW9yR-39" parent="S4bgjokdCwapD7wrW9yR-36" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#dae8fc;strokeColor=#6c8ebf;fontSize=16;labelBackgroundColor=none;" value="Security Monitor" vertex="1"> <mxGeometry height="40" width="100" x="280" y="45" as="geometry" /> </mxCell> <mxCell id="S4bgjokdCwapD7wrW9yR-40" edge="1" parent="S4bgjokdCwapD7wrW9yR-36" style="endArrow=classic;html=1;strokeWidth=2;strokeColor=#666666;fontSize=16;labelBackgroundColor=none;" value=""> <mxGeometry height="50" relative="1" width="50" as="geometry"> <mxPoint x="140" y="65" as="sourcePoint" /> <mxPoint x="160" y="65" as="targetPoint" /> </mxGeometry> </mxCell> <mxCell id="S4bgjokdCwapD7wrW9yR-41" edge="1" parent="S4bgjokdCwapD7wrW9yR-36" style="endArrow=classic;html=1;strokeWidth=2;strokeColor=#666666;fontSize=16;labelBackgroundColor=none;" value=""> <mxGeometry height="50" relative="1" width="50" as="geometry"> <mxPoint x="260" y="65" as="sourcePoint" /> <mxPoint x="280" y="65" as="targetPoint" /> </mxGeometry> </mxCell> <mxCell id="S4bgjokdCwapD7wrW9yR-42" parent="S4bgjokdCwapD7wrW9yR-36" style="text;html=1;strokeColor=none;fillColor=none;align=left;verticalAlign=top;whiteSpace=wrap;rounded=0;fontSize=16;labelBackgroundColor=none;" value="&lt;ul style=&quot;padding-left: 0px;&quot;&gt;&lt;li&gt;No Inbound Traffic&lt;/li&gt;&lt;li&gt;Outbound to Whitelisted IPs Only&lt;/li&gt;&lt;li&gt;Encrypted Credentials (Runtime Decrypt)&lt;/li&gt;&lt;li&gt;URL/Action Restrictions&lt;/li&gt;&lt;li&gt;Audit Logging&lt;/li&gt;&lt;/ul&gt;" vertex="1"> <mxGeometry height="50" width="340" x="40" y="85" as="geometry" /> </mxCell> <mxCell id="S4bgjokdCwapD7wrW9yR-43" parent="S4bgjokdCwapD7wrW9yR-34" style="swimlane;whiteSpace=wrap;html=1;fillColor=#ffffff;strokeColor=#666666;fontSize=16;fontStyle=1;labelBackgroundColor=none;" value="MINDED BACKEND (Orchestrator)" vertex="1"> <mxGeometry height="90" width="460" x="20" y="320" as="geometry" /> </mxCell> <mxCell id="S4bgjokdCwapD7wrW9yR-44" parent="S4bgjokdCwapD7wrW9yR-43" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#e6e6e6;strokeColor=#666666;fontSize=16;labelBackgroundColor=none;" value="Credential Management" vertex="1"> <mxGeometry height="40" width="140" x="20" y="40" as="geometry" /> </mxCell> <mxCell id="S4bgjokdCwapD7wrW9yR-45" parent="S4bgjokdCwapD7wrW9yR-43" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#e6e6e6;strokeColor=#666666;fontSize=16;labelBackgroundColor=none;" value="Agent Lifecycle" vertex="1"> <mxGeometry height="40" width="135" x="165" y="40" as="geometry" /> </mxCell> <mxCell id="S4bgjokdCwapD7wrW9yR-46" parent="S4bgjokdCwapD7wrW9yR-43" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#e6e6e6;strokeColor=#666666;fontSize=16;labelBackgroundColor=none;" value="Audit Logs" vertex="1"> <mxGeometry height="40" width="130" x="310" y="40" as="geometry" /> </mxCell> </root> </mxGraphModel> </diagram> </mxfile> "><defs/><g><g data-cell-id="0"><g data-cell-id="1"><g data-cell-id="S4bgjokdCwapD7wrW9yR-26"><g transform="translate(0.5,0.5)"><path d="M 0 23 L 0 0 L 500 0 L 500 23" fill="#f5f5f5" stroke="#333333" stroke-miterlimit="10" pointer-events="all" style="fill: light-dark(rgb(245, 245, 245), rgb(26, 26, 26)); stroke: light-dark(rgb(51, 51, 51), rgb(193, 193, 193));"/><path d="M 0 23 L 0 200 L 500 200 L 500 23" fill="none" stroke="#333333" stroke-miterlimit="10" pointer-events="none" style="stroke: light-dark(rgb(51, 51, 51), rgb(193, 193, 193));"/><path d="M 0 23 L 500 23" fill="none" stroke="#333333" stroke-miterlimit="10" pointer-events="none" style="stroke: light-dark(rgb(51, 51, 51), rgb(193, 193, 193));"/></g><g><g><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 498px; height: 1px; padding-top: 12px; margin-left: 1px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; color: #000000; "><div style="display: inline-block; font-size: 16px; font-family: Helvetica; color: light-dark(#000000, #ffffff); line-height: 1.2; pointer-events: all; font-weight: bold; white-space: normal; word-wrap: normal; ">CUSTOMER ENVIRONMENT</div></div></div></foreignObject><text x="250" y="16" fill="light-dark(#000000, #ffffff)" font-family="Helvetica" font-size="16px" text-anchor="middle" font-weight="bold">CUSTOMER ENVIRONMENT</text></switch></g></g><g data-cell-id="S4bgjokdCwapD7wrW9yR-27"><g transform="translate(0.5,0.5)"><path d="M 20 77 L 20 54 L 480 54 L 480 77" fill="#ffffff" stroke="#666666" stroke-miterlimit="10" pointer-events="all" style="fill: light-dark(rgb(255, 255, 255), rgb(18, 18, 18)); stroke: light-dark(rgb(102, 102, 102), rgb(149, 149, 149));"/><path d="M 20 77 L 20 154 L 480 154 L 480 77" fill="none" stroke="#666666" stroke-miterlimit="10" pointer-events="none" style="stroke: light-dark(rgb(102, 102, 102), rgb(149, 149, 149));"/><path d="M 20 77 L 480 77" fill="none" stroke="#666666" stroke-miterlimit="10" pointer-events="none" style="stroke: light-dark(rgb(102, 102, 102), rgb(149, 149, 149));"/></g><g><g><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 458px; height: 1px; padding-top: 66px; margin-left: 21px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; color: #000000; "><div style="display: inline-block; font-size: 16px; font-family: Helvetica; color: light-dark(#000000, #ffffff); line-height: 1.2; pointer-events: all; font-weight: bold; white-space: normal; word-wrap: normal; ">Backend/Backoffice Site (Customer's Private Network)</div></div></div></foreignObject><text x="250" y="70" fill="light-dark(#000000, #ffffff)" font-family="Helvetica" font-size="16px" text-anchor="middle" font-weight="bold">Backend/Backoffice Site (Customer's Private Network)</text></switch></g></g><g data-cell-id="S4bgjokdCwapD7wrW9yR-28"><g transform="translate(0.5,0.5)"><rect x="38" y="94" width="130" height="30" fill="#e6e6e6" stroke="#666666" pointer-events="all" style="fill: light-dark(rgb(230, 230, 230), rgb(39, 39, 39)); stroke: light-dark(rgb(102, 102, 102), rgb(149, 149, 149));"/></g><g><g><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 128px; height: 1px; padding-top: 109px; margin-left: 39px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; color: #000000; "><div style="display: inline-block; font-size: 16px; font-family: Helvetica; color: light-dark(#000000, #ffffff); line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">Internal APIs</div></div></div></foreignObject><text x="103" y="114" fill="light-dark(#000000, #ffffff)" font-family="Helvetica" font-size="16px" text-anchor="middle">Internal APIs</text></switch></g></g></g><g data-cell-id="S4bgjokdCwapD7wrW9yR-29"><g transform="translate(0.5,0.5)"><rect x="180" y="94" width="140" height="30" fill="#e6e6e6" stroke="#666666" pointer-events="all" style="fill: light-dark(rgb(230, 230, 230), rgb(39, 39, 39)); stroke: light-dark(rgb(102, 102, 102), rgb(149, 149, 149));"/></g><g><g><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 138px; height: 1px; padding-top: 109px; margin-left: 181px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; color: #000000; "><div style="display: inline-block; font-size: 16px; font-family: Helvetica; color: light-dark(#000000, #ffffff); line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">Business Systems</div></div></div></foreignObject><text x="250" y="114" fill="light-dark(#000000, #ffffff)" font-family="Helvetica" font-size="16px" text-anchor="middle">Business Systems</text></switch></g></g></g><g data-cell-id="S4bgjokdCwapD7wrW9yR-30"><g transform="translate(0.5,0.5)"><rect x="333" y="94" width="130" height="30" fill="#e6e6e6" stroke="#666666" pointer-events="all" style="fill: light-dark(rgb(230, 230, 230), rgb(39, 39, 39)); stroke: light-dark(rgb(102, 102, 102), rgb(149, 149, 149));"/></g><g><g><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 128px; height: 1px; padding-top: 109px; margin-left: 334px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; color: #000000; "><div style="display: inline-block; font-size: 16px; font-family: Helvetica; color: light-dark(#000000, #ffffff); line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">Databases</div></div></div></foreignObject><text x="398" y="114" fill="light-dark(#000000, #ffffff)" font-family="Helvetica" font-size="16px" text-anchor="middle">Databases</text></switch></g></g></g></g><g data-cell-id="S4bgjokdCwapD7wrW9yR-31"><g transform="translate(0.5,0.5)"><rect x="143" y="168" width="234" height="20" fill="none" stroke="none" pointer-events="all"/></g><g><g><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 232px; height: 1px; padding-top: 178px; margin-left: 144px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; color: #000000; "><div style="display: inline-block; font-size: 16px; font-family: Helvetica; color: light-dark(#000000, #ffffff); line-height: 1.2; pointer-events: all; font-weight: bold; white-space: normal; word-wrap: normal; ">RPA Access (IP Whitelisted)</div></div></div></foreignObject><text x="260" y="183" fill="light-dark(#000000, #ffffff)" font-family="Helvetica" font-size="16px" text-anchor="middle" font-weight="bold">RPA Access (IP Whitelisted)</text></switch></g></g></g></g><g data-cell-id="S4bgjokdCwapD7wrW9yR-51"><g transform="translate(0.5,0.5)"><path d="M 250 227 L 250 206.37" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="stroke" style="stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/><path d="M 250 201.12 L 253.5 208.12 L 250 206.37 L 246.5 208.12 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="all" style="fill: light-dark(rgb(0, 0, 0), rgb(255, 255, 255)); stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/></g></g><g data-cell-id="S4bgjokdCwapD7wrW9yR-32"><g transform="translate(0.5,0.5)"><rect x="175" y="227" width="150" height="30" fill="none" stroke="none" pointer-events="all"/></g><g><g><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 148px; height: 1px; padding-top: 242px; margin-left: 176px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; color: #000000; "><div style="display: inline-block; font-size: 16px; font-family: Helvetica; color: light-dark(#000000, #ffffff); line-height: 1.2; pointer-events: all; font-weight: bold; white-space: normal; word-wrap: normal; ">INTERNET BOUNDARY</div></div></div></foreignObject><text x="250" y="247" fill="light-dark(#000000, #ffffff)" font-family="Helvetica" font-size="16px" text-anchor="middle" font-weight="bold">INTERNET BOUNDARY</text></switch></g></g></g><g data-cell-id="S4bgjokdCwapD7wrW9yR-50"><g transform="translate(0.5,0.5)"><path d="M 250 281 L 250 263.37" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="stroke" style="stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/><path d="M 250 258.12 L 253.5 265.12 L 250 263.37 L 246.5 265.12 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="all" style="fill: light-dark(rgb(0, 0, 0), rgb(255, 255, 255)); stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/></g></g><g data-cell-id="S4bgjokdCwapD7wrW9yR-34"><g transform="translate(0.5,0.5)"><path d="M 0 304 L 0 281 L 500 281 L 500 304" fill="#f5f5f5" stroke="#333333" stroke-miterlimit="10" pointer-events="all" style="fill: light-dark(rgb(245, 245, 245), rgb(26, 26, 26)); stroke: light-dark(rgb(51, 51, 51), rgb(193, 193, 193));"/><path d="M 0 304 L 0 721 L 500 721 L 500 304" fill="none" stroke="#333333" stroke-miterlimit="10" pointer-events="none" style="stroke: light-dark(rgb(51, 51, 51), rgb(193, 193, 193));"/><path d="M 0 304 L 500 304" fill="none" stroke="#333333" stroke-miterlimit="10" pointer-events="none" style="stroke: light-dark(rgb(51, 51, 51), rgb(193, 193, 193));"/></g><g><g><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 498px; height: 1px; padding-top: 293px; margin-left: 1px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; color: #000000; "><div style="display: inline-block; font-size: 16px; font-family: Helvetica; color: light-dark(#000000, #ffffff); line-height: 1.2; pointer-events: all; font-weight: bold; white-space: normal; word-wrap: normal; ">MINDED INFRASTRUCTURE (K8S)</div></div></div></foreignObject><text x="250" y="297" fill="light-dark(#000000, #ffffff)" font-family="Helvetica" font-size="16px" text-anchor="middle" font-weight="bold">MINDED INFRASTRUCTURE (K8S)</text></switch></g></g><g data-cell-id="S4bgjokdCwapD7wrW9yR-35"><g transform="translate(0.5,0.5)"><path d="M 20 344 L 20 321 L 480 321 L 480 344" fill="#ffffff" stroke="#666666" stroke-miterlimit="10" pointer-events="all" style="fill: light-dark(rgb(255, 255, 255), rgb(18, 18, 18)); stroke: light-dark(rgb(102, 102, 102), rgb(149, 149, 149));"/><path d="M 20 344 L 20 581 L 480 581 L 480 344" fill="none" stroke="#666666" stroke-miterlimit="10" pointer-events="none" style="stroke: light-dark(rgb(102, 102, 102), rgb(149, 149, 149));"/><path d="M 20 344 L 480 344" fill="none" stroke="#666666" stroke-miterlimit="10" pointer-events="none" style="stroke: light-dark(rgb(102, 102, 102), rgb(149, 149, 149));"/></g><g><g><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 458px; height: 1px; padding-top: 333px; margin-left: 21px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; color: #000000; "><div style="display: inline-block; font-size: 16px; font-family: Helvetica; color: light-dark(#000000, #ffffff); line-height: 1.2; pointer-events: all; font-weight: bold; white-space: normal; word-wrap: normal; ">VPC (ISOLATED - OUTBOUND ONLY)</div></div></div></foreignObject><text x="250" y="337" fill="light-dark(#000000, #ffffff)" font-family="Helvetica" font-size="16px" text-anchor="middle" font-weight="bold">VPC (ISOLATED - OUTBOUND ONLY)</text></switch></g></g><g data-cell-id="S4bgjokdCwapD7wrW9yR-36"><g transform="translate(0.5,0.5)"><path d="M 40 384 L 40 361 L 460 361 L 460 384" fill="#ffffff" stroke="#666666" stroke-miterlimit="10" pointer-events="all" style="fill: light-dark(rgb(255, 255, 255), rgb(18, 18, 18)); stroke: light-dark(rgb(102, 102, 102), rgb(149, 149, 149));"/><path d="M 40 384 L 40 571 L 460 571 L 460 384" fill="none" stroke="#666666" stroke-miterlimit="10" pointer-events="none" style="stroke: light-dark(rgb(102, 102, 102), rgb(149, 149, 149));"/><path d="M 40 384 L 460 384" fill="none" stroke="#666666" stroke-miterlimit="10" pointer-events="none" style="stroke: light-dark(rgb(102, 102, 102), rgb(149, 149, 149));"/></g><g><g><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 418px; height: 1px; padding-top: 373px; margin-left: 41px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; color: #000000; "><div style="display: inline-block; font-size: 16px; font-family: Helvetica; color: light-dark(#000000, #ffffff); line-height: 1.2; pointer-events: all; font-weight: bold; white-space: normal; word-wrap: normal; ">K8s Pod - Agent Instance</div></div></div></foreignObject><text x="250" y="377" fill="light-dark(#000000, #ffffff)" font-family="Helvetica" font-size="16px" text-anchor="middle" font-weight="bold">K8s Pod - Agent Instance</text></switch></g></g><g data-cell-id="S4bgjokdCwapD7wrW9yR-37"><g transform="translate(0.5,0.5)"><rect x="80" y="406" width="100" height="40" fill="#dae8fc" stroke="#6c8ebf" pointer-events="all" style="fill: light-dark(rgb(218, 232, 252), rgb(29, 41, 59)); stroke: light-dark(rgb(108, 142, 191), rgb(92, 121, 163));"/></g><g><g><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 98px; height: 1px; padding-top: 426px; margin-left: 81px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; color: #000000; "><div style="display: inline-block; font-size: 16px; font-family: Helvetica; color: light-dark(#000000, #ffffff); line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">Agent Runtime</div></div></div></foreignObject><text x="130" y="431" fill="light-dark(#000000, #ffffff)" font-family="Helvetica" font-size="16px" text-anchor="middle">Agent Runtime</text></switch></g></g></g><g data-cell-id="S4bgjokdCwapD7wrW9yR-38"><g transform="translate(0.5,0.5)"><rect x="200" y="406" width="100" height="40" fill="#dae8fc" stroke="#6c8ebf" pointer-events="all" style="fill: light-dark(rgb(218, 232, 252), rgb(29, 41, 59)); stroke: light-dark(rgb(108, 142, 191), rgb(92, 121, 163));"/></g><g><g><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 98px; height: 1px; padding-top: 426px; margin-left: 201px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; color: #000000; "><div style="display: inline-block; font-size: 16px; font-family: Helvetica; color: light-dark(#000000, #ffffff); line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">RPA Node</div></div></div></foreignObject><text x="250" y="431" fill="light-dark(#000000, #ffffff)" font-family="Helvetica" font-size="16px" text-anchor="middle">RPA Node</text></switch></g></g></g><g data-cell-id="S4bgjokdCwapD7wrW9yR-39"><g transform="translate(0.5,0.5)"><rect x="320" y="406" width="100" height="40" fill="#dae8fc" stroke="#6c8ebf" pointer-events="all" style="fill: light-dark(rgb(218, 232, 252), rgb(29, 41, 59)); stroke: light-dark(rgb(108, 142, 191), rgb(92, 121, 163));"/></g><g><g><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 98px; height: 1px; padding-top: 426px; margin-left: 321px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; color: #000000; "><div style="display: inline-block; font-size: 16px; font-family: Helvetica; color: light-dark(#000000, #ffffff); line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">Security Monitor</div></div></div></foreignObject><text x="370" y="431" fill="light-dark(#000000, #ffffff)" font-family="Helvetica" font-size="16px" text-anchor="middle">Security Mon...</text></switch></g></g></g><g data-cell-id="S4bgjokdCwapD7wrW9yR-40"><g><path d="M 180 426 L 191.76 426" fill="none" stroke="#666666" stroke-width="2" stroke-miterlimit="10" pointer-events="stroke" style="stroke: light-dark(rgb(102, 102, 102), rgb(149, 149, 149));"/><path d="M 197.76 426 L 189.76 430 L 191.76 426 L 189.76 422 Z" fill="#666666" stroke="#666666" stroke-width="2" stroke-miterlimit="10" pointer-events="all" style="fill: light-dark(rgb(102, 102, 102), rgb(149, 149, 149)); stroke: light-dark(rgb(102, 102, 102), rgb(149, 149, 149));"/></g></g><g data-cell-id="S4bgjokdCwapD7wrW9yR-41"><g><path d="M 300 426 L 311.76 426" fill="none" stroke="#666666" stroke-width="2" stroke-miterlimit="10" pointer-events="stroke" style="stroke: light-dark(rgb(102, 102, 102), rgb(149, 149, 149));"/><path d="M 317.76 426 L 309.76 430 L 311.76 426 L 309.76 422 Z" fill="#666666" stroke="#666666" stroke-width="2" stroke-miterlimit="10" pointer-events="all" style="fill: light-dark(rgb(102, 102, 102), rgb(149, 149, 149)); stroke: light-dark(rgb(102, 102, 102), rgb(149, 149, 149));"/></g></g><g data-cell-id="S4bgjokdCwapD7wrW9yR-42"><g transform="translate(0.5,0.5)"><rect x="80" y="446" width="340" height="50" fill="none" stroke="none" pointer-events="all"/></g><g><g><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe flex-start; justify-content: unsafe flex-start; width: 338px; height: 1px; padding-top: 453px; margin-left: 82px;"><div style="box-sizing: border-box; font-size: 0; text-align: left; color: #000000; "><div style="display: inline-block; font-size: 16px; font-family: Helvetica; color: light-dark(#000000, #ffffff); line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; "><ul style="padding-left: 0px;"><li>No Inbound Traffic</li><li>Outbound to Whitelisted IPs Only</li><li>Encrypted Credentials (Runtime Decrypt)</li><li>URL/Action Restrictions</li><li>Audit Logging</li></ul></div></div></div></foreignObject><text x="82" y="469" fill="light-dark(#000000, #ffffff)" font-family="Helvetica" font-size="16px">No Inbound TrafficOutbound to Whitelisted...</text></switch></g></g></g></g></g><g data-cell-id="S4bgjokdCwapD7wrW9yR-43"><g transform="translate(0.5,0.5)"><path d="M 20 624 L 20 601 L 480 601 L 480 624" fill="#ffffff" stroke="#666666" stroke-miterlimit="10" pointer-events="all" style="fill: light-dark(rgb(255, 255, 255), rgb(18, 18, 18)); stroke: light-dark(rgb(102, 102, 102), rgb(149, 149, 149));"/><path d="M 20 624 L 20 691 L 480 691 L 480 624" fill="none" stroke="#666666" stroke-miterlimit="10" pointer-events="none" style="stroke: light-dark(rgb(102, 102, 102), rgb(149, 149, 149));"/><path d="M 20 624 L 480 624" fill="none" stroke="#666666" stroke-miterlimit="10" pointer-events="none" style="stroke: light-dark(rgb(102, 102, 102), rgb(149, 149, 149));"/></g><g><g><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 458px; height: 1px; padding-top: 613px; margin-left: 21px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; color: #000000; "><div style="display: inline-block; font-size: 16px; font-family: Helvetica; color: light-dark(#000000, #ffffff); line-height: 1.2; pointer-events: all; font-weight: bold; white-space: normal; word-wrap: normal; ">MINDED BACKEND (Orchestrator)</div></div></div></foreignObject><text x="250" y="617" fill="light-dark(#000000, #ffffff)" font-family="Helvetica" font-size="16px" text-anchor="middle" font-weight="bold">MINDED BACKEND (Orchestrator)</text></switch></g></g><g data-cell-id="S4bgjokdCwapD7wrW9yR-44"><g transform="translate(0.5,0.5)"><rect x="40" y="641" width="140" height="40" fill="#e6e6e6" stroke="#666666" pointer-events="all" style="fill: light-dark(rgb(230, 230, 230), rgb(39, 39, 39)); stroke: light-dark(rgb(102, 102, 102), rgb(149, 149, 149));"/></g><g><g><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 138px; height: 1px; padding-top: 661px; margin-left: 41px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; color: #000000; "><div style="display: inline-block; font-size: 16px; font-family: Helvetica; color: light-dark(#000000, #ffffff); line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">Credential Management</div></div></div></foreignObject><text x="110" y="666" fill="light-dark(#000000, #ffffff)" font-family="Helvetica" font-size="16px" text-anchor="middle">Credential Manage...</text></switch></g></g></g><g data-cell-id="S4bgjokdCwapD7wrW9yR-45"><g transform="translate(0.5,0.5)"><rect x="185" y="641" width="135" height="40" fill="#e6e6e6" stroke="#666666" pointer-events="all" style="fill: light-dark(rgb(230, 230, 230), rgb(39, 39, 39)); stroke: light-dark(rgb(102, 102, 102), rgb(149, 149, 149));"/></g><g><g><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 133px; height: 1px; padding-top: 661px; margin-left: 186px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; color: #000000; "><div style="display: inline-block; font-size: 16px; font-family: Helvetica; color: light-dark(#000000, #ffffff); line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">Agent Lifecycle</div></div></div></foreignObject><text x="253" y="666" fill="light-dark(#000000, #ffffff)" font-family="Helvetica" font-size="16px" text-anchor="middle">Agent Lifecycle</text></switch></g></g></g><g data-cell-id="S4bgjokdCwapD7wrW9yR-46"><g transform="translate(0.5,0.5)"><rect x="330" y="641" width="130" height="40" fill="#e6e6e6" stroke="#666666" pointer-events="all" style="fill: light-dark(rgb(230, 230, 230), rgb(39, 39, 39)); stroke: light-dark(rgb(102, 102, 102), rgb(149, 149, 149));"/></g><g><g><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 128px; height: 1px; padding-top: 661px; margin-left: 331px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; color: #000000; "><div style="display: inline-block; font-size: 16px; font-family: Helvetica; color: light-dark(#000000, #ffffff); line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">Audit Logs</div></div></div></foreignObject><text x="395" y="666" fill="light-dark(#000000, #ffffff)" font-family="Helvetica" font-size="16px" text-anchor="middle">Audit Logs</text></switch></g></g></g></g></g></g></g></g><switch><g requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"/><a transform="translate(0,-5)" xlink:href="https://www.drawio.com/doc/faq/svg-export-text-problems" target="_blank"><text text-anchor="middle" font-size="10px" x="50%" y="100%">Text is not SVG - cannot display</text></a></switch></svg>
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
|
2
|
+
<!-- Do not edit this file with editors other than draw.io -->
|
|
3
|
+
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
|
|
4
|
+
<svg xmlns="http://www.w3.org/2000/svg" style="background: transparent; background-color: transparent; color-scheme: light dark;" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" width="641px" height="681px" viewBox="0 0 641 681" content="<mxfile host="app.diagrams.net" agent="Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/143.0.0.0 Safari/537.36" version="29.2.7"> <diagram name="Architecture Overview" id="lUb2Yy0VcGrDcHUANlMM"> <mxGraphModel dx="576" dy="683" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="850" pageHeight="1100" math="0" shadow="0"> <root> <mxCell id="0" /> <mxCell id="1" parent="0" /> <mxCell id="qiHXacqECXXAYTJ9b62k-243" parent="1" style="rounded=0;whiteSpace=wrap;html=1;verticalAlign=top;align=center;spacingTop=10;fillColor=#f9f9f9;strokeColor=#333333;fontSize=16;labelBackgroundColor=none;" value="&lt;b&gt;MINDED INFRASTRUCTURE&lt;/b&gt;" vertex="1"> <mxGeometry height="680" width="640" x="1080" y="830" as="geometry" /> </mxCell> <mxCell id="qiHXacqECXXAYTJ9b62k-244" parent="1" style="rounded=0;whiteSpace=wrap;html=1;verticalAlign=top;align=left;spacingLeft=10;spacingTop=10;fillColor=#ffffff;strokeColor=#666666;fontSize=16;labelBackgroundColor=none;" value="&lt;b&gt;TENANT A (Customer A)&lt;/b&gt;" vertex="1"> <mxGeometry height="240" width="580" x="1110" y="880" as="geometry" /> </mxCell> <mxCell id="qiHXacqECXXAYTJ9b62k-245" parent="1" style="rounded=0;whiteSpace=wrap;html=1;align=left;spacingLeft=10;spacingTop=10;fillColor=#f5f5f5;fontSize=16;labelBackgroundColor=none;" value="&lt;b&gt;Namespace&lt;/b&gt;&lt;br&gt;tenant-a&lt;br&gt;&lt;br&gt;&lt;b&gt;Agent Pods:&lt;/b&gt;&lt;br&gt;- agent-a-1&lt;br&gt;- agent-a-2&lt;br&gt;&lt;br&gt;&lt;b&gt;Network:&lt;/b&gt;&lt;br&gt;- policy-a" vertex="1"> <mxGeometry height="190" width="220" x="1130" y="920" as="geometry" /> </mxCell> <mxCell id="qiHXacqECXXAYTJ9b62k-246" parent="1" style="rounded=0;whiteSpace=wrap;html=1;align=left;spacingLeft=10;spacingTop=10;fillColor=#f5f5f5;fontSize=16;labelBackgroundColor=none;" value="&lt;b&gt;Encryption&lt;/b&gt;&lt;br&gt;Key: key_a&lt;br&gt;&lt;br&gt;&lt;b&gt;Credentials DB:&lt;/b&gt;&lt;br&gt;- encrypted with key_a&lt;br&gt;- isolated schema&lt;br&gt;&lt;br&gt;&lt;b&gt;IP Whitelist:&lt;/b&gt;&lt;br&gt;- customer-a-ips.com" vertex="1"> <mxGeometry height="190" width="260" x="1410" y="920" as="geometry" /> </mxCell> <mxCell id="qiHXacqECXXAYTJ9b62k-247" connectable="0" parent="1" style="group;fontSize=16;labelBackgroundColor=none;" value="" vertex="1"> <mxGeometry height="40" width="580" x="1110" y="1140" as="geometry" /> </mxCell> <mxCell id="qiHXacqECXXAYTJ9b62k-248" edge="1" parent="qiHXacqECXXAYTJ9b62k-247" style="endArrow=none;html=1;strokeWidth=2;fontSize=16;labelBackgroundColor=none;" value=""> <mxGeometry height="50" relative="1" width="50" as="geometry"> <mxPoint y="10" as="sourcePoint" /> <mxPoint x="580" y="10" as="targetPoint" /> </mxGeometry> </mxCell> <mxCell id="qiHXacqECXXAYTJ9b62k-249" parent="qiHXacqECXXAYTJ9b62k-247" style="text;html=1;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;fontColor=#666666;fontSize=16;labelBackgroundColor=none;" value="&lt;b&gt;ISOLATION BOUNDARY&lt;/b&gt;" vertex="1"> <mxGeometry height="30" width="580" y="5" as="geometry" /> </mxCell> <mxCell id="qiHXacqECXXAYTJ9b62k-250" edge="1" parent="qiHXacqECXXAYTJ9b62k-247" style="endArrow=none;html=1;strokeWidth=2;fontSize=16;labelBackgroundColor=none;" value=""> <mxGeometry height="50" relative="1" width="50" as="geometry"> <mxPoint y="30" as="sourcePoint" /> <mxPoint x="580" y="30" as="targetPoint" /> </mxGeometry> </mxCell> <mxCell id="qiHXacqECXXAYTJ9b62k-251" parent="1" style="rounded=0;whiteSpace=wrap;html=1;verticalAlign=top;align=left;spacingLeft=10;spacingTop=10;fillColor=#ffffff;strokeColor=#666666;fontSize=16;labelBackgroundColor=none;" value="&lt;b&gt;TENANT B (Customer B)&lt;/b&gt;" vertex="1"> <mxGeometry height="240" width="580" x="1110" y="1200" as="geometry" /> </mxCell> <mxCell id="qiHXacqECXXAYTJ9b62k-252" parent="1" style="rounded=0;whiteSpace=wrap;html=1;align=left;spacingLeft=10;spacingTop=10;fillColor=#f5f5f5;fontSize=16;labelBackgroundColor=none;" value="&lt;b&gt;Namespace&lt;/b&gt;&lt;br&gt;tenant-b&lt;br&gt;&lt;br&gt;&lt;b&gt;Agent Pods:&lt;/b&gt;&lt;br&gt;- agent-b-1&lt;br&gt;- agent-b-2&lt;br&gt;&lt;br&gt;&lt;b&gt;Network:&lt;/b&gt;&lt;br&gt;- policy-b" vertex="1"> <mxGeometry height="190" width="220" x="1130" y="1240" as="geometry" /> </mxCell> <mxCell id="qiHXacqECXXAYTJ9b62k-253" parent="1" style="rounded=0;whiteSpace=wrap;html=1;align=left;spacingLeft=10;spacingTop=10;fillColor=#f5f5f5;fontSize=16;labelBackgroundColor=none;" value="&lt;b&gt;Encryption&lt;/b&gt;&lt;br&gt;Key: key_b&lt;br&gt;&lt;br&gt;&lt;b&gt;Credentials DB:&lt;/b&gt;&lt;br&gt;- encrypted with key_b&lt;br&gt;- isolated schema&lt;br&gt;&lt;br&gt;&lt;b&gt;IP Whitelist:&lt;/b&gt;&lt;br&gt;- customer-b-ips.net" vertex="1"> <mxGeometry height="190" width="260" x="1410" y="1240" as="geometry" /> </mxCell> </root> </mxGraphModel> </diagram> </mxfile> "><defs/><g><g data-cell-id="0"><g data-cell-id="1"><g data-cell-id="qiHXacqECXXAYTJ9b62k-243"><g transform="translate(0.5,0.5)"><rect x="0" y="0" width="640" height="680" fill="#f9f9f9" stroke="#333333" pointer-events="all" style="fill: light-dark(rgb(249, 249, 249), rgb(23, 23, 23)); stroke: light-dark(rgb(51, 51, 51), rgb(193, 193, 193));"/></g><g><g><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe flex-start; justify-content: unsafe center; width: 638px; height: 1px; padding-top: 17px; margin-left: 1px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; color: #000000; "><div style="display: inline-block; font-size: 16px; font-family: Helvetica; color: light-dark(#000000, #ffffff); line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; "><b>MINDED INFRASTRUCTURE</b></div></div></div></foreignObject><text x="320" y="33" fill="light-dark(#000000, #ffffff)" font-family="Helvetica" font-size="16px" text-anchor="middle">MINDED INFRASTRUCTURE</text></switch></g></g></g><g data-cell-id="qiHXacqECXXAYTJ9b62k-244"><g transform="translate(0.5,0.5)"><rect x="30" y="50" width="580" height="240" fill="#ffffff" stroke="#666666" pointer-events="all" style="fill: light-dark(rgb(255, 255, 255), rgb(18, 18, 18)); stroke: light-dark(rgb(102, 102, 102), rgb(149, 149, 149));"/></g><g><g><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe flex-start; justify-content: unsafe flex-start; width: 568px; height: 1px; padding-top: 67px; margin-left: 42px;"><div style="box-sizing: border-box; font-size: 0; text-align: left; color: #000000; "><div style="display: inline-block; font-size: 16px; font-family: Helvetica; color: light-dark(#000000, #ffffff); line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; "><b>TENANT A (Customer A)</b></div></div></div></foreignObject><text x="42" y="83" fill="light-dark(#000000, #ffffff)" font-family="Helvetica" font-size="16px">TENANT A (Customer A)</text></switch></g></g></g><g data-cell-id="qiHXacqECXXAYTJ9b62k-245"><g transform="translate(0.5,0.5)"><rect x="50" y="90" width="220" height="190" fill="#f5f5f5" stroke="#000000" pointer-events="all" style="fill: light-dark(rgb(245, 245, 245), rgb(26, 26, 26)); stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/></g><g><g><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe flex-start; width: 208px; height: 1px; padding-top: 190px; margin-left: 62px;"><div style="box-sizing: border-box; font-size: 0; text-align: left; color: #000000; "><div style="display: inline-block; font-size: 16px; font-family: Helvetica; color: light-dark(#000000, #ffffff); line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; "><b>Namespace</b><br />tenant-a<br /><br /><b>Agent Pods:</b><br />- agent-a-1<br />- agent-a-2<br /><br /><b>Network:</b><br />- policy-a</div></div></div></foreignObject><text x="62" y="195" fill="light-dark(#000000, #ffffff)" font-family="Helvetica" font-size="16px">Namespace...</text></switch></g></g></g><g data-cell-id="qiHXacqECXXAYTJ9b62k-246"><g transform="translate(0.5,0.5)"><rect x="330" y="90" width="260" height="190" fill="#f5f5f5" stroke="#000000" pointer-events="all" style="fill: light-dark(rgb(245, 245, 245), rgb(26, 26, 26)); stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/></g><g><g><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe flex-start; width: 248px; height: 1px; padding-top: 190px; margin-left: 342px;"><div style="box-sizing: border-box; font-size: 0; text-align: left; color: #000000; "><div style="display: inline-block; font-size: 16px; font-family: Helvetica; color: light-dark(#000000, #ffffff); line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; "><b>Encryption</b><br />Key: key_a<br /><br /><b>Credentials DB:</b><br />- encrypted with key_a<br />- isolated schema<br /><br /><b>IP Whitelist:</b><br />- customer-a-ips.com</div></div></div></foreignObject><text x="342" y="195" fill="light-dark(#000000, #ffffff)" font-family="Helvetica" font-size="16px">Encryption...</text></switch></g></g></g><g data-cell-id="qiHXacqECXXAYTJ9b62k-247"><g transform="translate(0.5,0.5)"/><g data-cell-id="qiHXacqECXXAYTJ9b62k-248"><g><path d="M 30 320 L 610 320" fill="none" stroke="#000000" stroke-width="2" stroke-miterlimit="10" pointer-events="stroke" style="stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/></g></g><g data-cell-id="qiHXacqECXXAYTJ9b62k-249"><g transform="translate(0.5,0.5)"><rect x="30" y="315" width="580" height="30" fill="none" stroke="none" pointer-events="all"/></g><g><g><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 578px; height: 1px; padding-top: 330px; margin-left: 31px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; color: #666666; "><div style="display: inline-block; font-size: 16px; font-family: Helvetica; color: light-dark(#666666, #959595); line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; "><b>ISOLATION BOUNDARY</b></div></div></div></foreignObject><text x="320" y="335" fill="#666666" font-family="Helvetica" font-size="16px" text-anchor="middle">ISOLATION BOUNDARY</text></switch></g></g></g><g data-cell-id="qiHXacqECXXAYTJ9b62k-250"><g><path d="M 30 340 L 610 340" fill="none" stroke="#000000" stroke-width="2" stroke-miterlimit="10" pointer-events="stroke" style="stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/></g></g></g><g data-cell-id="qiHXacqECXXAYTJ9b62k-251"><g transform="translate(0.5,0.5)"><rect x="30" y="370" width="580" height="240" fill="#ffffff" stroke="#666666" pointer-events="all" style="fill: light-dark(rgb(255, 255, 255), rgb(18, 18, 18)); stroke: light-dark(rgb(102, 102, 102), rgb(149, 149, 149));"/></g><g><g><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe flex-start; justify-content: unsafe flex-start; width: 568px; height: 1px; padding-top: 387px; margin-left: 42px;"><div style="box-sizing: border-box; font-size: 0; text-align: left; color: #000000; "><div style="display: inline-block; font-size: 16px; font-family: Helvetica; color: light-dark(#000000, #ffffff); line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; "><b>TENANT B (Customer B)</b></div></div></div></foreignObject><text x="42" y="403" fill="light-dark(#000000, #ffffff)" font-family="Helvetica" font-size="16px">TENANT B (Customer B)</text></switch></g></g></g><g data-cell-id="qiHXacqECXXAYTJ9b62k-252"><g transform="translate(0.5,0.5)"><rect x="50" y="410" width="220" height="190" fill="#f5f5f5" stroke="#000000" pointer-events="all" style="fill: light-dark(rgb(245, 245, 245), rgb(26, 26, 26)); stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/></g><g><g><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe flex-start; width: 208px; height: 1px; padding-top: 510px; margin-left: 62px;"><div style="box-sizing: border-box; font-size: 0; text-align: left; color: #000000; "><div style="display: inline-block; font-size: 16px; font-family: Helvetica; color: light-dark(#000000, #ffffff); line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; "><b>Namespace</b><br />tenant-b<br /><br /><b>Agent Pods:</b><br />- agent-b-1<br />- agent-b-2<br /><br /><b>Network:</b><br />- policy-b</div></div></div></foreignObject><text x="62" y="515" fill="light-dark(#000000, #ffffff)" font-family="Helvetica" font-size="16px">Namespace...</text></switch></g></g></g><g data-cell-id="qiHXacqECXXAYTJ9b62k-253"><g transform="translate(0.5,0.5)"><rect x="330" y="410" width="260" height="190" fill="#f5f5f5" stroke="#000000" pointer-events="all" style="fill: light-dark(rgb(245, 245, 245), rgb(26, 26, 26)); stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/></g><g><g><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe flex-start; width: 248px; height: 1px; padding-top: 510px; margin-left: 342px;"><div style="box-sizing: border-box; font-size: 0; text-align: left; color: #000000; "><div style="display: inline-block; font-size: 16px; font-family: Helvetica; color: light-dark(#000000, #ffffff); line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; "><b>Encryption</b><br />Key: key_b<br /><br /><b>Credentials DB:</b><br />- encrypted with key_b<br />- isolated schema<br /><br /><b>IP Whitelist:</b><br />- customer-b-ips.net</div></div></div></foreignObject><text x="342" y="515" fill="light-dark(#000000, #ffffff)" font-family="Helvetica" font-size="16px">Encryption...</text></switch></g></g></g></g></g></g><switch><g requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"/><a transform="translate(0,-5)" xlink:href="https://www.drawio.com/doc/faq/svg-export-text-problems" target="_blank"><text text-anchor="middle" font-size="10px" x="50%" y="100%">Text is not SVG - cannot display</text></a></switch></svg>
|
package/docs/SUMMARY.md
CHANGED
|
@@ -0,0 +1,361 @@
|
|
|
1
|
+
# **Minded Agent Security Architecture**
|
|
2
|
+
|
|
3
|
+
Minded AI agents automate complex workflows in customer environments while maintaining enterprise-grade security. This architecture enables powerful automation capabilities against your sensitive systems and data, with multiple layers of protection to ensure your infrastructure remains secure.
|
|
4
|
+
|
|
5
|
+
## **Security Approach**
|
|
6
|
+
|
|
7
|
+
Minded is designed to provide maximum automation power while maintaining zero-trust security. You can automate mission-critical workflows with confidence, while Minded ensures every action is verified, logged, and restricted through multiple security layers.
|
|
8
|
+
|
|
9
|
+
## Quick Navigation
|
|
10
|
+
|
|
11
|
+
- [System Overview](#️-system-overview)
|
|
12
|
+
- [Security Layers](#️-security-layers)
|
|
13
|
+
- [Network Isolation](#layer-1-network-isolation)
|
|
14
|
+
- [Authentication & Authorization](#layer-2-authentication--authorization)
|
|
15
|
+
- [RPA Security Controls](#layer-3-rpa-security-controls)
|
|
16
|
+
- [Runtime Security](#layer-4-runtime-security)
|
|
17
|
+
- [Monitoring & Audit](#layer-5-monitoring--audit)
|
|
18
|
+
- [Credential Lifecycle Flow](#️-credential-lifecycle-flow)
|
|
19
|
+
- [RPA Execution Flow](#️-rpa-execution-flow-with-security-controls)
|
|
20
|
+
- [Agent Lifecycle Security](#️-agent-lifecycle-security)
|
|
21
|
+
- [Tenant Isolation Architecture](#️-tenant-isolation-architecture)
|
|
22
|
+
- [Infrastructure Security](#️-infrastructure-security)
|
|
23
|
+
- [Agent Behavior Verification](#️-agent-behavior-verification--action-limits)
|
|
24
|
+
- [Security FAQs](#security-faqs)
|
|
25
|
+
- [See Also](#see-also)
|
|
26
|
+
|
|
27
|
+
---
|
|
28
|
+
|
|
29
|
+
## 🏗️ System Overview
|
|
30
|
+
|
|
31
|
+
<figure><img src="../.gitbook/assets/system-overview.svg" alt="Minded System Overview Diagram"></figure>
|
|
32
|
+
|
|
33
|
+
**Key Principles**:
|
|
34
|
+
|
|
35
|
+
- **Zero Trust**: Every action verified, logged, and restricted
|
|
36
|
+
- **Least Privilege**: Agents only access what they need, when they need it
|
|
37
|
+
- **Defense in Depth**: Multiple security layers protect against breaches
|
|
38
|
+
- **Tenant Isolation**: Complete separation between customer environments
|
|
39
|
+
|
|
40
|
+
---
|
|
41
|
+
|
|
42
|
+
## 🛡️ Security Layers
|
|
43
|
+
|
|
44
|
+
### Layer 1: Network Isolation
|
|
45
|
+
|
|
46
|
+
---
|
|
47
|
+
|
|
48
|
+
**VPC Configuration:**
|
|
49
|
+
|
|
50
|
+
- All inbound traffic: BLOCKED
|
|
51
|
+
- Outbound traffic: WHITELISTED IPs only
|
|
52
|
+
- Internal pod-to-pod: ISOLATED by tenant + namespace
|
|
53
|
+
|
|
54
|
+
**IP Whitelisting:**
|
|
55
|
+
|
|
56
|
+
- Customer provides allowed IP ranges
|
|
57
|
+
- Minded agent can ONLY connect to those IPs
|
|
58
|
+
- Dynamic IP updates via Minded platform
|
|
59
|
+
|
|
60
|
+
**Traffic Monitoring:**
|
|
61
|
+
|
|
62
|
+
- All network requests logged
|
|
63
|
+
- Alerts on unauthorized connection attempts
|
|
64
|
+
- Automatic blocking of suspicious patterns
|
|
65
|
+
|
|
66
|
+
### Layer 2: Authentication & Authorization
|
|
67
|
+
|
|
68
|
+
---
|
|
69
|
+
|
|
70
|
+
**Storage:**
|
|
71
|
+
|
|
72
|
+
- Credentials encrypted at rest (AES-256-GCM)
|
|
73
|
+
- Keys stored in AWS Key Management Service (KMS)
|
|
74
|
+
|
|
75
|
+
**Runtime:**
|
|
76
|
+
|
|
77
|
+
- Credentials decrypted only during execution
|
|
78
|
+
- Never stored in memory after use
|
|
79
|
+
- Automatic expiration/rotation
|
|
80
|
+
|
|
81
|
+
**Access Control:**
|
|
82
|
+
|
|
83
|
+
- Agent-specific credentials (not shared)
|
|
84
|
+
- MFA support for sensitive operations
|
|
85
|
+
- Role-based access control (RBAC)
|
|
86
|
+
- Immediate credential revocation capability
|
|
87
|
+
|
|
88
|
+
### Layer 3: RPA Security Controls
|
|
89
|
+
|
|
90
|
+
---
|
|
91
|
+
|
|
92
|
+
**URL Restrictions:**
|
|
93
|
+
|
|
94
|
+
- Whitelist of allowed URLs/domains
|
|
95
|
+
- Regex pattern matching for dynamic URLs
|
|
96
|
+
- Block attempts to modify URL parameters
|
|
97
|
+
- Prevent URL redirection attacks
|
|
98
|
+
|
|
99
|
+
**Action Limitations:**
|
|
100
|
+
|
|
101
|
+
- Predefined set of allowed actions
|
|
102
|
+
- Parameter validation against schemas
|
|
103
|
+
- Read-only mode for sensitive operations
|
|
104
|
+
- Block file upload/download outside scope
|
|
105
|
+
|
|
106
|
+
**Parameter Integrity:**
|
|
107
|
+
|
|
108
|
+
- Hash-based verification of parameters
|
|
109
|
+
- Signature validation for critical actions
|
|
110
|
+
- Block modification of flow-defined values
|
|
111
|
+
- Audit trail for all parameter changes
|
|
112
|
+
|
|
113
|
+
### Layer 4: Runtime Security
|
|
114
|
+
|
|
115
|
+
---
|
|
116
|
+
|
|
117
|
+
**Pod/Container Security:**
|
|
118
|
+
|
|
119
|
+
- Non-root user execution
|
|
120
|
+
- Read-only file system (except temp dirs)
|
|
121
|
+
- Resource limits (CPU, memory, network)
|
|
122
|
+
- Security context constraints
|
|
123
|
+
- Regular image scanning for vulnerabilities
|
|
124
|
+
|
|
125
|
+
**Process Monitoring:**
|
|
126
|
+
|
|
127
|
+
- Antivirus/antimalware scanning
|
|
128
|
+
- Behavioral analysis for anomalies
|
|
129
|
+
|
|
130
|
+
**Lifecycle Management:**
|
|
131
|
+
|
|
132
|
+
- Auto-shutdown when idle (configurable timeout)
|
|
133
|
+
- No persistent state on disk
|
|
134
|
+
- Fresh instance per execution (optional)
|
|
135
|
+
|
|
136
|
+
**Data Protection:**
|
|
137
|
+
|
|
138
|
+
- Encryption in transit (TLS 1.2)
|
|
139
|
+
- Encryption at rest (all storage volumes)
|
|
140
|
+
- Secure deletion of temporary data
|
|
141
|
+
|
|
142
|
+
### Layer 5: Monitoring & Audit
|
|
143
|
+
|
|
144
|
+
---
|
|
145
|
+
|
|
146
|
+
**Audit Logging:**
|
|
147
|
+
|
|
148
|
+
- Every action logged with timestamp
|
|
149
|
+
- User identity, agent ID, action type
|
|
150
|
+
- Input/output parameters (sanitized)
|
|
151
|
+
- Log retention policy (90 days default)
|
|
152
|
+
|
|
153
|
+
**Real-time Monitoring:**
|
|
154
|
+
|
|
155
|
+
- Dashboard for active agent sessions
|
|
156
|
+
- Resource utilization tracking
|
|
157
|
+
- Error rate and failure monitoring
|
|
158
|
+
- Network traffic analysis
|
|
159
|
+
|
|
160
|
+
**Alerting:**
|
|
161
|
+
|
|
162
|
+
- Unauthorized access attempts
|
|
163
|
+
- Unusual job triggers
|
|
164
|
+
- Credential access outside business hours
|
|
165
|
+
- Failed authentication attempts
|
|
166
|
+
- Suspicious parameter modifications
|
|
167
|
+
- Policy violations
|
|
168
|
+
|
|
169
|
+
**Integration:**
|
|
170
|
+
|
|
171
|
+
- Email/Slack alerts
|
|
172
|
+
- Customer SOC integration
|
|
173
|
+
|
|
174
|
+
---
|
|
175
|
+
|
|
176
|
+
## 1️⃣ Credential Lifecycle Flow
|
|
177
|
+
|
|
178
|
+
**How credentials are managed from creation to revocation**
|
|
179
|
+
|
|
180
|
+
<figure><img src="../.gitbook/assets/credentials-lifecycle.svg" alt="Minded Credentials Lifecycle Flow Diagram"></figure>
|
|
181
|
+
|
|
182
|
+
**Key Security Features**:
|
|
183
|
+
|
|
184
|
+
- Credentials never stored in plaintext
|
|
185
|
+
- Encryption keys managed separately from encrypted data
|
|
186
|
+
- Credentials only decrypted at runtime, never persisted
|
|
187
|
+
- Immediate revocation capability
|
|
188
|
+
- Complete audit trail
|
|
189
|
+
|
|
190
|
+
---
|
|
191
|
+
|
|
192
|
+
## 2️⃣ RPA Execution Flow Security Controls
|
|
193
|
+
|
|
194
|
+
**How we run security checks for RPA action executions**
|
|
195
|
+
|
|
196
|
+
<figure><img src="../.gitbook/assets/rpa-execution-flow.svg" alt="Minded RPA Execution Flow Security Diagram"></figure>
|
|
197
|
+
|
|
198
|
+
**Default checklist for action verification**:
|
|
199
|
+
|
|
200
|
+
1. Is the URL on your allowed list?
|
|
201
|
+
2. Is this action permitted for this agent?
|
|
202
|
+
3. Are the parameters valid and properly formatted?
|
|
203
|
+
4. Have the parameters been tampered with?
|
|
204
|
+
5. Does the agent have permission to do this?
|
|
205
|
+
6. Log the request before running
|
|
206
|
+
7. Double-check the URL before making the request
|
|
207
|
+
8. Clean up any unsafe input
|
|
208
|
+
9. Block any attempts to inject code
|
|
209
|
+
10. Remove sensitive data from the response
|
|
210
|
+
11. Log the result after completion
|
|
211
|
+
|
|
212
|
+
**What happens when a check doesn't pass**:
|
|
213
|
+
|
|
214
|
+
1. The action is blocked immediately
|
|
215
|
+
2. All the details are logged
|
|
216
|
+
3. Extreme violations may suspend the agent until further investigation
|
|
217
|
+
|
|
218
|
+
---
|
|
219
|
+
|
|
220
|
+
## 3️⃣ Agent Lifecycle Security
|
|
221
|
+
|
|
222
|
+
**From deployment to shutdown - security at every stage**
|
|
223
|
+
|
|
224
|
+
<figure><img src="../.gitbook/assets/agent-lifecycle-security.svg" alt="Minded Agent Lifecycle Security Diagram"></figure>
|
|
225
|
+
|
|
226
|
+
### Idle Timeout Configuration
|
|
227
|
+
|
|
228
|
+
Default: 30 minutes of inactivity
|
|
229
|
+
Options:
|
|
230
|
+
|
|
231
|
+
- Always-on (for critical agents)
|
|
232
|
+
- Custom timeout (5-120 minutes)
|
|
233
|
+
- Immediate shutdown after task
|
|
234
|
+
|
|
235
|
+
Benefits:
|
|
236
|
+
|
|
237
|
+
- Reduce attack surface
|
|
238
|
+
- Lower resource costs
|
|
239
|
+
- Fresh state for each execution
|
|
240
|
+
|
|
241
|
+
---
|
|
242
|
+
|
|
243
|
+
## 4️⃣ Tenant Isolation Architecture
|
|
244
|
+
|
|
245
|
+
**Ensuring complete separation between customer environments**
|
|
246
|
+
|
|
247
|
+
<figure><img src="../.gitbook/assets/tenant-isolation-overview.svg" alt="Minded Tenant Isolation Architecture Diagram"></figure>
|
|
248
|
+
|
|
249
|
+
### Isolation Guarantees
|
|
250
|
+
|
|
251
|
+
**Network:**
|
|
252
|
+
|
|
253
|
+
- Separate K8s namespaces
|
|
254
|
+
- Network policies prevent cross-tenant traffic
|
|
255
|
+
- Separate VPCs (enterprise tier)
|
|
256
|
+
|
|
257
|
+
**Data:**
|
|
258
|
+
|
|
259
|
+
- Separate encryption keys per tenant
|
|
260
|
+
- Logical database isolation (schemas/tables)
|
|
261
|
+
- Physical database isolation (enterprise tier)
|
|
262
|
+
|
|
263
|
+
**Compute:**
|
|
264
|
+
|
|
265
|
+
- No pod sharing between tenants
|
|
266
|
+
- Resource quotas per tenant
|
|
267
|
+
- Dedicated nodes (enterprise tier)
|
|
268
|
+
|
|
269
|
+
**Credentials:**
|
|
270
|
+
|
|
271
|
+
- Cannot access other tenant's credentials
|
|
272
|
+
- Cannot list other tenant's agents
|
|
273
|
+
- Cannot execute actions on other tenant's behalf
|
|
274
|
+
|
|
275
|
+
**Audit Logs:**
|
|
276
|
+
|
|
277
|
+
- Separate log streams per tenant
|
|
278
|
+
- Cannot view other tenant's logs
|
|
279
|
+
- Cannot tamper with other tenant's logs
|
|
280
|
+
|
|
281
|
+
---
|
|
282
|
+
|
|
283
|
+
## 5️⃣ Infrastructure Security
|
|
284
|
+
|
|
285
|
+
**How we protect the systems running your agents**
|
|
286
|
+
|
|
287
|
+
Think of each agent as running in its own secure, locked room. Here's what that means in practice:
|
|
288
|
+
|
|
289
|
+
- **No elevated privileges** - Agents run as standard users, never as administrators. They can't make system-level changes.
|
|
290
|
+
- **Nothing can be modified** - The agent's environment is read-only. Even if something tried to tamper with it, the changes wouldn't stick.
|
|
291
|
+
- **Complete isolation** - Agents can't see or touch the underlying infrastructure. They operate in their own sealed environment.
|
|
292
|
+
- **Guardrails on resources** - Each agent has strict limits on computing power and memory. They can't consume more than allocated.
|
|
293
|
+
- **Regularly checked for vulnerabilities** - We continuously scan our systems for security issues and patch them promptly.
|
|
294
|
+
|
|
295
|
+
---
|
|
296
|
+
|
|
297
|
+
## 6️⃣ Agent Behavior Verification & Action Limits
|
|
298
|
+
|
|
299
|
+
**Ensuring agents only perform intended actions within defined boundaries**
|
|
300
|
+
|
|
301
|
+
### Webhook Security
|
|
302
|
+
|
|
303
|
+
Every webhook that triggers an agent is verified before processing:
|
|
304
|
+
|
|
305
|
+
- **Signed payloads** - All webhooks include an HMAC-SHA256 signature that we validate
|
|
306
|
+
- **Timestamp checks** - We reject webhooks older than 5 minutes to prevent replay attacks
|
|
307
|
+
- **Source validation** - Webhooks must come from whitelisted IPs with valid API keys
|
|
308
|
+
|
|
309
|
+
### What Gets Logged
|
|
310
|
+
|
|
311
|
+
Every agent action creates a complete audit trail:
|
|
312
|
+
|
|
313
|
+
- Unique ID for tracking the specific invocation
|
|
314
|
+
- Start and end timestamps
|
|
315
|
+
- How it was triggered (webhook, schedule, or manual)
|
|
316
|
+
- Input parameters (with sensitive data removed)
|
|
317
|
+
- All actions performed and their results
|
|
318
|
+
- Any resources that were created or modified
|
|
319
|
+
|
|
320
|
+
### Reconciliation
|
|
321
|
+
|
|
322
|
+
We continuously verify that agents only do what they're supposed to:
|
|
323
|
+
|
|
324
|
+
- Compare expected actions against actual actions
|
|
325
|
+
- Alert immediately if there are discrepancies
|
|
326
|
+
- Generate daily reconciliation reports for review
|
|
327
|
+
|
|
328
|
+
---
|
|
329
|
+
|
|
330
|
+
## See Also
|
|
331
|
+
|
|
332
|
+
For more information on related security and operational topics, see:
|
|
333
|
+
|
|
334
|
+
- **[Secrets Management](secrets.md)** - Detailed guide on storing and managing credentials securely
|
|
335
|
+
- **[Operator Documentation](operator.md)** - Operational procedures and best practices for running agents
|
|
336
|
+
- **[On-Premise Deployment](on-prem.md)** - Security considerations for self-hosted Minded installations
|
|
337
|
+
- **[Browser Task (RPA)](browserTask.md)** - Technical details on RPA capabilities and configurations
|
|
338
|
+
|
|
339
|
+
---
|
|
340
|
+
|
|
341
|
+
## Security FAQs
|
|
342
|
+
|
|
343
|
+
### Q: What happens if an agent tries to access systems outside my whitelist?
|
|
344
|
+
|
|
345
|
+
The request is blocked immediately at multiple layers. First, our security gateway checks the URL against your whitelist. Even if that somehow fails, network policies at the infrastructure level block the connection. All attempts are logged, alerts are triggered, and repeated violations will suspend the agent automatically.
|
|
346
|
+
|
|
347
|
+
### Q: How do you protect my credentials?
|
|
348
|
+
|
|
349
|
+
Credentials are encrypted using AES-256 before storage, with encryption keys managed separately in AWS KMS. They're only decrypted in memory during execution and cleared immediately after use. Even if someone gained access to our database, they'd only find encrypted data that's useless without the keys.
|
|
350
|
+
|
|
351
|
+
### Q: Can one customer's agent access another customer's data?
|
|
352
|
+
|
|
353
|
+
No. Each customer operates in a completely isolated environment with separate namespaces, encryption keys, and network policies. There's no pathway for one tenant's agent to reach another tenant's resources - the infrastructure physically prevents it.
|
|
354
|
+
|
|
355
|
+
### Q: How do you prevent malicious code from running?
|
|
356
|
+
|
|
357
|
+
All action parameters are validated against schemas and checked for tampering using signatures. Inputs are sanitized to remove dangerous content. We scan all container images for vulnerabilities before deployment and monitor runtime behavior for anomalies.
|
|
358
|
+
|
|
359
|
+
### Q: What visibility do I have into agent activity?
|
|
360
|
+
|
|
361
|
+
Every action is logged with full details including timestamps, parameters, and results. You can access audit logs, set up alerts, and integrate with your existing monitoring tools. You'll know exactly what your agents are doing at all times.
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@minded-ai/mindedjs",
|
|
3
|
-
"version": "3.0.
|
|
3
|
+
"version": "3.0.5",
|
|
4
4
|
"description": "MindedJS is a TypeScript library for building agents.",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"types": "dist/index.d.ts",
|
|
@@ -72,4 +72,4 @@
|
|
|
72
72
|
"peerDependencies": {
|
|
73
73
|
"playwright": "^1.55.0"
|
|
74
74
|
}
|
|
75
|
-
}
|
|
75
|
+
}
|
|
@@ -11,7 +11,8 @@ import { Environment } from '../types/Platform.types';
|
|
|
11
11
|
export type Playbook = {
|
|
12
12
|
id: string;
|
|
13
13
|
name: string;
|
|
14
|
-
blocks
|
|
14
|
+
blocks?: OutputBlockData[];
|
|
15
|
+
prompt?: string;
|
|
15
16
|
};
|
|
16
17
|
|
|
17
18
|
/**
|
|
@@ -147,7 +148,7 @@ function loadPlaybooksFromDirectories(directories: string[]): Playbook[] {
|
|
|
147
148
|
const fileContent = fs.readFileSync(file, 'utf8');
|
|
148
149
|
const playbook = yaml.load(fileContent) as Playbook;
|
|
149
150
|
|
|
150
|
-
if (playbook && playbook.name && playbook.blocks) {
|
|
151
|
+
if (playbook && playbook.name && (playbook.blocks || playbook.prompt)) {
|
|
151
152
|
playbooks.push(playbook);
|
|
152
153
|
logger.info({ msg: `Loaded playbook: ${playbook.name} from ${file}` });
|
|
153
154
|
} else {
|
|
@@ -191,7 +192,13 @@ export function combinePlaybooks(playbooks: Playbook[]): string | null {
|
|
|
191
192
|
|
|
192
193
|
// Combine all playbooks into sections
|
|
193
194
|
const sections = playbooks.map((playbook) => {
|
|
194
|
-
|
|
195
|
+
let markdownContent = playbook.prompt;
|
|
196
|
+
if (!markdownContent && playbook.blocks) {
|
|
197
|
+
markdownContent = editorJsToMarkdown(playbook.blocks);
|
|
198
|
+
}
|
|
199
|
+
if (!markdownContent) {
|
|
200
|
+
throw new Error('Playbook must have either a prompt or blocks');
|
|
201
|
+
}
|
|
195
202
|
return `# ${playbook.name}\n${markdownContent}`;
|
|
196
203
|
});
|
|
197
204
|
|
|
@@ -40,8 +40,8 @@ const DEFAULT_CONFIG: Partial<ExtractionConfig> = {
|
|
|
40
40
|
*/
|
|
41
41
|
function schemaToJsonFormat(schema: ExtractionSchema): string {
|
|
42
42
|
// Use zod-to-json-schema for robust conversion
|
|
43
|
-
// Type assertion to avoid excessive type depth inference
|
|
44
|
-
const jsonSchema = zodToJsonSchema(schema as
|
|
43
|
+
// Type assertion to avoid excessive type depth inference (TS2589)
|
|
44
|
+
const jsonSchema = zodToJsonSchema(schema as any, {
|
|
45
45
|
target: 'openApi3',
|
|
46
46
|
$refStrategy: 'none', // Inline all references for simpler prompts
|
|
47
47
|
});
|