@wenathlan/saddle 1.8.17 → 2.0.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/Dockerfile +1339 -0
- package/README.md +68 -22
- package/alternatives.ts +1218 -0
- package/biome.json +153 -0
- package/boards.json +1517 -0
- package/compute.ts +3144 -0
- package/cores.json +1801 -0
- package/dist/acquisition.d.ts +359 -0
- package/dist/acquisition.d.ts.map +1 -0
- package/dist/acquisition.js +629 -0
- package/dist/acquisition.js.map +1 -0
- package/dist/alternatives.d.ts +509 -0
- package/dist/alternatives.d.ts.map +1 -0
- package/dist/alternatives.js +951 -0
- package/dist/alternatives.js.map +1 -0
- package/dist/automation.d.ts +426 -0
- package/dist/automation.d.ts.map +1 -0
- package/dist/automation.js +561 -0
- package/dist/automation.js.map +1 -0
- package/dist/browser.d.ts +562 -0
- package/dist/browser.d.ts.map +1 -0
- package/dist/browser.js +1057 -0
- package/dist/browser.js.map +1 -0
- package/dist/capacitor.config.d.ts +13 -0
- package/dist/capacitor.config.d.ts.map +1 -0
- package/dist/capacitor.config.js +26 -0
- package/dist/capacitor.config.js.map +1 -0
- package/dist/cli.d.ts +17 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +111 -0
- package/dist/cli.js.map +1 -0
- package/dist/communication.d.ts +192 -0
- package/dist/communication.d.ts.map +1 -0
- package/dist/communication.js +418 -0
- package/dist/communication.js.map +1 -0
- package/dist/compute.d.ts +1161 -0
- package/dist/compute.d.ts.map +1 -0
- package/dist/compute.js +2273 -0
- package/dist/compute.js.map +1 -0
- package/dist/distribution.d.ts +529 -0
- package/dist/distribution.d.ts.map +1 -0
- package/dist/distribution.js +811 -0
- package/dist/distribution.js.map +1 -0
- package/dist/execution.d.ts +530 -0
- package/dist/execution.d.ts.map +1 -0
- package/dist/execution.js +761 -0
- package/dist/execution.js.map +1 -0
- package/dist/format.d.ts +19 -0
- package/dist/format.d.ts.map +1 -0
- package/dist/format.js +60 -0
- package/dist/format.js.map +1 -0
- package/dist/foundation.d.ts +176 -0
- package/dist/foundation.d.ts.map +1 -0
- package/dist/foundation.js +309 -0
- package/dist/foundation.js.map +1 -0
- package/dist/index.d.ts +733 -122
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1018 -122
- package/dist/index.js.map +1 -1
- package/dist/integration.d.ts +236 -0
- package/dist/integration.d.ts.map +1 -0
- package/dist/integration.js +236 -0
- package/dist/integration.js.map +1 -0
- package/dist/intelligence.d.ts +94 -0
- package/dist/intelligence.d.ts.map +1 -0
- package/dist/intelligence.js +145 -0
- package/dist/intelligence.js.map +1 -0
- package/dist/isolation.d.ts +129 -0
- package/dist/isolation.d.ts.map +1 -0
- package/dist/isolation.js +96 -0
- package/dist/isolation.js.map +1 -0
- package/dist/media.d.ts +344 -0
- package/dist/media.d.ts.map +1 -0
- package/dist/media.js +986 -0
- package/dist/media.js.map +1 -0
- package/dist/modes.d.ts +359 -0
- package/dist/modes.d.ts.map +1 -0
- package/dist/modes.js +134 -0
- package/dist/modes.js.map +1 -0
- package/dist/{library/public.d.ts → operations.d.ts} +15 -1
- package/dist/operations.d.ts.map +1 -0
- package/dist/{library/public.js → operations.js} +18 -7
- package/dist/operations.js.map +1 -0
- package/dist/orchestrator.d.ts +1339 -0
- package/dist/orchestrator.d.ts.map +1 -0
- package/dist/orchestrator.js +4308 -0
- package/dist/orchestrator.js.map +1 -0
- package/dist/performance.d.ts +416 -0
- package/dist/performance.d.ts.map +1 -0
- package/dist/performance.js +827 -0
- package/dist/performance.js.map +1 -0
- package/dist/quantum.d.ts +810 -0
- package/dist/quantum.d.ts.map +1 -0
- package/dist/quantum.js +2073 -0
- package/dist/quantum.js.map +1 -0
- package/dist/render.d.ts +381 -0
- package/dist/render.d.ts.map +1 -0
- package/dist/render.js +1073 -0
- package/dist/render.js.map +1 -0
- package/dist/scheduler.d.ts +596 -0
- package/dist/scheduler.d.ts.map +1 -0
- package/dist/scheduler.js +1259 -0
- package/dist/scheduler.js.map +1 -0
- package/dist/security.d.ts +501 -0
- package/dist/security.d.ts.map +1 -0
- package/dist/security.js +1170 -0
- package/dist/security.js.map +1 -0
- package/dist/server.d.ts +21 -0
- package/dist/server.d.ts.map +1 -0
- package/dist/{server/node.js → server.js} +16 -2
- package/dist/server.js.map +1 -0
- package/dist/tiers.d.ts +1002 -0
- package/dist/tiers.d.ts.map +1 -0
- package/dist/tiers.js +2165 -0
- package/dist/tiers.js.map +1 -0
- package/dist/virtual.d.ts +641 -0
- package/dist/virtual.d.ts.map +1 -0
- package/dist/virtual.js +1285 -0
- package/dist/virtual.js.map +1 -0
- package/dist/virtualcpu.d.ts +316 -0
- package/dist/virtualcpu.d.ts.map +1 -0
- package/dist/virtualcpu.js +1180 -0
- package/dist/virtualcpu.js.map +1 -0
- package/dist/virtualgpu.d.ts +345 -0
- package/dist/virtualgpu.d.ts.map +1 -0
- package/dist/virtualgpu.js +1000 -0
- package/dist/virtualgpu.js.map +1 -0
- package/dist/virtualization.d.ts +607 -0
- package/dist/virtualization.d.ts.map +1 -0
- package/dist/virtualization.js +1187 -0
- package/dist/virtualization.js.map +1 -0
- package/dist/virtualmemory.d.ts +818 -0
- package/dist/virtualmemory.d.ts.map +1 -0
- package/dist/virtualmemory.js +1796 -0
- package/dist/virtualmemory.js.map +1 -0
- package/dist/webscrape.d.ts +720 -0
- package/dist/webscrape.d.ts.map +1 -0
- package/dist/webscrape.js +2697 -0
- package/dist/webscrape.js.map +1 -0
- package/docker.config +769 -0
- package/docs/CONVERSA.txt +1523 -0
- package/docs/alternatives.md +499 -0
- package/docs/architecture-1.8.19.md +76 -0
- package/docs/architecture-1.8.19.mmd +33 -0
- package/docs/architecture-1.8.19.png +0 -0
- package/docs/architecture.md +355 -0
- package/docs/artifactavailability.md +6 -0
- package/docs/brancharchive-2026-08-18.md +18 -0
- package/docs/browser.md +7 -0
- package/docs/consolidation.md +70 -0
- package/docs/e2ugh-engine.md +528 -0
- package/{dist/examples/localjob.js → docs/example-localjob.ts} +3 -3
- package/{dist/examples/publicapi.js → docs/example-publicapi.ts} +2 -2
- package/docs/hardware.md +342 -0
- package/docs/optimization.md +126 -0
- package/docs/performance.md +499 -0
- package/docs/planning.1.8.18.md +94 -0
- package/docs/planning.1.8.19.md +49 -0
- package/docs/releasenotes-1.8.17.md +6 -0
- package/docs/releasenotes-1.8.18.md +32 -0
- package/docs/releasenotes-1.8.19.md +35 -0
- package/docs/research-1.8.18-isolation.md +43 -0
- package/docs/research-1.8.19-virtual-browser.md +27 -0
- package/docs/saddle.archive.1.8.17.tar.gz.gpg +0 -0
- package/docs/security.md +454 -0
- package/docs/todo-1.8.16.md +56 -1
- package/docs/todo-1.8.18.md +164 -0
- package/docs/todo-1.8.19.md +241 -0
- package/docs/viability.md +777 -0
- package/docs/virtualization.md +335 -0
- package/docs/web-duplicatecleanup.md +9 -0
- package/docs/web-ideas.md +106 -0
- package/docs/workflowimprovements-2026-08-19.md +70 -0
- package/gpumonitor.cpp +1543 -0
- package/gpus.json +2408 -0
- package/index.ts +1478 -0
- package/media.ts +1337 -0
- package/mttg.config +1549 -0
- package/orchestrator.ts +5462 -0
- package/package.json +304 -55
- package/passage.config +1331 -0
- package/performance.ts +1049 -0
- package/processors.json +2217 -0
- package/qemu.config +1062 -0
- package/qemubridge.py +1340 -0
- package/quantum.ts +2393 -0
- package/render.ts +1325 -0
- package/scheduler.ts +1600 -0
- package/security.ts +1449 -0
- package/tiers.ts +2871 -0
- package/tsconfig.json +29 -0
- package/virtualcpu.ts +1273 -0
- package/virtualgpu.ts +1181 -0
- package/virtualhardware.c +1011 -0
- package/virtualhardware.json +739 -0
- package/virtualization.ts +1628 -0
- package/virtualizationcore.cpp +4635 -0
- package/virtualmemory.ts +2303 -0
- package/vm.config.json +1910 -0
- package/{extension → web/extension}/manifest.json +1 -1
- package/web/readme.md +382 -0
- package/web/tsconfig.json +25 -0
- package/dist/adapters/forge.d.ts +0 -17
- package/dist/adapters/forge.d.ts.map +0 -1
- package/dist/adapters/forge.js +0 -19
- package/dist/adapters/forge.js.map +0 -1
- package/dist/adapters/forgejo.d.ts +0 -49
- package/dist/adapters/forgejo.d.ts.map +0 -1
- package/dist/adapters/forgejo.js +0 -8
- package/dist/adapters/forgejo.js.map +0 -1
- package/dist/adapters/github.d.ts +0 -12
- package/dist/adapters/github.d.ts.map +0 -1
- package/dist/adapters/github.js +0 -20
- package/dist/adapters/github.js.map +0 -1
- package/dist/adapters/gitlab.d.ts +0 -17
- package/dist/adapters/gitlab.d.ts.map +0 -1
- package/dist/adapters/gitlab.js +0 -10
- package/dist/adapters/gitlab.js.map +0 -1
- package/dist/adapters/huggingface.d.ts +0 -17
- package/dist/adapters/huggingface.d.ts.map +0 -1
- package/dist/adapters/huggingface.js +0 -6
- package/dist/adapters/huggingface.js.map +0 -1
- package/dist/adapters/socket.d.ts +0 -11
- package/dist/adapters/socket.d.ts.map +0 -1
- package/dist/adapters/socket.js +0 -17
- package/dist/adapters/socket.js.map +0 -1
- package/dist/adapters/transport.d.ts +0 -7
- package/dist/adapters/transport.d.ts.map +0 -1
- package/dist/adapters/transport.js +0 -36
- package/dist/adapters/transport.js.map +0 -1
- package/dist/ai/chunk.d.ts +0 -2
- package/dist/ai/chunk.d.ts.map +0 -1
- package/dist/ai/chunk.js +0 -36
- package/dist/ai/chunk.js.map +0 -1
- package/dist/ai/llmstxt.d.ts +0 -6
- package/dist/ai/llmstxt.d.ts.map +0 -1
- package/dist/ai/llmstxt.js +0 -12
- package/dist/ai/llmstxt.js.map +0 -1
- package/dist/ai/provenance.d.ts +0 -22
- package/dist/ai/provenance.d.ts.map +0 -1
- package/dist/ai/provenance.js +0 -25
- package/dist/ai/provenance.js.map +0 -1
- package/dist/ai/rag.d.ts +0 -26
- package/dist/ai/rag.d.ts.map +0 -1
- package/dist/ai/rag.js +0 -22
- package/dist/ai/rag.js.map +0 -1
- package/dist/ai/tokens.d.ts +0 -15
- package/dist/ai/tokens.d.ts.map +0 -1
- package/dist/ai/tokens.js +0 -9
- package/dist/ai/tokens.js.map +0 -1
- package/dist/api/auth.d.ts +0 -16
- package/dist/api/auth.d.ts.map +0 -1
- package/dist/api/auth.js +0 -19
- package/dist/api/auth.js.map +0 -1
- package/dist/api/contracts.d.ts +0 -28
- package/dist/api/contracts.d.ts.map +0 -1
- package/dist/api/contracts.js +0 -14
- package/dist/api/contracts.js.map +0 -1
- package/dist/api/control.d.ts +0 -10
- package/dist/api/control.d.ts.map +0 -1
- package/dist/api/control.js +0 -35
- package/dist/api/control.js.map +0 -1
- package/dist/api/http.d.ts +0 -7
- package/dist/api/http.d.ts.map +0 -1
- package/dist/api/http.js +0 -12
- package/dist/api/http.js.map +0 -1
- package/dist/api/rate.d.ts +0 -28
- package/dist/api/rate.d.ts.map +0 -1
- package/dist/api/rate.js +0 -36
- package/dist/api/rate.js.map +0 -1
- package/dist/api/security.d.ts +0 -12
- package/dist/api/security.d.ts.map +0 -1
- package/dist/api/security.js +0 -56
- package/dist/api/security.js.map +0 -1
- package/dist/api/service.d.ts +0 -5
- package/dist/api/service.d.ts.map +0 -1
- package/dist/api/service.js +0 -70
- package/dist/api/service.js.map +0 -1
- package/dist/apps/registry.d.ts +0 -33
- package/dist/apps/registry.d.ts.map +0 -1
- package/dist/apps/registry.js +0 -24
- package/dist/apps/registry.js.map +0 -1
- package/dist/binary/archive.d.ts +0 -27
- package/dist/binary/archive.d.ts.map +0 -1
- package/dist/binary/archive.js +0 -46
- package/dist/binary/archive.js.map +0 -1
- package/dist/binary/build.d.ts +0 -29
- package/dist/binary/build.d.ts.map +0 -1
- package/dist/binary/build.js +0 -17
- package/dist/binary/build.js.map +0 -1
- package/dist/binary/transform.d.ts +0 -70
- package/dist/binary/transform.d.ts.map +0 -1
- package/dist/binary/transform.js +0 -105
- package/dist/binary/transform.js.map +0 -1
- package/dist/bot/adapter.d.ts +0 -5
- package/dist/bot/adapter.d.ts.map +0 -1
- package/dist/bot/adapter.js +0 -11
- package/dist/bot/adapter.js.map +0 -1
- package/dist/bot/bot.d.ts +0 -28
- package/dist/bot/bot.d.ts.map +0 -1
- package/dist/bot/bot.js +0 -52
- package/dist/bot/bot.js.map +0 -1
- package/dist/bot/commands.d.ts +0 -8
- package/dist/bot/commands.d.ts.map +0 -1
- package/dist/bot/commands.js +0 -19
- package/dist/bot/commands.js.map +0 -1
- package/dist/bot/permissions.d.ts +0 -13
- package/dist/bot/permissions.d.ts.map +0 -1
- package/dist/bot/permissions.js +0 -16
- package/dist/bot/permissions.js.map +0 -1
- package/dist/browser/actions.d.ts +0 -33
- package/dist/browser/actions.d.ts.map +0 -1
- package/dist/browser/actions.js +0 -44
- package/dist/browser/actions.js.map +0 -1
- package/dist/browser/agent.d.ts +0 -21
- package/dist/browser/agent.d.ts.map +0 -1
- package/dist/browser/agent.js +0 -13
- package/dist/browser/agent.js.map +0 -1
- package/dist/browser/context.d.ts +0 -43
- package/dist/browser/context.d.ts.map +0 -1
- package/dist/browser/context.js +0 -54
- package/dist/browser/context.js.map +0 -1
- package/dist/browser/fingerprint.d.ts +0 -4
- package/dist/browser/fingerprint.d.ts.map +0 -1
- package/dist/browser/fingerprint.js +0 -12
- package/dist/browser/fingerprint.js.map +0 -1
- package/dist/browser/index.d.ts +0 -11
- package/dist/browser/index.d.ts.map +0 -1
- package/dist/browser/index.js +0 -11
- package/dist/browser/index.js.map +0 -1
- package/dist/browser/playwright.d.ts +0 -11
- package/dist/browser/playwright.d.ts.map +0 -1
- package/dist/browser/playwright.js +0 -24
- package/dist/browser/playwright.js.map +0 -1
- package/dist/browser/recorder.d.ts +0 -21
- package/dist/browser/recorder.d.ts.map +0 -1
- package/dist/browser/recorder.js +0 -58
- package/dist/browser/recorder.js.map +0 -1
- package/dist/browser/session.d.ts +0 -14
- package/dist/browser/session.d.ts.map +0 -1
- package/dist/browser/session.js +0 -21
- package/dist/browser/session.js.map +0 -1
- package/dist/browser/snapshot.d.ts +0 -69
- package/dist/browser/snapshot.d.ts.map +0 -1
- package/dist/browser/snapshot.js +0 -133
- package/dist/browser/snapshot.js.map +0 -1
- package/dist/captcha/contract.d.ts +0 -35
- package/dist/captcha/contract.d.ts.map +0 -1
- package/dist/captcha/contract.js +0 -17
- package/dist/captcha/contract.js.map +0 -1
- package/dist/captcha/evidence.d.ts +0 -10
- package/dist/captcha/evidence.d.ts.map +0 -1
- package/dist/captcha/evidence.js +0 -9
- package/dist/captcha/evidence.js.map +0 -1
- package/dist/captcha/guard.d.ts +0 -23
- package/dist/captcha/guard.d.ts.map +0 -1
- package/dist/captcha/guard.js +0 -12
- package/dist/captcha/guard.js.map +0 -1
- package/dist/cli/main.d.ts +0 -4
- package/dist/cli/main.d.ts.map +0 -1
- package/dist/cli/main.js +0 -46
- package/dist/cli/main.js.map +0 -1
- package/dist/core/errors.d.ts +0 -84
- package/dist/core/errors.d.ts.map +0 -1
- package/dist/core/errors.js +0 -54
- package/dist/core/errors.js.map +0 -1
- package/dist/core/events.d.ts +0 -9
- package/dist/core/events.d.ts.map +0 -1
- package/dist/core/events.js +0 -21
- package/dist/core/events.js.map +0 -1
- package/dist/core/hash.d.ts +0 -10
- package/dist/core/hash.d.ts.map +0 -1
- package/dist/core/hash.js +0 -82
- package/dist/core/hash.js.map +0 -1
- package/dist/core/ids.d.ts +0 -10
- package/dist/core/ids.d.ts.map +0 -1
- package/dist/core/ids.js +0 -15
- package/dist/core/ids.js.map +0 -1
- package/dist/delivery/manifest.d.ts +0 -35
- package/dist/delivery/manifest.d.ts.map +0 -1
- package/dist/delivery/manifest.js +0 -68
- package/dist/delivery/manifest.js.map +0 -1
- package/dist/deploy/index.d.ts +0 -6
- package/dist/deploy/index.d.ts.map +0 -1
- package/dist/deploy/index.js +0 -6
- package/dist/deploy/index.js.map +0 -1
- package/dist/dispatch/resumable.d.ts +0 -102
- package/dist/dispatch/resumable.d.ts.map +0 -1
- package/dist/dispatch/resumable.js +0 -64
- package/dist/dispatch/resumable.js.map +0 -1
- package/dist/dispatch/workflow.d.ts +0 -6
- package/dist/dispatch/workflow.d.ts.map +0 -1
- package/dist/dispatch/workflow.js +0 -37
- package/dist/dispatch/workflow.js.map +0 -1
- package/dist/domain/artifacts.d.ts +0 -12
- package/dist/domain/artifacts.d.ts.map +0 -1
- package/dist/domain/artifacts.js +0 -14
- package/dist/domain/artifacts.js.map +0 -1
- package/dist/domain/jobs.d.ts +0 -12
- package/dist/domain/jobs.d.ts.map +0 -1
- package/dist/domain/jobs.js +0 -20
- package/dist/domain/jobs.js.map +0 -1
- package/dist/domain/providers.d.ts +0 -10
- package/dist/domain/providers.d.ts.map +0 -1
- package/dist/domain/providers.js +0 -8
- package/dist/domain/providers.js.map +0 -1
- package/dist/domain/runtime.d.ts +0 -14
- package/dist/domain/runtime.d.ts.map +0 -1
- package/dist/domain/runtime.js +0 -10
- package/dist/domain/runtime.js.map +0 -1
- package/dist/domain/sessions.d.ts +0 -12
- package/dist/domain/sessions.d.ts.map +0 -1
- package/dist/domain/sessions.js +0 -57
- package/dist/domain/sessions.js.map +0 -1
- package/dist/examples/localjob.d.ts +0 -2
- package/dist/examples/localjob.d.ts.map +0 -1
- package/dist/examples/localjob.js.map +0 -1
- package/dist/examples/publicapi.d.ts +0 -2
- package/dist/examples/publicapi.d.ts.map +0 -1
- package/dist/examples/publicapi.js.map +0 -1
- package/dist/extension/build.d.ts +0 -9
- package/dist/extension/build.d.ts.map +0 -1
- package/dist/extension/build.js +0 -85
- package/dist/extension/build.js.map +0 -1
- package/dist/extension/content.d.ts +0 -6
- package/dist/extension/content.d.ts.map +0 -1
- package/dist/extension/content.js +0 -135
- package/dist/extension/content.js.map +0 -1
- package/dist/extension/index.d.ts +0 -7
- package/dist/extension/index.d.ts.map +0 -1
- package/dist/extension/index.js +0 -7
- package/dist/extension/index.js.map +0 -1
- package/dist/extension/pagebridge.d.ts +0 -6
- package/dist/extension/pagebridge.d.ts.map +0 -1
- package/dist/extension/pagebridge.js +0 -42
- package/dist/extension/pagebridge.js.map +0 -1
- package/dist/extension/permissions.d.ts +0 -26
- package/dist/extension/permissions.d.ts.map +0 -1
- package/dist/extension/permissions.js +0 -28
- package/dist/extension/permissions.js.map +0 -1
- package/dist/extension/popup.d.ts +0 -5
- package/dist/extension/popup.d.ts.map +0 -1
- package/dist/extension/popup.js +0 -26
- package/dist/extension/popup.js.map +0 -1
- package/dist/extension/protocol.d.ts +0 -58
- package/dist/extension/protocol.d.ts.map +0 -1
- package/dist/extension/protocol.js +0 -101
- package/dist/extension/protocol.js.map +0 -1
- package/dist/extension/serviceworker.d.ts +0 -25
- package/dist/extension/serviceworker.d.ts.map +0 -1
- package/dist/extension/serviceworker.js +0 -102
- package/dist/extension/serviceworker.js.map +0 -1
- package/dist/extension/worker.d.ts +0 -28
- package/dist/extension/worker.d.ts.map +0 -1
- package/dist/extension/worker.js +0 -22
- package/dist/extension/worker.js.map +0 -1
- package/dist/format/check.d.ts +0 -8
- package/dist/format/check.d.ts.map +0 -1
- package/dist/format/check.js +0 -38
- package/dist/format/check.js.map +0 -1
- package/dist/library/public.d.ts.map +0 -1
- package/dist/library/public.js.map +0 -1
- package/dist/mcp/browser.d.ts +0 -9
- package/dist/mcp/browser.d.ts.map +0 -1
- package/dist/mcp/browser.js +0 -13
- package/dist/mcp/browser.js.map +0 -1
- package/dist/mcp/server.d.ts +0 -35
- package/dist/mcp/server.d.ts.map +0 -1
- package/dist/mcp/server.js +0 -40
- package/dist/mcp/server.js.map +0 -1
- package/dist/mcp/transport.d.ts +0 -7
- package/dist/mcp/transport.d.ts.map +0 -1
- package/dist/mcp/transport.js +0 -17
- package/dist/mcp/transport.js.map +0 -1
- package/dist/memory/bridge.d.ts +0 -14
- package/dist/memory/bridge.d.ts.map +0 -1
- package/dist/memory/bridge.js +0 -16
- package/dist/memory/bridge.js.map +0 -1
- package/dist/memory/engine.d.ts +0 -38
- package/dist/memory/engine.d.ts.map +0 -1
- package/dist/memory/engine.js +0 -109
- package/dist/memory/engine.js.map +0 -1
- package/dist/memory/modes.d.ts +0 -43
- package/dist/memory/modes.d.ts.map +0 -1
- package/dist/memory/modes.js +0 -66
- package/dist/memory/modes.js.map +0 -1
- package/dist/memory/objects.d.ts +0 -21
- package/dist/memory/objects.d.ts.map +0 -1
- package/dist/memory/objects.js +0 -20
- package/dist/memory/objects.js.map +0 -1
- package/dist/memory/planner.d.ts +0 -66
- package/dist/memory/planner.d.ts.map +0 -1
- package/dist/memory/planner.js +0 -108
- package/dist/memory/planner.js.map +0 -1
- package/dist/memory/targets.d.ts +0 -78
- package/dist/memory/targets.d.ts.map +0 -1
- package/dist/memory/targets.js +0 -29
- package/dist/memory/targets.js.map +0 -1
- package/dist/memory/transforms.d.ts +0 -19
- package/dist/memory/transforms.d.ts.map +0 -1
- package/dist/memory/transforms.js +0 -14
- package/dist/memory/transforms.js.map +0 -1
- package/dist/modes/matrix.d.ts +0 -23
- package/dist/modes/matrix.d.ts.map +0 -1
- package/dist/modes/matrix.js +0 -18
- package/dist/modes/matrix.js.map +0 -1
- package/dist/modes/modes.d.ts +0 -33
- package/dist/modes/modes.d.ts.map +0 -1
- package/dist/modes/modes.js +0 -15
- package/dist/modes/modes.js.map +0 -1
- package/dist/modes/resolve.d.ts +0 -96
- package/dist/modes/resolve.d.ts.map +0 -1
- package/dist/modes/resolve.js +0 -48
- package/dist/modes/resolve.js.map +0 -1
- package/dist/observability/metrics.d.ts +0 -14
- package/dist/observability/metrics.d.ts.map +0 -1
- package/dist/observability/metrics.js +0 -18
- package/dist/observability/metrics.js.map +0 -1
- package/dist/packager/manifest.d.ts +0 -66
- package/dist/packager/manifest.d.ts.map +0 -1
- package/dist/packager/manifest.js +0 -94
- package/dist/packager/manifest.js.map +0 -1
- package/dist/packager/publish.d.ts +0 -51
- package/dist/packager/publish.d.ts.map +0 -1
- package/dist/packager/publish.js +0 -18
- package/dist/packager/publish.js.map +0 -1
- package/dist/packager/targetcli.d.ts +0 -7
- package/dist/packager/targetcli.d.ts.map +0 -1
- package/dist/packager/targetcli.js +0 -22
- package/dist/packager/targetcli.js.map +0 -1
- package/dist/persistence/adapter.d.ts +0 -5
- package/dist/persistence/adapter.d.ts.map +0 -1
- package/dist/persistence/adapter.js +0 -11
- package/dist/persistence/adapter.js.map +0 -1
- package/dist/persistence/drizzle.d.ts +0 -2
- package/dist/persistence/drizzle.d.ts.map +0 -1
- package/dist/persistence/drizzle.js +0 -12
- package/dist/persistence/drizzle.js.map +0 -1
- package/dist/persistence/memory.d.ts +0 -2
- package/dist/persistence/memory.d.ts.map +0 -1
- package/dist/persistence/memory.js +0 -27
- package/dist/persistence/memory.js.map +0 -1
- package/dist/persistence/migrations.d.ts +0 -19
- package/dist/persistence/migrations.d.ts.map +0 -1
- package/dist/persistence/migrations.js +0 -13
- package/dist/persistence/migrations.js.map +0 -1
- package/dist/persistence/prisma.d.ts +0 -2
- package/dist/persistence/prisma.d.ts.map +0 -1
- package/dist/persistence/prisma.js +0 -25
- package/dist/persistence/prisma.js.map +0 -1
- package/dist/persistence/schema.d.ts +0 -63
- package/dist/persistence/schema.d.ts.map +0 -1
- package/dist/persistence/schema.js +0 -28
- package/dist/persistence/schema.js.map +0 -1
- package/dist/persistence/sql.d.ts +0 -3
- package/dist/persistence/sql.d.ts.map +0 -1
- package/dist/persistence/sql.js +0 -37
- package/dist/persistence/sql.js.map +0 -1
- package/dist/protocol/blocks.d.ts +0 -10
- package/dist/protocol/blocks.d.ts.map +0 -1
- package/dist/protocol/blocks.js +0 -26
- package/dist/protocol/blocks.js.map +0 -1
- package/dist/protocol/json.d.ts +0 -6
- package/dist/protocol/json.d.ts.map +0 -1
- package/dist/protocol/json.js +0 -6
- package/dist/protocol/json.js.map +0 -1
- package/dist/protocol/ndjson.d.ts +0 -3
- package/dist/protocol/ndjson.d.ts.map +0 -1
- package/dist/protocol/ndjson.js +0 -20
- package/dist/protocol/ndjson.js.map +0 -1
- package/dist/protocol/sse.d.ts +0 -7
- package/dist/protocol/sse.d.ts.map +0 -1
- package/dist/protocol/sse.js +0 -25
- package/dist/protocol/sse.js.map +0 -1
- package/dist/proxy/pool.d.ts +0 -9
- package/dist/proxy/pool.d.ts.map +0 -1
- package/dist/proxy/pool.js +0 -27
- package/dist/proxy/pool.js.map +0 -1
- package/dist/queue/idempotency.d.ts +0 -10
- package/dist/queue/idempotency.d.ts.map +0 -1
- package/dist/queue/idempotency.js +0 -13
- package/dist/queue/idempotency.js.map +0 -1
- package/dist/queue/persistent.d.ts +0 -14
- package/dist/queue/persistent.d.ts.map +0 -1
- package/dist/queue/persistent.js +0 -66
- package/dist/queue/persistent.js.map +0 -1
- package/dist/queue/queue.d.ts +0 -7
- package/dist/queue/queue.d.ts.map +0 -1
- package/dist/queue/queue.js +0 -55
- package/dist/queue/queue.js.map +0 -1
- package/dist/queue/saga.d.ts +0 -5
- package/dist/queue/saga.d.ts.map +0 -1
- package/dist/queue/saga.js +0 -20
- package/dist/queue/saga.js.map +0 -1
- package/dist/release/assets.d.ts +0 -144
- package/dist/release/assets.d.ts.map +0 -1
- package/dist/release/assets.js +0 -157
- package/dist/release/assets.js.map +0 -1
- package/dist/release/evidence.d.ts +0 -92
- package/dist/release/evidence.d.ts.map +0 -1
- package/dist/release/evidence.js +0 -148
- package/dist/release/evidence.js.map +0 -1
- package/dist/release/verify.d.ts +0 -12
- package/dist/release/verify.d.ts.map +0 -1
- package/dist/release/verify.js +0 -112
- package/dist/release/verify.js.map +0 -1
- package/dist/runners/chain.d.ts +0 -125
- package/dist/runners/chain.d.ts.map +0 -1
- package/dist/runners/chain.js +0 -95
- package/dist/runners/chain.js.map +0 -1
- package/dist/runners/health.d.ts +0 -36
- package/dist/runners/health.d.ts.map +0 -1
- package/dist/runners/health.js +0 -26
- package/dist/runners/health.js.map +0 -1
- package/dist/runners/heartbeat.d.ts +0 -23
- package/dist/runners/heartbeat.d.ts.map +0 -1
- package/dist/runners/heartbeat.js +0 -29
- package/dist/runners/heartbeat.js.map +0 -1
- package/dist/runners/inprocess.d.ts +0 -17
- package/dist/runners/inprocess.d.ts.map +0 -1
- package/dist/runners/inprocess.js +0 -20
- package/dist/runners/inprocess.js.map +0 -1
- package/dist/runners/scheduler.d.ts +0 -5
- package/dist/runners/scheduler.d.ts.map +0 -1
- package/dist/runners/scheduler.js +0 -19
- package/dist/runners/scheduler.js.map +0 -1
- package/dist/runtime/abort.d.ts +0 -8
- package/dist/runtime/abort.d.ts.map +0 -1
- package/dist/runtime/abort.js +0 -13
- package/dist/runtime/abort.js.map +0 -1
- package/dist/runtime/compatibility.d.ts +0 -37
- package/dist/runtime/compatibility.d.ts.map +0 -1
- package/dist/runtime/compatibility.js +0 -10
- package/dist/runtime/compatibility.js.map +0 -1
- package/dist/runtime/detect.d.ts +0 -13
- package/dist/runtime/detect.d.ts.map +0 -1
- package/dist/runtime/detect.js +0 -18
- package/dist/runtime/detect.js.map +0 -1
- package/dist/runtime/engine.d.ts +0 -20
- package/dist/runtime/engine.d.ts.map +0 -1
- package/dist/runtime/engine.js +0 -61
- package/dist/runtime/engine.js.map +0 -1
- package/dist/runtime/retry.d.ts +0 -19
- package/dist/runtime/retry.d.ts.map +0 -1
- package/dist/runtime/retry.js +0 -54
- package/dist/runtime/retry.js.map +0 -1
- package/dist/runtime/worker.d.ts +0 -10
- package/dist/runtime/worker.d.ts.map +0 -1
- package/dist/runtime/worker.js +0 -25
- package/dist/runtime/worker.js.map +0 -1
- package/dist/scrape/cache.d.ts +0 -45
- package/dist/scrape/cache.d.ts.map +0 -1
- package/dist/scrape/cache.js +0 -45
- package/dist/scrape/cache.js.map +0 -1
- package/dist/scrape/crawl.d.ts +0 -47
- package/dist/scrape/crawl.d.ts.map +0 -1
- package/dist/scrape/crawl.js +0 -114
- package/dist/scrape/crawl.js.map +0 -1
- package/dist/scrape/extract.d.ts +0 -63
- package/dist/scrape/extract.d.ts.map +0 -1
- package/dist/scrape/extract.js +0 -47
- package/dist/scrape/extract.js.map +0 -1
- package/dist/scrape/normalize.d.ts +0 -52
- package/dist/scrape/normalize.d.ts.map +0 -1
- package/dist/scrape/normalize.js +0 -102
- package/dist/scrape/normalize.js.map +0 -1
- package/dist/scrape/robots.d.ts +0 -37
- package/dist/scrape/robots.d.ts.map +0 -1
- package/dist/scrape/robots.js +0 -71
- package/dist/scrape/robots.js.map +0 -1
- package/dist/scrape/schema.d.ts +0 -23
- package/dist/scrape/schema.d.ts.map +0 -1
- package/dist/scrape/schema.js +0 -92
- package/dist/scrape/schema.js.map +0 -1
- package/dist/scrape/scraper.d.ts +0 -6
- package/dist/scrape/scraper.d.ts.map +0 -1
- package/dist/scrape/scraper.js +0 -46
- package/dist/scrape/scraper.js.map +0 -1
- package/dist/scrape/semantic.d.ts +0 -25
- package/dist/scrape/semantic.d.ts.map +0 -1
- package/dist/scrape/semantic.js +0 -27
- package/dist/scrape/semantic.js.map +0 -1
- package/dist/server/node.d.ts +0 -7
- package/dist/server/node.d.ts.map +0 -1
- package/dist/server/node.js.map +0 -1
- package/dist/sessions/file.d.ts +0 -25
- package/dist/sessions/file.d.ts.map +0 -1
- package/dist/sessions/file.js +0 -13
- package/dist/sessions/file.js.map +0 -1
- package/dist/sessions/replay.d.ts +0 -9
- package/dist/sessions/replay.d.ts.map +0 -1
- package/dist/sessions/replay.js +0 -70
- package/dist/sessions/replay.js.map +0 -1
- package/dist/sessions/store.d.ts +0 -25
- package/dist/sessions/store.d.ts.map +0 -1
- package/dist/sessions/store.js +0 -13
- package/dist/sessions/store.js.map +0 -1
- package/dist/storage/adapter.d.ts +0 -5
- package/dist/storage/adapter.d.ts.map +0 -1
- package/dist/storage/adapter.js +0 -11
- package/dist/storage/adapter.js.map +0 -1
- package/dist/storage/cache.d.ts +0 -23
- package/dist/storage/cache.d.ts.map +0 -1
- package/dist/storage/cache.js +0 -79
- package/dist/storage/cache.js.map +0 -1
- package/dist/storage/checksum.d.ts +0 -3
- package/dist/storage/checksum.d.ts.map +0 -1
- package/dist/storage/checksum.js +0 -19
- package/dist/storage/checksum.js.map +0 -1
- package/dist/storage/chunked.d.ts +0 -21
- package/dist/storage/chunked.d.ts.map +0 -1
- package/dist/storage/chunked.js +0 -67
- package/dist/storage/chunked.js.map +0 -1
- package/dist/storage/content.d.ts +0 -24
- package/dist/storage/content.d.ts.map +0 -1
- package/dist/storage/content.js +0 -44
- package/dist/storage/content.js.map +0 -1
- package/dist/storage/filehosting.d.ts +0 -2
- package/dist/storage/filehosting.d.ts.map +0 -1
- package/dist/storage/filehosting.js +0 -24
- package/dist/storage/filehosting.js.map +0 -1
- package/dist/storage/githubcontents.d.ts +0 -2
- package/dist/storage/githubcontents.d.ts.map +0 -1
- package/dist/storage/githubcontents.js +0 -29
- package/dist/storage/githubcontents.js.map +0 -1
- package/dist/storage/index.d.ts +0 -12
- package/dist/storage/index.d.ts.map +0 -1
- package/dist/storage/index.js +0 -12
- package/dist/storage/index.js.map +0 -1
- package/dist/storage/local.d.ts +0 -2
- package/dist/storage/local.d.ts.map +0 -1
- package/dist/storage/local.js +0 -72
- package/dist/storage/local.js.map +0 -1
- package/dist/storage/memory.d.ts +0 -6
- package/dist/storage/memory.d.ts.map +0 -1
- package/dist/storage/memory.js +0 -36
- package/dist/storage/memory.js.map +0 -1
- package/dist/storage/pool.d.ts +0 -95
- package/dist/storage/pool.d.ts.map +0 -1
- package/dist/storage/pool.js +0 -202
- package/dist/storage/pool.js.map +0 -1
- package/dist/storage/s3compatible.d.ts +0 -3
- package/dist/storage/s3compatible.d.ts.map +0 -1
- package/dist/storage/s3compatible.js +0 -70
- package/dist/storage/s3compatible.js.map +0 -1
- package/dist/storage/sync.d.ts +0 -47
- package/dist/storage/sync.d.ts.map +0 -1
- package/dist/storage/sync.js +0 -75
- package/dist/storage/sync.js.map +0 -1
- package/dist/surfaces/adapters.d.ts +0 -97
- package/dist/surfaces/adapters.d.ts.map +0 -1
- package/dist/surfaces/adapters.js +0 -50
- package/dist/surfaces/adapters.js.map +0 -1
- package/dist/surfaces/controls.d.ts +0 -18
- package/dist/surfaces/controls.d.ts.map +0 -1
- package/dist/surfaces/controls.js +0 -45
- package/dist/surfaces/controls.js.map +0 -1
- package/dist/surfaces/manifest.d.ts +0 -68
- package/dist/surfaces/manifest.d.ts.map +0 -1
- package/dist/surfaces/manifest.js +0 -42
- package/dist/surfaces/manifest.js.map +0 -1
- package/dist/surfaces/n8n.d.ts +0 -25
- package/dist/surfaces/n8n.d.ts.map +0 -1
- package/dist/surfaces/n8n.js +0 -31
- package/dist/surfaces/n8n.js.map +0 -1
- package/dist/surfaces/operations.d.ts +0 -32
- package/dist/surfaces/operations.d.ts.map +0 -1
- package/dist/surfaces/operations.js +0 -53
- package/dist/surfaces/operations.js.map +0 -1
- package/dist/surfaces/requirements.d.ts +0 -29
- package/dist/surfaces/requirements.d.ts.map +0 -1
- package/dist/surfaces/requirements.js +0 -50
- package/dist/surfaces/requirements.js.map +0 -1
- package/dist/surfaces/targets.d.ts +0 -196
- package/dist/surfaces/targets.d.ts.map +0 -1
- package/dist/surfaces/targets.js +0 -27
- package/dist/surfaces/targets.js.map +0 -1
- package/dist/webhook/delivery.d.ts +0 -18
- package/dist/webhook/delivery.d.ts.map +0 -1
- package/dist/webhook/delivery.js +0 -36
- package/dist/webhook/delivery.js.map +0 -1
- package/dist/webhook/receiver.d.ts +0 -26
- package/dist/webhook/receiver.d.ts.map +0 -1
- package/dist/webhook/receiver.js +0 -24
- package/dist/webhook/receiver.js.map +0 -1
- package/dist/webhook/signature.d.ts +0 -3
- package/dist/webhook/signature.d.ts.map +0 -1
- package/dist/webhook/signature.js +0 -7
- package/dist/webhook/signature.js.map +0 -1
- package/dist/workflow/manifest.d.ts +0 -22
- package/dist/workflow/manifest.d.ts.map +0 -1
- package/dist/workflow/manifest.js +0 -21
- package/dist/workflow/manifest.js.map +0 -1
- package/dist/workflow/registry.d.ts +0 -7
- package/dist/workflow/registry.d.ts.map +0 -1
- package/dist/workflow/registry.js +0 -18
- package/dist/workflow/registry.js.map +0 -1
- package/dist/workflow/templates.d.ts +0 -6
- package/dist/workflow/templates.d.ts.map +0 -1
- package/dist/workflow/templates.js +0 -18
- package/dist/workflow/templates.js.map +0 -1
- package/dist/workflow/triggers.d.ts +0 -64
- package/dist/workflow/triggers.d.ts.map +0 -1
- package/dist/workflow/triggers.js +0 -99
- package/dist/workflow/triggers.js.map +0 -1
- package/docs/logs/.gitkeep +0 -0
- package/docs/plans/00.index.md +0 -50
- package/docs/plans/01.architecture.md +0 -86
- package/docs/plans/02.research.computer.use.md +0 -58
- package/docs/plans/03.research.captcha.bypass.md +0 -68
- package/docs/plans/04.research.sandbox.ai.md +0 -52
- package/docs/plans/05.capture.platform.md +0 -57
- package/docs/plans/06.dependencies.md +0 -97
- package/docs/plans/07.captcha.test.page.md +0 -41
- package/docs/plans/08.production.infra.md +0 -70
- package/docs/plans/09.database.schema.md +0 -121
- package/docs/plans/10.cloudinary.storage.md +0 -57
- package/docs/plans/11.movement.logs.json.md +0 -72
- package/docs/plans/12.research.atlas.agent.browser.md +0 -79
- package/docs/plans/13.research.anti.detection.md +0 -898
- package/docs/plans/14.research.proxy.md +0 -1495
- package/docs/plans/15.research.retry.rate.limit.md +0 -1958
- package/docs/plans/16.research.crawling.md +0 -1417
- package/docs/plans/17.research.caching.md +0 -1610
- package/docs/plans/18.research.content.extraction.md +0 -1952
- package/docs/plans/19.research.errors.events.md +0 -1523
- package/docs/plans/20.research.zod.validation.md +0 -1350
- package/docs/plans/21.research.batch.concurrency.md +0 -1888
- package/docs/plans/22.research.universal.runtime.md +0 -944
- package/docs/plans/23.research.ai.integration.md +0 -1465
- package/docs/plans/24.research.memory.persistence.md +0 -1979
- package/docs/plans/25.research.server.api.md +0 -342
- package/docs/plans/26.research.compilation.md +0 -249
- package/docs/plans/27.research.html.parsing.md +0 -251
- package/docs/plans/28.action.plan.md +0 -50
- package/docs/plans/29.api.reference.md +0 -174
- package/docs/plans/30.architecture.plan.md +0 -94
- package/docs/plans/31.auditoria.dados.md +0 -163
- package/docs/plans/32.bots.automacao.computacional.md +0 -214
- package/docs/plans/33.bots.codigo.revisao.md +0 -220
- package/docs/plans/34.bots.seguranca.cicd.md +0 -366
- package/docs/plans/35.comparativo.concorrencia.md +0 -464
- package/docs/plans/36.computational.memory.md +0 -340
- package/docs/plans/37.deploystrategy.md +0 -394
- package/docs/plans/38.flow.md +0 -155
- package/docs/plans/39.multi.platform.bot.md +0 -252
- package/docs/plans/40.npm.publish.md +0 -250
- package/docs/plans/41.o.que.falta.md +0 -407
- package/docs/plans/42.pesquisa.concorrencia.md +0 -721
- package/docs/plans/43.plan.universal.architecture.md +0 -496
- package/docs/plans/44.reference.md +0 -100
- package/docs/plans/45.robotarchitecture.md +0 -237
- package/docs/plans/46.scdnintegration.md +0 -284
- package/docs/plans/47.multiforge.readme.md +0 -129
- package/docs/plans/48.theory.v4.repo.os.md +0 -152
- package/docs/plans/49.third.party.infra.md +0 -12
- package/docs/plans/50.file.as.compute.md +0 -39
- package/docs/plans/51.architecture.virtual.processor.md +0 -80
- package/docs/plans/52.manifesto.v8.md +0 -11
- package/docs/plans/58.cdn.list.md +0 -23
- package/docs/plans/59.sql.frameworks.md +0 -33
- package/docs/plans/60.sql.thirdparty.md +0 -26
- package/docs/plans/61.objective.multiforge.md +0 -63
- package/docs/plans/62.huggingface.upload.md +0 -26
- package/docs/plans/63.kaggle.upload.md +0 -24
- package/docs/plans/64.npm.storage.md +0 -30
- package/docs/plans/65.rclone.terabox.md +0 -32
- package/docs/plans/66.buckets.and.models.todo.md +0 -14
- package/docs/plans/67.database.todo.md +0 -13
- package/docs/plans/68.deploy.packages.todo.md +0 -12
- package/docs/plans/69.report.human.operator.md +0 -133
- package/docs/plans/70.report.brain2qwerty.ems.md +0 -135
- package/docs/plans/71.report.hd.infinito.vram.md +0 -155
- package/docs/plans/72.plan.hd.infinito.node.md +0 -146
- package/docs/plans/73.plan.scifi.repos.md +0 -125
- package/docs/plans/74.000.manifesto.v8.flat.2..md +0 -11
- package/docs/plans/README.md +0 -489
- package/docs/plans/aggregate_platforms.mjs +0 -146
- package/docs/plans/examplesession.json +0 -36
- package/docs/plans/missing-facts.md +0 -192
- package/docs/plans/models.md +0 -64
- package/docs/plans/organize.cjs +0 -270
- package/docs/plans/platforms.md +0 -2887
- package/docs/plans/sites.md +0 -31322
- package/docs/sources/farm.py +0 -117
- package/docs/sources/html/saddle1.html +0 -132
- package/docs/sources/html/saddle2.html +0 -157
- package/docs/sources/html/saddle3.html +0 -119
- package/docs/sources/html/saddle4.html +0 -144
- package/docs/sources/html/saddle5.html +0 -72
- package/docs/sources/html/saddle6.html +0 -171
- package/docs/sources/html/saddle7.html +0 -236
- package/docs/sources/saddle.ts +0 -74
- package/docs/sources/schema.prisma +0 -88
- package/docs/sources/script.sh +0 -64
- package/docs/sources/workflows.yml +0 -458
- package/docs/talks1/_body.txt +0 -14
- package/docs/talks1/_index.md +0 -15
- package/docs/talks1/_screenshot.png +0 -0
- package/docs/talks1/assistant-01.md +0 -5
- package/docs/talks1/assistant-02.md +0 -5
- package/docs/talks1/assistant-03.md +0 -531
- package/docs/talks1/assistant-04.md +0 -26
- package/docs/talks1/assistant-05.md +0 -774
- package/docs/talks1/assistant-06.md +0 -1718
- package/docs/talks1/scrape-share.cjs +0 -185
- package/docs/talks1/scrape-share.ts +0 -183
- package/docs/talks1/user-01.md +0 -3
- package/docs/talks1/user-02.md +0 -3
- package/docs/talks1/user-03.md +0 -88
- package/docs/talks1/user-04.md +0 -3
- package/docs/talks1/user-05.md +0 -3
- package/docs/talks1/user-06.md +0 -88
- package/docs/talks1/user-07.md +0 -88
- package/docs/talks2/_body.txt +0 -14
- package/docs/talks2/_index.md +0 -16
- package/docs/talks2/_screenshot.png +0 -0
- package/docs/talks2/assistant-01.md +0 -5
- package/docs/talks2/assistant-02.md +0 -5
- package/docs/talks2/assistant-03.md +0 -424
- package/docs/talks2/assistant-04.md +0 -598
- package/docs/talks2/assistant-05.md +0 -1280
- package/docs/talks2/assistant-06.md +0 -1227
- package/docs/talks2/assistant-07.md +0 -1252
- package/docs/talks2/user-01.md +0 -3
- package/docs/talks2/user-02.md +0 -3
- package/docs/talks2/user-03.md +0 -88
- package/docs/talks2/user-04.md +0 -88
- package/docs/talks2/user-05.md +0 -88
- package/docs/talks2/user-06.md +0 -88
- package/docs/talks2/user-07.md +0 -3
- package/docs/talks3/_body.txt +0 -467
- package/docs/talks3/_index.md +0 -10
- package/docs/talks3/_screenshot.png +0 -0
- package/docs/talks3/assistant-01.md +0 -417
- package/docs/talks3/assistant-02.md +0 -417
- package/docs/talks3/assistant-03.md +0 -29
- package/docs/talks3/assistant-04.md +0 -727
- package/docs/talks3/user-01.md +0 -88
- package/docs/talks3/user-02.md +0 -88
- package/docs/talks3/user-03.md +0 -3
- package/docs/talks3/user-04.md +0 -3
- package/docs/talks4/_body.txt +0 -14
- package/docs/talks4/_index.md +0 -12
- package/docs/talks4/_screenshot.png +0 -0
- package/docs/talks4/assistant-01.md +0 -5
- package/docs/talks4/assistant-02.md +0 -5
- package/docs/talks4/assistant-03.md +0 -35
- package/docs/talks4/assistant-04.md +0 -512
- package/docs/talks4/assistant-05.md +0 -599
- package/docs/talks4/user-01.md +0 -3
- package/docs/talks4/user-02.md +0 -3
- package/docs/talks4/user-03.md +0 -88
- package/docs/talks4/user-04.md +0 -88
- package/docs/talks4/user-05.md +0 -7
- package/docs/talks5/_body.txt +0 -14
- package/docs/talks5/_index.md +0 -13
- package/docs/talks5/_screenshot.png +0 -0
- package/docs/talks5/assistant-01.md +0 -5
- package/docs/talks5/assistant-02.md +0 -5
- package/docs/talks5/assistant-03.md +0 -690
- package/docs/talks5/assistant-04.md +0 -758
- package/docs/talks5/assistant-05.md +0 -974
- package/docs/talks5/user-01.md +0 -3
- package/docs/talks5/user-02.md +0 -3
- package/docs/talks5/user-03.md +0 -105
- package/docs/talks5/user-04.md +0 -105
- package/docs/talks5/user-05.md +0 -63
- package/docs/talks5/user-06.md +0 -105
- package/docs/talks6/_body.txt +0 -14
- package/docs/talks6/_index.md +0 -9
- package/docs/talks6/_screenshot.png +0 -0
- package/docs/talks6/assistant-01.md +0 -5
- package/docs/talks6/assistant-02.md +0 -5
- package/docs/talks6/assistant-03.md +0 -1499
- package/docs/talks6/user-01.md +0 -3
- package/docs/talks6/user-02.md +0 -3
- package/docs/talks6/user-03.md +0 -88
- package/docs/talks6/user-04.md +0 -88
- package/docs/talks7/_body.txt +0 -14
- package/docs/talks7/_index.md +0 -10
- package/docs/talks7/_screenshot.png +0 -0
- package/docs/talks7/assistant-01.md +0 -5
- package/docs/talks7/assistant-02.md +0 -5
- package/docs/talks7/assistant-03.md +0 -523
- package/docs/talks7/assistant-04.md +0 -617
- package/docs/talks7/user-01.md +0 -3
- package/docs/talks7/user-02.md +0 -3
- package/docs/talks7/user-03.md +0 -105
- package/docs/talks7/user-04.md +0 -67
- package/docs/talks8/conversa1.txt +0 -1322
- package/docs/talks8/conversa2.txt +0 -237
- package/docs/talks9/Beyond the Obvious_ 50 Plataformas Auto-Hospedadas de Forja de C/303/263digo para Al/303/251m de Gitea e GitLab.md" +0 -174
- package/docs/talks9/De NPM a Multi-Linguagem_ Uma Arquitetura T/303/251cnica para a Execu/303/247/303/243o Integrada de C/303/263digo no Ecossistema Node.js.md" +0 -59
- package/docs/talks9/De NPM a VMs Virtuais_ Uma An/303/241lise Arquitet/303/264nica para a Realiza/303/247/303/243o do Ciclo de Vida do Projeto SADDLE.md" +0 -91
- package/docs/talks9/Mapeamento da Engrenagem Computacional_ Uma Arquitetura para Execu/303/247/303/243o Isolada e Persist/303/252ncia em Ambientes Distribu/303/255dos.md" +0 -116
- package/docs/talks9/O Cen/303/241rio Pr/303/241tico do SADDLE_ Uma An/303/241lise de Viabilidade e Modelo de Ciclo de Vida Integrado.md" +0 -128
- package/docs/talks9/README (2).md +0 -489
- package/docs/talks9/README.md +0 -198
- package/docs/talks9/Viabilidade do Saddle_ Uma An/303/241lise T/303/251cnica da Transforma/303/247/303/243o de Armazenamento Remoto em Mem/303/263ria Computacional.md" +0 -80
- package/docs/talks9/conversa.txt +0 -544
- package/docs/talks9/other (2).md +0 -39
- package/docs/talks9/other.md +0 -57
- package/docs/talks9/outro.txt +0 -24
- /package/{extension/README.md → docs/extension.md} +0 -0
|
@@ -1,251 +0,0 @@
|
|
|
1
|
-
# Pesquisa: HTML Parsing e Extração (2026)
|
|
2
|
-
|
|
3
|
-
## 1. Parser Comparison
|
|
4
|
-
|
|
5
|
-
| Feature | **Cheerio** | **jsdom** | **node-html-parser** | **parse5** |
|
|
6
|
-
|---------|-------------|-----------|---------------------|------------|
|
|
7
|
-
| Weekly downloads | ~10M | ~8M | ~300K+ | ~235M (indirect) |
|
|
8
|
-
| Memory per page | ~1MB | ~50MB | ~1MB | <1MB |
|
|
9
|
-
| Startup time | Instant | Fast (~100ms) | Instant | Instant |
|
|
10
|
-
| API style | jQuery-like `$()` | Standard DOM `querySelector` | Simple DOM traversal | AST methods |
|
|
11
|
-
| Script execution | No | Yes (limited) | No | No |
|
|
12
|
-
| CSS selector support | Yes (css-select) | Yes (nwsapi) | Yes (basic) | No (AST only) |
|
|
13
|
-
| HTML5 spec compliance | Good | Good | Basic | Full |
|
|
14
|
-
| Malformed HTML | Good | Good | Basic | Excellent |
|
|
15
|
-
| Best for | Web scraping, HTML transform | Testing, DOM APIs | High-throughput | Build tools |
|
|
16
|
-
|
|
17
|
-
### Decision Tree
|
|
18
|
-
|
|
19
|
-
```
|
|
20
|
-
Is the content rendered by JavaScript (SPA/React/Vue)?
|
|
21
|
-
Yes → Use Playwright (not here)
|
|
22
|
-
No (static HTML):
|
|
23
|
-
Do you need DOM APIs (addEventListener, classList)?
|
|
24
|
-
Yes → jsdom
|
|
25
|
-
No → Do you need max throughput?
|
|
26
|
-
Yes → node-html-parser or parse5
|
|
27
|
-
No → Cheerio (best developer experience)
|
|
28
|
-
```
|
|
29
|
-
|
|
30
|
-
## 2. HTML Entities
|
|
31
|
-
|
|
32
|
-
| Library | Weekly Downloads | Performance (ops/s) | Standards |
|
|
33
|
-
|---------|-----------------|---------------------|-----------|
|
|
34
|
-
| **entities** | ~235M | 5,838,416 (fastest) | XML, HTML4, HTML5 |
|
|
35
|
-
| **html-entities** | ~31M | 2,919,637 | XML, HTML4, HTML5 |
|
|
36
|
-
| **he** | ~15M | 2,318,438 | HTML5 only |
|
|
37
|
-
|
|
38
|
-
```typescript
|
|
39
|
-
import * as entities from "entities";
|
|
40
|
-
entities.decodeHTML("asdf & ÿ ü '"); // "asdf & ÿ ü '"
|
|
41
|
-
```
|
|
42
|
-
|
|
43
|
-
## 3. CSS Selector Engine: css-select
|
|
44
|
-
|
|
45
|
-
**Version:** 7.0.0 (March 2026)
|
|
46
|
-
|
|
47
|
-
```typescript
|
|
48
|
-
import CSSselect from "css-select";
|
|
49
|
-
const results = CSSselect.selectAll('.article > h2:first-child', elements);
|
|
50
|
-
```
|
|
51
|
-
|
|
52
|
-
Supports: `:scope`, `:is()`, `:where()`, `:has()`, attribute selectors, sibling combinators.
|
|
53
|
-
|
|
54
|
-
## 4. Structured Data Extraction
|
|
55
|
-
|
|
56
|
-
### Cheerio `$.extract()` (Declarative)
|
|
57
|
-
|
|
58
|
-
```typescript
|
|
59
|
-
const $ = await cheerio.fromURL('https://example.com');
|
|
60
|
-
const data = $.extract({
|
|
61
|
-
title: 'title',
|
|
62
|
-
posts: [{
|
|
63
|
-
selector: '.post',
|
|
64
|
-
value: {
|
|
65
|
-
title: '.post-title',
|
|
66
|
-
link: { selector: 'a', value: 'href' },
|
|
67
|
-
date: { selector: 'time', value: 'datetime' },
|
|
68
|
-
tags: ['.tag'],
|
|
69
|
-
}
|
|
70
|
-
}]
|
|
71
|
-
});
|
|
72
|
-
```
|
|
73
|
-
|
|
74
|
-
### Extraction Priority Order
|
|
75
|
-
|
|
76
|
-
1. **JSON-LD** — `<script type="application/ld+json">`
|
|
77
|
-
2. **Microdata** — `itemscope`, `itemprop` attributes
|
|
78
|
-
3. **OpenGraph** — `og:` meta tags
|
|
79
|
-
4. **data-* attributes** — developer hooks
|
|
80
|
-
5. **CSS selectors** — last resort
|
|
81
|
-
|
|
82
|
-
```typescript
|
|
83
|
-
// JSON-LD extraction
|
|
84
|
-
$('script[type="application/ld+json"]').each((_, el) => {
|
|
85
|
-
try {
|
|
86
|
-
const data = JSON.parse($(el).html());
|
|
87
|
-
if (data['@type'] === 'Product') {
|
|
88
|
-
console.log(data.name, data.offers?.price);
|
|
89
|
-
}
|
|
90
|
-
} catch {}
|
|
91
|
-
});
|
|
92
|
-
```
|
|
93
|
-
|
|
94
|
-
## 5. Malformed HTML Handling
|
|
95
|
-
|
|
96
|
-
### htmlparser2 (Forgiving)
|
|
97
|
-
|
|
98
|
-
```typescript
|
|
99
|
-
import htmlparser2 from "htmlparser2";
|
|
100
|
-
const parser = new htmlparser2.Parser({
|
|
101
|
-
onopentag(name, attribs) { /* ... */ },
|
|
102
|
-
ontext(text) { /* ... */ },
|
|
103
|
-
onclosetag(tagname) { /* ... */ },
|
|
104
|
-
}, {
|
|
105
|
-
decodeEntities: true,
|
|
106
|
-
xmlMode: false, // HTML mode (forgiving)
|
|
107
|
-
});
|
|
108
|
-
```
|
|
109
|
-
|
|
110
|
-
### tag-soup (Lightweight, 20KB gzipped)
|
|
111
|
-
|
|
112
|
-
```typescript
|
|
113
|
-
import { createDOMParser } from "tag-soup";
|
|
114
|
-
const parser = createDOMParser({
|
|
115
|
-
areUnbalancedEndTagsIgnored: true,
|
|
116
|
-
areUnbalancedStartTagsImplicitlyClosed: true,
|
|
117
|
-
});
|
|
118
|
-
```
|
|
119
|
-
|
|
120
|
-
## 6. HTML Sanitization
|
|
121
|
-
|
|
122
|
-
### sanitize-html (Server-side, ~8.6M weekly downloads)
|
|
123
|
-
|
|
124
|
-
```typescript
|
|
125
|
-
import sanitizeHtml from "sanitize-html";
|
|
126
|
-
const clean = sanitizeHtml(dirty, {
|
|
127
|
-
allowedTags: ['b', 'i', 'em', 'strong', 'a', 'p', 'ul', 'ol', 'li'],
|
|
128
|
-
allowedAttributes: { 'a': ['href', 'title'] },
|
|
129
|
-
transformTags: {
|
|
130
|
-
'a': sanitizeHtml.simpleTransform('a', { rel: 'noopener noreferrer' })
|
|
131
|
-
}
|
|
132
|
-
});
|
|
133
|
-
```
|
|
134
|
-
|
|
135
|
-
### DOMPurify (Browser-side, ~40M weekly downloads)
|
|
136
|
-
|
|
137
|
-
```typescript
|
|
138
|
-
import DOMPurify from "dompurify";
|
|
139
|
-
const clean = DOMPurify.sanitize('<b>hello</b><script>alert(1)</script>');
|
|
140
|
-
// Result: '<b>hello</b>'
|
|
141
|
-
```
|
|
142
|
-
|
|
143
|
-
**Recommendation:** sanitize-html for server, DOMPurify for browser.
|
|
144
|
-
|
|
145
|
-
## 7. Text Extraction with Formatting
|
|
146
|
-
|
|
147
|
-
### Formatting-Preserving Walk
|
|
148
|
-
|
|
149
|
-
```typescript
|
|
150
|
-
function extractFormattedText($: cheerio.CheerioAPI, element: cheerio.Element): string {
|
|
151
|
-
let result = '';
|
|
152
|
-
$(element).contents().each((_, node) => {
|
|
153
|
-
if (node.type === 'text') {
|
|
154
|
-
result += node.data;
|
|
155
|
-
} else if (node.type === 'tag') {
|
|
156
|
-
switch (node.name) {
|
|
157
|
-
case 'br': result += '\n'; break;
|
|
158
|
-
case 'p': result += extractFormattedText($, node) + '\n\n'; break;
|
|
159
|
-
case 'strong': case 'b': result += `**${extractFormattedText($, node)}**`; break;
|
|
160
|
-
case 'em': case 'i': result += `*${extractFormattedText($, node)}*`; break;
|
|
161
|
-
case 'h1': result += `# ${extractFormattedText($, node)}\n\n`; break;
|
|
162
|
-
case 'h2': result += `## ${extractFormattedText($, node)}\n\n`; break;
|
|
163
|
-
case 'li': result += `- ${extractFormattedText($, node)}\n`; break;
|
|
164
|
-
default: result += extractFormattedText($, node);
|
|
165
|
-
}
|
|
166
|
-
}
|
|
167
|
-
});
|
|
168
|
-
return result;
|
|
169
|
-
}
|
|
170
|
-
```
|
|
171
|
-
|
|
172
|
-
## 8. HTML-to-Markdown
|
|
173
|
-
|
|
174
|
-
### Performance Comparison (166KB Wikipedia page)
|
|
175
|
-
|
|
176
|
-
| Package | Time | Speed vs Turndown |
|
|
177
|
-
|---------|------|-------------------|
|
|
178
|
-
| **mdream** (Rust) | 0.34ms | 33x faster |
|
|
179
|
-
| **mdream** (JS) | 3.26ms | 3.5x faster |
|
|
180
|
-
| **Turndown** | 11.26ms | baseline |
|
|
181
|
-
| **node-html-markdown** | 14.31ms | 1.3x slower |
|
|
182
|
-
|
|
183
|
-
### Turndown (Industry Standard, 4.8M weekly downloads)
|
|
184
|
-
|
|
185
|
-
```typescript
|
|
186
|
-
import TurndownService from 'turndown';
|
|
187
|
-
import turndownPluginGfm from 'turndown-plugin-gfm';
|
|
188
|
-
|
|
189
|
-
const turndownService = new TurndownService({
|
|
190
|
-
headingStyle: 'atx',
|
|
191
|
-
codeBlockStyle: 'fenced',
|
|
192
|
-
bulletListMarker: '-',
|
|
193
|
-
});
|
|
194
|
-
turndownService.use(turndownPluginGfm.gfm);
|
|
195
|
-
const markdown = turndownService.turndown(html);
|
|
196
|
-
```
|
|
197
|
-
|
|
198
|
-
### html-to-text (Plain Text, v10.0.0)
|
|
199
|
-
|
|
200
|
-
```typescript
|
|
201
|
-
import { convert } from 'html-to-text';
|
|
202
|
-
const text = convert(html, {
|
|
203
|
-
wordWrap: 80,
|
|
204
|
-
tables: true,
|
|
205
|
-
links: { hideLinkUrls: true },
|
|
206
|
-
});
|
|
207
|
-
```
|
|
208
|
-
|
|
209
|
-
## 9. Table Parsing
|
|
210
|
-
|
|
211
|
-
### cheerio-tableparser (colspan/rowspan support)
|
|
212
|
-
|
|
213
|
-
```typescript
|
|
214
|
-
import cheerioTableparser from "cheerio-tableparser";
|
|
215
|
-
cheerioTableparser($);
|
|
216
|
-
const data = $("table").parsetable(true, true, true);
|
|
217
|
-
// dupCols, dupRows, textMode
|
|
218
|
-
```
|
|
219
|
-
|
|
220
|
-
## 10. Custom Extraction Rules
|
|
221
|
-
|
|
222
|
-
### Schema-Based Pattern
|
|
223
|
-
|
|
224
|
-
```typescript
|
|
225
|
-
const schema = {
|
|
226
|
-
title: { selector: 'h1', type: 'text' },
|
|
227
|
-
price: {
|
|
228
|
-
selector: '.price',
|
|
229
|
-
type: 'text',
|
|
230
|
-
transform: (v: string) => parseFloat(v.replace(/[^0-9.]/g, ''))
|
|
231
|
-
},
|
|
232
|
-
tags: { selector: '.tag', type: 'text', multiple: true },
|
|
233
|
-
links: { selector: 'a', type: 'attribute', attribute: 'href', multiple: true },
|
|
234
|
-
};
|
|
235
|
-
```
|
|
236
|
-
|
|
237
|
-
### Recommended Stack (2026)
|
|
238
|
-
|
|
239
|
-
| Task | Package |
|
|
240
|
-
|------|---------|
|
|
241
|
-
| Static HTML parsing | **Cheerio** (default) |
|
|
242
|
-
| Full DOM APIs | **jsdom** |
|
|
243
|
-
| High-throughput parsing | **node-html-parser** |
|
|
244
|
-
| HTML entity encoding | **entities** (fastest) |
|
|
245
|
-
| HTML sanitization (server) | **sanitize-html** |
|
|
246
|
-
| HTML sanitization (browser) | **DOMPurify** |
|
|
247
|
-
| HTML to Markdown | **Turndown** (plugins) or **mdream** (speed) |
|
|
248
|
-
| HTML to plain text | **html-to-text** |
|
|
249
|
-
| Article extraction | **@mozilla/readability** |
|
|
250
|
-
| Malformed HTML | **htmlparser2** |
|
|
251
|
-
| Structured extraction | Cheerio `$.extract()` |
|
|
@@ -1,50 +0,0 @@
|
|
|
1
|
-
# Action Plan
|
|
2
|
-
|
|
3
|
-
## Phase: planning + research done
|
|
4
|
-
- [x] Folder structure (mirrors `cli`/`debonair`): `docs/plans`, `docs/talks`, `docs/logs`, `tests/{examples,output,scripts}`, `web`, `.github/workflows`.
|
|
5
|
-
- [x] Config files: `package.json` (`@wenathlan/saddle`, 65 deps), `tsconfig.json`, `biome.json`, `vitest.config.ts`, `.github/workflows/saddle-tests.yml`, `.gitignore`, `.npmrc`, `.nvmrc`, `README.md`.
|
|
6
|
-
- [x] Research done (computer use, hcaptcha bypass, vercel sandbox, atlas agent browser).
|
|
7
|
-
- [x] Planning docs in `docs/plans/` (01 to 12 + index).
|
|
8
|
-
- [x] Applied skill arch: no `src/`, no vercel/netlify functions, mysql2, socket, no localhost, lowercase files, production = `web/`.
|
|
9
|
-
|
|
10
|
-
## Next phase: implementation (waits for user approval)
|
|
11
|
-
The user stated: "when i give you the go ahead to build the platform". So no code is written now (`web/` logic, db, etc).
|
|
12
|
-
|
|
13
|
-
### Step 1 — Capture platform (after approval)
|
|
14
|
-
- Root files in `web/`: `humancursor.js`, `trajectory.js`, `fingerprint.js`, `recorder.js`, `replay.js`, `runcapture.js`, `capture.js`, `index.html`.
|
|
15
|
-
- Export to `docs/logs/<session>.json` (format in `11-movement-logs-json.md`).
|
|
16
|
-
|
|
17
|
-
### Step 2 — Captcha test page
|
|
18
|
-
- `tests/examples/hcaptchatest.html` (local) + real sites (cloudflare/google/hcaptcha).
|
|
19
|
-
- `tests/scripts/` with detect -> solve -> record -> assert.
|
|
20
|
-
- Evidence in `tests/output/`.
|
|
21
|
-
|
|
22
|
-
### Step 3 — Production infra
|
|
23
|
-
- `web/` with open node server (hono/express): routes `sessions`, `events`, `replays`, `captcha`.
|
|
24
|
-
- Db: drizzle + mysql2 (and prisma schema). Migrations in deploy.
|
|
25
|
-
- Cloudinary for assets/replays.
|
|
26
|
-
|
|
27
|
-
### Step 4 — Sandbox
|
|
28
|
-
- `@vercel/sandbox` for isolated agent execution.
|
|
29
|
-
- Agent https post/get requests to the deployed site.
|
|
30
|
-
|
|
31
|
-
### Step 5 — Tests
|
|
32
|
-
- `tests/*.test.ts` (vitest) for trajectory, recorder, schema, cloudinary helper.
|
|
33
|
-
- Example already at `tests/capture.test.ts`.
|
|
34
|
-
|
|
35
|
-
## Architecture constraints (skill arch)
|
|
36
|
-
- No `src/`. Root based in `web/`.
|
|
37
|
-
- No vercel functions. No netlify functions.
|
|
38
|
-
- Data: prisma, drizzle, mysql2, socket.
|
|
39
|
-
- No localhost. Host parametrized. Ports randomized then locked.
|
|
40
|
-
- Files lowercase. No underscore. No hyphen. English. Jsdoc.
|
|
41
|
-
|
|
42
|
-
## Dependencies registered
|
|
43
|
-
See `06-dependencies.md` (65 packages). Install with `npm install` when implementation starts.
|
|
44
|
-
|
|
45
|
-
## Acceptance criteria (defined by user)
|
|
46
|
-
- Capture movement (virtual mouse, virtual arrow, click, rotation, coordinates) in brave.
|
|
47
|
-
- Export json logs to `docs/logs/`.
|
|
48
|
-
- Open test page in brave and face hcaptcha/cloudflare/recaptcha.
|
|
49
|
-
- Production backend deployed (vercel/netlify) with db (drizzle/prisma/mysql2) + cloudinary.
|
|
50
|
-
- Agent https post/get requests to the deployed site.
|
|
@@ -1,174 +0,0 @@
|
|
|
1
|
-
# API Reference
|
|
2
|
-
|
|
3
|
-
## Core Functions
|
|
4
|
-
|
|
5
|
-
### `scrapeUrl(url, options?)`
|
|
6
|
-
Scrape a URL using Playwright.
|
|
7
|
-
```ts
|
|
8
|
-
const result = await scrapeUrl('https://example.com', {
|
|
9
|
-
scroll: true, // Scroll to bottom before extracting
|
|
10
|
-
extractLinks: true, // Extract all links
|
|
11
|
-
extractImages: true, // Extract all images
|
|
12
|
-
extractTables: true, // Extract all tables
|
|
13
|
-
readable: false, // Use readable mode
|
|
14
|
-
screenshot: false, // Take a screenshot
|
|
15
|
-
headless: true, // Run browser headless
|
|
16
|
-
timeout: 30000, // Navigation timeout
|
|
17
|
-
});
|
|
18
|
-
```
|
|
19
|
-
|
|
20
|
-
### `scrapeHtml(html, options?)`
|
|
21
|
-
Scrape raw HTML string without a browser.
|
|
22
|
-
```ts
|
|
23
|
-
const result = await scrapeHtml('<html>...</html>', { extractTables: true });
|
|
24
|
-
```
|
|
25
|
-
|
|
26
|
-
### `scrapeWithBrowser(browser, url, options?)`
|
|
27
|
-
Reuse an existing AgentBrowser instance.
|
|
28
|
-
```ts
|
|
29
|
-
const browser = new AgentBrowser();
|
|
30
|
-
await browser.launch('chromium');
|
|
31
|
-
const result = await scrapeWithBrowser(browser, 'https://example.com');
|
|
32
|
-
```
|
|
33
|
-
|
|
34
|
-
### `extractContent(html, options?)`
|
|
35
|
-
Extract structured content from HTML.
|
|
36
|
-
```ts
|
|
37
|
-
const content = await extractContent(html, {
|
|
38
|
-
extractLinks: true,
|
|
39
|
-
extractImages: true,
|
|
40
|
-
extractTables: true,
|
|
41
|
-
readable: false,
|
|
42
|
-
});
|
|
43
|
-
```
|
|
44
|
-
Returns `ExtractedContent` with: `title`, `author`, `text`, `links[]`, `images[]`, `tables[]`, `metadata`.
|
|
45
|
-
|
|
46
|
-
### `serializeResult(result, options)`
|
|
47
|
-
Serialize a ScrapeResult to target format.
|
|
48
|
-
```ts
|
|
49
|
-
const output = serializeResult(result, { format: 'markdown' });
|
|
50
|
-
const json = serializeResult(result, { format: 'json', pretty: true });
|
|
51
|
-
```
|
|
52
|
-
Returns `SerializedOutput` with: `content`, `format`, `extension`.
|
|
53
|
-
|
|
54
|
-
### `serializeHtml(html, options)`
|
|
55
|
-
Serialize raw HTML directly to target format.
|
|
56
|
-
```ts
|
|
57
|
-
const md = serializeHtml('<h1>Hello</h1>', { format: 'markdown' });
|
|
58
|
-
```
|
|
59
|
-
|
|
60
|
-
### `formatForAgent(result, options?)`
|
|
61
|
-
Format scraped content for AI agent consumption.
|
|
62
|
-
```ts
|
|
63
|
-
const agent = formatForAgent(result, {
|
|
64
|
-
maxChunkSize: 4000, // Max tokens per chunk
|
|
65
|
-
includeSummary: true,
|
|
66
|
-
includeKeyPoints: true,
|
|
67
|
-
includeRelevantUrls: true,
|
|
68
|
-
includeMetadata: true,
|
|
69
|
-
});
|
|
70
|
-
```
|
|
71
|
-
Returns `AgentOutput` with: `summary`, `keyPoints`, `content`, `relevantUrls`, `chunks[]`, `tokenCount`.
|
|
72
|
-
|
|
73
|
-
## Classes
|
|
74
|
-
|
|
75
|
-
### `AgentBrowser`
|
|
76
|
-
Playwright browser automation manager.
|
|
77
|
-
|
|
78
|
-
```ts
|
|
79
|
-
const browser = new AgentBrowser({
|
|
80
|
-
headless: true,
|
|
81
|
-
stealth: true, // Enable stealth mode
|
|
82
|
-
adBlock: true, // Block ads and trackers
|
|
83
|
-
viewport: { width: 1280, height: 720 },
|
|
84
|
-
userAgent: 'custom', // Custom UA string
|
|
85
|
-
});
|
|
86
|
-
|
|
87
|
-
await browser.launch('chromium');
|
|
88
|
-
await browser.navigate(url, { waitUntil: 'networkidle' });
|
|
89
|
-
await browser.click(selector);
|
|
90
|
-
await browser.type(selector, text);
|
|
91
|
-
await browser.screenshot({ fullPage: true });
|
|
92
|
-
await browser.html(); // Get page HTML
|
|
93
|
-
await browser.text(); // Get page text
|
|
94
|
-
await browser.title(); // Get page title
|
|
95
|
-
await browser.evaluate(fn); // Run JS in page
|
|
96
|
-
await browser.scrollToBottom({ step: 500, delay: 100 });
|
|
97
|
-
await browser.executeCommands([ // Chain commands
|
|
98
|
-
{ action: 'goto', args: { url } },
|
|
99
|
-
{ action: 'extract' },
|
|
100
|
-
{ action: 'screenshot' },
|
|
101
|
-
]);
|
|
102
|
-
await browser.close();
|
|
103
|
-
```
|
|
104
|
-
|
|
105
|
-
### `PygameRenderer`
|
|
106
|
-
Bridge to Python/Pygame for rendering.
|
|
107
|
-
|
|
108
|
-
```ts
|
|
109
|
-
const renderer = new PygameRenderer({ pythonPath: 'python3' });
|
|
110
|
-
await renderer.renderScreenshot(screenshotBuffer, 'output.png');
|
|
111
|
-
await renderer.renderDoom(frameBuffer, 'doom-frame.png');
|
|
112
|
-
renderer.close();
|
|
113
|
-
```
|
|
114
|
-
|
|
115
|
-
## CLI
|
|
116
|
-
|
|
117
|
-
```
|
|
118
|
-
Usage: webscrape <url> [options]
|
|
119
|
-
|
|
120
|
-
Arguments:
|
|
121
|
-
url URL to scrape
|
|
122
|
-
|
|
123
|
-
Options:
|
|
124
|
-
-f, --format <fmt> Output format: markdown, json, xml, redis, text (default: markdown)
|
|
125
|
-
-o, --output <file> Output file
|
|
126
|
-
--pretty Pretty-print JSON/XML output
|
|
127
|
-
--scroll Scroll to bottom before extraction
|
|
128
|
-
--readable Use readable mode
|
|
129
|
-
--agent Format output for AI agent consumption
|
|
130
|
-
--screenshot Take a screenshot
|
|
131
|
-
-h, --help Show help
|
|
132
|
-
```
|
|
133
|
-
|
|
134
|
-
## Types
|
|
135
|
-
|
|
136
|
-
```ts
|
|
137
|
-
interface ScrapeResult {
|
|
138
|
-
url: string;
|
|
139
|
-
title: string;
|
|
140
|
-
html: string;
|
|
141
|
-
text: string;
|
|
142
|
-
links: { href: string; text: string }[];
|
|
143
|
-
images: { src: string; alt: string }[];
|
|
144
|
-
tables: { headers: string[]; rows: string[][] }[];
|
|
145
|
-
metadata: Record<string, string>;
|
|
146
|
-
screenshot?: Buffer;
|
|
147
|
-
timestamp: number;
|
|
148
|
-
}
|
|
149
|
-
|
|
150
|
-
interface ExtractedContent {
|
|
151
|
-
title: string;
|
|
152
|
-
author: string;
|
|
153
|
-
text: string;
|
|
154
|
-
links: { href: string; text: string }[];
|
|
155
|
-
images: { src: string; alt: string }[];
|
|
156
|
-
tables: { headers: string[]; rows: string[][] }[];
|
|
157
|
-
metadata: Record<string, string>;
|
|
158
|
-
}
|
|
159
|
-
|
|
160
|
-
interface SerializedOutput {
|
|
161
|
-
content: string;
|
|
162
|
-
format: string;
|
|
163
|
-
extension: string;
|
|
164
|
-
}
|
|
165
|
-
|
|
166
|
-
interface AgentOutput {
|
|
167
|
-
summary: string;
|
|
168
|
-
keyPoints: string[];
|
|
169
|
-
content: string;
|
|
170
|
-
relevantUrls: { url: string; text: string }[];
|
|
171
|
-
chunks: { content: string; tokenCount: number }[];
|
|
172
|
-
tokenCount: number;
|
|
173
|
-
}
|
|
174
|
-
```
|
|
@@ -1,94 +0,0 @@
|
|
|
1
|
-
# Architecture
|
|
2
|
-
|
|
3
|
-
## Module Overview
|
|
4
|
-
|
|
5
|
-
```
|
|
6
|
-
┌─────────────┐ ┌──────────────┐ ┌────────────────┐
|
|
7
|
-
│ AgentBrowser│────▶│ scrapeUrl / │────▶│ extractContent │
|
|
8
|
-
│ (browser.ts)│ │ scrapeHtml │ │ (extract.ts) │
|
|
9
|
-
└─────────────┘ └──────────────┘ └────────────────┘
|
|
10
|
-
│
|
|
11
|
-
▼
|
|
12
|
-
┌─────────────┐ ┌──────────────────┐ ┌────────────────┐
|
|
13
|
-
│ formatFor │◀────│ serializeResult │◀────│ ScrapeResult │
|
|
14
|
-
│ Agent │ │ (serialize.ts) │ │ │
|
|
15
|
-
│ (agent.ts) │ │ formats: md, xml,│ └────────────────┘
|
|
16
|
-
└─────────────┘ │ json, redis, txt │
|
|
17
|
-
└──────────────────┘
|
|
18
|
-
│
|
|
19
|
-
▼
|
|
20
|
-
┌──────────────┐
|
|
21
|
-
│ Pygame │
|
|
22
|
-
│ Renderer │
|
|
23
|
-
│ (renderer.ts)│
|
|
24
|
-
└──────────────┘
|
|
25
|
-
```
|
|
26
|
-
|
|
27
|
-
## Module Responsibilities
|
|
28
|
-
|
|
29
|
-
### `browser.ts` — AgentBrowser
|
|
30
|
-
- Wraps Playwright `Browser`, `BrowserContext`, and `Page`
|
|
31
|
-
- Provides chainable command execution (`executeCommands`)
|
|
32
|
-
- Handles stealth mode, ad blocking, and browser lifecycle
|
|
33
|
-
|
|
34
|
-
### `scrape.ts` — Scraping Engine
|
|
35
|
-
- `scrapeUrl(url, options?)` — Launches browser, navigates, extracts
|
|
36
|
-
- `scrapeHtml(html, options?)` — Works offline with raw HTML
|
|
37
|
-
- `scrapeWithBrowser(browser, url, options?)` — Reuses existing AgentBrowser
|
|
38
|
-
|
|
39
|
-
### `extract.ts` — Content Extraction
|
|
40
|
-
- `extractContent(html, options?)` — Parses HTML via Cheerio
|
|
41
|
-
- Extracts: title, author, text, links, images, tables, metadata
|
|
42
|
-
- Returns structured `ExtractedContent`
|
|
43
|
-
|
|
44
|
-
### `serialize.ts` — Multi-Format Serialization
|
|
45
|
-
- `serializeResult(result, options)` — Converts `ScrapeResult` to target format
|
|
46
|
-
- `serializeHtml(html, options)` — Direct HTML-to-format conversion
|
|
47
|
-
- Supports: Markdown, HTML, JSON, XML, Redis, Plaintext
|
|
48
|
-
|
|
49
|
-
### `formats.ts` — Format Registry
|
|
50
|
-
- Maps format names to serializers
|
|
51
|
-
- Provides format detection (article, list, page)
|
|
52
|
-
- Extensions and MIME types
|
|
53
|
-
|
|
54
|
-
### `agent.ts` — AI Agent Output
|
|
55
|
-
- `formatForAgent(result, options?)` — Structures content for LLM consumption
|
|
56
|
-
- Generates: summary, key points, relevant URLs, content chunks with token counts
|
|
57
|
-
|
|
58
|
-
### `renderer.ts` — Pygame Bridge
|
|
59
|
-
- `PygameRenderer` — Renders screenshots and DOOM game frames via Python/Pygame
|
|
60
|
-
- Spawns Python subprocess for rendering
|
|
61
|
-
|
|
62
|
-
### `cli.ts` — Command-Line Interface
|
|
63
|
-
- Commander-based CLI for scraping from terminal
|
|
64
|
-
- Accepts format, pretty-print, scroll, readable, and agent options
|
|
65
|
-
|
|
66
|
-
### `utils.ts` — Utilities
|
|
67
|
-
- `slugify`, `truncate`, `tokenEstimate`, `chunkText`
|
|
68
|
-
- URL validation and classification (internal/external)
|
|
69
|
-
|
|
70
|
-
### `dev-server.mjs` — Development Server
|
|
71
|
-
- Standalone Node.js HTTP server
|
|
72
|
-
- POST `/api/scrape` endpoint wrapping Playwright
|
|
73
|
-
- Used by Vite dev server via proxy
|
|
74
|
-
|
|
75
|
-
## Package Organization
|
|
76
|
-
|
|
77
|
-
```
|
|
78
|
-
webscrape/
|
|
79
|
-
├── index.ts # Public API exports
|
|
80
|
-
├── browser.ts # AgentBrowser (Playwright wrapper)
|
|
81
|
-
├── scrape.ts # Scraping engine
|
|
82
|
-
├── extract.ts # HTML content extraction
|
|
83
|
-
├── serialize.ts # Multi-format serialization
|
|
84
|
-
├── formats.ts # Format registry
|
|
85
|
-
├── agent.ts # AI agent output
|
|
86
|
-
├── renderer.ts # Pygame bridge
|
|
87
|
-
├── cli.ts # CLI entry
|
|
88
|
-
├── utils.ts # Utilities
|
|
89
|
-
├── types.ts # TypeScript interfaces
|
|
90
|
-
├── web/ # Web demo UI
|
|
91
|
-
├── tests/ # Test suites
|
|
92
|
-
├── docs/ # Documentation
|
|
93
|
-
└── dev-server.mjs # API server for dev mode
|
|
94
|
-
```
|