cortexdb-connectors 0.2.5__tar.gz → 0.2.6__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.5 → cortexdb_connectors-0.2.6}/PKG-INFO +1 -1
- {cortexdb_connectors-0.2.5 → cortexdb_connectors-0.2.6}/cortexdb_connectors/__init__.py +40 -40
- {cortexdb_connectors-0.2.5 → cortexdb_connectors-0.2.6}/cortexdb_connectors/base.py +18 -9
- {cortexdb_connectors-0.2.5 → cortexdb_connectors-0.2.6}/cortexdb_connectors/confluence/__init__.py +359 -359
- {cortexdb_connectors-0.2.5 → cortexdb_connectors-0.2.6}/cortexdb_connectors/discord/__init__.py +646 -646
- {cortexdb_connectors-0.2.5 → cortexdb_connectors-0.2.6}/cortexdb_connectors/gitlab/__init__.py +749 -749
- {cortexdb_connectors-0.2.5 → cortexdb_connectors-0.2.6}/cortexdb_connectors/hubspot/__init__.py +489 -489
- {cortexdb_connectors-0.2.5 → cortexdb_connectors-0.2.6}/cortexdb_connectors/insights/detectors.py +56 -28
- {cortexdb_connectors-0.2.5 → cortexdb_connectors-0.2.6}/cortexdb_connectors/intercom/__init__.py +631 -631
- {cortexdb_connectors-0.2.5 → cortexdb_connectors-0.2.6}/cortexdb_connectors/linear/__init__.py +705 -705
- {cortexdb_connectors-0.2.5 → cortexdb_connectors-0.2.6}/cortexdb_connectors/pagerduty/__init__.py +298 -298
- {cortexdb_connectors-0.2.5 → cortexdb_connectors-0.2.6}/cortexdb_connectors/salesforce/__init__.py +399 -399
- {cortexdb_connectors-0.2.5 → cortexdb_connectors-0.2.6}/cortexdb_connectors/servicenow/__init__.py +460 -460
- {cortexdb_connectors-0.2.5 → cortexdb_connectors-0.2.6}/cortexdb_connectors/state.py +145 -145
- {cortexdb_connectors-0.2.5 → cortexdb_connectors-0.2.6}/cortexdb_connectors/teams/__init__.py +656 -656
- {cortexdb_connectors-0.2.5 → cortexdb_connectors-0.2.6}/cortexdb_connectors/worker.py +2 -2
- {cortexdb_connectors-0.2.5 → cortexdb_connectors-0.2.6}/cortexdb_connectors/zendesk/__init__.py +496 -496
- {cortexdb_connectors-0.2.5 → cortexdb_connectors-0.2.6}/cortexdb_connectors.egg-info/PKG-INFO +1 -1
- {cortexdb_connectors-0.2.5 → cortexdb_connectors-0.2.6}/pyproject.toml +87 -87
- {cortexdb_connectors-0.2.5 → cortexdb_connectors-0.2.6}/tests/test_base.py +45 -0
- {cortexdb_connectors-0.2.5 → cortexdb_connectors-0.2.6}/README.md +0 -0
- {cortexdb_connectors-0.2.5 → cortexdb_connectors-0.2.6}/cortexdb_connectors/cli.py +0 -0
- {cortexdb_connectors-0.2.5 → cortexdb_connectors-0.2.6}/cortexdb_connectors/freshdesk/__init__.py +0 -0
- {cortexdb_connectors-0.2.5 → cortexdb_connectors-0.2.6}/cortexdb_connectors/github/__init__.py +0 -0
- {cortexdb_connectors-0.2.5 → cortexdb_connectors-0.2.6}/cortexdb_connectors/google_workspace/__init__.py +0 -0
- {cortexdb_connectors-0.2.5 → cortexdb_connectors-0.2.6}/cortexdb_connectors/insights/__init__.py +0 -0
- {cortexdb_connectors-0.2.5 → cortexdb_connectors-0.2.6}/cortexdb_connectors/insights/api.py +0 -0
- {cortexdb_connectors-0.2.5 → cortexdb_connectors-0.2.6}/cortexdb_connectors/insights/engine.py +0 -0
- {cortexdb_connectors-0.2.5 → cortexdb_connectors-0.2.6}/cortexdb_connectors/jira/__init__.py +0 -0
- {cortexdb_connectors-0.2.5 → cortexdb_connectors-0.2.6}/cortexdb_connectors/notion/__init__.py +0 -0
- {cortexdb_connectors-0.2.5 → cortexdb_connectors-0.2.6}/cortexdb_connectors/slack/__init__.py +0 -0
- {cortexdb_connectors-0.2.5 → cortexdb_connectors-0.2.6}/cortexdb_connectors/tldv/__init__.py +0 -0
- {cortexdb_connectors-0.2.5 → cortexdb_connectors-0.2.6}/cortexdb_connectors/webhooks.py +0 -0
- {cortexdb_connectors-0.2.5 → cortexdb_connectors-0.2.6}/cortexdb_connectors.egg-info/SOURCES.txt +0 -0
- {cortexdb_connectors-0.2.5 → cortexdb_connectors-0.2.6}/cortexdb_connectors.egg-info/dependency_links.txt +0 -0
- {cortexdb_connectors-0.2.5 → cortexdb_connectors-0.2.6}/cortexdb_connectors.egg-info/entry_points.txt +0 -0
- {cortexdb_connectors-0.2.5 → cortexdb_connectors-0.2.6}/cortexdb_connectors.egg-info/requires.txt +0 -0
- {cortexdb_connectors-0.2.5 → cortexdb_connectors-0.2.6}/cortexdb_connectors.egg-info/top_level.txt +0 -0
- {cortexdb_connectors-0.2.5 → cortexdb_connectors-0.2.6}/setup.cfg +0 -0
- {cortexdb_connectors-0.2.5 → cortexdb_connectors-0.2.6}/tests/test_connector_coverage.py +0 -0
- {cortexdb_connectors-0.2.5 → cortexdb_connectors-0.2.6}/tests/test_github.py +0 -0
- {cortexdb_connectors-0.2.5 → cortexdb_connectors-0.2.6}/tests/test_ingest_e2e.py +0 -0
- {cortexdb_connectors-0.2.5 → cortexdb_connectors-0.2.6}/tests/test_slack.py +0 -0
- {cortexdb_connectors-0.2.5 → cortexdb_connectors-0.2.6}/tests/test_streaming_cursor.py +0 -0
- {cortexdb_connectors-0.2.5 → cortexdb_connectors-0.2.6}/tests/test_webhooks.py +0 -0
- {cortexdb_connectors-0.2.5 → cortexdb_connectors-0.2.6}/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.6
|
|
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
|
|
@@ -1,40 +1,40 @@
|
|
|
1
|
-
"""cortexdb_connectors — data connector SDK for the CortexDB v1 API.
|
|
2
|
-
|
|
3
|
-
Each connector subclass implements `fetch_events`, `normalize`, and
|
|
4
|
-
`map_permissions`; the base class POSTs every normalised Episode to
|
|
5
|
-
`/v1/experience` with the required Authorization + X-Cortex-Actor
|
|
6
|
-
headers. Use the `cortexdb-sync` CLI to run a connector once or in a
|
|
7
|
-
poll loop; or `from cortexdb_connectors.slack import SlackConnector`
|
|
8
|
-
to drive it programmatically.
|
|
9
|
-
"""
|
|
10
|
-
|
|
11
|
-
__version__ = "0.2.
|
|
12
|
-
|
|
13
|
-
from cortexdb_connectors.base import (
|
|
14
|
-
Actor,
|
|
15
|
-
CortexConnector,
|
|
16
|
-
EntityRef,
|
|
17
|
-
Episode,
|
|
18
|
-
EpisodeType,
|
|
19
|
-
RawEvent,
|
|
20
|
-
Source,
|
|
21
|
-
SyncResult,
|
|
22
|
-
SyncState,
|
|
23
|
-
Visibility,
|
|
24
|
-
VisibilityLevel,
|
|
25
|
-
)
|
|
26
|
-
|
|
27
|
-
__all__ = [
|
|
28
|
-
"__version__",
|
|
29
|
-
"Actor",
|
|
30
|
-
"CortexConnector",
|
|
31
|
-
"EntityRef",
|
|
32
|
-
"Episode",
|
|
33
|
-
"EpisodeType",
|
|
34
|
-
"RawEvent",
|
|
35
|
-
"Source",
|
|
36
|
-
"SyncResult",
|
|
37
|
-
"SyncState",
|
|
38
|
-
"Visibility",
|
|
39
|
-
"VisibilityLevel",
|
|
40
|
-
]
|
|
1
|
+
"""cortexdb_connectors — data connector SDK for the CortexDB v1 API.
|
|
2
|
+
|
|
3
|
+
Each connector subclass implements `fetch_events`, `normalize`, and
|
|
4
|
+
`map_permissions`; the base class POSTs every normalised Episode to
|
|
5
|
+
`/v1/experience` with the required Authorization + X-Cortex-Actor
|
|
6
|
+
headers. Use the `cortexdb-sync` CLI to run a connector once or in a
|
|
7
|
+
poll loop; or `from cortexdb_connectors.slack import SlackConnector`
|
|
8
|
+
to drive it programmatically.
|
|
9
|
+
"""
|
|
10
|
+
|
|
11
|
+
__version__ = "0.2.6"
|
|
12
|
+
|
|
13
|
+
from cortexdb_connectors.base import (
|
|
14
|
+
Actor,
|
|
15
|
+
CortexConnector,
|
|
16
|
+
EntityRef,
|
|
17
|
+
Episode,
|
|
18
|
+
EpisodeType,
|
|
19
|
+
RawEvent,
|
|
20
|
+
Source,
|
|
21
|
+
SyncResult,
|
|
22
|
+
SyncState,
|
|
23
|
+
Visibility,
|
|
24
|
+
VisibilityLevel,
|
|
25
|
+
)
|
|
26
|
+
|
|
27
|
+
__all__ = [
|
|
28
|
+
"__version__",
|
|
29
|
+
"Actor",
|
|
30
|
+
"CortexConnector",
|
|
31
|
+
"EntityRef",
|
|
32
|
+
"Episode",
|
|
33
|
+
"EpisodeType",
|
|
34
|
+
"RawEvent",
|
|
35
|
+
"Source",
|
|
36
|
+
"SyncResult",
|
|
37
|
+
"SyncState",
|
|
38
|
+
"Visibility",
|
|
39
|
+
"VisibilityLevel",
|
|
40
|
+
]
|
|
@@ -322,19 +322,28 @@ class CortexConnector(ABC):
|
|
|
322
322
|
"role": "user" if modality == "conversation" else "system",
|
|
323
323
|
"text": self._guard_content(episode.content, episode),
|
|
324
324
|
}
|
|
325
|
+
# The v1 write envelope is STRICT (deny_unknown_fields) as of v0.8.0:
|
|
326
|
+
# thread_id / meta / preceded_by are NOT envelope context fields, and
|
|
327
|
+
# sending them returns 422 INVALID_BODY (which stalls the sync cursor
|
|
328
|
+
# forever). Everything routable rides `context.labels` as key=value
|
|
329
|
+
# strings — the queryable partition recall metadata filters target.
|
|
330
|
+
# `context.preceded_by` is a list of CortexDB event ids (evt_…), not
|
|
331
|
+
# source-side parent ids, so the connector's parent_id goes to a
|
|
332
|
+
# label instead.
|
|
333
|
+
labels = list(labels)
|
|
334
|
+
if episode.thread_id:
|
|
335
|
+
labels.append(f"thread={episode.thread_id}")
|
|
336
|
+
if episode.parent_id:
|
|
337
|
+
labels.append(f"parent={episode.parent_id}")
|
|
338
|
+
if episode.metadata:
|
|
339
|
+
for k, v in episode.metadata.items():
|
|
340
|
+
if k == "modality":
|
|
341
|
+
continue
|
|
342
|
+
labels.append(f"{k}={v}")
|
|
325
343
|
context: dict[str, Any] = {
|
|
326
344
|
"observed_at": episode.occurred_at.isoformat(),
|
|
327
345
|
"labels": labels,
|
|
328
346
|
}
|
|
329
|
-
if episode.thread_id:
|
|
330
|
-
context["thread_id"] = episode.thread_id
|
|
331
|
-
if episode.parent_id:
|
|
332
|
-
context["preceded_by"] = [episode.parent_id]
|
|
333
|
-
if episode.metadata:
|
|
334
|
-
# Forward non-reserved metadata under a single key — the v1
|
|
335
|
-
# surface doesn't reject unknown context keys but we tuck
|
|
336
|
-
# everything under `meta` to keep the envelope tidy.
|
|
337
|
-
context["meta"] = {k: v for k, v in episode.metadata.items() if k != "modality"}
|
|
338
347
|
|
|
339
348
|
envelope: dict[str, Any] = {
|
|
340
349
|
"scope": scope,
|