@hybridlabor-api/aos 4.8.0 → 4.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.
Files changed (186) hide show
  1. package/.agents/{agents.md → AGENTS.md} +3 -1
  2. package/.agents/nodes.json +3 -1
  3. package/.agents/vendor-manifest.json +23 -1
  4. package/.claude/agents/godmode-media-eventtech.md +1 -1
  5. package/.claude/hooks/conventional-commits.mjs +125 -0
  6. package/.claude/hooks/env-file-protection.mjs +105 -0
  7. package/.claude/hooks/go-gate.mjs +101 -81
  8. package/.claude/hooks/memb-inject.mjs +29 -1
  9. package/.claude/settings.json +13 -0
  10. package/.claude/workflows/startcycle-dispatch.mjs +23 -1
  11. package/.opencode/agents/godmode-media-eventtech.md +1 -1
  12. package/.opencode/plugins/bdb-aos.js +31 -4
  13. package/CLAUDE.md +0 -571
  14. package/README.de.md +1 -1
  15. package/README.md +1 -1
  16. package/README.pt.md +1 -1
  17. package/THIRD_PARTY_NOTICES.md +126 -0
  18. package/bin/aos-doctor.mjs +1 -1
  19. package/docs/skills_table.md +1 -1
  20. package/installer.js +187 -55
  21. package/package.json +7 -3
  22. package/packages/aos-cli/README.md +80 -0
  23. package/packages/aos-cli/bin/aos-cli.mjs +134 -0
  24. package/packages/aos-cli/core-skills.json +12 -0
  25. package/packages/aos-cli/extensions/aos.ts +321 -0
  26. package/packages/aos-cli/package-lock.json +1923 -0
  27. package/packages/aos-cli/package.json +29 -0
  28. package/packages/aos-cli/scripts/check-theme.mjs +63 -0
  29. package/packages/aos-cli/themes/aos.json +97 -0
  30. package/scripts/build-plugin-manifest.mjs +131 -0
  31. package/scripts/validate-skills.mjs +81 -6
  32. package/skills/basic/ao-orchestrator/SKILL.md +116 -0
  33. package/skills/basic/bdb-eventagency-skill/SKILL.md +252 -0
  34. package/skills/basic/bdb-shipping-skill/SKILL.md +161 -0
  35. package/skills/basic/godmode-eventtech/SKILL.md +4 -1
  36. package/skills/global_config/agenttrail/SKILL.md +6 -1
  37. package/skills/global_config/aos-project-init/SKILL.md +2 -0
  38. package/skills/global_config/aos-project-init/assets/AGENTS.template.md +1 -1
  39. package/skills/global_config/aos-project-init/scripts/aos-project-doctor.mjs +1 -1
  40. package/skills/global_config/aos-setup/SKILL.md +1 -1
  41. package/skills/global_config/aos-setup/scripts/aos-doctor.mjs +1 -1
  42. package/skills/global_config/ask-tim/SKILL.md +7 -7
  43. package/skills/global_config/bash-script-generator/SKILL.md +201 -0
  44. package/skills/global_config/bash-script-generator/assets/templates/standard-template.sh +96 -0
  45. package/skills/global_config/bash-script-generator/docs/bash-scripting-guide.md +729 -0
  46. package/skills/global_config/bash-script-generator/docs/generation-best-practices.md +193 -0
  47. package/skills/global_config/bash-script-generator/docs/script-patterns.md +566 -0
  48. package/skills/global_config/bash-script-generator/docs/text-processing-guide.md +437 -0
  49. package/skills/global_config/bash-script-generator/examples/log-analyzer.sh +92 -0
  50. package/skills/global_config/bash-script-generator/scripts/generate_script_template.sh +123 -0
  51. package/skills/global_config/bash-script-generator/scripts/run_ci_checks.sh +172 -0
  52. package/skills/global_config/bash-script-generator/scripts/test_generator.sh +413 -0
  53. package/skills/global_config/bash-script-validator/SKILL.md +249 -0
  54. package/skills/global_config/bash-script-validator/docs/awk-reference.md +449 -0
  55. package/skills/global_config/bash-script-validator/docs/bash-reference.md +468 -0
  56. package/skills/global_config/bash-script-validator/docs/common-mistakes.md +623 -0
  57. package/skills/global_config/bash-script-validator/docs/grep-reference.md +395 -0
  58. package/skills/global_config/bash-script-validator/docs/regex-reference.md +391 -0
  59. package/skills/global_config/bash-script-validator/docs/sed-reference.md +454 -0
  60. package/skills/global_config/bash-script-validator/docs/shell-reference.md +463 -0
  61. package/skills/global_config/bash-script-validator/docs/shellcheck-reference.md +399 -0
  62. package/skills/global_config/bash-script-validator/examples/bad-bash.sh +55 -0
  63. package/skills/global_config/bash-script-validator/examples/bad-shell.sh +54 -0
  64. package/skills/global_config/bash-script-validator/examples/good-bash.sh +71 -0
  65. package/skills/global_config/bash-script-validator/examples/good-shell.sh +69 -0
  66. package/skills/global_config/bash-script-validator/scripts/run_ci_checks.sh +23 -0
  67. package/skills/global_config/bash-script-validator/scripts/shellcheck_wrapper.sh +174 -0
  68. package/skills/global_config/bash-script-validator/scripts/test_validate.sh +446 -0
  69. package/skills/global_config/bash-script-validator/scripts/validate.sh +512 -0
  70. package/skills/global_config/ci-pipeline/SKILL.md +135 -0
  71. package/skills/global_config/deja-memory/SKILL.md +3 -1
  72. package/skills/global_config/dispatching-parallel-agents/SKILL.md +170 -0
  73. package/skills/global_config/dockerfile-generator/SKILL.md +1038 -0
  74. package/skills/global_config/dockerfile-generator/examples/example.dockerignore +95 -0
  75. package/skills/global_config/dockerfile-generator/examples/golang-distroless.Dockerfile +34 -0
  76. package/skills/global_config/dockerfile-generator/examples/java-springboot.Dockerfile +45 -0
  77. package/skills/global_config/dockerfile-generator/examples/nextjs-production.Dockerfile +49 -0
  78. package/skills/global_config/dockerfile-generator/examples/nodejs-multistage.Dockerfile +55 -0
  79. package/skills/global_config/dockerfile-generator/examples/python-fastapi.Dockerfile +48 -0
  80. package/skills/global_config/dockerfile-generator/references/language_specific_guides.md +510 -0
  81. package/skills/global_config/dockerfile-generator/references/multistage_builds.md +570 -0
  82. package/skills/global_config/dockerfile-generator/references/optimization_patterns.md +492 -0
  83. package/skills/global_config/dockerfile-generator/references/security_best_practices.md +375 -0
  84. package/skills/global_config/dockerfile-generator/scripts/generate_dockerignore.sh +199 -0
  85. package/skills/global_config/dockerfile-generator/scripts/generate_golang.sh +172 -0
  86. package/skills/global_config/dockerfile-generator/scripts/generate_java.sh +185 -0
  87. package/skills/global_config/dockerfile-generator/scripts/generate_nodejs.sh +279 -0
  88. package/skills/global_config/dockerfile-generator/scripts/generate_python.sh +218 -0
  89. package/skills/global_config/dockerfile-generator/scripts/test_generator.sh +210 -0
  90. package/skills/global_config/dockerfile-validator/SKILL.md +300 -0
  91. package/skills/global_config/dockerfile-validator/examples/.dockerignore.example +34 -0
  92. package/skills/global_config/dockerfile-validator/examples/bad-example.Dockerfile +37 -0
  93. package/skills/global_config/dockerfile-validator/examples/golang-distroless.Dockerfile +50 -0
  94. package/skills/global_config/dockerfile-validator/examples/good-example.Dockerfile +52 -0
  95. package/skills/global_config/dockerfile-validator/examples/python-optimized.Dockerfile +53 -0
  96. package/skills/global_config/dockerfile-validator/examples/security-issues.Dockerfile +42 -0
  97. package/skills/global_config/dockerfile-validator/references/docker_best_practices.md +348 -0
  98. package/skills/global_config/dockerfile-validator/references/optimization_guide.md +473 -0
  99. package/skills/global_config/dockerfile-validator/references/security_checklist.md +208 -0
  100. package/skills/global_config/dockerfile-validator/scripts/dockerfile-validate.sh +699 -0
  101. package/skills/global_config/dockerfile-validator/scripts/test_validate.sh +35 -0
  102. package/skills/global_config/dockerfile-validator/tests/fixtures/copy-before-yarn-lock-read.Dockerfile +6 -0
  103. package/skills/global_config/dockerfile-validator/tests/fixtures/copy-before-yarn.Dockerfile +6 -0
  104. package/skills/global_config/dockerfile-validator/tests/fixtures/from-platform-nonroot.Dockerfile +7 -0
  105. package/skills/global_config/dockerfile-validator/tests/test_regression.sh +164 -0
  106. package/skills/global_config/finishing-a-development-branch/SKILL.md +228 -0
  107. package/skills/global_config/github-actions-generator/SKILL.md +353 -0
  108. package/skills/global_config/github-actions-generator/assets/templates/action/composite/action.yml +82 -0
  109. package/skills/global_config/github-actions-generator/assets/templates/action/docker/Dockerfile +25 -0
  110. package/skills/global_config/github-actions-generator/assets/templates/action/docker/action.yml +42 -0
  111. package/skills/global_config/github-actions-generator/assets/templates/action/docker/entrypoint.sh +27 -0
  112. package/skills/global_config/github-actions-generator/assets/templates/action/javascript/action.yml +33 -0
  113. package/skills/global_config/github-actions-generator/assets/templates/action/javascript/index.js +50 -0
  114. package/skills/global_config/github-actions-generator/assets/templates/action/javascript/package.json +27 -0
  115. package/skills/global_config/github-actions-generator/assets/templates/workflow/basic_workflow.yml +242 -0
  116. package/skills/global_config/github-actions-generator/assets/templates/workflow/reusable_workflow.yml +106 -0
  117. package/skills/global_config/github-actions-generator/examples/README.md +147 -0
  118. package/skills/global_config/github-actions-generator/examples/actions/setup-node-cached/action.yml +93 -0
  119. package/skills/global_config/github-actions-generator/examples/caching/docker-buildkit.yml +256 -0
  120. package/skills/global_config/github-actions-generator/examples/security/dependency-review.yml +62 -0
  121. package/skills/global_config/github-actions-generator/examples/security/sbom-attestation.yml +119 -0
  122. package/skills/global_config/github-actions-generator/examples/triggers/chatops-commands.yml +475 -0
  123. package/skills/global_config/github-actions-generator/examples/triggers/repository-dispatch.yml +418 -0
  124. package/skills/global_config/github-actions-generator/examples/triggers/workflow-orchestration.yml +404 -0
  125. package/skills/global_config/github-actions-generator/examples/workflows/docker-build-push.yml +68 -0
  126. package/skills/global_config/github-actions-generator/examples/workflows/go-ci.yml +161 -0
  127. package/skills/global_config/github-actions-generator/examples/workflows/monorepo-ci.yml +340 -0
  128. package/skills/global_config/github-actions-generator/examples/workflows/multi-environment-deploy.yml +406 -0
  129. package/skills/global_config/github-actions-generator/examples/workflows/nodejs-ci.yml +122 -0
  130. package/skills/global_config/github-actions-generator/examples/workflows/python-ci.yml +157 -0
  131. package/skills/global_config/github-actions-generator/examples/workflows/scheduled-tasks.yml +376 -0
  132. package/skills/global_config/github-actions-generator/references/advanced-triggers.md +917 -0
  133. package/skills/global_config/github-actions-generator/references/best-practices.md +755 -0
  134. package/skills/global_config/github-actions-generator/references/common-actions.md +715 -0
  135. package/skills/global_config/github-actions-generator/references/custom-actions.md +320 -0
  136. package/skills/global_config/github-actions-generator/references/expressions-and-contexts.md +688 -0
  137. package/skills/global_config/github-actions-generator/references/modern-features.md +421 -0
  138. package/skills/global_config/github-actions-generator/scripts/test_generator.sh +344 -0
  139. package/skills/global_config/github-actions-templates/SKILL.md +7 -0
  140. package/skills/global_config/github-actions-validator/SKILL.md +576 -0
  141. package/skills/global_config/github-actions-validator/examples/README.md +88 -0
  142. package/skills/global_config/github-actions-validator/examples/outdated-versions.yml +76 -0
  143. package/skills/global_config/github-actions-validator/examples/valid-ci.yml +79 -0
  144. package/skills/global_config/github-actions-validator/examples/with-errors.yml +47 -0
  145. package/skills/global_config/github-actions-validator/references/act_usage.md +233 -0
  146. package/skills/global_config/github-actions-validator/references/action_versions.md +122 -0
  147. package/skills/global_config/github-actions-validator/references/actionlint_usage.md +343 -0
  148. package/skills/global_config/github-actions-validator/references/common_errors.md +512 -0
  149. package/skills/global_config/github-actions-validator/references/modern_features.md +384 -0
  150. package/skills/global_config/github-actions-validator/references/runners.md +317 -0
  151. package/skills/global_config/github-actions-validator/scripts/install_tools.sh +113 -0
  152. package/skills/global_config/github-actions-validator/scripts/validate_workflow.sh +910 -0
  153. package/skills/global_config/github-actions-validator/tests/test_validate_workflow.sh +237 -0
  154. package/skills/global_config/makefile-generator/SKILL.md +614 -0
  155. package/skills/global_config/makefile-generator/assets/templates/.gitkeep +1 -0
  156. package/skills/global_config/makefile-generator/docs/makefile-structure.md +530 -0
  157. package/skills/global_config/makefile-generator/docs/optimization-guide.md +784 -0
  158. package/skills/global_config/makefile-generator/docs/patterns-guide.md +642 -0
  159. package/skills/global_config/makefile-generator/docs/security-guide.md +361 -0
  160. package/skills/global_config/makefile-generator/docs/targets-guide.md +642 -0
  161. package/skills/global_config/makefile-generator/docs/variables-guide.md +596 -0
  162. package/skills/global_config/makefile-generator/scripts/add_standard_targets.sh +539 -0
  163. package/skills/global_config/makefile-generator/scripts/generate_makefile_template.sh +690 -0
  164. package/skills/global_config/makefile-generator/test/test_helper_scripts.sh +190 -0
  165. package/skills/global_config/makefile-validator/SKILL.md +244 -0
  166. package/skills/global_config/makefile-validator/docs/bake-tool.md +1000 -0
  167. package/skills/global_config/makefile-validator/docs/best-practices.md +858 -0
  168. package/skills/global_config/makefile-validator/docs/common-mistakes.md +944 -0
  169. package/skills/global_config/makefile-validator/examples/bad-makefile.mk +77 -0
  170. package/skills/global_config/makefile-validator/examples/good-makefile.mk +103 -0
  171. package/skills/global_config/makefile-validator/scripts/test_validate.sh +382 -0
  172. package/skills/global_config/makefile-validator/scripts/validate_makefile.sh +712 -0
  173. package/skills/global_config/{MCP_Manage → mcp-manage}/SKILL.md +3 -3
  174. package/skills/global_config/plan-canvas/SKILL.md +9 -2
  175. package/skills/global_config/plan-canvas/scripts/lib/plan-canvas/ui.js +10 -2
  176. package/skills/global_config/plan-canvas/scripts/plan-canvas.js +1 -1
  177. package/skills/global_config/read-the-damn-docs/SKILL.md +175 -0
  178. package/skills/global_config/requesting-code-review/SKILL.md +98 -0
  179. package/skills/global_config/requesting-code-review/code-reviewer.md +198 -0
  180. package/skills/global_config/using-git-worktrees/SKILL.md +170 -0
  181. package/skills/global_config/verification-before-completion/SKILL.md +123 -0
  182. package/skills/global_config/writing-plans/SKILL.md +126 -46
  183. package/skills/global_config/writing-plans-legacy/SKILL.md +152 -0
  184. package/.claude/CLAUDE.md +0 -12
  185. package/mcps/RhinoMCP/docs/content/docs/getting-started/gemini.md +0 -61
  186. /package/{GEMINI.md → RULES.md} +0 -0
@@ -0,0 +1,418 @@
1
+ # Repository Dispatch Example
2
+ # Demonstrates: External API triggers, webhook integration, payload validation, multiple event types
3
+
4
+ name: Handle External Events
5
+
6
+ on:
7
+ repository_dispatch:
8
+ types:
9
+ - deploy-prod
10
+ - deploy-staging
11
+ - deploy-dev
12
+ - run-migration
13
+ - rebuild-cache
14
+ - incident-response
15
+ - custom-task
16
+
17
+ permissions:
18
+ contents: read
19
+ deployments: write
20
+ issues: write
21
+
22
+ env:
23
+ AWS_REGION: 'us-east-1'
24
+
25
+ jobs:
26
+ # Job 1: Handle deployment events
27
+ handle-deployment:
28
+ name: Handle Deployment Event
29
+ if: startsWith(github.event.action, 'deploy-')
30
+ runs-on: ubuntu-latest
31
+ timeout-minutes: 30
32
+
33
+ environment:
34
+ name: ${{ github.event.client_payload.environment || 'staging' }}
35
+
36
+ steps:
37
+ - name: Validate deployment payload
38
+ id: validate
39
+ run: |
40
+ # Required fields validation
41
+ if [[ -z "${{ github.event.client_payload.version }}" ]]; then
42
+ echo "❌ Error: 'version' is required in client_payload"
43
+ exit 1
44
+ fi
45
+
46
+ if [[ -z "${{ github.event.client_payload.environment }}" ]]; then
47
+ echo "❌ Error: 'environment' is required in client_payload"
48
+ exit 1
49
+ fi
50
+
51
+ # Validate environment
52
+ ENV="${{ github.event.client_payload.environment }}"
53
+ if [[ ! "$ENV" =~ ^(dev|staging|production)$ ]]; then
54
+ echo "❌ Error: Invalid environment: $ENV"
55
+ echo "Allowed: dev, staging, production"
56
+ exit 1
57
+ fi
58
+
59
+ # Validate version format (semver)
60
+ VERSION="${{ github.event.client_payload.version }}"
61
+ if [[ ! "$VERSION" =~ ^v[0-9]+\.[0-9]+\.[0-9]+(-[a-zA-Z0-9]+)?$ ]]; then
62
+ echo "⚠️ Warning: Version doesn't match semver format: $VERSION"
63
+ fi
64
+
65
+ echo "environment=$ENV" >> $GITHUB_OUTPUT
66
+ echo "version=$VERSION" >> $GITHUB_OUTPUT
67
+ echo "requestor=${{ github.event.client_payload.requestor || 'unknown' }}" >> $GITHUB_OUTPUT
68
+
69
+ - name: Log deployment request
70
+ run: |
71
+ cat <<EOF
72
+ 📦 Deployment Request Received
73
+
74
+ Event Type: ${{ github.event.action }}
75
+ Version: ${{ steps.validate.outputs.version }}
76
+ Environment: ${{ steps.validate.outputs.environment }}
77
+ Requestor: ${{ steps.validate.outputs.requestor }}
78
+ Rollback: ${{ github.event.client_payload.rollback || 'false' }}
79
+ Force: ${{ github.event.client_payload.force || 'false' }}
80
+
81
+ Payload:
82
+ ${{ toJSON(github.event.client_payload) }}
83
+ EOF
84
+
85
+ - name: Checkout specific version
86
+ uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
87
+ with:
88
+ ref: ${{ steps.validate.outputs.version }}
89
+
90
+ - name: Setup Node.js
91
+ uses: actions/setup-node@6044e13b5dc448c55e2357c09f80417699197238 # v6.2.0
92
+ with:
93
+ node-version: '24'
94
+ cache: 'npm'
95
+
96
+ - name: Install dependencies
97
+ run: npm ci
98
+
99
+ - name: Build application
100
+ env:
101
+ NODE_ENV: production
102
+ ENVIRONMENT: ${{ steps.validate.outputs.environment }}
103
+ run: npm run build
104
+
105
+ - name: Deploy to environment
106
+ env:
107
+ ENVIRONMENT: ${{ steps.validate.outputs.environment }}
108
+ VERSION: ${{ steps.validate.outputs.version }}
109
+ run: |
110
+ echo "🚀 Deploying $VERSION to $ENVIRONMENT"
111
+
112
+ # Deployment logic here
113
+ # Example: AWS, Kubernetes, etc.
114
+
115
+ DEPLOY_URL="https://$ENVIRONMENT.example.com"
116
+ echo "url=$DEPLOY_URL" >> $GITHUB_OUTPUT
117
+
118
+ - name: Create deployment notification issue
119
+ uses: actions/github-script@60a0d83039c74a4aee543508d2ffcb1c3799cdea # v7.0.1
120
+ with:
121
+ script: |
122
+ const environment = '${{ steps.validate.outputs.environment }}';
123
+ const version = '${{ steps.validate.outputs.version }}';
124
+ const requestor = '${{ steps.validate.outputs.requestor }}';
125
+
126
+ await github.rest.issues.create({
127
+ owner: context.repo.owner,
128
+ repo: context.repo.repo,
129
+ title: `Deployment: ${version} to ${environment}`,
130
+ body: `## 🚀 Deployment Summary
131
+
132
+ **Version:** ${version}
133
+ **Environment:** ${environment}
134
+ **Requestor:** ${requestor}
135
+ **Triggered via:** repository_dispatch API
136
+
137
+ **Workflow Run:** https://github.com/${context.repo.owner}/${context.repo.repo}/actions/runs/${context.runId}
138
+
139
+ **URL:** https://${environment}.example.com
140
+
141
+ ✅ Deployment completed successfully
142
+ `,
143
+ labels: ['deployment', environment]
144
+ });
145
+
146
+ # Job 2: Handle migration events
147
+ handle-migration:
148
+ name: Run Database Migration
149
+ if: github.event.action == 'run-migration'
150
+ runs-on: ubuntu-latest
151
+ timeout-minutes: 15
152
+
153
+ environment:
154
+ name: ${{ github.event.client_payload.environment || 'staging' }}
155
+
156
+ steps:
157
+ - name: Validate migration payload
158
+ run: |
159
+ if [[ -z "${{ github.event.client_payload.migration_name }}" ]]; then
160
+ echo "❌ Error: 'migration_name' is required"
161
+ exit 1
162
+ fi
163
+
164
+ if [[ -z "${{ github.event.client_payload.environment }}" ]]; then
165
+ echo "❌ Error: 'environment' is required"
166
+ exit 1
167
+ fi
168
+
169
+ - name: Checkout code
170
+ uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
171
+
172
+ - name: Run migration
173
+ env:
174
+ MIGRATION_NAME: ${{ github.event.client_payload.migration_name }}
175
+ ENVIRONMENT: ${{ github.event.client_payload.environment }}
176
+ run: |
177
+ echo "🔄 Running migration: $MIGRATION_NAME on $ENVIRONMENT"
178
+
179
+ # Migration logic here
180
+ # Example: npm run migrate:up $MIGRATION_NAME
181
+
182
+ echo "✅ Migration completed"
183
+
184
+ # Job 3: Handle cache rebuild
185
+ handle-cache-rebuild:
186
+ name: Rebuild Application Cache
187
+ if: github.event.action == 'rebuild-cache'
188
+ runs-on: ubuntu-latest
189
+ timeout-minutes: 20
190
+
191
+ steps:
192
+ - name: Checkout code
193
+ uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
194
+
195
+ - name: Setup Node.js
196
+ uses: actions/setup-node@6044e13b5dc448c55e2357c09f80417699197238 # v6.2.0
197
+ with:
198
+ node-version: '24'
199
+
200
+ - name: Clear existing cache
201
+ run: |
202
+ echo "🗑️ Clearing cache for: ${{ github.event.client_payload.cache_key || 'all' }}"
203
+ # Clear cache logic
204
+
205
+ - name: Rebuild cache
206
+ run: |
207
+ echo "🔄 Rebuilding cache..."
208
+ npm ci
209
+ npm run build
210
+
211
+ - name: Save cache
212
+ uses: actions/cache/save@0c45773b623bea8c8e75f6c82b208c3cf94ea4f9 # v4.0.2
213
+ with:
214
+ path: |
215
+ ~/.npm
216
+ node_modules
217
+ dist/
218
+ key: cache-rebuild-${{ github.sha }}
219
+
220
+ # Job 4: Handle incident response
221
+ handle-incident:
222
+ name: Incident Response
223
+ if: github.event.action == 'incident-response'
224
+ runs-on: ubuntu-latest
225
+ timeout-minutes: 10
226
+
227
+ steps:
228
+ - name: Parse incident payload
229
+ id: incident
230
+ run: |
231
+ SEVERITY="${{ github.event.client_payload.severity || 'medium' }}"
232
+ MESSAGE="${{ github.event.client_payload.message }}"
233
+ AFFECTED_SERVICE="${{ github.event.client_payload.service }}"
234
+
235
+ echo "severity=$SEVERITY" >> $GITHUB_OUTPUT
236
+ echo "message=$MESSAGE" >> $GITHUB_OUTPUT
237
+ echo "service=$AFFECTED_SERVICE" >> $GITHUB_OUTPUT
238
+
239
+ - name: Create incident issue
240
+ uses: actions/github-script@60a0d83039c74a4aee543508d2ffcb1c3799cdea # v7.0.1
241
+ with:
242
+ script: |
243
+ const severity = '${{ steps.incident.outputs.severity }}';
244
+ const message = '${{ steps.incident.outputs.message }}';
245
+ const service = '${{ steps.incident.outputs.service }}';
246
+
247
+ const severityEmoji = {
248
+ 'critical': '🔴',
249
+ 'high': '🟠',
250
+ 'medium': '🟡',
251
+ 'low': '🟢'
252
+ };
253
+
254
+ const emoji = severityEmoji[severity] || '⚪';
255
+
256
+ const issue = await github.rest.issues.create({
257
+ owner: context.repo.owner,
258
+ repo: context.repo.repo,
259
+ title: `${emoji} Incident: ${service} - ${severity.toUpperCase()}`,
260
+ body: `## Incident Report
261
+
262
+ **Severity:** ${severity.toUpperCase()}
263
+ **Service:** ${service}
264
+ **Message:** ${message}
265
+
266
+ **Triggered:** ${new Date().toISOString()}
267
+ **Source:** Monitoring System (via repository_dispatch)
268
+
269
+ ### Next Steps
270
+ - [ ] Investigate root cause
271
+ - [ ] Implement fix
272
+ - [ ] Deploy fix
273
+ - [ ] Verify resolution
274
+ - [ ] Post-mortem
275
+ `,
276
+ labels: ['incident', severity, 'automated'],
277
+ assignees: context.payload.client_payload.assignees || []
278
+ });
279
+
280
+ console.log(`Created incident issue: ${issue.data.html_url}`);
281
+
282
+ - name: Trigger automated response
283
+ if: steps.incident.outputs.severity == 'critical'
284
+ run: |
285
+ echo "🚨 CRITICAL INCIDENT DETECTED"
286
+ echo "Triggering automated response procedures..."
287
+
288
+ # Automated incident response
289
+ # Example: Scale up services, enable debug mode, alert team
290
+
291
+ # Job 5: Handle custom tasks
292
+ handle-custom-task:
293
+ name: Execute Custom Task
294
+ if: github.event.action == 'custom-task'
295
+ runs-on: ubuntu-latest
296
+ timeout-minutes: 30
297
+
298
+ steps:
299
+ - name: Validate custom task
300
+ run: |
301
+ if [[ -z "${{ github.event.client_payload.task_name }}" ]]; then
302
+ echo "❌ Error: 'task_name' is required"
303
+ exit 1
304
+ fi
305
+
306
+ - name: Checkout code
307
+ uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
308
+
309
+ - name: Execute custom task
310
+ env:
311
+ TASK_NAME: ${{ github.event.client_payload.task_name }}
312
+ TASK_ARGS: ${{ toJSON(github.event.client_payload.args) }}
313
+ run: |
314
+ echo "⚙️ Executing task: $TASK_NAME"
315
+ echo "Arguments: $TASK_ARGS"
316
+
317
+ # Custom task execution
318
+ # Use allowlist to prevent arbitrary code execution
319
+ case "$TASK_NAME" in
320
+ "cleanup-old-artifacts")
321
+ echo "Running artifact cleanup..."
322
+ # Cleanup logic
323
+ ;;
324
+ "regenerate-docs")
325
+ echo "Regenerating documentation..."
326
+ # Docs generation logic
327
+ ;;
328
+ "validate-config")
329
+ echo "Validating configuration..."
330
+ # Validation logic
331
+ ;;
332
+ *)
333
+ echo "❌ Error: Unknown task: $TASK_NAME"
334
+ echo "Allowed tasks: cleanup-old-artifacts, regenerate-docs, validate-config"
335
+ exit 1
336
+ ;;
337
+ esac
338
+
339
+ echo "✅ Task completed"
340
+
341
+ # Job 6: Event summary
342
+ event-summary:
343
+ name: Event Processing Summary
344
+ runs-on: ubuntu-latest
345
+ needs: [handle-deployment, handle-migration, handle-cache-rebuild, handle-incident, handle-custom-task]
346
+ if: always()
347
+ timeout-minutes: 5
348
+
349
+ steps:
350
+ - name: Generate summary
351
+ run: |
352
+ cat <<'EOF' >> $GITHUB_STEP_SUMMARY
353
+ ## 📬 Repository Dispatch Event Summary
354
+
355
+ **Event Type:** ${{ github.event.action }}
356
+ **Triggered:** ${{ github.event.created_at }}
357
+ **Sender:** ${{ github.event.sender.login }}
358
+
359
+ ### Job Results
360
+ - Deployment: ${{ needs.handle-deployment.result }}
361
+ - Migration: ${{ needs.handle-migration.result }}
362
+ - Cache Rebuild: ${{ needs.handle-cache-rebuild.result }}
363
+ - Incident Response: ${{ needs.handle-incident.result }}
364
+ - Custom Task: ${{ needs.handle-custom-task.result }}
365
+
366
+ ### Payload
367
+ ```json
368
+ ${{ toJSON(github.event.client_payload) }}
369
+ ```
370
+
371
+ ---
372
+
373
+ ### How to Trigger This Workflow
374
+
375
+ **Using curl:**
376
+ ```bash
377
+ curl -X POST \
378
+ -H "Authorization: token $GITHUB_TOKEN" \
379
+ -H "Accept: application/vnd.github.v3+json" \
380
+ https://api.github.com/repos/${{ github.repository }}/dispatches \
381
+ -d '{
382
+ "event_type": "deploy-prod",
383
+ "client_payload": {
384
+ "version": "v1.2.3",
385
+ "environment": "production",
386
+ "requestor": "api-user"
387
+ }
388
+ }'
389
+ ```
390
+
391
+ **Using Python:**
392
+ ```python
393
+ import requests
394
+
395
+ url = "https://api.github.com/repos/${{ github.repository }}/dispatches"
396
+ headers = {
397
+ "Authorization": f"token {token}",
398
+ "Accept": "application/vnd.github.v3+json"
399
+ }
400
+ payload = {
401
+ "event_type": "deploy-prod",
402
+ "client_payload": {
403
+ "version": "v1.2.3",
404
+ "environment": "production"
405
+ }
406
+ }
407
+ requests.post(url, json=payload, headers=headers)
408
+ ```
409
+
410
+ **Using GitHub CLI:**
411
+ ```bash
412
+ gh api repos/${{ github.repository }}/dispatches \
413
+ -X POST \
414
+ -f event_type='deploy-prod' \
415
+ -f client_payload[version]='v1.2.3' \
416
+ -f client_payload[environment]='production'
417
+ ```
418
+ EOF