@creatoria/miniapp-mcp 0.1.3 → 0.2.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +131 -66
- package/dist/app/cli/index.d.ts +6 -0
- package/dist/app/cli/index.d.ts.map +1 -0
- package/dist/app/cli/index.js +6 -0
- package/dist/app/cli/index.js.map +1 -0
- package/dist/app/index.d.ts +6 -0
- package/dist/app/index.d.ts.map +1 -0
- package/dist/app/index.js +6 -0
- package/dist/app/index.js.map +1 -0
- package/dist/app/server/index.d.ts +7 -0
- package/dist/app/server/index.d.ts.map +1 -0
- package/dist/app/server/index.js +6 -0
- package/dist/app/server/index.js.map +1 -0
- package/dist/capabilities/assert/handlers/assert-handlers.d.ts +98 -0
- package/dist/capabilities/assert/handlers/assert-handlers.d.ts.map +1 -0
- package/dist/capabilities/assert/handlers/assert-handlers.js +179 -0
- package/dist/capabilities/assert/handlers/assert-handlers.js.map +1 -0
- package/dist/capabilities/assert/handlers/index.d.ts +7 -0
- package/dist/capabilities/assert/handlers/index.d.ts.map +1 -0
- package/dist/capabilities/assert/handlers/index.js +7 -0
- package/dist/capabilities/assert/handlers/index.js.map +1 -0
- package/dist/capabilities/assert/index.d.ts +15 -0
- package/dist/capabilities/assert/index.d.ts.map +1 -0
- package/dist/capabilities/assert/index.js +90 -0
- package/dist/capabilities/assert/index.js.map +1 -0
- package/dist/capabilities/assert/schemas/index.d.ts +101 -0
- package/dist/capabilities/assert/schemas/index.d.ts.map +1 -0
- package/dist/capabilities/assert/schemas/index.js +62 -0
- package/dist/capabilities/assert/schemas/index.js.map +1 -0
- package/dist/capabilities/automator/handlers/close.d.ts +18 -0
- package/dist/capabilities/automator/handlers/close.d.ts.map +1 -0
- package/dist/capabilities/automator/handlers/close.js +45 -0
- package/dist/capabilities/automator/handlers/close.js.map +1 -0
- package/dist/capabilities/automator/handlers/connect.d.ts +24 -0
- package/dist/capabilities/automator/handlers/connect.d.ts.map +1 -0
- package/dist/capabilities/automator/handlers/connect.js +51 -0
- package/dist/capabilities/automator/handlers/connect.js.map +1 -0
- package/dist/capabilities/automator/handlers/disconnect.d.ts +16 -0
- package/dist/capabilities/automator/handlers/disconnect.d.ts.map +1 -0
- package/dist/capabilities/automator/handlers/disconnect.js +44 -0
- package/dist/capabilities/automator/handlers/disconnect.js.map +1 -0
- package/dist/capabilities/automator/handlers/index.d.ts +8 -0
- package/dist/capabilities/automator/handlers/index.d.ts.map +1 -0
- package/dist/capabilities/automator/handlers/index.js +8 -0
- package/dist/capabilities/automator/handlers/index.js.map +1 -0
- package/dist/capabilities/automator/handlers/launch.d.ts +25 -0
- package/dist/capabilities/automator/handlers/launch.d.ts.map +1 -0
- package/dist/capabilities/automator/handlers/launch.js +61 -0
- package/dist/capabilities/automator/handlers/launch.js.map +1 -0
- package/dist/capabilities/automator/index.d.ts +15 -0
- package/dist/capabilities/automator/index.d.ts.map +1 -0
- package/dist/capabilities/automator/index.js +55 -0
- package/dist/capabilities/automator/index.js.map +1 -0
- package/dist/capabilities/automator/schemas/close.d.ts +5 -0
- package/dist/capabilities/automator/schemas/close.d.ts.map +1 -0
- package/dist/capabilities/automator/schemas/close.js +11 -0
- package/dist/capabilities/automator/schemas/close.js.map +1 -0
- package/dist/capabilities/automator/schemas/connect.d.ts +11 -0
- package/dist/capabilities/automator/schemas/connect.d.ts.map +1 -0
- package/dist/capabilities/automator/schemas/connect.js +19 -0
- package/dist/capabilities/automator/schemas/connect.js.map +1 -0
- package/dist/capabilities/automator/schemas/disconnect.d.ts +5 -0
- package/dist/capabilities/automator/schemas/disconnect.d.ts.map +1 -0
- package/dist/capabilities/automator/schemas/disconnect.js +11 -0
- package/dist/capabilities/automator/schemas/disconnect.js.map +1 -0
- package/dist/capabilities/automator/schemas/index.d.ts +9 -0
- package/dist/capabilities/automator/schemas/index.d.ts.map +1 -0
- package/dist/capabilities/automator/schemas/index.js +14 -0
- package/dist/capabilities/automator/schemas/index.js.map +1 -0
- package/dist/capabilities/automator/schemas/launch.d.ts +17 -0
- package/dist/capabilities/automator/schemas/launch.d.ts.map +1 -0
- package/dist/capabilities/automator/schemas/launch.js +26 -0
- package/dist/capabilities/automator/schemas/launch.js.map +1 -0
- package/dist/capabilities/element/handlers/element-handlers.d.ts +212 -0
- package/dist/capabilities/element/handlers/element-handlers.d.ts.map +1 -0
- package/dist/capabilities/element/handlers/element-handlers.js +383 -0
- package/dist/capabilities/element/handlers/element-handlers.js.map +1 -0
- package/dist/capabilities/element/handlers/index.d.ts +7 -0
- package/dist/capabilities/element/handlers/index.d.ts.map +1 -0
- package/dist/capabilities/element/handlers/index.js +27 -0
- package/dist/capabilities/element/handlers/index.js.map +1 -0
- package/dist/capabilities/element/index.d.ts +20 -0
- package/dist/capabilities/element/index.d.ts.map +1 -0
- package/dist/capabilities/element/index.js +199 -0
- package/dist/capabilities/element/index.js.map +1 -0
- package/dist/capabilities/element/schemas/index.d.ts +325 -0
- package/dist/capabilities/element/schemas/index.d.ts.map +1 -0
- package/dist/capabilities/element/schemas/index.js +168 -0
- package/dist/capabilities/element/schemas/index.js.map +1 -0
- package/dist/capabilities/index.d.ts +34 -0
- package/dist/capabilities/index.d.ts.map +1 -0
- package/dist/capabilities/index.js +40 -0
- package/dist/capabilities/index.js.map +1 -0
- package/dist/capabilities/loader.d.ts +61 -0
- package/dist/capabilities/loader.d.ts.map +1 -0
- package/dist/capabilities/loader.js +164 -0
- package/dist/capabilities/loader.js.map +1 -0
- package/dist/capabilities/miniprogram/handlers/call-wx.d.ts +24 -0
- package/dist/capabilities/miniprogram/handlers/call-wx.d.ts.map +1 -0
- package/dist/capabilities/miniprogram/handlers/call-wx.js +37 -0
- package/dist/capabilities/miniprogram/handlers/call-wx.js.map +1 -0
- package/dist/capabilities/miniprogram/handlers/evaluate.d.ts +32 -0
- package/dist/capabilities/miniprogram/handlers/evaluate.d.ts.map +1 -0
- package/dist/capabilities/miniprogram/handlers/evaluate.js +51 -0
- package/dist/capabilities/miniprogram/handlers/evaluate.js.map +1 -0
- package/dist/capabilities/miniprogram/handlers/index.d.ts +12 -0
- package/dist/capabilities/miniprogram/handlers/index.d.ts.map +1 -0
- package/dist/capabilities/miniprogram/handlers/index.js +12 -0
- package/dist/capabilities/miniprogram/handlers/index.js.map +1 -0
- package/dist/capabilities/miniprogram/handlers/navigate.d.ts +26 -0
- package/dist/capabilities/miniprogram/handlers/navigate.d.ts.map +1 -0
- package/dist/capabilities/miniprogram/handlers/navigate.js +56 -0
- package/dist/capabilities/miniprogram/handlers/navigate.js.map +1 -0
- package/dist/capabilities/miniprogram/handlers/page-stack.d.ts +20 -0
- package/dist/capabilities/miniprogram/handlers/page-stack.d.ts.map +1 -0
- package/dist/capabilities/miniprogram/handlers/page-stack.js +37 -0
- package/dist/capabilities/miniprogram/handlers/page-stack.js.map +1 -0
- package/dist/capabilities/miniprogram/handlers/screenshot.d.ts +33 -0
- package/dist/capabilities/miniprogram/handlers/screenshot.d.ts.map +1 -0
- package/dist/capabilities/miniprogram/handlers/screenshot.js +132 -0
- package/dist/capabilities/miniprogram/handlers/screenshot.js.map +1 -0
- package/dist/capabilities/miniprogram/handlers/system-info.d.ts +17 -0
- package/dist/capabilities/miniprogram/handlers/system-info.d.ts.map +1 -0
- package/dist/capabilities/miniprogram/handlers/system-info.js +31 -0
- package/dist/capabilities/miniprogram/handlers/system-info.js.map +1 -0
- package/dist/capabilities/miniprogram/index.d.ts +15 -0
- package/dist/capabilities/miniprogram/index.d.ts.map +1 -0
- package/dist/capabilities/miniprogram/index.js +69 -0
- package/dist/capabilities/miniprogram/index.js.map +1 -0
- package/dist/capabilities/miniprogram/schemas/call-wx.d.ts +15 -0
- package/dist/capabilities/miniprogram/schemas/call-wx.d.ts.map +1 -0
- package/dist/capabilities/miniprogram/schemas/call-wx.js +11 -0
- package/dist/capabilities/miniprogram/schemas/call-wx.js.map +1 -0
- package/dist/capabilities/miniprogram/schemas/evaluate.d.ts +15 -0
- package/dist/capabilities/miniprogram/schemas/evaluate.d.ts.map +1 -0
- package/dist/capabilities/miniprogram/schemas/evaluate.js +11 -0
- package/dist/capabilities/miniprogram/schemas/evaluate.js.map +1 -0
- package/dist/capabilities/miniprogram/schemas/index.d.ts +10 -0
- package/dist/capabilities/miniprogram/schemas/index.d.ts.map +1 -0
- package/dist/capabilities/miniprogram/schemas/index.js +10 -0
- package/dist/capabilities/miniprogram/schemas/index.js.map +1 -0
- package/dist/capabilities/miniprogram/schemas/navigate.d.ts +18 -0
- package/dist/capabilities/miniprogram/schemas/navigate.d.ts.map +1 -0
- package/dist/capabilities/miniprogram/schemas/navigate.js +22 -0
- package/dist/capabilities/miniprogram/schemas/navigate.js.map +1 -0
- package/dist/capabilities/miniprogram/schemas/page-stack.d.ts +6 -0
- package/dist/capabilities/miniprogram/schemas/page-stack.d.ts.map +1 -0
- package/dist/capabilities/miniprogram/schemas/page-stack.js +6 -0
- package/dist/capabilities/miniprogram/schemas/page-stack.js.map +1 -0
- package/dist/capabilities/miniprogram/schemas/screenshot.d.ts +18 -0
- package/dist/capabilities/miniprogram/schemas/screenshot.d.ts.map +1 -0
- package/dist/capabilities/miniprogram/schemas/screenshot.js +21 -0
- package/dist/capabilities/miniprogram/schemas/screenshot.js.map +1 -0
- package/dist/capabilities/miniprogram/schemas/system-info.d.ts +6 -0
- package/dist/capabilities/miniprogram/schemas/system-info.d.ts.map +1 -0
- package/dist/capabilities/miniprogram/schemas/system-info.js +6 -0
- package/dist/capabilities/miniprogram/schemas/system-info.js.map +1 -0
- package/dist/capabilities/network/handlers/index.d.ts +7 -0
- package/dist/capabilities/network/handlers/index.d.ts.map +1 -0
- package/dist/capabilities/network/handlers/index.js +7 -0
- package/dist/capabilities/network/handlers/index.js.map +1 -0
- package/dist/capabilities/network/handlers/network-handlers.d.ts +53 -0
- package/dist/capabilities/network/handlers/network-handlers.d.ts.map +1 -0
- package/dist/capabilities/network/handlers/network-handlers.js +127 -0
- package/dist/capabilities/network/handlers/network-handlers.js.map +1 -0
- package/dist/capabilities/network/index.d.ts +15 -0
- package/dist/capabilities/network/index.d.ts.map +1 -0
- package/dist/capabilities/network/index.js +69 -0
- package/dist/capabilities/network/index.js.map +1 -0
- package/dist/capabilities/network/schemas/index.d.ts +53 -0
- package/dist/capabilities/network/schemas/index.d.ts.map +1 -0
- package/dist/capabilities/network/schemas/index.js +33 -0
- package/dist/capabilities/network/schemas/index.js.map +1 -0
- package/dist/capabilities/page/handlers/index.d.ts +7 -0
- package/dist/capabilities/page/handlers/index.d.ts.map +1 -0
- package/dist/capabilities/page/handlers/index.js +7 -0
- package/dist/capabilities/page/handlers/index.js.map +1 -0
- package/dist/capabilities/page/handlers/page-handlers.d.ts +165 -0
- package/dist/capabilities/page/handlers/page-handlers.d.ts.map +1 -0
- package/dist/capabilities/page/handlers/page-handlers.js +258 -0
- package/dist/capabilities/page/handlers/page-handlers.js.map +1 -0
- package/dist/capabilities/page/index.d.ts +15 -0
- package/dist/capabilities/page/index.d.ts.map +1 -0
- package/dist/capabilities/page/index.js +83 -0
- package/dist/capabilities/page/index.js.map +1 -0
- package/dist/capabilities/page/schemas/index.d.ts +91 -0
- package/dist/capabilities/page/schemas/index.d.ts.map +1 -0
- package/dist/capabilities/page/schemas/index.js +55 -0
- package/dist/capabilities/page/schemas/index.js.map +1 -0
- package/dist/capabilities/record/handlers/index.d.ts +7 -0
- package/dist/capabilities/record/handlers/index.d.ts.map +1 -0
- package/dist/capabilities/record/handlers/index.js +7 -0
- package/dist/capabilities/record/handlers/index.js.map +1 -0
- package/dist/capabilities/record/handlers/record-handlers.d.ts +76 -0
- package/dist/capabilities/record/handlers/record-handlers.d.ts.map +1 -0
- package/dist/capabilities/record/handlers/record-handlers.js +255 -0
- package/dist/capabilities/record/handlers/record-handlers.js.map +1 -0
- package/dist/capabilities/record/index.d.ts +15 -0
- package/dist/capabilities/record/index.d.ts.map +1 -0
- package/dist/capabilities/record/index.js +69 -0
- package/dist/capabilities/record/index.js.map +1 -0
- package/dist/capabilities/record/schemas/index.d.ts +47 -0
- package/dist/capabilities/record/schemas/index.d.ts.map +1 -0
- package/dist/capabilities/record/schemas/index.js +33 -0
- package/dist/capabilities/record/schemas/index.js.map +1 -0
- package/dist/capabilities/registry.d.ts +138 -0
- package/dist/capabilities/registry.d.ts.map +1 -0
- package/dist/capabilities/registry.js +261 -0
- package/dist/capabilities/registry.js.map +1 -0
- package/dist/capabilities/schema-registry.d.ts +4 -0
- package/dist/capabilities/schema-registry.d.ts.map +1 -0
- package/dist/capabilities/schema-registry.js +18 -0
- package/dist/capabilities/schema-registry.js.map +1 -0
- package/dist/capabilities/schema-types.d.ts +22 -0
- package/dist/capabilities/schema-types.d.ts.map +1 -0
- package/dist/capabilities/schema-types.js +2 -0
- package/dist/capabilities/schema-types.js.map +1 -0
- package/dist/capabilities/snapshot/handlers/index.d.ts +7 -0
- package/dist/capabilities/snapshot/handlers/index.d.ts.map +1 -0
- package/dist/capabilities/snapshot/handlers/index.js +7 -0
- package/dist/capabilities/snapshot/handlers/index.js.map +1 -0
- package/dist/capabilities/snapshot/handlers/snapshot-handlers.d.ts +75 -0
- package/dist/capabilities/snapshot/handlers/snapshot-handlers.d.ts.map +1 -0
- package/dist/capabilities/snapshot/handlers/snapshot-handlers.js +201 -0
- package/dist/capabilities/snapshot/handlers/snapshot-handlers.js.map +1 -0
- package/dist/capabilities/snapshot/index.d.ts +15 -0
- package/dist/capabilities/snapshot/index.d.ts.map +1 -0
- package/dist/capabilities/snapshot/index.js +48 -0
- package/dist/capabilities/snapshot/index.js.map +1 -0
- package/dist/capabilities/snapshot/schemas/index.d.ts +47 -0
- package/dist/capabilities/snapshot/schemas/index.d.ts.map +1 -0
- package/dist/capabilities/snapshot/schemas/index.js +28 -0
- package/dist/capabilities/snapshot/schemas/index.js.map +1 -0
- package/dist/config/loader.js +1 -1
- package/dist/config/loader.js.map +1 -1
- package/dist/core/element-ref.d.ts +1 -43
- package/dist/core/element-ref.d.ts.map +1 -1
- package/dist/core/element-ref.js +1 -212
- package/dist/core/element-ref.js.map +1 -1
- package/dist/core/logger.d.ts +1 -54
- package/dist/core/logger.d.ts.map +1 -1
- package/dist/core/logger.js +1 -377
- package/dist/core/logger.js.map +1 -1
- package/dist/core/output.d.ts +1 -20
- package/dist/core/output.d.ts.map +1 -1
- package/dist/core/output.js +1 -55
- package/dist/core/output.js.map +1 -1
- package/dist/core/report-generator.d.ts +1 -23
- package/dist/core/report-generator.d.ts.map +1 -1
- package/dist/core/report-generator.js +1 -211
- package/dist/core/report-generator.js.map +1 -1
- package/dist/core/session.d.ts +2 -82
- package/dist/core/session.d.ts.map +1 -1
- package/dist/core/session.js +2 -305
- package/dist/core/session.js.map +1 -1
- package/dist/core/timeout.d.ts +1 -48
- package/dist/core/timeout.d.ts.map +1 -1
- package/dist/core/timeout.js +1 -66
- package/dist/core/timeout.js.map +1 -1
- package/dist/core/tool-logger.d.ts +1 -82
- package/dist/core/tool-logger.d.ts.map +1 -1
- package/dist/core/tool-logger.js +1 -452
- package/dist/core/tool-logger.js.map +1 -1
- package/dist/core/validation.d.ts +1 -38
- package/dist/core/validation.d.ts.map +1 -1
- package/dist/core/validation.js +1 -92
- package/dist/core/validation.js.map +1 -1
- package/dist/runtime/element/element-ref.d.ts +44 -0
- package/dist/runtime/element/element-ref.d.ts.map +1 -0
- package/dist/runtime/element/element-ref.js +214 -0
- package/dist/runtime/element/element-ref.js.map +1 -0
- package/dist/runtime/element/index.d.ts +2 -0
- package/dist/runtime/element/index.d.ts.map +1 -0
- package/dist/runtime/element/index.js +2 -0
- package/dist/runtime/element/index.js.map +1 -0
- package/dist/runtime/index.d.ts +11 -0
- package/dist/runtime/index.d.ts.map +1 -0
- package/dist/runtime/index.js +11 -0
- package/dist/runtime/index.js.map +1 -0
- package/dist/runtime/logging/index.d.ts +3 -0
- package/dist/runtime/logging/index.d.ts.map +1 -0
- package/dist/runtime/logging/index.js +3 -0
- package/dist/runtime/logging/index.js.map +1 -0
- package/dist/runtime/logging/logger.d.ts +55 -0
- package/dist/runtime/logging/logger.d.ts.map +1 -0
- package/dist/runtime/logging/logger.js +379 -0
- package/dist/runtime/logging/logger.js.map +1 -0
- package/dist/runtime/logging/tool-logger.d.ts +83 -0
- package/dist/runtime/logging/tool-logger.d.ts.map +1 -0
- package/dist/runtime/logging/tool-logger.js +454 -0
- package/dist/runtime/logging/tool-logger.js.map +1 -0
- package/dist/runtime/outputs/index.d.ts +3 -0
- package/dist/runtime/outputs/index.d.ts.map +1 -0
- package/dist/runtime/outputs/index.js +3 -0
- package/dist/runtime/outputs/index.js.map +1 -0
- package/dist/runtime/outputs/output-manager.d.ts +12 -0
- package/dist/runtime/outputs/output-manager.d.ts.map +1 -0
- package/dist/runtime/outputs/output-manager.js +39 -0
- package/dist/runtime/outputs/output-manager.js.map +1 -0
- package/dist/runtime/outputs/report-generator.d.ts +5 -0
- package/dist/runtime/outputs/report-generator.d.ts.map +1 -0
- package/dist/runtime/outputs/report-generator.js +175 -0
- package/dist/runtime/outputs/report-generator.js.map +1 -0
- package/dist/runtime/retry/index.d.ts +5 -0
- package/dist/runtime/retry/index.d.ts.map +1 -0
- package/dist/runtime/retry/index.js +5 -0
- package/dist/runtime/retry/index.js.map +1 -0
- package/dist/runtime/retry/retry.d.ts +61 -0
- package/dist/runtime/retry/retry.d.ts.map +1 -0
- package/dist/runtime/retry/retry.js +90 -0
- package/dist/runtime/retry/retry.js.map +1 -0
- package/dist/runtime/session/index.d.ts +3 -0
- package/dist/runtime/session/index.d.ts.map +1 -0
- package/dist/runtime/session/index.js +3 -0
- package/dist/runtime/session/index.js.map +1 -0
- package/dist/runtime/session/store.d.ts +28 -0
- package/dist/runtime/session/store.d.ts.map +1 -0
- package/dist/runtime/session/store.js +154 -0
- package/dist/runtime/session/store.js.map +1 -0
- package/dist/runtime/session/utils/cleanup.d.ts +3 -0
- package/dist/runtime/session/utils/cleanup.d.ts.map +1 -0
- package/dist/runtime/session/utils/cleanup.js +78 -0
- package/dist/runtime/session/utils/cleanup.js.map +1 -0
- package/dist/runtime/timeout/index.d.ts +2 -0
- package/dist/runtime/timeout/index.d.ts.map +1 -0
- package/dist/runtime/timeout/index.js +2 -0
- package/dist/runtime/timeout/index.js.map +1 -0
- package/dist/runtime/timeout/timeout.d.ts +59 -0
- package/dist/runtime/timeout/timeout.d.ts.map +1 -0
- package/dist/runtime/timeout/timeout.js +77 -0
- package/dist/runtime/timeout/timeout.js.map +1 -0
- package/dist/runtime/validation/index.d.ts +2 -0
- package/dist/runtime/validation/index.d.ts.map +1 -0
- package/dist/runtime/validation/index.js +2 -0
- package/dist/runtime/validation/index.js.map +1 -0
- package/dist/runtime/validation/validation.d.ts +39 -0
- package/dist/runtime/validation/validation.d.ts.map +1 -0
- package/dist/runtime/validation/validation.js +93 -0
- package/dist/runtime/validation/validation.js.map +1 -0
- package/dist/schemas/automator/miniprogram_close.json +12 -0
- package/dist/schemas/automator/miniprogram_connect.json +19 -0
- package/dist/schemas/automator/miniprogram_disconnect.json +12 -0
- package/dist/schemas/automator/miniprogram_launch.json +30 -0
- package/dist/server.js +5 -5
- package/dist/server.js.map +1 -1
- package/dist/tools/index.d.ts.map +1 -1
- package/dist/tools/index.js +8 -4
- package/dist/tools/index.js.map +1 -1
- package/dist/tools/miniprogram.d.ts +11 -2
- package/dist/tools/miniprogram.d.ts.map +1 -1
- package/dist/tools/miniprogram.js +111 -41
- package/dist/tools/miniprogram.js.map +1 -1
- package/dist/tools/page.js +2 -2
- package/dist/tools/page.js.map +1 -1
- package/docs/current/01-architecture-migration.md +337 -0
- package/docs/current/02-screenshot-timeout-fix.md +589 -0
- package/docs/current/README.md +226 -0
- package/docs/directory-structure-and-code-style-best-practices.md +91 -0
- package/docs/migration/README.md +34 -0
- package/docs/migration/TC-ALIGN-01-notes.md +35 -0
- package/docs/migration/runtime-skeleton.md +50 -0
- package/docs/migration/tool-schema-strategy.md +75 -0
- package/docs//345/256/214/346/225/264/345/256/236/347/216/260/346/226/271/346/241/210.md +14 -14
- package/docs//347/254/254/344/270/200/347/211/210/346/234/254/346/226/271/346/241/210.md +7 -7
- package/package.json +4 -2
- package/docs/SIMPLE_USAGE.md +0 -210
- package/docs/architecture.E-Docs.md +0 -1359
- package/docs/architecture.F1.md +0 -720
- package/docs/architecture.F2.md +0 -871
- package/docs/architecture.F3.md +0 -905
- package/docs/architecture.md +0 -90
- package/docs/charter.A1.align.yaml +0 -170
- package/docs/charter.A2.align.yaml +0 -199
- package/docs/charter.A3.align.yaml +0 -242
- package/docs/charter.A4.align.yaml +0 -227
- package/docs/charter.B1.align.yaml +0 -179
- package/docs/charter.B2.align.yaml +0 -200
- package/docs/charter.B3.align.yaml +0 -200
- package/docs/charter.B4.align.yaml +0 -188
- package/docs/charter.C1.align.yaml +0 -190
- package/docs/charter.C2.align.yaml +0 -202
- package/docs/charter.C3.align.yaml +0 -211
- package/docs/charter.C4.align.yaml +0 -263
- package/docs/charter.C5.align.yaml +0 -220
- package/docs/charter.D1.align.yaml +0 -190
- package/docs/charter.D2.align.yaml +0 -234
- package/docs/charter.D3.align.yaml +0 -206
- package/docs/charter.E-Docs.align.yaml +0 -294
- package/docs/charter.F1.align.yaml +0 -193
- package/docs/charter.F2.align.yaml +0 -248
- package/docs/charter.F3.align.yaml +0 -287
- package/docs/charter.G.align.yaml +0 -174
- package/docs/charter.align.yaml +0 -111
- package/docs/maintenance.md +0 -682
- package/docs/playwright-mcp/350/260/203/347/240/224.md +0 -53
- package/docs/setup-guide.md +0 -775
- package/docs/tasks.A1.atomize.md +0 -296
- package/docs/tasks.A2.atomize.md +0 -408
- package/docs/tasks.A3.atomize.md +0 -564
- package/docs/tasks.A4.atomize.md +0 -496
- package/docs/tasks.B1.atomize.md +0 -352
- package/docs/tasks.B2.atomize.md +0 -561
- package/docs/tasks.B3.atomize.md +0 -508
- package/docs/tasks.B4.atomize.md +0 -504
- package/docs/tasks.C1.atomize.md +0 -540
- package/docs/tasks.C2.atomize.md +0 -665
- package/docs/tasks.C3.atomize.md +0 -745
- package/docs/tasks.C4.atomize.md +0 -908
- package/docs/tasks.C5.atomize.md +0 -755
- package/docs/tasks.D1.atomize.md +0 -547
- package/docs/tasks.D2.atomize.md +0 -619
- package/docs/tasks.D3.atomize.md +0 -790
- package/docs/tasks.E-Docs.atomize.md +0 -1204
- package/docs/tasks.atomize.md +0 -189
|
@@ -0,0 +1,261 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Centralized Tool Registry for MCP Server
|
|
3
|
+
*
|
|
4
|
+
* Provides unified tool registration, lookup, and validation.
|
|
5
|
+
* All capabilities register their tools through this registry.
|
|
6
|
+
*/
|
|
7
|
+
/**
|
|
8
|
+
* Centralized Tool Registry
|
|
9
|
+
*
|
|
10
|
+
* Features:
|
|
11
|
+
* - Unique tool name enforcement
|
|
12
|
+
* - Capability-based organization
|
|
13
|
+
* - Schema and handler management
|
|
14
|
+
* - MCP Tool type conversion
|
|
15
|
+
*/
|
|
16
|
+
export class ToolRegistry {
|
|
17
|
+
tools = new Map();
|
|
18
|
+
capabilities = new Map();
|
|
19
|
+
/**
|
|
20
|
+
* Register a single tool definition
|
|
21
|
+
*/
|
|
22
|
+
register(definition) {
|
|
23
|
+
if (this.tools.has(definition.name)) {
|
|
24
|
+
throw new Error(`Duplicate tool registration: ${definition.name}`);
|
|
25
|
+
}
|
|
26
|
+
this.tools.set(definition.name, definition);
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Register a complete capability module
|
|
30
|
+
*/
|
|
31
|
+
registerCapability(module) {
|
|
32
|
+
if (this.capabilities.has(module.name)) {
|
|
33
|
+
throw new Error(`Duplicate capability registration: ${module.name}`);
|
|
34
|
+
}
|
|
35
|
+
this.capabilities.set(module.name, module);
|
|
36
|
+
// Register all tools from this capability
|
|
37
|
+
for (const tool of module.tools) {
|
|
38
|
+
this.register({ ...tool, capability: module.name });
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* Get a tool definition by name
|
|
43
|
+
*/
|
|
44
|
+
get(name) {
|
|
45
|
+
return this.tools.get(name);
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* Get handler for a tool
|
|
49
|
+
*/
|
|
50
|
+
getHandler(name) {
|
|
51
|
+
return this.tools.get(name)?.handler;
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* Get all registered tool definitions
|
|
55
|
+
*/
|
|
56
|
+
getAll() {
|
|
57
|
+
return Array.from(this.tools.values());
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* Get tools by capability name
|
|
61
|
+
*/
|
|
62
|
+
getByCapability(capabilityName) {
|
|
63
|
+
return Array.from(this.tools.values()).filter((t) => t.capability === capabilityName);
|
|
64
|
+
}
|
|
65
|
+
/**
|
|
66
|
+
* Get all registered capabilities
|
|
67
|
+
*/
|
|
68
|
+
getCapabilities() {
|
|
69
|
+
return Array.from(this.capabilities.values());
|
|
70
|
+
}
|
|
71
|
+
/**
|
|
72
|
+
* Check if a tool exists
|
|
73
|
+
*/
|
|
74
|
+
has(name) {
|
|
75
|
+
return this.tools.has(name);
|
|
76
|
+
}
|
|
77
|
+
/**
|
|
78
|
+
* Get total number of registered tools
|
|
79
|
+
*/
|
|
80
|
+
get size() {
|
|
81
|
+
return this.tools.size;
|
|
82
|
+
}
|
|
83
|
+
/**
|
|
84
|
+
* JSON Schema type for MCP Tool inputSchema
|
|
85
|
+
*/
|
|
86
|
+
createJsonSchema(properties = {}, required) {
|
|
87
|
+
return {
|
|
88
|
+
type: 'object',
|
|
89
|
+
properties,
|
|
90
|
+
...(required && required.length > 0 ? { required } : {}),
|
|
91
|
+
};
|
|
92
|
+
}
|
|
93
|
+
/**
|
|
94
|
+
* Convert Zod schema to JSON Schema for MCP Tool format
|
|
95
|
+
*/
|
|
96
|
+
zodToJsonSchema(schema) {
|
|
97
|
+
// Use zod-to-json-schema or manual conversion
|
|
98
|
+
// For now, use the shape if available
|
|
99
|
+
const zodSchema = schema;
|
|
100
|
+
if (zodSchema._def?.typeName === 'ZodObject') {
|
|
101
|
+
const shape = zodSchema._def.shape?.();
|
|
102
|
+
if (shape) {
|
|
103
|
+
const properties = {};
|
|
104
|
+
const required = [];
|
|
105
|
+
for (const [key, value] of Object.entries(shape)) {
|
|
106
|
+
const fieldSchema = value;
|
|
107
|
+
properties[key] = this.zodFieldToJsonSchema(fieldSchema);
|
|
108
|
+
// Check if field is required (not optional)
|
|
109
|
+
if (!fieldSchema.isOptional?.()) {
|
|
110
|
+
required.push(key);
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
return this.createJsonSchema(properties, required);
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
// Fallback for non-object schemas
|
|
117
|
+
return this.createJsonSchema({});
|
|
118
|
+
}
|
|
119
|
+
/**
|
|
120
|
+
* Convert a single Zod field to JSON Schema
|
|
121
|
+
*/
|
|
122
|
+
zodFieldToJsonSchema(field) {
|
|
123
|
+
const typeName = field._def?.typeName;
|
|
124
|
+
// Handle optional wrapper
|
|
125
|
+
if (typeName === 'ZodOptional') {
|
|
126
|
+
return this.zodFieldToJsonSchema(field._def.innerType);
|
|
127
|
+
}
|
|
128
|
+
// Handle basic types
|
|
129
|
+
switch (typeName) {
|
|
130
|
+
case 'ZodString':
|
|
131
|
+
return {
|
|
132
|
+
type: 'string',
|
|
133
|
+
...(field._def.description ? { description: field._def.description } : {}),
|
|
134
|
+
};
|
|
135
|
+
case 'ZodNumber':
|
|
136
|
+
return {
|
|
137
|
+
type: 'number',
|
|
138
|
+
...(field._def.description ? { description: field._def.description } : {}),
|
|
139
|
+
};
|
|
140
|
+
case 'ZodBoolean':
|
|
141
|
+
return {
|
|
142
|
+
type: 'boolean',
|
|
143
|
+
...(field._def.description ? { description: field._def.description } : {}),
|
|
144
|
+
};
|
|
145
|
+
case 'ZodArray':
|
|
146
|
+
return {
|
|
147
|
+
type: 'array',
|
|
148
|
+
items: this.zodFieldToJsonSchema(field._def.type),
|
|
149
|
+
...(field._def.description ? { description: field._def.description } : {}),
|
|
150
|
+
};
|
|
151
|
+
case 'ZodEnum':
|
|
152
|
+
return {
|
|
153
|
+
type: 'string',
|
|
154
|
+
enum: field._def.values,
|
|
155
|
+
...(field._def.description ? { description: field._def.description } : {}),
|
|
156
|
+
};
|
|
157
|
+
case 'ZodObject':
|
|
158
|
+
return this.zodToJsonSchema(field);
|
|
159
|
+
default:
|
|
160
|
+
// Default to any type
|
|
161
|
+
return { description: field._def?.description };
|
|
162
|
+
}
|
|
163
|
+
}
|
|
164
|
+
/**
|
|
165
|
+
* Convert registered tools to MCP Tool format
|
|
166
|
+
*/
|
|
167
|
+
toMCPTools() {
|
|
168
|
+
return Array.from(this.tools.values()).map((def) => ({
|
|
169
|
+
name: def.name,
|
|
170
|
+
description: def.description,
|
|
171
|
+
inputSchema: this.zodToJsonSchema(def.inputSchema),
|
|
172
|
+
}));
|
|
173
|
+
}
|
|
174
|
+
/**
|
|
175
|
+
* Convert tools for specific capabilities to MCP Tool format
|
|
176
|
+
*/
|
|
177
|
+
toMCPToolsForCapabilities(capabilityNames) {
|
|
178
|
+
// If 'core' is specified, return all tools
|
|
179
|
+
if (capabilityNames.includes('core')) {
|
|
180
|
+
return this.toMCPTools();
|
|
181
|
+
}
|
|
182
|
+
// Otherwise, filter by capability names
|
|
183
|
+
return Array.from(this.tools.values())
|
|
184
|
+
.filter((def) => capabilityNames.includes(def.capability))
|
|
185
|
+
.map((def) => ({
|
|
186
|
+
name: def.name,
|
|
187
|
+
description: def.description,
|
|
188
|
+
inputSchema: this.zodToJsonSchema(def.inputSchema),
|
|
189
|
+
}));
|
|
190
|
+
}
|
|
191
|
+
/**
|
|
192
|
+
* Get handlers map for specific capabilities
|
|
193
|
+
*/
|
|
194
|
+
getHandlersForCapabilities(capabilityNames) {
|
|
195
|
+
const handlers = new Map();
|
|
196
|
+
// If 'core' is specified, return all handlers
|
|
197
|
+
if (capabilityNames.includes('core')) {
|
|
198
|
+
for (const [name, def] of this.tools) {
|
|
199
|
+
handlers.set(name, def.handler);
|
|
200
|
+
}
|
|
201
|
+
return handlers;
|
|
202
|
+
}
|
|
203
|
+
// Otherwise, filter by capability names
|
|
204
|
+
for (const [name, def] of this.tools) {
|
|
205
|
+
if (capabilityNames.includes(def.capability)) {
|
|
206
|
+
handlers.set(name, def.handler);
|
|
207
|
+
}
|
|
208
|
+
}
|
|
209
|
+
return handlers;
|
|
210
|
+
}
|
|
211
|
+
/**
|
|
212
|
+
* Get statistics about registered tools
|
|
213
|
+
*/
|
|
214
|
+
getStats() {
|
|
215
|
+
const byCapability = {};
|
|
216
|
+
for (const def of this.tools.values()) {
|
|
217
|
+
byCapability[def.capability] = (byCapability[def.capability] || 0) + 1;
|
|
218
|
+
}
|
|
219
|
+
return {
|
|
220
|
+
total: this.tools.size,
|
|
221
|
+
byCapability,
|
|
222
|
+
};
|
|
223
|
+
}
|
|
224
|
+
/**
|
|
225
|
+
* Validate all registrations
|
|
226
|
+
*/
|
|
227
|
+
validate() {
|
|
228
|
+
const errors = [];
|
|
229
|
+
for (const def of this.tools.values()) {
|
|
230
|
+
// Check required fields
|
|
231
|
+
if (!def.name) {
|
|
232
|
+
errors.push('Tool missing name');
|
|
233
|
+
}
|
|
234
|
+
if (!def.description) {
|
|
235
|
+
errors.push(`Tool ${def.name} missing description`);
|
|
236
|
+
}
|
|
237
|
+
if (!def.handler) {
|
|
238
|
+
errors.push(`Tool ${def.name} missing handler`);
|
|
239
|
+
}
|
|
240
|
+
if (!def.inputSchema) {
|
|
241
|
+
errors.push(`Tool ${def.name} missing inputSchema`);
|
|
242
|
+
}
|
|
243
|
+
}
|
|
244
|
+
return {
|
|
245
|
+
valid: errors.length === 0,
|
|
246
|
+
errors,
|
|
247
|
+
};
|
|
248
|
+
}
|
|
249
|
+
/**
|
|
250
|
+
* Clear all registrations (useful for testing)
|
|
251
|
+
*/
|
|
252
|
+
clear() {
|
|
253
|
+
this.tools.clear();
|
|
254
|
+
this.capabilities.clear();
|
|
255
|
+
}
|
|
256
|
+
}
|
|
257
|
+
/**
|
|
258
|
+
* Global tool registry instance
|
|
259
|
+
*/
|
|
260
|
+
export const globalRegistry = new ToolRegistry();
|
|
261
|
+
//# sourceMappingURL=registry.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"registry.js","sourceRoot":"","sources":["../../src/capabilities/registry.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import type { ToolSchemaLookupResult } from './schema-types.js';
|
|
2
|
+
export declare function getToolSchema(toolName: string): ToolSchemaLookupResult | undefined;
|
|
3
|
+
export declare function listToolSchemas(): ToolSchemaLookupResult[];
|
|
4
|
+
//# sourceMappingURL=schema-registry.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"schema-registry.d.ts","sourceRoot":"","sources":["../../src/capabilities/schema-registry.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,mBAAmB,CAAA;AAgB/D,wBAAgB,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG,sBAAsB,GAAG,SAAS,CAElF;AAED,wBAAgB,eAAe,IAAI,sBAAsB,EAAE,CAE1D"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { automatorSchemas } from './automator/schemas/index.js';
|
|
2
|
+
const schemaMap = new Map();
|
|
3
|
+
function registerSchemas(schemas) {
|
|
4
|
+
for (const schema of schemas) {
|
|
5
|
+
if (schemaMap.has(schema.name)) {
|
|
6
|
+
throw new Error(`Duplicate schema definition for tool: ${schema.name}`);
|
|
7
|
+
}
|
|
8
|
+
schemaMap.set(schema.name, schema);
|
|
9
|
+
}
|
|
10
|
+
}
|
|
11
|
+
registerSchemas(automatorSchemas);
|
|
12
|
+
export function getToolSchema(toolName) {
|
|
13
|
+
return schemaMap.get(toolName);
|
|
14
|
+
}
|
|
15
|
+
export function listToolSchemas() {
|
|
16
|
+
return Array.from(schemaMap.values());
|
|
17
|
+
}
|
|
18
|
+
//# sourceMappingURL=schema-registry.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"schema-registry.js","sourceRoot":"","sources":["../../src/capabilities/schema-registry.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAA;AAE/D,MAAM,SAAS,GAAG,IAAI,GAAG,EAAkC,CAAA;AAE3D,SAAS,eAAe,CAAC,OAAiC;IACxD,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;QAC7B,IAAI,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC;YAC/B,MAAM,IAAI,KAAK,CAAC,yCAAyC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAA;QACzE,CAAC;QACD,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,CAAA;IACpC,CAAC;AACH,CAAC;AAED,eAAe,CAAC,gBAAgB,CAAC,CAAA;AAEjC,MAAM,UAAU,aAAa,CAAC,QAAgB;IAC5C,OAAO,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAA;AAChC,CAAC;AAED,MAAM,UAAU,eAAe;IAC7B,OAAO,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC,CAAA;AACvC,CAAC"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import type { ZodTypeAny } from 'zod';
|
|
2
|
+
export interface ToolSchemaDefinition {
|
|
3
|
+
/** 工具名称,与 MCP 注册名一致 */
|
|
4
|
+
name: string;
|
|
5
|
+
/** 能力分组,例如 automator/miniprogram 等 */
|
|
6
|
+
capability: string;
|
|
7
|
+
/** 与工具清单描述保持一致的简介 */
|
|
8
|
+
description: string;
|
|
9
|
+
/** 输入参数 schema */
|
|
10
|
+
input: ZodTypeAny;
|
|
11
|
+
/** 可选输出 schema(后续阶段使用) */
|
|
12
|
+
output?: ZodTypeAny;
|
|
13
|
+
}
|
|
14
|
+
export type ToolSchemaRegistry = Record<string, ToolSchemaDefinition>;
|
|
15
|
+
export interface ToolSchemaLookupResult {
|
|
16
|
+
name: string;
|
|
17
|
+
capability: string;
|
|
18
|
+
description: string;
|
|
19
|
+
input: ZodTypeAny;
|
|
20
|
+
output?: ZodTypeAny;
|
|
21
|
+
}
|
|
22
|
+
//# sourceMappingURL=schema-types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"schema-types.d.ts","sourceRoot":"","sources":["../../src/capabilities/schema-types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,KAAK,CAAA;AAErC,MAAM,WAAW,oBAAoB;IACnC,uBAAuB;IACvB,IAAI,EAAE,MAAM,CAAA;IACZ,sCAAsC;IACtC,UAAU,EAAE,MAAM,CAAA;IAClB,qBAAqB;IACrB,WAAW,EAAE,MAAM,CAAA;IACnB,kBAAkB;IAClB,KAAK,EAAE,UAAU,CAAA;IACjB,0BAA0B;IAC1B,MAAM,CAAC,EAAE,UAAU,CAAA;CACpB;AAED,MAAM,MAAM,kBAAkB,GAAG,MAAM,CAAC,MAAM,EAAE,oBAAoB,CAAC,CAAA;AAErE,MAAM,WAAW,sBAAsB;IACrC,IAAI,EAAE,MAAM,CAAA;IACZ,UAAU,EAAE,MAAM,CAAA;IAClB,WAAW,EAAE,MAAM,CAAA;IACnB,KAAK,EAAE,UAAU,CAAA;IACjB,MAAM,CAAC,EAAE,UAAU,CAAA;CACpB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"schema-types.js","sourceRoot":"","sources":["../../src/capabilities/schema-types.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Snapshot handlers exports
|
|
3
|
+
*
|
|
4
|
+
* All 3 handlers are now independently implemented in this directory.
|
|
5
|
+
*/
|
|
6
|
+
export { snapshotPage, snapshotFull, snapshotElement, type SnapshotPageArgs, type SnapshotPageResult, type SnapshotFullArgs, type SnapshotFullResult, type SnapshotElementArgs, type SnapshotElementResult, } from './snapshot-handlers.js';
|
|
7
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/capabilities/snapshot/handlers/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EACL,YAAY,EACZ,YAAY,EACZ,eAAe,EACf,KAAK,gBAAgB,EACrB,KAAK,kBAAkB,EACvB,KAAK,gBAAgB,EACrB,KAAK,kBAAkB,EACvB,KAAK,mBAAmB,EACxB,KAAK,qBAAqB,GAC3B,MAAM,wBAAwB,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/capabilities/snapshot/handlers/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EACL,YAAY,EACZ,YAAY,EACZ,eAAe,GAOhB,MAAM,wBAAwB,CAAA"}
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Snapshot handlers - State capture and diagnostic utilities
|
|
3
|
+
*/
|
|
4
|
+
import type { SessionState } from '../../../types.js';
|
|
5
|
+
export interface SnapshotPageArgs {
|
|
6
|
+
pagePath?: string;
|
|
7
|
+
filename?: string;
|
|
8
|
+
includeScreenshot?: boolean;
|
|
9
|
+
fullPage?: boolean;
|
|
10
|
+
}
|
|
11
|
+
export interface SnapshotPageResult {
|
|
12
|
+
success: boolean;
|
|
13
|
+
message: string;
|
|
14
|
+
snapshotPath: string;
|
|
15
|
+
screenshotPath?: string;
|
|
16
|
+
data: {
|
|
17
|
+
timestamp: string;
|
|
18
|
+
pagePath: string;
|
|
19
|
+
pageData: any;
|
|
20
|
+
pageQuery: Record<string, any>;
|
|
21
|
+
};
|
|
22
|
+
}
|
|
23
|
+
export declare function snapshotPage(session: SessionState, args: SnapshotPageArgs): Promise<SnapshotPageResult>;
|
|
24
|
+
export interface SnapshotFullArgs {
|
|
25
|
+
filename?: string;
|
|
26
|
+
includeScreenshot?: boolean;
|
|
27
|
+
fullPage?: boolean;
|
|
28
|
+
}
|
|
29
|
+
export interface SnapshotFullResult {
|
|
30
|
+
success: boolean;
|
|
31
|
+
message: string;
|
|
32
|
+
snapshotPath: string;
|
|
33
|
+
screenshotPath?: string;
|
|
34
|
+
data: {
|
|
35
|
+
timestamp: string;
|
|
36
|
+
systemInfo: any;
|
|
37
|
+
pageStack: Array<{
|
|
38
|
+
path: string;
|
|
39
|
+
query: Record<string, any>;
|
|
40
|
+
}>;
|
|
41
|
+
currentPage: {
|
|
42
|
+
path: string;
|
|
43
|
+
query: Record<string, any>;
|
|
44
|
+
data: any;
|
|
45
|
+
};
|
|
46
|
+
};
|
|
47
|
+
}
|
|
48
|
+
export declare function snapshotFull(session: SessionState, args: SnapshotFullArgs): Promise<SnapshotFullResult>;
|
|
49
|
+
export interface SnapshotElementArgs {
|
|
50
|
+
refId: string;
|
|
51
|
+
filename?: string;
|
|
52
|
+
includeScreenshot?: boolean;
|
|
53
|
+
}
|
|
54
|
+
export interface SnapshotElementResult {
|
|
55
|
+
success: boolean;
|
|
56
|
+
message: string;
|
|
57
|
+
snapshotPath: string;
|
|
58
|
+
screenshotPath?: string;
|
|
59
|
+
data: {
|
|
60
|
+
timestamp: string;
|
|
61
|
+
refId: string;
|
|
62
|
+
text?: string;
|
|
63
|
+
attributes: Record<string, any>;
|
|
64
|
+
size: {
|
|
65
|
+
width: number;
|
|
66
|
+
height: number;
|
|
67
|
+
} | null;
|
|
68
|
+
offset: {
|
|
69
|
+
left: number;
|
|
70
|
+
top: number;
|
|
71
|
+
} | null;
|
|
72
|
+
};
|
|
73
|
+
}
|
|
74
|
+
export declare function snapshotElement(session: SessionState, args: SnapshotElementArgs): Promise<SnapshotElementResult>;
|
|
75
|
+
//# sourceMappingURL=snapshot-handlers.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"snapshot-handlers.d.ts","sourceRoot":"","sources":["../../../../src/capabilities/snapshot/handlers/snapshot-handlers.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AASrD,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,iBAAiB,CAAC,EAAE,OAAO,CAAA;IAC3B,QAAQ,CAAC,EAAE,OAAO,CAAA;CACnB;AAED,MAAM,WAAW,kBAAkB;IACjC,OAAO,EAAE,OAAO,CAAA;IAChB,OAAO,EAAE,MAAM,CAAA;IACf,YAAY,EAAE,MAAM,CAAA;IACpB,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,IAAI,EAAE;QACJ,SAAS,EAAE,MAAM,CAAA;QACjB,QAAQ,EAAE,MAAM,CAAA;QAChB,QAAQ,EAAE,GAAG,CAAA;QACb,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;KAC/B,CAAA;CACF;AAED,wBAAsB,YAAY,CAAC,OAAO,EAAE,YAAY,EAAE,IAAI,EAAE,gBAAgB,GAAG,OAAO,CAAC,kBAAkB,CAAC,CA2E7G;AAMD,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,iBAAiB,CAAC,EAAE,OAAO,CAAA;IAC3B,QAAQ,CAAC,EAAE,OAAO,CAAA;CACnB;AAED,MAAM,WAAW,kBAAkB;IACjC,OAAO,EAAE,OAAO,CAAA;IAChB,OAAO,EAAE,MAAM,CAAA;IACf,YAAY,EAAE,MAAM,CAAA;IACpB,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,IAAI,EAAE;QACJ,SAAS,EAAE,MAAM,CAAA;QACjB,UAAU,EAAE,GAAG,CAAA;QACf,SAAS,EAAE,KAAK,CAAC;YAAE,IAAI,EAAE,MAAM,CAAC;YAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;SAAE,CAAC,CAAA;QAC9D,WAAW,EAAE;YACX,IAAI,EAAE,MAAM,CAAA;YACZ,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;YAC1B,IAAI,EAAE,GAAG,CAAA;SACV,CAAA;KACF,CAAA;CACF;AAED,wBAAsB,YAAY,CAAC,OAAO,EAAE,YAAY,EAAE,IAAI,EAAE,gBAAgB,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAgF7G;AAMD,MAAM,WAAW,mBAAmB;IAClC,KAAK,EAAE,MAAM,CAAA;IACb,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,iBAAiB,CAAC,EAAE,OAAO,CAAA;CAC5B;AAED,MAAM,WAAW,qBAAqB;IACpC,OAAO,EAAE,OAAO,CAAA;IAChB,OAAO,EAAE,MAAM,CAAA;IACf,YAAY,EAAE,MAAM,CAAA;IACpB,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,IAAI,EAAE;QACJ,SAAS,EAAE,MAAM,CAAA;QACjB,KAAK,EAAE,MAAM,CAAA;QACb,IAAI,CAAC,EAAE,MAAM,CAAA;QACb,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;QAC/B,IAAI,EAAE;YAAE,KAAK,EAAE,MAAM,CAAC;YAAC,MAAM,EAAE,MAAM,CAAA;SAAE,GAAG,IAAI,CAAA;QAC9C,MAAM,EAAE;YAAE,IAAI,EAAE,MAAM,CAAC;YAAC,GAAG,EAAE,MAAM,CAAA;SAAE,GAAG,IAAI,CAAA;KAC7C,CAAA;CACF;AAED,wBAAsB,eAAe,CAAC,OAAO,EAAE,YAAY,EAAE,IAAI,EAAE,mBAAmB,GAAG,OAAO,CAAC,qBAAqB,CAAC,CA+EtH"}
|
|
@@ -0,0 +1,201 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Snapshot handlers - State capture and diagnostic utilities
|
|
3
|
+
*/
|
|
4
|
+
import { getPageStack, getSystemInfo, screenshot } from '../../miniprogram/handlers/index.js';
|
|
5
|
+
import { getData } from '../../page/handlers/index.js';
|
|
6
|
+
import { getText, getSize, getOffset } from '../../element/handlers/index.js';
|
|
7
|
+
export async function snapshotPage(session, args) {
|
|
8
|
+
const { pagePath, filename, includeScreenshot = true, fullPage = false } = args;
|
|
9
|
+
const logger = session.logger;
|
|
10
|
+
try {
|
|
11
|
+
if (!session.miniProgram) {
|
|
12
|
+
throw new Error('MiniProgram not connected. Call miniprogram_launch or miniprogram_connect first.');
|
|
13
|
+
}
|
|
14
|
+
if (!session.outputManager) {
|
|
15
|
+
throw new Error('OutputManager not available');
|
|
16
|
+
}
|
|
17
|
+
logger?.info('Capturing page snapshot', { pagePath, includeScreenshot });
|
|
18
|
+
if (filename) {
|
|
19
|
+
const { validateFilename } = await import('../../../runtime/validation/validation.js');
|
|
20
|
+
try {
|
|
21
|
+
validateFilename(filename, ['json']);
|
|
22
|
+
}
|
|
23
|
+
catch (error) {
|
|
24
|
+
const errorMessage = error instanceof Error ? error.message : String(error);
|
|
25
|
+
throw new Error(`Invalid filename: ${errorMessage}`);
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
const pageStackResult = await getPageStack(session);
|
|
29
|
+
const currentPageInfo = pageStackResult.pages[pageStackResult.pages.length - 1];
|
|
30
|
+
if (!currentPageInfo) {
|
|
31
|
+
throw new Error('No active page found');
|
|
32
|
+
}
|
|
33
|
+
const pageDataResult = await getData(session, { pagePath });
|
|
34
|
+
const timestamp = new Date().toISOString();
|
|
35
|
+
const snapshotData = {
|
|
36
|
+
timestamp,
|
|
37
|
+
pagePath: currentPageInfo.path,
|
|
38
|
+
pageData: pageDataResult.data,
|
|
39
|
+
pageQuery: currentPageInfo.query,
|
|
40
|
+
};
|
|
41
|
+
const outputManager = session.outputManager;
|
|
42
|
+
await outputManager.ensureOutputDir();
|
|
43
|
+
const snapshotFilename = filename || outputManager.generateFilename('snapshot', 'json');
|
|
44
|
+
const snapshotPath = await outputManager.writeFile(snapshotFilename, Buffer.from(JSON.stringify(snapshotData, null, 2)));
|
|
45
|
+
logger?.info('Page snapshot data saved', { path: snapshotPath });
|
|
46
|
+
let screenshotPath;
|
|
47
|
+
if (includeScreenshot) {
|
|
48
|
+
const screenshotFilename = snapshotFilename.replace('.json', '.png');
|
|
49
|
+
const screenshotResult = await screenshot(session, { filename: screenshotFilename, fullPage });
|
|
50
|
+
screenshotPath = screenshotResult.path;
|
|
51
|
+
logger?.info('Page screenshot saved', { path: screenshotPath });
|
|
52
|
+
}
|
|
53
|
+
logger?.info('Page snapshot completed', { snapshotPath, screenshotPath });
|
|
54
|
+
return {
|
|
55
|
+
success: true,
|
|
56
|
+
message: 'Page snapshot captured successfully',
|
|
57
|
+
snapshotPath,
|
|
58
|
+
screenshotPath,
|
|
59
|
+
data: snapshotData,
|
|
60
|
+
};
|
|
61
|
+
}
|
|
62
|
+
catch (error) {
|
|
63
|
+
const errorMessage = error instanceof Error ? error.message : String(error);
|
|
64
|
+
logger?.error('Page snapshot failed', { error: errorMessage, pagePath });
|
|
65
|
+
throw new Error(`Page snapshot failed: ${errorMessage}`);
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
export async function snapshotFull(session, args) {
|
|
69
|
+
const { filename, includeScreenshot = true, fullPage = false } = args;
|
|
70
|
+
const logger = session.logger;
|
|
71
|
+
try {
|
|
72
|
+
if (!session.miniProgram) {
|
|
73
|
+
throw new Error('MiniProgram not connected. Call miniprogram_launch or miniprogram_connect first.');
|
|
74
|
+
}
|
|
75
|
+
if (!session.outputManager) {
|
|
76
|
+
throw new Error('OutputManager not available');
|
|
77
|
+
}
|
|
78
|
+
logger?.info('Capturing full application snapshot', { includeScreenshot });
|
|
79
|
+
if (filename) {
|
|
80
|
+
const { validateFilename } = await import('../../../runtime/validation/validation.js');
|
|
81
|
+
try {
|
|
82
|
+
validateFilename(filename, ['json']);
|
|
83
|
+
}
|
|
84
|
+
catch (error) {
|
|
85
|
+
const errorMessage = error instanceof Error ? error.message : String(error);
|
|
86
|
+
throw new Error(`Invalid filename: ${errorMessage}`);
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
const systemInfoResult = await getSystemInfo(session);
|
|
90
|
+
const pageStackResult = await getPageStack(session);
|
|
91
|
+
const currentPageInfo = pageStackResult.pages[pageStackResult.pages.length - 1];
|
|
92
|
+
if (!currentPageInfo) {
|
|
93
|
+
throw new Error('No active page found');
|
|
94
|
+
}
|
|
95
|
+
const pageDataResult = await getData(session, {});
|
|
96
|
+
const timestamp = new Date().toISOString();
|
|
97
|
+
const snapshotData = {
|
|
98
|
+
timestamp,
|
|
99
|
+
systemInfo: systemInfoResult.systemInfo,
|
|
100
|
+
pageStack: pageStackResult.pages,
|
|
101
|
+
currentPage: {
|
|
102
|
+
path: currentPageInfo.path,
|
|
103
|
+
query: currentPageInfo.query,
|
|
104
|
+
data: pageDataResult.data,
|
|
105
|
+
},
|
|
106
|
+
};
|
|
107
|
+
const outputManager = session.outputManager;
|
|
108
|
+
await outputManager.ensureOutputDir();
|
|
109
|
+
const snapshotFilename = filename || outputManager.generateFilename('snapshot', 'json');
|
|
110
|
+
const snapshotPath = await outputManager.writeFile(snapshotFilename, Buffer.from(JSON.stringify(snapshotData, null, 2)));
|
|
111
|
+
logger?.info('Application snapshot data saved', { path: snapshotPath });
|
|
112
|
+
let screenshotPath;
|
|
113
|
+
if (includeScreenshot) {
|
|
114
|
+
const screenshotFilename = snapshotFilename.replace('.json', '.png');
|
|
115
|
+
const screenshotResult = await screenshot(session, { filename: screenshotFilename, fullPage });
|
|
116
|
+
screenshotPath = screenshotResult.path;
|
|
117
|
+
logger?.info('Application screenshot saved', { path: screenshotPath });
|
|
118
|
+
}
|
|
119
|
+
logger?.info('Full application snapshot completed', { snapshotPath, screenshotPath });
|
|
120
|
+
return {
|
|
121
|
+
success: true,
|
|
122
|
+
message: 'Full application snapshot captured successfully',
|
|
123
|
+
snapshotPath,
|
|
124
|
+
screenshotPath,
|
|
125
|
+
data: snapshotData,
|
|
126
|
+
};
|
|
127
|
+
}
|
|
128
|
+
catch (error) {
|
|
129
|
+
const errorMessage = error instanceof Error ? error.message : String(error);
|
|
130
|
+
logger?.error('Full application snapshot failed', { error: errorMessage });
|
|
131
|
+
throw new Error(`Full application snapshot failed: ${errorMessage}`);
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
export async function snapshotElement(session, args) {
|
|
135
|
+
const { refId, filename, includeScreenshot = false } = args;
|
|
136
|
+
const logger = session.logger;
|
|
137
|
+
try {
|
|
138
|
+
if (!session.miniProgram) {
|
|
139
|
+
throw new Error('MiniProgram not connected. Call miniprogram_launch or miniprogram_connect first.');
|
|
140
|
+
}
|
|
141
|
+
if (!session.outputManager) {
|
|
142
|
+
throw new Error('OutputManager not available');
|
|
143
|
+
}
|
|
144
|
+
logger?.info('Capturing element snapshot', { refId, includeScreenshot });
|
|
145
|
+
if (filename) {
|
|
146
|
+
const { validateFilename } = await import('../../../runtime/validation/validation.js');
|
|
147
|
+
try {
|
|
148
|
+
validateFilename(filename, ['json']);
|
|
149
|
+
}
|
|
150
|
+
catch (error) {
|
|
151
|
+
const errorMessage = error instanceof Error ? error.message : String(error);
|
|
152
|
+
throw new Error(`Invalid filename: ${errorMessage}`);
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
let text;
|
|
156
|
+
try {
|
|
157
|
+
const textResult = await getText(session, { refId });
|
|
158
|
+
text = textResult.text;
|
|
159
|
+
}
|
|
160
|
+
catch {
|
|
161
|
+
text = undefined;
|
|
162
|
+
}
|
|
163
|
+
const sizeResult = await getSize(session, { refId });
|
|
164
|
+
const offsetResult = await getOffset(session, { refId });
|
|
165
|
+
const timestamp = new Date().toISOString();
|
|
166
|
+
const snapshotData = {
|
|
167
|
+
timestamp,
|
|
168
|
+
refId,
|
|
169
|
+
text,
|
|
170
|
+
attributes: {},
|
|
171
|
+
size: sizeResult.size,
|
|
172
|
+
offset: offsetResult.offset,
|
|
173
|
+
};
|
|
174
|
+
const outputManager = session.outputManager;
|
|
175
|
+
await outputManager.ensureOutputDir();
|
|
176
|
+
const snapshotFilename = filename || outputManager.generateFilename('snapshot', 'json');
|
|
177
|
+
const snapshotPath = await outputManager.writeFile(snapshotFilename, Buffer.from(JSON.stringify(snapshotData, null, 2)));
|
|
178
|
+
logger?.info('Element snapshot data saved', { path: snapshotPath });
|
|
179
|
+
let screenshotPath;
|
|
180
|
+
if (includeScreenshot) {
|
|
181
|
+
const screenshotFilename = snapshotFilename.replace('.json', '.png');
|
|
182
|
+
const screenshotResult = await screenshot(session, { filename: screenshotFilename });
|
|
183
|
+
screenshotPath = screenshotResult.path;
|
|
184
|
+
logger?.info('Element screenshot saved', { path: screenshotPath });
|
|
185
|
+
}
|
|
186
|
+
logger?.info('Element snapshot completed', { snapshotPath, screenshotPath });
|
|
187
|
+
return {
|
|
188
|
+
success: true,
|
|
189
|
+
message: 'Element snapshot captured successfully',
|
|
190
|
+
snapshotPath,
|
|
191
|
+
screenshotPath,
|
|
192
|
+
data: snapshotData,
|
|
193
|
+
};
|
|
194
|
+
}
|
|
195
|
+
catch (error) {
|
|
196
|
+
const errorMessage = error instanceof Error ? error.message : String(error);
|
|
197
|
+
logger?.error('Element snapshot failed', { error: errorMessage, refId });
|
|
198
|
+
throw new Error(`Element snapshot failed: ${errorMessage}`);
|
|
199
|
+
}
|
|
200
|
+
}
|
|
201
|
+
//# sourceMappingURL=snapshot-handlers.js.map
|