cerber-core 1.0.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.
Files changed (67) hide show
  1. package/.cerber-example/BIBLE.md +132 -0
  2. package/.cerber-example/CERBER_LAW.md +200 -0
  3. package/.cerber-example/connections/contracts/booking-to-pricing.json +44 -0
  4. package/.cerber-example/connections/contracts/pricing-to-booking.json +37 -0
  5. package/.cerber-example/modules/booking-calendar/MODULE.md +225 -0
  6. package/.cerber-example/modules/booking-calendar/contract.json +106 -0
  7. package/.cerber-example/modules/booking-calendar/dependencies.json +8 -0
  8. package/.cerber-example/modules/pricing-engine/MODULE.md +160 -0
  9. package/.cerber-example/modules/pricing-engine/contract.json +64 -0
  10. package/.cerber-example/modules/pricing-engine/dependencies.json +8 -0
  11. package/CHANGELOG.md +68 -0
  12. package/LICENSE +21 -0
  13. package/README.md +1379 -0
  14. package/bin/cerber +105 -0
  15. package/bin/cerber-focus +31 -0
  16. package/bin/cerber-guardian +90 -0
  17. package/bin/cerber-health +113 -0
  18. package/bin/cerber-morning +19 -0
  19. package/bin/cerber-repair +21 -0
  20. package/dist/cerber/index.d.ts +47 -0
  21. package/dist/cerber/index.d.ts.map +1 -0
  22. package/dist/cerber/index.js +154 -0
  23. package/dist/cerber/index.js.map +1 -0
  24. package/dist/guardian/index.d.ts +70 -0
  25. package/dist/guardian/index.d.ts.map +1 -0
  26. package/dist/guardian/index.js +271 -0
  27. package/dist/guardian/index.js.map +1 -0
  28. package/dist/index.d.ts +9 -0
  29. package/dist/index.d.ts.map +1 -0
  30. package/dist/index.js +9 -0
  31. package/dist/index.js.map +1 -0
  32. package/dist/types.d.ts +76 -0
  33. package/dist/types.d.ts.map +1 -0
  34. package/dist/types.js +5 -0
  35. package/dist/types.js.map +1 -0
  36. package/examples/backend-schema.ts +72 -0
  37. package/examples/frontend-schema.ts +67 -0
  38. package/examples/health-checks.ts +196 -0
  39. package/examples/solo-integration/README.md +457 -0
  40. package/examples/solo-integration/package.json +47 -0
  41. package/examples/team-integration/README.md +347 -0
  42. package/examples/team-integration/package.json +23 -0
  43. package/package.json +104 -0
  44. package/solo/README.md +258 -0
  45. package/solo/config/performance-budget.json +53 -0
  46. package/solo/config/solo-contract.json +71 -0
  47. package/solo/lib/feature-flags.ts +177 -0
  48. package/solo/scripts/cerber-auto-repair.js +260 -0
  49. package/solo/scripts/cerber-daily-check.js +282 -0
  50. package/solo/scripts/cerber-dashboard.js +191 -0
  51. package/solo/scripts/cerber-deps-health.js +247 -0
  52. package/solo/scripts/cerber-docs-sync.js +304 -0
  53. package/solo/scripts/cerber-flags-check.js +229 -0
  54. package/solo/scripts/cerber-performance-budget.js +271 -0
  55. package/solo/scripts/cerber-rollback.js +229 -0
  56. package/solo/scripts/cerber-snapshot.js +319 -0
  57. package/team/README.md +327 -0
  58. package/team/config/team-contract.json +27 -0
  59. package/team/lib/module-system.ts +157 -0
  60. package/team/scripts/cerber-add-module.sh +195 -0
  61. package/team/scripts/cerber-connections-check.sh +186 -0
  62. package/team/scripts/cerber-focus.sh +170 -0
  63. package/team/scripts/cerber-module-check.sh +165 -0
  64. package/team/scripts/cerber-team-morning.sh +210 -0
  65. package/team/templates/BIBLE_TEMPLATE.md +52 -0
  66. package/team/templates/CONNECTION_TEMPLATE.json +20 -0
  67. package/team/templates/MODULE_TEMPLATE.md +60 -0
@@ -0,0 +1,170 @@
1
+ #!/bin/bash
2
+ # Cerber TEAM - Focus Mode
3
+ #
4
+ # Author: Stefan Pitek
5
+ # Copyright: 2026 Stefan Pitek
6
+ # License: MIT
7
+ #
8
+ # Creates FOCUS_CONTEXT.md with all relevant information for a single module
9
+ # This allows AI to work with 500 LOC instead of 10,000 LOC (10x faster)
10
+
11
+ set -e
12
+
13
+ # Colors for output
14
+ RED='\033[0;31m'
15
+ GREEN='\033[0;32m'
16
+ YELLOW='\033[1;33m'
17
+ BLUE='\033[0;34m'
18
+ CYAN='\033[0;36m'
19
+ NC='\033[0m' # No Color
20
+
21
+ # Check if module name provided
22
+ if [ -z "$1" ]; then
23
+ echo -e "${RED}❌ Error: Module name required${NC}"
24
+ echo ""
25
+ echo "Usage: bash team/scripts/cerber-focus.sh <module-name>"
26
+ echo ""
27
+ echo "Example:"
28
+ echo " bash team/scripts/cerber-focus.sh pricing-engine"
29
+ exit 1
30
+ fi
31
+
32
+ MODULE_NAME="$1"
33
+ MODULE_DIR=".cerber/modules/${MODULE_NAME}"
34
+ OUTPUT_FILE=".cerber/FOCUS_CONTEXT.md"
35
+
36
+ # Check if module exists
37
+ if [ ! -d "$MODULE_DIR" ]; then
38
+ echo -e "${RED}❌ Error: Module '${MODULE_NAME}' not found${NC}"
39
+ echo ""
40
+ echo "Module directory does not exist: ${MODULE_DIR}"
41
+ echo ""
42
+ echo "Available modules:"
43
+ if [ -d ".cerber/modules" ]; then
44
+ ls -1 .cerber/modules/ 2>/dev/null || echo " (none)"
45
+ else
46
+ echo " (none - .cerber/modules directory not found)"
47
+ fi
48
+ echo ""
49
+ echo "Create a new module with:"
50
+ echo " bash team/scripts/cerber-add-module.sh ${MODULE_NAME}"
51
+ exit 1
52
+ fi
53
+
54
+ # Create .cerber directory if it doesn't exist
55
+ mkdir -p .cerber
56
+
57
+ # Start building focus context
58
+ echo "# FOCUS CONTEXT - ${MODULE_NAME}" > "$OUTPUT_FILE"
59
+ echo "" >> "$OUTPUT_FILE"
60
+ echo "**Generated:** $(date '+%Y-%m-%d %H:%M:%S')" >> "$OUTPUT_FILE"
61
+ echo "**Module:** ${MODULE_NAME}" >> "$OUTPUT_FILE"
62
+ echo "" >> "$OUTPUT_FILE"
63
+ echo "---" >> "$OUTPUT_FILE"
64
+ echo "" >> "$OUTPUT_FILE"
65
+
66
+ # Add MODULE.md (required)
67
+ if [ -f "${MODULE_DIR}/MODULE.md" ]; then
68
+ echo "## Module Documentation" >> "$OUTPUT_FILE"
69
+ echo "" >> "$OUTPUT_FILE"
70
+ cat "${MODULE_DIR}/MODULE.md" >> "$OUTPUT_FILE"
71
+ echo "" >> "$OUTPUT_FILE"
72
+ echo "---" >> "$OUTPUT_FILE"
73
+ echo "" >> "$OUTPUT_FILE"
74
+ else
75
+ echo -e "${RED}❌ Error: ${MODULE_DIR}/MODULE.md not found${NC}"
76
+ echo ""
77
+ echo "MODULE.md is required for focus mode. Create it with:"
78
+ echo " bash team/scripts/cerber-add-module.sh ${MODULE_NAME}"
79
+ exit 1
80
+ fi
81
+
82
+ # Add contract.json
83
+ if [ -f "${MODULE_DIR}/contract.json" ]; then
84
+ echo "## Module Contract (Public Interface)" >> "$OUTPUT_FILE"
85
+ echo "" >> "$OUTPUT_FILE"
86
+ echo '```json' >> "$OUTPUT_FILE"
87
+ cat "${MODULE_DIR}/contract.json" >> "$OUTPUT_FILE"
88
+ echo "" >> "$OUTPUT_FILE"
89
+ echo '```' >> "$OUTPUT_FILE"
90
+ echo "" >> "$OUTPUT_FILE"
91
+ echo "---" >> "$OUTPUT_FILE"
92
+ echo "" >> "$OUTPUT_FILE"
93
+ else
94
+ echo -e "${YELLOW}⚠️ Warning: ${MODULE_DIR}/contract.json not found${NC}"
95
+ fi
96
+
97
+ # Add dependencies.json
98
+ if [ -f "${MODULE_DIR}/dependencies.json" ]; then
99
+ echo "## Module Dependencies" >> "$OUTPUT_FILE"
100
+ echo "" >> "$OUTPUT_FILE"
101
+ echo '```json' >> "$OUTPUT_FILE"
102
+ cat "${MODULE_DIR}/dependencies.json" >> "$OUTPUT_FILE"
103
+ echo "" >> "$OUTPUT_FILE"
104
+ echo '```' >> "$OUTPUT_FILE"
105
+ echo "" >> "$OUTPUT_FILE"
106
+ echo "---" >> "$OUTPUT_FILE"
107
+ echo "" >> "$OUTPUT_FILE"
108
+ else
109
+ echo -e "${YELLOW}⚠️ Warning: ${MODULE_DIR}/dependencies.json not found${NC}"
110
+ fi
111
+
112
+ # Find and add connection contracts
113
+ CONNECTIONS_DIR=".cerber/connections/contracts"
114
+ if [ -d "$CONNECTIONS_DIR" ]; then
115
+ # Find contracts that mention this module
116
+ FOUND_CONNECTIONS=false
117
+
118
+ echo "## Connection Contracts" >> "$OUTPUT_FILE"
119
+ echo "" >> "$OUTPUT_FILE"
120
+
121
+ for contract in "$CONNECTIONS_DIR"/*.json; do
122
+ if [ -f "$contract" ]; then
123
+ # Check if this contract involves our module
124
+ if grep -q "\"${MODULE_NAME}\"" "$contract" 2>/dev/null; then
125
+ if [ "$FOUND_CONNECTIONS" = false ]; then
126
+ FOUND_CONNECTIONS=true
127
+ fi
128
+
129
+ CONTRACT_NAME=$(basename "$contract")
130
+ echo "### ${CONTRACT_NAME}" >> "$OUTPUT_FILE"
131
+ echo "" >> "$OUTPUT_FILE"
132
+ echo '```json' >> "$OUTPUT_FILE"
133
+ cat "$contract" >> "$OUTPUT_FILE"
134
+ echo "" >> "$OUTPUT_FILE"
135
+ echo '```' >> "$OUTPUT_FILE"
136
+ echo "" >> "$OUTPUT_FILE"
137
+ fi
138
+ fi
139
+ done
140
+
141
+ if [ "$FOUND_CONNECTIONS" = false ]; then
142
+ echo "*No connection contracts found for this module.*" >> "$OUTPUT_FILE"
143
+ echo "" >> "$OUTPUT_FILE"
144
+ fi
145
+
146
+ echo "---" >> "$OUTPUT_FILE"
147
+ echo "" >> "$OUTPUT_FILE"
148
+ fi
149
+
150
+ # Calculate statistics
151
+ LINE_COUNT=$(wc -l < "$OUTPUT_FILE")
152
+ CHAR_COUNT=$(wc -c < "$OUTPUT_FILE")
153
+
154
+ # Output success message
155
+ echo ""
156
+ echo -e "${GREEN}✅ Focus context created successfully!${NC}"
157
+ echo ""
158
+ echo -e "${CYAN}📖 Focus context: ${OUTPUT_FILE}${NC}"
159
+ echo -e "${CYAN}📊 Context contains ${LINE_COUNT} lines (${CHAR_COUNT} characters)${NC}"
160
+ echo ""
161
+ echo -e "${BLUE}🤖 AI can now work with focused context instead of entire codebase${NC}"
162
+ echo -e "${BLUE} This is typically 10x faster for AI processing${NC}"
163
+ echo ""
164
+ echo -e "Next steps:"
165
+ echo -e " 1. View context: ${CYAN}cat ${OUTPUT_FILE}${NC}"
166
+ echo -e " 2. Share with AI for focused work on ${MODULE_NAME}"
167
+ echo -e " 3. Validate module: ${CYAN}bash team/scripts/cerber-module-check.sh ${MODULE_NAME}${NC}"
168
+ echo ""
169
+
170
+ exit 0
@@ -0,0 +1,165 @@
1
+ #!/bin/bash
2
+ # Cerber TEAM - Module Validation
3
+ #
4
+ # Author: Stefan Pitek
5
+ # Copyright: 2026 Stefan Pitek
6
+ # License: MIT
7
+ #
8
+ # Validates a single module for compliance with module system requirements
9
+
10
+ set -e
11
+
12
+ # Colors for output
13
+ RED='\033[0;31m'
14
+ GREEN='\033[0;32m'
15
+ YELLOW='\033[1;33m'
16
+ BLUE='\033[0;34m'
17
+ NC='\033[0m' # No Color
18
+
19
+ # Check if module name provided
20
+ if [ -z "$1" ]; then
21
+ echo -e "${RED}❌ Error: Module name required${NC}"
22
+ echo ""
23
+ echo "Usage: bash team/scripts/cerber-module-check.sh <module-name>"
24
+ echo ""
25
+ echo "Example:"
26
+ echo " bash team/scripts/cerber-module-check.sh pricing-engine"
27
+ exit 1
28
+ fi
29
+
30
+ MODULE_NAME="$1"
31
+ MODULE_DIR=".cerber/modules/${MODULE_NAME}"
32
+ ERRORS=0
33
+ WARNINGS=0
34
+
35
+ echo ""
36
+ echo "🔍 Validating module: ${MODULE_NAME}"
37
+ echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
38
+ echo ""
39
+
40
+ # Check if module exists
41
+ if [ ! -d "$MODULE_DIR" ]; then
42
+ echo -e "${RED}❌ Module directory not found: ${MODULE_DIR}${NC}"
43
+ exit 1
44
+ fi
45
+
46
+ # Check MODULE.md exists
47
+ if [ -f "${MODULE_DIR}/MODULE.md" ]; then
48
+ echo -e "${GREEN}✅${NC} MODULE.md exists"
49
+
50
+ # Check if MODULE.md has required sections
51
+ if grep -q "## Purpose" "${MODULE_DIR}/MODULE.md" && \
52
+ grep -q "## Responsibilities" "${MODULE_DIR}/MODULE.md" && \
53
+ grep -q "## Public Interface" "${MODULE_DIR}/MODULE.md"; then
54
+ echo -e "${GREEN}✅${NC} MODULE.md has required sections"
55
+ else
56
+ echo -e "${YELLOW}⚠️${NC} MODULE.md missing required sections (Purpose, Responsibilities, Public Interface)"
57
+ WARNINGS=$((WARNINGS + 1))
58
+ fi
59
+
60
+ # Check if MODULE.md is not just template
61
+ if grep -q "\[MODULE_NAME\]" "${MODULE_DIR}/MODULE.md"; then
62
+ echo -e "${YELLOW}⚠️${NC} MODULE.md appears to be unmodified template"
63
+ WARNINGS=$((WARNINGS + 1))
64
+ fi
65
+ else
66
+ echo -e "${RED}❌${NC} MODULE.md missing"
67
+ ERRORS=$((ERRORS + 1))
68
+ fi
69
+
70
+ # Check contract.json exists and is valid JSON
71
+ if [ -f "${MODULE_DIR}/contract.json" ]; then
72
+ echo -e "${GREEN}✅${NC} contract.json exists"
73
+
74
+ # Validate JSON syntax
75
+ if python3 -m json.tool "${MODULE_DIR}/contract.json" >/dev/null 2>&1 || \
76
+ node -e "JSON.parse(require('fs').readFileSync('${MODULE_DIR}/contract.json', 'utf8'))" 2>/dev/null; then
77
+ echo -e "${GREEN}✅${NC} contract.json is valid JSON"
78
+
79
+ # Check required fields
80
+ if grep -q '"version"' "${MODULE_DIR}/contract.json" && \
81
+ grep -q '"publicInterface"' "${MODULE_DIR}/contract.json"; then
82
+ echo -e "${GREEN}✅${NC} contract.json has required fields"
83
+ else
84
+ echo -e "${YELLOW}⚠️${NC} contract.json missing required fields (version, publicInterface)"
85
+ WARNINGS=$((WARNINGS + 1))
86
+ fi
87
+ else
88
+ echo -e "${RED}❌${NC} contract.json has invalid JSON syntax"
89
+ ERRORS=$((ERRORS + 1))
90
+ fi
91
+ else
92
+ echo -e "${RED}❌${NC} contract.json missing"
93
+ ERRORS=$((ERRORS + 1))
94
+ fi
95
+
96
+ # Check dependencies.json exists and is valid JSON
97
+ if [ -f "${MODULE_DIR}/dependencies.json" ]; then
98
+ echo -e "${GREEN}✅${NC} dependencies.json exists"
99
+
100
+ # Validate JSON syntax
101
+ if python3 -m json.tool "${MODULE_DIR}/dependencies.json" >/dev/null 2>&1 || \
102
+ node -e "JSON.parse(require('fs').readFileSync('${MODULE_DIR}/dependencies.json', 'utf8'))" 2>/dev/null; then
103
+ echo -e "${GREEN}✅${NC} dependencies.json is valid JSON"
104
+
105
+ # Check if dependencies reference valid modules
106
+ if [ -f "${MODULE_DIR}/dependencies.json" ]; then
107
+ # Extract dependency names (assuming array format)
108
+ deps=$(grep -o '"[^"]*"' "${MODULE_DIR}/dependencies.json" | tr -d '"' | grep -v "dependencies" || echo "")
109
+ if [ -n "$deps" ]; then
110
+ ALL_DEPS_VALID=true
111
+ for dep in $deps; do
112
+ if [ -d ".cerber/modules/${dep}" ]; then
113
+ : # Dependency exists
114
+ else
115
+ echo -e "${YELLOW}⚠️${NC} Dependency '${dep}' not found in .cerber/modules/"
116
+ WARNINGS=$((WARNINGS + 1))
117
+ ALL_DEPS_VALID=false
118
+ fi
119
+ done
120
+ if [ "$ALL_DEPS_VALID" = true ]; then
121
+ echo -e "${GREEN}✅${NC} All dependencies reference valid modules"
122
+ fi
123
+ fi
124
+ fi
125
+ else
126
+ echo -e "${RED}❌${NC} dependencies.json has invalid JSON syntax"
127
+ ERRORS=$((ERRORS + 1))
128
+ fi
129
+ else
130
+ echo -e "${YELLOW}⚠️${NC} dependencies.json missing (optional but recommended)"
131
+ WARNINGS=$((WARNINGS + 1))
132
+ fi
133
+
134
+ # Check for forbidden cross-module imports (if source files exist)
135
+ # This is a placeholder - would need to know actual source directory structure
136
+ if [ -d "src/modules/${MODULE_NAME}" ]; then
137
+ echo -e "${BLUE}ℹ️${NC} Source directory found: src/modules/${MODULE_NAME}"
138
+ # Could add more sophisticated import checking here
139
+ fi
140
+
141
+ echo ""
142
+ echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
143
+
144
+ # Summary
145
+ if [ $ERRORS -eq 0 ] && [ $WARNINGS -eq 0 ]; then
146
+ echo -e "${GREEN}✅ MODULE CHECK PASSED${NC}"
147
+ echo ""
148
+ echo "Module '${MODULE_NAME}' is fully compliant!"
149
+ echo ""
150
+ exit 0
151
+ elif [ $ERRORS -eq 0 ]; then
152
+ echo -e "${YELLOW}⚠️ MODULE CHECK PASSED WITH WARNINGS${NC}"
153
+ echo ""
154
+ echo "Found ${WARNINGS} warning(s)"
155
+ echo "Module is functional but could be improved"
156
+ echo ""
157
+ exit 0
158
+ else
159
+ echo -e "${RED}❌ MODULE CHECK FAILED${NC}"
160
+ echo ""
161
+ echo "Found ${ERRORS} error(s) and ${WARNINGS} warning(s)"
162
+ echo "Please fix errors before using this module"
163
+ echo ""
164
+ exit 1
165
+ fi
@@ -0,0 +1,210 @@
1
+ #!/bin/bash
2
+ # Cerber TEAM - Team Morning Dashboard
3
+ #
4
+ # Author: Stefan Pitek
5
+ # Copyright: 2026 Stefan Pitek
6
+ # License: MIT
7
+ #
8
+ # Shows team morning dashboard with module health and assignments
9
+
10
+ set -e
11
+
12
+ # Colors for output
13
+ RED='\033[0;31m'
14
+ GREEN='\033[0;32m'
15
+ YELLOW='\033[1;33m'
16
+ BLUE='\033[0;34m'
17
+ CYAN='\033[0;36m'
18
+ MAGENTA='\033[0;35m'
19
+ BOLD='\033[1m'
20
+ NC='\033[0m' # No Color
21
+
22
+ echo ""
23
+ echo -e "${BOLD}${CYAN}╔═══════════════════════════════════════════════════════════╗${NC}"
24
+ echo -e "${BOLD}${CYAN}║ 🛡️ CERBER TEAM - Morning Dashboard ║${NC}"
25
+ echo -e "${BOLD}${CYAN}╚═══════════════════════════════════════════════════════════╝${NC}"
26
+ echo ""
27
+ echo -e "${BLUE}Date:${NC} $(date '+%A, %B %d, %Y at %H:%M')"
28
+ echo ""
29
+
30
+ # Check if .cerber directory exists
31
+ if [ ! -d ".cerber" ]; then
32
+ echo -e "${YELLOW}⚠️ No .cerber directory found${NC}"
33
+ echo ""
34
+ echo "Initialize Cerber TEAM by creating your first module:"
35
+ echo " bash team/scripts/cerber-add-module.sh my-first-module"
36
+ echo ""
37
+ exit 0
38
+ fi
39
+
40
+ # Module Status
41
+ echo -e "${BOLD}📦 Modules Status${NC}"
42
+ echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
43
+ echo ""
44
+
45
+ if [ -d ".cerber/modules" ]; then
46
+ MODULE_COUNT=$(find .cerber/modules -maxdepth 1 -type d | tail -n +2 | wc -l)
47
+
48
+ if [ "$MODULE_COUNT" -eq 0 ]; then
49
+ echo -e "${BLUE}ℹ️${NC} No modules found"
50
+ echo ""
51
+ echo "Create your first module:"
52
+ echo " bash team/scripts/cerber-add-module.sh my-module"
53
+ else
54
+ echo -e "Total modules: ${GREEN}${MODULE_COUNT}${NC}"
55
+ echo ""
56
+
57
+ # List modules with basic health check
58
+ for module_dir in .cerber/modules/*/; do
59
+ if [ -d "$module_dir" ]; then
60
+ module_name=$(basename "$module_dir")
61
+
62
+ # Quick health check
63
+ HEALTH="✅"
64
+ HEALTH_MSG="Healthy"
65
+
66
+ if [ ! -f "${module_dir}/MODULE.md" ]; then
67
+ HEALTH="⚠️"
68
+ HEALTH_MSG="Missing MODULE.md"
69
+ elif [ ! -f "${module_dir}/contract.json" ]; then
70
+ HEALTH="⚠️"
71
+ HEALTH_MSG="Missing contract.json"
72
+ elif grep -q "\[MODULE_NAME\]" "${module_dir}/MODULE.md" 2>/dev/null; then
73
+ HEALTH="⚠️"
74
+ HEALTH_MSG="Uninitialized template"
75
+ fi
76
+
77
+ # Get owner if available
78
+ OWNER="Unknown"
79
+ if [ -f "${module_dir}/MODULE.md" ]; then
80
+ OWNER=$(grep "^\*\*Owner:\*\*" "${module_dir}/MODULE.md" | sed 's/\*\*Owner:\*\* //' | sed 's/\[Team Member Name\]/Unknown/' | sed 's/\[Your Name\]/Unknown/' || echo "Unknown")
81
+ fi
82
+
83
+ echo -e " ${HEALTH} ${CYAN}${module_name}${NC}"
84
+ echo -e " Owner: ${OWNER}"
85
+ echo -e " Status: ${HEALTH_MSG}"
86
+ echo ""
87
+ fi
88
+ done
89
+ fi
90
+ else
91
+ echo -e "${BLUE}ℹ️${NC} No modules directory found"
92
+ echo ""
93
+ fi
94
+
95
+ # Connection Contracts Status
96
+ echo ""
97
+ echo -e "${BOLD}🔗 Connection Contracts${NC}"
98
+ echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
99
+ echo ""
100
+
101
+ if [ -d ".cerber/connections/contracts" ]; then
102
+ CONTRACT_COUNT=$(find .cerber/connections/contracts -name "*.json" 2>/dev/null | wc -l)
103
+
104
+ if [ "$CONTRACT_COUNT" -eq 0 ]; then
105
+ echo -e "${BLUE}ℹ️${NC} No connection contracts found"
106
+ else
107
+ echo -e "Total connections: ${GREEN}${CONTRACT_COUNT}${NC}"
108
+ echo ""
109
+
110
+ # Quick validation
111
+ VALID=0
112
+ INVALID=0
113
+
114
+ for contract in .cerber/connections/contracts/*.json; do
115
+ if [ -f "$contract" ]; then
116
+ if python3 -m json.tool "$contract" >/dev/null 2>&1 || \
117
+ node -e "JSON.parse(require('fs').readFileSync('$contract', 'utf8'))" 2>/dev/null; then
118
+ VALID=$((VALID + 1))
119
+ else
120
+ INVALID=$((INVALID + 1))
121
+ fi
122
+ fi
123
+ done
124
+
125
+ echo -e " ${GREEN}✅${NC} Valid: ${VALID}"
126
+ if [ $INVALID -gt 0 ]; then
127
+ echo -e " ${RED}❌${NC} Invalid: ${INVALID}"
128
+ fi
129
+ fi
130
+ else
131
+ echo -e "${BLUE}ℹ️${NC} No connections directory found"
132
+ fi
133
+
134
+ # Recent Activity
135
+ echo ""
136
+ echo -e "${BOLD}📊 Recent Activity${NC}"
137
+ echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
138
+ echo ""
139
+
140
+ if [ -d ".cerber/modules" ]; then
141
+ # Find most recently modified modules
142
+ echo "Recently updated modules:"
143
+ echo ""
144
+
145
+ find .cerber/modules -name "MODULE.md" -type f -exec ls -lt {} + 2>/dev/null | head -5 | while read -r line; do
146
+ file=$(echo "$line" | awk '{print $NF}')
147
+ module=$(echo "$file" | sed 's|.cerber/modules/||' | sed 's|/MODULE.md||')
148
+ mod_time=$(echo "$line" | awk '{print $6, $7, $8}')
149
+
150
+ if [ -n "$module" ]; then
151
+ echo -e " ${CYAN}${module}${NC} - Last modified: ${mod_time}"
152
+ fi
153
+ done
154
+ else
155
+ echo -e "${BLUE}ℹ️${NC} No activity to show"
156
+ fi
157
+
158
+ # Quick Actions
159
+ echo ""
160
+ echo ""
161
+ echo -e "${BOLD}🚀 Quick Actions${NC}"
162
+ echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
163
+ echo ""
164
+ echo " Create module: bash team/scripts/cerber-add-module.sh <name>"
165
+ echo " Focus on module: bash team/scripts/cerber-focus.sh <name>"
166
+ echo " Check module: bash team/scripts/cerber-module-check.sh <name>"
167
+ echo " Check connections: bash team/scripts/cerber-connections-check.sh"
168
+ echo ""
169
+
170
+ # Recommendations
171
+ echo -e "${BOLD}💡 Today's Focus${NC}"
172
+ echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
173
+ echo ""
174
+
175
+ # Check for issues that need attention
176
+ NEEDS_ATTENTION=false
177
+
178
+ if [ -d ".cerber/modules" ]; then
179
+ for module_dir in .cerber/modules/*/; do
180
+ if [ -d "$module_dir" ]; then
181
+ module_name=$(basename "$module_dir")
182
+
183
+ if [ ! -f "${module_dir}/MODULE.md" ] || [ ! -f "${module_dir}/contract.json" ]; then
184
+ if [ "$NEEDS_ATTENTION" = false ]; then
185
+ echo -e "${YELLOW}Modules needing attention:${NC}"
186
+ NEEDS_ATTENTION=true
187
+ fi
188
+ echo -e " • ${module_name} - incomplete setup"
189
+ elif grep -q "\[MODULE_NAME\]" "${module_dir}/MODULE.md" 2>/dev/null; then
190
+ if [ "$NEEDS_ATTENTION" = false ]; then
191
+ echo -e "${YELLOW}Modules needing attention:${NC}"
192
+ NEEDS_ATTENTION=true
193
+ fi
194
+ echo -e " • ${module_name} - template not customized"
195
+ fi
196
+ fi
197
+ done
198
+ fi
199
+
200
+ if [ "$NEEDS_ATTENTION" = false ]; then
201
+ echo -e "${GREEN}✅ All modules are in good shape!${NC}"
202
+ echo ""
203
+ echo "Ready to build great things today! 🚀"
204
+ fi
205
+
206
+ echo ""
207
+ echo -e "${BOLD}${CYAN}═══════════════════════════════════════════════════════════${NC}"
208
+ echo ""
209
+
210
+ exit 0
@@ -0,0 +1,52 @@
1
+ # PROJECT BIBLE - Master Map
2
+
3
+ **Project:** [Project Name]
4
+ **Owner:** Stefan Pitek
5
+ **Last Updated:** YYYY-MM-DD
6
+
7
+ ## Architecture Overview
8
+
9
+ ```
10
+ ┌─────────────────────────────────────────┐
11
+ │ Frontend (React/Next.js) │
12
+ └─────────────────┬───────────────────────┘
13
+
14
+
15
+ ┌─────────────────────────────────────────┐
16
+ │ API Layer (Express) │
17
+ └─────────────────┬───────────────────────┘
18
+
19
+ ┌─────────┼─────────┐
20
+ ▼ ▼ ▼
21
+ Module A Module B Module C
22
+ ```
23
+
24
+ ## Modules Index
25
+
26
+ ### Core Modules
27
+
28
+ 1. **module-a** - Purpose
29
+ - Owner: Name
30
+ - Status: Active
31
+ - Files: `src/modules/module-a/`
32
+
33
+ 2. **module-b** - Purpose
34
+ - Owner: Name
35
+ - Status: Active
36
+ - Files: `src/modules/module-b/`
37
+
38
+ ## Connections Map
39
+
40
+ - `module-a` → `module-b`: processData()
41
+ - `module-b` → `module-c`: validateInput()
42
+
43
+ ## Team Responsibilities
44
+
45
+ - **Developer A**: module-a, module-d
46
+ - **Developer B**: module-b, module-c
47
+
48
+ ## Tech Stack
49
+
50
+ - Backend: Node.js, Express, TypeScript
51
+ - Database: PostgreSQL, Redis
52
+ - Testing: Jest, Supertest
@@ -0,0 +1,20 @@
1
+ {
2
+ "id": "module-a-to-module-b",
3
+ "from": "module-a",
4
+ "to": "module-b",
5
+ "type": "function-call",
6
+ "interface": {
7
+ "function": "processData",
8
+ "input": {
9
+ "type": "ProcessParams",
10
+ "fields": ["userId", "data"]
11
+ },
12
+ "output": {
13
+ "type": "ProcessResult",
14
+ "fields": ["success", "result"]
15
+ }
16
+ },
17
+ "version": "1.0.0",
18
+ "breaking_changes": [],
19
+ "notes": ""
20
+ }
@@ -0,0 +1,60 @@
1
+ # Module: [MODULE_NAME]
2
+
3
+ **Owner:** [Team Member Name]
4
+ **Status:** Active
5
+ **Last Updated:** YYYY-MM-DD
6
+
7
+ ## Purpose
8
+
9
+ What this module does (1-2 sentences).
10
+
11
+ ## Responsibilities
12
+
13
+ - Responsibility 1
14
+ - Responsibility 2
15
+
16
+ ## Public Interface
17
+
18
+ Functions/classes that other modules can use:
19
+
20
+ ### `functionName(params: Type): ReturnType`
21
+
22
+ Description of what it does.
23
+
24
+ **Parameters:**
25
+ - `param1` - Description
26
+
27
+ **Returns:**
28
+ - Description
29
+
30
+ **Example:**
31
+ ```typescript
32
+ import { functionName } from './modules/[MODULE_NAME]';
33
+ const result = functionName({ ... });
34
+ ```
35
+
36
+ ## Dependencies
37
+
38
+ Modules this module uses:
39
+ - `module-a` - Why we use it
40
+ - `module-b` - Why we use it
41
+
42
+ ## File Structure
43
+
44
+ ```
45
+ src/modules/module-name/
46
+ ├── index.ts - Public interface
47
+ ├── core.ts - Core logic
48
+ └── types.ts - Type definitions
49
+ ```
50
+
51
+ ## Testing
52
+
53
+ How to test this module:
54
+ ```bash
55
+ npm test -- module-name
56
+ ```
57
+
58
+ ## Notes
59
+
60
+ Any special considerations, gotchas, or future plans.