claude-flow-novice 2.15.2 → 2.15.4

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 (533) hide show
  1. package/.claude/cfn-extras/skills/advanced-features/cfn-agent-swap/recommend-swap.sh +59 -59
  2. package/.claude/cfn-extras/skills/analytics/cfn-improvement-recommender/recommend-improvements.sh +91 -91
  3. package/.claude/cfn-extras/skills/analytics/cfn-pattern-extraction/extract-patterns.sh +79 -79
  4. package/.claude/cfn-extras/skills/analytics/cfn-retrospective-report/generate-report.sh +100 -100
  5. package/.claude/cfn-extras/skills/analytics/cfn-telemetry/start-telemetry.sh +110 -110
  6. package/.claude/cfn-extras/skills/deprecated/cfn-ace-system/add-bullet.sh +145 -145
  7. package/.claude/cfn-extras/skills/deprecated/cfn-ace-system/log-merge.sh +67 -67
  8. package/.claude/cfn-extras/skills/deprecated/cfn-ace-system/monitor-injection-performance.sh +137 -137
  9. package/.claude/cfn-extras/skills/deprecated/cfn-ace-system/optimize-injection-pipeline.sh +168 -168
  10. package/.claude/cfn-extras/skills/deprecated/cfn-ace-system/query-reflections.sh +35 -35
  11. package/.claude/cfn-extras/skills/deprecated/cfn-ace-system/store-reflection.sh +45 -45
  12. package/.claude/cfn-extras/skills/deprecated/cfn-ace-system/track-ab-test.sh +41 -41
  13. package/.claude/cfn-extras/skills/deprecated/cfn-ace-system/update-reflection.sh +41 -41
  14. package/.claude/cfn-extras/skills/deprecated/cfn-cli-setup/validate-cli-environment.sh +191 -191
  15. package/.claude/cfn-extras/skills/marketing/cfn-marketing-ad-campaigns/operations/create-campaign.sh +231 -231
  16. package/.claude/cfn-extras/skills/marketing/cfn-marketing-ad-campaigns/operations/get-campaign-performance.sh +190 -190
  17. package/.claude/cfn-extras/skills/marketing/cfn-marketing-ad-campaigns/operations/pause-campaign.sh +142 -142
  18. package/.claude/cfn-extras/skills/marketing/cfn-marketing-ad-campaigns/operations/set-budget.sh +181 -181
  19. package/.claude/cfn-extras/skills/marketing/cfn-marketing-ad-campaigns/operations/update-bid-strategy.sh +133 -133
  20. package/.claude/cfn-extras/skills/marketing/cfn-marketing-chatbot-conversations/operations/get-conversation-history.sh +121 -121
  21. package/.claude/cfn-extras/skills/marketing/cfn-marketing-chatbot-conversations/operations/qualify-lead.sh +156 -156
  22. package/.claude/cfn-extras/skills/marketing/cfn-marketing-chatbot-conversations/operations/schedule-demo.sh +181 -181
  23. package/.claude/cfn-extras/skills/marketing/cfn-marketing-chatbot-conversations/operations/send-message.sh +137 -137
  24. package/.claude/cfn-extras/skills/marketing/cfn-marketing-chatbot-conversations/operations/transfer-to-human.sh +179 -179
  25. package/.claude/cfn-extras/skills/marketing/cfn-marketing-sms-campaigns/operations/create-campaign.sh +183 -183
  26. package/.claude/cfn-extras/skills/marketing/cfn-marketing-sms-campaigns/operations/get-delivery-status.sh +139 -139
  27. package/.claude/cfn-extras/skills/marketing/cfn-marketing-sms-campaigns/operations/opt-out.sh +150 -150
  28. package/.claude/cfn-extras/skills/marketing/cfn-marketing-sms-campaigns/operations/schedule-campaign.sh +187 -187
  29. package/.claude/cfn-extras/skills/marketing/cfn-marketing-sms-campaigns/operations/send-sms.sh +181 -181
  30. package/.claude/cfn-extras/skills/ui-portal/cfn-web-portal/test-web-portal-skill.sh +50 -50
  31. package/.claude/cfn-extras/skills/ui-portal/cfn-web-portal/validate-deployment.sh +84 -84
  32. package/.claude/cfn-extras/skills/utility/cfn-environment-sanitization/sanitize-environment.sh +243 -243
  33. package/.claude/commands/cfn-loop-cli.md +16 -2
  34. package/.claude/commands/switch-api.md +31 -10
  35. package/.claude/hooks/cfn-BACKUP_USAGE.md +243 -243
  36. package/.claude/hooks/cfn-invoke-security-validation.sh +69 -69
  37. package/.claude/hooks/cfn-lint-sql-injection.sh +61 -0
  38. package/.claude/hooks/cfn-post-edit-cfn-retrospective.sh +109 -78
  39. package/.claude/hooks/cfn-post-edit.config.json +44 -44
  40. package/.claude/hooks/cfn-pre-edit-security-warning.sh +40 -0
  41. package/.claude/skills/cfn-agent-spawning/spawn-agent.sh +22 -24
  42. package/.claude/skills/cfn-docker-agent-spawning/SKILL.md +28 -4
  43. package/.claude/skills/cfn-docker-agent-spawning/spawn-agent.sh +3 -1
  44. package/.claude/skills/cfn-docker-loop-orchestration/orchestrate.sh +224 -20
  45. package/.claude/skills/cfn-hybrid-routing/check-dependencies.sh +51 -51
  46. package/.claude/skills/cfn-loop-orchestration/helpers/gate-check.sh +550 -46
  47. package/.claude/skills/cfn-loop-orchestration/helpers/parse-test-results.sh +277 -0
  48. package/.claude/skills/cfn-loop-orchestration/orchestrate.sh +184 -23
  49. package/.claude/skills/cfn-loop-orchestration/security_utils.sh +24 -0
  50. package/.claude/skills/cfn-loop-orchestration/test-iteration-context-injection.sh +366 -0
  51. package/.claude/skills/cfn-loop-validation/orchestrate-cfn-loop.sh +252 -252
  52. package/.claude/skills/cfn-redis-coordination/CENTRALIZED_REDIS_WRAPPER.md +319 -0
  53. package/.claude/skills/cfn-redis-coordination/agent-log.sh +4 -0
  54. package/.claude/skills/cfn-redis-coordination/agent-log.sh.bak +124 -0
  55. package/.claude/skills/cfn-redis-coordination/agent-recovery.sh +74 -74
  56. package/.claude/skills/cfn-redis-coordination/collect-confidence-scores.sh +30 -0
  57. package/.claude/skills/cfn-redis-coordination/get-context.sh +145 -112
  58. package/.claude/skills/cfn-redis-coordination/get-success-criteria.sh +54 -0
  59. package/.claude/skills/cfn-redis-coordination/invoke-waiting-mode.sh +3 -0
  60. package/.claude/skills/cfn-redis-coordination/redis-cli-wrapper.sh +24 -3
  61. package/.claude/skills/cfn-redis-coordination/redis-functions.sh +33 -0
  62. package/.claude/skills/cfn-redis-coordination/report-completion.sh +24 -31
  63. package/.claude/skills/cfn-redis-coordination/store-context.sh +4 -0
  64. package/.claude/skills/cfn-redis-coordination/store-success-criteria.sh +85 -0
  65. package/.claude/skills/cfn-redis-coordination/update-all-scripts.sh +67 -0
  66. package/.claude/skills/cfn-sqlite-memory/ttl-cleanup.sh +17 -25
  67. package/.claude/skills/cfn-transparency-middleware/middleware-config.sh +28 -28
  68. package/.claude/skills/cfn-transparency-middleware/performance-benchmark.sh +78 -78
  69. package/.claude/skills/cfn-transparency-middleware/test-e2e.sh +15 -0
  70. package/.claude/skills/cfn-transparency-middleware/test-integration.sh +161 -161
  71. package/.claude/skills/cfn-transparency-middleware/test-transparency-skill.sh +367 -367
  72. package/.claude/skills/cfn-transparency-middleware/tests/input-validation.sh +107 -92
  73. package/.claude/skills/cfn-transparency-middleware/wrap-agent.sh +131 -131
  74. package/README.md +116 -475
  75. package/claude-assets/agents/cfn-dev-team/README.md +103 -0
  76. package/claude-assets/agents/cfn-dev-team/architecture/goal-planner.md +1 -1
  77. package/claude-assets/agents/cfn-dev-team/coordinators/cfn-frontend-coordinator.md +77 -15
  78. package/claude-assets/agents/cfn-dev-team/coordinators/cfn-v3-coordinator.md +355 -6
  79. package/claude-assets/agents/cfn-dev-team/coordinators/consensus-builder.md +82 -1
  80. package/claude-assets/agents/cfn-dev-team/coordinators/handoff-coordinator.md +82 -1
  81. package/claude-assets/agents/cfn-dev-team/coordinators/multi-sprint-coordinator.md +77 -15
  82. package/claude-assets/agents/cfn-dev-team/dev-ops/docker-specialist.md +99 -12
  83. package/claude-assets/agents/cfn-dev-team/dev-ops/github-commit-agent.md +1 -1
  84. package/claude-assets/agents/cfn-dev-team/dev-ops/kubernetes-specialist.md +97 -0
  85. package/claude-assets/agents/cfn-dev-team/dev-ops/monitoring-specialist.md +20 -1
  86. package/claude-assets/agents/cfn-dev-team/developers/api-gateway-specialist.md +97 -0
  87. package/claude-assets/agents/cfn-dev-team/developers/backend-developer.md +110 -13
  88. package/claude-assets/agents/cfn-dev-team/developers/data/data-engineer.md +106 -15
  89. package/claude-assets/agents/cfn-dev-team/developers/database/database-architect.md +115 -11
  90. package/claude-assets/agents/cfn-dev-team/developers/frontend/mobile-dev.md +94 -7
  91. package/claude-assets/agents/cfn-dev-team/developers/frontend/react-frontend-engineer.md +87 -9
  92. package/claude-assets/agents/cfn-dev-team/developers/frontend/typescript-specialist.md +85 -7
  93. package/claude-assets/agents/cfn-dev-team/developers/frontend/ui-designer.md +160 -28
  94. package/claude-assets/agents/cfn-dev-team/developers/graphql-specialist.md +101 -19
  95. package/claude-assets/agents/cfn-dev-team/developers/rust-developer.md +108 -14
  96. package/claude-assets/agents/cfn-dev-team/reviewers/{reviewer.md → code-reviewer.md} +95 -8
  97. package/claude-assets/agents/cfn-dev-team/reviewers/quality/code-quality-validator.md +107 -7
  98. package/claude-assets/agents/cfn-dev-team/reviewers/quality/perf-analyzer.md +98 -7
  99. package/claude-assets/agents/cfn-dev-team/reviewers/quality/performance-benchmarker.md +95 -7
  100. package/claude-assets/agents/cfn-dev-team/reviewers/quality/security-specialist.md +136 -9
  101. package/claude-assets/agents/cfn-dev-team/testers/api-testing-specialist.md +108 -1
  102. package/claude-assets/agents/cfn-dev-team/testers/chaos-engineering-specialist.md +107 -13
  103. package/claude-assets/agents/cfn-dev-team/testers/contract-tester.md +737 -0
  104. package/claude-assets/agents/cfn-dev-team/testers/e2e/playwright-tester.md +1 -1
  105. package/claude-assets/agents/cfn-dev-team/testers/integration-tester.md +828 -0
  106. package/claude-assets/agents/cfn-dev-team/testers/interaction-tester.md +106 -7
  107. package/claude-assets/agents/cfn-dev-team/testers/load-testing-specialist.md +77 -0
  108. package/claude-assets/agents/cfn-dev-team/testers/mutation-testing-specialist.md +684 -0
  109. package/claude-assets/agents/cfn-dev-team/testers/playwright-tester.md +110 -1
  110. package/claude-assets/agents/cfn-dev-team/testers/tester.md +94 -7
  111. package/claude-assets/agents/cfn-dev-team/utility/code-booster.md +1 -3
  112. package/claude-assets/agents/cfn-dev-team/utility/epic-creator.md +87 -13
  113. package/claude-assets/agents/cfn-dev-team/utility/memory-leak-specialist.md +103 -7
  114. package/claude-assets/agents/cfn-dev-team/utility/researcher.md +1 -3
  115. package/claude-assets/agents/cfn-dev-team/utility/z-ai-specialist.md +94 -7
  116. package/claude-assets/agents/docker-coordinators/cfn-docker-v3-coordinator.md +46 -0
  117. package/claude-assets/agents/project-only-agents/npm-package-specialist.md +1 -1
  118. package/claude-assets/cfn-extras/skills/advanced-features/cfn-agent-swap/recommend-swap.sh +59 -59
  119. package/claude-assets/cfn-extras/skills/analytics/cfn-improvement-recommender/recommend-improvements.sh +91 -91
  120. package/claude-assets/cfn-extras/skills/analytics/cfn-pattern-extraction/extract-patterns.sh +79 -79
  121. package/claude-assets/cfn-extras/skills/analytics/cfn-retrospective-report/generate-report.sh +100 -100
  122. package/claude-assets/cfn-extras/skills/analytics/cfn-telemetry/start-telemetry.sh +110 -110
  123. package/claude-assets/cfn-extras/skills/deprecated/cfn-ace-system/add-bullet.sh +145 -145
  124. package/claude-assets/cfn-extras/skills/deprecated/cfn-ace-system/log-merge.sh +67 -67
  125. package/claude-assets/cfn-extras/skills/deprecated/cfn-ace-system/monitor-injection-performance.sh +137 -137
  126. package/claude-assets/cfn-extras/skills/deprecated/cfn-ace-system/optimize-injection-pipeline.sh +168 -168
  127. package/claude-assets/cfn-extras/skills/deprecated/cfn-ace-system/query-reflections.sh +35 -35
  128. package/claude-assets/cfn-extras/skills/deprecated/cfn-ace-system/store-reflection.sh +45 -45
  129. package/claude-assets/cfn-extras/skills/deprecated/cfn-ace-system/track-ab-test.sh +41 -41
  130. package/claude-assets/cfn-extras/skills/deprecated/cfn-ace-system/update-reflection.sh +41 -41
  131. package/claude-assets/cfn-extras/skills/deprecated/cfn-cli-setup/validate-cli-environment.sh +191 -191
  132. package/claude-assets/cfn-extras/skills/marketing/cfn-marketing-ad-campaigns/operations/create-campaign.sh +231 -231
  133. package/claude-assets/cfn-extras/skills/marketing/cfn-marketing-ad-campaigns/operations/get-campaign-performance.sh +190 -190
  134. package/claude-assets/cfn-extras/skills/marketing/cfn-marketing-ad-campaigns/operations/pause-campaign.sh +142 -142
  135. package/claude-assets/cfn-extras/skills/marketing/cfn-marketing-ad-campaigns/operations/set-budget.sh +181 -181
  136. package/claude-assets/cfn-extras/skills/marketing/cfn-marketing-ad-campaigns/operations/update-bid-strategy.sh +133 -133
  137. package/claude-assets/cfn-extras/skills/marketing/cfn-marketing-chatbot-conversations/operations/get-conversation-history.sh +121 -121
  138. package/claude-assets/cfn-extras/skills/marketing/cfn-marketing-chatbot-conversations/operations/qualify-lead.sh +156 -156
  139. package/claude-assets/cfn-extras/skills/marketing/cfn-marketing-chatbot-conversations/operations/schedule-demo.sh +181 -181
  140. package/claude-assets/cfn-extras/skills/marketing/cfn-marketing-chatbot-conversations/operations/send-message.sh +137 -137
  141. package/claude-assets/cfn-extras/skills/marketing/cfn-marketing-chatbot-conversations/operations/transfer-to-human.sh +179 -179
  142. package/claude-assets/cfn-extras/skills/marketing/cfn-marketing-sms-campaigns/operations/create-campaign.sh +183 -183
  143. package/claude-assets/cfn-extras/skills/marketing/cfn-marketing-sms-campaigns/operations/get-delivery-status.sh +139 -139
  144. package/claude-assets/cfn-extras/skills/marketing/cfn-marketing-sms-campaigns/operations/opt-out.sh +150 -150
  145. package/claude-assets/cfn-extras/skills/marketing/cfn-marketing-sms-campaigns/operations/schedule-campaign.sh +187 -187
  146. package/claude-assets/cfn-extras/skills/marketing/cfn-marketing-sms-campaigns/operations/send-sms.sh +181 -181
  147. package/claude-assets/cfn-extras/skills/ui-portal/cfn-web-portal/test-web-portal-skill.sh +50 -50
  148. package/claude-assets/cfn-extras/skills/ui-portal/cfn-web-portal/validate-deployment.sh +84 -84
  149. package/claude-assets/cfn-extras/skills/utility/cfn-environment-sanitization/sanitize-environment.sh +243 -243
  150. package/claude-assets/commands/cfn-loop-cli.md +16 -2
  151. package/claude-assets/commands/switch-api.md +31 -10
  152. package/claude-assets/hooks/cfn-BACKUP_USAGE.md +243 -243
  153. package/claude-assets/hooks/cfn-invoke-security-validation.sh +69 -69
  154. package/claude-assets/hooks/cfn-lint-sql-injection.sh +61 -0
  155. package/claude-assets/hooks/cfn-post-edit-cfn-retrospective.sh +109 -78
  156. package/claude-assets/hooks/cfn-post-edit.config.json +44 -44
  157. package/claude-assets/hooks/cfn-post-execution/memory-cleanup.sh +19 -19
  158. package/claude-assets/hooks/cfn-pre-edit-security-warning.sh +40 -0
  159. package/claude-assets/hooks/cfn-pre-execution/memory-check.sh +19 -19
  160. package/claude-assets/hooks/detect-hardcoded-credentials.sh +212 -0
  161. package/claude-assets/skills/SKILL_TEMPLATE.md +774 -0
  162. package/claude-assets/skills/agent-lifecycle/execute-lifecycle-hook.sh +543 -572
  163. package/claude-assets/skills/agent-lifecycle/simple-audit.sh +57 -30
  164. package/claude-assets/skills/agent-template-generator/SKILL.md +440 -0
  165. package/claude-assets/skills/agent-template-generator/generate-agent.sh +405 -0
  166. package/claude-assets/skills/agent-validation-linter/SKILL.md +589 -0
  167. package/claude-assets/skills/agent-validation-linter/lint-agents.sh +271 -0
  168. package/claude-assets/skills/bootstrap/bash-fundamentals.md +786 -0
  169. package/claude-assets/skills/bootstrap/database-connection.md +464 -0
  170. package/claude-assets/skills/bootstrap/error-handling.md +580 -0
  171. package/claude-assets/skills/bootstrap/file-operations.md +699 -0
  172. package/claude-assets/skills/bootstrap/skill-loader.md +616 -0
  173. package/claude-assets/skills/bootstrap/sqlite-params.sh +287 -0
  174. package/claude-assets/skills/cfn-agent-spawning/spawn-agent.sh +22 -24
  175. package/claude-assets/skills/cfn-automatic-memory-persistence/persist-agent-output.sh +48 -48
  176. package/claude-assets/skills/cfn-automatic-memory-persistence/query-agent-history.sh +34 -34
  177. package/claude-assets/skills/cfn-automatic-memory-persistence/test-memory-persistence.sh +17 -16
  178. package/claude-assets/skills/cfn-deliverable-validation/confidence-calculator.sh +261 -261
  179. package/claude-assets/skills/cfn-deployment/SKILL.md +293 -0
  180. package/claude-assets/skills/cfn-deployment/execute.sh +21 -0
  181. package/claude-assets/skills/cfn-docker-agent-spawning/SKILL.md +28 -4
  182. package/claude-assets/skills/cfn-docker-agent-spawning/spawn-agent.sh +3 -1
  183. package/claude-assets/skills/cfn-docker-loop-orchestration/orchestrate.sh +224 -20
  184. package/claude-assets/skills/cfn-environment-sanitization/sanitize-environment.sh +38 -0
  185. package/claude-assets/skills/cfn-error-batching-strategy/lib/core-functions.sh +47 -47
  186. package/claude-assets/skills/cfn-expert-update/update-expert.sh +345 -345
  187. package/claude-assets/skills/cfn-file-operations/SKILL.md +290 -0
  188. package/claude-assets/skills/cfn-file-operations/execute.sh +129 -0
  189. package/claude-assets/skills/cfn-file-operations/lib/atomic-write.sh +294 -0
  190. package/claude-assets/skills/cfn-file-operations/lib/lock.sh +361 -0
  191. package/claude-assets/skills/cfn-file-operations/test.sh +369 -0
  192. package/claude-assets/skills/cfn-hybrid-routing/check-dependencies.sh +51 -51
  193. package/claude-assets/skills/cfn-intervention-detector/detect-intervention.sh +110 -110
  194. package/claude-assets/skills/cfn-intervention-orchestrator/execute-intervention.sh +58 -58
  195. package/claude-assets/skills/cfn-log-operations/SKILL.md +308 -0
  196. package/claude-assets/skills/cfn-log-operations/execute.sh +420 -0
  197. package/claude-assets/skills/cfn-log-operations/lib/rotate.sh +406 -0
  198. package/claude-assets/skills/cfn-log-operations/lib/search.sh +448 -0
  199. package/claude-assets/skills/cfn-log-operations/test.sh +394 -0
  200. package/claude-assets/skills/cfn-loop-orchestration/helpers/gate-check.sh +550 -46
  201. package/claude-assets/skills/cfn-loop-orchestration/helpers/parse-test-results.sh +277 -0
  202. package/claude-assets/skills/cfn-loop-orchestration/orchestrate.sh +184 -23
  203. package/claude-assets/skills/cfn-loop-orchestration/security_utils.sh +24 -0
  204. package/claude-assets/skills/cfn-loop-orchestration/test-iteration-context-injection.sh +366 -0
  205. package/claude-assets/skills/cfn-loop-validation/orchestrate-cfn-loop.sh +252 -252
  206. package/claude-assets/skills/cfn-loop2-output-processing/process-validator-output.sh +275 -275
  207. package/claude-assets/skills/cfn-memory-management/check-memory.sh +159 -159
  208. package/claude-assets/skills/cfn-memory-management/cleanup-memory.sh +196 -196
  209. package/claude-assets/skills/cfn-node-heap-sizer/task-mode-heap-limiter.sh +325 -325
  210. package/claude-assets/skills/cfn-parameterized-queries/SKILL.md +339 -0
  211. package/claude-assets/skills/cfn-playbook/query-playbook.sh +19 -15
  212. package/claude-assets/skills/cfn-playbook/update-playbook.sh +25 -14
  213. package/claude-assets/skills/cfn-playbook-auto-update/auto-update-playbook.sh +85 -85
  214. package/claude-assets/skills/cfn-process-instrumentation/instrument-process.sh +44 -0
  215. package/claude-assets/skills/cfn-promotion/SKILL.md +305 -0
  216. package/claude-assets/skills/cfn-redis-coordination/CENTRALIZED_REDIS_WRAPPER.md +319 -0
  217. package/claude-assets/skills/cfn-redis-coordination/agent-log.sh +4 -0
  218. package/claude-assets/skills/cfn-redis-coordination/agent-log.sh.bak +124 -0
  219. package/claude-assets/skills/cfn-redis-coordination/agent-recovery.sh +74 -74
  220. package/claude-assets/skills/cfn-redis-coordination/collect-confidence-scores.sh +30 -0
  221. package/claude-assets/skills/cfn-redis-coordination/get-context.sh +145 -112
  222. package/claude-assets/skills/cfn-redis-coordination/get-success-criteria.sh +54 -0
  223. package/claude-assets/skills/cfn-redis-coordination/invoke-waiting-mode.sh +3 -0
  224. package/claude-assets/skills/cfn-redis-coordination/redis-cli-wrapper.sh +24 -3
  225. package/claude-assets/skills/cfn-redis-coordination/redis-functions.sh +33 -0
  226. package/claude-assets/skills/cfn-redis-coordination/report-completion.sh +24 -31
  227. package/claude-assets/skills/cfn-redis-coordination/store-context.sh +4 -0
  228. package/claude-assets/skills/cfn-redis-coordination/store-success-criteria.sh +85 -0
  229. package/claude-assets/skills/cfn-redis-coordination/update-all-scripts.sh +67 -0
  230. package/claude-assets/skills/cfn-scope-simplifier/simplify-scope.sh +67 -67
  231. package/claude-assets/skills/cfn-skill-loader/SKILL.md +466 -0
  232. package/claude-assets/skills/cfn-skill-loader/execute.sh +344 -0
  233. package/claude-assets/skills/cfn-specialist-injection/recommend-specialist.sh +56 -56
  234. package/claude-assets/skills/cfn-sqlite-memory/ttl-cleanup.sh +17 -25
  235. package/claude-assets/skills/cfn-standardized-error-handling/capture-agent-error.sh +86 -86
  236. package/claude-assets/skills/cfn-standardized-error-handling/test-error-handling.sh +165 -165
  237. package/claude-assets/skills/cfn-task-audit/get-audit-data.sh +42 -21
  238. package/claude-assets/skills/cfn-task-audit/store-task-audit.sh +17 -10
  239. package/claude-assets/skills/cfn-task-config-init/initialize-config.sh +264 -264
  240. package/claude-assets/skills/cfn-task-decomposition/task-decomposer.sh +278 -278
  241. package/claude-assets/skills/cfn-test-runner/detect-regressions.sh +17 -14
  242. package/claude-assets/skills/cfn-test-runner/detect-regressions.sh.backup-1763392821 +55 -0
  243. package/claude-assets/skills/cfn-test-runner/store-benchmarks.sh +17 -19
  244. package/claude-assets/skills/cfn-transparency-middleware/middleware-config.sh +28 -28
  245. package/claude-assets/skills/cfn-transparency-middleware/performance-benchmark.sh +78 -78
  246. package/claude-assets/skills/cfn-transparency-middleware/test-e2e.sh +15 -0
  247. package/claude-assets/skills/cfn-transparency-middleware/test-integration.sh +161 -161
  248. package/claude-assets/skills/cfn-transparency-middleware/test-transparency-skill.sh +367 -367
  249. package/claude-assets/skills/cfn-transparency-middleware/tests/input-validation.sh +107 -92
  250. package/claude-assets/skills/cfn-transparency-middleware/wrap-agent.sh +131 -131
  251. package/claude-assets/skills/cfn-utilities/SKILL.md +237 -0
  252. package/claude-assets/skills/cfn-utilities/execute.sh +32 -0
  253. package/claude-assets/skills/cfn-utilities/lib/errors.sh +56 -0
  254. package/claude-assets/skills/cfn-utilities/lib/file-ops.sh +164 -0
  255. package/claude-assets/skills/cfn-utilities/lib/logging.sh +77 -0
  256. package/claude-assets/skills/cfn-utilities/lib/retry.sh +127 -0
  257. package/claude-assets/skills/cfn-utilities/test.sh +317 -0
  258. package/claude-assets/skills/docker-build/SKILL.md +96 -203
  259. package/claude-assets/skills/docker-build/build.sh +73 -73
  260. package/claude-assets/skills/integration/agent-handoff.sh +492 -0
  261. package/claude-assets/skills/integration/file-operations.sh +414 -0
  262. package/claude-assets/skills/json-validation/SKILL.md +431 -0
  263. package/claude-assets/skills/json-validation/test-validate-success-criteria.sh +421 -0
  264. package/claude-assets/skills/json-validation/validate-success-criteria.sh +197 -0
  265. package/claude-assets/skills/redis-coordination/validate-parameters.sh +34 -0
  266. package/claude-assets/skills/workflow-codification/APPROVAL_WORKFLOW.md +806 -0
  267. package/claude-assets/skills/workflow-codification/COST_TRACKING.md +637 -0
  268. package/claude-assets/skills/workflow-codification/DEPLOY_QUICK_REFERENCE.md +106 -0
  269. package/claude-assets/skills/workflow-codification/EDGE_CASE_TRACKING.md +404 -0
  270. package/claude-assets/skills/workflow-codification/PROPAGATE_UPDATE_QUICK_REFERENCE.md +366 -0
  271. package/claude-assets/skills/workflow-codification/README_PHASE4.md +457 -0
  272. package/claude-assets/skills/workflow-codification/SKILL.md +110 -0
  273. package/claude-assets/skills/workflow-codification/analyze-patterns.sh +899 -0
  274. package/claude-assets/skills/workflow-codification/approval-workflow.sh +514 -0
  275. package/claude-assets/skills/workflow-codification/deploy-approved-skill.sh +481 -0
  276. package/claude-assets/skills/workflow-codification/deploy-approved-skill.sh.backup-1763392820 +512 -0
  277. package/claude-assets/skills/workflow-codification/generate-skill-update.sh +525 -0
  278. package/claude-assets/skills/workflow-codification/lib/security-utils.sh +204 -0
  279. package/claude-assets/skills/workflow-codification/propagate-skill-update.sh +648 -0
  280. package/claude-assets/skills/workflow-codification/propagate-skill-update.sh.backup-1763392820 +664 -0
  281. package/claude-assets/skills/workflow-codification/review-skill.sh +643 -0
  282. package/claude-assets/skills/workflow-codification/templates/email-notification.txt +114 -0
  283. package/claude-assets/skills/workflow-codification/templates/slack-notification.md +85 -0
  284. package/claude-assets/skills/workflow-codification/test-integration.sh +296 -0
  285. package/claude-assets/skills/workflow-codification/test-metadata-update.sh +350 -0
  286. package/claude-assets/skills/workflow-codification/track-cost-savings.sh +486 -0
  287. package/claude-assets/skills/workflow-codification/track-cost-savings.sh.backup-1763392821 +445 -0
  288. package/claude-assets/skills/workflow-codification/track-edge-case.sh +290 -0
  289. package/claude-assets/skills/workflow-codification/workflow-codification.db +0 -0
  290. package/dist/ace/ace-curator.js +10 -2
  291. package/dist/ace/ace-curator.js.map +1 -1
  292. package/dist/ace/ace-generator.js +4 -0
  293. package/dist/ace/ace-generator.js.map +1 -1
  294. package/dist/ace/ace-reflector.js +1 -1
  295. package/dist/ace/ace-reflector.js.map +1 -1
  296. package/dist/ace/context-injection.js +24 -2
  297. package/dist/ace/context-injection.js.map +1 -1
  298. package/dist/agents/agent-loader.js +146 -165
  299. package/dist/agents/agent-loader.js.map +1 -1
  300. package/dist/agents/task-agent-integration.js +1 -1
  301. package/dist/agents/task-agent-integration.js.map +1 -1
  302. package/dist/api/health-endpoints.js +390 -0
  303. package/dist/api/health-endpoints.js.map +1 -0
  304. package/dist/cli/agent-executor.js +4 -1
  305. package/dist/cli/agent-executor.js.map +1 -1
  306. package/dist/cli/agent-prompt-builder.js +89 -1
  307. package/dist/cli/agent-prompt-builder.js.map +1 -1
  308. package/dist/cli/agent-spawn.js +130 -37
  309. package/dist/cli/agent-spawn.js.map +1 -1
  310. package/dist/cli/config-manager.js +91 -109
  311. package/dist/cli/config-manager.js.map +1 -1
  312. package/dist/cli/skill-cache-validator.js +412 -0
  313. package/dist/cli/skill-cache-validator.js.map +1 -0
  314. package/dist/cli/skill-cli.js +991 -0
  315. package/dist/cli/skill-cli.js.map +1 -0
  316. package/dist/cli/skill-execution-logger.js +284 -0
  317. package/dist/cli/skill-execution-logger.js.map +1 -0
  318. package/dist/cli/skill-loader.js +457 -0
  319. package/dist/cli/skill-loader.js.map +1 -0
  320. package/dist/coordination/event-bus.js +2 -2
  321. package/dist/coordination/event-bus.js.map +1 -1
  322. package/dist/coordination/fleet-manager.js +1 -1
  323. package/dist/coordination/fleet-manager.js.map +1 -1
  324. package/dist/coordination/index.js +23 -9
  325. package/dist/coordination/index.js.map +1 -1
  326. package/dist/coordination/types/fleet-manager.types.js.map +1 -1
  327. package/dist/db/migration-manager.js +483 -0
  328. package/dist/db/migration-manager.js.map +1 -0
  329. package/dist/db/skills-query.js +535 -0
  330. package/dist/db/skills-query.js.map +1 -0
  331. package/dist/integration/DatabaseHandoff.js +507 -0
  332. package/dist/integration/DatabaseHandoff.js.map +1 -0
  333. package/dist/integration/StandardAdapter.js +291 -0
  334. package/dist/integration/StandardAdapter.js.map +1 -0
  335. package/dist/jobs/edge-case-analyzer.js +367 -0
  336. package/dist/jobs/edge-case-analyzer.js.map +1 -0
  337. package/dist/jobs/promotion-sla-enforcer.js +288 -0
  338. package/dist/jobs/promotion-sla-enforcer.js.map +1 -0
  339. package/dist/lib/agent-output-parser.js +518 -0
  340. package/dist/lib/agent-output-parser.js.map +1 -0
  341. package/dist/lib/agent-output-validator.js +950 -0
  342. package/dist/lib/agent-output-validator.js.map +1 -0
  343. package/dist/lib/agent-workspace.js +281 -0
  344. package/dist/lib/agent-workspace.js.map +1 -0
  345. package/dist/lib/artifact-registry.js +443 -0
  346. package/dist/lib/artifact-registry.js.map +1 -0
  347. package/dist/lib/atomic-file-writer.js +377 -0
  348. package/dist/lib/atomic-file-writer.js.map +1 -0
  349. package/dist/lib/backup-manager.js +779 -0
  350. package/dist/lib/backup-manager.js.map +1 -0
  351. package/dist/lib/checkpoint-manager.js +837 -0
  352. package/dist/lib/checkpoint-manager.js.map +1 -0
  353. package/dist/lib/circuit-breaker.js +340 -0
  354. package/dist/lib/circuit-breaker.js.map +1 -0
  355. package/dist/lib/completion-signal-handler.js +243 -0
  356. package/dist/lib/completion-signal-handler.js.map +1 -0
  357. package/dist/lib/config-manager.js +312 -0
  358. package/dist/lib/config-manager.js.map +1 -0
  359. package/dist/lib/config-migrator.js +386 -0
  360. package/dist/lib/config-migrator.js.map +1 -0
  361. package/dist/lib/config-validator.js +687 -0
  362. package/dist/lib/config-validator.js.map +1 -0
  363. package/dist/lib/correlation-cache.js +311 -0
  364. package/dist/lib/correlation-cache.js.map +1 -0
  365. package/dist/lib/correlation.js +263 -0
  366. package/dist/lib/correlation.js.map +1 -0
  367. package/dist/lib/database-service/connection-pool-manager.js +520 -0
  368. package/dist/lib/database-service/connection-pool-manager.js.map +1 -0
  369. package/dist/lib/database-service/correlation.js +329 -0
  370. package/dist/lib/database-service/correlation.js.map +1 -0
  371. package/dist/lib/database-service/errors.js +120 -0
  372. package/dist/lib/database-service/errors.js.map +1 -0
  373. package/dist/lib/database-service/index.js +168 -0
  374. package/dist/lib/database-service/index.js.map +1 -0
  375. package/dist/lib/database-service/postgres-adapter.js +526 -0
  376. package/dist/lib/database-service/postgres-adapter.js.map +1 -0
  377. package/dist/lib/database-service/redis-adapter.js +360 -0
  378. package/dist/lib/database-service/redis-adapter.js.map +1 -0
  379. package/dist/lib/database-service/sqlite-adapter.js +544 -0
  380. package/dist/lib/database-service/sqlite-adapter.js.map +1 -0
  381. package/dist/lib/database-service/transaction-manager.js +773 -0
  382. package/dist/lib/database-service/transaction-manager.js.map +1 -0
  383. package/dist/lib/database-service/types.js +23 -0
  384. package/dist/lib/database-service/types.js.map +1 -0
  385. package/dist/lib/deadlock-resolver.js +292 -0
  386. package/dist/lib/deadlock-resolver.js.map +1 -0
  387. package/dist/lib/distributed-lock.js +451 -0
  388. package/dist/lib/distributed-lock.js.map +1 -0
  389. package/dist/lib/edge-case-deduplicator.js +227 -0
  390. package/dist/lib/edge-case-deduplicator.js.map +1 -0
  391. package/dist/lib/encryption-manager.js +322 -0
  392. package/dist/lib/encryption-manager.js.map +1 -0
  393. package/dist/lib/error-aggregator.js +234 -0
  394. package/dist/lib/error-aggregator.js.map +1 -0
  395. package/dist/lib/errors.js +287 -0
  396. package/dist/lib/errors.js.map +1 -0
  397. package/dist/lib/file-lock-manager.js +578 -0
  398. package/dist/lib/file-lock-manager.js.map +1 -0
  399. package/dist/lib/file-operations.js +367 -0
  400. package/dist/lib/file-operations.js.map +1 -0
  401. package/dist/lib/idempotent-write.js +237 -0
  402. package/dist/lib/idempotent-write.js.map +1 -0
  403. package/dist/lib/integration-schema-validator.js +522 -0
  404. package/dist/lib/integration-schema-validator.js.map +1 -0
  405. package/dist/lib/lock-health-monitor.js +298 -0
  406. package/dist/lib/lock-health-monitor.js.map +1 -0
  407. package/dist/lib/log-shipper.js +422 -0
  408. package/dist/lib/log-shipper.js.map +1 -0
  409. package/dist/lib/logging.js +146 -0
  410. package/dist/lib/logging.js.map +1 -0
  411. package/dist/lib/message-deduplicator.js +439 -0
  412. package/dist/lib/message-deduplicator.js.map +1 -0
  413. package/dist/lib/multi-system-query.js +604 -0
  414. package/dist/lib/multi-system-query.js.map +1 -0
  415. package/dist/lib/orphan-detector.js +332 -0
  416. package/dist/lib/orphan-detector.js.map +1 -0
  417. package/dist/lib/password-generator.js +166 -0
  418. package/dist/lib/password-generator.js.map +1 -0
  419. package/dist/lib/path-validator.js +429 -0
  420. package/dist/lib/path-validator.js.map +1 -0
  421. package/dist/lib/query-translator.js +905 -0
  422. package/dist/lib/query-translator.js.map +1 -0
  423. package/dist/lib/queue-recovery.js +469 -0
  424. package/dist/lib/queue-recovery.js.map +1 -0
  425. package/dist/lib/redis-queue-manager.js +512 -0
  426. package/dist/lib/redis-queue-manager.js.map +1 -0
  427. package/dist/lib/reflection-archiver.js +272 -0
  428. package/dist/lib/reflection-archiver.js.map +1 -0
  429. package/dist/lib/retry-manager.js +453 -0
  430. package/dist/lib/retry-manager.js.map +1 -0
  431. package/dist/lib/retry.js +262 -0
  432. package/dist/lib/retry.js.map +1 -0
  433. package/dist/lib/schema-transform.js +695 -0
  434. package/dist/lib/schema-transform.js.map +1 -0
  435. package/dist/lib/schema-validator.js +491 -0
  436. package/dist/lib/schema-validator.js.map +1 -0
  437. package/dist/lib/skill-cache.js +297 -0
  438. package/dist/lib/skill-cache.js.map +1 -0
  439. package/dist/lib/skill-content-manager.js +337 -0
  440. package/dist/lib/skill-content-manager.js.map +1 -0
  441. package/dist/lib/skill-frontmatter-parser.js +237 -0
  442. package/dist/lib/skill-frontmatter-parser.js.map +1 -0
  443. package/dist/lib/skill-git-integration.js +275 -0
  444. package/dist/lib/skill-git-integration.js.map +1 -0
  445. package/dist/lib/skill-markdown-validator.js +396 -0
  446. package/dist/lib/skill-markdown-validator.js.map +1 -0
  447. package/dist/lib/skill-output-parser.js +312 -0
  448. package/dist/lib/skill-output-parser.js.map +1 -0
  449. package/dist/lib/unified-query-api.js +467 -0
  450. package/dist/lib/unified-query-api.js.map +1 -0
  451. package/dist/middleware/auth-middleware.js +350 -0
  452. package/dist/middleware/auth-middleware.js.map +1 -0
  453. package/dist/middleware/schema-validation.js +347 -0
  454. package/dist/middleware/schema-validation.js.map +1 -0
  455. package/dist/providers/anthropic-provider.js +1 -1
  456. package/dist/providers/anthropic-provider.js.map +1 -1
  457. package/dist/providers/provider-factory.js +2 -2
  458. package/dist/providers/provider-factory.js.map +1 -1
  459. package/dist/services/edge-case-analyzer.js +321 -0
  460. package/dist/services/edge-case-analyzer.js.map +1 -0
  461. package/dist/services/edge-case-deduplicator.js +266 -0
  462. package/dist/services/edge-case-deduplicator.js.map +1 -0
  463. package/dist/services/edge-case-detector.js +337 -0
  464. package/dist/services/edge-case-detector.js.map +1 -0
  465. package/dist/services/edge-case-tracker.js +547 -0
  466. package/dist/services/edge-case-tracker.js.map +1 -0
  467. package/dist/services/health-check-system.js +586 -0
  468. package/dist/services/health-check-system.js.map +1 -0
  469. package/dist/services/metrics-logger.js +412 -0
  470. package/dist/services/metrics-logger.js.map +1 -0
  471. package/dist/services/patch-generator.js +378 -0
  472. package/dist/services/patch-generator.js.map +1 -0
  473. package/dist/services/patch-validator.js +337 -0
  474. package/dist/services/patch-validator.js.map +1 -0
  475. package/dist/services/performance-monitor.js +811 -0
  476. package/dist/services/performance-monitor.js.map +1 -0
  477. package/dist/services/promotion-pipeline.js +918 -0
  478. package/dist/services/promotion-pipeline.js.map +1 -0
  479. package/dist/services/promotion-validator.js +394 -0
  480. package/dist/services/promotion-validator.js.map +1 -0
  481. package/dist/services/reflection-logger.js +388 -0
  482. package/dist/services/reflection-logger.js.map +1 -0
  483. package/dist/services/skill-deployment.js +472 -0
  484. package/dist/services/skill-deployment.js.map +1 -0
  485. package/dist/services/skill-loader.js +427 -0
  486. package/dist/services/skill-loader.js.map +1 -0
  487. package/dist/services/skill-promotion.js +372 -0
  488. package/dist/services/skill-promotion.js.map +1 -0
  489. package/dist/services/skill-validator.js +454 -0
  490. package/dist/services/skill-validator.js.map +1 -0
  491. package/dist/services/skill-versioning.js +244 -0
  492. package/dist/services/skill-versioning.js.map +1 -0
  493. package/dist/services/workspace-supervisor.js +597 -0
  494. package/dist/services/workspace-supervisor.js.map +1 -0
  495. package/dist/types/agent-output.js +44 -0
  496. package/dist/types/agent-output.js.map +1 -0
  497. package/dist/types/config.js +28 -0
  498. package/dist/types/config.js.map +1 -0
  499. package/dist/types/edge-case.js +45 -0
  500. package/dist/types/edge-case.js.map +1 -0
  501. package/package.json +201 -176
  502. package/readme/README.md +19 -4
  503. package/scripts/artifact-cleanup.sh +392 -0
  504. package/scripts/backup-cleanup.sh +627 -0
  505. package/scripts/cleanup-workspaces.sh +412 -0
  506. package/scripts/cleanup-yaml-configs.sh +141 -0
  507. package/scripts/deploy-approved-skills.sh +263 -0
  508. package/scripts/deploy-production.sh +355 -355
  509. package/scripts/docker-playwright-fix.sh +311 -311
  510. package/scripts/docker-rebuild-all-agents.sh +127 -127
  511. package/scripts/health-check.sh +447 -0
  512. package/scripts/log-aggregator.sh +554 -0
  513. package/scripts/log-monitor.sh +629 -0
  514. package/scripts/manage-agent-workspaces.sh +434 -0
  515. package/scripts/memory-leak-prevention.sh +305 -305
  516. package/scripts/migrate-artifacts.sh +563 -0
  517. package/scripts/migrate-schema.sh +533 -0
  518. package/scripts/migrate-yaml-to-json.sh +465 -0
  519. package/scripts/promote-staged-skills.sh +423 -0
  520. package/scripts/run-marketing-tests.sh +42 -42
  521. package/scripts/update_paths.sh +46 -46
  522. package/scripts/verify-no-secrets.sh +88 -35
  523. package/.claude/cfn-extras/agents/deprecated-coordinators/adaptive-coordinator.md.backup +0 -161
  524. package/.claude/cfn-extras/agents/deprecated-coordinators/blocking-coordinator-example.md.backup +0 -728
  525. package/.claude/cfn-extras/agents/deprecated-coordinators/mesh-coordinator.md.backup +0 -131
  526. package/.claude/skills/cfn-agent-spawning/spawn-agent.sh.backup +0 -273
  527. package/.claude/skills/cfn-loop-orchestration/orchestrate.sh.backup +0 -949
  528. package/README.md.backup_before_replace +0 -781
  529. package/claude-assets/cfn-extras/agents/deprecated-coordinators/adaptive-coordinator.md.backup +0 -161
  530. package/claude-assets/cfn-extras/agents/deprecated-coordinators/blocking-coordinator-example.md.backup +0 -728
  531. package/claude-assets/cfn-extras/agents/deprecated-coordinators/mesh-coordinator.md.backup +0 -131
  532. package/claude-assets/skills/cfn-agent-spawning/spawn-agent.sh.backup +0 -273
  533. package/claude-assets/skills/cfn-loop-orchestration/orchestrate.sh.backup +0 -949
@@ -1,573 +1,544 @@
1
- #!/bin/bash
2
-
3
- # Agent Lifecycle Hook Execution Script
4
- # Provides SQLite-based lifecycle management for agent auditing
5
- # Usage: ./execute-lifecycle-hook.sh <action> [options]
6
-
7
- set -euo pipefail
8
-
9
- # Configuration
10
- DB_PATH="${AGENT_LIFECYCLE_DB:-./agent-lifecycle.db}"
11
- SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
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
- NC='\033[0m' # No Color
19
-
20
- # Logging functions
21
- log_info() {
22
- echo -e "${BLUE}[INFO]${NC} $1"
23
- }
24
-
25
- log_success() {
26
- echo -e "${GREEN}[SUCCESS]${NC} $1"
27
- }
28
-
29
- log_warning() {
30
- echo -e "${YELLOW}[WARNING]${NC} $1"
31
- }
32
-
33
- log_error() {
34
- echo -e "${RED}[ERROR]${NC} $1"
35
- }
36
-
37
- # Initialize SQLite database
38
- init_database() {
39
- if [[ ! -f "$DB_PATH" ]]; then
40
- log_info "Creating agent lifecycle database: $DB_PATH"
41
- sqlite3 "$DB_PATH" << 'EOF'
42
- -- Create agents table
43
- CREATE TABLE IF NOT EXISTS agents (
44
- id TEXT PRIMARY KEY,
45
- name TEXT NOT NULL,
46
- type TEXT NOT NULL,
47
- status TEXT NOT NULL DEFAULT 'spawned',
48
- confidence REAL,
49
- output TEXT,
50
- metadata TEXT,
51
- spawned_at TEXT NOT NULL,
52
- completed_at TEXT,
53
- updated_at TEXT NOT NULL
54
- );
55
-
56
- -- Create lifecycle_events table
57
- CREATE TABLE IF NOT EXISTS lifecycle_events (
58
- id INTEGER PRIMARY KEY AUTOINCREMENT,
59
- agent_id TEXT NOT NULL,
60
- event_type TEXT NOT NULL,
61
- confidence REAL,
62
- reasoning TEXT,
63
- phase TEXT,
64
- iteration INTEGER,
65
- timestamp TEXT NOT NULL,
66
- FOREIGN KEY (agent_id) REFERENCES agents(id)
67
- );
68
-
69
- -- Create indexes for performance
70
- CREATE INDEX IF NOT EXISTS idx_agents_status ON agents(status);
71
- CREATE INDEX IF NOT EXISTS idx_agents_type ON agents(type);
72
- CREATE INDEX IF NOT EXISTS idx_lifecycle_agent_id ON lifecycle_events(agent_id);
73
- CREATE INDEX IF NOT EXISTS idx_lifecycle_timestamp ON lifecycle_events(timestamp);
74
- CREATE INDEX IF NOT EXISTS idx_lifecycle_event_type ON lifecycle_events(event_type);
75
- EOF
76
- log_success "Database initialized successfully"
77
- fi
78
- }
79
-
80
- # Validate agent ID format
81
- validate_agent_id() {
82
- local agent_id="$1"
83
- if [[ ! "$agent_id" =~ ^[a-zA-Z0-9_-]+$ ]]; then
84
- log_error "Invalid agent ID format: $agent_id"
85
- log_error "Agent ID must contain only alphanumeric characters, hyphens, and underscores"
86
- exit 1
87
- fi
88
-
89
- if [[ ${#agent_id} -lt 3 || ${#agent_id} -gt 64 ]]; then
90
- log_error "Agent ID must be between 3 and 64 characters: $agent_id"
91
- exit 1
92
- fi
93
- }
94
-
95
- # Validate confidence score
96
- validate_confidence() {
97
- local confidence="$1"
98
- if [[ ! "$confidence" =~ ^0\.[0-9]+$|^1\.0$|^0$|^1$ ]]; then
99
- log_error "Invalid confidence score: $confidence"
100
- log_error "Confidence must be between 0.0 and 1.0"
101
- exit 1
102
- fi
103
- }
104
-
105
- # Spawn agent registration
106
- spawn_agent() {
107
- local agent_id="$1"
108
- local agent_type="$2"
109
- local acl_level="${3:-1}"
110
- local agent_name="${4:-$agent_id}"
111
-
112
- validate_agent_id "$agent_id"
113
-
114
- if [[ ! "$acl_level" =~ ^[1-6]$ ]]; then
115
- log_error "Invalid ACL level: $acl_level (must be 1-6)"
116
- exit 1
117
- fi
118
-
119
- log_info "Registering agent spawn: $agent_id (type: $agent_type, ACL: $acl_level)"
120
-
121
- sqlite3 "$DB_PATH" << EOF
122
- INSERT OR REPLACE INTO agents (
123
- id, name, type, status, metadata, spawned_at, updated_at
124
- ) VALUES (
125
- '$agent_id',
126
- '$agent_name',
127
- '$agent_type',
128
- 'spawned',
129
- '{"aclLevel": $acl_level, "spawnedAt": "$(date -u +%Y-%m-%dT%H:%M:%SZ)"}',
130
- datetime('now'),
131
- datetime('now')
132
- );
133
- EOF
134
-
135
- # Log spawn event
136
- sqlite3 "$DB_PATH" << EOF
137
- INSERT INTO lifecycle_events (
138
- agent_id, event_type, reasoning, timestamp
139
- ) VALUES (
140
- '$agent_id',
141
- 'spawn',
142
- 'Agent spawned via lifecycle hook',
143
- datetime('now')
144
- );
145
- EOF
146
-
147
- log_success "Agent $agent_id registered successfully"
148
- }
149
-
150
- # Update agent confidence
151
- update_confidence() {
152
- local agent_id="$1"
153
- local confidence="$2"
154
- local reasoning="${3:-No reasoning provided}"
155
- local phase="${4:-}"
156
- local iteration="${5:-}"
157
-
158
- validate_agent_id "$agent_id"
159
- validate_confidence "$confidence"
160
-
161
- log_info "Updating confidence for agent $agent_id: $confidence"
162
-
163
- # Update agent confidence
164
- sqlite3 "$DB_PATH" << EOF
165
- UPDATE agents
166
- SET confidence = $confidence, updated_at = datetime('now')
167
- WHERE id = '$agent_id';
168
- EOF
169
-
170
- # Log confidence update event
171
- sqlite3 "$DB_PATH" << EOF
172
- INSERT INTO lifecycle_events (
173
- agent_id, event_type, confidence, reasoning, phase, iteration, timestamp
174
- ) VALUES (
175
- '$agent_id',
176
- 'confidence_update',
177
- $confidence,
178
- '$reasoning',
179
- ${phase:+"'${phase}'":NULL},
180
- ${iteration:+$iteration},
181
- datetime('now')
182
- );
183
- EOF
184
-
185
- log_success "Confidence updated for agent $agent_id"
186
- }
187
-
188
- # Complete agent
189
- complete_agent() {
190
- local agent_id="$1"
191
- local confidence="$2"
192
- local output="${3:-}"
193
- local phase="${4:-}"
194
- local iteration="${5:-}"
195
-
196
- validate_agent_id "$agent_id"
197
- validate_confidence "$confidence"
198
-
199
- log_info "Completing agent $agent_id with confidence: $confidence"
200
-
201
- # Mark agent as completed
202
- sqlite3 "$DB_PATH" << EOF
203
- UPDATE agents
204
- SET status = 'completed',
205
- confidence = $confidence,
206
- output = ${output:+"'${output}'":NULL},
207
- completed_at = datetime('now'),
208
- updated_at = datetime('now')
209
- WHERE id = '$agent_id';
210
- EOF
211
-
212
- # Log completion event
213
- sqlite3 "$DB_PATH" << EOF
214
- INSERT INTO lifecycle_events (
215
- agent_id, event_type, confidence, reasoning, phase, iteration, timestamp
216
- ) VALUES (
217
- '$agent_id',
218
- 'complete',
219
- $confidence,
220
- ${output:="'${output}'":'Agent completed'},
221
- ${phase:+"'${phase}'":NULL},
222
- ${iteration:+$iteration},
223
- datetime('now')
224
- );
225
- EOF
226
-
227
- # Check CFN Loop gate
228
- local gate_status="FAIL"
229
- if (( $(echo "$confidence >= 0.75" | bc -l) )); then
230
- gate_status="PASS"
231
- fi
232
-
233
- log_success "Agent $agent_id completed (CFN Loop 3 Gate: $gate_status)"
234
- }
235
-
236
- # Terminate agent
237
- terminate_agent() {
238
- local agent_id="$1"
239
- local reason="${2:-Normal termination}"
240
-
241
- validate_agent_id "$agent_id"
242
-
243
- log_info "Terminating agent $agent_id: $reason"
244
-
245
- # Mark agent as terminated
246
- sqlite3 "$DB_PATH" << EOF
247
- UPDATE agents
248
- SET status = 'terminated', updated_at = datetime('now')
249
- WHERE id = '$agent_id';
250
- EOF
251
-
252
- # Log termination event
253
- sqlite3 "$DB_PATH" << EOF
254
- INSERT INTO lifecycle_events (
255
- agent_id, event_type, reasoning, timestamp
256
- ) VALUES (
257
- '$agent_id',
258
- 'terminate',
259
- '$reason',
260
- datetime('now')
261
- );
262
- EOF
263
-
264
- log_success "Agent $agent_id terminated"
265
- }
266
-
267
- # Query agent status
268
- query_status() {
269
- local agent_id="$1"
270
- local limit="${2:-10}"
271
-
272
- validate_agent_id "$agent_id"
273
-
274
- log_info "Querying status for agent $agent_id"
275
-
276
- echo ""
277
- echo "=== Agent Status ==="
278
- sqlite3 "$DB_PATH" << EOF
279
- SELECT
280
- id,
281
- name,
282
- type,
283
- status,
284
- confidence,
285
- spawned_at,
286
- completed_at,
287
- updated_at
288
- FROM agents
289
- WHERE id = '$agent_id';
290
- EOF
291
-
292
- echo ""
293
- echo "=== Recent Lifecycle Events ==="
294
- sqlite3 "$DB_PATH" << EOF
295
- SELECT
296
- timestamp,
297
- event_type,
298
- confidence,
299
- reasoning
300
- FROM lifecycle_events
301
- WHERE agent_id = '$agent_id'
302
- ORDER BY timestamp DESC
303
- LIMIT $limit;
304
- EOF
305
- }
306
-
307
- # Show usage
308
- show_usage() {
309
- echo "Agent Lifecycle Hook Execution Script"
310
- echo ""
311
- echo "Usage: $0 <action> [options]"
312
- echo ""
313
- echo "Actions:"
314
- echo " spawn --agent-id <id> --agent-type <type> [--acl-level <level>] [--name <name>]"
315
- echo " update --agent-id <id> --confidence <score> --reasoning <text> [--phase <phase>] [--iteration <n>]"
316
- echo " complete --agent-id <id> --confidence <score> [--output <text>] [--phase <phase>] [--iteration <n>]"
317
- echo " terminate --agent-id <id> [--reason <text>]"
318
- echo " status --agent-id <id> [--limit <n>]"
319
- echo ""
320
- echo "Environment Variables:"
321
- echo " AGENT_LIFECYCLE_DB Path to SQLite database (default: ./agent-lifecycle.db)"
322
- echo ""
323
- echo "Examples:"
324
- echo " $0 spawn --agent-id docker-1 --agent-type docker-specialist --acl-level 1"
325
- echo " $0 update --agent-id docker-1 --confidence 0.85 --reasoning 'Implementation complete'"
326
- echo " $0 complete --agent-id docker-1 --confidence 0.90 --output 'Docker setup complete'"
327
- echo " $0 status --agent-id docker-1"
328
- }
329
-
330
- # Parse command line arguments
331
- parse_args() {
332
- local action="$1"
333
- shift
334
-
335
- case "$action" in
336
- "spawn")
337
- local agent_id=""
338
- local agent_type=""
339
- local acl_level="1"
340
- local agent_name=""
341
-
342
- while [[ $# -gt 0 ]]; do
343
- case "$1" in
344
- --agent-id)
345
- agent_id="$2"
346
- shift 2
347
- ;;
348
- --agent-type)
349
- agent_type="$2"
350
- shift 2
351
- ;;
352
- --acl-level)
353
- acl_level="$2"
354
- shift 2
355
- ;;
356
- --name)
357
- agent_name="$2"
358
- shift 2
359
- ;;
360
- *)
361
- log_error "Unknown option: $1"
362
- show_usage
363
- exit 1
364
- ;;
365
- esac
366
- done
367
-
368
- if [[ -z "$agent_id" || -z "$agent_type" ]]; then
369
- log_error "Missing required arguments for spawn"
370
- show_usage
371
- exit 1
372
- fi
373
-
374
- init_database
375
- spawn_agent "$agent_id" "$agent_type" "$acl_level" "$agent_name"
376
- ;;
377
-
378
- "update")
379
- local agent_id=""
380
- local confidence=""
381
- local reasoning=""
382
- local phase=""
383
- local iteration=""
384
-
385
- while [[ $# -gt 0 ]]; do
386
- case "$1" in
387
- --agent-id)
388
- agent_id="$2"
389
- shift 2
390
- ;;
391
- --confidence)
392
- confidence="$2"
393
- shift 2
394
- ;;
395
- --reasoning)
396
- reasoning="$2"
397
- shift 2
398
- ;;
399
- --phase)
400
- phase="$2"
401
- shift 2
402
- ;;
403
- --iteration)
404
- iteration="$2"
405
- shift 2
406
- ;;
407
- *)
408
- log_error "Unknown option: $1"
409
- show_usage
410
- exit 1
411
- ;;
412
- esac
413
- done
414
-
415
- if [[ -z "$agent_id" || -z "$confidence" ]]; then
416
- log_error "Missing required arguments for update"
417
- show_usage
418
- exit 1
419
- fi
420
-
421
- init_database
422
- update_confidence "$agent_id" "$confidence" "$reasoning" "$phase" "$iteration"
423
- ;;
424
-
425
- "complete")
426
- local agent_id=""
427
- local confidence=""
428
- local output=""
429
- local phase=""
430
- local iteration=""
431
-
432
- while [[ $# -gt 0 ]]; do
433
- case "$1" in
434
- --agent-id)
435
- agent_id="$2"
436
- shift 2
437
- ;;
438
- --confidence)
439
- confidence="$2"
440
- shift 2
441
- ;;
442
- --output)
443
- output="$2"
444
- shift 2
445
- ;;
446
- --phase)
447
- phase="$2"
448
- shift 2
449
- ;;
450
- --iteration)
451
- iteration="$2"
452
- shift 2
453
- ;;
454
- *)
455
- log_error "Unknown option: $1"
456
- show_usage
457
- exit 1
458
- ;;
459
- esac
460
- done
461
-
462
- if [[ -z "$agent_id" || -z "$confidence" ]]; then
463
- log_error "Missing required arguments for complete"
464
- show_usage
465
- exit 1
466
- fi
467
-
468
- init_database
469
- complete_agent "$agent_id" "$confidence" "$output" "$phase" "$iteration"
470
- ;;
471
-
472
- "terminate")
473
- local agent_id=""
474
- local reason=""
475
-
476
- while [[ $# -gt 0 ]]; do
477
- case "$1" in
478
- --agent-id)
479
- agent_id="$2"
480
- shift 2
481
- ;;
482
- --reason)
483
- reason="$2"
484
- shift 2
485
- ;;
486
- *)
487
- log_error "Unknown option: $1"
488
- show_usage
489
- exit 1
490
- ;;
491
- esac
492
- done
493
-
494
- if [[ -z "$agent_id" ]]; then
495
- log_error "Missing required arguments for terminate"
496
- show_usage
497
- exit 1
498
- fi
499
-
500
- init_database
501
- terminate_agent "$agent_id" "$reason"
502
- ;;
503
-
504
- "status")
505
- local agent_id=""
506
- local limit="10"
507
-
508
- while [[ $# -gt 0 ]]; do
509
- case "$1" in
510
- --agent-id)
511
- agent_id="$2"
512
- shift 2
513
- ;;
514
- --limit)
515
- limit="$2"
516
- shift 2
517
- ;;
518
- *)
519
- log_error "Unknown option: $1"
520
- show_usage
521
- exit 1
522
- ;;
523
- esac
524
- done
525
-
526
- if [[ -z "$agent_id" ]]; then
527
- log_error "Missing required arguments for status"
528
- show_usage
529
- exit 1
530
- fi
531
-
532
- init_database
533
- query_status "$agent_id" "$limit"
534
- ;;
535
-
536
- "help"|"--help"|"-h")
537
- show_usage
538
- ;;
539
-
540
- *)
541
- log_error "Unknown action: $action"
542
- show_usage
543
- exit 1
544
- ;;
545
- esac
546
- }
547
-
548
- # Check for required dependencies
549
- check_dependencies() {
550
- if ! command -v sqlite3 &> /dev/null; then
551
- log_error "sqlite3 is required but not installed"
552
- exit 1
553
- fi
554
-
555
- if ! command -v bc &> /dev/null; then
556
- log_warning "bc is recommended for confidence calculations"
557
- fi
558
- }
559
-
560
- # Main execution
561
- main() {
562
- check_dependencies
563
-
564
- if [[ $# -eq 0 ]]; then
565
- show_usage
566
- exit 1
567
- fi
568
-
569
- parse_args "$@"
570
- }
571
-
572
- # Execute main function
1
+ #!/bin/bash
2
+
3
+ # Agent Lifecycle Hook Execution Script
4
+ # Provides SQLite-based lifecycle management for agent auditing
5
+ # Usage: ./execute-lifecycle-hook.sh <action> [options]
6
+
7
+ set -euo pipefail
8
+
9
+ # Configuration
10
+ SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
11
+ DB_PATH="${AGENT_LIFECYCLE_DB:-./agent-lifecycle.db}"
12
+
13
+ # Source parameterized query library for SQL injection prevention
14
+ source "${SCRIPT_DIR}/../bootstrap/sqlite-params.sh"
15
+
16
+ # Colors for output
17
+ RED='\033[0;31m'
18
+ GREEN='\033[0;32m'
19
+ YELLOW='\033[1;33m'
20
+ BLUE='\033[0;34m'
21
+ NC='\033[0m' # No Color
22
+
23
+ # Logging functions
24
+ log_info() {
25
+ echo -e "${BLUE}[INFO]${NC} $1"
26
+ }
27
+
28
+ log_success() {
29
+ echo -e "${GREEN}[SUCCESS]${NC} $1"
30
+ }
31
+
32
+ log_warning() {
33
+ echo -e "${YELLOW}[WARNING]${NC} $1"
34
+ }
35
+
36
+ log_error() {
37
+ echo -e "${RED}[ERROR]${NC} $1"
38
+ }
39
+
40
+ # Initialize SQLite database
41
+ init_database() {
42
+ if [[ ! -f "$DB_PATH" ]]; then
43
+ log_info "Creating agent lifecycle database: $DB_PATH"
44
+ sqlite3 "$DB_PATH" << 'EOF'
45
+ -- Create agents table
46
+ CREATE TABLE IF NOT EXISTS agents (
47
+ id TEXT PRIMARY KEY,
48
+ name TEXT NOT NULL,
49
+ type TEXT NOT NULL,
50
+ status TEXT NOT NULL DEFAULT 'spawned',
51
+ confidence REAL,
52
+ output TEXT,
53
+ metadata TEXT,
54
+ spawned_at TEXT NOT NULL,
55
+ completed_at TEXT,
56
+ updated_at TEXT NOT NULL
57
+ );
58
+
59
+ -- Create lifecycle_events table
60
+ CREATE TABLE IF NOT EXISTS lifecycle_events (
61
+ id INTEGER PRIMARY KEY AUTOINCREMENT,
62
+ agent_id TEXT NOT NULL,
63
+ event_type TEXT NOT NULL,
64
+ confidence REAL,
65
+ reasoning TEXT,
66
+ phase TEXT,
67
+ iteration INTEGER,
68
+ timestamp TEXT NOT NULL,
69
+ FOREIGN KEY (agent_id) REFERENCES agents(id)
70
+ );
71
+
72
+ -- Create indexes for performance
73
+ CREATE INDEX IF NOT EXISTS idx_agents_status ON agents(status);
74
+ CREATE INDEX IF NOT EXISTS idx_agents_type ON agents(type);
75
+ CREATE INDEX IF NOT EXISTS idx_lifecycle_agent_id ON lifecycle_events(agent_id);
76
+ CREATE INDEX IF NOT EXISTS idx_lifecycle_timestamp ON lifecycle_events(timestamp);
77
+ CREATE INDEX IF NOT EXISTS idx_lifecycle_event_type ON lifecycle_events(event_type);
78
+ EOF
79
+ log_success "Database initialized successfully"
80
+ fi
81
+ }
82
+
83
+ # Validate agent ID format
84
+ validate_agent_id() {
85
+ local agent_id="$1"
86
+ if [[ ! "$agent_id" =~ ^[a-zA-Z0-9_-]+$ ]]; then
87
+ log_error "Invalid agent ID format: $agent_id"
88
+ log_error "Agent ID must contain only alphanumeric characters, hyphens, and underscores"
89
+ exit 1
90
+ fi
91
+
92
+ if [[ ${#agent_id} -lt 3 || ${#agent_id} -gt 64 ]]; then
93
+ log_error "Agent ID must be between 3 and 64 characters: $agent_id"
94
+ exit 1
95
+ fi
96
+ }
97
+
98
+ # Validate confidence score
99
+ validate_confidence() {
100
+ local confidence="$1"
101
+ if [[ ! "$confidence" =~ ^0\.[0-9]+$|^1\.0$|^0$|^1$ ]]; then
102
+ log_error "Invalid confidence score: $confidence"
103
+ log_error "Confidence must be between 0.0 and 1.0"
104
+ exit 1
105
+ fi
106
+ }
107
+
108
+ # Spawn agent registration
109
+ spawn_agent() {
110
+ local agent_id="$1"
111
+ local agent_type="$2"
112
+ local acl_level="${3:-1}"
113
+ local agent_name="${4:-$agent_id}"
114
+
115
+ validate_agent_id "$agent_id"
116
+
117
+ if [[ ! "$acl_level" =~ ^[1-6]$ ]]; then
118
+ log_error "Invalid ACL level: $acl_level (must be 1-6)"
119
+ exit 1
120
+ fi
121
+
122
+ log_info "Registering agent spawn: $agent_id (type: $agent_type, ACL: $acl_level)"
123
+
124
+ # Use parameterized query for agent insertion
125
+ local spawn_timestamp
126
+ spawn_timestamp="$(date -u +%Y-%m-%dT%H:%M:%SZ)"
127
+ local metadata_json="{\"aclLevel\": $acl_level, \"spawnedAt\": \"$spawn_timestamp\"}"
128
+
129
+ sqlite_upsert "$DB_PATH" \
130
+ "INSERT OR REPLACE INTO agents (id, name, type, status, metadata, spawned_at, updated_at) VALUES (?1, ?2, ?3, 'spawned', ?4, datetime('now'), datetime('now'))" \
131
+ "$agent_id" "$agent_name" "$agent_type" "$metadata_json"
132
+
133
+ # Log spawn event (parameterized query)
134
+ sqlite_insert "$DB_PATH" \
135
+ "INSERT INTO lifecycle_events (agent_id, event_type, reasoning, timestamp) VALUES (?1, 'spawn', 'Agent spawned via lifecycle hook', datetime('now'))" \
136
+ "$agent_id"
137
+
138
+ log_success "Agent $agent_id registered successfully"
139
+ }
140
+
141
+ # Update agent confidence
142
+ update_confidence() {
143
+ local agent_id="$1"
144
+ local confidence="$2"
145
+ local reasoning="${3:-No reasoning provided}"
146
+ local phase="${4:-}"
147
+ local iteration="${5:-}"
148
+
149
+ validate_agent_id "$agent_id"
150
+ validate_confidence "$confidence"
151
+
152
+ log_info "Updating confidence for agent $agent_id: $confidence"
153
+
154
+ # Update agent confidence (parameterized query)
155
+ sqlite_update "$DB_PATH" \
156
+ "UPDATE agents SET confidence = ?1, updated_at = datetime('now') WHERE id = ?2" \
157
+ "$confidence" "$agent_id"
158
+
159
+ # Log confidence update event (parameterized query with optional fields)
160
+ if [[ -n "$phase" && -n "$iteration" ]]; then
161
+ sqlite_insert "$DB_PATH" \
162
+ "INSERT INTO lifecycle_events (agent_id, event_type, confidence, reasoning, phase, iteration, timestamp) VALUES (?1, 'confidence_update', ?2, ?3, ?4, ?5, datetime('now'))" \
163
+ "$agent_id" "$confidence" "$reasoning" "$phase" "$iteration"
164
+ elif [[ -n "$phase" ]]; then
165
+ sqlite_insert "$DB_PATH" \
166
+ "INSERT INTO lifecycle_events (agent_id, event_type, confidence, reasoning, phase, timestamp) VALUES (?1, 'confidence_update', ?2, ?3, ?4, datetime('now'))" \
167
+ "$agent_id" "$confidence" "$reasoning" "$phase"
168
+ elif [[ -n "$iteration" ]]; then
169
+ sqlite_insert "$DB_PATH" \
170
+ "INSERT INTO lifecycle_events (agent_id, event_type, confidence, reasoning, iteration, timestamp) VALUES (?1, 'confidence_update', ?2, ?3, ?4, datetime('now'))" \
171
+ "$agent_id" "$confidence" "$reasoning" "$iteration"
172
+ else
173
+ sqlite_insert "$DB_PATH" \
174
+ "INSERT INTO lifecycle_events (agent_id, event_type, confidence, reasoning, timestamp) VALUES (?1, 'confidence_update', ?2, ?3, datetime('now'))" \
175
+ "$agent_id" "$confidence" "$reasoning"
176
+ fi
177
+
178
+ log_success "Confidence updated for agent $agent_id"
179
+ }
180
+
181
+ # Complete agent
182
+ complete_agent() {
183
+ local agent_id="$1"
184
+ local confidence="$2"
185
+ local output="${3:-}"
186
+ local phase="${4:-}"
187
+ local iteration="${5:-}"
188
+
189
+ validate_agent_id "$agent_id"
190
+ validate_confidence "$confidence"
191
+
192
+ log_info "Completing agent $agent_id with confidence: $confidence"
193
+
194
+ # Mark agent as completed (parameterized query)
195
+ if [[ -n "$output" ]]; then
196
+ sqlite_update "$DB_PATH" \
197
+ "UPDATE agents SET status = 'completed', confidence = ?1, output = ?2, completed_at = datetime('now'), updated_at = datetime('now') WHERE id = ?3" \
198
+ "$confidence" "$output" "$agent_id"
199
+ else
200
+ sqlite_update "$DB_PATH" \
201
+ "UPDATE agents SET status = 'completed', confidence = ?1, completed_at = datetime('now'), updated_at = datetime('now') WHERE id = ?2" \
202
+ "$confidence" "$agent_id"
203
+ fi
204
+
205
+ # Log completion event (parameterized query with optional fields)
206
+ local reasoning="${output:-Agent completed}"
207
+ if [[ -n "$phase" && -n "$iteration" ]]; then
208
+ sqlite_insert "$DB_PATH" \
209
+ "INSERT INTO lifecycle_events (agent_id, event_type, confidence, reasoning, phase, iteration, timestamp) VALUES (?1, 'complete', ?2, ?3, ?4, ?5, datetime('now'))" \
210
+ "$agent_id" "$confidence" "$reasoning" "$phase" "$iteration"
211
+ elif [[ -n "$phase" ]]; then
212
+ sqlite_insert "$DB_PATH" \
213
+ "INSERT INTO lifecycle_events (agent_id, event_type, confidence, reasoning, phase, timestamp) VALUES (?1, 'complete', ?2, ?3, ?4, datetime('now'))" \
214
+ "$agent_id" "$confidence" "$reasoning" "$phase"
215
+ elif [[ -n "$iteration" ]]; then
216
+ sqlite_insert "$DB_PATH" \
217
+ "INSERT INTO lifecycle_events (agent_id, event_type, confidence, reasoning, iteration, timestamp) VALUES (?1, 'complete', ?2, ?3, ?4, datetime('now'))" \
218
+ "$agent_id" "$confidence" "$reasoning" "$iteration"
219
+ else
220
+ sqlite_insert "$DB_PATH" \
221
+ "INSERT INTO lifecycle_events (agent_id, event_type, confidence, reasoning, timestamp) VALUES (?1, 'complete', ?2, ?3, datetime('now'))" \
222
+ "$agent_id" "$confidence" "$reasoning"
223
+ fi
224
+
225
+ # Check CFN Loop gate
226
+ local gate_status="FAIL"
227
+ if (( $(echo "$confidence >= 0.75" | bc -l) )); then
228
+ gate_status="PASS"
229
+ fi
230
+
231
+ log_success "Agent $agent_id completed (CFN Loop 3 Gate: $gate_status)"
232
+ }
233
+
234
+ # Terminate agent
235
+ terminate_agent() {
236
+ local agent_id="$1"
237
+ local reason="${2:-Normal termination}"
238
+
239
+ validate_agent_id "$agent_id"
240
+
241
+ log_info "Terminating agent $agent_id: $reason"
242
+
243
+ # Mark agent as terminated (parameterized query)
244
+ sqlite_update "$DB_PATH" \
245
+ "UPDATE agents SET status = 'terminated', updated_at = datetime('now') WHERE id = ?1" \
246
+ "$agent_id"
247
+
248
+ # Log termination event (parameterized query)
249
+ sqlite_insert "$DB_PATH" \
250
+ "INSERT INTO lifecycle_events (agent_id, event_type, reasoning, timestamp) VALUES (?1, 'terminate', ?2, datetime('now'))" \
251
+ "$agent_id" "$reason"
252
+
253
+ log_success "Agent $agent_id terminated"
254
+ }
255
+
256
+ # Query agent status
257
+ query_status() {
258
+ local agent_id="$1"
259
+ local limit="${2:-10}"
260
+
261
+ validate_agent_id "$agent_id"
262
+
263
+ log_info "Querying status for agent $agent_id"
264
+
265
+ echo ""
266
+ echo "=== Agent Status ==="
267
+ sqlite_select "$DB_PATH" \
268
+ "SELECT id, name, type, status, confidence, spawned_at, completed_at, updated_at FROM agents WHERE id = ?1" \
269
+ "$agent_id"
270
+
271
+ echo ""
272
+ echo "=== Recent Lifecycle Events ==="
273
+ sqlite_select "$DB_PATH" \
274
+ "SELECT timestamp, event_type, confidence, reasoning FROM lifecycle_events WHERE agent_id = ?1 ORDER BY timestamp DESC LIMIT ?2" \
275
+ "$agent_id" "$limit"
276
+ }
277
+
278
+ # Show usage
279
+ show_usage() {
280
+ echo "Agent Lifecycle Hook Execution Script"
281
+ echo ""
282
+ echo "Usage: $0 <action> [options]"
283
+ echo ""
284
+ echo "Actions:"
285
+ echo " spawn --agent-id <id> --agent-type <type> [--acl-level <level>] [--name <name>]"
286
+ echo " update --agent-id <id> --confidence <score> --reasoning <text> [--phase <phase>] [--iteration <n>]"
287
+ echo " complete --agent-id <id> --confidence <score> [--output <text>] [--phase <phase>] [--iteration <n>]"
288
+ echo " terminate --agent-id <id> [--reason <text>]"
289
+ echo " status --agent-id <id> [--limit <n>]"
290
+ echo ""
291
+ echo "Environment Variables:"
292
+ echo " AGENT_LIFECYCLE_DB Path to SQLite database (default: ./agent-lifecycle.db)"
293
+ echo ""
294
+ echo "Examples:"
295
+ echo " $0 spawn --agent-id docker-1 --agent-type docker-specialist --acl-level 1"
296
+ echo " $0 update --agent-id docker-1 --confidence 0.85 --reasoning \"Implementation complete\""
297
+ echo " $0 complete --agent-id docker-1 --confidence 0.90 --output \"Docker setup complete\""
298
+ echo " $0 status --agent-id docker-1"
299
+ }
300
+
301
+ # Parse command line arguments
302
+ parse_args() {
303
+ local action="$1"
304
+ shift
305
+
306
+ case "$action" in
307
+ "spawn")
308
+ local agent_id=""
309
+ local agent_type=""
310
+ local acl_level="1"
311
+ local agent_name=""
312
+
313
+ while [[ $# -gt 0 ]]; do
314
+ case "$1" in
315
+ --agent-id)
316
+ agent_id="$2"
317
+ shift 2
318
+ ;;
319
+ --agent-type)
320
+ agent_type="$2"
321
+ shift 2
322
+ ;;
323
+ --acl-level)
324
+ acl_level="$2"
325
+ shift 2
326
+ ;;
327
+ --name)
328
+ agent_name="$2"
329
+ shift 2
330
+ ;;
331
+ *)
332
+ log_error "Unknown option: $1"
333
+ show_usage
334
+ exit 1
335
+ ;;
336
+ esac
337
+ done
338
+
339
+ if [[ -z "$agent_id" || -z "$agent_type" ]]; then
340
+ log_error "Missing required arguments for spawn"
341
+ show_usage
342
+ exit 1
343
+ fi
344
+
345
+ init_database
346
+ spawn_agent "$agent_id" "$agent_type" "$acl_level" "$agent_name"
347
+ ;;
348
+
349
+ "update")
350
+ local agent_id=""
351
+ local confidence=""
352
+ local reasoning=""
353
+ local phase=""
354
+ local iteration=""
355
+
356
+ while [[ $# -gt 0 ]]; do
357
+ case "$1" in
358
+ --agent-id)
359
+ agent_id="$2"
360
+ shift 2
361
+ ;;
362
+ --confidence)
363
+ confidence="$2"
364
+ shift 2
365
+ ;;
366
+ --reasoning)
367
+ reasoning="$2"
368
+ shift 2
369
+ ;;
370
+ --phase)
371
+ phase="$2"
372
+ shift 2
373
+ ;;
374
+ --iteration)
375
+ iteration="$2"
376
+ shift 2
377
+ ;;
378
+ *)
379
+ log_error "Unknown option: $1"
380
+ show_usage
381
+ exit 1
382
+ ;;
383
+ esac
384
+ done
385
+
386
+ if [[ -z "$agent_id" || -z "$confidence" ]]; then
387
+ log_error "Missing required arguments for update"
388
+ show_usage
389
+ exit 1
390
+ fi
391
+
392
+ init_database
393
+ update_confidence "$agent_id" "$confidence" "$reasoning" "$phase" "$iteration"
394
+ ;;
395
+
396
+ "complete")
397
+ local agent_id=""
398
+ local confidence=""
399
+ local output=""
400
+ local phase=""
401
+ local iteration=""
402
+
403
+ while [[ $# -gt 0 ]]; do
404
+ case "$1" in
405
+ --agent-id)
406
+ agent_id="$2"
407
+ shift 2
408
+ ;;
409
+ --confidence)
410
+ confidence="$2"
411
+ shift 2
412
+ ;;
413
+ --output)
414
+ output="$2"
415
+ shift 2
416
+ ;;
417
+ --phase)
418
+ phase="$2"
419
+ shift 2
420
+ ;;
421
+ --iteration)
422
+ iteration="$2"
423
+ shift 2
424
+ ;;
425
+ *)
426
+ log_error "Unknown option: $1"
427
+ show_usage
428
+ exit 1
429
+ ;;
430
+ esac
431
+ done
432
+
433
+ if [[ -z "$agent_id" || -z "$confidence" ]]; then
434
+ log_error "Missing required arguments for complete"
435
+ show_usage
436
+ exit 1
437
+ fi
438
+
439
+ init_database
440
+ complete_agent "$agent_id" "$confidence" "$output" "$phase" "$iteration"
441
+ ;;
442
+
443
+ "terminate")
444
+ local agent_id=""
445
+ local reason=""
446
+
447
+ while [[ $# -gt 0 ]]; do
448
+ case "$1" in
449
+ --agent-id)
450
+ agent_id="$2"
451
+ shift 2
452
+ ;;
453
+ --reason)
454
+ reason="$2"
455
+ shift 2
456
+ ;;
457
+ *)
458
+ log_error "Unknown option: $1"
459
+ show_usage
460
+ exit 1
461
+ ;;
462
+ esac
463
+ done
464
+
465
+ if [[ -z "$agent_id" ]]; then
466
+ log_error "Missing required arguments for terminate"
467
+ show_usage
468
+ exit 1
469
+ fi
470
+
471
+ init_database
472
+ terminate_agent "$agent_id" "$reason"
473
+ ;;
474
+
475
+ "status")
476
+ local agent_id=""
477
+ local limit="10"
478
+
479
+ while [[ $# -gt 0 ]]; do
480
+ case "$1" in
481
+ --agent-id)
482
+ agent_id="$2"
483
+ shift 2
484
+ ;;
485
+ --limit)
486
+ limit="$2"
487
+ shift 2
488
+ ;;
489
+ *)
490
+ log_error "Unknown option: $1"
491
+ show_usage
492
+ exit 1
493
+ ;;
494
+ esac
495
+ done
496
+
497
+ if [[ -z "$agent_id" ]]; then
498
+ log_error "Missing required arguments for status"
499
+ show_usage
500
+ exit 1
501
+ fi
502
+
503
+ init_database
504
+ query_status "$agent_id" "$limit"
505
+ ;;
506
+
507
+ "help"|"--help"|"-h")
508
+ show_usage
509
+ ;;
510
+
511
+ *)
512
+ log_error "Unknown action: $action"
513
+ show_usage
514
+ exit 1
515
+ ;;
516
+ esac
517
+ }
518
+
519
+ # Check for required dependencies
520
+ check_dependencies() {
521
+ if ! command -v sqlite3 &> /dev/null; then
522
+ log_error "sqlite3 is required but not installed"
523
+ exit 1
524
+ fi
525
+
526
+ if ! command -v bc &> /dev/null; then
527
+ log_warning "bc is recommended for confidence calculations"
528
+ fi
529
+ }
530
+
531
+ # Main execution
532
+ main() {
533
+ check_dependencies
534
+
535
+ if [[ $# -eq 0 ]]; then
536
+ show_usage
537
+ exit 1
538
+ fi
539
+
540
+ parse_args "$@"
541
+ }
542
+
543
+ # Execute main function
573
544
  main "$@"