@wenathlan/saddle 1.8.2 → 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 +9 -9
- package/browser/playwright.js +22 -0
- package/docs/.gitkeep +0 -0
- package/docs/gapmatrix.md +3 -3
- 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/platformpipelineaudit.md +18 -0
- package/docs/platformpipelines.md +13 -0
- package/docs/registryresearch.md +4 -0
- package/docs/release.md +4 -4
- package/docs/release182notes.md +2 -0
- package/docs/release184notes.md +7 -0
- 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/extension/README.md +3 -3
- package/extension/serviceworker.js +63 -4
- package/extension/worker.js +3 -1
- package/package.json +12 -2
- package/packager/manifest.js +1 -1
- 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/workflow/templates.js +4 -4
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
# Platform pipeline audit
|
|
2
|
+
|
|
3
|
+
This document records the platform facts used by the 1.8.4 pipeline work. The workflows remain caller-configured: repository owners provide runner availability, deployment secrets and target repository names.
|
|
4
|
+
|
|
5
|
+
## verified platform facts
|
|
6
|
+
|
|
7
|
+
| Platform | Verified contract | Source |
|
|
8
|
+
| --- | --- | --- |
|
|
9
|
+
| GitHub Pages | A custom workflow uses `actions/configure-pages@v5`, uploads a static artifact with `actions/upload-pages-artifact@v4`, then deploys with `actions/deploy-pages@v4`. The deployment job needs `pages: write` and `id-token: write`, depends on the build job and uses the `github-pages` environment. | [GitHub Pages custom workflows](https://docs.github.com/en/pages/getting-started-with-github-pages/using-custom-workflows-with-github-pages) |
|
|
10
|
+
| Codeberg Pages | Forgejo Actions can deploy with `https://codeberg.org/git-pages/action@v2`, using `site`, `source` and the injected `${{ forge.token }}`. Publishing the repository subdomain should be restricted to the default branch. Codeberg is migrating its legacy Pages v2 flow; custom domains still have separate constraints. | [Codeberg Pages via Forgejo Actions](https://docs.codeberg.org/codeberg-pages/forgejo-actions/), [Codeberg Pages output](https://docs.codeberg.org/codeberg-pages/pushing-output/) |
|
|
11
|
+
| GitLab Pages | A job with `pages: true` publishes the default `public` directory; the job can also use a `pages` hash for a `path_prefix`. Static HTML, CSS and JavaScript are supported through GitLab CI/CD. | [GitLab Pages](https://docs.gitlab.com/user/project/pages/) |
|
|
12
|
+
| Woodpecker CI | A workflow is a serial list of container steps with `image` and `commands`; branch/event filters belong in `when`, and secrets are injected through the pipeline environment rather than committed YAML. | [Woodpecker workflow syntax](https://woodpecker-ci.org/docs/usage/workflow-syntax) |
|
|
13
|
+
| Forgejo Actions | Fully qualified actions are recommended; the official checkout reference is `https://data.forgejo.org/actions/checkout@v6`. Short `actions/checkout@v6` resolves through the instance `DEFAULT_ACTIONS_URL`, which can vary. | [Forgejo Actions: Using Actions](https://forgejo.org/docs/v15.0/user/actions/actions/) |
|
|
14
|
+
| Gitea Actions | Gitea Actions is mostly compatible with GitHub Actions and requires a separately installed Gitea Runner. The official documentation lists `actions/checkout@v4` as a supported action reference and warns that runner trust matters for public instances. | [Gitea Actions overview](https://docs.gitea.com/usage/actions/overview) |
|
|
15
|
+
|
|
16
|
+
## boundary
|
|
17
|
+
|
|
18
|
+
GitHub Pages has a first-party artifact/deploy contract. Codeberg Pages has a git-pages Forgejo Action contract. Forgejo, Gitea and GitLab workflow files can build the same static output, but their hosting destination and token names are instance-specific. Woodpecker can build and publish artifacts, but a Pages deploy step requires the target host's configured service or a caller-owned token. No workflow in this release hardcodes credentials, hostnames or a private deployment target.
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
# Cross-forge pipelines
|
|
2
|
+
|
|
3
|
+
The library keeps GitHub Actions as the release-authoritative workflow because its six registry publishers already share the release-tag action and validation action. Forgejo, Gitea, GitLab and Woodpecker now execute the same deterministic gates with Node.js 26.7.0, but they do not assume a shared package registry, release API or secret name.
|
|
4
|
+
|
|
5
|
+
| Forge | File | Current role | Required caller configuration |
|
|
6
|
+
| --- | --- | --- | --- |
|
|
7
|
+
| GitLab | `.gitlab-ci.yml` | verify and package dry-run | runner, optional package registry credentials and artifact retention |
|
|
8
|
+
| Forgejo | `.forgejo/workflows/saddle.yml` | verify and package dry-run | trusted Forgejo runner and action source policy |
|
|
9
|
+
| Gitea | `.gitea/workflows/saddle.yml` | verify and package dry-run | Gitea Runner and instance action policy |
|
|
10
|
+
| Codeberg | Forgejo workflow files | verify plus optional Codeberg Pages action | Codeberg repository, `forge.token` and default-branch policy |
|
|
11
|
+
| Woodpecker | `.woodpecker/deploy.yml` | verify and package dry-run | trusted agent, image pull policy and optional artifact plugin |
|
|
12
|
+
|
|
13
|
+
These files intentionally do not invent a cross-forge release token or hardcode a host. A caller can add a publish step for the target forge after configuring its own secret and package endpoint. The public site has its own platform workflow set in the `saddle-pages` repository.
|
package/docs/registryresearch.md
CHANGED
|
@@ -48,6 +48,10 @@ The active package identity on main is now `@wenathlan/saddle`. The repository h
|
|
|
48
48
|
|
|
49
49
|
Release `v1.8.1` was created from the identity migration commit `efcbb02`. The npmjs workflow `31557618590` authenticated as `wenathlan`, generated `@wenathlan/saddle@1.8.1`, and ended with npm's `+ @wenathlan/saddle@1.8.1` success line. A later independent `npm view` returned `1.8.1`, and the direct registry metadata endpoint returned HTTP 200 with the same version record, confirming public visibility. The other v1.8.1 registry workflows also completed successfully: GitHub npm `31557618600`, GHCR `31557618571`, Maven `31557618597`, NuGet `31557618573` and RubyGems `31557618575`.
|
|
50
50
|
|
|
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
|
+
|
|
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
|
+
|
|
51
55
|
## sources
|
|
52
56
|
|
|
53
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/release182notes.md
CHANGED
|
@@ -23,3 +23,5 @@ This release includes the minimal extension permission policy, deterministic ext
|
|
|
23
23
|
## validation boundary
|
|
24
24
|
|
|
25
25
|
The release must pass `npm run check`, `npm run formatcheck`, `npm test`, `npm run pack:check` and `git diff --check` before the tag is created. Each registry workflow remains isolated because its package protocol and credential boundary differ. Publication evidence is reported only after the workflow succeeds and the target registry can be queried independently.
|
|
26
|
+
|
|
27
|
+
The `v1.8.2` release and all publication workflows completed successfully. Public npm and the extension asset were independently visible. GitHub Package registries returned their expected protected-access responses to unauthenticated probes, so their workflow logs remain the authoritative evidence available to the authenticated publisher context.
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
# Saddle 1.8.4
|
|
2
|
+
|
|
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
|
+
|
|
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
|
+
|
|
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")
|