Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
90 commits
Select commit Hold shift + click to select a range
a0fb309
Added autogenerated async client
IgorChvyrov-sm Aug 5, 2025
f53be3f
Added base model adapters
IgorChvyrov-sm Aug 5, 2025
6f77bbb
Updated ruff rules to ignore autogenerated code
IgorChvyrov-sm Aug 5, 2025
81e9fa3
Added base api client adapters
IgorChvyrov-sm Aug 5, 2025
9d6c8a9
Fix imports
IgorChvyrov-sm Aug 5, 2025
883829d
Regenerated api clients to remove /api/
IgorChvyrov-sm Aug 5, 2025
b1a5ef3
Refactor imports
IgorChvyrov-sm Aug 5, 2025
491199b
Implemented Orkes clients
IgorChvyrov-sm Aug 6, 2025
48edf01
Refactoring: run ruff linter
IgorChvyrov-sm Aug 6, 2025
fb2ac48
Added Configuration adapter
IgorChvyrov-sm Aug 6, 2025
6bbe71f
Refactoring: replaced generated Config with adapter
IgorChvyrov-sm Aug 6, 2025
eaaafbe
Refactoring: code cleanup
IgorChvyrov-sm Aug 6, 2025
bf62283
Revert accidental changes in sync client
IgorChvyrov-sm Aug 6, 2025
13bf3f8
Refactoring: replaced API with APIAdapters in OrkesBaseClient
IgorChvyrov-sm Aug 7, 2025
bfd410a
Added async scheduler, schema, secret, task and workflow clients tests
IgorChvyrov-sm Aug 7, 2025
15a3a24
Added async authorization, integration, metadata, prompt clients test…
IgorChvyrov-sm Aug 7, 2025
4c57b88
Models refactoring pt.1
IgorChvyrov-sm Aug 8, 2025
a4f3124
Models refactoring pt.2
IgorChvyrov-sm Aug 8, 2025
eb7c58c
Models refactoring pt.3
IgorChvyrov-sm Aug 9, 2025
17a5520
Models refactoring pt.4
IgorChvyrov-sm Aug 10, 2025
7ff26b3
Models refactoring pt.5
IgorChvyrov-sm Aug 10, 2025
4d5ee40
Make pydatic test package blank
IgorChvyrov-sm Aug 10, 2025
07e0a81
Implementing test suite for Pydantic model adapters pt.1
IgorChvyrov-sm Aug 10, 2025
cd1a8c7
Models tests
IgorChvyrov-sm Aug 10, 2025
cb9fc88
Config refactoring
IgorChvyrov-sm Aug 11, 2025
29e63e3
Revert "Config refactoring"
IgorChvyrov-sm Aug 11, 2025
dfaa8fc
Refactor: move AuthenticationSettings MetricsSettings to shared
IgorChvyrov-sm Aug 11, 2025
ddeb1b6
Added telemetry client
IgorChvyrov-sm Aug 12, 2025
25cd24c
Added event client
IgorChvyrov-sm Aug 12, 2025
4d4fdd3
Added worflow client
IgorChvyrov-sm Aug 12, 2025
ccef7b0
Added ai automator worker clients
IgorChvyrov-sm Aug 12, 2025
07b19d0
Refactor: imports
IgorChvyrov-sm Aug 12, 2025
df95dd9
Refactor: ruff fixes
IgorChvyrov-sm Aug 12, 2025
5edc05c
Refactor: linting and formatting
IgorChvyrov-sm Aug 12, 2025
8411762
Refactor: imports
IgorChvyrov-sm Aug 12, 2025
fd825b4
Merge branch 'feature_async_client' into feature_async_client_pt2
IgorChvyrov-sm Aug 12, 2025
2e346e1
Tests: automator, kafka_publish input
IgorChvyrov-sm Aug 12, 2025
b280138
Test: add event client test
IgorChvyrov-sm Aug 12, 2025
8751122
Test: add ai orchestrator test
IgorChvyrov-sm Aug 12, 2025
7d13871
Test: add workflow tests
IgorChvyrov-sm Aug 12, 2025
91b8a10
Test: metrics collector test
IgorChvyrov-sm Aug 12, 2025
46e2153
Test: event and worker tests
IgorChvyrov-sm Aug 12, 2025
a6775bb
Fix imports
IgorChvyrov-sm Aug 13, 2025
ebde4df
Fix tests
IgorChvyrov-sm Aug 13, 2025
81abca1
Fixed dynamic workflow example (resource api manual change)
IgorChvyrov-sm Aug 14, 2025
bdc65fb
Fixing circular imports pt.1
IgorChvyrov-sm Aug 14, 2025
81ac744
Fixing circular imports pt.2
IgorChvyrov-sm Aug 14, 2025
6d1d34e
Fixing circular imports pt.3
IgorChvyrov-sm Aug 14, 2025
e1e8c5d
Refactor: Update Orkes clients to take api_client as argument
IgorChvyrov-sm Aug 14, 2025
a943651
Refactor: resolving annotations
IgorChvyrov-sm Aug 15, 2025
bf63b20
Refactor: orkes clients
IgorChvyrov-sm Aug 15, 2025
18d7d96
Async helloworld example
IgorChvyrov-sm Aug 17, 2025
c8090a7
Async workflow examples
IgorChvyrov-sm Aug 18, 2025
40c306e
Added orkes examples
IgorChvyrov-sm Aug 18, 2025
3e9be6a
Added fixes and missed orkes examples
IgorChvyrov-sm Aug 18, 2025
8be7a34
Added missed from prev commit
IgorChvyrov-sm Aug 18, 2025
a210d3b
Introduced ApiClientAdapter
IgorChvyrov-sm Aug 19, 2025
f58956a
Revert manual api client changes and moved it to adapter
IgorChvyrov-sm Aug 19, 2025
d62e8c6
Added JWT obtaining logic
IgorChvyrov-sm Aug 19, 2025
b975f6c
Fixed tests and ruff linter errors
IgorChvyrov-sm Aug 19, 2025
4673c34
Added adapters/ package to client/
IgorChvyrov-sm Aug 21, 2025
d0ea461
Added missing endpoints
IgorChvyrov-sm Aug 22, 2025
1648c81
Added api client adapters
IgorChvyrov-sm Aug 22, 2025
4960884
Api clients refactoring
IgorChvyrov-sm Aug 22, 2025
5441875
Added missing tags api
IgorChvyrov-sm Aug 22, 2025
430b70f
Updating swagger-codegen models pt.1
IgorChvyrov-sm Aug 25, 2025
680ba4f
Merge remote-tracking branch 'origin/refactoring_separate_generated_c…
IgorChvyrov-sm Aug 25, 2025
440def9
Updating swagger-codegen models pt.2
IgorChvyrov-sm Aug 25, 2025
208a82d
Serdeser tests refactoring
IgorChvyrov-sm Aug 25, 2025
924aafe
bacward compatibility and unit tests
IgorChvyrov-sm Aug 25, 2025
7537545
Fixed imports
IgorChvyrov-sm Aug 26, 2025
ea91692
Added integrations tests
IgorChvyrov-sm Aug 27, 2025
2efd703
Updated workflow integration test to make long running workflow
IgorChvyrov-sm Aug 27, 2025
11e7fb9
Added pytest markers for orkes
IgorChvyrov-sm Aug 27, 2025
0f0c658
Added conductor oss marker
IgorChvyrov-sm Aug 27, 2025
6f00cef
Test fixes
IgorChvyrov-sm Aug 28, 2025
caad2d5
Merge branch 'main' into refactoring_separate_generated_code
IgorChvyrov-sm Aug 28, 2025
e55f62d
Added integration tests as a CI step
IgorChvyrov-sm Aug 28, 2025
e3939dd
Fix coverage ignore
IgorChvyrov-sm Aug 28, 2025
d5d8ded
Update READMEs
IgorChvyrov-sm Aug 28, 2025
b36e33b
Refactor ci
IgorChvyrov-sm Aug 28, 2025
c58737a
Added proxy package to achive backward comaptibility
IgorChvyrov-sm Aug 29, 2025
494ca43
Fix imports in backward compatibility tests
IgorChvyrov-sm Sep 1, 2025
e140b8c
Code refactoring
IgorChvyrov-sm Sep 1, 2025
8155c90
Schedule model refactoring
IgorChvyrov-sm Sep 1, 2025
c8512f1
Ruff linter fixes
IgorChvyrov-sm Sep 1, 2025
679b6f9
Added tests grouping
IgorChvyrov-sm Sep 5, 2025
e1e198d
Added mds with client regeneration guide
IgorChvyrov-sm Sep 11, 2025
b05e395
Refactoring improve sdk logging (#328)
IgorChvyrov-sm Sep 17, 2025
408ce7c
Fix unit tests
IgorChvyrov-sm Sep 17, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
12 changes: 12 additions & 0 deletions .github/workflows/pull_request.yml
Original file line number Diff line number Diff line change
Expand Up @@ -68,6 +68,18 @@ jobs:
conductor-sdk-test:latest \
/bin/sh -c "cd /package && COVERAGE_FILE=/package/${{ env.COVERAGE_DIR }}/.coverage.serdeser coverage run -m pytest tests/serdesertest -v"

- name: Run integration tests
id: integration_tests
continue-on-error: true
run: |
docker run --rm \
-e CONDUCTOR_AUTH_KEY=${{ env.CONDUCTOR_AUTH_KEY }} \
-e CONDUCTOR_AUTH_SECRET=${{ env.CONDUCTOR_AUTH_SECRET }} \
-e CONDUCTOR_SERVER_URL=${{ env.CONDUCTOR_SERVER_URL }} \
-v ${{ github.workspace }}/${{ env.COVERAGE_DIR }}:/package/${{ env.COVERAGE_DIR }}:rw \
conductor-sdk-test:latest \
/bin/sh -c "cd /package && COVERAGE_FILE=/package/${{ env.COVERAGE_DIR }}/.coverage.integration coverage run -m pytest -m v4 tests/integration -v"

- name: Generate coverage report
id: coverage_report
continue-on-error: true
Expand Down
2 changes: 0 additions & 2 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -161,8 +161,6 @@ latest.txt

*.so

codegen/

.vscode/
tests/unit/automator/_trial_temp/_trial_marker
tests/unit/automator/_trial_temp/_trial_marker
33 changes: 33 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -82,6 +82,10 @@ Show support for the Conductor OSS. Please help spread the awareness by starrin
- [Example Unit Testing Application](#example-unit-testing-application)
- [Workflow Deployments Using CI/CD](#workflow-deployments-using-cicd)
- [Versioning Workflows](#versioning-workflows)
- [Development](#development)
- [Client Regeneration](#client-regeneration)
- [Sync Client Regeneration](#sync-client-regeneration)
- [Async Client Regeneration](#async-client-regeneration)

<!-- END doctoc generated TOC please keep comment here to allow auto update -->

Expand Down Expand Up @@ -929,3 +933,32 @@ A powerful feature of Conductor is the ability to version workflows. You should

* Versioning allows safely testing changes by doing canary testing in production or A/B testing across multiple versions before rolling out.
* A version can also be deleted, effectively allowing for "rollback" if required.


## Development

### Client Regeneration

When updating to a new Orkes version, you may need to regenerate the client code to support new APIs and features. The SDK provides comprehensive guides for regenerating both sync and async clients:

#### Sync Client Regeneration

For the synchronous client (`conductor.client`), see the [Client Regeneration Guide](src/conductor/client/CLIENT_REGENERATION_GUIDE.md) which covers:

- Creating swagger.json files for new Orkes versions
- Generating client code using Swagger Codegen
- Replacing models and API clients in the codegen folder
- Creating adapters and updating the proxy package
- Running backward compatibility, serialization, and integration tests

#### Async Client Regeneration

For the asynchronous client (`conductor.asyncio_client`), see the [Async Client Regeneration Guide](src/conductor/asyncio_client/ASYNC_CLIENT_REGENERATION_GUIDE.md) which covers:

- Creating swagger.json files for new Orkes versions
- Generating async client code using OpenAPI Generator
- Replacing models and API clients in the http folder
- Creating adapters for backward compatibility
- Running async-specific tests and handling breaking changes

Both guides include detailed troubleshooting sections, best practices, and step-by-step instructions to ensure a smooth regeneration process while maintaining backward compatibility.
15 changes: 6 additions & 9 deletions docs/authorization/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ authorization_client = OrkesAuthorizationClient(configuration)
Creates an application and returns a ConductorApplication object.

```python
from conductor.client.http.models.create_or_update_application_request import CreateOrUpdateApplicationRequest
from conductor.client.http.models import CreateOrUpdateApplicationRequest
from conductor.client.orkes.orkes_authorization_client import OrkesAuthorizationClient
from conductor.client.configuration.configuration import Configuration

Expand Down Expand Up @@ -138,7 +138,7 @@ Creates or updates a user and returns a ConductorUser object.

```python
from conductor.client.http.models.upsert_user_request import UpsertUserRequest
from conductor.client.http.models.conductor_user import ConductorUser
from conductor.client.http.models import ConductorUser

user_id = 'test.user@company.com'
user_name = "Test User"
Expand Down Expand Up @@ -171,8 +171,7 @@ authorization_client.delete_user(user_id)
Creates or updates a user group and returns a Group object.

```python
from conductor.client.http.models.upsert_group_request import UpsertGroupRequest
from conductor.client.http.models.group import Group
from conductor.client.http.models import UpsertGroupRequest, Group

group_id = 'test_group'
group_name = "Test Group"
Expand Down Expand Up @@ -225,9 +224,8 @@ authorization_client.remove_user_from_group(group_id, user_id)
Grants a set of accesses to the specified Subject for a given Target.

```python
from conductor.client.http.models.target_ref import TargetRef
from conductor.client.http.models import TargetRef, SubjectRef
from conductor.shared.http.enums.target_type import TargetType
from conductor.client.http.models.subject_ref import SubjectRef
from conductor.shared.http.enums.subject_type import SubjectType
from conductor.client.orkes.models.access_type import AccessType

Expand All @@ -247,7 +245,7 @@ Given the target, returns all permissions associated with it as a Dict[str, List
In the returned dictionary, key is AccessType and value is a list of subjects.

```python
from conductor.client.http.models.target_ref import TargetRef
from conductor.client.http.models import TargetRef
from conductor.shared.http.enums.target_type import TargetType

target = TargetRef(TargetType.WORKFLOW_DEF, WORKFLOW_NAME)
Expand Down Expand Up @@ -276,9 +274,8 @@ user_permissions = authorization_client.get_granted_permissions_for_user(user_id
Removes a set of accesses from a specified Subject for a given Target.

```python
from conductor.client.http.models.target_ref import TargetRef
from conductor.client.http.models import TargetRef, SubjectRef
from conductor.shared.http.enums.target_type import TargetType
from conductor.client.http.models.subject_ref import SubjectRef
from conductor.shared.http.enums.subject_type import SubjectType
from conductor.client.orkes.models.access_type import AccessType

Expand Down
4 changes: 2 additions & 2 deletions docs/metadata/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -57,7 +57,7 @@ workflow.input_parameters(["a", "b"])
You should be able to register your workflow at the Conductor Server:

```python
from conductor.client.http.models.workflow_def import WorkflowDef
from conductor.client.http.models import WorkflowDef

workflowDef = workflow.to_workflow_def()
metadata_client.register_workflow_def(workflowDef, True)
Expand Down Expand Up @@ -98,7 +98,7 @@ metadata_client.unregister_workflow_def('python_workflow_example_from_code', 1)
You should be able to register your task at the Conductor Server:

```python
from conductor.client.http.models.task_def import TaskDef
from conductor.client.http.models import TaskDef

taskDef = TaskDef(
name="PYTHON_TASK",
Expand Down
3 changes: 1 addition & 2 deletions docs/schedule/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -21,8 +21,7 @@ scheduler_client = OrkesSchedulerClient(configuration)
### Saving Schedule

```python
from conductor.client.http.models.save_schedule_request import SaveScheduleRequest
from conductor.client.http.models.start_workflow_request import StartWorkflowRequest
from conductor.client.http.models import SaveScheduleRequest, StartWorkflowRequest

startWorkflowRequest = StartWorkflowRequest(
name="WORKFLOW_NAME", workflow_def=workflowDef
Expand Down
2 changes: 1 addition & 1 deletion docs/testing/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ A sample unit test code snippet is provided below.
import json
from conductor.shared.configuration.settings.authentication_settings import AuthenticationSettings
from conductor.client.configuration.configuration import Configuration
from conductor.client.http.models.workflow_test_request import WorkflowTestRequest
from conductor.client.http.models import WorkflowTestRequest
from conductor.client.orkes.orkes_workflow_client import OrkesWorkflowClient

TEST_WF_JSON_PATH = 'tests/integration/resources/test_data/calculate_loan_workflow.json'
Expand Down
3 changes: 1 addition & 2 deletions docs/worker/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -347,8 +347,7 @@ See [simple_cpp_lib.cpp](src/example/worker/cpp/simple_cpp_lib.cpp)
and [simple_cpp_worker.py](src/example/worker/cpp/simple_cpp_worker.py) for complete working example.

```python
from conductor.client.http.models.task import Task
from conductor.client.http.models.task_result import TaskResult
from conductor.client.http.models import Task, TaskResult
from conductor.shared.http.enums import TaskResultStatus
from conductor.client.worker.worker_interface import WorkerInterface
from ctypes import cdll
Expand Down
3 changes: 2 additions & 1 deletion examples/async/dynamic_workflow.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,9 +7,9 @@

import asyncio

from conductor.asyncio_client.adapters import ApiClient
from conductor.asyncio_client.automator.task_handler import TaskHandler
from conductor.asyncio_client.configuration.configuration import Configuration
from conductor.asyncio_client.adapters import ApiClient
from conductor.asyncio_client.orkes.orkes_clients import OrkesClients
from conductor.asyncio_client.worker.worker_task import worker_task
from conductor.asyncio_client.workflow.conductor_workflow import AsyncConductorWorkflow
Expand All @@ -31,6 +31,7 @@ async def main():
# CONDUCTOR_AUTH_KEY : API Authentication Key
# CONDUCTOR_AUTH_SECRET: API Auth Secret
api_config = Configuration()
api_config.apply_logging_config()
task_handler = TaskHandler(configuration=api_config)
task_handler.start_processes()

Expand Down
3 changes: 2 additions & 1 deletion examples/async/helloworld/helloworld.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,9 @@

from greetings_workflow import greetings_workflow

from conductor.asyncio_client.adapters import ApiClient
from conductor.asyncio_client.automator.task_handler import TaskHandler
from conductor.asyncio_client.configuration import Configuration
from conductor.asyncio_client.adapters import ApiClient
from conductor.asyncio_client.workflow.conductor_workflow import AsyncConductorWorkflow
from conductor.asyncio_client.workflow.executor.workflow_executor import (
AsyncWorkflowExecutor,
Expand All @@ -22,6 +22,7 @@ async def register_workflow(
async def main():
# points to http://localhost:8080/api by default
api_config = Configuration()
api_config.apply_logging_config()
async with ApiClient(api_config) as api_client:
workflow_executor = AsyncWorkflowExecutor(
configuration=api_config, api_client=api_client
Expand Down
3 changes: 2 additions & 1 deletion examples/async/kitchensink.py
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
import asyncio

from conductor.asyncio_client.adapters import ApiClient
from conductor.asyncio_client.automator.task_handler import TaskHandler
from conductor.asyncio_client.configuration.configuration import Configuration
from conductor.asyncio_client.adapters import ApiClient
from conductor.asyncio_client.orkes.orkes_clients import OrkesClients
from conductor.asyncio_client.worker.worker_task import worker_task
from conductor.asyncio_client.workflow.conductor_workflow import AsyncConductorWorkflow
Expand Down Expand Up @@ -33,6 +33,7 @@ def start_workers(api_config):

async def main():
api_config = Configuration()
api_config.apply_logging_config()

async with ApiClient(api_config) as api_client:
clients = OrkesClients(api_client=api_client, configuration=api_config)
Expand Down
3 changes: 2 additions & 1 deletion examples/async/orkes/copilot/open_ai_copilot.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,11 +5,11 @@
from dataclasses import dataclass
from typing import Dict, List

from conductor.asyncio_client.adapters import ApiClient
from conductor.asyncio_client.adapters.models import ExtendedTaskDef, TaskResult
from conductor.asyncio_client.ai.orchestrator import AsyncAIOrchestrator
from conductor.asyncio_client.automator.task_handler import TaskHandler
from conductor.asyncio_client.configuration.configuration import Configuration
from conductor.asyncio_client.adapters import ApiClient
from conductor.asyncio_client.http.models.workflow_state_update import (
WorkflowStateUpdate,
)
Expand Down Expand Up @@ -115,6 +115,7 @@ async def main():
llm_provider = "openai"
chat_complete_model = "gpt-5"
api_config = Configuration()
api_config.apply_logging_config()

async with ApiClient(api_config) as api_client:
clients = OrkesClients(api_client=api_client, configuration=api_config)
Expand Down
3 changes: 2 additions & 1 deletion examples/async/orkes/fork_join_script.py
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import asyncio

from conductor.asyncio_client.configuration import Configuration
from conductor.asyncio_client.adapters import ApiClient
from conductor.asyncio_client.configuration import Configuration
from conductor.asyncio_client.orkes.orkes_clients import OrkesClients
from conductor.asyncio_client.workflow.conductor_workflow import AsyncConductorWorkflow
from conductor.asyncio_client.workflow.task.fork_task import ForkTask
Expand All @@ -13,6 +13,7 @@

async def main():
api_config = Configuration()
api_config.apply_logging_config()
async with ApiClient(api_config) as api_client:
clients = OrkesClients(configuration=api_config, api_client=api_client)
executor = clients.get_workflow_executor()
Expand Down
3 changes: 2 additions & 1 deletion examples/async/orkes/http_poll.py
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
import asyncio
import uuid

from conductor.asyncio_client.configuration import Configuration
from conductor.asyncio_client.adapters import ApiClient
from conductor.asyncio_client.configuration import Configuration
from conductor.asyncio_client.orkes.orkes_clients import OrkesClients
from conductor.asyncio_client.workflow.conductor_workflow import AsyncConductorWorkflow
from conductor.asyncio_client.workflow.task.http_poll_task import HttpPollTask
Expand All @@ -11,6 +11,7 @@

async def main():
configuration = Configuration()
configuration.apply_logging_config()
async with ApiClient(configuration) as api_client:
workflow_executor = OrkesClients(api_client).get_workflow_executor()
workflow = AsyncConductorWorkflow(
Expand Down
3 changes: 2 additions & 1 deletion examples/async/orkes/multiagent_chat.py
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
import asyncio

from conductor.asyncio_client.adapters import ApiClient
from conductor.asyncio_client.ai.orchestrator import AsyncAIOrchestrator
from conductor.asyncio_client.configuration.configuration import Configuration
from conductor.asyncio_client.adapters import ApiClient
from conductor.asyncio_client.orkes.orkes_clients import OrkesClients
from conductor.asyncio_client.workflow.conductor_workflow import AsyncConductorWorkflow
from conductor.asyncio_client.workflow.task.do_while_task import LoopTask
Expand All @@ -27,6 +27,7 @@ async def main():
moderator_model = "command-r"

api_config = Configuration()
api_config.apply_logging_config()
async with ApiClient(api_config) as api_client:
clients = OrkesClients(configuration=api_config, api_client=api_client)
workflow_executor = clients.get_workflow_executor()
Expand Down
3 changes: 2 additions & 1 deletion examples/async/orkes/open_ai_chat_gpt.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,10 +3,10 @@

from workers.chat_workers import collect_history

from conductor.asyncio_client.adapters import ApiClient
from conductor.asyncio_client.ai.orchestrator import AsyncAIOrchestrator
from conductor.asyncio_client.automator.task_handler import TaskHandler
from conductor.asyncio_client.configuration.configuration import Configuration
from conductor.asyncio_client.adapters import ApiClient
from conductor.asyncio_client.orkes.orkes_clients import OrkesClients
from conductor.asyncio_client.workflow.conductor_workflow import AsyncConductorWorkflow
from conductor.asyncio_client.workflow.task.do_while_task import LoopTask
Expand Down Expand Up @@ -54,6 +54,7 @@ async def main():
chat_complete_model = "gpt-5"

api_config = Configuration()
api_config.apply_logging_config()
task_handler = start_workers(api_config=api_config)
async with ApiClient(api_config) as api_client:
clients = OrkesClients(configuration=api_config, api_client=api_client)
Expand Down
3 changes: 2 additions & 1 deletion examples/async/orkes/open_ai_function_example.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,11 +2,11 @@

from workers.chat_workers import collect_history

from conductor.asyncio_client.adapters import ApiClient
from conductor.asyncio_client.adapters.models import ExtendedTaskDef
from conductor.asyncio_client.ai.orchestrator import AsyncAIOrchestrator
from conductor.asyncio_client.automator.task_handler import TaskHandler
from conductor.asyncio_client.configuration.configuration import Configuration
from conductor.asyncio_client.adapters import ApiClient
from conductor.asyncio_client.orkes.orkes_clients import OrkesClients
from conductor.asyncio_client.worker.worker_task import worker_task
from conductor.asyncio_client.workflow.conductor_workflow import AsyncConductorWorkflow
Expand Down Expand Up @@ -45,6 +45,7 @@ async def main():
chat_complete_model = "gpt-5"

api_config = Configuration()
api_config.apply_logging_config()
async with ApiClient(api_config) as api_client:
clients = OrkesClients(configuration=api_config, api_client=api_client)
workflow_executor = clients.get_workflow_executor()
Expand Down
3 changes: 2 additions & 1 deletion examples/async/orkes/open_ai_helloworld.py
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
import asyncio

from conductor.asyncio_client.adapters import ApiClient
from conductor.asyncio_client.ai.orchestrator import AsyncAIOrchestrator
from conductor.asyncio_client.automator.task_handler import TaskHandler
from conductor.asyncio_client.configuration.configuration import Configuration
from conductor.asyncio_client.adapters import ApiClient
from conductor.asyncio_client.worker.worker_task import worker_task
from conductor.asyncio_client.workflow.conductor_workflow import AsyncConductorWorkflow
from conductor.asyncio_client.workflow.task.llm_tasks.llm_text_complete import (
Expand Down Expand Up @@ -34,6 +34,7 @@ async def main():
embedding_complete_model = "text-embedding-ada-002"

api_config = Configuration()
api_config.apply_logging_config()
async with ApiClient(api_config) as api_client:
task_workers = start_workers(api_config)

Expand Down
3 changes: 2 additions & 1 deletion examples/async/orkes/sync_updates.py
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
import asyncio

from conductor.asyncio_client.adapters import ApiClient
from conductor.asyncio_client.adapters.models import TaskResult, WorkflowStateUpdate
from conductor.asyncio_client.configuration.configuration import Configuration
from conductor.asyncio_client.adapters import ApiClient
from conductor.asyncio_client.orkes.orkes_clients import OrkesClients
from conductor.asyncio_client.workflow.conductor_workflow import AsyncConductorWorkflow
from conductor.asyncio_client.workflow.task.http_task import HttpInput, HttpTask
Expand Down Expand Up @@ -38,6 +38,7 @@ def create_workflow(clients: OrkesClients) -> AsyncConductorWorkflow:

async def main():
api_config = Configuration()
api_config.apply_logging_config()
async with ApiClient(api_config) as api_client:
clients = OrkesClients(configuration=api_config, api_client=api_client)
workflow_client = clients.get_workflow_client()
Expand Down
Loading
Loading