latticesql 4.2.4 → 4.3.0

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 CHANGED
@@ -122,6 +122,7 @@ opt-in per table/call; absent the opt-in, behavior is byte-identical to 4.0.
122
122
  - [Pluggable backends (v1.6+)](#pluggable-backends-v16)
123
123
  - [Architecture](#architecture)
124
124
  - [Examples](#examples)
125
+ - [Connectors (v4.3+)](#connectors-v43)
125
126
  - [Staying up to date](#staying-up-to-date)
126
127
  - [Auto-update](#auto-update-v11)
127
128
  - [Telemetry](#telemetry)
@@ -2219,7 +2220,10 @@ undoable. A Claude subscription can be connected instead via OAuth when the
2219
2220
 
2220
2221
  Optional extras, each enabled by its own key/binary:
2221
2222
 
2222
- - **Voice** — set an OpenAI (Whisper) or ElevenLabs key to dictate into the composer.
2223
+ - **Voice** — the composer's 🎙 mic dictates on-device (in-browser WASM Whisper),
2224
+ no key or setup, and audio never leaves your machine. Keyed cloud transcription
2225
+ (OpenAI Whisper / ElevenLabs) stays available to API callers for backward
2226
+ compatibility.
2223
2227
  - **File ingest** — reference a local file or paste text; it becomes a row in the
2224
2228
  native `files` entity with extracted text + (with a Claude key) an
2225
2229
  LLM-written description and links to related records. Documents (PDF, Word,
@@ -2854,6 +2858,77 @@ See Scarf's own [privacy documentation](https://docs.scarf.sh) for the upstream
2854
2858
 
2855
2859
  ---
2856
2860
 
2861
+ ## Connectors (v4.3+)
2862
+
2863
+ Connectors sync data from external systems into Lattice as **connected data
2864
+ types** — tables whose rows are ingested from a source rather than authored
2865
+ locally. A connector talks to one external product directly using your own
2866
+ credentials. The built-in connector is **Jira**, which talks to Jira Cloud's
2867
+ REST + Agile APIs via [`jira.js`](https://github.com/MrRefactoring/jira.js) — no
2868
+ broker service, no extra API key.
2869
+
2870
+ `jira.js` is an **optional dependency** — install it only to use the connector:
2871
+
2872
+ ```bash
2873
+ npm install jira.js
2874
+ ```
2875
+
2876
+ Connect, sync, and disconnect programmatically:
2877
+
2878
+ ```typescript
2879
+ import {
2880
+ JiraConnector,
2881
+ createConnector,
2882
+ syncConnector,
2883
+ syncIfStale,
2884
+ disconnectConnector,
2885
+ } from 'latticesql';
2886
+
2887
+ const connector = new JiraConnector();
2888
+
2889
+ // 1. Validate + store the member's Atlassian credentials (site + email + API token):
2890
+ const { connectionId, displayName } = await connector.connect({
2891
+ site: 'https://your-domain.atlassian.net',
2892
+ email: 'you@example.com',
2893
+ apiToken: process.env.JIRA_API_TOKEN!,
2894
+ });
2895
+
2896
+ // 2. Register + sync (defines the six jira_* connected tables and ingests):
2897
+ const connectorId = await createConnector(db, {
2898
+ connector: 'jira',
2899
+ toolkit: 'jira',
2900
+ displayName: displayName ?? 'jira',
2901
+ connectionRef: connectionId,
2902
+ connectedBy: 'user-123',
2903
+ });
2904
+ await syncConnector(db, connector, connectorId);
2905
+
2906
+ // 3. Keep fresh — no scheduler: re-sync on load if older than an hour.
2907
+ await syncIfStale(db, connector, connectorId);
2908
+
2909
+ // 4. Disconnect — soft-deletes the ingested rows + drops the stored credentials.
2910
+ await disconnectConnector(db, connector, connectorId);
2911
+ ```
2912
+
2913
+ Connected tables (`jira_projects`, `jira_issues`, `jira_comments`, `jira_users`,
2914
+ `jira_boards`, `jira_sprints`) are full Lattice tables: queryable, full-text
2915
+ searchable, rendered to context, and linked on the graph (issue → project,
2916
+ comment → issue, …). Each row carries immutable lineage (`_source_connector_id`,
2917
+ `_source_model`); a re-sync upserts on the natural key and soft-deletes rows that
2918
+ vanished from the source.
2919
+
2920
+ On a cloud workspace, the owner calls `enableConnectorRls(db, connector, 'jira')`
2921
+ to scope connected rows per member (private by default, or shared per type).
2922
+
2923
+ In the **GUI**, all of this is point-and-click: open **Settings → Connectors**,
2924
+ enter your Jira site URL + email + API token, and connect / refresh / disconnect.
2925
+ Connected data types show a "Connected" badge in the Objects list.
2926
+
2927
+ See [docs/connectors.md](docs/connectors.md) for the full guide and the connector
2928
+ SPI (to add a new connector).
2929
+
2930
+ ---
2931
+
2857
2932
  ## Contributing
2858
2933
 
2859
2934
  See [CONTRIBUTING.md](./CONTRIBUTING.md) for dev setup, test commands, and contribution guidelines.