@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,85 @@
1
+ # Quarterly Strategic Scenario Analysis
2
+ # Runs first week of each quarter
3
+
4
+ name: strategic-scenario-analysis
5
+ schedule: "0 9 1-7 1,4,7,10 1" # First Monday of Jan, Apr, Jul, Oct
6
+ timezone: Asia/Dubai
7
+ description: >
8
+ Comprehensive quarterly scenario analysis covering base case, upside,
9
+ downside, and severe downside scenarios for the company.
10
+
11
+ steps:
12
+ - id: market-environment
13
+ agent: market-research
14
+ action: quarterly-market-assessment
15
+ description: Assess macro environment, market conditions, sector trends
16
+ timeout: 600
17
+
18
+ - id: competitive-landscape
19
+ agent: competitive-intelligence
20
+ action: quarterly-competitive-deep-dive
21
+ description: Deep competitive analysis including new entrants and positioning shifts
22
+ timeout: 600
23
+ parallel_with: market-environment
24
+
25
+ - id: regulatory-landscape
26
+ agent: regulatory-dfsa
27
+ action: quarterly-regulatory-outlook
28
+ description: Regulatory developments and outlook across jurisdictions
29
+ timeout: 300
30
+ parallel_with: market-environment
31
+
32
+ - id: pipeline-assessment
33
+ agent: corporate-development
34
+ action: quarterly-pipeline-assessment
35
+ description: Rollup pipeline health and execution trajectory
36
+ timeout: 300
37
+ parallel_with: market-environment
38
+
39
+ - id: platform-maturity
40
+ agent: product-strategy
41
+ action: quarterly-platform-review
42
+ description: Platform maturity, feature completeness, technical readiness
43
+ timeout: 300
44
+ parallel_with: market-environment
45
+
46
+ - id: scenario-construction
47
+ agent: strategic-planning
48
+ action: construct-scenarios
49
+ description: Build scenarios from all inputs
50
+ timeout: 600
51
+ depends_on:
52
+ [
53
+ market-environment,
54
+ competitive-landscape,
55
+ regulatory-landscape,
56
+ pipeline-assessment,
57
+ platform-maturity,
58
+ ]
59
+ inputs:
60
+ scenarios:
61
+ - name: base_case
62
+ probability: 0.35
63
+ - name: upside
64
+ probability: 0.10
65
+ - name: downside
66
+ probability: 0.35
67
+ - name: severe_downside
68
+ probability: 0.20
69
+
70
+ - id: recommendation-synthesis
71
+ agent: strategic-planning
72
+ action: produce-scenario-analysis
73
+ description: Synthesise into quarterly scenario analysis with recommendations
74
+ timeout: 600
75
+ depends_on: [scenario-construction]
76
+ outputs:
77
+ file: outputs/memos/quarterly/{date}/strategic-scenario-analysis.md
78
+
79
+ on_failure:
80
+ action: log-and-notify
81
+ message: "Quarterly scenario analysis failed at step {failed_step}"
82
+ notify: agent-self # the executing agent (operator)
83
+ severity: medium
84
+
85
+ final_output: outputs/memos/quarterly/{date}/strategic-scenario-analysis.md
@@ -0,0 +1,171 @@
1
+ # Session Protocol
2
+
3
+ The agent's session lifecycle defines what happens at the start, during, and end of every Claude Code session. This protocol ensures the agent never misses a message — even while deep in complex tasks.
4
+
5
+ ## Architecture
6
+
7
+ Two complementary polling layers run simultaneously:
8
+
9
+ | Layer | Mechanism | Interval | Scope |
10
+ | ------------------------ | ------------------------------------------------------- | ---------- | ----------------------------------------------------------------------------------------------------- |
11
+ | **External poller** | `scripts/poller/index.mjs` via macOS launchd | 60 seconds | All Slack channels, Gmail, Calendar — runs continuously whether or not a session is active |
12
+ | **Intra-session poller** | `scripts/poller/intra-session-check.mjs` via CronCreate | 2 minutes | CEO DM channel (<principal-dm-channel-id>), critical channels (#ceo-office, #engineering, #all-adaptic), inbox scan |
13
+
14
+ Combined worst-case latency for detecting a CEO message: ~90 seconds.
15
+
16
+ ## Session Start
17
+
18
+ **Script:** `scripts/session-start.sh`
19
+
20
+ Every new Claude Code session begins with this sequence:
21
+
22
+ ### 1. Emergency stop check
23
+
24
+ - If `.emergency-stop` exists, halt immediately
25
+
26
+ ### 2. Read executive summary dashboard
27
+
28
+ - Load `state/dashboards/executive-summary.yaml`
29
+ - Surface key metrics: open items, critical items, SLA breaches, resolved today
30
+
31
+ ### 3. Check unprocessed inbox
32
+
33
+ - Scan `state/inbox/{slack,gmail,calendar,sms,internal}/` for `.yaml` files
34
+ - Report count of unprocessed items
35
+
36
+ ### 4. Check pending decisions
37
+
38
+ - Read `state/queues/decision-queue.yaml` for items with `status: open`
39
+
40
+ ### 5. Check priority triggers
41
+
42
+ - Scan `state/triggers/priority/` for pending trigger files
43
+ - If triggers exist, process them before any other work
44
+
45
+ ### 6. Set up intra-session polling (CronCreate)
46
+
47
+ - Create a 2-minute recurring job using CronCreate
48
+ - The job runs `scripts/poller/intra-session-check.mjs`
49
+ - This is the critical step that prevents the agent from going dark during long tasks
50
+
51
+ ### 7. Log session start
52
+
53
+ - Write session start event to `logs/sessions/{date}-sessions.jsonl`
54
+
55
+ ## During Session: Intra-Session Polling
56
+
57
+ Every 2 minutes, the CronCreate job runs the intra-session check:
58
+
59
+ ### What it checks
60
+
61
+ 1. **CEO DM channel** (<principal-dm-channel-id>) — last 5 minutes of messages from the principal (CEO)
62
+ 2. **Critical Slack channels** — #ceo-office, #engineering, #all-adaptic — last 3 minutes
63
+ 3. **Inbox directories** — count of unprocessed items across all services
64
+ 4. **Existing triggers** — count of pending priority triggers
65
+
66
+ ### Priority trigger creation
67
+
68
+ A priority trigger file is created at `state/triggers/priority/` when:
69
+
70
+ - A CEO message is found in the DM channel
71
+ - A CEO message is found in a critical channel
72
+ - An urgent-tagged message is found (contains "urgent", "emergency", "asap", "blocker", "critical")
73
+
74
+ ### Trigger file format
75
+
76
+ ```yaml
77
+ type: priority_trigger
78
+ reason: "CEO DM detected during intra-session poll"
79
+ source: "slack:<principal-dm-channel-id>:1775164334.094809"
80
+ sender: "<principal-slug>" # resolved from config/agent.json
81
+ channel: "dm/<principal-slug>" # resolved from config/agent.json
82
+ timestamp: "2026-04-03T09:10:00Z"
83
+ detected_by: intra-session-check
84
+ content: |
85
+ Message content here
86
+ ```
87
+
88
+ ### How priority triggers work
89
+
90
+ 1. Intra-session check detects a CEO message
91
+ 2. Writes a trigger file to `state/triggers/priority/`
92
+ 3. Exits with code 2 (signals priority to the CronCreate handler)
93
+ 4. Claude Code session should **interrupt current work** and process the trigger
94
+ 5. After processing, the trigger file is moved to `state/triggers/processed/` or deleted
95
+
96
+ ### Output format
97
+
98
+ The check logs to stdout for the Claude Code session:
99
+
100
+ ```
101
+ [inbox-poll] CEO DM: 1 new message(s) — PRIORITY TRIGGER CREATED | Channels: #engineering(2) | Inbox: 3 unprocessed
102
+ ```
103
+
104
+ If nothing is found:
105
+
106
+ ```
107
+ [inbox-poll] 09:12:00 — Clear
108
+ ```
109
+
110
+ ## Session End
111
+
112
+ Every Claude Code session ends with this sequence:
113
+
114
+ ### 1. Update modified queues
115
+
116
+ - Write back any queue items that were modified during the session
117
+ - Ensure all status changes are persisted
118
+
119
+ ### 2. Regenerate executive summary dashboard
120
+
121
+ - Update `state/dashboards/executive-summary.yaml` with current queue counts
122
+ - Refresh key metrics (open items, critical items, SLA breaches)
123
+
124
+ ### 3. Self-evolution reflection
125
+
126
+ - Note any automation opportunities discovered during the session
127
+ - Log improvement candidates to `state/queues/improvement-backlog.yaml`
128
+
129
+ ### 4. Commit changes
130
+
131
+ - Stage and commit all modified state files, logs, and outputs
132
+ - Commit message follows the established format
133
+
134
+ ### 5. Log session end
135
+
136
+ - Write session end event to `logs/sessions/{date}-sessions.jsonl`
137
+ - Include session duration, items processed, actions taken
138
+
139
+ ## CronCreate Setup (Copy-Paste)
140
+
141
+ At the start of every session, after running `scripts/session-start.sh`, execute this CronCreate:
142
+
143
+ ```
144
+ CronCreate:
145
+ interval: "2m"
146
+ command: "Run intra-session inbox check"
147
+ instructions: |
148
+ 1. Run: node scripts/poller/intra-session-check.mjs
149
+ 2. Check state/inbox/ for new unprocessed items
150
+ 3. Check state/triggers/priority/ for new trigger files
151
+ 4. If a CEO message (from_ceo: true) is found:
152
+ - Create a priority trigger at state/triggers/priority/
153
+ - Interrupt current work to process the CEO message
154
+ 5. Report: "[inbox-poll] N new items, M priority triggers"
155
+ ```
156
+
157
+ ## File Reference
158
+
159
+ | File | Purpose |
160
+ | ----------------------------------------- | ---------------------------------------------------------------- |
161
+ | `scripts/session-start.sh` | Session start script — run at beginning of every session |
162
+ | `scripts/poller/intra-session-check.mjs` | Intra-session inbox check — called by CronCreate every 2 minutes |
163
+ | `scripts/poller/index.mjs` | External 60s poller — runs via launchd continuously |
164
+ | `scripts/poller/slack-poller.mjs` | Full Slack polling logic (channels + DMs) |
165
+ | `scripts/poller/trigger.mjs` | Priority trigger writer (used by external poller) |
166
+ | `state/triggers/priority/` | Priority trigger files — checked by intra-session poll |
167
+ | `state/inbox/` | Inbox items — written by pollers, consumed by inbox processor |
168
+ | `state/dashboards/executive-summary.yaml` | Primary situational awareness dashboard |
169
+ | `state/queues/decision-queue.yaml` | Pending decisions requiring attention |
170
+ | `logs/sessions/` | Session lifecycle logs |
171
+ | `logs/polling/` | Polling event logs |
@@ -0,0 +1,154 @@
1
+ # Weekly Engineering Health Check
2
+ # Runs every Wednesday at 10:00 GST — before the weekly execution review
3
+ # Uses ccxray and code-review-graph for data-driven engineering insights
4
+
5
+ name: engineering-health
6
+ schedule: "0 10 * * 3" # Wednesday 10:00
7
+ timezone: Asia/Dubai
8
+ description: >
9
+ Weekly engineering health assessment. Audits token spend across agent sessions,
10
+ scans codebase architecture for structural drift, and produces an engineering
11
+ health dashboard update. Feeds into the weekly strategic memo.
12
+
13
+ steps:
14
+ # ── Token budget audit via ccxray ──
15
+ - id: token-budget-audit
16
+ skill: ccxray-diagnostics
17
+ action: weekly-token-audit
18
+ description: >
19
+ Analyse the past week's Claude API token consumption across all agent
20
+ sessions. Identify expensive sessions, cost trends, and optimisation
21
+ opportunities. Uses ccxray historical logs.
22
+ timeout: 300
23
+ inputs:
24
+ time_range: 7d
25
+ log_dir: ~/.ccxray/logs/
26
+ breakdown_by: [agent, workflow, day]
27
+ compare_to: previous_week
28
+ outputs:
29
+ file: outputs/engineering/weekly/{date}/token-audit.md
30
+ summary:
31
+ total_tokens: 0
32
+ total_cost: 0
33
+ most_expensive_agent: ""
34
+ week_over_week_delta: ""
35
+ optimisation_recommendations: []
36
+
37
+ # ── Codebase architecture scan via code-review-graph ──
38
+ - id: architecture-scan
39
+ skill: code-review-graph
40
+ action: architecture-overview
41
+ description: >
42
+ Run tree-sitter structural analysis across key repositories. Detect
43
+ circular dependencies, orphaned exports, and architectural drift from
44
+ the intended design. Compares against previous week's baseline.
45
+ timeout: 600
46
+ parallel_with: token-budget-audit
47
+ inputs:
48
+ repos:
49
+ - path: ~/adapticai/engine
50
+ name: adaptic-engine
51
+ - path: ~/adapticai/backend
52
+ name: adaptic-backend
53
+ - path: ~/maestro
54
+ name: maestro
55
+ checks:
56
+ - circular_dependencies
57
+ - orphaned_exports
58
+ - module_coupling_score
59
+ - public_api_surface_changes
60
+ baseline: outputs/engineering/weekly/latest/architecture-baseline.json
61
+ outputs:
62
+ file: outputs/engineering/weekly/{date}/architecture-scan.md
63
+ baseline_update: outputs/engineering/weekly/{date}/architecture-baseline.json
64
+ summary:
65
+ repos_scanned: 0
66
+ circular_deps_found: 0
67
+ orphaned_exports: 0
68
+ api_surface_changes: []
69
+
70
+ # ── Agent performance profile via agents-observe ──
71
+ - id: agent-performance-review
72
+ skill: agents-observe
73
+ action: weekly-performance-profile
74
+ description: >
75
+ Review agent execution patterns from the past week. Identify slowest
76
+ agents, most-used tools, failure patterns, and efficiency trends.
77
+ Uses agents-observe SQLite historical data.
78
+ timeout: 300
79
+ parallel_with: token-budget-audit
80
+ inputs:
81
+ time_range: 7d
82
+ metrics:
83
+ - agent_duration_distribution
84
+ - tool_call_frequency
85
+ - failure_rate_by_agent
86
+ - bottleneck_tools
87
+ compare_to: previous_week
88
+ outputs:
89
+ file: outputs/engineering/weekly/{date}/agent-performance.md
90
+ summary:
91
+ total_sessions: 0
92
+ avg_session_duration: ""
93
+ failure_rate: ""
94
+ slowest_agent: ""
95
+ most_used_tool: ""
96
+
97
+ # ── Quota trend analysis via claude-pace ──
98
+ - id: quota-trend
99
+ skill: claude-pace
100
+ action: weekly-quota-trend
101
+ description: >
102
+ Analyse quota utilisation patterns over the past week. Identify peak
103
+ usage periods, quota constraint frequency, and capacity planning
104
+ recommendations.
105
+ timeout: 120
106
+ parallel_with: token-budget-audit
107
+ inputs:
108
+ source: logs/workflows/ # Extract quota data from backlog executor logs
109
+ time_range: 7d
110
+ metrics:
111
+ - daily_peak_usage
112
+ - red_zone_incidents
113
+ - deferred_items_count
114
+ outputs:
115
+ file: outputs/engineering/weekly/{date}/quota-trend.md
116
+
117
+ # ── Synthesise engineering health report ──
118
+ - id: synthesise-health-report
119
+ agent: engineering-oversight
120
+ action: produce-engineering-health-report
121
+ description: >
122
+ Synthesise token audit, architecture scan, agent performance, and quota
123
+ trends into a unified engineering health dashboard update and narrative.
124
+ timeout: 300
125
+ depends_on:
126
+ [token-budget-audit, architecture-scan, agent-performance-review, quota-trend]
127
+ inputs:
128
+ components:
129
+ - outputs/engineering/weekly/{date}/token-audit.md
130
+ - outputs/engineering/weekly/{date}/architecture-scan.md
131
+ - outputs/engineering/weekly/{date}/agent-performance.md
132
+ - outputs/engineering/weekly/{date}/quota-trend.md
133
+ dashboard: state/dashboards/engineering-health.yaml
134
+ outputs:
135
+ file: outputs/engineering/weekly/{date}/engineering-health-report.md
136
+ dashboard_update: state/dashboards/engineering-health.yaml
137
+
138
+ # ── Notify ──
139
+ - id: notify-ready
140
+ action: notify
141
+ description: Signal engineering health report is ready for the execution review
142
+ depends_on: [synthesise-health-report]
143
+ inputs:
144
+ channel: slack
145
+ target: "#engineering"
146
+ message: "Weekly engineering health report ready — feeding into execution review."
147
+
148
+ on_failure:
149
+ action: log-and-notify
150
+ message: "Engineering health check failed at step {failed_step}"
151
+ notify: agent-self # the executing agent (operator)
152
+ severity: medium
153
+
154
+ final_output: outputs/engineering/weekly/{date}/engineering-health-report.md
@@ -0,0 +1,169 @@
1
+ # Weekly Hiring Review
2
+ # Runs every Monday at 11:00 GST (UTC+4)
3
+ # Covers all 94 roles across 13 locations
4
+
5
+ name: hiring-review
6
+ schedule: "0 11 * * 1" # Monday 11:00
7
+ timezone: Asia/Dubai
8
+ description: >
9
+ Weekly review of the full hiring pipeline across 94 open roles and 13 locations.
10
+ Scans applicant pipeline, reviews new applications, AI screens candidates,
11
+ drafts responses, and produces a consolidated hiring status report.
12
+
13
+ steps:
14
+ - id: pipeline-snapshot
15
+ agent: hiring-org-design
16
+ action: pipeline-status-scan
17
+ description: Scan the full hiring pipeline across all 94 roles and 13 locations
18
+ timeout: 600
19
+ inputs:
20
+ source: ~/hr-system
21
+ config: config/hiring.yaml
22
+ scope: all_roles
23
+ outputs:
24
+ file: outputs/briefs/weekly/{date}/hiring-pipeline-snapshot.md
25
+
26
+ - id: new-applications-review
27
+ agent: hiring-org-design
28
+ action: review-weekly-applications
29
+ description: Review all new applications received in the past week
30
+ timeout: 600
31
+ parallel_with: pipeline-snapshot
32
+ inputs:
33
+ sources:
34
+ - channel: linkedin
35
+ path: ~/hr-system/applications/linkedin/
36
+ - channel: website
37
+ path: ~/hr-system/applications/website/
38
+ - channel: email
39
+ path: ~/hr-system/applications/email/
40
+ period: last_7_days
41
+ outputs:
42
+ file: outputs/briefs/weekly/{date}/weekly-applications-review.md
43
+
44
+ - id: ai-screening
45
+ agent: hiring-org-design
46
+ action: ai-screen-candidates
47
+ description: Run AI screening on all unscreened candidates from the past week
48
+ timeout: 900
49
+ depends_on: [new-applications-review]
50
+ inputs:
51
+ candidates: outputs/briefs/weekly/{date}/weekly-applications-review.md
52
+ screening_config:
53
+ advance_threshold: 75
54
+ reject_threshold: 40
55
+ outputs:
56
+ file: outputs/briefs/weekly/{date}/screening-results.md
57
+
58
+ - id: draft-advance-responses
59
+ agent: hiring-org-design
60
+ action: draft-suitable-candidate-responses
61
+ description: Draft warm, personalised responses for candidates scoring >= 75
62
+ timeout: 600
63
+ depends_on: [ai-screening]
64
+ inputs:
65
+ screening_results: outputs/briefs/weekly/{date}/screening-results.md
66
+ category: advance
67
+ tone: warm_professional
68
+ voice: agent
69
+ outputs:
70
+ file: outputs/comms/hiring/{date}/advance-drafts.md
71
+
72
+ - id: draft-rejection-responses
73
+ agent: hiring-org-design
74
+ action: draft-rejection-responses
75
+ description: Draft gentle, encouraging rejection messages for candidates scoring < 40
76
+ timeout: 600
77
+ parallel_with: draft-advance-responses
78
+ depends_on: [ai-screening]
79
+ inputs:
80
+ screening_results: outputs/briefs/weekly/{date}/screening-results.md
81
+ category: reject
82
+ tone: kind_encouraging
83
+ voice: agent
84
+ outputs:
85
+ file: outputs/comms/hiring/{date}/rejection-drafts.md
86
+
87
+ - id: draft-hold-responses
88
+ agent: hiring-org-design
89
+ action: draft-hold-responses
90
+ description: Draft hold-for-review messages for candidates scoring 40-74
91
+ timeout: 300
92
+ parallel_with: draft-advance-responses
93
+ depends_on: [ai-screening]
94
+ inputs:
95
+ screening_results: outputs/briefs/weekly/{date}/screening-results.md
96
+ category: hold
97
+ tone: professional
98
+ voice: agent
99
+ outputs:
100
+ file: outputs/comms/hiring/{date}/hold-drafts.md
101
+
102
+ - id: location-breakdown
103
+ agent: hiring-org-design
104
+ action: location-hiring-status
105
+ description: Produce hiring status breakdown by location
106
+ timeout: 300
107
+ depends_on: [pipeline-snapshot]
108
+ inputs:
109
+ locations:
110
+ - Dubai
111
+ - San Francisco
112
+ - London
113
+ - New York City
114
+ - Singapore
115
+ - Cayman Islands
116
+ - Luxembourg
117
+ - Sydney
118
+ - Zurich
119
+ - Toronto
120
+ - Tel Aviv
121
+ - Hong Kong
122
+ - Washington DC
123
+ outputs:
124
+ file: outputs/briefs/weekly/{date}/hiring-by-location.md
125
+
126
+ - id: synthesise-hiring-report
127
+ agent: hiring-org-design
128
+ action: produce-weekly-hiring-report
129
+ description: Synthesise all inputs into the weekly hiring status report
130
+ timeout: 600
131
+ depends_on:
132
+ [
133
+ pipeline-snapshot,
134
+ ai-screening,
135
+ draft-advance-responses,
136
+ draft-rejection-responses,
137
+ draft-hold-responses,
138
+ location-breakdown,
139
+ ]
140
+ inputs:
141
+ components:
142
+ - outputs/briefs/weekly/{date}/hiring-pipeline-snapshot.md
143
+ - outputs/briefs/weekly/{date}/weekly-applications-review.md
144
+ - outputs/briefs/weekly/{date}/screening-results.md
145
+ - outputs/comms/hiring/{date}/advance-drafts.md
146
+ - outputs/comms/hiring/{date}/rejection-drafts.md
147
+ - outputs/comms/hiring/{date}/hold-drafts.md
148
+ - outputs/briefs/weekly/{date}/hiring-by-location.md
149
+ config: config/hiring.yaml
150
+ outputs:
151
+ file: outputs/briefs/weekly/{date}/hiring-status.md
152
+
153
+ - id: notify-ready
154
+ action: notify
155
+ description: Signal that the weekly hiring report and correspondence drafts are ready
156
+ depends_on: [synthesise-hiring-report]
157
+ inputs:
158
+ channel: slack
159
+ target: "#ceo-office"
160
+ message: "Weekly Hiring Review ready: outputs/briefs/weekly/{date}/hiring-status.md — candidate correspondence drafts queued for approval."
161
+ approval_required: false
162
+
163
+ on_failure:
164
+ action: log-and-notify
165
+ message: "Weekly hiring review failed at step {failed_step}"
166
+ notify: agent-self # the executing agent (operator)
167
+ severity: high
168
+
169
+ final_output: outputs/briefs/weekly/{date}/hiring-status.md
@@ -0,0 +1,76 @@
1
+ # Weekly Rollup Pipeline Review
2
+ # Runs every Wednesday at 10:00 GST
3
+
4
+ name: rollup-pipeline-review
5
+ schedule: "0 10 * * 3" # Wednesday 10:00
6
+ timezone: Asia/Dubai
7
+ description: >
8
+ Reviews the status of all rollup acquisition targets in the pipeline,
9
+ tracks movement between stages, and identifies next actions.
10
+
11
+ steps:
12
+ - id: pipeline-status
13
+ agent: rollup-target-sourcing
14
+ action: pipeline-snapshot
15
+ description: Current state of all targets across pipeline stages
16
+ timeout: 300
17
+ inputs:
18
+ source: knowledge/entities/entity-map.yaml
19
+ pipeline: knowledge/memory/executive-memory.yaml
20
+ outputs:
21
+ file: outputs/briefs/weekly/{date}/pipeline-snapshot.md
22
+
23
+ - id: dd-progress
24
+ agent: corporate-development
25
+ action: dd-progress-report
26
+ description: Progress on active due diligence processes
27
+ timeout: 300
28
+ parallel_with: pipeline-status
29
+ outputs:
30
+ file: outputs/briefs/weekly/{date}/dd-progress.md
31
+
32
+ - id: market-scan-targets
33
+ agent: rollup-target-sourcing
34
+ action: new-target-scan
35
+ description: Scan for new potential acquisition targets
36
+ timeout: 300
37
+ parallel_with: pipeline-status
38
+ inputs:
39
+ criteria:
40
+ aum_range: [500000000, 10000000000]
41
+ strategies: [equity-ls, global-macro, quant, multi-strat]
42
+ trigger_events: [succession, aum-decline, margin-compression]
43
+ outputs:
44
+ file: outputs/briefs/weekly/{date}/new-targets.md
45
+
46
+ - id: regulatory-filing-status
47
+ agent: legal-structuring
48
+ action: filing-timeline-check
49
+ description: Status of regulatory filings related to active deals
50
+ timeout: 180
51
+ parallel_with: pipeline-status
52
+ outputs:
53
+ file: outputs/briefs/weekly/{date}/filing-status.md
54
+
55
+ - id: synthesise-review
56
+ agent: corporate-development
57
+ action: produce-pipeline-review
58
+ description: Produce the weekly pipeline review document
59
+ timeout: 300
60
+ depends_on:
61
+ [
62
+ pipeline-status,
63
+ dd-progress,
64
+ market-scan-targets,
65
+ regulatory-filing-status,
66
+ ]
67
+ outputs:
68
+ file: outputs/briefs/weekly/{date}/rollup-pipeline-review.md
69
+
70
+ on_failure:
71
+ action: log-and-notify
72
+ message: "Rollup pipeline review failed at step {failed_step}"
73
+ notify: agent-self # the executing agent (operator)
74
+ severity: medium
75
+
76
+ final_output: outputs/briefs/weekly/{date}/rollup-pipeline-review.md