@cohortapp/agent-sdk 2.3.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 (731) hide show
  1. package/.claude/commands/init-agent.md +104 -0
  2. package/.claude/commands/init-maestro.md +1187 -0
  3. package/.claude/settings.json +161 -0
  4. package/.env.example +216 -0
  5. package/README.md +632 -0
  6. package/agents/browser-operator/agent.md +52 -0
  7. package/agents/calendar-ops/agent.md +50 -0
  8. package/agents/communications/agent.md +96 -0
  9. package/agents/decision-log/agent.md +65 -0
  10. package/agents/desktop-operator/agent.md +59 -0
  11. package/agents/gmail-operator/agent.md +62 -0
  12. package/agents/inbound-dispatcher/agent.md +66 -0
  13. package/agents/inbox-processor/agent.md +39 -0
  14. package/agents/pmo-execution/agent.md +60 -0
  15. package/agents/session-spawner/agent.md +64 -0
  16. package/agents/slack-operator/agent.md +60 -0
  17. package/agents/whatsapp-operator/agent.md +60 -0
  18. package/agents/workflow-automation/agent.md +61 -0
  19. package/archetypes/altitudes/c-suite.yaml +58 -0
  20. package/archetypes/altitudes/founder.yaml +68 -0
  21. package/archetypes/altitudes/senior-manager.yaml +63 -0
  22. package/archetypes/altitudes/svp.yaml +60 -0
  23. package/archetypes/altitudes/vp.yaml +50 -0
  24. package/archetypes/archetype.schema.json +77 -0
  25. package/archetypes/base.yaml +47 -0
  26. package/archetypes/capabilities/commercial-leader.yaml +159 -0
  27. package/archetypes/capabilities/compliance-officer.yaml +159 -0
  28. package/archetypes/capabilities/executive-operator.yaml +169 -0
  29. package/archetypes/capabilities/finance-leader.yaml +162 -0
  30. package/archetypes/capabilities/operations-leader.yaml +154 -0
  31. package/archetypes/capabilities/product-leader.yaml +148 -0
  32. package/archetypes/capabilities/technical-leader.yaml +146 -0
  33. package/archetypes/functions/commercial-leader.yaml +62 -0
  34. package/archetypes/functions/compliance-officer.yaml +64 -0
  35. package/archetypes/functions/executive-operator.yaml +70 -0
  36. package/archetypes/functions/finance-leader.yaml +70 -0
  37. package/archetypes/functions/operations-leader.yaml +62 -0
  38. package/archetypes/functions/product-leader.yaml +61 -0
  39. package/archetypes/functions/technical-leader.yaml +57 -0
  40. package/bin/cohort-mcp.mjs +81 -0
  41. package/bin/maestro.mjs +3516 -0
  42. package/bin/maestro.test.mjs +1015 -0
  43. package/desktop-control/README.md +56 -0
  44. package/desktop-control/app-profiles/gmail.yaml +120 -0
  45. package/desktop-control/app-profiles/slack.yaml +315 -0
  46. package/desktop-control/app-profiles/whatsapp.yaml +107 -0
  47. package/docs/architecture/agent-topology.md +2239 -0
  48. package/docs/architecture/archetype-agent-factory.md +110 -0
  49. package/docs/architecture/collective-memory-and-org-mesh.md +115 -0
  50. package/docs/architecture/continuous-monitoring.md +221 -0
  51. package/docs/architecture/mcp-capability-map.md +585 -0
  52. package/docs/architecture/system-architecture.md +1272 -0
  53. package/docs/company-context/README.md +40 -0
  54. package/docs/guides/agent-persona-setup.md +600 -0
  55. package/docs/guides/agents-observe-setup.md +64 -0
  56. package/docs/guides/billing-console-keys.md +88 -0
  57. package/docs/guides/ccxray-diagnostics.md +65 -0
  58. package/docs/guides/channel-bus.md +127 -0
  59. package/docs/guides/claude-mem-setup.md +79 -0
  60. package/docs/guides/claude-pace-setup.md +56 -0
  61. package/docs/guides/claudraband-sessions.md +98 -0
  62. package/docs/guides/clawteam-swarm.md +116 -0
  63. package/docs/guides/code-review-graph-setup.md +86 -0
  64. package/docs/guides/email-setup.md +431 -0
  65. package/docs/guides/mac-mini.md +119 -0
  66. package/docs/guides/media-generation-setup.md +349 -0
  67. package/docs/guides/model-routing.md +162 -0
  68. package/docs/guides/observability-otel.md +265 -0
  69. package/docs/guides/org-onboarding.md +132 -0
  70. package/docs/guides/outbound-governance-setup.md +437 -0
  71. package/docs/guides/pdf-generation-setup.md +315 -0
  72. package/docs/guides/poller-daemon-setup.md +563 -0
  73. package/docs/guides/rag-context-setup.md +459 -0
  74. package/docs/guides/self-optimization-pattern.md +82 -0
  75. package/docs/guides/setup-wizard.md +178 -0
  76. package/docs/guides/slack-setup.md +350 -0
  77. package/docs/guides/telegram-setup.md +227 -0
  78. package/docs/guides/twilio-subaccounts-setup.md +223 -0
  79. package/docs/guides/verification.md +128 -0
  80. package/docs/guides/voice-mode.md +188 -0
  81. package/docs/guides/voice-sms-setup.md +698 -0
  82. package/docs/guides/webhook-relay-setup.md +349 -0
  83. package/docs/guides/whatsapp-setup.md +288 -0
  84. package/docs/prompts/board-pack-cover-template.md +36 -0
  85. package/docs/prompts/decision-recommendation-template.md +88 -0
  86. package/docs/prompts/followup-message-template.md +141 -0
  87. package/docs/prompts/investor-letter-template.md +52 -0
  88. package/docs/prompts/morning-brief-template.md +82 -0
  89. package/docs/prompts/presentation-template.md +58 -0
  90. package/docs/prompts/weekly-strategic-memo-template.md +104 -0
  91. package/docs/research/hallucinated-tool-output-investigation.md +151 -0
  92. package/docs/runbooks/backup-restore.md +205 -0
  93. package/docs/runbooks/cohort-cutover.md +129 -0
  94. package/docs/runbooks/fleet-operations.md +200 -0
  95. package/docs/runbooks/incident-response.md +226 -0
  96. package/docs/runbooks/mac-mini-bootstrap.md +431 -0
  97. package/docs/runbooks/perpetual-operations.md +509 -0
  98. package/docs/runbooks/recovery-and-failover.md +260 -0
  99. package/framework-features.json +267 -0
  100. package/ingest/README.md +87 -0
  101. package/lib/action-executor.js +689 -0
  102. package/lib/action-executor.test.mjs +871 -0
  103. package/lib/agent-root.mjs +37 -0
  104. package/lib/archetype.mjs +236 -0
  105. package/lib/archetype.test.mjs +132 -0
  106. package/lib/autonomy.mjs +114 -0
  107. package/lib/autonomy.test.mjs +66 -0
  108. package/lib/backlog.mjs +358 -0
  109. package/lib/backlog.test.mjs +266 -0
  110. package/lib/budget-guard.mjs +279 -0
  111. package/lib/budget-guard.test.mjs +291 -0
  112. package/lib/cadence-bus-schedule.test.mjs +194 -0
  113. package/lib/cadence-bus.mjs +1120 -0
  114. package/lib/cadence-bus.test.mjs +720 -0
  115. package/lib/cadences.mjs +205 -0
  116. package/lib/cadences.test.mjs +125 -0
  117. package/lib/capability.mjs +154 -0
  118. package/lib/capability.test.mjs +78 -0
  119. package/lib/channels/base-adapter.mjs +719 -0
  120. package/lib/channels/base-adapter.test.mjs +590 -0
  121. package/lib/channels/channel.mjs +128 -0
  122. package/lib/channels/channels.test.mjs +371 -0
  123. package/lib/channels/contract.mjs +215 -0
  124. package/lib/channels/contract.test.mjs +137 -0
  125. package/lib/channels/conversation-resolver.mjs +95 -0
  126. package/lib/channels/gmail/adapter.mjs +87 -0
  127. package/lib/channels/inbox-item.mjs +255 -0
  128. package/lib/channels/inbox-item.test.mjs +335 -0
  129. package/lib/channels/index.mjs +94 -0
  130. package/lib/channels/orgmail/adapter.mjs +353 -0
  131. package/lib/channels/orgmail/adapter.test.mjs +311 -0
  132. package/lib/channels/pairing.mjs +363 -0
  133. package/lib/channels/pairing.test.mjs +270 -0
  134. package/lib/channels/registry.mjs +164 -0
  135. package/lib/channels/slack/adapter.mjs +317 -0
  136. package/lib/channels/slack-adapter.test.mjs +212 -0
  137. package/lib/channels/sms/adapter.mjs +43 -0
  138. package/lib/channels/telegram/adapter.mjs +432 -0
  139. package/lib/channels/telegram-adapter.test.mjs +306 -0
  140. package/lib/channels/voice/adapter.mjs +301 -0
  141. package/lib/channels/voice/adapter.test.mjs +278 -0
  142. package/lib/channels/whatsapp/adapter-baileys.mjs +587 -0
  143. package/lib/channels/whatsapp/adapter-baileys.test.mjs +359 -0
  144. package/lib/channels/whatsapp/adapter-twilio.mjs +65 -0
  145. package/lib/channels/whatsapp/baileys-typing.test.mjs +154 -0
  146. package/lib/charter.mjs +256 -0
  147. package/lib/charter.test.mjs +89 -0
  148. package/lib/claude-bin.mjs +134 -0
  149. package/lib/claude-bin.test.mjs +75 -0
  150. package/lib/collective/capture.mjs +185 -0
  151. package/lib/collective/capture.test.mjs +121 -0
  152. package/lib/collective/cards.mjs +201 -0
  153. package/lib/collective/cards.test.mjs +114 -0
  154. package/lib/collective/config.mjs +186 -0
  155. package/lib/collective/config.test.mjs +123 -0
  156. package/lib/collective/global-config.mjs +113 -0
  157. package/lib/collective/global-config.test.mjs +75 -0
  158. package/lib/collective/presence.mjs +201 -0
  159. package/lib/collective/presence.test.mjs +95 -0
  160. package/lib/collective/recall.mjs +215 -0
  161. package/lib/collective/recall.test.mjs +116 -0
  162. package/lib/comms/send-gate.mjs +554 -0
  163. package/lib/comms/send-gate.test.mjs +577 -0
  164. package/lib/comms.mjs +67 -0
  165. package/lib/comms.test.mjs +41 -0
  166. package/lib/diagnostics/alerts.mjs +424 -0
  167. package/lib/diagnostics/alerts.test.mjs +318 -0
  168. package/lib/diagnostics/backup-freshness.mjs +188 -0
  169. package/lib/diagnostics/backup-freshness.test.mjs +185 -0
  170. package/lib/diagnostics/counters.mjs +269 -0
  171. package/lib/diagnostics/counters.test.mjs +206 -0
  172. package/lib/diagnostics/events.mjs +188 -0
  173. package/lib/diagnostics/events.test.mjs +290 -0
  174. package/lib/diagnostics/otel.mjs +237 -0
  175. package/lib/diagnostics/otel.test.mjs +196 -0
  176. package/lib/diagnostics/trace.mjs +216 -0
  177. package/lib/diagnostics/trace.test.mjs +251 -0
  178. package/lib/env-compat.mjs +74 -0
  179. package/lib/env-compat.test.mjs +104 -0
  180. package/lib/feature-init.mjs +331 -0
  181. package/lib/fs-atomic.mjs +112 -0
  182. package/lib/fs-atomic.test.mjs +72 -0
  183. package/lib/fs-ownership.mjs +111 -0
  184. package/lib/fs-ownership.test.mjs +158 -0
  185. package/lib/hooks/bus.mjs +347 -0
  186. package/lib/hooks/bus.test.mjs +387 -0
  187. package/lib/index.js +16 -0
  188. package/lib/learning/config.mjs +106 -0
  189. package/lib/learning/config.test.mjs +75 -0
  190. package/lib/learning/counters.mjs +156 -0
  191. package/lib/learning/counters.test.mjs +69 -0
  192. package/lib/learning/curator-consolidate.test.mjs +238 -0
  193. package/lib/learning/curator.mjs +453 -0
  194. package/lib/learning/curator.test.mjs +106 -0
  195. package/lib/learning/log.mjs +40 -0
  196. package/lib/learning/reflect.mjs +534 -0
  197. package/lib/learning/reflect.test.mjs +0 -0
  198. package/lib/learning/session-index.mjs +352 -0
  199. package/lib/learning/session-index.test.mjs +125 -0
  200. package/lib/learning/skill-writer.mjs +474 -0
  201. package/lib/learning/skill-writer.test.mjs +210 -0
  202. package/lib/mcp/server.mjs +328 -0
  203. package/lib/mcp/server.test.mjs +400 -0
  204. package/lib/model-router/auth-profiles.mjs +758 -0
  205. package/lib/model-router/auth-profiles.test.mjs +580 -0
  206. package/lib/model-router/catalog/anthropic.yaml +153 -0
  207. package/lib/model-router/catalog/deepseek.yaml +86 -0
  208. package/lib/model-router/catalog/moonshot.yaml +81 -0
  209. package/lib/model-router/catalog/qwen.yaml +114 -0
  210. package/lib/model-router/catalog.mjs +925 -0
  211. package/lib/model-router/catalog.test.mjs +385 -0
  212. package/lib/model-router/economics.mjs +564 -0
  213. package/lib/model-router/economics.test.mjs +344 -0
  214. package/lib/model-router/failover.mjs +298 -0
  215. package/lib/model-router/failover.test.mjs +439 -0
  216. package/lib/model-router/health.mjs +453 -0
  217. package/lib/model-router/health.test.mjs +338 -0
  218. package/lib/model-router/integration-coverage.test.mjs +829 -0
  219. package/lib/model-router/integration.test.mjs +564 -0
  220. package/lib/model-router/ledger.mjs +402 -0
  221. package/lib/model-router/ledger.test.mjs +382 -0
  222. package/lib/model-router/llm-task.mjs +515 -0
  223. package/lib/model-router/llm-task.test.mjs +392 -0
  224. package/lib/model-router/org-credentials.mjs +260 -0
  225. package/lib/model-router/org-credentials.test.mjs +265 -0
  226. package/lib/model-router/pricing-refresh.mjs +463 -0
  227. package/lib/model-router/pricing-refresh.test.mjs +286 -0
  228. package/lib/model-router/reconcile.mjs +429 -0
  229. package/lib/model-router/reconcile.test.mjs +316 -0
  230. package/lib/model-router/repair.mjs +471 -0
  231. package/lib/model-router/repair.test.mjs +180 -0
  232. package/lib/model-router/resolve.mjs +1206 -0
  233. package/lib/model-router/spawn.mjs +497 -0
  234. package/lib/model-router/spawn.test.mjs +425 -0
  235. package/lib/model-router/taxonomy.mjs +893 -0
  236. package/lib/model-router/taxonomy.test.mjs +410 -0
  237. package/lib/model-router.mjs +677 -0
  238. package/lib/model-router.test.mjs +907 -0
  239. package/lib/org/activity.mjs +211 -0
  240. package/lib/org/activity.test.mjs +134 -0
  241. package/lib/org/approvals.mjs +448 -0
  242. package/lib/org/approvals.test.mjs +216 -0
  243. package/lib/org/awareness.mjs +222 -0
  244. package/lib/org/awareness.test.mjs +159 -0
  245. package/lib/org/board.mjs +229 -0
  246. package/lib/org/board.test.mjs +177 -0
  247. package/lib/org/bootstrap-context.mjs +169 -0
  248. package/lib/org/bootstrap-context.test.mjs +153 -0
  249. package/lib/org/client.mjs +1628 -0
  250. package/lib/org/client.test.mjs +1107 -0
  251. package/lib/org/cohort-client.mjs +67 -0
  252. package/lib/org/cohort-client.test.mjs +126 -0
  253. package/lib/org/cost-sync.mjs +227 -0
  254. package/lib/org/cost-sync.test.mjs +153 -0
  255. package/lib/org/doctor.mjs +212 -0
  256. package/lib/org/doctor.test.mjs +212 -0
  257. package/lib/org/handoff.mjs +293 -0
  258. package/lib/org/handoff.test.mjs +269 -0
  259. package/lib/org/integration-tools.mjs +182 -0
  260. package/lib/org/integration-tools.test.mjs +160 -0
  261. package/lib/org/keys.mjs +131 -0
  262. package/lib/org/keys.test.mjs +92 -0
  263. package/lib/org/knowledge.mjs +463 -0
  264. package/lib/org/knowledge.test.mjs +319 -0
  265. package/lib/org/leases.mjs +335 -0
  266. package/lib/org/leases.test.mjs +235 -0
  267. package/lib/org/mesh-integration.test.mjs +127 -0
  268. package/lib/org/mesh.mjs +459 -0
  269. package/lib/org/mesh.test.mjs +345 -0
  270. package/lib/org/messaging.mjs +503 -0
  271. package/lib/org/messaging.test.mjs +238 -0
  272. package/lib/org/policy.mjs +345 -0
  273. package/lib/org/policy.test.mjs +237 -0
  274. package/lib/org/protocol.checksum +1 -0
  275. package/lib/org/protocol.checksum.test.mjs +90 -0
  276. package/lib/org/protocol.mjs +967 -0
  277. package/lib/org/protocol.test.mjs +264 -0
  278. package/lib/org/registry.mjs +194 -0
  279. package/lib/org/registry.test.mjs +100 -0
  280. package/lib/org/tool-surface-integration.test.mjs +120 -0
  281. package/lib/org/tool-surface.mjs +2535 -0
  282. package/lib/org/tool-surface.test.mjs +589 -0
  283. package/lib/org/ui-parity.mjs +3236 -0
  284. package/lib/org/ui-parity.test.mjs +348 -0
  285. package/lib/org/verify.mjs +176 -0
  286. package/lib/org/verify.test.mjs +194 -0
  287. package/lib/rag/embed.mjs +188 -0
  288. package/lib/rag/indexer.mjs +425 -0
  289. package/lib/rag/rag.test.mjs +505 -0
  290. package/lib/rag/search.mjs +475 -0
  291. package/lib/rate-guard.mjs +246 -0
  292. package/lib/rate-guard.test.mjs +201 -0
  293. package/lib/render.mjs +112 -0
  294. package/lib/render.test.mjs +68 -0
  295. package/lib/resource-governor.mjs +297 -0
  296. package/lib/resource-governor.test.mjs +262 -0
  297. package/lib/scheduling/dynamic-jobs.mjs +675 -0
  298. package/lib/scheduling/dynamic-jobs.test.mjs +344 -0
  299. package/lib/scheduling/jitter.mjs +0 -0
  300. package/lib/scheduling/jitter.test.mjs +140 -0
  301. package/lib/secrets/broker.mjs +315 -0
  302. package/lib/secrets/broker.test.mjs +280 -0
  303. package/lib/secrets/providers.mjs +461 -0
  304. package/lib/secrets/providers.test.mjs +274 -0
  305. package/lib/security/audit-engine.mjs +684 -0
  306. package/lib/security/audit-engine.test.mjs +389 -0
  307. package/lib/security/coerce-args.mjs +552 -0
  308. package/lib/security/coerce-args.test.mjs +281 -0
  309. package/lib/security/dangerous-tools.mjs +97 -0
  310. package/lib/security/dangerous-tools.test.mjs +68 -0
  311. package/lib/security/external-content.mjs +145 -0
  312. package/lib/security/external-content.test.mjs +67 -0
  313. package/lib/security/redact.mjs +592 -0
  314. package/lib/security/redact.test.mjs +441 -0
  315. package/lib/security/secret-equal.mjs +73 -0
  316. package/lib/security/secret-equal.test.mjs +55 -0
  317. package/lib/session-permissions.mjs +101 -0
  318. package/lib/session-permissions.test.mjs +100 -0
  319. package/lib/setup/claude-probe.mjs +74 -0
  320. package/lib/setup/completeness.mjs +175 -0
  321. package/lib/setup/completeness.test.mjs +110 -0
  322. package/lib/setup/context-pack.mjs +173 -0
  323. package/lib/setup/context-pack.test.mjs +89 -0
  324. package/lib/setup/enrich.mjs +277 -0
  325. package/lib/setup/enrich.test.mjs +115 -0
  326. package/lib/setup/enroll-from-cohort.mjs +441 -0
  327. package/lib/setup/enroll-from-cohort.test.mjs +233 -0
  328. package/lib/setup/integration.test.mjs +162 -0
  329. package/lib/setup/io.mjs +360 -0
  330. package/lib/setup/io.test.mjs +77 -0
  331. package/lib/setup/run-generator.mjs +81 -0
  332. package/lib/setup/runner.mjs +244 -0
  333. package/lib/setup/runner.test.mjs +132 -0
  334. package/lib/setup/sections/comms.mjs +173 -0
  335. package/lib/setup/sections/company.mjs +120 -0
  336. package/lib/setup/sections/enrich.mjs +138 -0
  337. package/lib/setup/sections/identity.mjs +182 -0
  338. package/lib/setup/sections/identity.test.mjs +140 -0
  339. package/lib/setup/sections/learning.mjs +153 -0
  340. package/lib/setup/sections/learning.test.mjs +81 -0
  341. package/lib/setup/sections/messaging.mjs +219 -0
  342. package/lib/setup/sections/messaging.test.mjs +127 -0
  343. package/lib/setup/sections/model.mjs +102 -0
  344. package/lib/setup/sections/operating-model.mjs +78 -0
  345. package/lib/setup/sections/org.mjs +475 -0
  346. package/lib/setup/sections/org.test.mjs +313 -0
  347. package/lib/setup/sections/orgmail.mjs +173 -0
  348. package/lib/setup/sections/orgmail.test.mjs +118 -0
  349. package/lib/setup/sections/recovery.mjs +159 -0
  350. package/lib/setup/sections/recovery.test.mjs +98 -0
  351. package/lib/setup/sections/tools.mjs +132 -0
  352. package/lib/setup/sections/verify.mjs +97 -0
  353. package/lib/setup/sot.mjs +205 -0
  354. package/lib/setup/sot.test.mjs +81 -0
  355. package/lib/setup/state.mjs +151 -0
  356. package/lib/setup/state.test.mjs +92 -0
  357. package/lib/singleton.js +229 -0
  358. package/lib/singleton.test.mjs +135 -0
  359. package/lib/telemetry/alerts.mjs +216 -0
  360. package/lib/telemetry/alerts.test.mjs +109 -0
  361. package/lib/telemetry/collect.mjs +512 -0
  362. package/lib/telemetry/collect.test.mjs +202 -0
  363. package/lib/tool-definitions-integration.test.mjs +83 -0
  364. package/lib/tool-definitions.js +738 -0
  365. package/lib/tool-definitions.test.mjs +437 -0
  366. package/lib/util/fetch-timeout.mjs +136 -0
  367. package/lib/util/fetch-timeout.test.mjs +202 -0
  368. package/lib/util/reconnect.mjs +343 -0
  369. package/lib/util/reconnect.test.mjs +369 -0
  370. package/lib/util/unhandled.mjs +205 -0
  371. package/lib/util/unhandled.test.mjs +216 -0
  372. package/lib/voice/context-loader.mjs +466 -0
  373. package/lib/voice/index.mjs +100 -0
  374. package/lib/voice/openai-realtime.mjs +510 -0
  375. package/lib/voice/outbound.mjs +542 -0
  376. package/lib/voice/outbound.test.mjs +69 -0
  377. package/lib/voice/post-call-brief.mjs +428 -0
  378. package/lib/voice/provider.mjs +52 -0
  379. package/lib/voice/session-rotation.mjs +257 -0
  380. package/lib/voice/stt.mjs +161 -0
  381. package/lib/voice/stt.test.mjs +226 -0
  382. package/lib/voice/tool-bridge.mjs +370 -0
  383. package/lib/voice/tts.mjs +104 -0
  384. package/lib/voice/twilio-sip-bridge.mjs +288 -0
  385. package/lib/voice/voice.test.mjs +990 -0
  386. package/mcp/README.md +80 -0
  387. package/package.json +151 -0
  388. package/plugins/maestro-skills/plugin.json +139 -0
  389. package/plugins/maestro-skills/skills/agents-observe.md +110 -0
  390. package/plugins/maestro-skills/skills/board-deck.md +68 -0
  391. package/plugins/maestro-skills/skills/books-close.md +77 -0
  392. package/plugins/maestro-skills/skills/brand-steward.md +121 -0
  393. package/plugins/maestro-skills/skills/calendar-plan.md +57 -0
  394. package/plugins/maestro-skills/skills/call-working-sessions.md +124 -0
  395. package/plugins/maestro-skills/skills/ccxray-diagnostics.md +91 -0
  396. package/plugins/maestro-skills/skills/claude-pace.md +61 -0
  397. package/plugins/maestro-skills/skills/code-review-graph.md +99 -0
  398. package/plugins/maestro-skills/skills/crm-pipeline.md +65 -0
  399. package/plugins/maestro-skills/skills/decision-brief.md +89 -0
  400. package/plugins/maestro-skills/skills/directory-hygiene.md +125 -0
  401. package/plugins/maestro-skills/skills/draft-comms.md +84 -0
  402. package/plugins/maestro-skills/skills/evening-wrap.md +53 -0
  403. package/plugins/maestro-skills/skills/files-find.md +65 -0
  404. package/plugins/maestro-skills/skills/generative-ui.md +228 -0
  405. package/plugins/maestro-skills/skills/hiring-triage.md +74 -0
  406. package/plugins/maestro-skills/skills/inbox-triage.md +61 -0
  407. package/plugins/maestro-skills/skills/mail-triage.md +86 -0
  408. package/plugins/maestro-skills/skills/morning-brief.md +54 -0
  409. package/plugins/maestro-skills/skills/native-artifacts.md +157 -0
  410. package/plugins/maestro-skills/skills/org-board.md +133 -0
  411. package/plugins/maestro-skills/skills/org-credential.md +68 -0
  412. package/plugins/maestro-skills/skills/org-recall.md +81 -0
  413. package/plugins/maestro-skills/skills/pipeline-review.md +76 -0
  414. package/plugins/maestro-skills/skills/regulatory-status.md +81 -0
  415. package/plugins/maestro-skills/skills/router-why.md +78 -0
  416. package/plugins/maestro-skills/skills/schedule-meeting.md +91 -0
  417. package/plugins/maestro-skills/skills/session-search.md +71 -0
  418. package/plugins/maestro-skills/skills/set-reminder.md +93 -0
  419. package/plugins/maestro-skills/skills/slack-followup.md +64 -0
  420. package/plugins/maestro-skills/skills/team-activity.md +86 -0
  421. package/plugins/maestro-skills/skills/weekly-memo.md +70 -0
  422. package/policies/action-classification.yaml +114 -0
  423. package/policies/ai-disclosure.yaml +294 -0
  424. package/policies/communication-style.md +139 -0
  425. package/policies/information-barriers.yaml +118 -0
  426. package/policies/prompt-injection-defence.yaml +138 -0
  427. package/public/assets/icon-dark.png +0 -0
  428. package/public/assets/icon-dark.svg +9 -0
  429. package/public/assets/icon-light.svg +9 -0
  430. package/public/assets/logo-dark.svg +15 -0
  431. package/public/assets/logo-light.svg +15 -0
  432. package/scaffold/.mcp.json +7 -0
  433. package/scaffold/CLAUDE.md +368 -0
  434. package/scaffold/config/agent.json +55 -0
  435. package/scaffold/config/agent.ts +76 -0
  436. package/scaffold/config/agent.ts.example +89 -0
  437. package/scaffold/config/alerts.yaml +23 -0
  438. package/scaffold/config/allowlist.yaml.example +25 -0
  439. package/scaffold/config/caller-id-map.yaml +46 -0
  440. package/scaffold/config/collective.yaml +49 -0
  441. package/scaffold/config/company.json +20 -0
  442. package/scaffold/config/known-agents.json +6 -0
  443. package/scaffold/config/learning.yaml +55 -0
  444. package/scaffold/config/model-routing.yaml.example +104 -0
  445. package/scaffold/config/org.yaml +25 -0
  446. package/scaffold/config/orgmail.yaml.example +19 -0
  447. package/scaffold/config/recovery.yaml +72 -0
  448. package/scaffold/config/secrets.yaml +27 -0
  449. package/scaffold/config/slack.yaml.example +35 -0
  450. package/scaffold/config/telegram.yaml.example +38 -0
  451. package/scaffold/config/voice.yaml.example +89 -0
  452. package/scaffold/config/whatsapp.yaml.example +39 -0
  453. package/schedules/README.md +49 -0
  454. package/schedules/triggers/backlog-executor.md +102 -0
  455. package/schedules/triggers/brand-steward.md +72 -0
  456. package/schedules/triggers/daily-evening-wrap.md +159 -0
  457. package/schedules/triggers/daily-midday-sweep.md +58 -0
  458. package/schedules/triggers/daily-morning-brief.md +55 -0
  459. package/schedules/triggers/directory-hygiene.md +81 -0
  460. package/schedules/triggers/dynamic-jobs.md +40 -0
  461. package/schedules/triggers/inbox-processor.md +115 -0
  462. package/schedules/triggers/meeting-action-capture.md +60 -0
  463. package/schedules/triggers/meeting-prep.md +69 -0
  464. package/schedules/triggers/messaging-inbound.md +50 -0
  465. package/schedules/triggers/org-pulse.md +24 -0
  466. package/schedules/triggers/quarterly-self-assessment.md +54 -0
  467. package/schedules/triggers/weekly-engineering-health.md +37 -0
  468. package/schedules/triggers/weekly-execution.md +65 -0
  469. package/schedules/triggers/weekly-hiring.md +53 -0
  470. package/schedules/triggers/weekly-priorities.md +38 -0
  471. package/schedules/triggers/weekly-strategic-memo.md +124 -0
  472. package/scripts/archive-email.sh +55 -0
  473. package/scripts/cadence/cadence-status.mjs +36 -0
  474. package/scripts/cadence/enqueue-cadence-tick.mjs +174 -0
  475. package/scripts/cadence/enqueue-cadence-tick.test.mjs +187 -0
  476. package/scripts/cadence/launchd-cadence-wrapper.sh +85 -0
  477. package/scripts/cadence/launchd-cloud-relay-wrapper.sh +95 -0
  478. package/scripts/cadence/launchd-socket-mode-wrapper.sh +95 -0
  479. package/scripts/ci/check-docs-accuracy.mjs +493 -0
  480. package/scripts/ci/check-docs-accuracy.test.mjs +409 -0
  481. package/scripts/ci/check-exports-exist.mjs +140 -0
  482. package/scripts/ci/check-files-exist.mjs +107 -0
  483. package/scripts/ci/check-no-build-artifacts.mjs +111 -0
  484. package/scripts/ci/check-no-build-artifacts.test.mjs +71 -0
  485. package/scripts/ci/check-no-confidential.mjs +198 -0
  486. package/scripts/ci/check-no-conflict-markers.mjs +169 -0
  487. package/scripts/ci/check-no-residual-identity.mjs +163 -0
  488. package/scripts/ci/check-no-residual-identity.test.mjs +89 -0
  489. package/scripts/ci/check-tarball-fidelity.mjs +205 -0
  490. package/scripts/ci/check-unresolved-tokens.mjs +83 -0
  491. package/scripts/ci/check.mjs +109 -0
  492. package/scripts/ci/check.test.mjs +194 -0
  493. package/scripts/ci/run-coverage.mjs +82 -0
  494. package/scripts/ci/run-tests.mjs +71 -0
  495. package/scripts/cloud-relay/README.md +59 -0
  496. package/scripts/cloud-relay/index.mjs +233 -0
  497. package/scripts/cloud-relay/package.json +15 -0
  498. package/scripts/cloud-relay/railway.json +13 -0
  499. package/scripts/cloud-relay/voice/README.md +94 -0
  500. package/scripts/cloud-relay/voice/package-lock.json +39 -0
  501. package/scripts/cloud-relay/voice/package.json +16 -0
  502. package/scripts/cloud-relay/voice/railway.json +13 -0
  503. package/scripts/cloud-relay/voice/server.mjs +532 -0
  504. package/scripts/collective/hook-runner.mjs +211 -0
  505. package/scripts/collective/hook-runner.test.mjs +90 -0
  506. package/scripts/collective/org-pulse.mjs +72 -0
  507. package/scripts/collective/org-sync.mjs +61 -0
  508. package/scripts/collective/recall.mjs +45 -0
  509. package/scripts/collective/who.mjs +30 -0
  510. package/scripts/comms-monitor.sh +288 -0
  511. package/scripts/configure-whatsapp-sandbox.sh +201 -0
  512. package/scripts/continuous-monitor.sh +91 -0
  513. package/scripts/cost/fleet-digest.mjs +407 -0
  514. package/scripts/cost/fleet-digest.test.mjs +207 -0
  515. package/scripts/cost/track-claude-usage.mjs +169 -0
  516. package/scripts/daemon/agent-daemon.mjs +989 -0
  517. package/scripts/daemon/agent-daemon.test.mjs +525 -0
  518. package/scripts/daemon/cadence-consumer-governance.test.mjs +220 -0
  519. package/scripts/daemon/cadence-consumer.mjs +1080 -0
  520. package/scripts/daemon/cadence-consumer.test.mjs +770 -0
  521. package/scripts/daemon/cadence-handlers.mjs +1121 -0
  522. package/scripts/daemon/cadence-handlers.test.mjs +617 -0
  523. package/scripts/daemon/classifier.mjs +704 -0
  524. package/scripts/daemon/classifier.test.mjs +238 -0
  525. package/scripts/daemon/classify-kind.mjs +54 -0
  526. package/scripts/daemon/classify-kind.test.mjs +40 -0
  527. package/scripts/daemon/context-compiler.mjs +605 -0
  528. package/scripts/daemon/context-compiler.test.mjs +300 -0
  529. package/scripts/daemon/dispatcher-cooldown.test.mjs +122 -0
  530. package/scripts/daemon/dispatcher-governance.test.mjs +886 -0
  531. package/scripts/daemon/dispatcher.mjs +1516 -0
  532. package/scripts/daemon/health.mjs +72 -0
  533. package/scripts/daemon/inbox-deferral.mjs +210 -0
  534. package/scripts/daemon/inbox-deferral.test.mjs +242 -0
  535. package/scripts/daemon/integration.test.mjs +149 -0
  536. package/scripts/daemon/launchd-wrapper-generic.sh +96 -0
  537. package/scripts/daemon/launchd-wrapper-slack-events.sh +37 -0
  538. package/scripts/daemon/launchd-wrapper.sh +91 -0
  539. package/scripts/daemon/lib/session-router.mjs +274 -0
  540. package/scripts/daemon/lib/session-router.test.mjs +295 -0
  541. package/scripts/daemon/maestro-daemon.mjs +275 -0
  542. package/scripts/daemon/prompt-builder.mjs +685 -0
  543. package/scripts/daemon/prompt-builder.test.mjs +213 -0
  544. package/scripts/daemon/responder.mjs +854 -0
  545. package/scripts/daemon/session-lock.mjs +721 -0
  546. package/scripts/daemon/session-lock.test.mjs +252 -0
  547. package/scripts/daemon/session-outcomes.mjs +640 -0
  548. package/scripts/daemon/session-outcomes.test.mjs +533 -0
  549. package/scripts/daemon/typing-registry.mjs +90 -0
  550. package/scripts/daemon/typing-registry.test.mjs +77 -0
  551. package/scripts/daemon/voice-webhook-server.mjs +804 -0
  552. package/scripts/decisions/capture-decision.mjs +116 -0
  553. package/scripts/disclosure_assessment.py +873 -0
  554. package/scripts/disclosure_boundaries.py +562 -0
  555. package/scripts/email-signature-principal.html +52 -0
  556. package/scripts/email-signature.html +60 -0
  557. package/scripts/email_quote_thread.py +167 -0
  558. package/scripts/email_thread_dedup.py +362 -0
  559. package/scripts/emergency-stop.sh +81 -0
  560. package/scripts/healthcheck.sh +116 -0
  561. package/scripts/hooks/block-mcp-cohort-send.sh +15 -0
  562. package/scripts/hooks/block-mcp-slack-send.sh +7 -0
  563. package/scripts/hooks/post-action-log.sh +126 -0
  564. package/scripts/hooks/pre-send-audit.sh +174 -0
  565. package/scripts/hooks/pre-send-audit.test.mjs +215 -0
  566. package/scripts/hooks/session-end-log.sh +27 -0
  567. package/scripts/hooks/session-start-banner.sh +115 -0
  568. package/scripts/huddle/audio-bridge.mjs +664 -0
  569. package/scripts/huddle/boot-slack-cdp.sh +102 -0
  570. package/scripts/huddle/huddle-controller.mjs +942 -0
  571. package/scripts/huddle/huddle-server.mjs +1229 -0
  572. package/scripts/huddle/launch-slack.sh +232 -0
  573. package/scripts/huddle/openai-realtime-bridge.mjs +462 -0
  574. package/scripts/huddle/package-lock.json +62 -0
  575. package/scripts/huddle/package.json +22 -0
  576. package/scripts/huddle/setup-audio.sh +239 -0
  577. package/scripts/huddle/start-call.mjs +318 -0
  578. package/scripts/huddle/test-pipeline.mjs +263 -0
  579. package/scripts/learning/consolidate-skills.mjs +72 -0
  580. package/scripts/learning/session-search.mjs +125 -0
  581. package/scripts/llm_email_dedup.py +442 -0
  582. package/scripts/local-triggers/generate-plists.sh +432 -0
  583. package/scripts/local-triggers/generate-plists.test.mjs +413 -0
  584. package/scripts/local-triggers/install-all.sh +49 -0
  585. package/scripts/local-triggers/plists/.gitkeep +0 -0
  586. package/scripts/local-triggers/run-trigger.sh +63 -0
  587. package/scripts/local-triggers/templates/rag-reindex.plist.template +47 -0
  588. package/scripts/local-triggers/templates/voice-relay-poller.plist.template +54 -0
  589. package/scripts/local-triggers/templates/voice-tunnel.plist.template +55 -0
  590. package/scripts/local-triggers/templates/voice-webhook.plist.template +51 -0
  591. package/scripts/maintenance/backup-to-cloud.sh +124 -0
  592. package/scripts/maintenance/health-check.sh +377 -0
  593. package/scripts/media-generation/README.md +105 -0
  594. package/scripts/media-generation/gemini-image-client.mjs +173 -0
  595. package/scripts/media-generation/generate-assets.mjs +289 -0
  596. package/scripts/media-generation/veo-video-client.mjs +219 -0
  597. package/scripts/org/send-orgmail.mjs +227 -0
  598. package/scripts/outbound-dedup-cleanup.sh +43 -0
  599. package/scripts/outbound-dedup.sh +477 -0
  600. package/scripts/outbound_dedup.py +115 -0
  601. package/scripts/parse-voice-transcript.mjs +481 -0
  602. package/scripts/pdf-generation/README.md +63 -0
  603. package/scripts/pdf-generation/build-document.mjs +247 -0
  604. package/scripts/pdf-generation/templates/board-pack.latex +136 -0
  605. package/scripts/pdf-generation/templates/corporate-letter.latex +126 -0
  606. package/scripts/pdf-generation/templates/memo.latex +114 -0
  607. package/scripts/poll-slack-events.sh +35 -0
  608. package/scripts/poller/calendar-poller.mjs +12 -0
  609. package/scripts/poller/gmail-poller.mjs +192 -0
  610. package/scripts/poller/imap-client.mjs +289 -0
  611. package/scripts/poller/inbox-scan-poller.mjs +156 -0
  612. package/scripts/poller/inbox-scan-poller.test.mjs +231 -0
  613. package/scripts/poller/index.mjs +73 -0
  614. package/scripts/poller/intra-session-check.mjs +285 -0
  615. package/scripts/poller/lib/cloud-relay-dedup.mjs +88 -0
  616. package/scripts/poller/lib/cloud-relay-dedup.test.mjs +133 -0
  617. package/scripts/poller/lib/slash-command-handlers.mjs +177 -0
  618. package/scripts/poller/secondary-gmail-poller.mjs +132 -0
  619. package/scripts/poller/slack-cloud-relay-client.mjs +368 -0
  620. package/scripts/poller/slack-poller.mjs +854 -0
  621. package/scripts/poller/slack-socket-mode.mjs +917 -0
  622. package/scripts/poller/slack-socket-mode.test.mjs +753 -0
  623. package/scripts/poller/trigger.mjs +75 -0
  624. package/scripts/poller/utils.mjs +371 -0
  625. package/scripts/poller/voice-cloud-relay-client.mjs +179 -0
  626. package/scripts/poller/voice-poller.mjs +236 -0
  627. package/scripts/poller-launchd/install.sh +66 -0
  628. package/scripts/poller-launchd/poller.plist.template +40 -0
  629. package/scripts/poller-launchd/whatsapp-handler.plist.template +39 -0
  630. package/scripts/post-interaction-indexer.py +1598 -0
  631. package/scripts/pre-draft-context.py +994 -0
  632. package/scripts/pre_draft_lookup.py +258 -0
  633. package/scripts/rag/build-index.mjs +47 -0
  634. package/scripts/rag/ingest.mjs +111 -0
  635. package/scripts/rag/search.mjs +119 -0
  636. package/scripts/rag-indexer.py +629 -0
  637. package/scripts/restore-from-backup.sh +248 -0
  638. package/scripts/restore-from-backup.test.mjs +178 -0
  639. package/scripts/resume-operations.sh +80 -0
  640. package/scripts/search-secondary-inbox.py +181 -0
  641. package/scripts/secondary-inbox-poller.py +437 -0
  642. package/scripts/self-optimization/compute-metrics.py +398 -0
  643. package/scripts/send-email-as-principal.py +369 -0
  644. package/scripts/send-email-threaded.py +392 -0
  645. package/scripts/send-email-with-attachment.py +377 -0
  646. package/scripts/send-email.sh +131 -0
  647. package/scripts/send-sms.sh +175 -0
  648. package/scripts/send-whatsapp.sh +292 -0
  649. package/scripts/session-start.sh +106 -0
  650. package/scripts/setup/boot-claude-session.sh +94 -0
  651. package/scripts/setup/configure-macos.sh +674 -0
  652. package/scripts/setup/configure-twilio-sip-trunk.mjs +207 -0
  653. package/scripts/setup/configure-voice-tunnel.mjs +182 -0
  654. package/scripts/setup/generate-agent-env.mjs +92 -0
  655. package/scripts/setup/generate-agent-package-json.mjs +222 -0
  656. package/scripts/setup/generate-agent-package-json.test.mjs +143 -0
  657. package/scripts/setup/generate-autonomy.mjs +60 -0
  658. package/scripts/setup/generate-backlog.mjs +101 -0
  659. package/scripts/setup/generate-cadences.mjs +92 -0
  660. package/scripts/setup/generate-capability.mjs +162 -0
  661. package/scripts/setup/generate-charter.mjs +76 -0
  662. package/scripts/setup/generate-comms.mjs +59 -0
  663. package/scripts/setup/generate-company.mjs +92 -0
  664. package/scripts/setup/init-agent.sh +547 -0
  665. package/scripts/setup/init-agent.test.mjs +151 -0
  666. package/scripts/setup/init-archetype.mjs +74 -0
  667. package/scripts/setup/init-backup.mjs +54 -0
  668. package/scripts/setup/init-cadence-bus.mjs +60 -0
  669. package/scripts/setup/init-channel-bus.mjs +46 -0
  670. package/scripts/setup/init-cost-tracking.mjs +45 -0
  671. package/scripts/setup/init-decision-capture.mjs +66 -0
  672. package/scripts/setup/init-known-agents.mjs +57 -0
  673. package/scripts/setup/init-learning.mjs +70 -0
  674. package/scripts/setup/init-memory-executive.mjs +45 -0
  675. package/scripts/setup/init-model-router.mjs +124 -0
  676. package/scripts/setup/init-rag.mjs +174 -0
  677. package/scripts/setup/init-session-router.mjs +38 -0
  678. package/scripts/setup/init-slack-socket-mode.mjs +260 -0
  679. package/scripts/setup/init-telegram.mjs +165 -0
  680. package/scripts/setup/init-voice-realtime.mjs +204 -0
  681. package/scripts/setup/init-whatsapp-baileys.mjs +77 -0
  682. package/scripts/setup/install-dev-tools.sh +150 -0
  683. package/scripts/setup/lib/install-plist.mjs +95 -0
  684. package/scripts/setup/migrate-agent-to-sot.mjs +192 -0
  685. package/scripts/setup/render-environment-yaml.mjs +133 -0
  686. package/scripts/slack-events-ctl.sh +177 -0
  687. package/scripts/slack-events-server.mjs +1045 -0
  688. package/scripts/slack-react.mjs +89 -0
  689. package/scripts/slack-responded.sh +232 -0
  690. package/scripts/slack-send.sh +287 -0
  691. package/scripts/slack-typing.mjs +196 -0
  692. package/scripts/slack-upload-v2.py +95 -0
  693. package/scripts/sms-handler.mjs +450 -0
  694. package/scripts/spawn-session.sh +120 -0
  695. package/scripts/sync-protocol.mjs +217 -0
  696. package/scripts/system-verify.sh +184 -0
  697. package/scripts/test-email-thread-dedup.py +239 -0
  698. package/scripts/test-information-barriers.py +484 -0
  699. package/scripts/test-llm-email-dedup.py +251 -0
  700. package/scripts/test-pre-draft-integration.py +203 -0
  701. package/scripts/test-rag-phase2.sh +442 -0
  702. package/scripts/test-rag-search.sh +251 -0
  703. package/scripts/test-voice-parser.mjs +316 -0
  704. package/scripts/user-context-search.py +659 -0
  705. package/scripts/validate_outbound.py +1504 -0
  706. package/scripts/watchdog/ai.maestro.memory-watchdog.plist +41 -0
  707. package/scripts/watchdog/force-reboot.sh +157 -0
  708. package/scripts/watchdog/memory-watchdog.sh +473 -0
  709. package/scripts/whatsapp-handler.mjs +538 -0
  710. package/teams/desktop-operations.yaml +34 -0
  711. package/teams/executive-office.yaml +27 -0
  712. package/teams/legal-and-regulatory.yaml +24 -0
  713. package/teams/platform-and-engineering.yaml +23 -0
  714. package/teams/strategy-and-growth.yaml +29 -0
  715. package/workflows/continuous/backlog-executor.yaml +141 -0
  716. package/workflows/continuous/inbound-monitor.yaml +168 -0
  717. package/workflows/daily/applicant-triage.yaml +197 -0
  718. package/workflows/daily/comms-triage.yaml +80 -0
  719. package/workflows/daily/evening-wrap.yaml +105 -0
  720. package/workflows/daily/morning-brief.yaml +164 -0
  721. package/workflows/daily/slack-followup-sweep.yaml +87 -0
  722. package/workflows/event-driven/README.md +50 -0
  723. package/workflows/event-driven/agent-failure-investigation.yaml +137 -0
  724. package/workflows/event-driven/pr-review.yaml +107 -0
  725. package/workflows/monthly/board-readiness.yaml +76 -0
  726. package/workflows/quarterly/strategic-scenario-analysis.yaml +85 -0
  727. package/workflows/session-protocol.md +171 -0
  728. package/workflows/weekly/engineering-health.yaml +154 -0
  729. package/workflows/weekly/hiring-review.yaml +169 -0
  730. package/workflows/weekly/rollup-pipeline-review.yaml +76 -0
  731. package/workflows/weekly/strategic-memo.yaml +79 -0
@@ -0,0 +1,164 @@
1
+ # Morning CEO Brief Workflow
2
+ # Runs daily at 06:00 GST (UTC+4) on the Mac mini
3
+ # Produces the CEO Morning Brief by 06:30
4
+
5
+ name: morning-brief
6
+ schedule: "0 6 * * *" # 06:00 daily
7
+ timezone: Asia/Dubai
8
+ description: >
9
+ Produces the daily CEO Morning Brief — a concise executive summary covering
10
+ overnight developments, today's priorities, decisions needed, and open loops.
11
+
12
+ # Workflow steps execute sequentially
13
+ steps:
14
+ # ── System health gate — check API quota before the day's workload ──
15
+ - id: quota-status
16
+ skill: claude-pace
17
+ action: morning-quota-check
18
+ description: >
19
+ Check overnight quota consumption and current headroom. Reports pace
20
+ delta zone so the morning brief can flag capacity constraints early.
21
+ timeout: 30
22
+ outputs:
23
+ pace_delta: green|yellow|red
24
+ five_hour_pct: 0
25
+ seven_day_pct: 0
26
+ capacity_note: "" # included in the morning brief if yellow/red
27
+
28
+ - id: market-sweep
29
+ agent: market-research
30
+ action: overnight-market-summary
31
+ description: Gather overnight market movements, key indices, relevant asset class performance
32
+ timeout: 300 # 5 minutes
33
+ parallel_with: quota-status
34
+ inputs:
35
+ scope: [equities, crypto, forex, fixed-income]
36
+ regions: [us, emea, apac]
37
+ focus_assets: [] # populated from config/watchlist.yaml
38
+ outputs:
39
+ file: outputs/briefs/daily/{date}/market-sweep.md
40
+
41
+ - id: news-intelligence
42
+ agent: competitive-intelligence
43
+ action: overnight-news-scan
44
+ description: Scan for overnight news relevant to the company, competitors, regulatory developments
45
+ timeout: 300
46
+ parallel_with: market-sweep
47
+ inputs:
48
+ topics:
49
+ - adaptic.ai
50
+ - ai asset management
51
+ - dfsa regulation
52
+ - hedge fund acquisitions
53
+ - algorithmic trading regulation
54
+ - competitors # from config/competitors.yaml
55
+ outputs:
56
+ file: outputs/briefs/daily/{date}/news-intelligence.md
57
+
58
+ - id: comms-triage
59
+ agent: gmail-operator
60
+ action: overnight-inbox-scan
61
+ description: Identify overnight emails requiring attention
62
+ timeout: 300
63
+ parallel_with: market-sweep
64
+ inputs:
65
+ account: "{{agent.email}}" # resolved from config/agent.json at workflow execution
66
+ mode: observe # read-only, never act
67
+ priority_senders: [] # from config/contacts.yaml
68
+ outputs:
69
+ file: outputs/briefs/daily/{date}/email-triage.md
70
+
71
+ - id: slack-triage
72
+ agent: slack-operator
73
+ action: overnight-channel-scan
74
+ description: Identify overnight Slack activity requiring attention
75
+ timeout: 300
76
+ parallel_with: market-sweep
77
+ inputs:
78
+ mode: observe
79
+ priority_channels: [] # from config/slack-channels.yaml
80
+ outputs:
81
+ file: outputs/briefs/daily/{date}/slack-triage.md
82
+
83
+ - id: open-loops-review
84
+ agent: pmo-execution
85
+ action: open-loops-status
86
+ description: Check status of all open execution queue items
87
+ timeout: 120
88
+ inputs:
89
+ queues: [awaiting-reply, delegated, blocked, scheduled-followup]
90
+ outputs:
91
+ file: outputs/briefs/daily/{date}/open-loops.md
92
+
93
+ - id: workstream-pulse
94
+ agent: pmo-execution
95
+ action: workstream-status-check
96
+ description: One-line status from each active workstream
97
+ timeout: 120
98
+ depends_on: [open-loops-review]
99
+ inputs:
100
+ source: knowledge/memory/executive-memory.yaml
101
+ section: active_initiatives
102
+ outputs:
103
+ file: outputs/briefs/daily/{date}/workstream-pulse.md
104
+
105
+ - id: calendar-review
106
+ agent: calendar-ops
107
+ action: today-schedule
108
+ description: Pull today's calendar and flag preparation needs
109
+ timeout: 120
110
+ parallel_with: workstream-pulse
111
+ inputs:
112
+ mode: observe
113
+ outputs:
114
+ file: outputs/briefs/daily/{date}/calendar.md
115
+
116
+ - id: synthesise-brief
117
+ agent: ceo-briefing
118
+ action: produce-morning-brief
119
+ description: Synthesise all inputs into the CEO Morning Brief
120
+ timeout: 300
121
+ depends_on:
122
+ [
123
+ quota-status,
124
+ market-sweep,
125
+ news-intelligence,
126
+ comms-triage,
127
+ slack-triage,
128
+ open-loops-review,
129
+ workstream-pulse,
130
+ calendar-review,
131
+ ]
132
+ inputs:
133
+ quota_status: "{quota-status.outputs}" # included as system health section
134
+ components:
135
+ - outputs/briefs/daily/{date}/market-sweep.md
136
+ - outputs/briefs/daily/{date}/news-intelligence.md
137
+ - outputs/briefs/daily/{date}/email-triage.md
138
+ - outputs/briefs/daily/{date}/slack-triage.md
139
+ - outputs/briefs/daily/{date}/open-loops.md
140
+ - outputs/briefs/daily/{date}/workstream-pulse.md
141
+ - outputs/briefs/daily/{date}/calendar.md
142
+ template: docs/prompts/morning-brief-template.md
143
+ outputs:
144
+ file: outputs/briefs/daily/{date}/ceo-morning-brief.md
145
+
146
+ - id: notify-ready
147
+ action: notify
148
+ description: Signal that the morning brief is ready
149
+ depends_on: [synthesise-brief]
150
+ inputs:
151
+ channel: slack
152
+ target: "#ceo-office"
153
+ message: "Morning Brief ready: outputs/briefs/daily/{date}/ceo-morning-brief.md"
154
+ approval_required: false # internal notification, low risk
155
+
156
+ # Error handling
157
+ on_failure:
158
+ action: log-and-notify
159
+ message: "Morning brief workflow failed at step {failed_step}"
160
+ notify: agent-self # the executing agent (operator)
161
+ severity: high
162
+
163
+ # Output
164
+ final_output: outputs/briefs/daily/{date}/ceo-morning-brief.md
@@ -0,0 +1,87 @@
1
+ # Slack Follow-Up Sweep
2
+ # Runs daily at 12:00 and 17:00 GST
3
+
4
+ name: slack-followup-sweep
5
+ schedule: "0 12,17 * * *"
6
+ timezone: Asia/Dubai
7
+ description: >
8
+ Checks all pending Slack follow-ups — messages sent that haven't received
9
+ a response, commitments made by others that are overdue, and threads
10
+ that need continuation.
11
+
12
+ steps:
13
+ - id: check-awaiting-reply
14
+ agent: slack-operator
15
+ action: check-pending-replies
16
+ description: Check if any messages we sent have received responses
17
+ timeout: 300
18
+ inputs:
19
+ mode: observe
20
+ queue: awaiting-reply
21
+ source: knowledge/memory/executive-memory.yaml
22
+ outputs:
23
+ file: outputs/followups/daily/{date}/slack-reply-status.md
24
+
25
+ - id: check-commitments
26
+ agent: pmo-execution
27
+ action: check-slack-commitments
28
+ description: Check if commitments made in Slack have been fulfilled
29
+ timeout: 180
30
+ depends_on: [check-awaiting-reply]
31
+ inputs:
32
+ source: knowledge/memory/executive-memory.yaml
33
+ section: open_loops
34
+ channel: slack
35
+ outputs:
36
+ file: outputs/followups/daily/{date}/slack-commitments-status.md
37
+
38
+ - id: draft-followups
39
+ agent: communications
40
+ action: draft-followup-messages
41
+ description: Draft follow-up messages for overdue items
42
+ timeout: 300
43
+ depends_on: [check-commitments]
44
+ inputs:
45
+ overdue_items: outputs/followups/daily/{date}/slack-commitments-status.md
46
+ voice: agent # Follow up in the agent's own voice (mode resolved from config/agent.json voiceModes)
47
+ outputs:
48
+ file: outputs/followups/daily/{date}/slack-followup-drafts.md
49
+
50
+ - id: approval-gate
51
+ action: approval-check
52
+ description: Check if follow-up messages are pre-approved category
53
+ depends_on: [draft-followups]
54
+ inputs:
55
+ drafts: outputs/followups/daily/{date}/slack-followup-drafts.md
56
+ policy: policies/communications-policy.yaml
57
+ outputs:
58
+ approved: [] # messages cleared for sending
59
+ pending_approval: [] # messages needing the principal's review
60
+
61
+ - id: send-approved
62
+ agent: slack-operator
63
+ action: send-messages
64
+ description: Send pre-approved follow-up messages
65
+ depends_on: [approval-gate]
66
+ inputs:
67
+ messages: "{approval-gate.outputs.approved}"
68
+ mode: execute
69
+ log: true
70
+ outputs:
71
+ file: logs/daily/{date}/slack-sends.log
72
+
73
+ - id: queue-pending
74
+ agent: pmo-execution
75
+ action: queue-for-approval
76
+ description: Queue messages requiring approval for next CEO review
77
+ depends_on: [approval-gate]
78
+ inputs:
79
+ messages: "{approval-gate.outputs.pending_approval}"
80
+ outputs:
81
+ update: knowledge/memory/executive-memory.yaml
82
+
83
+ on_failure:
84
+ action: log-and-notify
85
+ message: "Slack follow-up sweep failed at step {failed_step}"
86
+ notify: agent-self # the executing agent (operator)
87
+ severity: medium
@@ -0,0 +1,50 @@
1
+ # Event-Driven Workflows
2
+
3
+ These workflows trigger in response to events rather than on a schedule.
4
+
5
+ ## Planned Event Triggers
6
+
7
+ ### High-Priority Inbound Message
8
+
9
+ - **Trigger**: Message from CEO, investor, or board member detected during monitoring
10
+ - **Action**: Immediately surface to the agent, classify urgency, prepare response options
11
+ - **Agent**: slack-operator or gmail-operator → the agent operator
12
+
13
+ ### Regulatory Development
14
+
15
+ - **Trigger**: Regulatory announcement, rule change, or compliance alert
16
+ - **Action**: Assess impact on your organisation, update regulatory tracker, brief the principal if material
17
+ - **Agent**: regulatory-watch → the agent operator
18
+
19
+ ### Pipeline Target Event
20
+
21
+ - **Trigger**: News about an acquisition target (AUM change, personnel change, regulatory action)
22
+ - **Action**: Update target profile, assess impact on pipeline, brief corporate-development
23
+ - **Agent**: competitive-intelligence → corporate-development
24
+
25
+ ### Engineering Incident
26
+
27
+ - **Trigger**: Build failure, test regression, or production alert in your main repo
28
+ - **Action**: Assess severity, route to engineering-coordination, brief if material
29
+ - **Agent**: engineering-coordination → the agent operator
30
+
31
+ ### Calendar Event Approaching
32
+
33
+ - **Trigger**: 30 minutes before a scheduled meeting
34
+ - **Action**: Prepare meeting brief with relevant context, open loops, and talking points
35
+ - **Agent**: calendar-ops → ceo-briefing
36
+
37
+ ### Decision Deadline
38
+
39
+ - **Trigger**: Decision deadline approaching (from decision-log)
40
+ - **Action**: Surface decision with options, remind of deadline, escalate if needed
41
+ - **Agent**: decision-log → the agent operator
42
+
43
+ ## Implementation
44
+
45
+ Event-driven workflows will be implemented via:
46
+
47
+ 1. **Polling monitors** — Lightweight agents that check for events at high frequency
48
+ 2. **File watchers** — `fswatch` monitoring for changes to key files
49
+ 3. **Webhook receivers** — HTTP endpoints for external event sources (future)
50
+ 4. **MCP event streams** — Real-time event ingestion via MCP servers (future)
@@ -0,0 +1,137 @@
1
+ # Agent Failure Investigation
2
+ # Event-driven — triggered when a backlog executor agent fails or hangs
3
+ # Uses agents-observe for session analysis and ccxray for token diagnostics
4
+
5
+ name: agent-failure-investigation
6
+ type: event-driven
7
+ trigger:
8
+ event: agent_failure
9
+ source: backlog-executor # or any workflow that spawns agents
10
+ conditions:
11
+ - agent_exit_code: non-zero
12
+ - agent_timeout: exceeded
13
+ - agent_output: error_pattern
14
+ description: >
15
+ Automated post-mortem when an agent fails. Pulls the full session trace
16
+ via agents-observe, analyses token/cost via ccxray logs, determines root
17
+ cause, and recommends remediation. Prevents recurring failures.
18
+
19
+ steps:
20
+ # ── Pull session trace via agents-observe ──
21
+ - id: session-trace
22
+ skill: agents-observe
23
+ action: query-failed-session
24
+ description: >
25
+ Retrieve the full tool call sequence, timing data, and error state
26
+ for the failed agent session. Identify the last successful action
27
+ before failure.
28
+ timeout: 120
29
+ inputs:
30
+ session_id: "{trigger.session_id}"
31
+ agent_name: "{trigger.agent_name}"
32
+ query:
33
+ - full_tool_call_sequence
34
+ - last_successful_tool
35
+ - error_message
36
+ - timing_breakdown
37
+ - resource_state_at_failure
38
+ outputs:
39
+ file: outputs/investigations/{date}/{session_id}/session-trace.md
40
+ summary:
41
+ last_successful_tool: ""
42
+ error_type: "" # timeout|rate_limit|permission|context_overflow|unknown
43
+ duration_before_failure: ""
44
+ tool_call_count: 0
45
+
46
+ # ── Token analysis via ccxray ──
47
+ - id: token-analysis
48
+ skill: ccxray-diagnostics
49
+ action: analyse-failed-session
50
+ description: >
51
+ Check if the failure was token-related — context window overflow,
52
+ excessive input from tool reads, or cost runaway. Cross-reference
53
+ with session trace timing.
54
+ timeout: 120
55
+ parallel_with: session-trace
56
+ inputs:
57
+ session_id: "{trigger.session_id}"
58
+ log_dir: ~/.ccxray/logs/
59
+ checks:
60
+ - context_window_utilisation
61
+ - input_token_spike # large file reads or tool outputs
62
+ - output_token_pattern # repetitive or runaway generation
63
+ - cost_vs_average # compared to similar agent sessions
64
+ outputs:
65
+ file: outputs/investigations/{date}/{session_id}/token-analysis.md
66
+ summary:
67
+ context_peak_pct: 0
68
+ token_anomaly_detected: false
69
+ cost_vs_average: ""
70
+
71
+ # ── Quota state at time of failure ──
72
+ - id: quota-state
73
+ skill: claude-pace
74
+ action: check-quota-at-failure
75
+ description: >
76
+ Determine whether the failure was caused by or correlated with
77
+ API rate limiting. Check pace delta at the time of failure.
78
+ timeout: 30
79
+ parallel_with: session-trace
80
+ inputs:
81
+ timestamp: "{trigger.failure_timestamp}"
82
+ check:
83
+ - was_rate_limited
84
+ - pace_delta_at_time
85
+ - concurrent_sessions_count
86
+ outputs:
87
+ rate_limited: false
88
+ pace_delta: ""
89
+ concurrent_sessions: 0
90
+
91
+ # ── Root cause analysis ──
92
+ - id: root-cause-analysis
93
+ agent: engineering-oversight
94
+ action: determine-root-cause
95
+ description: >
96
+ Synthesise session trace, token analysis, and quota state to determine
97
+ the root cause. Classify the failure and recommend remediation.
98
+ timeout: 300
99
+ depends_on: [session-trace, token-analysis, quota-state]
100
+ inputs:
101
+ session_trace: outputs/investigations/{date}/{session_id}/session-trace.md
102
+ token_analysis: outputs/investigations/{date}/{session_id}/token-analysis.md
103
+ quota_state: "{quota-state.outputs}"
104
+ trigger_context: "{trigger}"
105
+ outputs:
106
+ file: outputs/investigations/{date}/{session_id}/root-cause.md
107
+ classification:
108
+ root_cause: "" # rate_limit|context_overflow|tool_error|prompt_bug|external_service|unknown
109
+ severity: "" # low|medium|high|critical
110
+ recurrence_risk: "" # low|medium|high
111
+ remediation: "" # specific fix recommendation
112
+
113
+ # ── Update tech debt / improvement backlog if systemic ──
114
+ - id: queue-remediation
115
+ agent: pmo-execution
116
+ action: queue-fix-if-systemic
117
+ description: >
118
+ If the root cause indicates a systemic issue (recurrence_risk: high),
119
+ create an item in tech-debt or improvement-backlog queue.
120
+ timeout: 60
121
+ depends_on: [root-cause-analysis]
122
+ condition: "{root-cause-analysis.outputs.classification.recurrence_risk} == high"
123
+ inputs:
124
+ root_cause: outputs/investigations/{date}/{session_id}/root-cause.md
125
+ target_queue: state/queues/tech-debt.yaml
126
+ item:
127
+ title: "Agent failure: {trigger.agent_name} — {root-cause-analysis.outputs.classification.root_cause}"
128
+ priority: high
129
+ source: "auto:agent-failure-investigation"
130
+
131
+ on_failure:
132
+ action: log-and-notify
133
+ message: "Agent failure investigation failed for session {trigger.session_id}"
134
+ notify: agent-self # the executing agent (operator)
135
+ severity: medium
136
+
137
+ final_output: outputs/investigations/{date}/{session_id}/root-cause.md
@@ -0,0 +1,107 @@
1
+ # PR Review Workflow
2
+ # Event-driven — triggered when a new PR is opened or updated in a tracked repo
3
+ # Uses code-review-graph for structural analysis before human/agent review
4
+
5
+ name: pr-review
6
+ type: event-driven
7
+ trigger:
8
+ event: pull_request
9
+ actions: [opened, synchronize]
10
+ # Repository list is loaded from config/repo-registry.yaml at runtime so
11
+ # each agent watches the set of repos relevant to its own scope. The
12
+ # entries below are illustrative defaults the framework ships with; agents
13
+ # override them in their own repo-registry.yaml.
14
+ repos:
15
+ - adapticai/engine
16
+ - adapticai/backend
17
+ - adapticai/frontend
18
+ - adapticai/maestro
19
+ description: >
20
+ Automated PR review pipeline. When a PR is opened or updated, runs structural
21
+ blast radius analysis via code-review-graph, then produces a review brief.
22
+ Engineering agents use this to make informed review decisions.
23
+
24
+ steps:
25
+ # ── Structural blast radius analysis ──
26
+ - id: blast-radius
27
+ skill: code-review-graph
28
+ action: blast-radius-analysis
29
+ description: >
30
+ Analyse the PR diff through the tree-sitter knowledge graph. Map which
31
+ functions, modules, and entry points are affected by the changes.
32
+ Determine risk level based on dependency depth and consumer count.
33
+ timeout: 300
34
+ inputs:
35
+ repo: "{trigger.repo}"
36
+ pr_number: "{trigger.pr_number}"
37
+ base_branch: "{trigger.base_ref}"
38
+ head_branch: "{trigger.head_ref}"
39
+ analysis:
40
+ - changed_functions
41
+ - direct_dependents
42
+ - transitive_impact
43
+ - affected_entry_points
44
+ - untouched_related_functions # functions that probably should have changed
45
+ outputs:
46
+ file: outputs/reviews/{repo}/{pr_number}/blast-radius.md
47
+ summary:
48
+ risk_level: low|medium|high|critical
49
+ direct_dependents: 0
50
+ transitive_impact: 0
51
+ missing_changes: [] # related functions not in the diff
52
+
53
+ # ── Review context enrichment ──
54
+ - id: review-context
55
+ skill: code-review-graph
56
+ action: review-context
57
+ description: >
58
+ Pull structural context for each changed file — what calls them, what
59
+ they call, hot paths, and critical modules. Provides the reviewer with
60
+ the "why this matters" context for every changed file.
61
+ timeout: 180
62
+ parallel_with: blast-radius
63
+ inputs:
64
+ repo: "{trigger.repo}"
65
+ changed_files: "{trigger.changed_files}"
66
+ outputs:
67
+ file: outputs/reviews/{repo}/{pr_number}/review-context.md
68
+
69
+ # ── Produce review brief ──
70
+ - id: review-brief
71
+ agent: engineering-oversight
72
+ action: produce-pr-review-brief
73
+ description: >
74
+ Synthesise blast radius and review context into a concise review brief.
75
+ Highlights risk areas, suggests review focus, and flags missing changes.
76
+ timeout: 180
77
+ depends_on: [blast-radius, review-context]
78
+ inputs:
79
+ blast_radius: outputs/reviews/{repo}/{pr_number}/blast-radius.md
80
+ review_context: outputs/reviews/{repo}/{pr_number}/review-context.md
81
+ pr_metadata:
82
+ repo: "{trigger.repo}"
83
+ pr_number: "{trigger.pr_number}"
84
+ author: "{trigger.author}"
85
+ title: "{trigger.title}"
86
+ outputs:
87
+ file: outputs/reviews/{repo}/{pr_number}/review-brief.md
88
+
89
+ # ── Post review brief as PR comment ──
90
+ - id: post-review
91
+ agent: github-operator
92
+ action: post-pr-comment
93
+ description: Post the review brief as a PR comment for the reviewer
94
+ depends_on: [review-brief]
95
+ inputs:
96
+ repo: "{trigger.repo}"
97
+ pr_number: "{trigger.pr_number}"
98
+ content: outputs/reviews/{repo}/{pr_number}/review-brief.md
99
+ format: markdown
100
+
101
+ on_failure:
102
+ action: log-and-notify
103
+ message: "PR review workflow failed for {trigger.repo}#{trigger.pr_number} at step {failed_step}"
104
+ notify: agent-self # the executing agent (operator)
105
+ severity: low # PR review failure is inconvenient but not critical
106
+
107
+ final_output: outputs/reviews/{repo}/{pr_number}/review-brief.md
@@ -0,0 +1,76 @@
1
+ # Monthly Board Readiness Review
2
+ # Runs first Monday of each month at 09:00 GST
3
+
4
+ name: board-readiness-review
5
+ schedule: "0 9 1-7 * 1" # First Monday of month
6
+ timezone: Asia/Dubai
7
+ description: >
8
+ Monthly assessment of board readiness — what materials exist, what gaps remain,
9
+ what updates are needed for the next board meeting.
10
+
11
+ steps:
12
+ - id: board-materials-audit
13
+ agent: board-prep
14
+ action: materials-inventory
15
+ description: Inventory existing board materials and identify gaps
16
+ timeout: 300
17
+
18
+ - id: financial-summary
19
+ agent: fund-ops
20
+ action: monthly-financial-summary
21
+ description: Monthly financial position and runway summary
22
+ timeout: 300
23
+ parallel_with: board-materials-audit
24
+
25
+ - id: strategic-progress
26
+ agent: strategic-planning
27
+ action: monthly-strategy-progress
28
+ description: Progress against strategic plan milestones
29
+ timeout: 300
30
+ parallel_with: board-materials-audit
31
+
32
+ - id: risk-refresh
33
+ agent: risk-register
34
+ action: monthly-risk-refresh
35
+ description: Updated risk register with new risks and changed scores
36
+ timeout: 300
37
+ parallel_with: board-materials-audit
38
+
39
+ - id: regulatory-status
40
+ agent: regulatory-dfsa
41
+ action: monthly-regulatory-summary
42
+ description: Regulatory application status and compliance posture
43
+ timeout: 180
44
+ parallel_with: board-materials-audit
45
+
46
+ - id: pipeline-summary
47
+ agent: corporate-development
48
+ action: monthly-pipeline-summary
49
+ description: M&A pipeline status for board reporting
50
+ timeout: 180
51
+ parallel_with: board-materials-audit
52
+
53
+ - id: produce-readiness-report
54
+ agent: board-prep
55
+ action: produce-readiness-assessment
56
+ description: Produce the board readiness assessment
57
+ timeout: 300
58
+ depends_on:
59
+ [
60
+ board-materials-audit,
61
+ financial-summary,
62
+ strategic-progress,
63
+ risk-refresh,
64
+ regulatory-status,
65
+ pipeline-summary,
66
+ ]
67
+ outputs:
68
+ file: outputs/board/monthly/{date}/board-readiness-review.md
69
+
70
+ on_failure:
71
+ action: log-and-notify
72
+ message: "Board readiness review failed at step {failed_step}"
73
+ notify: agent-self # the executing agent (operator)
74
+ severity: medium
75
+
76
+ final_output: outputs/board/monthly/{date}/board-readiness-review.md