timbal 2.2.6__tar.gz → 2.2.7__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.6 → timbal-2.2.7}/PKG-INFO +1 -1
- {timbal-2.2.6 → timbal-2.2.7}/python/timbal/_version.py +2 -2
- {timbal-2.2.6 → timbal-2.2.7}/python/timbal/core/models.py +2 -0
- {timbal-2.2.6 → timbal-2.2.7}/python/timbal/models.yaml +20 -0
- {timbal-2.2.6 → timbal-2.2.7}/python/timbal/types/file.py +23 -8
- {timbal-2.2.6 → timbal-2.2.7}/.gitignore +0 -0
- {timbal-2.2.6 → timbal-2.2.7}/LICENSE +0 -0
- {timbal-2.2.6 → timbal-2.2.7}/README.md +0 -0
- {timbal-2.2.6 → timbal-2.2.7}/docs/api-reference/ace/chat-completions.mdx +0 -0
- {timbal-2.2.6 → timbal-2.2.7}/docs/api-reference/ace/create-from-workforce.mdx +0 -0
- {timbal-2.2.6 → timbal-2.2.7}/docs/api-reference/ace/jobs/cancel.mdx +0 -0
- {timbal-2.2.6 → timbal-2.2.7}/docs/api-reference/ace/jobs/get.mdx +0 -0
- {timbal-2.2.6 → timbal-2.2.7}/docs/api-reference/ace/jobs/list.mdx +0 -0
- {timbal-2.2.6 → timbal-2.2.7}/docs/api-reference/ace/jobs/retry.mdx +0 -0
- {timbal-2.2.6 → timbal-2.2.7}/docs/api-reference/ace/link.mdx +0 -0
- {timbal-2.2.6 → timbal-2.2.7}/docs/api-reference/ace/list-context-vars.mdx +0 -0
- {timbal-2.2.6 → timbal-2.2.7}/docs/api-reference/ace/list-policies.mdx +0 -0
- {timbal-2.2.6 → timbal-2.2.7}/docs/api-reference/ace/messages.mdx +0 -0
- {timbal-2.2.6 → timbal-2.2.7}/docs/api-reference/ace/responses.mdx +0 -0
- {timbal-2.2.6 → timbal-2.2.7}/docs/api-reference/ace/unlink.mdx +0 -0
- {timbal-2.2.6 → timbal-2.2.7}/pyproject.toml +0 -0
- {timbal-2.2.6 → timbal-2.2.7}/pyrightconfig.json +0 -0
- {timbal-2.2.6 → timbal-2.2.7}/python/timbal/__init__.py +0 -0
- {timbal-2.2.6 → timbal-2.2.7}/python/timbal/codegen/__init__.py +0 -0
- {timbal-2.2.6 → timbal-2.2.7}/python/timbal/codegen/__main__.py +0 -0
- {timbal-2.2.6 → timbal-2.2.7}/python/timbal/codegen/cli_utils.py +0 -0
- {timbal-2.2.6 → timbal-2.2.7}/python/timbal/codegen/cst_utils.py +0 -0
- {timbal-2.2.6 → timbal-2.2.7}/python/timbal/codegen/flow.py +0 -0
- {timbal-2.2.6 → timbal-2.2.7}/python/timbal/codegen/format.py +0 -0
- {timbal-2.2.6 → timbal-2.2.7}/python/timbal/codegen/model_discovery.py +0 -0
- {timbal-2.2.6 → timbal-2.2.7}/python/timbal/codegen/test.py +0 -0
- {timbal-2.2.6 → timbal-2.2.7}/python/timbal/codegen/tool_discovery.py +0 -0
- {timbal-2.2.6 → timbal-2.2.7}/python/timbal/codegen/transformers/__init__.py +0 -0
- {timbal-2.2.6 → timbal-2.2.7}/python/timbal/codegen/transformers/add_edge.py +0 -0
- {timbal-2.2.6 → timbal-2.2.7}/python/timbal/codegen/transformers/add_step.py +0 -0
- {timbal-2.2.6 → timbal-2.2.7}/python/timbal/codegen/transformers/add_tool.py +0 -0
- {timbal-2.2.6 → timbal-2.2.7}/python/timbal/codegen/transformers/remove_edge.py +0 -0
- {timbal-2.2.6 → timbal-2.2.7}/python/timbal/codegen/transformers/remove_step.py +0 -0
- {timbal-2.2.6 → timbal-2.2.7}/python/timbal/codegen/transformers/remove_tool.py +0 -0
- {timbal-2.2.6 → timbal-2.2.7}/python/timbal/codegen/transformers/set_config.py +0 -0
- {timbal-2.2.6 → timbal-2.2.7}/python/timbal/codegen/transformers/set_param.py +0 -0
- {timbal-2.2.6 → timbal-2.2.7}/python/timbal/codegen/transformers/set_position.py +0 -0
- {timbal-2.2.6 → timbal-2.2.7}/python/timbal/collectors/__init__.py +0 -0
- {timbal-2.2.6 → timbal-2.2.7}/python/timbal/collectors/base.py +0 -0
- {timbal-2.2.6 → timbal-2.2.7}/python/timbal/collectors/impl/__init__.py +0 -0
- {timbal-2.2.6 → timbal-2.2.7}/python/timbal/collectors/impl/anthropic.py +0 -0
- {timbal-2.2.6 → timbal-2.2.7}/python/timbal/collectors/impl/default.py +0 -0
- {timbal-2.2.6 → timbal-2.2.7}/python/timbal/collectors/impl/message.py +0 -0
- {timbal-2.2.6 → timbal-2.2.7}/python/timbal/collectors/impl/openai.py +0 -0
- {timbal-2.2.6 → timbal-2.2.7}/python/timbal/collectors/impl/string.py +0 -0
- {timbal-2.2.6 → timbal-2.2.7}/python/timbal/collectors/impl/timbal.py +0 -0
- {timbal-2.2.6 → timbal-2.2.7}/python/timbal/collectors/registry.py +0 -0
- {timbal-2.2.6 → timbal-2.2.7}/python/timbal/core/__init__.py +0 -0
- {timbal-2.2.6 → timbal-2.2.7}/python/timbal/core/agent.py +0 -0
- {timbal-2.2.6 → timbal-2.2.7}/python/timbal/core/fallback_model.py +0 -0
- {timbal-2.2.6 → timbal-2.2.7}/python/timbal/core/llm_router.py +0 -0
- {timbal-2.2.6 → timbal-2.2.7}/python/timbal/core/mcp.py +0 -0
- {timbal-2.2.6 → timbal-2.2.7}/python/timbal/core/memory_compaction.py +0 -0
- {timbal-2.2.6 → timbal-2.2.7}/python/timbal/core/runnable.py +0 -0
- {timbal-2.2.6 → timbal-2.2.7}/python/timbal/core/skill.py +0 -0
- {timbal-2.2.6 → timbal-2.2.7}/python/timbal/core/test_model.py +0 -0
- {timbal-2.2.6 → timbal-2.2.7}/python/timbal/core/tool.py +0 -0
- {timbal-2.2.6 → timbal-2.2.7}/python/timbal/core/tool_set.py +0 -0
- {timbal-2.2.6 → timbal-2.2.7}/python/timbal/core/workflow.py +0 -0
- {timbal-2.2.6 → timbal-2.2.7}/python/timbal/errors.py +0 -0
- {timbal-2.2.6 → timbal-2.2.7}/python/timbal/evals/__init__.py +0 -0
- {timbal-2.2.6 → timbal-2.2.7}/python/timbal/evals/cli.py +0 -0
- {timbal-2.2.6 → timbal-2.2.7}/python/timbal/evals/display.py +0 -0
- {timbal-2.2.6 → timbal-2.2.7}/python/timbal/evals/fixtures/agent.py +0 -0
- {timbal-2.2.6 → timbal-2.2.7}/python/timbal/evals/fixtures/eval_examples.yaml +0 -0
- {timbal-2.2.6 → timbal-2.2.7}/python/timbal/evals/fixtures/eval_flow_validators.yaml +0 -0
- {timbal-2.2.6 → timbal-2.2.7}/python/timbal/evals/fixtures/eval_negations.yaml +0 -0
- {timbal-2.2.6 → timbal-2.2.7}/python/timbal/evals/fixtures/eval_parallel.yaml +0 -0
- {timbal-2.2.6 → timbal-2.2.7}/python/timbal/evals/fixtures/eval_subagent.yaml +0 -0
- {timbal-2.2.6 → timbal-2.2.7}/python/timbal/evals/fixtures/eval_transforms.yaml +0 -0
- {timbal-2.2.6 → timbal-2.2.7}/python/timbal/evals/fixtures/test_invalid_validator.yaml +0 -0
- {timbal-2.2.6 → timbal-2.2.7}/python/timbal/evals/models.py +0 -0
- {timbal-2.2.6 → timbal-2.2.7}/python/timbal/evals/runner.py +0 -0
- {timbal-2.2.6 → timbal-2.2.7}/python/timbal/evals/utils.py +0 -0
- {timbal-2.2.6 → timbal-2.2.7}/python/timbal/evals/validators/__init__.py +0 -0
- {timbal-2.2.6 → timbal-2.2.7}/python/timbal/evals/validators/base.py +0 -0
- {timbal-2.2.6 → timbal-2.2.7}/python/timbal/evals/validators/comparison_base.py +0 -0
- {timbal-2.2.6 → timbal-2.2.7}/python/timbal/evals/validators/contains.py +0 -0
- {timbal-2.2.6 → timbal-2.2.7}/python/timbal/evals/validators/contains_all.py +0 -0
- {timbal-2.2.6 → timbal-2.2.7}/python/timbal/evals/validators/contains_any.py +0 -0
- {timbal-2.2.6 → timbal-2.2.7}/python/timbal/evals/validators/context.py +0 -0
- {timbal-2.2.6 → timbal-2.2.7}/python/timbal/evals/validators/email.py +0 -0
- {timbal-2.2.6 → timbal-2.2.7}/python/timbal/evals/validators/ends_with.py +0 -0
- {timbal-2.2.6 → timbal-2.2.7}/python/timbal/evals/validators/eq.py +0 -0
- {timbal-2.2.6 → timbal-2.2.7}/python/timbal/evals/validators/gt.py +0 -0
- {timbal-2.2.6 → timbal-2.2.7}/python/timbal/evals/validators/gte.py +0 -0
- {timbal-2.2.6 → timbal-2.2.7}/python/timbal/evals/validators/json.py +0 -0
- {timbal-2.2.6 → timbal-2.2.7}/python/timbal/evals/validators/language.py +0 -0
- {timbal-2.2.6 → timbal-2.2.7}/python/timbal/evals/validators/length.py +0 -0
- {timbal-2.2.6 → timbal-2.2.7}/python/timbal/evals/validators/llm_base.py +0 -0
- {timbal-2.2.6 → timbal-2.2.7}/python/timbal/evals/validators/lt.py +0 -0
- {timbal-2.2.6 → timbal-2.2.7}/python/timbal/evals/validators/lte.py +0 -0
- {timbal-2.2.6 → timbal-2.2.7}/python/timbal/evals/validators/max_length.py +0 -0
- {timbal-2.2.6 → timbal-2.2.7}/python/timbal/evals/validators/min_length.py +0 -0
- {timbal-2.2.6 → timbal-2.2.7}/python/timbal/evals/validators/not_null.py +0 -0
- {timbal-2.2.6 → timbal-2.2.7}/python/timbal/evals/validators/parallel.py +0 -0
- {timbal-2.2.6 → timbal-2.2.7}/python/timbal/evals/validators/pattern.py +0 -0
- {timbal-2.2.6 → timbal-2.2.7}/python/timbal/evals/validators/prompt.py +0 -0
- {timbal-2.2.6 → timbal-2.2.7}/python/timbal/evals/validators/semantic.py +0 -0
- {timbal-2.2.6 → timbal-2.2.7}/python/timbal/evals/validators/seq.py +0 -0
- {timbal-2.2.6 → timbal-2.2.7}/python/timbal/evals/validators/starts_with.py +0 -0
- {timbal-2.2.6 → timbal-2.2.7}/python/timbal/evals/validators/type.py +0 -0
- {timbal-2.2.6 → timbal-2.2.7}/python/timbal/logs.py +0 -0
- {timbal-2.2.6 → timbal-2.2.7}/python/timbal/platform/__init__.py +0 -0
- {timbal-2.2.6 → timbal-2.2.7}/python/timbal/platform/integrations.py +0 -0
- {timbal-2.2.6 → timbal-2.2.7}/python/timbal/platform/knowledge_bases/__init__.py +0 -0
- {timbal-2.2.6 → timbal-2.2.7}/python/timbal/platform/knowledge_bases/query.py +0 -0
- {timbal-2.2.6 → timbal-2.2.7}/python/timbal/platform/tool_proxy.py +0 -0
- {timbal-2.2.6 → timbal-2.2.7}/python/timbal/platform/types.py +0 -0
- {timbal-2.2.6 → timbal-2.2.7}/python/timbal/platform/utils.py +0 -0
- {timbal-2.2.6 → timbal-2.2.7}/python/timbal/server/__init__.py +0 -0
- {timbal-2.2.6 → timbal-2.2.7}/python/timbal/server/__main__.py +0 -0
- {timbal-2.2.6 → timbal-2.2.7}/python/timbal/server/http.py +0 -0
- {timbal-2.2.6 → timbal-2.2.7}/python/timbal/server/jobs.py +0 -0
- {timbal-2.2.6 → timbal-2.2.7}/python/timbal/server/voice.html +0 -0
- {timbal-2.2.6 → timbal-2.2.7}/python/timbal/server/voice.py +0 -0
- {timbal-2.2.6 → timbal-2.2.7}/python/timbal/state/__init__.py +0 -0
- {timbal-2.2.6 → timbal-2.2.7}/python/timbal/state/config.py +0 -0
- {timbal-2.2.6 → timbal-2.2.7}/python/timbal/state/config_loader.py +0 -0
- {timbal-2.2.6 → timbal-2.2.7}/python/timbal/state/context.py +0 -0
- {timbal-2.2.6 → timbal-2.2.7}/python/timbal/state/dependency_analyzer.py +0 -0
- {timbal-2.2.6 → timbal-2.2.7}/python/timbal/state/tracing/__init__.py +0 -0
- {timbal-2.2.6 → timbal-2.2.7}/python/timbal/state/tracing/exporters/__init__.py +0 -0
- {timbal-2.2.6 → timbal-2.2.7}/python/timbal/state/tracing/exporters/otel.py +0 -0
- {timbal-2.2.6 → timbal-2.2.7}/python/timbal/state/tracing/providers/__init__.py +0 -0
- {timbal-2.2.6 → timbal-2.2.7}/python/timbal/state/tracing/providers/base.py +0 -0
- {timbal-2.2.6 → timbal-2.2.7}/python/timbal/state/tracing/providers/in_memory.py +0 -0
- {timbal-2.2.6 → timbal-2.2.7}/python/timbal/state/tracing/providers/jsonl.py +0 -0
- {timbal-2.2.6 → timbal-2.2.7}/python/timbal/state/tracing/providers/platform.py +0 -0
- {timbal-2.2.6 → timbal-2.2.7}/python/timbal/state/tracing/providers/sqlite.py +0 -0
- {timbal-2.2.6 → timbal-2.2.7}/python/timbal/state/tracing/span.py +0 -0
- {timbal-2.2.6 → timbal-2.2.7}/python/timbal/state/tracing/trace.py +0 -0
- {timbal-2.2.6 → timbal-2.2.7}/python/timbal/tools/__init__.py +0 -0
- {timbal-2.2.6 → timbal-2.2.7}/python/timbal/tools/_creds.py +0 -0
- {timbal-2.2.6 → timbal-2.2.7}/python/timbal/tools/asana.py +0 -0
- {timbal-2.2.6 → timbal-2.2.7}/python/timbal/tools/bash.py +0 -0
- {timbal-2.2.6 → timbal-2.2.7}/python/timbal/tools/cala.py +0 -0
- {timbal-2.2.6 → timbal-2.2.7}/python/timbal/tools/cloudflare.py +0 -0
- {timbal-2.2.6 → timbal-2.2.7}/python/timbal/tools/dynamics_business_central.py +0 -0
- {timbal-2.2.6 → timbal-2.2.7}/python/timbal/tools/dynamics_sales.py +0 -0
- {timbal-2.2.6 → timbal-2.2.7}/python/timbal/tools/edit.py +0 -0
- {timbal-2.2.6 → timbal-2.2.7}/python/timbal/tools/elasticsearch.py +0 -0
- {timbal-2.2.6 → timbal-2.2.7}/python/timbal/tools/elevenlabs.py +0 -0
- {timbal-2.2.6 → timbal-2.2.7}/python/timbal/tools/excel.py +0 -0
- {timbal-2.2.6 → timbal-2.2.7}/python/timbal/tools/fal.py +0 -0
- {timbal-2.2.6 → timbal-2.2.7}/python/timbal/tools/fathom.py +0 -0
- {timbal-2.2.6 → timbal-2.2.7}/python/timbal/tools/firecrawl.py +0 -0
- {timbal-2.2.6 → timbal-2.2.7}/python/timbal/tools/gemini_images.py +0 -0
- {timbal-2.2.6 → timbal-2.2.7}/python/timbal/tools/gmail.py +0 -0
- {timbal-2.2.6 → timbal-2.2.7}/python/timbal/tools/google_analytics.py +0 -0
- {timbal-2.2.6 → timbal-2.2.7}/python/timbal/tools/google_business.py +0 -0
- {timbal-2.2.6 → timbal-2.2.7}/python/timbal/tools/google_calendar.py +0 -0
- {timbal-2.2.6 → timbal-2.2.7}/python/timbal/tools/google_docs.py +0 -0
- {timbal-2.2.6 → timbal-2.2.7}/python/timbal/tools/google_drive.py +0 -0
- {timbal-2.2.6 → timbal-2.2.7}/python/timbal/tools/google_maps.py +0 -0
- {timbal-2.2.6 → timbal-2.2.7}/python/timbal/tools/google_merchant_center.py +0 -0
- {timbal-2.2.6 → timbal-2.2.7}/python/timbal/tools/google_search_console.py +0 -0
- {timbal-2.2.6 → timbal-2.2.7}/python/timbal/tools/google_sheets.py +0 -0
- {timbal-2.2.6 → timbal-2.2.7}/python/timbal/tools/happy_scribe.py +0 -0
- {timbal-2.2.6 → timbal-2.2.7}/python/timbal/tools/higgsfield.py +0 -0
- {timbal-2.2.6 → timbal-2.2.7}/python/timbal/tools/hubspot.py +0 -0
- {timbal-2.2.6 → timbal-2.2.7}/python/timbal/tools/interaction.py +0 -0
- {timbal-2.2.6 → timbal-2.2.7}/python/timbal/tools/jira.py +0 -0
- {timbal-2.2.6 → timbal-2.2.7}/python/timbal/tools/klaviyo.py +0 -0
- {timbal-2.2.6 → timbal-2.2.7}/python/timbal/tools/knowledge_base.py +0 -0
- {timbal-2.2.6 → timbal-2.2.7}/python/timbal/tools/krea.py +0 -0
- {timbal-2.2.6 → timbal-2.2.7}/python/timbal/tools/lancedb.py +0 -0
- {timbal-2.2.6 → timbal-2.2.7}/python/timbal/tools/linkedin.py +0 -0
- {timbal-2.2.6 → timbal-2.2.7}/python/timbal/tools/mongodb.py +0 -0
- {timbal-2.2.6 → timbal-2.2.7}/python/timbal/tools/netsuite.py +0 -0
- {timbal-2.2.6 → timbal-2.2.7}/python/timbal/tools/onedrive.py +0 -0
- {timbal-2.2.6 → timbal-2.2.7}/python/timbal/tools/outlook.py +0 -0
- {timbal-2.2.6 → timbal-2.2.7}/python/timbal/tools/parallel.py +0 -0
- {timbal-2.2.6 → timbal-2.2.7}/python/timbal/tools/pinecone.py +0 -0
- {timbal-2.2.6 → timbal-2.2.7}/python/timbal/tools/powerbi.py +0 -0
- {timbal-2.2.6 → timbal-2.2.7}/python/timbal/tools/quiver_ai.py +0 -0
- {timbal-2.2.6 → timbal-2.2.7}/python/timbal/tools/read.py +0 -0
- {timbal-2.2.6 → timbal-2.2.7}/python/timbal/tools/replicate.py +0 -0
- {timbal-2.2.6 → timbal-2.2.7}/python/timbal/tools/resend.py +0 -0
- {timbal-2.2.6 → timbal-2.2.7}/python/timbal/tools/salesforce.py +0 -0
- {timbal-2.2.6 → timbal-2.2.7}/python/timbal/tools/scraperapi.py +0 -0
- {timbal-2.2.6 → timbal-2.2.7}/python/timbal/tools/sharepoint.py +0 -0
- {timbal-2.2.6 → timbal-2.2.7}/python/timbal/tools/shopify.py +0 -0
- {timbal-2.2.6 → timbal-2.2.7}/python/timbal/tools/slack.py +0 -0
- {timbal-2.2.6 → timbal-2.2.7}/python/timbal/tools/stripe.py +0 -0
- {timbal-2.2.6 → timbal-2.2.7}/python/timbal/tools/tavily.py +0 -0
- {timbal-2.2.6 → timbal-2.2.7}/python/timbal/tools/web_search.py +0 -0
- {timbal-2.2.6 → timbal-2.2.7}/python/timbal/tools/write.py +0 -0
- {timbal-2.2.6 → timbal-2.2.7}/python/timbal/tools/xai.py +0 -0
- {timbal-2.2.6 → timbal-2.2.7}/python/timbal/tools/zendesk.py +0 -0
- {timbal-2.2.6 → timbal-2.2.7}/python/timbal/tools/zoho_crm.py +0 -0
- {timbal-2.2.6 → timbal-2.2.7}/python/timbal/types/__init__.py +0 -0
- {timbal-2.2.6 → timbal-2.2.7}/python/timbal/types/approval.py +0 -0
- {timbal-2.2.6 → timbal-2.2.7}/python/timbal/types/content/__init__.py +0 -0
- {timbal-2.2.6 → timbal-2.2.7}/python/timbal/types/content/base.py +0 -0
- {timbal-2.2.6 → timbal-2.2.7}/python/timbal/types/content/custom.py +0 -0
- {timbal-2.2.6 → timbal-2.2.7}/python/timbal/types/content/file.py +0 -0
- {timbal-2.2.6 → timbal-2.2.7}/python/timbal/types/content/text.py +0 -0
- {timbal-2.2.6 → timbal-2.2.7}/python/timbal/types/content/thinking.py +0 -0
- {timbal-2.2.6 → timbal-2.2.7}/python/timbal/types/content/tool_result.py +0 -0
- {timbal-2.2.6 → timbal-2.2.7}/python/timbal/types/content/tool_use.py +0 -0
- {timbal-2.2.6 → timbal-2.2.7}/python/timbal/types/events/__init__.py +0 -0
- {timbal-2.2.6 → timbal-2.2.7}/python/timbal/types/events/approval.py +0 -0
- {timbal-2.2.6 → timbal-2.2.7}/python/timbal/types/events/base.py +0 -0
- {timbal-2.2.6 → timbal-2.2.7}/python/timbal/types/events/delta.py +0 -0
- {timbal-2.2.6 → timbal-2.2.7}/python/timbal/types/events/interaction.py +0 -0
- {timbal-2.2.6 → timbal-2.2.7}/python/timbal/types/events/output.py +0 -0
- {timbal-2.2.6 → timbal-2.2.7}/python/timbal/types/events/start.py +0 -0
- {timbal-2.2.6 → timbal-2.2.7}/python/timbal/types/message.py +0 -0
- {timbal-2.2.6 → timbal-2.2.7}/python/timbal/types/run_status.py +0 -0
- {timbal-2.2.6 → timbal-2.2.7}/python/timbal/utils/__init__.py +0 -0
- {timbal-2.2.6 → timbal-2.2.7}/python/timbal/utils/import_spec.py +0 -0
- {timbal-2.2.6 → timbal-2.2.7}/python/timbal/utils/model.py +0 -0
- {timbal-2.2.6 → timbal-2.2.7}/python/timbal/utils/net.py +0 -0
- {timbal-2.2.6 → timbal-2.2.7}/python/timbal/utils/schema.py +0 -0
- {timbal-2.2.6 → timbal-2.2.7}/python/timbal/utils/serialization.py +0 -0
- {timbal-2.2.6 → timbal-2.2.7}/python/timbal/voice/__init__.py +0 -0
- {timbal-2.2.6 → timbal-2.2.7}/python/timbal/voice/elevenlabs.py +0 -0
- {timbal-2.2.6 → timbal-2.2.7}/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.7'
|
|
22
|
+
__version_tuple__ = version_tuple = (2, 2, 7)
|
|
23
23
|
|
|
24
24
|
__commit_id__ = commit_id = None
|
|
@@ -43,7 +43,9 @@ def get_context_window(model_id: str) -> int | None:
|
|
|
43
43
|
# ---------------------------------------------------------------------------
|
|
44
44
|
# Model type with provider prefixes
|
|
45
45
|
Model = Literal[
|
|
46
|
+
"anthropic/claude-fable-5",
|
|
46
47
|
"anthropic/claude-opus-4-8",
|
|
48
|
+
"anthropic/claude-sonnet-5",
|
|
47
49
|
"anthropic/claude-opus-4-7",
|
|
48
50
|
"anthropic/claude-opus-4-6",
|
|
49
51
|
"anthropic/claude-opus-4-5",
|
|
@@ -10,6 +10,16 @@
|
|
|
10
10
|
|
|
11
11
|
models:
|
|
12
12
|
|
|
13
|
+
- id: "anthropic/claude-fable-5"
|
|
14
|
+
provider: anthropic
|
|
15
|
+
display_name: "Claude Fable 5"
|
|
16
|
+
description: "Anthropic's most capable widely released model for long-horizon agentic work, complex reasoning, and ambitious coding tasks."
|
|
17
|
+
input_price: 10.0
|
|
18
|
+
output_price: 50.0
|
|
19
|
+
context_window: 1000000
|
|
20
|
+
capabilities: [vision, tools, reasoning]
|
|
21
|
+
notes: "Includes safety classifiers; blocked requests return stop_reason refusal. Configure Opus 4.8 fallback for production workloads."
|
|
22
|
+
|
|
13
23
|
- id: "anthropic/claude-opus-4-8"
|
|
14
24
|
provider: anthropic
|
|
15
25
|
display_name: "Claude Opus 4.8"
|
|
@@ -19,6 +29,16 @@ models:
|
|
|
19
29
|
context_window: 1000000
|
|
20
30
|
capabilities: [vision, tools, reasoning]
|
|
21
31
|
|
|
32
|
+
- id: "anthropic/claude-sonnet-5"
|
|
33
|
+
provider: anthropic
|
|
34
|
+
display_name: "Claude Sonnet 5"
|
|
35
|
+
description: "Best combination of speed and intelligence. Drop-in upgrade from Sonnet 4.6 for coding, agents, and professional work."
|
|
36
|
+
input_price: 3.0
|
|
37
|
+
output_price: 15.0
|
|
38
|
+
context_window: 1000000
|
|
39
|
+
capabilities: [vision, tools, reasoning]
|
|
40
|
+
notes: "Introductory API pricing ($2/$10 per 1M tokens) through August 31, 2026."
|
|
41
|
+
|
|
22
42
|
- id: "anthropic/claude-opus-4-7"
|
|
23
43
|
provider: anthropic
|
|
24
44
|
display_name: "Claude Opus 4.7"
|
|
@@ -5,7 +5,7 @@ import tempfile
|
|
|
5
5
|
from collections.abc import Callable, Iterator
|
|
6
6
|
from pathlib import Path
|
|
7
7
|
from typing import Any
|
|
8
|
-
from urllib.parse import
|
|
8
|
+
from urllib.parse import unquote, urlparse
|
|
9
9
|
from urllib.request import urlopen
|
|
10
10
|
|
|
11
11
|
from pydantic import (
|
|
@@ -36,6 +36,13 @@ def _is_local_path(source: str) -> bool:
|
|
|
36
36
|
)
|
|
37
37
|
|
|
38
38
|
|
|
39
|
+
# Hosts serving platform-persisted content. URLs on these hosts are already
|
|
40
|
+
# durable — re-uploading them via POST /files is wasteful and (worse) renames
|
|
41
|
+
# the object using the encoded basename. `platform_config.cdn` is checked too,
|
|
42
|
+
# but its default ("content.timbal.ai") predates the timbalusercontent.com move.
|
|
43
|
+
_PLATFORM_CDN_HOSTS = ("timbalusercontent.com", "content.timbal.ai")
|
|
44
|
+
|
|
45
|
+
|
|
39
46
|
def _extract_filename(headers: dict, url: str) -> str:
|
|
40
47
|
"""Extract filename from Content-Disposition header, falling back to URL path."""
|
|
41
48
|
filename = None
|
|
@@ -46,7 +53,9 @@ def _extract_filename(headers: dict, url: str) -> str:
|
|
|
46
53
|
except (IndexError, AttributeError):
|
|
47
54
|
pass
|
|
48
55
|
if not filename:
|
|
49
|
-
|
|
56
|
+
# Decode the basename: URL paths are percent-encoded, but the filename is
|
|
57
|
+
# used as-is for re-uploads — keeping it encoded double-encodes downstream.
|
|
58
|
+
filename = unquote(urlparse(url).path.split("/")[-1])
|
|
50
59
|
return filename
|
|
51
60
|
|
|
52
61
|
|
|
@@ -386,7 +395,12 @@ class File(io.IOBase):
|
|
|
386
395
|
url = str(self)
|
|
387
396
|
if not run_context.platform_config:
|
|
388
397
|
return url
|
|
389
|
-
|
|
398
|
+
# .hostname (unlike .netloc) drops port/userinfo and lowercases,
|
|
399
|
+
# so e.g. "content.timbal.ai:443" still matches. The configured cdn
|
|
400
|
+
# may carry a port too — strip it the same way.
|
|
401
|
+
host = urlparse(url).hostname
|
|
402
|
+
cdn_host = urlparse(f"//{run_context.platform_config.cdn}").hostname
|
|
403
|
+
if host and (host == cdn_host or host in _PLATFORM_CDN_HOSTS):
|
|
390
404
|
object.__setattr__(self, "__persisted__", url)
|
|
391
405
|
return url
|
|
392
406
|
|
|
@@ -416,11 +430,12 @@ class File(io.IOBase):
|
|
|
416
430
|
from ..platform.utils import _request
|
|
417
431
|
res = await _request("POST", path, files=files)
|
|
418
432
|
upload_response = UploadFileResponse.model_validate(res.json())
|
|
419
|
-
#
|
|
420
|
-
#
|
|
421
|
-
#
|
|
422
|
-
|
|
423
|
-
|
|
433
|
+
# The platform returns a fully percent-encoded URL — use it verbatim.
|
|
434
|
+
# Reconstructing it from `name` (raw, unencoded) breaks whenever the name
|
|
435
|
+
# needs encoding: removesuffix() finds no match, so the encoded name got
|
|
436
|
+
# appended to the already-complete URL, yielding a duplicated, doubly
|
|
437
|
+
# encoded path that 403s on the CDN.
|
|
438
|
+
url = upload_response.url
|
|
424
439
|
object.__setattr__(self, "__persisted__", url)
|
|
425
440
|
return url
|
|
426
441
|
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|