mcp-ticketer 0.1.7__tar.gz → 0.1.11__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.
Potentially problematic release.
This version of mcp-ticketer might be problematic. Click here for more details.
- mcp_ticketer-0.1.11/.claude/agents/.dependency_cache +34 -0
- mcp_ticketer-0.1.11/.claude/agents/.mpm_deployment_state +16 -0
- {mcp_ticketer-0.1.7 → mcp_ticketer-0.1.11}/.claude/agents/clerk-ops.md +49 -2
- mcp_ticketer-0.1.11/.claude/agents/data_engineer.md +595 -0
- {mcp_ticketer-0.1.7 → mcp_ticketer-0.1.11}/.claude/agents/documentation.md +75 -26
- {mcp_ticketer-0.1.7 → mcp_ticketer-0.1.11}/.claude/agents/engineer.md +1 -1
- mcp_ticketer-0.1.11/.claude/agents/php-engineer.md +132 -0
- {mcp_ticketer-0.1.7 → mcp_ticketer-0.1.11}/.claude/agents/research.md +8 -2
- mcp_ticketer-0.1.11/.claude/agents/typescript_engineer.md +529 -0
- {mcp_ticketer-0.1.7 → mcp_ticketer-0.1.11}/.claude/agents/web_qa.md +169 -10
- mcp_ticketer-0.1.11/.claude-mpm/memories/ops_memories.md +3 -0
- mcp_ticketer-0.1.11/.claude-mpm/memories/version-control_memories.md +3 -0
- mcp_ticketer-0.1.11/.claude.json +9 -0
- mcp_ticketer-0.1.11/.mcp/config.json +12 -0
- {mcp_ticketer-0.1.7 → mcp_ticketer-0.1.11}/CHANGELOG.md +30 -0
- mcp_ticketer-0.1.11/CLAUDE_DESKTOP_SETUP.md +55 -0
- {mcp_ticketer-0.1.7/src/mcp_ticketer.egg-info → mcp_ticketer-0.1.11}/PKG-INFO +6 -5
- mcp_ticketer-0.1.11/claude-desktop-config.json +8 -0
- mcp_ticketer-0.1.11/docs/PR_INTEGRATION.md +223 -0
- mcp_ticketer-0.1.11/mcp_server.sh +34 -0
- {mcp_ticketer-0.1.7 → mcp_ticketer-0.1.11}/pyproject.toml +5 -4
- {mcp_ticketer-0.1.7 → mcp_ticketer-0.1.11}/src/mcp_ticketer/__version__.py +1 -1
- {mcp_ticketer-0.1.7 → mcp_ticketer-0.1.11}/src/mcp_ticketer/adapters/github.py +263 -0
- {mcp_ticketer-0.1.7 → mcp_ticketer-0.1.11}/src/mcp_ticketer/adapters/linear.py +220 -0
- {mcp_ticketer-0.1.7 → mcp_ticketer-0.1.11}/src/mcp_ticketer/cli/main.py +26 -0
- mcp_ticketer-0.1.11/src/mcp_ticketer/mcp/server.py +898 -0
- {mcp_ticketer-0.1.7 → mcp_ticketer-0.1.11/src/mcp_ticketer.egg-info}/PKG-INFO +6 -5
- {mcp_ticketer-0.1.7 → mcp_ticketer-0.1.11}/src/mcp_ticketer.egg-info/SOURCES.txt +12 -0
- {mcp_ticketer-0.1.7 → mcp_ticketer-0.1.11}/src/mcp_ticketer.egg-info/requires.txt +5 -4
- mcp_ticketer-0.1.11/test_mcp_server_qa.py +589 -0
- mcp_ticketer-0.1.11/test_pr_functionality.py +224 -0
- mcp_ticketer-0.1.7/.claude/agents/.dependency_cache +0 -13
- mcp_ticketer-0.1.7/.claude/agents/.mpm_deployment_state +0 -11
- mcp_ticketer-0.1.7/.claude/agents/data_engineer.md +0 -419
- mcp_ticketer-0.1.7/src/mcp_ticketer/mcp/server.py +0 -492
- {mcp_ticketer-0.1.7 → mcp_ticketer-0.1.11}/.claude/agents/agent-manager.md +0 -0
- {mcp_ticketer-0.1.7 → mcp_ticketer-0.1.11}/.claude/agents/agentic-coder-optimizer.md +0 -0
- {mcp_ticketer-0.1.7 → mcp_ticketer-0.1.11}/.claude/agents/api_qa.md +0 -0
- {mcp_ticketer-0.1.7 → mcp_ticketer-0.1.11}/.claude/agents/code_analyzer.md +0 -0
- {mcp_ticketer-0.1.7 → mcp_ticketer-0.1.11}/.claude/agents/gcp_ops_agent.md +0 -0
- {mcp_ticketer-0.1.7 → mcp_ticketer-0.1.11}/.claude/agents/imagemagick.md +0 -0
- {mcp_ticketer-0.1.7 → mcp_ticketer-0.1.11}/.claude/agents/memory_manager.md +0 -0
- {mcp_ticketer-0.1.7 → mcp_ticketer-0.1.11}/.claude/agents/nextjs_engineer.md +0 -0
- {mcp_ticketer-0.1.7 → mcp_ticketer-0.1.11}/.claude/agents/ops.md +0 -0
- {mcp_ticketer-0.1.7 → mcp_ticketer-0.1.11}/.claude/agents/project_organizer.md +0 -0
- {mcp_ticketer-0.1.7 → mcp_ticketer-0.1.11}/.claude/agents/prompt-engineer.md +0 -0
- {mcp_ticketer-0.1.7 → mcp_ticketer-0.1.11}/.claude/agents/python_engineer.md +0 -0
- {mcp_ticketer-0.1.7 → mcp_ticketer-0.1.11}/.claude/agents/qa.md +0 -0
- {mcp_ticketer-0.1.7 → mcp_ticketer-0.1.11}/.claude/agents/react_engineer.md +0 -0
- {mcp_ticketer-0.1.7 → mcp_ticketer-0.1.11}/.claude/agents/refactoring_engineer.md +0 -0
- {mcp_ticketer-0.1.7 → mcp_ticketer-0.1.11}/.claude/agents/security.md +0 -0
- {mcp_ticketer-0.1.7 → mcp_ticketer-0.1.11}/.claude/agents/ticketing.md +0 -0
- {mcp_ticketer-0.1.7 → mcp_ticketer-0.1.11}/.claude/agents/vercel_ops_agent.md +0 -0
- {mcp_ticketer-0.1.7 → mcp_ticketer-0.1.11}/.claude/agents/version_control.md +0 -0
- {mcp_ticketer-0.1.7 → mcp_ticketer-0.1.11}/.claude/agents/web_ui.md +0 -0
- {mcp_ticketer-0.1.7 → mcp_ticketer-0.1.11}/.claude-mpm/config/project.json +0 -0
- {mcp_ticketer-0.1.7 → mcp_ticketer-0.1.11}/.claude-mpm/memories/README.md +0 -0
- {mcp_ticketer-0.1.7 → mcp_ticketer-0.1.11}/.claude-mpm/memories/documentation_memories.md +0 -0
- {mcp_ticketer-0.1.7 → mcp_ticketer-0.1.11}/.claude-mpm/memories/engineer_memories.md +0 -0
- {mcp_ticketer-0.1.7 → mcp_ticketer-0.1.11}/.claude-mpm/memories/qa_memories.md +0 -0
- {mcp_ticketer-0.1.7 → mcp_ticketer-0.1.11}/.claude-mpm/memories/research_memories.md +0 -0
- {mcp_ticketer-0.1.7 → mcp_ticketer-0.1.11}/.coveragerc +0 -0
- {mcp_ticketer-0.1.7 → mcp_ticketer-0.1.11}/.env.example +0 -0
- {mcp_ticketer-0.1.7 → mcp_ticketer-0.1.11}/.github/workflows/docs.yml +0 -0
- {mcp_ticketer-0.1.7 → mcp_ticketer-0.1.11}/.github/workflows/publish.yml +0 -0
- {mcp_ticketer-0.1.7 → mcp_ticketer-0.1.11}/.github/workflows/test.yml +0 -0
- {mcp_ticketer-0.1.7 → mcp_ticketer-0.1.11}/.pre-commit-config.yaml +0 -0
- {mcp_ticketer-0.1.7 → mcp_ticketer-0.1.11}/.python-version +0 -0
- {mcp_ticketer-0.1.7 → mcp_ticketer-0.1.11}/.readthedocs.yaml +0 -0
- {mcp_ticketer-0.1.7 → mcp_ticketer-0.1.11}/CONTRIBUTING.md +0 -0
- {mcp_ticketer-0.1.7 → mcp_ticketer-0.1.11}/JIRA_SETUP.md +0 -0
- {mcp_ticketer-0.1.7 → mcp_ticketer-0.1.11}/LICENSE +0 -0
- {mcp_ticketer-0.1.7 → mcp_ticketer-0.1.11}/LINEAR_SETUP.md +0 -0
- {mcp_ticketer-0.1.7 → mcp_ticketer-0.1.11}/MANIFEST.in +0 -0
- {mcp_ticketer-0.1.7 → mcp_ticketer-0.1.11}/OPTIMIZATION_SUMMARY.md +0 -0
- {mcp_ticketer-0.1.7 → mcp_ticketer-0.1.11}/QUEUE_SYSTEM.md +0 -0
- {mcp_ticketer-0.1.7 → mcp_ticketer-0.1.11}/README.md +0 -0
- {mcp_ticketer-0.1.7 → mcp_ticketer-0.1.11}/RELEASING.md +0 -0
- {mcp_ticketer-0.1.7 → mcp_ticketer-0.1.11}/TEST_REPORT.md +0 -0
- {mcp_ticketer-0.1.7 → mcp_ticketer-0.1.11}/TEST_RESULTS_SUMMARY.md +0 -0
- {mcp_ticketer-0.1.7 → mcp_ticketer-0.1.11}/debug_search.py +0 -0
- {mcp_ticketer-0.1.7 → mcp_ticketer-0.1.11}/debug_test.py +0 -0
- {mcp_ticketer-0.1.7 → mcp_ticketer-0.1.11}/docs/ADAPTERS.md +0 -0
- {mcp_ticketer-0.1.7 → mcp_ticketer-0.1.11}/docs/API_REFERENCE.md +0 -0
- {mcp_ticketer-0.1.7 → mcp_ticketer-0.1.11}/docs/CONFIGURATION.md +0 -0
- {mcp_ticketer-0.1.7 → mcp_ticketer-0.1.11}/docs/DEVELOPER_GUIDE.md +0 -0
- {mcp_ticketer-0.1.7 → mcp_ticketer-0.1.11}/docs/MCP_INTEGRATION.md +0 -0
- {mcp_ticketer-0.1.7 → mcp_ticketer-0.1.11}/docs/MIGRATION_GUIDE.md +0 -0
- {mcp_ticketer-0.1.7 → mcp_ticketer-0.1.11}/docs/USER_GUIDE.md +0 -0
- {mcp_ticketer-0.1.7 → mcp_ticketer-0.1.11}/docs/_build/_sources/ADAPTERS.md.txt +0 -0
- {mcp_ticketer-0.1.7 → mcp_ticketer-0.1.11}/docs/_build/_sources/API_REFERENCE.md.txt +0 -0
- {mcp_ticketer-0.1.7 → mcp_ticketer-0.1.11}/docs/_build/_sources/CONFIGURATION.md.txt +0 -0
- {mcp_ticketer-0.1.7 → mcp_ticketer-0.1.11}/docs/_build/_sources/DEVELOPER_GUIDE.md.txt +0 -0
- {mcp_ticketer-0.1.7 → mcp_ticketer-0.1.11}/docs/_build/_sources/MCP_INTEGRATION.md.txt +0 -0
- {mcp_ticketer-0.1.7 → mcp_ticketer-0.1.11}/docs/_build/_sources/MIGRATION_GUIDE.md.txt +0 -0
- {mcp_ticketer-0.1.7 → mcp_ticketer-0.1.11}/docs/_build/_sources/USER_GUIDE.md.txt +0 -0
- {mcp_ticketer-0.1.7 → mcp_ticketer-0.1.11}/docs/_build/_sources/adapters/github.md.txt +0 -0
- {mcp_ticketer-0.1.7 → mcp_ticketer-0.1.11}/docs/_build/_sources/adapters.rst.txt +0 -0
- {mcp_ticketer-0.1.7 → mcp_ticketer-0.1.11}/docs/_build/_sources/api.rst.txt +0 -0
- {mcp_ticketer-0.1.7 → mcp_ticketer-0.1.11}/docs/_build/_sources/cli.rst.txt +0 -0
- {mcp_ticketer-0.1.7 → mcp_ticketer-0.1.11}/docs/_build/_sources/development.rst.txt +0 -0
- {mcp_ticketer-0.1.7 → mcp_ticketer-0.1.11}/docs/_build/_sources/examples.rst.txt +0 -0
- {mcp_ticketer-0.1.7 → mcp_ticketer-0.1.11}/docs/_build/_sources/index.rst.txt +0 -0
- {mcp_ticketer-0.1.7 → mcp_ticketer-0.1.11}/docs/_build/_sources/installation.rst.txt +0 -0
- {mcp_ticketer-0.1.7 → mcp_ticketer-0.1.11}/docs/_build/_sources/prd/mcp-ticketer-prd.md.txt +0 -0
- {mcp_ticketer-0.1.7 → mcp_ticketer-0.1.11}/docs/adapters/github.md +0 -0
- {mcp_ticketer-0.1.7 → mcp_ticketer-0.1.11}/docs/adapters.rst +0 -0
- {mcp_ticketer-0.1.7 → mcp_ticketer-0.1.11}/docs/api.rst +0 -0
- {mcp_ticketer-0.1.7 → mcp_ticketer-0.1.11}/docs/cli.rst +0 -0
- {mcp_ticketer-0.1.7 → mcp_ticketer-0.1.11}/docs/conf.py +0 -0
- {mcp_ticketer-0.1.7 → mcp_ticketer-0.1.11}/docs/development.rst +0 -0
- {mcp_ticketer-0.1.7 → mcp_ticketer-0.1.11}/docs/examples.rst +0 -0
- {mcp_ticketer-0.1.7 → mcp_ticketer-0.1.11}/docs/index.rst +0 -0
- {mcp_ticketer-0.1.7 → mcp_ticketer-0.1.11}/docs/installation.rst +0 -0
- {mcp_ticketer-0.1.7 → mcp_ticketer-0.1.11}/docs/prd/mcp-ticketer-prd.md +0 -0
- {mcp_ticketer-0.1.7 → mcp_ticketer-0.1.11}/docs/requirements.txt +0 -0
- {mcp_ticketer-0.1.7 → mcp_ticketer-0.1.11}/install.sh +0 -0
- {mcp_ticketer-0.1.7 → mcp_ticketer-0.1.11}/mcp-ticketer +0 -0
- {mcp_ticketer-0.1.7 → mcp_ticketer-0.1.11}/mcp-ticketer-server +0 -0
- {mcp_ticketer-0.1.7 → mcp_ticketer-0.1.11}/pytest.ini +0 -0
- {mcp_ticketer-0.1.7 → mcp_ticketer-0.1.11}/requirements-dev.txt +0 -0
- {mcp_ticketer-0.1.7 → mcp_ticketer-0.1.11}/requirements.txt +0 -0
- {mcp_ticketer-0.1.7 → mcp_ticketer-0.1.11}/setup.cfg +0 -0
- {mcp_ticketer-0.1.7 → mcp_ticketer-0.1.11}/setup.py +0 -0
- {mcp_ticketer-0.1.7 → mcp_ticketer-0.1.11}/src/mcp_ticketer/__init__.py +0 -0
- {mcp_ticketer-0.1.7 → mcp_ticketer-0.1.11}/src/mcp_ticketer/adapters/__init__.py +0 -0
- {mcp_ticketer-0.1.7 → mcp_ticketer-0.1.11}/src/mcp_ticketer/adapters/aitrackdown.py +0 -0
- {mcp_ticketer-0.1.7 → mcp_ticketer-0.1.11}/src/mcp_ticketer/adapters/jira.py +0 -0
- {mcp_ticketer-0.1.7 → mcp_ticketer-0.1.11}/src/mcp_ticketer/cache/__init__.py +0 -0
- {mcp_ticketer-0.1.7 → mcp_ticketer-0.1.11}/src/mcp_ticketer/cache/memory.py +0 -0
- {mcp_ticketer-0.1.7 → mcp_ticketer-0.1.11}/src/mcp_ticketer/cli/__init__.py +0 -0
- {mcp_ticketer-0.1.7 → mcp_ticketer-0.1.11}/src/mcp_ticketer/cli/queue_commands.py +0 -0
- {mcp_ticketer-0.1.7 → mcp_ticketer-0.1.11}/src/mcp_ticketer/cli/utils.py +0 -0
- {mcp_ticketer-0.1.7 → mcp_ticketer-0.1.11}/src/mcp_ticketer/core/__init__.py +0 -0
- {mcp_ticketer-0.1.7 → mcp_ticketer-0.1.11}/src/mcp_ticketer/core/adapter.py +0 -0
- {mcp_ticketer-0.1.7 → mcp_ticketer-0.1.11}/src/mcp_ticketer/core/config.py +0 -0
- {mcp_ticketer-0.1.7 → mcp_ticketer-0.1.11}/src/mcp_ticketer/core/http_client.py +0 -0
- {mcp_ticketer-0.1.7 → mcp_ticketer-0.1.11}/src/mcp_ticketer/core/mappers.py +0 -0
- {mcp_ticketer-0.1.7 → mcp_ticketer-0.1.11}/src/mcp_ticketer/core/models.py +0 -0
- {mcp_ticketer-0.1.7 → mcp_ticketer-0.1.11}/src/mcp_ticketer/core/registry.py +0 -0
- {mcp_ticketer-0.1.7 → mcp_ticketer-0.1.11}/src/mcp_ticketer/mcp/__init__.py +0 -0
- {mcp_ticketer-0.1.7 → mcp_ticketer-0.1.11}/src/mcp_ticketer/py.typed +0 -0
- {mcp_ticketer-0.1.7 → mcp_ticketer-0.1.11}/src/mcp_ticketer/queue/__init__.py +0 -0
- {mcp_ticketer-0.1.7 → mcp_ticketer-0.1.11}/src/mcp_ticketer/queue/__main__.py +0 -0
- {mcp_ticketer-0.1.7 → mcp_ticketer-0.1.11}/src/mcp_ticketer/queue/manager.py +0 -0
- {mcp_ticketer-0.1.7 → mcp_ticketer-0.1.11}/src/mcp_ticketer/queue/queue.py +0 -0
- {mcp_ticketer-0.1.7 → mcp_ticketer-0.1.11}/src/mcp_ticketer/queue/run_worker.py +0 -0
- {mcp_ticketer-0.1.7 → mcp_ticketer-0.1.11}/src/mcp_ticketer/queue/worker.py +0 -0
- {mcp_ticketer-0.1.7 → mcp_ticketer-0.1.11}/src/mcp_ticketer.egg-info/dependency_links.txt +0 -0
- {mcp_ticketer-0.1.7 → mcp_ticketer-0.1.11}/src/mcp_ticketer.egg-info/entry_points.txt +0 -0
- {mcp_ticketer-0.1.7 → mcp_ticketer-0.1.11}/src/mcp_ticketer.egg-info/not-zip-safe +0 -0
- {mcp_ticketer-0.1.7 → mcp_ticketer-0.1.11}/src/mcp_ticketer.egg-info/top_level.txt +0 -0
- {mcp_ticketer-0.1.7 → mcp_ticketer-0.1.11}/test-tickets/tickets/task-20250924002724.json +0 -0
- {mcp_ticketer-0.1.7 → mcp_ticketer-0.1.11}/test_all_adapters.py +0 -0
- {mcp_ticketer-0.1.7 → mcp_ticketer-0.1.11}/test_api_usage.py +0 -0
- {mcp_ticketer-0.1.7 → mcp_ticketer-0.1.11}/test_basic.py +0 -0
- {mcp_ticketer-0.1.7 → mcp_ticketer-0.1.11}/test_comprehensive.py +0 -0
- {mcp_ticketer-0.1.7 → mcp_ticketer-0.1.11}/test_error_handling.py +0 -0
- {mcp_ticketer-0.1.7 → mcp_ticketer-0.1.11}/test_github.py +0 -0
- {mcp_ticketer-0.1.7 → mcp_ticketer-0.1.11}/test_github_token.py +0 -0
- {mcp_ticketer-0.1.7 → mcp_ticketer-0.1.11}/test_jira.py +0 -0
- {mcp_ticketer-0.1.7 → mcp_ticketer-0.1.11}/test_linear.py +0 -0
- {mcp_ticketer-0.1.7 → mcp_ticketer-0.1.11}/test_linear_native.py +0 -0
- {mcp_ticketer-0.1.7 → mcp_ticketer-0.1.11}/test_linear_teams.py +0 -0
- {mcp_ticketer-0.1.7 → mcp_ticketer-0.1.11}/test_optimizations.py +0 -0
- {mcp_ticketer-0.1.7 → mcp_ticketer-0.1.11}/test_performance.py +0 -0
- {mcp_ticketer-0.1.7 → mcp_ticketer-0.1.11}/test_queue_system.py +0 -0
- {mcp_ticketer-0.1.7 → mcp_ticketer-0.1.11}/test_set_command.sh +0 -0
- {mcp_ticketer-0.1.7 → mcp_ticketer-0.1.11}/tox.ini +0 -0
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
{
|
|
2
|
+
"4dbc8c55f67f6d3be20defca64a7fd59": {
|
|
3
|
+
"timestamp": 1759151482.154937,
|
|
4
|
+
"results": {
|
|
5
|
+
"agents": {},
|
|
6
|
+
"summary": {
|
|
7
|
+
"total_agents": 28,
|
|
8
|
+
"agents_with_deps": 0,
|
|
9
|
+
"missing_python": [],
|
|
10
|
+
"missing_system": [],
|
|
11
|
+
"satisfied_python": [],
|
|
12
|
+
"satisfied_system": []
|
|
13
|
+
}
|
|
14
|
+
},
|
|
15
|
+
"deployment_hash": "2b97d2f945e90eeb72728aae57c97307129de6f2ed28aa2ebb4c5b77be654b57",
|
|
16
|
+
"context": {}
|
|
17
|
+
},
|
|
18
|
+
"c5091e71c46663085bb4b8322fd43cfe": {
|
|
19
|
+
"timestamp": 1759169008.0461519,
|
|
20
|
+
"results": {
|
|
21
|
+
"agents": {},
|
|
22
|
+
"summary": {
|
|
23
|
+
"total_agents": 29,
|
|
24
|
+
"agents_with_deps": 0,
|
|
25
|
+
"missing_python": [],
|
|
26
|
+
"missing_system": [],
|
|
27
|
+
"satisfied_python": [],
|
|
28
|
+
"satisfied_system": []
|
|
29
|
+
}
|
|
30
|
+
},
|
|
31
|
+
"deployment_hash": "540cc5fa79e85053d3acd4db2f7f44c3375bd72a620e8f7b8b63ab00ce653fc7",
|
|
32
|
+
"context": {}
|
|
33
|
+
}
|
|
34
|
+
}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
{
|
|
2
|
+
"deployment_hash": "540cc5fa79e85053d3acd4db2f7f44c3375bd72a620e8f7b8b63ab00ce653fc7",
|
|
3
|
+
"last_check_time": 1759169008.046635,
|
|
4
|
+
"last_check_results": {
|
|
5
|
+
"agents": {},
|
|
6
|
+
"summary": {
|
|
7
|
+
"total_agents": 29,
|
|
8
|
+
"agents_with_deps": 0,
|
|
9
|
+
"missing_python": [],
|
|
10
|
+
"missing_system": [],
|
|
11
|
+
"satisfied_python": [],
|
|
12
|
+
"satisfied_system": []
|
|
13
|
+
}
|
|
14
|
+
},
|
|
15
|
+
"agent_count": 29
|
|
16
|
+
}
|
|
@@ -5,10 +5,10 @@ model: sonnet
|
|
|
5
5
|
type: ops
|
|
6
6
|
color: blue
|
|
7
7
|
category: operations
|
|
8
|
-
version: "1.
|
|
8
|
+
version: "1.1.0"
|
|
9
9
|
author: "Claude MPM Team"
|
|
10
10
|
created_at: 2025-09-21T17:00:00.000000Z
|
|
11
|
-
updated_at: 2025-09-
|
|
11
|
+
updated_at: 2025-09-25T12:00:00.000000Z
|
|
12
12
|
tags: clerk,authentication,oauth,next.js,react,webhooks,middleware,localhost,development,production,dynamic-ports,ngrok,satellite-domains,troubleshooting
|
|
13
13
|
---
|
|
14
14
|
# BASE OPS Agent Instructions
|
|
@@ -332,6 +332,53 @@ NEXT_PUBLIC_CLERK_SIGN_UP_FORCE_REDIRECT_URL=/dashboard
|
|
|
332
332
|
|
|
333
333
|
### Next.js Integration Patterns
|
|
334
334
|
|
|
335
|
+
**CRITICAL: ClerkProvider Configuration Requirements**:
|
|
336
|
+
|
|
337
|
+
⚠️ **Essential Configuration Insight**: The ClerkProvider must be at the root level and cannot be dynamically imported - it needs to wrap the entire app before any hooks are used. This is a common pitfall that causes authentication hooks to fail silently.
|
|
338
|
+
|
|
339
|
+
**Correct Implementation Pattern**:
|
|
340
|
+
```typescript
|
|
341
|
+
// app/layout.tsx or _app.tsx - MUST be at root level
|
|
342
|
+
import { ClerkProvider } from '@clerk/nextjs'
|
|
343
|
+
|
|
344
|
+
export default function RootLayout({ children }: { children: React.ReactNode }) {
|
|
345
|
+
return (
|
|
346
|
+
<ClerkProvider>
|
|
347
|
+
<html lang="en">
|
|
348
|
+
<body>{children}</body>
|
|
349
|
+
</html>
|
|
350
|
+
</ClerkProvider>
|
|
351
|
+
)
|
|
352
|
+
}
|
|
353
|
+
```
|
|
354
|
+
|
|
355
|
+
**Common Mistakes to Avoid**:
|
|
356
|
+
- ❌ Never dynamically import ClerkProvider
|
|
357
|
+
- ❌ Don't conditionally render ClerkProvider based on feature flags
|
|
358
|
+
- ❌ Avoid wrapping only parts of your app with ClerkProvider
|
|
359
|
+
- ✅ Always place ClerkProvider at the root level
|
|
360
|
+
- ✅ The solution properly handles both auth-enabled and auth-disabled modes while supporting internationalization
|
|
361
|
+
|
|
362
|
+
**Supporting Both Auth Modes with i18n**:
|
|
363
|
+
```typescript
|
|
364
|
+
// Proper pattern for conditional auth with internationalization
|
|
365
|
+
import { ClerkProvider } from '@clerk/nextjs'
|
|
366
|
+
import { getLocale } from 'next-intl/server'
|
|
367
|
+
|
|
368
|
+
export default async function RootLayout({ children }: { children: React.ReactNode }) {
|
|
369
|
+
const locale = await getLocale()
|
|
370
|
+
|
|
371
|
+
// ClerkProvider at root - works with both auth-enabled and disabled modes
|
|
372
|
+
return (
|
|
373
|
+
<ClerkProvider>
|
|
374
|
+
<html lang={locale}>
|
|
375
|
+
<body>{children}</body>
|
|
376
|
+
</html>
|
|
377
|
+
</ClerkProvider>
|
|
378
|
+
)
|
|
379
|
+
}
|
|
380
|
+
```
|
|
381
|
+
|
|
335
382
|
**App Router Server Component Pattern**:
|
|
336
383
|
```typescript
|
|
337
384
|
// app/dashboard/page.tsx
|