164 Commits
Author SHA1 Message Date
shehjad-dev 12d64b38a7 feat(catalog): add TrestleIQ validation tools 2026-09-21 20:11:00 +06:00
UncleCode 298abe04ad Merge main into dev/hub (210 commits) — migrations renumbered a third time
main moved 210 commits ahead in five days (413 files: AnyAPI, Prospeo, Dropleads and other catalog
listings, routed-parent adaptation, the archive's own-key and repeat-pricing work, video task
settlement, org slug history). Only ONE file conflicted, the GENERATED MAP.md, which was rebuilt
rather than merged by hand. Nothing in the hub needed a code change this time.

Migration numbers collided again: main took 0039 and 0040, so the six hub revisions move
0039-0044 → 0041-0046 and chain onto main's 0040. Single head 0046; the chain applies clean on a
fresh sqlite with both hub switch columns present. The numbers named in architecture/hub.md follow,
and every file it names exists.

Verified after the merge: our phase 10 work survived intact — `scripts/build_plugin.py` still ships
the hub section unconditionally, and all five plugins still carry the hub (9 mentions each), the
"per-deployment switch" instruction for the off case, and no raw markers. main changed skill.md and
llms.txt; the plugin freshness check passes against the merged agent files.

Green: full suite 4393 passed, 8 skipped; hub + callmatrix + mcp 213; agent pages + seo 228;
surface snapshot + alembic parity 8; import-linter 14/14; plugin check OK. One failure in the
parallel run, test_prospeo_platform_email_settles_one_credit, which passes alone and whose whole
file passes alone (363); dev/hub touches no prospeo or marketplace file.
2026-09-21 08:29:45 +08:00
Jason ZhouandClaude Fable 5.1 5f82451c0d feat(catalog): verify the AnyAPI listing and ship its platform-key slot
Maintainer half of PR #398 on top of current main: every core test_request
run live on 2026-09-19 (36/36 answered, no row metered above its price),
verified stamps and recaptured examples, linkedin.email made untestable under
the PII rule, platform_key_anyapi + tests/test_anyapi.py, plugin skill copies
regenerated, and the anyapi context fragment.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-09-19 19:52:15 +10:00
Jason ZhouandClaude Fable 5.1 e20bacfc1e chore(release): plugin manifests and generated skill copies track 0.20.0
The version test pins every plugin manifest (Claude, Codex, Cursor, MiniMax,
dsh package.json) to the package version, and the generated SKILL.md copies
to src/treg/web/skill.md; both were left at 0.19.1 by the bump.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-09-19 16:56:23 +10:00
Jason Zhou 77055d62d5 Merge branch 'main' into cursor/fix-skill-cli-host-mismatch-4d77 2026-09-18 23:43:39 -07:00
shehjad-dev 0b8be631f1 fix(catalog): complete Datagma provider integration 2026-09-18 08:55:26 +06:00
Cursor AgentandJason Zhou 7ec2688a52 fix(cli): release 0.20.0 with treg host; add version note to skill
Closes #557

Root cause: PyPI's 0.19.1 was published before the `treg host` command
landed on main (c8d51c5e), but the skill served from the live server
documented `treg host`. Users installing via `curl | sh` got a CLI
without `host` and a skill that claimed it existed. Worse, because
`host` is also the name of a system DNS tool (/usr/bin/host), the
bare-word fallback (`treg claude` → `treg with claude`) intercepted
`treg host face.jpg` and ran `/usr/bin/host face.jpg` instead,
producing a confusing DNS error.

Changes:
- Bump version to 0.20.0 (0.19.1 is already on PyPI without `host`)
- Add test confirming `host` is a registered subcommand and won't fall
  through to the system binary
- Add version note to skill.md (and all plugin copies): "Requires CLI
  ≥ 0.20.0; run `treg update` if `treg host` is unrecognised."

The existing `treg host` implementation is unchanged — it was already
on main, just never released.

Co-authored-by: Jason Zhou <JayZeeDesign@users.noreply.github.com>
2026-09-17 22:57:00 +00:00
shehjad-dev 04f44bbf05 feat(catalog): add MiniMax voice generation 2026-09-18 04:05:50 +06:00
Jason Zhou ac7c07835c Merge branch 'main' into feat/team-rename 2026-09-17 02:59:14 -07:00
Jason ZhouandClaude Fable 5.1 c0bc33f634 test(cli): pin --json off in the org rename test; regenerate plugin SKILL.md
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-09-17 19:39:37 +10:00
shehjad-dev 535dd7bf2d feat(catalog): add LimaData provider 2026-09-17 11:28:46 +06:00
shehjad-dev 49bb546b2f fix(openmart): bound and round platform calls 2026-09-17 09:50:31 +06:00
shehjad-dev 010fce3a52 Merge origin/main into codex/provider-aiark 2026-09-17 07:17:23 +06:00
shehjad-dev 05b6e00600 chore(plugin): refresh generated treg skills 2026-09-17 06:29:05 +06:00
shehjad-dev 94f094ac36 feat(catalog): add ZeroBounce email validation 2026-09-17 05:14:35 +06:00
shehjad-dev 418be58dc1 feat(catalog): add Scrubby email verification 2026-09-17 02:46:08 +06:00
shehjad-dev ca1c51565e feat(catalog): add MoltSets enrichment provider 2026-09-17 00:32:58 +06:00
shehjad-dev b7eede2645 feat(catalog): add GetLeads.io provider 2026-09-16 20:48:04 +06:00
shehjad-dev b5b555457c feat(catalog): add BounceBan email verification 2026-09-16 19:57:01 +06:00
shehjad-dev 3bc238ed5c fix(skills): sync generated provider count 2026-09-16 17:55:38 +06:00
Jason ZhouandClaude Fable 5.1 0ab5e8d4bc feat(skills): make-ugc workflow skill, served at /skills/ugc/SKILL.md
One skill an agent can be pointed at for the whole /ugc loop: trend pull, hook patterns, a
character with the same vibe (via portrait-clone), Seedance 2.5 talking-head hooks (via
ugc-talking-head-video), an optional voiced demo, captions and the bill. Source lives in the
bundled web folder so it is served; .agents/skills/make-ugc symlinks to it. Listed as the
second entry in the well-known skills index.

The agent-facing descriptions (skill.md, llms.txt, MCP server, README) now name image and
video generation and voice so agents reach for treg for those tasks too; plugin skill copies
regenerated. The onboarding modal's trending card becomes "Make UGC videos" pointing at the
skill, and the /ugc final card's follow-up line does the same.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-09-16 15:59:09 +10:00
UncleCode 2dacc61470 docs(hub): the plugins always ship the hub section; CHANGELOG
Owner's decision, 2026-09-16: a plugin must carry the hub knowledge whatever a deployment does. A
plugin is a static file installed against ANY registry, including a self-hosted one that may have
the hub switched ON, so a plugin that omitted the section would hide a feature that works there.

- src/treg/web/skill.md, src/treg/web/llms.txt: the hub section gains the instruction for the OFF
  case. Every `/hub/...` route answers 404 and every `treg hub` command refuses when a deployment
  has `hub_enabled` off; an agent reports "this registry does not offer the hub" and uses the rest
  of the catalog, instead of retrying a fault that cannot be fixed. The SERVER still strips the
  whole section while its own flag is off, because the server knows its own state.
- scripts/build_plugin.py: the hub section is no longer behind `--with-hub`; it always ships.
  Leaving it behind a flag meant a plain `--check` rebuilt the plugins WITHOUT the hub, reported all
  five as stale, and invited a regeneration that silently stripped the hub text back out.
  `--with-hub` is still accepted and now does nothing. `--check` passes with and without it.
- The five plugins regenerated: claude, codex, cursor, dsh, minimax.
- CHANGELOG.md: new file, this repo had none. Covers the hub under Unreleased.

Full suite 4069 passed, 8 skipped; agent pages + seo 228; hub + mcp + snapshot 186; import-linter
14/14; plugin check OK. One failure in the parallel run, test_backlinks_ceiling, which passes alone
and whose whole file passes alone (14); no source file in this commit relates to it.
2026-09-16 13:15:21 +08:00
SToneX e780aeb243 Merge origin/main into feat/cache-all-tiers-repeat-pricing
main added revision 0038 (endpoint day stats): the archive revision is now 0039 and every
reference follows. Public docs describe the archive by mechanism only - the dated section
titles and the hosted staging plan moved to the private runbook, per the updated AGENTS.md rule.
Plugin skills and the fragment index are regenerated on the merged tree.
2026-09-16 11:08:02 +08:00
shehjad-dev 274ca0be08 fix(catalog): restore search ranking and plugin mirrors 2026-09-16 05:41:39 +06:00
shehjad-dev 0f5b9a8de4 feat(catalog): add Dropleads enrichment provider 2026-09-16 02:04:00 +06:00
SToneX 2df9f0a2d6 Merge origin/main into feat/cache-all-tiers-repeat-pricing
main shipped migrations 0034-0037 (managed API keys, media hosting) while this branch was open:
the archive migration is renumbered 0038 (down_revision 0037) and every reference follows. The
plugin skills and the fragment index are regenerated on the merged tree.
2026-09-15 21:21:32 +08:00
shehjad-dev 4040a4f865 Merge remote-tracking branch 'origin/main' into feat/fin-datasets-v1 2026-09-15 05:52:10 +06:00
shehjad-dev 1053016c53 feat(catalog): add Financial Datasets v1 2026-09-15 05:42:26 +06:00
Jason ZhouandClaude Fable 5.1 c8d51c5e21 feat(media): treg host reference-file hosting + catalog-id-with-path error
Two fixes from generating an 18 s Seedance 2.5 take through treg on 2026-09-14.

`treg host <file>` / `POST /media` / `GET /m/{token}`: AIGC endpoints take reference
images, voice clips and videos as public URLs the vendor fetches, and every paste host
tried failed a vendor probe (catbox unreachable from reAPI's fal-backed probe, tmpfiles
serving HTML, uguu timing out) - five submissions for one accepted task. Bytes live in a
new `media` table (migration 0037), served by a 192-bit opaque token, 30 MB per file,
300 MB per org per 24 h, 7-day TTL, image/audio/video only, refused in the sandbox, not
metered. Expiry is swept inline on upload.

`treg call reapi.tasks.get tasks/<id>` used to answer "no tool 'reapi.tasks.get' in this
org": the own-tool shape applied to a catalog id sent the caller to the wrong half of
treg. It now answers 400 naming the endpoint's parameter slots and the --query form.

Fragments: new architecture/media.md; interface/cli.md, interface/api.md. Front door:
llms.txt, skill.md (+ generated plugin copies), USAGE.md. Snapshots regenerated.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01WYmLQ8AcvGcDM95MRNjodb
2026-09-14 23:01:38 +10:00
SToneX c68eb49622 feat(archive): serve every tier, price repeat hits at 10%
The archive now takes part in every credential tier and prices a hit per team.

- Serving defaults open: TREG_ARCHIVE_SERVE_ENDPOINTS accepts "*" (the new default) and
  TREG_ARCHIVE_SERVE_PERCENT defaults to 100; an empty allowlist stays the rollback lever.
- Own-key catalog calls look the question up before the relay and, when the 2xx answer fits
  archive_max_body_bytes, read it whole and record it with origin_org_id; larger answers stream
  untouched. A hit on an own key is free. Own-key snapshots serve their own team always and
  other teams only where the provider's licence was judged (explicit cache: transient/archive).
- An answer that echoes the team's own credential is never recorded; compressed answers are
  not recorded either.
- A metered hit settles through the same hold: a team's first billed call on a question is full
  price, its later hits archive_hit_repeat_price_percent (10). ArchiveKeyOrg (migration 0034)
  marks (org, key) inside the settle transaction (allowlisted write archive_org_use_in_settle).

Fragments updated: archive, money, proxy-model, data-model, api; plus AGENTS.md, SECURITY.md,
llms.txt, skill.md and the generated plugin skills.
2026-09-14 16:00:08 +08:00
Jason ZhouandClaude Fable 5.1 2506b09f6b feat(catalog): list reAPI and PiAPI for Seedance 2.5, GPT Image and Gemini 3 Pro Image
Two AIGC resellers that serve Seedance 2.5 with a relaxed content filter (reAPI
`content_filter: false`, PiAPI `seedance-2.5-less-restriction`), the only routes on which
a real person's photo drives the video, plus GPT Image 2.5 / 2 and Gemini 3 Pro Image.
Both files share per-model capability join keys so the model wall shows the two routes
to one model on a single row.

- oauth_providers: REAPI (Bearer; unknown-task probe, 401 = bad key) and PIAPI
  (X-API-Key; free /account/info probe), both `AI generation`.
- config: platform_key_reapi / platform_key_piapi tier-4 slots.
- catalog: reapi.yaml (6 rows) and piapi.yaml (6 rows) with file-level async
  descriptors, per-row overrides for the image result paths and PiAPI's bare-object
  gpt-image route, and price tables; every generation row live-verified with the
  observed charge (reAPI usage.credits, PiAPI meta.usage points / equivalent_in_usd).
- tests: registry + offerable lists, a platform-priced test for both files, and the
  model-wall test now pins the five merged rows.
- docs: catalog fragment (sources + AIGC paragraphs); plugin skill copies regenerated.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01SKjtrwx9eJ5Ewap8Fesp4J
2026-09-14 14:01:38 +10:00
Jason ZhouandClaude Fable 5.1 4e55ff6bd4 merge: sync Harvest with main after hosted deployment details moved private
Resolves the conflicts from #470: render.yaml is gone (the Harvest key slot and
capacity-cron forwarding now belong to the private deployment repository), the
Harvest sections of ops/deploy.md and ops/capacity.md follow the hosted details
out of this repo, and the harvestapi fragment records the hosted wiring in one
paragraph instead. Context map and the three skill mirrors regenerated.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_015vSvXHoJ2rrEpgoH7kdrsh
2026-09-14 09:46:59 +10:00
SToneX 2ac925840e fix(cli): protect MCP config tokens on disk 2026-09-12 17:56:22 +08:00
shehjad-dev ba11536fbb merge: sync Harvest with streaming and cache updates 2026-09-11 20:46:54 +06:00
SToneX 6bd723fabe fix(call): stream free results and reject oversized evidence 2026-09-11 20:20:09 +08:00
shehjad-dev 6db73b2492 merge: sync Harvest branch with team ownership limit 2026-09-11 13:03:44 +06:00
SToneX 8112c47f00 fix(teams): cap accounts at ten owned teams (#458) 2026-09-11 14:58:43 +08:00
shehjad-dev b27e62a07f merge: sync HarvestAPI with latest main 2026-09-11 12:14:22 +06:00
SToneX a49ae8dbd8 fix(signup): grant promotional credit once per verified user (#447) 2026-09-10 23:02:12 +08:00
shehjad-dev e50162fa9e feat(catalog): add HarvestAPI LinkedIn tools and routing 2026-09-10 14:21:52 +06:00
SToneX d4ea298a8f feat(cli): release 0.19.0 with the feedback invitation line
The CLI now prints one stderr line for X-Treg-Hint: feedback beside the charge line, as it already
did for review invitations, and reads the unified header a 0.19 registry sends (the older
X-Treg-Review: requested still works against a pre-0.19 registry). Plugin manifests, the skill
copies and the lock file carry the same version.
2026-09-10 15:48:41 +08:00
shehjad-dev f90e37b4ed fix(plugin): regenerate catalog counts with Sumble 2026-09-10 11:51:30 +06:00
SToneX ff0bf36d38 feat(copy): quote the catalog's size from the loaded catalog, never by hand 2026-09-10 13:09:12 +08:00
SToneX 4faf3867f9 fix(copy): one-sentence review guidance, aligned MCP instructions, no endpoint counts 2026-09-10 13:09:08 +08:00
SToneX 619d96871a feat(overflow): disclose the relay and its price on the MCP surface
A free endpoint served through the overflow relay bills the relay's price
(apollo.people.search: 8,810 calls at $0.002 on 2026-09-08) and nothing on
the MCP surface said so. The call result now carries served_via and a hint,
and catalog_get shows overflow_price_usd up front.
2026-09-09 22:17:54 +08:00
SToneX 406c55982a Merge pull request #413 from superdesigndev/fix/review-invited-only-wording
fix(review): one review per invitation
2026-09-09 22:15:23 +08:00
SToneX 840a288891 feat(cli): release 0.18.0 with anonymous PostHog telemetry (#412)
* feat(cli): add anonymous PostHog usage telemetry

* fix(ci): recognize public PostHog ingestion token

* fix(ci): match ingestion token in historical diff lines

* release: 0.18.0

* fix(cli): allow cold SDK imports within telemetry exit budget
2026-09-09 22:10:02 +08:00
SToneX 5a666b85c7 fix(review): ask for one review per invitation in every agent-facing text 2026-09-09 22:01:53 +08:00
SToneX b0ef03a30b release: 0.17.0 2026-09-09 19:18:59 +08:00
SToneX 705d607a32 docs(review): give review guidance its own skill section 2026-09-09 17:47:17 +08:00