@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,464 +0,0 @@
|
|
|
1
|
-
# Comparativo Técnico: webscrape vs Concorrência
|
|
2
|
-
|
|
3
|
-
> **Data:** 2026-06-08
|
|
4
|
-
> **Versão:** 1.0
|
|
5
|
-
> **Baseado em:** PESQUISA-CONCORRENCIA.md + AUDITORIA-DADOS.md + análise do código-fonte
|
|
6
|
-
|
|
7
|
-
---
|
|
8
|
-
|
|
9
|
-
## Sumário Executivo
|
|
10
|
-
|
|
11
|
-
`@wenathlan/webscrape` é um toolkit de scraping all-in-one que ocupa um nicho único: combina HTTP scraping, browser automation, serialização multi-formato, formatação para IA e um servidor HTTP — tudo em um único pacote TypeScript, sem depender de serviços em nuvem. A análise técnica revela que, enquanto competitors como Crawlee e Scrapy dominam em infraestrutura de produção (filas persistentes, Docker, anti-detection), webscrape supera em integração com IA, estimativa de tokens e chunking para RAG.
|
|
12
|
-
|
|
13
|
-
---
|
|
14
|
-
|
|
15
|
-
## 1. Comparativo Feature-by-Feature
|
|
16
|
-
|
|
17
|
-
| Feature | webscrape | Melhor Concorrente | Nível do Gap |
|
|
18
|
-
|---------|-----------|-------------------|--------------|
|
|
19
|
-
| **Browser Automation** | Playwright wrapper (chromium/firefox/webkit), ad blocking, stealth flag | Playwright: auto-wait, locators, tracing, mobile emulation, MCP server | 🟡 MÉDIO |
|
|
20
|
-
| **HTTP Scraping** | Node fetch com auto mode detection | Crawlee: `CheerioCrawler` com retry integrado, auto-retry com backoff | 🟢 BAIXO |
|
|
21
|
-
| **HTML Parsing** | Cheerio-based: links, images, tables, metadata, JSON-LD | Cheerio: 1.8M dependents, jQuery-like API, XML parsing | 🟢 BAIXO |
|
|
22
|
-
| **Markdown Conversion** | Custom JSDOM-based serializer (h1-h6, tables, links, code blocks) | Firecrawl: Turndown com GFM plugin, melhor edge case handling | 🟡 MÉDIO |
|
|
23
|
-
| **Crawling** | BFS básico com `Set` in-memory para visited, depth/concurrency limits | Crawlee: persistent request queue (disk/cloud), auto-scaling, FIFO/LIFO | 🔴 ALTO |
|
|
24
|
-
| **Batch Processing** | `p-limit` parallel + sequential modes, progress callbacks | Firecrawl: API batch endpoint com async processing | 🟡 MÉDIO |
|
|
25
|
-
| **Proxy Rotation** | Round-robin/random com failure tracking, auto-revive (30min) | Crawlee: session-based rotation (mesmo proxy por sessão) | 🔴 ALTO |
|
|
26
|
-
| **Anti-Detection** | User-Agent rotation (4 profiles), `--disable-web-security` flag | Browserless: BrowserQL, fingerprint randomization, captcha solving | 🔴 CRÍTICO |
|
|
27
|
-
| **Session Management** | `CookieJar` + `ScrapingSession` (in-memory) | Browserless: persistent sessions (90 dias), session replay | 🔴 ALTO |
|
|
28
|
-
| **Persistent Queue** | In-memory `Set` + `Array` | Crawlee: SQLite/disk/cloud-backed request queue | 🔴 ALTO |
|
|
29
|
-
| **Middleware** | Pipeline pattern: logging, timeout, retry com exponential backoff | Scrapy: 3-tier middleware (downloader → spider → pipeline) | 🟡 MÉDIO |
|
|
30
|
-
| **Serialization** | Markdown, XML, JSON, Redis (`JSON.SET`), plain text | Scrapy: JSON, CSV, XML + Feed exports + DB backends | 🟡 MÉDIO |
|
|
31
|
-
| **AI/LLM Integration** | `formatForAgent()`: summary, key points, links, token estimation | Firecrawl: AI Agent endpoint, Zod schema extraction, Spark models | 🟡 MÉDIO |
|
|
32
|
-
| **Token Estimation** | Model-aware ratios (GPT-4o, Claude, Gemini), `fitsInContext()`, `tokenCost()` | Firecrawl: token counting (sem model-specific ratios) | 🟢 LIDERAMOS |
|
|
33
|
-
| **RAG Chunking** | `chunkMarkdown()`: heading-aware, overlap tokens, `formatChunksForRAG()` | Firecrawl: basic chunking (sem heading path tracking) | 🟢 LIDERAMOS |
|
|
34
|
-
| **LLMs.txt Generation** | `generateLlmsTxt()` + `generateLlmsFullTxt()` com categorização pages/docs | Nenhum: feature exclusiva | 🟢 LIDERAMOS |
|
|
35
|
-
| **HTTP Server** | Hono-based REST API: `/scrape`, `/batch`, `/crawl`, `/health` | Firecrawl: cloud API com managed infra | 🟡 MÉDIO |
|
|
36
|
-
| **MCP Server** | ❌ Não implementado | Playwright: `@playwright/mcp`; Firecrawl: `firecrawl-mcp` | 🔴 ALTO |
|
|
37
|
-
| **CLI** | Commander-based: scrape, batch, crawl, format options | Crawlee: `npx crawlee create` scaffolding; Firecrawl: multi-command CLI | 🟡 MÉDIO |
|
|
38
|
-
| **Docker** | ❌ Não implementado | Browserless: Docker-first; Crawlee: templates prontos | 🔴 ALTO |
|
|
39
|
-
| **Cross-Runtime** | Node.js >= 26.2.0 + Bun >= 1.4.0 | Nenhum outro: Node-only ou Python-only | 🟢 LIDERAMOS |
|
|
40
|
-
| **Browser Pool** | `BrowserPool`: maxSize, wait queue, acquire/release com timeout | Crawlee: auto-scaling baseado em CPU/memória | 🟡 MÉDIO |
|
|
41
|
-
| **Cache** | LRU com TTL, configuração por entry | Crawlee: Request Queue com dedup persistente | 🟡 MÉDIO |
|
|
42
|
-
| **Rate Limiting** | Token bucket + concurrency control | Crawlee: built-in; Scrapy: auto rate limiting | 🟢 BAIXO |
|
|
43
|
-
| **Sitemap Discovery** | `sitemapper` integration | Firecrawl: `/map` endpoint instantâneo | 🟡 MÉDIO |
|
|
44
|
-
| **Robots.txt** | `robots-parser` com cache (24h) | Scrapy: compliance automático com crawl-delay | 🟢 BAIXO |
|
|
45
|
-
| **PDF Generation** | ❌ Não implementado | Playwright: `page.pdf()` nativo; Firecrawl: PDF parsing | 🔴 ALTO |
|
|
46
|
-
| **Video Extraction** | ❌ Não implementado | Firecrawl: YouTube/TikTok extraction | 🟡 MÉDIO |
|
|
47
|
-
| **Mobile Emulation** | ❌ Não implementado | Playwright: built-in device profiles | 🟡 MÉDIO |
|
|
48
|
-
| **Tracing/Debug** | ❌ Não implementado | Playwright: full execution traces com DOM snapshots | 🟡 MÉDIO |
|
|
49
|
-
| **Zod Schema Extraction** | ❌ Não implementado | Firecrawl: structured output com Zod schemas | 🟡 MÉDIO |
|
|
50
|
-
|
|
51
|
-
**Legenda:** 🟢 Lideramos ou paridade | 🟡 Gap médio | 🔴 Gap alto/crítico
|
|
52
|
-
|
|
53
|
-
---
|
|
54
|
-
|
|
55
|
-
## 2. Comparativo de Arquitetura
|
|
56
|
-
|
|
57
|
-
### 2.1 Crawlee: Request Queue vs Nossa Batch
|
|
58
|
-
|
|
59
|
-
**Crawlee — Request Queue (Persistent):**
|
|
60
|
-
```
|
|
61
|
-
User Code
|
|
62
|
-
→ Request Queue (SQLite/disk/cloud)
|
|
63
|
-
→ Request Handler
|
|
64
|
-
→ Storage (Dataset + KV Store)
|
|
65
|
-
→ Local filesystem OR Apify Cloud
|
|
66
|
-
```
|
|
67
|
-
- Queue sobrevive a restarts
|
|
68
|
-
- Handle milhões de URLs
|
|
69
|
-
- FIFO/LIFO ordering
|
|
70
|
-
- Dedup persistente (URLs já processadas)
|
|
71
|
-
- Auto-scaling baseado em recursos do sistema
|
|
72
|
-
|
|
73
|
-
**webscrape — Batch Processing (In-Memory):**
|
|
74
|
-
```
|
|
75
|
-
batchScrape(urls, options)
|
|
76
|
-
→ p-limit (concurrency control)
|
|
77
|
-
→ scrapeUrl() per URL
|
|
78
|
-
→ results[] + errors[]
|
|
79
|
-
```
|
|
80
|
-
- Queue é um `Array` em memória
|
|
81
|
-
- Sem persistência entre execuções
|
|
82
|
-
- Dedup via `Set<string>` no crawler (também in-memory)
|
|
83
|
-
- Sem auto-scaling
|
|
84
|
-
- Suporta parallel e sequential modes
|
|
85
|
-
|
|
86
|
-
**Análise:** O gap é significativo para uso em produção. Para crawling de grande escala (>10k URLs), a falta de queue persistente é bloqueante. Para uso típico de scraping (100-500 URLs), o batch approach é suficiente e mais simples.
|
|
87
|
-
|
|
88
|
-
### 2.2 Playwright Integration Patterns
|
|
89
|
-
|
|
90
|
-
**Playwright (raw):**
|
|
91
|
-
```typescript
|
|
92
|
-
const browser = await chromium.launch();
|
|
93
|
-
const context = await browser.newContext();
|
|
94
|
-
const page = await context.newPage();
|
|
95
|
-
// Auto-wait, locators, tracing, mobile emulation
|
|
96
|
-
```
|
|
97
|
-
|
|
98
|
-
**webscrape (wrapper):**
|
|
99
|
-
```typescript
|
|
100
|
-
const browser = createBrowser({ headless: true, blockAds: true });
|
|
101
|
-
await browser.launch('chromium');
|
|
102
|
-
// Simplified: navigate, click, type, screenshot, scrollToBottom
|
|
103
|
-
// Mas sem: auto-wait, locators, tracing, mobile profiles
|
|
104
|
-
```
|
|
105
|
-
|
|
106
|
-
**Crawlee (crawler pattern):**
|
|
107
|
-
```typescript
|
|
108
|
-
const crawler = new PlaywrightCrawler({
|
|
109
|
-
requestHandler: async ({ page, request }) => {
|
|
110
|
-
// Full Playwright API + built-in retry, session, proxy
|
|
111
|
-
},
|
|
112
|
-
});
|
|
113
|
-
await crawler.run(['url1', 'url2']);
|
|
114
|
-
```
|
|
115
|
-
|
|
116
|
-
**Análise:** O wrapper de webscrape simplifica Playwright para casos de uso comuns, mas perde recursos avançados como auto-wait (elimina timeouts flaky) e locators (element finding resiliente). O pattern do Crawlee é mais maduro para crawling, mas mais verboso para scripting simples.
|
|
117
|
-
|
|
118
|
-
### 2.3 Abordagens de Serialização
|
|
119
|
-
|
|
120
|
-
**webscrape (5 formatos):**
|
|
121
|
-
```typescript
|
|
122
|
-
serializeResult(result, { format: 'markdown' }) // Custom JSDOM serializer
|
|
123
|
-
serializeResult(result, { format: 'xml' }) // JSDOM → XML
|
|
124
|
-
serializeResult(result, { format: 'json' }) // Structured JSON
|
|
125
|
-
serializeResult(result, { format: 'redis' }) // JSON.SET command
|
|
126
|
-
serializeResult(result, { format: 'text' }) // Strip tags
|
|
127
|
-
```
|
|
128
|
-
- Implementação customizada (não usa Turndown)
|
|
129
|
-
- Markdown serializer processa: h1-h6, p, br, hr, ul/ol, a, img, strong, em, code, pre, blockquote, table
|
|
130
|
-
- Redis output gera comando `JSON.SET` pronto para executar
|
|
131
|
-
- Suporta chunking por tamanho máximo
|
|
132
|
-
|
|
133
|
-
**Scrapy (Feed Exports):**
|
|
134
|
-
```python
|
|
135
|
-
FEED_FORMAT = 'json'
|
|
136
|
-
FEED_URI = 'output.json'
|
|
137
|
-
# + CSV, XML, automatic database export
|
|
138
|
-
```
|
|
139
|
-
|
|
140
|
-
**Firecrawl (API-native):**
|
|
141
|
-
```json
|
|
142
|
-
{ "formats": ["markdown", "html", "rawHtml", "screenshot"] }
|
|
143
|
-
```
|
|
144
|
-
- Markdown via Turndown com GFM
|
|
145
|
-
- Screenshot como feature nativa
|
|
146
|
-
- Structured output com Zod schemas
|
|
147
|
-
|
|
148
|
-
**Análise:** A serialização do webscrape é surpreendentemente robusta, com suporte a Redis (único na lista) e XML customizado. O gap está na qualidade do Markdown — Turndown (usado por Firecrawl) lida melhor com edge cases (nested lists, complex tables, inline HTML).
|
|
149
|
-
|
|
150
|
-
---
|
|
151
|
-
|
|
152
|
-
## 3. O Que os Concorrentes Fazem Melhor
|
|
153
|
-
|
|
154
|
-
### 3.1 Anti-Detection (CRÍTICO)
|
|
155
|
-
|
|
156
|
-
**Cenário atual:**
|
|
157
|
-
- `headers.ts`: 4 profiles (Chrome/Firefox/Safari) — User-Agent rotation básica
|
|
158
|
-
- `browser.ts`: `'--disable-web-security'` hardcoded (risco de segurança)
|
|
159
|
-
- `puppeteer-extra-plugin-stealth` está em `optionalDependencies` mas NÃO é utilizado
|
|
160
|
-
|
|
161
|
-
**O que falta:**
|
|
162
|
-
| Capacidade | Implementado | Concorrente |
|
|
163
|
-
|-----------|-------------|-------------|
|
|
164
|
-
| Fingerprint randomization | ❌ | Crawlee: human-like fingerprints automáticos |
|
|
165
|
-
| TLS fingerprint | ❌ | Browserless: TLS fingerprint rotation |
|
|
166
|
-
| Canvas/WebGL spoofing | ❌ | Firecrawl: stealth mode com proxy residential |
|
|
167
|
-
| Navigator properties | ❌ | Browserless: BrowserQL custom detection bypass |
|
|
168
|
-
| Captcha solving | ❌ | Firecrawl: captcha handling integrado |
|
|
169
|
-
| Proxy residential | ❌ | Firecrawl/Browserless: IP rotation gerenciada |
|
|
170
|
-
|
|
171
|
-
### 3.2 Filas Persistentes (ALTO)
|
|
172
|
-
|
|
173
|
-
**Impacto:** Impossível resumir crawls após crash, impossível lidar com milhões de URLs.
|
|
174
|
-
|
|
175
|
-
**Crawlee oferece:**
|
|
176
|
-
- `RequestQueue` com SQLite local ou cloud storage
|
|
177
|
-
- Dedup persistente (URLs processadas sobrevivem a restarts)
|
|
178
|
-
- Priorização de requests
|
|
179
|
-
- Auto-skip de URLs já processadas
|
|
180
|
-
|
|
181
|
-
**webscrape tem:**
|
|
182
|
-
- `Set<string>` in-memory para visited tracking
|
|
183
|
-
- `Array` como queue (BFS)
|
|
184
|
-
- Sem persistência
|
|
185
|
-
|
|
186
|
-
### 3.3 Docker (ALTO)
|
|
187
|
-
|
|
188
|
-
**Todos os competitors oferecem:**
|
|
189
|
-
- Crawlee: templates `Dockerfile` + `docker-compose.yml`
|
|
190
|
-
- Browserless: Docker-first architecture
|
|
191
|
-
- Firecrawl: self-hosted Docker deployment
|
|
192
|
-
- Scrapy: Scrapyd para deploy como serviço
|
|
193
|
-
|
|
194
|
-
**webscrape:** Sem Dockerfile, sem container deployment, sem Kubernetes support.
|
|
195
|
-
|
|
196
|
-
### 3.4 MCP Server (MÉDIO-ALTO)
|
|
197
|
-
|
|
198
|
-
**Competitors com MCP:**
|
|
199
|
-
- Playwright: `@playwright/mcp` — browser automation para AI agents
|
|
200
|
-
- Firecrawl: `firecrawl-mcp` — scrape/crawl como MCP tools
|
|
201
|
-
- Browserless: MCP server integrado
|
|
202
|
-
- Puppeteer: `chrome-devtools-mcp`
|
|
203
|
-
|
|
204
|
-
**webscrape:** Sem integração MCP — não pode ser usado por Claude Desktop, Cursor, Windsurf nativamente.
|
|
205
|
-
|
|
206
|
-
### 3.5 Sessions Persistentes (MÉDIO)
|
|
207
|
-
|
|
208
|
-
**Browserless:** 90 dias de retenção de cookies/cache/localStorage
|
|
209
|
-
**Crawlee:** Persiste sessões em disco
|
|
210
|
-
**webscrape:** `CookieJar` e `ScrapingSession` são in-memory — perdem estado entre execuções
|
|
211
|
-
|
|
212
|
-
---
|
|
213
|
-
|
|
214
|
-
## 4. O Que Nós Fazemos Melhor
|
|
215
|
-
|
|
216
|
-
### 4.1 Cross-Runtime (ÚNICO)
|
|
217
|
-
|
|
218
|
-
```
|
|
219
|
-
Node.js >= 26.2.0 ✅
|
|
220
|
-
Bun >= 1.4.0 ✅
|
|
221
|
-
```
|
|
222
|
-
|
|
223
|
-
Nenhum outro competitor suporta Bun nativamente. Crawlee e Puppeteer são Node-only. Playwright tem suporte multi-language (Python, Java, .NET) mas não Bun. Isso abre oportunidades para edge runtimes e performance superior em Bun.
|
|
224
|
-
|
|
225
|
-
### 4.2 All-in-One Toolkit (DIFERENCIADOR)
|
|
226
|
-
|
|
227
|
-
```typescript
|
|
228
|
-
// Um pacote faz TUDO:
|
|
229
|
-
import { scrapeUrl } from '@wenathlan/webscrape/scrape';
|
|
230
|
-
import { crawl } from '@wenathlan/webscrape/crawler';
|
|
231
|
-
import { batchScrape } from '@wenathlan/webscrape/batch';
|
|
232
|
-
import { serializeResult } from '@wenathlan/webscrape/serialize';
|
|
233
|
-
import { formatForAgent } from '@wenathlan/webscrape/agent';
|
|
234
|
-
import { chunkMarkdown } from '@wenathlan/webscrape/chunking';
|
|
235
|
-
import { generateLlmsTxt } from '@wenathlan/webscrape/llms-txt';
|
|
236
|
-
import { createServer } from '@wenathlan/webscrape/server';
|
|
237
|
-
```
|
|
238
|
-
|
|
239
|
-
**Nenhum competitor combina:**
|
|
240
|
-
- HTTP scraping + Browser automation
|
|
241
|
-
- Serialização multi-formato (incluindo Redis)
|
|
242
|
-
- AI agent formatting + Token estimation
|
|
243
|
-
- RAG chunking + LLMs.txt generation
|
|
244
|
-
- HTTP server REST API
|
|
245
|
-
|
|
246
|
-
### 4.3 Token Estimation (LÍDER)
|
|
247
|
-
|
|
248
|
-
```typescript
|
|
249
|
-
// Model-aware estimation com preços
|
|
250
|
-
estimateTokens(text, 'gpt-4o') // 3.5 chars/token
|
|
251
|
-
estimateTokens(text, 'claude') // 3.2 chars/token
|
|
252
|
-
estimateTokens(text, 'gemini') // 3.5 chars/token
|
|
253
|
-
fitsInContext(text, 8000, 'gpt-4o') // Boolean check
|
|
254
|
-
tokenCost(text, 'gpt-4o', 0.0025) // Cálculo de custo
|
|
255
|
-
```
|
|
256
|
-
|
|
257
|
-
**Problema conhecido (AUDITORIA-DADOS.md):** Preços hardcoded em `tokens.ts` estão desatualizados (2024). Modelos listados: gpt-4o, gpt-4o-mini, gpt-4-turbo, claude-3-5-sonnet, claude-3-haiku, gemini-1.5-pro, gemini-1.5-flash.
|
|
258
|
-
|
|
259
|
-
### 4.4 RAG Chunking (LÍDER)
|
|
260
|
-
|
|
261
|
-
```typescript
|
|
262
|
-
// Heading-aware chunking com overlap
|
|
263
|
-
const chunks = chunkMarkdown(content, {
|
|
264
|
-
maxTokens: 512,
|
|
265
|
-
overlapTokens: 50,
|
|
266
|
-
preserveCodeBlocks: true,
|
|
267
|
-
includeHeadingPath: true,
|
|
268
|
-
});
|
|
269
|
-
|
|
270
|
-
// Output: Chunk[] com headingPath, tokenCount, index
|
|
271
|
-
// headingPath: ["Getting Started", "Installation", "Node.js"]
|
|
272
|
-
```
|
|
273
|
-
|
|
274
|
-
**Features exclusivas:**
|
|
275
|
-
- `splitByHeaders()` — respeita hierarquia h1-h6
|
|
276
|
-
- `headingPath` — caminho completo de navegação para cada chunk
|
|
277
|
-
- `overlapTokens` — sobreposição entre chunks para RAG
|
|
278
|
-
- `preserveCodeBlocks` — não quebra code blocks
|
|
279
|
-
- `formatChunksForRAG()` — formata chunks para ingestion
|
|
280
|
-
|
|
281
|
-
### 4.5 LLMs.txt Generation (EXCLUSIVO)
|
|
282
|
-
|
|
283
|
-
```typescript
|
|
284
|
-
generateLlmsTxt(results, {
|
|
285
|
-
siteName: 'My Docs',
|
|
286
|
-
description: 'API documentation',
|
|
287
|
-
includeOptional: true,
|
|
288
|
-
});
|
|
289
|
-
// Output: # Site Name > Description ## Pages ## Documentation ## Optional
|
|
290
|
-
```
|
|
291
|
-
|
|
292
|
-
Nenhum competitor oferece geração de `llms.txt` — feature critical para AI discoverability de sites.
|
|
293
|
-
|
|
294
|
-
### 4.6 Multi-Format Serialization (LÍDER)
|
|
295
|
-
|
|
296
|
-
| Formato | webscrape | Scrapy | Firecrawl |
|
|
297
|
-
|---------|-----------|--------|-----------|
|
|
298
|
-
| Markdown | ✅ Custom JSDOM | ❌ | ✅ Turndown |
|
|
299
|
-
| XML | ✅ Custom | ✅ | ❌ |
|
|
300
|
-
| JSON | ✅ Structured | ✅ | ✅ |
|
|
301
|
-
| Redis | ✅ `JSON.SET` | ❌ | ❌ |
|
|
302
|
-
| Plain Text | ✅ | ❌ | ❌ |
|
|
303
|
-
| CSV | ❌ | ✅ | ❌ |
|
|
304
|
-
| Screenshot | ❌ | ❌ | ✅ |
|
|
305
|
-
|
|
306
|
-
O Redis serialization (`JSON.SET` command) é exclusivo — permite popular Redis diretamente do scraping.
|
|
307
|
-
|
|
308
|
-
---
|
|
309
|
-
|
|
310
|
-
## 5. Comparativo de Qualidade
|
|
311
|
-
|
|
312
|
-
### 5.1 Qualidade do Código
|
|
313
|
-
|
|
314
|
-
| Aspecto | webscrape | Crawlee | Scrapy |
|
|
315
|
-
|---------|-----------|---------|--------|
|
|
316
|
-
| **Tipagem** | TypeScript strict com Zod schemas | TypeScript com generics | Python com type hints |
|
|
317
|
-
| **Validação** | Zod para inputs, runtime validation | TypeScript compilation only | Pydantic em partes |
|
|
318
|
-
| **Error Handling** | `WebScrapeError` com codes customizados | Exception classes | Exception hierarchy |
|
|
319
|
-
| **Testes** | Vitest (configurado, não verificado cobertura) | Vitest (cobertura alta) | Pytest (cobertura alta) |
|
|
320
|
-
| **Lint** | Biome (moderno, rápido) | Biome | Flake8 + Black |
|
|
321
|
-
| **Docs** | README + docs/ | Interattive docs + examples | Livros + docs extensas |
|
|
322
|
-
|
|
323
|
-
### 5.2 Technical Debt (AUDITORIA-DADOS.md)
|
|
324
|
-
|
|
325
|
-
| Problema | Severidade | Status |
|
|
326
|
-
|----------|-----------|--------|
|
|
327
|
-
| Preços hardcoded (tokens.ts) | 🔴 ALTA | 7 modelos desatualizados |
|
|
328
|
-
| User-Agent hardcoded (browser.ts) | 🟡 MÉDIA | 1 UA estático |
|
|
329
|
-
| Host hardcoded (server.ts:132) | 🟡 MÉDIA | `0.0.0.0` default |
|
|
330
|
-
| `--disable-web-security` hardcoded | 🟡 MÉDIA | Risco de segurança |
|
|
331
|
-
| Versão hardcoded em 4 arquivos | 🟡 MÉDIA | `2.0.0` duplicado |
|
|
332
|
-
| Dependabot placeholder | 🟡 MÉDIA | ecosystem vazio |
|
|
333
|
-
| 30+ valores configuráveis hardcoded | 🟡 MÉDIA | Defaults fixos |
|
|
334
|
-
|
|
335
|
-
### 5.3 Maturidade
|
|
336
|
-
|
|
337
|
-
| Indicador | webscrape | Crawlee | Scrapy | Firecrawl |
|
|
338
|
-
|-----------|-----------|---------|--------|-----------|
|
|
339
|
-
| **GitHub Stars** | — | 23.7k | 62.1k | 130k |
|
|
340
|
-
| **Anos de desenvolvimento** | ~1 | ~4 | 15+ | ~2 |
|
|
341
|
-
| **Releases** | ~10 | 134 | 300+ | ~50 |
|
|
342
|
-
| **Commits** | ~200 | ~3k | ~12k | ~2k |
|
|
343
|
-
| **Dependents** | — | ~100 | ~55k | — |
|
|
344
|
-
| **Produção battle-tested** | ❓ | ✅ Apify | ✅ Zyte | ✅ Hosted |
|
|
345
|
-
|
|
346
|
-
---
|
|
347
|
-
|
|
348
|
-
## 6. Comparativo de Ecossistema
|
|
349
|
-
|
|
350
|
-
### 6.1 Comunidade e Suporte
|
|
351
|
-
|
|
352
|
-
| Aspecto | webscrape | Crawlee | Playwright | Firecrawl |
|
|
353
|
-
|---------|-----------|---------|------------|-----------|
|
|
354
|
-
| **GitHub Stars** | — | 23.7k | 90.5k | 130k |
|
|
355
|
-
| **Discord/Community** | ❌ | ✅ Discord ativo | ✅ GitHub Discussions | ✅ Discord |
|
|
356
|
-
| **Stack Overflow** | ❌ | ✅ Tag ativa | ✅ Massivo | ✅ Crescente |
|
|
357
|
-
| **Blog posts/tutorials** | ❌ | ✅ Muitos | ✅ Extensivos | ✅ Muitos |
|
|
358
|
-
| **Enterprise backing** | DevThink | Apify | Microsoft | Firecrawl Inc |
|
|
359
|
-
|
|
360
|
-
### 6.2 Integrações
|
|
361
|
-
|
|
362
|
-
| Integração | webscrape | Crawlee | Firecrawl | Browserless |
|
|
363
|
-
|-----------|-----------|---------|-----------|-------------|
|
|
364
|
-
| **AI SDK (Vercel)** | ✅ 20+ providers | ❌ | ❌ | ❌ |
|
|
365
|
-
| **MCP Server** | ❌ | ❌ | ✅ | ✅ |
|
|
366
|
-
| **Docker** | ❌ | ✅ | ✅ | ✅ (core) |
|
|
367
|
-
| **Kubernetes** | ❌ | ✅ | ✅ | ✅ |
|
|
368
|
-
| **Cloud Platform** | ❌ | ✅ Apify | ✅ Hosted | ✅ Hosted |
|
|
369
|
-
| **Redis** | ✅ Serialization | ❌ | ❌ | ❌ |
|
|
370
|
-
| **SQLite** | ✅ dependency | ✅ Request Queue | ❌ | ❌ |
|
|
371
|
-
|
|
372
|
-
### 6.3 Package Ecosystem
|
|
373
|
-
|
|
374
|
-
```json
|
|
375
|
-
// webscrape: 1 package
|
|
376
|
-
@wenathlan/webscrape
|
|
377
|
-
|
|
378
|
-
// Crawlee: multi-package
|
|
379
|
-
crawlee
|
|
380
|
-
@crawlee/core
|
|
381
|
-
@crawlee/playwright
|
|
382
|
-
@crawlee/puppeteer
|
|
383
|
-
@crawlee/cheerio
|
|
384
|
-
|
|
385
|
-
// Scrapy: ecosystem
|
|
386
|
-
scrapy
|
|
387
|
-
scrapyrt (REST API)
|
|
388
|
-
scrapyd (deployment)
|
|
389
|
-
scrapy-playwright
|
|
390
|
-
scrapy-cloud
|
|
391
|
-
```
|
|
392
|
-
|
|
393
|
-
**Análise:** O modelo all-in-one do webscrape é vantagem para adoção (1 package) mas desvantagem para tree-shaking (users importam tudo). Crawlee permite imports granulares.
|
|
394
|
-
|
|
395
|
-
---
|
|
396
|
-
|
|
397
|
-
## 7. Matriz de Decisão
|
|
398
|
-
|
|
399
|
-
| Critério | Peso | webscrape | Crawlee | Playwright | Firecrawl |
|
|
400
|
-
|----------|------|-----------|---------|------------|-----------|
|
|
401
|
-
| AI/LLM Integration | 25% | ⭐⭐⭐⭐⭐ | ⭐⭐ | ⭐ | ⭐⭐⭐⭐⭐ |
|
|
402
|
-
| Anti-Detection | 20% | ⭐ | ⭐⭐⭐⭐ | ⭐⭐ | ⭐⭐⭐⭐⭐ |
|
|
403
|
-
| Production Readiness | 20% | ⭐⭐ | ⭐⭐⭐⭐⭐ | ⭐⭐⭐ | ⭐⭐⭐⭐⭐ |
|
|
404
|
-
| Ease of Use | 15% | ⭐⭐⭐⭐ | ⭐⭐⭐ | ⭐⭐⭐⭐ | ⭐⭐⭐⭐⭐ |
|
|
405
|
-
| Cross-Runtime | 10% | ⭐⭐⭐⭐⭐ | ⭐⭐ | ⭐⭐⭐ | ⭐⭐⭐ |
|
|
406
|
-
| Serialization | 10% | ⭐⭐⭐⭐⭐ | ⭐⭐⭐ | ⭐ | ⭐⭐⭐⭐ |
|
|
407
|
-
|
|
408
|
-
---
|
|
409
|
-
|
|
410
|
-
## 8. Roadmap de Melhorias (Priorizado)
|
|
411
|
-
|
|
412
|
-
| Prioridade | Feature | Esforço | Impacto | Concornte Reference |
|
|
413
|
-
|-----------|---------|---------|---------|-------------------|
|
|
414
|
-
| **P0** | Anti-Detection (stealth plugin) | 1-2 dias | 🔴 CRÍTICO | Crawlee, Firecrawl |
|
|
415
|
-
| **P0** | Persistent Queue (SQLite) | 3-5 dias | 🔴 ALTO | Crawlee Request Queue |
|
|
416
|
-
| **P1** | Docker support | 1-2 dias | 🔴 ALTO | Browserless |
|
|
417
|
-
| **P1** | MCP Server | 3-5 dias | 🟡 MÉDIO-ALTO | Playwright MCP, Firecrawl MCP |
|
|
418
|
-
| **P2** | Session persistence | 2-3 dias | 🟡 MÉDIO | Browserless 90d sessions |
|
|
419
|
-
| **P2** | Zod schema extraction | 2-3 dias | 🟡 MÉDIO | Firecrawl structured output |
|
|
420
|
-
| **P2** | PDF generation | 1 dia | 🟡 MÉDIO | Playwright `page.pdf()` |
|
|
421
|
-
| **P3** | Configurable token prices | 1 dia | 🟡 MÉDIO | — |
|
|
422
|
-
| **P3** | Mobile emulation | 1 dia | 🟡 MÉDIO | Playwright device profiles |
|
|
423
|
-
| **P3** | Tracing/debug | 3-5 dias | 🟡 MÉDIO | Playwright traces |
|
|
424
|
-
|
|
425
|
-
---
|
|
426
|
-
|
|
427
|
-
## 9. Posicionamento de Mercado
|
|
428
|
-
|
|
429
|
-
```
|
|
430
|
-
Mais Abstrato
|
|
431
|
-
↑
|
|
432
|
-
│
|
|
433
|
-
Firecrawl ────┼──── Browserless
|
|
434
|
-
(API-first) │ (DaaS)
|
|
435
|
-
│
|
|
436
|
-
←───────────────────┼──────────────────→
|
|
437
|
-
Mais simples │ Mais complexo
|
|
438
|
-
│
|
|
439
|
-
webscrape ────┼──── Crawlee
|
|
440
|
-
(Toolkit) │ (Framework)
|
|
441
|
-
│
|
|
442
|
-
↓
|
|
443
|
-
Menos Abstrato
|
|
444
|
-
|
|
445
|
-
│
|
|
446
|
-
Playwright
|
|
447
|
-
(Library)
|
|
448
|
-
```
|
|
449
|
-
|
|
450
|
-
**Posicionamento do webscrape:** Toolkit de nível médio, posicionado entre bibliotecas de baixo nível (Playwright) e frameworks completos (Crawlee). Seu diferencial é a camada de AI/RAG que nenhum outro oferece no mesmo pacote.
|
|
451
|
-
|
|
452
|
-
---
|
|
453
|
-
|
|
454
|
-
## 10. Conclusão
|
|
455
|
-
|
|
456
|
-
**webscrape ocupa um nicho único** como o único toolkit que combina scraping + AI formatting + RAG chunking + LLMs.txt + cross-runtime. Para use cases de "scrape → format for LLM → chunk for RAG", é superior a qualquer competitor.
|
|
457
|
-
|
|
458
|
-
**Os gaps críticos** (anti-detection, persistent queue, Docker) limitam a adoção em produção. A resolução deles — particularmente o stealth plugin que já está em `optionalDependencies` — elevaria significativamente a competitividade.
|
|
459
|
-
|
|
460
|
-
**Recomendação estratégica:** Focar nos 3 items P0 (anti-detection, persistent queue, Docker) que desbloqueiam production use, enquanto mantemos a vantagem em AI/RAG que nenhum competitor oferece de forma integrada.
|
|
461
|
-
|
|
462
|
-
---
|
|
463
|
-
|
|
464
|
-
*Documento gerado em 2026-06-08. Baseado em análise de código-fonte, PESQUISA-CONCORRENCIA.md e AUDITORIA-DADOS.md.*
|