erdo 0.1.4__py3-none-any.whl → 0.1.5__py3-none-any.whl

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.

Potentially problematic release.


This version of erdo might be problematic. Click here for more details.

erdo/_generated/types.py CHANGED
@@ -71,14 +71,20 @@ class ExecutionModeType(str, Enum):
71
71
  class LlmModel(str, Enum):
72
72
  """Enum for LlmModel values"""
73
73
 
74
- CLAUDE_3_7_SONNET_20250219 = "claude-3-7-sonnet-20250219"
75
- CLAUDE_SONNET_4_20250514 = "claude-sonnet-4-20250514"
76
- CLAUDE_3_5_HAIKU_20241022 = "claude-3-5-haiku-20241022"
74
+ CLAUDE_SONNET_4 = "claude-sonnet-4"
75
+ CLAUDE_SONNET_4_5 = "claude-sonnet-4-5"
76
+ CLAUDE_HAIKU_4_5 = "claude-haiku-4-5"
77
77
  GPT_4O = "gpt-4o"
78
78
  GPT_4O_MINI = "gpt-4o-mini"
79
79
  GPT_4_1 = "gpt-4.1"
80
80
  GPT_4_1_MINI = "gpt-4.1-mini"
81
81
  GPT_4_1_NANO = "gpt-4.1-nano"
82
+ GPT_5 = "gpt-5"
83
+ GPT_5_MINI = "gpt-5-mini"
84
+ GPT_5_NANO = "gpt-5-nano"
85
+ GEMINI_2_5_PRO = "gemini-2.5-pro"
86
+ GEMINI_2_5_FLASH = "gemini-2.5-flash"
87
+ GEMINI_2_5_FLASH_LITE = "gemini-2.5-flash-lite"
82
88
 
83
89
 
84
90
  # OutputBehaviorType (from OutputBehaviorType in Go)
@@ -145,6 +151,7 @@ class InvocationEventType(str, Enum):
145
151
  STATUS = "status"
146
152
  RESULT = "result"
147
153
  DATASET_CREATED = "dataset created"
154
+ LOG = "log"
148
155
 
149
156
 
150
157
  # Status (from Status in Go)
@@ -168,6 +175,7 @@ class Error(str, Enum):
168
175
  INFO_NEEDED = "info needed"
169
176
  TERMINATED = "terminated"
170
177
  BAD_REQUEST = "bad request"
178
+ TIMEOUT = "timeout"
171
179
 
172
180
 
173
181
  # DatasetType (from DatasetType in Go)
@@ -280,6 +288,7 @@ class Bot:
280
288
  organization_id: str
281
289
  visibility: str
282
290
  source: str
291
+ key: Optional[str] = None
283
292
  persona: Optional[str] = None
284
293
  running_message: Optional[str] = None
285
294
  finished_message: Optional[str] = None
@@ -294,6 +303,8 @@ class Bot:
294
303
  result["description"] = self.description
295
304
  result["code"] = self.code
296
305
  result["file_path"] = self.file_path
306
+ if self.key is not None:
307
+ result["key"] = self.key
297
308
  if self.persona is not None:
298
309
  result["persona"] = self.persona
299
310
  if self.running_message is not None:
@@ -355,7 +366,7 @@ class ParameterValueSource:
355
366
  """ParameterValueSource matching Go backend structure."""
356
367
 
357
368
  type: Any
358
- parameters: Any
369
+ parameters: Dict[str, Any]
359
370
  id: Optional[UUID] = None
360
371
  parameter_definition_id: Optional[UUID] = None
361
372
  created_at: Optional[datetime] = None
@@ -385,7 +396,7 @@ class ParameterValueSourceHandler:
385
396
  """ParameterValueSourceHandler matching Go backend structure."""
386
397
 
387
398
  action_type: str
388
- parameters: Any
399
+ parameters: Dict[str, Any]
389
400
  execution_mode: str
390
401
  id: Optional[UUID] = None
391
402
  parameter_value_source_id: Optional[UUID] = None
@@ -414,7 +425,7 @@ class ParameterInterpreter:
414
425
  """ParameterInterpreter matching Go backend structure."""
415
426
 
416
427
  action_type: str
417
- parameters: Any
428
+ parameters: Dict[str, Any]
418
429
  interpreter_order: int
419
430
  id: Optional[UUID] = None
420
431
  parameter_definition_id: Optional[UUID] = None
@@ -463,7 +474,7 @@ class AgentDiscovery:
463
474
  class ExecutionModeConfig:
464
475
  """ExecutionMode matching Go backend structure."""
465
476
 
466
- mode: str
477
+ mode: Any
467
478
  data: Any
468
479
  if_condition: Optional["ConditionDefinition"] = None
469
480
 
@@ -564,11 +575,11 @@ class ActionDefinition:
564
575
  class ResultSchema:
565
576
  """ResultSchema matching Go backend structure."""
566
577
 
567
- properties: Any
578
+ properties: Dict[str, Any]
568
579
  description: str = None
569
580
  required_fields: List[str] = None
570
581
  optional_fields: List[str] = None
571
- examples: List[Any] = None
582
+ examples: List[Dict[str, Any]] = None
572
583
 
573
584
  def to_dict(self) -> Dict[str, Any]:
574
585
  """Convert to dict format expected by backend."""
@@ -592,7 +603,7 @@ class PropertySchema:
592
603
  type: Any
593
604
  description: str = None
594
605
  items: Optional["PropertySchema"] = None
595
- properties: Any = None
606
+ properties: Dict[str, Any] = None
596
607
  example: Any = None
597
608
  enum: List[str] = None
598
609
 
@@ -622,7 +633,7 @@ class IntegrationSchema:
622
633
  description: str
623
634
  type: str
624
635
  auth_types: List[str]
625
- credential_schema: Any
636
+ credential_schema: Dict[str, Any]
626
637
  available_scopes: List[str]
627
638
  documentation_url: str
628
639
  codegen_details: Optional[CodegenDetails] = None
@@ -711,8 +722,8 @@ class CredentialSchema:
711
722
  class ExportActionsResponse:
712
723
  """ExportActionsResponse matching Go backend structure."""
713
724
 
714
- services: Any
715
- integrations: Any
725
+ services: Dict[str, Any]
726
+ integrations: Dict[str, Any]
716
727
 
717
728
  def to_dict(self) -> Dict[str, Any]:
718
729
  """Convert to dict format expected by backend."""
@@ -728,7 +739,7 @@ class ConditionDefinition:
728
739
 
729
740
  type: str
730
741
  conditions: List["ConditionDefinition"] = None
731
- leaf: Any = None
742
+ leaf: Dict[str, Any] = None
732
743
 
733
744
  def to_dict(self) -> Dict[str, Any]:
734
745
  """Convert to dict format expected by backend."""
@@ -747,7 +758,7 @@ class TempCondition:
747
758
 
748
759
  type: str
749
760
  conditions: Any = None
750
- leaf: Any = None
761
+ leaf: Dict[str, Any] = None
751
762
 
752
763
  def to_dict(self) -> Dict[str, Any]:
753
764
  """Convert to dict format expected by backend."""
@@ -829,7 +840,7 @@ class JSONSchema:
829
840
  """JSONSchema matching Go backend structure."""
830
841
 
831
842
  type: Any
832
- properties: Any = None
843
+ properties: Dict[str, Any] = None
833
844
  required: List[str] = None
834
845
  items: Optional["JSONSchemaProperty"] = None
835
846
 
@@ -854,11 +865,13 @@ class Tool:
854
865
  description: str
855
866
  input_schema: "JSONSchema"
856
867
  action_type: str
857
- parameters: Any
868
+ parameters: Dict[str, Any]
858
869
  bot_output_visibility: str = None
859
870
  history_content_type: str = None
860
871
  ui_content_type: str = None
861
872
  as_root: bool = None
873
+ running_message: Optional[str] = None
874
+ finished_message: Optional[str] = None
862
875
 
863
876
  def to_dict(self) -> Dict[str, Any]:
864
877
  """Convert to dict format expected by backend."""
@@ -876,6 +889,10 @@ class Tool:
876
889
  result["ui_content_type"] = self.ui_content_type
877
890
  if self.as_root is not None:
878
891
  result["as_root"] = self.as_root
892
+ if self.running_message is not None:
893
+ result["running_message"] = self.running_message
894
+ if self.finished_message is not None:
895
+ result["finished_message"] = self.finished_message
879
896
  return result
880
897
 
881
898
 
@@ -929,8 +946,8 @@ class Result:
929
946
  """Result matching Go backend structure."""
930
947
 
931
948
  status: Any
932
- parameters: Optional[Any] = None
933
- output: Optional[Any] = None
949
+ parameters: Optional[Dict[str, Any]] = None
950
+ output: Optional[Dict[str, Any]] = None
934
951
  message: Optional[str] = None
935
952
  error: Optional[Any] = None
936
953
 
@@ -964,13 +981,13 @@ class APIStep:
964
981
  execution_mode: "APIExecutionMode"
965
982
  output_behaviour: Any
966
983
  output_channels: List[str]
967
- parameter_hydration_behaviour: Any
968
984
  depends_on: Optional[List[str]] = None
969
985
  key: Optional[str] = None
970
986
  running_message: Optional[str] = None
971
987
  finished_message: Optional[str] = None
972
988
  history_content_type: Optional[str] = None
973
989
  ui_content_type: Optional[str] = None
990
+ parameter_hydration_behaviour: Optional[Any] = None
974
991
  result_handler_id: Optional[str] = None
975
992
  created_at: Optional[datetime] = None
976
993
  updated_at: Optional[datetime] = None
@@ -1001,7 +1018,8 @@ class APIStep:
1001
1018
  result["history_content_type"] = self.history_content_type
1002
1019
  if self.ui_content_type is not None:
1003
1020
  result["ui_content_type"] = self.ui_content_type
1004
- result["parameter_hydration_behaviour"] = self.parameter_hydration_behaviour
1021
+ if self.parameter_hydration_behaviour is not None:
1022
+ result["parameter_hydration_behaviour"] = self.parameter_hydration_behaviour
1005
1023
  if self.result_handler_id is not None:
1006
1024
  result["result_handler_id"] = self.result_handler_id
1007
1025
  if self.created_at is not None:
@@ -1103,7 +1121,7 @@ class APIParameterInterpreter:
1103
1121
  class APIExecutionMode:
1104
1122
  """APIExecutionMode matching Go backend structure."""
1105
1123
 
1106
- mode: str
1124
+ mode: Any
1107
1125
  data: Any
1108
1126
  if_condition: Optional["APIConditionDefinition"] = None
1109
1127
 
@@ -1149,6 +1167,8 @@ class APITool:
1149
1167
  history_content_type: str = None
1150
1168
  ui_content_type: str = None
1151
1169
  as_root: bool = None
1170
+ running_message: Optional[str] = None
1171
+ finished_message: Optional[str] = None
1152
1172
 
1153
1173
  def to_dict(self) -> Dict[str, Any]:
1154
1174
  """Convert to dict format expected by backend."""
@@ -1166,6 +1186,10 @@ class APITool:
1166
1186
  result["ui_content_type"] = self.ui_content_type
1167
1187
  if self.as_root is not None:
1168
1188
  result["as_root"] = self.as_root
1189
+ if self.running_message is not None:
1190
+ result["running_message"] = self.running_message
1191
+ if self.finished_message is not None:
1192
+ result["finished_message"] = self.finished_message
1169
1193
  return result
1170
1194
 
1171
1195
 
@@ -1264,12 +1288,12 @@ class Dataset:
1264
1288
  integration_id: Optional[UUID] = None
1265
1289
  integration_config_id: Optional[UUID] = None
1266
1290
  integration_config: Optional[IntegrationConfig] = None
1267
- encrypted_integration_credentials: Optional[Any] = None
1268
- credential_schema: Optional[Any] = None
1291
+ encrypted_integration_credentials: Optional[Dict[str, str]] = None
1292
+ credential_schema: Optional[Dict[str, Any]] = None
1269
1293
  codegen_details: Optional[CodegenDetails] = None
1270
1294
  analysis_details: Optional[AnalysisDetails] = None
1271
1295
  available_scopes: Optional[List[str]] = None
1272
- parameters: Optional[Any] = None
1296
+ parameters: Optional[Dict[str, Any]] = None
1273
1297
 
1274
1298
  def to_dict(self) -> Dict[str, Any]:
1275
1299
  """Convert to dict format expected by backend."""
@@ -1325,7 +1349,7 @@ class BotResource:
1325
1349
 
1326
1350
  id: int
1327
1351
  created_by: str
1328
- extra: Any
1352
+ extra: Dict[str, Any]
1329
1353
  dataset: Optional[Dataset] = None
1330
1354
 
1331
1355
  def to_dict(self) -> Dict[str, Any]:
@@ -1557,7 +1581,7 @@ class SegmentOption:
1557
1581
  id: str
1558
1582
  name: str
1559
1583
  type: str
1560
- metadata: Any
1584
+ metadata: Dict[str, str]
1561
1585
  children: List["SegmentOption"]
1562
1586
  parent_id: Optional[str] = None
1563
1587
 
@@ -1598,14 +1622,14 @@ class IntegrationDefinition:
1598
1622
  scope_separator: Optional[str] = None
1599
1623
  api_version: Optional[str] = None
1600
1624
  api_version_description: Optional[str] = None
1601
- credential_schema: Any = None
1625
+ credential_schema: Dict[str, Any] = None
1602
1626
  ui_config: Optional["UIConfig"] = None
1603
1627
  codegen_details: Optional[CodegenDetails] = None
1604
1628
  analysis_details: Optional[AnalysisDetails] = None
1605
1629
  segment_config: Optional["SegmentConfig"] = None
1606
1630
  dataset_resource_discovery_config: Optional["DatasetResourceDiscoveryConfig"] = None
1607
1631
  expiry_config: Optional["ExpiryConfig"] = None
1608
- provider_credentials: Any = None
1632
+ provider_credentials: Dict[str, Any] = None
1609
1633
  default_resource_attach_type: Optional[str] = None
1610
1634
 
1611
1635
  def to_dict(self) -> Dict[str, Any]:
@@ -1692,7 +1716,7 @@ class PythonIntegrationInstance:
1692
1716
  """PythonIntegrationInstance matching Go backend structure."""
1693
1717
 
1694
1718
  config: IntegrationConfig
1695
- credentials: Any
1719
+ credentials: Dict[str, Any]
1696
1720
  methods: List[str] = None
1697
1721
 
1698
1722
  def to_dict(self) -> Dict[str, Any]:
@@ -1772,7 +1796,7 @@ class ListIntegrationsResponse:
1772
1796
  class ExportIntegrationsResponse:
1773
1797
  """ExportIntegrationsResponse matching Go backend structure."""
1774
1798
 
1775
- integrations: Any
1799
+ integrations: Dict[str, Any]
1776
1800
 
1777
1801
  def to_dict(self) -> Dict[str, Any]:
1778
1802
  """Convert to dict format expected by backend."""
@@ -1788,20 +1812,20 @@ class Memory:
1788
1812
  id: str
1789
1813
  content: str
1790
1814
  description: str
1815
+ tags: List[str]
1791
1816
  state: str
1792
1817
  created_by_entity_type: str
1793
1818
  created_by_id: str
1819
+ extra: Dict[str, Any]
1794
1820
  created_at: datetime
1795
1821
  updated_at: datetime
1796
1822
  type: str
1797
1823
  current_version: int
1798
1824
  approval_status: str
1799
- tags: List[str] = None
1800
1825
  estimated_stale_at: Optional[datetime] = None
1801
1826
  stale_when_text: Optional[str] = None
1802
1827
  created_from: Optional[str] = None
1803
1828
  organization_id: Optional[str] = None
1804
- extra: Any = None
1805
1829
  dataset_id: Optional[str] = None
1806
1830
  integration_config_id: Optional[str] = None
1807
1831
  user_id: Optional[str] = None
@@ -1813,8 +1837,7 @@ class Memory:
1813
1837
  result["id"] = self.id
1814
1838
  result["content"] = self.content
1815
1839
  result["description"] = self.description
1816
- if self.tags is not None:
1817
- result["tags"] = self.tags
1840
+ result["tags"] = self.tags
1818
1841
  result["state"] = self.state
1819
1842
  if self.estimated_stale_at is not None:
1820
1843
  result["estimated_stale_at"] = self.estimated_stale_at
@@ -1826,8 +1849,7 @@ class Memory:
1826
1849
  result["created_from"] = self.created_from
1827
1850
  if self.organization_id is not None:
1828
1851
  result["organization_id"] = self.organization_id
1829
- if self.extra is not None:
1830
- result["extra"] = self.extra
1852
+ result["extra"] = self.extra
1831
1853
  result["created_at"] = self.created_at
1832
1854
  result["updated_at"] = self.updated_at
1833
1855
  result["type"] = self.type
@@ -1844,6 +1866,25 @@ class Memory:
1844
1866
  return result
1845
1867
 
1846
1868
 
1869
+ @dataclass
1870
+ class ResourceAnalysis:
1871
+ """ResourceAnalysis matching Go backend structure."""
1872
+
1873
+ entity_key: str
1874
+ summary: Optional[str] = None
1875
+ last_analyzed: Optional[datetime] = None
1876
+
1877
+ def to_dict(self) -> Dict[str, Any]:
1878
+ """Convert to dict format expected by backend."""
1879
+ result = {}
1880
+ if self.summary is not None:
1881
+ result["summary"] = self.summary
1882
+ if self.last_analyzed is not None:
1883
+ result["last_analyzed"] = self.last_analyzed
1884
+ result["entity_key"] = self.entity_key
1885
+ return result
1886
+
1887
+
1847
1888
  @dataclass
1848
1889
  class Resource:
1849
1890
  """Resource matching Go backend structure."""
@@ -1852,15 +1893,17 @@ class Resource:
1852
1893
  key: str
1853
1894
  name: str
1854
1895
  type: Any
1896
+ use_cases: List[str]
1897
+ tags: List[str]
1855
1898
  created_at: datetime
1856
1899
  updated_at: datetime
1857
1900
  integration_config_id: str
1858
1901
  state: Any
1859
1902
  attach_type: Any
1860
1903
  dataset_id: str
1904
+ analyses: List["ResourceAnalysis"]
1905
+ related_resources: List[Resource]
1861
1906
  description: Optional[str] = None
1862
- use_cases: List[str] = None
1863
- tags: List[str] = None
1864
1907
  instructions: Optional[str] = None
1865
1908
 
1866
1909
  def to_dict(self) -> Dict[str, Any]:
@@ -1872,10 +1915,8 @@ class Resource:
1872
1915
  result["type"] = self.type
1873
1916
  if self.description is not None:
1874
1917
  result["description"] = self.description
1875
- if self.use_cases is not None:
1876
- result["use_cases"] = self.use_cases
1877
- if self.tags is not None:
1878
- result["tags"] = self.tags
1918
+ result["use_cases"] = self.use_cases
1919
+ result["tags"] = self.tags
1879
1920
  result["created_at"] = self.created_at
1880
1921
  result["updated_at"] = self.updated_at
1881
1922
  result["integration_config_id"] = self.integration_config_id
@@ -1884,6 +1925,8 @@ class Resource:
1884
1925
  result["dataset_id"] = self.dataset_id
1885
1926
  if self.instructions is not None:
1886
1927
  result["instructions"] = self.instructions
1928
+ result["analyses"] = self.analyses
1929
+ result["related_resources"] = self.related_resources
1887
1930
  return result
1888
1931
 
1889
1932
 
@@ -2106,7 +2149,7 @@ class SegmentOption:
2106
2149
  id: str
2107
2150
  name: str
2108
2151
  type: str
2109
- metadata: Any
2152
+ metadata: Dict[str, str]
2110
2153
  children: List["SegmentOption"]
2111
2154
  parent_id: Optional[str] = None
2112
2155
 
@@ -2147,14 +2190,14 @@ class IntegrationDefinition:
2147
2190
  scope_separator: Optional[str] = None
2148
2191
  api_version: Optional[str] = None
2149
2192
  api_version_description: Optional[str] = None
2150
- credential_schema: Any = None
2193
+ credential_schema: Dict[str, Any] = None
2151
2194
  ui_config: Optional["UIConfig"] = None
2152
2195
  codegen_details: Optional[CodegenDetails] = None
2153
2196
  analysis_details: Optional[AnalysisDetails] = None
2154
2197
  segment_config: Optional["SegmentConfig"] = None
2155
2198
  dataset_resource_discovery_config: Optional["DatasetResourceDiscoveryConfig"] = None
2156
2199
  expiry_config: Optional["ExpiryConfig"] = None
2157
- provider_credentials: Any = None
2200
+ provider_credentials: Dict[str, Any] = None
2158
2201
  default_resource_attach_type: Optional[str] = None
2159
2202
 
2160
2203
  def to_dict(self) -> Dict[str, Any]:
@@ -2241,7 +2284,7 @@ class PythonIntegrationInstance:
2241
2284
  """PythonIntegrationInstance matching Go backend structure."""
2242
2285
 
2243
2286
  config: IntegrationConfig
2244
- credentials: Any
2287
+ credentials: Dict[str, Any]
2245
2288
  methods: List[str] = None
2246
2289
 
2247
2290
  def to_dict(self) -> Dict[str, Any]:
@@ -2321,7 +2364,7 @@ class ListIntegrationsResponse:
2321
2364
  class ExportIntegrationsResponse:
2322
2365
  """ExportIntegrationsResponse matching Go backend structure."""
2323
2366
 
2324
- integrations: Any
2367
+ integrations: Dict[str, Any]
2325
2368
 
2326
2369
  def to_dict(self) -> Dict[str, Any]:
2327
2370
  """Convert to dict format expected by backend."""
@@ -2415,6 +2458,7 @@ __all__ = [
2415
2458
  "ListIntegrationsResponse",
2416
2459
  "ExportIntegrationsResponse",
2417
2460
  "Memory",
2461
+ "ResourceAnalysis",
2418
2462
  "Resource",
2419
2463
  ]
2420
2464
 
erdo/actions/__init__.py CHANGED
@@ -14,27 +14,26 @@ from .._generated.actions import codeexec # noqa: F401
14
14
  from .._generated.actions import llm # noqa: F401
15
15
  from .._generated.actions import memory # noqa: F401
16
16
  from .._generated.actions import resource_definitions # noqa: F401
17
+ from .._generated.actions import sqlexec # noqa: F401
17
18
  from .._generated.actions import utils # noqa: F401
18
19
  from .._generated.actions import webparser # noqa: F401
19
20
  from .._generated.actions import websearch # noqa: F401
20
21
 
21
- # Import internal actions explicitly
22
- from .._generated.internal_actions import ( # noqa: F401
23
- checkpoint_attempt,
24
- refresh_resource,
25
- )
22
+ # Import internal actions first
23
+ from .._generated.internal_actions import * # noqa: F403,F401
26
24
 
27
25
  # Make all services available for import
28
26
  __all__ = [
29
27
  "checkpoint_attempt",
30
28
  "refresh_resource",
29
+ "resource_definitions",
30
+ "webparser",
31
+ "websearch",
31
32
  "analysis",
32
- "bot",
33
+ "codeexec",
33
34
  "llm",
34
- "resource_definitions",
35
+ "sqlexec",
35
36
  "utils",
36
- "codeexec",
37
+ "bot",
37
38
  "memory",
38
- "webparser",
39
- "websearch",
40
39
  ]