Commit Graph
14 Commits
Author SHA1 Message Date
teahubxyzandClaude Fable 5.1 5bec2c0f37 providers_search: ties sort by name A→Z
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01FAqjv1sLfUad2bMcsmPbRT
2026-10-29 00:46:30 +00:00
teahubxyzandClaude Fable 5.1 9ccbf48bdf oracle_rows: track freshness plainly; phast_status reports the Oracle cache
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01FAqjv1sLfUad2bMcsmPbRT
2026-10-29 00:44:27 +00:00
teahubxyzandClaude Fable 5.1 717ec9f14e providers_search is Oracle; tools_install/list/remove put capabilities on the belt
Oracle (oracle.teahub.xyz, teahubxyz/oracle) is the capability index. Phast fetches its
search.json projection (cached an hour in memory, last good copy on the volume) and
searches it: every term must match name/provider/summary/id; results rank by evidence
rung, then having a remote endpoint, then name matches, then Teahub's own declarations.
Results carry the evidence state so a registry listing shows as what it is: a claim.

tools_install puts a capability on a Phast app's belt as a reference (id, endpoint,
evidence, sources), never a credential; tools_list and tools_remove round it out.
The personal home and the Prefab app show the belt above the widgets.

Not yet: proxying calls through the personal /mcp to installed endpoints, and the
observation that write back to Oracle. That proxy is designed once, shared with the
Tea MCP oracle doorway (teahubxyz/oracle#3). The belt stops being empty today.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01FAqjv1sLfUad2bMcsmPbRT
2026-10-29 00:43:51 +00:00
teahubxyz cbd4a28e75 Sync with canonical matcha/phast@69bbbab and run on Fly as phast-app
The 2026-10-14 port took tea-mcp/src/phast, an older copy (light design, no OAuth).
This merges matcha/phast main with its history: the black/orange phast.app and
my.phast.app pages, and the Teahub-OAuth MCP server. On top, for prod:

- server.py serves phast.app / and my.phast.app / from this repo (no copies), and /healthz
- Dockerfile + start.sh: volume at /data, app runs unprivileged
- fly.toml: phast-app, volume phast_data, GITEA_URL=https://teahub.xyz
2026-10-14 15:05:02 -07:00
teahubxyz 667cafd08d port: from the old factory (tea-mcp/src), as it was, 2026-10-14 2026-10-14 00:20:58 -07:00
codex 64d2374f60 Use Phast app for product names and preserve phast wordplay 2026-10-07 22:19:16 -07:00
Boring 830ab44d8f Finish centralized Phast OAuth refactor 2026-10-04 04:46:36 +00:00
Boring 545111e9e2 Centralize personal Phast OAuth at My Phast 2026-10-04 04:45:11 +00:00
Boring f5fa619598 Harden personal Phast MCP provisioning 2026-10-04 04:41:10 +00:00
Boring 5c5efdb163 Initialize FastMCP lifespan for management discovery 2026-10-04 04:29:19 +00:00
Boring a94f8997b9 Listen Phast sidecar on Fly private IPv6 2026-10-04 03:58:01 +00:00
Boring 3075069ceb Implement Phast management and personal MCP server 2026-10-04 03:41:47 +00:00
matcha 8ad4814a0d Define Phast v0 management MCP vocabulary 2026-10-04 03:25:09 +00:00
matcha eccfaaa7c3 Import canonical Phast control-plane source 2026-10-04 02:37:15 +00:00