blockmine 1.21.0 → 1.22.0
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.
- package/.claude/agents/README.md +469 -0
- package/.claude/agents/auth-route-debugger.md +118 -0
- package/.claude/agents/auth-route-tester.md +93 -0
- package/.claude/agents/auto-error-resolver.md +97 -0
- package/.claude/agents/build-optimizer.md +236 -0
- package/.claude/agents/code-architecture-reviewer.md +83 -0
- package/.claude/agents/code-refactor-master.md +94 -0
- package/.claude/agents/cost-optimizer.md +134 -0
- package/.claude/agents/deployment-orchestrator.md +113 -0
- package/.claude/agents/documentation-architect.md +82 -0
- package/.claude/agents/frontend-error-fixer.md +77 -0
- package/.claude/agents/iac-code-generator.md +71 -0
- package/.claude/agents/incident-responder.md +346 -0
- package/.claude/agents/infrastructure-architect.md +31 -0
- package/.claude/agents/kubernetes-specialist.md +56 -0
- package/.claude/agents/migration-planner.md +181 -0
- package/.claude/agents/network-architect.md +196 -0
- package/.claude/agents/plan-reviewer.md +52 -0
- package/.claude/agents/refactor-planner.md +63 -0
- package/.claude/agents/security-scanner.md +102 -0
- package/.claude/agents/web-research-specialist.md +78 -0
- package/.claude/commands/cost-analysis.md +315 -0
- package/.claude/commands/dev-docs-update.md +55 -0
- package/.claude/commands/dev-docs.md +51 -0
- package/.claude/commands/incident-debug.md +247 -0
- package/.claude/commands/infra-plan.md +81 -0
- package/.claude/commands/migration-plan.md +478 -0
- package/.claude/commands/route-research-for-testing.md +37 -0
- package/.claude/commands/security-review.md +66 -0
- package/.claude/hooks/CONFIG.md +448 -0
- package/.claude/hooks/README.md +163 -0
- package/.claude/hooks/SKILL_ACTIVATION_COMPLETE.md +226 -0
- package/.claude/hooks/WINDOWS_HOOKS_README.md +151 -0
- package/.claude/hooks/add-skill-activation-banners.ts +132 -0
- package/.claude/hooks/comprehensive-skill-test.ts +1315 -0
- package/.claude/hooks/error-handling-reminder.sh +12 -0
- package/.claude/hooks/error-handling-reminder.ts +222 -0
- package/.claude/hooks/k8s-manifest-validator.sh +56 -0
- package/.claude/hooks/package-lock.json +556 -0
- package/.claude/hooks/package.json +16 -0
- package/.claude/hooks/post-tool-use-tracker.ps1 +174 -0
- package/.claude/hooks/post-tool-use-tracker.sh +183 -0
- package/.claude/hooks/security-policy-check.sh +247 -0
- package/.claude/hooks/skill-activation-prompt.ps1 +10 -0
- package/.claude/hooks/skill-activation-prompt.sh +10 -0
- package/.claude/hooks/skill-activation-prompt.ts +141 -0
- package/.claude/hooks/stop-build-check-enhanced.sh +130 -0
- package/.claude/hooks/terraform-validator.sh +53 -0
- package/.claude/hooks/test-input.json +7 -0
- package/.claude/hooks/test-skill-activation.ts +427 -0
- package/.claude/hooks/trigger-build-resolver.sh +79 -0
- package/.claude/hooks/tsc-check.sh +173 -0
- package/.claude/hooks/tsconfig.json +19 -0
- package/.claude/settings.json +55 -0
- package/.claude/settings.local.json +27 -14
- package/.claude/skills/README.md +507 -0
- package/.claude/skills/api-engineering/SKILL.md +63 -0
- package/.claude/skills/api-engineering/resources/api-versioning.md +88 -0
- package/.claude/skills/api-engineering/resources/graphql-patterns.md +106 -0
- package/.claude/skills/api-engineering/resources/rate-limiting.md +118 -0
- package/.claude/skills/api-engineering/resources/rest-api-design.md +105 -0
- package/.claude/skills/backend-dev-guidelines/SKILL.md +306 -0
- package/.claude/skills/backend-dev-guidelines/resources/architecture-overview.md +451 -0
- package/.claude/skills/backend-dev-guidelines/resources/async-and-errors.md +307 -0
- package/.claude/skills/backend-dev-guidelines/resources/complete-examples.md +638 -0
- package/.claude/skills/backend-dev-guidelines/resources/configuration.md +275 -0
- package/.claude/skills/backend-dev-guidelines/resources/database-patterns.md +224 -0
- package/.claude/skills/backend-dev-guidelines/resources/middleware-guide.md +213 -0
- package/.claude/skills/backend-dev-guidelines/resources/routing-and-controllers.md +756 -0
- package/.claude/skills/backend-dev-guidelines/resources/sentry-and-monitoring.md +336 -0
- package/.claude/skills/backend-dev-guidelines/resources/services-and-repositories.md +789 -0
- package/.claude/skills/backend-dev-guidelines/resources/testing-guide.md +235 -0
- package/.claude/skills/backend-dev-guidelines/resources/validation-patterns.md +754 -0
- package/.claude/skills/budget-and-cost-management/SKILL.md +850 -0
- package/.claude/skills/build-engineering/SKILL.md +431 -0
- package/.claude/skills/build-engineering/resources/artifact-repositories.md +72 -0
- package/.claude/skills/build-engineering/resources/build-caching.md +96 -0
- package/.claude/skills/build-engineering/resources/build-pipelines.md +105 -0
- package/.claude/skills/build-engineering/resources/build-security.md +95 -0
- package/.claude/skills/build-engineering/resources/build-systems.md +389 -0
- package/.claude/skills/build-engineering/resources/compilation-optimization.md +201 -0
- package/.claude/skills/build-engineering/resources/dependency-management.md +73 -0
- package/.claude/skills/build-engineering/resources/monorepo-builds.md +110 -0
- package/.claude/skills/build-engineering/resources/performance-optimization.md +113 -0
- package/.claude/skills/build-engineering/resources/reproducible-builds.md +82 -0
- package/.claude/skills/cloud-engineering/SKILL.md +675 -0
- package/.claude/skills/cloud-engineering/resources/aws-patterns.md +742 -0
- package/.claude/skills/cloud-engineering/resources/azure-patterns.md +714 -0
- package/.claude/skills/cloud-engineering/resources/cleared-cloud-environments.md +987 -0
- package/.claude/skills/cloud-engineering/resources/cloud-cost-optimization.md +757 -0
- package/.claude/skills/cloud-engineering/resources/cloud-networking.md +1058 -0
- package/.claude/skills/cloud-engineering/resources/cloud-security-tools.md +1530 -0
- package/.claude/skills/cloud-engineering/resources/cloud-security.md +990 -0
- package/.claude/skills/cloud-engineering/resources/gcp-patterns.md +758 -0
- package/.claude/skills/cloud-engineering/resources/migration-strategies.md +820 -0
- package/.claude/skills/cloud-engineering/resources/multi-cloud-strategies.md +670 -0
- package/.claude/skills/cloud-engineering/resources/oci-patterns.md +1198 -0
- package/.claude/skills/cloud-engineering/resources/serverless-patterns.md +795 -0
- package/.claude/skills/cloud-engineering/resources/well-architected-frameworks.md +966 -0
- package/.claude/skills/cybersecurity/SKILL.md +409 -0
- package/.claude/skills/cybersecurity/resources/security-architecture.md +266 -0
- package/.claude/skills/database-engineering/SKILL.md +61 -0
- package/.claude/skills/database-engineering/resources/backup-and-recovery.md +72 -0
- package/.claude/skills/database-engineering/resources/database-replication.md +63 -0
- package/.claude/skills/database-engineering/resources/postgresql-fundamentals.md +70 -0
- package/.claude/skills/database-engineering/resources/query-optimization.md +68 -0
- package/.claude/skills/devsecops/SKILL.md +374 -0
- package/.claude/skills/devsecops/resources/ci-cd-security.md +204 -0
- package/.claude/skills/devsecops/resources/compliance-automation.md +530 -0
- package/.claude/skills/devsecops/resources/compliance-frameworks.md +2322 -0
- package/.claude/skills/devsecops/resources/container-security.md +915 -0
- package/.claude/skills/devsecops/resources/cspm-integration.md +1440 -0
- package/.claude/skills/devsecops/resources/policy-enforcement.md +619 -0
- package/.claude/skills/devsecops/resources/secrets-management.md +755 -0
- package/.claude/skills/devsecops/resources/security-monitoring.md +146 -0
- package/.claude/skills/devsecops/resources/security-scanning.md +887 -0
- package/.claude/skills/devsecops/resources/security-testing.md +203 -0
- package/.claude/skills/devsecops/resources/supply-chain-security.md +518 -0
- package/.claude/skills/devsecops/resources/vulnerability-management.md +481 -0
- package/.claude/skills/devsecops/resources/zero-trust-architecture.md +177 -0
- package/.claude/skills/documentation-as-code/SKILL.md +323 -0
- package/.claude/skills/documentation-as-code/resources/api-documentation.md +90 -0
- package/.claude/skills/documentation-as-code/resources/changelog-management.md +79 -0
- package/.claude/skills/documentation-as-code/resources/diagram-generation.md +44 -0
- package/.claude/skills/documentation-as-code/resources/docs-as-code-workflow.md +99 -0
- package/.claude/skills/documentation-as-code/resources/documentation-automation.md +68 -0
- package/.claude/skills/documentation-as-code/resources/documentation-sites.md +79 -0
- package/.claude/skills/documentation-as-code/resources/markdown-best-practices.md +162 -0
- package/.claude/skills/documentation-as-code/resources/openapi-specification.md +77 -0
- package/.claude/skills/documentation-as-code/resources/readme-engineering.md +60 -0
- package/.claude/skills/documentation-as-code/resources/technical-writing-guide.md +202 -0
- package/.claude/skills/engineering-management/SKILL.md +356 -0
- package/.claude/skills/engineering-management/resources/career-ladders.md +609 -0
- package/.claude/skills/engineering-management/resources/hiring-and-assessment.md +555 -0
- package/.claude/skills/engineering-management/resources/one-on-one-guides.md +609 -0
- package/.claude/skills/engineering-management/resources/resource-planning.md +557 -0
- package/.claude/skills/engineering-management/resources/team-organization-patterns.md +491 -0
- package/.claude/skills/engineering-management/resources/technical-interviews.md +474 -0
- package/.claude/skills/engineering-operations-management/SKILL.md +817 -0
- package/.claude/skills/error-tracking/SKILL.md +379 -0
- package/.claude/skills/frontend-dev-guidelines/SKILL.md +403 -0
- package/.claude/skills/frontend-dev-guidelines/resources/common-patterns.md +331 -0
- package/.claude/skills/frontend-dev-guidelines/resources/complete-examples.md +872 -0
- package/.claude/skills/frontend-dev-guidelines/resources/component-patterns.md +502 -0
- package/.claude/skills/frontend-dev-guidelines/resources/data-fetching.md +767 -0
- package/.claude/skills/frontend-dev-guidelines/resources/file-organization.md +502 -0
- package/.claude/skills/frontend-dev-guidelines/resources/loading-and-error-states.md +501 -0
- package/.claude/skills/frontend-dev-guidelines/resources/performance.md +406 -0
- package/.claude/skills/frontend-dev-guidelines/resources/routing-guide.md +364 -0
- package/.claude/skills/frontend-dev-guidelines/resources/styling-guide.md +428 -0
- package/.claude/skills/frontend-dev-guidelines/resources/typescript-standards.md +418 -0
- package/.claude/skills/general-it-engineering/SKILL.md +393 -0
- package/.claude/skills/general-it-engineering/resources/asset-management.md +712 -0
- package/.claude/skills/general-it-engineering/resources/automation-orchestration.md +817 -0
- package/.claude/skills/general-it-engineering/resources/business-continuity.md +786 -0
- package/.claude/skills/general-it-engineering/resources/change-management.md +715 -0
- package/.claude/skills/general-it-engineering/resources/enterprise-monitoring.md +729 -0
- package/.claude/skills/general-it-engineering/resources/help-desk-operations.md +738 -0
- package/.claude/skills/general-it-engineering/resources/incident-service-management.md +834 -0
- package/.claude/skills/general-it-engineering/resources/it-governance.md +753 -0
- package/.claude/skills/general-it-engineering/resources/itil-framework.md +503 -0
- package/.claude/skills/general-it-engineering/resources/service-management.md +669 -0
- package/.claude/skills/infrastructure-architecture/SKILL.md +328 -0
- package/.claude/skills/infrastructure-architecture/resources/architecture-decision-records.md +505 -0
- package/.claude/skills/infrastructure-architecture/resources/architecture-patterns.md +528 -0
- package/.claude/skills/infrastructure-architecture/resources/capacity-planning.md +453 -0
- package/.claude/skills/infrastructure-architecture/resources/cleared-environment-architecture.md +773 -0
- package/.claude/skills/infrastructure-architecture/resources/cost-architecture.md +499 -0
- package/.claude/skills/infrastructure-architecture/resources/data-architecture.md +501 -0
- package/.claude/skills/infrastructure-architecture/resources/disaster-recovery.md +535 -0
- package/.claude/skills/infrastructure-architecture/resources/migration-architecture.md +512 -0
- package/.claude/skills/infrastructure-architecture/resources/multi-region-design.md +608 -0
- package/.claude/skills/infrastructure-architecture/resources/reference-architectures.md +562 -0
- package/.claude/skills/infrastructure-architecture/resources/security-architecture.md +538 -0
- package/.claude/skills/infrastructure-architecture/resources/system-design-principles.md +489 -0
- package/.claude/skills/infrastructure-architecture/resources/workload-classification.md +1000 -0
- package/.claude/skills/infrastructure-strategy/SKILL.md +924 -0
- package/.claude/skills/network-engineering/SKILL.md +385 -0
- package/.claude/skills/network-engineering/resources/dns-management.md +738 -0
- package/.claude/skills/network-engineering/resources/load-balancing.md +820 -0
- package/.claude/skills/network-engineering/resources/network-architecture.md +546 -0
- package/.claude/skills/network-engineering/resources/network-security.md +921 -0
- package/.claude/skills/network-engineering/resources/network-troubleshooting.md +749 -0
- package/.claude/skills/network-engineering/resources/routing-switching.md +373 -0
- package/.claude/skills/network-engineering/resources/sdn-networking.md +695 -0
- package/.claude/skills/network-engineering/resources/service-mesh-networking.md +777 -0
- package/.claude/skills/network-engineering/resources/tcp-ip-protocols.md +444 -0
- package/.claude/skills/network-engineering/resources/vpn-connectivity.md +672 -0
- package/.claude/skills/observability-engineering/SKILL.md +101 -0
- package/.claude/skills/observability-engineering/resources/apm-tools.md +97 -0
- package/.claude/skills/observability-engineering/resources/correlation-strategies.md +87 -0
- package/.claude/skills/observability-engineering/resources/distributed-tracing.md +98 -0
- package/.claude/skills/observability-engineering/resources/logs-aggregation.md +118 -0
- package/.claude/skills/observability-engineering/resources/observability-cost-optimization.md +141 -0
- package/.claude/skills/observability-engineering/resources/opentelemetry.md +110 -0
- package/.claude/skills/platform-engineering/SKILL.md +555 -0
- package/.claude/skills/platform-engineering/resources/architecture-overview.md +600 -0
- package/.claude/skills/platform-engineering/resources/container-orchestration.md +916 -0
- package/.claude/skills/platform-engineering/resources/cost-optimization.md +634 -0
- package/.claude/skills/platform-engineering/resources/developer-platforms.md +670 -0
- package/.claude/skills/platform-engineering/resources/gitops-automation.md +650 -0
- package/.claude/skills/platform-engineering/resources/infrastructure-as-code.md +778 -0
- package/.claude/skills/platform-engineering/resources/infrastructure-standards.md +708 -0
- package/.claude/skills/platform-engineering/resources/multi-tenancy.md +602 -0
- package/.claude/skills/platform-engineering/resources/platform-security.md +711 -0
- package/.claude/skills/platform-engineering/resources/resource-management.md +592 -0
- package/.claude/skills/platform-engineering/resources/service-mesh.md +628 -0
- package/.claude/skills/release-engineering/SKILL.md +393 -0
- package/.claude/skills/release-engineering/resources/artifact-management.md +108 -0
- package/.claude/skills/release-engineering/resources/build-optimization.md +84 -0
- package/.claude/skills/release-engineering/resources/ci-cd-pipelines.md +411 -0
- package/.claude/skills/release-engineering/resources/deployment-strategies.md +197 -0
- package/.claude/skills/release-engineering/resources/pipeline-security.md +62 -0
- package/.claude/skills/release-engineering/resources/progressive-delivery.md +83 -0
- package/.claude/skills/release-engineering/resources/release-automation.md +68 -0
- package/.claude/skills/release-engineering/resources/release-orchestration.md +77 -0
- package/.claude/skills/release-engineering/resources/rollback-strategies.md +66 -0
- package/.claude/skills/release-engineering/resources/versioning-strategies.md +59 -0
- package/.claude/skills/route-tester/SKILL.md +392 -0
- package/.claude/skills/skill-developer/ADVANCED.md +197 -0
- package/.claude/skills/skill-developer/HOOK_MECHANISMS.md +306 -0
- package/.claude/skills/skill-developer/PATTERNS_LIBRARY.md +152 -0
- package/.claude/skills/skill-developer/SKILL.md +430 -0
- package/.claude/skills/skill-developer/SKILL_RULES_REFERENCE.md +315 -0
- package/.claude/skills/skill-developer/TRIGGER_TYPES.md +305 -0
- package/.claude/skills/skill-developer/TROUBLESHOOTING.md +514 -0
- package/.claude/skills/skill-rules.json +2940 -0
- package/.claude/skills/sre/SKILL.md +464 -0
- package/.claude/skills/sre/resources/alerting-best-practices.md +282 -0
- package/.claude/skills/sre/resources/capacity-planning.md +226 -0
- package/.claude/skills/sre/resources/chaos-engineering.md +193 -0
- package/.claude/skills/sre/resources/disaster-recovery.md +232 -0
- package/.claude/skills/sre/resources/incident-management.md +436 -0
- package/.claude/skills/sre/resources/observability-stack.md +240 -0
- package/.claude/skills/sre/resources/on-call-runbooks.md +167 -0
- package/.claude/skills/sre/resources/performance-optimization.md +108 -0
- package/.claude/skills/sre/resources/reliability-patterns.md +183 -0
- package/.claude/skills/sre/resources/slo-sli-sla.md +464 -0
- package/.claude/skills/sre/resources/toil-reduction.md +145 -0
- package/.claude/skills/systems-engineering/SKILL.md +648 -0
- package/.claude/skills/systems-engineering/resources/automation-patterns.md +771 -0
- package/.claude/skills/systems-engineering/resources/configuration-management.md +998 -0
- package/.claude/skills/systems-engineering/resources/linux-administration.md +672 -0
- package/.claude/skills/systems-engineering/resources/networking-fundamentals.md +982 -0
- package/.claude/skills/systems-engineering/resources/performance-tuning.md +871 -0
- package/.claude/skills/systems-engineering/resources/powershell-scripting.md +482 -0
- package/.claude/skills/systems-engineering/resources/security-hardening.md +739 -0
- package/.claude/skills/systems-engineering/resources/shell-scripting.md +915 -0
- package/.claude/skills/systems-engineering/resources/storage-management.md +628 -0
- package/.claude/skills/systems-engineering/resources/system-monitoring.md +787 -0
- package/.claude/skills/systems-engineering/resources/troubleshooting-guide.md +753 -0
- package/.claude/skills/systems-engineering/resources/windows-administration.md +738 -0
- package/.claude/skills/technical-leadership/SKILL.md +728 -0
- package/CHANGELOG.md +90 -54
- package/README.md +94 -0
- package/backend/docs/SECRETS_DOCUMENTATION.md +327 -0
- package/backend/jest.config.js +59 -0
- package/backend/package-lock.json +6129 -0
- package/backend/package.json +16 -4
- package/backend/prisma/migrations/20251026104609_add_websocket_api/migration.sql +33 -0
- package/backend/prisma/schema.prisma +33 -0
- package/backend/src/__tests__/core/DependencyService.test.js +336 -0
- package/backend/src/__tests__/core/UserService.test.js +875 -0
- package/backend/src/__tests__/repositories/BaseRepository.test.js +146 -0
- package/backend/src/__tests__/repositories/BotRepository.test.js +118 -0
- package/backend/src/__tests__/repositories/CommandRepository.test.js +132 -0
- package/backend/src/__tests__/repositories/EventGraphRepository.test.js +93 -0
- package/backend/src/__tests__/repositories/GroupRepository.test.js +155 -0
- package/backend/src/__tests__/repositories/PermissionRepository.test.js +130 -0
- package/backend/src/__tests__/repositories/PluginRepository.test.js +107 -0
- package/backend/src/__tests__/repositories/ServerRepository.test.js +80 -0
- package/backend/src/__tests__/repositories/UserRepository.test.js +128 -0
- package/backend/src/__tests__/secretsFilter.test.js +425 -0
- package/backend/src/__tests__/services/BotLifecycleService.test.js +411 -0
- package/backend/src/__tests__/services/BotProcessManager.test.js +285 -0
- package/backend/src/__tests__/services/CacheManager.test.js +125 -0
- package/backend/src/__tests__/services/CommandExecutionService.test.js +460 -0
- package/backend/src/__tests__/services/ResourceMonitorService.test.js +207 -0
- package/backend/src/__tests__/services/TelemetryService.test.js +291 -0
- package/backend/src/__tests__/setup.js +25 -0
- package/backend/src/api/routes/apiKeys.js +181 -0
- package/backend/src/api/routes/bots.js +49 -7
- package/backend/src/api/routes/plugins.js +2 -1
- package/backend/src/api/routes/system.js +174 -0
- package/backend/src/container.js +82 -0
- package/backend/src/core/BotManager.js +142 -871
- package/backend/src/core/BotManager.old.js +1093 -0
- package/backend/src/core/BotProcess.js +1092 -858
- package/backend/src/core/EventGraphManager.js +280 -198
- package/backend/src/core/GraphExecutionEngine.js +321 -325
- package/backend/src/core/MessageQueue.js +27 -6
- package/backend/src/core/NodeRegistry.js +37 -1134
- package/backend/src/core/PluginManager.js +62 -12
- package/backend/src/core/PrismaService.js +32 -0
- package/backend/src/core/UserService.js +3 -3
- package/backend/src/core/__tests__/PrismaService.test.js +24 -0
- package/backend/src/core/commands/README.md +305 -0
- package/backend/src/core/commands/dev.js +13 -7
- package/backend/src/core/commands/ping.js +10 -4
- package/backend/src/core/commands/whois.js +63 -0
- package/backend/src/core/config/validation.js +27 -0
- package/backend/src/core/constants/graphTypes.js +21 -0
- package/backend/src/core/node-registries/actions.js +132 -0
- package/backend/src/core/node-registries/arrays.js +137 -0
- package/backend/src/core/node-registries/bot.js +23 -0
- package/backend/src/core/node-registries/data.js +290 -0
- package/backend/src/core/node-registries/debug.js +26 -0
- package/backend/src/core/node-registries/events.js +187 -0
- package/backend/src/core/node-registries/flow.js +139 -0
- package/backend/src/core/node-registries/logic.js +45 -0
- package/backend/src/core/node-registries/math.js +42 -0
- package/backend/src/core/node-registries/objects.js +98 -0
- package/backend/src/core/node-registries/strings.js +153 -0
- package/backend/src/core/node-registries/time.js +113 -0
- package/backend/src/core/node-registries/users.js +79 -0
- package/backend/src/core/nodes/{action_bot_look_at.js → actions/bot_look_at.js} +36 -36
- package/backend/src/core/nodes/{action_bot_set_variable.js → actions/bot_set_variable.js} +32 -32
- package/backend/src/core/nodes/{action_send_log.js → actions/send_log.js} +28 -23
- package/backend/src/core/nodes/{action_send_message.js → actions/send_message.js} +32 -32
- package/backend/src/core/nodes/actions/send_websocket_response.js +33 -0
- package/backend/src/core/nodes/arrays/get_next.js +35 -0
- package/backend/src/core/nodes/{data_cast.js → data/cast.js} +8 -0
- package/backend/src/core/nodes/data/datetime_literal.js +27 -0
- package/backend/src/core/nodes/data/entity_info.js +69 -0
- package/backend/src/core/nodes/data/get_nearby_entities.js +32 -0
- package/backend/src/core/nodes/data/get_nearby_players.js +64 -0
- package/backend/src/core/nodes/{data_get_user_field.js → data/get_user_field.js} +1 -1
- package/backend/src/core/nodes/data/type_check.js +53 -0
- package/backend/src/core/nodes/{debug_log.js → debug/log.js} +16 -16
- package/backend/src/core/nodes/{flow_branch.js → flow/branch.js} +15 -15
- package/backend/src/core/nodes/{flow_break.js → flow/break.js} +14 -14
- package/backend/src/core/nodes/flow/delay.js +43 -0
- package/backend/src/core/nodes/{flow_for_each.js → flow/for_each.js} +39 -39
- package/backend/src/core/nodes/{flow_sequence.js → flow/sequence.js} +16 -16
- package/backend/src/core/nodes/{flow_switch.js → flow/switch.js} +47 -47
- package/backend/src/core/nodes/{flow_while.js → flow/while.js} +1 -1
- package/backend/src/core/nodes/logic/__tests__/compare.test.js +83 -0
- package/backend/src/core/nodes/math/__tests__/operation.test.js +65 -0
- package/backend/src/core/nodes/strings/__tests__/concat.test.js +89 -0
- package/backend/src/core/nodes/time/__tests__/now.test.js +24 -0
- package/backend/src/core/nodes/time/add.js +33 -0
- package/backend/src/core/nodes/time/compare.js +35 -0
- package/backend/src/core/nodes/time/diff.js +29 -0
- package/backend/src/core/nodes/time/format.js +32 -0
- package/backend/src/core/nodes/time/now.js +18 -0
- package/backend/src/core/nodes/{user_check_blacklist.js → users/check_blacklist.js} +37 -37
- package/backend/src/core/nodes/{user_get_groups.js → users/get_groups.js} +36 -36
- package/backend/src/core/nodes/{user_get_permissions.js → users/get_permissions.js} +36 -36
- package/backend/src/core/nodes/{user_set_blacklist.js → users/set_blacklist.js} +37 -37
- package/backend/src/core/services/BotLifecycleService.js +596 -0
- package/backend/src/core/services/BotProcessManager.js +163 -0
- package/backend/src/core/services/CacheManager.js +111 -0
- package/backend/src/core/services/CommandExecutionService.js +351 -0
- package/backend/src/core/services/ResourceMonitorService.js +90 -0
- package/backend/src/core/services/TelemetryService.js +124 -0
- package/backend/src/core/services/ValidationService.js +132 -0
- package/backend/src/core/services/__tests__/ValidationService.test.js +148 -0
- package/backend/src/core/services.js +20 -5
- package/backend/src/core/system/CommandContext.js +84 -0
- package/backend/src/core/system/Transport.js +78 -0
- package/backend/src/core/utils/__tests__/jsonParser.test.js +44 -0
- package/backend/src/core/utils/jsonParser.js +18 -0
- package/backend/src/core/utils/secretsFilter.js +262 -0
- package/backend/src/core/utils/variableParser.js +89 -0
- package/backend/src/core/validation/__tests__/nodeSchemas.test.js +175 -0
- package/backend/src/core/validation/nodeSchemas.js +112 -0
- package/backend/src/lib/prisma.js +2 -4
- package/backend/src/real-time/botApi/handlers/commandHandlers.js +28 -0
- package/backend/src/real-time/botApi/handlers/graphHandlers.js +99 -0
- package/backend/src/real-time/botApi/handlers/graphWebSocketHandlers.js +147 -0
- package/backend/src/real-time/botApi/handlers/index.js +43 -0
- package/backend/src/real-time/botApi/handlers/messageHandlers.js +66 -0
- package/backend/src/real-time/botApi/handlers/statusHandlers.js +17 -0
- package/backend/src/real-time/botApi/handlers/userHandlers.js +141 -0
- package/backend/src/real-time/botApi/index.js +40 -0
- package/backend/src/real-time/botApi/middleware.js +79 -0
- package/backend/src/real-time/botApi/utils.js +54 -0
- package/backend/src/real-time/socketHandler.js +6 -2
- package/backend/src/repositories/BaseRepository.js +43 -0
- package/backend/src/repositories/BotRepository.js +42 -0
- package/backend/src/repositories/CommandRepository.js +53 -0
- package/backend/src/repositories/EventGraphRepository.js +40 -0
- package/backend/src/repositories/GroupRepository.js +69 -0
- package/backend/src/repositories/PermissionRepository.js +48 -0
- package/backend/src/repositories/PluginRepository.js +42 -0
- package/backend/src/repositories/ServerRepository.js +27 -0
- package/backend/src/repositories/UserRepository.js +48 -0
- package/backend/src/server.js +3 -0
- package/backend/src/test-refactor.js +85 -0
- package/frontend/dist/assets/index-CfTo92bP.css +1 -0
- package/frontend/dist/assets/index-CiFD5X9Z.js +8344 -0
- package/frontend/dist/index.html +2 -2
- package/frontend/package.json +0 -5
- package/package.json +2 -1
- package/frontend/dist/assets/index-B9GedHEa.js +0 -8352
- package/frontend/dist/assets/index-zLiy9MDx.css +0 -1
- package/nul +0 -0
- /package/backend/src/core/nodes/{action_http_request.js → actions/http_request.js} +0 -0
- /package/backend/src/core/nodes/{array_add_element.js → arrays/add_element.js} +0 -0
- /package/backend/src/core/nodes/{array_contains.js → arrays/contains.js} +0 -0
- /package/backend/src/core/nodes/{array_find_index.js → arrays/find_index.js} +0 -0
- /package/backend/src/core/nodes/{array_get_by_index.js → arrays/get_by_index.js} +0 -0
- /package/backend/src/core/nodes/{array_get_random_element.js → arrays/get_random_element.js} +0 -0
- /package/backend/src/core/nodes/{array_remove_by_index.js → arrays/remove_by_index.js} +0 -0
- /package/backend/src/core/nodes/{bot_get_position.js → bot/get_position.js} +0 -0
- /package/backend/src/core/nodes/{data_array_literal.js → data/array_literal.js} +0 -0
- /package/backend/src/core/nodes/{data_boolean_literal.js → data/boolean_literal.js} +0 -0
- /package/backend/src/core/nodes/{data_get_argument.js → data/get_argument.js} +0 -0
- /package/backend/src/core/nodes/{data_get_bot_look.js → data/get_bot_look.js} +0 -0
- /package/backend/src/core/nodes/{data_get_entity_field.js → data/get_entity_field.js} +0 -0
- /package/backend/src/core/nodes/{data_get_server_players.js → data/get_server_players.js} +0 -0
- /package/backend/src/core/nodes/{data_get_variable.js → data/get_variable.js} +0 -0
- /package/backend/src/core/nodes/{data_length.js → data/length.js} +0 -0
- /package/backend/src/core/nodes/{data_make_object.js → data/make_object.js} +0 -0
- /package/backend/src/core/nodes/{data_number_literal.js → data/number_literal.js} +0 -0
- /package/backend/src/core/nodes/{data_string_literal.js → data/string_literal.js} +0 -0
- /package/backend/src/core/nodes/{logic_compare.js → logic/compare.js} +0 -0
- /package/backend/src/core/nodes/{logic_operation.js → logic/operation.js} +0 -0
- /package/backend/src/core/nodes/{math_operation.js → math/operation.js} +0 -0
- /package/backend/src/core/nodes/{math_random_number.js → math/random_number.js} +0 -0
- /package/backend/src/core/nodes/{object_create.js → objects/create.js} +0 -0
- /package/backend/src/core/nodes/{object_delete.js → objects/delete.js} +0 -0
- /package/backend/src/core/nodes/{object_get.js → objects/get.js} +0 -0
- /package/backend/src/core/nodes/{object_has_key.js → objects/has_key.js} +0 -0
- /package/backend/src/core/nodes/{object_set.js → objects/set.js} +0 -0
- /package/backend/src/core/nodes/{string_concat.js → strings/concat.js} +0 -0
- /package/backend/src/core/nodes/{string_contains.js → strings/contains.js} +0 -0
- /package/backend/src/core/nodes/{string_ends_with.js → strings/ends_with.js} +0 -0
- /package/backend/src/core/nodes/{string_equals.js → strings/equals.js} +0 -0
- /package/backend/src/core/nodes/{string_length.js → strings/length.js} +0 -0
- /package/backend/src/core/nodes/{string_matches.js → strings/matches.js} +0 -0
- /package/backend/src/core/nodes/{string_split.js → strings/split.js} +0 -0
- /package/backend/src/core/nodes/{string_starts_with.js → strings/starts_with.js} +0 -0
|
@@ -0,0 +1,392 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: route-tester
|
|
3
|
+
description: Test authenticated routes in the your project using cookie-based authentication. Use this skill when testing API endpoints, validating route functionality, or debugging authentication issues. Includes patterns for using test-auth-route.js and mock authentication.
|
|
4
|
+
---
|
|
5
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
6
|
+
🎯 SKILL ACTIVATED: route-tester
|
|
7
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
# your project Route Tester Skill
|
|
11
|
+
|
|
12
|
+
## Purpose
|
|
13
|
+
This skill provides patterns for testing authenticated routes in the your project using cookie-based JWT authentication.
|
|
14
|
+
|
|
15
|
+
## When to Use This Skill
|
|
16
|
+
- Testing new API endpoints
|
|
17
|
+
- Validating route functionality after changes
|
|
18
|
+
- Debugging authentication issues
|
|
19
|
+
- Testing POST/PUT/DELETE operations
|
|
20
|
+
- Verifying request/response data
|
|
21
|
+
|
|
22
|
+
## your project Authentication Overview
|
|
23
|
+
|
|
24
|
+
The your project uses:
|
|
25
|
+
- **Keycloak** for SSO (realm: yourRealm)
|
|
26
|
+
- **Cookie-based JWT** tokens (not Bearer headers)
|
|
27
|
+
- **Cookie name**: `refresh_token`
|
|
28
|
+
- **JWT signing**: Using secret from `config.ini`
|
|
29
|
+
|
|
30
|
+
## Testing Methods
|
|
31
|
+
|
|
32
|
+
### Method 1: test-auth-route.js (RECOMMENDED)
|
|
33
|
+
|
|
34
|
+
The `test-auth-route.js` script handles all authentication complexity automatically.
|
|
35
|
+
|
|
36
|
+
**Location**: `/root/git/your project_pre/scripts/test-auth-route.js`
|
|
37
|
+
|
|
38
|
+
#### Basic GET Request
|
|
39
|
+
|
|
40
|
+
```bash
|
|
41
|
+
node scripts/test-auth-route.js http://localhost:3000/blog-api/api/endpoint
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
#### POST Request with JSON Data
|
|
45
|
+
|
|
46
|
+
```bash
|
|
47
|
+
node scripts/test-auth-route.js \
|
|
48
|
+
http://localhost:3000/blog-api/777/submit \
|
|
49
|
+
POST \
|
|
50
|
+
'{"responses":{"4577":"13295"},"submissionID":5,"stepInstanceId":"11"}'
|
|
51
|
+
```
|
|
52
|
+
|
|
53
|
+
#### What the Script Does
|
|
54
|
+
|
|
55
|
+
1. Gets a refresh token from Keycloak
|
|
56
|
+
- Username: `testuser`
|
|
57
|
+
- Password: `testpassword`
|
|
58
|
+
2. Signs the token with JWT secret from `config.ini`
|
|
59
|
+
3. Creates cookie header: `refresh_token=<signed-token>`
|
|
60
|
+
4. Makes the authenticated request
|
|
61
|
+
5. Shows the exact curl command to reproduce manually
|
|
62
|
+
|
|
63
|
+
#### Script Output
|
|
64
|
+
|
|
65
|
+
The script outputs:
|
|
66
|
+
- The request details
|
|
67
|
+
- The response status and body
|
|
68
|
+
- A curl command for manual reproduction
|
|
69
|
+
|
|
70
|
+
**Note**: The script is verbose - look for the actual response in the output.
|
|
71
|
+
|
|
72
|
+
### Method 2: Manual curl with Token
|
|
73
|
+
|
|
74
|
+
Use the curl command from the test-auth-route.js output:
|
|
75
|
+
|
|
76
|
+
```bash
|
|
77
|
+
# The script outputs something like:
|
|
78
|
+
# 💡 To test manually with curl:
|
|
79
|
+
# curl -b "refresh_token=eyJhbGci..." http://localhost:3000/blog-api/api/endpoint
|
|
80
|
+
|
|
81
|
+
# Copy and modify that curl command:
|
|
82
|
+
curl -X POST http://localhost:3000/blog-api/777/submit \
|
|
83
|
+
-H "Content-Type: application/json" \
|
|
84
|
+
-b "refresh_token=<COPY_TOKEN_FROM_SCRIPT_OUTPUT>" \
|
|
85
|
+
-d '{"your": "data"}'
|
|
86
|
+
```
|
|
87
|
+
|
|
88
|
+
### Method 3: Mock Authentication (Development Only - EASIEST)
|
|
89
|
+
|
|
90
|
+
For development, bypass Keycloak entirely using mock auth.
|
|
91
|
+
|
|
92
|
+
#### Setup
|
|
93
|
+
|
|
94
|
+
```bash
|
|
95
|
+
# Add to service .env file (e.g., blog-api/.env)
|
|
96
|
+
MOCK_AUTH=true
|
|
97
|
+
MOCK_USER_ID=test-user
|
|
98
|
+
MOCK_USER_ROLES=admin,operations
|
|
99
|
+
```
|
|
100
|
+
|
|
101
|
+
#### Usage
|
|
102
|
+
|
|
103
|
+
```bash
|
|
104
|
+
curl -H "X-Mock-Auth: true" \
|
|
105
|
+
-H "X-Mock-User: test-user" \
|
|
106
|
+
-H "X-Mock-Roles: admin,operations" \
|
|
107
|
+
http://localhost:3002/api/protected
|
|
108
|
+
```
|
|
109
|
+
|
|
110
|
+
#### Mock Auth Requirements
|
|
111
|
+
|
|
112
|
+
Mock auth ONLY works when:
|
|
113
|
+
- `NODE_ENV` is `development` or `test`
|
|
114
|
+
- The `mockAuth` middleware is added to the route
|
|
115
|
+
- Will NEVER work in production (security feature)
|
|
116
|
+
|
|
117
|
+
## Common Testing Patterns
|
|
118
|
+
|
|
119
|
+
### Test Form Submission
|
|
120
|
+
|
|
121
|
+
```bash
|
|
122
|
+
node scripts/test-auth-route.js \
|
|
123
|
+
http://localhost:3000/blog-api/777/submit \
|
|
124
|
+
POST \
|
|
125
|
+
'{"responses":{"4577":"13295"},"submissionID":5,"stepInstanceId":"11"}'
|
|
126
|
+
```
|
|
127
|
+
|
|
128
|
+
### Test Workflow Start
|
|
129
|
+
|
|
130
|
+
```bash
|
|
131
|
+
node scripts/test-auth-route.js \
|
|
132
|
+
http://localhost:3002/api/workflow/start \
|
|
133
|
+
POST \
|
|
134
|
+
'{"workflowCode":"DHS_CLOSEOUT","entityType":"Submission","entityID":123}'
|
|
135
|
+
```
|
|
136
|
+
|
|
137
|
+
### Test Workflow Step Completion
|
|
138
|
+
|
|
139
|
+
```bash
|
|
140
|
+
node scripts/test-auth-route.js \
|
|
141
|
+
http://localhost:3002/api/workflow/step/complete \
|
|
142
|
+
POST \
|
|
143
|
+
'{"stepInstanceID":789,"answers":{"decision":"approved","comments":"Looks good"}}'
|
|
144
|
+
```
|
|
145
|
+
|
|
146
|
+
### Test GET with Query Parameters
|
|
147
|
+
|
|
148
|
+
```bash
|
|
149
|
+
node scripts/test-auth-route.js \
|
|
150
|
+
"http://localhost:3002/api/workflows?status=active&limit=10"
|
|
151
|
+
```
|
|
152
|
+
|
|
153
|
+
### Test File Upload
|
|
154
|
+
|
|
155
|
+
```bash
|
|
156
|
+
# Get token from test-auth-route.js first, then:
|
|
157
|
+
curl -X POST http://localhost:5000/upload \
|
|
158
|
+
-H "Content-Type: multipart/form-data" \
|
|
159
|
+
-b "refresh_token=<TOKEN>" \
|
|
160
|
+
-F "file=@/path/to/file.pdf" \
|
|
161
|
+
-F "metadata={\"description\":\"Test file\"}"
|
|
162
|
+
```
|
|
163
|
+
|
|
164
|
+
## Hardcoded Test Credentials
|
|
165
|
+
|
|
166
|
+
The `test-auth-route.js` script uses these credentials:
|
|
167
|
+
|
|
168
|
+
- **Username**: `testuser`
|
|
169
|
+
- **Password**: `testpassword`
|
|
170
|
+
- **Keycloak URL**: From `config.ini` (usually `http://localhost:8081`)
|
|
171
|
+
- **Realm**: `yourRealm`
|
|
172
|
+
- **Client ID**: From `config.ini`
|
|
173
|
+
|
|
174
|
+
## Service Ports
|
|
175
|
+
|
|
176
|
+
| Service | Port | Base URL |
|
|
177
|
+
|---------|------|----------|
|
|
178
|
+
| Users | 3000 | http://localhost:3000 |
|
|
179
|
+
| Projects| 3001 | http://localhost:3001 |
|
|
180
|
+
| Form | 3002 | http://localhost:3002 |
|
|
181
|
+
| Email | 3003 | http://localhost:3003 |
|
|
182
|
+
| Uploads | 5000 | http://localhost:5000 |
|
|
183
|
+
|
|
184
|
+
## Route Prefixes
|
|
185
|
+
|
|
186
|
+
Check `/src/app.ts` in each service for route prefixes:
|
|
187
|
+
|
|
188
|
+
```typescript
|
|
189
|
+
// Example from blog-api/src/app.ts
|
|
190
|
+
app.use('/blog-api/api', formRoutes); // Prefix: /blog-api/api
|
|
191
|
+
app.use('/api/workflow', workflowRoutes); // Prefix: /api/workflow
|
|
192
|
+
```
|
|
193
|
+
|
|
194
|
+
**Full Route** = Base URL + Prefix + Route Path
|
|
195
|
+
|
|
196
|
+
Example:
|
|
197
|
+
- Base: `http://localhost:3002`
|
|
198
|
+
- Prefix: `/form`
|
|
199
|
+
- Route: `/777/submit`
|
|
200
|
+
- **Full URL**: `http://localhost:3000/blog-api/777/submit`
|
|
201
|
+
|
|
202
|
+
## Testing Checklist
|
|
203
|
+
|
|
204
|
+
Before testing a route:
|
|
205
|
+
|
|
206
|
+
- [ ] Identify the service (form, email, users, etc.)
|
|
207
|
+
- [ ] Find the correct port
|
|
208
|
+
- [ ] Check route prefixes in `app.ts`
|
|
209
|
+
- [ ] Construct the full URL
|
|
210
|
+
- [ ] Prepare request body (if POST/PUT)
|
|
211
|
+
- [ ] Determine authentication method
|
|
212
|
+
- [ ] Run the test
|
|
213
|
+
- [ ] Verify response status and data
|
|
214
|
+
- [ ] Check database changes if applicable
|
|
215
|
+
|
|
216
|
+
## Verifying Database Changes
|
|
217
|
+
|
|
218
|
+
After testing routes that modify data:
|
|
219
|
+
|
|
220
|
+
```bash
|
|
221
|
+
# Connect to MySQL
|
|
222
|
+
docker exec -i local-mysql mysql -u root -ppassword1 blog_dev
|
|
223
|
+
|
|
224
|
+
# Check specific table
|
|
225
|
+
mysql> SELECT * FROM WorkflowInstance WHERE id = 123;
|
|
226
|
+
mysql> SELECT * FROM WorkflowStepInstance WHERE instanceId = 123;
|
|
227
|
+
mysql> SELECT * FROM WorkflowNotification WHERE recipientUserId = 'user-123';
|
|
228
|
+
```
|
|
229
|
+
|
|
230
|
+
## Debugging Failed Tests
|
|
231
|
+
|
|
232
|
+
### 401 Unauthorized
|
|
233
|
+
|
|
234
|
+
**Possible causes**:
|
|
235
|
+
1. Token expired (regenerate with test-auth-route.js)
|
|
236
|
+
2. Incorrect cookie format
|
|
237
|
+
3. JWT secret mismatch
|
|
238
|
+
4. Keycloak not running
|
|
239
|
+
|
|
240
|
+
**Solutions**:
|
|
241
|
+
```bash
|
|
242
|
+
# Check Keycloak is running
|
|
243
|
+
docker ps | grep keycloak
|
|
244
|
+
|
|
245
|
+
# Regenerate token
|
|
246
|
+
node scripts/test-auth-route.js http://localhost:3002/api/health
|
|
247
|
+
|
|
248
|
+
# Verify config.ini has correct jwtSecret
|
|
249
|
+
```
|
|
250
|
+
|
|
251
|
+
### 403 Forbidden
|
|
252
|
+
|
|
253
|
+
**Possible causes**:
|
|
254
|
+
1. User lacks required role
|
|
255
|
+
2. Resource permissions incorrect
|
|
256
|
+
3. Route requires specific permissions
|
|
257
|
+
|
|
258
|
+
**Solutions**:
|
|
259
|
+
```bash
|
|
260
|
+
# Use mock auth with admin role
|
|
261
|
+
curl -H "X-Mock-Auth: true" \
|
|
262
|
+
-H "X-Mock-User: test-admin" \
|
|
263
|
+
-H "X-Mock-Roles: admin" \
|
|
264
|
+
http://localhost:3002/api/protected
|
|
265
|
+
```
|
|
266
|
+
|
|
267
|
+
### 404 Not Found
|
|
268
|
+
|
|
269
|
+
**Possible causes**:
|
|
270
|
+
1. Incorrect URL
|
|
271
|
+
2. Missing route prefix
|
|
272
|
+
3. Route not registered
|
|
273
|
+
|
|
274
|
+
**Solutions**:
|
|
275
|
+
1. Check `app.ts` for route prefixes
|
|
276
|
+
2. Verify route registration
|
|
277
|
+
3. Check service is running (`pm2 list`)
|
|
278
|
+
|
|
279
|
+
### 500 Internal Server Error
|
|
280
|
+
|
|
281
|
+
**Possible causes**:
|
|
282
|
+
1. Database connection issue
|
|
283
|
+
2. Missing required fields
|
|
284
|
+
3. Validation error
|
|
285
|
+
4. Application error
|
|
286
|
+
|
|
287
|
+
**Solutions**:
|
|
288
|
+
1. Check service logs (`pm2 logs <service>`)
|
|
289
|
+
2. Check Sentry for error details
|
|
290
|
+
3. Verify request body matches expected schema
|
|
291
|
+
4. Check database connectivity
|
|
292
|
+
|
|
293
|
+
## Using auth-route-tester Agent
|
|
294
|
+
|
|
295
|
+
For comprehensive route testing after making changes:
|
|
296
|
+
|
|
297
|
+
1. **Identify affected routes**
|
|
298
|
+
2. **Gather route information**:
|
|
299
|
+
- Full route path (with prefix)
|
|
300
|
+
- Expected POST data
|
|
301
|
+
- Tables to verify
|
|
302
|
+
3. **Invoke auth-route-tester agent**
|
|
303
|
+
|
|
304
|
+
The agent will:
|
|
305
|
+
- Test the route with proper authentication
|
|
306
|
+
- Verify database changes
|
|
307
|
+
- Check response format
|
|
308
|
+
- Report any issues
|
|
309
|
+
|
|
310
|
+
## Example Test Scenarios
|
|
311
|
+
|
|
312
|
+
### After Creating a New Route
|
|
313
|
+
|
|
314
|
+
```bash
|
|
315
|
+
# 1. Test with valid data
|
|
316
|
+
node scripts/test-auth-route.js \
|
|
317
|
+
http://localhost:3002/api/my-new-route \
|
|
318
|
+
POST \
|
|
319
|
+
'{"field1":"value1","field2":"value2"}'
|
|
320
|
+
|
|
321
|
+
# 2. Verify database
|
|
322
|
+
docker exec -i local-mysql mysql -u root -ppassword1 blog_dev \
|
|
323
|
+
-e "SELECT * FROM MyTable ORDER BY createdAt DESC LIMIT 1;"
|
|
324
|
+
|
|
325
|
+
# 3. Test with invalid data
|
|
326
|
+
node scripts/test-auth-route.js \
|
|
327
|
+
http://localhost:3002/api/my-new-route \
|
|
328
|
+
POST \
|
|
329
|
+
'{"field1":"invalid"}'
|
|
330
|
+
|
|
331
|
+
# 4. Test without authentication
|
|
332
|
+
curl http://localhost:3002/api/my-new-route
|
|
333
|
+
# Should return 401
|
|
334
|
+
```
|
|
335
|
+
|
|
336
|
+
### After Modifying a Route
|
|
337
|
+
|
|
338
|
+
```bash
|
|
339
|
+
# 1. Test existing functionality still works
|
|
340
|
+
node scripts/test-auth-route.js \
|
|
341
|
+
http://localhost:3002/api/existing-route \
|
|
342
|
+
POST \
|
|
343
|
+
'{"existing":"data"}'
|
|
344
|
+
|
|
345
|
+
# 2. Test new functionality
|
|
346
|
+
node scripts/test-auth-route.js \
|
|
347
|
+
http://localhost:3002/api/existing-route \
|
|
348
|
+
POST \
|
|
349
|
+
'{"new":"field","existing":"data"}'
|
|
350
|
+
|
|
351
|
+
# 3. Verify backward compatibility
|
|
352
|
+
# Test with old request format (if applicable)
|
|
353
|
+
```
|
|
354
|
+
|
|
355
|
+
## Configuration Files
|
|
356
|
+
|
|
357
|
+
### config.ini (each service)
|
|
358
|
+
|
|
359
|
+
```ini
|
|
360
|
+
[keycloak]
|
|
361
|
+
url = http://localhost:8081
|
|
362
|
+
realm = yourRealm
|
|
363
|
+
clientId = app-client
|
|
364
|
+
|
|
365
|
+
[jwt]
|
|
366
|
+
jwtSecret = your-jwt-secret-here
|
|
367
|
+
```
|
|
368
|
+
|
|
369
|
+
### .env (each service)
|
|
370
|
+
|
|
371
|
+
```bash
|
|
372
|
+
NODE_ENV=development
|
|
373
|
+
MOCK_AUTH=true # Optional: Enable mock auth
|
|
374
|
+
MOCK_USER_ID=test-user # Optional: Default mock user
|
|
375
|
+
MOCK_USER_ROLES=admin # Optional: Default mock roles
|
|
376
|
+
```
|
|
377
|
+
|
|
378
|
+
## Key Files
|
|
379
|
+
|
|
380
|
+
- `/root/git/your project_pre/scripts/test-auth-route.js` - Main testing script
|
|
381
|
+
- `/blog-api/src/app.ts` - Form service routes
|
|
382
|
+
- `/notifications/src/app.ts` - Email service routes
|
|
383
|
+
- `/auth/src/app.ts` - Users service routes
|
|
384
|
+
- `/config.ini` - Service configuration
|
|
385
|
+
- `/.env` - Environment variables
|
|
386
|
+
|
|
387
|
+
## Related Skills
|
|
388
|
+
|
|
389
|
+
- Use **database-verification** to verify database changes
|
|
390
|
+
- Use **error-tracking** to check for captured errors
|
|
391
|
+
- Use **workflow-builder** for workflow route testing
|
|
392
|
+
- Use **notification-sender** to verify notifications sent
|
|
@@ -0,0 +1,197 @@
|
|
|
1
|
+
# Advanced Topics & Future Enhancements
|
|
2
|
+
|
|
3
|
+
Ideas and concepts for future improvements to the skill system.
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## Dynamic Rule Updates
|
|
8
|
+
|
|
9
|
+
**Current State:** Requires Claude Code restart to pick up changes to skill-rules.json
|
|
10
|
+
|
|
11
|
+
**Future Enhancement:** Hot-reload configuration without restart
|
|
12
|
+
|
|
13
|
+
**Implementation Ideas:**
|
|
14
|
+
- Watch skill-rules.json for changes
|
|
15
|
+
- Reload on file modification
|
|
16
|
+
- Invalidate cached compiled regexes
|
|
17
|
+
- Notify user of reload
|
|
18
|
+
|
|
19
|
+
**Benefits:**
|
|
20
|
+
- Faster iteration during skill development
|
|
21
|
+
- No need to restart Claude Code
|
|
22
|
+
- Better developer experience
|
|
23
|
+
|
|
24
|
+
---
|
|
25
|
+
|
|
26
|
+
## Skill Dependencies
|
|
27
|
+
|
|
28
|
+
**Current State:** Skills are independent
|
|
29
|
+
|
|
30
|
+
**Future Enhancement:** Specify skill dependencies and load order
|
|
31
|
+
|
|
32
|
+
**Configuration Idea:**
|
|
33
|
+
```json
|
|
34
|
+
{
|
|
35
|
+
"my-advanced-skill": {
|
|
36
|
+
"dependsOn": ["prerequisite-skill", "base-skill"],
|
|
37
|
+
"type": "domain",
|
|
38
|
+
...
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
**Use Cases:**
|
|
44
|
+
- Advanced skill builds on base skill knowledge
|
|
45
|
+
- Ensure foundational skills loaded first
|
|
46
|
+
- Chain skills for complex workflows
|
|
47
|
+
|
|
48
|
+
**Benefits:**
|
|
49
|
+
- Better skill composition
|
|
50
|
+
- Clearer skill relationships
|
|
51
|
+
- Progressive disclosure
|
|
52
|
+
|
|
53
|
+
---
|
|
54
|
+
|
|
55
|
+
## Conditional Enforcement
|
|
56
|
+
|
|
57
|
+
**Current State:** Enforcement level is static
|
|
58
|
+
|
|
59
|
+
**Future Enhancement:** Enforce based on context or environment
|
|
60
|
+
|
|
61
|
+
**Configuration Idea:**
|
|
62
|
+
```json
|
|
63
|
+
{
|
|
64
|
+
"enforcement": {
|
|
65
|
+
"default": "suggest",
|
|
66
|
+
"when": {
|
|
67
|
+
"production": "block",
|
|
68
|
+
"development": "suggest",
|
|
69
|
+
"ci": "block"
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
```
|
|
74
|
+
|
|
75
|
+
**Use Cases:**
|
|
76
|
+
- Stricter enforcement in production
|
|
77
|
+
- Relaxed rules during development
|
|
78
|
+
- CI/CD pipeline requirements
|
|
79
|
+
|
|
80
|
+
**Benefits:**
|
|
81
|
+
- Environment-appropriate enforcement
|
|
82
|
+
- Flexible rule application
|
|
83
|
+
- Context-aware guardrails
|
|
84
|
+
|
|
85
|
+
---
|
|
86
|
+
|
|
87
|
+
## Skill Analytics
|
|
88
|
+
|
|
89
|
+
**Current State:** No usage tracking
|
|
90
|
+
|
|
91
|
+
**Future Enhancement:** Track skill usage patterns and effectiveness
|
|
92
|
+
|
|
93
|
+
**Metrics to Collect:**
|
|
94
|
+
- Skill trigger frequency
|
|
95
|
+
- False positive rate
|
|
96
|
+
- False negative rate
|
|
97
|
+
- Time to skill usage after suggestion
|
|
98
|
+
- User override rate (skip markers, env vars)
|
|
99
|
+
- Performance metrics (execution time)
|
|
100
|
+
|
|
101
|
+
**Dashbord Ideas:**
|
|
102
|
+
- Most/least used skills
|
|
103
|
+
- Skills with highest false positive rate
|
|
104
|
+
- Performance bottlenecks
|
|
105
|
+
- Skill effectiveness scores
|
|
106
|
+
|
|
107
|
+
**Benefits:**
|
|
108
|
+
- Data-driven skill improvement
|
|
109
|
+
- Identify problems early
|
|
110
|
+
- Optimize patterns based on real usage
|
|
111
|
+
|
|
112
|
+
---
|
|
113
|
+
|
|
114
|
+
## Skill Versioning
|
|
115
|
+
|
|
116
|
+
**Current State:** No version tracking
|
|
117
|
+
|
|
118
|
+
**Future Enhancement:** Version skills and track compatibility
|
|
119
|
+
|
|
120
|
+
**Configuration Idea:**
|
|
121
|
+
```json
|
|
122
|
+
{
|
|
123
|
+
"my-skill": {
|
|
124
|
+
"version": "2.1.0",
|
|
125
|
+
"minClaudeVersion": "1.5.0",
|
|
126
|
+
"changelog": "Added support for new workflow patterns",
|
|
127
|
+
...
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
```
|
|
131
|
+
|
|
132
|
+
**Benefits:**
|
|
133
|
+
- Track skill evolution
|
|
134
|
+
- Ensure compatibility
|
|
135
|
+
- Document changes
|
|
136
|
+
- Support migration paths
|
|
137
|
+
|
|
138
|
+
---
|
|
139
|
+
|
|
140
|
+
## Multi-Language Support
|
|
141
|
+
|
|
142
|
+
**Current State:** English only
|
|
143
|
+
|
|
144
|
+
**Future Enhancement:** Support multiple languages for skill content
|
|
145
|
+
|
|
146
|
+
**Implementation Ideas:**
|
|
147
|
+
- Language-specific SKILL.md variants
|
|
148
|
+
- Automatic language detection
|
|
149
|
+
- Fallback to English
|
|
150
|
+
|
|
151
|
+
**Use Cases:**
|
|
152
|
+
- International teams
|
|
153
|
+
- Localized documentation
|
|
154
|
+
- Multi-language projects
|
|
155
|
+
|
|
156
|
+
---
|
|
157
|
+
|
|
158
|
+
## Skill Testing Framework
|
|
159
|
+
|
|
160
|
+
**Current State:** Manual testing with npx tsx commands
|
|
161
|
+
|
|
162
|
+
**Future Enhancement:** Automated skill testing
|
|
163
|
+
|
|
164
|
+
**Features:**
|
|
165
|
+
- Test cases for trigger patterns
|
|
166
|
+
- Assertion framework
|
|
167
|
+
- CI/CD integration
|
|
168
|
+
- Coverage reports
|
|
169
|
+
|
|
170
|
+
**Example Test:**
|
|
171
|
+
```typescript
|
|
172
|
+
describe('database-verification', () => {
|
|
173
|
+
it('triggers on Prisma imports', () => {
|
|
174
|
+
const result = testSkill({
|
|
175
|
+
prompt: "add user tracking",
|
|
176
|
+
file: "services/user.ts",
|
|
177
|
+
content: "import { PrismaService } from './prisma'"
|
|
178
|
+
});
|
|
179
|
+
|
|
180
|
+
expect(result.triggered).toBe(true);
|
|
181
|
+
expect(result.skill).toBe('database-verification');
|
|
182
|
+
});
|
|
183
|
+
});
|
|
184
|
+
```
|
|
185
|
+
|
|
186
|
+
**Benefits:**
|
|
187
|
+
- Prevent regressions
|
|
188
|
+
- Validate patterns before deployment
|
|
189
|
+
- Confidence in changes
|
|
190
|
+
|
|
191
|
+
---
|
|
192
|
+
|
|
193
|
+
## Related Files
|
|
194
|
+
|
|
195
|
+
- [SKILL.md](SKILL.md) - Main skill guide
|
|
196
|
+
- [TROUBLESHOOTING.md](TROUBLESHOOTING.md) - Current debugging guide
|
|
197
|
+
- [HOOK_MECHANISMS.md](HOOK_MECHANISMS.md) - How hooks work today
|