@wenathlan/saddle 1.8.4 → 1.8.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +7 -7
- package/browser/playwright.js +22 -0
- package/docs/.gitkeep +0 -0
- package/docs/gapmatrix.md +1 -1
- package/docs/libraryapi.md +1 -0
- package/docs/logs/.gitkeep +0 -0
- package/docs/packageaudit185.md +23 -0
- package/docs/plans/00.index.md +50 -0
- package/docs/plans/01.architecture.md +86 -0
- package/docs/plans/02.research.computer.use.md +58 -0
- package/docs/plans/03.research.captcha.bypass.md +68 -0
- package/docs/plans/04.research.sandbox.ai.md +52 -0
- package/docs/plans/05.capture.platform.md +57 -0
- package/docs/plans/06.dependencies.md +97 -0
- package/docs/plans/07.captcha.test.page.md +41 -0
- package/docs/plans/08.production.infra.md +70 -0
- package/docs/plans/09.database.schema.md +121 -0
- package/docs/plans/10.cloudinary.storage.md +57 -0
- package/docs/plans/11.movement.logs.json.md +72 -0
- package/docs/plans/12.research.atlas.agent.browser.md +79 -0
- package/docs/plans/13.research.anti.detection.md +898 -0
- package/docs/plans/14.research.proxy.md +1495 -0
- package/docs/plans/15.research.retry.rate.limit.md +1958 -0
- package/docs/plans/16.research.crawling.md +1417 -0
- package/docs/plans/17.research.caching.md +1610 -0
- package/docs/plans/18.research.content.extraction.md +1952 -0
- package/docs/plans/19.research.errors.events.md +1523 -0
- package/docs/plans/20.research.zod.validation.md +1350 -0
- package/docs/plans/21.research.batch.concurrency.md +1888 -0
- package/docs/plans/22.research.universal.runtime.md +944 -0
- package/docs/plans/23.research.ai.integration.md +1465 -0
- package/docs/plans/24.research.memory.persistence.md +1979 -0
- package/docs/plans/25.research.server.api.md +342 -0
- package/docs/plans/26.research.compilation.md +249 -0
- package/docs/plans/27.research.html.parsing.md +251 -0
- package/docs/plans/28.action.plan.md +50 -0
- package/docs/plans/29.api.reference.md +174 -0
- package/docs/plans/30.architecture.plan.md +94 -0
- package/docs/plans/31.auditoria.dados.md +163 -0
- package/docs/plans/32.bots.automacao.computacional.md +214 -0
- package/docs/plans/33.bots.codigo.revisao.md +220 -0
- package/docs/plans/34.bots.seguranca.cicd.md +366 -0
- package/docs/plans/35.comparativo.concorrencia.md +464 -0
- package/docs/plans/36.computational.memory.md +340 -0
- package/docs/plans/37.deploystrategy.md +394 -0
- package/docs/plans/38.flow.md +155 -0
- package/docs/plans/39.multi.platform.bot.md +252 -0
- package/docs/plans/40.npm.publish.md +250 -0
- package/docs/plans/41.o.que.falta.md +407 -0
- package/docs/plans/42.pesquisa.concorrencia.md +721 -0
- package/docs/plans/43.plan.universal.architecture.md +496 -0
- package/docs/plans/44.reference.md +100 -0
- package/docs/plans/45.robotarchitecture.md +237 -0
- package/docs/plans/46.scdnintegration.md +284 -0
- package/docs/plans/47.multiforge.readme.md +129 -0
- package/docs/plans/48.theory.v4.repo.os.md +152 -0
- package/docs/plans/49.third.party.infra.md +12 -0
- package/docs/plans/50.file.as.compute.md +39 -0
- package/docs/plans/51.architecture.virtual.processor.md +80 -0
- package/docs/plans/52.manifesto.v8.md +11 -0
- package/docs/plans/58.cdn.list.md +23 -0
- package/docs/plans/59.sql.frameworks.md +33 -0
- package/docs/plans/60.sql.thirdparty.md +26 -0
- package/docs/plans/61.objective.multiforge.md +63 -0
- package/docs/plans/62.huggingface.upload.md +26 -0
- package/docs/plans/63.kaggle.upload.md +24 -0
- package/docs/plans/64.npm.storage.md +30 -0
- package/docs/plans/65.rclone.terabox.md +32 -0
- package/docs/plans/66.buckets.and.models.todo.md +14 -0
- package/docs/plans/67.database.todo.md +13 -0
- package/docs/plans/68.deploy.packages.todo.md +12 -0
- package/docs/plans/69.report.human.operator.md +133 -0
- package/docs/plans/70.report.brain2qwerty.ems.md +135 -0
- package/docs/plans/71.report.hd.infinito.vram.md +155 -0
- package/docs/plans/72.plan.hd.infinito.node.md +146 -0
- package/docs/plans/73.plan.scifi.repos.md +125 -0
- package/docs/plans/74.000.manifesto.v8.flat.2..md +11 -0
- package/docs/plans/README.md +489 -0
- package/docs/plans/aggregate_platforms.mjs +146 -0
- package/docs/plans/examplesession.json +36 -0
- package/docs/plans/missing-facts.md +192 -0
- package/docs/plans/models.md +64 -0
- package/docs/plans/organize.cjs +270 -0
- package/docs/plans/platforms.md +2887 -0
- package/docs/plans/sites.md +31322 -0
- package/docs/registryresearch.md +2 -0
- package/docs/release.md +4 -4
- package/docs/release184notes.md +2 -2
- package/docs/release185notes.md +7 -0
- package/docs/sources/farm.py +117 -0
- package/docs/sources/html/saddle1.html +132 -0
- package/docs/sources/html/saddle2.html +157 -0
- package/docs/sources/html/saddle3.html +119 -0
- package/docs/sources/html/saddle4.html +144 -0
- package/docs/sources/html/saddle5.html +72 -0
- package/docs/sources/html/saddle6.html +171 -0
- package/docs/sources/html/saddle7.html +236 -0
- package/docs/sources/saddle.ts +74 -0
- package/docs/sources/schema.prisma +88 -0
- package/docs/sources/script.sh +64 -0
- package/docs/sources/workflows.yml +458 -0
- package/docs/talks1/_body.txt +14 -0
- package/docs/talks1/_index.md +15 -0
- package/docs/talks1/_screenshot.png +0 -0
- package/docs/talks1/assistant-01.md +5 -0
- package/docs/talks1/assistant-02.md +5 -0
- package/docs/talks1/assistant-03.md +531 -0
- package/docs/talks1/assistant-04.md +26 -0
- package/docs/talks1/assistant-05.md +774 -0
- package/docs/talks1/assistant-06.md +1718 -0
- package/docs/talks1/scrape-share.cjs +185 -0
- package/docs/talks1/scrape-share.ts +183 -0
- package/docs/talks1/user-01.md +3 -0
- package/docs/talks1/user-02.md +3 -0
- package/docs/talks1/user-03.md +88 -0
- package/docs/talks1/user-04.md +3 -0
- package/docs/talks1/user-05.md +3 -0
- package/docs/talks1/user-06.md +88 -0
- package/docs/talks1/user-07.md +88 -0
- package/docs/talks2/_body.txt +14 -0
- package/docs/talks2/_index.md +16 -0
- package/docs/talks2/_screenshot.png +0 -0
- package/docs/talks2/assistant-01.md +5 -0
- package/docs/talks2/assistant-02.md +5 -0
- package/docs/talks2/assistant-03.md +424 -0
- package/docs/talks2/assistant-04.md +598 -0
- package/docs/talks2/assistant-05.md +1280 -0
- package/docs/talks2/assistant-06.md +1227 -0
- package/docs/talks2/assistant-07.md +1252 -0
- package/docs/talks2/user-01.md +3 -0
- package/docs/talks2/user-02.md +3 -0
- package/docs/talks2/user-03.md +88 -0
- package/docs/talks2/user-04.md +88 -0
- package/docs/talks2/user-05.md +88 -0
- package/docs/talks2/user-06.md +88 -0
- package/docs/talks2/user-07.md +3 -0
- package/docs/talks3/_body.txt +467 -0
- package/docs/talks3/_index.md +10 -0
- package/docs/talks3/_screenshot.png +0 -0
- package/docs/talks3/assistant-01.md +417 -0
- package/docs/talks3/assistant-02.md +417 -0
- package/docs/talks3/assistant-03.md +29 -0
- package/docs/talks3/assistant-04.md +727 -0
- package/docs/talks3/user-01.md +88 -0
- package/docs/talks3/user-02.md +88 -0
- package/docs/talks3/user-03.md +3 -0
- package/docs/talks3/user-04.md +3 -0
- package/docs/talks4/_body.txt +14 -0
- package/docs/talks4/_index.md +12 -0
- package/docs/talks4/_screenshot.png +0 -0
- package/docs/talks4/assistant-01.md +5 -0
- package/docs/talks4/assistant-02.md +5 -0
- package/docs/talks4/assistant-03.md +35 -0
- package/docs/talks4/assistant-04.md +512 -0
- package/docs/talks4/assistant-05.md +599 -0
- package/docs/talks4/user-01.md +3 -0
- package/docs/talks4/user-02.md +3 -0
- package/docs/talks4/user-03.md +88 -0
- package/docs/talks4/user-04.md +88 -0
- package/docs/talks4/user-05.md +7 -0
- package/docs/talks5/_body.txt +14 -0
- package/docs/talks5/_index.md +13 -0
- package/docs/talks5/_screenshot.png +0 -0
- package/docs/talks5/assistant-01.md +5 -0
- package/docs/talks5/assistant-02.md +5 -0
- package/docs/talks5/assistant-03.md +690 -0
- package/docs/talks5/assistant-04.md +758 -0
- package/docs/talks5/assistant-05.md +974 -0
- package/docs/talks5/user-01.md +3 -0
- package/docs/talks5/user-02.md +3 -0
- package/docs/talks5/user-03.md +105 -0
- package/docs/talks5/user-04.md +105 -0
- package/docs/talks5/user-05.md +63 -0
- package/docs/talks5/user-06.md +105 -0
- package/docs/talks6/_body.txt +14 -0
- package/docs/talks6/_index.md +9 -0
- package/docs/talks6/_screenshot.png +0 -0
- package/docs/talks6/assistant-01.md +5 -0
- package/docs/talks6/assistant-02.md +5 -0
- package/docs/talks6/assistant-03.md +1499 -0
- package/docs/talks6/user-01.md +3 -0
- package/docs/talks6/user-02.md +3 -0
- package/docs/talks6/user-03.md +88 -0
- package/docs/talks6/user-04.md +88 -0
- package/docs/talks7/_body.txt +14 -0
- package/docs/talks7/_index.md +10 -0
- package/docs/talks7/_screenshot.png +0 -0
- package/docs/talks7/assistant-01.md +5 -0
- package/docs/talks7/assistant-02.md +5 -0
- package/docs/talks7/assistant-03.md +523 -0
- package/docs/talks7/assistant-04.md +617 -0
- package/docs/talks7/user-01.md +3 -0
- package/docs/talks7/user-02.md +3 -0
- package/docs/talks7/user-03.md +105 -0
- package/docs/talks7/user-04.md +67 -0
- package/docs/talks8/conversa1.txt +1322 -0
- package/docs/talks8/conversa2.txt +237 -0
- 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" +174 -0
- 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" +59 -0
- 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" +91 -0
- 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" +116 -0
- 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" +128 -0
- package/docs/talks9/README (2).md +489 -0
- package/docs/talks9/README.md +198 -0
- 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" +80 -0
- package/docs/talks9/conversa.txt +544 -0
- package/docs/talks9/other (2).md +39 -0
- package/docs/talks9/other.md +57 -0
- package/docs/talks9/outro.txt +24 -0
- package/package.json +12 -2
- package/scrape/agent.ts +122 -0
- package/scrape/batch.ts +79 -0
- package/scrape/biome.json +76 -0
- package/scrape/browser.ts +222 -0
- package/scrape/cache.ts +84 -0
- package/scrape/chunking.ts +193 -0
- package/scrape/cli.ts +105 -0
- package/scrape/crawler.ts +115 -0
- package/scrape/dev-server.ts +94 -0
- package/scrape/errors.ts +132 -0
- package/scrape/events.ts +26 -0
- package/scrape/extract.ts +165 -0
- package/scrape/fetch.ts +105 -0
- package/scrape/formats.ts +85 -0
- package/scrape/headers.ts +71 -0
- package/scrape/index.ts +92 -0
- package/scrape/jsdom.d.ts +6 -0
- package/scrape/llms-txt.ts +84 -0
- package/scrape/middleware.ts +90 -0
- package/scrape/package-lock.json +9397 -0
- package/scrape/package.json +1420 -0
- package/scrape/pool.ts +95 -0
- package/scrape/port.ts +18 -0
- package/scrape/proxy.ts +103 -0
- package/scrape/rate-limiter.ts +95 -0
- package/scrape/renderer.ts +194 -0
- package/scrape/retry.ts +64 -0
- package/scrape/robots.ts +137 -0
- package/scrape/scrape.ts +123 -0
- package/scrape/serialize.ts +310 -0
- package/scrape/server.ts +137 -0
- package/scrape/session.ts +109 -0
- package/scrape/sitemap.ts +131 -0
- package/scrape/tokens.ts +45 -0
- package/scrape/tsconfig.json +28 -0
- package/scrape/types.ts +214 -0
- package/scrape/utils.ts +77 -0
- package/scrape/vite.config.ts +55 -0
- package/scrape/vitest.config.ts +17 -0
package/docs/registryresearch.md
CHANGED
|
@@ -50,6 +50,8 @@ Release `v1.8.1` was created from the identity migration commit `efcbb02`. The n
|
|
|
50
50
|
|
|
51
51
|
Release `v1.8.2` was created from commit `ac7c355` after the repository transfer to `wenathlan`. All release jobs succeeded: GitHub npm `31559770092` logged the owner-derived `@wenathlan/saddle` package, npmjs `31559770096` published the same public package, GHCR `31559770016` pushed `ghcr.io/wenathlan/saddle:1.8.2` and `latest`, Maven `31559770216` deployed `io.wenathlan:saddle:1.8.2`, NuGet `31559770142` created and pushed `Saddle.1.8.2.nupkg`, RubyGems `31559770023` registered `saddle (1.8.2)`, and extension build `31559769740` attached `saddle-extension-1.8.2.zip`. Release validation `31559770059` also succeeded. Independent checks confirmed npmjs `@wenathlan/saddle@1.8.2` and the GitHub release asset. The GitHub organization package-list API returned 403 for the available integration, while unauthenticated GHCR, Maven and NuGet endpoints returned 401; these protected visibility boundaries do not contradict the successful authenticated workflow logs.
|
|
52
52
|
|
|
53
|
+
Release `v1.8.4` was created from commit `d64a7bc` and the complete release matrix succeeded: engine CI `31561276824`, cross-runtime compatibility `31561276811`, release validation `31561278178`, extension build `31561278220`, GitHub npm `31561278174`, npmjs `31561278155`, GHCR `31561278152`, Maven `31561278161`, NuGet `31561278165` and RubyGems `31561278131`. The release therefore published `@wenathlan/saddle@1.8.4`, `ghcr.io/wenathlan/saddle:1.8.4`, `io.wenathlan:saddle:1.8.4`, `Saddle.1.8.4.nupkg`, `saddle (1.8.4)` and `saddle-extension-1.8.4.zip`. The legacy package metadata endpoint confirmed the public package `io.devthink.saddle` under `wenathlan`, but both version listing and deletion returned HTTP 403 because the current GitHub App token lacks package-management deletion permission; no deletion is claimed.
|
|
54
|
+
|
|
53
55
|
## sources
|
|
54
56
|
|
|
55
57
|
1. GitHub Docs — About permissions for GitHub Packages: https://docs.github.com/en/packages/learn-github-packages/about-permissions-for-github-packages
|
package/docs/release.md
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
# saddle release 1.8.
|
|
1
|
+
# saddle release 1.8.5
|
|
2
2
|
|
|
3
3
|
## release path
|
|
4
4
|
|
|
@@ -6,10 +6,10 @@ The release path is intentionally split into source validation, package validati
|
|
|
6
6
|
|
|
7
7
|
| step | owner | condition |
|
|
8
8
|
|---|---|---|
|
|
9
|
-
| package version | repository | `package.json` is `1.8.
|
|
9
|
+
| package version | repository | `package.json` is `1.8.5` |
|
|
10
10
|
| quality gate | GitHub Actions | `npm run pack:check` passes |
|
|
11
|
-
| tag | repository owner | tag `v1.8.
|
|
12
|
-
| GitHub release | repository owner | release `v1.8.
|
|
11
|
+
| tag | repository owner | tag `v1.8.5` points to the validated release commit |
|
|
12
|
+
| GitHub release | repository owner | release `v1.8.5` is created from the validated tag |
|
|
13
13
|
| GitHub Packages | GitHub Actions | `publishgithubnpm.yml`, `publishghcr.yml`, `publishmaven.yml`, `publishnuget.yml`, and `publishrubygems.yml` use `GITHUB_TOKEN` |
|
|
14
14
|
| public npmjs | owner-managed GitHub Actions secret | `publishnpmjs.yml` uses `NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}` and derives the version from the release tag or latest release in manual maintenance runs |
|
|
15
15
|
| extension zip | GitHub Actions | `buildextension.yml` derives the version from the release tag, validates the unpacked artifact and attaches `saddle-extension-<version>.zip` |
|
package/docs/release184notes.md
CHANGED
|
@@ -2,6 +2,6 @@
|
|
|
2
2
|
|
|
3
3
|
Saddle 1.8.4 updates every active library and forge pipeline to Node.js 26.7.0 and adds deterministic package gates to GitLab, Forgejo, Gitea and Woodpecker workflows. GitHub Actions remains the authoritative multi-registry release path; the other forge files are caller-configured validation and artifact paths because their runners, secrets and package registries differ.
|
|
4
4
|
|
|
5
|
-
The legacy public Maven package `io.devthink.saddle` was identified under the `wenathlan` organization. Its deletion request was attempted through the GitHub Packages API, but the authenticated GitHub App integration returned HTTP 403 because it lacks package-management deletion permission. The new owner-aligned Maven coordinate is `io.wenathlan:saddle` and must not be removed.
|
|
5
|
+
The legacy public Maven package `io.devthink.saddle` was identified under the `wenathlan` organization. Its deletion request was attempted through the GitHub Packages API, but the authenticated GitHub App integration returned HTTP 403 because it lacks package-management deletion permission. The new owner-aligned Maven coordinate is `io.wenathlan:saddle` and was published successfully; it must not be removed.
|
|
6
6
|
|
|
7
|
-
The companion Saddle Pages repository
|
|
7
|
+
The companion Saddle Pages repository is public at `https://github.com/wenathlan/saddle-pages` and contains the GitHub Pages workflow using `actions/configure-pages@v5`, `actions/upload-pages-artifact@v4` and `actions/deploy-pages@v4`, plus caller-configured GitLab Pages, Forgejo, Codeberg Pages, Gitea and Woodpecker pipelines. The site builds only `dist/public` with `VITE_BASE_PATH=/saddle-pages/` and uses Node.js 26.7.0. The initial source push omitted `.github/workflows/pages.yml` because the current GitHub App token lacks the `workflow` scope; the workflow remains prepared in the local project checkpoint for the required reauthorization.
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
# Saddle 1.8.5
|
|
2
|
+
|
|
3
|
+
Saddle 1.8.5 extends the published 1.8.4 engine without rewriting its immutable tag. The package metadata now declares Node.js `>=26.7.0`, npm `>=10.9.2`, the reproducible package manager `npm@12.0.2`, `main`/`module`/`browser` entry hints and `sideEffects: false` for bundlers.
|
|
4
|
+
|
|
5
|
+
The release adds `playwright` as an optional peer at `^1.62.1` and exposes `@wenathlan/saddle/browser-playwright`. The adapter dynamically loads the caller-installed provider and reports `OPTIONAL_DEPENDENCY_MISSING` when Playwright is not installed. No browser binary, credential, host or runtime dependency is forced into the transport-neutral root.
|
|
6
|
+
|
|
7
|
+
The package remains root-based JavaScript ESM. `trustedDependencies` and patch metadata were intentionally not added: the package has no install-time dependency requiring trust escalation and no active package patch to describe. The pnpm documentation also states that pnpm 11 no longer reads settings from the `pnpm` field in `package.json`, so no stale `pnpm.patchedDependencies` field was introduced.
|
|
@@ -0,0 +1,117 @@
|
|
|
1
|
+
# farm.py - Orquestra N repos para multiplicar storage ilimitado
|
|
2
|
+
# Ideia: 1 repo = 500MB artifact free. 10 repos = 5GB, 100 repos = 50GB ilimitado
|
|
3
|
+
|
|
4
|
+
import os, requests
|
|
5
|
+
|
|
6
|
+
# Lista de repos workers (você cria via API)
|
|
7
|
+
WORKER_REPOS = [
|
|
8
|
+
"seuuser/opencode-worker-1",
|
|
9
|
+
"seuuser/opencode-worker-2",
|
|
10
|
+
"seuuser/opencode-worker-3",
|
|
11
|
+
# ... adicione 100
|
|
12
|
+
]
|
|
13
|
+
|
|
14
|
+
TOKEN = os.getenv("GITHUB_TOKEN")
|
|
15
|
+
|
|
16
|
+
def dispatch_to_farm(filename, job_id):
|
|
17
|
+
for repo in WORKER_REPOS:
|
|
18
|
+
owner, name = repo.split("/")
|
|
19
|
+
url = f"https://api.github.com/repos/{owner}/{name}/actions/workflows/process-binary.yml/dispatches"
|
|
20
|
+
payload = {
|
|
21
|
+
"ref": "main",
|
|
22
|
+
"inputs": {"job_id": job_id, "filename": filename, "action": "run"}
|
|
23
|
+
}
|
|
24
|
+
r = requests.post(url, json=payload, headers={
|
|
25
|
+
"Authorization": f"Bearer {TOKEN}",
|
|
26
|
+
"Accept": "application/vnd.github+json"
|
|
27
|
+
})
|
|
28
|
+
print(f"{repo}: {r.status_code}")
|
|
29
|
+
if r.status_code == 204:
|
|
30
|
+
break # conseguiu um worker
|
|
31
|
+
|
|
32
|
+
if __name__ == "__main__":
|
|
33
|
+
dispatch_to_farm("binary.wasm", "job-123")
|
|
34
|
+
|
|
35
|
+
#!/bin/bash
|
|
36
|
+
# Script: Transforma Armazenamento em RAM / Processamento
|
|
37
|
+
# Uso: ./scripts/storage-as-ram.sh
|
|
38
|
+
|
|
39
|
+
echo "=== Transformando Storage em Processamento ==="
|
|
40
|
+
echo "Antes:" && free -h
|
|
41
|
+
|
|
42
|
+
# 1. Swap file - transforma disco em RAM virtual
|
|
43
|
+
echo "[1] Criando swap 16GB em /mnt/swapfile..."
|
|
44
|
+
sudo fallocate -l 16G /mnt/swapfile 2>/dev/null || sudo dd if=/dev/zero of=/mnt/swapfile bs=1G count=16
|
|
45
|
+
sudo chmod 600 /mnt/swapfile
|
|
46
|
+
sudo mkswap /mnt/swapfile
|
|
47
|
+
sudo swapon /mnt/swapfile
|
|
48
|
+
|
|
49
|
+
# 2. tmpfs RAM disk - RAM que parece storage
|
|
50
|
+
echo "[2] Criando RAM disk 8GB em /mnt/ramdisk..."
|
|
51
|
+
sudo mkdir -p /mnt/ramdisk
|
|
52
|
+
sudo mount -t tmpfs -o size=8G tmpfs /mnt/ramdisk
|
|
53
|
+
|
|
54
|
+
# 3. ZRAM - comprime RAM para caber mais
|
|
55
|
+
echo "[3] Ativando ZRAM..."
|
|
56
|
+
sudo modprobe zram 2>/dev/null || true
|
|
57
|
+
echo 2G | sudo tee /sys/block/zram0/disksize 2>/dev/null || true
|
|
58
|
+
|
|
59
|
+
# 4. Usar /dev/shm (já é tmpfs) como workspace ultra rápido
|
|
60
|
+
echo "[4] Usando /dev/shm como workspace..."
|
|
61
|
+
mkdir -p /dev/shm/opencode-workspace
|
|
62
|
+
|
|
63
|
+
echo "Depois:" && free -h && swapon --show && df -h /mnt/ramdisk /dev/shm
|
|
64
|
+
|
|
65
|
+
echo "Pronto: Storage virou RAM. Use /mnt/ramdisk e /dev/shm para processar binários sem pesar disco."
|
|
66
|
+
|
|
67
|
+
# buckets/huggingface_upload.py - Usa Hugging Face como bucket ilimitado de terceiros
|
|
68
|
+
from huggingface_hub import HfApi, upload_folder
|
|
69
|
+
import os
|
|
70
|
+
|
|
71
|
+
# Free: public best-effort ilimitado, private 100GB
|
|
72
|
+
# PRO $9/mo: 10TB public + 1TB private
|
|
73
|
+
# Cada arquivo até 500GB com Xet backend
|
|
74
|
+
|
|
75
|
+
api = HfApi(token=os.getenv("HF_TOKEN"))
|
|
76
|
+
|
|
77
|
+
REPO_ID = "seuuser/opencode-storage" # dataset repo
|
|
78
|
+
REPO_TYPE = "dataset" # dataset tem viewer, melhor para binários
|
|
79
|
+
|
|
80
|
+
# Cria repo se não existe
|
|
81
|
+
api.create_repo(REPO_ID, repo_type=REPO_TYPE, exist_ok=True, private=False)
|
|
82
|
+
|
|
83
|
+
# Upload pasta dumps como dataset
|
|
84
|
+
upload_folder(
|
|
85
|
+
folder_path="docs/results",
|
|
86
|
+
repo_id=REPO_ID,
|
|
87
|
+
repo_type=REPO_TYPE,
|
|
88
|
+
commit_message="feat: dump from browser via third-party"
|
|
89
|
+
)
|
|
90
|
+
|
|
91
|
+
print(f"Upload feito: https://huggingface.co/datasets/{REPO_ID}")
|
|
92
|
+
# Acesso via CDN: https://huggingface.co/datasets/{REPO_ID}/resolve/main/arquivo.bin
|
|
93
|
+
|
|
94
|
+
# buckets/kaggle_upload.py - Kaggle como bucket 200GB por dataset, público ilimitado
|
|
95
|
+
# Limite: 200GB por dataset, 50 arquivos top-level, privado total 200GB, público ilimitado
|
|
96
|
+
|
|
97
|
+
import os, json, subprocess, pathlib
|
|
98
|
+
|
|
99
|
+
DATASET_NAME = "seuuser-opencode-storage-part-001" # cada dataset 200GB
|
|
100
|
+
DATASET_PATH = pathlib.Path("docs/results")
|
|
101
|
+
|
|
102
|
+
# dataset-metadata.json
|
|
103
|
+
meta = {
|
|
104
|
+
"title": "opencode-storage-part-001",
|
|
105
|
+
"id": f"seuuser/{DATASET_NAME}",
|
|
106
|
+
"licenses": [{"name": "mit"}],
|
|
107
|
+
"resources": [{"path": "results", "description": "binários processados"}]
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
(DATASET_PATH / "dataset-metadata.json").write_text(json.dumps(meta, indent=2))
|
|
111
|
+
|
|
112
|
+
# Cria ou versiona
|
|
113
|
+
# kaggle datasets create -p docs/results --dir-mode tar
|
|
114
|
+
# kaggle datasets version -p docs/results -m "add more bins"
|
|
115
|
+
|
|
116
|
+
print("Kaggle: cada dataset público = 200GB free ilimitado. Crie N datasets para N*200GB")
|
|
117
|
+
print("10 datasets = 2TB free, 100 datasets = 20TB")
|