@fleettools/server 0.1.0 → 0.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +1 -1
- package/.flightline/checkpoints.db +0 -0
- package/.flightline/ctk/04a5510b-1e09-40c6-91c8-399c22138708.json +0 -9
- package/.flightline/ctk/0ecde721-7827-4039-995a-974e24493cc5.json +0 -9
- package/.flightline/ctk/268bbdbd-ddd7-46b2-845f-56a138aa518a.json +0 -9
- package/.flightline/ctk/6f476f2e-776c-407a-b441-b9365c0bae95.json +0 -9
- package/.flightline/ctk/7e10d0d5-fbc2-4661-af03-53de89e064db.json +0 -9
- package/.flightline/ctk/90783096-b7d4-49c5-8153-3c35018a2e61.json +0 -9
- package/.flightline/ctk/9a3b6d18-8a46-4728-90aa-279800a8e397.json +0 -9
- package/.flightline/ctk/ae30e192-b386-4ee2-899c-93f86785d3f3.json +0 -9
- package/.flightline/ctk/d0e9c49e-10df-413e-8cf7-37232b1838ca.json +0 -9
- package/.flightline/ctk/eae1a12b-2e9d-4c3f-8619-dafbb1346e96.json +0 -9
- package/.flightline/mailboxes/mbx_00dae6ba-0b5e-4a8d-a86d-93c8640872c3/manifest.json +0 -6
- package/.flightline/mailboxes/mbx_05b0bfa9-c4f5-4f68-ba75-6202820f49c3/manifest.json +0 -6
- package/.flightline/mailboxes/mbx_0a6b8fb2-729e-4385-8241-839c36b929d7/manifest.json +0 -6
- package/.flightline/mailboxes/mbx_0abca4ab-8e34-409c-997f-481e80e450dc/manifest.json +0 -6
- package/.flightline/mailboxes/mbx_173e5fb9-8203-418d-93c2-4f8c91f2d842/manifest.json +0 -6
- package/.flightline/mailboxes/mbx_22b62201-0570-4ce8-b0a7-0f4b445f6d9e/manifest.json +0 -6
- package/.flightline/mailboxes/mbx_2724efb1-76e1-4147-9620-4defcc65510f/manifest.json +0 -6
- package/.flightline/mailboxes/mbx_35b8bfcd-5a54-48f1-8759-cb1f8ffe775d/manifest.json +0 -6
- package/.flightline/mailboxes/mbx_3bc5193a-604d-4f52-be00-e56277643358/manifest.json +0 -6
- package/.flightline/mailboxes/mbx_3bd500f3-c111-427a-8cd7-a004125d6dc1/manifest.json +0 -6
- package/.flightline/mailboxes/mbx_45ce9ae8-5299-44dc-a1b5-4d63914a9609/manifest.json +0 -6
- package/.flightline/mailboxes/mbx_4779c645-1efc-4c76-ab21-ff93f973ee8f/manifest.json +0 -6
- package/.flightline/mailboxes/mbx_482237cf-87c8-486e-a24d-0941be2f480d/manifest.json +0 -6
- package/.flightline/mailboxes/mbx_4b7e23c8-5680-4edd-a276-88803dd5fb6f/manifest.json +0 -6
- package/.flightline/mailboxes/mbx_4dd3b945-d846-4c7a-94eb-6eeb25a0dc6b/manifest.json +0 -6
- package/.flightline/mailboxes/mbx_4ec41a62-62bb-4be4-b3ce-282d5a33acce/manifest.json +0 -6
- package/.flightline/mailboxes/mbx_4ff7ee7e-0c8a-43d6-a829-7c62c10af3b0/manifest.json +0 -6
- package/.flightline/mailboxes/mbx_7661e4fb-a919-4af1-86f7-3eaef22f1d81/manifest.json +0 -6
- package/.flightline/mailboxes/mbx_7ca872bb-69ab-4e7d-a7c6-4888ec8e7749/manifest.json +0 -6
- package/.flightline/mailboxes/mbx_7e6d5707-2aa5-4770-a7be-6b1be93d0d87/manifest.json +0 -6
- package/.flightline/mailboxes/mbx_87bef50d-3c59-429b-a995-5872f6278c37/manifest.json +0 -6
- package/.flightline/mailboxes/mbx_88d1ea56-0b69-48c4-9fcf-ce1e1f7527ba/manifest.json +0 -6
- package/.flightline/mailboxes/mbx_8bfb6bd7-07d1-4836-ae9d-3c93668c6dfe/manifest.json +0 -6
- package/.flightline/mailboxes/mbx_93355083-e95b-4341-b625-56fcc1e4fc0c/manifest.json +0 -6
- package/.flightline/mailboxes/mbx_999fd94c-ca56-4fec-8d30-8b677cf40ad6/manifest.json +0 -6
- package/.flightline/mailboxes/mbx_a039fd15-7ee1-4bd6-906d-55dea8d0e489/manifest.json +0 -6
- package/.flightline/mailboxes/mbx_a0b7363f-7cc6-4940-8e29-2dc85793a77d/manifest.json +0 -6
- package/.flightline/mailboxes/mbx_a31e8b61-9643-4c78-939d-d1696d0420d9/manifest.json +0 -6
- package/.flightline/mailboxes/mbx_acc51591-256c-4bed-9a51-514b1811f4cd/manifest.json +0 -6
- package/.flightline/mailboxes/mbx_b1efebd9-5981-49fa-8775-20fa00d0c902/manifest.json +0 -6
- package/.flightline/mailboxes/mbx_ba9d4c61-39a3-4852-95d7-bd34e3605a43/manifest.json +0 -6
- package/.flightline/mailboxes/mbx_c549b60f-65fd-48d5-8cd6-2f053292b112/manifest.json +0 -6
- package/.flightline/mailboxes/mbx_d0f839a5-3ab9-42e2-b438-df5825d049fe/manifest.json +0 -6
- package/.flightline/mailboxes/mbx_d826d57e-9817-4f3c-ab94-2bfafa352f6d/manifest.json +0 -6
- package/.flightline/mailboxes/mbx_da102f37-632c-4c0b-be4c-4270a74c06b9/manifest.json +0 -6
- package/.flightline/mailboxes/mbx_df4506f5-67f2-4cf6-9113-93994b76f39b/manifest.json +0 -6
- package/.flightline/mailboxes/mbx_e038e93b-87ea-4122-9578-6540018697b7/manifest.json +0 -6
- package/.flightline/mailboxes/mbx_e0c171c5-407f-44dc-9ef9-e26e8b99ceac/manifest.json +0 -6
- package/.flightline/mailboxes/mbx_e64770bf-7220-4d0f-848c-d751ea1c7376/manifest.json +0 -6
- package/.flightline/mailboxes/mbx_e7f0edda-0fab-484d-ab4d-d8a8e363cd14/manifest.json +0 -6
- package/.flightline/mailboxes/mbx_ec7d9118-8594-4d79-bf79-f43afdfaf156/manifest.json +0 -6
- package/.flightline/mailboxes/mbx_ee06ec01-03e4-485a-ae2b-d8bdb6e7a3a8/manifest.json +0 -6
- package/.flightline/mailboxes/mbx_fd467681-f9cf-4a54-b06a-836df6de2ccc/manifest.json +0 -6
- package/.flightline/progress.db +0 -0
- package/.flightline/recovery.log +0 -1
- package/.flightline/tasks.db +0 -0
- package/.flightline/tech-orders/to_0c93d981-6b4e-4055-8678-f39c009d1db1.json +0 -11
- package/.flightline/tech-orders/to_1862f8ed-c487-4914-9f1e-528af6d4f053.json +0 -11
- package/.flightline/tech-orders/to_2335a57d-f400-4efa-b108-e13ece57520d.json +0 -11
- package/.flightline/tech-orders/to_2bd8dbdd-ac57-4b84-b977-33a3637d10d1.json +0 -11
- package/.flightline/tech-orders/to_37057c01-39b5-403a-991f-afb186abde95.json +0 -11
- package/.flightline/tech-orders/to_9e7288bb-c0fd-488a-a83d-1e9337bd0f1f.json +0 -11
- package/.flightline/tech-orders/to_aa0fe80b-9de7-40f6-a106-353b5bca10bd.json +0 -11
- package/.flightline/tech-orders/to_c1a0f480-c863-4203-a070-76ad77137845.json +0 -11
- package/.flightline/tech-orders/to_cf1e882a-cf56-45a4-8d19-494925e5f449.json +0 -11
- package/.flightline/work-orders/wo_5a29168d-5fb4-41d7-8dac-1d1151d9248f/manifest.json +0 -15
- package/.flightline/work-orders/wo_6c8c38bb-17a1-4885-ada4-dbfc5cc12d7a/manifest.json +0 -15
- package/.flightline/work-orders/wo_cadeb9b2-ea42-4491-b429-e2d467942b5c/manifest.json +0 -12
- package/.flightline/work-orders/wo_cc7b669c-16c4-4ef7-8a76-d1813219d0be/manifest.json +0 -15
- package/dist/server/api/src/coordination/agent-lifecycle.d.ts +0 -12
- package/dist/server/api/src/coordination/agent-lifecycle.d.ts.map +0 -1
- package/dist/server/api/src/coordination/agent-lifecycle.js +0 -12
- package/dist/server/api/src/coordination/agent-lifecycle.js.map +0 -1
- package/dist/server/api/src/coordination/agent-runner.d.ts +0 -9
- package/dist/server/api/src/coordination/agent-runner.d.ts.map +0 -1
- package/dist/server/api/src/coordination/agent-runner.js +0 -416
- package/dist/server/api/src/coordination/agent-runner.js.map +0 -1
- package/dist/server/api/src/coordination/agent-spawner-routes.d.ts +0 -7
- package/dist/server/api/src/coordination/agent-spawner-routes.d.ts.map +0 -1
- package/dist/server/api/src/coordination/agent-spawner-routes.js +0 -321
- package/dist/server/api/src/coordination/agent-spawner-routes.js.map +0 -1
- package/dist/server/api/src/coordination/agent-spawner.d.ts +0 -187
- package/dist/server/api/src/coordination/agent-spawner.d.ts.map +0 -1
- package/dist/server/api/src/coordination/agent-spawner.js +0 -712
- package/dist/server/api/src/coordination/agent-spawner.js.map +0 -1
- package/dist/server/api/src/coordination/agents.d.ts +0 -13
- package/dist/server/api/src/coordination/agents.d.ts.map +0 -1
- package/dist/server/api/src/coordination/agents.js +0 -464
- package/dist/server/api/src/coordination/agents.js.map +0 -1
- package/dist/server/api/src/coordination/checkpoint-routes.d.ts +0 -33
- package/dist/server/api/src/coordination/checkpoint-routes.d.ts.map +0 -1
- package/dist/server/api/src/coordination/checkpoint-routes.js +0 -323
- package/dist/server/api/src/coordination/checkpoint-routes.js.map +0 -1
- package/dist/server/api/src/coordination/conflict-resolver.d.ts +0 -152
- package/dist/server/api/src/coordination/conflict-resolver.d.ts.map +0 -1
- package/dist/server/api/src/coordination/conflict-resolver.js +0 -502
- package/dist/server/api/src/coordination/conflict-resolver.js.map +0 -1
- package/dist/server/api/src/coordination/missions.d.ts +0 -9
- package/dist/server/api/src/coordination/missions.d.ts.map +0 -1
- package/dist/server/api/src/coordination/missions.js +0 -148
- package/dist/server/api/src/coordination/missions.js.map +0 -1
- package/dist/server/api/src/coordination/monitor.d.ts +0 -175
- package/dist/server/api/src/coordination/monitor.d.ts.map +0 -1
- package/dist/server/api/src/coordination/monitor.js +0 -410
- package/dist/server/api/src/coordination/monitor.js.map +0 -1
- package/dist/server/api/src/coordination/notifier.d.ts +0 -160
- package/dist/server/api/src/coordination/notifier.d.ts.map +0 -1
- package/dist/server/api/src/coordination/notifier.js +0 -422
- package/dist/server/api/src/coordination/notifier.js.map +0 -1
- package/dist/server/api/src/coordination/progress-tracker.d.ts +0 -98
- package/dist/server/api/src/coordination/progress-tracker.d.ts.map +0 -1
- package/dist/server/api/src/coordination/progress-tracker.js +0 -323
- package/dist/server/api/src/coordination/progress-tracker.js.map +0 -1
- package/dist/server/api/src/coordination/recovery-manager.d.ts +0 -135
- package/dist/server/api/src/coordination/recovery-manager.d.ts.map +0 -1
- package/dist/server/api/src/coordination/recovery-manager.js +0 -435
- package/dist/server/api/src/coordination/recovery-manager.js.map +0 -1
- package/dist/server/api/src/coordination/task-decomposer.d.ts +0 -90
- package/dist/server/api/src/coordination/task-decomposer.d.ts.map +0 -1
- package/dist/server/api/src/coordination/task-decomposer.js +0 -412
- package/dist/server/api/src/coordination/task-decomposer.js.map +0 -1
- package/dist/server/api/src/coordination/task-queue-routes.d.ts +0 -7
- package/dist/server/api/src/coordination/task-queue-routes.d.ts.map +0 -1
- package/dist/server/api/src/coordination/task-queue-routes.js +0 -266
- package/dist/server/api/src/coordination/task-queue-routes.js.map +0 -1
- package/dist/server/api/src/coordination/task-queue.d.ts +0 -104
- package/dist/server/api/src/coordination/task-queue.d.ts.map +0 -1
- package/dist/server/api/src/coordination/task-queue.js +0 -378
- package/dist/server/api/src/coordination/task-queue.js.map +0 -1
- package/dist/server/api/src/coordination/tasks.d.ts +0 -7
- package/dist/server/api/src/coordination/tasks.d.ts.map +0 -1
- package/dist/server/api/src/coordination/tasks.js +0 -59
- package/dist/server/api/src/coordination/tasks.js.map +0 -1
- package/dist/server/api/src/decomposition/cli.d.ts +0 -18
- package/dist/server/api/src/decomposition/cli.d.ts.map +0 -1
- package/dist/server/api/src/decomposition/cli.js +0 -191
- package/dist/server/api/src/decomposition/cli.js.map +0 -1
- package/dist/server/api/src/decomposition/codebase-analyzer.d.ts +0 -59
- package/dist/server/api/src/decomposition/codebase-analyzer.d.ts.map +0 -1
- package/dist/server/api/src/decomposition/codebase-analyzer.js +0 -274
- package/dist/server/api/src/decomposition/codebase-analyzer.js.map +0 -1
- package/dist/server/api/src/decomposition/dependency-resolver.d.ts +0 -68
- package/dist/server/api/src/decomposition/dependency-resolver.d.ts.map +0 -1
- package/dist/server/api/src/decomposition/dependency-resolver.js +0 -261
- package/dist/server/api/src/decomposition/dependency-resolver.js.map +0 -1
- package/dist/server/api/src/decomposition/index.d.ts +0 -17
- package/dist/server/api/src/decomposition/index.d.ts.map +0 -1
- package/dist/server/api/src/decomposition/index.js +0 -19
- package/dist/server/api/src/decomposition/index.js.map +0 -1
- package/dist/server/api/src/decomposition/parallelization.d.ts +0 -40
- package/dist/server/api/src/decomposition/parallelization.d.ts.map +0 -1
- package/dist/server/api/src/decomposition/parallelization.js +0 -144
- package/dist/server/api/src/decomposition/parallelization.js.map +0 -1
- package/dist/server/api/src/decomposition/planner.d.ts +0 -84
- package/dist/server/api/src/decomposition/planner.d.ts.map +0 -1
- package/dist/server/api/src/decomposition/planner.js +0 -415
- package/dist/server/api/src/decomposition/planner.js.map +0 -1
- package/dist/server/api/src/decomposition/routes.d.ts +0 -13
- package/dist/server/api/src/decomposition/routes.d.ts.map +0 -1
- package/dist/server/api/src/decomposition/routes.js +0 -114
- package/dist/server/api/src/decomposition/routes.js.map +0 -1
- package/dist/server/api/src/decomposition/strategies.d.ts +0 -43
- package/dist/server/api/src/decomposition/strategies.d.ts.map +0 -1
- package/dist/server/api/src/decomposition/strategies.js +0 -147
- package/dist/server/api/src/decomposition/strategies.js.map +0 -1
- package/dist/server/api/src/decomposition/types.d.ts +0 -1090
- package/dist/server/api/src/decomposition/types.d.ts.map +0 -1
- package/dist/server/api/src/decomposition/types.js +0 -65
- package/dist/server/api/src/decomposition/types.js.map +0 -1
- package/dist/server/api/src/decomposition/validator.d.ts +0 -84
- package/dist/server/api/src/decomposition/validator.d.ts.map +0 -1
- package/dist/server/api/src/decomposition/validator.js +0 -314
- package/dist/server/api/src/decomposition/validator.js.map +0 -1
- package/dist/server/api/src/flightline/ctk.d.ts +0 -2
- package/dist/server/api/src/flightline/ctk.d.ts.map +0 -1
- package/dist/server/api/src/flightline/ctk.js +0 -114
- package/dist/server/api/src/flightline/ctk.js.map +0 -1
- package/dist/server/api/src/flightline/tech-orders.d.ts +0 -2
- package/dist/server/api/src/flightline/tech-orders.d.ts.map +0 -1
- package/dist/server/api/src/flightline/tech-orders.js +0 -74
- package/dist/server/api/src/flightline/tech-orders.js.map +0 -1
- package/dist/server/api/src/flightline/work-orders.d.ts +0 -2
- package/dist/server/api/src/flightline/work-orders.d.ts.map +0 -1
- package/dist/server/api/src/flightline/work-orders.js +0 -178
- package/dist/server/api/src/flightline/work-orders.js.map +0 -1
- package/dist/server/api/src/index.d.ts +0 -3
- package/dist/server/api/src/index.d.ts.map +0 -1
- package/dist/server/api/src/index.js +0 -192
- package/dist/server/api/src/index.js.map +0 -1
- package/dist/server/api/src/middleware/agent-validation.d.ts +0 -161
- package/dist/server/api/src/middleware/agent-validation.d.ts.map +0 -1
- package/dist/server/api/src/middleware/agent-validation.js +0 -112
- package/dist/server/api/src/middleware/agent-validation.js.map +0 -1
- package/dist/server/api/src/middleware/error-handler.d.ts +0 -8
- package/dist/server/api/src/middleware/error-handler.d.ts.map +0 -1
- package/dist/server/api/src/middleware/error-handler.js +0 -54
- package/dist/server/api/src/middleware/error-handler.js.map +0 -1
- package/dist/server/api/src/middleware/logger.d.ts +0 -8
- package/dist/server/api/src/middleware/logger.d.ts.map +0 -1
- package/dist/server/api/src/middleware/logger.js +0 -31
- package/dist/server/api/src/middleware/logger.js.map +0 -1
- package/dist/server/api/src/middleware/validation.d.ts +0 -322
- package/dist/server/api/src/middleware/validation.d.ts.map +0 -1
- package/dist/server/api/src/middleware/validation.js +0 -189
- package/dist/server/api/src/middleware/validation.js.map +0 -1
- package/dist/server/api/src/squawk/blocker-handler.d.ts +0 -111
- package/dist/server/api/src/squawk/blocker-handler.d.ts.map +0 -1
- package/dist/server/api/src/squawk/blocker-handler.js +0 -262
- package/dist/server/api/src/squawk/blocker-handler.js.map +0 -1
- package/dist/server/api/src/squawk/coordinator.d.ts +0 -2
- package/dist/server/api/src/squawk/coordinator.d.ts.map +0 -1
- package/dist/server/api/src/squawk/coordinator.js +0 -24
- package/dist/server/api/src/squawk/coordinator.js.map +0 -1
- package/dist/server/api/src/squawk/cursor.d.ts +0 -2
- package/dist/server/api/src/squawk/cursor.d.ts.map +0 -1
- package/dist/server/api/src/squawk/cursor.js +0 -55
- package/dist/server/api/src/squawk/cursor.js.map +0 -1
- package/dist/server/api/src/squawk/dependency-resolver.d.ts +0 -107
- package/dist/server/api/src/squawk/dependency-resolver.d.ts.map +0 -1
- package/dist/server/api/src/squawk/dependency-resolver.js +0 -324
- package/dist/server/api/src/squawk/dependency-resolver.js.map +0 -1
- package/dist/server/api/src/squawk/dispatch-orchestrator.d.ts +0 -117
- package/dist/server/api/src/squawk/dispatch-orchestrator.d.ts.map +0 -1
- package/dist/server/api/src/squawk/dispatch-orchestrator.js +0 -296
- package/dist/server/api/src/squawk/dispatch-orchestrator.js.map +0 -1
- package/dist/server/api/src/squawk/lock-coordinator.d.ts +0 -118
- package/dist/server/api/src/squawk/lock-coordinator.d.ts.map +0 -1
- package/dist/server/api/src/squawk/lock-coordinator.js +0 -279
- package/dist/server/api/src/squawk/lock-coordinator.js.map +0 -1
- package/dist/server/api/src/squawk/lock.d.ts +0 -2
- package/dist/server/api/src/squawk/lock.d.ts.map +0 -1
- package/dist/server/api/src/squawk/lock.js +0 -87
- package/dist/server/api/src/squawk/lock.js.map +0 -1
- package/dist/server/api/src/squawk/mailbox.d.ts +0 -2
- package/dist/server/api/src/squawk/mailbox.d.ts.map +0 -1
- package/dist/server/api/src/squawk/mailbox.js +0 -66
- package/dist/server/api/src/squawk/mailbox.js.map +0 -1
- package/dist/server/api/src/squawk/spawning.d.ts +0 -79
- package/dist/server/api/src/squawk/spawning.d.ts.map +0 -1
- package/dist/server/api/src/squawk/spawning.js +0 -226
- package/dist/server/api/src/squawk/spawning.js.map +0 -1
- package/dist/server/api/src/squawk/specialist-tools.d.ts +0 -206
- package/dist/server/api/src/squawk/specialist-tools.d.ts.map +0 -1
- package/dist/server/api/src/squawk/specialist-tools.js +0 -411
- package/dist/server/api/src/squawk/specialist-tools.js.map +0 -1
- package/dist/server/api/src/types/api.d.ts +0 -63
- package/dist/server/api/src/types/api.d.ts.map +0 -1
- package/dist/server/api/src/types/api.js +0 -5
- package/dist/server/api/src/types/api.js.map +0 -1
- package/dist/squawk/src/db/index.d.ts +0 -30
- package/dist/squawk/src/db/index.d.ts.map +0 -1
- package/dist/squawk/src/db/index.js +0 -329
- package/dist/squawk/src/db/index.js.map +0 -1
- package/dist/squawk/src/db/sqlite.d.ts +0 -31
- package/dist/squawk/src/db/sqlite.d.ts.map +0 -1
- package/dist/squawk/src/db/sqlite.js +0 -558
- package/dist/squawk/src/db/sqlite.js.map +0 -1
- package/dist/squawk/src/db/types.d.ts +0 -611
- package/dist/squawk/src/db/types.d.ts.map +0 -1
- package/dist/squawk/src/db/types.js +0 -4
- package/dist/squawk/src/db/types.js.map +0 -1
- package/e2e-integration.test.ts +0 -290
- package/integration.test.ts +0 -186
- package/phase1-integration.test.ts +0 -455
- package/phase2-verification.test.ts +0 -135
- package/server.log +0 -58
- package/src/agent-runner.js +0 -877
- package/src/coordination/agent-lifecycle.ts +0 -13
- package/src/coordination/agent-runner.ts +0 -479
- package/src/coordination/agent-spawner-routes.ts +0 -340
- package/src/coordination/agent-spawner.ts +0 -885
- package/src/coordination/agents.ts +0 -525
- package/src/coordination/checkpoint-routes.ts +0 -382
- package/src/coordination/conflict-resolver.ts +0 -640
- package/src/coordination/missions.ts +0 -219
- package/src/coordination/monitor.ts +0 -593
- package/src/coordination/notifier.ts +0 -547
- package/src/coordination/progress-tracker.ts +0 -410
- package/src/coordination/recovery-manager.ts +0 -531
- package/src/coordination/task-decomposer.ts +0 -491
- package/src/coordination/task-queue-routes.ts +0 -284
- package/src/coordination/task-queue.ts +0 -480
- package/src/coordination/tasks.ts +0 -72
- package/src/flightline/ctk.ts +0 -131
- package/src/flightline/tech-orders.ts +0 -85
- package/src/flightline/work-orders.ts +0 -202
- package/src/index.ts +0 -211
- package/src/middleware/agent-validation.ts +0 -130
- package/src/middleware/error-handler.ts +0 -59
- package/src/middleware/logger.ts +0 -37
- package/src/middleware/validation.ts +0 -235
- package/src/squawk/coordinator.ts +0 -26
- package/src/squawk/cursor.ts +0 -62
- package/src/squawk/lock.ts +0 -98
- package/src/squawk/mailbox.ts +0 -75
- package/src/types/api.ts +0 -71
- package/test-api.ts +0 -310
- package/test-enhanced-agents.ts +0 -428
|
@@ -1,640 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Conflict Resolver for FleetTools Coordination System
|
|
3
|
-
*
|
|
4
|
-
* Detects and resolves conflicts between agents
|
|
5
|
-
* Handles resource, task, and data conflicts
|
|
6
|
-
*/
|
|
7
|
-
|
|
8
|
-
import { randomUUID } from 'node:crypto';
|
|
9
|
-
|
|
10
|
-
export enum ConflictType {
|
|
11
|
-
RESOURCE = 'resource',
|
|
12
|
-
TASK = 'task',
|
|
13
|
-
DATA = 'data'
|
|
14
|
-
}
|
|
15
|
-
|
|
16
|
-
export enum ConflictSeverity {
|
|
17
|
-
LOW = 'low',
|
|
18
|
-
MEDIUM = 'medium',
|
|
19
|
-
HIGH = 'high',
|
|
20
|
-
CRITICAL = 'critical'
|
|
21
|
-
}
|
|
22
|
-
|
|
23
|
-
export enum ConflictResolution {
|
|
24
|
-
FIRST_COME_FIRST_SERVE = 'first_come_first_serve',
|
|
25
|
-
PRIORITY_BASED = 'priority_based',
|
|
26
|
-
RESOURCE_SHARING = 'resource_sharing',
|
|
27
|
-
TASK_SPLITTING = 'task_splitting',
|
|
28
|
-
AGENT_COOPERATION = 'agent_cooperation',
|
|
29
|
-
ARBITRATION = 'arbitration'
|
|
30
|
-
}
|
|
31
|
-
|
|
32
|
-
export interface Conflict {
|
|
33
|
-
id: string;
|
|
34
|
-
type: ConflictType;
|
|
35
|
-
agents: string[];
|
|
36
|
-
description: string;
|
|
37
|
-
severity: ConflictSeverity;
|
|
38
|
-
detectedAt: string;
|
|
39
|
-
resolvedAt?: string;
|
|
40
|
-
resolution?: ConflictResolution;
|
|
41
|
-
resolutionDetails?: string;
|
|
42
|
-
metadata: Record<string, any>;
|
|
43
|
-
}
|
|
44
|
-
|
|
45
|
-
export interface Resource {
|
|
46
|
-
id: string;
|
|
47
|
-
type: 'file' | 'directory' | 'port' | 'memory' | 'cpu' | 'database_connection';
|
|
48
|
-
name: string;
|
|
49
|
-
lockedBy?: string;
|
|
50
|
-
lockType?: 'exclusive' | 'shared';
|
|
51
|
-
lockExpiry?: string;
|
|
52
|
-
}
|
|
53
|
-
|
|
54
|
-
export interface ConflictResolutionStrategy {
|
|
55
|
-
conflictType: ConflictType;
|
|
56
|
-
severity: ConflictSeverity;
|
|
57
|
-
strategy: ConflictResolution;
|
|
58
|
-
conditions?: Record<string, any>;
|
|
59
|
-
priority: number; // Higher number = higher priority
|
|
60
|
-
}
|
|
61
|
-
|
|
62
|
-
export interface ConflictResolverConfig {
|
|
63
|
-
strategies: ConflictResolutionStrategy[];
|
|
64
|
-
autoResolveThreshold: ConflictSeverity;
|
|
65
|
-
arbitrationRequired: boolean;
|
|
66
|
-
conflictRetentionDays: number;
|
|
67
|
-
}
|
|
68
|
-
|
|
69
|
-
export class ConflictResolver {
|
|
70
|
-
private config: ConflictResolverConfig;
|
|
71
|
-
private conflicts: Map<string, Conflict> = new Map();
|
|
72
|
-
private resources: Map<string, Resource> = new Map();
|
|
73
|
-
|
|
74
|
-
constructor(config: Partial<ConflictResolverConfig> = {}) {
|
|
75
|
-
this.config = {
|
|
76
|
-
strategies: this.getDefaultStrategies(),
|
|
77
|
-
autoResolveThreshold: ConflictSeverity.MEDIUM,
|
|
78
|
-
arbitrationRequired: false,
|
|
79
|
-
conflictRetentionDays: 7,
|
|
80
|
-
...config
|
|
81
|
-
};
|
|
82
|
-
|
|
83
|
-
console.log('✓ ConflictResolver initialized');
|
|
84
|
-
}
|
|
85
|
-
|
|
86
|
-
/**
|
|
87
|
-
* Detect potential conflicts between agents
|
|
88
|
-
*/
|
|
89
|
-
async detectConflicts(agents: Array<{
|
|
90
|
-
id: string;
|
|
91
|
-
type: string;
|
|
92
|
-
currentTask?: string;
|
|
93
|
-
resources?: string[];
|
|
94
|
-
metadata?: Record<string, any>;
|
|
95
|
-
}>): Promise<Conflict[]> {
|
|
96
|
-
const detectedConflicts: Conflict[] = [];
|
|
97
|
-
|
|
98
|
-
// Check for resource conflicts
|
|
99
|
-
const resourceConflicts = await this.detectResourceConflicts(agents);
|
|
100
|
-
detectedConflicts.push(...resourceConflicts);
|
|
101
|
-
|
|
102
|
-
// Check for task conflicts
|
|
103
|
-
const taskConflicts = await this.detectTaskConflicts(agents);
|
|
104
|
-
detectedConflicts.push(...taskConflicts);
|
|
105
|
-
|
|
106
|
-
// Check for data conflicts
|
|
107
|
-
const dataConflicts = await this.detectDataConflicts(agents);
|
|
108
|
-
detectedConflicts.push(...dataConflicts);
|
|
109
|
-
|
|
110
|
-
// Store detected conflicts
|
|
111
|
-
detectedConflicts.forEach(conflict => {
|
|
112
|
-
this.conflicts.set(conflict.id, conflict);
|
|
113
|
-
});
|
|
114
|
-
|
|
115
|
-
if (detectedConflicts.length > 0) {
|
|
116
|
-
console.log(`⚠️ Detected ${detectedConflicts.length} conflicts`);
|
|
117
|
-
}
|
|
118
|
-
|
|
119
|
-
return detectedConflicts;
|
|
120
|
-
}
|
|
121
|
-
|
|
122
|
-
/**
|
|
123
|
-
* Detect resource conflicts between agents
|
|
124
|
-
*/
|
|
125
|
-
private async detectResourceConflicts(agents: Array<{
|
|
126
|
-
id: string;
|
|
127
|
-
resources?: string[];
|
|
128
|
-
}>): Promise<Conflict[]> {
|
|
129
|
-
const conflicts: Conflict[] = [];
|
|
130
|
-
const resourceUsage = new Map<string, string[]>(); // resource -> agents
|
|
131
|
-
|
|
132
|
-
// Map resource usage
|
|
133
|
-
agents.forEach(agent => {
|
|
134
|
-
if (agent.resources) {
|
|
135
|
-
agent.resources.forEach(resource => {
|
|
136
|
-
if (!resourceUsage.has(resource)) {
|
|
137
|
-
resourceUsage.set(resource, []);
|
|
138
|
-
}
|
|
139
|
-
resourceUsage.get(resource)!.push(agent.id);
|
|
140
|
-
});
|
|
141
|
-
}
|
|
142
|
-
});
|
|
143
|
-
|
|
144
|
-
// Find conflicts (multiple agents using same resource)
|
|
145
|
-
for (const [resource, agentIds] of resourceUsage.entries()) {
|
|
146
|
-
if (agentIds.length > 1) {
|
|
147
|
-
const conflict: Conflict = {
|
|
148
|
-
id: `cfl_${randomUUID()}`,
|
|
149
|
-
type: ConflictType.RESOURCE,
|
|
150
|
-
agents: agentIds,
|
|
151
|
-
description: `Multiple agents accessing resource: ${resource}`,
|
|
152
|
-
severity: this.assessResourceConflictSeverity(resource, agentIds),
|
|
153
|
-
detectedAt: new Date().toISOString(),
|
|
154
|
-
metadata: {
|
|
155
|
-
resource,
|
|
156
|
-
resourceType: this.inferResourceType(resource),
|
|
157
|
-
conflictingAgents: agentIds
|
|
158
|
-
}
|
|
159
|
-
};
|
|
160
|
-
conflicts.push(conflict);
|
|
161
|
-
}
|
|
162
|
-
}
|
|
163
|
-
|
|
164
|
-
return conflicts;
|
|
165
|
-
}
|
|
166
|
-
|
|
167
|
-
/**
|
|
168
|
-
* Detect task conflicts between agents
|
|
169
|
-
*/
|
|
170
|
-
private async detectTaskConflicts(agents: Array<{
|
|
171
|
-
id: string;
|
|
172
|
-
currentTask?: string;
|
|
173
|
-
metadata?: Record<string, any>;
|
|
174
|
-
}>): Promise<Conflict[]> {
|
|
175
|
-
const conflicts: Conflict[] = [];
|
|
176
|
-
const taskAssignments = new Map<string, string[]>(); // task -> agents
|
|
177
|
-
|
|
178
|
-
// Map task assignments
|
|
179
|
-
agents.forEach(agent => {
|
|
180
|
-
if (agent.currentTask) {
|
|
181
|
-
if (!taskAssignments.has(agent.currentTask)) {
|
|
182
|
-
taskAssignments.set(agent.currentTask, []);
|
|
183
|
-
}
|
|
184
|
-
taskAssignments.get(agent.currentTask)!.push(agent.id);
|
|
185
|
-
}
|
|
186
|
-
});
|
|
187
|
-
|
|
188
|
-
// Find conflicts (multiple agents working on same task)
|
|
189
|
-
for (const [task, agentIds] of taskAssignments.entries()) {
|
|
190
|
-
if (agentIds.length > 1) {
|
|
191
|
-
const conflict: Conflict = {
|
|
192
|
-
id: `cfl_${randomUUID()}`,
|
|
193
|
-
type: ConflictType.TASK,
|
|
194
|
-
agents: agentIds,
|
|
195
|
-
description: `Multiple agents working on task: ${task}`,
|
|
196
|
-
severity: ConflictSeverity.HIGH,
|
|
197
|
-
detectedAt: new Date().toISOString(),
|
|
198
|
-
metadata: {
|
|
199
|
-
task,
|
|
200
|
-
conflictingAgents: agentIds,
|
|
201
|
-
taskType: this.inferTaskType(task)
|
|
202
|
-
}
|
|
203
|
-
};
|
|
204
|
-
conflicts.push(conflict);
|
|
205
|
-
}
|
|
206
|
-
}
|
|
207
|
-
|
|
208
|
-
return conflicts;
|
|
209
|
-
}
|
|
210
|
-
|
|
211
|
-
/**
|
|
212
|
-
* Detect data conflicts between agents
|
|
213
|
-
*/
|
|
214
|
-
private async detectDataConflicts(agents: Array<{
|
|
215
|
-
id: string;
|
|
216
|
-
metadata?: Record<string, any>;
|
|
217
|
-
}>): Promise<Conflict[]> {
|
|
218
|
-
const conflicts: Conflict[] = [];
|
|
219
|
-
const dataAccess = new Map<string, string[]>(); // data -> agents
|
|
220
|
-
|
|
221
|
-
// Map data access based on metadata
|
|
222
|
-
agents.forEach(agent => {
|
|
223
|
-
if (agent.metadata) {
|
|
224
|
-
const accessedData = this.extractAccessedData(agent.metadata);
|
|
225
|
-
accessedData.forEach(data => {
|
|
226
|
-
if (!dataAccess.has(data)) {
|
|
227
|
-
dataAccess.set(data, []);
|
|
228
|
-
}
|
|
229
|
-
dataAccess.get(data)!.push(agent.id);
|
|
230
|
-
});
|
|
231
|
-
}
|
|
232
|
-
});
|
|
233
|
-
|
|
234
|
-
// Find conflicts (simultaneous write access)
|
|
235
|
-
for (const [data, agentIds] of dataAccess.entries()) {
|
|
236
|
-
if (agentIds.length > 1) {
|
|
237
|
-
const conflict: Conflict = {
|
|
238
|
-
id: `cfl_${randomUUID()}`,
|
|
239
|
-
type: ConflictType.DATA,
|
|
240
|
-
agents: agentIds,
|
|
241
|
-
description: `Concurrent data access: ${data}`,
|
|
242
|
-
severity: this.assessDataConflictSeverity(data, agentIds),
|
|
243
|
-
detectedAt: new Date().toISOString(),
|
|
244
|
-
metadata: {
|
|
245
|
-
data,
|
|
246
|
-
conflictingAgents: agentIds,
|
|
247
|
-
accessType: 'write'
|
|
248
|
-
}
|
|
249
|
-
};
|
|
250
|
-
conflicts.push(conflict);
|
|
251
|
-
}
|
|
252
|
-
}
|
|
253
|
-
|
|
254
|
-
return conflicts;
|
|
255
|
-
}
|
|
256
|
-
|
|
257
|
-
/**
|
|
258
|
-
* Resolve detected conflicts
|
|
259
|
-
*/
|
|
260
|
-
async resolveConflict(conflictId: string): Promise<Conflict> {
|
|
261
|
-
const conflict = this.conflicts.get(conflictId);
|
|
262
|
-
if (!conflict) {
|
|
263
|
-
throw new Error(`Conflict not found: ${conflictId}`);
|
|
264
|
-
}
|
|
265
|
-
|
|
266
|
-
// Check if already resolved
|
|
267
|
-
if (conflict.resolvedAt) {
|
|
268
|
-
return conflict;
|
|
269
|
-
}
|
|
270
|
-
|
|
271
|
-
// Find applicable resolution strategy
|
|
272
|
-
const strategy = this.findResolutionStrategy(conflict);
|
|
273
|
-
|
|
274
|
-
// Apply resolution
|
|
275
|
-
const resolutionResult = await this.applyResolution(conflict, strategy);
|
|
276
|
-
|
|
277
|
-
// Update conflict
|
|
278
|
-
conflict.resolvedAt = new Date().toISOString();
|
|
279
|
-
conflict.resolution = strategy;
|
|
280
|
-
conflict.resolutionDetails = resolutionResult.description;
|
|
281
|
-
this.conflicts.set(conflictId, conflict);
|
|
282
|
-
|
|
283
|
-
console.log(`✓ Resolved conflict ${conflictId} using ${strategy} strategy`);
|
|
284
|
-
return conflict;
|
|
285
|
-
}
|
|
286
|
-
|
|
287
|
-
/**
|
|
288
|
-
* Find appropriate resolution strategy for conflict
|
|
289
|
-
*/
|
|
290
|
-
private findResolutionStrategy(conflict: Conflict): ConflictResolution {
|
|
291
|
-
// Find matching strategies
|
|
292
|
-
const applicableStrategies = this.config.strategies.filter(strategy =>
|
|
293
|
-
strategy.conflictType === conflict.type &&
|
|
294
|
-
(strategy.severity === conflict.severity || strategy.severity === ConflictSeverity.CRITICAL)
|
|
295
|
-
);
|
|
296
|
-
|
|
297
|
-
if (applicableStrategies.length === 0) {
|
|
298
|
-
return ConflictResolution.FIRST_COME_FIRST_SERVE;
|
|
299
|
-
}
|
|
300
|
-
|
|
301
|
-
// Sort by priority and return highest priority
|
|
302
|
-
applicableStrategies.sort((a, b) => b.priority - a.priority);
|
|
303
|
-
return applicableStrategies[0].strategy;
|
|
304
|
-
}
|
|
305
|
-
|
|
306
|
-
/**
|
|
307
|
-
* Apply resolution strategy to conflict
|
|
308
|
-
*/
|
|
309
|
-
private async applyResolution(conflict: Conflict, strategy: ConflictResolution): Promise<{
|
|
310
|
-
description: string;
|
|
311
|
-
actions: string[];
|
|
312
|
-
}> {
|
|
313
|
-
switch (strategy) {
|
|
314
|
-
case ConflictResolution.FIRST_COME_FIRST_SERVE:
|
|
315
|
-
return this.applyFirstComeFirstServe(conflict);
|
|
316
|
-
|
|
317
|
-
case ConflictResolution.PRIORITY_BASED:
|
|
318
|
-
return this.applyPriorityBased(conflict);
|
|
319
|
-
|
|
320
|
-
case ConflictResolution.RESOURCE_SHARING:
|
|
321
|
-
return this.applyResourceSharing(conflict);
|
|
322
|
-
|
|
323
|
-
case ConflictResolution.TASK_SPLITTING:
|
|
324
|
-
return this.applyTaskSplitting(conflict);
|
|
325
|
-
|
|
326
|
-
case ConflictResolution.AGENT_COOPERATION:
|
|
327
|
-
return this.applyAgentCooperation(conflict);
|
|
328
|
-
|
|
329
|
-
case ConflictResolution.ARBITRATION:
|
|
330
|
-
return this.applyArbitration(conflict);
|
|
331
|
-
|
|
332
|
-
default:
|
|
333
|
-
return this.applyFirstComeFirstServe(conflict);
|
|
334
|
-
}
|
|
335
|
-
}
|
|
336
|
-
|
|
337
|
-
/**
|
|
338
|
-
* Apply first-come-first-serve resolution
|
|
339
|
-
*/
|
|
340
|
-
private applyFirstComeFirstServe(conflict: Conflict): {
|
|
341
|
-
description: string;
|
|
342
|
-
actions: string[];
|
|
343
|
-
} {
|
|
344
|
-
const winner = conflict.agents[0]; // First agent gets priority
|
|
345
|
-
const losers = conflict.agents.slice(1);
|
|
346
|
-
|
|
347
|
-
return {
|
|
348
|
-
description: `Agent ${winner} retains access, others must wait`,
|
|
349
|
-
actions: [
|
|
350
|
-
`Grant continued access to agent ${winner}`,
|
|
351
|
-
`Request ${losers.join(', ')} to release resources`,
|
|
352
|
-
`Queue ${losers.join(', ')} for later access`
|
|
353
|
-
]
|
|
354
|
-
};
|
|
355
|
-
}
|
|
356
|
-
|
|
357
|
-
/**
|
|
358
|
-
* Apply priority-based resolution
|
|
359
|
-
*/
|
|
360
|
-
private applyPriorityBased(conflict: Conflict): {
|
|
361
|
-
description: string;
|
|
362
|
-
actions: string[];
|
|
363
|
-
} {
|
|
364
|
-
// For now, use agent order as priority (in real implementation, this would use agent priorities)
|
|
365
|
-
const winner = conflict.agents[0];
|
|
366
|
-
const losers = conflict.agents.slice(1);
|
|
367
|
-
|
|
368
|
-
return {
|
|
369
|
-
description: `Higher priority agent ${winner} wins conflict`,
|
|
370
|
-
actions: [
|
|
371
|
-
`Assign priority to agent ${winner}`,
|
|
372
|
-
`Suspend work for ${losers.join(', ')}`,
|
|
373
|
-
`Resume suspended agents when resource available`
|
|
374
|
-
]
|
|
375
|
-
};
|
|
376
|
-
}
|
|
377
|
-
|
|
378
|
-
/**
|
|
379
|
-
* Apply resource sharing resolution
|
|
380
|
-
*/
|
|
381
|
-
private applyResourceSharing(conflict: Conflict): {
|
|
382
|
-
description: string;
|
|
383
|
-
actions: string[];
|
|
384
|
-
} {
|
|
385
|
-
return {
|
|
386
|
-
description: `Enable resource sharing between agents ${conflict.agents.join(', ')}`,
|
|
387
|
-
actions: [
|
|
388
|
-
`Convert resource locks to shared mode`,
|
|
389
|
-
`Coordinate access between all agents`,
|
|
390
|
-
`Monitor for additional conflicts`
|
|
391
|
-
]
|
|
392
|
-
};
|
|
393
|
-
}
|
|
394
|
-
|
|
395
|
-
/**
|
|
396
|
-
* Apply task splitting resolution
|
|
397
|
-
*/
|
|
398
|
-
private applyTaskSplitting(conflict: Conflict): {
|
|
399
|
-
description: string;
|
|
400
|
-
actions: string[];
|
|
401
|
-
} {
|
|
402
|
-
return {
|
|
403
|
-
description: `Split task to avoid agent conflicts`,
|
|
404
|
-
actions: [
|
|
405
|
-
`Divide task into subtasks`,
|
|
406
|
-
`Assign subtasks to different agents`,
|
|
407
|
-
`Coordinate subtask integration`
|
|
408
|
-
]
|
|
409
|
-
};
|
|
410
|
-
}
|
|
411
|
-
|
|
412
|
-
/**
|
|
413
|
-
* Apply agent cooperation resolution
|
|
414
|
-
*/
|
|
415
|
-
private applyAgentCooperation(conflict: Conflict): {
|
|
416
|
-
description: string;
|
|
417
|
-
actions: string[];
|
|
418
|
-
} {
|
|
419
|
-
return {
|
|
420
|
-
description: `Enable cooperation between agents ${conflict.agents.join(', ')}`,
|
|
421
|
-
actions: [
|
|
422
|
-
`Establish communication channel between agents`,
|
|
423
|
-
`Define shared responsibility areas`,
|
|
424
|
-
`Create cooperation protocol`
|
|
425
|
-
]
|
|
426
|
-
};
|
|
427
|
-
}
|
|
428
|
-
|
|
429
|
-
/**
|
|
430
|
-
* Apply arbitration resolution
|
|
431
|
-
*/
|
|
432
|
-
private applyArbitration(conflict: Conflict): {
|
|
433
|
-
description: string;
|
|
434
|
-
actions: string[];
|
|
435
|
-
} {
|
|
436
|
-
// Simple arbitration based on agent ID (in real implementation, this would be more sophisticated)
|
|
437
|
-
const winner = conflict.agents.sort()[0];
|
|
438
|
-
|
|
439
|
-
return {
|
|
440
|
-
description: `Arbitration awards resource to agent ${winner}`,
|
|
441
|
-
actions: [
|
|
442
|
-
`Conduct arbitration between agents`,
|
|
443
|
-
`Award resource access to agent ${winner}`,
|
|
444
|
-
`Document arbitration decision`
|
|
445
|
-
]
|
|
446
|
-
};
|
|
447
|
-
}
|
|
448
|
-
|
|
449
|
-
/**
|
|
450
|
-
* Get all conflicts
|
|
451
|
-
*/
|
|
452
|
-
getConflicts(): Conflict[] {
|
|
453
|
-
return Array.from(this.conflicts.values());
|
|
454
|
-
}
|
|
455
|
-
|
|
456
|
-
/**
|
|
457
|
-
* Get unresolved conflicts
|
|
458
|
-
*/
|
|
459
|
-
getUnresolvedConflicts(): Conflict[] {
|
|
460
|
-
return Array.from(this.conflicts.values()).filter(conflict => !conflict.resolvedAt);
|
|
461
|
-
}
|
|
462
|
-
|
|
463
|
-
/**
|
|
464
|
-
* Auto-resolve conflicts below threshold
|
|
465
|
-
*/
|
|
466
|
-
async autoResolveConflicts(): Promise<Conflict[]> {
|
|
467
|
-
const unresolvedConflicts = this.getUnresolvedConflicts();
|
|
468
|
-
const autoResolvable = unresolvedConflicts.filter(conflict =>
|
|
469
|
-
this.isSeverityBelowThreshold(conflict.severity)
|
|
470
|
-
);
|
|
471
|
-
|
|
472
|
-
const resolved: Conflict[] = [];
|
|
473
|
-
for (const conflict of autoResolvable) {
|
|
474
|
-
try {
|
|
475
|
-
const resolvedConflict = await this.resolveConflict(conflict.id);
|
|
476
|
-
resolved.push(resolvedConflict);
|
|
477
|
-
} catch (error) {
|
|
478
|
-
console.error(`Failed to auto-resolve conflict ${conflict.id}:`, error);
|
|
479
|
-
}
|
|
480
|
-
}
|
|
481
|
-
|
|
482
|
-
if (resolved.length > 0) {
|
|
483
|
-
console.log(`🤖 Auto-resolved ${resolved.length} conflicts`);
|
|
484
|
-
}
|
|
485
|
-
|
|
486
|
-
return resolved;
|
|
487
|
-
}
|
|
488
|
-
|
|
489
|
-
/**
|
|
490
|
-
* Helper methods
|
|
491
|
-
*/
|
|
492
|
-
private assessResourceConflictSeverity(resource: string, agentIds: string[]): ConflictSeverity {
|
|
493
|
-
if (resource.includes('critical') || resource.includes('system')) {
|
|
494
|
-
return ConflictSeverity.CRITICAL;
|
|
495
|
-
}
|
|
496
|
-
if (resource.includes('database') || resource.includes('auth')) {
|
|
497
|
-
return ConflictSeverity.HIGH;
|
|
498
|
-
}
|
|
499
|
-
if (agentIds.length > 3) {
|
|
500
|
-
return ConflictSeverity.HIGH;
|
|
501
|
-
}
|
|
502
|
-
return ConflictSeverity.MEDIUM;
|
|
503
|
-
}
|
|
504
|
-
|
|
505
|
-
private assessDataConflictSeverity(data: string, agentIds: string[]): ConflictSeverity {
|
|
506
|
-
if (data.includes('sensitive') || data.includes('critical')) {
|
|
507
|
-
return ConflictSeverity.CRITICAL;
|
|
508
|
-
}
|
|
509
|
-
if (agentIds.length > 2) {
|
|
510
|
-
return ConflictSeverity.HIGH;
|
|
511
|
-
}
|
|
512
|
-
return ConflictSeverity.MEDIUM;
|
|
513
|
-
}
|
|
514
|
-
|
|
515
|
-
private inferResourceType(resource: string): string {
|
|
516
|
-
if (resource.includes('file')) return 'file';
|
|
517
|
-
if (resource.includes('port')) return 'port';
|
|
518
|
-
if (resource.includes('memory') || resource.includes('cpu')) return 'system';
|
|
519
|
-
return 'unknown';
|
|
520
|
-
}
|
|
521
|
-
|
|
522
|
-
private inferTaskType(task: string): string {
|
|
523
|
-
if (task.includes('api')) return 'api_development';
|
|
524
|
-
if (task.includes('test')) return 'testing';
|
|
525
|
-
if (task.includes('doc')) return 'documentation';
|
|
526
|
-
return 'general';
|
|
527
|
-
}
|
|
528
|
-
|
|
529
|
-
private extractAccessedData(metadata: Record<string, any>): string[] {
|
|
530
|
-
const accessedData: string[] = [];
|
|
531
|
-
|
|
532
|
-
if (metadata.files) {
|
|
533
|
-
accessedData.push(...metadata.files);
|
|
534
|
-
}
|
|
535
|
-
if (metadata.databases) {
|
|
536
|
-
accessedData.push(...metadata.databases);
|
|
537
|
-
}
|
|
538
|
-
if (metadata.endpoints) {
|
|
539
|
-
accessedData.push(...metadata.endpoints);
|
|
540
|
-
}
|
|
541
|
-
|
|
542
|
-
return accessedData;
|
|
543
|
-
}
|
|
544
|
-
|
|
545
|
-
private isSeverityBelowThreshold(severity: ConflictSeverity): boolean {
|
|
546
|
-
const severityOrder = [
|
|
547
|
-
ConflictSeverity.LOW,
|
|
548
|
-
ConflictSeverity.MEDIUM,
|
|
549
|
-
ConflictSeverity.HIGH,
|
|
550
|
-
ConflictSeverity.CRITICAL
|
|
551
|
-
];
|
|
552
|
-
|
|
553
|
-
const thresholdIndex = severityOrder.indexOf(this.config.autoResolveThreshold);
|
|
554
|
-
const severityIndex = severityOrder.indexOf(severity);
|
|
555
|
-
|
|
556
|
-
return severityIndex <= thresholdIndex;
|
|
557
|
-
}
|
|
558
|
-
|
|
559
|
-
/**
|
|
560
|
-
* Get default resolution strategies
|
|
561
|
-
*/
|
|
562
|
-
private getDefaultStrategies(): ConflictResolutionStrategy[] {
|
|
563
|
-
return [
|
|
564
|
-
{
|
|
565
|
-
conflictType: ConflictType.RESOURCE,
|
|
566
|
-
severity: ConflictSeverity.LOW,
|
|
567
|
-
strategy: ConflictResolution.RESOURCE_SHARING,
|
|
568
|
-
priority: 1
|
|
569
|
-
},
|
|
570
|
-
{
|
|
571
|
-
conflictType: ConflictType.RESOURCE,
|
|
572
|
-
severity: ConflictSeverity.MEDIUM,
|
|
573
|
-
strategy: ConflictResolution.PRIORITY_BASED,
|
|
574
|
-
priority: 2
|
|
575
|
-
},
|
|
576
|
-
{
|
|
577
|
-
conflictType: ConflictType.RESOURCE,
|
|
578
|
-
severity: ConflictSeverity.HIGH,
|
|
579
|
-
strategy: ConflictResolution.FIRST_COME_FIRST_SERVE,
|
|
580
|
-
priority: 3
|
|
581
|
-
},
|
|
582
|
-
{
|
|
583
|
-
conflictType: ConflictType.RESOURCE,
|
|
584
|
-
severity: ConflictSeverity.CRITICAL,
|
|
585
|
-
strategy: ConflictResolution.ARBITRATION,
|
|
586
|
-
priority: 4
|
|
587
|
-
},
|
|
588
|
-
{
|
|
589
|
-
conflictType: ConflictType.TASK,
|
|
590
|
-
severity: ConflictSeverity.MEDIUM,
|
|
591
|
-
strategy: ConflictResolution.TASK_SPLITTING,
|
|
592
|
-
priority: 2
|
|
593
|
-
},
|
|
594
|
-
{
|
|
595
|
-
conflictType: ConflictType.TASK,
|
|
596
|
-
severity: ConflictSeverity.HIGH,
|
|
597
|
-
strategy: ConflictResolution.AGENT_COOPERATION,
|
|
598
|
-
priority: 3
|
|
599
|
-
},
|
|
600
|
-
{
|
|
601
|
-
conflictType: ConflictType.DATA,
|
|
602
|
-
severity: ConflictSeverity.LOW,
|
|
603
|
-
strategy: ConflictResolution.RESOURCE_SHARING,
|
|
604
|
-
priority: 1
|
|
605
|
-
},
|
|
606
|
-
{
|
|
607
|
-
conflictType: ConflictType.DATA,
|
|
608
|
-
severity: ConflictSeverity.MEDIUM,
|
|
609
|
-
strategy: ConflictResolution.FIRST_COME_FIRST_SERVE,
|
|
610
|
-
priority: 2
|
|
611
|
-
},
|
|
612
|
-
{
|
|
613
|
-
conflictType: ConflictType.DATA,
|
|
614
|
-
severity: ConflictSeverity.HIGH,
|
|
615
|
-
strategy: ConflictResolution.ARBITRATION,
|
|
616
|
-
priority: 3
|
|
617
|
-
}
|
|
618
|
-
];
|
|
619
|
-
}
|
|
620
|
-
|
|
621
|
-
/**
|
|
622
|
-
* Clean up old resolved conflicts
|
|
623
|
-
*/
|
|
624
|
-
cleanupOldConflicts(): void {
|
|
625
|
-
const cutoffDate = new Date();
|
|
626
|
-
cutoffDate.setDate(cutoffDate.getDate() - this.config.conflictRetentionDays);
|
|
627
|
-
|
|
628
|
-
let cleanedCount = 0;
|
|
629
|
-
for (const [conflictId, conflict] of this.conflicts.entries()) {
|
|
630
|
-
if (conflict.resolvedAt && new Date(conflict.resolvedAt) < cutoffDate) {
|
|
631
|
-
this.conflicts.delete(conflictId);
|
|
632
|
-
cleanedCount++;
|
|
633
|
-
}
|
|
634
|
-
}
|
|
635
|
-
|
|
636
|
-
if (cleanedCount > 0) {
|
|
637
|
-
console.log(`🧹 Cleaned up ${cleanedCount} old conflicts`);
|
|
638
|
-
}
|
|
639
|
-
}
|
|
640
|
-
}
|