@elizaos/plugin-vision 1.2.1 → 2.0.0-alpha.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/build.config.ts +53 -53
- package/dist/index.js +6716 -67
- package/dist/index.js.map +33 -1
- package/dist/workers/florence2-worker.js +112304 -307
- package/dist/workers/florence2-worker.js.map +92 -1
- package/dist/workers/ocr-worker.js +119718 -339
- package/dist/workers/ocr-worker.js.map +137 -1
- package/dist/workers/screen-capture-worker.js +350 -418
- package/dist/workers/screen-capture-worker.js.map +11 -1
- package/package.json +13 -17
- package/README.md +0 -270
- package/dist/action.d.ts +0 -8
- package/dist/action.js +0 -1212
- package/dist/action.js.map +0 -1
- package/dist/audio-capture-stream.d.ts +0 -42
- package/dist/audio-capture-stream.js +0 -516
- package/dist/audio-capture-stream.js.map +0 -1
- package/dist/audio-capture.d.ts +0 -25
- package/dist/audio-capture.js +0 -412
- package/dist/audio-capture.js.map +0 -1
- package/dist/basic.test.d.ts +0 -1
- package/dist/basic.test.js +0 -97
- package/dist/basic.test.js.map +0 -1
- package/dist/config.d.ts +0 -73
- package/dist/config.js +0 -254
- package/dist/config.js.map +0 -1
- package/dist/entity-tracker.d.ts +0 -32
- package/dist/entity-tracker.js +0 -361
- package/dist/entity-tracker.js.map +0 -1
- package/dist/errors.d.ts +0 -67
- package/dist/errors.js +0 -395
- package/dist/errors.js.map +0 -1
- package/dist/face-recognition.d.ts +0 -31
- package/dist/face-recognition.js +0 -332
- package/dist/face-recognition.js.map +0 -1
- package/dist/florence2-local.d.ts +0 -25
- package/dist/florence2-local.js +0 -280
- package/dist/florence2-local.js.map +0 -1
- package/dist/florence2-model.d.ts +0 -36
- package/dist/florence2-model.js +0 -503
- package/dist/florence2-model.js.map +0 -1
- package/dist/index.d.ts +0 -3
- package/dist/ocr-service-real.d.ts +0 -32
- package/dist/ocr-service-real.js +0 -396
- package/dist/ocr-service-real.js.map +0 -1
- package/dist/ocr-service.d.ts +0 -28
- package/dist/ocr-service.js +0 -216
- package/dist/ocr-service.js.map +0 -1
- package/dist/provider.d.ts +0 -2
- package/dist/provider.js +0 -285
- package/dist/provider.js.map +0 -1
- package/dist/screen-capture.d.ts +0 -16
- package/dist/screen-capture.js +0 -302
- package/dist/screen-capture.js.map +0 -1
- package/dist/service.d.ts +0 -73
- package/dist/service.js +0 -1662
- package/dist/service.js.map +0 -1
- package/dist/tests/e2e/index.d.ts +0 -8
- package/dist/tests/e2e/index.js +0 -33
- package/dist/tests/e2e/index.js.map +0 -1
- package/dist/tests/e2e/run-local.d.ts +0 -2
- package/dist/tests/e2e/run-local.js +0 -166
- package/dist/tests/e2e/run-local.js.map +0 -1
- package/dist/tests/e2e/screen-vision.d.ts +0 -11
- package/dist/tests/e2e/screen-vision.js +0 -384
- package/dist/tests/e2e/screen-vision.js.map +0 -1
- package/dist/tests/e2e/vision-autonomy.d.ts +0 -11
- package/dist/tests/e2e/vision-autonomy.js +0 -375
- package/dist/tests/e2e/vision-autonomy.js.map +0 -1
- package/dist/tests/e2e/vision-basic.d.ts +0 -11
- package/dist/tests/e2e/vision-basic.js +0 -434
- package/dist/tests/e2e/vision-basic.js.map +0 -1
- package/dist/tests/e2e/vision-capture-log.d.ts +0 -11
- package/dist/tests/e2e/vision-capture-log.js +0 -302
- package/dist/tests/e2e/vision-capture-log.js.map +0 -1
- package/dist/tests/e2e/vision-runtime.d.ts +0 -11
- package/dist/tests/e2e/vision-runtime.js +0 -357
- package/dist/tests/e2e/vision-runtime.js.map +0 -1
- package/dist/tests/e2e/vision-worker-tests.d.ts +0 -11
- package/dist/tests/e2e/vision-worker-tests.js +0 -466
- package/dist/tests/e2e/vision-worker-tests.js.map +0 -1
- package/dist/tests/test-pattern-generator.d.ts +0 -40
- package/dist/tests/test-pattern-generator.js +0 -191
- package/dist/tests/test-pattern-generator.js.map +0 -1
- package/dist/tests.d.ts +0 -3
- package/dist/tests.js +0 -11
- package/dist/tests.js.map +0 -1
- package/dist/types.d.ts +0 -222
- package/dist/types.js +0 -16
- package/dist/types.js.map +0 -1
- package/dist/vision-models.d.ts +0 -47
- package/dist/vision-models.js +0 -501
- package/dist/vision-models.js.map +0 -1
- package/dist/vision-worker-manager.d.ts +0 -61
- package/dist/vision-worker-manager.js +0 -668
- package/dist/vision-worker-manager.js.map +0 -1
- package/dist/workers/florence2-worker-simple.d.ts +0 -13
- package/dist/workers/florence2-worker-simple.js +0 -121
- package/dist/workers/florence2-worker-simple.js.map +0 -1
- package/dist/workers/florence2-worker.d.ts +0 -1
- package/dist/workers/ocr-worker.d.ts +0 -1
- package/dist/workers/screen-capture-worker.d.ts +0 -1
- package/dist/workers/worker-logger.d.ts +0 -9
- package/dist/workers/worker-logger.js +0 -95
- package/dist/workers/worker-logger.js.map +0 -1
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"vision-worker-manager.js","sourceRoot":"","sources":["../src/vision-worker-manager.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,iDAAwC;AACxC,2BAA6B;AAC7B,6BAAmC;AACnC,sCAAuC;AAevC;IA6CE,6BAAY,MAAoB;QA1ChC,UAAU;QACF,wBAAmB,GAAkB,IAAI,CAAC;QAC1C,oBAAe,GAAkB,IAAI,CAAC;QACtC,cAAS,GAAkB,IAAI,CAAC;QAaxC,eAAe;QACE,uBAAkB,GAAG,EAAE,GAAG,IAAI,GAAG,IAAI,CAAC,CAAC,qBAAqB;QAC5D,2BAAsB,GAAG,EAAE,GAAG,IAAI,GAAG,IAAI,CAAC,CAAC,mBAAmB;QAC9D,qBAAgB,GAAG,CAAC,GAAG,IAAI,GAAG,IAAI,CAAC,CAAC,mBAAmB;QAExE,iBAAiB;QACA,mBAAc,GAAG,CAAC,CAAC;QACnB,gBAAW,GAAG,CAAC,CAAC;QAChB,iBAAY,GAAG,CAAC,CAAC;QACjB,kBAAa,GAAG,CAAC,CAAC;QAClB,oBAAe,GAAG,CAAC,CAAC;QACpB,gBAAW,GAAG,EAAE,CAAC;QAElC,eAAe;QACP,gBAAW,GAAG,IAAI,GAAG,EAAuB,CAAC;QAErD,8BAA8B;QACtB,wBAAmB,GAAyB,IAAI,CAAC;QACjD,2BAAsB,GAAG,IAAI,GAAG,EAA2B,CAAC;QAC5D,oBAAe,GAAqB,IAAI,CAAC;QACzC,yBAAoB,GAAG,CAAC,CAAC,CAAC;QAElC,0BAA0B;QAClB,oBAAe,GAAG,IAAI,GAAG,EAAkB,CAAC;QACnC,yBAAoB,GAAG,CAAC,CAAC;QAGxC,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QAErB,4BAA4B;QAC5B,IAAI,CAAC,YAAY,GAAG,IAAI,iBAAiB,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;QACnE,IAAI,CAAC,sBAAsB,GAAG,IAAI,iBAAiB,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;QACjF,IAAI,CAAC,gBAAgB,GAAG,IAAI,iBAAiB,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;QAErE,eAAe;QACf,IAAI,CAAC,iBAAiB,GAAG,IAAI,UAAU,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;QACjE,IAAI,CAAC,cAAc,GAAG,IAAI,QAAQ,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QACtD,IAAI,CAAC,oBAAoB,GAAG,IAAI,QAAQ,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;QACtE,IAAI,CAAC,cAAc,GAAG,IAAI,QAAQ,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;IAC5D,CAAC;IAEK,wCAAU,GAAhB;;;;;;wBACE,aAAM,CAAC,IAAI,CAAC,sDAAsD,CAAC,CAAC;;;;wBAGlE,8BAA8B;wBAC9B,qBAAM,IAAI,CAAC,wBAAwB,EAAE,EAAA;;wBADrC,8BAA8B;wBAC9B,SAAqC,CAAC;6BAGlC,IAAI,CAAC,MAAM,CAAC,gBAAgB,EAA5B,wBAA4B;wBAC9B,qBAAM,IAAI,CAAC,oBAAoB,EAAE,EAAA;;wBAAjC,SAAiC,CAAC;;;6BAIhC,IAAI,CAAC,MAAM,CAAC,UAAU,EAAtB,wBAAsB;wBACxB,qBAAM,IAAI,CAAC,cAAc,EAAE,EAAA;;wBAA3B,SAA2B,CAAC;;;wBAG9B,aAAM,CAAC,IAAI,CAAC,+CAA+C,CAAC,CAAC;;;;wBAE7D,aAAM,CAAC,KAAK,CAAC,qDAAqD,EAAE,OAAK,CAAC,CAAC;wBAC3E,MAAM,OAAK,CAAC;;;;;KAEf;IAEa,sDAAwB,GAAtC;;;;;gBACQ,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,SAAS,EAAE,0BAA0B,CAAC,CAAC;gBAE/E,IAAI,CAAC,mBAAmB,GAAG,IAAI,uBAAM,CAAC,UAAU,EAAE;oBAChD,UAAU,EAAE;wBACV,MAAM,EAAE;4BACN,YAAY,EAAE,IAAI,CAAC,MAAM,CAAC,YAAY;4BACtC,kBAAkB,EAAE,IAAI,CAAC,MAAM,CAAC,kBAAkB;4BAClD,SAAS,EAAE,IAAI,CAAC,MAAM,CAAC,eAAe;4BACtC,gBAAgB,EAAE,IAAI,CAAC,kBAAkB;yBAC1C;wBACD,YAAY,EAAE,IAAI,CAAC,YAAY;qBAChC;iBACF,CAAC,CAAC;gBAEH,IAAI,CAAC,mBAAmB,CAAC,EAAE,CAAC,SAAS,EAAE,UAAC,GAAG;oBACzC,IAAI,GAAG,CAAC,IAAI,KAAK,KAAK,EAAE,CAAC;wBACvB,KAAI,CAAC,WAAW,CAAC,GAAG,CAAC,eAAe,EAAE;4BACpC,GAAG,EAAE,GAAG,CAAC,GAAG;4BACZ,UAAU,EAAE,GAAG,CAAC,UAAU;4BAC1B,UAAU,EAAE,IAAI,CAAC,GAAG,EAAE;yBACvB,CAAC,CAAC;oBACL,CAAC;yBAAM,IAAI,GAAG,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;wBAChC,aAAM,CAAC,KAAK,CAAC,8BAA8B,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC;oBAC1D,CAAC;yBAAM,IAAI,GAAG,CAAC,IAAI,KAAK,KAAK,EAAE,CAAC;wBAC9B,6BAA6B;wBAC7B,KAAI,CAAC,eAAe,CAAC,qBAAqB,EAAE,GAAG,CAAC,CAAC;oBACnD,CAAC;gBACH,CAAC,CAAC,CAAC;gBAEH,IAAI,CAAC,mBAAmB,CAAC,EAAE,CAAC,OAAO,EAAE,UAAC,KAAK;oBACzC,aAAM,CAAC,KAAK,CAAC,qCAAqC,EAAE,KAAK,CAAC,CAAC;oBAC3D,wCAAwC;oBACxC,UAAU,CAAC,cAAM,OAAA,KAAI,CAAC,0BAA0B,EAAE,EAAjC,CAAiC,EAAE,IAAI,CAAC,CAAC;gBAC5D,CAAC,CAAC,CAAC;gBAEH,IAAI,CAAC,mBAAmB,CAAC,EAAE,CAAC,MAAM,EAAE,UAAC,IAAI;oBACvC,IAAI,IAAI,KAAK,CAAC,EAAE,CAAC;wBACf,aAAM,CAAC,KAAK,CAAC,8DAAuD,IAAI,CAAE,CAAC,CAAC;wBAC5E,wCAAwC;wBACxC,UAAU,CAAC,cAAM,OAAA,KAAI,CAAC,0BAA0B,EAAE,EAAjC,CAAiC,EAAE,IAAI,CAAC,CAAC;oBAC5D,CAAC;gBACH,CAAC,CAAC,CAAC;;;;KACJ;IAEa,kDAAoB,GAAlC;;;;;gBACQ,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,SAAS,EAAE,qBAAqB,CAAC,CAAC;gBAGpE,aAAa,GAAa,EAAE,CAAC;gBAC7B,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,IAAI,GAAG,CAAC;gBACvC,aAAa,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,GAAG,QAAQ,CAAC,CAAC;gBAC3C,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,aAAa,GAAG,CAAC,CAAC,CAAC;gBAC1C,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,aAAa,GAAG,CAAC,CAAC,CAAC;gBAEhD,4CAA4C;gBAC5C,KAAS,CAAC,GAAG,SAAS,GAAG,CAAC,EAAE,CAAC,IAAI,SAAS,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;oBACpD,KAAS,CAAC,GAAG,SAAS,GAAG,CAAC,EAAE,CAAC,IAAI,SAAS,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;wBACpD,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;4BACrB,aAAa,CAAC,IAAI,CAAC,CAAC,GAAG,aAAa,GAAG,CAAC,CAAC,CAAC;wBAC5C,CAAC;oBACH,CAAC;gBACH,CAAC;gBAED,IAAI,CAAC,eAAe,GAAG,IAAI,uBAAM,CAAC,UAAU,EAAE;oBAC5C,UAAU,EAAE;wBACV,MAAM,EAAE;4BACN,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC,QAAQ,IAAI,GAAG;4BACrC,aAAa,eAAA;yBACd;wBACD,YAAY,EAAE,IAAI,CAAC,YAAY;wBAC/B,aAAa,EAAE,IAAI,CAAC,sBAAsB;qBAC3C;iBACF,CAAC,CAAC;gBAEH,IAAI,CAAC,eAAe,CAAC,EAAE,CAAC,SAAS,EAAE,UAAC,GAAG;oBACrC,IAAI,GAAG,CAAC,IAAI,KAAK,KAAK,EAAE,CAAC;wBACvB,KAAI,CAAC,WAAW,CAAC,GAAG,CAAC,WAAW,EAAE;4BAChC,GAAG,EAAE,GAAG,CAAC,GAAG;4BACZ,UAAU,EAAE,GAAG,CAAC,UAAU;4BAC1B,UAAU,EAAE,IAAI,CAAC,GAAG,EAAE;yBACvB,CAAC,CAAC;oBACL,CAAC;yBAAM,IAAI,GAAG,CAAC,IAAI,KAAK,eAAe,EAAE,CAAC;wBACxC,8BAA8B;wBAC9B,KAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC,CAAC;oBACjC,CAAC;yBAAM,IAAI,GAAG,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;wBAChC,aAAM,CAAC,KAAK,CAAC,0BAA0B,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC;oBACtD,CAAC;yBAAM,IAAI,GAAG,CAAC,IAAI,KAAK,KAAK,EAAE,CAAC;wBAC9B,6BAA6B;wBAC7B,KAAI,CAAC,eAAe,CAAC,iBAAiB,EAAE,GAAG,CAAC,CAAC;oBAC/C,CAAC;gBACH,CAAC,CAAC,CAAC;gBAEH,IAAI,CAAC,eAAe,CAAC,EAAE,CAAC,OAAO,EAAE,UAAC,KAAK;oBACrC,aAAM,CAAC,KAAK,CAAC,iCAAiC,EAAE,KAAK,CAAC,CAAC;oBACvD,wCAAwC;oBACxC,UAAU,CAAC,cAAM,OAAA,KAAI,CAAC,sBAAsB,EAAE,EAA7B,CAA6B,EAAE,IAAI,CAAC,CAAC;gBACxD,CAAC,CAAC,CAAC;gBAEH,IAAI,CAAC,eAAe,CAAC,EAAE,CAAC,MAAM,EAAE,UAAC,IAAI;oBACnC,IAAI,IAAI,KAAK,CAAC,EAAE,CAAC;wBACf,aAAM,CAAC,KAAK,CAAC,0DAAmD,IAAI,CAAE,CAAC,CAAC;wBACxE,wCAAwC;wBACxC,UAAU,CAAC,cAAM,OAAA,KAAI,CAAC,sBAAsB,EAAE,EAA7B,CAA6B,EAAE,IAAI,CAAC,CAAC;oBACxD,CAAC;gBACH,CAAC,CAAC,CAAC;;;;KACJ;IAEa,4CAAc,GAA5B;;;;;gBACQ,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,SAAS,EAAE,eAAe,CAAC,CAAC;gBAEpE,IAAI,CAAC,SAAS,GAAG,IAAI,uBAAM,CAAC,UAAU,EAAE;oBACtC,UAAU,EAAE;wBACV,MAAM,EAAE;4BACN,iBAAiB,EAAE,IAAI;4BACvB,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC,QAAQ,IAAI,GAAG;4BACrC,WAAW,EAAE,IAAI,CAAC,MAAM,CAAC,WAAW;yBACrC;wBACD,YAAY,EAAE,IAAI,CAAC,YAAY;wBAC/B,aAAa,EAAE,IAAI,CAAC,gBAAgB;qBACrC;iBACF,CAAC,CAAC;gBAEH,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,SAAS,EAAE,UAAC,GAAG;oBAC/B,IAAI,GAAG,CAAC,IAAI,KAAK,KAAK,EAAE,CAAC;wBACvB,KAAI,CAAC,WAAW,CAAC,GAAG,CAAC,KAAK,EAAE;4BAC1B,GAAG,EAAE,GAAG,CAAC,GAAG;4BACZ,UAAU,EAAE,GAAG,CAAC,UAAU;4BAC1B,UAAU,EAAE,IAAI,CAAC,GAAG,EAAE;yBACvB,CAAC,CAAC;oBACL,CAAC;yBAAM,IAAI,GAAG,CAAC,IAAI,KAAK,cAAc,EAAE,CAAC;wBACvC,0BAA0B;wBAC1B,KAAI,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC;oBAC3B,CAAC;yBAAM,IAAI,GAAG,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;wBAChC,aAAM,CAAC,KAAK,CAAC,oBAAoB,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC;oBAChD,CAAC;yBAAM,IAAI,GAAG,CAAC,IAAI,KAAK,KAAK,EAAE,CAAC;wBAC9B,6BAA6B;wBAC7B,KAAI,CAAC,eAAe,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC;oBACzC,CAAC;gBACH,CAAC,CAAC,CAAC;gBAEH,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,OAAO,EAAE,UAAC,KAAK;oBAC/B,aAAM,CAAC,KAAK,CAAC,2BAA2B,EAAE,KAAK,CAAC,CAAC;oBACjD,wCAAwC;oBACxC,UAAU,CAAC,cAAM,OAAA,KAAI,CAAC,gBAAgB,EAAE,EAAvB,CAAuB,EAAE,IAAI,CAAC,CAAC;gBAClD,CAAC,CAAC,CAAC;gBAEH,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,MAAM,EAAE,UAAC,IAAI;oBAC7B,IAAI,IAAI,KAAK,CAAC,EAAE,CAAC;wBACf,aAAM,CAAC,KAAK,CAAC,oDAA6C,IAAI,CAAE,CAAC,CAAC;wBAClE,wCAAwC;wBACxC,UAAU,CAAC,cAAM,OAAA,KAAI,CAAC,gBAAgB,EAAE,EAAvB,CAAuB,EAAE,IAAI,CAAC,CAAC;oBAClD,CAAC;gBACH,CAAC,CAAC,CAAC;;;;KACJ;IAEO,kDAAoB,GAA5B,UAA6B,GAAQ;QACnC,iCAAiC;QACjC,IAAI,CAAC;YACH,IAAM,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC;YAC1B,IAAM,MAAM,GAAG,IAAI,CAAC,mBAAmB,CAAC,MAAM,CAAC,CAAC;YAChD,IAAI,MAAM,EAAE,CAAC;gBACX,IAAI,CAAC,sBAAsB,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;YAClD,CAAC;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,aAAM,CAAC,KAAK,CAAC,yDAAyD,EAAE,KAAK,CAAC,CAAC;QACjF,CAAC;IACH,CAAC;IAEO,4CAAc,GAAtB,UAAuB,IAAS;QAC9B,qCAAqC;QACrC,IAAI,CAAC;YACH,IAAM,MAAM,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC;YACpC,IAAI,MAAM,EAAE,CAAC;gBACX,IAAI,CAAC,eAAe,GAAG,MAAM,CAAC;YAChC,CAAC;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,aAAM,CAAC,KAAK,CAAC,mDAAmD,EAAE,KAAK,CAAC,CAAC;QAC3E,CAAC;IACH,CAAC;IAEO,iDAAmB,GAA3B,UAA4B,MAAc;QACxC,IAAI,CAAC;YACH,+BAA+B;YAC/B,IAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,kBAAkB,CAAC,CAAC;YAC/C,IAAI,CAAC,KAAK,EAAE,CAAC;gBACX,OAAO,IAAI,CAAC;YACd,CAAC;YAED,IAAM,GAAG,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YACnC,IAAM,GAAG,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YACnC,IAAM,SAAS,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,CAAC,CAAC,0BAA0B;YAE5D,IAAM,mBAAmB,GAAG,EAAE,CAAC;YAC/B,IAAM,eAAe,GAAG,IAAI,CAAC;YAC7B,IAAM,MAAM,GAAG,mBAAmB,GAAG,SAAS,GAAG,eAAe,CAAC;YAEjE,cAAc;YACd,IAAM,QAAM,GAAG,IAAI,CAAC,oBAAoB,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;YACjE,IAAI,QAAM,KAAK,CAAC,IAAI,QAAM,GAAG,eAAe,GAAG,CAAC,EAAE,CAAC;gBACjD,OAAO,IAAI,CAAC;YACd,CAAC;YAED,iBAAiB;YACjB,IAAM,KAAK,GAAG,IAAI,UAAU,CAAC,QAAM,CAAC,CAAC;YACrC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAM,EAAE,CAAC,EAAE,EAAE,CAAC;gBAChC,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,oBAAoB,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;YAChE,CAAC;YAED,IAAM,IAAI,GAAG,IAAI,kBAAW,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YAC7C,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAC1B,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,aAAM,CAAC,KAAK,CAAC,wDAAwD,EAAE,KAAK,CAAC,CAAC;YAC9E,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC;IAEO,2CAAa,GAArB;QACE,IAAI,CAAC;YACH,IAAM,mBAAmB,GAAG,EAAE,CAAC;YAC/B,IAAM,MAAM,GAAG,mBAAmB,CAAC;YAEnC,cAAc;YACd,IAAM,QAAM,GAAG,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;YAC3D,IAAI,QAAM,KAAK,CAAC,EAAE,CAAC;gBACjB,OAAO,IAAI,CAAC;YACd,CAAC;YAED,8BAA8B;YAC9B,IAAM,QAAQ,GAAG,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,IAAI,CAAC,CAAC;YACjE,IAAM,UAAU,GAAG,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,IAAI,CAAC,CAAC;YAEpE,iBAAiB;YACjB,IAAM,UAAU,GAAG,MAAM,GAAG,EAAE,CAAC;YAC/B,IAAM,KAAK,GAAG,IAAI,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,QAAM,EAAE,KAAK,CAAC,CAAC,CAAC;YACtD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;gBACtC,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,UAAU,GAAG,CAAC,CAAC,CAAC;YAC1D,CAAC;YAED,IAAM,IAAI,GAAG,IAAI,kBAAW,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YAC7C,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAC1B,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,aAAM,CAAC,KAAK,CAAC,kDAAkD,EAAE,KAAK,CAAC,CAAC;YACxE,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC;IAED,kDAAkD;IAElD,oDAAsB,GAAtB;QACE,8BAA8B;QAC9B,IAAM,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC;QAE1E,IAAI,OAAO,IAAI,IAAI,CAAC,oBAAoB,EAAE,CAAC;YACzC,OAAO,IAAI,CAAC,mBAAmB,CAAC;QAClC,CAAC;QAED,IAAI,CAAC;YACH,IAAM,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;YACrE,IAAM,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;YACvE,IAAM,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC;YAC/E,IAAM,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE,IAAI,CAAC,eAAe,CAAC,CAAC;YAE7E,+BAA+B;YAC/B,IAAI,CAAC,mBAAmB,GAAG;gBACzB,SAAS,WAAA;gBACT,KAAK,OAAA;gBACL,MAAM,QAAA;gBACN,IAAI,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,8CAA8C;gBACrE,KAAK,EAAE,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,MAAM,CAAC;aACzC,CAAC;YAEF,IAAI,CAAC,oBAAoB,GAAG,OAAO,CAAC;QACtC,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,aAAM,CAAC,KAAK,CAAC,sDAAsD,EAAE,KAAK,CAAC,CAAC;QAC9E,CAAC;QAED,OAAO,IAAI,CAAC,mBAAmB,CAAC;IAClC,CAAC;IAED,oDAAsB,GAAtB;;QACE,IAAM,aAAa,GAAG,IAAI,CAAC,sBAAsB,EAAE,CAAC;QAEpD,iCAAiC;QACjC,IAAM,iBAAiB,GAAa,EAAE,CAAC;QACvC,IAAM,UAAU,GAAU,EAAE,CAAC;QAC7B,IAAM,OAAO,GAAG,IAAI,GAAG,EAAU,CAAC;QAElC,IAAI,CAAC,sBAAsB,CAAC,OAAO,CAAC,UAAC,MAAM;YACzC,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;gBACnB,iBAAiB,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;YACzC,CAAC;YACD,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;gBACnB,UAAU,CAAC,IAAI,OAAf,UAAU,EAAS,MAAM,CAAC,OAAO,EAAE;YACrC,CAAC;YACD,IAAI,MAAM,CAAC,IAAI,EAAE,CAAC;gBAChB,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,UAAC,GAAG,IAAK,OAAA,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,EAAhB,CAAgB,CAAC,CAAC;YACjD,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,IAAM,MAAM,GAAG,IAAI,CAAC,aAAa,CAAC,CAAA,aAAa,aAAb,aAAa,uBAAb,aAAa,CAAE,KAAK,KAAI,CAAC,EAAE,CAAA,aAAa,aAAb,aAAa,uBAAb,aAAa,CAAE,MAAM,KAAI,CAAC,CAAC,CAAC;QAEzF,OAAO;YACL,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;YACrB,WAAW,EAAE,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC;YACzC,OAAO,EAAE,UAAU;YACnB,MAAM,EAAE,EAAE,EAAE,0CAA0C;YACtD,YAAY,EAAE,IAAI;YAClB,gBAAgB,EAAE,GAAG;YACrB,aAAa,EAAE,IAAI,CAAC,mBAAmB,IAAI,SAAS;YACpD,cAAc,EAAE;gBACd,aAAa,EAAE,MAAA,IAAI,CAAC,eAAe,0CAAE,QAAQ;gBAC7C,UAAU,EAAE;oBACV,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;oBACrB,SAAS,EAAE,IAAI,CAAC,sBAAsB,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK;oBAC5D,GAAG,EAAE,IAAI,CAAC,eAAe,IAAI,SAAS;iBACvC;gBACD,WAAW,EAAE,UAAG,CAAA,aAAa,aAAb,aAAa,uBAAb,aAAa,CAAE,KAAK,CAAC,MAAM,KAAI,CAAC,oBAAiB;gBACjE,UAAU,EAAE,UAAU,CAAC,GAAG,CAAC,UAAC,GAAG,IAAK,OAAA,CAAC;oBACnC,IAAI,EAAE,GAAG,CAAC,KAAK;oBACf,IAAI,EAAE,EAAE;oBACR,QAAQ,EAAE,GAAG,CAAC,IAAI;iBACnB,CAAC,EAJkC,CAIlC,CAAC;aACJ;SACF,CAAC;IACJ,CAAC;IAEO,2CAAa,GAArB,UACE,KAAa,EACb,MAAc;QAUd,IAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,IAAI,GAAG,CAAC;QAC7C,IAAM,KAAK,GAQN,EAAE,CAAC;QAER,KAAK,IAAI,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,QAAQ,CAAC,EAAE,GAAG,EAAE,EAAE,CAAC;YAC5D,KAAK,IAAI,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,GAAG,QAAQ,CAAC,EAAE,GAAG,EAAE,EAAE,CAAC;gBAC3D,IAAM,CAAC,GAAG,GAAG,GAAG,QAAQ,CAAC;gBACzB,IAAM,CAAC,GAAG,GAAG,GAAG,QAAQ,CAAC;gBACzB,KAAK,CAAC,IAAI,CAAC;oBACT,EAAE,EAAE,eAAQ,GAAG,cAAI,GAAG,CAAE;oBACxB,GAAG,KAAA;oBACH,GAAG,KAAA;oBACH,CAAC,GAAA;oBACD,CAAC,GAAA;oBACD,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,KAAK,GAAG,CAAC,CAAC;oBACpC,MAAM,EAAE,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,MAAM,GAAG,CAAC,CAAC;iBACvC,CAAC,CAAC;YACL,CAAC;QACH,CAAC;QAED,OAAO,KAAK,CAAC;IACf,CAAC;IAED,4CAAc,GAAd;QACE,OAAO,IAAI,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IACnC,CAAC;IAEK,6CAAe,GAArB,UAAsB,KAAa;;;gBACjC,IAAI,IAAI,CAAC,mBAAmB,EAAE,CAAC;oBAC7B,IAAI,CAAC,mBAAmB,CAAC,WAAW,CAAC;wBACnC,IAAI,EAAE,aAAa;wBACnB,YAAY,EAAE,KAAK;qBACpB,CAAC,CAAC;gBACL,CAAC;;;;KACF;IAEK,4CAAc,GAApB,UACE,OAAuE;;;gBAEvE,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;oBACnB,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC;wBACzB,IAAI,EAAE,gBAAgB;wBACtB,OAAO,SAAA;qBACR,CAAC,CAAC;gBACL,CAAC;;;;KACF;IAEK,kCAAI,GAAV;;;;;;;wBACE,aAAM,CAAC,IAAI,CAAC,+CAA+C,CAAC,CAAC;wBAEvD,YAAY,GAAoB,EAAE,CAAC;wBAEzC,IAAI,IAAI,CAAC,mBAAmB,EAAE,CAAC;4BAC7B,YAAY,CAAC,IAAI,CACf,IAAI,OAAO,CAAC,UAAC,OAAO;gCAClB,KAAI,CAAC,mBAAoB,CAAC,IAAI,CAAC,MAAM,EAAE,cAAM,OAAA,OAAO,EAAE,EAAT,CAAS,CAAC,CAAC;gCACxD,KAAI,CAAC,mBAAoB,CAAC,WAAW,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC;4BAC1D,CAAC,CAAC,CACH,CAAC;wBACJ,CAAC;wBAED,IAAI,IAAI,CAAC,eAAe,EAAE,CAAC;4BACzB,YAAY,CAAC,IAAI,CACf,IAAI,OAAO,CAAC,UAAC,OAAO;gCAClB,KAAI,CAAC,eAAgB,CAAC,IAAI,CAAC,MAAM,EAAE,cAAM,OAAA,OAAO,EAAE,EAAT,CAAS,CAAC,CAAC;gCACpD,KAAI,CAAC,eAAgB,CAAC,WAAW,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC;4BACtD,CAAC,CAAC,CACH,CAAC;wBACJ,CAAC;wBAED,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;4BACnB,YAAY,CAAC,IAAI,CACf,IAAI,OAAO,CAAC,UAAC,OAAO;gCAClB,KAAI,CAAC,SAAU,CAAC,IAAI,CAAC,MAAM,EAAE,cAAM,OAAA,OAAO,EAAE,EAAT,CAAS,CAAC,CAAC;gCAC9C,KAAI,CAAC,SAAU,CAAC,WAAW,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC;4BAChD,CAAC,CAAC,CACH,CAAC;wBACJ,CAAC;wBAED,qBAAM,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,EAAA;;wBAA/B,SAA+B,CAAC;wBAChC,aAAM,CAAC,IAAI,CAAC,2CAA2C,CAAC,CAAC;;;;;KAC1D;IAEO,6CAAe,GAAvB,UAAwB,UAAkB,EAAE,GAAQ;QAC1C,IAAA,KAAK,GAAoB,GAAG,MAAvB,EAAE,OAAO,GAAW,GAAG,QAAd,EAAE,IAAI,GAAK,GAAG,KAAR,CAAS;QACrC,IAAM,gBAAgB,GAAG,WAAI,UAAU,eAAK,OAAO,CAAE,CAAC;QAEtD,QAAQ,KAAK,EAAE,CAAC;YACd,KAAK,MAAM;gBACT,aAAM,CAAC,IAAI,OAAX,aAAM,iBAAM,gBAAgB,GAAK,IAAI,UAAE;gBACvC,MAAM;YACR,KAAK,MAAM;gBACT,aAAM,CAAC,IAAI,OAAX,aAAM,iBAAM,gBAAgB,GAAK,IAAI,UAAE;gBACvC,MAAM;YACR,KAAK,OAAO;gBACV,aAAM,CAAC,KAAK,OAAZ,aAAM,iBAAO,gBAAgB,GAAK,IAAI,UAAE;gBACxC,MAAM;YACR,KAAK,OAAO;gBACV,aAAM,CAAC,KAAK,OAAZ,aAAM,iBAAO,gBAAgB,GAAK,IAAI,UAAE;gBACxC,MAAM;QACV,CAAC;IACH,CAAC;IAEa,wDAA0B,GAAxC;;;;;;wBACQ,QAAQ,GAAG,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;wBAEhE,IAAI,QAAQ,IAAI,IAAI,CAAC,oBAAoB,EAAE,CAAC;4BAC1C,aAAM,CAAC,KAAK,CAAC,8EAA8E,CAAC,CAAC;4BAC7F,sBAAO;wBACT,CAAC;wBAED,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,eAAe,EAAE,QAAQ,GAAG,CAAC,CAAC,CAAC;wBACxD,aAAM,CAAC,IAAI,CAAC,0EAAmE,QAAQ,GAAG,CAAC,MAAG,CAAC,CAAC;;;;wBAG9F,2BAA2B;wBAC3B,IAAI,IAAI,CAAC,mBAAmB,EAAE,CAAC;4BAC7B,IAAI,CAAC,mBAAmB,CAAC,kBAAkB,EAAE,CAAC;4BAC9C,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC;wBAClC,CAAC;wBAED,mBAAmB;wBACnB,qBAAM,IAAI,CAAC,wBAAwB,EAAE,EAAA;;wBADrC,mBAAmB;wBACnB,SAAqC,CAAC;wBAEtC,4CAA4C;wBAC5C,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,eAAe,EAAE,CAAC,CAAC,CAAC;;;;wBAE7C,aAAM,CAAC,KAAK,CAAC,gEAAgE,EAAE,OAAK,CAAC,CAAC;;;;;;KAEzF;IAEa,oDAAsB,GAApC;;;;;;wBACQ,QAAQ,GAAG,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;wBAE5D,IAAI,QAAQ,IAAI,IAAI,CAAC,oBAAoB,EAAE,CAAC;4BAC1C,aAAM,CAAC,KAAK,CAAC,yEAAyE,CAAC,CAAC;4BACxF,sBAAO;wBACT,CAAC;wBAED,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,WAAW,EAAE,QAAQ,GAAG,CAAC,CAAC,CAAC;wBACpD,aAAM,CAAC,IAAI,CAAC,qEAA8D,QAAQ,GAAG,CAAC,MAAG,CAAC,CAAC;;;;wBAGzF,2BAA2B;wBAC3B,IAAI,IAAI,CAAC,eAAe,EAAE,CAAC;4BACzB,IAAI,CAAC,eAAe,CAAC,kBAAkB,EAAE,CAAC;4BAC1C,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC;wBAC9B,CAAC;wBAED,mBAAmB;wBACnB,qBAAM,IAAI,CAAC,oBAAoB,EAAE,EAAA;;wBADjC,mBAAmB;wBACnB,SAAiC,CAAC;wBAElC,4CAA4C;wBAC5C,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC;;;;wBAEzC,aAAM,CAAC,KAAK,CAAC,2DAA2D,EAAE,OAAK,CAAC,CAAC;;;;;;KAEpF;IAEa,8CAAgB,GAA9B;;;;;;wBACQ,QAAQ,GAAG,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;wBAEtD,IAAI,QAAQ,IAAI,IAAI,CAAC,oBAAoB,EAAE,CAAC;4BAC1C,aAAM,CAAC,KAAK,CAAC,mEAAmE,CAAC,CAAC;4BAClF,sBAAO;wBACT,CAAC;wBAED,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,KAAK,EAAE,QAAQ,GAAG,CAAC,CAAC,CAAC;wBAC9C,aAAM,CAAC,IAAI,CAAC,+DAAwD,QAAQ,GAAG,CAAC,MAAG,CAAC,CAAC;;;;wBAGnF,2BAA2B;wBAC3B,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;4BACnB,IAAI,CAAC,SAAS,CAAC,kBAAkB,EAAE,CAAC;4BACpC,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;wBACxB,CAAC;wBAED,mBAAmB;wBACnB,qBAAM,IAAI,CAAC,cAAc,EAAE,EAAA;;wBAD3B,mBAAmB;wBACnB,SAA2B,CAAC;wBAE5B,4CAA4C;wBAC5C,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;;;;wBAEnC,aAAM,CAAC,KAAK,CAAC,qDAAqD,EAAE,OAAK,CAAC,CAAC;;;;;;KAE9E;IACH,0BAAC;AAAD,CAAC,AAxmBD,IAwmBC;AAxmBY,kDAAmB","sourcesContent":["import { Worker } from 'worker_threads';\nimport * as path from 'path';\nimport { TextDecoder } from 'util';\nimport { logger } from '@elizaos/core';\nimport type {\n VisionConfig,\n ScreenCapture,\n Florence2Result,\n OCRResult,\n EnhancedSceneDescription,\n} from './types';\n\ninterface WorkerStats {\n fps: number;\n frameCount: number;\n lastUpdate: number;\n}\n\nexport class VisionWorkerManager {\n private config: VisionConfig;\n\n // Workers\n private screenCaptureWorker: Worker | null = null;\n private florence2Worker: Worker | null = null;\n private ocrWorker: Worker | null = null;\n\n // Shared buffers\n private screenBuffer: SharedArrayBuffer;\n private florence2ResultsBuffer: SharedArrayBuffer;\n private ocrResultsBuffer: SharedArrayBuffer;\n\n // Buffer views\n private screenAtomicState: Int32Array;\n private screenDataView: DataView;\n private florence2ResultsView: DataView;\n private ocrResultsView: DataView;\n\n // Buffer sizes\n private readonly SCREEN_BUFFER_SIZE = 50 * 1024 * 1024; // 50MB for 4K screen\n private readonly FLORENCE2_RESULTS_SIZE = 10 * 1024 * 1024; // 10MB for results\n private readonly OCR_RESULTS_SIZE = 5 * 1024 * 1024; // 5MB for OCR text\n\n // Atomic indices\n private readonly FRAME_ID_INDEX = 0;\n private readonly WIDTH_INDEX = 2;\n private readonly HEIGHT_INDEX = 3;\n private readonly DISPLAY_INDEX = 4;\n private readonly TIMESTAMP_INDEX = 5;\n private readonly DATA_OFFSET = 24;\n\n // Worker stats\n private workerStats = new Map<string, WorkerStats>();\n\n // Latest processed data cache\n private latestScreenCapture: ScreenCapture | null = null;\n private latestFlorence2Results = new Map<string, Florence2Result>();\n private latestOCRResult: OCRResult | null = null;\n private lastProcessedFrameId = -1;\n\n // Worker restart tracking\n private restartAttempts = new Map<string, number>();\n private readonly MAX_RESTART_ATTEMPTS = 3;\n\n constructor(config: VisionConfig) {\n this.config = config;\n\n // Initialize shared buffers\n this.screenBuffer = new SharedArrayBuffer(this.SCREEN_BUFFER_SIZE);\n this.florence2ResultsBuffer = new SharedArrayBuffer(this.FLORENCE2_RESULTS_SIZE);\n this.ocrResultsBuffer = new SharedArrayBuffer(this.OCR_RESULTS_SIZE);\n\n // Create views\n this.screenAtomicState = new Int32Array(this.screenBuffer, 0, 6);\n this.screenDataView = new DataView(this.screenBuffer);\n this.florence2ResultsView = new DataView(this.florence2ResultsBuffer);\n this.ocrResultsView = new DataView(this.ocrResultsBuffer);\n }\n\n async initialize(): Promise<void> {\n logger.info('[VisionWorkerManager] Initializing worker threads...');\n\n try {\n // Start screen capture worker\n await this.startScreenCaptureWorker();\n\n // Start Florence-2 worker if enabled\n if (this.config.florence2Enabled) {\n await this.startFlorence2Worker();\n }\n\n // Start OCR worker if enabled\n if (this.config.ocrEnabled) {\n await this.startOCRWorker();\n }\n\n logger.info('[VisionWorkerManager] All workers initialized');\n } catch (error) {\n logger.error('[VisionWorkerManager] Failed to initialize workers:', error);\n throw error;\n }\n }\n\n private async startScreenCaptureWorker(): Promise<void> {\n const workerPath = path.join(__dirname, 'workers', 'screen-capture-worker.js');\n\n this.screenCaptureWorker = new Worker(workerPath, {\n workerData: {\n config: {\n displayIndex: this.config.displayIndex,\n captureAllDisplays: this.config.captureAllDisplays,\n targetFPS: this.config.targetScreenFPS,\n sharedBufferSize: this.SCREEN_BUFFER_SIZE,\n },\n sharedBuffer: this.screenBuffer,\n },\n });\n\n this.screenCaptureWorker.on('message', (msg) => {\n if (msg.type === 'fps') {\n this.workerStats.set('screenCapture', {\n fps: msg.fps,\n frameCount: msg.frameCount,\n lastUpdate: Date.now(),\n });\n } else if (msg.type === 'error') {\n logger.error('[ScreenCaptureWorker] Error:', msg.error);\n } else if (msg.type === 'log') {\n // Handle worker log messages\n this.handleWorkerLog('ScreenCaptureWorker', msg);\n }\n });\n\n this.screenCaptureWorker.on('error', (error) => {\n logger.error('[ScreenCaptureWorker] Worker error:', error);\n // Attempt to restart worker after error\n setTimeout(() => this.restartScreenCaptureWorker(), 1000);\n });\n\n this.screenCaptureWorker.on('exit', (code) => {\n if (code !== 0) {\n logger.error(`[ScreenCaptureWorker] Worker stopped with exit code ${code}`);\n // Attempt to restart worker after crash\n setTimeout(() => this.restartScreenCaptureWorker(), 1000);\n }\n });\n }\n\n private async startFlorence2Worker(): Promise<void> {\n const workerPath = path.join(__dirname, 'workers', 'florence2-worker.js');\n\n // Calculate priority tiles (center tiles)\n const priorityTiles: number[] = [];\n const tileSize = this.config.tileSize || 256;\n const estimatedCols = Math.ceil(1920 / tileSize); // Estimate based on common resolution\n const centerRow = Math.floor(estimatedCols / 2);\n const centerCol = Math.floor(estimatedCols / 2);\n\n // Add center and adjacent tiles as priority\n for (let r = centerRow - 1; r <= centerRow + 1; r++) {\n for (let c = centerCol - 1; c <= centerCol + 1; c++) {\n if (r >= 0 && c >= 0) {\n priorityTiles.push(r * estimatedCols + c);\n }\n }\n }\n\n this.florence2Worker = new Worker(workerPath, {\n workerData: {\n config: {\n tileSize: this.config.tileSize || 256,\n priorityTiles,\n },\n sharedBuffer: this.screenBuffer,\n resultsBuffer: this.florence2ResultsBuffer,\n },\n });\n\n this.florence2Worker.on('message', (msg) => {\n if (msg.type === 'fps') {\n this.workerStats.set('florence2', {\n fps: msg.fps,\n frameCount: msg.frameCount,\n lastUpdate: Date.now(),\n });\n } else if (msg.type === 'tile_analyzed') {\n // Update latest results cache\n this.updateFlorence2Cache(msg);\n } else if (msg.type === 'error') {\n logger.error('[Florence2Worker] Error:', msg.error);\n } else if (msg.type === 'log') {\n // Handle worker log messages\n this.handleWorkerLog('Florence2Worker', msg);\n }\n });\n\n this.florence2Worker.on('error', (error) => {\n logger.error('[Florence2Worker] Worker error:', error);\n // Attempt to restart worker after error\n setTimeout(() => this.restartFlorence2Worker(), 1000);\n });\n\n this.florence2Worker.on('exit', (code) => {\n if (code !== 0) {\n logger.error(`[Florence2Worker] Worker stopped with exit code ${code}`);\n // Attempt to restart worker after crash\n setTimeout(() => this.restartFlorence2Worker(), 1000);\n }\n });\n }\n\n private async startOCRWorker(): Promise<void> {\n const workerPath = path.join(__dirname, 'workers', 'ocr-worker.js');\n\n this.ocrWorker = new Worker(workerPath, {\n workerData: {\n config: {\n processFullScreen: true,\n tileSize: this.config.tileSize || 256,\n textRegions: this.config.textRegions,\n },\n sharedBuffer: this.screenBuffer,\n resultsBuffer: this.ocrResultsBuffer,\n },\n });\n\n this.ocrWorker.on('message', (msg) => {\n if (msg.type === 'fps') {\n this.workerStats.set('ocr', {\n fps: msg.fps,\n frameCount: msg.frameCount,\n lastUpdate: Date.now(),\n });\n } else if (msg.type === 'ocr_complete') {\n // Update latest OCR cache\n this.updateOCRCache(msg);\n } else if (msg.type === 'error') {\n logger.error('[OCRWorker] Error:', msg.error);\n } else if (msg.type === 'log') {\n // Handle worker log messages\n this.handleWorkerLog('OCRWorker', msg);\n }\n });\n\n this.ocrWorker.on('error', (error) => {\n logger.error('[OCRWorker] Worker error:', error);\n // Attempt to restart worker after error\n setTimeout(() => this.restartOCRWorker(), 1000);\n });\n\n this.ocrWorker.on('exit', (code) => {\n if (code !== 0) {\n logger.error(`[OCRWorker] Worker stopped with exit code ${code}`);\n // Attempt to restart worker after crash\n setTimeout(() => this.restartOCRWorker(), 1000);\n }\n });\n }\n\n private updateFlorence2Cache(msg: any): void {\n // Read result from shared buffer\n try {\n const tileId = msg.tileId;\n const result = this.readFlorence2Result(tileId);\n if (result) {\n this.latestFlorence2Results.set(tileId, result);\n }\n } catch (error) {\n logger.error('[VisionWorkerManager] Failed to update Florence2 cache:', error);\n }\n }\n\n private updateOCRCache(_msg: any): void {\n // Read OCR result from shared buffer\n try {\n const result = this.readOCRResult();\n if (result) {\n this.latestOCRResult = result;\n }\n } catch (error) {\n logger.error('[VisionWorkerManager] Failed to update OCR cache:', error);\n }\n }\n\n private readFlorence2Result(tileId: string): Florence2Result | null {\n try {\n // Calculate tile index from ID\n const match = tileId.match(/tile-(\\d+)-(\\d+)/);\n if (!match) {\n return null;\n }\n\n const row = parseInt(match[1], 10);\n const col = parseInt(match[2], 10);\n const tileIndex = row * 10 + col; // Assuming max 10 columns\n\n const RESULTS_HEADER_SIZE = 16;\n const MAX_RESULT_SIZE = 4096;\n const offset = RESULTS_HEADER_SIZE + tileIndex * MAX_RESULT_SIZE;\n\n // Read length\n const length = this.florence2ResultsView.getUint32(offset, true);\n if (length === 0 || length > MAX_RESULT_SIZE - 4) {\n return null;\n }\n\n // Read JSON data\n const bytes = new Uint8Array(length);\n for (let i = 0; i < length; i++) {\n bytes[i] = this.florence2ResultsView.getUint8(offset + 4 + i);\n }\n\n const json = new TextDecoder().decode(bytes);\n return JSON.parse(json);\n } catch (error) {\n logger.error('[VisionWorkerManager] Failed to read Florence2 result:', error);\n return null;\n }\n }\n\n private readOCRResult(): OCRResult | null {\n try {\n const RESULTS_HEADER_SIZE = 16;\n const offset = RESULTS_HEADER_SIZE;\n\n // Read length\n const length = this.ocrResultsView.getUint32(offset, true);\n if (length === 0) {\n return null;\n }\n\n // Read frame ID and timestamp\n const _frameId = this.ocrResultsView.getUint32(offset + 4, true);\n const _timestamp = this.ocrResultsView.getFloat64(offset + 8, true);\n\n // Read JSON data\n const dataOffset = offset + 16;\n const bytes = new Uint8Array(Math.min(length, 65536));\n for (let i = 0; i < bytes.length; i++) {\n bytes[i] = this.ocrResultsView.getUint8(dataOffset + i);\n }\n\n const json = new TextDecoder().decode(bytes);\n return JSON.parse(json);\n } catch (error) {\n logger.error('[VisionWorkerManager] Failed to read OCR result:', error);\n return null;\n }\n }\n\n // Public API - Non-blocking access to latest data\n\n getLatestScreenCapture(): ScreenCapture | null {\n // Read current frame metadata\n const frameId = Atomics.load(this.screenAtomicState, this.FRAME_ID_INDEX);\n\n if (frameId <= this.lastProcessedFrameId) {\n return this.latestScreenCapture;\n }\n\n try {\n const width = Atomics.load(this.screenAtomicState, this.WIDTH_INDEX);\n const height = Atomics.load(this.screenAtomicState, this.HEIGHT_INDEX);\n const _displayIndex = Atomics.load(this.screenAtomicState, this.DISPLAY_INDEX);\n const timestamp = Atomics.load(this.screenAtomicState, this.TIMESTAMP_INDEX);\n\n // Create screen capture object\n this.latestScreenCapture = {\n timestamp,\n width,\n height,\n data: Buffer.alloc(0), // We don't copy the full data for performance\n tiles: this.generateTiles(width, height),\n };\n\n this.lastProcessedFrameId = frameId;\n } catch (error) {\n logger.error('[VisionWorkerManager] Failed to read screen capture:', error);\n }\n\n return this.latestScreenCapture;\n }\n\n getLatestEnhancedScene(): EnhancedSceneDescription {\n const screenCapture = this.getLatestScreenCapture();\n\n // Combine all Florence-2 results\n const florence2Captions: string[] = [];\n const allObjects: any[] = [];\n const allTags = new Set<string>();\n\n this.latestFlorence2Results.forEach((result) => {\n if (result.caption) {\n florence2Captions.push(result.caption);\n }\n if (result.objects) {\n allObjects.push(...result.objects);\n }\n if (result.tags) {\n result.tags.forEach((tag) => allTags.add(tag));\n }\n });\n\n const _tiles = this.generateTiles(screenCapture?.width || 0, screenCapture?.height || 0);\n\n return {\n timestamp: Date.now(),\n description: florence2Captions.join('. '),\n objects: allObjects,\n people: [], // Could be populated by TensorFlow worker\n sceneChanged: true,\n changePercentage: 100,\n screenCapture: this.latestScreenCapture || undefined,\n screenAnalysis: {\n fullScreenOCR: this.latestOCRResult?.fullText,\n activeTile: {\n timestamp: Date.now(),\n florence2: this.latestFlorence2Results.values().next().value,\n ocr: this.latestOCRResult || undefined,\n },\n gridSummary: `${screenCapture?.tiles.length || 0} tiles analyzed`,\n uiElements: allObjects.map((obj) => ({\n type: obj.label,\n text: '',\n position: obj.bbox,\n })),\n },\n };\n }\n\n private generateTiles(\n width: number,\n height: number\n ): Array<{\n id: string;\n row: number;\n col: number;\n x: number;\n y: number;\n width: number;\n height: number;\n }> {\n const tileSize = this.config.tileSize || 256;\n const tiles: Array<{\n id: string;\n row: number;\n col: number;\n x: number;\n y: number;\n width: number;\n height: number;\n }> = [];\n\n for (let row = 0; row < Math.ceil(height / tileSize); row++) {\n for (let col = 0; col < Math.ceil(width / tileSize); col++) {\n const x = col * tileSize;\n const y = row * tileSize;\n tiles.push({\n id: `tile-${row}-${col}`,\n row,\n col,\n x,\n y,\n width: Math.min(tileSize, width - x),\n height: Math.min(tileSize, height - y),\n });\n }\n }\n\n return tiles;\n }\n\n getWorkerStats(): Map<string, WorkerStats> {\n return new Map(this.workerStats);\n }\n\n async setDisplayIndex(index: number): Promise<void> {\n if (this.screenCaptureWorker) {\n this.screenCaptureWorker.postMessage({\n type: 'set_display',\n displayIndex: index,\n });\n }\n }\n\n async setTextRegions(\n regions: Array<{ x: number; y: number; width: number; height: number }>\n ): Promise<void> {\n if (this.ocrWorker) {\n this.ocrWorker.postMessage({\n type: 'update_regions',\n regions,\n });\n }\n }\n\n async stop(): Promise<void> {\n logger.info('[VisionWorkerManager] Stopping all workers...');\n\n const stopPromises: Promise<void>[] = [];\n\n if (this.screenCaptureWorker) {\n stopPromises.push(\n new Promise((resolve) => {\n this.screenCaptureWorker!.once('exit', () => resolve());\n this.screenCaptureWorker!.postMessage({ type: 'stop' });\n })\n );\n }\n\n if (this.florence2Worker) {\n stopPromises.push(\n new Promise((resolve) => {\n this.florence2Worker!.once('exit', () => resolve());\n this.florence2Worker!.postMessage({ type: 'stop' });\n })\n );\n }\n\n if (this.ocrWorker) {\n stopPromises.push(\n new Promise((resolve) => {\n this.ocrWorker!.once('exit', () => resolve());\n this.ocrWorker!.postMessage({ type: 'stop' });\n })\n );\n }\n\n await Promise.all(stopPromises);\n logger.info('[VisionWorkerManager] All workers stopped');\n }\n\n private handleWorkerLog(workerName: string, msg: any): void {\n const { level, message, args } = msg;\n const formattedMessage = `[${workerName}] ${message}`;\n\n switch (level) {\n case 'info':\n logger.info(formattedMessage, ...args);\n break;\n case 'warn':\n logger.warn(formattedMessage, ...args);\n break;\n case 'error':\n logger.error(formattedMessage, ...args);\n break;\n case 'debug':\n logger.debug(formattedMessage, ...args);\n break;\n }\n }\n\n private async restartScreenCaptureWorker(): Promise<void> {\n const attempts = this.restartAttempts.get('screenCapture') || 0;\n\n if (attempts >= this.MAX_RESTART_ATTEMPTS) {\n logger.error('[VisionWorkerManager] Max restart attempts reached for screen capture worker');\n return;\n }\n\n this.restartAttempts.set('screenCapture', attempts + 1);\n logger.info(`[VisionWorkerManager] Restarting screen capture worker (attempt ${attempts + 1})`);\n\n try {\n // Clean up existing worker\n if (this.screenCaptureWorker) {\n this.screenCaptureWorker.removeAllListeners();\n this.screenCaptureWorker = null;\n }\n\n // Start new worker\n await this.startScreenCaptureWorker();\n\n // Reset restart counter on successful start\n this.restartAttempts.set('screenCapture', 0);\n } catch (error) {\n logger.error('[VisionWorkerManager] Failed to restart screen capture worker:', error);\n }\n }\n\n private async restartFlorence2Worker(): Promise<void> {\n const attempts = this.restartAttempts.get('florence2') || 0;\n\n if (attempts >= this.MAX_RESTART_ATTEMPTS) {\n logger.error('[VisionWorkerManager] Max restart attempts reached for Florence2 worker');\n return;\n }\n\n this.restartAttempts.set('florence2', attempts + 1);\n logger.info(`[VisionWorkerManager] Restarting Florence2 worker (attempt ${attempts + 1})`);\n\n try {\n // Clean up existing worker\n if (this.florence2Worker) {\n this.florence2Worker.removeAllListeners();\n this.florence2Worker = null;\n }\n\n // Start new worker\n await this.startFlorence2Worker();\n\n // Reset restart counter on successful start\n this.restartAttempts.set('florence2', 0);\n } catch (error) {\n logger.error('[VisionWorkerManager] Failed to restart Florence2 worker:', error);\n }\n }\n\n private async restartOCRWorker(): Promise<void> {\n const attempts = this.restartAttempts.get('ocr') || 0;\n\n if (attempts >= this.MAX_RESTART_ATTEMPTS) {\n logger.error('[VisionWorkerManager] Max restart attempts reached for OCR worker');\n return;\n }\n\n this.restartAttempts.set('ocr', attempts + 1);\n logger.info(`[VisionWorkerManager] Restarting OCR worker (attempt ${attempts + 1})`);\n\n try {\n // Clean up existing worker\n if (this.ocrWorker) {\n this.ocrWorker.removeAllListeners();\n this.ocrWorker = null;\n }\n\n // Start new worker\n await this.startOCRWorker();\n\n // Reset restart counter on successful start\n this.restartAttempts.set('ocr', 0);\n } catch (error) {\n logger.error('[VisionWorkerManager] Failed to restart OCR worker:', error);\n }\n }\n}\n"]}
|
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
import type { Florence2Result } from '../types';
|
|
2
|
-
export declare class Florence2WorkerModel {
|
|
3
|
-
private initialized;
|
|
4
|
-
initialize(): Promise<void>;
|
|
5
|
-
analyzeTile(tile: {
|
|
6
|
-
data: Buffer;
|
|
7
|
-
width: number;
|
|
8
|
-
height: number;
|
|
9
|
-
}): Promise<Florence2Result>;
|
|
10
|
-
analyzeImage(imageBuffer: Buffer): Promise<Florence2Result>;
|
|
11
|
-
isInitialized(): boolean;
|
|
12
|
-
dispose(): Promise<void>;
|
|
13
|
-
}
|
|
@@ -1,121 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
|
-
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
|
-
return new (P || (P = Promise))(function (resolve, reject) {
|
|
5
|
-
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
6
|
-
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
7
|
-
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
8
|
-
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
|
-
});
|
|
10
|
-
};
|
|
11
|
-
var __generator = (this && this.__generator) || function (thisArg, body) {
|
|
12
|
-
var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === "function" ? Iterator : Object).prototype);
|
|
13
|
-
return g.next = verb(0), g["throw"] = verb(1), g["return"] = verb(2), typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
|
|
14
|
-
function verb(n) { return function (v) { return step([n, v]); }; }
|
|
15
|
-
function step(op) {
|
|
16
|
-
if (f) throw new TypeError("Generator is already executing.");
|
|
17
|
-
while (g && (g = 0, op[0] && (_ = 0)), _) try {
|
|
18
|
-
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
|
|
19
|
-
if (y = 0, t) op = [op[0] & 2, t.value];
|
|
20
|
-
switch (op[0]) {
|
|
21
|
-
case 0: case 1: t = op; break;
|
|
22
|
-
case 4: _.label++; return { value: op[1], done: false };
|
|
23
|
-
case 5: _.label++; y = op[1]; op = [0]; continue;
|
|
24
|
-
case 7: op = _.ops.pop(); _.trys.pop(); continue;
|
|
25
|
-
default:
|
|
26
|
-
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
|
|
27
|
-
if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
|
|
28
|
-
if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
|
|
29
|
-
if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
|
|
30
|
-
if (t[2]) _.ops.pop();
|
|
31
|
-
_.trys.pop(); continue;
|
|
32
|
-
}
|
|
33
|
-
op = body.call(thisArg, _);
|
|
34
|
-
} catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
|
|
35
|
-
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
|
|
36
|
-
}
|
|
37
|
-
};
|
|
38
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
39
|
-
exports.Florence2WorkerModel = void 0;
|
|
40
|
-
var sharp_1 = require("sharp");
|
|
41
|
-
var Florence2WorkerModel = /** @class */ (function () {
|
|
42
|
-
function Florence2WorkerModel() {
|
|
43
|
-
this.initialized = false;
|
|
44
|
-
}
|
|
45
|
-
Florence2WorkerModel.prototype.initialize = function () {
|
|
46
|
-
return __awaiter(this, void 0, void 0, function () {
|
|
47
|
-
return __generator(this, function (_a) {
|
|
48
|
-
this.initialized = true;
|
|
49
|
-
return [2 /*return*/];
|
|
50
|
-
});
|
|
51
|
-
});
|
|
52
|
-
};
|
|
53
|
-
Florence2WorkerModel.prototype.analyzeTile = function (tile) {
|
|
54
|
-
return __awaiter(this, void 0, void 0, function () {
|
|
55
|
-
var metadata, stats, brightness, isLight, caption, objects, colorVariance;
|
|
56
|
-
return __generator(this, function (_a) {
|
|
57
|
-
switch (_a.label) {
|
|
58
|
-
case 0: return [4 /*yield*/, (0, sharp_1.default)(tile.data).metadata()];
|
|
59
|
-
case 1:
|
|
60
|
-
metadata = _a.sent();
|
|
61
|
-
return [4 /*yield*/, (0, sharp_1.default)(tile.data).stats()];
|
|
62
|
-
case 2:
|
|
63
|
-
stats = _a.sent();
|
|
64
|
-
brightness = (stats.channels[0].mean + stats.channels[1].mean + stats.channels[2].mean) / 3;
|
|
65
|
-
isLight = brightness > 180;
|
|
66
|
-
caption = 'Screen region';
|
|
67
|
-
if (metadata.width && metadata.height) {
|
|
68
|
-
if (metadata.width > metadata.height * 1.5) {
|
|
69
|
-
caption = 'Wide screen area';
|
|
70
|
-
}
|
|
71
|
-
else if (metadata.height > metadata.width * 1.5) {
|
|
72
|
-
caption = 'Tall screen area';
|
|
73
|
-
}
|
|
74
|
-
}
|
|
75
|
-
if (isLight) {
|
|
76
|
-
caption += ' with bright content';
|
|
77
|
-
}
|
|
78
|
-
else {
|
|
79
|
-
caption += ' with dark content';
|
|
80
|
-
}
|
|
81
|
-
objects = [];
|
|
82
|
-
colorVariance = stats.channels.reduce(function (sum, ch) { return sum + ch.stdev; }, 0) / 3;
|
|
83
|
-
if (colorVariance < 50) {
|
|
84
|
-
objects.push({
|
|
85
|
-
label: 'ui_element',
|
|
86
|
-
bbox: { x: 0, y: 0, width: metadata.width || 100, height: metadata.height || 100 },
|
|
87
|
-
confidence: 0.7,
|
|
88
|
-
});
|
|
89
|
-
}
|
|
90
|
-
return [2 /*return*/, {
|
|
91
|
-
caption: caption,
|
|
92
|
-
objects: objects,
|
|
93
|
-
regions: [],
|
|
94
|
-
tags: ['screen', 'ui'],
|
|
95
|
-
}];
|
|
96
|
-
}
|
|
97
|
-
});
|
|
98
|
-
});
|
|
99
|
-
};
|
|
100
|
-
Florence2WorkerModel.prototype.analyzeImage = function (imageBuffer) {
|
|
101
|
-
return __awaiter(this, void 0, void 0, function () {
|
|
102
|
-
return __generator(this, function (_a) {
|
|
103
|
-
return [2 /*return*/, this.analyzeTile({ data: imageBuffer, width: 0, height: 0 })];
|
|
104
|
-
});
|
|
105
|
-
});
|
|
106
|
-
};
|
|
107
|
-
Florence2WorkerModel.prototype.isInitialized = function () {
|
|
108
|
-
return this.initialized;
|
|
109
|
-
};
|
|
110
|
-
Florence2WorkerModel.prototype.dispose = function () {
|
|
111
|
-
return __awaiter(this, void 0, void 0, function () {
|
|
112
|
-
return __generator(this, function (_a) {
|
|
113
|
-
this.initialized = false;
|
|
114
|
-
return [2 /*return*/];
|
|
115
|
-
});
|
|
116
|
-
});
|
|
117
|
-
};
|
|
118
|
-
return Florence2WorkerModel;
|
|
119
|
-
}());
|
|
120
|
-
exports.Florence2WorkerModel = Florence2WorkerModel;
|
|
121
|
-
//# sourceMappingURL=florence2-worker-simple.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"florence2-worker-simple.js","sourceRoot":"","sources":["../../src/workers/florence2-worker-simple.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AACA,+BAA0B;AAE1B;IAAA;QACU,gBAAW,GAAG,KAAK,CAAC;IAoE9B,CAAC;IAlEO,yCAAU,GAAhB;;;gBACE,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;;;;KACzB;IAEK,0CAAW,GAAjB,UAAkB,IAIjB;;;;;4BAEkB,qBAAM,IAAA,eAAK,EAAC,IAAI,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,EAAA;;wBAA5C,QAAQ,GAAG,SAAiC;wBACpC,qBAAM,IAAA,eAAK,EAAC,IAAI,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAA;;wBAAtC,KAAK,GAAG,SAA8B;wBAGtC,UAAU,GACd,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;wBAC3E,OAAO,GAAG,UAAU,GAAG,GAAG,CAAC;wBAG7B,OAAO,GAAG,eAAe,CAAC;wBAC9B,IAAI,QAAQ,CAAC,KAAK,IAAI,QAAQ,CAAC,MAAM,EAAE,CAAC;4BACtC,IAAI,QAAQ,CAAC,KAAK,GAAG,QAAQ,CAAC,MAAM,GAAG,GAAG,EAAE,CAAC;gCAC3C,OAAO,GAAG,kBAAkB,CAAC;4BAC/B,CAAC;iCAAM,IAAI,QAAQ,CAAC,MAAM,GAAG,QAAQ,CAAC,KAAK,GAAG,GAAG,EAAE,CAAC;gCAClD,OAAO,GAAG,kBAAkB,CAAC;4BAC/B,CAAC;wBACH,CAAC;wBAED,IAAI,OAAO,EAAE,CAAC;4BACZ,OAAO,IAAI,sBAAsB,CAAC;wBACpC,CAAC;6BAAM,CAAC;4BACN,OAAO,IAAI,oBAAoB,CAAC;wBAClC,CAAC;wBAGK,OAAO,GAAoE,EAAE,CAAC;wBAG9E,aAAa,GAAG,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,UAAC,GAAG,EAAE,EAAE,IAAK,OAAA,GAAG,GAAG,EAAE,CAAC,KAAK,EAAd,CAAc,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC;wBAChF,IAAI,aAAa,GAAG,EAAE,EAAE,CAAC;4BACvB,OAAO,CAAC,IAAI,CAAC;gCACX,KAAK,EAAE,YAAY;gCACnB,IAAI,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,QAAQ,CAAC,KAAK,IAAI,GAAG,EAAE,MAAM,EAAE,QAAQ,CAAC,MAAM,IAAI,GAAG,EAAE;gCAClF,UAAU,EAAE,GAAG;6BAChB,CAAC,CAAC;wBACL,CAAC;wBAED,sBAAO;gCACL,OAAO,SAAA;gCACP,OAAO,SAAA;gCACP,OAAO,EAAE,EAAE;gCACX,IAAI,EAAE,CAAC,QAAQ,EAAE,IAAI,CAAC;6BACvB,EAAC;;;;KACH;IAEK,2CAAY,GAAlB,UAAmB,WAAmB;;;gBACpC,sBAAO,IAAI,CAAC,WAAW,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC,EAAC;;;KACrE;IAED,4CAAa,GAAb;QACE,OAAO,IAAI,CAAC,WAAW,CAAC;IAC1B,CAAC;IAEK,sCAAO,GAAb;;;gBACE,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;;;;KAC1B;IACH,2BAAC;AAAD,CAAC,AArED,IAqEC;AArEY,oDAAoB","sourcesContent":["import type { Florence2Result, BoundingBox } from '../types';\nimport sharp from 'sharp';\n\nexport class Florence2WorkerModel {\n private initialized = false;\n\n async initialize(): Promise<void> {\n this.initialized = true;\n }\n\n async analyzeTile(tile: {\n data: Buffer;\n width: number;\n height: number;\n }): Promise<Florence2Result> {\n // Simple analysis without TensorFlow\n const metadata = await sharp(tile.data).metadata();\n const stats = await sharp(tile.data).stats();\n\n // Determine scene characteristics\n const brightness =\n (stats.channels[0].mean + stats.channels[1].mean + stats.channels[2].mean) / 3;\n const isLight = brightness > 180;\n\n // Generate caption based on tile characteristics\n let caption = 'Screen region';\n if (metadata.width && metadata.height) {\n if (metadata.width > metadata.height * 1.5) {\n caption = 'Wide screen area';\n } else if (metadata.height > metadata.width * 1.5) {\n caption = 'Tall screen area';\n }\n }\n\n if (isLight) {\n caption += ' with bright content';\n } else {\n caption += ' with dark content';\n }\n\n // Detect potential UI elements based on color patterns\n const objects: Array<{ label: string; bbox: BoundingBox; confidence: number }> = [];\n\n // Simple heuristic: if mostly uniform color, might be a UI element\n const colorVariance = stats.channels.reduce((sum, ch) => sum + ch.stdev, 0) / 3;\n if (colorVariance < 50) {\n objects.push({\n label: 'ui_element',\n bbox: { x: 0, y: 0, width: metadata.width || 100, height: metadata.height || 100 },\n confidence: 0.7,\n });\n }\n\n return {\n caption,\n objects,\n regions: [],\n tags: ['screen', 'ui'],\n };\n }\n\n async analyzeImage(imageBuffer: Buffer): Promise<Florence2Result> {\n return this.analyzeTile({ data: imageBuffer, width: 0, height: 0 });\n }\n\n isInitialized(): boolean {\n return this.initialized;\n }\n\n async dispose(): Promise<void> {\n this.initialized = false;\n }\n}\n"]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export {};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export {};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export {};
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Worker-safe logger that sends log messages to the main thread
|
|
3
|
-
*/
|
|
4
|
-
export declare const logger: {
|
|
5
|
-
info: (message: string, ...args: any[]) => void;
|
|
6
|
-
warn: (message: string, ...args: any[]) => void;
|
|
7
|
-
error: (message: string, ...args: any[]) => void;
|
|
8
|
-
debug: (message: string, ...args: any[]) => void;
|
|
9
|
-
};
|
|
@@ -1,95 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
|
|
3
|
-
if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
|
|
4
|
-
if (ar || !(i in from)) {
|
|
5
|
-
if (!ar) ar = Array.prototype.slice.call(from, 0, i);
|
|
6
|
-
ar[i] = from[i];
|
|
7
|
-
}
|
|
8
|
-
}
|
|
9
|
-
return to.concat(ar || Array.prototype.slice.call(from));
|
|
10
|
-
};
|
|
11
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
-
exports.logger = void 0;
|
|
13
|
-
var worker_threads_1 = require("worker_threads");
|
|
14
|
-
/**
|
|
15
|
-
* Worker-safe logger that sends log messages to the main thread
|
|
16
|
-
*/
|
|
17
|
-
exports.logger = {
|
|
18
|
-
info: function (message) {
|
|
19
|
-
var args = [];
|
|
20
|
-
for (var _i = 1; _i < arguments.length; _i++) {
|
|
21
|
-
args[_i - 1] = arguments[_i];
|
|
22
|
-
}
|
|
23
|
-
var logMessage = {
|
|
24
|
-
type: 'log',
|
|
25
|
-
level: 'info',
|
|
26
|
-
message: message,
|
|
27
|
-
args: args,
|
|
28
|
-
timestamp: new Date().toISOString(),
|
|
29
|
-
};
|
|
30
|
-
if (worker_threads_1.parentPort) {
|
|
31
|
-
worker_threads_1.parentPort.postMessage(logMessage);
|
|
32
|
-
}
|
|
33
|
-
else {
|
|
34
|
-
console.log.apply(console, __spreadArray(["[INFO] ".concat(message)], args, false));
|
|
35
|
-
}
|
|
36
|
-
},
|
|
37
|
-
warn: function (message) {
|
|
38
|
-
var args = [];
|
|
39
|
-
for (var _i = 1; _i < arguments.length; _i++) {
|
|
40
|
-
args[_i - 1] = arguments[_i];
|
|
41
|
-
}
|
|
42
|
-
var logMessage = {
|
|
43
|
-
type: 'log',
|
|
44
|
-
level: 'warn',
|
|
45
|
-
message: message,
|
|
46
|
-
args: args,
|
|
47
|
-
timestamp: new Date().toISOString(),
|
|
48
|
-
};
|
|
49
|
-
if (worker_threads_1.parentPort) {
|
|
50
|
-
worker_threads_1.parentPort.postMessage(logMessage);
|
|
51
|
-
}
|
|
52
|
-
else {
|
|
53
|
-
console.warn.apply(console, __spreadArray(["[WARN] ".concat(message)], args, false));
|
|
54
|
-
}
|
|
55
|
-
},
|
|
56
|
-
error: function (message) {
|
|
57
|
-
var args = [];
|
|
58
|
-
for (var _i = 1; _i < arguments.length; _i++) {
|
|
59
|
-
args[_i - 1] = arguments[_i];
|
|
60
|
-
}
|
|
61
|
-
var logMessage = {
|
|
62
|
-
type: 'log',
|
|
63
|
-
level: 'error',
|
|
64
|
-
message: message,
|
|
65
|
-
args: args,
|
|
66
|
-
timestamp: new Date().toISOString(),
|
|
67
|
-
};
|
|
68
|
-
if (worker_threads_1.parentPort) {
|
|
69
|
-
worker_threads_1.parentPort.postMessage(logMessage);
|
|
70
|
-
}
|
|
71
|
-
else {
|
|
72
|
-
console.error.apply(console, __spreadArray(["[ERROR] ".concat(message)], args, false));
|
|
73
|
-
}
|
|
74
|
-
},
|
|
75
|
-
debug: function (message) {
|
|
76
|
-
var args = [];
|
|
77
|
-
for (var _i = 1; _i < arguments.length; _i++) {
|
|
78
|
-
args[_i - 1] = arguments[_i];
|
|
79
|
-
}
|
|
80
|
-
var logMessage = {
|
|
81
|
-
type: 'log',
|
|
82
|
-
level: 'debug',
|
|
83
|
-
message: message,
|
|
84
|
-
args: args,
|
|
85
|
-
timestamp: new Date().toISOString(),
|
|
86
|
-
};
|
|
87
|
-
if (worker_threads_1.parentPort) {
|
|
88
|
-
worker_threads_1.parentPort.postMessage(logMessage);
|
|
89
|
-
}
|
|
90
|
-
else {
|
|
91
|
-
console.debug.apply(console, __spreadArray(["[DEBUG] ".concat(message)], args, false));
|
|
92
|
-
}
|
|
93
|
-
},
|
|
94
|
-
};
|
|
95
|
-
//# sourceMappingURL=worker-logger.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"worker-logger.js","sourceRoot":"","sources":["../../src/workers/worker-logger.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,iDAA4C;AAE5C;;GAEG;AACU,QAAA,MAAM,GAAG;IACpB,IAAI,EAAE,UAAC,OAAe;QAAE,cAAc;aAAd,UAAc,EAAd,qBAAc,EAAd,IAAc;YAAd,6BAAc;;QACpC,IAAM,UAAU,GAAG;YACjB,IAAI,EAAE,KAAK;YACX,KAAK,EAAE,MAAM;YACb,OAAO,SAAA;YACP,IAAI,MAAA;YACJ,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;SACpC,CAAC;QAEF,IAAI,2BAAU,EAAE,CAAC;YACf,2BAAU,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC;QACrC,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,GAAG,OAAX,OAAO,iBAAK,iBAAU,OAAO,CAAE,GAAK,IAAI,UAAE;QAC5C,CAAC;IACH,CAAC;IAED,IAAI,EAAE,UAAC,OAAe;QAAE,cAAc;aAAd,UAAc,EAAd,qBAAc,EAAd,IAAc;YAAd,6BAAc;;QACpC,IAAM,UAAU,GAAG;YACjB,IAAI,EAAE,KAAK;YACX,KAAK,EAAE,MAAM;YACb,OAAO,SAAA;YACP,IAAI,MAAA;YACJ,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;SACpC,CAAC;QAEF,IAAI,2BAAU,EAAE,CAAC;YACf,2BAAU,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC;QACrC,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,IAAI,OAAZ,OAAO,iBAAM,iBAAU,OAAO,CAAE,GAAK,IAAI,UAAE;QAC7C,CAAC;IACH,CAAC;IAED,KAAK,EAAE,UAAC,OAAe;QAAE,cAAc;aAAd,UAAc,EAAd,qBAAc,EAAd,IAAc;YAAd,6BAAc;;QACrC,IAAM,UAAU,GAAG;YACjB,IAAI,EAAE,KAAK;YACX,KAAK,EAAE,OAAO;YACd,OAAO,SAAA;YACP,IAAI,MAAA;YACJ,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;SACpC,CAAC;QAEF,IAAI,2BAAU,EAAE,CAAC;YACf,2BAAU,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC;QACrC,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,KAAK,OAAb,OAAO,iBAAO,kBAAW,OAAO,CAAE,GAAK,IAAI,UAAE;QAC/C,CAAC;IACH,CAAC;IAED,KAAK,EAAE,UAAC,OAAe;QAAE,cAAc;aAAd,UAAc,EAAd,qBAAc,EAAd,IAAc;YAAd,6BAAc;;QACrC,IAAM,UAAU,GAAG;YACjB,IAAI,EAAE,KAAK;YACX,KAAK,EAAE,OAAO;YACd,OAAO,SAAA;YACP,IAAI,MAAA;YACJ,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;SACpC,CAAC;QAEF,IAAI,2BAAU,EAAE,CAAC;YACf,2BAAU,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC;QACrC,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,KAAK,OAAb,OAAO,iBAAO,kBAAW,OAAO,CAAE,GAAK,IAAI,UAAE;QAC/C,CAAC;IACH,CAAC;CACF,CAAC","sourcesContent":["import { parentPort } from 'worker_threads';\n\n/**\n * Worker-safe logger that sends log messages to the main thread\n */\nexport const logger = {\n info: (message: string, ...args: any[]) => {\n const logMessage = {\n type: 'log',\n level: 'info',\n message,\n args,\n timestamp: new Date().toISOString(),\n };\n\n if (parentPort) {\n parentPort.postMessage(logMessage);\n } else {\n console.log(`[INFO] ${message}`, ...args);\n }\n },\n\n warn: (message: string, ...args: any[]) => {\n const logMessage = {\n type: 'log',\n level: 'warn',\n message,\n args,\n timestamp: new Date().toISOString(),\n };\n\n if (parentPort) {\n parentPort.postMessage(logMessage);\n } else {\n console.warn(`[WARN] ${message}`, ...args);\n }\n },\n\n error: (message: string, ...args: any[]) => {\n const logMessage = {\n type: 'log',\n level: 'error',\n message,\n args,\n timestamp: new Date().toISOString(),\n };\n\n if (parentPort) {\n parentPort.postMessage(logMessage);\n } else {\n console.error(`[ERROR] ${message}`, ...args);\n }\n },\n\n debug: (message: string, ...args: any[]) => {\n const logMessage = {\n type: 'log',\n level: 'debug',\n message,\n args,\n timestamp: new Date().toISOString(),\n };\n\n if (parentPort) {\n parentPort.postMessage(logMessage);\n } else {\n console.debug(`[DEBUG] ${message}`, ...args);\n }\n },\n};\n"]}
|