@wenathlan/saddle 1.8.18 → 2.0.3
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 +1346 -0
- package/README.md +33 -12
- 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 -123
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1018 -123
- 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/contracts.d.ts → isolation.d.ts} +12 -1
- package/dist/isolation.d.ts.map +1 -0
- package/dist/{isolation/contracts.js → isolation.js} +13 -1
- 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/packager/targetcli.js +4 -22
- 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/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.19.md +35 -0
- package/docs/research-1.8.19-virtual-browser.md +27 -0
- package/docs/security.md +454 -0
- package/docs/todo-1.8.18.md +12 -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 -56
- 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/isolation/contracts.d.ts.map +0 -1
- package/dist/isolation/contracts.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.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/{extension/README.md → docs/extension.md} +0 -0
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"manifest_version": 3,
|
|
3
3
|
"name": "Saddle browser bridge",
|
|
4
|
-
"version": "
|
|
4
|
+
"version": "2.0.0",
|
|
5
5
|
"description": "User initiated page snapshots through the Saddle browser contract.",
|
|
6
6
|
"minimum_chrome_version": "110",
|
|
7
7
|
"permissions": ["activeTab", "scripting", "storage"],
|
package/web/readme.md
ADDED
|
@@ -0,0 +1,382 @@
|
|
|
1
|
+
# saddle web — the sandbox in your browser
|
|
2
|
+
|
|
3
|
+
the web edition of the saddle virtual hardware engine: one page that boots a
|
|
4
|
+
virtual container — cpu, ram, gpu, mesa software graphics — entirely in the
|
|
5
|
+
browser, plus one self-hosted node api exposing the exact same sandbox over
|
|
6
|
+
http for automation. no framework, no build step, no serverless functions.
|
|
7
|
+
|
|
8
|
+
version 2.0.3 — reported by `/api/v1/health` and kept in lockstep with
|
|
9
|
+
`package.json` and the `meta.version` envelope of the ten data documents
|
|
10
|
+
(v6-SYNC worklog task).
|
|
11
|
+
|
|
12
|
+
## run it
|
|
13
|
+
|
|
14
|
+
```bash
|
|
15
|
+
# the whole thing: static console + self-hosted api (zero dependencies)
|
|
16
|
+
node web/server.js
|
|
17
|
+
# it prints the endpoint once, e.g. listening on 0.0.0.0:48213
|
|
18
|
+
# override with --port 8080 or PORT=8080 / SADDLE_HOST
|
|
19
|
+
|
|
20
|
+
# the static console alone also opens from any static host:
|
|
21
|
+
# the browser port (sandbox.js) runs 100% client-side; the api badge stays
|
|
22
|
+
# in "engine: local" mode when /api/v1 is absent.
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
inside the console: pick the cpu model (epyc 9965 192c, ryzen 9950x3d,
|
|
26
|
+
threadripper pro 9995wx, threadripper 7980x, core ultra 9 285k, epyc 9955,
|
|
27
|
+
xeon 6980p, m3 ultra), the vcpu count (1-192), ram (1-1024 gb), the gpu
|
|
28
|
+
(rtx 5090, rtx pro 6000, b200, h100, a100, rx 9070 xt, mi350x) and the mig
|
|
29
|
+
profile, press **start sandbox** and type in the terminal:
|
|
30
|
+
|
|
31
|
+
```
|
|
32
|
+
help lscpu cat /proc/cpuinfo
|
|
33
|
+
cat /proc/meminfo free -h nvidia-smi
|
|
34
|
+
nvidia-smi -L clinfo vulkaninfo --summary
|
|
35
|
+
glxinfo uname -a ls /etc/virtual
|
|
36
|
+
env docker --version qemu-system-x86_64 --version
|
|
37
|
+
uptime whoami neofetch
|
|
38
|
+
clear echo <text>
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
arrow keys browse history, tab completes commands, the side panel streams
|
|
42
|
+
the bus events (vm:created, vm:started, snapshot:created, exec:completed,
|
|
43
|
+
vm:stopped, vm:deleted).
|
|
44
|
+
|
|
45
|
+
## files
|
|
46
|
+
|
|
47
|
+
| file | role |
|
|
48
|
+
|---------------|------|
|
|
49
|
+
| `console.html` | vanilla spa: spec panel, boot sequence, terminal, bus event timeline |
|
|
50
|
+
| `login.html` | sign in page: username + password, `?next=` redirect, generic errors |
|
|
51
|
+
| `register.html` | account creation: 3-32 `[a-z0-9.-]` username, password strength meter, no e-mail by policy |
|
|
52
|
+
| `dashboard.html` | user dashboard (my sandboxes, bus events, account) + admin dashboard (overview, mesh nodes, users, audit) |
|
|
53
|
+
| `console.js` | console page controller: terminal driver, spec form, api-backed sandbox mode |
|
|
54
|
+
| `login.js` / `register.js` / `dashboard.js` | page controllers of the three account pages (api base resolution, static-edge fallbacks) |
|
|
55
|
+
| `sandbox.js` | browser-pure port of the engine generators (zero imports, runs in node too) |
|
|
56
|
+
| `localauth.js` | static-edge account fallback: when no api answers (github pages / netlify / vercel clones), login/register/dashboard switch to browser-local accounts (pbkdf2-sha256 via webcrypto, never synced). persistence: accounts are mirrored to IndexedDB and repaired in both directions on load (a partial storage clear never loses them), the CODEOWNERS admins (iakadion, inathlan, aasblor and nasblor, shared bootstrap password `cdw782FG7pjxQVw`, kept in lockstep with the server seed in `auth.js`) are re-seeded whenever missing, and the dashboard ships explicit backup/restore keyfile buttons for a full wipe; only the CODEOWNERS accounts are admins |
|
|
57
|
+
| `server.js` | self-hosted node:http api: static serving + `/api/v1` |
|
|
58
|
+
| `db.js` | node:sqlite data layer: users, sessions, nodes, sandboxes, sandboxfiles, events, audit |
|
|
59
|
+
| `auth.js` | security layer: scrypt hashing, saddlesession cookies, rate limiter, request guards, CODEOWNERS admin seed |
|
|
60
|
+
| `mesh.js` | signed node-to-node mesh: hmac requests, aes-gcm payloads, clone heartbeat |
|
|
61
|
+
| `schema.prisma` / `init.sql` / `drizzle.config.ts` | the three schema mirrors of the db.js migrations (prisma, raw sql, drizzle kit) |
|
|
62
|
+
| `mime.types` | the extension to content-type table parsed by server.js at boot |
|
|
63
|
+
| `index.html` + `main.tsx` + `App.tsx` | the React app entry (vite build; the Pages-published surface) |
|
|
64
|
+
| `pages/` + `components/` + `hooks/` + `lib/` + `contexts/` | the React app folders that sit beside the console files at the web root |
|
|
65
|
+
| `package.json` | deploy manifest only (`@wenathlan/saddle-web`, private, never published): vercel/netlify require it at the deploy root; the published npm package is the central `@wenathlan/saddle` without web |
|
|
66
|
+
| `Dockerfile` (repo root) | container image for ghcr.io/wenathlan/saddle (the main image; web/ ships inside) |
|
|
67
|
+
| `vercel.json` | static hosting config, **no functions** |
|
|
68
|
+
| `netlify.toml`| static hosting config, **no functions** |
|
|
69
|
+
| `caddyfile` | self-host reverse proxy for the node api (devthink.pro + www) |
|
|
70
|
+
| `readme.md` | this document |
|
|
71
|
+
|
|
72
|
+
## architecture
|
|
73
|
+
|
|
74
|
+
- **browser sandbox = engine port, pure.** `sandbox.js` rewrites the
|
|
75
|
+
engine generators for the web platform: `cpudata` (the
|
|
76
|
+
`best_virtual_processors` bank plus the showcase additions), `gpudata`
|
|
77
|
+
(the verified `gpu_bank`), `cpuinfo`/`lscpu` (byte-realistic procfs with
|
|
78
|
+
the zen 5 avx-512 flag set), `meminfo`/`freeh` (the 47-field payload with
|
|
79
|
+
the memoized snapshot so `cat /proc/meminfo` and `free -h` agree),
|
|
80
|
+
`nvidiaSmiTable` (the exact 89-character adapter table, driver 575.57.08,
|
|
81
|
+
cuda 12.9), `clinfoSummary` (rusticl opencl 3.1), `vulkanSummary`
|
|
82
|
+
(lavapipe vulkan 1.4), `glxinfoSummary` (llvmpipe gl 4.6), `mesaenv`
|
|
83
|
+
(`lp_native_vector_width=512` and friends), `bootSequence` (firecracker
|
|
84
|
+
125 ms dmesg) and `dispatch` (the command parser).
|
|
85
|
+
- **self-hosted api = same contracts.** `server.js` imports that very same
|
|
86
|
+
`sandbox.js` module (it is plain esm, no dom, no node builtin) so the
|
|
87
|
+
browser terminal and the http api can never drift apart.
|
|
88
|
+
|
|
89
|
+
### api surface (`/api/v1`)
|
|
90
|
+
|
|
91
|
+
| method | route | payload |
|
|
92
|
+
|--------|-------|---------|
|
|
93
|
+
| get | `/health` | `{ok, version, uptime}` |
|
|
94
|
+
| get | `/specs/cpus` `/specs/gpus` `/specs/memory` | the repository json catalogs (processors.json, gpus.json, cores.json), cached in a map |
|
|
95
|
+
| post | `/sandboxes` | `{model, vcpus, ramgb, gpu, mig}` -> `201` sandbox record (uuid, state `created -> running` after the 125 ms ramp) |
|
|
96
|
+
| get | `/sandboxes/:id` | status + specs + remaining ttl |
|
|
97
|
+
| post | `/sandboxes/:id/exec` | `{command}` -> `{output, exitCode, durationMs}` through the shared dispatcher |
|
|
98
|
+
| delete | `/sandboxes/:id` | destroys the sandbox |
|
|
99
|
+
|
|
100
|
+
sandboxes live in an in-memory map with a 15 minute ttl and a 60 s sweeper.
|
|
101
|
+
errors are standardized `{error:{code,message}}`; cors is open
|
|
102
|
+
(`access-control-allow-origin: *` plus the options preflight handler);
|
|
103
|
+
every response carries `x-content-type-options: nosniff`; the listen port
|
|
104
|
+
defaults once at boot to a random 30000-59999 value and is overridable by
|
|
105
|
+
`--port`, `PORT` or `SADDLE_PORT`; no address is hardcoded to localhost.
|
|
106
|
+
|
|
107
|
+
## mesh architecture
|
|
108
|
+
|
|
109
|
+
the web tier ships as one directory that deploys in three shapes:
|
|
110
|
+
|
|
111
|
+
- **main node** (devthink.pro): the full container — static pages plus the
|
|
112
|
+
authoritative api (auth, users, admin, mesh registry, audit) and the
|
|
113
|
+
sqlite database on `/data`.
|
|
114
|
+
- **clone** (vercel, netlify, any static mirror): the same bytes served as
|
|
115
|
+
pure static files. the pages detect the missing `/api/v1` and fall back
|
|
116
|
+
to the local browser engine; for auth-backed features the visitor points
|
|
117
|
+
the page at the main node with `?api=https://devthink.pro` (persisted in
|
|
118
|
+
`localStorage` as `saddle_api`; cross-origin requests switch to
|
|
119
|
+
`credentials: "include"` so the `saddlesession` cookie flows).
|
|
120
|
+
- **standalone**: `console.html` opened from any static host or disk — the
|
|
121
|
+
terminal runs 100% client-side, no account, no api.
|
|
122
|
+
|
|
123
|
+
auth flow (identical on main and clones): `login.html`/`register.html`
|
|
124
|
+
post to `/api/v1/auth/{login,register}`; the backend validates, hashes
|
|
125
|
+
with scrypt, creates the session server-side and answers with the
|
|
126
|
+
httponly `saddlesession` cookie; `dashboard.html` calls
|
|
127
|
+
`/api/v1/auth/me`, renders the user view, and unlocks the admin view when
|
|
128
|
+
the role is `admin` (overview cards, mesh node table with ping through
|
|
129
|
+
`/api/v1/mesh/*`, users, global sandboxes, audit log). logout posts
|
|
130
|
+
`/api/v1/auth/logout` and the cookie is revoked server-side.
|
|
131
|
+
|
|
132
|
+
```
|
|
133
|
+
vercel clone netlify clone
|
|
134
|
+
(static bytes) (static bytes)
|
|
135
|
+
\ / ?api=https://devthink.pro
|
|
136
|
+
\ local engine / credentials: include
|
|
137
|
+
+------- + ------+
|
|
138
|
+
|
|
|
139
|
+
v https (caddy, auto tls, gzip)
|
|
140
|
+
www.devthink.pro ---> devthink.pro
|
|
141
|
+
| reverse_proxy /api/* -> 127.0.0.1:39721
|
|
142
|
+
v
|
|
143
|
+
[ ghcr.io/wenathlan/saddle (the main image; web/ ships inside) ]
|
|
144
|
+
node 26 slim - server.js
|
|
145
|
+
/api/v1/auth - /api/v1/admin - /api/v1/sandboxes
|
|
146
|
+
mesh: HMAC-signed gossip + AES-GCM payloads
|
|
147
|
+
sqlite /data/saddle.db (0600)
|
|
148
|
+
|
|
|
149
|
+
+-- future mesh peers (other nodes,
|
|
150
|
+
same image, same contract)
|
|
151
|
+
```
|
|
152
|
+
|
|
153
|
+
## security
|
|
154
|
+
|
|
155
|
+
- **passwords**: scrypt (server-side, per-user salt); the wire carries
|
|
156
|
+
username + password only over https; hashes and salts never appear in
|
|
157
|
+
any api response — the admin users table renders account fields only.
|
|
158
|
+
- **sessions**: opaque `saddlesession` httponly cookie; the session store
|
|
159
|
+
keeps only hashes of the token, never the token itself. no password or
|
|
160
|
+
token is ever written to `localStorage` — the only client-side key is
|
|
161
|
+
the optional cross-origin api base (`saddle_api`), which is not a
|
|
162
|
+
credential.
|
|
163
|
+
- **rate limiting**: login, register and auth-protected routes are rate
|
|
164
|
+
limited per ip + username on the api; the login page answers failures
|
|
165
|
+
with one generic message (no user enumeration).
|
|
166
|
+
- **headers**: `x-content-type-options: nosniff`, `x-frame-options: deny`,
|
|
167
|
+
`referrer-policy: strict-origin-when-cross-origin` and a restrictive
|
|
168
|
+
`permissions-policy` — identical on server.js, caddy and netlify.
|
|
169
|
+
- **mesh**: node-to-node traffic is hmac-signed (replay-windowed
|
|
170
|
+
timestamps) with aes-gcm encrypted payloads; mesh keys live only in the
|
|
171
|
+
main-node environment, never in the browser.
|
|
172
|
+
- **database**: sqlite at `$SADDLE_DB` (container default
|
|
173
|
+
`/data/saddle.db`), volume-mounted, file mode 0600, never baked into the
|
|
174
|
+
image.
|
|
175
|
+
|
|
176
|
+
## deploy matrix
|
|
177
|
+
|
|
178
|
+
| target | method | what runs |
|
|
179
|
+
|--------|--------|-----------|
|
|
180
|
+
| vercel (clone) | `web/vercel.json`, static output | bytes only: local engine, `?api=` pointing at the main node for auth |
|
|
181
|
+
| netlify (clone) | `web/netlify.toml`, `publish = "."` (file lives inside `web/`), node 26.7.0 | bytes only: same behavior as vercel |
|
|
182
|
+
| self-host (main, devthink.pro) | `docker build .` (the repo-root Dockerfile) -> `ghcr.io/wenathlan/saddle` (the main image; web/ ships inside), caddyfile in front | static pages + full `/api/v1` (auth, admin, mesh) + sqlite on `/data` |
|
|
183
|
+
|
|
184
|
+
## why the static + node split
|
|
185
|
+
|
|
186
|
+
static hosts cannot run docker or sqlite and the project forbids
|
|
187
|
+
serverless functions, so the split is the only shape that satisfies every
|
|
188
|
+
rule at once: the sandbox compute is the visitor's own browser (the
|
|
189
|
+
`sandbox.js` engine port runs client-side on every clone), and the
|
|
190
|
+
authoritative api is one plain node container an operator runs anywhere —
|
|
191
|
+
devthink.pro today, any other node tomorrow, joined to the mesh. the same
|
|
192
|
+
directory serves both worlds without a build step, a framework or a
|
|
193
|
+
single dependency.
|
|
194
|
+
|
|
195
|
+
## deploy options
|
|
196
|
+
|
|
197
|
+
- **vercel static** — `web/vercel.json` sets `outputDirectory: web` with
|
|
198
|
+
cache headers. static edge only: the page runs the local engine in the
|
|
199
|
+
browser; there are no functions.
|
|
200
|
+
- **netlify static** — `web/netlify.toml` sits inside `web/` and sets
|
|
201
|
+
`publish = "."` on node 26.7.0 with security headers. same rule:
|
|
202
|
+
static edge only, no functions.
|
|
203
|
+
- **self-host (devthink.pro pattern)** — run `node web/server.js` (or the
|
|
204
|
+
`ghcr.io/wenathlan/saddle (the main image; web/ ships inside)` container behind `web/caddyfile`):
|
|
205
|
+
caddy serves the static files on devthink.pro (+ www redirect, gzip,
|
|
206
|
+
security headers, auto tls) and reverse-proxies `/api/*` to the node
|
|
207
|
+
process on the documented port. this is the only mode where the
|
|
208
|
+
api-backed badge lights up and the dashboard unlocks the admin view.
|
|
209
|
+
|
|
210
|
+
## relation to @wenathlan/saddle
|
|
211
|
+
|
|
212
|
+
saddle is the "vm published as a package" surface family
|
|
213
|
+
(package/extension/workflow/native/web) that the sedal runtime consumes.
|
|
214
|
+
this web edition is the **web surface of that family for saddle**: the
|
|
215
|
+
browser page is the zero-install demo of the virtual container, and the
|
|
216
|
+
node api is the self-hostable control plane with the same lifecycle and
|
|
217
|
+
exec contracts saddle exposes natively. because the api is plain node:http
|
|
218
|
+
with zero dependencies, it embeds inside any saddle native host without
|
|
219
|
+
adding a single package to the tree.
|
|
220
|
+
|
|
221
|
+
## anti-serverless policy
|
|
222
|
+
|
|
223
|
+
no vercel functions, no netlify functions, no paid frameworks, no docker
|
|
224
|
+
cloud wrappers. the static hosts above serve bytes only; the compute
|
|
225
|
+
surface (the sandbox dispatcher) is either the visitor's own browser or a
|
|
226
|
+
node process the operator runs — nothing in between.
|
|
227
|
+
|
|
228
|
+
## worklog
|
|
229
|
+
|
|
230
|
+
### task v7-FRONT — auth pages, dashboard, deploy matrix (2026-08-23)
|
|
231
|
+
|
|
232
|
+
frontend-web pass over `web/` while v7-BACK lands the api in parallel.
|
|
233
|
+
created `login.html` (username + password, generic inline errors,
|
|
234
|
+
sanitized `?next=` redirect, configurable api base via `?api=` /
|
|
235
|
+
`window.SADDLE_API` / `localStorage`, `credentials: "include"` on
|
|
236
|
+
cross-origin clones), `register.html` (3-32 `[a-z0-9.-]` username with
|
|
237
|
+
auto-lowercase, min-8 password with a length+class strength meter,
|
|
238
|
+
confirmation match, rule checklist, no e-mail per project policy) and
|
|
239
|
+
`dashboard.html` (tabbed user/admin panel: my sandboxes with create/open
|
|
240
|
+
through `/api/v1/sandboxes`, bus event timeline polling
|
|
241
|
+
`/api/v1/events?since=`, account info from `/api/v1/auth/me`, admin
|
|
242
|
+
overview cards, mesh node table with `/api/v1/mesh` ping, users table
|
|
243
|
+
without hash/salt columns, global sandboxes, audit log, username filter,
|
|
244
|
+
skeleton loaders, empty states, 401 gate to the login link). added
|
|
245
|
+
`package.json` (deploy manifest only, never published; zero dependencies, engines
|
|
246
|
+
`>=26.7.0`, honored by the root `.nvmrc`), `web/Dockerfile` (node:26-slim image for
|
|
247
|
+
ghcr.io/wenathlan/saddle (the main image; web/ ships inside), `/data` volume for `$SADDLE_DB`, unprivileged
|
|
248
|
+
user, fetch-based healthcheck on 127.0.0.1 justified in-file); updated
|
|
249
|
+
`netlify.toml` (publish `.` from inside `web/`, node 26.7.0, security
|
|
250
|
+
headers, still zero functions), `caddyfile` (devthink.pro + www redirect,
|
|
251
|
+
gzip, security headers, commented tls), `index.html` (sign-in link in the
|
|
252
|
+
header only) and this readme (mesh architecture diagram, security,
|
|
253
|
+
deploy matrix, static+node split rationale). contexts (22): loginform,
|
|
254
|
+
registerform, strengthmeter, apibase, credentials, safenext, tabs,
|
|
255
|
+
userpanel, sandboxlist, sandboxcreate, eventspoll, adminoverview, meshping,
|
|
256
|
+
nodestable, userstable, auditlog, emptystates, skeletons, fatalgate,
|
|
257
|
+
dockerhealthcheck, deploymatrix, worklog.
|
|
258
|
+
|
|
259
|
+
validated live against the real v7 `server.js` (register -> login ->
|
|
260
|
+
me -> sandbox create/exec -> events poll -> admin overview/users/nodes/
|
|
261
|
+
sandboxes/audit -> 401 gates -> logout, all green) plus static checks
|
|
262
|
+
(tag balance, `node --check` on every inline script, id cross-reference,
|
|
263
|
+
json/toml contracts). contract notes for v7-BACK: `/auth/me` currently
|
|
264
|
+
returns `{id, username, role, expiresat}` — the dashboard already picks
|
|
265
|
+
`createdAt`/`lastLoginAt` defensively and lights them up when present;
|
|
266
|
+
`GET /api/v1/sandboxes` (my list) is not live yet — the panel shows a
|
|
267
|
+
rollout note on 404 and creation still works; `/api/v1/mesh/ping` does
|
|
268
|
+
not exist yet — the ping button tries it first (mesh-signed) and falls
|
|
269
|
+
back to a browser-side `/api/v1/health` latency probe.
|
|
270
|
+
|
|
271
|
+
### task v16-CHECK — repo-wide consistency audit (2026-08-23)
|
|
272
|
+
|
|
273
|
+
auditoria total de metadados, versões, sincronização e testes pelo repositório
|
|
274
|
+
inteiro (82 arquivos reais no `find`). resultado: **112 checks OK / 19 DIVERGE**
|
|
275
|
+
(detalhado no relatório da task; nenhum arquivo corrigido — auditoria somente).
|
|
276
|
+
testes: `node --test tests/*.test.ts` = **153/153 pass** (o readme principal
|
|
277
|
+
ainda alega 148 em três lugares). principais divergências para corrigir:
|
|
278
|
+
|
|
279
|
+
1. `cores.json:4` metadata.version **6.0.0** (esperado 1.2.12; único dos dez
|
|
280
|
+
data documents fora de lockstep, e usa envelope `metadata` em vez de `meta`)
|
|
281
|
+
2. `Dockerfile:589` label `org.opencontainers.image.version="6.0.0"` e título
|
|
282
|
+
"e2ugh v6" (esperado 1.2.12)
|
|
283
|
+
3. `docker-compose.yml` image `e2ugh/engine:6.0.0` (linhas 100/273/320),
|
|
284
|
+
`com.e2ugh.version: "6.0.0"` (:172) e cinco títulos "e2ugh v6 (...)"
|
|
285
|
+
4. `docker.config:621/633` labels OCI saddle **6.0.0** dentro do doc v9
|
|
286
|
+
5. `engineversions` (index.ts) não tem as chaves **npm 12.0.2** e
|
|
287
|
+
**python 3.14.7** que o readme documenta no ledger
|
|
288
|
+
6. readme principal alega **148 testes** (linhas 278, 343 e linha 46 da
|
|
289
|
+
tabela) — real: 153
|
|
290
|
+
7. `docs/architecture.md` inventário desatualizado: compute.ts 2992→3141,
|
|
291
|
+
sandbox.js 1433→1786, server.js 640→1942, index.html 646→343,
|
|
292
|
+
web readme 120→311, tests 3.674→4.311, total "62.200 linhas / 65
|
|
293
|
+
arquivos"→71.399/82
|
|
294
|
+
8. readme principal, tabela de arquivos: faltam as linhas de `media.ts` e
|
|
295
|
+
`.github/workflows/pages.yml` (the merged web pipeline); a linha 47 cita `web/Dockerfile` que
|
|
296
|
+
**não existe em disco**
|
|
297
|
+
9. `web/Dockerfile` também é listado na tabela files deste readme (e no
|
|
298
|
+
architecture.md) — arquivo ausente; a tabela não cobre db.js/auth.js/
|
|
299
|
+
index.js/login.js/register.js/dashboard.js/drizzle.config.ts/init.sql/
|
|
300
|
+
schema.prisma/mime.types
|
|
301
|
+
10. `/api/v1/mesh/ping` consumido pelo dashboard.js (com fallback) e citado
|
|
302
|
+
aqui, mas não implementado no server.js
|
|
303
|
+
11. `GET /api/v1/sandboxes` (shelf) e `POST /api/v1/sandboxes/:id/resume`
|
|
304
|
+
implementados mas ausentes da api table e do banner do server.js; o
|
|
305
|
+
worklog v7-FRONT acima ainda diz "not live yet" (stale)
|
|
306
|
+
12. pages.yml: o pipeline web mesclado (validação, testes, bundle estático e Pages) documenta
|
|
307
|
+
cinco actions docker/* — o job não existe (jobs reais: validate, test,
|
|
308
|
+
staticbundle, release); readme principal :282 repete a alegação
|
|
309
|
+
13. comando `streaming` implementado no dispatcher mas ausente do array
|
|
310
|
+
`commands`, do help e das manualpages (`man streaming` falha)
|
|
311
|
+
14. `ci.yml:28` trigger `branches: ain]` corrompido (deveria ser main) — o
|
|
312
|
+
yaml valida como escalar, então o push CI nunca dispara no branch certo
|
|
313
|
+
15. package.json `exports` expõe cinco subpaths `./web/*` mas `files` não
|
|
314
|
+
embarca web/ — exports quebrados no tarball npm publicado
|
|
315
|
+
|
|
316
|
+
sincronizado e confirmado OK: as versões 1.2.12 nos demais dez configs +
|
|
317
|
+
package.json + server.js + sandbox.js + ambos readmes; as 17 chaves de
|
|
318
|
+
`engineversions` batem com o ledger do readme e com os ARGs do Dockerfile;
|
|
319
|
+
os 8 cpus e 7 gpus de cpudata/gpudata batem com processors.json/gpus.json
|
|
320
|
+
(cores/threads/vram/pci id); os 22 pins de actions do package.json batem
|
|
321
|
+
com os `uses:` reais dos cinco workflows; todos os alvos de exports/files
|
|
322
|
+
existem no disco; todos os COPYs do Dockerfile apontam para arquivos
|
|
323
|
+
existentes; bibliografia = 145 entradas reais; SADDLE_MAX_SANDBOXES
|
|
324
|
+
documentado (server.js:516 + fim deste readme).
|
|
325
|
+
|
|
326
|
+
## api surface additions
|
|
327
|
+
|
|
328
|
+
- `GET /api/v1/sandboxes` - the user shelf: every sandbox row of the account (live and expired) with files/bytes/resumable
|
|
329
|
+
- `POST /api/v1/sandboxes/:id/resume` - take the container back: rebuilds the engine from the stored spec, rebinds the persistent workspace, renews the ttl
|
|
330
|
+
- `streaming` terminal command + `planmodelstreaming` (npm api) - the streaming memory plan: any workload size inside a small hot window
|
|
331
|
+
- sandbox creation is uncapped by default (`SADDLE_MAX_SANDBOXES=0`)
|
|
332
|
+
|
|
333
|
+
## bottleneck analysis: where each layer really lives
|
|
334
|
+
|
|
335
|
+
The project rule is absolute: no physical hardware is touched, probed or
|
|
336
|
+
required anywhere. every layer below is software; the table states, per
|
|
337
|
+
layer, where the bytes actually live and what the real ceiling is - so the
|
|
338
|
+
"sensation" of an auto-contained vm with unlimited resources maps to
|
|
339
|
+
engineering truth, not marketing.
|
|
340
|
+
|
|
341
|
+
| layer | where data lives | reported identity | real ceiling | verdict |
|
|
342
|
+
|---|---|---|---|---|
|
|
343
|
+
| browser terminal (clones) | tab memory (ram of the visitor device, sandboxed by the browser itself) | EPYC 9965, 1 TiB, B200 | tab memory budget of the browser (~2-4 GiB typical); zero disk writes | no physical server touched; ceiling is the visitor browser, not any host |
|
|
344
|
+
| sandbox id workspace | `sandboxfiles` table inside the container sqlite (`/data/saddle.db`), quota 16 MiB per id | `df -h` shows the quota as a filesystem | the container volume size; survives process restart, dies with `docker rm` unless the volume persists | auto-contained: the id, the files and the quota travel with the container |
|
|
345
|
+
| container memory plan | `/etc/virtual/meminfo` snapshot (1 TiB) + LD_PRELOAD overlay | `free -h` reports 1 TiB | host ram + swap with `--memory-swap=-1`; the kernel OOM killer is the only real wall | unlimited is virtual identity; physical OOM never happens in the browser path because nothing heavy runs there |
|
|
346
|
+
| vCPU / threads | cpuinfo spoof (192c/384t) + llvmpipe `LP_NUM_THREADS=0` | `lscpu` reports 192c/384t | host cores; llvmpipe caps at 32 threads (MR 31551) | virtual topology is free; compute-bound work is bounded by host cores |
|
|
347
|
+
| vGPU | software adapters (llvmpipe/lavapipe/rusticl + smi tables) | `nvidia-smi` lists 8x B200 | cpu rasterization throughput; no cuda kernels run | identity is unlimited; throughput is cpu-bound by design |
|
|
348
|
+
| mesh/auth state | sqlite of the main container (devthink.pro) | - | single main node db; clones forward | the main db is the management plane, sandboxes stay in their own container |
|
|
349
|
+
|
|
350
|
+
Three honest bottlenecks worth knowing: (1) the browser tab memory bounds
|
|
351
|
+
the clone terminal experience - by design, since the whole point is running
|
|
352
|
+
the container in the visitor browser without any server round trip;
|
|
353
|
+
(2) llvmpipe caps its own thread pool at 32 regardless of the spoofed
|
|
354
|
+
topology, so rendering throughput follows that cap; (3) the main db grows
|
|
355
|
+
with users and sandbox rows - the quota (16 MiB per sandbox id) and the
|
|
356
|
+
sweep jobs bound it, and the db file is the single artifact to back up.
|
|
357
|
+
None of these touch physical hardware of any visitor: the heaviest object
|
|
358
|
+
that ever reaches a clone visitor is static javascript.
|
|
359
|
+
|
|
360
|
+
## the unlimited path: how "any size" actually runs
|
|
361
|
+
|
|
362
|
+
The project rejects hardware limits by design; the two techniques that
|
|
363
|
+
make unbounded workloads real in software, both implemented:
|
|
364
|
+
|
|
365
|
+
1. **streaming memory** (`compute.ts planmodelstreaming`, terminal command
|
|
366
|
+
`streaming`): any workload decomposes into layers that load on demand
|
|
367
|
+
(mmap + page cache) and evict after the last consumer, so a 1.5 tb
|
|
368
|
+
model runs on a 4 gb window - proven: 3072 layers, 384 batches, peak
|
|
369
|
+
4.0 GiB resident. The workload size is unbounded; only the window is
|
|
370
|
+
fixed. This is the exact technique production inference engines use
|
|
371
|
+
for models larger than ram.
|
|
372
|
+
2. **federation of free nodes** (`compute.ts planfederatedquota`, the mesh
|
|
373
|
+
in `mesh.js`): every clone/main node contributes its window to the
|
|
374
|
+
pool; quotas sum across nodes, so capacity grows with each free host
|
|
375
|
+
that joins (github runners, free vps tiers, contributor machines) -
|
|
376
|
+
no hardware purchase anywhere.
|
|
377
|
+
|
|
378
|
+
Combined: the identity layer reports unlimited (18 tb, 384 threads), the
|
|
379
|
+
streaming layer makes any workload size executable inside a small window,
|
|
380
|
+
and federation multiplies the window across free hosts. That is the
|
|
381
|
+
no-limits architecture; the sandbox shelf itself is uncapped by default
|
|
382
|
+
(SADDLE_MAX_SANDBOXES=0).
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
{
|
|
2
|
+
"include": ["**/*.ts", "**/*.tsx"],
|
|
3
|
+
"exclude": ["node_modules", "build", "dist", "**/*.test.ts"],
|
|
4
|
+
"compilerOptions": {
|
|
5
|
+
"incremental": true,
|
|
6
|
+
"tsBuildInfoFile": "./node_modules/typescript/tsbuildinfo",
|
|
7
|
+
"noEmit": true,
|
|
8
|
+
"target": "ESNext",
|
|
9
|
+
"module": "ESNext",
|
|
10
|
+
"strict": true,
|
|
11
|
+
"lib": ["esnext", "dom", "dom.iterable"],
|
|
12
|
+
"jsx": "preserve",
|
|
13
|
+
"esModuleInterop": true,
|
|
14
|
+
"skipLibCheck": true,
|
|
15
|
+
"allowImportingTsExtensions": true,
|
|
16
|
+
"moduleResolution": "bundler",
|
|
17
|
+
"forceConsistentCasingInFileNames": true,
|
|
18
|
+
"resolveJsonModule": true,
|
|
19
|
+
"types": ["node", "vite/client"],
|
|
20
|
+
"paths": {
|
|
21
|
+
"@/*": ["./*"],
|
|
22
|
+
"@saddle/isolation": ["../isolation.ts"]
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
}
|
package/dist/adapters/forge.d.ts
DELETED
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
export declare function forgeadapter(options?: {}): {
|
|
2
|
-
kind: any;
|
|
3
|
-
health(path?: string): Promise<{
|
|
4
|
-
ok: any;
|
|
5
|
-
status: any;
|
|
6
|
-
}>;
|
|
7
|
-
dispatch(spec: any): Promise<{
|
|
8
|
-
accepted: any;
|
|
9
|
-
status: any;
|
|
10
|
-
body: any;
|
|
11
|
-
}>;
|
|
12
|
-
upload(spec: any): Promise<{
|
|
13
|
-
accepted: any;
|
|
14
|
-
status: any;
|
|
15
|
-
}>;
|
|
16
|
-
};
|
|
17
|
-
//# sourceMappingURL=forge.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"forge.d.ts","sourceRoot":"","sources":["../../adapters/forge.ts"],"names":[],"mappings":"AAKA,wBAAgB,YAAY,CAAC,OAAO,KAAK;;;;;;;;;;;;;;;EAUxC"}
|
package/dist/adapters/forge.js
DELETED
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* forge adapter defines the common dispatch and artifact surface for compatible forges.
|
|
3
|
-
*/
|
|
4
|
-
import { transport } from "./transport.js";
|
|
5
|
-
export function forgeadapter(options = {}) {
|
|
6
|
-
if (!options.baseurl || typeof options.token !== "function")
|
|
7
|
-
throw new TypeError("forge adapter requires baseurl and token function");
|
|
8
|
-
const client = transport({ fetcher: options.fetcher, attempts: options.attempts, timeout: options.timeout });
|
|
9
|
-
async function call(path, init = {}) { const token = await options.token(); return client.request(new URL(path, options.baseurl), { ...init, headers: { authorization: `Bearer ${token}`, accept: "application/json", ...(init.headers ?? {}) } }); }
|
|
10
|
-
return {
|
|
11
|
-
kind: options.kind ?? "forge",
|
|
12
|
-
async health(path = "/") { const response = await call(path); return { ok: response.ok, status: response.status }; },
|
|
13
|
-
async dispatch(spec) { if (!spec?.path || !spec.ref)
|
|
14
|
-
throw new TypeError("forge dispatch requires path and ref"); const response = await call(spec.path, { method: "POST", headers: { "content-type": "application/json" }, body: JSON.stringify({ ref: spec.ref, inputs: spec.inputs ?? {} }) }); return { accepted: response.ok, status: response.status, body: response.json ? await response.json() : undefined }; },
|
|
15
|
-
async upload(spec) { if (!spec?.path || !spec.data)
|
|
16
|
-
throw new TypeError("forge upload requires path and data"); const response = await call(spec.path, { method: "PUT", headers: { "content-type": spec.contenttype ?? "application/octet-stream" }, body: spec.data }); return { accepted: response.ok, status: response.status }; }
|
|
17
|
-
};
|
|
18
|
-
}
|
|
19
|
-
//# sourceMappingURL=forge.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"forge.js","sourceRoot":"","sources":["../../adapters/forge.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAE3C,MAAM,UAAU,YAAY,CAAC,OAAO,GAAG,EAAE;IACvC,IAAI,CAAC,OAAO,CAAC,OAAO,IAAI,OAAO,OAAO,CAAC,KAAK,KAAK,UAAU;QAAE,MAAM,IAAI,SAAS,CAAC,mDAAmD,CAAC,CAAC;IACtI,MAAM,MAAM,GAAG,SAAS,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,OAAO,EAAE,QAAQ,EAAE,OAAO,CAAC,QAAQ,EAAE,OAAO,EAAE,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC;IAC7G,KAAK,UAAU,IAAI,CAAC,IAAI,EAAE,IAAI,GAAG,EAAE,IAAI,MAAM,KAAK,GAAG,MAAM,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC,OAAO,MAAM,CAAC,OAAO,CAAC,IAAI,GAAG,CAAC,IAAI,EAAE,OAAO,CAAC,OAAO,CAAC,EAAE,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,EAAE,aAAa,EAAE,UAAU,KAAK,EAAE,EAAE,MAAM,EAAE,kBAAkB,EAAE,GAAG,CAAC,IAAI,CAAC,OAAO,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;IACrP,OAAO;QACL,IAAI,EAAE,OAAO,CAAC,IAAI,IAAI,OAAO;QAC7B,KAAK,CAAC,MAAM,CAAC,IAAI,GAAG,GAAG,IAAI,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,EAAE,EAAE,EAAE,QAAQ,CAAC,EAAE,EAAE,MAAM,EAAE,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;QACpH,KAAK,CAAC,QAAQ,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,EAAE,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG;YAAE,MAAM,IAAI,SAAS,CAAC,sCAAsC,CAAC,CAAC,CAAC,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,IAAI,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,EAAE,QAAQ,EAAE,QAAQ,CAAC,EAAE,EAAE,MAAM,EAAE,QAAQ,CAAC,MAAM,EAAE,IAAI,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC;QACxZ,KAAK,CAAC,MAAM,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,EAAE,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI;YAAE,MAAM,IAAI,SAAS,CAAC,qCAAqC,CAAC,CAAC,CAAC,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,cAAc,EAAE,IAAI,CAAC,WAAW,IAAI,0BAA0B,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,OAAO,EAAE,QAAQ,EAAE,QAAQ,CAAC,EAAE,EAAE,MAAM,EAAE,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;KACtU,CAAC;AACJ,CAAC"}
|
|
@@ -1,49 +0,0 @@
|
|
|
1
|
-
export declare function forgejoadapter(options?: {}): {
|
|
2
|
-
kind: any;
|
|
3
|
-
health(path?: string): Promise<{
|
|
4
|
-
ok: any;
|
|
5
|
-
status: any;
|
|
6
|
-
}>;
|
|
7
|
-
dispatch(spec: any): Promise<{
|
|
8
|
-
accepted: any;
|
|
9
|
-
status: any;
|
|
10
|
-
body: any;
|
|
11
|
-
}>;
|
|
12
|
-
upload(spec: any): Promise<{
|
|
13
|
-
accepted: any;
|
|
14
|
-
status: any;
|
|
15
|
-
}>;
|
|
16
|
-
};
|
|
17
|
-
export declare function giteaadapter(options?: {}): {
|
|
18
|
-
kind: any;
|
|
19
|
-
health(path?: string): Promise<{
|
|
20
|
-
ok: any;
|
|
21
|
-
status: any;
|
|
22
|
-
}>;
|
|
23
|
-
dispatch(spec: any): Promise<{
|
|
24
|
-
accepted: any;
|
|
25
|
-
status: any;
|
|
26
|
-
body: any;
|
|
27
|
-
}>;
|
|
28
|
-
upload(spec: any): Promise<{
|
|
29
|
-
accepted: any;
|
|
30
|
-
status: any;
|
|
31
|
-
}>;
|
|
32
|
-
};
|
|
33
|
-
export declare function codebergadapter(options?: {}): {
|
|
34
|
-
kind: any;
|
|
35
|
-
health(path?: string): Promise<{
|
|
36
|
-
ok: any;
|
|
37
|
-
status: any;
|
|
38
|
-
}>;
|
|
39
|
-
dispatch(spec: any): Promise<{
|
|
40
|
-
accepted: any;
|
|
41
|
-
status: any;
|
|
42
|
-
body: any;
|
|
43
|
-
}>;
|
|
44
|
-
upload(spec: any): Promise<{
|
|
45
|
-
accepted: any;
|
|
46
|
-
status: any;
|
|
47
|
-
}>;
|
|
48
|
-
};
|
|
49
|
-
//# sourceMappingURL=forgejo.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"forgejo.d.ts","sourceRoot":"","sources":["../../adapters/forgejo.ts"],"names":[],"mappings":"AAKA,wBAAgB,cAAc,CAAC,OAAO,KAAK;;;;;;;;;;;;;;;EAA2D;AACtG,wBAAgB,YAAY,CAAC,OAAO,KAAK;;;;;;;;;;;;;;;EAAyD;AAClG,wBAAgB,eAAe,CAAC,OAAO,KAAK;;;;;;;;;;;;;;;EAA4D"}
|
package/dist/adapters/forgejo.js
DELETED
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* forgejo and gitea can reuse the open forge contract with a caller supplied base url.
|
|
3
|
-
*/
|
|
4
|
-
import { forgeadapter } from "./forge.js";
|
|
5
|
-
export function forgejoadapter(options = {}) { return forgeadapter({ ...options, kind: "forgejo" }); }
|
|
6
|
-
export function giteaadapter(options = {}) { return forgeadapter({ ...options, kind: "gitea" }); }
|
|
7
|
-
export function codebergadapter(options = {}) { return forgeadapter({ ...options, kind: "codeberg" }); }
|
|
8
|
-
//# sourceMappingURL=forgejo.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"forgejo.js","sourceRoot":"","sources":["../../adapters/forgejo.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAE1C,MAAM,UAAU,cAAc,CAAC,OAAO,GAAG,EAAE,IAAI,OAAO,YAAY,CAAC,EAAE,GAAG,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC;AACtG,MAAM,UAAU,YAAY,CAAC,OAAO,GAAG,EAAE,IAAI,OAAO,YAAY,CAAC,EAAE,GAAG,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC;AAClG,MAAM,UAAU,eAAe,CAAC,OAAO,GAAG,EAAE,IAAI,OAAO,YAAY,CAAC,EAAE,GAAG,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC,CAAC,CAAC,CAAC"}
|
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
export declare function githubadapter(options?: {}): {
|
|
2
|
-
health(): Promise<{
|
|
3
|
-
ok: any;
|
|
4
|
-
status: any;
|
|
5
|
-
}>;
|
|
6
|
-
dispatch(owner: any, repository: any, workflow: any, input?: {}): Promise<{
|
|
7
|
-
accepted: boolean;
|
|
8
|
-
status: any;
|
|
9
|
-
}>;
|
|
10
|
-
run(owner: any, repository: any, runid: any): Promise<any>;
|
|
11
|
-
};
|
|
12
|
-
//# sourceMappingURL=github.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"github.d.ts","sourceRoot":"","sources":["../../adapters/github.ts"],"names":[],"mappings":"AAKA,wBAAgB,aAAa,CAAC,OAAO,KAAK;;;;;;;;;;EAazC"}
|
package/dist/adapters/github.js
DELETED
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* github adapter uses caller supplied credentials and base url configuration.
|
|
3
|
-
*/
|
|
4
|
-
import { transport } from "./transport.js";
|
|
5
|
-
export function githubadapter(options = {}) {
|
|
6
|
-
if (!options.baseurl || typeof options.token !== "function")
|
|
7
|
-
throw new TypeError("github adapter requires baseurl and token function");
|
|
8
|
-
const client = transport({ fetcher: options.fetcher, attempts: options.attempts, timeout: options.timeout });
|
|
9
|
-
async function call(path, init = {}) {
|
|
10
|
-
const token = await options.token();
|
|
11
|
-
const headers = { accept: "application/vnd.github+json", authorization: `Bearer ${token}`, "x-github-api-version": options.apiversion ?? "2022-11-28", ...(init.headers ?? {}) };
|
|
12
|
-
return client.request(new URL(path, options.baseurl), { ...init, headers });
|
|
13
|
-
}
|
|
14
|
-
return {
|
|
15
|
-
async health() { const response = await call("/rate_limit"); return { ok: response.ok, status: response.status }; },
|
|
16
|
-
async dispatch(owner, repository, workflow, input = {}) { const response = await call(`/repos/${owner}/${repository}/actions/workflows/${workflow}/dispatches`, { method: "POST", headers: { "content-type": "application/json" }, body: JSON.stringify({ ref: input.ref ?? "main", inputs: input.inputs ?? {} }) }); return { accepted: response.status === 204, status: response.status }; },
|
|
17
|
-
async run(owner, repository, runid) { const response = await call(`/repos/${owner}/${repository}/actions/runs/${runid}`); return response.json(); }
|
|
18
|
-
};
|
|
19
|
-
}
|
|
20
|
-
//# sourceMappingURL=github.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"github.js","sourceRoot":"","sources":["../../adapters/github.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAE3C,MAAM,UAAU,aAAa,CAAC,OAAO,GAAG,EAAE;IACxC,IAAI,CAAC,OAAO,CAAC,OAAO,IAAI,OAAO,OAAO,CAAC,KAAK,KAAK,UAAU;QAAE,MAAM,IAAI,SAAS,CAAC,oDAAoD,CAAC,CAAC;IACvI,MAAM,MAAM,GAAG,SAAS,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,OAAO,EAAE,QAAQ,EAAE,OAAO,CAAC,QAAQ,EAAE,OAAO,EAAE,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC;IAC7G,KAAK,UAAU,IAAI,CAAC,IAAI,EAAE,IAAI,GAAG,EAAE;QACjC,MAAM,KAAK,GAAG,MAAM,OAAO,CAAC,KAAK,EAAE,CAAC;QACpC,MAAM,OAAO,GAAG,EAAE,MAAM,EAAE,6BAA6B,EAAE,aAAa,EAAE,UAAU,KAAK,EAAE,EAAE,sBAAsB,EAAE,OAAO,CAAC,UAAU,IAAI,YAAY,EAAE,GAAG,CAAC,IAAI,CAAC,OAAO,IAAI,EAAE,CAAC,EAAE,CAAC;QACjL,OAAO,MAAM,CAAC,OAAO,CAAC,IAAI,GAAG,CAAC,IAAI,EAAE,OAAO,CAAC,OAAO,CAAC,EAAE,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC;IAC9E,CAAC;IACD,OAAO;QACL,KAAK,CAAC,MAAM,KAAK,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,EAAE,EAAE,EAAE,QAAQ,CAAC,EAAE,EAAE,MAAM,EAAE,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;QACnH,KAAK,CAAC,QAAQ,CAAC,KAAK,EAAE,UAAU,EAAE,QAAQ,EAAE,KAAK,GAAG,EAAE,IAAI,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,UAAU,KAAK,IAAI,UAAU,sBAAsB,QAAQ,aAAa,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,GAAG,EAAE,KAAK,CAAC,GAAG,IAAI,MAAM,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,IAAI,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,EAAE,QAAQ,EAAE,QAAQ,CAAC,MAAM,KAAK,GAAG,EAAE,MAAM,EAAE,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;QAC9X,KAAK,CAAC,GAAG,CAAC,KAAK,EAAE,UAAU,EAAE,KAAK,IAAI,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,UAAU,KAAK,IAAI,UAAU,iBAAiB,KAAK,EAAE,CAAC,CAAC,CAAC,OAAO,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;KACpJ,CAAC;AACJ,CAAC"}
|
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
export declare function gitlabadapter(options?: {}): {
|
|
2
|
-
kind: any;
|
|
3
|
-
health(path?: string): Promise<{
|
|
4
|
-
ok: any;
|
|
5
|
-
status: any;
|
|
6
|
-
}>;
|
|
7
|
-
upload(spec: any): Promise<{
|
|
8
|
-
accepted: any;
|
|
9
|
-
status: any;
|
|
10
|
-
}>;
|
|
11
|
-
dispatch(spec: any): Promise<{
|
|
12
|
-
accepted: any;
|
|
13
|
-
status: any;
|
|
14
|
-
body: any;
|
|
15
|
-
}>;
|
|
16
|
-
};
|
|
17
|
-
//# sourceMappingURL=gitlab.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"gitlab.d.ts","sourceRoot":"","sources":["../../adapters/gitlab.ts"],"names":[],"mappings":"AAKA,wBAAgB,aAAa,CAAC,OAAO,KAAK;;;;;;;;;;;;;;;EAIzC"}
|
package/dist/adapters/gitlab.js
DELETED
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* gitlab adapter keeps project addressing and token ownership outside the package.
|
|
3
|
-
*/
|
|
4
|
-
import { forgeadapter } from "./forge.js";
|
|
5
|
-
export function gitlabadapter(options = {}) {
|
|
6
|
-
const project = encodeURIComponent(options.project ?? "");
|
|
7
|
-
const base = forgeadapter({ ...options, kind: "gitlab" });
|
|
8
|
-
return { ...base, async dispatch(spec) { return base.dispatch({ ...spec, path: spec.path ?? `/api/v4/projects/${project}/pipeline` }); } };
|
|
9
|
-
}
|
|
10
|
-
//# sourceMappingURL=gitlab.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"gitlab.js","sourceRoot":"","sources":["../../adapters/gitlab.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAE1C,MAAM,UAAU,aAAa,CAAC,OAAO,GAAG,EAAE;IACxC,MAAM,OAAO,GAAG,kBAAkB,CAAC,OAAO,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC;IAC1D,MAAM,IAAI,GAAG,YAAY,CAAC,EAAE,GAAG,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAC;IAC1D,OAAO,EAAE,GAAG,IAAI,EAAE,KAAK,CAAC,QAAQ,CAAC,IAAI,IAAI,OAAO,IAAI,CAAC,QAAQ,CAAC,EAAE,GAAG,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,IAAI,oBAAoB,OAAO,WAAW,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;AAC7I,CAAC"}
|
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
export declare function huggingfaceadapter(options?: {}): {
|
|
2
|
-
kind: any;
|
|
3
|
-
health(path?: string): Promise<{
|
|
4
|
-
ok: any;
|
|
5
|
-
status: any;
|
|
6
|
-
}>;
|
|
7
|
-
dispatch(spec: any): Promise<{
|
|
8
|
-
accepted: any;
|
|
9
|
-
status: any;
|
|
10
|
-
body: any;
|
|
11
|
-
}>;
|
|
12
|
-
upload(spec: any): Promise<{
|
|
13
|
-
accepted: any;
|
|
14
|
-
status: any;
|
|
15
|
-
}>;
|
|
16
|
-
};
|
|
17
|
-
//# sourceMappingURL=huggingface.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"huggingface.d.ts","sourceRoot":"","sources":["../../adapters/huggingface.ts"],"names":[],"mappings":"AAKA,wBAAgB,kBAAkB,CAAC,OAAO,KAAK;;;;;;;;;;;;;;;EAA+D"}
|