claude-flow-novice 2.9.0 → 2.10.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/cfn-dev-team/CLAUDE.md +1086 -0
- package/.claude/agents/cfn-dev-team/README.md +116 -0
- package/.claude/agents/cfn-dev-team/architecture/api-designer-persona.md +149 -0
- package/.claude/agents/cfn-dev-team/architecture/base-template-generator.md +196 -0
- package/.claude/agents/cfn-dev-team/architecture/goal-planner.md +183 -0
- package/.claude/agents/cfn-dev-team/architecture/planner.md +182 -0
- package/.claude/agents/cfn-dev-team/architecture/system-architect.md +162 -0
- package/.claude/agents/cfn-dev-team/coordinators/cfn-frontend-coordinator.md +540 -0
- package/.claude/agents/cfn-dev-team/coordinators/cfn-v3-coordinator.md +20 -14
- package/.claude/agents/cfn-dev-team/coordinators/consensus-builder.md +167 -0
- package/.claude/agents/cfn-dev-team/dev-ops/devops-engineer.md +148 -0
- package/.claude/agents/cfn-dev-team/dev-ops/github-commit-agent.md +118 -0
- package/.claude/agents/cfn-dev-team/dev-ops/kubernetes-specialist.md +540 -0
- package/.claude/agents/cfn-dev-team/developers/backend-dev.md +20 -0
- package/.claude/agents/cfn-dev-team/developers/data/data-engineer.md +585 -0
- package/.claude/agents/cfn-dev-team/developers/database/database-architect.md +276 -0
- package/.claude/agents/cfn-dev-team/developers/dev-backend-api.md +147 -0
- package/.claude/agents/cfn-dev-team/developers/frontend/mobile-dev.md +218 -0
- package/.claude/agents/cfn-dev-team/developers/{react-frontend-engineer.md → frontend/react-frontend-engineer.md} +53 -5
- package/.claude/agents/cfn-dev-team/developers/frontend/spec-mobile-react-native.md +199 -0
- package/.claude/agents/cfn-dev-team/developers/graphql-specialist.md +615 -0
- package/.claude/agents/cfn-dev-team/developers/rust-developer.md +174 -0
- package/.claude/agents/cfn-dev-team/documentation/README-VALIDATION.md +243 -0
- package/.claude/agents/cfn-dev-team/documentation/agent-type-guidelines.md +465 -0
- package/.claude/agents/cfn-dev-team/documentation/api-docs.md +103 -0
- package/.claude/agents/cfn-dev-team/documentation/docs-api-openapi.md +98 -0
- package/.claude/agents/cfn-dev-team/documentation/pseudocode.md +159 -0
- package/.claude/agents/cfn-dev-team/documentation/specification.md +157 -0
- package/.claude/agents/cfn-dev-team/product-owners/accessibility-advocate-persona.md +109 -0
- package/.claude/agents/cfn-dev-team/{coordinators → product-owners}/cto-agent.md +8 -6
- package/.claude/agents/cfn-dev-team/product-owners/power-user-persona.md +190 -0
- package/.claude/agents/cfn-dev-team/{coordinators → product-owners}/product-owner.md +85 -59
- package/.claude/agents/cfn-dev-team/reviewers/quality/analyze-code-quality.md +141 -0
- package/.claude/agents/cfn-dev-team/reviewers/quality/code-analyzer.md +200 -0
- package/.claude/agents/cfn-dev-team/reviewers/quality/cyclomatic-complexity-reducer.md +321 -0
- package/.claude/agents/cfn-dev-team/reviewers/quality/perf-analyzer.md +238 -0
- package/.claude/agents/cfn-dev-team/reviewers/quality/performance-benchmarker.md +101 -0
- package/.claude/agents/cfn-dev-team/reviewers/quality/quality-metrics.md +375 -0
- package/.claude/agents/cfn-dev-team/reviewers/quality/security-specialist.md +193 -0
- package/.claude/agents/cfn-dev-team/reviewers/reviewer.md +39 -0
- package/.claude/agents/cfn-dev-team/testers/interaction-tester.md +31 -0
- package/.claude/agents/cfn-dev-team/testers/load-testing-specialist.md +469 -0
- package/.claude/agents/cfn-dev-team/testers/playwright-tester.md +24 -0
- package/.claude/agents/cfn-dev-team/testers/tester.md +20 -0
- package/.claude/agents/cfn-dev-team/utility/agent-builder.md +151 -0
- package/.claude/agents/cfn-dev-team/utility/analyst.md +178 -0
- package/.claude/agents/cfn-dev-team/utility/claude-code-expert.md +1043 -0
- package/.claude/agents/cfn-dev-team/utility/code-booster.md +139 -0
- package/.claude/agents/cfn-dev-team/utility/context-curator.md +99 -0
- package/.claude/agents/cfn-dev-team/{developers → utility}/researcher.md +6 -4
- package/.claude/commands/cfn/CFN_LOOP_FRONTEND.md +741 -0
- package/.claude/commands/cfn/CFN_LOOP_TASK_MODE.md +353 -0
- package/.claude/commands/cfn/cfn-loop-frontend.md +555 -0
- package/.claude/commands/cfn/cfn-loop.md +168 -7
- package/{CFN-CLAUDE.md → .claude/root-claude-distribute/CFN-CLAUDE.md} +23 -3
- package/.claude/skills/cfn-ace-system/SKILL.md +364 -0
- package/.claude/skills/cfn-ace-system/add-bullet.sh +145 -0
- package/.claude/skills/cfn-ace-system/analyze-anti-pattern-effectiveness.sh +56 -0
- package/.claude/skills/cfn-ace-system/classify-task.sh +18 -0
- package/.claude/skills/cfn-ace-system/export-ace-metrics.sh +48 -0
- package/.claude/skills/cfn-ace-system/extract-tags.sh +385 -0
- package/.claude/skills/cfn-ace-system/format-negative-context.sh +180 -0
- package/.claude/skills/cfn-ace-system/init-indexes.sql +160 -0
- package/.claude/skills/cfn-ace-system/invoke-context-curate.sh +192 -0
- package/.claude/skills/cfn-ace-system/invoke-context-inject.sh +361 -0
- package/.claude/skills/cfn-ace-system/invoke-context-query.sh +139 -0
- package/.claude/skills/cfn-ace-system/invoke-context-reflect.sh +343 -0
- package/.claude/skills/cfn-ace-system/invoke-context-stats.sh +227 -0
- package/.claude/skills/cfn-ace-system/log-merge.sh +67 -0
- package/.claude/skills/cfn-ace-system/monitor-injection-performance.sh +138 -0
- package/.claude/skills/cfn-ace-system/optimize-injection-pipeline.sh +169 -0
- package/.claude/skills/cfn-ace-system/query-anti-patterns.sh +276 -0
- package/.claude/skills/cfn-ace-system/query-contexts.sh +150 -0
- package/.claude/skills/cfn-ace-system/query-reflections.sh +35 -0
- package/.claude/skills/cfn-ace-system/schema/001-create-context-reflections.sql +237 -0
- package/.claude/skills/cfn-ace-system/schema/README.md +723 -0
- package/.claude/skills/cfn-ace-system/schema/SCHEMA_DESIGN_SUMMARY.md +564 -0
- package/.claude/skills/cfn-ace-system/schema/populate-test-data-simple.sh +62 -0
- package/.claude/skills/cfn-ace-system/schema/populate-test-data.sh +247 -0
- package/.claude/skills/cfn-ace-system/schema/run-migration.sh +231 -0
- package/.claude/skills/cfn-ace-system/schema/validate-schema.sql +280 -0
- package/.claude/skills/cfn-ace-system/score-relevance-adapter.sh +138 -0
- package/.claude/skills/cfn-ace-system/score-relevance.sh +253 -0
- package/.claude/skills/cfn-ace-system/sprint-7-lessons.json +46 -0
- package/.claude/skills/cfn-ace-system/store-reflection.sh +46 -0
- package/.claude/skills/cfn-ace-system/test-ace-skill.sh +312 -0
- package/.claude/skills/cfn-ace-system/track-ab-test.sh +42 -0
- package/.claude/skills/cfn-ace-system/update-reflection.sh +41 -0
- package/.claude/skills/cfn-agent-discovery/SKILL.md +40 -0
- package/.claude/skills/cfn-agent-discovery/agents-registry-clean.json +0 -0
- package/.claude/skills/cfn-agent-discovery/agents-registry-fixed.json +19 -0
- package/.claude/skills/cfn-agent-discovery/agents-registry.json +718 -0
- package/.claude/skills/cfn-agent-discovery/discover-agents.py +184 -0
- package/.claude/skills/cfn-agent-discovery/discover-agents.sh +87 -0
- package/.claude/skills/cfn-agent-discovery/invoke-registry.sh +11 -0
- package/.claude/skills/cfn-agent-discovery/temp_script.py +0 -0
- package/.claude/skills/cfn-agent-execution/execute-agent.sh +126 -0
- package/.claude/skills/cfn-agent-output-processing/SKILL.md +359 -0
- package/.claude/skills/cfn-agent-selector/SKILL.md +90 -0
- package/.claude/skills/cfn-agent-selector/select-agents.sh +112 -0
- package/.claude/skills/cfn-agent-spawning/SKILL.md +135 -0
- package/.claude/skills/cfn-agent-spawning/agent-selection-guide.md +814 -0
- package/.claude/skills/cfn-agent-spawning/check-dependencies.sh +30 -0
- package/.claude/skills/cfn-agent-spawning/spawn-agent.sh +263 -0
- package/.claude/skills/cfn-agent-spawning/spawn-templates.sh +613 -0
- package/.claude/skills/cfn-analytics/description-refinement-guide.md +164 -0
- package/.claude/skills/cfn-analytics/log-skill-invocation.js +122 -0
- package/.claude/skills/cfn-analytics/run-production-criteria-tests.sh +126 -0
- package/.claude/skills/cfn-analytics/skill-analytics-dashboard.js +113 -0
- package/.claude/skills/cfn-analytics/skill-invocation-hook.sh +28 -0
- package/.claude/skills/cfn-analytics/skill-invocations.sql +58 -0
- package/.claude/skills/cfn-analytics/test-corpus.json +32 -0
- package/.claude/skills/cfn-analytics/test-data-generator.js +115 -0
- package/.claude/skills/cfn-analytics/test-manual-override-rate.js +285 -0
- package/.claude/skills/cfn-analytics/validate-skill-selection.js +188 -0
- package/.claude/skills/cfn-config-management/SKILL.md +34 -0
- package/.claude/skills/cfn-config-management/check-dependencies.sh +56 -0
- package/.claude/skills/cfn-config-management/config.json +32 -0
- package/.claude/skills/cfn-config-management/manage-config.sh +113 -0
- package/.claude/skills/cfn-event-bus/SKILL.md +412 -0
- package/.claude/skills/cfn-event-bus/config.json +111 -0
- package/.claude/skills/cfn-event-bus/eventbus-wrapper.cjs +69 -0
- package/.claude/skills/cfn-event-bus/invoke-event-publish.sh +147 -0
- package/.claude/skills/cfn-event-bus/invoke-event-subscribe.sh +171 -0
- package/.claude/skills/cfn-event-bus/invoke-lifecycle-track.sh +201 -0
- package/.claude/skills/cfn-event-bus/test-event-bus.sh +280 -0
- package/.claude/skills/cfn-fleet-manager/SKILL.md +412 -0
- package/.claude/skills/cfn-fleet-manager/config.json +60 -0
- package/.claude/skills/cfn-fleet-manager/invoke-fleet-allocate.sh +182 -0
- package/.claude/skills/cfn-fleet-manager/invoke-fleet-balance.sh +239 -0
- package/.claude/skills/cfn-fleet-manager/invoke-fleet-metrics.sh +193 -0
- package/.claude/skills/cfn-fleet-manager/invoke-fleet-register.sh +124 -0
- package/.claude/skills/cfn-fleet-manager/test-fleet-manager.sh +345 -0
- package/.claude/skills/cfn-hook-pipeline/SKILL.md +148 -0
- package/.claude/skills/cfn-hook-pipeline/auto-resolve.sh +66 -0
- package/.claude/skills/cfn-hook-pipeline/check-dependencies.sh +40 -0
- package/.claude/skills/cfn-hook-pipeline/feedback-resolver.sh +452 -0
- package/.claude/skills/cfn-hook-pipeline/post-edit-handler.sh +154 -0
- package/.claude/skills/cfn-hook-pipeline/security-scan.json +60 -0
- package/.claude/skills/cfn-hook-pipeline/security-scanner.sh +121 -0
- package/.claude/skills/cfn-hook-pipeline/test-root-warning-resolution.sh +148 -0
- package/.claude/skills/cfn-hybrid-routing/SKILL.md +46 -0
- package/.claude/skills/cfn-hybrid-routing/check-dependencies.sh +52 -0
- package/.claude/skills/cfn-hybrid-routing/config.json +26 -0
- package/.claude/skills/cfn-hybrid-routing/spawn-worker.sh +44 -0
- package/.claude/skills/cfn-loop-orchestration/SKILL.md +299 -0
- package/.claude/skills/cfn-loop-orchestration/helpers/auto-tune-timeouts.sh +228 -0
- package/.claude/skills/cfn-loop-orchestration/helpers/consensus.sh +84 -0
- package/.claude/skills/cfn-loop-orchestration/helpers/context-injection.sh +142 -0
- package/.claude/skills/cfn-loop-orchestration/helpers/context-lookup.sh +359 -0
- package/.claude/skills/cfn-loop-orchestration/helpers/deliverable-verifier.sh +71 -0
- package/.claude/skills/cfn-loop-orchestration/helpers/gate-check.sh +90 -0
- package/.claude/skills/cfn-loop-orchestration/helpers/iteration-manager.sh +87 -0
- package/.claude/skills/cfn-loop-orchestration/helpers/spawn-agents.sh +271 -0
- package/.claude/skills/cfn-loop-orchestration/helpers/timeout-calculator.sh +51 -0
- package/.claude/skills/cfn-loop-orchestration/inject-loop-context.sh +41 -0
- package/.claude/skills/cfn-loop-orchestration/monitor-execution.sh +156 -0
- package/.claude/skills/cfn-loop-orchestration/orchestrate.sh +884 -0
- package/.claude/skills/cfn-loop-orchestration/orchestrate.sh.backup +840 -0
- package/.claude/skills/cfn-loop-orchestration/security_utils.sh +99 -0
- package/.claude/skills/cfn-loop-orchestration/test-cfn-orchestration.sh +281 -0
- package/.claude/skills/cfn-loop-orchestration/test-edge-cases.sh +188 -0
- package/.claude/skills/cfn-loop-validation/SKILL.md +353 -0
- package/.claude/skills/cfn-loop-validation/check-dependencies.sh +31 -0
- package/.claude/skills/cfn-loop-validation/config.json +161 -0
- package/.claude/skills/cfn-loop-validation/consensus-calculator.js +477 -0
- package/.claude/skills/cfn-loop-validation/evidence-chain.sql +163 -0
- package/.claude/skills/cfn-loop-validation/examples/README.md +453 -0
- package/.claude/skills/cfn-loop-validation/examples/coordinator-full-cfn-loop.sh +234 -0
- package/.claude/skills/cfn-loop-validation/examples/coordinator-loop2-consensus.sh +132 -0
- package/.claude/skills/cfn-loop-validation/examples/coordinator-loop3-gate.sh +115 -0
- package/.claude/skills/cfn-loop-validation/examples/coordinator-redis-integration.sh +186 -0
- package/.claude/skills/cfn-loop-validation/orchestrate-cfn-loop.sh +252 -0
- package/.claude/skills/cfn-loop-validation/validate-iteration.sh +134 -0
- package/.claude/skills/cfn-process-lifecycle/SKILL.md +39 -0
- package/.claude/skills/cfn-process-lifecycle/check-dependencies.sh +58 -0
- package/.claude/skills/cfn-process-lifecycle/config.json +39 -0
- package/.claude/skills/cfn-process-lifecycle/process-manager.sh +144 -0
- package/.claude/skills/cfn-product-owner-decision/SKILL.md +332 -0
- package/.claude/skills/cfn-product-owner-decision/execute-decision.sh +176 -0
- package/.claude/skills/cfn-product-owner-decision/parse-decision.sh +66 -0
- package/.claude/skills/cfn-product-owner-decision/validate-deliverables.sh +82 -0
- package/.claude/skills/cfn-redis-coordination/AGENT_LOGGING.md +280 -0
- package/.claude/skills/cfn-redis-coordination/BZPOPMIN_FIX_SUMMARY.md +209 -0
- package/.claude/skills/cfn-redis-coordination/HEARTBEAT.md +57 -0
- package/.claude/skills/cfn-redis-coordination/HEARTBEAT_MONITORING.md +267 -0
- package/.claude/skills/cfn-redis-coordination/LOGGING.md +260 -0
- package/.claude/skills/cfn-redis-coordination/SECURITY_REVIEW.md +25 -0
- package/.claude/skills/cfn-redis-coordination/SHUTDOWN_HANDLING.md +164 -0
- package/.claude/skills/cfn-redis-coordination/SKILL.md +720 -0
- package/.claude/skills/cfn-redis-coordination/agent-log.sh +124 -0
- package/.claude/skills/cfn-redis-coordination/agent-recovery.sh +75 -0
- package/.claude/skills/cfn-redis-coordination/analyze-task-complexity.sh +277 -0
- package/.claude/skills/cfn-redis-coordination/cancel-swarm.sh +221 -0
- package/.claude/skills/cfn-redis-coordination/cfn-loop-exec.sh +468 -0
- package/.claude/skills/cfn-redis-coordination/cfn-loop-relaunch.sh +29 -0
- package/.claude/skills/cfn-redis-coordination/check-dependencies.sh +32 -0
- package/.claude/skills/cfn-redis-coordination/collect-confidence-scores.sh +179 -0
- package/.claude/skills/cfn-redis-coordination/collect-results.sh +75 -0
- package/.claude/skills/cfn-redis-coordination/complete-swarm.sh +75 -0
- package/.claude/skills/cfn-redis-coordination/config.json +61 -0
- package/.claude/skills/cfn-redis-coordination/data/cfn-loop.db +0 -0
- package/.claude/skills/cfn-redis-coordination/demos/phase4-wake-queue-test-report.md +82 -0
- package/.claude/skills/cfn-redis-coordination/demos/test-bzpopmin-fix.sh +274 -0
- package/.claude/skills/cfn-redis-coordination/demos/test-cancel-swarm.sh +276 -0
- package/.claude/skills/cfn-redis-coordination/demos/test-dlq.sh +129 -0
- package/.claude/skills/cfn-redis-coordination/demos/test-iteration-feedback.sh +320 -0
- package/.claude/skills/cfn-redis-coordination/demos/test-orchestrator.sh +249 -0
- package/.claude/skills/cfn-redis-coordination/demos/test-priority-wake-phase4-unix.sh +148 -0
- package/.claude/skills/cfn-redis-coordination/demos/test-priority-wake-phase4.sh +163 -0
- package/.claude/skills/cfn-redis-coordination/demos/test-priority-wake.sh +138 -0
- package/.claude/skills/cfn-redis-coordination/demos/test-quick-fix.sh +81 -0
- package/.claude/skills/cfn-redis-coordination/demos/test-quorum-absolute.sh +45 -0
- package/.claude/skills/cfn-redis-coordination/demos/test-quorum-fallback.sh +68 -0
- package/.claude/skills/cfn-redis-coordination/demos/test-quorum-percentage.sh +56 -0
- package/.claude/skills/cfn-redis-coordination/demos/test-quorum-with-retry.sh +81 -0
- package/.claude/skills/cfn-redis-coordination/demos/test-quorum.sh +57 -0
- package/.claude/skills/cfn-redis-coordination/demos/test-shutdown-handling.sh +187 -0
- package/.claude/skills/cfn-redis-coordination/demos/test-shutdown.sh +160 -0
- package/.claude/skills/cfn-redis-coordination/demos/test-utils-unix.sh +97 -0
- package/.claude/skills/cfn-redis-coordination/demos/test-utils.sh +97 -0
- package/.claude/skills/cfn-redis-coordination/demos/test-waiting-mode.sh +59 -0
- package/.claude/skills/cfn-redis-coordination/examples/README.md +73 -0
- package/.claude/skills/cfn-redis-coordination/examples/grafana-dashboard.json +352 -0
- package/.claude/skills/cfn-redis-coordination/examples/hierarchical-pattern.sh +127 -0
- package/.claude/skills/cfn-redis-coordination/examples/mesh-pattern.sh +171 -0
- package/.claude/skills/cfn-redis-coordination/examples/timeout-handling.sh +227 -0
- package/.claude/skills/cfn-redis-coordination/examples/waiting-mode-pattern.sh +239 -0
- package/.claude/skills/cfn-redis-coordination/execute-product-owner-decision.sh +258 -0
- package/.claude/skills/cfn-redis-coordination/get-agent-timeout.sh +177 -0
- package/.claude/skills/cfn-redis-coordination/heartbeat-functions.sh +137 -0
- package/.claude/skills/cfn-redis-coordination/heartbeat-protocol.md +106 -0
- package/.claude/skills/cfn-redis-coordination/heartbeat.sh +126 -0
- package/.claude/skills/cfn-redis-coordination/init-swarm.sh +148 -0
- package/.claude/skills/cfn-redis-coordination/invoke-redis-pattern.sh +220 -0
- package/.claude/skills/cfn-redis-coordination/invoke-waiting-mode.sh +283 -0
- package/.claude/skills/cfn-redis-coordination/invoke-waiting-mode.sh.backup-p7 +423 -0
- package/.claude/skills/cfn-redis-coordination/list-active-swarms.sh +147 -0
- package/.claude/skills/cfn-redis-coordination/log-event.sh +109 -0
- package/.claude/skills/cfn-redis-coordination/metrics-export.sh +674 -0
- package/.claude/skills/cfn-redis-coordination/metrics-schema.json +66 -0
- package/.claude/skills/cfn-redis-coordination/metrics-storage.md +31 -0
- package/.claude/skills/cfn-redis-coordination/monitor-cfn-violations.sh +391 -0
- package/.claude/skills/cfn-redis-coordination/monitor-heartbeats.sh +101 -0
- package/.claude/skills/cfn-redis-coordination/orchestrate-cfn-loop-v3.sh +141 -0
- package/.claude/skills/cfn-redis-coordination/orchestrate-cfn-loop.sh +31 -0
- package/.claude/skills/cfn-redis-coordination/orchestrate-cfn-loop.sh.backup +38 -0
- package/.claude/skills/cfn-redis-coordination/orchestrate-cfn-loop.sh.backup-1761167675 +1672 -0
- package/.claude/skills/cfn-redis-coordination/orchestrate-cfn-loop.sh.backup-p5 +1604 -0
- package/.claude/skills/cfn-redis-coordination/orchestrate-cfn-loop.sh.backup-phase1 +1550 -0
- package/.claude/skills/cfn-redis-coordination/orchestrate-cfn-loop.sh.backup-phase2 +1621 -0
- package/.claude/skills/cfn-redis-coordination/orchestrate-cfn-loop.sh.backup-phase3 +1621 -0
- package/.claude/skills/cfn-redis-coordination/orchestrate-cfn-loop.sh.bak +0 -0
- package/.claude/skills/cfn-redis-coordination/orchestrate-cfn-loop.sh.broken +1627 -0
- package/.claude/skills/cfn-redis-coordination/orchestrate-cfn-loop.sh.corrupted +80 -0
- package/.claude/skills/cfn-redis-coordination/orchestrate-cfn-loop.sh.deprecated +1864 -0
- package/.claude/skills/cfn-redis-coordination/priority-wake-mechanism.md +75 -0
- package/.claude/skills/cfn-redis-coordination/priority_wake.py +134 -0
- package/.claude/skills/cfn-redis-coordination/query-dlq.sh +162 -0
- package/.claude/skills/cfn-redis-coordination/query-logs.sh +103 -0
- package/.claude/skills/cfn-redis-coordination/redis-pattern.sh +619 -0
- package/.claude/skills/cfn-redis-coordination/retrieve-context.sh +58 -0
- package/.claude/skills/cfn-redis-coordination/select-specialist-agent.sh +371 -0
- package/.claude/skills/cfn-redis-coordination/semantic-match-tfidf.py +252 -0
- package/.claude/skills/cfn-redis-coordination/send-heartbeat.sh +165 -0
- package/.claude/skills/cfn-redis-coordination/signal.sh +38 -0
- package/.claude/skills/cfn-redis-coordination/store-context.sh +86 -0
- package/.claude/skills/cfn-redis-coordination/store-epic-context.sh +123 -0
- package/.claude/skills/cfn-redis-coordination/test-context-injection.sh +354 -0
- package/.claude/skills/cfn-redis-coordination/test-timeout-enforcement.sh +513 -0
- package/.claude/skills/cfn-redis-coordination/tests/convert-line-endings.sh +15 -0
- package/.claude/skills/cfn-redis-coordination/tests/dlq-functionality-test.sh +102 -0
- package/.claude/skills/cfn-redis-coordination/tests/edge-cases-test.sh +99 -0
- package/.claude/skills/cfn-redis-coordination/tests/integration-test.sh +170 -0
- package/.claude/skills/cfn-redis-coordination/tests/retry-mechanism-test.sh +82 -0
- package/.claude/skills/cfn-redis-coordination/tests/run-test-suite.sh +92 -0
- package/.claude/skills/cfn-redis-coordination/tests/run-tests.sh +4 -0
- package/.claude/skills/cfn-redis-coordination/tests/test-heartbeat-monitoring.sh +418 -0
- package/.claude/skills/cfn-redis-coordination/tests/test-heartbeat-simple.sh +124 -0
- package/.claude/skills/cfn-redis-coordination/tests/test-primitives.sh +166 -0
- package/.claude/skills/cfn-redis-coordination/tests/test-utils.sh +54 -0
- package/.claude/skills/cfn-redis-coordination/tests/test_coordination_primitives.sh.deprecated +20 -0
- package/.claude/skills/cfn-redis-coordination/tests/test_utils.sh +49 -0
- package/.claude/skills/cfn-redis-coordination/v2_modularization/core_orchestration.sh +76 -0
- package/.claude/skills/cfn-redis-coordination/validate-parameters.sh +492 -0
- package/.claude/skills/cfn-sqlite-memory/IMPLEMENTATION_REPORT.md +393 -0
- package/.claude/skills/cfn-sqlite-memory/QUICK_REFERENCE.md +204 -0
- package/.claude/skills/cfn-sqlite-memory/SKILL.md +415 -0
- package/.claude/skills/cfn-sqlite-memory/acl-queries.sql +452 -0
- package/.claude/skills/cfn-sqlite-memory/check-dependencies.sh +36 -0
- package/.claude/skills/cfn-sqlite-memory/config.json +45 -0
- package/.claude/skills/cfn-sqlite-memory/memory-cli.sh +88 -0
- package/.claude/skills/cfn-sqlite-memory/test-state-persistence.js +187 -0
- package/.claude/skills/cfn-sqlite-memory/ttl-cleanup.sh +274 -0
- package/.claude/skills/cfn-test-execution/SKILL.md +128 -0
- package/.claude/skills/cfn-test-execution/check-dependencies.sh +36 -0
- package/.claude/skills/cfn-test-execution/test-cache-reader.sh +134 -0
- package/.claude/skills/cfn-test-execution/test-concurrent-conflicts.sh +115 -0
- package/.claude/skills/cfn-test-execution/test-coordinator-pattern.sh +109 -0
- package/.claude/skills/cfn-transparency-middleware/Cargo.toml +18 -0
- package/.claude/skills/cfn-transparency-middleware/SECURITY.md +41 -0
- package/.claude/skills/cfn-transparency-middleware/SKILL.md +91 -0
- package/.claude/skills/cfn-transparency-middleware/TEST_RESULTS.md +174 -0
- package/.claude/skills/cfn-transparency-middleware/config.json +31 -0
- package/.claude/skills/cfn-transparency-middleware/examples/basic-usage.ts +39 -0
- package/.claude/skills/cfn-transparency-middleware/examples/batch-processing.ts +52 -0
- package/.claude/skills/cfn-transparency-middleware/examples/custom-filtering.ts +61 -0
- package/.claude/skills/cfn-transparency-middleware/invoke-transparency-filter.sh +98 -0
- package/.claude/skills/cfn-transparency-middleware/invoke-transparency-init.sh +224 -0
- package/.claude/skills/cfn-transparency-middleware/invoke-transparency-level.sh +333 -0
- package/.claude/skills/cfn-transparency-middleware/invoke-transparency-metrics.sh +345 -0
- package/.claude/skills/cfn-transparency-middleware/invoke-transparency-observe.sh +140 -0
- package/.claude/skills/cfn-transparency-middleware/invoke-transparency-stop.sh +235 -0
- package/.claude/skills/cfn-transparency-middleware/memory_query.rs +85 -0
- package/.claude/skills/cfn-transparency-middleware/memory_repository.rs +140 -0
- package/.claude/skills/cfn-transparency-middleware/memory_schema.rs +64 -0
- package/.claude/skills/cfn-transparency-middleware/middleware-config.sh +29 -0
- package/.claude/skills/cfn-transparency-middleware/performance-benchmark.sh +79 -0
- package/.claude/skills/cfn-transparency-middleware/test-e2e.sh +406 -0
- package/.claude/skills/cfn-transparency-middleware/test-integration.sh +162 -0
- package/.claude/skills/cfn-transparency-middleware/test-transparency-skill.sh +368 -0
- package/.claude/skills/cfn-transparency-middleware/test-transparency-skill.sh.unix +126 -0
- package/.claude/skills/cfn-transparency-middleware/tests/input-validation.sh +93 -0
- package/.claude/skills/cfn-transparency-middleware/wrap-agent.sh +132 -0
- package/.claude/skills/cfn-webapp-testing/SCREENSHOT_NAMING_CONVENTION.md +547 -0
- package/.claude/skills/cfn-webapp-testing/SKILL.md +877 -0
- package/.claude/skills/cfn-webapp-testing/capture-screenshot.sh +238 -0
- package/.claude/skills/cfn-webapp-testing/cfn-loop-integration.sh +265 -0
- package/.claude/skills/cfn-webapp-testing/compare-screenshots.sh +199 -0
- package/.claude/skills/cfn-webapp-testing/init-storage.sh +150 -0
- package/.claude/skills/cfn-webapp-testing/set-baseline.sh +196 -0
- package/.claude/skills/cfn-webapp-testing/test-webapp-testing.sh +233 -0
- package/README.md +51 -2
- package/dist/ace/ace-reflector.js +109 -10
- package/dist/ace/ace-reflector.js.map +1 -1
- package/dist/agents/agent-loader.js +165 -146
- package/dist/agents/agent-loader.js.map +1 -1
- package/dist/cli/agent-executor.js +1 -1
- package/dist/cli/agent-executor.js.map +1 -1
- package/dist/cli/config-manager.js +109 -91
- package/dist/cli/config-manager.js.map +1 -1
- package/package.json +43 -7
- package/readme/README.md +15 -4
- package/scripts/init-project.js +84 -29
- package/scripts/run-marketing-tests.sh +43 -0
- package/scripts/update_paths.sh +47 -0
- package/tools/install-lizard.sh +37 -0
- package/tools/simple-complexity.sh +44 -0
- package/.claude/agents/cfn-dev-team/developers/coder.md +0 -270
- package/.claude/agents/cfn-dev-team/developers/state-architect.md +0 -127
- package/.claude/agents/cfn-dev-team/reviewers/code-quality-validator.md +0 -128
- /package/.claude/agents/cfn-dev-team/developers/{ui-designer.md → frontend/ui-designer.md} +0 -0
- /package/.claude/agents/cfn-dev-team/{coordinators → product-owners}/product-owner-agent.md +0 -0
|
@@ -0,0 +1,452 @@
|
|
|
1
|
+
-- SQLite Memory Access Skill - ACL Queries
|
|
2
|
+
-- This file contains pre-built queries for each of the 5 ACL levels
|
|
3
|
+
-- Queries include encryption handling, access validation, and data filtering
|
|
4
|
+
|
|
5
|
+
-- =================================================================
|
|
6
|
+
-- LEVEL 1: PUBLIC ACCESS QUERIES
|
|
7
|
+
-- =================================================================
|
|
8
|
+
|
|
9
|
+
-- Get public content with basic filtering
|
|
10
|
+
-- No encryption required for public data
|
|
11
|
+
CREATE VIEW IF NOT EXISTS public_content_view AS
|
|
12
|
+
SELECT id, title, content_summary, created_at, updated_at,
|
|
13
|
+
public_status, view_count, category
|
|
14
|
+
FROM memory_content
|
|
15
|
+
WHERE public_status = 'public'
|
|
16
|
+
AND access_level = 1
|
|
17
|
+
ORDER BY created_at DESC;
|
|
18
|
+
|
|
19
|
+
-- Get public metadata without sensitive information
|
|
20
|
+
CREATE VIEW IF NOT EXISTS public_metadata_view AS
|
|
21
|
+
SELECT id, name, type, description, created_at,
|
|
22
|
+
public_count, shared_count, category
|
|
23
|
+
FROM memory_metadata
|
|
24
|
+
WHERE type IN ('public', 'shared')
|
|
25
|
+
ORDER BY created_at DESC;
|
|
26
|
+
|
|
27
|
+
-- Public search functionality
|
|
28
|
+
CREATE PROCEDURE IF NOT EXISTS search_public_content(IN search_term TEXT)
|
|
29
|
+
BEGIN
|
|
30
|
+
SELECT id, title, content_summary, created_at, view_count
|
|
31
|
+
FROM memory_content
|
|
32
|
+
WHERE public_status = 'public'
|
|
33
|
+
AND (title LIKE '%' || search_term || '%'
|
|
34
|
+
OR content_summary LIKE '%' || search_term || '%')
|
|
35
|
+
ORDER BY view_count DESC, created_at DESC
|
|
36
|
+
LIMIT 50;
|
|
37
|
+
END;
|
|
38
|
+
|
|
39
|
+
-- Get public categories and counts
|
|
40
|
+
CREATE PROCEDURE IF NOT EXISTS get_public_categories()
|
|
41
|
+
BEGIN
|
|
42
|
+
SELECT category, COUNT(*) as count
|
|
43
|
+
FROM memory_content
|
|
44
|
+
WHERE public_status = 'public'
|
|
45
|
+
GROUP BY category
|
|
46
|
+
ORDER BY count DESC;
|
|
47
|
+
END;
|
|
48
|
+
|
|
49
|
+
-- =================================================================
|
|
50
|
+
-- LEVEL 2: AUTHENTICATED USER QUERIES
|
|
51
|
+
-- =================================================================
|
|
52
|
+
|
|
53
|
+
-- Get user's personal data with encryption handling
|
|
54
|
+
CREATE PROCEDURE IF NOT EXISTS get_personal_data(IN user_id INTEGER, IN include_encrypted BOOLEAN)
|
|
55
|
+
BEGIN
|
|
56
|
+
SELECT id, title, content_summary, created_at, updated_at,
|
|
57
|
+
CASE WHEN encrypted = 1 AND include_encrypted = 0
|
|
58
|
+
THEN '[ENCRYPTED DATA]'
|
|
59
|
+
ELSE content_summary END as display_content,
|
|
60
|
+
public_status, view_count, category, created_by
|
|
61
|
+
FROM memory_content
|
|
62
|
+
WHERE (user_id = user_id OR created_by = user_id)
|
|
63
|
+
AND (access_level >= 2 OR created_by = user_id)
|
|
64
|
+
ORDER BY updated_at DESC;
|
|
65
|
+
END;
|
|
66
|
+
|
|
67
|
+
-- Get user preferences with encryption handling
|
|
68
|
+
CREATE PROCEDURE IF NOT EXISTS get_user_preferences(IN user_id INTEGER)
|
|
69
|
+
BEGIN
|
|
70
|
+
SELECT id, key,
|
|
71
|
+
CASE WHEN encrypted = 1 THEN '[ENCRYPTED]' ELSE value END as display_value,
|
|
72
|
+
encrypted, created_at, updated_at
|
|
73
|
+
FROM user_preferences
|
|
74
|
+
WHERE user_id = user_id
|
|
75
|
+
ORDER BY key;
|
|
76
|
+
END;
|
|
77
|
+
|
|
78
|
+
-- Update user preference with encryption
|
|
79
|
+
CREATE PROCEDURE IF NOT EXISTS update_user_preference(
|
|
80
|
+
IN user_id INTEGER,
|
|
81
|
+
IN key TEXT,
|
|
82
|
+
IN value TEXT,
|
|
83
|
+
IN encrypt_data BOOLEAN
|
|
84
|
+
)
|
|
85
|
+
BEGIN
|
|
86
|
+
-- Check if preference exists
|
|
87
|
+
SELECT COUNT(*) INTO @pref_count
|
|
88
|
+
FROM user_preferences
|
|
89
|
+
WHERE user_id = user_id AND key = key;
|
|
90
|
+
|
|
91
|
+
IF @pref_count > 0 THEN
|
|
92
|
+
UPDATE user_preferences
|
|
93
|
+
SET value = CASE WHEN encrypt_data = 1
|
|
94
|
+
THEN encrypt(value, :encryption_key)
|
|
95
|
+
ELSE value END,
|
|
96
|
+
encrypted = encrypt_data,
|
|
97
|
+
updated_at = CURRENT_TIMESTAMP
|
|
98
|
+
WHERE user_id = user_id AND key = key;
|
|
99
|
+
ELSE
|
|
100
|
+
INSERT INTO user_preferences (user_id, key, value, encrypted, created_at, updated_at)
|
|
101
|
+
VALUES (user_id, key,
|
|
102
|
+
CASE WHEN encrypt_data = 1
|
|
103
|
+
THEN encrypt(value, :encryption_key)
|
|
104
|
+
ELSE value END,
|
|
105
|
+
encrypt_data, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP);
|
|
106
|
+
END IF;
|
|
107
|
+
END;
|
|
108
|
+
|
|
109
|
+
-- Get user's activity history
|
|
110
|
+
CREATE PROCEDURE IF NOT EXISTS get_user_activity(IN user_id INTEGER)
|
|
111
|
+
BEGIN
|
|
112
|
+
SELECT action_type, target_id, description, timestamp, ip_address
|
|
113
|
+
FROM user_activity_log
|
|
114
|
+
WHERE user_id = user_id
|
|
115
|
+
ORDER BY timestamp DESC
|
|
116
|
+
LIMIT 100;
|
|
117
|
+
END;
|
|
118
|
+
|
|
119
|
+
-- =================================================================
|
|
120
|
+
-- LEVEL 3: PRIVILEGED USER QUERIES
|
|
121
|
+
-- =================================================================
|
|
122
|
+
|
|
123
|
+
-- Get shared resources accessible to privileged users
|
|
124
|
+
CREATE PROCEDURE IF NOT EXISTS get_shared_resources(IN user_id INTEGER)
|
|
125
|
+
BEGIN
|
|
126
|
+
SELECT mc.id, mc.title, mc.content_summary, mc.created_at,
|
|
127
|
+
mc.created_by, mc.view_count,
|
|
128
|
+
u.username as creator_name,
|
|
129
|
+
sa.access_level as user_access_level
|
|
130
|
+
FROM memory_content mc
|
|
131
|
+
JOIN shared_access sa ON mc.id = sa.content_id
|
|
132
|
+
JOIN users u ON mc.created_by = u.id
|
|
133
|
+
WHERE sa.user_id = user_id
|
|
134
|
+
AND mc.access_level >= 3
|
|
135
|
+
ORDER BY mc.updated_at DESC;
|
|
136
|
+
END;
|
|
137
|
+
|
|
138
|
+
-- Get collaboration groups user belongs to
|
|
139
|
+
CREATE PROCEDURE IF NOT EXISTS get_user_groups(IN user_id INTEGER)
|
|
140
|
+
BEGIN
|
|
141
|
+
SELECT g.id, g.name, g.description, g.created_at,
|
|
142
|
+
COUNT(gm.member_id) as member_count,
|
|
143
|
+
CASE WHEN gm.role = 'admin' THEN 'Administrator'
|
|
144
|
+
WHEN gm.role = 'moderator' THEN 'Moderator'
|
|
145
|
+
ELSE 'Member' END as user_role
|
|
146
|
+
FROM collaboration_groups g
|
|
147
|
+
JOIN group_members gm ON g.id = gm.group_id
|
|
148
|
+
WHERE gm.user_id = user_id
|
|
149
|
+
GROUP BY g.id, g.name, g.description, g.created_at, gm.role
|
|
150
|
+
ORDER BY g.name;
|
|
151
|
+
END;
|
|
152
|
+
|
|
153
|
+
-- Get group members with access levels
|
|
154
|
+
CREATE PROCEDURE IF NOT EXISTS get_group_members(IN group_id INTEGER)
|
|
155
|
+
BEGIN
|
|
156
|
+
SELECT gm.user_id, u.username, u.email, gm.role, gm.joined_at,
|
|
157
|
+
gm.last_activity
|
|
158
|
+
FROM group_members gm
|
|
159
|
+
JOIN users u ON gm.user_id = u.id
|
|
160
|
+
WHERE gm.group_id = group_id
|
|
161
|
+
ORDER BY gm.role DESC, gm.joined_at DESC;
|
|
162
|
+
END;
|
|
163
|
+
|
|
164
|
+
-- Grant shared access to content
|
|
165
|
+
CREATE PROCEDURE IF NOT EXISTS grant_shared_access(
|
|
166
|
+
IN content_id INTEGER,
|
|
167
|
+
IN user_id INTEGER,
|
|
168
|
+
IN access_level INTEGER,
|
|
169
|
+
IN granted_by INTEGER
|
|
170
|
+
)
|
|
171
|
+
BEGIN
|
|
172
|
+
-- Check if user already has access
|
|
173
|
+
SELECT COUNT(*) INTO @access_count
|
|
174
|
+
FROM shared_access
|
|
175
|
+
WHERE content_id = content_id AND user_id = user_id;
|
|
176
|
+
|
|
177
|
+
IF @access_count = 0 THEN
|
|
178
|
+
INSERT INTO shared_access (content_id, user_id, access_level, granted_by, granted_at)
|
|
179
|
+
VALUES (content_id, user_id, access_level, granted_by, CURRENT_TIMESTAMP);
|
|
180
|
+
|
|
181
|
+
-- Log the access grant
|
|
182
|
+
INSERT INTO audit_logs (action_type, target_id, user_id, description, timestamp)
|
|
183
|
+
VALUES ('grant_access', content_id, granted_by,
|
|
184
|
+
'Granted access to content ' || content_id || ' for user ' || user_id,
|
|
185
|
+
CURRENT_TIMESTAMP);
|
|
186
|
+
END IF;
|
|
187
|
+
END;
|
|
188
|
+
|
|
189
|
+
-- =================================================================
|
|
190
|
+
-- LEVEL 4: ADMINISTRATOR QUERIES
|
|
191
|
+
-- =================================================================
|
|
192
|
+
|
|
193
|
+
-- Get all users with their current status
|
|
194
|
+
CREATE PROCEDURE IF NOT EXISTS get_all_users(IN limit_count INTEGER DEFAULT 100)
|
|
195
|
+
BEGIN
|
|
196
|
+
SELECT u.id, u.username, u.email, u.role, u.status,
|
|
197
|
+
u.last_login, u.created_at, u.updated_at,
|
|
198
|
+
COUNT(ua.id) as activity_count,
|
|
199
|
+
MAX(ua.timestamp) as last_activity
|
|
200
|
+
FROM users u
|
|
201
|
+
LEFT JOIN audit_logs ua ON u.id = ua.user_id
|
|
202
|
+
WHERE u.role IN ('user', 'privileged', 'admin')
|
|
203
|
+
GROUP BY u.id, u.username, u.email, u.role, u.status,
|
|
204
|
+
u.last_login, u.created_at, u.updated_at
|
|
205
|
+
ORDER BY u.last_login DESC
|
|
206
|
+
LIMIT limit_count;
|
|
207
|
+
END;
|
|
208
|
+
|
|
209
|
+
-- Get system configuration
|
|
210
|
+
CREATE PROCEDURE IF NOT EXISTS get_system_config(IN category_filter TEXT DEFAULT NULL)
|
|
211
|
+
BEGIN
|
|
212
|
+
SELECT id, key, value, description, category, modified_by, modified_at
|
|
213
|
+
FROM system_config
|
|
214
|
+
WHERE category_filter IS NULL OR category = category_filter
|
|
215
|
+
ORDER BY category, key;
|
|
216
|
+
END;
|
|
217
|
+
|
|
218
|
+
-- Update system configuration with validation
|
|
219
|
+
CREATE PROCEDURE IF NOT EXISTS update_system_config(
|
|
220
|
+
IN config_key TEXT,
|
|
221
|
+
IN new_value TEXT,
|
|
222
|
+
IN category TEXT,
|
|
223
|
+
IN modified_by INTEGER
|
|
224
|
+
)
|
|
225
|
+
BEGIN
|
|
226
|
+
-- Validate the configuration change
|
|
227
|
+
IF category = 'security' THEN
|
|
228
|
+
-- Security-related configurations need special validation
|
|
229
|
+
IF config_key = 'session_timeout' THEN
|
|
230
|
+
-- Validate session timeout is reasonable
|
|
231
|
+
IF CAST(new_value AS INTEGER) < 60 OR CAST(new_value AS INTEGER) > 86400 THEN
|
|
232
|
+
SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT = 'Invalid session timeout value';
|
|
233
|
+
END IF;
|
|
234
|
+
END IF;
|
|
235
|
+
END IF;
|
|
236
|
+
|
|
237
|
+
UPDATE system_config
|
|
238
|
+
SET value = new_value,
|
|
239
|
+
modified_by = modified_by,
|
|
240
|
+
modified_at = CURRENT_TIMESTAMP
|
|
241
|
+
WHERE key = config_key;
|
|
242
|
+
|
|
243
|
+
-- Log the configuration change
|
|
244
|
+
INSERT INTO audit_logs (action_type, target_id, user_id, description, timestamp)
|
|
245
|
+
VALUES ('config_update', (SELECT id FROM system_config WHERE key = config_key),
|
|
246
|
+
modified_by, 'Updated config: ' || config_key || ' = ' || new_value,
|
|
247
|
+
CURRENT_TIMESTAMP);
|
|
248
|
+
END;
|
|
249
|
+
|
|
250
|
+
-- Get audit logs with filtering
|
|
251
|
+
CREATE PROCEDURE IF NOT EXISTS get_audit_logs(
|
|
252
|
+
IN start_date DATETIME DEFAULT NULL,
|
|
253
|
+
IN end_date DATETIME DEFAULT NULL,
|
|
254
|
+
IN action_type_filter TEXT DEFAULT NULL,
|
|
255
|
+
IN user_id_filter INTEGER DEFAULT NULL,
|
|
256
|
+
IN limit_count INTEGER DEFAULT 1000
|
|
257
|
+
)
|
|
258
|
+
BEGIN
|
|
259
|
+
SELECT id, action_type, target_id, user_id, description,
|
|
260
|
+
ip_address, timestamp, additional_info
|
|
261
|
+
FROM audit_logs
|
|
262
|
+
WHERE (start_date IS NULL OR timestamp >= start_date)
|
|
263
|
+
AND (end_date IS NULL OR timestamp <= end_date)
|
|
264
|
+
AND (action_type_filter IS NULL OR action_type = action_type_filter)
|
|
265
|
+
AND (user_id_filter IS NULL OR user_id = user_id_filter)
|
|
266
|
+
ORDER BY timestamp DESC
|
|
267
|
+
LIMIT limit_count;
|
|
268
|
+
END;
|
|
269
|
+
|
|
270
|
+
-- User management operations
|
|
271
|
+
CREATE PROCEDURE IF NOT EXISTS deactivate_user(IN user_id INTEGER, IN deactivated_by INTEGER)
|
|
272
|
+
BEGIN
|
|
273
|
+
UPDATE users
|
|
274
|
+
SET status = 'inactive',
|
|
275
|
+
updated_at = CURRENT_TIMESTAMP
|
|
276
|
+
WHERE id = user_id;
|
|
277
|
+
|
|
278
|
+
-- Log deactivation
|
|
279
|
+
INSERT INTO audit_logs (action_type, target_id, user_id, description, timestamp)
|
|
280
|
+
VALUES ('user_deactivate', user_id, deactivated_by,
|
|
281
|
+
'Deactivated user ' || user_id, CURRENT_TIMESTAMP);
|
|
282
|
+
END;
|
|
283
|
+
|
|
284
|
+
-- =================================================================
|
|
285
|
+
-- LEVEL 5: SUPER ADMINISTRATOR QUERIES
|
|
286
|
+
-- =================================================================
|
|
287
|
+
|
|
288
|
+
-- Get all system data with full access
|
|
289
|
+
CREATE PROCEDURE IF NOT EXISTS get_all_memory_content(IN limit_count INTEGER DEFAULT 1000)
|
|
290
|
+
BEGIN
|
|
291
|
+
SELECT mc.*, u.username as creator_name,
|
|
292
|
+
COUNT(sa.user_id) as shared_count,
|
|
293
|
+
MAX(sa.granted_at) as last_shared_at
|
|
294
|
+
FROM memory_content mc
|
|
295
|
+
LEFT JOIN users u ON mc.created_by = u.id
|
|
296
|
+
LEFT JOIN shared_access sa ON mc.id = sa.content_id
|
|
297
|
+
WHERE mc.access_level >= 5
|
|
298
|
+
GROUP BY mc.id, mc.title, mc.content, mc.created_by, mc.created_at
|
|
299
|
+
ORDER BY mc.created_at DESC
|
|
300
|
+
LIMIT limit_count;
|
|
301
|
+
END;
|
|
302
|
+
|
|
303
|
+
-- Complete audit log access
|
|
304
|
+
CREATE PROCEDURE IF NOT EXISTS get_complete_audit_logs(IN limit_count INTEGER DEFAULT 5000)
|
|
305
|
+
BEGIN
|
|
306
|
+
SELECT al.*, u.username as action_user
|
|
307
|
+
FROM audit_logs al
|
|
308
|
+
LEFT JOIN users u ON al.user_id = u.id
|
|
309
|
+
ORDER BY al.timestamp DESC
|
|
310
|
+
LIMIT limit_count;
|
|
311
|
+
END;
|
|
312
|
+
|
|
313
|
+
-- System health monitoring
|
|
314
|
+
CREATE PROCEDURE IF NOT EXISTS get_system_health()
|
|
315
|
+
BEGIN
|
|
316
|
+
-- Database statistics
|
|
317
|
+
SELECT
|
|
318
|
+
'database_stats' as metric_type,
|
|
319
|
+
COUNT(*) as total_records,
|
|
320
|
+
COUNT(CASE WHEN created_at >= datetime('now', '-7 days') THEN 1 END) as recent_records,
|
|
321
|
+
MAX(created_at) as last_record,
|
|
322
|
+
MIN(created_at) as first_record
|
|
323
|
+
FROM memory_content
|
|
324
|
+
|
|
325
|
+
UNION ALL
|
|
326
|
+
|
|
327
|
+
-- User statistics
|
|
328
|
+
SELECT
|
|
329
|
+
'user_stats' as metric_type,
|
|
330
|
+
COUNT(*) as total_records,
|
|
331
|
+
COUNT(CASE WHEN last_login >= datetime('now', '-7 days') THEN 1 END) as active_users,
|
|
332
|
+
COUNT(CASE WHEN status = 'active' THEN 1 END) as active_records,
|
|
333
|
+
COUNT(CASE WHEN status = 'inactive' THEN 1 END) as inactive_records
|
|
334
|
+
FROM users
|
|
335
|
+
|
|
336
|
+
UNION ALL
|
|
337
|
+
|
|
338
|
+
-- System performance
|
|
339
|
+
SELECT
|
|
340
|
+
'performance_stats' as metric_type,
|
|
341
|
+
AVG(query_time) as avg_query_time,
|
|
342
|
+
MAX(query_time) as max_query_time,
|
|
343
|
+
COUNT(*) as total_queries,
|
|
344
|
+
COUNT(CASE WHEN query_time > 1000 THEN 1 END) as slow_queries
|
|
345
|
+
FROM query_performance_log
|
|
346
|
+
WHERE timestamp >= datetime('now', '-1 hour');
|
|
347
|
+
END;
|
|
348
|
+
|
|
349
|
+
-- User activity monitoring
|
|
350
|
+
CREATE PROCEDURE IF NOT EXISTS monitor_user_activity(IN days INTEGER DEFAULT 30)
|
|
351
|
+
BEGIN
|
|
352
|
+
SELECT
|
|
353
|
+
u.id, u.username, u.email, u.role,
|
|
354
|
+
COUNT(a.id) as total_actions,
|
|
355
|
+
COUNT(CASE WHEN a.timestamp >= datetime('now', '-7 days') THEN 1 END) as recent_actions,
|
|
356
|
+
MAX(a.timestamp) as last_action,
|
|
357
|
+
COUNT(DISTINCT DATE(a.timestamp)) as active_days,
|
|
358
|
+
GROUP_CONCAT(DISTINCT a.action_type) as action_types
|
|
359
|
+
FROM users u
|
|
360
|
+
LEFT JOIN audit_logs a ON u.id = a.user_id
|
|
361
|
+
WHERE a.timestamp >= datetime('now', '-' || days || ' days')
|
|
362
|
+
GROUP BY u.id, u.username, u.email, u.role
|
|
363
|
+
ORDER BY last_action DESC;
|
|
364
|
+
END;
|
|
365
|
+
|
|
366
|
+
-- Data integrity check
|
|
367
|
+
CREATE PROCEDURE IF NOT EXISTS perform_data_integrity_check()
|
|
368
|
+
BEGIN
|
|
369
|
+
-- Check orphaned records
|
|
370
|
+
SELECT 'orphaned_content' as check_type, COUNT(*) as issue_count
|
|
371
|
+
FROM memory_content mc
|
|
372
|
+
LEFT JOIN users u ON mc.created_by = u.id
|
|
373
|
+
WHERE u.id IS NULL
|
|
374
|
+
|
|
375
|
+
UNION ALL
|
|
376
|
+
|
|
377
|
+
-- Check inconsistent access levels
|
|
378
|
+
SELECT 'inconsistent_access' as check_type, COUNT(*) as issue_count
|
|
379
|
+
FROM memory_content mc
|
|
380
|
+
WHERE mc.access_level < 1 OR mc.access_level > 5
|
|
381
|
+
|
|
382
|
+
UNION ALL
|
|
383
|
+
|
|
384
|
+
-- Check expired shared access
|
|
385
|
+
SELECT 'expired_shared_access' as check_type, COUNT(*) as issue_count
|
|
386
|
+
FROM shared_access sa
|
|
387
|
+
WHERE sa.granted_at < datetime('now', '-90 days')
|
|
388
|
+
AND sa.access_level < 5;
|
|
389
|
+
END;
|
|
390
|
+
|
|
391
|
+
-- =================================================================
|
|
392
|
+
-- SECURITY AND ENCRYPTION HELPERS
|
|
393
|
+
-- =================================================================
|
|
394
|
+
|
|
395
|
+
-- Encryption function (placeholder - implement with actual encryption)
|
|
396
|
+
CREATE FUNCTION IF NOT EXISTS encrypt(data TEXT, key TEXT) RETURNS TEXT
|
|
397
|
+
BEGIN
|
|
398
|
+
-- Implement actual encryption logic here
|
|
399
|
+
-- This is a placeholder that returns encrypted data
|
|
400
|
+
RETURN '[ENCRYPTED:' || data || ']';
|
|
401
|
+
END;
|
|
402
|
+
|
|
403
|
+
-- Decryption function (placeholder - implement with actual decryption)
|
|
404
|
+
CREATE FUNCTION IF NOT EXISTS decrypt(encrypted_data TEXT, key TEXT) RETURNS TEXT
|
|
405
|
+
BEGIN
|
|
406
|
+
-- Implement actual decryption logic here
|
|
407
|
+
-- This is a placeholder that returns decrypted data
|
|
408
|
+
RETURN SUBSTR(encrypted_data, 12, LENGTH(encrypted_data) - 13);
|
|
409
|
+
END;
|
|
410
|
+
|
|
411
|
+
-- Access validation function
|
|
412
|
+
CREATE FUNCTION IF NOT EXISTS validate_access(user_id INTEGER, content_id INTEGER, required_level INTEGER) RETURNS BOOLEAN
|
|
413
|
+
BEGIN
|
|
414
|
+
DECLARE user_level INTEGER;
|
|
415
|
+
DECLARE content_level INTEGER;
|
|
416
|
+
DECLARE is_owner BOOLEAN;
|
|
417
|
+
|
|
418
|
+
-- Get user's access level
|
|
419
|
+
SELECT role INTO user_level FROM users WHERE id = user_id;
|
|
420
|
+
|
|
421
|
+
-- Get content's access level
|
|
422
|
+
SELECT access_level INTO content_level FROM memory_content WHERE id = content_id;
|
|
423
|
+
|
|
424
|
+
-- Check if user is the owner
|
|
425
|
+
SELECT (created_by = user_id) INTO is_owner FROM memory_content WHERE id = content_id;
|
|
426
|
+
|
|
427
|
+
-- Grant access if user has sufficient level or is the owner
|
|
428
|
+
RETURN (user_level >= required_level OR is_owner) AND content_level >= required_level;
|
|
429
|
+
END;
|
|
430
|
+
|
|
431
|
+
-- =================================================================
|
|
432
|
+
-- INDEXES FOR PERFORMANCE
|
|
433
|
+
-- =================================================================
|
|
434
|
+
|
|
435
|
+
-- Create indexes for ACL queries
|
|
436
|
+
CREATE INDEX IF NOT EXISTS idx_memory_content_access_level ON memory_content(access_level);
|
|
437
|
+
CREATE INDEX IF NOT EXISTS idx_memory_content_public_status ON memory_content(public_status);
|
|
438
|
+
CREATE INDEX IF NOT EXISTS idx_memory_content_user_id ON memory_content(user_id);
|
|
439
|
+
CREATE INDEX IF NOT EXISTS idx_memory_content_created_by ON memory_content(created_by);
|
|
440
|
+
CREATE INDEX IF NOT EXISTS idx_memory_content_created_at ON memory_content(created_at);
|
|
441
|
+
|
|
442
|
+
CREATE INDEX IF NOT EXISTS idx_shared_access_content_id ON shared_access(content_id);
|
|
443
|
+
CREATE INDEX IF NOT EXISTS idx_shared_access_user_id ON shared_access(user_id);
|
|
444
|
+
CREATE INDEX IF NOT EXISTS idx_shared_access_access_level ON shared_access(access_level);
|
|
445
|
+
|
|
446
|
+
CREATE INDEX IF NOT EXISTS idx_audit_logs_user_id ON audit_logs(user_id);
|
|
447
|
+
CREATE INDEX IF NOT EXISTS idx_audit_logs_action_type ON audit_logs(action_type);
|
|
448
|
+
CREATE INDEX IF NOT EXISTS idx_audit_logs_timestamp ON audit_logs(timestamp);
|
|
449
|
+
|
|
450
|
+
CREATE INDEX IF NOT EXISTS idx_users_role ON users(role);
|
|
451
|
+
CREATE INDEX IF NOT EXISTS idx_users_status ON users(status);
|
|
452
|
+
CREATE INDEX IF NOT EXISTS idx_users_last_login ON users(last_login);
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
#!/bin/bash
|
|
2
|
+
# Dependency checker for SQLite Memory
|
|
3
|
+
|
|
4
|
+
check_command() {
|
|
5
|
+
if command -v "$1" &> /dev/null; then
|
|
6
|
+
VERSION=$($1 --version 2>&1 | head -n1)
|
|
7
|
+
echo "✅ $1: $VERSION"
|
|
8
|
+
return 0
|
|
9
|
+
else
|
|
10
|
+
echo "❌ $1: NOT FOUND"
|
|
11
|
+
return 1
|
|
12
|
+
fi
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
echo "Checking dependencies for SQLite Memory..."
|
|
16
|
+
MISSING=0
|
|
17
|
+
|
|
18
|
+
# Required dependencies
|
|
19
|
+
check_command "node" || MISSING=$((MISSING+1))
|
|
20
|
+
check_command "tsc" || MISSING=$((MISSING+1))
|
|
21
|
+
check_command "sqlite3" || MISSING=$((MISSING+1))
|
|
22
|
+
|
|
23
|
+
# Optional dependencies
|
|
24
|
+
if ! command -v "redis-cli" &> /dev/null; then
|
|
25
|
+
echo "⚠️ redis-cli: NOT FOUND (optional)"
|
|
26
|
+
fi
|
|
27
|
+
|
|
28
|
+
if [ $MISSING -eq 0 ]; then
|
|
29
|
+
echo ""
|
|
30
|
+
echo "✅ All required dependencies installed"
|
|
31
|
+
exit 0
|
|
32
|
+
else
|
|
33
|
+
echo ""
|
|
34
|
+
echo "❌ Missing $MISSING required dependencies"
|
|
35
|
+
exit 1
|
|
36
|
+
fi
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "./config.schema.json",
|
|
3
|
+
"version": "1.3.0",
|
|
4
|
+
"dbPath": ".artifacts/memory/swarm-memory.sqlite",
|
|
5
|
+
"encryptionEnabled": false,
|
|
6
|
+
"encryptionKey": null,
|
|
7
|
+
"aclLevels": {
|
|
8
|
+
"agent": 1,
|
|
9
|
+
"team": 2,
|
|
10
|
+
"swarm": 3,
|
|
11
|
+
"project": 4,
|
|
12
|
+
"system": 5
|
|
13
|
+
},
|
|
14
|
+
"aclDescriptions": {
|
|
15
|
+
"0": "NONE - No access",
|
|
16
|
+
"1": "AGENT - Encrypted, agent-specific data",
|
|
17
|
+
"2": "TEAM - Shared within team/group",
|
|
18
|
+
"3": "SWARM - Swarm-level coordination data",
|
|
19
|
+
"4": "PROJECT - Project-wide accessible data",
|
|
20
|
+
"5": "SYSTEM - System-level access (highest privilege)"
|
|
21
|
+
},
|
|
22
|
+
"performance": {
|
|
23
|
+
"queryTimeoutMs": 5000,
|
|
24
|
+
"maxConcurrentConnections": 100,
|
|
25
|
+
"cacheEnabled": true,
|
|
26
|
+
"cacheTtlSeconds": 300
|
|
27
|
+
},
|
|
28
|
+
"ttl": {
|
|
29
|
+
"defaultTtlSeconds": 3600,
|
|
30
|
+
"cleanupIntervalSeconds": 600,
|
|
31
|
+
"enabled": true
|
|
32
|
+
},
|
|
33
|
+
"logging": {
|
|
34
|
+
"enabled": true,
|
|
35
|
+
"level": "info",
|
|
36
|
+
"logPath": ".artifacts/logs/memory-cli.log"
|
|
37
|
+
},
|
|
38
|
+
"redis": {
|
|
39
|
+
"sessionManagement": true,
|
|
40
|
+
"caching": true,
|
|
41
|
+
"host": "localhost",
|
|
42
|
+
"port": 6379,
|
|
43
|
+
"keyPrefix": "memory:"
|
|
44
|
+
}
|
|
45
|
+
}
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
#!/usr/bin/env bash
|
|
2
|
+
###############################################################################
|
|
3
|
+
# SQLite Memory CLI - Bash Wrapper
|
|
4
|
+
# Provides agent-accessible memory operations via simple CLI interface
|
|
5
|
+
#
|
|
6
|
+
# Usage:
|
|
7
|
+
# ./memory-cli.sh set --key <key> --value <value> --acl <level>
|
|
8
|
+
# ./memory-cli.sh get --key <key>
|
|
9
|
+
# ./memory-cli.sh delete --key <key>
|
|
10
|
+
# ./memory-cli.sh query --pattern <glob>
|
|
11
|
+
# ./memory-cli.sh list --acl <level>
|
|
12
|
+
###############################################################################
|
|
13
|
+
|
|
14
|
+
set -euo pipefail
|
|
15
|
+
|
|
16
|
+
# Detect project root
|
|
17
|
+
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
18
|
+
PROJECT_ROOT="$(cd "$SCRIPT_DIR/.claude/skills/cfn-cfn-.claude/skills/cfn-cfn-.." && pwd)"
|
|
19
|
+
|
|
20
|
+
# Path to TypeScript CLI
|
|
21
|
+
MEMORY_CLI_TS="$PROJECT_ROOT/src/cli/memory-cli.ts"
|
|
22
|
+
MEMORY_CLI_DIST="$PROJECT_ROOT/dist/cli/memory-cli.js"
|
|
23
|
+
|
|
24
|
+
# Configuration
|
|
25
|
+
CONFIG_FILE="$PROJECT_ROOT/.claude/skills/cfn-sqlite-memory/config.json"
|
|
26
|
+
AGENT_ID="${AGENT_ID:-$(whoami)}"
|
|
27
|
+
|
|
28
|
+
###############################################################################
|
|
29
|
+
# Helper Functions
|
|
30
|
+
###############################################################################
|
|
31
|
+
|
|
32
|
+
log_info() {
|
|
33
|
+
echo "[INFO] $*" >&2
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
log_error() {
|
|
37
|
+
echo "[ERROR] $*" >&2
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
check_dependencies() {
|
|
41
|
+
# Check if Node.js is available
|
|
42
|
+
if ! command -v node &> /dev/null; then
|
|
43
|
+
log_error "Node.js is not installed. Please install Node.js to use memory-cli."
|
|
44
|
+
exit 1
|
|
45
|
+
fi
|
|
46
|
+
|
|
47
|
+
# Check if tsx is available for TypeScript execution
|
|
48
|
+
if ! command -v tsx &> /dev/null && ! command -v npx &> /dev/null; then
|
|
49
|
+
log_error "tsx or npx is not available. Please install tsx or npx."
|
|
50
|
+
exit 1
|
|
51
|
+
fi
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
run_memory_cli() {
|
|
55
|
+
# Try to run compiled version first (faster), fallback to TypeScript
|
|
56
|
+
if [ -f "$MEMORY_CLI_DIST" ]; then
|
|
57
|
+
node "$MEMORY_CLI_DIST" "$@"
|
|
58
|
+
elif [ -f "$MEMORY_CLI_TS" ]; then
|
|
59
|
+
# Use tsx for direct TypeScript execution
|
|
60
|
+
if command -v tsx &> /dev/null; then
|
|
61
|
+
tsx "$MEMORY_CLI_TS" "$@"
|
|
62
|
+
else
|
|
63
|
+
npx tsx "$MEMORY_CLI_TS" "$@"
|
|
64
|
+
fi
|
|
65
|
+
else
|
|
66
|
+
log_error "Memory CLI not found at $MEMORY_CLI_TS or $MEMORY_CLI_DIST"
|
|
67
|
+
exit 1
|
|
68
|
+
fi
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
###############################################################################
|
|
72
|
+
# Main Execution
|
|
73
|
+
###############################################################################
|
|
74
|
+
|
|
75
|
+
main() {
|
|
76
|
+
# Check dependencies
|
|
77
|
+
check_dependencies
|
|
78
|
+
|
|
79
|
+
# Ensure memory directory exists
|
|
80
|
+
MEMORY_DIR="$PROJECT_ROOT/.artifacts/memory"
|
|
81
|
+
mkdir -p "$MEMORY_DIR"
|
|
82
|
+
|
|
83
|
+
# Pass all arguments to TypeScript CLI
|
|
84
|
+
run_memory_cli "$@"
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
# Execute main with all arguments
|
|
88
|
+
main "$@"
|