genxai-framework 0.1.1__tar.gz → 0.1.2__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.
- {genxai_framework-0.1.1 → genxai_framework-0.1.2}/PKG-INFO +1 -1
- {genxai_framework-0.1.1 → genxai_framework-0.1.2}/genxai/connectors/base.py +3 -3
- {genxai_framework-0.1.1 → genxai_framework-0.1.2}/genxai/observability/logging.py +2 -2
- {genxai_framework-0.1.1 → genxai_framework-0.1.2}/genxai/security/auth.py +10 -6
- {genxai_framework-0.1.1 → genxai_framework-0.1.2}/genxai/security/cost_control.py +6 -6
- {genxai_framework-0.1.1 → genxai_framework-0.1.2}/genxai/security/jwt.py +2 -2
- {genxai_framework-0.1.1 → genxai_framework-0.1.2}/genxai/security/pii.py +2 -2
- {genxai_framework-0.1.1 → genxai_framework-0.1.2}/genxai/triggers/schedule.py +2 -2
- {genxai_framework-0.1.1 → genxai_framework-0.1.2}/genxai_framework.egg-info/PKG-INFO +1 -1
- {genxai_framework-0.1.1 → genxai_framework-0.1.2}/pyproject.toml +1 -1
- {genxai_framework-0.1.1 → genxai_framework-0.1.2}/ARCHITECTURE.md +0 -0
- {genxai_framework-0.1.1 → genxai_framework-0.1.2}/CONTRIBUTING.md +0 -0
- {genxai_framework-0.1.1 → genxai_framework-0.1.2}/GETTING_STARTED.md +0 -0
- {genxai_framework-0.1.1 → genxai_framework-0.1.2}/LICENSE +0 -0
- {genxai_framework-0.1.1 → genxai_framework-0.1.2}/MANIFEST.in +0 -0
- {genxai_framework-0.1.1 → genxai_framework-0.1.2}/README.md +0 -0
- {genxai_framework-0.1.1 → genxai_framework-0.1.2}/REQUIREMENTS.md +0 -0
- {genxai_framework-0.1.1 → genxai_framework-0.1.2}/TOOLS_DESIGN.md +0 -0
- {genxai_framework-0.1.1 → genxai_framework-0.1.2}/cli/__init__.py +0 -0
- {genxai_framework-0.1.1 → genxai_framework-0.1.2}/cli/commands/__init__.py +0 -0
- {genxai_framework-0.1.1 → genxai_framework-0.1.2}/cli/commands/approval.py +0 -0
- {genxai_framework-0.1.1 → genxai_framework-0.1.2}/cli/commands/audit.py +0 -0
- {genxai_framework-0.1.1 → genxai_framework-0.1.2}/cli/commands/connector.py +0 -0
- {genxai_framework-0.1.1 → genxai_framework-0.1.2}/cli/commands/metrics.py +0 -0
- {genxai_framework-0.1.1 → genxai_framework-0.1.2}/cli/commands/tool.py +0 -0
- {genxai_framework-0.1.1 → genxai_framework-0.1.2}/cli/commands/workflow.py +0 -0
- {genxai_framework-0.1.1 → genxai_framework-0.1.2}/cli/main.py +0 -0
- {genxai_framework-0.1.1 → genxai_framework-0.1.2}/docs/AGENT_TOOL_INTEGRATION.md +0 -0
- {genxai_framework-0.1.1 → genxai_framework-0.1.2}/docs/API.md +0 -0
- {genxai_framework-0.1.1 → genxai_framework-0.1.2}/docs/API_REFERENCE.md +0 -0
- {genxai_framework-0.1.1 → genxai_framework-0.1.2}/docs/AUDIT_LOGGING.md +0 -0
- {genxai_framework-0.1.1 → genxai_framework-0.1.2}/docs/BENCHMARKING.md +0 -0
- {genxai_framework-0.1.1 → genxai_framework-0.1.2}/docs/CLI_USAGE.md +0 -0
- {genxai_framework-0.1.1 → genxai_framework-0.1.2}/docs/COLLABORATION_PROTOCOLS.md +0 -0
- {genxai_framework-0.1.1 → genxai_framework-0.1.2}/docs/COMPETITIVE_MATRIX.md +0 -0
- {genxai_framework-0.1.1 → genxai_framework-0.1.2}/docs/CONNECTOR_SDK.md +0 -0
- {genxai_framework-0.1.1 → genxai_framework-0.1.2}/docs/DOCS_INDEX.md +0 -0
- {genxai_framework-0.1.1 → genxai_framework-0.1.2}/docs/FLOWS.md +0 -0
- {genxai_framework-0.1.1 → genxai_framework-0.1.2}/docs/GOVERNANCE_POLICY.md +0 -0
- {genxai_framework-0.1.1 → genxai_framework-0.1.2}/docs/GRAPH_VISUALIZATION.md +0 -0
- {genxai_framework-0.1.1 → genxai_framework-0.1.2}/docs/LLM_INTEGRATION.md +0 -0
- {genxai_framework-0.1.1 → genxai_framework-0.1.2}/docs/MCP_SETUP.md +0 -0
- {genxai_framework-0.1.1 → genxai_framework-0.1.2}/docs/PUBLISHING.md +0 -0
- {genxai_framework-0.1.1 → genxai_framework-0.1.2}/docs/QUICK_START_TUTORIAL.md +0 -0
- {genxai_framework-0.1.1 → genxai_framework-0.1.2}/docs/RELEASE_CHECKLIST.md +0 -0
- {genxai_framework-0.1.1 → genxai_framework-0.1.2}/docs/SECURITY_CHECKLIST.md +0 -0
- {genxai_framework-0.1.1 → genxai_framework-0.1.2}/docs/TOOL_CREATION.md +0 -0
- {genxai_framework-0.1.1 → genxai_framework-0.1.2}/docs/WORKER_QUEUE_ENGINE.md +0 -0
- {genxai_framework-0.1.1 → genxai_framework-0.1.2}/docs/WORKFLOW_BEST_PRACTICES.md +0 -0
- {genxai_framework-0.1.1 → genxai_framework-0.1.2}/docs/WORKFLOW_EXECUTION.md +0 -0
- {genxai_framework-0.1.1 → genxai_framework-0.1.2}/examples/code/agent_presets_user_proxy_example.py +0 -0
- {genxai_framework-0.1.1 → genxai_framework-0.1.2}/examples/code/agent_registry_example.py +0 -0
- {genxai_framework-0.1.1 → genxai_framework-0.1.2}/examples/code/agent_with_memory_tools_example.py +0 -0
- {genxai_framework-0.1.1 → genxai_framework-0.1.2}/examples/code/agent_with_tools_example.py +0 -0
- {genxai_framework-0.1.1 → genxai_framework-0.1.2}/examples/code/end_to_end_example.py +0 -0
- {genxai_framework-0.1.1 → genxai_framework-0.1.2}/examples/code/flow_auction_example.py +0 -0
- {genxai_framework-0.1.1 → genxai_framework-0.1.2}/examples/code/flow_conditional_example.py +0 -0
- {genxai_framework-0.1.1 → genxai_framework-0.1.2}/examples/code/flow_coordinator_worker_example.py +0 -0
- {genxai_framework-0.1.1 → genxai_framework-0.1.2}/examples/code/flow_critic_review_example.py +0 -0
- {genxai_framework-0.1.1 → genxai_framework-0.1.2}/examples/code/flow_ensemble_voting_example.py +0 -0
- {genxai_framework-0.1.1 → genxai_framework-0.1.2}/examples/code/flow_loop_example.py +0 -0
- {genxai_framework-0.1.1 → genxai_framework-0.1.2}/examples/code/flow_map_reduce_example.py +0 -0
- {genxai_framework-0.1.1 → genxai_framework-0.1.2}/examples/code/flow_p2p_example.py +0 -0
- {genxai_framework-0.1.1 → genxai_framework-0.1.2}/examples/code/flow_parallel_example.py +0 -0
- {genxai_framework-0.1.1 → genxai_framework-0.1.2}/examples/code/flow_round_robin_example.py +0 -0
- {genxai_framework-0.1.1 → genxai_framework-0.1.2}/examples/code/flow_router_example.py +0 -0
- {genxai_framework-0.1.1 → genxai_framework-0.1.2}/examples/code/flow_selector_example.py +0 -0
- {genxai_framework-0.1.1 → genxai_framework-0.1.2}/examples/code/flow_subworkflow_example.py +0 -0
- {genxai_framework-0.1.1 → genxai_framework-0.1.2}/examples/code/flow_user_proxy_graph_example.py +0 -0
- {genxai_framework-0.1.1 → genxai_framework-0.1.2}/examples/code/function_calling_tools_example.py +0 -0
- {genxai_framework-0.1.1 → genxai_framework-0.1.2}/examples/code/graph_visualization_example.py +0 -0
- {genxai_framework-0.1.1 → genxai_framework-0.1.2}/examples/code/llm_agent_example.py +0 -0
- {genxai_framework-0.1.1 → genxai_framework-0.1.2}/examples/code/memory_system_example.py +0 -0
- {genxai_framework-0.1.1 → genxai_framework-0.1.2}/examples/code/routed_llm_provider_example.py +0 -0
- {genxai_framework-0.1.1 → genxai_framework-0.1.2}/examples/code/simple_workflow.py +0 -0
- {genxai_framework-0.1.1 → genxai_framework-0.1.2}/examples/code/testable_workflow.py +0 -0
- {genxai_framework-0.1.1 → genxai_framework-0.1.2}/examples/code/tool_execution_example.py +0 -0
- {genxai_framework-0.1.1 → genxai_framework-0.1.2}/examples/code/tool_registry_example.py +0 -0
- {genxai_framework-0.1.1 → genxai_framework-0.1.2}/examples/code/workflow_engine_example.py +0 -0
- {genxai_framework-0.1.1 → genxai_framework-0.1.2}/examples/graph_visualization_demo.py +0 -0
- {genxai_framework-0.1.1 → genxai_framework-0.1.2}/examples/patterns/01_sequential_pattern.py +0 -0
- {genxai_framework-0.1.1 → genxai_framework-0.1.2}/examples/patterns/02_conditional_branching.py +0 -0
- {genxai_framework-0.1.1 → genxai_framework-0.1.2}/examples/patterns/03_parallel_execution.py +0 -0
- {genxai_framework-0.1.1 → genxai_framework-0.1.2}/examples/patterns/04_coordinator_delegator_worker.py +0 -0
- {genxai_framework-0.1.1 → genxai_framework-0.1.2}/examples/patterns/05_cyclic_iterative.py +0 -0
- {genxai_framework-0.1.1 → genxai_framework-0.1.2}/examples/patterns/06_peer_to_peer.py +0 -0
- {genxai_framework-0.1.1 → genxai_framework-0.1.2}/genxai/__init__.py +0 -0
- {genxai_framework-0.1.1 → genxai_framework-0.1.2}/genxai/agents/__init__.py +0 -0
- {genxai_framework-0.1.1 → genxai_framework-0.1.2}/genxai/agents/presets.py +0 -0
- {genxai_framework-0.1.1 → genxai_framework-0.1.2}/genxai/api/__init__.py +0 -0
- {genxai_framework-0.1.1 → genxai_framework-0.1.2}/genxai/api/app.py +0 -0
- {genxai_framework-0.1.1 → genxai_framework-0.1.2}/genxai/config/__init__.py +0 -0
- {genxai_framework-0.1.1 → genxai_framework-0.1.2}/genxai/config/settings.py +0 -0
- {genxai_framework-0.1.1 → genxai_framework-0.1.2}/genxai/connectors/__init__.py +0 -0
- {genxai_framework-0.1.1 → genxai_framework-0.1.2}/genxai/connectors/config_store.py +0 -0
- {genxai_framework-0.1.1 → genxai_framework-0.1.2}/genxai/connectors/github.py +0 -0
- {genxai_framework-0.1.1 → genxai_framework-0.1.2}/genxai/connectors/google_workspace.py +0 -0
- {genxai_framework-0.1.1 → genxai_framework-0.1.2}/genxai/connectors/jira.py +0 -0
- {genxai_framework-0.1.1 → genxai_framework-0.1.2}/genxai/connectors/kafka.py +0 -0
- {genxai_framework-0.1.1 → genxai_framework-0.1.2}/genxai/connectors/notion.py +0 -0
- {genxai_framework-0.1.1 → genxai_framework-0.1.2}/genxai/connectors/postgres_cdc.py +0 -0
- {genxai_framework-0.1.1 → genxai_framework-0.1.2}/genxai/connectors/registry.py +0 -0
- {genxai_framework-0.1.1 → genxai_framework-0.1.2}/genxai/connectors/slack.py +0 -0
- {genxai_framework-0.1.1 → genxai_framework-0.1.2}/genxai/connectors/sqs.py +0 -0
- {genxai_framework-0.1.1 → genxai_framework-0.1.2}/genxai/connectors/webhook.py +0 -0
- {genxai_framework-0.1.1 → genxai_framework-0.1.2}/genxai/core/__init__.py +0 -0
- {genxai_framework-0.1.1 → genxai_framework-0.1.2}/genxai/core/agent/__init__.py +0 -0
- {genxai_framework-0.1.1 → genxai_framework-0.1.2}/genxai/core/agent/base.py +0 -0
- {genxai_framework-0.1.1 → genxai_framework-0.1.2}/genxai/core/agent/config_io.py +0 -0
- {genxai_framework-0.1.1 → genxai_framework-0.1.2}/genxai/core/agent/registry.py +0 -0
- {genxai_framework-0.1.1 → genxai_framework-0.1.2}/genxai/core/agent/runtime.py +0 -0
- {genxai_framework-0.1.1 → genxai_framework-0.1.2}/genxai/core/communication/__init__.py +0 -0
- {genxai_framework-0.1.1 → genxai_framework-0.1.2}/genxai/core/communication/collaboration.py +0 -0
- {genxai_framework-0.1.1 → genxai_framework-0.1.2}/genxai/core/communication/message_bus.py +0 -0
- {genxai_framework-0.1.1 → genxai_framework-0.1.2}/genxai/core/communication/protocols.py +0 -0
- {genxai_framework-0.1.1 → genxai_framework-0.1.2}/genxai/core/execution/__init__.py +0 -0
- {genxai_framework-0.1.1 → genxai_framework-0.1.2}/genxai/core/execution/metadata.py +0 -0
- {genxai_framework-0.1.1 → genxai_framework-0.1.2}/genxai/core/execution/queue.py +0 -0
- {genxai_framework-0.1.1 → genxai_framework-0.1.2}/genxai/core/graph/__init__.py +0 -0
- {genxai_framework-0.1.1 → genxai_framework-0.1.2}/genxai/core/graph/checkpoints.py +0 -0
- {genxai_framework-0.1.1 → genxai_framework-0.1.2}/genxai/core/graph/edges.py +0 -0
- {genxai_framework-0.1.1 → genxai_framework-0.1.2}/genxai/core/graph/engine.py +0 -0
- {genxai_framework-0.1.1 → genxai_framework-0.1.2}/genxai/core/graph/executor.py +0 -0
- {genxai_framework-0.1.1 → genxai_framework-0.1.2}/genxai/core/graph/nodes.py +0 -0
- {genxai_framework-0.1.1 → genxai_framework-0.1.2}/genxai/core/graph/trigger_runner.py +0 -0
- {genxai_framework-0.1.1 → genxai_framework-0.1.2}/genxai/core/graph/workflow_io.py +0 -0
- {genxai_framework-0.1.1 → genxai_framework-0.1.2}/genxai/core/memory/__init__.py +0 -0
- {genxai_framework-0.1.1 → genxai_framework-0.1.2}/genxai/core/memory/base.py +0 -0
- {genxai_framework-0.1.1 → genxai_framework-0.1.2}/genxai/core/memory/embedding.py +0 -0
- {genxai_framework-0.1.1 → genxai_framework-0.1.2}/genxai/core/memory/episodic.py +0 -0
- {genxai_framework-0.1.1 → genxai_framework-0.1.2}/genxai/core/memory/long_term.py +0 -0
- {genxai_framework-0.1.1 → genxai_framework-0.1.2}/genxai/core/memory/manager.py +0 -0
- {genxai_framework-0.1.1 → genxai_framework-0.1.2}/genxai/core/memory/persistence.py +0 -0
- {genxai_framework-0.1.1 → genxai_framework-0.1.2}/genxai/core/memory/procedural.py +0 -0
- {genxai_framework-0.1.1 → genxai_framework-0.1.2}/genxai/core/memory/semantic.py +0 -0
- {genxai_framework-0.1.1 → genxai_framework-0.1.2}/genxai/core/memory/shared.py +0 -0
- {genxai_framework-0.1.1 → genxai_framework-0.1.2}/genxai/core/memory/short_term.py +0 -0
- {genxai_framework-0.1.1 → genxai_framework-0.1.2}/genxai/core/memory/vector_store.py +0 -0
- {genxai_framework-0.1.1 → genxai_framework-0.1.2}/genxai/core/memory/working.py +0 -0
- {genxai_framework-0.1.1 → genxai_framework-0.1.2}/genxai/core/state/__init__.py +0 -0
- {genxai_framework-0.1.1 → genxai_framework-0.1.2}/genxai/core/state/manager.py +0 -0
- {genxai_framework-0.1.1 → genxai_framework-0.1.2}/genxai/core/state/schema.py +0 -0
- {genxai_framework-0.1.1 → genxai_framework-0.1.2}/genxai/flows/__init__.py +0 -0
- {genxai_framework-0.1.1 → genxai_framework-0.1.2}/genxai/flows/auction.py +0 -0
- {genxai_framework-0.1.1 → genxai_framework-0.1.2}/genxai/flows/base.py +0 -0
- {genxai_framework-0.1.1 → genxai_framework-0.1.2}/genxai/flows/conditional.py +0 -0
- {genxai_framework-0.1.1 → genxai_framework-0.1.2}/genxai/flows/coordinator_worker.py +0 -0
- {genxai_framework-0.1.1 → genxai_framework-0.1.2}/genxai/flows/critic_review.py +0 -0
- {genxai_framework-0.1.1 → genxai_framework-0.1.2}/genxai/flows/ensemble_voting.py +0 -0
- {genxai_framework-0.1.1 → genxai_framework-0.1.2}/genxai/flows/loop.py +0 -0
- {genxai_framework-0.1.1 → genxai_framework-0.1.2}/genxai/flows/map_reduce.py +0 -0
- {genxai_framework-0.1.1 → genxai_framework-0.1.2}/genxai/flows/p2p.py +0 -0
- {genxai_framework-0.1.1 → genxai_framework-0.1.2}/genxai/flows/parallel.py +0 -0
- {genxai_framework-0.1.1 → genxai_framework-0.1.2}/genxai/flows/round_robin.py +0 -0
- {genxai_framework-0.1.1 → genxai_framework-0.1.2}/genxai/flows/router.py +0 -0
- {genxai_framework-0.1.1 → genxai_framework-0.1.2}/genxai/flows/selector.py +0 -0
- {genxai_framework-0.1.1 → genxai_framework-0.1.2}/genxai/flows/subworkflow.py +0 -0
- {genxai_framework-0.1.1 → genxai_framework-0.1.2}/genxai/llm/__init__.py +0 -0
- {genxai_framework-0.1.1 → genxai_framework-0.1.2}/genxai/llm/base.py +0 -0
- {genxai_framework-0.1.1 → genxai_framework-0.1.2}/genxai/llm/factory.py +0 -0
- {genxai_framework-0.1.1 → genxai_framework-0.1.2}/genxai/llm/providers/__init__.py +0 -0
- {genxai_framework-0.1.1 → genxai_framework-0.1.2}/genxai/llm/providers/anthropic.py +0 -0
- {genxai_framework-0.1.1 → genxai_framework-0.1.2}/genxai/llm/providers/cohere.py +0 -0
- {genxai_framework-0.1.1 → genxai_framework-0.1.2}/genxai/llm/providers/google.py +0 -0
- {genxai_framework-0.1.1 → genxai_framework-0.1.2}/genxai/llm/providers/ollama.py +0 -0
- {genxai_framework-0.1.1 → genxai_framework-0.1.2}/genxai/llm/providers/openai.py +0 -0
- {genxai_framework-0.1.1 → genxai_framework-0.1.2}/genxai/llm/routing.py +0 -0
- {genxai_framework-0.1.1 → genxai_framework-0.1.2}/genxai/observability/__init__.py +0 -0
- {genxai_framework-0.1.1 → genxai_framework-0.1.2}/genxai/observability/metrics.py +0 -0
- {genxai_framework-0.1.1 → genxai_framework-0.1.2}/genxai/observability/tracing.py +0 -0
- {genxai_framework-0.1.1 → genxai_framework-0.1.2}/genxai/performance/__init__.py +0 -0
- {genxai_framework-0.1.1 → genxai_framework-0.1.2}/genxai/performance/cache.py +0 -0
- {genxai_framework-0.1.1 → genxai_framework-0.1.2}/genxai/performance/pooling.py +0 -0
- {genxai_framework-0.1.1 → genxai_framework-0.1.2}/genxai/security/audit.py +0 -0
- {genxai_framework-0.1.1 → genxai_framework-0.1.2}/genxai/security/default_policies.py +0 -0
- {genxai_framework-0.1.1 → genxai_framework-0.1.2}/genxai/security/oauth.py +0 -0
- {genxai_framework-0.1.1 → genxai_framework-0.1.2}/genxai/security/policy_engine.py +0 -0
- {genxai_framework-0.1.1 → genxai_framework-0.1.2}/genxai/security/rate_limit.py +0 -0
- {genxai_framework-0.1.1 → genxai_framework-0.1.2}/genxai/security/rbac.py +0 -0
- {genxai_framework-0.1.1 → genxai_framework-0.1.2}/genxai/security/validation.py +0 -0
- {genxai_framework-0.1.1 → genxai_framework-0.1.2}/genxai/tools/__init__.py +0 -0
- {genxai_framework-0.1.1 → genxai_framework-0.1.2}/genxai/tools/base.py +0 -0
- {genxai_framework-0.1.1 → genxai_framework-0.1.2}/genxai/tools/builtin/__init__.py +0 -0
- {genxai_framework-0.1.1 → genxai_framework-0.1.2}/genxai/tools/builtin/communication/__init__.py +0 -0
- {genxai_framework-0.1.1 → genxai_framework-0.1.2}/genxai/tools/builtin/communication/email_sender.py +0 -0
- {genxai_framework-0.1.1 → genxai_framework-0.1.2}/genxai/tools/builtin/communication/human_input.py +0 -0
- {genxai_framework-0.1.1 → genxai_framework-0.1.2}/genxai/tools/builtin/communication/notification_manager.py +0 -0
- {genxai_framework-0.1.1 → genxai_framework-0.1.2}/genxai/tools/builtin/communication/slack_notifier.py +0 -0
- {genxai_framework-0.1.1 → genxai_framework-0.1.2}/genxai/tools/builtin/communication/sms_sender.py +0 -0
- {genxai_framework-0.1.1 → genxai_framework-0.1.2}/genxai/tools/builtin/communication/webhook_caller.py +0 -0
- {genxai_framework-0.1.1 → genxai_framework-0.1.2}/genxai/tools/builtin/computation/__init__.py +0 -0
- {genxai_framework-0.1.1 → genxai_framework-0.1.2}/genxai/tools/builtin/computation/calculator.py +0 -0
- {genxai_framework-0.1.1 → genxai_framework-0.1.2}/genxai/tools/builtin/computation/code_executor.py +0 -0
- {genxai_framework-0.1.1 → genxai_framework-0.1.2}/genxai/tools/builtin/computation/data_validator.py +0 -0
- {genxai_framework-0.1.1 → genxai_framework-0.1.2}/genxai/tools/builtin/computation/hash_generator.py +0 -0
- {genxai_framework-0.1.1 → genxai_framework-0.1.2}/genxai/tools/builtin/computation/regex_matcher.py +0 -0
- {genxai_framework-0.1.1 → genxai_framework-0.1.2}/genxai/tools/builtin/data/__init__.py +0 -0
- {genxai_framework-0.1.1 → genxai_framework-0.1.2}/genxai/tools/builtin/data/csv_processor.py +0 -0
- {genxai_framework-0.1.1 → genxai_framework-0.1.2}/genxai/tools/builtin/data/data_transformer.py +0 -0
- {genxai_framework-0.1.1 → genxai_framework-0.1.2}/genxai/tools/builtin/data/json_processor.py +0 -0
- {genxai_framework-0.1.1 → genxai_framework-0.1.2}/genxai/tools/builtin/data/text_analyzer.py +0 -0
- {genxai_framework-0.1.1 → genxai_framework-0.1.2}/genxai/tools/builtin/data/xml_processor.py +0 -0
- {genxai_framework-0.1.1 → genxai_framework-0.1.2}/genxai/tools/builtin/database/__init__.py +0 -0
- {genxai_framework-0.1.1 → genxai_framework-0.1.2}/genxai/tools/builtin/database/database_inspector.py +0 -0
- {genxai_framework-0.1.1 → genxai_framework-0.1.2}/genxai/tools/builtin/database/mongodb_query.py +0 -0
- {genxai_framework-0.1.1 → genxai_framework-0.1.2}/genxai/tools/builtin/database/redis_cache.py +0 -0
- {genxai_framework-0.1.1 → genxai_framework-0.1.2}/genxai/tools/builtin/database/sql_query.py +0 -0
- {genxai_framework-0.1.1 → genxai_framework-0.1.2}/genxai/tools/builtin/database/vector_search.py +0 -0
- {genxai_framework-0.1.1 → genxai_framework-0.1.2}/genxai/tools/builtin/file/__init__.py +0 -0
- {genxai_framework-0.1.1 → genxai_framework-0.1.2}/genxai/tools/builtin/file/directory_scanner.py +0 -0
- {genxai_framework-0.1.1 → genxai_framework-0.1.2}/genxai/tools/builtin/file/file_compressor.py +0 -0
- {genxai_framework-0.1.1 → genxai_framework-0.1.2}/genxai/tools/builtin/file/file_reader.py +0 -0
- {genxai_framework-0.1.1 → genxai_framework-0.1.2}/genxai/tools/builtin/file/file_writer.py +0 -0
- {genxai_framework-0.1.1 → genxai_framework-0.1.2}/genxai/tools/builtin/file/image_processor.py +0 -0
- {genxai_framework-0.1.1 → genxai_framework-0.1.2}/genxai/tools/builtin/file/pdf_parser.py +0 -0
- {genxai_framework-0.1.1 → genxai_framework-0.1.2}/genxai/tools/builtin/test/__init__.py +0 -0
- {genxai_framework-0.1.1 → genxai_framework-0.1.2}/genxai/tools/builtin/test/async_simulator.py +0 -0
- {genxai_framework-0.1.1 → genxai_framework-0.1.2}/genxai/tools/builtin/test/data_transformer.py +0 -0
- {genxai_framework-0.1.1 → genxai_framework-0.1.2}/genxai/tools/builtin/test/error_generator.py +0 -0
- {genxai_framework-0.1.1 → genxai_framework-0.1.2}/genxai/tools/builtin/test/simple_math.py +0 -0
- {genxai_framework-0.1.1 → genxai_framework-0.1.2}/genxai/tools/builtin/test/string_processor.py +0 -0
- {genxai_framework-0.1.1 → genxai_framework-0.1.2}/genxai/tools/builtin/web/__init__.py +0 -0
- {genxai_framework-0.1.1 → genxai_framework-0.1.2}/genxai/tools/builtin/web/api_caller.py +0 -0
- {genxai_framework-0.1.1 → genxai_framework-0.1.2}/genxai/tools/builtin/web/html_parser.py +0 -0
- {genxai_framework-0.1.1 → genxai_framework-0.1.2}/genxai/tools/builtin/web/http_client.py +0 -0
- {genxai_framework-0.1.1 → genxai_framework-0.1.2}/genxai/tools/builtin/web/url_validator.py +0 -0
- {genxai_framework-0.1.1 → genxai_framework-0.1.2}/genxai/tools/builtin/web/web_scraper.py +0 -0
- {genxai_framework-0.1.1 → genxai_framework-0.1.2}/genxai/tools/custom/my_test_tool_2.py +0 -0
- {genxai_framework-0.1.1 → genxai_framework-0.1.2}/genxai/tools/custom/test-2.py +0 -0
- {genxai_framework-0.1.1 → genxai_framework-0.1.2}/genxai/tools/custom/test_tool_ui.py +0 -0
- {genxai_framework-0.1.1 → genxai_framework-0.1.2}/genxai/tools/dynamic.py +0 -0
- {genxai_framework-0.1.1 → genxai_framework-0.1.2}/genxai/tools/mcp_server.py +0 -0
- {genxai_framework-0.1.1 → genxai_framework-0.1.2}/genxai/tools/persistence/__init__.py +0 -0
- {genxai_framework-0.1.1 → genxai_framework-0.1.2}/genxai/tools/persistence/models.py +0 -0
- {genxai_framework-0.1.1 → genxai_framework-0.1.2}/genxai/tools/persistence/service.py +0 -0
- {genxai_framework-0.1.1 → genxai_framework-0.1.2}/genxai/tools/registry.py +0 -0
- {genxai_framework-0.1.1 → genxai_framework-0.1.2}/genxai/tools/security/__init__.py +0 -0
- {genxai_framework-0.1.1 → genxai_framework-0.1.2}/genxai/tools/security/limits.py +0 -0
- {genxai_framework-0.1.1 → genxai_framework-0.1.2}/genxai/tools/security/policy.py +0 -0
- {genxai_framework-0.1.1 → genxai_framework-0.1.2}/genxai/tools/security/sandbox.py +0 -0
- {genxai_framework-0.1.1 → genxai_framework-0.1.2}/genxai/tools/templates.py +0 -0
- {genxai_framework-0.1.1 → genxai_framework-0.1.2}/genxai/triggers/__init__.py +0 -0
- {genxai_framework-0.1.1 → genxai_framework-0.1.2}/genxai/triggers/base.py +0 -0
- {genxai_framework-0.1.1 → genxai_framework-0.1.2}/genxai/triggers/file_watcher.py +0 -0
- {genxai_framework-0.1.1 → genxai_framework-0.1.2}/genxai/triggers/queue.py +0 -0
- {genxai_framework-0.1.1 → genxai_framework-0.1.2}/genxai/triggers/registry.py +0 -0
- {genxai_framework-0.1.1 → genxai_framework-0.1.2}/genxai/triggers/webhook.py +0 -0
- {genxai_framework-0.1.1 → genxai_framework-0.1.2}/genxai/utils/__init__.py +0 -0
- {genxai_framework-0.1.1 → genxai_framework-0.1.2}/genxai/utils/tokens.py +0 -0
- {genxai_framework-0.1.1 → genxai_framework-0.1.2}/genxai_framework.egg-info/SOURCES.txt +0 -0
- {genxai_framework-0.1.1 → genxai_framework-0.1.2}/genxai_framework.egg-info/dependency_links.txt +0 -0
- {genxai_framework-0.1.1 → genxai_framework-0.1.2}/genxai_framework.egg-info/entry_points.txt +0 -0
- {genxai_framework-0.1.1 → genxai_framework-0.1.2}/genxai_framework.egg-info/requires.txt +0 -0
- {genxai_framework-0.1.1 → genxai_framework-0.1.2}/genxai_framework.egg-info/top_level.txt +0 -0
- {genxai_framework-0.1.1 → genxai_framework-0.1.2}/setup.cfg +0 -0
|
@@ -4,7 +4,7 @@ from __future__ import annotations
|
|
|
4
4
|
|
|
5
5
|
from abc import ABC, abstractmethod
|
|
6
6
|
from dataclasses import dataclass, field
|
|
7
|
-
from datetime import datetime
|
|
7
|
+
from datetime import datetime, UTC
|
|
8
8
|
from enum import Enum
|
|
9
9
|
from typing import Any, Awaitable, Callable, Dict, Optional
|
|
10
10
|
import asyncio
|
|
@@ -29,7 +29,7 @@ class ConnectorEvent:
|
|
|
29
29
|
|
|
30
30
|
connector_id: str
|
|
31
31
|
payload: Dict[str, Any]
|
|
32
|
-
timestamp: datetime = field(default_factory=datetime.
|
|
32
|
+
timestamp: datetime = field(default_factory=lambda: datetime.now(UTC))
|
|
33
33
|
metadata: Dict[str, Any] = field(default_factory=dict)
|
|
34
34
|
|
|
35
35
|
|
|
@@ -106,7 +106,7 @@ class Connector(ABC):
|
|
|
106
106
|
"lifecycle": self.status.value,
|
|
107
107
|
"last_error": self._last_error,
|
|
108
108
|
}
|
|
109
|
-
self._last_healthcheck = datetime.
|
|
109
|
+
self._last_healthcheck = datetime.now(UTC).isoformat()
|
|
110
110
|
return payload
|
|
111
111
|
|
|
112
112
|
async def validate_config(self) -> None:
|
|
@@ -4,7 +4,7 @@ import json
|
|
|
4
4
|
import logging
|
|
5
5
|
import sys
|
|
6
6
|
from contextvars import ContextVar
|
|
7
|
-
from datetime import datetime
|
|
7
|
+
from datetime import datetime, UTC
|
|
8
8
|
from typing import Any, Dict, Optional
|
|
9
9
|
|
|
10
10
|
|
|
@@ -250,7 +250,7 @@ class StructuredLogger:
|
|
|
250
250
|
JSON formatted log string
|
|
251
251
|
"""
|
|
252
252
|
log_entry = {
|
|
253
|
-
"timestamp": datetime.
|
|
253
|
+
"timestamp": datetime.now(UTC).isoformat(),
|
|
254
254
|
"level": level,
|
|
255
255
|
"message": message,
|
|
256
256
|
"context": {**get_log_context(), **self.context},
|
|
@@ -4,7 +4,7 @@ import secrets
|
|
|
4
4
|
import hashlib
|
|
5
5
|
import time
|
|
6
6
|
from typing import Optional, List, Dict, Any
|
|
7
|
-
from datetime import datetime, timedelta
|
|
7
|
+
from datetime import datetime, timedelta, UTC
|
|
8
8
|
from dataclasses import dataclass
|
|
9
9
|
import sqlite3
|
|
10
10
|
import os
|
|
@@ -94,7 +94,7 @@ class APIKeyManager:
|
|
|
94
94
|
# Calculate expiration
|
|
95
95
|
expires_at = None
|
|
96
96
|
if expires_in_days:
|
|
97
|
-
expires_at = datetime.
|
|
97
|
+
expires_at = datetime.now(UTC) + timedelta(days=expires_in_days)
|
|
98
98
|
|
|
99
99
|
# Store in database
|
|
100
100
|
conn = sqlite3.connect(self.db_path)
|
|
@@ -103,7 +103,7 @@ class APIKeyManager:
|
|
|
103
103
|
cursor.execute("""
|
|
104
104
|
INSERT INTO api_keys (key_id, user_id, name, key_hash, created_at, expires_at)
|
|
105
105
|
VALUES (?, ?, ?, ?, ?, ?)
|
|
106
|
-
""", (key_id, user_id, name, key_hash, datetime.
|
|
106
|
+
""", (key_id, user_id, name, key_hash, datetime.now(UTC), expires_at))
|
|
107
107
|
|
|
108
108
|
conn.commit()
|
|
109
109
|
conn.close()
|
|
@@ -144,14 +144,16 @@ class APIKeyManager:
|
|
|
144
144
|
# Check expiration
|
|
145
145
|
if expires_at:
|
|
146
146
|
expires_dt = datetime.fromisoformat(expires_at)
|
|
147
|
-
if
|
|
147
|
+
if expires_dt.tzinfo is None:
|
|
148
|
+
expires_dt = expires_dt.replace(tzinfo=UTC)
|
|
149
|
+
if datetime.now(UTC) > expires_dt:
|
|
148
150
|
conn.close()
|
|
149
151
|
return None
|
|
150
152
|
|
|
151
153
|
# Update last used
|
|
152
154
|
cursor.execute("""
|
|
153
155
|
UPDATE api_keys SET last_used = ? WHERE key_id = ?
|
|
154
|
-
""", (datetime.
|
|
156
|
+
""", (datetime.now(UTC), key_id))
|
|
155
157
|
|
|
156
158
|
conn.commit()
|
|
157
159
|
conn.close()
|
|
@@ -257,7 +259,9 @@ class APIKeyManager:
|
|
|
257
259
|
expires_in_days = None
|
|
258
260
|
if expires_at:
|
|
259
261
|
expires_dt = datetime.fromisoformat(expires_at)
|
|
260
|
-
|
|
262
|
+
if expires_dt.tzinfo is None:
|
|
263
|
+
expires_dt = expires_dt.replace(tzinfo=UTC)
|
|
264
|
+
expires_in_days = (expires_dt - datetime.now(UTC)).days
|
|
261
265
|
|
|
262
266
|
return self.generate_key(user_id, name, expires_in_days)
|
|
263
267
|
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
import sqlite3
|
|
4
4
|
from typing import Dict, Any, Optional
|
|
5
|
-
from datetime import datetime, timedelta
|
|
5
|
+
from datetime import datetime, timedelta, UTC
|
|
6
6
|
from dataclasses import dataclass
|
|
7
7
|
import os
|
|
8
8
|
|
|
@@ -106,7 +106,7 @@ class TokenUsageTracker:
|
|
|
106
106
|
INSERT INTO token_usage
|
|
107
107
|
(user_id, provider, model, prompt_tokens, completion_tokens, cost, timestamp)
|
|
108
108
|
VALUES (?, ?, ?, ?, ?, ?, ?)
|
|
109
|
-
""", (user_id, provider, model, prompt_tokens, completion_tokens, cost, datetime.
|
|
109
|
+
""", (user_id, provider, model, prompt_tokens, completion_tokens, cost, datetime.now(UTC)))
|
|
110
110
|
|
|
111
111
|
conn.commit()
|
|
112
112
|
conn.close()
|
|
@@ -126,7 +126,7 @@ class TokenUsageTracker:
|
|
|
126
126
|
Usage statistics
|
|
127
127
|
"""
|
|
128
128
|
# Calculate time range
|
|
129
|
-
now = datetime.
|
|
129
|
+
now = datetime.now(UTC)
|
|
130
130
|
if period == "day":
|
|
131
131
|
start_time = now - timedelta(days=1)
|
|
132
132
|
elif period == "week":
|
|
@@ -223,7 +223,7 @@ class BudgetManager:
|
|
|
223
223
|
conn = sqlite3.connect(self.db_path)
|
|
224
224
|
cursor = conn.cursor()
|
|
225
225
|
|
|
226
|
-
now = datetime.
|
|
226
|
+
now = datetime.now(UTC)
|
|
227
227
|
|
|
228
228
|
cursor.execute("""
|
|
229
229
|
INSERT OR REPLACE INTO budgets (user_id, amount, period, created_at, updated_at)
|
|
@@ -447,7 +447,7 @@ class CostAlertManager:
|
|
|
447
447
|
# Check if we already sent alert recently (within 1 hour)
|
|
448
448
|
if last_alert:
|
|
449
449
|
last_alert_time = datetime.fromisoformat(last_alert)
|
|
450
|
-
if datetime.
|
|
450
|
+
if datetime.now(UTC) - last_alert_time < timedelta(hours=1):
|
|
451
451
|
conn.close()
|
|
452
452
|
return
|
|
453
453
|
|
|
@@ -462,7 +462,7 @@ class CostAlertManager:
|
|
|
462
462
|
# Update last alert time
|
|
463
463
|
cursor.execute("""
|
|
464
464
|
UPDATE cost_alerts SET last_alert = ? WHERE user_id = ?
|
|
465
|
-
""", (datetime.
|
|
465
|
+
""", (datetime.now(UTC), user_id))
|
|
466
466
|
|
|
467
467
|
conn.commit()
|
|
468
468
|
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
import jwt
|
|
4
4
|
import os
|
|
5
|
-
from datetime import datetime, timedelta
|
|
5
|
+
from datetime import datetime, timedelta, UTC
|
|
6
6
|
from typing import Dict, Any, Optional
|
|
7
7
|
from dataclasses import dataclass
|
|
8
8
|
|
|
@@ -50,7 +50,7 @@ class JWTManager:
|
|
|
50
50
|
Returns:
|
|
51
51
|
JWT token string
|
|
52
52
|
"""
|
|
53
|
-
now = datetime.
|
|
53
|
+
now = datetime.now(UTC)
|
|
54
54
|
exp = now + timedelta(seconds=expires_in)
|
|
55
55
|
|
|
56
56
|
payload = {
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
import re
|
|
4
4
|
from typing import List, Dict, Any, Optional
|
|
5
5
|
from dataclasses import dataclass
|
|
6
|
-
from datetime import datetime
|
|
6
|
+
from datetime import datetime, UTC
|
|
7
7
|
|
|
8
8
|
|
|
9
9
|
# PII patterns
|
|
@@ -254,7 +254,7 @@ class PIIAuditLogger:
|
|
|
254
254
|
context: Additional context
|
|
255
255
|
"""
|
|
256
256
|
log_entry = {
|
|
257
|
-
"timestamp": datetime.
|
|
257
|
+
"timestamp": datetime.now(UTC).isoformat(),
|
|
258
258
|
"user_id": user_id,
|
|
259
259
|
"pii_type": pii_type,
|
|
260
260
|
"action": action,
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
from __future__ import annotations
|
|
4
4
|
|
|
5
|
-
from datetime import datetime
|
|
5
|
+
from datetime import datetime, UTC
|
|
6
6
|
from typing import Any, Dict, Optional
|
|
7
7
|
import logging
|
|
8
8
|
|
|
@@ -52,7 +52,7 @@ class ScheduleTrigger(BaseTrigger):
|
|
|
52
52
|
trigger = IntervalTrigger(seconds=self.interval_seconds)
|
|
53
53
|
|
|
54
54
|
async def _emit_wrapper() -> None:
|
|
55
|
-
await self.emit(payload={"scheduled_at": datetime.
|
|
55
|
+
await self.emit(payload={"scheduled_at": datetime.now(UTC).isoformat(), **self.payload})
|
|
56
56
|
|
|
57
57
|
scheduler.add_job(_emit_wrapper, trigger=trigger)
|
|
58
58
|
scheduler.start()
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{genxai_framework-0.1.1 → genxai_framework-0.1.2}/examples/code/agent_presets_user_proxy_example.py
RENAMED
|
File without changes
|
|
File without changes
|
{genxai_framework-0.1.1 → genxai_framework-0.1.2}/examples/code/agent_with_memory_tools_example.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{genxai_framework-0.1.1 → genxai_framework-0.1.2}/examples/code/flow_coordinator_worker_example.py
RENAMED
|
File without changes
|
{genxai_framework-0.1.1 → genxai_framework-0.1.2}/examples/code/flow_critic_review_example.py
RENAMED
|
File without changes
|
{genxai_framework-0.1.1 → genxai_framework-0.1.2}/examples/code/flow_ensemble_voting_example.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{genxai_framework-0.1.1 → genxai_framework-0.1.2}/examples/code/flow_user_proxy_graph_example.py
RENAMED
|
File without changes
|
{genxai_framework-0.1.1 → genxai_framework-0.1.2}/examples/code/function_calling_tools_example.py
RENAMED
|
File without changes
|
{genxai_framework-0.1.1 → genxai_framework-0.1.2}/examples/code/graph_visualization_example.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{genxai_framework-0.1.1 → genxai_framework-0.1.2}/examples/code/routed_llm_provider_example.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{genxai_framework-0.1.1 → genxai_framework-0.1.2}/examples/patterns/01_sequential_pattern.py
RENAMED
|
File without changes
|
{genxai_framework-0.1.1 → genxai_framework-0.1.2}/examples/patterns/02_conditional_branching.py
RENAMED
|
File without changes
|
{genxai_framework-0.1.1 → genxai_framework-0.1.2}/examples/patterns/03_parallel_execution.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{genxai_framework-0.1.1 → genxai_framework-0.1.2}/genxai/core/communication/collaboration.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|