timbal 2.2.4__tar.gz → 2.2.6__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.
- {timbal-2.2.4 → timbal-2.2.6}/PKG-INFO +1 -1
- {timbal-2.2.4 → timbal-2.2.6}/python/timbal/_version.py +2 -2
- {timbal-2.2.4 → timbal-2.2.6}/python/timbal/tools/__init__.py +7 -0
- {timbal-2.2.4 → timbal-2.2.6}/python/timbal/tools/elasticsearch.py +5 -2
- {timbal-2.2.4 → timbal-2.2.6}/python/timbal/tools/elevenlabs.py +3 -2
- {timbal-2.2.4 → timbal-2.2.6}/python/timbal/tools/fal.py +9 -6
- {timbal-2.2.4 → timbal-2.2.6}/python/timbal/tools/gemini_images.py +3 -2
- {timbal-2.2.4 → timbal-2.2.6}/python/timbal/tools/google_analytics.py +8 -2
- {timbal-2.2.4 → timbal-2.2.6}/python/timbal/tools/google_docs.py +1 -1
- {timbal-2.2.4 → timbal-2.2.6}/python/timbal/tools/google_drive.py +2 -2
- {timbal-2.2.4 → timbal-2.2.6}/python/timbal/tools/higgsfield.py +5 -1
- {timbal-2.2.4 → timbal-2.2.6}/python/timbal/tools/jira.py +4 -1
- {timbal-2.2.4 → timbal-2.2.6}/python/timbal/tools/netsuite.py +71 -22
- {timbal-2.2.4 → timbal-2.2.6}/python/timbal/tools/onedrive.py +2 -2
- timbal-2.2.6/python/timbal/tools/parallel.py +191 -0
- {timbal-2.2.4 → timbal-2.2.6}/python/timbal/tools/pinecone.py +4 -1
- {timbal-2.2.4 → timbal-2.2.6}/python/timbal/tools/quiver_ai.py +5 -3
- {timbal-2.2.4 → timbal-2.2.6}/python/timbal/tools/replicate.py +5 -3
- {timbal-2.2.4 → timbal-2.2.6}/python/timbal/tools/sharepoint.py +2 -2
- {timbal-2.2.4 → timbal-2.2.6}/python/timbal/tools/stripe.py +4 -1
- {timbal-2.2.4 → timbal-2.2.6}/python/timbal/tools/zendesk.py +8 -2
- {timbal-2.2.4 → timbal-2.2.6}/.gitignore +0 -0
- {timbal-2.2.4 → timbal-2.2.6}/LICENSE +0 -0
- {timbal-2.2.4 → timbal-2.2.6}/README.md +0 -0
- {timbal-2.2.4 → timbal-2.2.6}/docs/api-reference/ace/chat-completions.mdx +0 -0
- {timbal-2.2.4 → timbal-2.2.6}/docs/api-reference/ace/create-from-workforce.mdx +0 -0
- {timbal-2.2.4 → timbal-2.2.6}/docs/api-reference/ace/jobs/cancel.mdx +0 -0
- {timbal-2.2.4 → timbal-2.2.6}/docs/api-reference/ace/jobs/get.mdx +0 -0
- {timbal-2.2.4 → timbal-2.2.6}/docs/api-reference/ace/jobs/list.mdx +0 -0
- {timbal-2.2.4 → timbal-2.2.6}/docs/api-reference/ace/jobs/retry.mdx +0 -0
- {timbal-2.2.4 → timbal-2.2.6}/docs/api-reference/ace/link.mdx +0 -0
- {timbal-2.2.4 → timbal-2.2.6}/docs/api-reference/ace/list-context-vars.mdx +0 -0
- {timbal-2.2.4 → timbal-2.2.6}/docs/api-reference/ace/list-policies.mdx +0 -0
- {timbal-2.2.4 → timbal-2.2.6}/docs/api-reference/ace/messages.mdx +0 -0
- {timbal-2.2.4 → timbal-2.2.6}/docs/api-reference/ace/responses.mdx +0 -0
- {timbal-2.2.4 → timbal-2.2.6}/docs/api-reference/ace/unlink.mdx +0 -0
- {timbal-2.2.4 → timbal-2.2.6}/pyproject.toml +0 -0
- {timbal-2.2.4 → timbal-2.2.6}/pyrightconfig.json +0 -0
- {timbal-2.2.4 → timbal-2.2.6}/python/timbal/__init__.py +0 -0
- {timbal-2.2.4 → timbal-2.2.6}/python/timbal/codegen/__init__.py +0 -0
- {timbal-2.2.4 → timbal-2.2.6}/python/timbal/codegen/__main__.py +0 -0
- {timbal-2.2.4 → timbal-2.2.6}/python/timbal/codegen/cli_utils.py +0 -0
- {timbal-2.2.4 → timbal-2.2.6}/python/timbal/codegen/cst_utils.py +0 -0
- {timbal-2.2.4 → timbal-2.2.6}/python/timbal/codegen/flow.py +0 -0
- {timbal-2.2.4 → timbal-2.2.6}/python/timbal/codegen/format.py +0 -0
- {timbal-2.2.4 → timbal-2.2.6}/python/timbal/codegen/model_discovery.py +0 -0
- {timbal-2.2.4 → timbal-2.2.6}/python/timbal/codegen/test.py +0 -0
- {timbal-2.2.4 → timbal-2.2.6}/python/timbal/codegen/tool_discovery.py +0 -0
- {timbal-2.2.4 → timbal-2.2.6}/python/timbal/codegen/transformers/__init__.py +0 -0
- {timbal-2.2.4 → timbal-2.2.6}/python/timbal/codegen/transformers/add_edge.py +0 -0
- {timbal-2.2.4 → timbal-2.2.6}/python/timbal/codegen/transformers/add_step.py +0 -0
- {timbal-2.2.4 → timbal-2.2.6}/python/timbal/codegen/transformers/add_tool.py +0 -0
- {timbal-2.2.4 → timbal-2.2.6}/python/timbal/codegen/transformers/remove_edge.py +0 -0
- {timbal-2.2.4 → timbal-2.2.6}/python/timbal/codegen/transformers/remove_step.py +0 -0
- {timbal-2.2.4 → timbal-2.2.6}/python/timbal/codegen/transformers/remove_tool.py +0 -0
- {timbal-2.2.4 → timbal-2.2.6}/python/timbal/codegen/transformers/set_config.py +0 -0
- {timbal-2.2.4 → timbal-2.2.6}/python/timbal/codegen/transformers/set_param.py +0 -0
- {timbal-2.2.4 → timbal-2.2.6}/python/timbal/codegen/transformers/set_position.py +0 -0
- {timbal-2.2.4 → timbal-2.2.6}/python/timbal/collectors/__init__.py +0 -0
- {timbal-2.2.4 → timbal-2.2.6}/python/timbal/collectors/base.py +0 -0
- {timbal-2.2.4 → timbal-2.2.6}/python/timbal/collectors/impl/__init__.py +0 -0
- {timbal-2.2.4 → timbal-2.2.6}/python/timbal/collectors/impl/anthropic.py +0 -0
- {timbal-2.2.4 → timbal-2.2.6}/python/timbal/collectors/impl/default.py +0 -0
- {timbal-2.2.4 → timbal-2.2.6}/python/timbal/collectors/impl/message.py +0 -0
- {timbal-2.2.4 → timbal-2.2.6}/python/timbal/collectors/impl/openai.py +0 -0
- {timbal-2.2.4 → timbal-2.2.6}/python/timbal/collectors/impl/string.py +0 -0
- {timbal-2.2.4 → timbal-2.2.6}/python/timbal/collectors/impl/timbal.py +0 -0
- {timbal-2.2.4 → timbal-2.2.6}/python/timbal/collectors/registry.py +0 -0
- {timbal-2.2.4 → timbal-2.2.6}/python/timbal/core/__init__.py +0 -0
- {timbal-2.2.4 → timbal-2.2.6}/python/timbal/core/agent.py +0 -0
- {timbal-2.2.4 → timbal-2.2.6}/python/timbal/core/fallback_model.py +0 -0
- {timbal-2.2.4 → timbal-2.2.6}/python/timbal/core/llm_router.py +0 -0
- {timbal-2.2.4 → timbal-2.2.6}/python/timbal/core/mcp.py +0 -0
- {timbal-2.2.4 → timbal-2.2.6}/python/timbal/core/memory_compaction.py +0 -0
- {timbal-2.2.4 → timbal-2.2.6}/python/timbal/core/models.py +0 -0
- {timbal-2.2.4 → timbal-2.2.6}/python/timbal/core/runnable.py +0 -0
- {timbal-2.2.4 → timbal-2.2.6}/python/timbal/core/skill.py +0 -0
- {timbal-2.2.4 → timbal-2.2.6}/python/timbal/core/test_model.py +0 -0
- {timbal-2.2.4 → timbal-2.2.6}/python/timbal/core/tool.py +0 -0
- {timbal-2.2.4 → timbal-2.2.6}/python/timbal/core/tool_set.py +0 -0
- {timbal-2.2.4 → timbal-2.2.6}/python/timbal/core/workflow.py +0 -0
- {timbal-2.2.4 → timbal-2.2.6}/python/timbal/errors.py +0 -0
- {timbal-2.2.4 → timbal-2.2.6}/python/timbal/evals/__init__.py +0 -0
- {timbal-2.2.4 → timbal-2.2.6}/python/timbal/evals/cli.py +0 -0
- {timbal-2.2.4 → timbal-2.2.6}/python/timbal/evals/display.py +0 -0
- {timbal-2.2.4 → timbal-2.2.6}/python/timbal/evals/fixtures/agent.py +0 -0
- {timbal-2.2.4 → timbal-2.2.6}/python/timbal/evals/fixtures/eval_examples.yaml +0 -0
- {timbal-2.2.4 → timbal-2.2.6}/python/timbal/evals/fixtures/eval_flow_validators.yaml +0 -0
- {timbal-2.2.4 → timbal-2.2.6}/python/timbal/evals/fixtures/eval_negations.yaml +0 -0
- {timbal-2.2.4 → timbal-2.2.6}/python/timbal/evals/fixtures/eval_parallel.yaml +0 -0
- {timbal-2.2.4 → timbal-2.2.6}/python/timbal/evals/fixtures/eval_subagent.yaml +0 -0
- {timbal-2.2.4 → timbal-2.2.6}/python/timbal/evals/fixtures/eval_transforms.yaml +0 -0
- {timbal-2.2.4 → timbal-2.2.6}/python/timbal/evals/fixtures/test_invalid_validator.yaml +0 -0
- {timbal-2.2.4 → timbal-2.2.6}/python/timbal/evals/models.py +0 -0
- {timbal-2.2.4 → timbal-2.2.6}/python/timbal/evals/runner.py +0 -0
- {timbal-2.2.4 → timbal-2.2.6}/python/timbal/evals/utils.py +0 -0
- {timbal-2.2.4 → timbal-2.2.6}/python/timbal/evals/validators/__init__.py +0 -0
- {timbal-2.2.4 → timbal-2.2.6}/python/timbal/evals/validators/base.py +0 -0
- {timbal-2.2.4 → timbal-2.2.6}/python/timbal/evals/validators/comparison_base.py +0 -0
- {timbal-2.2.4 → timbal-2.2.6}/python/timbal/evals/validators/contains.py +0 -0
- {timbal-2.2.4 → timbal-2.2.6}/python/timbal/evals/validators/contains_all.py +0 -0
- {timbal-2.2.4 → timbal-2.2.6}/python/timbal/evals/validators/contains_any.py +0 -0
- {timbal-2.2.4 → timbal-2.2.6}/python/timbal/evals/validators/context.py +0 -0
- {timbal-2.2.4 → timbal-2.2.6}/python/timbal/evals/validators/email.py +0 -0
- {timbal-2.2.4 → timbal-2.2.6}/python/timbal/evals/validators/ends_with.py +0 -0
- {timbal-2.2.4 → timbal-2.2.6}/python/timbal/evals/validators/eq.py +0 -0
- {timbal-2.2.4 → timbal-2.2.6}/python/timbal/evals/validators/gt.py +0 -0
- {timbal-2.2.4 → timbal-2.2.6}/python/timbal/evals/validators/gte.py +0 -0
- {timbal-2.2.4 → timbal-2.2.6}/python/timbal/evals/validators/json.py +0 -0
- {timbal-2.2.4 → timbal-2.2.6}/python/timbal/evals/validators/language.py +0 -0
- {timbal-2.2.4 → timbal-2.2.6}/python/timbal/evals/validators/length.py +0 -0
- {timbal-2.2.4 → timbal-2.2.6}/python/timbal/evals/validators/llm_base.py +0 -0
- {timbal-2.2.4 → timbal-2.2.6}/python/timbal/evals/validators/lt.py +0 -0
- {timbal-2.2.4 → timbal-2.2.6}/python/timbal/evals/validators/lte.py +0 -0
- {timbal-2.2.4 → timbal-2.2.6}/python/timbal/evals/validators/max_length.py +0 -0
- {timbal-2.2.4 → timbal-2.2.6}/python/timbal/evals/validators/min_length.py +0 -0
- {timbal-2.2.4 → timbal-2.2.6}/python/timbal/evals/validators/not_null.py +0 -0
- {timbal-2.2.4 → timbal-2.2.6}/python/timbal/evals/validators/parallel.py +0 -0
- {timbal-2.2.4 → timbal-2.2.6}/python/timbal/evals/validators/pattern.py +0 -0
- {timbal-2.2.4 → timbal-2.2.6}/python/timbal/evals/validators/prompt.py +0 -0
- {timbal-2.2.4 → timbal-2.2.6}/python/timbal/evals/validators/semantic.py +0 -0
- {timbal-2.2.4 → timbal-2.2.6}/python/timbal/evals/validators/seq.py +0 -0
- {timbal-2.2.4 → timbal-2.2.6}/python/timbal/evals/validators/starts_with.py +0 -0
- {timbal-2.2.4 → timbal-2.2.6}/python/timbal/evals/validators/type.py +0 -0
- {timbal-2.2.4 → timbal-2.2.6}/python/timbal/logs.py +0 -0
- {timbal-2.2.4 → timbal-2.2.6}/python/timbal/models.yaml +0 -0
- {timbal-2.2.4 → timbal-2.2.6}/python/timbal/platform/__init__.py +0 -0
- {timbal-2.2.4 → timbal-2.2.6}/python/timbal/platform/integrations.py +0 -0
- {timbal-2.2.4 → timbal-2.2.6}/python/timbal/platform/knowledge_bases/__init__.py +0 -0
- {timbal-2.2.4 → timbal-2.2.6}/python/timbal/platform/knowledge_bases/query.py +0 -0
- {timbal-2.2.4 → timbal-2.2.6}/python/timbal/platform/tool_proxy.py +0 -0
- {timbal-2.2.4 → timbal-2.2.6}/python/timbal/platform/types.py +0 -0
- {timbal-2.2.4 → timbal-2.2.6}/python/timbal/platform/utils.py +0 -0
- {timbal-2.2.4 → timbal-2.2.6}/python/timbal/server/__init__.py +0 -0
- {timbal-2.2.4 → timbal-2.2.6}/python/timbal/server/__main__.py +0 -0
- {timbal-2.2.4 → timbal-2.2.6}/python/timbal/server/http.py +0 -0
- {timbal-2.2.4 → timbal-2.2.6}/python/timbal/server/jobs.py +0 -0
- {timbal-2.2.4 → timbal-2.2.6}/python/timbal/server/voice.html +0 -0
- {timbal-2.2.4 → timbal-2.2.6}/python/timbal/server/voice.py +0 -0
- {timbal-2.2.4 → timbal-2.2.6}/python/timbal/state/__init__.py +0 -0
- {timbal-2.2.4 → timbal-2.2.6}/python/timbal/state/config.py +0 -0
- {timbal-2.2.4 → timbal-2.2.6}/python/timbal/state/config_loader.py +0 -0
- {timbal-2.2.4 → timbal-2.2.6}/python/timbal/state/context.py +0 -0
- {timbal-2.2.4 → timbal-2.2.6}/python/timbal/state/dependency_analyzer.py +0 -0
- {timbal-2.2.4 → timbal-2.2.6}/python/timbal/state/tracing/__init__.py +0 -0
- {timbal-2.2.4 → timbal-2.2.6}/python/timbal/state/tracing/exporters/__init__.py +0 -0
- {timbal-2.2.4 → timbal-2.2.6}/python/timbal/state/tracing/exporters/otel.py +0 -0
- {timbal-2.2.4 → timbal-2.2.6}/python/timbal/state/tracing/providers/__init__.py +0 -0
- {timbal-2.2.4 → timbal-2.2.6}/python/timbal/state/tracing/providers/base.py +0 -0
- {timbal-2.2.4 → timbal-2.2.6}/python/timbal/state/tracing/providers/in_memory.py +0 -0
- {timbal-2.2.4 → timbal-2.2.6}/python/timbal/state/tracing/providers/jsonl.py +0 -0
- {timbal-2.2.4 → timbal-2.2.6}/python/timbal/state/tracing/providers/platform.py +0 -0
- {timbal-2.2.4 → timbal-2.2.6}/python/timbal/state/tracing/providers/sqlite.py +0 -0
- {timbal-2.2.4 → timbal-2.2.6}/python/timbal/state/tracing/span.py +0 -0
- {timbal-2.2.4 → timbal-2.2.6}/python/timbal/state/tracing/trace.py +0 -0
- {timbal-2.2.4 → timbal-2.2.6}/python/timbal/tools/_creds.py +0 -0
- {timbal-2.2.4 → timbal-2.2.6}/python/timbal/tools/asana.py +0 -0
- {timbal-2.2.4 → timbal-2.2.6}/python/timbal/tools/bash.py +0 -0
- {timbal-2.2.4 → timbal-2.2.6}/python/timbal/tools/cala.py +0 -0
- {timbal-2.2.4 → timbal-2.2.6}/python/timbal/tools/cloudflare.py +0 -0
- {timbal-2.2.4 → timbal-2.2.6}/python/timbal/tools/dynamics_business_central.py +0 -0
- {timbal-2.2.4 → timbal-2.2.6}/python/timbal/tools/dynamics_sales.py +0 -0
- {timbal-2.2.4 → timbal-2.2.6}/python/timbal/tools/edit.py +0 -0
- {timbal-2.2.4 → timbal-2.2.6}/python/timbal/tools/excel.py +0 -0
- {timbal-2.2.4 → timbal-2.2.6}/python/timbal/tools/fathom.py +0 -0
- {timbal-2.2.4 → timbal-2.2.6}/python/timbal/tools/firecrawl.py +0 -0
- {timbal-2.2.4 → timbal-2.2.6}/python/timbal/tools/gmail.py +0 -0
- {timbal-2.2.4 → timbal-2.2.6}/python/timbal/tools/google_business.py +0 -0
- {timbal-2.2.4 → timbal-2.2.6}/python/timbal/tools/google_calendar.py +0 -0
- {timbal-2.2.4 → timbal-2.2.6}/python/timbal/tools/google_maps.py +0 -0
- {timbal-2.2.4 → timbal-2.2.6}/python/timbal/tools/google_merchant_center.py +0 -0
- {timbal-2.2.4 → timbal-2.2.6}/python/timbal/tools/google_search_console.py +0 -0
- {timbal-2.2.4 → timbal-2.2.6}/python/timbal/tools/google_sheets.py +0 -0
- {timbal-2.2.4 → timbal-2.2.6}/python/timbal/tools/happy_scribe.py +0 -0
- {timbal-2.2.4 → timbal-2.2.6}/python/timbal/tools/hubspot.py +0 -0
- {timbal-2.2.4 → timbal-2.2.6}/python/timbal/tools/interaction.py +0 -0
- {timbal-2.2.4 → timbal-2.2.6}/python/timbal/tools/klaviyo.py +0 -0
- {timbal-2.2.4 → timbal-2.2.6}/python/timbal/tools/knowledge_base.py +0 -0
- {timbal-2.2.4 → timbal-2.2.6}/python/timbal/tools/krea.py +0 -0
- {timbal-2.2.4 → timbal-2.2.6}/python/timbal/tools/lancedb.py +0 -0
- {timbal-2.2.4 → timbal-2.2.6}/python/timbal/tools/linkedin.py +0 -0
- {timbal-2.2.4 → timbal-2.2.6}/python/timbal/tools/mongodb.py +0 -0
- {timbal-2.2.4 → timbal-2.2.6}/python/timbal/tools/outlook.py +0 -0
- {timbal-2.2.4 → timbal-2.2.6}/python/timbal/tools/powerbi.py +0 -0
- {timbal-2.2.4 → timbal-2.2.6}/python/timbal/tools/read.py +0 -0
- {timbal-2.2.4 → timbal-2.2.6}/python/timbal/tools/resend.py +0 -0
- {timbal-2.2.4 → timbal-2.2.6}/python/timbal/tools/salesforce.py +0 -0
- {timbal-2.2.4 → timbal-2.2.6}/python/timbal/tools/scraperapi.py +0 -0
- {timbal-2.2.4 → timbal-2.2.6}/python/timbal/tools/shopify.py +0 -0
- {timbal-2.2.4 → timbal-2.2.6}/python/timbal/tools/slack.py +0 -0
- {timbal-2.2.4 → timbal-2.2.6}/python/timbal/tools/tavily.py +0 -0
- {timbal-2.2.4 → timbal-2.2.6}/python/timbal/tools/web_search.py +0 -0
- {timbal-2.2.4 → timbal-2.2.6}/python/timbal/tools/write.py +0 -0
- {timbal-2.2.4 → timbal-2.2.6}/python/timbal/tools/xai.py +0 -0
- {timbal-2.2.4 → timbal-2.2.6}/python/timbal/tools/zoho_crm.py +0 -0
- {timbal-2.2.4 → timbal-2.2.6}/python/timbal/types/__init__.py +0 -0
- {timbal-2.2.4 → timbal-2.2.6}/python/timbal/types/approval.py +0 -0
- {timbal-2.2.4 → timbal-2.2.6}/python/timbal/types/content/__init__.py +0 -0
- {timbal-2.2.4 → timbal-2.2.6}/python/timbal/types/content/base.py +0 -0
- {timbal-2.2.4 → timbal-2.2.6}/python/timbal/types/content/custom.py +0 -0
- {timbal-2.2.4 → timbal-2.2.6}/python/timbal/types/content/file.py +0 -0
- {timbal-2.2.4 → timbal-2.2.6}/python/timbal/types/content/text.py +0 -0
- {timbal-2.2.4 → timbal-2.2.6}/python/timbal/types/content/thinking.py +0 -0
- {timbal-2.2.4 → timbal-2.2.6}/python/timbal/types/content/tool_result.py +0 -0
- {timbal-2.2.4 → timbal-2.2.6}/python/timbal/types/content/tool_use.py +0 -0
- {timbal-2.2.4 → timbal-2.2.6}/python/timbal/types/events/__init__.py +0 -0
- {timbal-2.2.4 → timbal-2.2.6}/python/timbal/types/events/approval.py +0 -0
- {timbal-2.2.4 → timbal-2.2.6}/python/timbal/types/events/base.py +0 -0
- {timbal-2.2.4 → timbal-2.2.6}/python/timbal/types/events/delta.py +0 -0
- {timbal-2.2.4 → timbal-2.2.6}/python/timbal/types/events/interaction.py +0 -0
- {timbal-2.2.4 → timbal-2.2.6}/python/timbal/types/events/output.py +0 -0
- {timbal-2.2.4 → timbal-2.2.6}/python/timbal/types/events/start.py +0 -0
- {timbal-2.2.4 → timbal-2.2.6}/python/timbal/types/file.py +0 -0
- {timbal-2.2.4 → timbal-2.2.6}/python/timbal/types/message.py +0 -0
- {timbal-2.2.4 → timbal-2.2.6}/python/timbal/types/run_status.py +0 -0
- {timbal-2.2.4 → timbal-2.2.6}/python/timbal/utils/__init__.py +0 -0
- {timbal-2.2.4 → timbal-2.2.6}/python/timbal/utils/import_spec.py +0 -0
- {timbal-2.2.4 → timbal-2.2.6}/python/timbal/utils/model.py +0 -0
- {timbal-2.2.4 → timbal-2.2.6}/python/timbal/utils/net.py +0 -0
- {timbal-2.2.4 → timbal-2.2.6}/python/timbal/utils/schema.py +0 -0
- {timbal-2.2.4 → timbal-2.2.6}/python/timbal/utils/serialization.py +0 -0
- {timbal-2.2.4 → timbal-2.2.6}/python/timbal/voice/__init__.py +0 -0
- {timbal-2.2.4 → timbal-2.2.6}/python/timbal/voice/elevenlabs.py +0 -0
- {timbal-2.2.4 → timbal-2.2.6}/python/timbal/voice/session.py +0 -0
|
@@ -18,7 +18,7 @@ version_tuple: tuple[int | str, ...]
|
|
|
18
18
|
commit_id: str | None
|
|
19
19
|
__commit_id__: str | None
|
|
20
20
|
|
|
21
|
-
__version__ = version = '2.2.
|
|
22
|
-
__version_tuple__ = version_tuple = (2, 2,
|
|
21
|
+
__version__ = version = '2.2.6'
|
|
22
|
+
__version_tuple__ = version_tuple = (2, 2, 6)
|
|
23
23
|
|
|
24
24
|
__commit_id__ = commit_id = None
|
|
@@ -493,6 +493,7 @@ if TYPE_CHECKING:
|
|
|
493
493
|
OutlookTrash,
|
|
494
494
|
OutlookUpdateEmail,
|
|
495
495
|
)
|
|
496
|
+
from .parallel import ParallelExtract, ParallelSearch, ParallelTaskRun
|
|
496
497
|
from .pinecone import (
|
|
497
498
|
PineconeCreateIndex,
|
|
498
499
|
PineconeDeleteVectors,
|
|
@@ -1330,6 +1331,9 @@ __all__ = [
|
|
|
1330
1331
|
"TavilyExtract",
|
|
1331
1332
|
"TavilyMap",
|
|
1332
1333
|
"TavilySearch",
|
|
1334
|
+
"ParallelSearch",
|
|
1335
|
+
"ParallelExtract",
|
|
1336
|
+
"ParallelTaskRun",
|
|
1333
1337
|
"WebSearch",
|
|
1334
1338
|
"Write",
|
|
1335
1339
|
"XSearch",
|
|
@@ -2400,6 +2404,9 @@ _LAZY_IMPORTS = {
|
|
|
2400
2404
|
"TavilyExtract": ".tavily",
|
|
2401
2405
|
"TavilyMap": ".tavily",
|
|
2402
2406
|
"TavilySearch": ".tavily",
|
|
2407
|
+
"ParallelSearch": ".parallel",
|
|
2408
|
+
"ParallelExtract": ".parallel",
|
|
2409
|
+
"ParallelTaskRun": ".parallel",
|
|
2403
2410
|
"WebSearch": ".web_search",
|
|
2404
2411
|
"Write": ".write",
|
|
2405
2412
|
"XSearch": ".xai",
|
|
@@ -33,8 +33,11 @@ async def _resolve_credentials(tool: Any) -> tuple[str, str | None]:
|
|
|
33
33
|
class ElasticsearchIngestAttachment(Tool):
|
|
34
34
|
name: str = "elasticsearch_ingest_attachment"
|
|
35
35
|
description: str | None = (
|
|
36
|
-
"Ingest a
|
|
37
|
-
"
|
|
36
|
+
"Ingest and parse a file attachment — PDF, Word DOCX, PowerPoint PPTX, "
|
|
37
|
+
"Excel, HTML, RTF, or plain text document — into searchable full text in "
|
|
38
|
+
"an Elasticsearch index using the ingest-attachment (Apache Tika) pipeline. "
|
|
39
|
+
"Extract text and metadata from a base64-encoded document or file for "
|
|
40
|
+
"full-text search."
|
|
38
41
|
)
|
|
39
42
|
integration: Annotated[str, Integration("elasticsearch")] | None = None
|
|
40
43
|
api_key: SecretStr | None = None
|
|
@@ -13,8 +13,9 @@ _ELEVENLABS_BASE = "https://api.elevenlabs.io/v1"
|
|
|
13
13
|
class ElevenLabsTextToSpeech(Tool):
|
|
14
14
|
name: str = "elevenlabs_text_to_speech"
|
|
15
15
|
description: str | None = (
|
|
16
|
-
"
|
|
17
|
-
"
|
|
16
|
+
"Generate a voiceover or narration from text: text-to-speech (TTS) that "
|
|
17
|
+
"produces natural spoken audio in a chosen ElevenLabs voice. Returns the "
|
|
18
|
+
"audio as a base64 string."
|
|
18
19
|
)
|
|
19
20
|
integration: Annotated[str, Integration("elevenlabs")] | None = None
|
|
20
21
|
api_key: SecretStr | None = None
|
|
@@ -37,12 +37,15 @@ def _queue_model_path_from_submit_response(data: dict[str, Any]) -> str | None:
|
|
|
37
37
|
class FalQueueSubmit(Tool):
|
|
38
38
|
name: str = "fal_queue_submit"
|
|
39
39
|
description: str | None = (
|
|
40
|
-
"
|
|
41
|
-
"
|
|
42
|
-
"
|
|
43
|
-
"
|
|
44
|
-
"
|
|
45
|
-
"
|
|
40
|
+
"Run an AI model on fal (e.g. FLUX) to generate images, video, or audio — "
|
|
41
|
+
"submits an async inference/generation job to fal's queue. General-purpose "
|
|
42
|
+
"model runner. Returns request_id, status_url, response_url, cancel_url, and "
|
|
43
|
+
"queue_model_path (canonical path for follow-up calls). Important: fal may "
|
|
44
|
+
"rewrite the route—e.g. you submit fal-ai/flux/schnell but URLs use fal-ai/flux. "
|
|
45
|
+
"For fal_queue_status, fal_queue_result, and fal_queue_cancel always pass "
|
|
46
|
+
"model_id=queue_model_path from this response (or the path segment from "
|
|
47
|
+
"status_url before /requests/), not the original submit string, or status "
|
|
48
|
+
"polling can return HTTP 405."
|
|
46
49
|
)
|
|
47
50
|
integration: Annotated[str, Integration("fal")] | None = None
|
|
48
51
|
api_key: SecretStr | None = None
|
|
@@ -148,8 +148,9 @@ class GeminiImagesGenerateImage(Tool):
|
|
|
148
148
|
class GeminiImagesAnalyzeImage(Tool):
|
|
149
149
|
name: str = "gemini_analyze_image"
|
|
150
150
|
description: str | None = (
|
|
151
|
-
"Analyze
|
|
152
|
-
"
|
|
151
|
+
"Analyze an image with the Gemini vision model: describe a picture, photo, "
|
|
152
|
+
"or screenshot, answer questions about its contents, and OCR — read, "
|
|
153
|
+
"extract, and transcribe text from an image."
|
|
153
154
|
)
|
|
154
155
|
integration: Annotated[str, Integration("gemini")] | None = None
|
|
155
156
|
api_key: SecretStr | None = None
|
|
@@ -74,7 +74,10 @@ class GoogleAnalyticsListAccountSummaries(Tool):
|
|
|
74
74
|
|
|
75
75
|
class GoogleAnalyticsRunReport(Tool):
|
|
76
76
|
name: str = "google_analytics_run_report"
|
|
77
|
-
description: str | None =
|
|
77
|
+
description: str | None = (
|
|
78
|
+
"Run a standard GA4 analytics report — website traffic, visitors, sessions, "
|
|
79
|
+
"pageviews, and conversions — with dimensions, metrics, and date ranges."
|
|
80
|
+
)
|
|
78
81
|
integration: Annotated[str, Integration("google_analytics")] | None = None
|
|
79
82
|
token: SecretStr | None = None
|
|
80
83
|
default_property_id: str | None = None
|
|
@@ -131,7 +134,10 @@ class GoogleAnalyticsRunReport(Tool):
|
|
|
131
134
|
|
|
132
135
|
class GoogleAnalyticsRunRealtimeReport(Tool):
|
|
133
136
|
name: str = "google_analytics_run_realtime_report"
|
|
134
|
-
description: str | None =
|
|
137
|
+
description: str | None = (
|
|
138
|
+
"Run a GA4 realtime report: active users and visitors on your site right "
|
|
139
|
+
"now — live website traffic and events."
|
|
140
|
+
)
|
|
135
141
|
integration: Annotated[str, Integration("google_analytics")] | None = None
|
|
136
142
|
token: SecretStr | None = None
|
|
137
143
|
default_property_id: str | None = None
|
|
@@ -505,7 +505,7 @@ class GoogleDocsGetTabContent(Tool):
|
|
|
505
505
|
class GoogleDocsGetDocument(Tool):
|
|
506
506
|
name: str = "google_docs_get_document"
|
|
507
507
|
description: str | None = (
|
|
508
|
-
"
|
|
508
|
+
"Read and return the text contents of a Google Docs document. "
|
|
509
509
|
"Set include_tabs_content=true for multi-tab documents."
|
|
510
510
|
)
|
|
511
511
|
integration: Annotated[str, Integration("google_docs")] | None = None
|
|
@@ -143,7 +143,7 @@ class GoogleDriveGetDownloadLink(Tool):
|
|
|
143
143
|
|
|
144
144
|
class GoogleDriveGetFile(Tool):
|
|
145
145
|
name: str = "google_drive_get_file"
|
|
146
|
-
description: str | None = "Download and return content of a Google Drive file."
|
|
146
|
+
description: str | None = "Download and return the content of a Google Drive file or document (PDF, Word, etc.) by id."
|
|
147
147
|
integration: Annotated[str, Integration("google_drive")] | None = None
|
|
148
148
|
token: SecretStr | None = None
|
|
149
149
|
|
|
@@ -308,7 +308,7 @@ class GoogleDriveSearchFolders(Tool):
|
|
|
308
308
|
|
|
309
309
|
class GoogleDriveSearchFiles(Tool):
|
|
310
310
|
name: str = "google_drive_search_files"
|
|
311
|
-
description: str | None = "Search
|
|
311
|
+
description: str | None = "Search Google Drive to find a file, document, or folder by name or query. Locate documents in Drive. Supports pagination, filtering by folder, name, and trashed status."
|
|
312
312
|
integration: Annotated[str, Integration("google_drive")] | None = None
|
|
313
313
|
token: SecretStr | None = None
|
|
314
314
|
|
|
@@ -653,7 +653,11 @@ class HiggsfieldSoulTrain(_HiggsfieldTool):
|
|
|
653
653
|
|
|
654
654
|
class HiggsfieldSoulGenerate(_HiggsfieldTool):
|
|
655
655
|
name: str = "higgsfield_soul_generate"
|
|
656
|
-
description: str | None =
|
|
656
|
+
description: str | None = (
|
|
657
|
+
"Generate photorealistic images of a person or character with Higgsfield "
|
|
658
|
+
"Soul — UGC-style content, avatars, and character image generation from a "
|
|
659
|
+
"prompt, using a trained Soul character."
|
|
660
|
+
)
|
|
657
661
|
|
|
658
662
|
def __init__(self, **kwargs: Any) -> None:
|
|
659
663
|
async def _soul_generate(
|
|
@@ -495,7 +495,10 @@ class JiraGetIssueTypesForProject(Tool):
|
|
|
495
495
|
|
|
496
496
|
class JiraCreateIssue(Tool):
|
|
497
497
|
name: str = "jira_create_issue"
|
|
498
|
-
description: str | None =
|
|
498
|
+
description: str | None = (
|
|
499
|
+
"Create a Jira issue — a bug, task, story, or ticket — from a fields "
|
|
500
|
+
"payload (project, issuetype, summary, etc.)."
|
|
501
|
+
)
|
|
499
502
|
integration: Annotated[str, Integration("jira")] | None = None
|
|
500
503
|
token: SecretStr | None = None
|
|
501
504
|
|
|
@@ -29,6 +29,8 @@ def _netsuite_auth_header(
|
|
|
29
29
|
consumer_secret: str,
|
|
30
30
|
token_id: str,
|
|
31
31
|
token_secret: str,
|
|
32
|
+
query_params: dict[str, Any] | None = None,
|
|
33
|
+
body: str | None = None,
|
|
32
34
|
) -> str:
|
|
33
35
|
"""Generate OAuth 1.0a Token-Based Authentication (TBA) header for NetSuite."""
|
|
34
36
|
import base64
|
|
@@ -41,7 +43,7 @@ def _netsuite_auth_header(
|
|
|
41
43
|
nonce = uuid.uuid4().hex
|
|
42
44
|
timestamp = str(int(time.time()))
|
|
43
45
|
|
|
44
|
-
|
|
46
|
+
oauth_params: dict[str, str] = {
|
|
45
47
|
"oauth_consumer_key": consumer_key,
|
|
46
48
|
"oauth_nonce": nonce,
|
|
47
49
|
"oauth_signature_method": "HMAC-SHA256",
|
|
@@ -49,10 +51,21 @@ def _netsuite_auth_header(
|
|
|
49
51
|
"oauth_token": token_id,
|
|
50
52
|
"oauth_version": "1.0",
|
|
51
53
|
}
|
|
54
|
+
if body is not None:
|
|
55
|
+
# NetSuite requires oauth_body_hash for non-form POST/PATCH/PUT bodies.
|
|
56
|
+
oauth_params["oauth_body_hash"] = base64.b64encode(
|
|
57
|
+
hashlib.sha1(body.encode(), usedforsecurity=False).digest()
|
|
58
|
+
).decode()
|
|
59
|
+
|
|
60
|
+
signature_params = dict(oauth_params)
|
|
61
|
+
if query_params:
|
|
62
|
+
for key, value in query_params.items():
|
|
63
|
+
if value is not None:
|
|
64
|
+
signature_params[str(key)] = str(value)
|
|
52
65
|
|
|
53
66
|
sorted_params = "&".join(
|
|
54
67
|
f"{urllib.parse.quote(k, safe='')}={urllib.parse.quote(v, safe='')}"
|
|
55
|
-
for k, v in sorted(
|
|
68
|
+
for k, v in sorted(signature_params.items())
|
|
56
69
|
)
|
|
57
70
|
base_string = (
|
|
58
71
|
f"{method.upper()}&"
|
|
@@ -64,11 +77,11 @@ def _netsuite_auth_header(
|
|
|
64
77
|
hmac.new(signing_key.encode(), base_string.encode(), hashlib.sha256).digest()
|
|
65
78
|
).decode()
|
|
66
79
|
|
|
67
|
-
|
|
80
|
+
oauth_params["oauth_signature"] = signature
|
|
68
81
|
realm = account_id.strip().upper()
|
|
69
82
|
|
|
70
83
|
header_parts = [f'realm="{urllib.parse.quote(realm, safe="")}"'] + [
|
|
71
|
-
f'{k}="{urllib.parse.quote(v, safe="")}"' for k, v in sorted(
|
|
84
|
+
f'{k}="{urllib.parse.quote(v, safe="")}"' for k, v in sorted(oauth_params.items())
|
|
72
85
|
]
|
|
73
86
|
return "OAuth " + ", ".join(header_parts)
|
|
74
87
|
|
|
@@ -273,7 +286,9 @@ class NetSuiteGetAccount(Tool):
|
|
|
273
286
|
if fields:
|
|
274
287
|
params["fields"] = fields
|
|
275
288
|
|
|
276
|
-
auth = _netsuite_auth_header(
|
|
289
|
+
auth = _netsuite_auth_header(
|
|
290
|
+
"GET", url, account_id, consumer_key, consumer_secret, token_id, token_secret, query_params=params
|
|
291
|
+
)
|
|
277
292
|
async with httpx.AsyncClient(timeout=httpx.Timeout(30.0, connect=10.0)) as client:
|
|
278
293
|
response = await client.get(
|
|
279
294
|
url,
|
|
@@ -328,7 +343,9 @@ class NetSuiteListAccounts(Tool):
|
|
|
328
343
|
if query:
|
|
329
344
|
params["q"] = query
|
|
330
345
|
|
|
331
|
-
auth = _netsuite_auth_header(
|
|
346
|
+
auth = _netsuite_auth_header(
|
|
347
|
+
"GET", url, account_id, consumer_key, consumer_secret, token_id, token_secret, query_params=params
|
|
348
|
+
)
|
|
332
349
|
async with httpx.AsyncClient(timeout=httpx.Timeout(30.0, connect=10.0)) as client:
|
|
333
350
|
response = await client.get(url, headers={"Authorization": auth, "Content-Type": "application/json"}, params=params)
|
|
334
351
|
response.raise_for_status()
|
|
@@ -492,7 +509,9 @@ class NetSuiteGetAssemblyBuild(Tool):
|
|
|
492
509
|
if fields:
|
|
493
510
|
params["fields"] = fields
|
|
494
511
|
|
|
495
|
-
auth = _netsuite_auth_header(
|
|
512
|
+
auth = _netsuite_auth_header(
|
|
513
|
+
"GET", url, account_id, consumer_key, consumer_secret, token_id, token_secret, query_params=params
|
|
514
|
+
)
|
|
496
515
|
async with httpx.AsyncClient(timeout=httpx.Timeout(30.0, connect=10.0)) as client:
|
|
497
516
|
response = await client.get(
|
|
498
517
|
url,
|
|
@@ -547,7 +566,9 @@ class NetSuiteListAssemblyBuilds(Tool):
|
|
|
547
566
|
if query:
|
|
548
567
|
params["q"] = query
|
|
549
568
|
|
|
550
|
-
auth = _netsuite_auth_header(
|
|
569
|
+
auth = _netsuite_auth_header(
|
|
570
|
+
"GET", url, account_id, consumer_key, consumer_secret, token_id, token_secret, query_params=params
|
|
571
|
+
)
|
|
551
572
|
async with httpx.AsyncClient(timeout=httpx.Timeout(30.0, connect=10.0)) as client:
|
|
552
573
|
response = await client.get(url, headers={"Authorization": auth, "Content-Type": "application/json"}, params=params)
|
|
553
574
|
response.raise_for_status()
|
|
@@ -952,7 +973,9 @@ class NetSuiteGetAssemblyItem(Tool):
|
|
|
952
973
|
if fields:
|
|
953
974
|
params["fields"] = fields
|
|
954
975
|
|
|
955
|
-
auth = _netsuite_auth_header(
|
|
976
|
+
auth = _netsuite_auth_header(
|
|
977
|
+
"GET", url, account_id, consumer_key, consumer_secret, token_id, token_secret, query_params=params
|
|
978
|
+
)
|
|
956
979
|
async with httpx.AsyncClient(timeout=httpx.Timeout(30.0, connect=10.0)) as client:
|
|
957
980
|
response = await client.get(
|
|
958
981
|
url,
|
|
@@ -1007,7 +1030,9 @@ class NetSuiteListAssemblyItems(Tool):
|
|
|
1007
1030
|
if query:
|
|
1008
1031
|
params["q"] = query
|
|
1009
1032
|
|
|
1010
|
-
auth = _netsuite_auth_header(
|
|
1033
|
+
auth = _netsuite_auth_header(
|
|
1034
|
+
"GET", url, account_id, consumer_key, consumer_secret, token_id, token_secret, query_params=params
|
|
1035
|
+
)
|
|
1011
1036
|
async with httpx.AsyncClient(timeout=httpx.Timeout(30.0, connect=10.0)) as client:
|
|
1012
1037
|
response = await client.get(url, headers={"Authorization": auth, "Content-Type": "application/json"}, params=params)
|
|
1013
1038
|
response.raise_for_status()
|
|
@@ -1108,7 +1133,9 @@ class NetSuiteSuiteQL(Tool):
|
|
|
1108
1133
|
|
|
1109
1134
|
payload = {"q": query}
|
|
1110
1135
|
params = {"limit": min(limit, 1000), "offset": offset}
|
|
1111
|
-
auth = _netsuite_auth_header(
|
|
1136
|
+
auth = _netsuite_auth_header(
|
|
1137
|
+
"POST", url, account_id, consumer_key, consumer_secret, token_id, token_secret, query_params=params
|
|
1138
|
+
)
|
|
1112
1139
|
|
|
1113
1140
|
async with httpx.AsyncClient(timeout=httpx.Timeout(30.0, connect=10.0)) as client:
|
|
1114
1141
|
response = await client.post(
|
|
@@ -1284,7 +1311,9 @@ class NetSuiteGetBillingAccount(Tool):
|
|
|
1284
1311
|
if fields:
|
|
1285
1312
|
params["fields"] = fields
|
|
1286
1313
|
|
|
1287
|
-
auth = _netsuite_auth_header(
|
|
1314
|
+
auth = _netsuite_auth_header(
|
|
1315
|
+
"GET", url, account_id, consumer_key, consumer_secret, token_id, token_secret, query_params=params
|
|
1316
|
+
)
|
|
1288
1317
|
async with httpx.AsyncClient(timeout=httpx.Timeout(30.0, connect=10.0)) as client:
|
|
1289
1318
|
response = await client.get(
|
|
1290
1319
|
url,
|
|
@@ -1339,7 +1368,9 @@ class NetSuiteListBillingAccounts(Tool):
|
|
|
1339
1368
|
if query:
|
|
1340
1369
|
params["q"] = query
|
|
1341
1370
|
|
|
1342
|
-
auth = _netsuite_auth_header(
|
|
1371
|
+
auth = _netsuite_auth_header(
|
|
1372
|
+
"GET", url, account_id, consumer_key, consumer_secret, token_id, token_secret, query_params=params
|
|
1373
|
+
)
|
|
1343
1374
|
async with httpx.AsyncClient(timeout=httpx.Timeout(30.0, connect=10.0)) as client:
|
|
1344
1375
|
response = await client.get(url, headers={"Authorization": auth, "Content-Type": "application/json"}, params=params)
|
|
1345
1376
|
response.raise_for_status()
|
|
@@ -1552,7 +1583,9 @@ class NetSuiteGetBillingSchedule(Tool):
|
|
|
1552
1583
|
if fields:
|
|
1553
1584
|
params["fields"] = fields
|
|
1554
1585
|
|
|
1555
|
-
auth = _netsuite_auth_header(
|
|
1586
|
+
auth = _netsuite_auth_header(
|
|
1587
|
+
"GET", url, account_id, consumer_key, consumer_secret, token_id, token_secret, query_params=params
|
|
1588
|
+
)
|
|
1556
1589
|
async with httpx.AsyncClient(timeout=httpx.Timeout(30.0, connect=10.0)) as client:
|
|
1557
1590
|
response = await client.get(
|
|
1558
1591
|
url,
|
|
@@ -1607,7 +1640,9 @@ class NetSuiteListBillingSchedules(Tool):
|
|
|
1607
1640
|
if query:
|
|
1608
1641
|
params["q"] = query
|
|
1609
1642
|
|
|
1610
|
-
auth = _netsuite_auth_header(
|
|
1643
|
+
auth = _netsuite_auth_header(
|
|
1644
|
+
"GET", url, account_id, consumer_key, consumer_secret, token_id, token_secret, query_params=params
|
|
1645
|
+
)
|
|
1611
1646
|
async with httpx.AsyncClient(timeout=httpx.Timeout(30.0, connect=10.0)) as client:
|
|
1612
1647
|
response = await client.get(url, headers={"Authorization": auth, "Content-Type": "application/json"}, params=params)
|
|
1613
1648
|
response.raise_for_status()
|
|
@@ -1916,7 +1951,9 @@ class NetSuiteGetCalendarEvent(Tool):
|
|
|
1916
1951
|
if fields:
|
|
1917
1952
|
params["fields"] = fields
|
|
1918
1953
|
|
|
1919
|
-
auth = _netsuite_auth_header(
|
|
1954
|
+
auth = _netsuite_auth_header(
|
|
1955
|
+
"GET", url, account_id, consumer_key, consumer_secret, token_id, token_secret, query_params=params
|
|
1956
|
+
)
|
|
1920
1957
|
async with httpx.AsyncClient(timeout=httpx.Timeout(30.0, connect=10.0)) as client:
|
|
1921
1958
|
response = await client.get(
|
|
1922
1959
|
url,
|
|
@@ -1971,7 +2008,9 @@ class NetSuiteListCalendarEvents(Tool):
|
|
|
1971
2008
|
if query:
|
|
1972
2009
|
params["q"] = query
|
|
1973
2010
|
|
|
1974
|
-
auth = _netsuite_auth_header(
|
|
2011
|
+
auth = _netsuite_auth_header(
|
|
2012
|
+
"GET", url, account_id, consumer_key, consumer_secret, token_id, token_secret, query_params=params
|
|
2013
|
+
)
|
|
1975
2014
|
async with httpx.AsyncClient(timeout=httpx.Timeout(30.0, connect=10.0)) as client:
|
|
1976
2015
|
response = await client.get(url, headers={"Authorization": auth, "Content-Type": "application/json"}, params=params)
|
|
1977
2016
|
response.raise_for_status()
|
|
@@ -2118,7 +2157,9 @@ class NetSuiteCustomSuiteQL(Tool):
|
|
|
2118
2157
|
|
|
2119
2158
|
payload = {"q": query}
|
|
2120
2159
|
params = {"limit": min(limit, 1000), "offset": offset}
|
|
2121
|
-
auth = _netsuite_auth_header(
|
|
2160
|
+
auth = _netsuite_auth_header(
|
|
2161
|
+
"POST", url, account_id, consumer_key, consumer_secret, token_id, token_secret, query_params=params
|
|
2162
|
+
)
|
|
2122
2163
|
|
|
2123
2164
|
async with httpx.AsyncClient(timeout=httpx.Timeout(30.0, connect=10.0)) as client:
|
|
2124
2165
|
response = await client.post(
|
|
@@ -2287,7 +2328,9 @@ class NetSuiteGetIntercompanyJournalEntry(Tool):
|
|
|
2287
2328
|
if fields:
|
|
2288
2329
|
params["fields"] = fields
|
|
2289
2330
|
|
|
2290
|
-
auth = _netsuite_auth_header(
|
|
2331
|
+
auth = _netsuite_auth_header(
|
|
2332
|
+
"GET", url, account_id, consumer_key, consumer_secret, token_id, token_secret, query_params=params
|
|
2333
|
+
)
|
|
2291
2334
|
async with httpx.AsyncClient(timeout=httpx.Timeout(30.0, connect=10.0)) as client:
|
|
2292
2335
|
response = await client.get(
|
|
2293
2336
|
url,
|
|
@@ -2342,7 +2385,9 @@ class NetSuiteListIntercompanyJournalEntries(Tool):
|
|
|
2342
2385
|
if query:
|
|
2343
2386
|
params["q"] = query
|
|
2344
2387
|
|
|
2345
|
-
auth = _netsuite_auth_header(
|
|
2388
|
+
auth = _netsuite_auth_header(
|
|
2389
|
+
"GET", url, account_id, consumer_key, consumer_secret, token_id, token_secret, query_params=params
|
|
2390
|
+
)
|
|
2346
2391
|
async with httpx.AsyncClient(timeout=httpx.Timeout(30.0, connect=10.0)) as client:
|
|
2347
2392
|
response = await client.get(url, headers={"Authorization": auth, "Content-Type": "application/json"}, params=params)
|
|
2348
2393
|
response.raise_for_status()
|
|
@@ -2557,7 +2602,9 @@ class NetSuiteGetBinTransfer(Tool):
|
|
|
2557
2602
|
if fields:
|
|
2558
2603
|
params["fields"] = fields
|
|
2559
2604
|
|
|
2560
|
-
auth = _netsuite_auth_header(
|
|
2605
|
+
auth = _netsuite_auth_header(
|
|
2606
|
+
"GET", url, account_id, consumer_key, consumer_secret, token_id, token_secret, query_params=params
|
|
2607
|
+
)
|
|
2561
2608
|
async with httpx.AsyncClient(timeout=httpx.Timeout(30.0, connect=10.0)) as client:
|
|
2562
2609
|
response = await client.get(
|
|
2563
2610
|
url,
|
|
@@ -2612,7 +2659,9 @@ class NetSuiteListBinTransfers(Tool):
|
|
|
2612
2659
|
if query:
|
|
2613
2660
|
params["q"] = query
|
|
2614
2661
|
|
|
2615
|
-
auth = _netsuite_auth_header(
|
|
2662
|
+
auth = _netsuite_auth_header(
|
|
2663
|
+
"GET", url, account_id, consumer_key, consumer_secret, token_id, token_secret, query_params=params
|
|
2664
|
+
)
|
|
2616
2665
|
async with httpx.AsyncClient(timeout=httpx.Timeout(30.0, connect=10.0)) as client:
|
|
2617
2666
|
response = await client.get(url, headers={"Authorization": auth, "Content-Type": "application/json"}, params=params)
|
|
2618
2667
|
response.raise_for_status()
|
|
@@ -127,7 +127,7 @@ class OneDriveListFiles(Tool):
|
|
|
127
127
|
|
|
128
128
|
class OneDriveGetFile(Tool):
|
|
129
129
|
name: str = "onedrive_get_file"
|
|
130
|
-
description: str | None = "Get
|
|
130
|
+
description: str | None = "Get the content and metadata of a OneDrive file or document by id."
|
|
131
131
|
integration: Annotated[str, Integration("onedrive")] | None = None
|
|
132
132
|
|
|
133
133
|
def get_config(self) -> dict[str, Any]:
|
|
@@ -210,7 +210,7 @@ class OneDriveFindFile(Tool):
|
|
|
210
210
|
|
|
211
211
|
class OneDriveDownloadFile(Tool):
|
|
212
212
|
name: str = "onedrive_download_file"
|
|
213
|
-
description: str | None = "Download a file
|
|
213
|
+
description: str | None = "Download a OneDrive file or document (Word, Excel, PDF, etc.) by id."
|
|
214
214
|
integration: Annotated[str, Integration("onedrive")] | None = None
|
|
215
215
|
|
|
216
216
|
def get_config(self) -> dict[str, Any]:
|