hindsight-client 0.3.0__py3-none-any.whl → 0.4.1__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.
Files changed (89) hide show
  1. hindsight_client/__init__.py +9 -8
  2. hindsight_client/hindsight_client.py +394 -59
  3. {hindsight_client-0.3.0.dist-info → hindsight_client-0.4.1.dist-info}/METADATA +1 -1
  4. hindsight_client-0.4.1.dist-info/RECORD +89 -0
  5. hindsight_client_api/__init__.py +26 -2
  6. hindsight_client_api/api/__init__.py +2 -0
  7. hindsight_client_api/api/banks_api.py +998 -132
  8. hindsight_client_api/api/directives_api.py +1619 -0
  9. hindsight_client_api/api/documents_api.py +1 -1
  10. hindsight_client_api/api/entities_api.py +10 -7
  11. hindsight_client_api/api/memory_api.py +1 -1
  12. hindsight_client_api/api/mental_models_api.py +1897 -0
  13. hindsight_client_api/api/monitoring_api.py +247 -1
  14. hindsight_client_api/api/operations_api.py +351 -5
  15. hindsight_client_api/api_client.py +1 -1
  16. hindsight_client_api/configuration.py +2 -2
  17. hindsight_client_api/exceptions.py +1 -1
  18. hindsight_client_api/models/__init__.py +23 -1
  19. hindsight_client_api/models/add_background_request.py +3 -3
  20. hindsight_client_api/models/async_operation_submit_response.py +89 -0
  21. hindsight_client_api/models/background_response.py +11 -4
  22. hindsight_client_api/models/bank_list_item.py +7 -7
  23. hindsight_client_api/models/bank_list_response.py +1 -1
  24. hindsight_client_api/models/bank_profile_response.py +12 -5
  25. hindsight_client_api/models/bank_stats_response.py +16 -5
  26. hindsight_client_api/models/budget.py +1 -1
  27. hindsight_client_api/models/cancel_operation_response.py +1 -1
  28. hindsight_client_api/models/chunk_data.py +1 -1
  29. hindsight_client_api/models/chunk_include_options.py +1 -1
  30. hindsight_client_api/models/chunk_response.py +1 -1
  31. hindsight_client_api/models/consolidation_response.py +89 -0
  32. hindsight_client_api/models/create_bank_request.py +9 -2
  33. hindsight_client_api/models/create_directive_request.py +95 -0
  34. hindsight_client_api/models/create_mental_model_request.py +100 -0
  35. hindsight_client_api/models/create_mental_model_response.py +87 -0
  36. hindsight_client_api/models/delete_document_response.py +1 -1
  37. hindsight_client_api/models/delete_response.py +1 -1
  38. hindsight_client_api/models/directive_list_response.py +95 -0
  39. hindsight_client_api/models/directive_response.py +113 -0
  40. hindsight_client_api/models/disposition_traits.py +1 -1
  41. hindsight_client_api/models/document_response.py +1 -1
  42. hindsight_client_api/models/entity_detail_response.py +1 -1
  43. hindsight_client_api/models/entity_include_options.py +1 -1
  44. hindsight_client_api/models/entity_input.py +1 -1
  45. hindsight_client_api/models/entity_list_item.py +1 -1
  46. hindsight_client_api/models/entity_list_response.py +1 -1
  47. hindsight_client_api/models/entity_observation_response.py +1 -1
  48. hindsight_client_api/models/entity_state_response.py +1 -1
  49. hindsight_client_api/models/features_info.py +91 -0
  50. hindsight_client_api/models/graph_data_response.py +1 -1
  51. hindsight_client_api/models/http_validation_error.py +1 -1
  52. hindsight_client_api/models/include_options.py +1 -1
  53. hindsight_client_api/models/list_documents_response.py +1 -1
  54. hindsight_client_api/models/list_memory_units_response.py +1 -1
  55. hindsight_client_api/models/list_tags_response.py +1 -1
  56. hindsight_client_api/models/memory_item.py +1 -1
  57. hindsight_client_api/models/mental_model_list_response.py +95 -0
  58. hindsight_client_api/models/mental_model_response.py +126 -0
  59. hindsight_client_api/models/mental_model_trigger.py +87 -0
  60. hindsight_client_api/models/operation_response.py +2 -2
  61. hindsight_client_api/models/operation_status_response.py +131 -0
  62. hindsight_client_api/models/operations_list_response.py +9 -3
  63. hindsight_client_api/models/recall_request.py +1 -1
  64. hindsight_client_api/models/recall_response.py +1 -1
  65. hindsight_client_api/models/recall_result.py +1 -1
  66. hindsight_client_api/models/reflect_based_on.py +115 -0
  67. hindsight_client_api/models/reflect_directive.py +91 -0
  68. hindsight_client_api/models/reflect_fact.py +1 -1
  69. hindsight_client_api/models/reflect_include_options.py +14 -3
  70. hindsight_client_api/models/reflect_llm_call.py +89 -0
  71. hindsight_client_api/models/reflect_mental_model.py +96 -0
  72. hindsight_client_api/models/reflect_request.py +1 -1
  73. hindsight_client_api/models/reflect_response.py +24 -12
  74. hindsight_client_api/models/reflect_tool_call.py +100 -0
  75. hindsight_client_api/models/reflect_trace.py +105 -0
  76. hindsight_client_api/models/retain_request.py +1 -1
  77. hindsight_client_api/models/retain_response.py +1 -1
  78. hindsight_client_api/models/tag_item.py +1 -1
  79. hindsight_client_api/models/token_usage.py +1 -1
  80. hindsight_client_api/models/tool_calls_include_options.py +87 -0
  81. hindsight_client_api/models/update_directive_request.py +120 -0
  82. hindsight_client_api/models/update_disposition_request.py +1 -1
  83. hindsight_client_api/models/update_mental_model_request.py +125 -0
  84. hindsight_client_api/models/validation_error.py +1 -1
  85. hindsight_client_api/models/validation_error_loc_inner.py +1 -1
  86. hindsight_client_api/models/version_response.py +93 -0
  87. hindsight_client_api/rest.py +1 -1
  88. hindsight_client-0.3.0.dist-info/RECORD +0 -65
  89. {hindsight_client-0.3.0.dist-info → hindsight_client-0.4.1.dist-info}/WHEEL +0 -0
@@ -5,7 +5,7 @@
5
5
 
6
6
  HTTP API for Hindsight
7
7
 
8
- The version of the OpenAPI document: 0.1.0
8
+ The version of the OpenAPI document: 0.4.0
9
9
  Generated by OpenAPI Generator (https://openapi-generator.tech)
10
10
 
11
11
  Do not edit the class manually.
@@ -19,6 +19,7 @@ import json
19
19
 
20
20
  from pydantic import BaseModel, ConfigDict, Field
21
21
  from typing import Any, ClassVar, Dict, List, Optional
22
+ from hindsight_client_api.models.tool_calls_include_options import ToolCallsIncludeOptions
22
23
  from typing import Optional, Set
23
24
  from typing_extensions import Self
24
25
 
@@ -27,7 +28,8 @@ class ReflectIncludeOptions(BaseModel):
27
28
  Options for including additional data in reflect results.
28
29
  """ # noqa: E501
29
30
  facts: Optional[Dict[str, Any]] = Field(default=None, description="Options for including facts (based_on) in reflect results.")
30
- __properties: ClassVar[List[str]] = ["facts"]
31
+ tool_calls: Optional[ToolCallsIncludeOptions] = None
32
+ __properties: ClassVar[List[str]] = ["facts", "tool_calls"]
31
33
 
32
34
  model_config = ConfigDict(
33
35
  populate_by_name=True,
@@ -68,6 +70,14 @@ class ReflectIncludeOptions(BaseModel):
68
70
  exclude=excluded_fields,
69
71
  exclude_none=True,
70
72
  )
73
+ # override the default output from pydantic by calling `to_dict()` of tool_calls
74
+ if self.tool_calls:
75
+ _dict['tool_calls'] = self.tool_calls.to_dict()
76
+ # set to None if tool_calls (nullable) is None
77
+ # and model_fields_set contains the field
78
+ if self.tool_calls is None and "tool_calls" in self.model_fields_set:
79
+ _dict['tool_calls'] = None
80
+
71
81
  return _dict
72
82
 
73
83
  @classmethod
@@ -80,7 +90,8 @@ class ReflectIncludeOptions(BaseModel):
80
90
  return cls.model_validate(obj)
81
91
 
82
92
  _obj = cls.model_validate({
83
- "facts": obj.get("facts")
93
+ "facts": obj.get("facts"),
94
+ "tool_calls": ToolCallsIncludeOptions.from_dict(obj["tool_calls"]) if obj.get("tool_calls") is not None else None
84
95
  })
85
96
  return _obj
86
97
 
@@ -0,0 +1,89 @@
1
+ # coding: utf-8
2
+
3
+ """
4
+ Hindsight HTTP API
5
+
6
+ HTTP API for Hindsight
7
+
8
+ The version of the OpenAPI document: 0.4.0
9
+ Generated by OpenAPI Generator (https://openapi-generator.tech)
10
+
11
+ Do not edit the class manually.
12
+ """ # noqa: E501
13
+
14
+
15
+ from __future__ import annotations
16
+ import pprint
17
+ import re # noqa: F401
18
+ import json
19
+
20
+ from pydantic import BaseModel, ConfigDict, Field, StrictInt, StrictStr
21
+ from typing import Any, ClassVar, Dict, List
22
+ from typing import Optional, Set
23
+ from typing_extensions import Self
24
+
25
+ class ReflectLLMCall(BaseModel):
26
+ """
27
+ An LLM call made during reflect agent execution.
28
+ """ # noqa: E501
29
+ scope: StrictStr = Field(description="Call scope: agent_1, agent_2, final, etc.")
30
+ duration_ms: StrictInt = Field(description="Execution time in milliseconds")
31
+ __properties: ClassVar[List[str]] = ["scope", "duration_ms"]
32
+
33
+ model_config = ConfigDict(
34
+ populate_by_name=True,
35
+ validate_assignment=True,
36
+ protected_namespaces=(),
37
+ )
38
+
39
+
40
+ def to_str(self) -> str:
41
+ """Returns the string representation of the model using alias"""
42
+ return pprint.pformat(self.model_dump(by_alias=True))
43
+
44
+ def to_json(self) -> str:
45
+ """Returns the JSON representation of the model using alias"""
46
+ # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead
47
+ return json.dumps(self.to_dict())
48
+
49
+ @classmethod
50
+ def from_json(cls, json_str: str) -> Optional[Self]:
51
+ """Create an instance of ReflectLLMCall from a JSON string"""
52
+ return cls.from_dict(json.loads(json_str))
53
+
54
+ def to_dict(self) -> Dict[str, Any]:
55
+ """Return the dictionary representation of the model using alias.
56
+
57
+ This has the following differences from calling pydantic's
58
+ `self.model_dump(by_alias=True)`:
59
+
60
+ * `None` is only added to the output dict for nullable fields that
61
+ were set at model initialization. Other fields with value `None`
62
+ are ignored.
63
+ """
64
+ excluded_fields: Set[str] = set([
65
+ ])
66
+
67
+ _dict = self.model_dump(
68
+ by_alias=True,
69
+ exclude=excluded_fields,
70
+ exclude_none=True,
71
+ )
72
+ return _dict
73
+
74
+ @classmethod
75
+ def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]:
76
+ """Create an instance of ReflectLLMCall from a dict"""
77
+ if obj is None:
78
+ return None
79
+
80
+ if not isinstance(obj, dict):
81
+ return cls.model_validate(obj)
82
+
83
+ _obj = cls.model_validate({
84
+ "scope": obj.get("scope"),
85
+ "duration_ms": obj.get("duration_ms")
86
+ })
87
+ return _obj
88
+
89
+
@@ -0,0 +1,96 @@
1
+ # coding: utf-8
2
+
3
+ """
4
+ Hindsight HTTP API
5
+
6
+ HTTP API for Hindsight
7
+
8
+ The version of the OpenAPI document: 0.4.0
9
+ Generated by OpenAPI Generator (https://openapi-generator.tech)
10
+
11
+ Do not edit the class manually.
12
+ """ # noqa: E501
13
+
14
+
15
+ from __future__ import annotations
16
+ import pprint
17
+ import re # noqa: F401
18
+ import json
19
+
20
+ from pydantic import BaseModel, ConfigDict, Field, StrictStr
21
+ from typing import Any, ClassVar, Dict, List, Optional
22
+ from typing import Optional, Set
23
+ from typing_extensions import Self
24
+
25
+ class ReflectMentalModel(BaseModel):
26
+ """
27
+ A mental model used during reflect.
28
+ """ # noqa: E501
29
+ id: StrictStr = Field(description="Mental model ID")
30
+ text: StrictStr = Field(description="Mental model content")
31
+ context: Optional[StrictStr] = None
32
+ __properties: ClassVar[List[str]] = ["id", "text", "context"]
33
+
34
+ model_config = ConfigDict(
35
+ populate_by_name=True,
36
+ validate_assignment=True,
37
+ protected_namespaces=(),
38
+ )
39
+
40
+
41
+ def to_str(self) -> str:
42
+ """Returns the string representation of the model using alias"""
43
+ return pprint.pformat(self.model_dump(by_alias=True))
44
+
45
+ def to_json(self) -> str:
46
+ """Returns the JSON representation of the model using alias"""
47
+ # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead
48
+ return json.dumps(self.to_dict())
49
+
50
+ @classmethod
51
+ def from_json(cls, json_str: str) -> Optional[Self]:
52
+ """Create an instance of ReflectMentalModel from a JSON string"""
53
+ return cls.from_dict(json.loads(json_str))
54
+
55
+ def to_dict(self) -> Dict[str, Any]:
56
+ """Return the dictionary representation of the model using alias.
57
+
58
+ This has the following differences from calling pydantic's
59
+ `self.model_dump(by_alias=True)`:
60
+
61
+ * `None` is only added to the output dict for nullable fields that
62
+ were set at model initialization. Other fields with value `None`
63
+ are ignored.
64
+ """
65
+ excluded_fields: Set[str] = set([
66
+ ])
67
+
68
+ _dict = self.model_dump(
69
+ by_alias=True,
70
+ exclude=excluded_fields,
71
+ exclude_none=True,
72
+ )
73
+ # set to None if context (nullable) is None
74
+ # and model_fields_set contains the field
75
+ if self.context is None and "context" in self.model_fields_set:
76
+ _dict['context'] = None
77
+
78
+ return _dict
79
+
80
+ @classmethod
81
+ def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]:
82
+ """Create an instance of ReflectMentalModel from a dict"""
83
+ if obj is None:
84
+ return None
85
+
86
+ if not isinstance(obj, dict):
87
+ return cls.model_validate(obj)
88
+
89
+ _obj = cls.model_validate({
90
+ "id": obj.get("id"),
91
+ "text": obj.get("text"),
92
+ "context": obj.get("context")
93
+ })
94
+ return _obj
95
+
96
+
@@ -5,7 +5,7 @@
5
5
 
6
6
  HTTP API for Hindsight
7
7
 
8
- The version of the OpenAPI document: 0.1.0
8
+ The version of the OpenAPI document: 0.4.0
9
9
  Generated by OpenAPI Generator (https://openapi-generator.tech)
10
10
 
11
11
  Do not edit the class manually.
@@ -5,7 +5,7 @@
5
5
 
6
6
  HTTP API for Hindsight
7
7
 
8
- The version of the OpenAPI document: 0.1.0
8
+ The version of the OpenAPI document: 0.4.0
9
9
  Generated by OpenAPI Generator (https://openapi-generator.tech)
10
10
 
11
11
  Do not edit the class manually.
@@ -19,7 +19,8 @@ import json
19
19
 
20
20
  from pydantic import BaseModel, ConfigDict, StrictStr
21
21
  from typing import Any, ClassVar, Dict, List, Optional
22
- from hindsight_client_api.models.reflect_fact import ReflectFact
22
+ from hindsight_client_api.models.reflect_based_on import ReflectBasedOn
23
+ from hindsight_client_api.models.reflect_trace import ReflectTrace
23
24
  from hindsight_client_api.models.token_usage import TokenUsage
24
25
  from typing import Optional, Set
25
26
  from typing_extensions import Self
@@ -29,10 +30,11 @@ class ReflectResponse(BaseModel):
29
30
  Response model for think endpoint.
30
31
  """ # noqa: E501
31
32
  text: StrictStr
32
- based_on: Optional[List[ReflectFact]] = None
33
+ based_on: Optional[ReflectBasedOn] = None
33
34
  structured_output: Optional[Dict[str, Any]] = None
34
35
  usage: Optional[TokenUsage] = None
35
- __properties: ClassVar[List[str]] = ["text", "based_on", "structured_output", "usage"]
36
+ trace: Optional[ReflectTrace] = None
37
+ __properties: ClassVar[List[str]] = ["text", "based_on", "structured_output", "usage", "trace"]
36
38
 
37
39
  model_config = ConfigDict(
38
40
  populate_by_name=True,
@@ -73,16 +75,20 @@ class ReflectResponse(BaseModel):
73
75
  exclude=excluded_fields,
74
76
  exclude_none=True,
75
77
  )
76
- # override the default output from pydantic by calling `to_dict()` of each item in based_on (list)
77
- _items = []
78
+ # override the default output from pydantic by calling `to_dict()` of based_on
78
79
  if self.based_on:
79
- for _item_based_on in self.based_on:
80
- if _item_based_on:
81
- _items.append(_item_based_on.to_dict())
82
- _dict['based_on'] = _items
80
+ _dict['based_on'] = self.based_on.to_dict()
83
81
  # override the default output from pydantic by calling `to_dict()` of usage
84
82
  if self.usage:
85
83
  _dict['usage'] = self.usage.to_dict()
84
+ # override the default output from pydantic by calling `to_dict()` of trace
85
+ if self.trace:
86
+ _dict['trace'] = self.trace.to_dict()
87
+ # set to None if based_on (nullable) is None
88
+ # and model_fields_set contains the field
89
+ if self.based_on is None and "based_on" in self.model_fields_set:
90
+ _dict['based_on'] = None
91
+
86
92
  # set to None if structured_output (nullable) is None
87
93
  # and model_fields_set contains the field
88
94
  if self.structured_output is None and "structured_output" in self.model_fields_set:
@@ -93,6 +99,11 @@ class ReflectResponse(BaseModel):
93
99
  if self.usage is None and "usage" in self.model_fields_set:
94
100
  _dict['usage'] = None
95
101
 
102
+ # set to None if trace (nullable) is None
103
+ # and model_fields_set contains the field
104
+ if self.trace is None and "trace" in self.model_fields_set:
105
+ _dict['trace'] = None
106
+
96
107
  return _dict
97
108
 
98
109
  @classmethod
@@ -106,9 +117,10 @@ class ReflectResponse(BaseModel):
106
117
 
107
118
  _obj = cls.model_validate({
108
119
  "text": obj.get("text"),
109
- "based_on": [ReflectFact.from_dict(_item) for _item in obj["based_on"]] if obj.get("based_on") is not None else None,
120
+ "based_on": ReflectBasedOn.from_dict(obj["based_on"]) if obj.get("based_on") is not None else None,
110
121
  "structured_output": obj.get("structured_output"),
111
- "usage": TokenUsage.from_dict(obj["usage"]) if obj.get("usage") is not None else None
122
+ "usage": TokenUsage.from_dict(obj["usage"]) if obj.get("usage") is not None else None,
123
+ "trace": ReflectTrace.from_dict(obj["trace"]) if obj.get("trace") is not None else None
112
124
  })
113
125
  return _obj
114
126
 
@@ -0,0 +1,100 @@
1
+ # coding: utf-8
2
+
3
+ """
4
+ Hindsight HTTP API
5
+
6
+ HTTP API for Hindsight
7
+
8
+ The version of the OpenAPI document: 0.4.0
9
+ Generated by OpenAPI Generator (https://openapi-generator.tech)
10
+
11
+ Do not edit the class manually.
12
+ """ # noqa: E501
13
+
14
+
15
+ from __future__ import annotations
16
+ import pprint
17
+ import re # noqa: F401
18
+ import json
19
+
20
+ from pydantic import BaseModel, ConfigDict, Field, StrictInt, StrictStr
21
+ from typing import Any, ClassVar, Dict, List, Optional
22
+ from typing import Optional, Set
23
+ from typing_extensions import Self
24
+
25
+ class ReflectToolCall(BaseModel):
26
+ """
27
+ A tool call made during reflect agent execution.
28
+ """ # noqa: E501
29
+ tool: StrictStr = Field(description="Tool name: lookup, recall, learn, expand")
30
+ input: Dict[str, Any] = Field(description="Tool input parameters")
31
+ output: Optional[Dict[str, Any]] = None
32
+ duration_ms: StrictInt = Field(description="Execution time in milliseconds")
33
+ iteration: Optional[StrictInt] = Field(default=0, description="Iteration number (1-based) when this tool was called")
34
+ __properties: ClassVar[List[str]] = ["tool", "input", "output", "duration_ms", "iteration"]
35
+
36
+ model_config = ConfigDict(
37
+ populate_by_name=True,
38
+ validate_assignment=True,
39
+ protected_namespaces=(),
40
+ )
41
+
42
+
43
+ def to_str(self) -> str:
44
+ """Returns the string representation of the model using alias"""
45
+ return pprint.pformat(self.model_dump(by_alias=True))
46
+
47
+ def to_json(self) -> str:
48
+ """Returns the JSON representation of the model using alias"""
49
+ # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead
50
+ return json.dumps(self.to_dict())
51
+
52
+ @classmethod
53
+ def from_json(cls, json_str: str) -> Optional[Self]:
54
+ """Create an instance of ReflectToolCall from a JSON string"""
55
+ return cls.from_dict(json.loads(json_str))
56
+
57
+ def to_dict(self) -> Dict[str, Any]:
58
+ """Return the dictionary representation of the model using alias.
59
+
60
+ This has the following differences from calling pydantic's
61
+ `self.model_dump(by_alias=True)`:
62
+
63
+ * `None` is only added to the output dict for nullable fields that
64
+ were set at model initialization. Other fields with value `None`
65
+ are ignored.
66
+ """
67
+ excluded_fields: Set[str] = set([
68
+ ])
69
+
70
+ _dict = self.model_dump(
71
+ by_alias=True,
72
+ exclude=excluded_fields,
73
+ exclude_none=True,
74
+ )
75
+ # set to None if output (nullable) is None
76
+ # and model_fields_set contains the field
77
+ if self.output is None and "output" in self.model_fields_set:
78
+ _dict['output'] = None
79
+
80
+ return _dict
81
+
82
+ @classmethod
83
+ def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]:
84
+ """Create an instance of ReflectToolCall from a dict"""
85
+ if obj is None:
86
+ return None
87
+
88
+ if not isinstance(obj, dict):
89
+ return cls.model_validate(obj)
90
+
91
+ _obj = cls.model_validate({
92
+ "tool": obj.get("tool"),
93
+ "input": obj.get("input"),
94
+ "output": obj.get("output"),
95
+ "duration_ms": obj.get("duration_ms"),
96
+ "iteration": obj.get("iteration") if obj.get("iteration") is not None else 0
97
+ })
98
+ return _obj
99
+
100
+
@@ -0,0 +1,105 @@
1
+ # coding: utf-8
2
+
3
+ """
4
+ Hindsight HTTP API
5
+
6
+ HTTP API for Hindsight
7
+
8
+ The version of the OpenAPI document: 0.4.0
9
+ Generated by OpenAPI Generator (https://openapi-generator.tech)
10
+
11
+ Do not edit the class manually.
12
+ """ # noqa: E501
13
+
14
+
15
+ from __future__ import annotations
16
+ import pprint
17
+ import re # noqa: F401
18
+ import json
19
+
20
+ from pydantic import BaseModel, ConfigDict, Field
21
+ from typing import Any, ClassVar, Dict, List, Optional
22
+ from hindsight_client_api.models.reflect_llm_call import ReflectLLMCall
23
+ from hindsight_client_api.models.reflect_tool_call import ReflectToolCall
24
+ from typing import Optional, Set
25
+ from typing_extensions import Self
26
+
27
+ class ReflectTrace(BaseModel):
28
+ """
29
+ Execution trace of LLM and tool calls during reflection.
30
+ """ # noqa: E501
31
+ tool_calls: Optional[List[ReflectToolCall]] = Field(default=None, description="Tool calls made during reflection")
32
+ llm_calls: Optional[List[ReflectLLMCall]] = Field(default=None, description="LLM calls made during reflection")
33
+ __properties: ClassVar[List[str]] = ["tool_calls", "llm_calls"]
34
+
35
+ model_config = ConfigDict(
36
+ populate_by_name=True,
37
+ validate_assignment=True,
38
+ protected_namespaces=(),
39
+ )
40
+
41
+
42
+ def to_str(self) -> str:
43
+ """Returns the string representation of the model using alias"""
44
+ return pprint.pformat(self.model_dump(by_alias=True))
45
+
46
+ def to_json(self) -> str:
47
+ """Returns the JSON representation of the model using alias"""
48
+ # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead
49
+ return json.dumps(self.to_dict())
50
+
51
+ @classmethod
52
+ def from_json(cls, json_str: str) -> Optional[Self]:
53
+ """Create an instance of ReflectTrace from a JSON string"""
54
+ return cls.from_dict(json.loads(json_str))
55
+
56
+ def to_dict(self) -> Dict[str, Any]:
57
+ """Return the dictionary representation of the model using alias.
58
+
59
+ This has the following differences from calling pydantic's
60
+ `self.model_dump(by_alias=True)`:
61
+
62
+ * `None` is only added to the output dict for nullable fields that
63
+ were set at model initialization. Other fields with value `None`
64
+ are ignored.
65
+ """
66
+ excluded_fields: Set[str] = set([
67
+ ])
68
+
69
+ _dict = self.model_dump(
70
+ by_alias=True,
71
+ exclude=excluded_fields,
72
+ exclude_none=True,
73
+ )
74
+ # override the default output from pydantic by calling `to_dict()` of each item in tool_calls (list)
75
+ _items = []
76
+ if self.tool_calls:
77
+ for _item_tool_calls in self.tool_calls:
78
+ if _item_tool_calls:
79
+ _items.append(_item_tool_calls.to_dict())
80
+ _dict['tool_calls'] = _items
81
+ # override the default output from pydantic by calling `to_dict()` of each item in llm_calls (list)
82
+ _items = []
83
+ if self.llm_calls:
84
+ for _item_llm_calls in self.llm_calls:
85
+ if _item_llm_calls:
86
+ _items.append(_item_llm_calls.to_dict())
87
+ _dict['llm_calls'] = _items
88
+ return _dict
89
+
90
+ @classmethod
91
+ def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]:
92
+ """Create an instance of ReflectTrace from a dict"""
93
+ if obj is None:
94
+ return None
95
+
96
+ if not isinstance(obj, dict):
97
+ return cls.model_validate(obj)
98
+
99
+ _obj = cls.model_validate({
100
+ "tool_calls": [ReflectToolCall.from_dict(_item) for _item in obj["tool_calls"]] if obj.get("tool_calls") is not None else None,
101
+ "llm_calls": [ReflectLLMCall.from_dict(_item) for _item in obj["llm_calls"]] if obj.get("llm_calls") is not None else None
102
+ })
103
+ return _obj
104
+
105
+
@@ -5,7 +5,7 @@
5
5
 
6
6
  HTTP API for Hindsight
7
7
 
8
- The version of the OpenAPI document: 0.1.0
8
+ The version of the OpenAPI document: 0.4.0
9
9
  Generated by OpenAPI Generator (https://openapi-generator.tech)
10
10
 
11
11
  Do not edit the class manually.
@@ -5,7 +5,7 @@
5
5
 
6
6
  HTTP API for Hindsight
7
7
 
8
- The version of the OpenAPI document: 0.1.0
8
+ The version of the OpenAPI document: 0.4.0
9
9
  Generated by OpenAPI Generator (https://openapi-generator.tech)
10
10
 
11
11
  Do not edit the class manually.
@@ -5,7 +5,7 @@
5
5
 
6
6
  HTTP API for Hindsight
7
7
 
8
- The version of the OpenAPI document: 0.1.0
8
+ The version of the OpenAPI document: 0.4.0
9
9
  Generated by OpenAPI Generator (https://openapi-generator.tech)
10
10
 
11
11
  Do not edit the class manually.
@@ -5,7 +5,7 @@
5
5
 
6
6
  HTTP API for Hindsight
7
7
 
8
- The version of the OpenAPI document: 0.1.0
8
+ The version of the OpenAPI document: 0.4.0
9
9
  Generated by OpenAPI Generator (https://openapi-generator.tech)
10
10
 
11
11
  Do not edit the class manually.
@@ -0,0 +1,87 @@
1
+ # coding: utf-8
2
+
3
+ """
4
+ Hindsight HTTP API
5
+
6
+ HTTP API for Hindsight
7
+
8
+ The version of the OpenAPI document: 0.4.0
9
+ Generated by OpenAPI Generator (https://openapi-generator.tech)
10
+
11
+ Do not edit the class manually.
12
+ """ # noqa: E501
13
+
14
+
15
+ from __future__ import annotations
16
+ import pprint
17
+ import re # noqa: F401
18
+ import json
19
+
20
+ from pydantic import BaseModel, ConfigDict, Field, StrictBool
21
+ from typing import Any, ClassVar, Dict, List, Optional
22
+ from typing import Optional, Set
23
+ from typing_extensions import Self
24
+
25
+ class ToolCallsIncludeOptions(BaseModel):
26
+ """
27
+ Options for including tool calls in reflect results.
28
+ """ # noqa: E501
29
+ output: Optional[StrictBool] = Field(default=True, description="Include tool outputs in the trace. Set to false to only include inputs (smaller payload).")
30
+ __properties: ClassVar[List[str]] = ["output"]
31
+
32
+ model_config = ConfigDict(
33
+ populate_by_name=True,
34
+ validate_assignment=True,
35
+ protected_namespaces=(),
36
+ )
37
+
38
+
39
+ def to_str(self) -> str:
40
+ """Returns the string representation of the model using alias"""
41
+ return pprint.pformat(self.model_dump(by_alias=True))
42
+
43
+ def to_json(self) -> str:
44
+ """Returns the JSON representation of the model using alias"""
45
+ # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead
46
+ return json.dumps(self.to_dict())
47
+
48
+ @classmethod
49
+ def from_json(cls, json_str: str) -> Optional[Self]:
50
+ """Create an instance of ToolCallsIncludeOptions from a JSON string"""
51
+ return cls.from_dict(json.loads(json_str))
52
+
53
+ def to_dict(self) -> Dict[str, Any]:
54
+ """Return the dictionary representation of the model using alias.
55
+
56
+ This has the following differences from calling pydantic's
57
+ `self.model_dump(by_alias=True)`:
58
+
59
+ * `None` is only added to the output dict for nullable fields that
60
+ were set at model initialization. Other fields with value `None`
61
+ are ignored.
62
+ """
63
+ excluded_fields: Set[str] = set([
64
+ ])
65
+
66
+ _dict = self.model_dump(
67
+ by_alias=True,
68
+ exclude=excluded_fields,
69
+ exclude_none=True,
70
+ )
71
+ return _dict
72
+
73
+ @classmethod
74
+ def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]:
75
+ """Create an instance of ToolCallsIncludeOptions from a dict"""
76
+ if obj is None:
77
+ return None
78
+
79
+ if not isinstance(obj, dict):
80
+ return cls.model_validate(obj)
81
+
82
+ _obj = cls.model_validate({
83
+ "output": obj.get("output") if obj.get("output") is not None else True
84
+ })
85
+ return _obj
86
+
87
+