claude-flow-novice 1.6.1 → 1.6.3
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/cfn-loop/product-owner.md +54 -4
- package/.claude/commands/cfn-claude-sync.md +303 -0
- package/.claude/commands/cfn-loop-epic.md +290 -0
- package/.claude/commands/cfn-loop-single.md +168 -0
- package/.claude/commands/cfn-loop-sprints.md +384 -0
- package/.claude/commands/cfn-loop.md +180 -0
- package/.claude/commands/metrics-summary.md +58 -0
- package/.claude/commands/parse-epic.md +357 -0
- package/.claude/settings.json +5 -4
- package/.claude/settings.local.json +9 -2
- package/.claude-flow-novice/.claude/agents/cfn-loop/product-owner.md +792 -0
- package/.claude-flow-novice/dist/mcp/server.js +21 -2
- package/.claude-flow-novice/dist/src/api/auth-service.js +84 -38
- package/.claude-flow-novice/dist/src/api/auth-service.js.map +1 -1
- package/.claude-flow-novice/dist/src/api/claude-client.js +138 -3
- package/.claude-flow-novice/dist/src/api/claude-client.js.map +1 -1
- package/.claude-flow-novice/dist/src/cfn-loop/phase-orchestrator-example.js +1 -1
- package/.claude-flow-novice/dist/src/cfn-loop/scope-control.js +247 -0
- package/.claude-flow-novice/dist/src/cfn-loop/scope-control.js.map +1 -0
- package/.claude-flow-novice/dist/src/cli/commands/swarm.js +32 -15
- package/.claude-flow-novice/dist/src/cli/commands/swarm.js.map +1 -1
- package/.claude-flow-novice/dist/src/cli/commands/transparency.js +455 -0
- package/.claude-flow-novice/dist/src/cli/commands/transparency.js.map +1 -0
- package/.claude-flow-novice/dist/src/cli/simple-commands/init/templates/CLAUDE.md +129 -13
- package/.claude-flow-novice/dist/src/components/visualizations/index.js +9 -0
- package/.claude-flow-novice/dist/src/components/visualizations/index.js.map +1 -0
- package/.claude-flow-novice/dist/src/coordination/adapters/v1-coordinator-adapter.js +462 -0
- package/.claude-flow-novice/dist/src/coordination/adapters/v1-coordinator-adapter.js.map +1 -0
- package/.claude-flow-novice/dist/src/coordination/config-translator.js +248 -0
- package/.claude-flow-novice/dist/src/coordination/config-translator.js.map +1 -0
- package/.claude-flow-novice/dist/src/coordination/coordination-toggle.js +287 -0
- package/.claude-flow-novice/dist/src/coordination/coordination-toggle.js.map +1 -0
- package/.claude-flow-novice/dist/src/coordination/distributed-consensus.js +68 -9
- package/.claude-flow-novice/dist/src/coordination/distributed-consensus.js.map +1 -1
- package/.claude-flow-novice/dist/src/coordination/feature-flags.js +166 -0
- package/.claude-flow-novice/dist/src/coordination/feature-flags.js.map +1 -0
- package/.claude-flow-novice/dist/src/coordination/queen-agent.js +18 -4
- package/.claude-flow-novice/dist/src/coordination/queen-agent.js.map +1 -1
- package/.claude-flow-novice/dist/src/coordination/role-assignment.js +6 -110
- package/.claude-flow-novice/dist/src/coordination/role-assignment.js.map +1 -1
- package/.claude-flow-novice/dist/src/coordination/v2/cache/artifact-cache-optimizer.js +632 -0
- package/.claude-flow-novice/dist/src/coordination/v2/cache/artifact-cache-optimizer.js.map +1 -0
- package/.claude-flow-novice/dist/src/coordination/v2/cache/index.js +11 -0
- package/.claude-flow-novice/dist/src/coordination/v2/cache/index.js.map +1 -0
- package/.claude-flow-novice/dist/src/coordination/v2/checkpoints/checkpoint-compressor.js +318 -0
- package/.claude-flow-novice/dist/src/coordination/v2/checkpoints/checkpoint-compressor.js.map +1 -0
- package/.claude-flow-novice/dist/src/coordination/v2/coordinators/cascading-shutdown.example.js +364 -0
- package/.claude-flow-novice/dist/src/coordination/v2/coordinators/cascading-shutdown.example.js.map +1 -0
- package/.claude-flow-novice/dist/src/coordination/v2/coordinators/cascading-shutdown.js +492 -0
- package/.claude-flow-novice/dist/src/coordination/v2/coordinators/cascading-shutdown.js.map +1 -0
- package/.claude-flow-novice/dist/src/coordination/v2/coordinators/hierarchical-coordinator.js +786 -0
- package/.claude-flow-novice/dist/src/coordination/v2/coordinators/hierarchical-coordinator.js.map +1 -0
- package/.claude-flow-novice/dist/src/coordination/v2/coordinators/index.js +16 -0
- package/.claude-flow-novice/dist/src/coordination/v2/coordinators/index.js.map +1 -0
- package/.claude-flow-novice/dist/src/coordination/v2/coordinators/parent-child-manager.js +342 -0
- package/.claude-flow-novice/dist/src/coordination/v2/coordinators/parent-child-manager.js.map +1 -0
- package/.claude-flow-novice/dist/src/coordination/v2/coordinators/swarm-coordinator-v2.js +601 -0
- package/.claude-flow-novice/dist/src/coordination/v2/coordinators/swarm-coordinator-v2.js.map +1 -0
- package/.claude-flow-novice/dist/src/coordination/v2/core/help-request-metrics.js +211 -0
- package/.claude-flow-novice/dist/src/coordination/v2/core/help-request-metrics.js.map +1 -0
- package/.claude-flow-novice/dist/src/coordination/v2/core/index.js +1 -0
- package/.claude-flow-novice/dist/src/coordination/v2/core/index.js.map +1 -1
- package/.claude-flow-novice/dist/src/coordination/v2/core/message-broker.js +365 -6
- package/.claude-flow-novice/dist/src/coordination/v2/core/message-broker.js.map +1 -1
- package/.claude-flow-novice/dist/src/coordination/v2/core/resource-manager-safe.js +478 -0
- package/.claude-flow-novice/dist/src/coordination/v2/core/resource-manager-safe.js.map +1 -0
- package/.claude-flow-novice/dist/src/coordination/v2/core/state-machine-config.js +5 -2
- package/.claude-flow-novice/dist/src/coordination/v2/core/state-machine-config.js.map +1 -1
- package/.claude-flow-novice/dist/src/coordination/v2/core/state-machine.js +189 -0
- package/.claude-flow-novice/dist/src/coordination/v2/core/state-machine.js.map +1 -1
- package/.claude-flow-novice/dist/src/coordination/v2/deadlock/deadlock-detector.js +424 -0
- package/.claude-flow-novice/dist/src/coordination/v2/deadlock/deadlock-detector.js.map +1 -0
- package/.claude-flow-novice/dist/src/coordination/v2/deadlock/index.js +9 -0
- package/.claude-flow-novice/dist/src/coordination/v2/deadlock/index.js.map +1 -0
- package/.claude-flow-novice/dist/src/coordination/v2/deadlock/resource-manager.js +669 -0
- package/.claude-flow-novice/dist/src/coordination/v2/deadlock/resource-manager.js.map +1 -0
- package/.claude-flow-novice/dist/src/coordination/v2/dependency/artifact-storage.js +451 -0
- package/.claude-flow-novice/dist/src/coordination/v2/dependency/artifact-storage.js.map +1 -0
- package/.claude-flow-novice/dist/src/coordination/v2/dependency/cycle-detector.js +271 -0
- package/.claude-flow-novice/dist/src/coordination/v2/dependency/cycle-detector.js.map +1 -0
- package/.claude-flow-novice/dist/src/coordination/v2/dependency/dependency-graph.js +335 -0
- package/.claude-flow-novice/dist/src/coordination/v2/dependency/dependency-graph.js.map +1 -0
- package/.claude-flow-novice/dist/src/coordination/v2/dependency/dependency-manager.js +439 -0
- package/.claude-flow-novice/dist/src/coordination/v2/dependency/dependency-manager.js.map +1 -0
- package/.claude-flow-novice/dist/src/coordination/v2/dependency/dependency-request.js +92 -0
- package/.claude-flow-novice/dist/src/coordination/v2/dependency/dependency-request.js.map +1 -0
- package/.claude-flow-novice/dist/src/coordination/v2/dependency/index.js +21 -0
- package/.claude-flow-novice/dist/src/coordination/v2/dependency/index.js.map +1 -0
- package/.claude-flow-novice/dist/src/coordination/v2/dependency/topological-sort.js +223 -0
- package/.claude-flow-novice/dist/src/coordination/v2/dependency/topological-sort.js.map +1 -0
- package/.claude-flow-novice/dist/src/coordination/v2/help-system/help-coordinator.js +436 -0
- package/.claude-flow-novice/dist/src/coordination/v2/help-system/help-coordinator.js.map +1 -0
- package/.claude-flow-novice/dist/src/coordination/v2/help-system/help-matcher.js +278 -0
- package/.claude-flow-novice/dist/src/coordination/v2/help-system/help-matcher.js.map +1 -0
- package/.claude-flow-novice/dist/src/coordination/v2/help-system/help-request-handler.js +317 -0
- package/.claude-flow-novice/dist/src/coordination/v2/help-system/help-request-handler.js.map +1 -0
- package/.claude-flow-novice/dist/src/coordination/v2/help-system/help-request.js +273 -0
- package/.claude-flow-novice/dist/src/coordination/v2/help-system/help-request.js.map +1 -0
- package/.claude-flow-novice/dist/src/coordination/v2/help-system/index.js +15 -0
- package/.claude-flow-novice/dist/src/coordination/v2/help-system/index.js.map +1 -0
- package/.claude-flow-novice/dist/src/coordination/v2/help-system/waiting-agent-pool.js +512 -0
- package/.claude-flow-novice/dist/src/coordination/v2/help-system/waiting-agent-pool.js.map +1 -0
- package/.claude-flow-novice/dist/src/coordination/v2/index.js +6 -0
- package/.claude-flow-novice/dist/src/coordination/v2/index.js.map +1 -1
- package/.claude-flow-novice/dist/src/coordination/v2/integration/help-deadlock-integration.js +557 -0
- package/.claude-flow-novice/dist/src/coordination/v2/integration/help-deadlock-integration.js.map +1 -0
- package/.claude-flow-novice/dist/src/coordination/v2/integration/index.js +14 -0
- package/.claude-flow-novice/dist/src/coordination/v2/integration/index.js.map +1 -0
- package/.claude-flow-novice/dist/src/coordination/v2/integration/message-bus-completion-integration.example.js +212 -0
- package/.claude-flow-novice/dist/src/coordination/v2/integration/message-bus-completion-integration.example.js.map +1 -0
- package/.claude-flow-novice/dist/src/coordination/v2/integration/message-bus-completion-integration.js +552 -0
- package/.claude-flow-novice/dist/src/coordination/v2/integration/message-bus-completion-integration.js.map +1 -0
- package/.claude-flow-novice/dist/src/coordination/v2/memory/dependency-storage.js +367 -0
- package/.claude-flow-novice/dist/src/coordination/v2/memory/dependency-storage.js.map +1 -0
- package/.claude-flow-novice/dist/src/coordination/v2/memory/index.js +1 -0
- package/.claude-flow-novice/dist/src/coordination/v2/memory/index.js.map +1 -1
- package/.claude-flow-novice/dist/src/coordination/v2/messaging/channel.js +371 -0
- package/.claude-flow-novice/dist/src/coordination/v2/messaging/channel.js.map +1 -0
- package/.claude-flow-novice/dist/src/coordination/v2/messaging/channels/dependency-channel.js +355 -0
- package/.claude-flow-novice/dist/src/coordination/v2/messaging/channels/dependency-channel.js.map +1 -0
- package/.claude-flow-novice/dist/src/coordination/v2/messaging/channels/help-channel.js +424 -0
- package/.claude-flow-novice/dist/src/coordination/v2/messaging/channels/help-channel.js.map +1 -0
- package/.claude-flow-novice/dist/src/coordination/v2/messaging/channels/index.js +16 -0
- package/.claude-flow-novice/dist/src/coordination/v2/messaging/channels/index.js.map +1 -0
- package/.claude-flow-novice/dist/src/coordination/v2/messaging/channels/state-channel.js +295 -0
- package/.claude-flow-novice/dist/src/coordination/v2/messaging/channels/state-channel.js.map +1 -0
- package/.claude-flow-novice/dist/src/coordination/v2/messaging/channels/task-channel.js +411 -0
- package/.claude-flow-novice/dist/src/coordination/v2/messaging/channels/task-channel.js.map +1 -0
- package/.claude-flow-novice/dist/src/coordination/v2/messaging/index.js +14 -0
- package/.claude-flow-novice/dist/src/coordination/v2/messaging/index.js.map +1 -0
- package/.claude-flow-novice/dist/src/coordination/v2/messaging/message-bus.js +387 -0
- package/.claude-flow-novice/dist/src/coordination/v2/messaging/message-bus.js.map +1 -0
- package/.claude-flow-novice/dist/src/coordination/v2/messaging/message-persistence.js +589 -0
- package/.claude-flow-novice/dist/src/coordination/v2/messaging/message-persistence.js.map +1 -0
- package/.claude-flow-novice/dist/src/coordination/v2/messaging/message-router.js +444 -0
- package/.claude-flow-novice/dist/src/coordination/v2/messaging/message-router.js.map +1 -0
- package/.claude-flow-novice/dist/src/coordination/v2/sdk/checkpoint-manager.js +29 -8
- package/.claude-flow-novice/dist/src/coordination/v2/sdk/checkpoint-manager.js.map +1 -1
- package/.claude-flow-novice/dist/src/coordination/v2/sdk/help-coordinator.js +470 -0
- package/.claude-flow-novice/dist/src/coordination/v2/sdk/help-coordinator.js.map +1 -0
- package/.claude-flow-novice/dist/src/coordination/v2/sdk/hierarchical-background-integration.js +450 -0
- package/.claude-flow-novice/dist/src/coordination/v2/sdk/hierarchical-background-integration.js.map +1 -0
- package/.claude-flow-novice/dist/src/coordination/v2/sdk/index.js +5 -0
- package/.claude-flow-novice/dist/src/coordination/v2/sdk/index.js.map +1 -1
- package/.claude-flow-novice/dist/src/coordination/v2/sdk/multi-level-control.js +545 -0
- package/.claude-flow-novice/dist/src/coordination/v2/sdk/multi-level-control.js.map +1 -0
- package/.claude-flow-novice/dist/src/coordination/v2/sdk/query-controller.js +44 -0
- package/.claude-flow-novice/dist/src/coordination/v2/sdk/query-controller.js.map +1 -1
- package/.claude-flow-novice/dist/src/coordination/v2/sdk/query-message-integration.js +415 -0
- package/.claude-flow-novice/dist/src/coordination/v2/sdk/query-message-integration.js.map +1 -0
- package/.claude-flow-novice/dist/src/coordination/v2/sdk/session-pool-optimizer.js +615 -0
- package/.claude-flow-novice/dist/src/coordination/v2/sdk/session-pool-optimizer.js.map +1 -0
- package/.claude-flow-novice/dist/src/coordination/v2/security/payload-validator.js +259 -0
- package/.claude-flow-novice/dist/src/coordination/v2/security/payload-validator.js.map +1 -0
- package/.claude-flow-novice/dist/src/coordination/v2/transparency/index.js +17 -0
- package/.claude-flow-novice/dist/src/coordination/v2/transparency/index.js.map +1 -0
- package/.claude-flow-novice/dist/src/coordination/v2/transparency/transparency-integration.js +357 -0
- package/.claude-flow-novice/dist/src/coordination/v2/transparency/transparency-integration.js.map +1 -0
- package/.claude-flow-novice/dist/src/coordination/v2/transparency/transparency-system.js +679 -0
- package/.claude-flow-novice/dist/src/coordination/v2/transparency/transparency-system.js.map +1 -0
- package/.claude-flow-novice/dist/src/core/agent-manager.js +30 -0
- package/.claude-flow-novice/dist/src/core/agent-manager.js.map +1 -1
- package/.claude-flow-novice/dist/src/mcp/server.js +21 -2
- package/.claude-flow-novice/dist/src/mcp/server.js.map +1 -1
- package/.claude-flow-novice/dist/src/monitoring/apm/apm-integration.js +719 -0
- package/.claude-flow-novice/dist/src/monitoring/apm/apm-integration.js.map +1 -0
- package/.claude-flow-novice/dist/src/monitoring/apm/datadog-collector.js +363 -0
- package/.claude-flow-novice/dist/src/monitoring/apm/datadog-collector.js.map +1 -0
- package/.claude-flow-novice/dist/src/monitoring/apm/index.js +97 -0
- package/.claude-flow-novice/dist/src/monitoring/apm/index.js.map +1 -0
- package/.claude-flow-novice/dist/src/monitoring/apm/newrelic-collector.js +384 -0
- package/.claude-flow-novice/dist/src/monitoring/apm/newrelic-collector.js.map +1 -0
- package/.claude-flow-novice/dist/src/monitoring/apm/performance-optimizer.js +612 -0
- package/.claude-flow-novice/dist/src/monitoring/apm/performance-optimizer.js.map +1 -0
- package/.claude-flow-novice/dist/src/monitoring/metrics-collector.js +282 -0
- package/.claude-flow-novice/dist/src/monitoring/metrics-collector.js.map +1 -0
- package/.claude-flow-novice/dist/src/observability/metrics-counter.js +268 -0
- package/.claude-flow-novice/dist/src/observability/metrics-counter.js.map +1 -0
- package/.claude-flow-novice/dist/src/observability/metrics-storage.js +265 -0
- package/.claude-flow-novice/dist/src/observability/metrics-storage.js.map +1 -0
- package/.claude-flow-novice/dist/src/observability/telemetry.js +26 -0
- package/.claude-flow-novice/dist/src/observability/telemetry.js.map +1 -1
- package/.claude-flow-novice/dist/src/providers/tiered-router.js +64 -10
- package/.claude-flow-novice/dist/src/providers/tiered-router.js.map +1 -1
- package/.claude-flow-novice/dist/src/providers/zai-provider.js +196 -97
- package/.claude-flow-novice/dist/src/providers/zai-provider.js.map +1 -1
- package/.claude-flow-novice/dist/src/slash-commands/cfn-claude-sync.js +533 -0
- package/.claude-flow-novice/dist/src/slash-commands/index.js +5 -0
- package/.claude-flow-novice/dist/src/slash-commands/metrics-summary-class.js +74 -0
- package/.claude-flow-novice/dist/src/slash-commands/metrics-summary.js +335 -0
- package/.claude-flow-novice/dist/src/slash-commands/register-all-commands.js +12 -0
- package/.claude-flow-novice/dist/src/verification/checkpoint-compression-demo.js +96 -0
- package/.claude-flow-novice/dist/src/verification/checkpoint-compression-demo.js.map +1 -0
- package/.claude-flow-novice/dist/src/verification/checkpoint-compression.js +406 -0
- package/.claude-flow-novice/dist/src/verification/checkpoint-compression.js.map +1 -0
- package/.claude-flow-novice/dist/src/verification/checkpoint-manager.js +35 -5
- package/.claude-flow-novice/dist/src/verification/checkpoint-manager.js.map +1 -1
- package/.claude-flow-novice/dist/src/web/api/apm-routes.js +355 -0
- package/.claude-flow-novice/dist/src/web/api/apm-routes.js.map +1 -0
- package/.claude-flow-novice/dist/src/web/api/config/api-config.js +186 -0
- package/.claude-flow-novice/dist/src/web/api/config/api-config.js.map +1 -0
- package/.claude-flow-novice/dist/src/web/api/middleware/auth.js +205 -0
- package/.claude-flow-novice/dist/src/web/api/middleware/auth.js.map +1 -0
- package/.claude-flow-novice/dist/src/web/api/middleware/cache.js +262 -0
- package/.claude-flow-novice/dist/src/web/api/middleware/cache.js.map +1 -0
- package/.claude-flow-novice/dist/src/web/api/middleware/error-handler.js +250 -0
- package/.claude-flow-novice/dist/src/web/api/middleware/error-handler.js.map +1 -0
- package/.claude-flow-novice/dist/src/web/api/middleware/request-logger.js +217 -0
- package/.claude-flow-novice/dist/src/web/api/middleware/request-logger.js.map +1 -0
- package/.claude-flow-novice/dist/src/web/api/middleware/validation.js +325 -0
- package/.claude-flow-novice/dist/src/web/api/middleware/validation.js.map +1 -0
- package/.claude-flow-novice/dist/src/web/api/routes/events.js +465 -0
- package/.claude-flow-novice/dist/src/web/api/routes/events.js.map +1 -0
- package/.claude-flow-novice/dist/src/web/api/routes/hierarchy.js +302 -0
- package/.claude-flow-novice/dist/src/web/api/routes/hierarchy.js.map +1 -0
- package/.claude-flow-novice/dist/src/web/api/routes/index.js +14 -0
- package/.claude-flow-novice/dist/src/web/api/routes/index.js.map +1 -0
- package/.claude-flow-novice/dist/src/web/api/routes/metrics.js +561 -0
- package/.claude-flow-novice/dist/src/web/api/routes/metrics.js.map +1 -0
- package/.claude-flow-novice/dist/src/web/api/routes/status.js +450 -0
- package/.claude-flow-novice/dist/src/web/api/routes/status.js.map +1 -0
- package/.claude-flow-novice/dist/src/web/api/server.js +451 -0
- package/.claude-flow-novice/dist/src/web/api/server.js.map +1 -0
- package/.claude-flow-novice/dist/src/web/dashboard/hooks/useWebSocket.js +385 -0
- package/.claude-flow-novice/dist/src/web/dashboard/hooks/useWebSocket.js.map +1 -0
- package/.claude-flow-novice/dist/src/web/dashboard/index.js +87 -0
- package/.claude-flow-novice/dist/src/web/dashboard/index.js.map +1 -0
- package/.claude-flow-novice/dist/src/web/dashboard/types.js +6 -0
- package/.claude-flow-novice/dist/src/web/dashboard/types.js.map +1 -0
- package/.claude-flow-novice/dist/src/web/frontend/src/utils/security.js +425 -0
- package/.claude-flow-novice/dist/src/web/frontend/src/utils/security.js.map +1 -0
- package/.claude-flow-novice/dist/src/web/security/security-middleware.js +379 -0
- package/.claude-flow-novice/dist/src/web/security/security-middleware.js.map +1 -0
- package/.claude-flow-novice/dist/src/web/websocket/apm-websocket-handler.js +441 -0
- package/.claude-flow-novice/dist/src/web/websocket/apm-websocket-handler.js.map +1 -0
- package/.claude-flow-novice/dist/src/web/websocket/websocket-manager.js +255 -1
- package/.claude-flow-novice/dist/src/web/websocket/websocket-manager.js.map +1 -1
- package/.claude-flow-novice/metrics.db +0 -0
- package/.claude-flow-novice/metrics.db-shm +0 -0
- package/.claude-flow-novice/metrics.db-wal +0 -0
- package/AGENT_PERFORMANCE_GUIDELINES.md +88 -0
- package/CLAUDE.md +60 -3
- package/MEMORY_LEAK_ROOT_CAUSE.md +149 -0
- package/README.md +27 -0
- package/config/hooks/post-edit-pipeline.js +36 -2
- package/examples/metrics-counter-demo.ts +106 -0
- package/examples/persistent-metrics-demo.ts +83 -0
- package/examples/phase-5-multi-level-control.ts +282 -0
- package/examples/session-pool-optimizer-example.ts +311 -0
- package/package.json +18 -4
- package/scripts/check-routing-stats.cjs +122 -0
- package/scripts/monitor-loop.sh +65 -0
- package/scripts/monitor-memory.sh +47 -0
- package/scripts/monitor.py +43 -0
- package/scripts/pre-publish-validation.cjs +212 -0
- package/scripts/test-provider-routing.cjs +228 -0
- package/scripts/test-routing-telemetry.cjs +147 -0
- package/scripts/test-zai-10k.cjs +81 -0
- package/scripts/test-zai-api.cjs +191 -0
- package/scripts/test-zai-diagnostic.cjs +151 -0
- package/scripts/test-zai-final.cjs +128 -0
- package/scripts/test-zai-with-env.cjs +85 -0
- package/scripts/validate-coordination-cli.js +69 -0
- package/scripts/validate-coordination-toggle-integration.cjs +501 -0
- package/src/cli/simple-commands/init/templates/CLAUDE.md +29 -0
- package/src/observability/metrics-counter.ts +347 -0
- package/src/observability/metrics-storage.ts +356 -0
- package/src/observability/telemetry.ts +658 -0
- package/src/slash-commands/cfn-claude-sync.js +533 -0
- package/src/slash-commands/index.js +5 -0
- package/src/slash-commands/metrics-summary-class.js +74 -0
- package/src/slash-commands/metrics-summary.js +335 -0
- package/src/slash-commands/register-all-commands.js +12 -0
|
@@ -0,0 +1,425 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Security Utilities for Frontend Application
|
|
3
|
+
* Comprehensive security measures for XSS protection, input validation, and secure data handling
|
|
4
|
+
*/ // Content Security Policy helper
|
|
5
|
+
export const CSP_CONSTANTS = {
|
|
6
|
+
DEFAULT_SRC: "'self'",
|
|
7
|
+
SCRIPT_SRC: "'self' 'unsafe-inline' 'unsafe-eval'",
|
|
8
|
+
STYLE_SRC: "'self' 'unsafe-inline'",
|
|
9
|
+
IMG_SRC: "'self' data: https:",
|
|
10
|
+
CONNECT_SRC: "'self' ws: wss:",
|
|
11
|
+
FONT_SRC: "'self' data:",
|
|
12
|
+
OBJECT_SRC: "'none'",
|
|
13
|
+
MEDIA_SRC: "'self'",
|
|
14
|
+
FRAME_SRC: "'none'",
|
|
15
|
+
CHILD_SRC: "'none'",
|
|
16
|
+
WORKER_SRC: "'self'",
|
|
17
|
+
MANIFEST_SRC: "'self'",
|
|
18
|
+
UPGRADE_INSECURE_REQUESTS: true
|
|
19
|
+
};
|
|
20
|
+
// Security headers helper
|
|
21
|
+
export const addSecurityHeaders = (headers)=>{
|
|
22
|
+
return {
|
|
23
|
+
...headers,
|
|
24
|
+
'Content-Security-Policy': Object.entries(CSP_CONSTANTS).map(([key, value])=>{
|
|
25
|
+
const cspKey = key.replace('_', '-').toLowerCase();
|
|
26
|
+
return `${cspKey} ${Array.isArray(value) ? value.join(' ') : value}`;
|
|
27
|
+
}).join('; '),
|
|
28
|
+
'X-Content-Type-Options': 'nosniff',
|
|
29
|
+
'X-Frame-Options': 'DENY',
|
|
30
|
+
'X-XSS-Protection': '1; mode=block',
|
|
31
|
+
'Referrer-Policy': 'strict-origin-when-cross-origin',
|
|
32
|
+
'Permissions-Policy': 'geolocation=(), microphone=(), camera=(), payment=()',
|
|
33
|
+
'Strict-Transport-Security': 'max-age=31536000; includeSubDomains'
|
|
34
|
+
};
|
|
35
|
+
};
|
|
36
|
+
// Sanitization utilities
|
|
37
|
+
export class ContentSanitizer {
|
|
38
|
+
static allowedTags = [
|
|
39
|
+
'p',
|
|
40
|
+
'br',
|
|
41
|
+
'strong',
|
|
42
|
+
'em',
|
|
43
|
+
'u',
|
|
44
|
+
'ol',
|
|
45
|
+
'ul',
|
|
46
|
+
'li',
|
|
47
|
+
'h1',
|
|
48
|
+
'h2',
|
|
49
|
+
'h3',
|
|
50
|
+
'h4',
|
|
51
|
+
'h5',
|
|
52
|
+
'h6',
|
|
53
|
+
'blockquote',
|
|
54
|
+
'code',
|
|
55
|
+
'pre'
|
|
56
|
+
];
|
|
57
|
+
static allowedAttributes = {
|
|
58
|
+
'a': [
|
|
59
|
+
'href',
|
|
60
|
+
'title',
|
|
61
|
+
'target'
|
|
62
|
+
],
|
|
63
|
+
'img': [
|
|
64
|
+
'src',
|
|
65
|
+
'alt',
|
|
66
|
+
'title',
|
|
67
|
+
'width',
|
|
68
|
+
'height'
|
|
69
|
+
]
|
|
70
|
+
};
|
|
71
|
+
static dangerousPatterns = [
|
|
72
|
+
/javascript:/gi,
|
|
73
|
+
/data:(?!image\/)/gi,
|
|
74
|
+
/vbscript:/gi,
|
|
75
|
+
/on\w+\s*=/gi,
|
|
76
|
+
/<script/gi,
|
|
77
|
+
/<iframe/gi,
|
|
78
|
+
/<object/gi,
|
|
79
|
+
/<embed/gi,
|
|
80
|
+
/<link/gi,
|
|
81
|
+
/<meta/gi,
|
|
82
|
+
/@import/gi,
|
|
83
|
+
/expression\(/gi
|
|
84
|
+
];
|
|
85
|
+
static sanitizeHTML(html) {
|
|
86
|
+
let sanitized = html;
|
|
87
|
+
// Remove dangerous patterns
|
|
88
|
+
this.dangerousPatterns.forEach((pattern)=>{
|
|
89
|
+
sanitized = sanitized.replace(pattern, '');
|
|
90
|
+
});
|
|
91
|
+
// Basic HTML tag removal for now (will be enhanced with DOMPurify)
|
|
92
|
+
sanitized = sanitized.replace(/<[^>]*>/g, '');
|
|
93
|
+
// Encode special characters
|
|
94
|
+
sanitized = this.encodeHTMLEntities(sanitized);
|
|
95
|
+
return sanitized;
|
|
96
|
+
}
|
|
97
|
+
static sanitizeText(text) {
|
|
98
|
+
return this.encodeHTMLEntities(text).replace(/[\x00-\x1F\x7F]/g, '').substring(0, 10000).trim();
|
|
99
|
+
}
|
|
100
|
+
static sanitizeURL(url) {
|
|
101
|
+
try {
|
|
102
|
+
const parsed = new URL(url, window.location.origin);
|
|
103
|
+
// Only allow http, https protocols
|
|
104
|
+
if (![
|
|
105
|
+
'http:',
|
|
106
|
+
'https:'
|
|
107
|
+
].includes(parsed.protocol)) {
|
|
108
|
+
return '#';
|
|
109
|
+
}
|
|
110
|
+
// Remove dangerous parts
|
|
111
|
+
parsed.hash = '';
|
|
112
|
+
parsed.username = '';
|
|
113
|
+
parsed.password = '';
|
|
114
|
+
return parsed.toString();
|
|
115
|
+
} catch {
|
|
116
|
+
return '#';
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
static encodeHTMLEntities(text) {
|
|
120
|
+
const entityMap = {
|
|
121
|
+
'&': '&',
|
|
122
|
+
'<': '<',
|
|
123
|
+
'>': '>',
|
|
124
|
+
'"': '"',
|
|
125
|
+
"'": ''',
|
|
126
|
+
'/': '/'
|
|
127
|
+
};
|
|
128
|
+
return text.replace(/[&<>"'/]/g, (char)=>entityMap[char] || char);
|
|
129
|
+
}
|
|
130
|
+
static validateCSS(css) {
|
|
131
|
+
const dangerousCSS = [
|
|
132
|
+
/javascript:/gi,
|
|
133
|
+
/expression\(/gi,
|
|
134
|
+
/@import/gi,
|
|
135
|
+
/binding\(/gi,
|
|
136
|
+
/behavior\s*:/gi
|
|
137
|
+
];
|
|
138
|
+
return !dangerousCSS.some((pattern)=>pattern.test(css));
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
// Input validation utilities
|
|
142
|
+
export class InputValidator {
|
|
143
|
+
static patterns = {
|
|
144
|
+
email: /^[^\s@]+@[^\s@]+\.[^\s@]+$/,
|
|
145
|
+
url: /^https?:\/\/.+/,
|
|
146
|
+
phone: /^\+?[\d\s\-\(\)]+$/,
|
|
147
|
+
alphanumeric: /^[a-zA-Z0-9]+$/,
|
|
148
|
+
numeric: /^[0-9]*\.?[0-9]+$/,
|
|
149
|
+
safeFilename: /^[a-zA-Z0-9._-]+$/
|
|
150
|
+
};
|
|
151
|
+
static validateEmail(email) {
|
|
152
|
+
return this.patterns.email.test(email) && email.length <= 254;
|
|
153
|
+
}
|
|
154
|
+
static validateURL(url) {
|
|
155
|
+
return this.patterns.url.test(url) && url.length <= 2048;
|
|
156
|
+
}
|
|
157
|
+
static validatePhone(phone) {
|
|
158
|
+
return this.patterns.phone.test(phone) && phone.length <= 20;
|
|
159
|
+
}
|
|
160
|
+
static validateLength(input, min, max) {
|
|
161
|
+
return input.length >= min && input.length <= max;
|
|
162
|
+
}
|
|
163
|
+
static validateNoSQL(input) {
|
|
164
|
+
const noSQLPatterns = [
|
|
165
|
+
/\$where/gi,
|
|
166
|
+
/\$gt/gi,
|
|
167
|
+
/\$lt/gi,
|
|
168
|
+
/\$ne/gi,
|
|
169
|
+
/\$in/gi,
|
|
170
|
+
/\$nin/gi,
|
|
171
|
+
/\{.*\$.*\}/gi,
|
|
172
|
+
/javascript:/gi,
|
|
173
|
+
/eval\(/gi
|
|
174
|
+
];
|
|
175
|
+
return !noSQLPatterns.some((pattern)=>pattern.test(input));
|
|
176
|
+
}
|
|
177
|
+
static validateSQL(input) {
|
|
178
|
+
const sqlPatterns = [
|
|
179
|
+
/drop\s+table/gi,
|
|
180
|
+
/delete\s+from/gi,
|
|
181
|
+
/insert\s+into/gi,
|
|
182
|
+
/update\s+.*set/gi,
|
|
183
|
+
/union\s+select/gi,
|
|
184
|
+
/exec\s*\(/gi,
|
|
185
|
+
/script\s*>/gi,
|
|
186
|
+
/--/gi,
|
|
187
|
+
/\/\*/gi,
|
|
188
|
+
/\*\//gi
|
|
189
|
+
];
|
|
190
|
+
return !sqlPatterns.some((pattern)=>pattern.test(input));
|
|
191
|
+
}
|
|
192
|
+
static sanitizeFilename(filename) {
|
|
193
|
+
return filename.replace(/[^a-zA-Z0-9._-]/g, '_').replace(/_{2,}/g, '_').toLowerCase().substring(0, 255);
|
|
194
|
+
}
|
|
195
|
+
}
|
|
196
|
+
// CSRF protection utilities
|
|
197
|
+
export class CSRFProtection {
|
|
198
|
+
static token = null;
|
|
199
|
+
static generateToken() {
|
|
200
|
+
const token = Array.from(crypto.getRandomValues(new Uint8Array(32))).map((b)=>b.toString(16).padStart(2, '0')).join('');
|
|
201
|
+
this.token = token;
|
|
202
|
+
this.storeToken(token);
|
|
203
|
+
return token;
|
|
204
|
+
}
|
|
205
|
+
static getToken() {
|
|
206
|
+
if (!this.token) {
|
|
207
|
+
this.token = this.retrieveToken();
|
|
208
|
+
}
|
|
209
|
+
return this.token;
|
|
210
|
+
}
|
|
211
|
+
static validateToken(token) {
|
|
212
|
+
const storedToken = this.getToken();
|
|
213
|
+
return storedToken !== null && storedToken === token;
|
|
214
|
+
}
|
|
215
|
+
static storeToken(token) {
|
|
216
|
+
try {
|
|
217
|
+
sessionStorage.setItem('csrf-token', token);
|
|
218
|
+
} catch (error) {
|
|
219
|
+
console.warn('Could not store CSRF token:', error);
|
|
220
|
+
}
|
|
221
|
+
}
|
|
222
|
+
static retrieveToken() {
|
|
223
|
+
try {
|
|
224
|
+
return sessionStorage.getItem('csrf-token');
|
|
225
|
+
} catch (error) {
|
|
226
|
+
console.warn('Could not retrieve CSRF token:', error);
|
|
227
|
+
return null;
|
|
228
|
+
}
|
|
229
|
+
}
|
|
230
|
+
static addToFormData(formData) {
|
|
231
|
+
const token = this.getToken();
|
|
232
|
+
if (token) {
|
|
233
|
+
formData.append('csrf-token', token);
|
|
234
|
+
}
|
|
235
|
+
}
|
|
236
|
+
static addToHeaders(headers) {
|
|
237
|
+
const token = this.getToken();
|
|
238
|
+
if (token) {
|
|
239
|
+
headers['X-CSRF-Token'] = token;
|
|
240
|
+
}
|
|
241
|
+
}
|
|
242
|
+
}
|
|
243
|
+
// Secure storage utilities
|
|
244
|
+
export class SecureStorage {
|
|
245
|
+
static encryptionKey = 'claude-flow-secure-storage';
|
|
246
|
+
static setItem(key, value, useEncryption = true) {
|
|
247
|
+
try {
|
|
248
|
+
const serializedValue = JSON.stringify(value);
|
|
249
|
+
const finalValue = useEncryption ? this.simpleEncrypt(serializedValue) : serializedValue;
|
|
250
|
+
localStorage.setItem(key, finalValue);
|
|
251
|
+
} catch (error) {
|
|
252
|
+
console.warn('Could not store item:', error);
|
|
253
|
+
}
|
|
254
|
+
}
|
|
255
|
+
static getItem(key, useEncryption = true) {
|
|
256
|
+
try {
|
|
257
|
+
const storedValue = localStorage.getItem(key);
|
|
258
|
+
if (!storedValue) return null;
|
|
259
|
+
const decryptedValue = useEncryption ? this.simpleDecrypt(storedValue) : storedValue;
|
|
260
|
+
return JSON.parse(decryptedValue);
|
|
261
|
+
} catch (error) {
|
|
262
|
+
console.warn('Could not retrieve item:', error);
|
|
263
|
+
return null;
|
|
264
|
+
}
|
|
265
|
+
}
|
|
266
|
+
static removeItem(key) {
|
|
267
|
+
try {
|
|
268
|
+
localStorage.removeItem(key);
|
|
269
|
+
} catch (error) {
|
|
270
|
+
console.warn('Could not remove item:', error);
|
|
271
|
+
}
|
|
272
|
+
}
|
|
273
|
+
static clear() {
|
|
274
|
+
try {
|
|
275
|
+
localStorage.clear();
|
|
276
|
+
} catch (error) {
|
|
277
|
+
console.warn('Could not clear storage:', error);
|
|
278
|
+
}
|
|
279
|
+
}
|
|
280
|
+
static simpleEncrypt(text) {
|
|
281
|
+
// Simple XOR encryption (not production-grade, but better than plaintext)
|
|
282
|
+
const key = this.encryptionKey;
|
|
283
|
+
let result = '';
|
|
284
|
+
for(let i = 0; i < text.length; i++){
|
|
285
|
+
result += String.fromCharCode(text.charCodeAt(i) ^ key.charCodeAt(i % key.length));
|
|
286
|
+
}
|
|
287
|
+
return btoa(result);
|
|
288
|
+
}
|
|
289
|
+
static simpleDecrypt(encryptedText) {
|
|
290
|
+
try {
|
|
291
|
+
const key = this.encryptionKey;
|
|
292
|
+
const decoded = atob(encryptedText);
|
|
293
|
+
let result = '';
|
|
294
|
+
for(let i = 0; i < decoded.length; i++){
|
|
295
|
+
result += String.fromCharCode(decoded.charCodeAt(i) ^ key.charCodeAt(i % key.length));
|
|
296
|
+
}
|
|
297
|
+
return result;
|
|
298
|
+
} catch (error) {
|
|
299
|
+
return '';
|
|
300
|
+
}
|
|
301
|
+
}
|
|
302
|
+
}
|
|
303
|
+
// Security event logging
|
|
304
|
+
export class SecurityLogger {
|
|
305
|
+
static logEndpoint = '/api/security-events';
|
|
306
|
+
static logSecurityEvent(event) {
|
|
307
|
+
const securityEvent = {
|
|
308
|
+
...event,
|
|
309
|
+
timestamp: event.timestamp || Date.now(),
|
|
310
|
+
userAgent: navigator.userAgent,
|
|
311
|
+
url: window.location.href,
|
|
312
|
+
sessionId: this.getSessionId()
|
|
313
|
+
};
|
|
314
|
+
// Log to console in development
|
|
315
|
+
if (process.env.NODE_ENV === 'development') {
|
|
316
|
+
console.warn('Security Event:', securityEvent);
|
|
317
|
+
}
|
|
318
|
+
// Store locally for debugging
|
|
319
|
+
this.storeLocalEvent(securityEvent);
|
|
320
|
+
// Send to server (in production)
|
|
321
|
+
if (process.env.NODE_ENV === 'production') {
|
|
322
|
+
this.sendToServer(securityEvent);
|
|
323
|
+
}
|
|
324
|
+
}
|
|
325
|
+
static getSessionId() {
|
|
326
|
+
let sessionId = sessionStorage.getItem('security-session-id');
|
|
327
|
+
if (!sessionId) {
|
|
328
|
+
sessionId = `session-${Date.now()}-${Math.random().toString(36).substr(2, 9)}`;
|
|
329
|
+
sessionStorage.setItem('security-session-id', sessionId);
|
|
330
|
+
}
|
|
331
|
+
return sessionId;
|
|
332
|
+
}
|
|
333
|
+
static storeLocalEvent(event) {
|
|
334
|
+
try {
|
|
335
|
+
const events = JSON.parse(localStorage.getItem('security-events') || '[]');
|
|
336
|
+
events.push(event);
|
|
337
|
+
// Keep only last 100 events
|
|
338
|
+
if (events.length > 100) {
|
|
339
|
+
events.splice(0, events.length - 100);
|
|
340
|
+
}
|
|
341
|
+
localStorage.setItem('security-events', JSON.stringify(events));
|
|
342
|
+
} catch (error) {
|
|
343
|
+
console.warn('Could not store security event:', error);
|
|
344
|
+
}
|
|
345
|
+
}
|
|
346
|
+
static async sendToServer(event) {
|
|
347
|
+
try {
|
|
348
|
+
await fetch(this.logEndpoint, {
|
|
349
|
+
method: 'POST',
|
|
350
|
+
headers: {
|
|
351
|
+
'Content-Type': 'application/json'
|
|
352
|
+
},
|
|
353
|
+
body: JSON.stringify(event)
|
|
354
|
+
});
|
|
355
|
+
} catch (error) {
|
|
356
|
+
console.warn('Could not send security event to server:', error);
|
|
357
|
+
}
|
|
358
|
+
}
|
|
359
|
+
}
|
|
360
|
+
// Rate limiting utilities
|
|
361
|
+
export class RateLimiter {
|
|
362
|
+
static attempts = new Map();
|
|
363
|
+
static isAllowed(identifier, maxAttempts = 5, windowMs = 60000) {
|
|
364
|
+
const now = Date.now();
|
|
365
|
+
const attempts = this.attempts.get(identifier) || [];
|
|
366
|
+
// Remove old attempts outside the window
|
|
367
|
+
const validAttempts = attempts.filter((timestamp)=>now - timestamp < windowMs);
|
|
368
|
+
if (validAttempts.length >= maxAttempts) {
|
|
369
|
+
SecurityLogger.logSecurityEvent({
|
|
370
|
+
type: 'unauthorized_access',
|
|
371
|
+
severity: 'medium',
|
|
372
|
+
details: {
|
|
373
|
+
action: 'rate_limit_exceeded',
|
|
374
|
+
identifier,
|
|
375
|
+
attempts: validAttempts.length
|
|
376
|
+
}
|
|
377
|
+
});
|
|
378
|
+
return false;
|
|
379
|
+
}
|
|
380
|
+
// Add current attempt
|
|
381
|
+
validAttempts.push(now);
|
|
382
|
+
this.attempts.set(identifier, validAttempts);
|
|
383
|
+
return true;
|
|
384
|
+
}
|
|
385
|
+
static getRemainingAttempts(identifier, maxAttempts = 5, windowMs = 60000) {
|
|
386
|
+
const now = Date.now();
|
|
387
|
+
const attempts = this.attempts.get(identifier) || [];
|
|
388
|
+
const validAttempts = attempts.filter((timestamp)=>now - timestamp < windowMs);
|
|
389
|
+
return Math.max(0, maxAttempts - validAttempts.length);
|
|
390
|
+
}
|
|
391
|
+
static reset(identifier) {
|
|
392
|
+
this.attempts.delete(identifier);
|
|
393
|
+
}
|
|
394
|
+
}
|
|
395
|
+
// Security configuration
|
|
396
|
+
export const SECURITY_CONFIG = {
|
|
397
|
+
// Input limits
|
|
398
|
+
MAX_INPUT_LENGTH: 10000,
|
|
399
|
+
MAX_FILENAME_LENGTH: 255,
|
|
400
|
+
MAX_URL_LENGTH: 2048,
|
|
401
|
+
// Rate limiting
|
|
402
|
+
RATE_LIMIT: {
|
|
403
|
+
LOGIN_ATTEMPTS: 5,
|
|
404
|
+
LOGIN_WINDOW: 15 * 60 * 1000,
|
|
405
|
+
API_REQUESTS: 100,
|
|
406
|
+
API_WINDOW: 60 * 1000 // 1 minute
|
|
407
|
+
},
|
|
408
|
+
// Password requirements
|
|
409
|
+
PASSWORD: {
|
|
410
|
+
MIN_LENGTH: 8,
|
|
411
|
+
MAX_LENGTH: 128,
|
|
412
|
+
REQUIRE_UPPERCASE: true,
|
|
413
|
+
REQUIRE_LOWERCASE: true,
|
|
414
|
+
REQUIRE_NUMBERS: true,
|
|
415
|
+
REQUIRE_SPECIAL_CHARS: true
|
|
416
|
+
},
|
|
417
|
+
// Session settings
|
|
418
|
+
SESSION: {
|
|
419
|
+
TIMEOUT: 30 * 60 * 1000,
|
|
420
|
+
WARNING_TIMEOUT: 5 * 60 * 1000,
|
|
421
|
+
RENEWAL_THRESHOLD: 5 * 60 * 1000 // Renew if less than 5 minutes left
|
|
422
|
+
}
|
|
423
|
+
};
|
|
424
|
+
|
|
425
|
+
//# sourceMappingURL=security.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../../../../src/web/frontend/src/utils/security.ts"],"names":["CSP_CONSTANTS","DEFAULT_SRC","SCRIPT_SRC","STYLE_SRC","IMG_SRC","CONNECT_SRC","FONT_SRC","OBJECT_SRC","MEDIA_SRC","FRAME_SRC","CHILD_SRC","WORKER_SRC","MANIFEST_SRC","UPGRADE_INSECURE_REQUESTS","addSecurityHeaders","headers","Object","entries","map","key","value","cspKey","replace","toLowerCase","Array","isArray","join","ContentSanitizer","allowedTags","allowedAttributes","dangerousPatterns","sanitizeHTML","html","sanitized","forEach","pattern","encodeHTMLEntities","sanitizeText","text","substring","trim","sanitizeURL","url","parsed","URL","window","location","origin","includes","protocol","hash","username","password","toString","entityMap","char","validateCSS","css","dangerousCSS","some","test","InputValidator","patterns","email","phone","alphanumeric","numeric","safeFilename","validateEmail","length","validateURL","validatePhone","validateLength","input","min","max","validateNoSQL","noSQLPatterns","validateSQL","sqlPatterns","sanitizeFilename","filename","CSRFProtection","token","generateToken","from","crypto","getRandomValues","Uint8Array","b","padStart","storeToken","getToken","retrieveToken","validateToken","storedToken","sessionStorage","setItem","error","console","warn","getItem","addToFormData","formData","append","addToHeaders","SecureStorage","encryptionKey","useEncryption","serializedValue","JSON","stringify","finalValue","simpleEncrypt","localStorage","storedValue","decryptedValue","simpleDecrypt","parse","removeItem","clear","result","i","String","fromCharCode","charCodeAt","btoa","encryptedText","decoded","atob","SecurityLogger","logEndpoint","logSecurityEvent","event","securityEvent","timestamp","Date","now","userAgent","navigator","href","sessionId","getSessionId","process","env","NODE_ENV","storeLocalEvent","sendToServer","Math","random","substr","events","push","splice","fetch","method","body","RateLimiter","attempts","Map","isAllowed","identifier","maxAttempts","windowMs","get","validAttempts","filter","type","severity","details","action","set","getRemainingAttempts","reset","delete","SECURITY_CONFIG","MAX_INPUT_LENGTH","MAX_FILENAME_LENGTH","MAX_URL_LENGTH","RATE_LIMIT","LOGIN_ATTEMPTS","LOGIN_WINDOW","API_REQUESTS","API_WINDOW","PASSWORD","MIN_LENGTH","MAX_LENGTH","REQUIRE_UPPERCASE","REQUIRE_LOWERCASE","REQUIRE_NUMBERS","REQUIRE_SPECIAL_CHARS","SESSION","TIMEOUT","WARNING_TIMEOUT","RENEWAL_THRESHOLD"],"mappings":"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"}
|