cortexdb-connectors 0.2.6__tar.gz → 0.2.7__tar.gz
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.
- {cortexdb_connectors-0.2.6 → cortexdb_connectors-0.2.7}/PKG-INFO +1 -1
- {cortexdb_connectors-0.2.6 → cortexdb_connectors-0.2.7}/cortexdb_connectors/__init__.py +1 -1
- {cortexdb_connectors-0.2.6 → cortexdb_connectors-0.2.7}/cortexdb_connectors/base.py +21 -1
- {cortexdb_connectors-0.2.6 → cortexdb_connectors-0.2.7}/cortexdb_connectors/cli.py +584 -583
- {cortexdb_connectors-0.2.6 → cortexdb_connectors-0.2.7}/cortexdb_connectors/slack/__init__.py +103 -11
- {cortexdb_connectors-0.2.6 → cortexdb_connectors-0.2.7}/cortexdb_connectors/webhooks.py +940 -933
- {cortexdb_connectors-0.2.6 → cortexdb_connectors-0.2.7}/cortexdb_connectors.egg-info/PKG-INFO +1 -1
- {cortexdb_connectors-0.2.6 → cortexdb_connectors-0.2.7}/pyproject.toml +1 -1
- {cortexdb_connectors-0.2.6 → cortexdb_connectors-0.2.7}/tests/test_base.py +367 -302
- {cortexdb_connectors-0.2.6 → cortexdb_connectors-0.2.7}/tests/test_slack.py +294 -197
- {cortexdb_connectors-0.2.6 → cortexdb_connectors-0.2.7}/README.md +0 -0
- {cortexdb_connectors-0.2.6 → cortexdb_connectors-0.2.7}/cortexdb_connectors/confluence/__init__.py +0 -0
- {cortexdb_connectors-0.2.6 → cortexdb_connectors-0.2.7}/cortexdb_connectors/discord/__init__.py +0 -0
- {cortexdb_connectors-0.2.6 → cortexdb_connectors-0.2.7}/cortexdb_connectors/freshdesk/__init__.py +0 -0
- {cortexdb_connectors-0.2.6 → cortexdb_connectors-0.2.7}/cortexdb_connectors/github/__init__.py +0 -0
- {cortexdb_connectors-0.2.6 → cortexdb_connectors-0.2.7}/cortexdb_connectors/gitlab/__init__.py +0 -0
- {cortexdb_connectors-0.2.6 → cortexdb_connectors-0.2.7}/cortexdb_connectors/google_workspace/__init__.py +0 -0
- {cortexdb_connectors-0.2.6 → cortexdb_connectors-0.2.7}/cortexdb_connectors/hubspot/__init__.py +0 -0
- {cortexdb_connectors-0.2.6 → cortexdb_connectors-0.2.7}/cortexdb_connectors/insights/__init__.py +0 -0
- {cortexdb_connectors-0.2.6 → cortexdb_connectors-0.2.7}/cortexdb_connectors/insights/api.py +0 -0
- {cortexdb_connectors-0.2.6 → cortexdb_connectors-0.2.7}/cortexdb_connectors/insights/detectors.py +0 -0
- {cortexdb_connectors-0.2.6 → cortexdb_connectors-0.2.7}/cortexdb_connectors/insights/engine.py +0 -0
- {cortexdb_connectors-0.2.6 → cortexdb_connectors-0.2.7}/cortexdb_connectors/intercom/__init__.py +0 -0
- {cortexdb_connectors-0.2.6 → cortexdb_connectors-0.2.7}/cortexdb_connectors/jira/__init__.py +0 -0
- {cortexdb_connectors-0.2.6 → cortexdb_connectors-0.2.7}/cortexdb_connectors/linear/__init__.py +0 -0
- {cortexdb_connectors-0.2.6 → cortexdb_connectors-0.2.7}/cortexdb_connectors/notion/__init__.py +0 -0
- {cortexdb_connectors-0.2.6 → cortexdb_connectors-0.2.7}/cortexdb_connectors/pagerduty/__init__.py +0 -0
- {cortexdb_connectors-0.2.6 → cortexdb_connectors-0.2.7}/cortexdb_connectors/salesforce/__init__.py +0 -0
- {cortexdb_connectors-0.2.6 → cortexdb_connectors-0.2.7}/cortexdb_connectors/servicenow/__init__.py +0 -0
- {cortexdb_connectors-0.2.6 → cortexdb_connectors-0.2.7}/cortexdb_connectors/state.py +0 -0
- {cortexdb_connectors-0.2.6 → cortexdb_connectors-0.2.7}/cortexdb_connectors/teams/__init__.py +0 -0
- {cortexdb_connectors-0.2.6 → cortexdb_connectors-0.2.7}/cortexdb_connectors/tldv/__init__.py +0 -0
- {cortexdb_connectors-0.2.6 → cortexdb_connectors-0.2.7}/cortexdb_connectors/worker.py +0 -0
- {cortexdb_connectors-0.2.6 → cortexdb_connectors-0.2.7}/cortexdb_connectors/zendesk/__init__.py +0 -0
- {cortexdb_connectors-0.2.6 → cortexdb_connectors-0.2.7}/cortexdb_connectors.egg-info/SOURCES.txt +0 -0
- {cortexdb_connectors-0.2.6 → cortexdb_connectors-0.2.7}/cortexdb_connectors.egg-info/dependency_links.txt +0 -0
- {cortexdb_connectors-0.2.6 → cortexdb_connectors-0.2.7}/cortexdb_connectors.egg-info/entry_points.txt +0 -0
- {cortexdb_connectors-0.2.6 → cortexdb_connectors-0.2.7}/cortexdb_connectors.egg-info/requires.txt +0 -0
- {cortexdb_connectors-0.2.6 → cortexdb_connectors-0.2.7}/cortexdb_connectors.egg-info/top_level.txt +0 -0
- {cortexdb_connectors-0.2.6 → cortexdb_connectors-0.2.7}/setup.cfg +0 -0
- {cortexdb_connectors-0.2.6 → cortexdb_connectors-0.2.7}/tests/test_connector_coverage.py +0 -0
- {cortexdb_connectors-0.2.6 → cortexdb_connectors-0.2.7}/tests/test_github.py +0 -0
- {cortexdb_connectors-0.2.6 → cortexdb_connectors-0.2.7}/tests/test_ingest_e2e.py +0 -0
- {cortexdb_connectors-0.2.6 → cortexdb_connectors-0.2.7}/tests/test_streaming_cursor.py +0 -0
- {cortexdb_connectors-0.2.6 → cortexdb_connectors-0.2.7}/tests/test_webhooks.py +0 -0
- {cortexdb_connectors-0.2.6 → cortexdb_connectors-0.2.7}/tests/test_webhooks_replay.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: cortexdb-connectors
|
|
3
|
-
Version: 0.2.
|
|
3
|
+
Version: 0.2.7
|
|
4
4
|
Summary: Data connectors for CortexDB — ingest from Slack, GitHub, GitLab, Jira, Linear, Confluence, Notion, PagerDuty, Discord, Teams, Google Workspace, Salesforce, HubSpot, Zendesk, Intercom, and ServiceNow into the v1 memory API.
|
|
5
5
|
Author-email: CortexDB Team <team@cortexdb.ai>
|
|
6
6
|
License-Expression: Apache-2.0
|
|
@@ -158,6 +158,13 @@ class Episode:
|
|
|
158
158
|
class SyncResult:
|
|
159
159
|
episodes_fetched: int = 0
|
|
160
160
|
episodes_ingested: int = 0
|
|
161
|
+
# Items the connector's content policy deliberately dropped (`normalize`
|
|
162
|
+
# returned None: empty/attachment-only text, emoji-only, noise subtypes).
|
|
163
|
+
# Counted separately so operators can tell "filtered by design" from
|
|
164
|
+
# "failed"; skipped items ADVANCE the cursor like successes — a skip is
|
|
165
|
+
# a decision, not an error, and treating it as one would stall the sync
|
|
166
|
+
# at the first attachment-only message.
|
|
167
|
+
episodes_skipped: int = 0
|
|
161
168
|
errors: list[str] = field(default_factory=list)
|
|
162
169
|
duration_seconds: float = 0.0
|
|
163
170
|
# Watermarks for cursor-safe syncing: the latest source timestamp we
|
|
@@ -237,7 +244,13 @@ class CortexConnector(ABC):
|
|
|
237
244
|
...
|
|
238
245
|
|
|
239
246
|
@abstractmethod
|
|
240
|
-
def normalize(self, raw: RawEvent) -> Episode:
|
|
247
|
+
def normalize(self, raw: RawEvent) -> Episode | None:
|
|
248
|
+
"""Convert a RawEvent into an Episode, or return None to SKIP it.
|
|
249
|
+
|
|
250
|
+
None means the item is dropped by content policy (nothing sent to
|
|
251
|
+
the server); the sync loop counts it in `episodes_skipped` and the
|
|
252
|
+
cursor advances past it.
|
|
253
|
+
"""
|
|
241
254
|
...
|
|
242
255
|
|
|
243
256
|
@abstractmethod
|
|
@@ -257,6 +270,13 @@ class CortexConnector(ABC):
|
|
|
257
270
|
for raw in raw_events:
|
|
258
271
|
try:
|
|
259
272
|
episode = self.normalize(raw)
|
|
273
|
+
if episode is None:
|
|
274
|
+
# Content-policy skip: advance the cursor exactly like a
|
|
275
|
+
# success so the next incremental run never re-fetches it.
|
|
276
|
+
result.episodes_skipped += 1
|
|
277
|
+
if result.latest_success is None or raw.timestamp > result.latest_success:
|
|
278
|
+
result.latest_success = raw.timestamp
|
|
279
|
+
continue
|
|
260
280
|
episode.visibility = self.map_permissions(raw)
|
|
261
281
|
await self.ingest_episode(episode)
|
|
262
282
|
result.episodes_ingested += 1
|