moai-adk 0.34.0__py3-none-any.whl → 1.1.0__py3-none-any.whl
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.
- moai_adk/__main__.py +136 -5
- moai_adk/astgrep/__init__.py +37 -0
- moai_adk/astgrep/analyzer.py +522 -0
- moai_adk/astgrep/models.py +124 -0
- moai_adk/astgrep/rules.py +179 -0
- moai_adk/cli/commands/analyze.py +11 -2
- moai_adk/cli/commands/doctor.py +7 -1
- moai_adk/cli/commands/init.py +321 -11
- moai_adk/cli/commands/language.py +7 -1
- moai_adk/cli/commands/rank.py +449 -0
- moai_adk/cli/commands/status.py +7 -1
- moai_adk/cli/commands/switch.py +325 -0
- moai_adk/cli/commands/update.py +296 -23
- moai_adk/cli/prompts/init_prompts.py +362 -66
- moai_adk/cli/prompts/translations/__init__.py +573 -0
- moai_adk/cli/ui/prompts.py +61 -2
- moai_adk/cli/worktree/cli.py +106 -1
- moai_adk/cli/worktree/manager.py +155 -0
- moai_adk/core/config/unified.py +244 -63
- moai_adk/core/credentials.py +264 -0
- moai_adk/core/error_recovery_system.py +22 -4
- moai_adk/core/git/conflict_detector.py +10 -1
- moai_adk/core/git/event_detector.py +16 -5
- moai_adk/core/integration/engine.py +2 -2
- moai_adk/core/integration/integration_tester.py +5 -5
- moai_adk/core/language_config_resolver.py +9 -3
- moai_adk/core/merge/analyzer.py +509 -324
- moai_adk/core/migration/alfred_to_moai_migrator.py +7 -1
- moai_adk/core/migration/backup_manager.py +54 -4
- moai_adk/core/migration/file_migrator.py +174 -2
- moai_adk/core/migration/interactive_checkbox_ui.py +42 -31
- moai_adk/core/migration/version_detector.py +123 -19
- moai_adk/core/migration/version_migrator.py +44 -9
- moai_adk/core/model_allocator.py +241 -0
- moai_adk/core/project/backup_utils.py +12 -2
- moai_adk/core/project/initializer.py +44 -87
- moai_adk/core/project/phase_executor.py +95 -33
- moai_adk/core/project/validator.py +16 -1
- moai_adk/core/quality/trust_checker.py +30 -10
- moai_adk/core/rollback_manager.py +60 -25
- moai_adk/core/template/backup.py +88 -6
- moai_adk/core/template/config.py +33 -9
- moai_adk/core/template/merger.py +34 -8
- moai_adk/core/template/processor.py +334 -11
- moai_adk/core/template_engine.py +10 -1
- moai_adk/core/template_variable_synchronizer.py +16 -2
- moai_adk/core/version_sync.py +54 -6
- moai_adk/foundation/__init__.py +1 -20
- moai_adk/foundation/testing.py +1 -1
- moai_adk/loop/__init__.py +54 -0
- moai_adk/loop/controller.py +305 -0
- moai_adk/loop/feedback.py +230 -0
- moai_adk/loop/state.py +209 -0
- moai_adk/loop/storage.py +220 -0
- moai_adk/lsp/__init__.py +70 -0
- moai_adk/lsp/client.py +320 -0
- moai_adk/lsp/models.py +261 -0
- moai_adk/lsp/protocol.py +404 -0
- moai_adk/lsp/server_manager.py +248 -0
- moai_adk/project/configuration.py +8 -1
- moai_adk/py.typed +0 -0
- moai_adk/ralph/__init__.py +37 -0
- moai_adk/ralph/engine.py +307 -0
- moai_adk/rank/__init__.py +21 -0
- moai_adk/rank/auth.py +425 -0
- moai_adk/rank/client.py +557 -0
- moai_adk/rank/config.py +147 -0
- moai_adk/rank/hook.py +1503 -0
- moai_adk/rank/py.typed +0 -0
- moai_adk/statusline/__init__.py +3 -0
- moai_adk/statusline/enhanced_output_style_detector.py +5 -5
- moai_adk/statusline/main.py +20 -1
- moai_adk/statusline/memory_collector.py +268 -0
- moai_adk/statusline/renderer.py +54 -38
- moai_adk/tag_system/__init__.py +48 -0
- moai_adk/tag_system/atomic_ops.py +117 -0
- moai_adk/tag_system/linkage.py +335 -0
- moai_adk/tag_system/parser.py +176 -0
- moai_adk/tag_system/validator.py +200 -0
- moai_adk/templates/.claude/agents/moai/builder-agent.md +19 -3
- moai_adk/templates/.claude/agents/moai/builder-command.md +62 -16
- moai_adk/templates/.claude/agents/moai/builder-plugin.md +763 -0
- moai_adk/templates/.claude/agents/moai/builder-skill.md +21 -5
- moai_adk/templates/.claude/agents/moai/expert-backend.md +103 -39
- moai_adk/templates/.claude/agents/moai/expert-debug.md +9 -3
- moai_adk/templates/.claude/agents/moai/expert-devops.md +16 -14
- moai_adk/templates/.claude/agents/moai/expert-frontend.md +45 -31
- moai_adk/templates/.claude/agents/moai/expert-performance.md +13 -9
- moai_adk/templates/.claude/agents/moai/expert-refactoring.md +228 -0
- moai_adk/templates/.claude/agents/moai/expert-security.md +19 -3
- moai_adk/templates/.claude/agents/moai/expert-testing.md +13 -9
- moai_adk/templates/.claude/agents/moai/manager-claude-code.md +8 -2
- moai_adk/templates/.claude/agents/moai/manager-docs.md +10 -5
- moai_adk/templates/.claude/agents/moai/manager-git.md +99 -27
- moai_adk/templates/.claude/agents/moai/manager-project.md +87 -7
- moai_adk/templates/.claude/agents/moai/manager-quality.md +22 -5
- moai_adk/templates/.claude/agents/moai/manager-spec.md +8 -2
- moai_adk/templates/.claude/agents/moai/manager-strategy.md +45 -14
- moai_adk/templates/.claude/agents/moai/manager-tdd.md +16 -3
- moai_adk/templates/.claude/commands/moai/0-project.md +239 -1185
- moai_adk/templates/.claude/commands/moai/1-plan.md +383 -363
- moai_adk/templates/.claude/commands/moai/2-run.md +254 -347
- moai_adk/templates/.claude/commands/moai/3-sync.md +174 -100
- moai_adk/templates/.claude/commands/moai/9-feedback.md +49 -33
- moai_adk/templates/.claude/commands/moai/alfred.md +339 -0
- moai_adk/templates/.claude/commands/moai/cancel-loop.md +163 -0
- moai_adk/templates/.claude/commands/moai/fix.md +264 -0
- moai_adk/templates/.claude/commands/moai/loop.md +363 -0
- moai_adk/templates/.claude/hooks/moai/lib/README.md +143 -0
- moai_adk/templates/.claude/hooks/moai/lib/__init__.py +37 -81
- moai_adk/templates/.claude/hooks/moai/lib/alfred_detector.py +105 -0
- moai_adk/templates/.claude/hooks/moai/lib/atomic_write.py +122 -0
- moai_adk/templates/.claude/hooks/moai/lib/checkpoint.py +4 -1
- moai_adk/templates/.claude/hooks/moai/lib/common.py +35 -5
- moai_adk/templates/.claude/hooks/moai/lib/config.py +376 -0
- moai_adk/templates/.claude/hooks/moai/lib/config_manager.py +24 -28
- moai_adk/templates/.claude/hooks/moai/lib/config_validator.py +14 -14
- moai_adk/templates/.claude/hooks/moai/lib/enhanced_output_style_detector.py +372 -0
- moai_adk/templates/.claude/hooks/moai/lib/exceptions.py +171 -0
- moai_adk/templates/.claude/hooks/moai/lib/file_utils.py +95 -0
- moai_adk/templates/.claude/hooks/moai/lib/git_collector.py +190 -0
- moai_adk/templates/.claude/hooks/moai/lib/git_operations_manager.py +15 -13
- moai_adk/templates/.claude/hooks/moai/lib/language_detector.py +298 -0
- moai_adk/templates/.claude/hooks/moai/lib/language_validator.py +125 -25
- moai_adk/templates/.claude/hooks/moai/lib/main.py +341 -0
- moai_adk/templates/.claude/hooks/moai/lib/memory_collector.py +268 -0
- moai_adk/templates/.claude/hooks/moai/lib/metrics_tracker.py +78 -0
- moai_adk/templates/.claude/hooks/moai/lib/models.py +9 -7
- moai_adk/templates/.claude/hooks/moai/lib/path_utils.py +204 -13
- moai_adk/templates/.claude/hooks/moai/lib/project.py +23 -14
- moai_adk/templates/.claude/hooks/moai/lib/renderer.py +359 -0
- moai_adk/templates/.claude/hooks/moai/lib/tag_linkage.py +333 -0
- moai_adk/templates/.claude/hooks/moai/lib/tag_parser.py +176 -0
- moai_adk/templates/.claude/hooks/moai/lib/tag_validator.py +200 -0
- moai_adk/templates/.claude/hooks/moai/lib/timeout.py +5 -5
- moai_adk/templates/.claude/hooks/moai/lib/tool_registry.py +896 -0
- moai_adk/templates/.claude/hooks/moai/lib/unified_timeout_manager.py +30 -18
- moai_adk/templates/.claude/hooks/moai/lib/update_checker.py +129 -0
- moai_adk/templates/.claude/hooks/moai/lib/version_reader.py +741 -0
- moai_adk/templates/.claude/hooks/moai/post_tool__ast_grep_scan.py +276 -0
- moai_adk/templates/.claude/hooks/moai/post_tool__code_formatter.py +255 -0
- moai_adk/templates/.claude/hooks/moai/post_tool__coverage_guard.py +325 -0
- moai_adk/templates/.claude/hooks/moai/post_tool__linter.py +315 -0
- moai_adk/templates/.claude/hooks/moai/post_tool__lsp_diagnostic.py +508 -0
- moai_adk/templates/.claude/hooks/moai/pre_commit__tag_validator.py +287 -0
- moai_adk/templates/.claude/hooks/moai/pre_tool__security_guard.py +268 -0
- moai_adk/templates/.claude/hooks/moai/pre_tool__tdd_enforcer.py +208 -0
- moai_adk/templates/.claude/hooks/moai/session_end__auto_cleanup.py +93 -61
- moai_adk/templates/.claude/hooks/moai/session_end__rank_submit.py +69 -0
- moai_adk/templates/.claude/hooks/moai/session_start__show_project_info.py +165 -70
- moai_adk/templates/.claude/hooks/moai/shared/utils/announcement_translator.py +206 -0
- moai_adk/templates/.claude/hooks/moai/stop__loop_controller.py +621 -0
- moai_adk/templates/.claude/output-styles/moai/alfred.md +758 -0
- moai_adk/templates/.claude/output-styles/moai/r2d2.md +86 -3
- moai_adk/templates/.claude/output-styles/moai/yoda.md +2 -2
- moai_adk/templates/.claude/settings.json +154 -77
- moai_adk/templates/.claude/skills/moai-docs-generation/SKILL.md +252 -198
- moai_adk/templates/.claude/skills/moai-docs-generation/examples.md +169 -323
- moai_adk/templates/.claude/skills/moai-docs-generation/modules/README.md +39 -27
- moai_adk/templates/.claude/skills/moai-docs-generation/modules/api-documentation.md +115 -125
- moai_adk/templates/.claude/skills/moai-docs-generation/modules/code-documentation.md +150 -150
- moai_adk/templates/.claude/skills/moai-docs-generation/modules/multi-format-output.md +182 -175
- moai_adk/templates/.claude/skills/moai-docs-generation/modules/user-guides.md +198 -138
- moai_adk/templates/.claude/skills/moai-docs-generation/reference.md +226 -320
- moai_adk/templates/.claude/skills/moai-domain-backend/SKILL.md +43 -222
- moai_adk/templates/.claude/skills/moai-domain-database/SKILL.md +75 -219
- moai_adk/templates/.claude/skills/moai-domain-frontend/SKILL.md +103 -463
- moai_adk/templates/.claude/skills/moai-domain-frontend/modules/component-architecture.md +723 -0
- moai_adk/templates/.claude/skills/moai-domain-frontend/modules/nextjs16-patterns.md +713 -0
- moai_adk/templates/.claude/skills/moai-domain-frontend/modules/performance-optimization.md +694 -0
- moai_adk/templates/.claude/skills/moai-domain-frontend/modules/react19-patterns.md +591 -0
- moai_adk/templates/.claude/skills/moai-domain-frontend/modules/state-management.md +680 -0
- moai_adk/templates/.claude/skills/moai-domain-frontend/modules/vue35-patterns.md +802 -0
- moai_adk/templates/.claude/skills/moai-domain-uiux/SKILL.md +118 -339
- moai_adk/templates/.claude/skills/moai-formats-data/SKILL.md +74 -377
- moai_adk/templates/.claude/skills/moai-formats-data/modules/README.md +299 -70
- moai_adk/templates/.claude/skills/moai-foundation-claude/SKILL.md +205 -182
- moai_adk/templates/.claude/skills/moai-foundation-claude/reference/advanced-agent-patterns.md +370 -0
- moai_adk/templates/.claude/skills/moai-foundation-claude/reference/claude-code-cli-reference-official.md +420 -0
- moai_adk/templates/.claude/skills/moai-foundation-claude/reference/claude-code-custom-slash-commands-official.md +32 -22
- moai_adk/templates/.claude/skills/moai-foundation-claude/reference/claude-code-devcontainers-official.md +381 -0
- moai_adk/templates/.claude/skills/moai-foundation-claude/reference/claude-code-discover-plugins-official.md +379 -0
- moai_adk/templates/.claude/skills/moai-foundation-claude/reference/claude-code-headless-official.md +378 -0
- moai_adk/templates/.claude/skills/moai-foundation-claude/reference/claude-code-hooks-official.md +110 -0
- moai_adk/templates/.claude/skills/moai-foundation-claude/reference/claude-code-plugin-marketplaces-official.md +308 -0
- moai_adk/templates/.claude/skills/moai-foundation-claude/reference/claude-code-plugins-official.md +640 -0
- moai_adk/templates/.claude/skills/moai-foundation-claude/reference/claude-code-sandboxing-official.md +282 -0
- moai_adk/templates/.claude/skills/moai-foundation-claude/reference/claude-code-skills-official.md +425 -71
- moai_adk/templates/.claude/skills/moai-foundation-claude/reference/claude-code-statusline-official.md +293 -0
- moai_adk/templates/.claude/skills/moai-foundation-claude/reference/claude-code-sub-agents-official.md +325 -143
- moai_adk/templates/.claude/skills/moai-foundation-context/SKILL.md +96 -316
- moai_adk/templates/.claude/skills/moai-foundation-core/SKILL.md +116 -294
- moai_adk/templates/.claude/skills/moai-foundation-core/modules/delegation-advanced.md +279 -0
- moai_adk/templates/.claude/skills/moai-foundation-core/modules/delegation-implementation.md +267 -0
- moai_adk/templates/.claude/skills/moai-foundation-core/modules/delegation-patterns.md +121 -650
- moai_adk/templates/.claude/skills/moai-foundation-core/modules/patterns.md +22 -0
- moai_adk/templates/.claude/skills/moai-foundation-core/modules/spec-ears-format.md +200 -0
- moai_adk/templates/.claude/skills/moai-foundation-core/modules/spec-first-tdd.md +37 -730
- moai_adk/templates/.claude/skills/moai-foundation-core/modules/spec-tdd-implementation.md +275 -0
- moai_adk/templates/.claude/skills/moai-foundation-core/modules/trust-5-framework.md +77 -819
- moai_adk/templates/.claude/skills/moai-foundation-core/modules/trust-5-implementation.md +244 -0
- moai_adk/templates/.claude/skills/moai-foundation-core/modules/trust-5-validation.md +219 -0
- moai_adk/templates/.claude/skills/moai-foundation-philosopher/SKILL.md +14 -18
- moai_adk/templates/.claude/skills/moai-foundation-quality/SKILL.md +86 -270
- moai_adk/templates/.claude/skills/moai-framework-electron/SKILL.md +288 -0
- moai_adk/templates/.claude/skills/moai-framework-electron/examples.md +2082 -0
- moai_adk/templates/.claude/skills/moai-framework-electron/reference.md +1649 -0
- moai_adk/templates/.claude/skills/moai-lang-cpp/SKILL.md +76 -582
- moai_adk/templates/.claude/skills/moai-lang-cpp/examples.md +1239 -0
- moai_adk/templates/.claude/skills/moai-lang-cpp/modules/advanced-patterns.md +401 -0
- moai_adk/templates/.claude/skills/moai-lang-cpp/reference.md +1136 -0
- moai_adk/templates/.claude/skills/moai-lang-csharp/SKILL.md +82 -436
- moai_adk/templates/.claude/skills/moai-lang-csharp/examples.md +585 -0
- moai_adk/templates/.claude/skills/moai-lang-csharp/modules/aspnet-core.md +627 -0
- moai_adk/templates/.claude/skills/moai-lang-csharp/modules/blazor-components.md +767 -0
- moai_adk/templates/.claude/skills/moai-lang-csharp/modules/cqrs-validation.md +626 -0
- moai_adk/templates/.claude/skills/moai-lang-csharp/modules/csharp12-features.md +580 -0
- moai_adk/templates/.claude/skills/moai-lang-csharp/modules/efcore-patterns.md +622 -0
- moai_adk/templates/.claude/skills/moai-lang-csharp/reference.md +403 -0
- moai_adk/templates/.claude/skills/moai-lang-elixir/SKILL.md +65 -542
- moai_adk/templates/.claude/skills/moai-lang-elixir/examples.md +1171 -0
- moai_adk/templates/.claude/skills/moai-lang-elixir/modules/advanced-patterns.md +531 -0
- moai_adk/templates/.claude/skills/moai-lang-elixir/reference.md +889 -0
- moai_adk/templates/.claude/skills/moai-lang-flutter/SKILL.md +32 -405
- moai_adk/templates/.claude/skills/moai-lang-go/SKILL.md +114 -293
- moai_adk/templates/.claude/skills/moai-lang-java/SKILL.md +83 -307
- moai_adk/templates/.claude/skills/moai-lang-javascript/SKILL.md +179 -0
- moai_adk/templates/.claude/skills/moai-lang-javascript/examples.md +973 -0
- moai_adk/templates/.claude/skills/moai-lang-javascript/reference.md +1543 -0
- moai_adk/templates/.claude/skills/moai-lang-kotlin/SKILL.md +42 -279
- moai_adk/templates/.claude/skills/moai-lang-php/SKILL.md +94 -556
- moai_adk/templates/.claude/skills/moai-lang-php/examples.md +1608 -0
- moai_adk/templates/.claude/skills/moai-lang-php/modules/advanced-patterns.md +538 -0
- moai_adk/templates/.claude/skills/moai-lang-php/reference.md +1323 -0
- moai_adk/templates/.claude/skills/moai-lang-python/SKILL.md +108 -358
- moai_adk/templates/.claude/skills/moai-lang-r/SKILL.md +84 -482
- moai_adk/templates/.claude/skills/moai-lang-r/examples.md +1154 -0
- moai_adk/templates/.claude/skills/moai-lang-r/modules/advanced-patterns.md +489 -0
- moai_adk/templates/.claude/skills/moai-lang-r/reference.md +1087 -0
- moai_adk/templates/.claude/skills/moai-lang-ruby/SKILL.md +106 -610
- moai_adk/templates/.claude/skills/moai-lang-ruby/examples.md +1106 -0
- moai_adk/templates/.claude/skills/moai-lang-ruby/modules/advanced-patterns.md +309 -0
- moai_adk/templates/.claude/skills/moai-lang-ruby/modules/testing-patterns.md +306 -0
- moai_adk/templates/.claude/skills/moai-lang-ruby/reference.md +1024 -0
- moai_adk/templates/.claude/skills/moai-lang-rust/SKILL.md +51 -265
- moai_adk/templates/.claude/skills/moai-lang-scala/SKILL.md +106 -442
- moai_adk/templates/.claude/skills/moai-lang-scala/modules/akka-actors.md +479 -0
- moai_adk/templates/.claude/skills/moai-lang-scala/modules/cats-effect.md +489 -0
- moai_adk/templates/.claude/skills/moai-lang-scala/modules/functional-programming.md +460 -0
- moai_adk/templates/.claude/skills/moai-lang-scala/modules/spark-data.md +498 -0
- moai_adk/templates/.claude/skills/moai-lang-scala/modules/zio-patterns.md +541 -0
- moai_adk/templates/.claude/skills/moai-lang-swift/SKILL.md +88 -457
- moai_adk/templates/.claude/skills/moai-lang-swift/modules/combine-reactive.md +256 -0
- moai_adk/templates/.claude/skills/moai-lang-swift/modules/concurrency.md +270 -0
- moai_adk/templates/.claude/skills/moai-lang-swift/modules/swift6-features.md +265 -0
- moai_adk/templates/.claude/skills/moai-lang-swift/modules/swiftui-patterns.md +314 -0
- moai_adk/templates/.claude/skills/moai-lang-typescript/SKILL.md +75 -283
- moai_adk/templates/.claude/skills/moai-library-mermaid/SKILL.md +97 -252
- moai_adk/templates/.claude/skills/moai-library-nextra/SKILL.md +64 -240
- moai_adk/templates/.claude/skills/moai-library-nextra/modules/advanced-patterns.md +331 -12
- moai_adk/templates/.claude/skills/moai-library-nextra/modules/configuration.md +330 -37
- moai_adk/templates/.claude/skills/moai-library-shadcn/SKILL.md +90 -287
- moai_adk/templates/.claude/skills/moai-platform-auth0/SKILL.md +200 -206
- moai_adk/templates/.claude/skills/moai-platform-auth0/examples.md +2446 -0
- moai_adk/templates/.claude/skills/moai-platform-auth0/modules/adaptive-mfa.md +233 -0
- moai_adk/templates/.claude/skills/moai-platform-auth0/modules/akamai-integration.md +214 -0
- moai_adk/templates/.claude/skills/moai-platform-auth0/modules/application-credentials.md +280 -0
- moai_adk/templates/.claude/skills/moai-platform-auth0/modules/attack-protection-log-events.md +224 -0
- moai_adk/templates/.claude/skills/moai-platform-auth0/modules/attack-protection-overview.md +140 -0
- moai_adk/templates/.claude/skills/moai-platform-auth0/modules/bot-detection.md +144 -0
- moai_adk/templates/.claude/skills/moai-platform-auth0/modules/breached-password-detection.md +187 -0
- moai_adk/templates/.claude/skills/moai-platform-auth0/modules/brute-force-protection.md +189 -0
- moai_adk/templates/.claude/skills/moai-platform-auth0/modules/certifications.md +282 -0
- moai_adk/templates/.claude/skills/moai-platform-auth0/modules/compliance-overview.md +263 -0
- moai_adk/templates/.claude/skills/moai-platform-auth0/modules/continuous-session-protection.md +307 -0
- moai_adk/templates/.claude/skills/moai-platform-auth0/modules/customize-mfa.md +177 -0
- moai_adk/templates/.claude/skills/moai-platform-auth0/modules/dpop-implementation.md +283 -0
- moai_adk/templates/.claude/skills/moai-platform-auth0/modules/fapi-implementation.md +259 -0
- moai_adk/templates/.claude/skills/moai-platform-auth0/modules/gdpr-compliance.md +313 -0
- moai_adk/templates/.claude/skills/moai-platform-auth0/modules/guardian-configuration.md +269 -0
- moai_adk/templates/.claude/skills/moai-platform-auth0/modules/highly-regulated-identity.md +272 -0
- moai_adk/templates/.claude/skills/moai-platform-auth0/modules/jwt-fundamentals.md +248 -0
- moai_adk/templates/.claude/skills/moai-platform-auth0/modules/mdl-verification.md +210 -0
- moai_adk/templates/.claude/skills/moai-platform-auth0/modules/mfa-api-management.md +278 -0
- moai_adk/templates/.claude/skills/moai-platform-auth0/modules/mfa-factors.md +226 -0
- moai_adk/templates/.claude/skills/moai-platform-auth0/modules/mfa-overview.md +174 -0
- moai_adk/templates/.claude/skills/moai-platform-auth0/modules/mtls-sender-constraining.md +316 -0
- moai_adk/templates/.claude/skills/moai-platform-auth0/modules/ropg-flow-mfa.md +216 -0
- moai_adk/templates/.claude/skills/moai-platform-auth0/modules/security-center.md +325 -0
- moai_adk/templates/.claude/skills/moai-platform-auth0/modules/security-guidance.md +277 -0
- moai_adk/templates/.claude/skills/moai-platform-auth0/modules/state-parameters.md +177 -0
- moai_adk/templates/.claude/skills/moai-platform-auth0/modules/step-up-authentication.md +251 -0
- moai_adk/templates/.claude/skills/moai-platform-auth0/modules/suspicious-ip-throttling.md +240 -0
- moai_adk/templates/.claude/skills/moai-platform-auth0/modules/tenant-access-control.md +179 -0
- moai_adk/templates/.claude/skills/moai-platform-auth0/modules/webauthn-fido.md +235 -0
- moai_adk/templates/.claude/skills/moai-platform-auth0/reference.md +224 -0
- moai_adk/templates/.claude/skills/moai-platform-clerk/SKILL.md +75 -330
- moai_adk/templates/.claude/skills/moai-platform-clerk/examples.md +1426 -0
- moai_adk/templates/.claude/skills/moai-platform-clerk/modules/advanced-patterns.md +417 -0
- moai_adk/templates/.claude/skills/moai-platform-clerk/reference.md +273 -0
- moai_adk/templates/.claude/skills/moai-platform-convex/SKILL.md +100 -340
- moai_adk/templates/.claude/skills/moai-platform-convex/examples.md +506 -0
- moai_adk/templates/.claude/skills/moai-platform-convex/modules/auth-integration.md +421 -0
- moai_adk/templates/.claude/skills/moai-platform-convex/modules/file-storage.md +474 -0
- moai_adk/templates/.claude/skills/moai-platform-convex/modules/reactive-queries.md +302 -0
- moai_adk/templates/.claude/skills/moai-platform-convex/modules/server-functions.md +452 -0
- moai_adk/templates/.claude/skills/moai-platform-convex/reference.md +385 -0
- moai_adk/templates/.claude/skills/moai-platform-firebase-auth/SKILL.md +113 -326
- moai_adk/templates/.claude/skills/moai-platform-firebase-auth/examples.md +514 -0
- moai_adk/templates/.claude/skills/moai-platform-firebase-auth/modules/custom-claims.md +374 -0
- moai_adk/templates/.claude/skills/moai-platform-firebase-auth/modules/phone-auth.md +372 -0
- moai_adk/templates/.claude/skills/moai-platform-firebase-auth/modules/social-auth.md +339 -0
- moai_adk/templates/.claude/skills/moai-platform-firebase-auth/reference.md +382 -0
- moai_adk/templates/.claude/skills/moai-platform-firestore/SKILL.md +71 -302
- moai_adk/templates/.claude/skills/moai-platform-firestore/examples.md +445 -0
- moai_adk/templates/.claude/skills/moai-platform-firestore/modules/offline-cache.md +392 -0
- moai_adk/templates/.claude/skills/moai-platform-firestore/modules/realtime-listeners.md +441 -0
- moai_adk/templates/.claude/skills/moai-platform-firestore/modules/security-rules.md +352 -0
- moai_adk/templates/.claude/skills/moai-platform-firestore/modules/transactions.md +452 -0
- moai_adk/templates/.claude/skills/moai-platform-firestore/reference.md +322 -0
- moai_adk/templates/.claude/skills/moai-platform-neon/SKILL.md +101 -412
- moai_adk/templates/.claude/skills/moai-platform-neon/examples.md +470 -0
- moai_adk/templates/.claude/skills/moai-platform-neon/modules/auto-scaling.md +349 -0
- moai_adk/templates/.claude/skills/moai-platform-neon/modules/branching-workflows.md +354 -0
- moai_adk/templates/.claude/skills/moai-platform-neon/modules/connection-pooling.md +412 -0
- moai_adk/templates/.claude/skills/moai-platform-neon/modules/pitr-backups.md +458 -0
- moai_adk/templates/.claude/skills/moai-platform-neon/reference.md +272 -0
- moai_adk/templates/.claude/skills/moai-platform-railway/SKILL.md +96 -327
- moai_adk/templates/.claude/skills/moai-platform-railway/examples.md +539 -0
- moai_adk/templates/.claude/skills/moai-platform-railway/modules/docker-deployment.md +261 -0
- moai_adk/templates/.claude/skills/moai-platform-railway/modules/multi-service.md +291 -0
- moai_adk/templates/.claude/skills/moai-platform-railway/modules/networking-domains.md +338 -0
- moai_adk/templates/.claude/skills/moai-platform-railway/modules/volumes-storage.md +353 -0
- moai_adk/templates/.claude/skills/moai-platform-railway/reference.md +374 -0
- moai_adk/templates/.claude/skills/moai-platform-supabase/SKILL.md +103 -428
- moai_adk/templates/.claude/skills/moai-platform-supabase/examples.md +502 -0
- moai_adk/templates/.claude/skills/moai-platform-supabase/modules/auth-integration.md +384 -0
- moai_adk/templates/.claude/skills/moai-platform-supabase/modules/edge-functions.md +371 -0
- moai_adk/templates/.claude/skills/moai-platform-supabase/modules/postgresql-pgvector.md +231 -0
- moai_adk/templates/.claude/skills/moai-platform-supabase/modules/realtime-presence.md +354 -0
- moai_adk/templates/.claude/skills/moai-platform-supabase/modules/row-level-security.md +286 -0
- moai_adk/templates/.claude/skills/moai-platform-supabase/modules/storage-cdn.md +319 -0
- moai_adk/templates/.claude/skills/moai-platform-supabase/modules/typescript-patterns.md +453 -0
- moai_adk/templates/.claude/skills/moai-platform-supabase/reference.md +284 -0
- moai_adk/templates/.claude/skills/moai-platform-vercel/SKILL.md +96 -446
- moai_adk/templates/.claude/skills/moai-platform-vercel/examples.md +502 -0
- moai_adk/templates/.claude/skills/moai-platform-vercel/modules/analytics-speed.md +348 -0
- moai_adk/templates/.claude/skills/moai-platform-vercel/modules/deployment-config.md +344 -0
- moai_adk/templates/.claude/skills/moai-platform-vercel/modules/edge-functions.md +222 -0
- moai_adk/templates/.claude/skills/moai-platform-vercel/modules/isr-caching.md +306 -0
- moai_adk/templates/.claude/skills/moai-platform-vercel/modules/kv-storage.md +399 -0
- moai_adk/templates/.claude/skills/moai-platform-vercel/reference.md +360 -0
- moai_adk/templates/.claude/skills/moai-tool-ast-grep/SKILL.md +193 -0
- moai_adk/templates/.claude/skills/moai-tool-ast-grep/examples.md +1099 -0
- moai_adk/templates/.claude/skills/moai-tool-ast-grep/modules/language-specific.md +307 -0
- moai_adk/templates/.claude/skills/moai-tool-ast-grep/modules/pattern-syntax.md +237 -0
- moai_adk/templates/.claude/skills/moai-tool-ast-grep/modules/refactoring-patterns.md +260 -0
- moai_adk/templates/.claude/skills/moai-tool-ast-grep/modules/security-rules.md +239 -0
- moai_adk/templates/.claude/skills/moai-tool-ast-grep/reference.md +288 -0
- moai_adk/templates/.claude/skills/moai-tool-ast-grep/rules/languages/go.yml +90 -0
- moai_adk/templates/.claude/skills/moai-tool-ast-grep/rules/languages/python.yml +101 -0
- moai_adk/templates/.claude/skills/moai-tool-ast-grep/rules/languages/typescript.yml +83 -0
- moai_adk/templates/.claude/skills/moai-tool-ast-grep/rules/quality/complexity-check.yml +94 -0
- moai_adk/templates/.claude/skills/moai-tool-ast-grep/rules/quality/deprecated-apis.yml +84 -0
- moai_adk/templates/.claude/skills/moai-tool-ast-grep/rules/security/secrets-detection.yml +89 -0
- moai_adk/templates/.claude/skills/moai-tool-ast-grep/rules/security/sql-injection.yml +45 -0
- moai_adk/templates/.claude/skills/moai-tool-ast-grep/rules/security/xss-prevention.yml +50 -0
- moai_adk/templates/.claude/skills/moai-tool-ast-grep/rules/sgconfig.yml +54 -0
- moai_adk/templates/.claude/skills/moai-workflow-jit-docs/SKILL.md +225 -423
- moai_adk/templates/.claude/skills/moai-workflow-loop/SKILL.md +197 -0
- moai_adk/templates/.claude/skills/moai-workflow-loop/examples.md +1063 -0
- moai_adk/templates/.claude/skills/moai-workflow-loop/reference.md +1414 -0
- moai_adk/templates/.claude/skills/moai-workflow-project/SKILL.md +211 -314
- moai_adk/templates/.claude/skills/moai-workflow-project/schemas/tab_schema.json +15 -43
- moai_adk/templates/.claude/skills/moai-workflow-spec/SKILL.md +119 -316
- moai_adk/templates/.claude/skills/moai-workflow-spec/modules/advanced-patterns.md +237 -0
- moai_adk/templates/.claude/skills/moai-workflow-templates/SKILL.md +96 -203
- moai_adk/templates/.claude/skills/moai-workflow-testing/SKILL.md +201 -388
- moai_adk/templates/.claude/skills/moai-workflow-testing/modules/README.md +52 -3
- moai_adk/templates/.claude/skills/moai-workflow-testing/modules/ai-debugging.md +263 -806
- moai_adk/templates/.claude/skills/moai-workflow-testing/modules/automated-code-review/context7-integration.md +286 -0
- moai_adk/templates/.claude/skills/moai-workflow-testing/modules/automated-code-review/review-workflows.md +500 -0
- moai_adk/templates/.claude/skills/moai-workflow-testing/modules/automated-code-review/trust5-framework/relevance-analysis.md +154 -0
- moai_adk/templates/.claude/skills/moai-workflow-testing/modules/automated-code-review/trust5-framework/safety-analysis.md +148 -0
- moai_adk/templates/.claude/skills/moai-workflow-testing/modules/automated-code-review/trust5-framework/scoring-algorithms.md +196 -0
- moai_adk/templates/.claude/skills/moai-workflow-testing/modules/automated-code-review/trust5-framework/timeliness-analysis.md +168 -0
- moai_adk/templates/.claude/skills/moai-workflow-testing/modules/automated-code-review/trust5-framework/truthfulness-analysis.md +136 -0
- moai_adk/templates/.claude/skills/moai-workflow-testing/modules/automated-code-review/trust5-framework/usability-analysis.md +153 -0
- moai_adk/templates/.claude/skills/moai-workflow-testing/modules/automated-code-review/trust5-framework.md +257 -0
- moai_adk/templates/.claude/skills/moai-workflow-testing/modules/automated-code-review.md +191 -1344
- moai_adk/templates/.claude/skills/moai-workflow-testing/modules/code-review/analysis-patterns.md +340 -0
- moai_adk/templates/.claude/skills/moai-workflow-testing/modules/code-review/core-classes.md +299 -0
- moai_adk/templates/.claude/skills/moai-workflow-testing/modules/code-review/tool-integration.md +380 -0
- moai_adk/templates/.claude/skills/moai-workflow-testing/modules/debugging/debugging-workflows.md +451 -0
- moai_adk/templates/.claude/skills/moai-workflow-testing/modules/debugging/error-analysis.md +442 -0
- moai_adk/templates/.claude/skills/moai-workflow-testing/modules/performance/optimization-patterns.md +473 -0
- moai_adk/templates/.claude/skills/moai-workflow-testing/modules/performance/profiling-techniques.md +481 -0
- moai_adk/templates/.claude/skills/moai-workflow-testing/modules/performance-optimization/ai-optimization.md +241 -0
- moai_adk/templates/.claude/skills/moai-workflow-testing/modules/performance-optimization/bottleneck-detection.md +397 -0
- moai_adk/templates/.claude/skills/moai-workflow-testing/modules/performance-optimization/optimization-plan.md +315 -0
- moai_adk/templates/.claude/skills/moai-workflow-testing/modules/performance-optimization/profiler-core.md +277 -0
- moai_adk/templates/.claude/skills/moai-workflow-testing/modules/performance-optimization/real-time-monitoring.md +187 -0
- moai_adk/templates/.claude/skills/moai-workflow-testing/modules/performance-optimization.md +287 -1194
- moai_adk/templates/.claude/skills/moai-workflow-testing/modules/quality-metrics.md +415 -0
- moai_adk/templates/.claude/skills/moai-workflow-testing/modules/refactoring/ai-workflows.md +620 -0
- moai_adk/templates/.claude/skills/moai-workflow-testing/modules/refactoring/patterns.md +692 -0
- moai_adk/templates/.claude/skills/moai-workflow-testing/modules/security-analysis.md +429 -0
- moai_adk/templates/.claude/skills/moai-workflow-testing/modules/smart-refactoring.md +262 -1192
- moai_adk/templates/.claude/skills/moai-workflow-testing/modules/static-analysis.md +438 -0
- moai_adk/templates/.claude/skills/moai-workflow-testing/modules/tdd/core-classes.md +397 -0
- moai_adk/templates/.claude/skills/moai-workflow-testing/modules/tdd-context7/advanced-features.md +494 -0
- moai_adk/templates/.claude/skills/moai-workflow-testing/modules/tdd-context7/red-green-refactor.md +316 -0
- moai_adk/templates/.claude/skills/moai-workflow-testing/modules/tdd-context7/test-generation.md +471 -0
- moai_adk/templates/.claude/skills/moai-workflow-testing/modules/tdd-context7/test-patterns.md +371 -0
- moai_adk/templates/.claude/skills/moai-workflow-testing/modules/tdd-context7.md +227 -1222
- moai_adk/templates/.claude/skills/moai-workflow-testing/modules/trust5-validation.md +428 -0
- moai_adk/templates/.claude/skills/moai-workflow-worktree/SKILL.md +228 -0
- moai_adk/templates/.claude/skills/moai-workflow-worktree/modules/integration-patterns.md +149 -0
- moai_adk/templates/.claude/skills/moai-workflow-worktree/modules/moai-adk-integration.md +245 -0
- moai_adk/templates/.claude/skills/moai-workflow-worktree/modules/parallel-advanced.md +310 -0
- moai_adk/templates/.claude/skills/moai-workflow-worktree/modules/parallel-development.md +202 -0
- moai_adk/templates/.claude/skills/moai-workflow-worktree/modules/parallel-workflows.md +302 -0
- moai_adk/templates/.claude/skills/moai-workflow-worktree/modules/registry-architecture.md +271 -0
- moai_adk/templates/.claude/skills/moai-workflow-worktree/modules/resource-optimization.md +300 -0
- moai_adk/templates/.claude/skills/moai-workflow-worktree/modules/tools-integration.md +280 -0
- moai_adk/templates/.claude/skills/moai-workflow-worktree/modules/troubleshooting.md +397 -0
- moai_adk/templates/.claude/skills/moai-workflow-worktree/modules/worktree-commands.md +296 -0
- moai_adk/templates/.claude/skills/moai-workflow-worktree/modules/worktree-management.md +217 -0
- moai_adk/templates/.git-hooks/pre-push +162 -59
- moai_adk/templates/.github/workflows/ci-universal.yml +934 -133
- moai_adk/templates/.gitignore +65 -107
- moai_adk/templates/.lsp.json +152 -0
- moai_adk/templates/.mcp.json +2 -20
- moai_adk/templates/.moai/announcements/en.json +18 -0
- moai_adk/templates/.moai/announcements/ja.json +18 -0
- moai_adk/templates/.moai/announcements/ko.json +18 -0
- moai_adk/templates/.moai/announcements/zh.json +18 -0
- moai_adk/templates/.moai/config/config.yaml +8 -2
- moai_adk/templates/.moai/config/multilingual-triggers.yaml +213 -0
- moai_adk/templates/.moai/config/sections/language.yaml +2 -2
- moai_adk/templates/.moai/config/sections/llm.yaml +41 -0
- moai_adk/templates/.moai/config/sections/pricing.yaml +30 -0
- moai_adk/templates/.moai/config/sections/project.yaml +2 -2
- moai_adk/templates/.moai/config/sections/quality.yaml +43 -5
- moai_adk/templates/.moai/config/sections/ralph.yaml +55 -0
- moai_adk/templates/.moai/config/sections/system.yaml +46 -1
- moai_adk/templates/.moai/config/sections/user.yaml +1 -1
- moai_adk/templates/.moai/config/statusline-config.yaml +2 -2
- moai_adk/templates/.moai/llm-configs/glm.json +22 -0
- moai_adk/templates/CLAUDE.ja.md +343 -0
- moai_adk/templates/CLAUDE.ko.md +343 -0
- moai_adk/templates/CLAUDE.md +200 -499
- moai_adk/templates/CLAUDE.zh.md +343 -0
- moai_adk/utils/common.py +37 -0
- moai_adk/version.py +1 -1
- moai_adk-1.1.0.dist-info/METADATA +2443 -0
- moai_adk-1.1.0.dist-info/RECORD +701 -0
- {moai_adk-0.34.0.dist-info → moai_adk-1.1.0.dist-info}/entry_points.txt +2 -0
- moai_adk-1.1.0.dist-info/licenses/LICENSE +99 -0
- moai_adk/core/config/auto_spec_config.py +0 -340
- moai_adk/core/hooks/post_tool_auto_spec_completion.py +0 -901
- moai_adk/core/spec/confidence_scoring.py +0 -680
- moai_adk/core/spec/ears_template_engine.py +0 -1247
- moai_adk/core/spec/quality_validator.py +0 -687
- moai_adk/templates/.claude/agents/moai/ai-nano-banana.md +0 -670
- moai_adk/templates/.claude/agents/moai/expert-database.md +0 -777
- moai_adk/templates/.claude/agents/moai/expert-uiux.md +0 -1041
- moai_adk/templates/.claude/agents/moai/mcp-context7.md +0 -458
- moai_adk/templates/.claude/agents/moai/mcp-figma.md +0 -1607
- moai_adk/templates/.claude/agents/moai/mcp-notion.md +0 -789
- moai_adk/templates/.claude/agents/moai/mcp-playwright.md +0 -469
- moai_adk/templates/.claude/agents/moai/mcp-sequential-thinking.md +0 -1032
- moai_adk/templates/.claude/skills/moai-ai-nano-banana/SKILL.md +0 -438
- moai_adk/templates/.claude/skills/moai-ai-nano-banana/examples.md +0 -431
- moai_adk/templates/.claude/skills/moai-domain-uiux/modules/design-system-tokens.md +0 -405
- moai_adk/templates/.claude/skills/moai-library-nextra/advanced-patterns.md +0 -336
- moai_adk/templates/.claude/skills/moai-mcp-figma/SKILL.md +0 -402
- moai_adk/templates/.claude/skills/moai-mcp-figma/advanced-patterns.md +0 -607
- moai_adk/templates/.claude/skills/moai-mcp-notion/SKILL.md +0 -300
- moai_adk/templates/.claude/skills/moai-mcp-notion/advanced-patterns.md +0 -537
- moai_adk/templates/.claude/skills/moai-workflow-project/__init__.py +0 -520
- moai_adk/templates/.claude/skills/moai-workflow-project/complete_workflow_demo_fixed.py +0 -574
- moai_adk/templates/.claude/skills/moai-workflow-project/examples/complete_project_setup.py +0 -317
- moai_adk/templates/.claude/skills/moai-workflow-project/examples/complete_workflow_demo.py +0 -663
- moai_adk/templates/.claude/skills/moai-workflow-project/examples/config-migration-example.json +0 -190
- moai_adk/templates/.claude/skills/moai-workflow-project/examples/question-examples.json +0 -175
- moai_adk/templates/.claude/skills/moai-workflow-project/examples/quick_start.py +0 -196
- moai_adk/templates/.claude/skills/moai-workflow-project/modules/__init__.py +0 -17
- moai_adk/templates/.claude/skills/moai-workflow-project/modules/advanced-patterns.md +0 -158
- moai_adk/templates/.claude/skills/moai-workflow-project/modules/ask_user_integration.py +0 -340
- moai_adk/templates/.claude/skills/moai-workflow-project/modules/batch_questions.py +0 -713
- moai_adk/templates/.claude/skills/moai-workflow-project/modules/config_manager.py +0 -538
- moai_adk/templates/.claude/skills/moai-workflow-project/modules/documentation_manager.py +0 -1336
- moai_adk/templates/.claude/skills/moai-workflow-project/modules/language_initializer.py +0 -730
- moai_adk/templates/.claude/skills/moai-workflow-project/modules/migration_manager.py +0 -608
- moai_adk/templates/.claude/skills/moai-workflow-project/modules/template_optimizer.py +0 -1005
- moai_adk/templates/.claude/skills/moai-workflow-project/test_integration_simple.py +0 -436
- moai_adk/templates/.claude/skills/moai-worktree/SKILL.md +0 -411
- moai_adk/templates/.claude/skills/moai-worktree/modules/integration-patterns.md +0 -982
- moai_adk/templates/.claude/skills/moai-worktree/modules/parallel-development.md +0 -778
- moai_adk/templates/.claude/skills/moai-worktree/modules/worktree-commands.md +0 -646
- moai_adk/templates/.claude/skills/moai-worktree/modules/worktree-management.md +0 -782
- moai_adk/templates/.moai/config/questions/_schema.yaml +0 -151
- moai_adk/templates/.moai/config/questions/tab0-init.yaml +0 -251
- moai_adk/templates/.moai/config/questions/tab1-user.yaml +0 -108
- moai_adk/templates/.moai/config/questions/tab2-project.yaml +0 -81
- moai_adk/templates/.moai/config/questions/tab3-git.yaml +0 -634
- moai_adk/templates/.moai/config/questions/tab4-quality.yaml +0 -170
- moai_adk/templates/.moai/config/questions/tab5-system.yaml +0 -87
- moai_adk/templates/.moai/scripts/setup-glm.py +0 -136
- moai_adk-0.34.0.dist-info/METADATA +0 -2999
- moai_adk-0.34.0.dist-info/RECORD +0 -463
- moai_adk-0.34.0.dist-info/licenses/LICENSE +0 -21
- /moai_adk/foundation/{git.py → git/__init__.py} +0 -0
- /moai_adk/templates/.claude/skills/moai-library-mermaid/{advanced-patterns.md → modules/advanced-patterns.md} +0 -0
- /moai_adk/templates/.claude/skills/moai-library-mermaid/{optimization.md → modules/optimization.md} +0 -0
- /moai_adk/templates/.claude/skills/moai-library-nextra/{optimization.md → modules/optimization.md} +0 -0
- /moai_adk/templates/.claude/skills/moai-workflow-jit-docs/{advanced-patterns.md → modules/advanced-patterns.md} +0 -0
- /moai_adk/templates/.claude/skills/moai-workflow-jit-docs/{optimization.md → modules/optimization.md} +0 -0
- /moai_adk/templates/.claude/skills/moai-workflow-testing/{advanced-patterns.md → modules/advanced-patterns.md} +0 -0
- /moai_adk/templates/.claude/skills/moai-workflow-testing/{optimization.md → modules/optimization.md} +0 -0
- /moai_adk/templates/.claude/skills/{moai-worktree → moai-workflow-worktree}/examples.md +0 -0
- /moai_adk/templates/.claude/skills/{moai-worktree → moai-workflow-worktree}/reference.md +0 -0
- {moai_adk-0.34.0.dist-info → moai_adk-1.1.0.dist-info}/WHEEL +0 -0
|
@@ -0,0 +1,283 @@
|
|
|
1
|
+
# DPoP Implementation
|
|
2
|
+
|
|
3
|
+
Demonstrating Proof-of-Possession (DPoP) is an OAuth 2.0 extension that cryptographically binds access and refresh tokens to the client application, preventing token theft and misuse.
|
|
4
|
+
|
|
5
|
+
## Overview
|
|
6
|
+
|
|
7
|
+
DPoP ensures only the client possessing the private key can use issued tokens. Unlike traditional bearer tokens where anyone with the token can use it, DPoP tokens are bound to a specific client.
|
|
8
|
+
|
|
9
|
+
## Current Status
|
|
10
|
+
|
|
11
|
+
DPoP at Auth0 is in Early Access. Contact your Auth0 representative to request access.
|
|
12
|
+
|
|
13
|
+
## How DPoP Works
|
|
14
|
+
|
|
15
|
+
### Key Pair Generation
|
|
16
|
+
|
|
17
|
+
Client generates asymmetric key pair:
|
|
18
|
+
- Private key: Kept secret, never transmitted
|
|
19
|
+
- Public key: Included in DPoP proof JWT
|
|
20
|
+
|
|
21
|
+
Recommended Algorithms:
|
|
22
|
+
- ES256 (Elliptic Curve): Recommended for modern applications
|
|
23
|
+
- RS256 (RSA): Broader compatibility
|
|
24
|
+
|
|
25
|
+
Key Storage:
|
|
26
|
+
- Hardware-backed keystores when available
|
|
27
|
+
- Secure enclave on mobile devices
|
|
28
|
+
- Encrypted storage for web applications
|
|
29
|
+
|
|
30
|
+
### DPoP Proof JWT
|
|
31
|
+
|
|
32
|
+
A signed JWT proving possession of the private key.
|
|
33
|
+
|
|
34
|
+
Header Claims:
|
|
35
|
+
- typ: Must be "dpop+jwt"
|
|
36
|
+
- alg: Signing algorithm (ES256, RS256)
|
|
37
|
+
- jwk: Public key representation
|
|
38
|
+
|
|
39
|
+
Payload Claims:
|
|
40
|
+
- jti: Unique identifier (prevents replay)
|
|
41
|
+
- htm: HTTP method of request (POST, GET)
|
|
42
|
+
- htu: HTTP URI of request (without fragments)
|
|
43
|
+
- iat: Issue timestamp
|
|
44
|
+
- ath: Access token hash (for API calls)
|
|
45
|
+
- nonce: Server-provided value (for public clients)
|
|
46
|
+
|
|
47
|
+
### Token Request
|
|
48
|
+
|
|
49
|
+
When requesting tokens:
|
|
50
|
+
1. Generate new DPoP proof JWT
|
|
51
|
+
2. Set htm to POST
|
|
52
|
+
3. Set htu to token endpoint
|
|
53
|
+
4. Sign with private key
|
|
54
|
+
5. Send in DPoP header
|
|
55
|
+
|
|
56
|
+
Request Headers:
|
|
57
|
+
- DPoP: {dpop_proof_jwt}
|
|
58
|
+
- Content-Type: application/x-www-form-urlencoded
|
|
59
|
+
|
|
60
|
+
### Nonce Handling (Public Clients)
|
|
61
|
+
|
|
62
|
+
For SPAs and mobile apps:
|
|
63
|
+
|
|
64
|
+
Initial Request:
|
|
65
|
+
- Send without nonce
|
|
66
|
+
- May receive use_dpop_nonce error
|
|
67
|
+
- Response includes DPoP-Nonce header
|
|
68
|
+
|
|
69
|
+
Retry with Nonce:
|
|
70
|
+
- Generate new DPoP proof
|
|
71
|
+
- Include nonce in payload
|
|
72
|
+
- Auth0 validates nonce freshness
|
|
73
|
+
|
|
74
|
+
### Token Binding
|
|
75
|
+
|
|
76
|
+
Auth0 binds token to public key:
|
|
77
|
+
|
|
78
|
+
Access Token Contains:
|
|
79
|
+
- cnf (confirmation) claim
|
|
80
|
+
- jkt (JWK Thumbprint) value
|
|
81
|
+
- SHA-256 hash of public key
|
|
82
|
+
|
|
83
|
+
This binding ensures only the key holder can use the token.
|
|
84
|
+
|
|
85
|
+
### API Request
|
|
86
|
+
|
|
87
|
+
When calling resource server:
|
|
88
|
+
|
|
89
|
+
Generate New DPoP Proof:
|
|
90
|
+
- htm: HTTP method (GET, POST, etc.)
|
|
91
|
+
- htu: API endpoint URL
|
|
92
|
+
- ath: Base64url SHA-256 hash of access token
|
|
93
|
+
- Same key pair as token request
|
|
94
|
+
|
|
95
|
+
Request Headers:
|
|
96
|
+
- Authorization: DPoP {access_token}
|
|
97
|
+
- DPoP: {dpop_proof_jwt}
|
|
98
|
+
|
|
99
|
+
### Server Validation
|
|
100
|
+
|
|
101
|
+
Resource server validates:
|
|
102
|
+
1. Extract DPoP proof from header
|
|
103
|
+
2. Verify proof signature
|
|
104
|
+
3. Check jti uniqueness (prevent replay)
|
|
105
|
+
4. Validate htm matches request method
|
|
106
|
+
5. Validate htu matches request URI
|
|
107
|
+
6. Compute access token hash
|
|
108
|
+
7. Compare ath with computed hash
|
|
109
|
+
8. Compare proof jwk thumbprint with token cnf.jkt
|
|
110
|
+
|
|
111
|
+
## Implementation Steps
|
|
112
|
+
|
|
113
|
+
### Step 1: Key Generation
|
|
114
|
+
|
|
115
|
+
Generate asymmetric key pair:
|
|
116
|
+
- Use cryptographic library
|
|
117
|
+
- Store private key securely
|
|
118
|
+
- Persist across token refresh
|
|
119
|
+
|
|
120
|
+
Key Considerations:
|
|
121
|
+
- Generate once per installation
|
|
122
|
+
- Reuse for token refresh
|
|
123
|
+
- May rotate periodically
|
|
124
|
+
|
|
125
|
+
### Step 2: Initial Token Request
|
|
126
|
+
|
|
127
|
+
Create DPoP proof for token endpoint:
|
|
128
|
+
- Include required claims
|
|
129
|
+
- Sign with private key
|
|
130
|
+
- No ath claim (no access token yet)
|
|
131
|
+
|
|
132
|
+
### Step 3: Handle Nonce (If Required)
|
|
133
|
+
|
|
134
|
+
If use_dpop_nonce error:
|
|
135
|
+
- Extract nonce from DPoP-Nonce header
|
|
136
|
+
- Create new proof with nonce
|
|
137
|
+
- Retry request
|
|
138
|
+
|
|
139
|
+
### Step 4: Store Tokens
|
|
140
|
+
|
|
141
|
+
After successful request:
|
|
142
|
+
- Store access token
|
|
143
|
+
- Store refresh token (if applicable)
|
|
144
|
+
- Associate with key pair
|
|
145
|
+
|
|
146
|
+
### Step 5: API Calls
|
|
147
|
+
|
|
148
|
+
For each API request:
|
|
149
|
+
- Generate fresh DPoP proof
|
|
150
|
+
- Include ath claim with token hash
|
|
151
|
+
- Send both token and proof
|
|
152
|
+
|
|
153
|
+
### Step 6: Token Refresh
|
|
154
|
+
|
|
155
|
+
When refreshing tokens:
|
|
156
|
+
- Generate new DPoP proof
|
|
157
|
+
- Use same key pair
|
|
158
|
+
- New tokens bound to same key
|
|
159
|
+
|
|
160
|
+
## Security Considerations
|
|
161
|
+
|
|
162
|
+
### Key Protection
|
|
163
|
+
|
|
164
|
+
Private Key Security:
|
|
165
|
+
- Never transmit private key
|
|
166
|
+
- Use secure storage
|
|
167
|
+
- Consider hardware backing
|
|
168
|
+
|
|
169
|
+
Key Compromise:
|
|
170
|
+
- If key compromised, token useless without new key
|
|
171
|
+
- Revoke tokens and regenerate key pair
|
|
172
|
+
- Better than bearer token compromise
|
|
173
|
+
|
|
174
|
+
### Replay Prevention
|
|
175
|
+
|
|
176
|
+
jti Uniqueness:
|
|
177
|
+
- Generate unique jti for each proof
|
|
178
|
+
- Resource server tracks seen jti values
|
|
179
|
+
- Rejects duplicates
|
|
180
|
+
|
|
181
|
+
Time Binding:
|
|
182
|
+
- iat limits proof validity
|
|
183
|
+
- Short acceptance window
|
|
184
|
+
- Clock synchronization important
|
|
185
|
+
|
|
186
|
+
### Token Binding
|
|
187
|
+
|
|
188
|
+
Benefits:
|
|
189
|
+
- Stolen token unusable without private key
|
|
190
|
+
- Attacker cannot forge valid proofs
|
|
191
|
+
- Significantly reduces token theft risk
|
|
192
|
+
|
|
193
|
+
## Client Types
|
|
194
|
+
|
|
195
|
+
### Confidential Clients
|
|
196
|
+
|
|
197
|
+
Server-side applications:
|
|
198
|
+
- Secure key storage available
|
|
199
|
+
- Combine with client authentication
|
|
200
|
+
- Strongest security configuration
|
|
201
|
+
|
|
202
|
+
### Public Clients
|
|
203
|
+
|
|
204
|
+
SPAs and mobile apps:
|
|
205
|
+
- Must handle nonce flow
|
|
206
|
+
- Use secure platform storage
|
|
207
|
+
- More complex but valuable
|
|
208
|
+
|
|
209
|
+
### Native Applications
|
|
210
|
+
|
|
211
|
+
Mobile apps:
|
|
212
|
+
- Use platform secure storage
|
|
213
|
+
- Hardware-backed keys when available
|
|
214
|
+
- iOS Keychain, Android Keystore
|
|
215
|
+
|
|
216
|
+
## Comparison with mTLS
|
|
217
|
+
|
|
218
|
+
DPoP Advantages:
|
|
219
|
+
- Application-layer (no TLS changes)
|
|
220
|
+
- Works with public clients
|
|
221
|
+
- No PKI infrastructure required
|
|
222
|
+
- Easier deployment
|
|
223
|
+
|
|
224
|
+
mTLS Advantages:
|
|
225
|
+
- Transport-layer binding
|
|
226
|
+
- Established infrastructure
|
|
227
|
+
- Simpler for confidential clients
|
|
228
|
+
|
|
229
|
+
Choose DPoP When:
|
|
230
|
+
- Public clients (SPA, mobile)
|
|
231
|
+
- No PKI available
|
|
232
|
+
- Flexibility needed
|
|
233
|
+
|
|
234
|
+
Choose mTLS When:
|
|
235
|
+
- Confidential clients only
|
|
236
|
+
- PKI exists
|
|
237
|
+
- Transport-layer binding preferred
|
|
238
|
+
|
|
239
|
+
## Troubleshooting
|
|
240
|
+
|
|
241
|
+
Common Issues:
|
|
242
|
+
|
|
243
|
+
Invalid Signature:
|
|
244
|
+
- Verify key pair consistency
|
|
245
|
+
- Check algorithm matches
|
|
246
|
+
- Confirm JWT format
|
|
247
|
+
|
|
248
|
+
Nonce Required:
|
|
249
|
+
- Public clients need nonce
|
|
250
|
+
- Extract from error response
|
|
251
|
+
- Include in retry
|
|
252
|
+
|
|
253
|
+
Token Binding Failure:
|
|
254
|
+
- Use same key for proof and token
|
|
255
|
+
- Verify ath calculation
|
|
256
|
+
- Check thumbprint computation
|
|
257
|
+
|
|
258
|
+
Clock Skew:
|
|
259
|
+
- Synchronize client clock
|
|
260
|
+
- Allow reasonable iat window
|
|
261
|
+
- Consider server time
|
|
262
|
+
|
|
263
|
+
## Best Practices
|
|
264
|
+
|
|
265
|
+
Key Management:
|
|
266
|
+
- Secure key generation
|
|
267
|
+
- Protected storage
|
|
268
|
+
- Consistent key usage
|
|
269
|
+
|
|
270
|
+
Proof Generation:
|
|
271
|
+
- Fresh proof per request
|
|
272
|
+
- Unique jti always
|
|
273
|
+
- Correct claim values
|
|
274
|
+
|
|
275
|
+
Error Handling:
|
|
276
|
+
- Handle nonce errors
|
|
277
|
+
- Retry logic
|
|
278
|
+
- Clear error messaging
|
|
279
|
+
|
|
280
|
+
Testing:
|
|
281
|
+
- Validate full flow
|
|
282
|
+
- Test error scenarios
|
|
283
|
+
- Verify binding works
|
|
@@ -0,0 +1,259 @@
|
|
|
1
|
+
# FAPI Implementation
|
|
2
|
+
|
|
3
|
+
Financial-grade API (FAPI) is a set of security and privacy specifications developed by the OpenID Foundation for robust authentication and authorization in financial services and other high-security scenarios.
|
|
4
|
+
|
|
5
|
+
## Overview
|
|
6
|
+
|
|
7
|
+
FAPI provides enhanced OAuth 2.0 and OpenID Connect profiles designed for:
|
|
8
|
+
- Financial services
|
|
9
|
+
- Open banking
|
|
10
|
+
- Healthcare
|
|
11
|
+
- Government services
|
|
12
|
+
- Any high-security application
|
|
13
|
+
|
|
14
|
+
## Auth0 FAPI Certification
|
|
15
|
+
|
|
16
|
+
Auth0 is certified for:
|
|
17
|
+
- FAPI 1.0 Advanced OP (OpenID Provider)
|
|
18
|
+
- mTLS client authentication profile
|
|
19
|
+
- Private Key JWT client authentication profile
|
|
20
|
+
|
|
21
|
+
## FAPI Security Profiles
|
|
22
|
+
|
|
23
|
+
### FAPI 1.0 Baseline
|
|
24
|
+
|
|
25
|
+
Minimum security requirements for read-only access:
|
|
26
|
+
- OAuth 2.0 authorization code flow
|
|
27
|
+
- PKCE required
|
|
28
|
+
- State parameter required
|
|
29
|
+
- Confidential clients
|
|
30
|
+
|
|
31
|
+
### FAPI 1.0 Advanced
|
|
32
|
+
|
|
33
|
+
Enhanced security for read-write access:
|
|
34
|
+
- All baseline requirements
|
|
35
|
+
- Pushed Authorization Requests (PAR)
|
|
36
|
+
- JWT-secured Authorization Requests (JAR)
|
|
37
|
+
- mTLS or Private Key JWT client authentication
|
|
38
|
+
- Sender-constrained tokens
|
|
39
|
+
|
|
40
|
+
## Core Security Features
|
|
41
|
+
|
|
42
|
+
### Strong Customer Authentication (SCA)
|
|
43
|
+
|
|
44
|
+
Requirement: At least two independent authentication factors.
|
|
45
|
+
|
|
46
|
+
Factor Categories:
|
|
47
|
+
- Something known (password, PIN)
|
|
48
|
+
- Something possessed (device, token)
|
|
49
|
+
- Something inherent (biometric)
|
|
50
|
+
|
|
51
|
+
Auth0 Implementation:
|
|
52
|
+
- Multi-factor authentication
|
|
53
|
+
- WebAuthn support
|
|
54
|
+
- Push notifications
|
|
55
|
+
- SMS/Voice verification
|
|
56
|
+
|
|
57
|
+
### Dynamic Linking
|
|
58
|
+
|
|
59
|
+
Purpose: Bind authorization to specific transaction details.
|
|
60
|
+
|
|
61
|
+
Implementation:
|
|
62
|
+
- Rich Authorization Requests (RAR)
|
|
63
|
+
- Transaction details in authorization request
|
|
64
|
+
- User verifies transaction during authorization
|
|
65
|
+
- Authorization uniquely linked to transaction
|
|
66
|
+
|
|
67
|
+
User Experience:
|
|
68
|
+
- See transaction details
|
|
69
|
+
- Confirm specific action
|
|
70
|
+
- Authentication bound to transaction
|
|
71
|
+
|
|
72
|
+
### Pushed Authorization Requests (PAR)
|
|
73
|
+
|
|
74
|
+
Purpose: Secure transmission of authorization parameters.
|
|
75
|
+
|
|
76
|
+
How It Works:
|
|
77
|
+
1. Client sends parameters to PAR endpoint
|
|
78
|
+
2. Auth0 returns request_uri
|
|
79
|
+
3. Client redirects with request_uri only
|
|
80
|
+
4. Sensitive parameters never in browser
|
|
81
|
+
|
|
82
|
+
Benefits:
|
|
83
|
+
- Parameters not exposed in URL
|
|
84
|
+
- Reduced risk of manipulation
|
|
85
|
+
- Signed request verification
|
|
86
|
+
|
|
87
|
+
### JWT-Secured Authorization Requests (JAR)
|
|
88
|
+
|
|
89
|
+
Purpose: Protect authorization request integrity and confidentiality.
|
|
90
|
+
|
|
91
|
+
How It Works:
|
|
92
|
+
- Authorization parameters in signed JWT
|
|
93
|
+
- Optionally encrypted
|
|
94
|
+
- Prevents tampering
|
|
95
|
+
|
|
96
|
+
Benefits:
|
|
97
|
+
- Request integrity
|
|
98
|
+
- Optional confidentiality
|
|
99
|
+
- Signed by client
|
|
100
|
+
|
|
101
|
+
### JSON Web Encryption (JWE)
|
|
102
|
+
|
|
103
|
+
Purpose: Encrypt access token payloads containing sensitive authorization details.
|
|
104
|
+
|
|
105
|
+
Use Cases:
|
|
106
|
+
- Rich authorization data
|
|
107
|
+
- Sensitive permissions
|
|
108
|
+
- Transaction details in tokens
|
|
109
|
+
|
|
110
|
+
## Client Authentication
|
|
111
|
+
|
|
112
|
+
### Private Key JWT
|
|
113
|
+
|
|
114
|
+
Asymmetric authentication using signed JWTs.
|
|
115
|
+
|
|
116
|
+
Features:
|
|
117
|
+
- Private key never transmitted
|
|
118
|
+
- Short-lived signed assertions
|
|
119
|
+
- No shared secret
|
|
120
|
+
|
|
121
|
+
Requirements:
|
|
122
|
+
- Enterprise plan
|
|
123
|
+
- Register public key with Auth0
|
|
124
|
+
- Sign client_assertion with private key
|
|
125
|
+
|
|
126
|
+
### mTLS for OAuth
|
|
127
|
+
|
|
128
|
+
Mutual TLS client authentication.
|
|
129
|
+
|
|
130
|
+
Features:
|
|
131
|
+
- Certificate-based authentication
|
|
132
|
+
- Transport-layer security
|
|
133
|
+
- Strong client identity
|
|
134
|
+
|
|
135
|
+
Requirements:
|
|
136
|
+
- Enterprise plan with HRI add-on
|
|
137
|
+
- Register client certificate
|
|
138
|
+
- mTLS infrastructure
|
|
139
|
+
|
|
140
|
+
## Token Security
|
|
141
|
+
|
|
142
|
+
### Sender Constraining
|
|
143
|
+
|
|
144
|
+
Bind tokens to client:
|
|
145
|
+
- DPoP for application-layer binding
|
|
146
|
+
- mTLS for transport-layer binding
|
|
147
|
+
- Prevents token theft
|
|
148
|
+
|
|
149
|
+
### Token Binding
|
|
150
|
+
|
|
151
|
+
Certificate thumbprint in tokens:
|
|
152
|
+
- cnf claim with x5t#S256
|
|
153
|
+
- Validates client certificate
|
|
154
|
+
- Ensures token only used by legitimate client
|
|
155
|
+
|
|
156
|
+
## Implementation Requirements
|
|
157
|
+
|
|
158
|
+
### Plan Requirements
|
|
159
|
+
|
|
160
|
+
Minimum: Enterprise Plan
|
|
161
|
+
|
|
162
|
+
For Full FAPI:
|
|
163
|
+
- Highly Regulated Identity add-on
|
|
164
|
+
- Required for mTLS
|
|
165
|
+
- Required for advanced features
|
|
166
|
+
|
|
167
|
+
### Configuration Steps
|
|
168
|
+
|
|
169
|
+
1. Enable HRI Features:
|
|
170
|
+
- Contact Auth0
|
|
171
|
+
- Enable add-on
|
|
172
|
+
- Configure tenant
|
|
173
|
+
|
|
174
|
+
2. Configure Client Authentication:
|
|
175
|
+
- Choose Private Key JWT or mTLS
|
|
176
|
+
- Register credentials
|
|
177
|
+
- Configure application
|
|
178
|
+
|
|
179
|
+
3. Enable PAR:
|
|
180
|
+
- Configure PAR endpoint
|
|
181
|
+
- Update client to use PAR
|
|
182
|
+
- Test request flow
|
|
183
|
+
|
|
184
|
+
4. Configure Token Binding:
|
|
185
|
+
- Enable sender constraining
|
|
186
|
+
- Choose DPoP or mTLS
|
|
187
|
+
- Configure resource servers
|
|
188
|
+
|
|
189
|
+
### Application Changes
|
|
190
|
+
|
|
191
|
+
Client Requirements:
|
|
192
|
+
- Support PAR flow
|
|
193
|
+
- Implement JAR if required
|
|
194
|
+
- Handle sender-constrained tokens
|
|
195
|
+
- Proper error handling
|
|
196
|
+
|
|
197
|
+
Resource Server Requirements:
|
|
198
|
+
- Validate sender-constrained tokens
|
|
199
|
+
- Verify token binding
|
|
200
|
+
- Handle FAPI token types
|
|
201
|
+
|
|
202
|
+
## Best Practices
|
|
203
|
+
|
|
204
|
+
### Credential Management
|
|
205
|
+
|
|
206
|
+
Private Keys:
|
|
207
|
+
- Secure generation
|
|
208
|
+
- Protected storage
|
|
209
|
+
- Regular rotation
|
|
210
|
+
- Zero-downtime rotation support
|
|
211
|
+
|
|
212
|
+
Certificates:
|
|
213
|
+
- Proper CA hierarchy
|
|
214
|
+
- Certificate lifecycle management
|
|
215
|
+
- Revocation handling
|
|
216
|
+
|
|
217
|
+
### Security Configuration
|
|
218
|
+
|
|
219
|
+
Enable All Features:
|
|
220
|
+
- PAR for authorization
|
|
221
|
+
- JAR for request signing
|
|
222
|
+
- Sender constraining for tokens
|
|
223
|
+
- Strong client authentication
|
|
224
|
+
|
|
225
|
+
Monitor and Audit:
|
|
226
|
+
- Log all FAPI transactions
|
|
227
|
+
- Monitor for anomalies
|
|
228
|
+
- Regular security review
|
|
229
|
+
|
|
230
|
+
### Testing
|
|
231
|
+
|
|
232
|
+
Conformance Testing:
|
|
233
|
+
- Use FAPI conformance suite
|
|
234
|
+
- Test all flows
|
|
235
|
+
- Verify error handling
|
|
236
|
+
- Document test results
|
|
237
|
+
|
|
238
|
+
## Regulatory Context
|
|
239
|
+
|
|
240
|
+
### Open Banking
|
|
241
|
+
|
|
242
|
+
UK/EU Open Banking:
|
|
243
|
+
- FAPI profiles mandated
|
|
244
|
+
- PSD2 alignment
|
|
245
|
+
- Strong customer authentication
|
|
246
|
+
|
|
247
|
+
### Financial Services
|
|
248
|
+
|
|
249
|
+
Global Standards:
|
|
250
|
+
- Financial sector requirements
|
|
251
|
+
- Regulatory compliance
|
|
252
|
+
- Security best practices
|
|
253
|
+
|
|
254
|
+
### Healthcare
|
|
255
|
+
|
|
256
|
+
SMART on FHIR:
|
|
257
|
+
- FAPI-aligned security
|
|
258
|
+
- Healthcare data protection
|
|
259
|
+
- Patient consent management
|