statemachine-engine 0.0.2__py3-none-any.whl
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.
- statemachine_engine/__init__.py +17 -0
- statemachine_engine/actions/__init__.py +3 -0
- statemachine_engine/actions/base.py +64 -0
- statemachine_engine/actions/builtin/__init__.py +17 -0
- statemachine_engine/actions/builtin/bash_action.py +313 -0
- statemachine_engine/actions/builtin/check_database_queue_action.py +103 -0
- statemachine_engine/actions/builtin/check_machine_state_action.py +138 -0
- statemachine_engine/actions/builtin/clear_events_action.py +77 -0
- statemachine_engine/actions/builtin/log_action.py +117 -0
- statemachine_engine/actions/builtin/send_event_action.py +209 -0
- statemachine_engine/cli.py +63 -0
- statemachine_engine/core/__init__.py +4 -0
- statemachine_engine/core/action_loader.py +204 -0
- statemachine_engine/core/engine.py +569 -0
- statemachine_engine/core/health_monitor.py +236 -0
- statemachine_engine/database/__init__.py +13 -0
- statemachine_engine/database/cli.py +1392 -0
- statemachine_engine/database/models/__init__.py +47 -0
- statemachine_engine/database/models/base.py +50 -0
- statemachine_engine/database/models/job.py +300 -0
- statemachine_engine/database/models/machine_event.py +73 -0
- statemachine_engine/database/models/machine_state.py +71 -0
- statemachine_engine/database/models/realtime_event.py +73 -0
- statemachine_engine/database/schema/generic/001_jobs.sql +53 -0
- statemachine_engine/database/schema/generic/002_machine_events.sql +49 -0
- statemachine_engine/database/schema/generic/003_machine_state.sql +41 -0
- statemachine_engine/database/schema/generic/004_realtime_events.sql +41 -0
- statemachine_engine/monitoring/__init__.py +0 -0
- statemachine_engine/monitoring/websocket_server.py +249 -0
- statemachine_engine/tools/__init__.py +0 -0
- statemachine_engine/tools/cli.py +105 -0
- statemachine_engine/tools/config.py +85 -0
- statemachine_engine/tools/diagrams.py +919 -0
- statemachine_engine/ui/node_modules/.package-lock.json +2295 -0
- statemachine_engine/ui/node_modules/@gar/promisify/index.js +36 -0
- statemachine_engine/ui/node_modules/@gar/promisify/package.json +32 -0
- statemachine_engine/ui/node_modules/@npmcli/fs/lib/common/file-url-to-path/index.js +17 -0
- statemachine_engine/ui/node_modules/@npmcli/fs/lib/common/file-url-to-path/polyfill.js +121 -0
- statemachine_engine/ui/node_modules/@npmcli/fs/lib/common/get-options.js +20 -0
- statemachine_engine/ui/node_modules/@npmcli/fs/lib/common/node.js +9 -0
- statemachine_engine/ui/node_modules/@npmcli/fs/lib/common/owner.js +92 -0
- statemachine_engine/ui/node_modules/@npmcli/fs/lib/copy-file.js +22 -0
- statemachine_engine/ui/node_modules/@npmcli/fs/lib/cp/index.js +22 -0
- statemachine_engine/ui/node_modules/@npmcli/fs/lib/cp/polyfill.js +428 -0
- statemachine_engine/ui/node_modules/@npmcli/fs/lib/errors.js +129 -0
- statemachine_engine/ui/node_modules/@npmcli/fs/lib/fs.js +8 -0
- statemachine_engine/ui/node_modules/@npmcli/fs/lib/index.js +10 -0
- statemachine_engine/ui/node_modules/@npmcli/fs/lib/mkdir/index.js +32 -0
- statemachine_engine/ui/node_modules/@npmcli/fs/lib/mkdir/polyfill.js +81 -0
- statemachine_engine/ui/node_modules/@npmcli/fs/lib/mkdtemp.js +28 -0
- statemachine_engine/ui/node_modules/@npmcli/fs/lib/rm/index.js +22 -0
- statemachine_engine/ui/node_modules/@npmcli/fs/lib/rm/polyfill.js +239 -0
- statemachine_engine/ui/node_modules/@npmcli/fs/lib/with-temp-dir.js +39 -0
- statemachine_engine/ui/node_modules/@npmcli/fs/lib/write-file.js +19 -0
- statemachine_engine/ui/node_modules/@npmcli/fs/package.json +38 -0
- statemachine_engine/ui/node_modules/@npmcli/move-file/index.js +162 -0
- statemachine_engine/ui/node_modules/@npmcli/move-file/package.json +34 -0
- statemachine_engine/ui/node_modules/@tootallnate/once/dist/index.js +39 -0
- statemachine_engine/ui/node_modules/@tootallnate/once/package.json +45 -0
- statemachine_engine/ui/node_modules/abbrev/abbrev.js +61 -0
- statemachine_engine/ui/node_modules/abbrev/package.json +21 -0
- statemachine_engine/ui/node_modules/accepts/index.js +238 -0
- statemachine_engine/ui/node_modules/accepts/package.json +47 -0
- statemachine_engine/ui/node_modules/agent-base/dist/src/index.js +203 -0
- statemachine_engine/ui/node_modules/agent-base/dist/src/promisify.js +18 -0
- statemachine_engine/ui/node_modules/agent-base/node_modules/debug/package.json +64 -0
- statemachine_engine/ui/node_modules/agent-base/node_modules/debug/src/browser.js +272 -0
- statemachine_engine/ui/node_modules/agent-base/node_modules/debug/src/common.js +292 -0
- statemachine_engine/ui/node_modules/agent-base/node_modules/debug/src/index.js +10 -0
- statemachine_engine/ui/node_modules/agent-base/node_modules/debug/src/node.js +263 -0
- statemachine_engine/ui/node_modules/agent-base/node_modules/ms/index.js +162 -0
- statemachine_engine/ui/node_modules/agent-base/node_modules/ms/package.json +38 -0
- statemachine_engine/ui/node_modules/agent-base/package.json +64 -0
- statemachine_engine/ui/node_modules/agentkeepalive/browser.js +5 -0
- statemachine_engine/ui/node_modules/agentkeepalive/index.js +7 -0
- statemachine_engine/ui/node_modules/agentkeepalive/lib/agent.js +402 -0
- statemachine_engine/ui/node_modules/agentkeepalive/lib/constants.js +14 -0
- statemachine_engine/ui/node_modules/agentkeepalive/lib/https_agent.js +51 -0
- statemachine_engine/ui/node_modules/agentkeepalive/package.json +56 -0
- statemachine_engine/ui/node_modules/aggregate-error/index.js +47 -0
- statemachine_engine/ui/node_modules/aggregate-error/package.json +41 -0
- statemachine_engine/ui/node_modules/ansi-regex/index.js +10 -0
- statemachine_engine/ui/node_modules/ansi-regex/package.json +55 -0
- statemachine_engine/ui/node_modules/aproba/index.js +105 -0
- statemachine_engine/ui/node_modules/aproba/package.json +35 -0
- statemachine_engine/ui/node_modules/are-we-there-yet/lib/index.js +4 -0
- statemachine_engine/ui/node_modules/are-we-there-yet/lib/tracker-base.js +11 -0
- statemachine_engine/ui/node_modules/are-we-there-yet/lib/tracker-group.js +116 -0
- statemachine_engine/ui/node_modules/are-we-there-yet/lib/tracker-stream.js +36 -0
- statemachine_engine/ui/node_modules/are-we-there-yet/lib/tracker.js +32 -0
- statemachine_engine/ui/node_modules/are-we-there-yet/package.json +56 -0
- statemachine_engine/ui/node_modules/array-flatten/array-flatten.js +64 -0
- statemachine_engine/ui/node_modules/array-flatten/package.json +39 -0
- statemachine_engine/ui/node_modules/balanced-match/index.js +62 -0
- statemachine_engine/ui/node_modules/balanced-match/package.json +48 -0
- statemachine_engine/ui/node_modules/base64-js/base64js.min.js +1 -0
- statemachine_engine/ui/node_modules/base64-js/index.js +150 -0
- statemachine_engine/ui/node_modules/base64-js/package.json +47 -0
- statemachine_engine/ui/node_modules/bindings/bindings.js +221 -0
- statemachine_engine/ui/node_modules/bindings/package.json +28 -0
- statemachine_engine/ui/node_modules/bl/BufferList.js +396 -0
- statemachine_engine/ui/node_modules/bl/bl.js +84 -0
- statemachine_engine/ui/node_modules/bl/package.json +37 -0
- statemachine_engine/ui/node_modules/bl/test/convert.js +21 -0
- statemachine_engine/ui/node_modules/bl/test/indexOf.js +492 -0
- statemachine_engine/ui/node_modules/bl/test/isBufferList.js +32 -0
- statemachine_engine/ui/node_modules/bl/test/test.js +869 -0
- statemachine_engine/ui/node_modules/body-parser/index.js +156 -0
- statemachine_engine/ui/node_modules/body-parser/lib/read.js +205 -0
- statemachine_engine/ui/node_modules/body-parser/lib/types/json.js +247 -0
- statemachine_engine/ui/node_modules/body-parser/lib/types/raw.js +101 -0
- statemachine_engine/ui/node_modules/body-parser/lib/types/text.js +121 -0
- statemachine_engine/ui/node_modules/body-parser/lib/types/urlencoded.js +307 -0
- statemachine_engine/ui/node_modules/body-parser/package.json +56 -0
- statemachine_engine/ui/node_modules/brace-expansion/index.js +201 -0
- statemachine_engine/ui/node_modules/brace-expansion/package.json +50 -0
- statemachine_engine/ui/node_modules/buffer/index.js +1817 -0
- statemachine_engine/ui/node_modules/buffer/package.json +96 -0
- statemachine_engine/ui/node_modules/bytes/index.js +170 -0
- statemachine_engine/ui/node_modules/bytes/package.json +42 -0
- statemachine_engine/ui/node_modules/cacache/get.js +237 -0
- statemachine_engine/ui/node_modules/cacache/index.js +46 -0
- statemachine_engine/ui/node_modules/cacache/lib/content/path.js +29 -0
- statemachine_engine/ui/node_modules/cacache/lib/content/read.js +244 -0
- statemachine_engine/ui/node_modules/cacache/lib/content/rm.js +19 -0
- statemachine_engine/ui/node_modules/cacache/lib/content/write.js +189 -0
- statemachine_engine/ui/node_modules/cacache/lib/entry-index.js +394 -0
- statemachine_engine/ui/node_modules/cacache/lib/memoization.js +73 -0
- statemachine_engine/ui/node_modules/cacache/lib/util/disposer.js +30 -0
- statemachine_engine/ui/node_modules/cacache/lib/util/fix-owner.js +142 -0
- statemachine_engine/ui/node_modules/cacache/lib/util/hash-to-segments.js +7 -0
- statemachine_engine/ui/node_modules/cacache/lib/util/move-file.js +67 -0
- statemachine_engine/ui/node_modules/cacache/lib/util/tmp.js +35 -0
- statemachine_engine/ui/node_modules/cacache/lib/verify.js +287 -0
- statemachine_engine/ui/node_modules/cacache/ls.js +6 -0
- statemachine_engine/ui/node_modules/cacache/package.json +80 -0
- statemachine_engine/ui/node_modules/cacache/put.js +83 -0
- statemachine_engine/ui/node_modules/cacache/rm.js +31 -0
- statemachine_engine/ui/node_modules/cacache/verify.js +3 -0
- statemachine_engine/ui/node_modules/call-bind-apply-helpers/actualApply.js +10 -0
- statemachine_engine/ui/node_modules/call-bind-apply-helpers/applyBind.js +10 -0
- statemachine_engine/ui/node_modules/call-bind-apply-helpers/functionApply.js +4 -0
- statemachine_engine/ui/node_modules/call-bind-apply-helpers/functionCall.js +4 -0
- statemachine_engine/ui/node_modules/call-bind-apply-helpers/index.js +15 -0
- statemachine_engine/ui/node_modules/call-bind-apply-helpers/package.json +85 -0
- statemachine_engine/ui/node_modules/call-bind-apply-helpers/reflectApply.js +4 -0
- statemachine_engine/ui/node_modules/call-bind-apply-helpers/test/index.js +63 -0
- statemachine_engine/ui/node_modules/call-bind-apply-helpers/tsconfig.json +9 -0
- statemachine_engine/ui/node_modules/call-bound/index.js +19 -0
- statemachine_engine/ui/node_modules/call-bound/package.json +99 -0
- statemachine_engine/ui/node_modules/call-bound/test/index.js +61 -0
- statemachine_engine/ui/node_modules/call-bound/tsconfig.json +10 -0
- statemachine_engine/ui/node_modules/chownr/chownr.js +167 -0
- statemachine_engine/ui/node_modules/chownr/package.json +32 -0
- statemachine_engine/ui/node_modules/clean-stack/index.js +40 -0
- statemachine_engine/ui/node_modules/clean-stack/package.json +39 -0
- statemachine_engine/ui/node_modules/color-support/bin.js +3 -0
- statemachine_engine/ui/node_modules/color-support/browser.js +14 -0
- statemachine_engine/ui/node_modules/color-support/index.js +134 -0
- statemachine_engine/ui/node_modules/color-support/package.json +36 -0
- statemachine_engine/ui/node_modules/concat-map/example/map.js +6 -0
- statemachine_engine/ui/node_modules/concat-map/index.js +13 -0
- statemachine_engine/ui/node_modules/concat-map/package.json +43 -0
- statemachine_engine/ui/node_modules/concat-map/test/map.js +39 -0
- statemachine_engine/ui/node_modules/console-control-strings/index.js +125 -0
- statemachine_engine/ui/node_modules/console-control-strings/package.json +27 -0
- statemachine_engine/ui/node_modules/content-disposition/index.js +458 -0
- statemachine_engine/ui/node_modules/content-disposition/package.json +44 -0
- statemachine_engine/ui/node_modules/content-type/index.js +225 -0
- statemachine_engine/ui/node_modules/content-type/package.json +42 -0
- statemachine_engine/ui/node_modules/cookie/index.js +334 -0
- statemachine_engine/ui/node_modules/cookie/package.json +44 -0
- statemachine_engine/ui/node_modules/cookie-signature/index.js +51 -0
- statemachine_engine/ui/node_modules/cookie-signature/package.json +18 -0
- statemachine_engine/ui/node_modules/debug/component.json +19 -0
- statemachine_engine/ui/node_modules/debug/karma.conf.js +70 -0
- statemachine_engine/ui/node_modules/debug/node.js +1 -0
- statemachine_engine/ui/node_modules/debug/package.json +49 -0
- statemachine_engine/ui/node_modules/debug/src/browser.js +185 -0
- statemachine_engine/ui/node_modules/debug/src/debug.js +202 -0
- statemachine_engine/ui/node_modules/debug/src/index.js +10 -0
- statemachine_engine/ui/node_modules/debug/src/inspector-log.js +15 -0
- statemachine_engine/ui/node_modules/debug/src/node.js +248 -0
- statemachine_engine/ui/node_modules/decompress-response/index.js +58 -0
- statemachine_engine/ui/node_modules/decompress-response/package.json +56 -0
- statemachine_engine/ui/node_modules/deep-extend/index.js +1 -0
- statemachine_engine/ui/node_modules/deep-extend/lib/deep-extend.js +150 -0
- statemachine_engine/ui/node_modules/deep-extend/package.json +62 -0
- statemachine_engine/ui/node_modules/delegates/index.js +121 -0
- statemachine_engine/ui/node_modules/delegates/package.json +13 -0
- statemachine_engine/ui/node_modules/delegates/test/index.js +94 -0
- statemachine_engine/ui/node_modules/depd/index.js +538 -0
- statemachine_engine/ui/node_modules/depd/lib/browser/index.js +77 -0
- statemachine_engine/ui/node_modules/depd/package.json +45 -0
- statemachine_engine/ui/node_modules/destroy/index.js +209 -0
- statemachine_engine/ui/node_modules/destroy/package.json +48 -0
- statemachine_engine/ui/node_modules/detect-libc/lib/detect-libc.js +313 -0
- statemachine_engine/ui/node_modules/detect-libc/lib/elf.js +39 -0
- statemachine_engine/ui/node_modules/detect-libc/lib/filesystem.js +51 -0
- statemachine_engine/ui/node_modules/detect-libc/lib/process.js +24 -0
- statemachine_engine/ui/node_modules/detect-libc/package.json +42 -0
- statemachine_engine/ui/node_modules/dunder-proto/get.js +30 -0
- statemachine_engine/ui/node_modules/dunder-proto/package.json +76 -0
- statemachine_engine/ui/node_modules/dunder-proto/set.js +35 -0
- statemachine_engine/ui/node_modules/dunder-proto/test/get.js +34 -0
- statemachine_engine/ui/node_modules/dunder-proto/test/index.js +4 -0
- statemachine_engine/ui/node_modules/dunder-proto/test/set.js +50 -0
- statemachine_engine/ui/node_modules/dunder-proto/tsconfig.json +9 -0
- statemachine_engine/ui/node_modules/ee-first/index.js +95 -0
- statemachine_engine/ui/node_modules/ee-first/package.json +29 -0
- statemachine_engine/ui/node_modules/emoji-regex/es2015/index.js +6 -0
- statemachine_engine/ui/node_modules/emoji-regex/es2015/text.js +6 -0
- statemachine_engine/ui/node_modules/emoji-regex/index.js +6 -0
- statemachine_engine/ui/node_modules/emoji-regex/package.json +50 -0
- statemachine_engine/ui/node_modules/emoji-regex/text.js +6 -0
- statemachine_engine/ui/node_modules/encodeurl/index.js +60 -0
- statemachine_engine/ui/node_modules/encodeurl/package.json +40 -0
- statemachine_engine/ui/node_modules/encoding/.prettierrc.js +8 -0
- statemachine_engine/ui/node_modules/encoding/lib/encoding.js +83 -0
- statemachine_engine/ui/node_modules/encoding/node_modules/iconv-lite/encodings/dbcs-codec.js +597 -0
- statemachine_engine/ui/node_modules/encoding/node_modules/iconv-lite/encodings/dbcs-data.js +188 -0
- statemachine_engine/ui/node_modules/encoding/node_modules/iconv-lite/encodings/index.js +23 -0
- statemachine_engine/ui/node_modules/encoding/node_modules/iconv-lite/encodings/internal.js +198 -0
- statemachine_engine/ui/node_modules/encoding/node_modules/iconv-lite/encodings/sbcs-codec.js +72 -0
- statemachine_engine/ui/node_modules/encoding/node_modules/iconv-lite/encodings/sbcs-data-generated.js +451 -0
- statemachine_engine/ui/node_modules/encoding/node_modules/iconv-lite/encodings/sbcs-data.js +179 -0
- statemachine_engine/ui/node_modules/encoding/node_modules/iconv-lite/encodings/tables/big5-added.json +122 -0
- statemachine_engine/ui/node_modules/encoding/node_modules/iconv-lite/encodings/tables/cp936.json +264 -0
- statemachine_engine/ui/node_modules/encoding/node_modules/iconv-lite/encodings/tables/cp949.json +273 -0
- statemachine_engine/ui/node_modules/encoding/node_modules/iconv-lite/encodings/tables/cp950.json +177 -0
- statemachine_engine/ui/node_modules/encoding/node_modules/iconv-lite/encodings/tables/eucjp.json +182 -0
- statemachine_engine/ui/node_modules/encoding/node_modules/iconv-lite/encodings/tables/gb18030-ranges.json +1 -0
- statemachine_engine/ui/node_modules/encoding/node_modules/iconv-lite/encodings/tables/gbk-added.json +56 -0
- statemachine_engine/ui/node_modules/encoding/node_modules/iconv-lite/encodings/tables/shiftjis.json +125 -0
- statemachine_engine/ui/node_modules/encoding/node_modules/iconv-lite/encodings/utf16.js +197 -0
- statemachine_engine/ui/node_modules/encoding/node_modules/iconv-lite/encodings/utf32.js +319 -0
- statemachine_engine/ui/node_modules/encoding/node_modules/iconv-lite/encodings/utf7.js +290 -0
- statemachine_engine/ui/node_modules/encoding/node_modules/iconv-lite/lib/bom-handling.js +52 -0
- statemachine_engine/ui/node_modules/encoding/node_modules/iconv-lite/lib/index.js +180 -0
- statemachine_engine/ui/node_modules/encoding/node_modules/iconv-lite/lib/streams.js +109 -0
- statemachine_engine/ui/node_modules/encoding/node_modules/iconv-lite/package.json +44 -0
- statemachine_engine/ui/node_modules/encoding/package.json +18 -0
- statemachine_engine/ui/node_modules/encoding/test/test.js +49 -0
- statemachine_engine/ui/node_modules/end-of-stream/index.js +96 -0
- statemachine_engine/ui/node_modules/end-of-stream/package.json +37 -0
- statemachine_engine/ui/node_modules/env-paths/index.js +74 -0
- statemachine_engine/ui/node_modules/env-paths/package.json +45 -0
- statemachine_engine/ui/node_modules/err-code/.eslintrc.json +7 -0
- statemachine_engine/ui/node_modules/err-code/bower.json +30 -0
- statemachine_engine/ui/node_modules/err-code/index.js +47 -0
- statemachine_engine/ui/node_modules/err-code/index.umd.js +51 -0
- statemachine_engine/ui/node_modules/err-code/package.json +34 -0
- statemachine_engine/ui/node_modules/err-code/test/.eslintrc.json +5 -0
- statemachine_engine/ui/node_modules/err-code/test/test.js +159 -0
- statemachine_engine/ui/node_modules/es-define-property/index.js +14 -0
- statemachine_engine/ui/node_modules/es-define-property/package.json +81 -0
- statemachine_engine/ui/node_modules/es-define-property/test/index.js +56 -0
- statemachine_engine/ui/node_modules/es-define-property/tsconfig.json +10 -0
- statemachine_engine/ui/node_modules/es-errors/eval.js +4 -0
- statemachine_engine/ui/node_modules/es-errors/index.js +4 -0
- statemachine_engine/ui/node_modules/es-errors/package.json +80 -0
- statemachine_engine/ui/node_modules/es-errors/range.js +4 -0
- statemachine_engine/ui/node_modules/es-errors/ref.js +4 -0
- statemachine_engine/ui/node_modules/es-errors/syntax.js +4 -0
- statemachine_engine/ui/node_modules/es-errors/test/index.js +19 -0
- statemachine_engine/ui/node_modules/es-errors/tsconfig.json +49 -0
- statemachine_engine/ui/node_modules/es-errors/type.js +4 -0
- statemachine_engine/ui/node_modules/es-errors/uri.js +4 -0
- statemachine_engine/ui/node_modules/es-object-atoms/RequireObjectCoercible.js +11 -0
- statemachine_engine/ui/node_modules/es-object-atoms/ToObject.js +10 -0
- statemachine_engine/ui/node_modules/es-object-atoms/index.js +4 -0
- statemachine_engine/ui/node_modules/es-object-atoms/isObject.js +6 -0
- statemachine_engine/ui/node_modules/es-object-atoms/package.json +80 -0
- statemachine_engine/ui/node_modules/es-object-atoms/test/index.js +38 -0
- statemachine_engine/ui/node_modules/es-object-atoms/tsconfig.json +6 -0
- statemachine_engine/ui/node_modules/escape-html/index.js +78 -0
- statemachine_engine/ui/node_modules/escape-html/package.json +24 -0
- statemachine_engine/ui/node_modules/etag/index.js +131 -0
- statemachine_engine/ui/node_modules/etag/package.json +47 -0
- statemachine_engine/ui/node_modules/expand-template/index.js +26 -0
- statemachine_engine/ui/node_modules/expand-template/package.json +29 -0
- statemachine_engine/ui/node_modules/expand-template/test.js +67 -0
- statemachine_engine/ui/node_modules/express/index.js +11 -0
- statemachine_engine/ui/node_modules/express/lib/application.js +661 -0
- statemachine_engine/ui/node_modules/express/lib/express.js +116 -0
- statemachine_engine/ui/node_modules/express/lib/middleware/init.js +43 -0
- statemachine_engine/ui/node_modules/express/lib/middleware/query.js +47 -0
- statemachine_engine/ui/node_modules/express/lib/request.js +525 -0
- statemachine_engine/ui/node_modules/express/lib/response.js +1179 -0
- statemachine_engine/ui/node_modules/express/lib/router/index.js +673 -0
- statemachine_engine/ui/node_modules/express/lib/router/layer.js +181 -0
- statemachine_engine/ui/node_modules/express/lib/router/route.js +230 -0
- statemachine_engine/ui/node_modules/express/lib/utils.js +303 -0
- statemachine_engine/ui/node_modules/express/lib/view.js +182 -0
- statemachine_engine/ui/node_modules/express/package.json +102 -0
- statemachine_engine/ui/node_modules/file-uri-to-path/index.js +66 -0
- statemachine_engine/ui/node_modules/file-uri-to-path/package.json +32 -0
- statemachine_engine/ui/node_modules/file-uri-to-path/test/test.js +24 -0
- statemachine_engine/ui/node_modules/file-uri-to-path/test/tests.json +13 -0
- statemachine_engine/ui/node_modules/finalhandler/index.js +341 -0
- statemachine_engine/ui/node_modules/finalhandler/package.json +47 -0
- statemachine_engine/ui/node_modules/forwarded/index.js +90 -0
- statemachine_engine/ui/node_modules/forwarded/package.json +45 -0
- statemachine_engine/ui/node_modules/fresh/index.js +137 -0
- statemachine_engine/ui/node_modules/fresh/package.json +46 -0
- statemachine_engine/ui/node_modules/fs-constants/browser.js +1 -0
- statemachine_engine/ui/node_modules/fs-constants/index.js +1 -0
- statemachine_engine/ui/node_modules/fs-constants/package.json +19 -0
- statemachine_engine/ui/node_modules/fs-minipass/index.js +422 -0
- statemachine_engine/ui/node_modules/fs-minipass/package.json +39 -0
- statemachine_engine/ui/node_modules/fs.realpath/index.js +66 -0
- statemachine_engine/ui/node_modules/fs.realpath/old.js +303 -0
- statemachine_engine/ui/node_modules/fs.realpath/package.json +26 -0
- statemachine_engine/ui/node_modules/function-bind/implementation.js +84 -0
- statemachine_engine/ui/node_modules/function-bind/index.js +5 -0
- statemachine_engine/ui/node_modules/function-bind/package.json +87 -0
- statemachine_engine/ui/node_modules/function-bind/test/index.js +252 -0
- statemachine_engine/ui/node_modules/gauge/lib/base-theme.js +18 -0
- statemachine_engine/ui/node_modules/gauge/lib/error.js +24 -0
- statemachine_engine/ui/node_modules/gauge/lib/has-color.js +4 -0
- statemachine_engine/ui/node_modules/gauge/lib/index.js +289 -0
- statemachine_engine/ui/node_modules/gauge/lib/plumbing.js +50 -0
- statemachine_engine/ui/node_modules/gauge/lib/process.js +3 -0
- statemachine_engine/ui/node_modules/gauge/lib/progress-bar.js +41 -0
- statemachine_engine/ui/node_modules/gauge/lib/render-template.js +222 -0
- statemachine_engine/ui/node_modules/gauge/lib/set-immediate.js +7 -0
- statemachine_engine/ui/node_modules/gauge/lib/set-interval.js +3 -0
- statemachine_engine/ui/node_modules/gauge/lib/spin.js +5 -0
- statemachine_engine/ui/node_modules/gauge/lib/template-item.js +87 -0
- statemachine_engine/ui/node_modules/gauge/lib/theme-set.js +122 -0
- statemachine_engine/ui/node_modules/gauge/lib/themes.js +56 -0
- statemachine_engine/ui/node_modules/gauge/lib/wide-truncate.js +31 -0
- statemachine_engine/ui/node_modules/gauge/package.json +66 -0
- statemachine_engine/ui/node_modules/get-intrinsic/index.js +378 -0
- statemachine_engine/ui/node_modules/get-intrinsic/package.json +97 -0
- statemachine_engine/ui/node_modules/get-intrinsic/test/GetIntrinsic.js +274 -0
- statemachine_engine/ui/node_modules/get-proto/Object.getPrototypeOf.js +6 -0
- statemachine_engine/ui/node_modules/get-proto/Reflect.getPrototypeOf.js +4 -0
- statemachine_engine/ui/node_modules/get-proto/index.js +27 -0
- statemachine_engine/ui/node_modules/get-proto/package.json +81 -0
- statemachine_engine/ui/node_modules/get-proto/test/index.js +68 -0
- statemachine_engine/ui/node_modules/get-proto/tsconfig.json +9 -0
- statemachine_engine/ui/node_modules/github-from-package/example/package.json +8 -0
- statemachine_engine/ui/node_modules/github-from-package/example/url.js +3 -0
- statemachine_engine/ui/node_modules/github-from-package/index.js +17 -0
- statemachine_engine/ui/node_modules/github-from-package/package.json +30 -0
- statemachine_engine/ui/node_modules/github-from-package/test/a.json +8 -0
- statemachine_engine/ui/node_modules/github-from-package/test/b.json +5 -0
- statemachine_engine/ui/node_modules/github-from-package/test/c.json +5 -0
- statemachine_engine/ui/node_modules/github-from-package/test/d.json +7 -0
- statemachine_engine/ui/node_modules/github-from-package/test/e.json +5 -0
- statemachine_engine/ui/node_modules/github-from-package/test/url.js +19 -0
- statemachine_engine/ui/node_modules/glob/common.js +238 -0
- statemachine_engine/ui/node_modules/glob/glob.js +790 -0
- statemachine_engine/ui/node_modules/glob/package.json +55 -0
- statemachine_engine/ui/node_modules/glob/sync.js +486 -0
- statemachine_engine/ui/node_modules/gopd/gOPD.js +4 -0
- statemachine_engine/ui/node_modules/gopd/index.js +15 -0
- statemachine_engine/ui/node_modules/gopd/package.json +77 -0
- statemachine_engine/ui/node_modules/gopd/test/index.js +36 -0
- statemachine_engine/ui/node_modules/gopd/tsconfig.json +9 -0
- statemachine_engine/ui/node_modules/graceful-fs/clone.js +23 -0
- statemachine_engine/ui/node_modules/graceful-fs/graceful-fs.js +448 -0
- statemachine_engine/ui/node_modules/graceful-fs/legacy-streams.js +118 -0
- statemachine_engine/ui/node_modules/graceful-fs/package.json +53 -0
- statemachine_engine/ui/node_modules/graceful-fs/polyfills.js +355 -0
- statemachine_engine/ui/node_modules/has-symbols/index.js +14 -0
- statemachine_engine/ui/node_modules/has-symbols/package.json +111 -0
- statemachine_engine/ui/node_modules/has-symbols/shams.js +45 -0
- statemachine_engine/ui/node_modules/has-symbols/test/index.js +22 -0
- statemachine_engine/ui/node_modules/has-symbols/test/shams/core-js.js +29 -0
- statemachine_engine/ui/node_modules/has-symbols/test/shams/get-own-property-symbols.js +29 -0
- statemachine_engine/ui/node_modules/has-symbols/test/tests.js +58 -0
- statemachine_engine/ui/node_modules/has-symbols/tsconfig.json +10 -0
- statemachine_engine/ui/node_modules/has-unicode/index.js +16 -0
- statemachine_engine/ui/node_modules/has-unicode/package.json +30 -0
- statemachine_engine/ui/node_modules/hasown/index.js +8 -0
- statemachine_engine/ui/node_modules/hasown/package.json +92 -0
- statemachine_engine/ui/node_modules/hasown/tsconfig.json +6 -0
- statemachine_engine/ui/node_modules/http-cache-semantics/index.js +928 -0
- statemachine_engine/ui/node_modules/http-cache-semantics/package.json +22 -0
- statemachine_engine/ui/node_modules/http-errors/index.js +289 -0
- statemachine_engine/ui/node_modules/http-errors/package.json +50 -0
- statemachine_engine/ui/node_modules/http-proxy-agent/dist/agent.js +145 -0
- statemachine_engine/ui/node_modules/http-proxy-agent/dist/index.js +14 -0
- statemachine_engine/ui/node_modules/http-proxy-agent/node_modules/debug/package.json +64 -0
- statemachine_engine/ui/node_modules/http-proxy-agent/node_modules/debug/src/browser.js +272 -0
- statemachine_engine/ui/node_modules/http-proxy-agent/node_modules/debug/src/common.js +292 -0
- statemachine_engine/ui/node_modules/http-proxy-agent/node_modules/debug/src/index.js +10 -0
- statemachine_engine/ui/node_modules/http-proxy-agent/node_modules/debug/src/node.js +263 -0
- statemachine_engine/ui/node_modules/http-proxy-agent/node_modules/ms/index.js +162 -0
- statemachine_engine/ui/node_modules/http-proxy-agent/node_modules/ms/package.json +38 -0
- statemachine_engine/ui/node_modules/http-proxy-agent/package.json +57 -0
- statemachine_engine/ui/node_modules/https-proxy-agent/dist/agent.js +177 -0
- statemachine_engine/ui/node_modules/https-proxy-agent/dist/index.js +14 -0
- statemachine_engine/ui/node_modules/https-proxy-agent/dist/parse-proxy-response.js +66 -0
- statemachine_engine/ui/node_modules/https-proxy-agent/node_modules/debug/package.json +64 -0
- statemachine_engine/ui/node_modules/https-proxy-agent/node_modules/debug/src/browser.js +272 -0
- statemachine_engine/ui/node_modules/https-proxy-agent/node_modules/debug/src/common.js +292 -0
- statemachine_engine/ui/node_modules/https-proxy-agent/node_modules/debug/src/index.js +10 -0
- statemachine_engine/ui/node_modules/https-proxy-agent/node_modules/debug/src/node.js +263 -0
- statemachine_engine/ui/node_modules/https-proxy-agent/node_modules/ms/index.js +162 -0
- statemachine_engine/ui/node_modules/https-proxy-agent/node_modules/ms/package.json +38 -0
- statemachine_engine/ui/node_modules/https-proxy-agent/package.json +56 -0
- statemachine_engine/ui/node_modules/humanize-ms/index.js +24 -0
- statemachine_engine/ui/node_modules/humanize-ms/package.json +37 -0
- statemachine_engine/ui/node_modules/iconv-lite/encodings/dbcs-codec.js +555 -0
- statemachine_engine/ui/node_modules/iconv-lite/encodings/dbcs-data.js +176 -0
- statemachine_engine/ui/node_modules/iconv-lite/encodings/index.js +22 -0
- statemachine_engine/ui/node_modules/iconv-lite/encodings/internal.js +188 -0
- statemachine_engine/ui/node_modules/iconv-lite/encodings/sbcs-codec.js +72 -0
- statemachine_engine/ui/node_modules/iconv-lite/encodings/sbcs-data-generated.js +451 -0
- statemachine_engine/ui/node_modules/iconv-lite/encodings/sbcs-data.js +174 -0
- statemachine_engine/ui/node_modules/iconv-lite/encodings/tables/big5-added.json +122 -0
- statemachine_engine/ui/node_modules/iconv-lite/encodings/tables/cp936.json +264 -0
- statemachine_engine/ui/node_modules/iconv-lite/encodings/tables/cp949.json +273 -0
- statemachine_engine/ui/node_modules/iconv-lite/encodings/tables/cp950.json +177 -0
- statemachine_engine/ui/node_modules/iconv-lite/encodings/tables/eucjp.json +182 -0
- statemachine_engine/ui/node_modules/iconv-lite/encodings/tables/gb18030-ranges.json +1 -0
- statemachine_engine/ui/node_modules/iconv-lite/encodings/tables/gbk-added.json +55 -0
- statemachine_engine/ui/node_modules/iconv-lite/encodings/tables/shiftjis.json +125 -0
- statemachine_engine/ui/node_modules/iconv-lite/encodings/utf16.js +177 -0
- statemachine_engine/ui/node_modules/iconv-lite/encodings/utf7.js +290 -0
- statemachine_engine/ui/node_modules/iconv-lite/lib/bom-handling.js +52 -0
- statemachine_engine/ui/node_modules/iconv-lite/lib/extend-node.js +217 -0
- statemachine_engine/ui/node_modules/iconv-lite/lib/index.js +153 -0
- statemachine_engine/ui/node_modules/iconv-lite/lib/streams.js +121 -0
- statemachine_engine/ui/node_modules/iconv-lite/package.json +46 -0
- statemachine_engine/ui/node_modules/ieee754/index.js +85 -0
- statemachine_engine/ui/node_modules/ieee754/package.json +52 -0
- statemachine_engine/ui/node_modules/imurmurhash/imurmurhash.js +138 -0
- statemachine_engine/ui/node_modules/imurmurhash/imurmurhash.min.js +12 -0
- statemachine_engine/ui/node_modules/imurmurhash/package.json +40 -0
- statemachine_engine/ui/node_modules/indent-string/index.js +35 -0
- statemachine_engine/ui/node_modules/indent-string/package.json +37 -0
- statemachine_engine/ui/node_modules/infer-owner/index.js +71 -0
- statemachine_engine/ui/node_modules/infer-owner/package.json +26 -0
- statemachine_engine/ui/node_modules/inflight/inflight.js +54 -0
- statemachine_engine/ui/node_modules/inflight/package.json +29 -0
- statemachine_engine/ui/node_modules/inherits/inherits.js +9 -0
- statemachine_engine/ui/node_modules/inherits/inherits_browser.js +27 -0
- statemachine_engine/ui/node_modules/inherits/package.json +29 -0
- statemachine_engine/ui/node_modules/ini/ini.js +206 -0
- statemachine_engine/ui/node_modules/ini/package.json +33 -0
- statemachine_engine/ui/node_modules/ip-address/dist/address-error.js +12 -0
- statemachine_engine/ui/node_modules/ip-address/dist/common.js +46 -0
- statemachine_engine/ui/node_modules/ip-address/dist/ip-address.js +35 -0
- statemachine_engine/ui/node_modules/ip-address/dist/ipv4.js +327 -0
- statemachine_engine/ui/node_modules/ip-address/dist/ipv6.js +1003 -0
- statemachine_engine/ui/node_modules/ip-address/dist/v4/constants.js +8 -0
- statemachine_engine/ui/node_modules/ip-address/dist/v6/constants.js +76 -0
- statemachine_engine/ui/node_modules/ip-address/dist/v6/helpers.js +45 -0
- statemachine_engine/ui/node_modules/ip-address/dist/v6/regular-expressions.js +95 -0
- statemachine_engine/ui/node_modules/ip-address/package.json +78 -0
- statemachine_engine/ui/node_modules/ipaddr.js/ipaddr.min.js +1 -0
- statemachine_engine/ui/node_modules/ipaddr.js/lib/ipaddr.js +673 -0
- statemachine_engine/ui/node_modules/ipaddr.js/package.json +35 -0
- statemachine_engine/ui/node_modules/is-fullwidth-code-point/index.js +50 -0
- statemachine_engine/ui/node_modules/is-fullwidth-code-point/package.json +42 -0
- statemachine_engine/ui/node_modules/is-lambda/index.js +6 -0
- statemachine_engine/ui/node_modules/is-lambda/package.json +35 -0
- statemachine_engine/ui/node_modules/is-lambda/test.js +16 -0
- statemachine_engine/ui/node_modules/isexe/index.js +57 -0
- statemachine_engine/ui/node_modules/isexe/mode.js +41 -0
- statemachine_engine/ui/node_modules/isexe/package.json +31 -0
- statemachine_engine/ui/node_modules/isexe/test/basic.js +221 -0
- statemachine_engine/ui/node_modules/isexe/windows.js +42 -0
- statemachine_engine/ui/node_modules/lru-cache/index.js +334 -0
- statemachine_engine/ui/node_modules/lru-cache/package.json +34 -0
- statemachine_engine/ui/node_modules/make-fetch-happen/lib/agent.js +194 -0
- statemachine_engine/ui/node_modules/make-fetch-happen/lib/cache/entry.js +460 -0
- statemachine_engine/ui/node_modules/make-fetch-happen/lib/cache/errors.js +10 -0
- statemachine_engine/ui/node_modules/make-fetch-happen/lib/cache/index.js +45 -0
- statemachine_engine/ui/node_modules/make-fetch-happen/lib/cache/key.js +17 -0
- statemachine_engine/ui/node_modules/make-fetch-happen/lib/cache/policy.js +161 -0
- statemachine_engine/ui/node_modules/make-fetch-happen/lib/fetch.js +100 -0
- statemachine_engine/ui/node_modules/make-fetch-happen/lib/index.js +40 -0
- statemachine_engine/ui/node_modules/make-fetch-happen/lib/options.js +44 -0
- statemachine_engine/ui/node_modules/make-fetch-happen/lib/remote.js +102 -0
- statemachine_engine/ui/node_modules/make-fetch-happen/package.json +76 -0
- statemachine_engine/ui/node_modules/math-intrinsics/abs.js +4 -0
- statemachine_engine/ui/node_modules/math-intrinsics/constants/maxArrayLength.js +4 -0
- statemachine_engine/ui/node_modules/math-intrinsics/constants/maxSafeInteger.js +5 -0
- statemachine_engine/ui/node_modules/math-intrinsics/constants/maxValue.js +5 -0
- statemachine_engine/ui/node_modules/math-intrinsics/floor.js +4 -0
- statemachine_engine/ui/node_modules/math-intrinsics/isFinite.js +12 -0
- statemachine_engine/ui/node_modules/math-intrinsics/isInteger.js +16 -0
- statemachine_engine/ui/node_modules/math-intrinsics/isNaN.js +6 -0
- statemachine_engine/ui/node_modules/math-intrinsics/isNegativeZero.js +6 -0
- statemachine_engine/ui/node_modules/math-intrinsics/max.js +4 -0
- statemachine_engine/ui/node_modules/math-intrinsics/min.js +4 -0
- statemachine_engine/ui/node_modules/math-intrinsics/mod.js +9 -0
- statemachine_engine/ui/node_modules/math-intrinsics/package.json +86 -0
- statemachine_engine/ui/node_modules/math-intrinsics/pow.js +4 -0
- statemachine_engine/ui/node_modules/math-intrinsics/round.js +4 -0
- statemachine_engine/ui/node_modules/math-intrinsics/sign.js +11 -0
- statemachine_engine/ui/node_modules/math-intrinsics/test/index.js +192 -0
- statemachine_engine/ui/node_modules/math-intrinsics/tsconfig.json +3 -0
- statemachine_engine/ui/node_modules/media-typer/index.js +270 -0
- statemachine_engine/ui/node_modules/media-typer/package.json +26 -0
- statemachine_engine/ui/node_modules/merge-descriptors/index.js +60 -0
- statemachine_engine/ui/node_modules/merge-descriptors/package.json +39 -0
- statemachine_engine/ui/node_modules/methods/index.js +69 -0
- statemachine_engine/ui/node_modules/methods/package.json +36 -0
- statemachine_engine/ui/node_modules/mime/cli.js +8 -0
- statemachine_engine/ui/node_modules/mime/mime.js +108 -0
- statemachine_engine/ui/node_modules/mime/package.json +44 -0
- statemachine_engine/ui/node_modules/mime/src/build.js +53 -0
- statemachine_engine/ui/node_modules/mime/src/test.js +60 -0
- statemachine_engine/ui/node_modules/mime/types.json +1 -0
- statemachine_engine/ui/node_modules/mime-db/db.json +8519 -0
- statemachine_engine/ui/node_modules/mime-db/index.js +12 -0
- statemachine_engine/ui/node_modules/mime-db/package.json +60 -0
- statemachine_engine/ui/node_modules/mime-types/index.js +188 -0
- statemachine_engine/ui/node_modules/mime-types/package.json +44 -0
- statemachine_engine/ui/node_modules/mimic-response/index.js +77 -0
- statemachine_engine/ui/node_modules/mimic-response/package.json +42 -0
- statemachine_engine/ui/node_modules/minimatch/minimatch.js +947 -0
- statemachine_engine/ui/node_modules/minimatch/package.json +33 -0
- statemachine_engine/ui/node_modules/minimist/example/parse.js +4 -0
- statemachine_engine/ui/node_modules/minimist/index.js +263 -0
- statemachine_engine/ui/node_modules/minimist/package.json +75 -0
- statemachine_engine/ui/node_modules/minimist/test/all_bool.js +34 -0
- statemachine_engine/ui/node_modules/minimist/test/bool.js +177 -0
- statemachine_engine/ui/node_modules/minimist/test/dash.js +43 -0
- statemachine_engine/ui/node_modules/minimist/test/default_bool.js +37 -0
- statemachine_engine/ui/node_modules/minimist/test/dotted.js +24 -0
- statemachine_engine/ui/node_modules/minimist/test/kv_short.js +32 -0
- statemachine_engine/ui/node_modules/minimist/test/long.js +33 -0
- statemachine_engine/ui/node_modules/minimist/test/num.js +38 -0
- statemachine_engine/ui/node_modules/minimist/test/parse.js +209 -0
- statemachine_engine/ui/node_modules/minimist/test/parse_modified.js +11 -0
- statemachine_engine/ui/node_modules/minimist/test/proto.js +64 -0
- statemachine_engine/ui/node_modules/minimist/test/short.js +69 -0
- statemachine_engine/ui/node_modules/minimist/test/stop_early.js +17 -0
- statemachine_engine/ui/node_modules/minimist/test/unknown.js +104 -0
- statemachine_engine/ui/node_modules/minimist/test/whitespace.js +10 -0
- statemachine_engine/ui/node_modules/minipass/index.js +649 -0
- statemachine_engine/ui/node_modules/minipass/package.json +56 -0
- statemachine_engine/ui/node_modules/minipass-collect/index.js +71 -0
- statemachine_engine/ui/node_modules/minipass-collect/package.json +29 -0
- statemachine_engine/ui/node_modules/minipass-fetch/index.js +1 -0
- statemachine_engine/ui/node_modules/minipass-fetch/lib/abort-error.js +17 -0
- statemachine_engine/ui/node_modules/minipass-fetch/lib/blob.js +97 -0
- statemachine_engine/ui/node_modules/minipass-fetch/lib/body.js +334 -0
- statemachine_engine/ui/node_modules/minipass-fetch/lib/fetch-error.js +31 -0
- statemachine_engine/ui/node_modules/minipass-fetch/lib/headers.js +250 -0
- statemachine_engine/ui/node_modules/minipass-fetch/lib/index.js +341 -0
- statemachine_engine/ui/node_modules/minipass-fetch/lib/request.js +263 -0
- statemachine_engine/ui/node_modules/minipass-fetch/lib/response.js +89 -0
- statemachine_engine/ui/node_modules/minipass-fetch/package.json +53 -0
- statemachine_engine/ui/node_modules/minipass-flush/index.js +39 -0
- statemachine_engine/ui/node_modules/minipass-flush/package.json +39 -0
- statemachine_engine/ui/node_modules/minipass-pipeline/index.js +128 -0
- statemachine_engine/ui/node_modules/minipass-pipeline/package.json +29 -0
- statemachine_engine/ui/node_modules/minipass-sized/index.js +67 -0
- statemachine_engine/ui/node_modules/minipass-sized/package-lock.json +3464 -0
- statemachine_engine/ui/node_modules/minipass-sized/package.json +39 -0
- statemachine_engine/ui/node_modules/minipass-sized/test/basic.js +83 -0
- statemachine_engine/ui/node_modules/minizlib/constants.js +115 -0
- statemachine_engine/ui/node_modules/minizlib/index.js +348 -0
- statemachine_engine/ui/node_modules/minizlib/package.json +42 -0
- statemachine_engine/ui/node_modules/mkdirp/bin/cmd.js +68 -0
- statemachine_engine/ui/node_modules/mkdirp/index.js +31 -0
- statemachine_engine/ui/node_modules/mkdirp/lib/find-made.js +29 -0
- statemachine_engine/ui/node_modules/mkdirp/lib/mkdirp-manual.js +64 -0
- statemachine_engine/ui/node_modules/mkdirp/lib/mkdirp-native.js +39 -0
- statemachine_engine/ui/node_modules/mkdirp/lib/opts-arg.js +23 -0
- statemachine_engine/ui/node_modules/mkdirp/lib/path-arg.js +29 -0
- statemachine_engine/ui/node_modules/mkdirp/lib/use-native.js +10 -0
- statemachine_engine/ui/node_modules/mkdirp/package.json +44 -0
- statemachine_engine/ui/node_modules/mkdirp-classic/index.js +98 -0
- statemachine_engine/ui/node_modules/mkdirp-classic/package.json +18 -0
- statemachine_engine/ui/node_modules/ms/index.js +152 -0
- statemachine_engine/ui/node_modules/ms/package.json +37 -0
- statemachine_engine/ui/node_modules/napi-build-utils/index.js +214 -0
- statemachine_engine/ui/node_modules/napi-build-utils/package.json +42 -0
- statemachine_engine/ui/node_modules/negotiator/index.js +82 -0
- statemachine_engine/ui/node_modules/negotiator/lib/charset.js +169 -0
- statemachine_engine/ui/node_modules/negotiator/lib/encoding.js +184 -0
- statemachine_engine/ui/node_modules/negotiator/lib/language.js +179 -0
- statemachine_engine/ui/node_modules/negotiator/lib/mediaType.js +294 -0
- statemachine_engine/ui/node_modules/negotiator/package.json +42 -0
- statemachine_engine/ui/node_modules/node-abi/abi_registry.json +408 -0
- statemachine_engine/ui/node_modules/node-abi/index.js +179 -0
- statemachine_engine/ui/node_modules/node-abi/package.json +45 -0
- statemachine_engine/ui/node_modules/node-addon-api/index.js +12 -0
- statemachine_engine/ui/node_modules/node-addon-api/package-support.json +21 -0
- statemachine_engine/ui/node_modules/node-addon-api/package.json +480 -0
- statemachine_engine/ui/node_modules/node-addon-api/tools/check-napi.js +99 -0
- statemachine_engine/ui/node_modules/node-addon-api/tools/clang-format.js +71 -0
- statemachine_engine/ui/node_modules/node-addon-api/tools/conversion.js +301 -0
- statemachine_engine/ui/node_modules/node-addon-api/tools/eslint-format.js +79 -0
- statemachine_engine/ui/node_modules/node-gyp/bin/node-gyp.js +140 -0
- statemachine_engine/ui/node_modules/node-gyp/gyp/gyp_main.py +45 -0
- statemachine_engine/ui/node_modules/node-gyp/gyp/pylib/gyp/MSVSNew.py +367 -0
- statemachine_engine/ui/node_modules/node-gyp/gyp/pylib/gyp/MSVSProject.py +206 -0
- statemachine_engine/ui/node_modules/node-gyp/gyp/pylib/gyp/MSVSSettings.py +1270 -0
- statemachine_engine/ui/node_modules/node-gyp/gyp/pylib/gyp/MSVSSettings_test.py +1547 -0
- statemachine_engine/ui/node_modules/node-gyp/gyp/pylib/gyp/MSVSToolFile.py +59 -0
- statemachine_engine/ui/node_modules/node-gyp/gyp/pylib/gyp/MSVSUserFile.py +153 -0
- statemachine_engine/ui/node_modules/node-gyp/gyp/pylib/gyp/MSVSUtil.py +271 -0
- statemachine_engine/ui/node_modules/node-gyp/gyp/pylib/gyp/MSVSVersion.py +574 -0
- statemachine_engine/ui/node_modules/node-gyp/gyp/pylib/gyp/__init__.py +666 -0
- statemachine_engine/ui/node_modules/node-gyp/gyp/pylib/gyp/common.py +654 -0
- statemachine_engine/ui/node_modules/node-gyp/gyp/pylib/gyp/common_test.py +78 -0
- statemachine_engine/ui/node_modules/node-gyp/gyp/pylib/gyp/easy_xml.py +165 -0
- statemachine_engine/ui/node_modules/node-gyp/gyp/pylib/gyp/easy_xml_test.py +109 -0
- statemachine_engine/ui/node_modules/node-gyp/gyp/pylib/gyp/flock_tool.py +55 -0
- statemachine_engine/ui/node_modules/node-gyp/gyp/pylib/gyp/generator/__init__.py +0 -0
- statemachine_engine/ui/node_modules/node-gyp/gyp/pylib/gyp/generator/analyzer.py +808 -0
- statemachine_engine/ui/node_modules/node-gyp/gyp/pylib/gyp/generator/android.py +1173 -0
- statemachine_engine/ui/node_modules/node-gyp/gyp/pylib/gyp/generator/cmake.py +1321 -0
- statemachine_engine/ui/node_modules/node-gyp/gyp/pylib/gyp/generator/compile_commands_json.py +120 -0
- statemachine_engine/ui/node_modules/node-gyp/gyp/pylib/gyp/generator/dump_dependency_json.py +103 -0
- statemachine_engine/ui/node_modules/node-gyp/gyp/pylib/gyp/generator/eclipse.py +464 -0
- statemachine_engine/ui/node_modules/node-gyp/gyp/pylib/gyp/generator/gypd.py +89 -0
- statemachine_engine/ui/node_modules/node-gyp/gyp/pylib/gyp/generator/gypsh.py +58 -0
- statemachine_engine/ui/node_modules/node-gyp/gyp/pylib/gyp/generator/make.py +2518 -0
- statemachine_engine/ui/node_modules/node-gyp/gyp/pylib/gyp/generator/msvs.py +3978 -0
- statemachine_engine/ui/node_modules/node-gyp/gyp/pylib/gyp/generator/msvs_test.py +44 -0
- statemachine_engine/ui/node_modules/node-gyp/gyp/pylib/gyp/generator/ninja.py +2936 -0
- statemachine_engine/ui/node_modules/node-gyp/gyp/pylib/gyp/generator/ninja_test.py +55 -0
- statemachine_engine/ui/node_modules/node-gyp/gyp/pylib/gyp/generator/xcode.py +1394 -0
- statemachine_engine/ui/node_modules/node-gyp/gyp/pylib/gyp/generator/xcode_test.py +25 -0
- statemachine_engine/ui/node_modules/node-gyp/gyp/pylib/gyp/input.py +3137 -0
- statemachine_engine/ui/node_modules/node-gyp/gyp/pylib/gyp/input_test.py +98 -0
- statemachine_engine/ui/node_modules/node-gyp/gyp/pylib/gyp/mac_tool.py +771 -0
- statemachine_engine/ui/node_modules/node-gyp/gyp/pylib/gyp/msvs_emulation.py +1271 -0
- statemachine_engine/ui/node_modules/node-gyp/gyp/pylib/gyp/ninja_syntax.py +174 -0
- statemachine_engine/ui/node_modules/node-gyp/gyp/pylib/gyp/simple_copy.py +61 -0
- statemachine_engine/ui/node_modules/node-gyp/gyp/pylib/gyp/win_tool.py +374 -0
- statemachine_engine/ui/node_modules/node-gyp/gyp/pylib/gyp/xcode_emulation.py +1939 -0
- statemachine_engine/ui/node_modules/node-gyp/gyp/pylib/gyp/xcode_ninja.py +302 -0
- statemachine_engine/ui/node_modules/node-gyp/gyp/pylib/gyp/xcodeproj_file.py +3197 -0
- statemachine_engine/ui/node_modules/node-gyp/gyp/pylib/gyp/xml_fix.py +65 -0
- statemachine_engine/ui/node_modules/node-gyp/gyp/setup.py +42 -0
- statemachine_engine/ui/node_modules/node-gyp/gyp/test_gyp.py +260 -0
- statemachine_engine/ui/node_modules/node-gyp/gyp/tools/graphviz.py +102 -0
- statemachine_engine/ui/node_modules/node-gyp/gyp/tools/pretty_gyp.py +156 -0
- statemachine_engine/ui/node_modules/node-gyp/gyp/tools/pretty_sln.py +181 -0
- statemachine_engine/ui/node_modules/node-gyp/gyp/tools/pretty_vcproj.py +339 -0
- statemachine_engine/ui/node_modules/node-gyp/lib/build.js +204 -0
- statemachine_engine/ui/node_modules/node-gyp/lib/clean.js +15 -0
- statemachine_engine/ui/node_modules/node-gyp/lib/configure.js +294 -0
- statemachine_engine/ui/node_modules/node-gyp/lib/create-config-gypi.js +146 -0
- statemachine_engine/ui/node_modules/node-gyp/lib/find-node-directory.js +63 -0
- statemachine_engine/ui/node_modules/node-gyp/lib/find-python.js +344 -0
- statemachine_engine/ui/node_modules/node-gyp/lib/find-visualstudio.js +446 -0
- statemachine_engine/ui/node_modules/node-gyp/lib/install.js +376 -0
- statemachine_engine/ui/node_modules/node-gyp/lib/list.js +27 -0
- statemachine_engine/ui/node_modules/node-gyp/lib/node-gyp.js +211 -0
- statemachine_engine/ui/node_modules/node-gyp/lib/process-release.js +147 -0
- statemachine_engine/ui/node_modules/node-gyp/lib/rebuild.js +13 -0
- statemachine_engine/ui/node_modules/node-gyp/lib/remove.js +46 -0
- statemachine_engine/ui/node_modules/node-gyp/lib/util.js +64 -0
- statemachine_engine/ui/node_modules/node-gyp/package.json +50 -0
- statemachine_engine/ui/node_modules/node-gyp/test/common.js +3 -0
- statemachine_engine/ui/node_modules/node-gyp/test/fixtures/test-charmap.py +31 -0
- statemachine_engine/ui/node_modules/node-gyp/test/process-exec-sync.js +140 -0
- statemachine_engine/ui/node_modules/node-gyp/test/simple-proxy.js +27 -0
- statemachine_engine/ui/node_modules/node-gyp/test/test-addon.js +150 -0
- statemachine_engine/ui/node_modules/node-gyp/test/test-configure-python.js +82 -0
- statemachine_engine/ui/node_modules/node-gyp/test/test-create-config-gypi.js +70 -0
- statemachine_engine/ui/node_modules/node-gyp/test/test-download.js +207 -0
- statemachine_engine/ui/node_modules/node-gyp/test/test-find-accessible-sync.js +84 -0
- statemachine_engine/ui/node_modules/node-gyp/test/test-find-node-directory.js +119 -0
- statemachine_engine/ui/node_modules/node-gyp/test/test-find-python.js +226 -0
- statemachine_engine/ui/node_modules/node-gyp/test/test-find-visualstudio.js +676 -0
- statemachine_engine/ui/node_modules/node-gyp/test/test-install.js +46 -0
- statemachine_engine/ui/node_modules/node-gyp/test/test-options.js +31 -0
- statemachine_engine/ui/node_modules/node-gyp/test/test-process-release.js +434 -0
- statemachine_engine/ui/node_modules/node-gyp/update-gyp.py +46 -0
- statemachine_engine/ui/node_modules/nopt/bin/nopt.js +54 -0
- statemachine_engine/ui/node_modules/nopt/lib/nopt.js +441 -0
- statemachine_engine/ui/node_modules/nopt/package.json +34 -0
- statemachine_engine/ui/node_modules/npmlog/lib/log.js +404 -0
- statemachine_engine/ui/node_modules/npmlog/package.json +51 -0
- statemachine_engine/ui/node_modules/object-inspect/example/all.js +23 -0
- statemachine_engine/ui/node_modules/object-inspect/example/circular.js +6 -0
- statemachine_engine/ui/node_modules/object-inspect/example/fn.js +5 -0
- statemachine_engine/ui/node_modules/object-inspect/example/inspect.js +10 -0
- statemachine_engine/ui/node_modules/object-inspect/index.js +544 -0
- statemachine_engine/ui/node_modules/object-inspect/package-support.json +20 -0
- statemachine_engine/ui/node_modules/object-inspect/package.json +105 -0
- statemachine_engine/ui/node_modules/object-inspect/test/bigint.js +58 -0
- statemachine_engine/ui/node_modules/object-inspect/test/browser/dom.js +15 -0
- statemachine_engine/ui/node_modules/object-inspect/test/circular.js +16 -0
- statemachine_engine/ui/node_modules/object-inspect/test/deep.js +12 -0
- statemachine_engine/ui/node_modules/object-inspect/test/element.js +53 -0
- statemachine_engine/ui/node_modules/object-inspect/test/err.js +48 -0
- statemachine_engine/ui/node_modules/object-inspect/test/fakes.js +29 -0
- statemachine_engine/ui/node_modules/object-inspect/test/fn.js +76 -0
- statemachine_engine/ui/node_modules/object-inspect/test/global.js +17 -0
- statemachine_engine/ui/node_modules/object-inspect/test/has.js +15 -0
- statemachine_engine/ui/node_modules/object-inspect/test/holes.js +15 -0
- statemachine_engine/ui/node_modules/object-inspect/test/indent-option.js +271 -0
- statemachine_engine/ui/node_modules/object-inspect/test/inspect.js +139 -0
- statemachine_engine/ui/node_modules/object-inspect/test/lowbyte.js +12 -0
- statemachine_engine/ui/node_modules/object-inspect/test/number.js +58 -0
- statemachine_engine/ui/node_modules/object-inspect/test/quoteStyle.js +26 -0
- statemachine_engine/ui/node_modules/object-inspect/test/toStringTag.js +40 -0
- statemachine_engine/ui/node_modules/object-inspect/test/undef.js +12 -0
- statemachine_engine/ui/node_modules/object-inspect/test/values.js +261 -0
- statemachine_engine/ui/node_modules/object-inspect/test-core-js.js +26 -0
- statemachine_engine/ui/node_modules/object-inspect/util.inspect.js +1 -0
- statemachine_engine/ui/node_modules/on-finished/index.js +234 -0
- statemachine_engine/ui/node_modules/on-finished/package.json +39 -0
- statemachine_engine/ui/node_modules/once/once.js +42 -0
- statemachine_engine/ui/node_modules/once/package.json +33 -0
- statemachine_engine/ui/node_modules/p-map/index.js +81 -0
- statemachine_engine/ui/node_modules/p-map/package.json +53 -0
- statemachine_engine/ui/node_modules/parseurl/index.js +158 -0
- statemachine_engine/ui/node_modules/parseurl/package.json +40 -0
- statemachine_engine/ui/node_modules/path-is-absolute/index.js +20 -0
- statemachine_engine/ui/node_modules/path-is-absolute/package.json +43 -0
- statemachine_engine/ui/node_modules/path-to-regexp/index.js +156 -0
- statemachine_engine/ui/node_modules/path-to-regexp/package.json +30 -0
- statemachine_engine/ui/node_modules/prebuild-install/asset.js +44 -0
- statemachine_engine/ui/node_modules/prebuild-install/bin.js +78 -0
- statemachine_engine/ui/node_modules/prebuild-install/download.js +142 -0
- statemachine_engine/ui/node_modules/prebuild-install/error.js +14 -0
- statemachine_engine/ui/node_modules/prebuild-install/index.js +1 -0
- statemachine_engine/ui/node_modules/prebuild-install/log.js +33 -0
- statemachine_engine/ui/node_modules/prebuild-install/package.json +67 -0
- statemachine_engine/ui/node_modules/prebuild-install/proxy.js +35 -0
- statemachine_engine/ui/node_modules/prebuild-install/rc.js +64 -0
- statemachine_engine/ui/node_modules/prebuild-install/util.js +143 -0
- statemachine_engine/ui/node_modules/promise-inflight/inflight.js +36 -0
- statemachine_engine/ui/node_modules/promise-inflight/package.json +24 -0
- statemachine_engine/ui/node_modules/promise-retry/index.js +52 -0
- statemachine_engine/ui/node_modules/promise-retry/package.json +37 -0
- statemachine_engine/ui/node_modules/promise-retry/test/test.js +263 -0
- statemachine_engine/ui/node_modules/proxy-addr/index.js +327 -0
- statemachine_engine/ui/node_modules/proxy-addr/package.json +47 -0
- statemachine_engine/ui/node_modules/pump/index.js +86 -0
- statemachine_engine/ui/node_modules/pump/package.json +24 -0
- statemachine_engine/ui/node_modules/pump/test-browser.js +66 -0
- statemachine_engine/ui/node_modules/pump/test-node.js +53 -0
- statemachine_engine/ui/node_modules/qs/dist/qs.js +90 -0
- statemachine_engine/ui/node_modules/qs/lib/formats.js +23 -0
- statemachine_engine/ui/node_modules/qs/lib/index.js +11 -0
- statemachine_engine/ui/node_modules/qs/lib/parse.js +296 -0
- statemachine_engine/ui/node_modules/qs/lib/stringify.js +351 -0
- statemachine_engine/ui/node_modules/qs/lib/utils.js +265 -0
- statemachine_engine/ui/node_modules/qs/package.json +91 -0
- statemachine_engine/ui/node_modules/qs/test/empty-keys-cases.js +267 -0
- statemachine_engine/ui/node_modules/qs/test/parse.js +1170 -0
- statemachine_engine/ui/node_modules/qs/test/stringify.js +1298 -0
- statemachine_engine/ui/node_modules/qs/test/utils.js +136 -0
- statemachine_engine/ui/node_modules/range-parser/index.js +162 -0
- statemachine_engine/ui/node_modules/range-parser/package.json +44 -0
- statemachine_engine/ui/node_modules/raw-body/index.js +336 -0
- statemachine_engine/ui/node_modules/raw-body/package.json +49 -0
- statemachine_engine/ui/node_modules/rc/browser.js +7 -0
- statemachine_engine/ui/node_modules/rc/cli.js +4 -0
- statemachine_engine/ui/node_modules/rc/index.js +53 -0
- statemachine_engine/ui/node_modules/rc/lib/utils.js +104 -0
- statemachine_engine/ui/node_modules/rc/package.json +29 -0
- statemachine_engine/ui/node_modules/rc/test/ini.js +16 -0
- statemachine_engine/ui/node_modules/rc/test/nested-env-vars.js +50 -0
- statemachine_engine/ui/node_modules/rc/test/test.js +59 -0
- statemachine_engine/ui/node_modules/readable-stream/errors-browser.js +127 -0
- statemachine_engine/ui/node_modules/readable-stream/errors.js +116 -0
- statemachine_engine/ui/node_modules/readable-stream/experimentalWarning.js +17 -0
- statemachine_engine/ui/node_modules/readable-stream/lib/_stream_duplex.js +126 -0
- statemachine_engine/ui/node_modules/readable-stream/lib/_stream_passthrough.js +37 -0
- statemachine_engine/ui/node_modules/readable-stream/lib/_stream_readable.js +1027 -0
- statemachine_engine/ui/node_modules/readable-stream/lib/_stream_transform.js +190 -0
- statemachine_engine/ui/node_modules/readable-stream/lib/_stream_writable.js +641 -0
- statemachine_engine/ui/node_modules/readable-stream/lib/internal/streams/async_iterator.js +180 -0
- statemachine_engine/ui/node_modules/readable-stream/lib/internal/streams/buffer_list.js +183 -0
- statemachine_engine/ui/node_modules/readable-stream/lib/internal/streams/destroy.js +96 -0
- statemachine_engine/ui/node_modules/readable-stream/lib/internal/streams/end-of-stream.js +86 -0
- statemachine_engine/ui/node_modules/readable-stream/lib/internal/streams/from-browser.js +3 -0
- statemachine_engine/ui/node_modules/readable-stream/lib/internal/streams/from.js +52 -0
- statemachine_engine/ui/node_modules/readable-stream/lib/internal/streams/pipeline.js +86 -0
- statemachine_engine/ui/node_modules/readable-stream/lib/internal/streams/state.js +22 -0
- statemachine_engine/ui/node_modules/readable-stream/lib/internal/streams/stream-browser.js +1 -0
- statemachine_engine/ui/node_modules/readable-stream/lib/internal/streams/stream.js +1 -0
- statemachine_engine/ui/node_modules/readable-stream/package.json +68 -0
- statemachine_engine/ui/node_modules/readable-stream/readable-browser.js +9 -0
- statemachine_engine/ui/node_modules/readable-stream/readable.js +16 -0
- statemachine_engine/ui/node_modules/retry/example/dns.js +31 -0
- statemachine_engine/ui/node_modules/retry/example/stop.js +40 -0
- statemachine_engine/ui/node_modules/retry/index.js +1 -0
- statemachine_engine/ui/node_modules/retry/lib/retry.js +100 -0
- statemachine_engine/ui/node_modules/retry/lib/retry_operation.js +158 -0
- statemachine_engine/ui/node_modules/retry/package.json +32 -0
- statemachine_engine/ui/node_modules/retry/test/common.js +10 -0
- statemachine_engine/ui/node_modules/retry/test/integration/test-forever.js +24 -0
- statemachine_engine/ui/node_modules/retry/test/integration/test-retry-operation.js +258 -0
- statemachine_engine/ui/node_modules/retry/test/integration/test-retry-wrap.js +101 -0
- statemachine_engine/ui/node_modules/retry/test/integration/test-timeouts.js +69 -0
- statemachine_engine/ui/node_modules/rimraf/bin.js +68 -0
- statemachine_engine/ui/node_modules/rimraf/package.json +32 -0
- statemachine_engine/ui/node_modules/rimraf/rimraf.js +360 -0
- statemachine_engine/ui/node_modules/safe-buffer/index.js +65 -0
- statemachine_engine/ui/node_modules/safe-buffer/package.json +51 -0
- statemachine_engine/ui/node_modules/safer-buffer/dangerous.js +58 -0
- statemachine_engine/ui/node_modules/safer-buffer/package.json +34 -0
- statemachine_engine/ui/node_modules/safer-buffer/safer.js +77 -0
- statemachine_engine/ui/node_modules/safer-buffer/tests.js +406 -0
- statemachine_engine/ui/node_modules/semver/bin/semver.js +191 -0
- statemachine_engine/ui/node_modules/semver/classes/comparator.js +143 -0
- statemachine_engine/ui/node_modules/semver/classes/index.js +7 -0
- statemachine_engine/ui/node_modules/semver/classes/range.js +556 -0
- statemachine_engine/ui/node_modules/semver/classes/semver.js +319 -0
- statemachine_engine/ui/node_modules/semver/functions/clean.js +8 -0
- statemachine_engine/ui/node_modules/semver/functions/cmp.js +54 -0
- statemachine_engine/ui/node_modules/semver/functions/coerce.js +62 -0
- statemachine_engine/ui/node_modules/semver/functions/compare-build.js +9 -0
- statemachine_engine/ui/node_modules/semver/functions/compare-loose.js +5 -0
- statemachine_engine/ui/node_modules/semver/functions/compare.js +7 -0
- statemachine_engine/ui/node_modules/semver/functions/diff.js +60 -0
- statemachine_engine/ui/node_modules/semver/functions/eq.js +5 -0
- statemachine_engine/ui/node_modules/semver/functions/gt.js +5 -0
- statemachine_engine/ui/node_modules/semver/functions/gte.js +5 -0
- statemachine_engine/ui/node_modules/semver/functions/inc.js +21 -0
- statemachine_engine/ui/node_modules/semver/functions/lt.js +5 -0
- statemachine_engine/ui/node_modules/semver/functions/lte.js +5 -0
- statemachine_engine/ui/node_modules/semver/functions/major.js +5 -0
- statemachine_engine/ui/node_modules/semver/functions/minor.js +5 -0
- statemachine_engine/ui/node_modules/semver/functions/neq.js +5 -0
- statemachine_engine/ui/node_modules/semver/functions/parse.js +18 -0
- statemachine_engine/ui/node_modules/semver/functions/patch.js +5 -0
- statemachine_engine/ui/node_modules/semver/functions/prerelease.js +8 -0
- statemachine_engine/ui/node_modules/semver/functions/rcompare.js +5 -0
- statemachine_engine/ui/node_modules/semver/functions/rsort.js +5 -0
- statemachine_engine/ui/node_modules/semver/functions/satisfies.js +12 -0
- statemachine_engine/ui/node_modules/semver/functions/sort.js +5 -0
- statemachine_engine/ui/node_modules/semver/functions/valid.js +8 -0
- statemachine_engine/ui/node_modules/semver/index.js +91 -0
- statemachine_engine/ui/node_modules/semver/internal/constants.js +37 -0
- statemachine_engine/ui/node_modules/semver/internal/debug.js +11 -0
- statemachine_engine/ui/node_modules/semver/internal/identifiers.js +25 -0
- statemachine_engine/ui/node_modules/semver/internal/lrucache.js +42 -0
- statemachine_engine/ui/node_modules/semver/internal/parse-options.js +17 -0
- statemachine_engine/ui/node_modules/semver/internal/re.js +223 -0
- statemachine_engine/ui/node_modules/semver/package.json +78 -0
- statemachine_engine/ui/node_modules/semver/preload.js +4 -0
- statemachine_engine/ui/node_modules/semver/ranges/gtr.js +6 -0
- statemachine_engine/ui/node_modules/semver/ranges/intersects.js +9 -0
- statemachine_engine/ui/node_modules/semver/ranges/ltr.js +6 -0
- statemachine_engine/ui/node_modules/semver/ranges/max-satisfying.js +27 -0
- statemachine_engine/ui/node_modules/semver/ranges/min-satisfying.js +26 -0
- statemachine_engine/ui/node_modules/semver/ranges/min-version.js +63 -0
- statemachine_engine/ui/node_modules/semver/ranges/outside.js +82 -0
- statemachine_engine/ui/node_modules/semver/ranges/simplify.js +49 -0
- statemachine_engine/ui/node_modules/semver/ranges/subset.js +249 -0
- statemachine_engine/ui/node_modules/semver/ranges/to-comparators.js +10 -0
- statemachine_engine/ui/node_modules/semver/ranges/valid.js +13 -0
- statemachine_engine/ui/node_modules/send/index.js +1142 -0
- statemachine_engine/ui/node_modules/send/node_modules/encodeurl/index.js +60 -0
- statemachine_engine/ui/node_modules/send/node_modules/encodeurl/package.json +40 -0
- statemachine_engine/ui/node_modules/send/node_modules/ms/index.js +162 -0
- statemachine_engine/ui/node_modules/send/node_modules/ms/package.json +38 -0
- statemachine_engine/ui/node_modules/send/package.json +62 -0
- statemachine_engine/ui/node_modules/serve-static/index.js +209 -0
- statemachine_engine/ui/node_modules/serve-static/package.json +42 -0
- statemachine_engine/ui/node_modules/set-blocking/index.js +7 -0
- statemachine_engine/ui/node_modules/set-blocking/package.json +42 -0
- statemachine_engine/ui/node_modules/setprototypeof/index.js +17 -0
- statemachine_engine/ui/node_modules/setprototypeof/package.json +38 -0
- statemachine_engine/ui/node_modules/setprototypeof/test/index.js +24 -0
- statemachine_engine/ui/node_modules/side-channel/index.js +43 -0
- statemachine_engine/ui/node_modules/side-channel/package.json +85 -0
- statemachine_engine/ui/node_modules/side-channel/test/index.js +104 -0
- statemachine_engine/ui/node_modules/side-channel/tsconfig.json +9 -0
- statemachine_engine/ui/node_modules/side-channel-list/index.js +113 -0
- statemachine_engine/ui/node_modules/side-channel-list/package.json +77 -0
- statemachine_engine/ui/node_modules/side-channel-list/test/index.js +104 -0
- statemachine_engine/ui/node_modules/side-channel-list/tsconfig.json +9 -0
- statemachine_engine/ui/node_modules/side-channel-map/index.js +68 -0
- statemachine_engine/ui/node_modules/side-channel-map/package.json +80 -0
- statemachine_engine/ui/node_modules/side-channel-map/test/index.js +114 -0
- statemachine_engine/ui/node_modules/side-channel-map/tsconfig.json +9 -0
- statemachine_engine/ui/node_modules/side-channel-weakmap/index.js +84 -0
- statemachine_engine/ui/node_modules/side-channel-weakmap/package.json +87 -0
- statemachine_engine/ui/node_modules/side-channel-weakmap/test/index.js +114 -0
- statemachine_engine/ui/node_modules/side-channel-weakmap/tsconfig.json +9 -0
- statemachine_engine/ui/node_modules/signal-exit/index.js +202 -0
- statemachine_engine/ui/node_modules/signal-exit/package.json +38 -0
- statemachine_engine/ui/node_modules/signal-exit/signals.js +53 -0
- statemachine_engine/ui/node_modules/simple-concat/index.js +15 -0
- statemachine_engine/ui/node_modules/simple-concat/package.json +47 -0
- statemachine_engine/ui/node_modules/simple-concat/test/basic.js +41 -0
- statemachine_engine/ui/node_modules/simple-get/index.js +108 -0
- statemachine_engine/ui/node_modules/simple-get/package.json +67 -0
- statemachine_engine/ui/node_modules/smart-buffer/build/smartbuffer.js +1233 -0
- statemachine_engine/ui/node_modules/smart-buffer/build/utils.js +108 -0
- statemachine_engine/ui/node_modules/smart-buffer/package.json +79 -0
- statemachine_engine/ui/node_modules/socks/build/client/socksclient.js +793 -0
- statemachine_engine/ui/node_modules/socks/build/common/constants.js +108 -0
- statemachine_engine/ui/node_modules/socks/build/common/helpers.js +167 -0
- statemachine_engine/ui/node_modules/socks/build/common/receivebuffer.js +43 -0
- statemachine_engine/ui/node_modules/socks/build/common/util.js +25 -0
- statemachine_engine/ui/node_modules/socks/build/index.js +18 -0
- statemachine_engine/ui/node_modules/socks/package.json +58 -0
- statemachine_engine/ui/node_modules/socks-proxy-agent/dist/index.js +197 -0
- statemachine_engine/ui/node_modules/socks-proxy-agent/node_modules/debug/package.json +64 -0
- statemachine_engine/ui/node_modules/socks-proxy-agent/node_modules/debug/src/browser.js +272 -0
- statemachine_engine/ui/node_modules/socks-proxy-agent/node_modules/debug/src/common.js +292 -0
- statemachine_engine/ui/node_modules/socks-proxy-agent/node_modules/debug/src/index.js +10 -0
- statemachine_engine/ui/node_modules/socks-proxy-agent/node_modules/debug/src/node.js +263 -0
- statemachine_engine/ui/node_modules/socks-proxy-agent/node_modules/ms/index.js +162 -0
- statemachine_engine/ui/node_modules/socks-proxy-agent/node_modules/ms/package.json +38 -0
- statemachine_engine/ui/node_modules/socks-proxy-agent/package.json +181 -0
- statemachine_engine/ui/node_modules/sqlite3/deps/extract.js +10 -0
- statemachine_engine/ui/node_modules/sqlite3/lib/sqlite3-binding.js +1 -0
- statemachine_engine/ui/node_modules/sqlite3/lib/sqlite3.js +207 -0
- statemachine_engine/ui/node_modules/sqlite3/lib/trace.js +38 -0
- statemachine_engine/ui/node_modules/sqlite3/package.json +89 -0
- statemachine_engine/ui/node_modules/ssri/index.js +470 -0
- statemachine_engine/ui/node_modules/ssri/package.json +52 -0
- statemachine_engine/ui/node_modules/statuses/codes.json +65 -0
- statemachine_engine/ui/node_modules/statuses/index.js +146 -0
- statemachine_engine/ui/node_modules/statuses/package.json +49 -0
- statemachine_engine/ui/node_modules/string-width/index.js +47 -0
- statemachine_engine/ui/node_modules/string-width/package.json +56 -0
- statemachine_engine/ui/node_modules/string_decoder/lib/string_decoder.js +296 -0
- statemachine_engine/ui/node_modules/string_decoder/package.json +34 -0
- statemachine_engine/ui/node_modules/strip-ansi/index.js +4 -0
- statemachine_engine/ui/node_modules/strip-ansi/package.json +54 -0
- statemachine_engine/ui/node_modules/strip-json-comments/index.js +70 -0
- statemachine_engine/ui/node_modules/strip-json-comments/package.json +42 -0
- statemachine_engine/ui/node_modules/tar/index.js +18 -0
- statemachine_engine/ui/node_modules/tar/lib/create.js +111 -0
- statemachine_engine/ui/node_modules/tar/lib/extract.js +113 -0
- statemachine_engine/ui/node_modules/tar/lib/get-write-flag.js +20 -0
- statemachine_engine/ui/node_modules/tar/lib/header.js +304 -0
- statemachine_engine/ui/node_modules/tar/lib/high-level-opt.js +29 -0
- statemachine_engine/ui/node_modules/tar/lib/large-numbers.js +104 -0
- statemachine_engine/ui/node_modules/tar/lib/list.js +139 -0
- statemachine_engine/ui/node_modules/tar/lib/mkdir.js +229 -0
- statemachine_engine/ui/node_modules/tar/lib/mode-fix.js +27 -0
- statemachine_engine/ui/node_modules/tar/lib/normalize-unicode.js +12 -0
- statemachine_engine/ui/node_modules/tar/lib/normalize-windows-path.js +8 -0
- statemachine_engine/ui/node_modules/tar/lib/pack.js +432 -0
- statemachine_engine/ui/node_modules/tar/lib/parse.js +552 -0
- statemachine_engine/ui/node_modules/tar/lib/path-reservations.js +156 -0
- statemachine_engine/ui/node_modules/tar/lib/pax.js +150 -0
- statemachine_engine/ui/node_modules/tar/lib/read-entry.js +107 -0
- statemachine_engine/ui/node_modules/tar/lib/replace.js +246 -0
- statemachine_engine/ui/node_modules/tar/lib/strip-absolute-path.js +24 -0
- statemachine_engine/ui/node_modules/tar/lib/strip-trailing-slashes.js +13 -0
- statemachine_engine/ui/node_modules/tar/lib/types.js +44 -0
- statemachine_engine/ui/node_modules/tar/lib/unpack.js +923 -0
- statemachine_engine/ui/node_modules/tar/lib/update.js +40 -0
- statemachine_engine/ui/node_modules/tar/lib/warn-mixin.js +24 -0
- statemachine_engine/ui/node_modules/tar/lib/winchars.js +23 -0
- statemachine_engine/ui/node_modules/tar/lib/write-entry.js +546 -0
- statemachine_engine/ui/node_modules/tar/node_modules/minipass/index.js +702 -0
- statemachine_engine/ui/node_modules/tar/node_modules/minipass/package.json +76 -0
- statemachine_engine/ui/node_modules/tar/package.json +70 -0
- statemachine_engine/ui/node_modules/tar-fs/index.js +363 -0
- statemachine_engine/ui/node_modules/tar-fs/node_modules/chownr/chownr.js +167 -0
- statemachine_engine/ui/node_modules/tar-fs/node_modules/chownr/package.json +29 -0
- statemachine_engine/ui/node_modules/tar-fs/package.json +41 -0
- statemachine_engine/ui/node_modules/tar-fs/test/index.js +346 -0
- statemachine_engine/ui/node_modules/tar-stream/extract.js +257 -0
- statemachine_engine/ui/node_modules/tar-stream/headers.js +295 -0
- statemachine_engine/ui/node_modules/tar-stream/index.js +2 -0
- statemachine_engine/ui/node_modules/tar-stream/pack.js +255 -0
- statemachine_engine/ui/node_modules/tar-stream/package.json +58 -0
- statemachine_engine/ui/node_modules/tar-stream/sandbox.js +11 -0
- statemachine_engine/ui/node_modules/toidentifier/index.js +32 -0
- statemachine_engine/ui/node_modules/toidentifier/package.json +38 -0
- statemachine_engine/ui/node_modules/tunnel-agent/index.js +244 -0
- statemachine_engine/ui/node_modules/tunnel-agent/package.json +22 -0
- statemachine_engine/ui/node_modules/type-is/index.js +266 -0
- statemachine_engine/ui/node_modules/type-is/package.json +45 -0
- statemachine_engine/ui/node_modules/unique-filename/.nyc_output/54942.json +1 -0
- statemachine_engine/ui/node_modules/unique-filename/.nyc_output/54944.json +1 -0
- statemachine_engine/ui/node_modules/unique-filename/coverage/__root__/index.html +73 -0
- statemachine_engine/ui/node_modules/unique-filename/coverage/__root__/index.js.html +69 -0
- statemachine_engine/ui/node_modules/unique-filename/coverage/base.css +182 -0
- statemachine_engine/ui/node_modules/unique-filename/coverage/index.html +73 -0
- statemachine_engine/ui/node_modules/unique-filename/coverage/prettify.css +1 -0
- statemachine_engine/ui/node_modules/unique-filename/coverage/prettify.js +1 -0
- statemachine_engine/ui/node_modules/unique-filename/coverage/sorter.js +156 -0
- statemachine_engine/ui/node_modules/unique-filename/index.js +8 -0
- statemachine_engine/ui/node_modules/unique-filename/package.json +27 -0
- statemachine_engine/ui/node_modules/unique-filename/test/index.js +23 -0
- statemachine_engine/ui/node_modules/unique-slug/index.js +11 -0
- statemachine_engine/ui/node_modules/unique-slug/package.json +23 -0
- statemachine_engine/ui/node_modules/unique-slug/test/index.js +13 -0
- statemachine_engine/ui/node_modules/unpipe/index.js +69 -0
- statemachine_engine/ui/node_modules/unpipe/package.json +27 -0
- statemachine_engine/ui/node_modules/util-deprecate/browser.js +67 -0
- statemachine_engine/ui/node_modules/util-deprecate/node.js +6 -0
- statemachine_engine/ui/node_modules/util-deprecate/package.json +27 -0
- statemachine_engine/ui/node_modules/utils-merge/index.js +23 -0
- statemachine_engine/ui/node_modules/utils-merge/package.json +40 -0
- statemachine_engine/ui/node_modules/vary/index.js +149 -0
- statemachine_engine/ui/node_modules/vary/package.json +43 -0
- statemachine_engine/ui/node_modules/which/package.json +43 -0
- statemachine_engine/ui/node_modules/which/which.js +125 -0
- statemachine_engine/ui/node_modules/wide-align/align.js +65 -0
- statemachine_engine/ui/node_modules/wide-align/package.json +33 -0
- statemachine_engine/ui/node_modules/wrappy/package.json +29 -0
- statemachine_engine/ui/node_modules/wrappy/wrappy.js +33 -0
- statemachine_engine/ui/node_modules/yallist/iterator.js +8 -0
- statemachine_engine/ui/node_modules/yallist/package.json +29 -0
- statemachine_engine/ui/node_modules/yallist/yallist.js +426 -0
- statemachine_engine/ui/package-lock.json +2304 -0
- statemachine_engine/ui/package.json +17 -0
- statemachine_engine/ui/public/app-modular.js +158 -0
- statemachine_engine/ui/public/app.js +903 -0
- statemachine_engine/ui/public/index.html +77 -0
- statemachine_engine/ui/public/modules/ActivityLogger.js +55 -0
- statemachine_engine/ui/public/modules/DiagramManager.js +323 -0
- statemachine_engine/ui/public/modules/MachineStateManager.js +261 -0
- statemachine_engine/ui/public/modules/WebSocketManager.js +111 -0
- statemachine_engine/ui/public/style.css +572 -0
- statemachine_engine/ui/server.js +396 -0
- statemachine_engine-0.0.2.dist-info/METADATA +448 -0
- statemachine_engine-0.0.2.dist-info/RECORD +1022 -0
- statemachine_engine-0.0.2.dist-info/WHEEL +5 -0
- statemachine_engine-0.0.2.dist-info/entry_points.txt +5 -0
- statemachine_engine-0.0.2.dist-info/licenses/LICENSE +21 -0
- statemachine_engine-0.0.2.dist-info/top_level.txt +1 -0
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
"""State Machine Engine - Event-driven workflow framework"""
|
|
2
|
+
|
|
3
|
+
__version__ = "1.0.0"
|
|
4
|
+
|
|
5
|
+
from .core.engine import StateMachineEngine
|
|
6
|
+
from .core.action_loader import ActionLoader
|
|
7
|
+
from .actions.base import BaseAction
|
|
8
|
+
from .database.models.base import Database
|
|
9
|
+
from .database.models.job import JobModel
|
|
10
|
+
|
|
11
|
+
__all__ = [
|
|
12
|
+
"StateMachineEngine",
|
|
13
|
+
"ActionLoader",
|
|
14
|
+
"BaseAction",
|
|
15
|
+
"Database",
|
|
16
|
+
"JobModel",
|
|
17
|
+
]
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
"""
|
|
2
|
+
BaseAction - Abstract base class for pluggable state machine actions
|
|
3
|
+
|
|
4
|
+
IMPORTANT: Changes via Change Management, see CLAUDE.md
|
|
5
|
+
|
|
6
|
+
Defines the standard interface for all state machine actions loaded dynamically from YAML configuration.
|
|
7
|
+
Actions receive config parameters from YAML and execution context from the state machine, then return
|
|
8
|
+
event names to trigger state transitions. Provides common functionality for configuration access,
|
|
9
|
+
logging setup, and description handling across all action implementations.
|
|
10
|
+
|
|
11
|
+
KEY FILES:
|
|
12
|
+
- src/actions/bash_action.py - Shell command execution implementation
|
|
13
|
+
- src/actions/check_queue_action.py - Job queue monitoring implementation
|
|
14
|
+
- src/state_machine/engine.py - Dynamic action loading and execution
|
|
15
|
+
|
|
16
|
+
KEY FUNCTIONS:
|
|
17
|
+
- execute(context) - Abstract method for action execution, returns event name
|
|
18
|
+
- get_description() - Get action description from config or generate default
|
|
19
|
+
- get_config_value(key, default) - Retrieve configuration values with fallbacks
|
|
20
|
+
"""
|
|
21
|
+
|
|
22
|
+
import asyncio
|
|
23
|
+
import logging
|
|
24
|
+
from abc import ABC, abstractmethod
|
|
25
|
+
from typing import Dict, Any, Optional
|
|
26
|
+
|
|
27
|
+
|
|
28
|
+
class BaseAction(ABC):
|
|
29
|
+
"""Base class for all state machine actions."""
|
|
30
|
+
|
|
31
|
+
def __init__(self, action_config: Dict[str, Any]):
|
|
32
|
+
"""
|
|
33
|
+
Initialize action with configuration.
|
|
34
|
+
|
|
35
|
+
Args:
|
|
36
|
+
action_config: Configuration dictionary from YAML
|
|
37
|
+
"""
|
|
38
|
+
self.config = action_config
|
|
39
|
+
self.logger = logging.getLogger(f"{self.__class__.__module__}.{self.__class__.__name__}")
|
|
40
|
+
|
|
41
|
+
@abstractmethod
|
|
42
|
+
async def execute(self, context: Dict[str, Any]) -> str:
|
|
43
|
+
"""
|
|
44
|
+
Execute the action.
|
|
45
|
+
|
|
46
|
+
Args:
|
|
47
|
+
context: State machine context
|
|
48
|
+
|
|
49
|
+
Returns:
|
|
50
|
+
Event name to trigger next state transition
|
|
51
|
+
"""
|
|
52
|
+
pass
|
|
53
|
+
|
|
54
|
+
def get_description(self) -> str:
|
|
55
|
+
"""Get action description from config or default."""
|
|
56
|
+
return self.config.get('description', f"{self.__class__.__name__} action")
|
|
57
|
+
|
|
58
|
+
def get_config_value(self, key: str, default: Any = None) -> Any:
|
|
59
|
+
"""Get configuration value with optional default."""
|
|
60
|
+
return self.config.get(key, default)
|
|
61
|
+
|
|
62
|
+
def get_machine_name(self, context: Dict[str, Any]) -> str:
|
|
63
|
+
"""Get machine name from context for logging."""
|
|
64
|
+
return context.get('machine_name', 'unknown')
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
"""Built-in Actions for State Machine Engine"""
|
|
2
|
+
|
|
3
|
+
from .bash_action import BashAction
|
|
4
|
+
from .check_database_queue_action import CheckDatabaseQueueAction
|
|
5
|
+
from .check_machine_state_action import CheckMachineStateAction
|
|
6
|
+
from .clear_events_action import ClearEventsAction
|
|
7
|
+
from .log_action import LogAction
|
|
8
|
+
from .send_event_action import SendEventAction
|
|
9
|
+
|
|
10
|
+
__all__ = [
|
|
11
|
+
'BashAction',
|
|
12
|
+
'CheckDatabaseQueueAction',
|
|
13
|
+
'CheckMachineStateAction',
|
|
14
|
+
'ClearEventsAction',
|
|
15
|
+
'LogAction',
|
|
16
|
+
'SendEventAction',
|
|
17
|
+
]
|
|
@@ -0,0 +1,313 @@
|
|
|
1
|
+
"""
|
|
2
|
+
BashAction - Execute shell commands with template parameter substitution and error mapping
|
|
3
|
+
|
|
4
|
+
IMPORTANT: Changes via Change Management, see CLAUDE.md
|
|
5
|
+
|
|
6
|
+
Executes bash commands defined in YAML configuration, substituting template parameters from job data
|
|
7
|
+
using {param_name} placeholders. Commands run with configurable timeout, and the action returns
|
|
8
|
+
custom success events or mapped error events based on exit codes. Supports error mapping to specific
|
|
9
|
+
events (e.g., exit code 1 → 'no_faces_detected') and prevents automatic job removal for recoverable
|
|
10
|
+
errors that should be handled by state machine transitions.
|
|
11
|
+
|
|
12
|
+
KEY FILES:
|
|
13
|
+
- config/face_changer_database.yaml - YAML configuration with bash actions, error_mappings, and success events
|
|
14
|
+
- src/database/ - Database-backed job storage and management
|
|
15
|
+
- working/ - Temporary directory for safe file processing
|
|
16
|
+
|
|
17
|
+
KEY FUNCTIONS:
|
|
18
|
+
- execute(context) - Main action execution with parameter substitution, command running, and error mapping
|
|
19
|
+
- get_config_value() - Retrieve configuration values including error_mappings and success events
|
|
20
|
+
|
|
21
|
+
NEW FEATURES:
|
|
22
|
+
- error_mappings: Map exit codes to specific error events (e.g., "1": "no_faces_detected")
|
|
23
|
+
- success: Custom success event names instead of default 'job_done'
|
|
24
|
+
- Conditional job removal: Specific errors like 'no_faces_detected' bypass auto-removal
|
|
25
|
+
"""
|
|
26
|
+
|
|
27
|
+
import asyncio
|
|
28
|
+
import logging
|
|
29
|
+
from typing import Dict, Any
|
|
30
|
+
from ..base import BaseAction
|
|
31
|
+
|
|
32
|
+
logger = logging.getLogger(__name__)
|
|
33
|
+
|
|
34
|
+
|
|
35
|
+
class BashAction(BaseAction):
|
|
36
|
+
"""
|
|
37
|
+
Action that executes bash commands with error mapping support.
|
|
38
|
+
|
|
39
|
+
Returns:
|
|
40
|
+
- Custom success event (from 'success' config) or 'job_done' on exit code 0
|
|
41
|
+
- Mapped error event (from 'error_mappings' config) on specific exit codes
|
|
42
|
+
- Default 'error' event on unmapped failures
|
|
43
|
+
|
|
44
|
+
Error Mapping Example:
|
|
45
|
+
error_mappings:
|
|
46
|
+
"1": "no_faces_detected" # Exit code 1 → no_faces_detected event
|
|
47
|
+
"2": "invalid_image" # Exit code 2 → invalid_image event
|
|
48
|
+
"""
|
|
49
|
+
|
|
50
|
+
async def execute(self, context: Dict[str, Any]) -> str:
|
|
51
|
+
"""
|
|
52
|
+
Execute bash command and return event based on exit code.
|
|
53
|
+
|
|
54
|
+
Args:
|
|
55
|
+
context: State machine context containing current_job and queue
|
|
56
|
+
|
|
57
|
+
Returns:
|
|
58
|
+
- success event (config 'success' or 'job_done') on exit code 0
|
|
59
|
+
- mapped error event (from 'error_mappings') on specific exit codes
|
|
60
|
+
- 'error' on unmapped failures
|
|
61
|
+
|
|
62
|
+
Error Handling:
|
|
63
|
+
- Mapped errors (e.g., 'no_faces_detected') preserve job for state machine handling
|
|
64
|
+
- Unmapped errors auto-remove job to prevent infinite retries
|
|
65
|
+
- Timeouts and exceptions also auto-remove job
|
|
66
|
+
"""
|
|
67
|
+
# Get command from job data first, fall back to config with parameter substitution
|
|
68
|
+
job = context.get('current_job')
|
|
69
|
+
command = None
|
|
70
|
+
|
|
71
|
+
if job and isinstance(job.get('data'), dict):
|
|
72
|
+
job_data = job['data']
|
|
73
|
+
command = job_data.get('command')
|
|
74
|
+
|
|
75
|
+
# Use config command and substitute parameters from job data (assumes add-job.sh usage)
|
|
76
|
+
if not command:
|
|
77
|
+
command = self.get_config_value('command')
|
|
78
|
+
if command and job and isinstance(job.get('data'), dict):
|
|
79
|
+
job_data = job['data']
|
|
80
|
+
|
|
81
|
+
# Get context values for fallback substitution
|
|
82
|
+
# Start with ALL context (includes id, last_error, etc.), then overlay job_data
|
|
83
|
+
context_data = {**context} # Start with full context (includes propagated job fields)
|
|
84
|
+
|
|
85
|
+
# Overlay job_data (so job_data takes precedence over propagated context)
|
|
86
|
+
context_data.update(job_data)
|
|
87
|
+
|
|
88
|
+
# Add event payload data if available (for machine-to-machine communication)
|
|
89
|
+
event_data = context.get('event_data', {})
|
|
90
|
+
if event_data and isinstance(event_data, dict):
|
|
91
|
+
event_payload = event_data.get('payload', {})
|
|
92
|
+
if event_payload and isinstance(event_payload, dict):
|
|
93
|
+
# Merge event payload fields into context_data
|
|
94
|
+
for key, value in event_payload.items():
|
|
95
|
+
if key not in job_data: # Don't override job data
|
|
96
|
+
context_data[key] = value
|
|
97
|
+
|
|
98
|
+
# Handle fallback syntax first (e.g., {enhanced_prompt|pony_prompt})
|
|
99
|
+
import re
|
|
100
|
+
fallback_pattern = r'\{([^|}]+)\|([^}]+)\}'
|
|
101
|
+
fallback_matches = re.findall(fallback_pattern, command)
|
|
102
|
+
|
|
103
|
+
for primary_key, fallback_key in fallback_matches:
|
|
104
|
+
placeholder = f"{{{primary_key}|{fallback_key}}}"
|
|
105
|
+
quoted_placeholder = f"'{{{primary_key}|{fallback_key}}}'"
|
|
106
|
+
|
|
107
|
+
# Try primary key first, then fallback
|
|
108
|
+
value = context_data.get(primary_key)
|
|
109
|
+
if value is None:
|
|
110
|
+
value = context_data.get(fallback_key)
|
|
111
|
+
|
|
112
|
+
if value is not None:
|
|
113
|
+
# Handle quoted version - escape internal single quotes and wrap in single quotes
|
|
114
|
+
if quoted_placeholder in command:
|
|
115
|
+
# Escape single quotes in value for bash single-quote context
|
|
116
|
+
escaped_value = str(value).replace("'", "'\\''")
|
|
117
|
+
command = command.replace(quoted_placeholder, f"'{escaped_value}'")
|
|
118
|
+
machine_name = self.get_machine_name(context)
|
|
119
|
+
logger.debug(f"[{machine_name}] Substituted {quoted_placeholder} with '{escaped_value}' (using {primary_key if primary_key in context_data else fallback_key})")
|
|
120
|
+
|
|
121
|
+
# Handle unquoted version (separate from quoted, both can occur in same command)
|
|
122
|
+
if placeholder in command:
|
|
123
|
+
if isinstance(value, str) and ('/' in value or ' ' in value):
|
|
124
|
+
quoted_value = f'"{value}"'
|
|
125
|
+
else:
|
|
126
|
+
quoted_value = str(value)
|
|
127
|
+
command = command.replace(placeholder, quoted_value)
|
|
128
|
+
machine_name = self.get_machine_name(context)
|
|
129
|
+
logger.debug(f"[{machine_name}] Substituted {placeholder} with {quoted_value} (using {primary_key if primary_key in context_data else fallback_key})")
|
|
130
|
+
|
|
131
|
+
# Substitute regular parameters using {param_name} placeholders
|
|
132
|
+
for key, value in context_data.items():
|
|
133
|
+
if key != 'event': # Skip event field
|
|
134
|
+
placeholder = f"{{{key}}}"
|
|
135
|
+
quoted_placeholder = f"'{{{key}}}'"
|
|
136
|
+
|
|
137
|
+
# First handle quoted placeholders - escape internal single quotes and wrap in single quotes
|
|
138
|
+
if quoted_placeholder in command:
|
|
139
|
+
# Escape single quotes in value for bash single-quote context
|
|
140
|
+
escaped_value = str(value).replace("'", "'\\''")
|
|
141
|
+
command = command.replace(quoted_placeholder, f"'{escaped_value}'")
|
|
142
|
+
machine_name = self.get_machine_name(context)
|
|
143
|
+
logger.debug(f"[{machine_name}] Substituted {quoted_placeholder} with '{escaped_value}'")
|
|
144
|
+
|
|
145
|
+
# Then handle unquoted placeholders (separate from quoted, both can occur in same command)
|
|
146
|
+
if placeholder in command:
|
|
147
|
+
# For unquoted placeholders, add quotes for paths/strings with spaces
|
|
148
|
+
if isinstance(value, str) and ('/' in value or ' ' in value):
|
|
149
|
+
quoted_value = f'"{value}"'
|
|
150
|
+
else:
|
|
151
|
+
quoted_value = str(value)
|
|
152
|
+
command = command.replace(placeholder, quoted_value)
|
|
153
|
+
machine_name = self.get_machine_name(context)
|
|
154
|
+
logger.debug(f"[{machine_name}] Substituted {placeholder} with {quoted_value}")
|
|
155
|
+
|
|
156
|
+
# Check for any remaining unsubstituted placeholders
|
|
157
|
+
remaining_placeholders = re.findall(r'\{[^}]+\}', command)
|
|
158
|
+
if remaining_placeholders:
|
|
159
|
+
machine_name = self.get_machine_name(context)
|
|
160
|
+
logger.warning(f"[{machine_name}] Unsubstituted placeholders found: {remaining_placeholders}")
|
|
161
|
+
|
|
162
|
+
if not command:
|
|
163
|
+
machine_name = self.get_machine_name(context)
|
|
164
|
+
logger.error(f"[{machine_name}] No command specified in job data or bash action config")
|
|
165
|
+
return 'error'
|
|
166
|
+
|
|
167
|
+
timeout = self.get_config_value('timeout', 30)
|
|
168
|
+
job_id = job['id'] if job else 'unknown'
|
|
169
|
+
|
|
170
|
+
# Use description for user-facing messages (INFO level), command details only at DEBUG
|
|
171
|
+
description = self.get_config_value('description')
|
|
172
|
+
machine_name = self.get_machine_name(context)
|
|
173
|
+
if description:
|
|
174
|
+
# User-facing descriptions logged at INFO (but skip repetitive/routine ones)
|
|
175
|
+
# Suppress: Initialize, Check, Reset (cleanup), mkdir operations
|
|
176
|
+
skip_prefixes = ['🔄 Initialize', '📋 Check', '🔄 Reset']
|
|
177
|
+
if not any(description.startswith(prefix) for prefix in skip_prefixes):
|
|
178
|
+
logger.info(f"[{machine_name}] {description[:60]}")
|
|
179
|
+
|
|
180
|
+
# Command details only at DEBUG level (but skip simple mkdir commands)
|
|
181
|
+
# Add rate limiting for frequently executed commands
|
|
182
|
+
if not hasattr(self.__class__, '_cmd_count'):
|
|
183
|
+
self.__class__._cmd_count = {}
|
|
184
|
+
|
|
185
|
+
cmd_key = command[:50] # Use first 50 chars as key
|
|
186
|
+
if cmd_key not in self.__class__._cmd_count:
|
|
187
|
+
self.__class__._cmd_count[cmd_key] = 0
|
|
188
|
+
self.__class__._cmd_count[cmd_key] += 1
|
|
189
|
+
|
|
190
|
+
if not command.startswith('mkdir -p'):
|
|
191
|
+
# Log first occurrence and every 100th to track frequency
|
|
192
|
+
if self.__class__._cmd_count[cmd_key] == 1:
|
|
193
|
+
logger.info(f"[{machine_name}] [BASH FREQUENCY TRACKER] First execution: {command}")
|
|
194
|
+
elif self.__class__._cmd_count[cmd_key] % 100 == 0:
|
|
195
|
+
logger.warning(f"[{machine_name}] [BASH FREQUENCY TRACKER] Command executed {self.__class__._cmd_count[cmd_key]} times: {command}")
|
|
196
|
+
|
|
197
|
+
logger.debug(f"[{machine_name}] Executing command for job {job_id}: {command}")
|
|
198
|
+
|
|
199
|
+
try:
|
|
200
|
+
# Execute command with timeout
|
|
201
|
+
process = await asyncio.create_subprocess_shell(
|
|
202
|
+
command,
|
|
203
|
+
stdout=asyncio.subprocess.PIPE,
|
|
204
|
+
stderr=asyncio.subprocess.PIPE
|
|
205
|
+
)
|
|
206
|
+
|
|
207
|
+
stdout, stderr = await asyncio.wait_for(
|
|
208
|
+
process.communicate(),
|
|
209
|
+
timeout=timeout
|
|
210
|
+
)
|
|
211
|
+
|
|
212
|
+
# Only log output if non-empty and meaningful (skip routine messages)
|
|
213
|
+
stdout_text = stdout.decode().strip() if stdout else ""
|
|
214
|
+
stderr_text = stderr.decode().strip() if stderr else ""
|
|
215
|
+
|
|
216
|
+
routine_messages = [
|
|
217
|
+
"No stuck processing jobs found",
|
|
218
|
+
"Successfully",
|
|
219
|
+
"Job created:",
|
|
220
|
+
]
|
|
221
|
+
|
|
222
|
+
is_routine = any(msg in stdout_text for msg in routine_messages)
|
|
223
|
+
|
|
224
|
+
if stdout_text and not is_routine:
|
|
225
|
+
logger.debug(f"[{machine_name}] Output: {stdout_text[:200]}") # Truncate long output
|
|
226
|
+
if stderr_text:
|
|
227
|
+
logger.warning(f"[{machine_name}] Error output: {stderr_text[:200]}")
|
|
228
|
+
|
|
229
|
+
# Check exit code (don't log success for every command)
|
|
230
|
+
if process.returncode == 0:
|
|
231
|
+
# Include command context in completion log
|
|
232
|
+
cmd_summary = command[:50] + "..." if len(command) > 50 else command
|
|
233
|
+
logger.debug(f"[{machine_name}] Command completed (exit 0): {cmd_summary}")
|
|
234
|
+
|
|
235
|
+
# Don't auto-complete jobs here - let the state machine handle job completion
|
|
236
|
+
# when the entire pipeline is done
|
|
237
|
+
|
|
238
|
+
# Don't clear current job here - it may be needed by subsequent actions in the same state
|
|
239
|
+
|
|
240
|
+
# Return custom success event if specified, otherwise 'job_done'
|
|
241
|
+
success_event = self.get_config_value('success', 'job_done')
|
|
242
|
+
return success_event
|
|
243
|
+
else:
|
|
244
|
+
error_output = stderr.decode().strip() if stderr else "No error output"
|
|
245
|
+
logger.error(f"[{machine_name}] Command failed with exit code {process.returncode} for job {job_id}")
|
|
246
|
+
logger.error(f"[{machine_name}] Failed command: {command}")
|
|
247
|
+
logger.error(f"[{machine_name}] Error output: {error_output}")
|
|
248
|
+
|
|
249
|
+
# Store error details in context for error_cleanup state with improved formatting
|
|
250
|
+
# Include command on separate line for better readability in logs
|
|
251
|
+
context['last_error'] = f"Command failed (exit {process.returncode}): {error_output}\nCommand: {command}"
|
|
252
|
+
context['last_error_action'] = 'bash'
|
|
253
|
+
context['last_error_command'] = command
|
|
254
|
+
context['last_error_exit_code'] = process.returncode
|
|
255
|
+
|
|
256
|
+
# Check for error mapping based on exit code
|
|
257
|
+
error_mappings = self.get_config_value('error_mappings', {})
|
|
258
|
+
if str(process.returncode) in error_mappings:
|
|
259
|
+
mapped_error = error_mappings[str(process.returncode)]
|
|
260
|
+
logger.info(f"[{machine_name}] Mapping exit code {process.returncode} to event: {mapped_error}")
|
|
261
|
+
|
|
262
|
+
# For specific error types like no_faces_detected, don't auto-remove job
|
|
263
|
+
# Let the state machine handle it through proper transitions
|
|
264
|
+
if mapped_error in ['no_faces_detected']:
|
|
265
|
+
return mapped_error
|
|
266
|
+
|
|
267
|
+
# For unmapped errors, let the state machine handle job failure via error event
|
|
268
|
+
# Don't auto-remove jobs here - the state machine will handle proper cleanup
|
|
269
|
+
# and status updates via error_cleanup state
|
|
270
|
+
|
|
271
|
+
# Clear current job on error to prevent infinite loops
|
|
272
|
+
context.pop('current_job', None)
|
|
273
|
+
|
|
274
|
+
# Return mapped error event if available, otherwise default 'error'
|
|
275
|
+
return error_mappings.get(str(process.returncode), 'error')
|
|
276
|
+
|
|
277
|
+
except asyncio.TimeoutError:
|
|
278
|
+
machine_name = self.get_machine_name(context)
|
|
279
|
+
timeout_msg = f"Command timed out after {timeout} seconds"
|
|
280
|
+
logger.error(f"[{machine_name}] {timeout_msg} for job {job_id}")
|
|
281
|
+
logger.error(f"[{machine_name}] Timed out command: {command}")
|
|
282
|
+
|
|
283
|
+
# Store timeout error in context with improved formatting
|
|
284
|
+
context['last_error'] = f"{timeout_msg}\nCommand: {command}"
|
|
285
|
+
context['last_error_action'] = 'bash'
|
|
286
|
+
context['last_error_command'] = command
|
|
287
|
+
|
|
288
|
+
# Let the state machine handle job failure via error event
|
|
289
|
+
# Don't auto-remove jobs here - the state machine will handle proper cleanup
|
|
290
|
+
# and status updates via error_cleanup state
|
|
291
|
+
|
|
292
|
+
# Clear current job on timeout to prevent infinite loops
|
|
293
|
+
context.pop('current_job', None)
|
|
294
|
+
return 'error'
|
|
295
|
+
|
|
296
|
+
except Exception as e:
|
|
297
|
+
machine_name = self.get_machine_name(context)
|
|
298
|
+
error_msg = f"Command execution exception: {str(e)}"
|
|
299
|
+
logger.error(f"[{machine_name}] {error_msg} for job {job_id}")
|
|
300
|
+
logger.error(f"[{machine_name}] Failed command: {command}")
|
|
301
|
+
|
|
302
|
+
# Store exception details in context with improved formatting
|
|
303
|
+
context['last_error'] = f"{error_msg}\nCommand: {command}"
|
|
304
|
+
context['last_error_action'] = 'bash'
|
|
305
|
+
context['last_error_command'] = command
|
|
306
|
+
|
|
307
|
+
# Let the state machine handle job failure via error event
|
|
308
|
+
# Don't auto-remove jobs here - the state machine will handle proper cleanup
|
|
309
|
+
# and status updates via error_cleanup state
|
|
310
|
+
|
|
311
|
+
# Clear current job on exception to prevent infinite loops
|
|
312
|
+
context.pop('current_job', None)
|
|
313
|
+
return 'error'
|
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
"""
|
|
2
|
+
Unified database queue checking action
|
|
3
|
+
|
|
4
|
+
IMPORTANT: Changes via Change Management, see CLAUDE.md
|
|
5
|
+
|
|
6
|
+
Supports both face_processing and pony_flux job types in a single unified action
|
|
7
|
+
"""
|
|
8
|
+
import logging
|
|
9
|
+
from typing import Dict, Any, Optional
|
|
10
|
+
import sys
|
|
11
|
+
from pathlib import Path
|
|
12
|
+
|
|
13
|
+
# Add src to path for imports
|
|
14
|
+
sys.path.insert(0, str(Path(__file__).parent.parent))
|
|
15
|
+
|
|
16
|
+
from ..base import BaseAction
|
|
17
|
+
from statemachine_engine.database.models import get_job_model
|
|
18
|
+
|
|
19
|
+
logger = logging.getLogger(__name__)
|
|
20
|
+
|
|
21
|
+
class CheckDatabaseQueueAction(BaseAction):
|
|
22
|
+
"""
|
|
23
|
+
Unified action to check database queue for jobs of any type
|
|
24
|
+
Supports both face_processing and pony_flux job types
|
|
25
|
+
"""
|
|
26
|
+
|
|
27
|
+
def __init__(self, config: Dict[str, Any]):
|
|
28
|
+
super().__init__(config)
|
|
29
|
+
self.job_model = get_job_model()
|
|
30
|
+
# Get job type from config, default to face_processing for backward compatibility
|
|
31
|
+
self.job_type = config.get('job_type', 'face_processing')
|
|
32
|
+
# Get machine type for concurrent architecture
|
|
33
|
+
self.machine_type = config.get('machine_type', None)
|
|
34
|
+
|
|
35
|
+
async def execute(self, context: Dict[str, Any]) -> str:
|
|
36
|
+
"""Check database queue for next job of specified type"""
|
|
37
|
+
try:
|
|
38
|
+
# First, fail any processing jobs with missing input files (for face_processing only)
|
|
39
|
+
if self.job_type == 'face_processing':
|
|
40
|
+
self._fail_jobs_with_missing_files()
|
|
41
|
+
|
|
42
|
+
job = self.job_model.get_next_job(job_type=self.job_type, machine_type=self.machine_type)
|
|
43
|
+
|
|
44
|
+
if job:
|
|
45
|
+
# Extract data from JSON field (get_next_job() already parsed it)
|
|
46
|
+
job_data = job.get('data', {})
|
|
47
|
+
|
|
48
|
+
# Store job in context - data is already in the right format
|
|
49
|
+
# Engine will propagate job_data to context automatically
|
|
50
|
+
context['current_job'] = {
|
|
51
|
+
'id': job['job_id'],
|
|
52
|
+
'source_job_id': job.get('source_job_id'),
|
|
53
|
+
'job_type': job['job_type'],
|
|
54
|
+
'data': job_data # Already parsed by JobModel.get_next_job()
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
# Store job model in context for job completion
|
|
58
|
+
context['job_model'] = self.job_model
|
|
59
|
+
|
|
60
|
+
machine_name = context.get('machine_name', 'unknown')
|
|
61
|
+
logger.info(f"[{machine_name}] {job['job_type']} job {job['job_id']} retrieved from queue (data keys: {list(job_data.keys())})")
|
|
62
|
+
|
|
63
|
+
return "new_job"
|
|
64
|
+
else:
|
|
65
|
+
return "no_jobs"
|
|
66
|
+
|
|
67
|
+
except Exception as e:
|
|
68
|
+
machine_name = context.get('machine_name', 'unknown')
|
|
69
|
+
logger.error(f"[{machine_name}] Error checking database queue: {e}")
|
|
70
|
+
return "error"
|
|
71
|
+
|
|
72
|
+
def _fail_jobs_with_missing_files(self):
|
|
73
|
+
"""Mark processing jobs as failed when they reference non-existent files"""
|
|
74
|
+
try:
|
|
75
|
+
# Only clean up jobs for this machine type
|
|
76
|
+
machine_type = self.config.get('machine_type')
|
|
77
|
+
problem_jobs = self.job_model.get_processing_jobs_with_missing_files(machine_type)
|
|
78
|
+
|
|
79
|
+
for job in problem_jobs:
|
|
80
|
+
job_id = job['job_id']
|
|
81
|
+
# get_processing_jobs_with_missing_files returns jobs with data already parsed
|
|
82
|
+
job_data = job.get('data', {})
|
|
83
|
+
input_path = job_data.get('input_image_path')
|
|
84
|
+
|
|
85
|
+
# Additional safety check for None values
|
|
86
|
+
if input_path is None:
|
|
87
|
+
machine_name = self.config.get('machine_type', 'unknown')
|
|
88
|
+
logger.warning(f"[{machine_name}] Skipping job {job_id} - no input image path")
|
|
89
|
+
continue
|
|
90
|
+
|
|
91
|
+
reason = f"Input file not found: {input_path}"
|
|
92
|
+
|
|
93
|
+
machine_name = self.config.get('machine_type', 'unknown')
|
|
94
|
+
logger.warning(f"[{machine_name}] Marking job {job_id} as failed - {reason}")
|
|
95
|
+
self.job_model.fail_job(job_id, reason)
|
|
96
|
+
|
|
97
|
+
if problem_jobs:
|
|
98
|
+
machine_name = self.config.get('machine_type', 'unknown')
|
|
99
|
+
logger.info(f"[{machine_name}] Marked {len(problem_jobs)} jobs with missing input files as failed")
|
|
100
|
+
|
|
101
|
+
except Exception as e:
|
|
102
|
+
machine_name = self.config.get('machine_type', 'unknown')
|
|
103
|
+
logger.error(f"[{machine_name}] Error during job cleanup: {e}")
|
|
@@ -0,0 +1,138 @@
|
|
|
1
|
+
"""
|
|
2
|
+
CheckMachineStateAction - Validate target machine state
|
|
3
|
+
|
|
4
|
+
IMPORTANT: Changes via Change Management, see CLAUDE.md
|
|
5
|
+
|
|
6
|
+
Queries pipeline_results table to get target machine's current state
|
|
7
|
+
and validates it against expected states.
|
|
8
|
+
"""
|
|
9
|
+
import logging
|
|
10
|
+
import subprocess
|
|
11
|
+
import asyncio
|
|
12
|
+
from typing import Dict, Any, List, Optional
|
|
13
|
+
from datetime import datetime
|
|
14
|
+
|
|
15
|
+
from ..base import BaseAction
|
|
16
|
+
from statemachine_engine.database.models import get_job_model
|
|
17
|
+
|
|
18
|
+
logger = logging.getLogger(__name__)
|
|
19
|
+
|
|
20
|
+
class CheckMachineStateAction(BaseAction):
|
|
21
|
+
"""
|
|
22
|
+
Action to check another machine's current state and validate it.
|
|
23
|
+
|
|
24
|
+
Returns:
|
|
25
|
+
- in_expected_state: Machine is running and in expected state
|
|
26
|
+
- unexpected_state: Machine is running but in wrong state
|
|
27
|
+
- not_running: Machine process not found or state data stale
|
|
28
|
+
"""
|
|
29
|
+
|
|
30
|
+
def __init__(self, config: Dict[str, Any]):
|
|
31
|
+
super().__init__(config)
|
|
32
|
+
self.target_machine = config.get('target_machine', 'unknown')
|
|
33
|
+
self.expected_states = config.get('expected_states', [])
|
|
34
|
+
self.timeout_seconds = config.get('timeout_seconds', 60)
|
|
35
|
+
self.job_model = get_job_model()
|
|
36
|
+
|
|
37
|
+
async def execute(self, context: Dict[str, Any]) -> str:
|
|
38
|
+
"""Check target machine state and validate"""
|
|
39
|
+
try:
|
|
40
|
+
# 1. Check if machine process is running
|
|
41
|
+
machine_name = self.get_machine_name(context)
|
|
42
|
+
is_running = await self._is_process_running(self.target_machine)
|
|
43
|
+
if not is_running:
|
|
44
|
+
logger.warning(f"[{machine_name}] Machine {self.target_machine} process not found")
|
|
45
|
+
return 'not_running'
|
|
46
|
+
|
|
47
|
+
# 2. Get current state from database
|
|
48
|
+
current_state = self._get_current_state(self.target_machine)
|
|
49
|
+
|
|
50
|
+
if not current_state:
|
|
51
|
+
logger.warning(f"[{machine_name}] No recent state data for {self.target_machine}")
|
|
52
|
+
return 'not_running'
|
|
53
|
+
|
|
54
|
+
# 3. Validate against expected states
|
|
55
|
+
if current_state in self.expected_states:
|
|
56
|
+
logger.info(f"[{machine_name}] Machine {self.target_machine} in expected state: {current_state}")
|
|
57
|
+
return 'in_expected_state'
|
|
58
|
+
else:
|
|
59
|
+
logger.info(f"[{machine_name}] Machine {self.target_machine} in unexpected state: {current_state} (expected: {self.expected_states})")
|
|
60
|
+
# Store unexpected state in context for debugging
|
|
61
|
+
context['unexpected_machine_state'] = current_state
|
|
62
|
+
return 'unexpected_state'
|
|
63
|
+
|
|
64
|
+
except Exception as e:
|
|
65
|
+
machine_name = self.get_machine_name(context)
|
|
66
|
+
logger.error(f"[{machine_name}] Error checking machine state: {e}")
|
|
67
|
+
return 'error'
|
|
68
|
+
|
|
69
|
+
async def _is_process_running(self, machine_name: str) -> bool:
|
|
70
|
+
"""Check if target machine process is running"""
|
|
71
|
+
try:
|
|
72
|
+
# Run ps command asynchronously
|
|
73
|
+
process = await asyncio.create_subprocess_exec(
|
|
74
|
+
'ps', 'aux',
|
|
75
|
+
stdout=asyncio.subprocess.PIPE,
|
|
76
|
+
stderr=asyncio.subprocess.PIPE
|
|
77
|
+
)
|
|
78
|
+
|
|
79
|
+
stdout, stderr = await asyncio.wait_for(
|
|
80
|
+
process.communicate(),
|
|
81
|
+
timeout=5
|
|
82
|
+
)
|
|
83
|
+
|
|
84
|
+
output = stdout.decode('utf-8')
|
|
85
|
+
|
|
86
|
+
# Look for state_machine/cli.py with machine name
|
|
87
|
+
is_running = ('state_machine/cli.py' in output and
|
|
88
|
+
machine_name in output)
|
|
89
|
+
|
|
90
|
+
logger.debug(f"Process check for {machine_name}: {'running' if is_running else 'not found'}")
|
|
91
|
+
return is_running
|
|
92
|
+
|
|
93
|
+
except asyncio.TimeoutError:
|
|
94
|
+
logger.error("Process check timed out") # No context available in helper method
|
|
95
|
+
return False
|
|
96
|
+
except Exception as e:
|
|
97
|
+
logger.error(f"Error checking process: {e}") # No context available in helper method
|
|
98
|
+
return False
|
|
99
|
+
|
|
100
|
+
def _get_current_state(self, machine_name: str) -> Optional[str]:
|
|
101
|
+
"""Get current state from pipeline_results table"""
|
|
102
|
+
try:
|
|
103
|
+
with self.job_model.db._get_connection() as conn:
|
|
104
|
+
row = conn.execute("""
|
|
105
|
+
SELECT
|
|
106
|
+
json_extract(metadata, '$.state') as current_state,
|
|
107
|
+
completed_at
|
|
108
|
+
FROM pipeline_results
|
|
109
|
+
WHERE step_name = 'state_change'
|
|
110
|
+
AND json_extract(metadata, '$.machine') = ?
|
|
111
|
+
ORDER BY completed_at DESC
|
|
112
|
+
LIMIT 1
|
|
113
|
+
""", (machine_name,)).fetchone()
|
|
114
|
+
|
|
115
|
+
if not row:
|
|
116
|
+
logger.debug(f"No state data found for {machine_name}") # Keep without prefix - debug level
|
|
117
|
+
return None
|
|
118
|
+
|
|
119
|
+
# Check if state data is fresh
|
|
120
|
+
completed_at_str = row['completed_at']
|
|
121
|
+
state_time = datetime.fromisoformat(completed_at_str)
|
|
122
|
+
# Database stores UTC timestamps, use utcnow() for comparison
|
|
123
|
+
now = datetime.utcnow()
|
|
124
|
+
age = (now - state_time).total_seconds()
|
|
125
|
+
|
|
126
|
+
logger.debug(f"State timestamp for {machine_name}: completed_at={completed_at_str}, parsed={state_time}, now={now}, age={age:.1f}s") # Keep without prefix - debug level
|
|
127
|
+
|
|
128
|
+
if age > self.timeout_seconds:
|
|
129
|
+
logger.warning(f"State data for {machine_name} is stale ({age:.0f}s old, limit {self.timeout_seconds}s)") # Keep without prefix - internal helper
|
|
130
|
+
return None
|
|
131
|
+
|
|
132
|
+
state = row['current_state']
|
|
133
|
+
logger.debug(f"Current state for {machine_name}: {state} (age: {age:.1f}s)") # Keep without prefix - debug level
|
|
134
|
+
return state
|
|
135
|
+
|
|
136
|
+
except Exception as e:
|
|
137
|
+
logger.error(f"Error querying state for {machine_name}: {e}") # Keep without prefix - internal helper
|
|
138
|
+
return None
|