construct-labs-crm-env 0.1.3__tar.gz → 0.1.5__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.
- {construct_labs_crm_env-0.1.3 → construct_labs_crm_env-0.1.5}/PKG-INFO +1 -1
- {construct_labs_crm_env-0.1.3 → construct_labs_crm_env-0.1.5}/pyproject.toml +1 -1
- {construct_labs_crm_env-0.1.3 → construct_labs_crm_env-0.1.5}/src/construct_labs_crm_env/client.py +62 -16
- construct_labs_crm_env-0.1.5/src/construct_labs_crm_env/tools.py +697 -0
- construct_labs_crm_env-0.1.3/src/construct_labs_crm_env/tools.py +0 -611
- {construct_labs_crm_env-0.1.3 → construct_labs_crm_env-0.1.5}/.gitignore +0 -0
- {construct_labs_crm_env-0.1.3 → construct_labs_crm_env-0.1.5}/LICENSE +0 -0
- {construct_labs_crm_env-0.1.3 → construct_labs_crm_env-0.1.5}/README.md +0 -0
- {construct_labs_crm_env-0.1.3 → construct_labs_crm_env-0.1.5}/src/construct_labs_crm_env/__init__.py +0 -0
- {construct_labs_crm_env-0.1.3 → construct_labs_crm_env-0.1.5}/src/construct_labs_crm_env/models.py +0 -0
- {construct_labs_crm_env-0.1.3 → construct_labs_crm_env-0.1.5}/src/construct_labs_crm_env/protocol.py +0 -0
- {construct_labs_crm_env-0.1.3 → construct_labs_crm_env-0.1.5}/src/construct_labs_crm_env/py.typed +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: construct-labs-crm-env
|
|
3
|
-
Version: 0.1.
|
|
3
|
+
Version: 0.1.5
|
|
4
4
|
Summary: CRM Agent Environment SDK by Construct Labs - Train RL agents to interact with CRM systems
|
|
5
5
|
Project-URL: Homepage, https://construct-labs.com
|
|
6
6
|
Author-email: Construct Labs GmbH <hello@construct-labs.com>
|
|
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "construct-labs-crm-env"
|
|
7
|
-
version = "0.1.
|
|
7
|
+
version = "0.1.5"
|
|
8
8
|
description = "CRM Agent Environment SDK by Construct Labs - Train RL agents to interact with CRM systems"
|
|
9
9
|
readme = "README.md"
|
|
10
10
|
license = { text = "Proprietary" }
|
{construct_labs_crm_env-0.1.3 → construct_labs_crm_env-0.1.5}/src/construct_labs_crm_env/client.py
RENAMED
|
@@ -228,38 +228,84 @@ class CrmAgentEnv(EnvClient[CrmAgentAction, CrmAgentObservation, CrmAgentState])
|
|
|
228
228
|
"""
|
|
229
229
|
return """You are a tool-using agent interacting with a CRM (Customer Relationship Management) system.
|
|
230
230
|
|
|
231
|
-
GOAL
|
|
231
|
+
## GOAL
|
|
232
232
|
|
|
233
|
-
|
|
234
|
-
- Companies: list, get, create, update, delete
|
|
235
|
-
- People/Contacts: list, get, create, update, delete
|
|
236
|
-
- Opportunities: list, get, create, update, delete
|
|
237
|
-
- Notes: list, create (attach to companies, people, or opportunities)
|
|
238
|
-
- Tasks: list, create, update, complete
|
|
233
|
+
Complete CRM tasks by creating, updating, retrieving, and managing business data.
|
|
239
234
|
|
|
240
|
-
|
|
235
|
+
## DATA MODEL
|
|
241
236
|
|
|
242
|
-
|
|
237
|
+
- Companies: Organizations you do business with
|
|
238
|
+
- People: Contacts who work at companies (linked via person_company_id)
|
|
239
|
+
- Opportunities: Sales deals linked to a company and a person (point of contact)
|
|
240
|
+
- Notes: Free-text records attached to any company, person, or opportunity
|
|
241
|
+
- Tasks: Action items with due dates, attached to any company, person, or opportunity
|
|
242
|
+
|
|
243
|
+
## AVAILABLE TOOLS
|
|
244
|
+
|
|
245
|
+
- Companies: list_companies, get_company, create_company, update_company, delete_company
|
|
246
|
+
- People: list_people, get_person, create_person, update_person, delete_person
|
|
247
|
+
- Opportunities: list_opportunities, get_opportunity, create_opportunity, update_opportunity, delete_opportunity
|
|
248
|
+
- Notes: list_notes, create_note
|
|
249
|
+
- Tasks: list_tasks, create_task, update_task, complete_task
|
|
250
|
+
- Answer: submit_answer
|
|
251
|
+
|
|
252
|
+
## FILTERING AND PAGINATION
|
|
253
|
+
|
|
254
|
+
Use the filter parameter to search records. Format: field[comparator]:value
|
|
255
|
+
|
|
256
|
+
Comparators: eq, neq, gt, gte, lt, lte, ilike (case-insensitive like), in, is, startsWith, containsAny
|
|
257
|
+
|
|
258
|
+
Examples:
|
|
259
|
+
- name[ilike]:"%acme%" - names containing "acme"
|
|
260
|
+
- stage[eq]:"WON" - opportunities with stage WON
|
|
261
|
+
- amount[gte]:10000 - deals worth $10,000 or more
|
|
262
|
+
- createdAt[gte]:"2026-01-01" - records created this year
|
|
263
|
+
- deletedAt[is]:NULL - non-deleted records
|
|
264
|
+
|
|
265
|
+
Rules: Quote strings and dates. Do not quote numbers. Combine with comma for AND: field1[eq]:"a",field2[gt]:5
|
|
266
|
+
|
|
267
|
+
Pagination: Results return max 60 records. Use starting_after with the endCursor from pageInfo to get more.
|
|
268
|
+
|
|
269
|
+
## WORKFLOW
|
|
270
|
+
|
|
271
|
+
For complex tasks, make multiple tool calls:
|
|
272
|
+
1. First, list or search to find relevant records
|
|
273
|
+
2. Then, get details or create/update as needed
|
|
274
|
+
3. Finally, call submit_answer with your findings
|
|
275
|
+
|
|
276
|
+
## OUTPUT FORMAT
|
|
277
|
+
|
|
278
|
+
Think briefly about which tool to use, then output exactly one tool call:
|
|
279
|
+
<tool_call>
|
|
280
|
+
{"name": "tool_name", "arguments": {...}}
|
|
281
|
+
</tool_call>
|
|
282
|
+
|
|
283
|
+
## EXAMPLES
|
|
284
|
+
|
|
285
|
+
List companies:
|
|
243
286
|
<tool_call>
|
|
244
287
|
{"name": "list_companies", "arguments": {"limit": 10}}
|
|
245
288
|
</tool_call>
|
|
246
289
|
|
|
247
|
-
|
|
290
|
+
Find companies by name:
|
|
248
291
|
<tool_call>
|
|
249
|
-
{"name": "
|
|
292
|
+
{"name": "list_companies", "arguments": {"filter": "name[ilike]:\"%tech%\""}}
|
|
250
293
|
</tool_call>
|
|
251
294
|
|
|
252
|
-
|
|
295
|
+
Create a company:
|
|
253
296
|
<tool_call>
|
|
254
|
-
{"name": "
|
|
297
|
+
{"name": "create_company", "arguments": {"company_name": "Acme Corp", "company_domain": "acme.com"}}
|
|
255
298
|
</tool_call>
|
|
256
299
|
|
|
257
|
-
|
|
300
|
+
Create a contact linked to a company:
|
|
258
301
|
<tool_call>
|
|
259
|
-
{"name": "
|
|
302
|
+
{"name": "create_person", "arguments": {"person_first_name": "John", "person_last_name": "Doe", "person_email": "john@acme.com", "person_company_id": "company-uuid-here"}}
|
|
260
303
|
</tool_call>
|
|
261
304
|
|
|
262
|
-
|
|
305
|
+
Submit final answer:
|
|
306
|
+
<tool_call>
|
|
307
|
+
{"name": "submit_answer", "arguments": {"answer": "The total pipeline value is $1.5M across 12 open opportunities."}}
|
|
308
|
+
</tool_call>"""
|
|
263
309
|
|
|
264
310
|
@property
|
|
265
311
|
def tools(self) -> list[JsonDict]:
|