@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
|
@@ -0,0 +1,355 @@
|
|
|
1
|
+
# e2ugh v6 - Architecture Reference
|
|
2
|
+
|
|
3
|
+
This document defines the architecture of e2ugh v6: the design principles, the module inventory with real sizes, the v3 feature redistribution across domain modules, the test patterns, the single-bus/single-state-machine/single-metrics resolution, the design-pattern map bound to real symbols, the configuration system, the multi-mode surface, the API surface and the coding rules. Hardware catalogs live in `hardware.md`; the virtualization engines live in `virtualization.md`; the master guide with quick start and versions is `readme.md`.
|
|
4
|
+
|
|
5
|
+
Context map (26 related contexts): flat monolith, three-layer flow, module
|
|
6
|
+
inventory, v3 feature redistribution, test patterns, web node mesh, event
|
|
7
|
+
bus topology, lifecycle state machine, metrics store, design
|
|
8
|
+
patterns, registries, builders and factories, planner CLI, configuration
|
|
9
|
+
system, data file binding, multi-mode surface, module consumption (nbit),
|
|
10
|
+
API surface, orchestrator strategies, warm pool, memory architecture, coding
|
|
11
|
+
syntax, variants, open infrastructure, version pinning, CI graph.
|
|
12
|
+
|
|
13
|
+
---
|
|
14
|
+
|
|
15
|
+
## 1. Principles
|
|
16
|
+
|
|
17
|
+
| # | Principle | Concrete rule in this repository |
|
|
18
|
+
| --- | --- | --- |
|
|
19
|
+
| 1 | Library-first | TypeScript is the primary API; zero runtime dependencies; ESM; `package.json` subpaths per module; Python (`qemubridge.py`) and C++ (`libs/`) act as bridges and mirrors, not as the main surface |
|
|
20
|
+
| 2 | Flat monolith | Tracked files stay flat: root-first plus exactly five directories (`libs/`, `docs/`, `tests/`, `web/`, `.github/workflows/`), at most two levels, lowercase names without underscores or hyphens except the six dotted mandatory configs (`vm.config` family) |
|
|
21
|
+
| 3 | 20-25 related contexts per file | Every module header lists its contexts; the count is a hard band enforced in review (god-file and scatter-file anti-patterns both rejected) |
|
|
22
|
+
| 4 | Internal memory first | Mutable state lives in `Map`/`WeakMap` containers (`cpuRegistry`, `gpuregistry`, `engineRegistry`, `InternalMemory`, `regionledger`); no module-level mutable globals, no runtime-specific global state |
|
|
23
|
+
| 5 | Three-layer engine | Layer 1 interposition (`libs/virtualhardware.c`), layer 2 identity and rendering (procfs generators + Mesa stack in `render.ts`), layer 3 execution engines (Docker/QEMU/Firecracker/gVisor/Kata/CLH orchestrated by `orchestrator.ts`) |
|
|
24
|
+
| 6 | `node:*` built-ins first | Only `node:crypto`, `node:events`, `node:fs`, `node:child_process`, `node:http`, `node:os`, `node:path`, `node:timers/promises` and friends; no third-party import anywhere in the engine |
|
|
25
|
+
| 7 | Open infrastructure | Hosts are never hardcoded: `resolveHost()` derives from network interfaces or the user choice; ports default to `crypto.randomInt(30000) + 30000`; `localhost`, `127.*` and `0.0.0.0` literals appear only inside the guard that rejects them |
|
|
26
|
+
| 8 | One of each critical component | One event bus (`enginebus` extended by `sandboxevents`), one lifecycle machine (15 states), one metrics component (`sandboxmetrics` extending `MetricsStore`) - the merge eliminated the duplicate Meta variants (`TypedEventBus`, `SaddleEventBus`, `OtelRecorder`, `VmState`, `VmPhase`) |
|
|
27
|
+
| 9 | Observer contracts | English JSDoc in third person, error catcher (`try`/`catch` returning typed errors) on every fallible path, 44 px minimum touch target for any UI consumer, no emoji |
|
|
28
|
+
| 10 | Date-first versioning | Versions resolve to the newest primary-source-verified release; the 2026-08-23 pass corrected the kernel (7.1.9 stable / 6.18.45 longterm, never 7.2.1), OVMF (edk2-stable202605), wgpu (30.x), Spin (3.6.0 spinframework), containerd (2.3.4, no LTS seal) and WireGuard (kernel mainline, in-tree since 5.6); older ledgers become history (see section 12) |
|
|
29
|
+
| 11 | Module modes (nbit) | `virtualhardware.json` `moduleModes.nbit` enumerates 16 consumption modules - library, binary, desktop, mobile, cli, server, web, extension, package, orchestrator, compute, edge, wasm, container, microvm, k8s - so any target consumes the same flat root |
|
|
30
|
+
| 12 | Modularity via contracts, not folders | ESM factory contracts and an export barrel replace folder hierarchy (section 5) |
|
|
31
|
+
|
|
32
|
+
## 2. Flow diagram
|
|
33
|
+
|
|
34
|
+
```text
|
|
35
|
+
unmodified guest binaries
|
|
36
|
+
lscpu free nvidia-smi clinfo vulkaninfo glxinfo CPUID
|
|
37
|
+
|
|
|
38
|
+
v
|
|
39
|
+
+----------------------------------------------------------------+
|
|
40
|
+
| layer 1 - interposition |
|
|
41
|
+
| libs/virtualhardware.c (LD_PRELOAD / ld.so.preload) |
|
|
42
|
+
| open family + sysinfo + uname + gethostname + inotify watcher |
|
|
43
|
+
+----------------------------------------------------------------+
|
|
44
|
+
| generated /etc/virtual/{cpuinfo,meminfo,...}
|
|
45
|
+
+--------------------------+---------------------------------+
|
|
46
|
+
| v v
|
|
47
|
+
| layer 2a - identity | layer 2b - software GPU |
|
|
48
|
+
| virtualcpu.ts (bank 6+OMNI) | render.ts: Mesa 26.2.1 |
|
|
49
|
+
| virtualmemory.ts (meminfo) | llvmpipe GL 4.6 / lavapipe |
|
|
50
|
+
| virtualgpu.ts (PCI ids) | VK 1.4 / Rusticl CL 3.1 |
|
|
51
|
+
+-------------------------------+-------------------------------+
|
|
52
|
+
|
|
|
53
|
+
v
|
|
54
|
+
+----------------------------------------------------------------+
|
|
55
|
+
| layer 3 - execution engines (orchestrator.ts) |
|
|
56
|
+
| docker 29.7.2 | qemu 11.1.0 TCG/MTTCG | firecracker 1.16.1 |
|
|
57
|
+
| gvisor 20260817 | kata 4.1.0 | cloud hypervisor 53.0 |
|
|
58
|
+
| warm pool | criu 4.2.1 checkpoints | compose 5.5.0 |
|
|
59
|
+
+----------------------------------------------------------------+
|
|
60
|
+
^ | ^
|
|
61
|
+
| enginebus (51 typed topics, replay ledger 200) |
|
|
62
|
+
| v |
|
|
63
|
+
+----------------------------------------------------------------+
|
|
64
|
+
| index.ts - factory, validateSpec, InternalMemory, MetricsStore,|
|
|
65
|
+
| planner (plan -> qemu argv / docker run / toml / lint), barrel |
|
|
66
|
+
+----------------------------------------------------------------+
|
|
67
|
+
```
|
|
68
|
+
|
|
69
|
+
The three layers compose: a sandbox can run on Docker with the interposer only (cheapest), on QEMU TCG for CPUID-accurate identities, or on Firecracker warm pools for millisecond starts. The orchestrator selects per sandbox (section 10); the bus carries every transition (section 4).
|
|
70
|
+
|
|
71
|
+
## 2a. Data flow walkthrough (one sandbox, nine steps)
|
|
72
|
+
|
|
73
|
+
1. **Spec.** The caller hands `createVirtualEngine` (or the planner CLI reading `vm.config.toml`) a spec: vcpus, memoryGB, vramGB, host, optional port.
|
|
74
|
+
2. **Validation.** `validateSpec` runs the nine rule checks plus warnings (vram above ram, MIG off at 96 GB, firecracker above 64 vcpus); violations return typed errors, never throws without context.
|
|
75
|
+
3. **Planning.** `plan`/`defaultplan` resolve CPU model, dies, MTTG threads (`satisfies`-checked), topology product via `plantopology`; `planlint` applies the floor/ceiling checks; `plantoml` renders the human twin.
|
|
76
|
+
4. **Identity.** `generateVirtualCpuinfo`/`generateVirtualMeminfo` render the procfs payloads; `createvirtualgpu` resolves the PCI id and NVML env; the entrypoint installs them under `/etc/virtual/` for the interposer.
|
|
77
|
+
5. **Selection.** The orchestrator probes runtimes (`detectall`): KVM detector, docker socket, firecracker api socket availability; the four-rule policy picks the strategy.
|
|
78
|
+
6. **Provisioning.** The chosen `runtimestrategy` builds its command (`dockerrun`, `firecrackerruntime` machine-config JSON, `qemuruntime.buildcommand`, ...); ports come from `allocport`; hosts from `resolvehost`.
|
|
79
|
+
7. **Runtime.** The sandbox runs; `sandboxproxy` guards lifecycle (pause/resume/dispose), the health monitor samples vm/gpu/host probes, `sandboxmetrics` records through `MetricsStore` into `InternalMemory`.
|
|
80
|
+
8. **Events.** Every transition publishes on the single bus (`vm:phase`, `sandbox:*`, `mttg:*`, ...); the replay ledger keeps the last 200; the OTel exporter exposes Prometheus on a random port when enabled.
|
|
81
|
+
9. **Teardown.** `Symbol.dispose` chains (`sandboxhandle`, `modellease`, `MetricsStore` flush) unwind resources; the warm pool refills in the background; the audit JSONL gains the final entry.
|
|
82
|
+
|
|
83
|
+
## 3. Module inventory (real sizes)
|
|
84
|
+
|
|
85
|
+
Line counts are the shipped files (v2 carryover plus the v3/v5/v6 additions); every module header carries its own context list and its merge provenance.
|
|
86
|
+
|
|
87
|
+
| Module | Lines | Role | Key contexts |
|
|
88
|
+
| --- | --- | --- | --- |
|
|
89
|
+
| `orchestrator.ts` | 5462 | sandbox and VM orchestration: six runtime strategies, warm pool, RBAC, reservations, affinity, NUMA scheduler, balloon, SR-IOV GPU assignment, passage routing, MTTG queue, docker bridge, spawnqemu, health, autoscale, migration, snapshots, checkpoints, hot-reload, plugins, audit, leader election, OTel exporter | 25 |
|
|
90
|
+
| `scheduler.ts` | 1600 | tenant placement and QoS plane: tenant registry, QoS classes (guaranteed/burstable/besteffort/idle), the AIP-sched placement policy, PSI-fed LSTM utilization predictors, anomaly detection, the RL autoscaler and the CRDT vm.config sync (v5-C builders) | 20-25 |
|
|
91
|
+
| `compute.ts` | 2992 | compute plane: wasm tier (Wasmtime 48.0.0 LTS, WASI 0.2/0.3), webgpu paths (wgpu 30.x aligned), AI workload planners, Node 26 API adoption, AI-session checkpoint, post-quantum usage, NPU/Ray-vLLM/WebTransport/OPFS/WebCodecs planners | 20-25 |
|
|
92
|
+
| `media.ts` | 1337 | media and transcode domain: the mttg pipeline mirror (skip rules, stage ledger), codec matrix, tone-map/denoise plans, VMAF targets and the tailscale endpoint planner (v5 wave addition) | 20-25 |
|
|
93
|
+
| `virtualmemory.ts` | 2303 | memory tiers (DDR5-6400 51.2 GB/s/ch, HBM3e 8 TB/s, GDDR7 1792 GB/s), MIG profiles, NUMA, hugepages, KSM, ballooning, overcommit, docker flags, placement tiers, CXL devices, memorymodularizer, meminfo generation | 25 |
|
|
94
|
+
| `index.ts` | 1491 | engineversions ledger, engine limits, randomPort/resolveHost/buildEndpoint, specschema + validateSpec, InternalMemory, MetricsStore, enginebus (51 topics), VirtualEngine state machine, registry, factory, planner (defaultplan, qemuargv, dockerrun, plantoml, planlint), barrel | 14 sections |
|
|
95
|
+
| `render.ts` | 1325 | Mesa stack facts (llvmpipe/lavapipe/rusticl), Xvfb recipe, GPU virtual identity data, mesaenvbuilder presets, smiformat 89-char, renderer classes, probes | 25 |
|
|
96
|
+
| `security.ts` | 1449 | Landlock ABI v10, seccomp deny-by-default, eBPF LSM, cgroups v2, post-quantum TLS policy, Rfc10024 negotiator, PqcAuditTrail tamper-evident chain, CRIU SELinux relabel, layer composition with fail-closed self-check | 25 |
|
|
97
|
+
| `virtualcpu.ts` | 1273 | vendor identities, Zen 5/Arrow Lake flag sets, BEST_VIRTUAL_PROCESSORS, cpuRegistry, solvetopology, cpuinfo/lscpu generators, scoring, modellease (`using`) | 24 |
|
|
98
|
+
| `alternatives.ts` | 1218 | ten sandbox engine categories with real adapters (create/exec/snapshot/destroy/metrics), registry with aliases, comparison matrix | 25 |
|
|
99
|
+
| `qemubridge.py` | 1340 | async QMP bridge over unix socket: 22 observer ops fused with the v5 QEMUQMPClient uniques (hotplug pairs, batch, dirty-rate, affinity), smiadapter a100/h100 facade | 25 |
|
|
100
|
+
| `virtualgpu.ts` | 1136 | verified GPU bank, PCI ids (RTX PRO 6000 corrected to 10DE:26B5), vfio bind/unbind, rom dump, Looking Glass B7, vGPU formula, vendor-reset, SR-IOV DKMS, MIG density validator, NVENC tables, registergpudata normalizer | 25 |
|
|
101
|
+
| `performance.ts` | 1049 | seven optimization layers with LayerPatch merge, percentile harness, regression verdicts, performance.mark/measure | 25 |
|
|
102
|
+
| `virtualization.ts` | 1582 | qemuopts turbo argv (TDX/SEV-SNP/OVMF/io_uring/venus), six passage modes, MTTG cgroups v2 builders, EEVDF/BORE/sched_ext notes, mttggrid (MTTG_MAX 1e6, steal, multiplex), memory backend bridge, kvmcapnames, checkpoint/restore plans, CXL Type-3/ZNS/P4/TSN planners (v5-C) | 24 |
|
|
103
|
+
| `libs/virtualizationcore.cpp` | 4596 | C++26 TU: RAII KVM system/vm/vcpu, QmpSocket+QmpClient, dirty-log ring, mdev, VFIO container, VgpuScheduler, MigManager (7-instance/192 GB validator), SriovManager, NVENC dual engine, NvlinkC2c interconnect | 25 |
|
|
104
|
+
| `libs/gpumonitor.cpp` | 1543 | C++26 four-mode build: CLI smi-adapter, NVML/libcuda shim, N-API addon, forge mode (Plan/validate/qemu_argv, Mttg work-stealing mirror) | 12 hooks |
|
|
105
|
+
| `libs/virtualhardware.c` | 1011 | C11 LD_PRELOAD core: open-family interception, vhe_translate, inotify regeneration thread, xorshift32 drift, constructor 101 | 12 hooks |
|
|
106
|
+
|
|
107
|
+
Data files: `gpus.json` 2408, `processors.json` 2217, `vm.config.json` 1910, `cores.json` 1801, `mttg.config` 1548, `boards.json` 1517, `passage.config` 1330, `qemu.config` 1061, `virtualhardware.json` 739, `docker.config` 768. Web node (`web/`, the v6 edition plus the v7 wave): `sandbox.js` 1433 is the browser-pure engine port (bank, procfs payloads, the 89-char smi table, mesa summaries, boot dmesg and the command dispatcher), `server.js` 640 serves the console plus the `/api/v1` contract (health, spec catalogs, sandbox lifecycle, exec) over `node:http`, `index.html` 646 renders the spec panel, terminal and bus timeline, adapters `vercel.json`/`netlify.toml`/`caddyfile` (static edge, api reverse proxied) and `readme.md` 120; the v7 wave completes the node with `db.js` (sqlite persistence for users, sessions and sandboxes), `auth.js` (scrypt password hashing, timing-safe verification, cookie sessions), `mesh.js` (HMAC-SHA256 signed clone-to-main calls with replay windows), the `login.html`/`register.html`/`dashboard.html` pages, `package.json`/`Dockerfile` (image `ghcr.io/wenathlan/e2ugh (main image, web/ included)`; node pinned by the root `.nvmrc`), the database definition kept flat as `schema.prisma` plus `init.sql`, and `mime.types`. Total repository: about 62,200 lines across 83 tracked files (the v2 carryover plus the v3 domains, the v5 media/test waves and the v6 web edition; the `tests/` suite alone is 3,674 lines across eleven files).
|
|
108
|
+
|
|
109
|
+
## 3a. v3 redistribution: features live in domains
|
|
110
|
+
|
|
111
|
+
The former `future.ts` (2720 lines, 55 features in ten categories) was decomposed in v3: features no longer live in a chronological catch-all but in the domain module that owns the surrounding machinery. The mapping:
|
|
112
|
+
|
|
113
|
+
| Domain module | Features absorbed |
|
|
114
|
+
| --- | --- |
|
|
115
|
+
| `scheduler.ts` | tenant registry and placement, QoS classes, the AIP-sched policy, PSI-fed LSTM utilization predictors, anomaly detection (the scheduling half of the old tenants/QoS/predictor contexts) |
|
|
116
|
+
| `compute.ts` | wasm tier (Wasmtime 48.0.0 LTS, WASI 0.2/0.3, WIT bindings, fuel metering, component ACL), webgpu surface (forceFallbackAdapter over lavapipe, compute pipelines, WGSL cache, matmul dispatch, wgpu 30.x alignment), AI workload planners (dataloader /dev/shm, TF/CUDA matrix, ONNX WebGPU session, LLM planner, headless Stable Diffusion, VRAM budget), Node 26 APIs (Temporal, Float16, node:sqlite, module.register, Perfetto), plus AI-session checkpoint and post-quantum usage |
|
|
117
|
+
| `virtualization.ts` | checkpoint/restore primitives: CRIU plans, MAP_PRIVATE snapshots, UFFD projection, dirty-page diffing, the migration state machine (next to the QEMU/Firecracker snapshot machinery they drive) |
|
|
118
|
+
| `security.ts` | post-quantum core: ML-KEM FIPS 203, ML-DSA, X25519MLKEM768 hybrid policy, the Rfc10024 negotiator and the PqcAuditTrail tamper-evident audit chain (next to the TLS policy they configure) |
|
|
119
|
+
|
|
120
|
+
The remaining categories of the old file were already domain-owned: kernel features sit in `security.ts`/`virtualization.ts`, hardware modules in `virtualcpu.ts`/`virtualmemory.ts`/`virtualgpu.ts`, developer experience in `index.ts`/`orchestrator.ts`. Nothing was dropped; the 55-feature inventory is preserved one-to-one under domain headers.
|
|
121
|
+
|
|
122
|
+
## 3b. Test patterns
|
|
123
|
+
|
|
124
|
+
Tests live in the `tests/` directory (one of the five allowed directories) and run with the Node built-in runner: `node --test 'tests/*.test.ts'` (153 tests across eleven files - engine, features, media, render, simulation, specs, virtualcpu, virtualgpu, virtualmemory, web, workflow - all passing on Node 24 and 26), the same runner the ci.yml smoke gate executes on Node 26.7.0. Patterns:
|
|
125
|
+
|
|
126
|
+
- `node:test` (`describe`/`it` or top-level `test`) plus `node:assert/strict`; no Jest, no third-party harness, no install step (the engine has zero runtime dependencies).
|
|
127
|
+
- One test file per area under test (planner and lint rules, cpuinfo/meminfo generators, MIG density validator, QEMU argv builder); assertions target public exports, never module internals.
|
|
128
|
+
- Doc-tests remain `@example` blocks in JSDoc (the planner asserts in `index.ts`), and every test stays deterministic: ports use the 30000-59999 random band or explicit ephemeral allocation, no network, no timing-dependent assertions.
|
|
129
|
+
|
|
130
|
+
## 3c. Web node architecture (v7)
|
|
131
|
+
|
|
132
|
+
The web node is a static edge plus one self-hosted process. Clones (Vercel and Netlify static deploys of the `web/` pages, redeployed from the `pages.yml` zip -9 bundle) ship only immutable assets: the console, the auth pages and `sandbox.js`, which runs the whole engine client-side and keeps working with no backend. The main node (`node web/server.js` behind the `caddyfile` on devthink.pro, packaged as `ghcr.io/wenathlan/e2ugh (main image, web/ included)`) owns everything stateful: `db.js` opens the sqlite file (`schema.prisma`/`init.sql` define it, kept flat per the two-level contract), `auth.js` is the auth authority - scrypt password hashing with per-user salts, timing-safe verification and server-side sessions delivered as `HttpOnly` cookies - and `mesh.js` verifies the HMAC-SHA256 signature (method, path, body digest, timestamp, bounded replay window) that every clone attaches to forwarded calls before routing. The design is deliberately anti-serverless: no function runs on the edge platforms, clones hold no secrets and no database, and unauthenticated clones receive 401 from the main node instead of any partial authority.
|
|
133
|
+
|
|
134
|
+
## 4. One bus, one state machine, one metrics store
|
|
135
|
+
|
|
136
|
+
The v2 merge inherited three orchestrator lineages that each carried an event bus, a lifecycle model and a metrics recorder. The resolution is structural, not conventional:
|
|
137
|
+
|
|
138
|
+
- **Event bus.** `enginebus` in `index.ts` owns the topic table (`enginetopics`, 51 typed topics: `engine:*`, `sandbox:*`, `vm:*`, `vcpu:*`, `vram:*`, `gpu:*`, `sriov:*`, `passage:*`, `mttg:*`, `docker:*`, `qemu:*`, `health:*`, `autoscale:*`, `numa:*`, `migration:*`, `snapshot:*`, `checkpoint:*`, `config:*`, `plugin:*`, `rbac:*`, `audit:*`, `leader:*`, `quota:*`, `preempt:*`, `node:*`, `system:*`, `otel:*`). `sandboxevents` in `orchestrator.ts` extends it and adds a replay ledger (last 200 events) plus the legacy 8-name v5 mapping onto `sandbox:*`. No subsystem constructs its own `EventEmitter`.
|
|
139
|
+
- **Lifecycle.** A single 15-state machine: `pending -> creating -> scheduling -> binding -> provisioning -> running -> degraded -> paused -> snapshotted -> migrating -> restoring -> draining -> stopped -> destroyed`, plus `failed`, with a complete guard map. The Meta `VmState` (11 states) and `VmPhase` (12 phases) folded in via `lifecyclefromphase()`; those types no longer exist.
|
|
140
|
+
- **Metrics.** `sandboxmetrics` extends the disposable `MetricsStore` of `index.ts` (write-through into the underlying `InternalMemory`, flush/restore to `.metrics.json`, `Symbol.dispose` and `asyncDispose`). The Meta `OtelRecorder` capabilities (labels, ring buffer of 10,000 points, histograms, OTLP push, Prometheus `# TYPE` export) were absorbed; `OtelPoint` and the standalone recorder class were deleted.
|
|
141
|
+
|
|
142
|
+
## 5. Modularity via ESM contracts
|
|
143
|
+
|
|
144
|
+
The barrel at the bottom of `index.ts` re-exports four modules; the remaining eight are declared as package subpaths in `package.json`:
|
|
145
|
+
|
|
146
|
+
```ts
|
|
147
|
+
export * from './virtualcpu.ts';
|
|
148
|
+
export type { migprofileid } from './virtualmemory.ts';
|
|
149
|
+
export * from './virtualmemory.ts';
|
|
150
|
+
export * from './virtualgpu.ts';
|
|
151
|
+
export * from './virtualization.ts';
|
|
152
|
+
```
|
|
153
|
+
|
|
154
|
+
Factory contracts (signatures simplified; full JSDoc in the modules):
|
|
155
|
+
|
|
156
|
+
| Contract | Symbol | Module |
|
|
157
|
+
| --- | --- | --- |
|
|
158
|
+
| Engine factory | `createVirtualEngine(options): VirtualEngine` | `index.ts` |
|
|
159
|
+
| Spec validation | `validateSpec<const T extends enginespec>(spec: T)` | `index.ts` |
|
|
160
|
+
| Processor factory | `createVirtualProcessor(model, vcpus): provisionedcpu` | `virtualcpu.ts` |
|
|
161
|
+
| Memory facade | `createVirtualMemory(request): virtualmemorymanager` | `virtualmemory.ts` |
|
|
162
|
+
| GPU factory | `createvirtualgpu(id)` | `virtualgpu.ts` |
|
|
163
|
+
| QEMU turbo argv | `buildqemucmd(opts: qemuopts)` | `virtualization.ts` |
|
|
164
|
+
| MTTG grid | `creategrid(host?, virtual?): mttggrid` with `MTTG_MAX = 1_000_000` | `virtualization.ts` |
|
|
165
|
+
| Orchestrator facade | `getorchestrator()` singleton with guard | `orchestrator.ts` |
|
|
166
|
+
| Python bridge | `SaddleQemuBridge`-class surface: connect/start_vm/monitor_hmp/query_status/stop | `qemubridge.py` |
|
|
167
|
+
| C++ core | `vhe::virt` namespaces vm/gpu/enc, `vhe_version()` / `vhe_nvenc_mpix()` exports | `libs/virtualizationcore.cpp` |
|
|
168
|
+
|
|
169
|
+
Cross-language contract: TS planners emit argv; `qemubridge.py` drives QMP; the C++ core validates KVM caps (`kvmcapnames` in `virtualization.ts` lists the eight capability checks) and computes memory backends (`buildmemorybackendargs` mirrors the C++ `MemoryFdManager`).
|
|
170
|
+
|
|
171
|
+
## 6. Design patterns mapped to real symbols
|
|
172
|
+
|
|
173
|
+
| Pattern | Symbols (all real, all shipped) |
|
|
174
|
+
| --- | --- |
|
|
175
|
+
| Registry | `cpuRegistry` (virtualcpu), `gpuregistry` (virtualgpu), `engineRegistry` + `runtimeregistry` (index/orchestrator), `regionledger` (virtualmemory) |
|
|
176
|
+
| Builder | `virtualcpubuilder`, `virtualgpubuilder`, `mesaenvbuilder`, `gpuprofilebuilder`, `tenantcgroupbuilder` (cgroups v2 slices), `smiadapterbuilder` |
|
|
177
|
+
| Factory | `createVirtualProcessor`, `createVirtualMemory`, `createvirtualgpu`, `createVirtualEngine`, `rendererfactory` |
|
|
178
|
+
| Strategy | `runtimestrategy` and its six implementations (dockerruntime, qemuruntime, firecrackerruntime, gvisorruntime, kataruntime, clhruntime); `memorycontroller` tier controllers (ddr5/hbm3e/gddr7) |
|
|
179
|
+
| Facade | `virtualmemorymanager`, the orchestrator facade (`createvm/startvm/.../dumpstate`), `virtualizationcore.cpp` `VirtualizationCore::build` pipeline |
|
|
180
|
+
| Proxy | `guardregion` (guarded memory region), `rendererproxy` (frozen five-key profile), `sandboxproxy` (guarded sandbox with boot timing and dispose) |
|
|
181
|
+
| Observer | `enginebus`/`sandboxevents`, `memorystats` (85/95/99 taps), `healthprobes` WeakMap |
|
|
182
|
+
| Disposable (`using`) | `modellease` (Symbol.dispose lease on registered CPUs), `MetricsStore`, `sandboxhandle` (SIGTERM to SIGKILL escalation), `startsampling` |
|
|
183
|
+
| Planner | `memorymodularizer` (host tier detection, zram planning, QEMU synthesis, cgroup export, JSON persistence), `plan`/`defaultplan`/`planlint` in index |
|
|
184
|
+
| Work-stealing grid | `mttggrid` (`creategrid`, `steal`, `spawnthreads`, `multiplex`), the TS mirror of the `Mttg` class in `libs/gpumonitor.cpp` forge mode |
|
|
185
|
+
|
|
186
|
+
Naming warning carried in every header: MTTCG (QEMU multi-threaded TCG, one host thread per vCPU) and MTTG (multi-tenant thread groups, the M:N grid) are unrelated concepts with similar acronyms and are never merged.
|
|
187
|
+
|
|
188
|
+
## 7. Configuration system
|
|
189
|
+
|
|
190
|
+
- **`vm.config` family.** One schema, three serializations: the JSON twin (`vm.config.json`, 22 profiles), the TOML human file (parsed by the planner CLI regex; a real parser can replace it without breaking the rest), and the INI-like no-extension variant used by the forge. Deterministic SHA-256 identity: the same config always yields the same VM id.
|
|
191
|
+
- **Six mandatory dotted configs.** `qemu.config` (machine/CPU/spoofing/MTTCG + libvirt overlay), `mttg.config` (cgroups v2 controllers, tenants, QoS, transcode; hosts the `[mttcg]` TCG section with a cross-reference note), `passage.config` (four domains: pingora gateway, passthrough modes, network binding, host playbook), `docker.config` (engine, stages, seccomp, CDI, buildx), `gpu` and `vm` twins in JSON.
|
|
192
|
+
- **Eleven data files.** `processors.json` (57 CPUs, cpuid reference, lscpu templates, QEMU models), `gpus.json` (19 GPUs + 5 APU blocks, smi-adapter profiles, MIG, shims), `cores.json` (core types, vCPU factory 1-1024, memory presets), `boards.json` (20 boards + platform reference), `virtualhardware.json` (master binding: modules, module modes, defaults, quick catalog, legacy catalog, guest envelope schema, resolution order, spec inventory).
|
|
193
|
+
- **Hot reload.** `enablehotreload()` watches the six configs and the eight JSONs, auto-creates defaults with real content when a file is missing, and validates on every write (`handleconfigreload`).
|
|
194
|
+
|
|
195
|
+
## 8. Multi-mode surface
|
|
196
|
+
|
|
197
|
+
The engine exposes about 30 operational modes; each mode is a thin consumption profile over the same flat root (the F1 template topics - desktop, web, extension, cli, mobile, multimode, packaging, deploy, librarymodes - collapsed into this table instead of being cloned into separate files):
|
|
198
|
+
|
|
199
|
+
| Mode group | Modes | Consumption |
|
|
200
|
+
| --- | --- | --- |
|
|
201
|
+
| Core | vm, gpu, passage, qemu, mttg, docker | direct module imports (the six config domains) |
|
|
202
|
+
| Catalog | boards, cores, processors, vcpus, vram, memory | data-file reads plus validators |
|
|
203
|
+
| Runtime | network, storage, security, performance, emulation, acceleration, virtualization, isolation | engine modules |
|
|
204
|
+
| Delivery | desktop, web, extension, cli, mobile, deploy, packaging, library | the 16 `moduleModes.nbit` targets |
|
|
205
|
+
| Operations | debug, benchmark, orchestration, telemetry, cache, forge, mirror, pipeline, workload, provisioning | orchestrator, metrics, registry, forge mirrors |
|
|
206
|
+
|
|
207
|
+
Per-target delivery notes (one line each, from the collapsed topic docs):
|
|
208
|
+
|
|
209
|
+
| Target | How the same library is consumed |
|
|
210
|
+
| --- | --- |
|
|
211
|
+
| desktop | EgUi lab UI over the in-process factory; every control honors the 44 px touch target |
|
|
212
|
+
| web | browser bundle shipped as the `web/` console (v6): `sandbox.js` mirrors the verified bank, `server.js` serves it and `/api/spec`; zero dependencies keep the graph tree-shakeable |
|
|
213
|
+
| extension | browser extension service worker; endpoints bind a random port, never localhost |
|
|
214
|
+
| cli | planner CLI: `node --experimental-strip-types index.ts` reading `vm.config.toml` |
|
|
215
|
+
| android | container/wasm module surface through the JVM bridge; arm64 native runner images |
|
|
216
|
+
| ios | wasm module surface; no native engine component required |
|
|
217
|
+
| deploy | the four workflows plus the compose stack documented in `readme.md` |
|
|
218
|
+
| packaging | npm provenance publish, GHCR multi-arch, level-9 zip with SHA-256 |
|
|
219
|
+
| library | the barrel import; `memoryPriority: internal` keeps everything in-process |
|
|
220
|
+
| server | optional `server` and `cli` optionalDependencies declared in `package.json` |
|
|
221
|
+
| orchestrator | the facade singleton with leader election for multi-node deployments |
|
|
222
|
+
| compute / edge / wasm / container / microvm / k8s | engine selection through `runtimeregistry` (compute: docker/qemu; edge: gvisor; wasm: wasmtime adapters; container: OCI twins; microvm: firecracker/CLH; k8s: kata runtimeClass translation) |
|
|
223
|
+
|
|
224
|
+
## 8a. API surface (endpoint table)
|
|
225
|
+
|
|
226
|
+
The v6 observer API reference (25 sections) collapsed onto the shipped v2 symbols:
|
|
227
|
+
|
|
228
|
+
| Endpoint (observer name) | v2 symbol | Notes |
|
|
229
|
+
| --- | --- | --- |
|
|
230
|
+
| entry ts | `index.ts` barrel | re-exports four modules; eight more via package subpaths |
|
|
231
|
+
| error catcher | `safecall`, typed error classes | every fallible path; `traceId` style context in orchestrator errors |
|
|
232
|
+
| factory options | `engineoptions` | vcpus, memoryGB, vramGB, host, port override; limits from `enginelimits` (1-192 identity, 1-1024 factory, 8-96 MIG, ports 30000-59999) |
|
|
233
|
+
| endpoints: vm | `createvm`, `startvm`, `destroyvm`, `transitionvm` | guards from the single machine; `vm:phase` events |
|
|
234
|
+
| endpoints: gpu | `registergpu`, `assigngpu`, `releasegpu`, `listsriov`, `attachgpupassthrough` | reads `gpus.json` through `bootstraphardwareview` |
|
|
235
|
+
| endpoints: passage | `addpassageroute`, `resolvepassage`, `removepassageroute` | latency budgets per protocol (vsock 15 us, vxlan +20 us) |
|
|
236
|
+
| endpoints: qemu | `buildqemucmd`, `qemuargv`, `qemuruntime.buildcommand` | the three-tier argv hierarchy documented in `virtualization.ts` |
|
|
237
|
+
| endpoints: orchestration | `allocport` + `resolvehost` | `crypto.randomInt(30000) + 30000`; interfaces-derived host |
|
|
238
|
+
| endpoints: forge | forge mirrors map | GHCR/GitHub/npm mirrors cached in `InternalMemory` |
|
|
239
|
+
| core orchestrator | `getorchestrator()` | 25 correlated domains behind one facade |
|
|
240
|
+
| python bridge | `qemubridge.py` | stdlib-only QMP client; NDJSON/QMP contract shared with TS |
|
|
241
|
+
| cpp headers | `libs/virtualizationcore.cpp` (TU-unique) | `vhe_version()`/`vhe_nvenc_mpix()` extern C exports |
|
|
242
|
+
| catalog json api | data files with `$schema`/`meta` | `readConfig<T>` pattern; strict JSON validated in CI |
|
|
243
|
+
| observer contracts | JSDoc third person | no first person anywhere in the public surface |
|
|
244
|
+
|
|
245
|
+
## 9. Memory architecture
|
|
246
|
+
|
|
247
|
+
- **Internal priority.** `InternalMemory` (index.ts) is a `Map`-backed store with `WeakMap` side tables (`#totalslots`), used by the engine registry, the metrics store, the passage memory pipeline and the forge mirror caches. It is the default for every mode; nothing requires Redis or S3 to run.
|
|
248
|
+
- **Pluggable external tiers.** The memory passage pipeline (`memoryregion` builder, `regionledger`, `guardregion` proxy) accepts file/redis/s3 TTL backends when a host wants persistence; `memorypersonalization` ranges (1-1024 GB, presets, NUMA, CXL) are documented in `hardware.md` section 8.
|
|
249
|
+
- **Host-aware planning.** `memorymodularizer` detects real host tiers (lspci CXL scan for vendor 1e98, `/dev/pmem0` PMEM_DAX, shared Blackwell memfd), plans zram with workload-dependent compression factors, synthesizes QEMU backends (`-object memory-backend-file,hugetlb`, CXL Type-3, virtio-mem 2M blocks), exports cgroup v2 slices and QMP balloon commands, and persists the plan as JSON.
|
|
250
|
+
|
|
251
|
+
## 10. Orchestrator design
|
|
252
|
+
|
|
253
|
+
Six runtime strategies behind one `runtimestrategy` interface; selection policy (verified facts, not heuristics):
|
|
254
|
+
|
|
255
|
+
1. Sub-10 ms starts with KVM present: Firecracker warm pool (File or Uffd snapshot backend; 125 ms cold, ~4 ms restore, 150 VMs/s, under 5 MiB each).
|
|
256
|
+
2. KVM present, OCI-shaped untrusted workload: Kata 4.1.0 (runtime-rs) or Cloud Hypervisor 53.0 with vfio-user devices.
|
|
257
|
+
3. No KVM (GitHub-hosted runners): QEMU TCG with MTTCG for VM identities; Docker with the `security.ts` layers for execution; gVisor runsc where syscall interception is preferred.
|
|
258
|
+
4. Long-lived workers needing fast restart: CRIU 4.2.1 checkpoint/restore with SELinux relabel.
|
|
259
|
+
|
|
260
|
+
Supporting subsystems: warm pool (prewarm/acquire/release/refill/drain, MAP_PRIVATE CoW), port allocator and host resolver (never localhost), RBAC with four default roles and `assertpermission`, resource reservations with TTL 300 s, affinity rules and `selectbestnumanode`, CFS-like vCPU scheduler with `scheduletick` rebalancing (above 20% imbalance) and `rebalancenuma`, balloon controller with pressure scoring and gradual 100 MB/500 ms steps, SR-IOV GPU assignment (PF with 7 VFs on Blackwell), passage routing with latency estimates (vsock 15 us, ivshmem bounded at 50,000 Mbps), MTTG queue with dependencies/retry/preemption (guaranteed preempts up to three besteffort), docker bridge with IPAM 10.88.N.O/24, health monitoring with degraded transitions, autoscale with cooldowns, live migration with precopy stages and 50-250 ms measured downtime, qcow2 snapshots and checkpoints (criu/qemu_savevm/docker incremental), plugin system with contracts, append-only JSONL audit per tenant, bully leader election with leases, OTLP exporter with Prometheus `/metrics` on a random port, graceful drain and `dumpstate`. The full engine matrix is in `virtualization.md`.
|
|
261
|
+
|
|
262
|
+
## 11. Coding syntax
|
|
263
|
+
|
|
264
|
+
| Area | Rule (dated 2026-08-22) |
|
|
265
|
+
| --- | --- |
|
|
266
|
+
| TypeScript | 7.0.2 (Go-native port); `strict`, `verbatimModuleSyntax`, `isolatedModules`, `erasableSyntaxOnly`, `exactOptionalPropertyTypes`, `noUncheckedIndexedAccess`; ES2025 target with `lib ES2025+ESNext.Disposable` |
|
|
267
|
+
| Erasable modern syntax | `using`/`await using` (modellease, MetricsStore, sandboxhandle), `satisfies` (`engineversions as const satisfies Record<string,string>`), const type parameters (`validateSpec<const T>`), `#private` fields and accessors, `import.meta.filename` for CLI detection |
|
|
268
|
+
| ESM | `"type": "module"`; relative imports carry the `.ts` extension; no CommonJS `require` |
|
|
269
|
+
| Tests | `node:test` + `node:assert/strict` executed with `node --test 'tests/*.test.ts'`; the dedicated `tests/` directory holds eleven test files (148 cases: 86 planner/generator originals, 24 workflow/simulation gates, 18 feature-audit builders, 4 media pipeline, 1 snapshot regression, 9 web edition), ci.yml runs them on Node 26.7.0; no Jest; doc-tests as `@example` blocks (the planner asserts live in `index.ts` planner docs) |
|
|
270
|
+
| C++26 | `import std;` permitted, `std::expected` as the error channel, `std::mdspan` with the p2662r3 fallback guard, `std::print`/`std::format`, `enum class`, `[[nodiscard]]` on validate/argv/topology, RAII for every fd/socket (no exceptions in happy paths) |
|
|
271
|
+
| C | C11 with `_GNU_SOURCE`, `dlsym(RTLD_NEXT)` resolution, xorshift32 deterministic drift, constructor priority 101 |
|
|
272
|
+
| Python | 3.14 floor; stdlib only (socket, json, logging); try/except logging on every operation |
|
|
273
|
+
| Naming | `vcpus` means QEMU virtual processors; `threads` means SMT siblings; `mttgThreads`/`virtual_threads` means the M:N grid; the three words never mix in one sentence without a qualifier |
|
|
274
|
+
| Anti-patterns deleted from earlier generations | README pasted into every doc; half workflows (checkout + echo); invented SKUs without sources; `any` in TypeScript; printf-based C control planes; Node 18 in setup-node |
|
|
275
|
+
|
|
276
|
+
## 12. Version pinning (date-first)
|
|
277
|
+
|
|
278
|
+
The ledger in `index.ts` (`engineversions`) is the runtime source of truth: Node 26.7.0/24.19.0, TypeScript 7.0.2, Docker 29.7.2, Compose 5.5.0, Mesa 26.2.1, QEMU 11.1.0, Firecracker 1.16.1, Kata 4.1.0, gVisor release-20260817.0, Cloud Hypervisor 53.0, CRIU 4.2.1. Conflicts from the inherited ledgers resolved by rule (old pin -> active pin, with the deciding source class):
|
|
279
|
+
|
|
280
|
+
| Component | Inherited pin | Active pin | Resolution basis |
|
|
281
|
+
| --- | --- | --- | --- |
|
|
282
|
+
| Node.js | 22.12.3 LTS / 23.11.0 | 24.19.0 LTS + 26.7.0 matrix | nodejs.org release blog (2026-08-03 / 2026-08-05) |
|
|
283
|
+
| TypeScript | 5.6.3 | 7.0.2 | npm registry + compiler announcement 2026-07-08 |
|
|
284
|
+
| Docker Engine | 27.3.1 (API 1.47) | 29.7.2 (API 1.52) | docs.docker.com 29 release notes, 2026-08-05 |
|
|
285
|
+
| Buildx / Compose | 0.18.1 / 2.29.7 | 0.36.1 / 5.5.0 | github release pages |
|
|
286
|
+
| QEMU | 9.1.2 (q35-9.1) | 11.1.0 (q35, microvm, nitro) | qemu.org 2026-08-11 announcement |
|
|
287
|
+
| Mesa / LLVM | 25.2.7 / 19.1.7 | 26.2.1 / 22.1.8 | docs.mesa3d.org relnotes, llvm releases |
|
|
288
|
+
| Firecracker | 1.13.2 | 1.16.1 | firecracker releases 2026-07-02 |
|
|
289
|
+
| Wasmtime | 43 / 46.0.1 | 48.0.0 LTS | bytecodealliance releases 2026-08-20 |
|
|
290
|
+
| Linux kernel | 7.2.1 (pin never released; mainline is 7.2) | 7.1.9 stable / 6.18.45 longterm | kernel.org, verified 2026-08-23 |
|
|
291
|
+
| OVMF/EDK2 | 20260213-1 (malformed tag) | edk2-stable202605 | tianocore releases (stableAAAMM format) |
|
|
292
|
+
| WireGuard | snapshot 1.0.20260315 (no such snapshot) | kernel mainline (in-tree since 5.6) | wireguard.com install page |
|
|
293
|
+
| wgpu | 24.x (early 2025) | 30.x (wgpu-info 30.0.0) | crates.io/crates/wgpu, 2026-07 |
|
|
294
|
+
| Spin | 3.2 (stale) | 3.6.0 (repo now spinframework/spin) | github.com/spinframework/spin releases |
|
|
295
|
+
| containerd | 1.7.22 / 2.1.5 | 2.3.4 (no LTS designation; 4-month minors) | containerd releases 2026-08 |
|
|
296
|
+
| Actions checkout | v4.2.2 | v7.0.1 | Node 24 migration forced 2026-06-02 |
|
|
297
|
+
| NVIDIA driver | 560.38.05 / 570.144 | 575.57.08 (CUDA 12.9) | v5 verified bank + deployment docs |
|
|
298
|
+
|
|
299
|
+
The old pins survive only inside `legacyCatalog` provenance blocks in `virtualhardware.json` (kept as history, never as active pins; the re-pin sweep confined every stale number to provenance keys).
|
|
300
|
+
|
|
301
|
+
## 13. Variants
|
|
302
|
+
|
|
303
|
+
| Variant axis | Shipped forms |
|
|
304
|
+
| --- | --- |
|
|
305
|
+
| vm.config | `vm.config.json` (machine), `vm.config.toml` (human, planner CLI input), INI-like no-extension (forge) |
|
|
306
|
+
| Compose | `docker-compose.yml` v2 spec; the deprecated `version:` field and alternate filenames recorded as history |
|
|
307
|
+
| Images | GHCR multi-arch (amd64 native build, arm64 under QEMU user emulation), distroless runtime, per-digest provenance |
|
|
308
|
+
| Engine identities | any-of: virtual identity-only (Docker + interposer), TCG-accurate (QEMU EPYC-v5), microvm (Firecracker), intercepted (gVisor) |
|
|
309
|
+
| Docs | seven reference documents; this file owns architecture, `readme.md` owns the overview; zero cloned sections (cross-references instead) |
|
|
310
|
+
|
|
311
|
+
## 14. Core concepts (from the 00/01 series)
|
|
312
|
+
|
|
313
|
+
- **Lifecycle state machine.** The 15-state machine of section 4; transitions publish on `vm:phase` and `sandbox:*`; guards reject illegal transitions (for example `stopped -> provisioning` requires drain completion).
|
|
314
|
+
- **Error taxonomy.** Typed error classes per subsystem (`hardwareerror` with `subsystem` tag, `memoryerror`, `gpuerror`, `engineerror`, `orchestratorerror` with `ERR_*` codes, `retryable` flag and `context`); every fallible public path carries a catcher; the process-level catcher (`unhandledRejection`/`uncaughtException` into `system:error`) is opt-in through `start()` so library consumers keep their own policy.
|
|
315
|
+
- **Backpressure.** Warm pool floors, MTTG queue concurrency 4 with retry 3 and anti-starvation requeue, memory `memory.high` soft throttle at 0.8x, balloon escalation when host free memory drops under 4 GB, quota table rejecting beyond-limit requests with `ERR_QUOTA_*`.
|
|
316
|
+
- **Capability model.** `plugincontract` with a context-scoped surface; RBAC gates management operations; the sandbox never grants more than the spec validated.
|
|
317
|
+
- **Support matrix.** Linux x86_64/arm64 hosts; KVM optional (TCG fallback); macOS/Windows consumers use the library modes, not the engines.
|
|
318
|
+
|
|
319
|
+
## 15. CI graph (summary)
|
|
320
|
+
|
|
321
|
+
Five workflows gate the tree: ci.yml (lint, typecheck matrix Node 24/26, the node:test suite in `tests/`, build, flat-structure md5 guard, JSON schema validation of the ten data files), publishghcr.yml (the combined container pipeline: per-arch validation legs on push - clinfo/vulkaninfo/glxinfo probes inside the image - and the four-arch GHCR publication with provenance+SBOM on release), release.yml (GHCR + npm provenance + level-9 zip with SHA-256), pages.yml (the merged web pipeline: module syntax gate, boot smoke on port 37810, html lint, the webapi auth/mesh suite with a throwaway `E2UGH_DB`, the zip -9 static bundle and the GitHub Pages deployment of the web tree) and security.yml (CodeQL C/C++/TS, dependency review, Dockle/Trivy SARIF, gitleaks, Scorecard, Biome security group, license allowlist). Full descriptions and pins are in `readme.md`; the workflows themselves are the executable contract.
|
|
322
|
+
|
|
323
|
+
## 16. Compliance checklist
|
|
324
|
+
|
|
325
|
+
Flat tree (root plus `libs/`, `docs/`, `tests/`, `web/`, `.github/workflows/` only); no `src/`; lowercase names; six dotted configs present; every module header carries contexts, provenance and sources; no emoji; no hardcoded localhost; `node:*` first; one bus, one machine, one metrics; data files parse as strict JSON with `$schema`/`meta` headers; docs exceed 40 sections across the set; every version claim dated and primary-sourced. CI enforces the machine-checkable items; review enforces the rest.
|
|
326
|
+
|
|
327
|
+
## 17. Future extensions within the flat budget
|
|
328
|
+
|
|
329
|
+
The flat contract keeps the tree shallow (root plus the five allowed directories), so growth happens inside files (new contexts join the 20-25 band or split a module in two) rather than in new directory trees. The v3 redistribution already exercised that rule: the `future.ts` catch-all split into `scheduler.ts` and `compute.ts` with the checkpoint and post-quantum cores returning to `virtualization.ts` and `security.ts`; the v6 web edition added the first delivery surface outside the engine modules (`web/`, seven files plus its test suite). Reserved slots: the F-001..F-065 roadmap items that require new runtime surfaces (CXL pooling daemons, DPU offload agents, confidential-computing attesters) land as new contexts in `virtualization.ts`/`orchestrator.ts` first; a second C++ TU only if `virtualizationcore.cpp` exceeds review size; the docs set stays at seven with appendices inside `viability.md`.
|
|
330
|
+
|
|
331
|
+
## 18. Glossary (terms used nowhere else in this set)
|
|
332
|
+
|
|
333
|
+
| Term | Meaning |
|
|
334
|
+
| --- | --- |
|
|
335
|
+
| context | a named, correlated unit of responsibility inside a file; the flat contract groups 20-25 per file |
|
|
336
|
+
| forge | the C++/mirror build surface (`libs/gpumonitor.cpp` forge mode, forge mirrors for GHCR/GitHub/npm) |
|
|
337
|
+
| guest envelope | the validated set of identities a guest may observe (schema in `virtualhardware.json`) |
|
|
338
|
+
| identity ceiling | the modularity bound tied to a specific virtual identity identity (for example 192 vCPUs on EPYC 9965) |
|
|
339
|
+
| nbit | the module-modes block enumerating the 16 consumption targets |
|
|
340
|
+
| observer voice | the third-person JSDoc contract: behavior described, never "I" or "we" |
|
|
341
|
+
| plan | the resolved artifact of the planner: model, topology, argv, docker line, toml twin, lint verdicts |
|
|
342
|
+
| replay ledger | the ring of the last 200 bus events available for `replay(topic, count)` |
|
|
343
|
+
| spec rule | one machine-checkable validation entry in `specschema` (nine rules plus warnings) |
|
|
344
|
+
|
|
345
|
+
## Sources
|
|
346
|
+
|
|
347
|
+
- Flat-structure and merge-map analysis: project worklog tasks v2-A1/v2-A3 (analyst-code/analyst-docs), preserved in `docs/viability.md`
|
|
348
|
+
- QEMU MTTCG design: https://www.qemu.org/docs/master/devel/multi-thread-tcg.html
|
|
349
|
+
- Mesa driver and envvar documentation: https://docs.mesa3d.org/drivers/llvmpipe.html, https://docs.mesa3d.org/envvars.html
|
|
350
|
+
- Landlock ABI versions: https://docs.kernel.org/userspace-api/landlock.html, https://landlock.io/news
|
|
351
|
+
- TypeScript 7 native port: https://devblogs.microsoft.com/typescript/announcing-typescript-7-0
|
|
352
|
+
- Explicit Resource Management (`using`): https://github.com/tc39/proposal-explicit-resource-management
|
|
353
|
+
- Docker resource constraints: https://docs.docker.com/engine/containers/resource_constraints/
|
|
354
|
+
- GitHub runner KVM limitation: https://github.com/actions/runner-images/issues/12933
|
|
355
|
+
- Component versions: the `engineversions` ledger in `index.ts`, each pinned from its primary release page (see `readme.md` sources)
|
|
@@ -152,3 +152,9 @@ The release-evidence API can normalize and evaluate results supplied by complete
|
|
|
152
152
|
The 1.8.17 candidate keeps the established release asset contract while expanding the GHCR image index to `linux/amd64`, `linux/arm64`, and `linux/ppc64le`. The workflow must inspect the pushed index before this document treats those platform variants as available. The attached `saddle.container.1.8.17.tar.gz` remains one archive artifact and is not evidence of a Windows container variant.
|
|
153
153
|
|
|
154
154
|
`windows/amd64`, `linux/arm/v7`, and `linux/386` are not claimed by this candidate. A Windows image requires its own versioned Windows base, Dockerfile, runner, and compatibility validation; the existing Debian Linux Dockerfile cannot produce it by adding a platform string. `unknown` descriptors are not runnable targets. The platform decision and evidence limits are detailed in [containerplatforms-1.8.17.md](containerplatforms-1.8.17.md).
|
|
155
|
+
|
|
156
|
+
## 1.8.17 verified container publication
|
|
157
|
+
|
|
158
|
+
The published [v1.8.17 release](https://github.com/wenathlan/saddle/releases/tag/v1.8.17) contains 38 attached assets, including `saddle.container.1.8.17.tar.gz`, `manifest.container.1.8.17.json`, and `sha256.container.1.8.17`. GHCR workflow run `31847952976` completed successfully after QEMU-enabled Buildx published and inspected the Linux OCI index. Its post-push assertion accepted exactly `linux/amd64`, `linux/arm64`, and `linux/ppc64le`; the amd64 variant was pulled, its OCI version label was compared with `1.8.17`, and `saddle help` completed.
|
|
159
|
+
|
|
160
|
+
The release container manifest identifies `ghcr.io/wenathlan/saddle:1.8.17` and preserves `caller-owned` as its signing state. The Android manifest records `ci-test-key`. Those explicit metadata states do not imply production signing, Windows container availability, notarization, vulnerability status, or any independent trust property.
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
# Branch and pull request archive — 2026-08-18
|
|
2
|
+
|
|
3
|
+
This record preserves the branch heads that were removed from the remote repository after their pull requests were closed. Each head remains recoverable through its annotated `archive/` tag. The repository retains only `main` as a branch after this cleanup.
|
|
4
|
+
|
|
5
|
+
| Pull request | Removed branch | Head commit | Recovery tag |
|
|
6
|
+
| --- | --- | --- | --- |
|
|
7
|
+
| #23 | `dependabot/github_actions/actions/configure-pages-6` | `afcdb20af9a3ae697d07b56b32244ad4353fc5ef` | `archive/dependabot/github_actions/actions/configure-pages-6` |
|
|
8
|
+
| #24 | `dependabot/npm_and_yarn/esbuild-0.28.2` | `6578abd14cd4c68cdf318cd3285784f127443619` | `archive/dependabot/npm_and_yarn/esbuild-0.28.2` |
|
|
9
|
+
| #25 | `dependabot/npm_and_yarn/recharts-3.10.1` | `241f2a9a9d4e6d175ddca57706d5fee5b3846652` | `archive/dependabot/npm_and_yarn/recharts-3.10.1` |
|
|
10
|
+
| #26 | `dependabot/github_actions/actions/checkout-7` | `d9793eda3b80ef154291bef3bfbacc731ec31428` | `archive/dependabot/github_actions/actions/checkout-7` |
|
|
11
|
+
| #27 | `dependabot/npm_and_yarn/jsdom-30.0.1` | `95164f0da8a185ec3441fd0ac5af6f535ff331bb` | `archive/dependabot/npm_and_yarn/jsdom-30.0.1` |
|
|
12
|
+
| #28 | `dependabot/npm_and_yarn/framer-motion-13.1.0` | `67f5209458980815192102518209f6a040942f05` | `archive/dependabot/npm_and_yarn/framer-motion-13.1.0` |
|
|
13
|
+
| #29 | `dependabot/npm_and_yarn/vitejs/plugin-react-6.0.5` | `2115c956b25c12058909ea899a2941e71d241857` | `archive/dependabot/npm_and_yarn/vitejs/plugin-react-6.0.5` |
|
|
14
|
+
| #30 | `dependabot/github_actions/actions/deploy-pages-5` | `86e55ea3d46ddeec4b2b96a321ce62d96b79a9bd` | `archive/dependabot/github_actions/actions/deploy-pages-5` |
|
|
15
|
+
| #31 | `dependabot/github_actions/trufflesecurity/trufflehog-3.97.0` | `b2d2d98f12be5eae0e0859cc0accf4de22084108` | `archive/dependabot/github_actions/trufflesecurity/trufflehog-3.97.0` |
|
|
16
|
+
| #32 | `dependabot/github_actions/actions/setup-java-5` | `e0518115badc30960aa1b108e28a1da53f07c9ac` | `archive/dependabot/github_actions/actions/setup-java-5` |
|
|
17
|
+
|
|
18
|
+
Closing a pull request does not remove its GitHub discussion record. Deleting a branch does not remove its archived commit because the corresponding tag remains on the remote.
|
package/docs/browser.md
ADDED
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
# Saddle browser surface
|
|
2
|
+
|
|
3
|
+
The root `browser/` directory contains the transport-neutral browser-agent contracts: session state, context, snapshots, fingerprints, Playwright integration, recording and agent orchestration. It is library logic and is shared by callers; it is not a second copy of the desktop UI.
|
|
4
|
+
|
|
5
|
+
The user-facing browser application is the existing Tauri shell in `desktop/`, which wraps the compiled `web/dist/public` surface on Windows, Linux and macOS. Android and iOS convert the same web output through Capacitor. This boundary keeps browser behavior in the library and keeps presentation and native packaging in their target surfaces.
|
|
6
|
+
|
|
7
|
+
Release filenames identify the user-facing desktop browser with the dotted lowercase pattern `saddle.browser.1.8.14.<format>`. Internal module filenames remain API-compatible unless a deliberate public compatibility migration is documented.
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
# Saddle consolidation record
|
|
2
|
+
|
|
3
|
+
## Purpose
|
|
4
|
+
|
|
5
|
+
This record preserves the result of a Git-history review performed for the 1.8.17 cycle. It consolidates durable implementation themes without replacing the repository README, which remains a non-deterministic scope reference.
|
|
6
|
+
|
|
7
|
+
## Historical review
|
|
8
|
+
|
|
9
|
+
The review inspected all 41 historical revisions of the root README available through Git. It also identified the platform-specific README paths that appeared over the repository history. The enduring implementation themes are the storage-backed working set, replaceable third-party runners, bounded browser and scraping contracts, transport-neutral protocols, deterministic packaging, native conversion surfaces, explicit security boundaries, and caller-owned credentials and signing.
|
|
10
|
+
|
|
11
|
+
The consolidation does not promote speculative provider capabilities, hosted-service assumptions, obsolete package identities, or older runtime requirements into active commitments. Historical release records remain historical evidence rather than current metadata.
|
|
12
|
+
|
|
13
|
+
## Version-reference audit
|
|
14
|
+
|
|
15
|
+
The Git review inspected the 41 historical root README revisions and their version references. Those revisions preserve an evolving record spanning earlier 1.8 releases; their version strings are historical evidence and must not be rewritten as if they described the current release.
|
|
16
|
+
|
|
17
|
+
The current README contains legacy 1.8.14 statements and direct references to internal material. It is intentionally retained unchanged because it remains the repository scope reference. The active-version statement is therefore provided by this record and the manifest matrix below rather than by editing historical text in place.
|
|
18
|
+
|
|
19
|
+
| Reference class | Handling |
|
|
20
|
+
| ------------------------------------------------------------------ | ----------------------------------------------------------------------------------------------------------------------------- |
|
|
21
|
+
| Active package, native, crawler, extension, and container metadata | Must resolve to `1.8.17`. |
|
|
22
|
+
| Release notes, changelog, artifact records, and historical READMEs | Retained as immutable evidence for their own release period. |
|
|
23
|
+
| Deterministic test fixtures | Retained with their fixture versions; they do not select a package or registry version. |
|
|
24
|
+
| Current README scope text | Preserved unchanged; its stale version and internal-reference findings are recorded here instead of being silently rewritten. |
|
|
25
|
+
|
|
26
|
+
The external consolidation has no direct links to materials under `docs/`. It is the active reference for the 1.8.17 matrix while the repository README remains the preserved scope reference.
|
|
27
|
+
|
|
28
|
+
## Whole-repository audit
|
|
29
|
+
|
|
30
|
+
The current tracked tree was searched for pre-1.8.17 version tokens with numeric boundaries. All product manifests resolve to 1.8.17. The only non-product match outside preserved historical material is an AndroidX dependency version in the Android build variables; it is a library dependency and not a Saddle release version.
|
|
31
|
+
|
|
32
|
+
The remaining version references belong to historical release evidence, changelog entries, archival research, deterministic test fixtures, automation assertions, or preserved README scope text. They must retain their original values because replacing them would make the evidence, fixture assertions, and historical descriptions false.
|
|
33
|
+
|
|
34
|
+
## Historical behavior disposition
|
|
35
|
+
|
|
36
|
+
The historical README review identified the following enduring themes and records how each is represented in the active consolidation.
|
|
37
|
+
|
|
38
|
+
| Historical theme | Active disposition |
|
|
39
|
+
| ---------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------- |
|
|
40
|
+
| Storage as compute, file-as-compute, memory engine, and memory tiers | Represented by the storage-backed working-set, memory modes, objects, transforms, planner, and bounded materialization contracts. |
|
|
41
|
+
| Repo-as-CPU, multi-forge operation, and distributed execution | Represented by caller-owned, replaceable runners and transport-neutral job, workflow, and delivery contracts. |
|
|
42
|
+
| Content types, API communication, extraction, crawling, and cache | Represented by JSON-family protocols, bounded scraping, normalization, schema, robots, crawling, and cache contracts. |
|
|
43
|
+
| Request strategies, validation, concurrency, and recovery | Represented by retry, queue, idempotency, saga, abort, compatibility, worker, and circuit-breaker boundaries. |
|
|
44
|
+
| Browser context, fingerprinting, proxy, captcha, and stealth proposals | Retained only as caller-owned boundaries; the active record makes no bypass, provider, or anti-detection guarantee. |
|
|
45
|
+
| Database and SQL proposals | Retained as historical proposals. The active engine does not provision or require a database. |
|
|
46
|
+
|
|
47
|
+
The review intentionally excludes historical secret names, provider-specific credentials, speculative dependencies, and unimplemented hosted-service claims from the active record.
|
|
48
|
+
|
|
49
|
+
## Active 1.8.17 reference matrix
|
|
50
|
+
|
|
51
|
+
| Surface | Active metadata |
|
|
52
|
+
| ------------------------------- | ------------------------------------------------------------------------------------- |
|
|
53
|
+
| JavaScript package and lockfile | `@wenathlan/saddle` version `1.8.17` |
|
|
54
|
+
| Maven | revision `1.8.17` |
|
|
55
|
+
| NuGet | package version `1.8.17` |
|
|
56
|
+
| RubyGems | package version `1.8.17` |
|
|
57
|
+
| Browser extension | manifest version `1.8.17` |
|
|
58
|
+
| Desktop shell | package and application version `1.8.17` |
|
|
59
|
+
| iOS | marketing version `1.8.17`, build `1008017` |
|
|
60
|
+
| Crawler identity | user agent `Saddle/1.8.17` |
|
|
61
|
+
| Capacitor boundary | active 1.8.17 native-conversion comment |
|
|
62
|
+
| Container | OCI release tag `1.8.17` with verified Linux `amd64`, `arm64`, and `ppc64le` variants |
|
|
63
|
+
|
|
64
|
+
## Documentation and archive boundary
|
|
65
|
+
|
|
66
|
+
The current README is preserved unchanged. The active release, architecture, security, packaging, and operational records remain separate from historical research material. The encrypted archival operation is deliberately independent from this consolidation record and stores no passphrase, recovery material, or archive contents here.
|
|
67
|
+
|
|
68
|
+
## Maintenance rule
|
|
69
|
+
|
|
70
|
+
Future releases must update active manifest metadata together and retain completed release documentation as immutable historical evidence. New capability claims require implementation and independently observed validation before they are added to current release records.
|