Clone this repository
For self-hosted knots, clone URLs may differ based on your setup.
- Removed island_cache table and rebuildIslandCache cron
- Removed legacy PUT endpoints (putSummary, putAnalysis)
- Landing page and getIslands now query records_strata via listStrataIslands()
- Each strata record derives its island from lexmin on demand
👾 Generated with [Letta Code](https://letta.com)
Co-Authored-By: Letta Code <noreply@letta.com>
- strata-analyze.py now creates org.latha.strata records on PDS
instead of pushing to API endpoints
- Added deriveIsland() with BFS traversal (recursive CTE OOMs in D1)
- New xrpc endpoints:
- GET /xrpc/org.latha.strata.getRecord?uri=<at-uri>
- GET /xrpc/org.latha.strata.listRecords
- GET /xrpc/org.latha.strata.getIslands
- Frontend supports AT URI as strata page ID
- Lexicon updated: added title field, relaxed source.uri format
- Migrated all /api/ routes to /xrpc/ namespace
👾 Generated with [Letta Code](https://letta.com)
Co-Authored-By: Letta Code <noreply@letta.com>
LLM was paraphrasing/abbreviating titles which broke linking.
Added explicit instruction to use EXACT titles from island data.
👾 Generated with [Letta Code](https://letta.com)
Co-Authored-By: Letta Code <noreply@letta.com>
- Links now point to semble.so/url/<encoded-uri> instead of raw URLs
- Excludes at:// titles from link map
- Added substring matching: short names from titles (before delimiters/
parens) are linked if they appear in relationship text
- Fixes most "leads to" etc being unlinked
👾 Generated with [Letta Code](https://letta.com)
Co-Authored-By: Letta Code <noreply@letta.com>
LLM now produces a [Title] section — a single sentence capturing
the core argument rather than a fragmented topic list. Uploaded
as the island summary via PUT /api/strata/islands/:id/summary.
👾 Generated with [Letta Code](https://letta.com)
Co-Authored-By: Letta Code <noreply@letta.com>