@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
package/mcp/README.md ADDED
@@ -0,0 +1,80 @@
1
+ # MCP Server Configuration
2
+
3
+ This directory contains Model Context Protocol (MCP) server configurations for the Maestro agent system. MCP servers provide structured tool access for agents.
4
+
5
+ ## Cohort org server (`cohort-mcp`)
6
+
7
+ The SDK ships its own MCP server: the **curated Cohort org tool surface** (directory, messaging, board/tasks, decisions, approvals, knowledge, artifacts, email once the workspace-email family is live, and the agent desks — the mail app / files drive / calendar / crm / books plus `meetings_recap_file` — once their families are vendored; the `org_rpc` / `org_read` escape hatches cover the long tail). It is a hand-rolled stdio JSON-RPC server (`lib/mcp/server.mjs`, bin `bin/cohort-mcp.mjs`) — no MCP SDK dependency, stdout carries protocol frames only.
8
+
9
+ **Add to Claude Code:**
10
+
11
+ ```bash
12
+ claude mcp add cohort -- cohort-mcp
13
+ ```
14
+
15
+ or drop into `.mcp.json` (freshly `create`d agent repos ship this via `scaffold/.mcp.json`):
16
+
17
+ ```json
18
+ { "mcpServers": { "cohort": { "command": "cohort-mcp" } } }
19
+ ```
20
+
21
+ **Auth (env-first, config-fallback):**
22
+
23
+ | Var | Meaning |
24
+ | --- | --- |
25
+ | `COHORT_API_TOKEN` | the org API key (aliases: `COHORT_TOKEN`, `COHORT_API_KEY`) |
26
+ | `COHORT_ORG_ID` | org slug (sent as the `x-org-id` pin) |
27
+ | `COHORT_BASE` | server origin (alias: `COHORT_API_URL`; default `https://os.cohortapp.com`) |
28
+ | `COHORT_AGENT_ID` / `COHORT_AGENT_EMAIL` | optional member-identity hints for `org_whoami` |
29
+
30
+ When env is absent the server falls back to `config/org.yaml` (`org.cohort.{base,orgId,token}`) under `COHORT_AGENT_ROOT`/`AGENT_ROOT`/cwd — an enrolled agent repo needs zero extra configuration. A missing token does not kill the server: `org_describe` works offline and every network tool returns a clear `UNAUTHORIZED` frame.
31
+
32
+ **Governance:** `messaging_send` / `email_send` / `email_draft_send` (and `org_rpc` invocations of `messaging.send`/`email.send`/`email.draftSend`) run the shared outbound send-gate before dispatch, and every `tools/call` writes an audit row to `logs/audit/<date>-actions.jsonl` (`session_id: "mcp:<pid>"`). Desk verbs that trigger server-TEMPLATED sends (`books_invoice_send`, statement runs, calendar invite emails) are not outbound-flagged — their params carry no free text; hq's server-side governance (holds, guardian approvals, chase ladders) owns those sends and a tripped hold comes back as the `{status:"held", …}` / approval-required frame, never a silent send. In agent repos the `.claude/settings.json` PreToolUse matchers (`mcp__cohort__messaging_send`, `mcp__cohort__email_send`, `mcp__cohort__email_draft_send`, `mcp__cohort__org_rpc` → `scripts/hooks/block-mcp-cohort-send.sh`) block session-initiated outbound writes outright — sends go through the sanctioned CLI lane (`scripts/slack-send.sh`, `scripts/org/send-orgmail.mjs`), which carries the full dedup/reply-storm perimeter. **If you hand-add `.mcp.json` to a pre-2.0 repo, add those four matchers too** — `cohort upgrade` does not rewrite `.claude/settings.json` or `.mcp.json`.
33
+
34
+ ## Active MCP Servers
35
+
36
+ ### Filesystem Access
37
+
38
+ - **Purpose**: Read/write access to the agent repo and source repositories
39
+ - **Scope**: ~/agent-ai and your organisation's source repositories
40
+
41
+ ### Web Fetch
42
+
43
+ - **Purpose**: HTTP requests for market data, news, API access
44
+ - **Scope**: Approved domains only
45
+
46
+ ### GitHub
47
+
48
+ - **Purpose**: Repository management, PR monitoring, issue tracking
49
+ - **Scope**: Your organisation's repositories
50
+
51
+ ### Sequential Thinking
52
+
53
+ - **Purpose**: Extended reasoning for complex strategic analysis
54
+ - **Scope**: Available to strategic-planning and corporate-development agents
55
+
56
+ ### Memory
57
+
58
+ - **Purpose**: Persistent memory across sessions
59
+ - **Scope**: CEO Brain knowledge base
60
+
61
+ ## Planned MCP Servers
62
+
63
+ ### Google Calendar (via API)
64
+
65
+ - **Purpose**: Calendar read/write for scheduling workflows
66
+ - **Status**: Planned — requires OAuth setup
67
+
68
+ ### Slack API (supplementary)
69
+
70
+ - **Purpose**: Programmatic Slack access in addition to desktop control
71
+ - **Status**: Planned — requires workspace app installation
72
+
73
+ ### Linear / Project Management
74
+
75
+ - **Purpose**: Task and project tracking integration
76
+ - **Status**: Planned
77
+
78
+ ## Configuration
79
+
80
+ MCP server configurations are defined in the Claude Code settings and `.mcp.json` files. See `config/mcp-servers.json` for the active configuration.
package/package.json ADDED
@@ -0,0 +1,151 @@
1
+ {
2
+ "name": "@cohortapp/agent-sdk",
3
+ "version": "2.3.0",
4
+ "description": "Cohort Agent SDK — autonomous AI colleague runtime. Deploy senior AI colleagues on dedicated Mac minis, wired to the Cohort operating surface.",
5
+ "type": "module",
6
+ "bin": {
7
+ "maestro": "./bin/maestro.mjs",
8
+ "cohort": "./bin/maestro.mjs",
9
+ "cohort-mcp": "./bin/cohort-mcp.mjs",
10
+ "neolith": "./bin/maestro.mjs",
11
+ "neolith-mcp": "./bin/cohort-mcp.mjs"
12
+ },
13
+ "exports": {
14
+ ".": "./lib/index.js",
15
+ "./tools": "./lib/tool-definitions.js",
16
+ "./executor": "./lib/action-executor.js",
17
+ "./singleton": "./lib/singleton.js",
18
+ "./cadence-bus": "./lib/cadence-bus.mjs",
19
+ "./fs-atomic": "./lib/fs-atomic.mjs",
20
+ "./org/protocol": "./lib/org/protocol.mjs",
21
+ "./org/client": "./lib/org/client.mjs",
22
+ "./org/ui-parity": "./lib/org/ui-parity.mjs",
23
+ "./org/tool-surface": "./lib/org/tool-surface.mjs",
24
+ "./org/doctor": "./lib/org/doctor.mjs",
25
+ "./mcp/server": "./lib/mcp/server.mjs",
26
+ "./org/registry": "./lib/org/registry.mjs",
27
+ "./org/board": "./lib/org/board.mjs",
28
+ "./org/leases": "./lib/org/leases.mjs",
29
+ "./org/handoff": "./lib/org/handoff.mjs",
30
+ "./org/knowledge": "./lib/org/knowledge.mjs",
31
+ "./org/keys": "./lib/org/keys.mjs",
32
+ "./org/verify": "./lib/org/verify.mjs",
33
+ "./org/policy": "./lib/org/policy.mjs",
34
+ "./org/cost-sync": "./lib/org/cost-sync.mjs",
35
+ "./org/approvals": "./lib/org/approvals.mjs",
36
+ "./org/mesh": "./lib/org/mesh.mjs",
37
+ "./org/cohort-client": "./lib/org/cohort-client.mjs",
38
+ "./secrets/broker": "./lib/secrets/broker.mjs",
39
+ "./secrets/providers": "./lib/secrets/providers.mjs",
40
+ "./diagnostics/trace": "./lib/diagnostics/trace.mjs",
41
+ "./diagnostics/events": "./lib/diagnostics/events.mjs",
42
+ "./diagnostics/counters": "./lib/diagnostics/counters.mjs",
43
+ "./diagnostics/alerts": "./lib/diagnostics/alerts.mjs",
44
+ "./diagnostics/backup-freshness": "./lib/diagnostics/backup-freshness.mjs",
45
+ "./diagnostics/otel": "./lib/diagnostics/otel.mjs",
46
+ "./hooks/bus": "./lib/hooks/bus.mjs",
47
+ "./scheduling/dynamic-jobs": "./lib/scheduling/dynamic-jobs.mjs",
48
+ "./scheduling/jitter": "./lib/scheduling/jitter.mjs",
49
+ "./comms/send-gate": "./lib/comms/send-gate.mjs",
50
+ "./util/fetch-timeout": "./lib/util/fetch-timeout.mjs",
51
+ "./util/reconnect": "./lib/util/reconnect.mjs",
52
+ "./util/unhandled": "./lib/util/unhandled.mjs",
53
+ "./model-router/spawn": "./lib/model-router/spawn.mjs",
54
+ "./model-router/llm-task": "./lib/model-router/llm-task.mjs",
55
+ "./model-router/repair": "./lib/model-router/repair.mjs",
56
+ "./model-router/health": "./lib/model-router/health.mjs",
57
+ "./model-router/taxonomy": "./lib/model-router/taxonomy.mjs",
58
+ "./model-router/failover": "./lib/model-router/failover.mjs",
59
+ "./model-router/resolve": "./lib/model-router/resolve.mjs",
60
+ "./feature-init": "./lib/feature-init.mjs",
61
+ "./tts": "./lib/voice/tts.mjs",
62
+ "./model-router": "./lib/model-router.mjs",
63
+ "./model-router/catalog": "./lib/model-router/catalog.mjs",
64
+ "./model-router/ledger": "./lib/model-router/ledger.mjs",
65
+ "./model-router/economics": "./lib/model-router/economics.mjs",
66
+ "./model-router/reconcile": "./lib/model-router/reconcile.mjs",
67
+ "./model-router/org-credentials": "./lib/model-router/org-credentials.mjs",
68
+ "./voice": "./lib/voice/index.mjs",
69
+ "./voice/outbound": "./lib/voice/outbound.mjs",
70
+ "./voice/tts": "./lib/voice/tts.mjs",
71
+ "./rag": "./lib/rag/search.mjs",
72
+ "./rag/indexer": "./lib/rag/indexer.mjs",
73
+ "./rag/embed": "./lib/rag/embed.mjs",
74
+ "./channels": "./lib/channels/index.mjs",
75
+ "./voice/stt": "./lib/voice/stt.mjs",
76
+ "./security/external-content": "./lib/security/external-content.mjs",
77
+ "./security/redact": "./lib/security/redact.mjs",
78
+ "./security/secret-equal": "./lib/security/secret-equal.mjs",
79
+ "./security/dangerous-tools": "./lib/security/dangerous-tools.mjs",
80
+ "./security/coerce-args": "./lib/security/coerce-args.mjs",
81
+ "./archetype": "./lib/archetype.mjs",
82
+ "./framework-features.json": "./framework-features.json",
83
+ "./package.json": "./package.json"
84
+ },
85
+ "files": [
86
+ "bin/",
87
+ "lib/",
88
+ "archetypes/",
89
+ "scaffold/",
90
+ "scripts/",
91
+ "agents/",
92
+ "workflows/",
93
+ "policies/",
94
+ "teams/",
95
+ "docs/architecture/",
96
+ "docs/guides/",
97
+ "docs/prompts/",
98
+ "docs/research/",
99
+ "docs/runbooks/",
100
+ "docs/company-context/",
101
+ "public/assets/",
102
+ "plugins/maestro-skills/",
103
+ "schedules/",
104
+ "desktop-control/",
105
+ "ingest/",
106
+ "mcp/",
107
+ ".claude/commands/",
108
+ ".claude/settings.json",
109
+ ".env.example",
110
+ "README.md",
111
+ "framework-features.json"
112
+ ],
113
+ "publishConfig": {
114
+ "access": "public",
115
+ "registry": "https://registry.npmjs.org/"
116
+ },
117
+ "scripts": {
118
+ "test": "node scripts/ci/run-tests.mjs",
119
+ "test:coverage": "node scripts/ci/run-coverage.mjs",
120
+ "test:list": "node --test bin/maestro.test.mjs lib/action-executor.test.mjs lib/archetype.test.mjs lib/autonomy.test.mjs lib/backlog.test.mjs lib/budget-guard.test.mjs lib/cadence-bus-schedule.test.mjs lib/cadence-bus.test.mjs lib/cadences.test.mjs lib/capability.test.mjs lib/channels/base-adapter.test.mjs lib/channels/channels.test.mjs lib/channels/contract.test.mjs lib/channels/inbox-item.test.mjs lib/channels/pairing.test.mjs lib/channels/slack-adapter.test.mjs lib/channels/telegram-adapter.test.mjs lib/channels/whatsapp/baileys-typing.test.mjs lib/charter.test.mjs lib/claude-bin.test.mjs lib/collective/capture.test.mjs lib/collective/cards.test.mjs lib/collective/config.test.mjs lib/collective/global-config.test.mjs lib/collective/presence.test.mjs lib/collective/recall.test.mjs lib/comms.test.mjs lib/fs-atomic.test.mjs lib/fs-ownership.test.mjs lib/learning/config.test.mjs lib/learning/counters.test.mjs lib/learning/curator-consolidate.test.mjs lib/learning/curator.test.mjs lib/learning/reflect.test.mjs lib/learning/session-index.test.mjs lib/learning/skill-writer.test.mjs lib/model-router.test.mjs lib/model-router/catalog.test.mjs lib/model-router/economics.test.mjs lib/model-router/failover.test.mjs lib/model-router/health.test.mjs lib/model-router/integration.test.mjs lib/model-router/integration-coverage.test.mjs lib/model-router/ledger.test.mjs lib/model-router/llm-task.test.mjs lib/model-router/org-credentials.test.mjs lib/model-router/reconcile.test.mjs lib/model-router/repair.test.mjs lib/model-router/spawn.test.mjs lib/model-router/taxonomy.test.mjs lib/org/approvals.test.mjs lib/org/board.test.mjs lib/org/client.test.mjs lib/org/cost-sync.test.mjs lib/org/handoff.test.mjs lib/org/keys.test.mjs lib/org/knowledge.test.mjs lib/org/activity.test.mjs lib/org/leases.test.mjs lib/org/mesh.test.mjs lib/org/messaging.test.mjs lib/org/cohort-client.test.mjs lib/org/policy.test.mjs lib/org/registry.test.mjs lib/org/tool-surface.test.mjs lib/org/ui-parity.test.mjs lib/org/doctor.test.mjs lib/org/verify.test.mjs lib/mcp/server.test.mjs lib/channels/orgmail/adapter.test.mjs lib/rag/rag.test.mjs lib/rate-guard.test.mjs lib/render.test.mjs lib/resource-governor.test.mjs lib/security/coerce-args.test.mjs lib/security/dangerous-tools.test.mjs lib/security/external-content.test.mjs lib/security/redact.test.mjs lib/security/secret-equal.test.mjs lib/session-permissions.test.mjs lib/setup/completeness.test.mjs lib/setup/context-pack.test.mjs lib/setup/enrich.test.mjs lib/setup/enroll-from-cohort.test.mjs lib/setup/integration.test.mjs lib/setup/io.test.mjs lib/setup/runner.test.mjs lib/setup/sections/identity.test.mjs lib/setup/sections/learning.test.mjs lib/setup/sections/messaging.test.mjs lib/setup/sections/org.test.mjs lib/setup/sections/orgmail.test.mjs lib/setup/sections/recovery.test.mjs lib/setup/sot.test.mjs lib/setup/state.test.mjs lib/singleton.test.mjs lib/telemetry/alerts.test.mjs lib/telemetry/collect.test.mjs lib/tool-definitions.test.mjs lib/voice/outbound.test.mjs lib/voice/stt.test.mjs lib/voice/voice.test.mjs scripts/cadence/enqueue-cadence-tick.test.mjs scripts/ci/check-no-build-artifacts.test.mjs scripts/ci/check-no-residual-identity.test.mjs scripts/ci/check.test.mjs scripts/collective/hook-runner.test.mjs scripts/cost/fleet-digest.test.mjs scripts/daemon/cadence-consumer-governance.test.mjs scripts/daemon/cadence-consumer.test.mjs scripts/daemon/cadence-handlers.test.mjs scripts/daemon/classify-kind.test.mjs scripts/daemon/dispatcher-cooldown.test.mjs scripts/daemon/dispatcher-governance.test.mjs scripts/daemon/inbox-deferral.test.mjs scripts/daemon/lib/session-router.test.mjs scripts/daemon/prompt-builder.test.mjs scripts/daemon/typing-registry.test.mjs scripts/hooks/pre-send-audit.test.mjs scripts/local-triggers/generate-plists.test.mjs scripts/poller/inbox-scan-poller.test.mjs scripts/poller/lib/cloud-relay-dedup.test.mjs scripts/poller/slack-socket-mode.test.mjs scripts/setup/init-agent.test.mjs services/webhook-relay/server.test.mjs",
121
+ "test:setup": "node --test lib/setup/io.test.mjs lib/setup/state.test.mjs lib/setup/sot.test.mjs lib/setup/completeness.test.mjs lib/setup/context-pack.test.mjs lib/setup/enrich.test.mjs lib/setup/runner.test.mjs lib/setup/integration.test.mjs",
122
+ "check": "node scripts/ci/check.mjs",
123
+ "test:router": "node --test lib/model-router.test.mjs lib/model-router/catalog.test.mjs lib/model-router/economics.test.mjs lib/model-router/failover.test.mjs lib/model-router/health.test.mjs lib/model-router/integration.test.mjs lib/model-router/integration-coverage.test.mjs lib/model-router/ledger.test.mjs lib/model-router/llm-task.test.mjs lib/model-router/org-credentials.test.mjs lib/model-router/reconcile.test.mjs lib/model-router/repair.test.mjs lib/model-router/spawn.test.mjs lib/model-router/taxonomy.test.mjs scripts/cost/fleet-digest.test.mjs",
124
+ "test:voice": "node --test lib/voice/voice.test.mjs lib/voice/outbound.test.mjs",
125
+ "test:channels": "node --test lib/channels/channels.test.mjs",
126
+ "test:cadence": "node --test lib/cadence-bus.test.mjs scripts/cadence/enqueue-cadence-tick.test.mjs scripts/daemon/cadence-consumer.test.mjs",
127
+ "test:cli": "node --test bin/maestro.test.mjs",
128
+ "test:relay": "node --test services/webhook-relay/server.test.mjs",
129
+ "test:cohort": "node --test $(find services/cohort -name '*.test.mjs' -not -path '*/node_modules/*')",
130
+ "test:org": "node --test $(find lib/org -name '*.test.mjs')",
131
+ "test:pack": "node scripts/ci/check-tarball-fidelity.mjs",
132
+ "test:plists": "node --test scripts/local-triggers/generate-plists.test.mjs",
133
+ "prepublishOnly": "echo 'Publishing @cohortapp/agent-sdk...'"
134
+ },
135
+ "engines": {
136
+ "node": ">=20.0.0"
137
+ },
138
+ "os": [
139
+ "darwin"
140
+ ],
141
+ "repository": {
142
+ "type": "git",
143
+ "url": "git+https://github.com/adapticai/maestro.git"
144
+ },
145
+ "author": "Adaptic.ai <dev@adaptic.ai>",
146
+ "license": "UNLICENSED",
147
+ "dependencies": {
148
+ "better-sqlite3": "^12.10.0",
149
+ "js-yaml": "^4.1.1"
150
+ }
151
+ }
@@ -0,0 +1,139 @@
1
+ {
2
+ "name": "maestro-skills",
3
+ "version": "1.3.0",
4
+ "description": "Maestro operational skills — executive briefings, communications, hiring, strategy, and domain-specific workflows for autonomous AI agents",
5
+ "skills": [
6
+ {
7
+ "name": "morning-brief",
8
+ "description": "Produce the Morning Brief — priorities, overnight developments, open loops, workstream pulse. Universal across all agent archetypes."
9
+ },
10
+ {
11
+ "name": "evening-wrap",
12
+ "description": "Produce the Evening Wrap — what closed today, what didn't, tomorrow's priorities. Universal across all agent archetypes."
13
+ },
14
+ {
15
+ "name": "inbox-triage",
16
+ "description": "Triage all inbound communications across Slack, Gmail, and WhatsApp. Classify by urgency, draft responses, flag items for principal attention."
17
+ },
18
+ {
19
+ "name": "hiring-triage",
20
+ "description": "Review new job applications, AI screen candidates, draft advancement/rejection messages, produce hiring pipeline status."
21
+ },
22
+ {
23
+ "name": "slack-followup",
24
+ "description": "Check all pending Slack follow-ups — messages awaiting reply, commitments overdue, threads needing continuation."
25
+ },
26
+ {
27
+ "name": "weekly-memo",
28
+ "description": "Produce the Weekly Strategic Memo — synthesis of the week, workstream status, strategic implications, recommendations."
29
+ },
30
+ {
31
+ "name": "draft-comms",
32
+ "description": "Draft a communication in the appropriate voice (agent, principal draft, institutional). Applies communication governance rules."
33
+ },
34
+ {
35
+ "name": "decision-brief",
36
+ "description": "Present a decision to the principal with options, pros/cons, and a recommendation using structured decision framework."
37
+ },
38
+ {
39
+ "name": "pipeline-review",
40
+ "description": "Review the active pipeline — target status, progress, new items, regulatory/filing status."
41
+ },
42
+ {
43
+ "name": "board-deck",
44
+ "description": "Prepare board deck materials using Gamma for presentations and Mermaid for diagrams. Assembles content from all domain agents."
45
+ },
46
+ {
47
+ "name": "regulatory-status",
48
+ "description": "Check regulatory status across all relevant jurisdictions — gap progress, incorporation status, licensing timelines."
49
+ },
50
+ {
51
+ "name": "schedule-meeting",
52
+ "description": "Schedule a meeting using Google Calendar MCP or Calendly. Handle timezone conversion, find availability, send invites."
53
+ },
54
+ {
55
+ "name": "claude-pace",
56
+ "description": "Check Claude API rate limit quota — 5-hour/7-day usage, reset countdowns, pace delta. Use before heavy backlog cycles or when quota warnings appear."
57
+ },
58
+ {
59
+ "name": "ccxray-diagnostics",
60
+ "description": "Run token/cost X-ray diagnostics on Claude API sessions — per-turn breakdown, context window heatmaps, system prompt diffs. Use for debugging expensive sessions."
61
+ },
62
+ {
63
+ "name": "code-review-graph",
64
+ "description": "Structural code analysis via tree-sitter knowledge graph — blast radius, review context, architecture overview, semantic search. Use for PR reviews and refactoring."
65
+ },
66
+ {
67
+ "name": "agents-observe",
68
+ "description": "Multi-agent observability dashboard — monitor parallel agent teams, tool calls, session state, and performance in real time. Use when debugging agent failures."
69
+ },
70
+ {
71
+ "name": "session-search",
72
+ "description": "Recall your own past Claude Code sessions verbatim — full-text search across every prior session transcript (discovery / scroll / read / browse). Use when you need the exact wording or full context of something you did before."
73
+ },
74
+ {
75
+ "name": "org-board",
76
+ "description": "Claim, complete, and hand off work on the shared org board — the cross-agent backlog the whole fleet pulls from. Use to take org-prioritised work, close a claimed item, or hand a task to another agent."
77
+ },
78
+ {
79
+ "name": "org-credential",
80
+ "description": "Understand how you get third-party provider keys from the org — leased automatically at spawn, never stored on your machine. Use when a provider key looks missing or a model fails with a credential error."
81
+ },
82
+ {
83
+ "name": "set-reminder",
84
+ "description": "Create a dynamic scheduled job in natural language — 'remind me Friday 9am', 'every weekday 8am summarize the channel'. Use to set a one-off reminder or recurring task, list scheduled jobs, or cancel one."
85
+ },
86
+ {
87
+ "name": "router-why",
88
+ "description": "Explain a model-routing decision — which model on which harness the router would pick for a task, and why. Use when a spawn used an unexpected model or to validate a routing-config change."
89
+ },
90
+ {
91
+ "name": "org-recall",
92
+ "description": "Consult the shared org knowledge plane — facts, contacts, and meetings other agents recorded, ACL-scoped to what you may see. Use to pull org-wide context before answering, or to record a fact for the fleet."
93
+ },
94
+ {
95
+ "name": "team-activity",
96
+ "description": "See what the team is doing right now — every peer agent's live state, current activity, machine health, and alerts from the org directory. Use to answer 'what is the team doing now' or 'what is <person> doing', find a free agent, or spot a peer that is down or needs re-login."
97
+ },
98
+ {
99
+ "name": "generative-ui",
100
+ "description": "Return interactive artifact cards in org conversations instead of plain text — catalog discovery, composing genui/v2 envelopes from the block vocabulary, streaming hydration, and acting on cards. Use when a reply benefits from structured, actionable UI (approvals, review grids, comparisons, forms), or to invoke an action on a posted card."
101
+ },
102
+ {
103
+ "name": "native-artifacts",
104
+ "description": "The org's native artifact classes — mail draft review, governance approvals and decisions, books (bills, payment runs, pay runs, invoices, bank matching), file access lists, CRM held terms, board task grids, calendar RSVPs. Use to surface one of these domain cards in conversation, or to read/act on one programmatically."
105
+ },
106
+ {
107
+ "name": "mail-triage",
108
+ "description": "Work an org mailbox like the human Inbox app — entitled mailboxes, thread triage (priority/category/assignment/read), filing and moves, drafts, and the governed send path where holds land in a guardian's approvals queue. Use to clear an inbox, chase a thread, or reply from a workspace mailbox."
109
+ },
110
+ {
111
+ "name": "files-find",
112
+ "description": "Find, read, and write documents in the org's workspace drive — Docs, Sheets, Decks, folders, uploads — under the same VIEW/COMMENT/EDIT shares that govern humans. Use to locate a file, pull a doc into context, draft or revise a workspace document, or share one."
113
+ },
114
+ {
115
+ "name": "calendar-plan",
116
+ "description": "Plan workspace calendar events — deterministic free-slot scans across attendees, typed events with real invites, RSVP commitments, reschedules with everyone notified, and meeting recap filing. Use to find a time, set up or move a meeting, or answer an invite."
117
+ },
118
+ {
119
+ "name": "crm-pipeline",
120
+ "description": "Work the CRM desk — pipeline reads, stage moves, attributed interaction logging, next-best-action inside playbook lines, and the escalation lane where humans sign held work. Use for pipeline questions, progressing or handing over a deal, or running a deal's next step."
121
+ },
122
+ {
123
+ "name": "books-close",
124
+ "description": "Run the Books desk — ledger-grounded reports, AR/AP work, bank matching, payroll and tax preparation — under the signature law: money movement and lodgement never happen without a human signature. Use for finance questions, invoice/bill work, or preparing a period close."
125
+ },
126
+ {
127
+ "name": "directory-hygiene",
128
+ "description": "Work the org Directory — search external people and organisations, read a record with its provenance, enrich channels from real traffic, and propose captures and duplicate merges into the human review queue. Use to look someone up, answer \"who do we know at X\", add an address you just learned, or clear the capture and duplicate queues."
129
+ },
130
+ {
131
+ "name": "brand-steward",
132
+ "description": "Work the org's Design section — read the brand foundation and voice, rewrite copy in that voice, render and export templates and the brand kit, regenerate stale imagery within a budget, and propose reviewable foundation changes. Use before writing anything the workspace publishes, to produce a branded asset, or when imagery/templates have gone stale."
133
+ },
134
+ {
135
+ "name": "call-working-sessions",
136
+ "description": "Turn a Cohort call into a working session — present a doc/sheet/channel/board/charter on the call stage, step through it (scroll/highlight/type), live-edit docs while talking, read what participants see on screen, and watch reactions and raised hands. Use when you are a participant in a live Cohort call and want to show rather than tell, walk people through a document, or ground \"this chart / that number\" talk in what is actually on screen."
137
+ }
138
+ ]
139
+ }
@@ -0,0 +1,110 @@
1
+ ---
2
+ name: agents-observe
3
+ description: Multi-agent observability dashboard — monitor parallel agent teams, tool calls, session state, and performance in real time. Use when debugging agent failures or profiling backlog execution.
4
+ ---
5
+
6
+ # Multi-Agent Observability (agents-observe)
7
+
8
+ You are a Maestro agent. Use agents-observe to monitor, debug, and profile Claude Code agent teams in real time.
9
+
10
+ ## When to Invoke
11
+
12
+ - **Monitoring parallel execution** — watching multiple backlog executor agents running simultaneously
13
+ - **Debugging agent failures** — an agent crashed, hung, or produced unexpected results
14
+ - **Performance profiling** — identifying which agents or tool calls are slow
15
+ - **Post-mortem analysis** — reviewing what happened in a completed session
16
+ - **Orchestrator oversight** — the orchestrator agent needs visibility into sub-agent activity
17
+
18
+ ## Background
19
+
20
+ agents-observe captures tool calls, agent hierarchy, and session state via background hooks. Data is stored in SQLite and streamed to a WebSocket-powered dashboard with 3-5ms latency. It is NOT always-on due to SQLite write overhead — enable on demand for specific debugging sessions.
21
+
22
+ ## Steps
23
+
24
+ ### Starting Observation
25
+
26
+ 1. **Launch the dashboard**:
27
+ ```bash
28
+ agents-observe serve
29
+ ```
30
+ Opens the dashboard at `http://localhost:3847`. Active Claude Code sessions appear automatically.
31
+
32
+ 2. **Monitor live sessions** — the dashboard shows:
33
+ - Agent hierarchy (parent orchestrator and child sub-agents)
34
+ - Real-time tool call stream with timing
35
+ - Session state (active, idle, completed, errored)
36
+ - Per-agent resource usage
37
+
38
+ ### Querying Historical Data
39
+
40
+ 3. **Query by session** — inspect a specific session's full history:
41
+ ```bash
42
+ agents-observe query --session <session-id>
43
+ ```
44
+
45
+ 4. **Query by tool** — find all uses of a specific tool in a time window:
46
+ ```bash
47
+ agents-observe query --tool Write --last 1h
48
+ ```
49
+
50
+ 5. **Query by agent** — filter to a specific agent's activity:
51
+ ```bash
52
+ agents-observe query --agent backlog-executor --last 2h
53
+ ```
54
+
55
+ ### Analysis Workflows
56
+
57
+ 6. **Debugging a failed agent**:
58
+ - Find the session ID from workflow logs or the dashboard
59
+ - Query the session to see the full tool call sequence
60
+ - Identify the last successful tool call before failure
61
+ - Check for error patterns: timeout, rate limit, permission denied, context overflow
62
+
63
+ 7. **Performance profiling**:
64
+ - Compare tool call durations across agents
65
+ - Identify bottleneck tools (slow reads, large writes)
66
+ - Check for redundant tool calls (same file read multiple times)
67
+ - Measure time-to-first-action for each sub-agent
68
+
69
+ 8. **Parallel execution monitoring**:
70
+ - Verify all expected sub-agents launched successfully
71
+ - Watch for agents blocking on shared resources (file locks, API limits)
72
+ - Detect agents that completed quickly vs those that are stuck
73
+ - Identify ordering issues in agent dependencies
74
+
75
+ ## Output
76
+
77
+ Report findings appropriate to the workflow:
78
+
79
+ **For debugging:**
80
+ ```
81
+ ## Agent Failure Analysis: [session-id]
82
+ - Agent: [name]
83
+ - Failed at: [timestamp]
84
+ - Last successful tool: [tool name] at [timestamp]
85
+ - Error: [error message or pattern]
86
+ - Root cause: [analysis]
87
+ - Recommendation: [fix]
88
+ ```
89
+
90
+ **For performance profiling:**
91
+ ```
92
+ ## Agent Performance Profile
93
+ | Agent | Duration | Tool Calls | Slowest Tool | Outcome |
94
+ |---|---|---|---|---|
95
+ | [name] | [Xs] | [N] | [tool, Xms] | [success/fail] |
96
+
97
+ ### Bottlenecks
98
+ - [Specific finding, e.g., "Agent X read config.yaml 7 times — cache recommended"]
99
+
100
+ ### Recommendations
101
+ - [Actionable optimization]
102
+ ```
103
+
104
+ ## Integration Notes
105
+
106
+ - Do NOT leave agents-observe running permanently — SQLite writes add overhead to every tool call
107
+ - Enable for specific debugging sessions, then shut down
108
+ - Dashboard port is 3847 — ensure no conflicts with other local services
109
+ - Pairs well with ccxray for combined tool-call and token-level analysis
110
+ - Session data persists in SQLite after the dashboard is closed — queryable later
@@ -0,0 +1,68 @@
1
+ ---
2
+ name: board-deck
3
+ description: Prepare board deck materials using Gamma for presentations and Mermaid for diagrams. Assembles content from all domain agents for board meetings.
4
+ ---
5
+
6
+ # Board Deck Preparation
7
+
8
+ You are {{agent.fullName}}, {{agent.title}}. Assemble and prepare board deck materials.
9
+
10
+ ## Data Sources
11
+
12
+ 1. **Financial data** — Read `memory/workstreams/finance.md` and `inputs/finance/` for latest financial metrics, P&L, cash position.
13
+ 2. **Acquisition pipeline** — Read `memory/workstreams/acquisitions.md` for deal pipeline status and completed transactions.
14
+ 3. **Regulatory progress** — Read `memory/workstreams/regulatory.md` for licensing status across all jurisdictions.
15
+ 4. **Hiring/team** — Read `memory/workstreams/hiring.md` for headcount, open roles, recent hires.
16
+ 5. **Product/tech** — Read `memory/workstreams/product.md` for platform development, integration milestones.
17
+ 6. **Strategic priorities** — Read `memory/executive/priorities.md` and `config/strategy.md` for the strategic narrative.
18
+ 7. **Weekly memos** — Read recent files from `outputs/briefs/weekly/` for trend data and synthesis.
19
+ 8. **Prior board deck** — Check `outputs/board/` for the last deck to maintain continuity.
20
+
21
+ ## Deck Structure
22
+
23
+ Prepare content for the following slides (standard board deck order):
24
+
25
+ ```
26
+ 1. TITLE & AGENDA
27
+ 2. EXECUTIVE SUMMARY — 3-5 bullets, quarter highlights, key ask (if any)
28
+ 3. FINANCIAL OVERVIEW — Revenue, burn, runway, key metrics vs plan
29
+ 4. ACQUISITION PIPELINE — Funnel visual, active targets, closed deals
30
+ 5. REGULATORY STATUS — Jurisdiction matrix, timeline to licensing
31
+ 6. TEAM & HIRING — Org chart changes, key hires, open roles
32
+ 7. PRODUCT & TECHNOLOGY — Platform milestones, integration status
33
+ 8. STRATEGIC OUTLOOK — Market positioning, next quarter priorities
34
+ 9. RISKS & MITIGATIONS — Top 3 risks with mitigation plans
35
+ 10. ASK / DISCUSSION ITEMS — Decisions needed from the board
36
+ ```
37
+
38
+ ## Diagram Generation
39
+
40
+ Use Mermaid syntax for the following standard diagrams:
41
+
42
+ - **Acquisition funnel** — Stages with target counts
43
+ - **Regulatory timeline** — Gantt chart across jurisdictions
44
+ - **Org chart** — Current team structure
45
+ - **Financial trend** — Key metric trajectories
46
+
47
+ Save Mermaid diagrams to `outputs/board/diagrams/`.
48
+
49
+ ## Presentation Assembly
50
+
51
+ 1. Write each slide's content as a structured markdown section in `outputs/board/board-deck-YYYY-MM-DD.md`.
52
+ 2. Include speaker notes for {{agent.principal.firstName}} under each slide.
53
+ 3. If Gamma MCP or API is available, generate the presentation directly. Otherwise, prepare content ready for manual Gamma import.
54
+ 4. Flag any data gaps — sections where the data is stale or missing.
55
+
56
+ ## Output
57
+
58
+ 1. Full deck content to `outputs/board/board-deck-YYYY-MM-DD.md`.
59
+ 2. Mermaid diagrams to `outputs/board/diagrams/`.
60
+ 3. Speaker notes included inline.
61
+ 4. Present a summary of the deck with any data gaps or decisions needed before the board meeting.
62
+
63
+ ## Quality Checks
64
+
65
+ - Every metric must have a source reference and a date stamp.
66
+ - Compare current period to prior period and plan/budget.
67
+ - No surprises — anything in the deck should have been in a weekly memo already.
68
+ - Board tone: confident but transparent. Acknowledge challenges directly.
@@ -0,0 +1,77 @@
1
+ ---
2
+ name: books-close
3
+ description: Run the org's Books desk — ledger-grounded reports, AR/AP work (draft, send, chase, capture, approve), bank-feed matching, payroll and tax preparation — under the signature law: money movement and lodgement NEVER happen without a verified human signature. Use for finance questions, invoice/bill work, close-the-period tasks, or preparing obligations for a human to sign.
4
+ ---
5
+
6
+ # Books — the Finance Desk
7
+
8
+ Books is double-entry and ledger-current: every report figure carries its
9
+ `journalLineIds`, journals are append-only, and the SIGNATURE LAW is enforced in
10
+ the domain layer — `books.write` scope alone cannot move money. The money verbs
11
+ (`payrollSign`, `billScheduleRun`, `taxSignLodge`, floor/new-payee bill releases)
12
+ require a verified HUMAN signature token; an agent call without one returns
13
+ `SIGNATURE_REQUIRED` or an approval-required frame. That is the product working,
14
+ not an obstacle: PREPARE everything, then put it in front of the human. External
15
+ rails (bank feeds, SBR/ELSTER lodgement, STP) run SANDBOX providers, honestly
16
+ labelled — never claim a real filing happened.
17
+
18
+ All of it is `executeOrgTool` over the books-desk tools; fail-open frames; money
19
+ is integer cents.
20
+
21
+ ## Grounded reads
22
+
23
+ ```bash
24
+ node --input-type=module -e '
25
+ import { executeOrgTool } from "./lib/org/tool-surface.mjs";
26
+ console.log(JSON.stringify(await executeOrgTool("books_reports", { report: "pl" }), null, 2));
27
+ '
28
+ ```
29
+
30
+ - `books_reports` — ledger-current reporting; every figure carries journalLineIds.
31
+ - `books_invoices` — AR with chase state; `books_bills` — AP with hold reasons +
32
+ run linkage; `books_tax_obligations` — the lodgement calendar.
33
+ - `books_ask` — grounded ask-the-books via the shared AI gateway (the gateway
34
+ self-audits its model call; the answer carries grounding + cost).
35
+ - Long-tail reads via `org_rpc`: `books.accounts`, `books.journals`,
36
+ `books.feedLines` (bank lines + match state), `books.assets`.
37
+
38
+ ## AR — invoice to cash
39
+
40
+ `books_invoice_draft` → `books_invoice_send` → payments via `org_rpc`
41
+ `books.invoiceRecordPayment`. The chase ladder holds steps for release
42
+ (`books.invoiceChaseStep`); `books.invoicePromise` records a promise-to-pay and
43
+ pauses the ladder; `books.invoiceCreditNote`, `books.invoiceVoid` (reversing
44
+ journal; undo reinstates), `books.statementRun` (honest skip when no open items).
45
+
46
+ ## AP — capture to run
47
+
48
+ Capture with `org_rpc` `books.billCapture`; release holds with
49
+ `books_bill_approve` (floor/new-payee releases still need the human signature);
50
+ `books.billHold` / `books.billReturn` manage the run;
51
+ **`books.billScheduleRun` = sign & execute — human signature required.**
52
+
53
+ ## Bank, payroll, tax, assets (escape hatch)
54
+
55
+ - Bank: `books.matchAccept` (already-matched CONFLICTs — that is the idempotency
56
+ working), `books.matchHoldResolve`, `books.lineRecode`, `books.receiptsRegister`.
57
+ - Payroll: `books.payrollDraft` (idempotent per period) → **`books.payrollSign`
58
+ (human signature)** → `books.payrollRecall` before cutoff; `books.stpResubmit`
59
+ only on errored runs.
60
+ - Tax: `books.taxPrepare` assembles workings from the ledger and HOLDS for
61
+ signature; `books.taxHold` queues; `books.taxReturn` sends held work back for
62
+ re-work; **`books.taxSignLodge` lodges — never without a human signature
63
+ (SANDBOX_SBR/ELSTER rails, labelled as such).**
64
+ - Assets: `books.assetDepreciationRun` (idempotent per period),
65
+ `books.assetDispose`.
66
+ - People: `books.expenseClaim` / `books.expenseApprove`, `books.leaveRequest` /
67
+ `books.leaveApprove`; onboarding `books.onboardingStart` / `books.onboardingAdvance`.
68
+ - `books.journalPost` — manual journals, append-only.
69
+
70
+ ## Rules of the desk
71
+
72
+ - Never report a lodgement, payment run, or pay run as done unless the result
73
+ says a HUMAN signed it. `SIGNATURE_REQUIRED` / approval-required frames are the
74
+ law working — surface them and hand the human the exact item to sign.
75
+ - Quote figures with their grounding (report + journalLineIds), amounts in cents.
76
+ - Prefer the idempotent verbs' replay behaviour over re-checking state yourself;
77
+ a CONFLICT on `matchAccept` means someone already matched the line.