tavus-cli 0.4.4__tar.gz → 0.4.5__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (99) hide show
  1. tavus_cli-0.4.5/.release-please-manifest.json +3 -0
  2. {tavus_cli-0.4.4 → tavus_cli-0.4.5}/CHANGELOG.md +7 -0
  3. {tavus_cli-0.4.4 → tavus_cli-0.4.5}/PKG-INFO +1 -1
  4. {tavus_cli-0.4.4 → tavus_cli-0.4.5}/packages/tavus/pyproject.toml +2 -2
  5. {tavus_cli-0.4.4 → tavus_cli-0.4.5}/packages/tavus-mcp/pyproject.toml +2 -2
  6. {tavus_cli-0.4.4 → tavus_cli-0.4.5}/pyproject.toml +1 -1
  7. {tavus_cli-0.4.4 → tavus_cli-0.4.5}/src/tavus_mcp/__init__.py +1 -1
  8. {tavus_cli-0.4.4 → tavus_cli-0.4.5}/uv.lock +1 -1
  9. {tavus_cli-0.4.4 → tavus_cli-0.4.5}/workers/tavus-mcp/package-lock.json +2 -2
  10. {tavus_cli-0.4.4 → tavus_cli-0.4.5}/workers/tavus-mcp/package.json +1 -1
  11. {tavus_cli-0.4.4 → tavus_cli-0.4.5}/workers/tavus-mcp/src/oauth.ts +14 -1
  12. tavus_cli-0.4.5/workers/tavus-mcp/src/version.ts +1 -0
  13. {tavus_cli-0.4.4 → tavus_cli-0.4.5}/workers/tavus-mcp/test/tavus.test.ts +41 -0
  14. tavus_cli-0.4.4/.release-please-manifest.json +0 -3
  15. tavus_cli-0.4.4/workers/tavus-mcp/src/version.ts +0 -1
  16. {tavus_cli-0.4.4 → tavus_cli-0.4.5}/.env.example +0 -0
  17. {tavus_cli-0.4.4 → tavus_cli-0.4.5}/.github/workflows/ci.yml +0 -0
  18. {tavus_cli-0.4.4 → tavus_cli-0.4.5}/.github/workflows/deploy-cloudflare-worker.yml +0 -0
  19. {tavus_cli-0.4.4 → tavus_cli-0.4.5}/.github/workflows/pr-reviews.yml +0 -0
  20. {tavus_cli-0.4.4 → tavus_cli-0.4.5}/.github/workflows/pypi-cli.yml +0 -0
  21. {tavus_cli-0.4.4 → tavus_cli-0.4.5}/.github/workflows/tail-cloudflare-worker.yml +0 -0
  22. {tavus_cli-0.4.4 → tavus_cli-0.4.5}/.github/workflows/validate-staging-deployment.yml +0 -0
  23. {tavus_cli-0.4.4 → tavus_cli-0.4.5}/.gitignore +0 -0
  24. {tavus_cli-0.4.4 → tavus_cli-0.4.5}/AGENTS.md +0 -0
  25. {tavus_cli-0.4.4 → tavus_cli-0.4.5}/README.md +0 -0
  26. {tavus_cli-0.4.4 → tavus_cli-0.4.5}/docs/gemini-enterprise/README.md +0 -0
  27. {tavus_cli-0.4.4 → tavus_cli-0.4.5}/docs/gemini-enterprise/listing.md +0 -0
  28. {tavus_cli-0.4.4 → tavus_cli-0.4.5}/docs/gemini-enterprise/test-queries.md +0 -0
  29. {tavus_cli-0.4.4 → tavus_cli-0.4.5}/docs/usage-observability.md +0 -0
  30. {tavus_cli-0.4.4 → tavus_cli-0.4.5}/packages/tavus/README.md +0 -0
  31. {tavus_cli-0.4.4 → tavus_cli-0.4.5}/packages/tavus-mcp/README.md +0 -0
  32. {tavus_cli-0.4.4 → tavus_cli-0.4.5}/release-please-config.json +0 -0
  33. {tavus_cli-0.4.4 → tavus_cli-0.4.5}/scripts/__init__.py +0 -0
  34. {tavus_cli-0.4.4 → tavus_cli-0.4.5}/scripts/check_release_versions.py +0 -0
  35. {tavus_cli-0.4.4 → tavus_cli-0.4.5}/skills/tavus-agentic-pals/SKILL.md +0 -0
  36. {tavus_cli-0.4.4 → tavus_cli-0.4.5}/skills/tavus-agentic-pals/agents/openai.yaml +0 -0
  37. {tavus_cli-0.4.4 → tavus_cli-0.4.5}/skills/tavus-agentic-pals/references/build-and-verify.md +0 -0
  38. {tavus_cli-0.4.4 → tavus_cli-0.4.5}/skills/tavus-agentic-pals/references/builder-workflow.md +0 -0
  39. {tavus_cli-0.4.4 → tavus_cli-0.4.5}/skills/tavus-agentic-pals/references/chat-mode.md +0 -0
  40. {tavus_cli-0.4.4 → tavus_cli-0.4.5}/skills/tavus-agentic-pals/references/examples.md +0 -0
  41. {tavus_cli-0.4.4 → tavus_cli-0.4.5}/src/tavus_mcp/cli/__init__.py +0 -0
  42. {tavus_cli-0.4.4 → tavus_cli-0.4.5}/src/tavus_mcp/cli/main.py +0 -0
  43. {tavus_cli-0.4.4 → tavus_cli-0.4.5}/src/tavus_mcp/sdk/__init__.py +0 -0
  44. {tavus_cli-0.4.4 → tavus_cli-0.4.5}/src/tavus_mcp/sdk/auth/__init__.py +0 -0
  45. {tavus_cli-0.4.4 → tavus_cli-0.4.5}/src/tavus_mcp/sdk/auth/keyring_store.py +0 -0
  46. {tavus_cli-0.4.4 → tavus_cli-0.4.5}/src/tavus_mcp/sdk/auth/oauth.py +0 -0
  47. {tavus_cli-0.4.4 → tavus_cli-0.4.5}/src/tavus_mcp/sdk/auth/session.py +0 -0
  48. {tavus_cli-0.4.4 → tavus_cli-0.4.5}/src/tavus_mcp/sdk/client/__init__.py +0 -0
  49. {tavus_cli-0.4.4 → tavus_cli-0.4.5}/src/tavus_mcp/sdk/client/http.py +0 -0
  50. {tavus_cli-0.4.4 → tavus_cli-0.4.5}/src/tavus_mcp/sdk/daily_transport.py +0 -0
  51. {tavus_cli-0.4.4 → tavus_cli-0.4.5}/src/tavus_mcp/sdk/env.py +0 -0
  52. {tavus_cli-0.4.4 → tavus_cli-0.4.5}/src/tavus_mcp/sdk/errors.py +0 -0
  53. {tavus_cli-0.4.4 → tavus_cli-0.4.5}/src/tavus_mcp/sdk/pal_urls.py +0 -0
  54. {tavus_cli-0.4.4 → tavus_cli-0.4.5}/src/tavus_mcp/sdk/patch.py +0 -0
  55. {tavus_cli-0.4.4 → tavus_cli-0.4.5}/src/tavus_mcp/sdk/recipes/__init__.py +0 -0
  56. {tavus_cli-0.4.4 → tavus_cli-0.4.5}/src/tavus_mcp/sdk/recipes/build_and_verify.py +0 -0
  57. {tavus_cli-0.4.4 → tavus_cli-0.4.5}/src/tavus_mcp/sdk/recipes/capabilities.py +0 -0
  58. {tavus_cli-0.4.4 → tavus_cli-0.4.5}/src/tavus_mcp/sdk/recipes/carrier_builder.py +0 -0
  59. {tavus_cli-0.4.4 → tavus_cli-0.4.5}/src/tavus_mcp/sdk/recipes/knowledge.py +0 -0
  60. {tavus_cli-0.4.4 → tavus_cli-0.4.5}/src/tavus_mcp/sdk/recipes/options.py +0 -0
  61. {tavus_cli-0.4.4 → tavus_cli-0.4.5}/src/tavus_mcp/sdk/recipes/quickstart.py +0 -0
  62. {tavus_cli-0.4.4 → tavus_cli-0.4.5}/src/tavus_mcp/sdk/recipes/scaffold_embed.py +0 -0
  63. {tavus_cli-0.4.4 → tavus_cli-0.4.5}/src/tavus_mcp/sdk/recipes/templates.py +0 -0
  64. {tavus_cli-0.4.4 → tavus_cli-0.4.5}/src/tavus_mcp/sdk/recipes/tool_reuse.py +0 -0
  65. {tavus_cli-0.4.4 → tavus_cli-0.4.5}/src/tavus_mcp/sdk/schemas/__init__.py +0 -0
  66. {tavus_cli-0.4.4 → tavus_cli-0.4.5}/src/tavus_mcp/sdk/schemas/file_manifest.py +0 -0
  67. {tavus_cli-0.4.4 → tavus_cli-0.4.5}/src/tavus_mcp/sdk/schemas/guardrail.py +0 -0
  68. {tavus_cli-0.4.4 → tavus_cli-0.4.5}/src/tavus_mcp/sdk/schemas/objective.py +0 -0
  69. {tavus_cli-0.4.4 → tavus_cli-0.4.5}/src/tavus_mcp/sdk/schemas/pal.py +0 -0
  70. {tavus_cli-0.4.4 → tavus_cli-0.4.5}/src/tavus_mcp/sdk/schemas/pronunciation.py +0 -0
  71. {tavus_cli-0.4.4 → tavus_cli-0.4.5}/src/tavus_mcp/sdk/schemas/tool.py +0 -0
  72. {tavus_cli-0.4.4 → tavus_cli-0.4.5}/src/tavus_mcp/server.py +0 -0
  73. {tavus_cli-0.4.4 → tavus_cli-0.4.5}/tests/conftest.py +0 -0
  74. {tavus_cli-0.4.4 → tavus_cli-0.4.5}/tests/integration/test_cli.py +0 -0
  75. {tavus_cli-0.4.4 → tavus_cli-0.4.5}/tests/integration/test_client.py +0 -0
  76. {tavus_cli-0.4.4 → tavus_cli-0.4.5}/tests/integration/test_mcp_server.py +0 -0
  77. {tavus_cli-0.4.4 → tavus_cli-0.4.5}/tests/integration/test_oauth.py +0 -0
  78. {tavus_cli-0.4.4 → tavus_cli-0.4.5}/tests/unit/test_auth.py +0 -0
  79. {tavus_cli-0.4.4 → tavus_cli-0.4.5}/tests/unit/test_build_and_verify.py +0 -0
  80. {tavus_cli-0.4.4 → tavus_cli-0.4.5}/tests/unit/test_builder.py +0 -0
  81. {tavus_cli-0.4.4 → tavus_cli-0.4.5}/tests/unit/test_capabilities.py +0 -0
  82. {tavus_cli-0.4.4 → tavus_cli-0.4.5}/tests/unit/test_daily_transport.py +0 -0
  83. {tavus_cli-0.4.4 → tavus_cli-0.4.5}/tests/unit/test_env.py +0 -0
  84. {tavus_cli-0.4.4 → tavus_cli-0.4.5}/tests/unit/test_guardrail_schema.py +0 -0
  85. {tavus_cli-0.4.4 → tavus_cli-0.4.5}/tests/unit/test_objective_schema.py +0 -0
  86. {tavus_cli-0.4.4 → tavus_cli-0.4.5}/tests/unit/test_pal_schema.py +0 -0
  87. {tavus_cli-0.4.4 → tavus_cli-0.4.5}/tests/unit/test_patch.py +0 -0
  88. {tavus_cli-0.4.4 → tavus_cli-0.4.5}/tests/unit/test_pronunciation_schema.py +0 -0
  89. {tavus_cli-0.4.4 → tavus_cli-0.4.5}/tests/unit/test_release_versions.py +0 -0
  90. {tavus_cli-0.4.4 → tavus_cli-0.4.5}/tests/unit/test_scaffold_embed.py +0 -0
  91. {tavus_cli-0.4.4 → tavus_cli-0.4.5}/tests/unit/test_tool_reuse.py +0 -0
  92. {tavus_cli-0.4.4 → tavus_cli-0.4.5}/tests/unit/test_tool_schema.py +0 -0
  93. {tavus_cli-0.4.4 → tavus_cli-0.4.5}/workers/tavus-mcp/.dev.vars.example +0 -0
  94. {tavus_cli-0.4.4 → tavus_cli-0.4.5}/workers/tavus-mcp/src/index.ts +0 -0
  95. {tavus_cli-0.4.4 → tavus_cli-0.4.5}/workers/tavus-mcp/src/oauth-grant.ts +0 -0
  96. {tavus_cli-0.4.4 → tavus_cli-0.4.5}/workers/tavus-mcp/src/tavus.ts +0 -0
  97. {tavus_cli-0.4.4 → tavus_cli-0.4.5}/workers/tavus-mcp/test/parity.test.ts +0 -0
  98. {tavus_cli-0.4.4 → tavus_cli-0.4.5}/workers/tavus-mcp/tsconfig.json +0 -0
  99. {tavus_cli-0.4.4 → tavus_cli-0.4.5}/workers/tavus-mcp/wrangler.jsonc +0 -0
@@ -0,0 +1,3 @@
1
+ {
2
+ ".": "0.4.5"
3
+ }
@@ -1,5 +1,12 @@
1
1
  # Changelog
2
2
 
3
+ ## [0.4.5](https://github.com/Tavus-Engineering/tavus-mcp/compare/v0.4.4...v0.4.5) (2026-09-29)
4
+
5
+
6
+ ### Bug Fixes
7
+
8
+ * accept Cursor and IPv6 loopback DCR callbacks ([#49](https://github.com/Tavus-Engineering/tavus-mcp/issues/49)) ([8c9d9f3](https://github.com/Tavus-Engineering/tavus-mcp/commit/8c9d9f3a0cd42bb51080a84b0982a9c4ad64f175))
9
+
3
10
  ## [0.4.4](https://github.com/Tavus-Engineering/tavus-mcp/compare/v0.4.3...v0.4.4) (2026-09-10)
4
11
 
5
12
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.5
2
2
  Name: tavus-cli
3
- Version: 0.4.4
3
+ Version: 0.4.5
4
4
  Summary: Tavus CLI and MCP server for agentic PAL creation and editing.
5
5
  Requires-Python: >=3.11
6
6
  Requires-Dist: fastmcp>=2.0.0
@@ -1,11 +1,11 @@
1
1
  [project]
2
2
  name = "tavus"
3
- version = "0.4.4" # x-release-please-version
3
+ version = "0.4.5" # x-release-please-version
4
4
  description = "Official alias for tavus-cli, the Tavus CLI and MCP server."
5
5
  readme = "README.md"
6
6
  requires-python = ">=3.11"
7
7
  dependencies = [
8
- "tavus-cli==0.4.4", # x-release-please-version
8
+ "tavus-cli==0.4.5", # x-release-please-version
9
9
  ]
10
10
 
11
11
  [project.urls]
@@ -1,11 +1,11 @@
1
1
  [project]
2
2
  name = "tavus-mcp"
3
- version = "0.4.4" # x-release-please-version
3
+ version = "0.4.5" # x-release-please-version
4
4
  description = "Official alias for tavus-cli, which provides the tavus-mcp MCP server."
5
5
  readme = "README.md"
6
6
  requires-python = ">=3.11"
7
7
  dependencies = [
8
- "tavus-cli==0.4.4", # x-release-please-version
8
+ "tavus-cli==0.4.5", # x-release-please-version
9
9
  ]
10
10
 
11
11
  [project.urls]
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "tavus-cli"
3
- version = "0.4.4"
3
+ version = "0.4.5"
4
4
  description = "Tavus CLI and MCP server for agentic PAL creation and editing."
5
5
  readme = "README.md"
6
6
  requires-python = ">=3.11"
@@ -1,4 +1,4 @@
1
1
  """Tavus CLI and MCP server package."""
2
2
 
3
3
  __all__ = ["__version__"]
4
- __version__ = "0.4.4" # x-release-please-version
4
+ __version__ = "0.4.5" # x-release-please-version
@@ -1303,7 +1303,7 @@ wheels = [
1303
1303
 
1304
1304
  [[package]]
1305
1305
  name = "tavus-cli"
1306
- version = "0.4.4"
1306
+ version = "0.4.5"
1307
1307
  source = { editable = "." }
1308
1308
  dependencies = [
1309
1309
  { name = "fastmcp" },
@@ -1,12 +1,12 @@
1
1
  {
2
2
  "name": "@tavus/tavus-mcp-worker",
3
- "version": "0.4.4",
3
+ "version": "0.4.5",
4
4
  "lockfileVersion": 3,
5
5
  "requires": true,
6
6
  "packages": {
7
7
  "": {
8
8
  "name": "@tavus/tavus-mcp-worker",
9
- "version": "0.4.4",
9
+ "version": "0.4.5",
10
10
  "dependencies": {
11
11
  "@modelcontextprotocol/sdk": "^1.29.0",
12
12
  "agents": "^0.12.2",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tavus/tavus-mcp-worker",
3
- "version": "0.4.4",
3
+ "version": "0.4.5",
4
4
  "private": true,
5
5
  "type": "module",
6
6
  "scripts": {
@@ -712,7 +712,10 @@ function isAllowedResource(rawResource: string, expectedResource: string): boole
712
712
  function isLoopbackUrl(raw: string): boolean {
713
713
  try {
714
714
  const url = new URL(raw);
715
- return url.protocol === "http:" && (url.hostname === "127.0.0.1" || url.hostname === "localhost");
715
+ return (
716
+ url.protocol === "http:" &&
717
+ (url.hostname === "127.0.0.1" || url.hostname === "localhost" || url.hostname === "[::1]")
718
+ );
716
719
  } catch {
717
720
  return false;
718
721
  }
@@ -764,6 +767,16 @@ function trustedRemoteClientName(raw: string): string | undefined {
764
767
  ) {
765
768
  return "ChatGPT";
766
769
  }
770
+ // Cursor registers its hosted callback rather than a loopback listener when
771
+ // its loopback-redirect flag is off, so DCR fails without this entry.
772
+ if (
773
+ url.protocol === "https:" &&
774
+ (url.hostname === "cursor.com" || url.hostname === "www.cursor.com") &&
775
+ url.pathname === "/agents/mcp/oauth/callback" &&
776
+ !url.search
777
+ ) {
778
+ return "Cursor";
779
+ }
767
780
  return undefined;
768
781
  }
769
782
 
@@ -0,0 +1 @@
1
+ export const VERSION = "0.4.5"; // x-release-please-version
@@ -718,6 +718,47 @@ describe("Cloudflare Tavus MCP helpers", () => {
718
718
  });
719
719
  });
720
720
 
721
+ it("allows Cursor DCR callbacks and canonicalizes the client name", async () => {
722
+ const response = await handleOAuthRequest(
723
+ new Request("https://mcp.tavus-preview.io/register", {
724
+ method: "POST",
725
+ headers: { "Content-Type": "application/json" },
726
+ body: JSON.stringify({
727
+ redirect_uris: ["https://www.cursor.com/agents/mcp/oauth/callback"],
728
+ client_name: "Attacker-controlled label",
729
+ }),
730
+ }),
731
+ { MCP_OAUTH_SIGNING_SECRET: "s".repeat(32) },
732
+ "/mcp",
733
+ );
734
+
735
+ expect(response?.status).toBe(201);
736
+ await expect(response?.json()).resolves.toMatchObject({
737
+ client_name: "Cursor",
738
+ redirect_uris: ["https://www.cursor.com/agents/mcp/oauth/callback"],
739
+ });
740
+ });
741
+
742
+ it("allows IPv6 loopback DCR callbacks", async () => {
743
+ const response = await handleOAuthRequest(
744
+ new Request("https://mcp.tavus-preview.io/register", {
745
+ method: "POST",
746
+ headers: { "Content-Type": "application/json" },
747
+ body: JSON.stringify({
748
+ redirect_uris: ["http://[::1]:53117/oauth/callback"],
749
+ client_name: "MCP Client",
750
+ }),
751
+ }),
752
+ { MCP_OAUTH_SIGNING_SECRET: "s".repeat(32) },
753
+ "/mcp",
754
+ );
755
+
756
+ expect(response?.status).toBe(201);
757
+ await expect(response?.json()).resolves.toMatchObject({
758
+ redirect_uris: ["http://[::1]:53117/oauth/callback"],
759
+ });
760
+ });
761
+
721
762
  it("rejects arbitrary HTTPS dynamic client callbacks", async () => {
722
763
  const response = await handleOAuthRequest(
723
764
  new Request("https://mcp.tavus-preview.io/register", {
@@ -1,3 +0,0 @@
1
- {
2
- ".": "0.4.4"
3
- }
@@ -1 +0,0 @@
1
- export const VERSION = "0.4.4"; // x-release-please-version
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes