@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,88 @@
1
+ ![the company icon](public/assets/icon-dark.svg)
2
+
3
+ # Decision Required: {title}
4
+
5
+ **Priority**: {P1-P5 alignment or standalone}
6
+ **Requested by**: {requestor}
7
+ **Decision owner**: {{agent.principal.fullName}}, {{agent.principal.title}}
8
+ **Prepared by**: {{agent.fullName}}, {{agent.title}}
9
+ **Date prepared**: {date}
10
+
11
+ ## Context
12
+
13
+ {what_prompted_this_decision}
14
+
15
+ > 2-4 sentences maximum. State the triggering event, why it matters now, and what happens if no decision is made.
16
+
17
+ ## Options
18
+
19
+ ### Option A: {option_a_name}
20
+
21
+ **Description**: {option_a_description}
22
+
23
+ | Dimension | Assessment |
24
+ | ----------------- | --------------------------------------------------------- |
25
+ | **Pros** | {pro_1}; {pro_2}; {pro_3} |
26
+ | **Cons** | {con_1}; {con_2} |
27
+ | **Risk** | {risk_description} (Likelihood: {H/M/L}, Impact: {H/M/L}) |
28
+ | **Cost** | {financial_and_opportunity_cost} |
29
+ | **Timeline** | {implementation_timeline} |
30
+ | **Reversibility** | {easy/moderate/difficult/irreversible} |
31
+
32
+ ### Option B: {option_b_name}
33
+
34
+ **Description**: {option_b_description}
35
+
36
+ | Dimension | Assessment |
37
+ | ----------------- | --------------------------------------------------------- |
38
+ | **Pros** | {pro_1}; {pro_2}; {pro_3} |
39
+ | **Cons** | {con_1}; {con_2} |
40
+ | **Risk** | {risk_description} (Likelihood: {H/M/L}, Impact: {H/M/L}) |
41
+ | **Cost** | {financial_and_opportunity_cost} |
42
+ | **Timeline** | {implementation_timeline} |
43
+ | **Reversibility** | {easy/moderate/difficult/irreversible} |
44
+
45
+ ### Option C: {option_c_name} (if applicable)
46
+
47
+ > Include a third option only when materially distinct from A and B. Do not fabricate a middle option for appearance.
48
+
49
+ ## Comparison Matrix
50
+
51
+ | Criterion | Weight | Option A | Option B |
52
+ | -------------------- | -------- | ----------- | ----------- |
53
+ | Strategic alignment | {weight} | {score}/5 | {score}/5 |
54
+ | Speed to execute | {weight} | {score}/5 | {score}/5 |
55
+ | Downside risk | {weight} | {score}/5 | {score}/5 |
56
+ | Resource requirement | {weight} | {score}/5 | {score}/5 |
57
+ | **Weighted total** | | **{total}** | **{total}** |
58
+
59
+ ## {{agent.firstName}}'s Recommendation
60
+
61
+ **Recommended option**: {Option A or B}
62
+
63
+ {2-3 sentence rationale explaining why this option best serves the {{agent.principal.title}}'s stated priorities and risk posture. Reference specific strategic priorities (P1-P5) where applicable.}
64
+
65
+ **Confidence level**: {High / Medium / Low}
66
+ **Key assumption**: {the_most_important_assumption_underlying_this_recommendation}
67
+
68
+ ## Decision Deadline
69
+
70
+ **Decide by**: {date_and_time}
71
+ **Reason for deadline**: {why_this_date}
72
+
73
+ ## Impact if Delayed
74
+
75
+ {what_happens_if_no_decision_by_deadline}
76
+
77
+ > Be specific: quantify costs, name missed windows, identify cascading effects on other workstreams.
78
+
79
+ ## Next Steps (upon decision)
80
+
81
+ - [ ] {action_1} -- Owner: {owner}, Due: {date}
82
+ - [ ] {action_2} -- Owner: {owner}, Due: {date}
83
+ - [ ] {action_3} -- Owner: {owner}, Due: {date}
84
+
85
+ ---
86
+
87
+ Prepared by {{agent.fullName}}, {{agent.title}} | {timestamp}
88
+ Brand assets: config/brand-assets.yaml
@@ -0,0 +1,141 @@
1
+ # Follow-Up Message Templates
2
+
3
+ Voice: {{agent.fullName}}, {{agent.title}}
4
+ Tone: Professional, warm, efficient. Never passive-aggressive. Always assumes good faith.
5
+ Brand: Use the company icon in email signatures per `config/brand-assets.yaml`
6
+
7
+ ---
8
+
9
+ ## Gentle Reminder (3 days since request)
10
+
11
+ **Use when**: An action item or reply has been pending for approximately 3 business days with no response.
12
+
13
+ **Slack template**:
14
+
15
+ ```
16
+ Hi {name} -- just circling back on {topic/request}. I know things get busy, but wanted to keep this on your radar. {{agent.principal.firstName}} is tracking this for {context/workstream}, and it would be great to have an update by {suggested_date}.
17
+
18
+ Happy to hop on a quick call if that's easier. Let me know!
19
+ ```
20
+
21
+ **Email template**:
22
+
23
+ ```
24
+ Subject: Quick follow-up: {topic}
25
+
26
+ Hi {name},
27
+
28
+ Hope you're well. I wanted to follow up on {specific_request_or_action_item} from {original_date_or_conversation}.
29
+
30
+ We're tracking this as part of {workstream/priority}, and having your input would help us keep things moving. Could you share an update by {suggested_date}?
31
+
32
+ If there are any blockers on your end, I'm happy to help clear them.
33
+
34
+ Thanks,
35
+ {{agent.firstName}}
36
+ ```
37
+
38
+ **WhatsApp template**:
39
+
40
+ ```
41
+ Hi {name}, quick follow-up on {topic} from {day}. Any update? Happy to chat if easier. Thanks!
42
+ ```
43
+
44
+ ---
45
+
46
+ ## Firm Follow-Up (1 week since request)
47
+
48
+ **Use when**: 7 days have passed. The item is overdue and affecting other workstreams.
49
+
50
+ **Slack template**:
51
+
52
+ ```
53
+ Hi {name} -- following up again on {topic/request} (originally raised on {original_date}). This is now a week overdue and is starting to affect {downstream_impact}.
54
+
55
+ Could you provide a status update today? If there's a blocker, let me know and I'll see what we can do to unblock it.
56
+
57
+ {{agent.principal.firstName}} will be reviewing open items in {next_review_context}, so I want to make sure we have the latest.
58
+ ```
59
+
60
+ **Email template**:
61
+
62
+ ```
63
+ Subject: Follow-up needed: {topic} (1 week overdue)
64
+
65
+ Hi {name},
66
+
67
+ I'm following up on {specific_request_or_action_item}, originally requested on {original_date}. We haven't received an update yet and this is now a week past the expected timeline.
68
+
69
+ This is connected to {workstream/priority} and the delay is beginning to affect {specific_downstream_impact}.
70
+
71
+ Could you please provide a status update by end of day today? Specifically:
72
+ - Current status of {the_deliverable}
73
+ - Any blockers preventing completion
74
+ - Revised timeline if the original date is no longer feasible
75
+
76
+ I want to help get this resolved -- let me know what you need.
77
+
78
+ Thanks,
79
+ {{agent.firstName}}
80
+ ```
81
+
82
+ **WhatsApp template**:
83
+
84
+ ```
85
+ Hi {name}, this is the second follow-up on {topic} from {original_date} -- it's now a week overdue and impacting {downstream}. Can you send a status update today? If you're blocked I can help. Thanks.
86
+ ```
87
+
88
+ ---
89
+
90
+ ## Escalation Notice (2 weeks since request)
91
+
92
+ **Use when**: 14+ days have passed. The item will be escalated to {{agent.principal.firstName}}'s direct attention.
93
+
94
+ **Slack template**:
95
+
96
+ ```
97
+ Hi {name} -- I've followed up on {topic/request} twice now (on {first_followup_date} and {second_followup_date}) without a response. This has been open since {original_date}.
98
+
99
+ I need to flag this for {{agent.principal.firstName}}'s direct review as part of the weekly open items sweep. Before I do, I wanted to give you a final opportunity to provide an update or let me know if there's something preventing progress.
100
+
101
+ Please respond by end of day {date}. If I don't hear back, I'll include this in the escalation summary for {{agent.principal.firstName}}'s review on {next_review_date}.
102
+ ```
103
+
104
+ **Email template**:
105
+
106
+ ```
107
+ Subject: Escalation pending: {topic} (2+ weeks overdue)
108
+
109
+ Hi {name},
110
+
111
+ This is a final follow-up regarding {specific_request_or_action_item}, originally requested on {original_date}. I've followed up previously on {first_followup_date} and {second_followup_date} without receiving a response.
112
+
113
+ This item is part of {workstream/priority} and the extended delay has the following impact:
114
+ - {impact_1}
115
+ - {impact_2}
116
+
117
+ Per our escalation process, items unresolved after two weeks are raised to {{agent.principal.firstName}}'s direct attention. I will be including this in the review on {escalation_date} unless we receive an update beforehand.
118
+
119
+ Please respond by {deadline} with either:
120
+ 1. A status update and revised completion date
121
+ 2. An explanation of blockers so we can help resolve them
122
+ 3. A request to reassign the item
123
+
124
+ Thanks,
125
+ {{agent.fullName}}
126
+ {{agent.title}}
127
+ ```
128
+
129
+ ---
130
+
131
+ ## Usage Guidelines
132
+
133
+ - **Channel selection**: Use the same channel as the original request. If the original was email, follow up via email.
134
+ - **Tone escalation**: Each stage is slightly firmer but never threatening. {{agent.firstName}} is firm, not hostile.
135
+ - **Approval requirements**: Gentle reminders (3-day) may be sent without CEO approval. Firm follow-ups (1-week) may be sent without approval. Escalation notices (2-week) require CEO awareness before sending -- log in the daily brief.
136
+ - **Logging**: Every follow-up sent must be logged in `knowledge/memory/executive-memory.yaml` under `open_loops` with the follow-up date and stage.
137
+ - **Do not send** if the person has already provided a partial response or acknowledged the item -- adjust the template to reference their partial response instead.
138
+
139
+ ---
140
+
141
+ Source workflow: workflows/daily/slack-followup-sweep.yaml
@@ -0,0 +1,52 @@
1
+ ![{{agent.company}}](public/assets/logo-dark.svg)
2
+
3
+ ---
4
+
5
+ # Investor Update — {period}
6
+
7
+ **DRAFT — REQUIRES CEO APPROVAL**
8
+
9
+ ---
10
+
11
+ Dear Partners,
12
+
13
+ {opening_paragraph — state of affairs, macro context, portfolio positioning}
14
+
15
+ ## Performance Summary
16
+
17
+ | Metric | Current Period | Prior Period | Change |
18
+ | ------------- | -------------- | ------------ | ------ |
19
+ | {metric_name} | {value} | {value} | {pct} |
20
+
21
+ ## Strategic Highlights
22
+
23
+ 1. **{highlight_1_title}**: {description}
24
+ 2. **{highlight_2_title}**: {description}
25
+ 3. **{highlight_3_title}**: {description}
26
+
27
+ ## Operational Progress
28
+
29
+ {narrative — what was accomplished, key milestones reached, team developments}
30
+
31
+ ## Outlook
32
+
33
+ {forward_looking — priorities for next period, expected milestones, risk factors to monitor}
34
+
35
+ > Constraint: Forward-looking statements must include appropriate disclaimers. No return projections.
36
+
37
+ ---
38
+
39
+ With appreciation,
40
+
41
+ **{{agent.principal.fullName}}**
42
+ {{agent.principal.title}}
43
+ {{agent.company}}
44
+
45
+ ![{{agent.company}}](public/assets/icon-dark.svg)
46
+
47
+ ---
48
+
49
+ **Classification**: LP Confidential — Not for redistribution
50
+ **Prepared by**: {{agent.fullName}}, {{agent.title}} (via `founder-voice` agent)
51
+ **Date**: {date}
52
+ Brand assets: config/brand-assets.yaml
@@ -0,0 +1,82 @@
1
+ ![{{agent.company}}](public/assets/icon-dark.svg)
2
+
3
+ # CEO Morning Brief -- {date}
4
+
5
+ ## Priority Decisions (max 3)
6
+
7
+ 1. **{decision_1_title}**
8
+ - Context: {decision_1_context}
9
+ - Deadline: {decision_1_deadline}
10
+ - Recommendation: {decision_1_recommendation}
11
+
12
+ 2. **{decision_2_title}**
13
+ - Context: {decision_2_context}
14
+ - Deadline: {decision_2_deadline}
15
+ - Recommendation: {decision_2_recommendation}
16
+
17
+ 3. **{decision_3_title}**
18
+ - Context: {decision_3_context}
19
+ - Deadline: {decision_3_deadline}
20
+ - Recommendation: {decision_3_recommendation}
21
+
22
+ > If fewer than 3 decisions are pending, omit the unused slots. Never pad.
23
+
24
+ ## Overnight Developments
25
+
26
+ ### Markets
27
+
28
+ | Asset Class | Move | Signal |
29
+ | ------------- | ---------- | ----------------------- |
30
+ | {asset_class} | {move_pct} | {signal_interpretation} |
31
+
32
+ Key takeaway: {market_summary_one_liner}
33
+
34
+ ### News
35
+
36
+ - **{headline_1}** -- {relevance_to_company}
37
+ - **{headline_2}** -- {relevance_to_company}
38
+ - **{headline_3}** -- {relevance_to_company}
39
+
40
+ ### Competitor Signals
41
+
42
+ - **{competitor_name}**: {signal_description}
43
+
44
+ > Include only signals with direct strategic relevance. Omit noise.
45
+
46
+ ## Today's Calendar
47
+
48
+ | Time (GST) | Event | Prep Needed | Notes |
49
+ | ---------- | ------------- | ------------- | ------- |
50
+ | {time} | {event_title} | {prep_status} | {notes} |
51
+
52
+ Blocks of unscheduled time: {free_blocks}
53
+
54
+ ## Open Loops (Top 5)
55
+
56
+ | # | Item | Owner | Age | Status | Next Action |
57
+ | --- | ------ | ------- | ----------- | -------- | ------------- |
58
+ | 1 | {item} | {owner} | {days} days | {status} | {next_action} |
59
+ | 2 | {item} | {owner} | {days} days | {status} | {next_action} |
60
+ | 3 | {item} | {owner} | {days} days | {status} | {next_action} |
61
+ | 4 | {item} | {owner} | {days} days | {status} | {next_action} |
62
+ | 5 | {item} | {owner} | {days} days | {status} | {next_action} |
63
+
64
+ > Sorted by urgency and age. Items awaiting reply > 5 days are flagged for escalation.
65
+
66
+ ## Workstream Pulse
67
+
68
+ | Workstream | Status | One-Line Update |
69
+ | ------------------------------ | -------------- | --------------- |
70
+ | {workstream_1_name} | {status_emoji} | {one_liner} |
71
+ | {workstream_2_name} | {status_emoji} | {one_liner} |
72
+ | {workstream_3_name} | {status_emoji} | {one_liner} |
73
+ | {workstream_4_name} | {status_emoji} | {one_liner} |
74
+ | {workstream_5_name} | {status_emoji} | {one_liner} |
75
+
76
+ Status key: ON_TRACK / AT_RISK / BLOCKED / PAUSED
77
+
78
+ ---
79
+
80
+ Prepared by {{agent.fullName}}, {{agent.title}} | {timestamp}
81
+ Source workflow: workflows/daily/morning-brief.yaml
82
+ Brand assets: config/brand-assets.yaml
@@ -0,0 +1,58 @@
1
+ # Presentation Template — Brand Asset Placement Guide
2
+
3
+ Reference: `config/brand-assets.yaml`
4
+
5
+ ---
6
+
7
+ ## Title Slide
8
+
9
+ ![the company logo](public/assets/logo-dark.svg)
10
+
11
+ **{presentation_title}**
12
+
13
+ {subtitle_or_context}
14
+
15
+ {presenter_name} | {date}
16
+
17
+ > Full logo centred or top-left. Use dark variant on light backgrounds, light variant on dark backgrounds.
18
+
19
+ ---
20
+
21
+ ## Section Slides
22
+
23
+ ![the company icon](public/assets/icon-dark.svg) **{section_title}**
24
+
25
+ {content}
26
+
27
+ > Icon in top-left corner alongside section title. Compact placement.
28
+
29
+ ---
30
+
31
+ ## Content Slides
32
+
33
+ {slide_content}
34
+
35
+ > No logo on content-heavy slides — keep clean. Icon permitted in footer if brand reinforcement needed.
36
+
37
+ ---
38
+
39
+ ## Closing Slide
40
+
41
+ ![the company logo](public/assets/logo-dark.svg)
42
+
43
+ **Thank you**
44
+
45
+ {contact_information}
46
+
47
+ > Full logo centred. Match the title slide branding.
48
+
49
+ ---
50
+
51
+ ## Variant Selection Guide
52
+
53
+ | Slide Background | Logo Variant | Icon Variant |
54
+ | ---------------- | ---------------------- | ---------------------- |
55
+ | White / Light | logo-dark.svg | icon-dark.svg |
56
+ | Dark / Navy | logo-light.svg | icon-light.svg |
57
+
58
+ Brand assets: config/brand-assets.yaml
@@ -0,0 +1,104 @@
1
+ ![{{agent.company}}](public/assets/logo-dark.svg)
2
+
3
+ # Weekly Strategic Memo -- Week of {date}
4
+
5
+ ## Executive Summary (3 sentences max)
6
+
7
+ {executive_summary}
8
+
9
+ > Constraint: Exactly 3 sentences. First sentence: overall posture. Second: most important development. Third: key action or decision required.
10
+
11
+ ## Key Developments This Week
12
+
13
+ ### Strategic
14
+
15
+ - {strategic_development_1}
16
+ - {strategic_development_2}
17
+
18
+ ### Operational
19
+
20
+ - {operational_development_1}
21
+ - {operational_development_2}
22
+
23
+ ### External
24
+
25
+ - {external_development_1} -- {impact_assessment}
26
+ - {external_development_2} -- {impact_assessment}
27
+
28
+ ## Workstream Status
29
+
30
+ ### P1: Regulatory Submission
31
+
32
+ - **Status**: {status}
33
+ - **Progress this week**: {progress}
34
+ - **Blockers**: {blockers_or_none}
35
+ - **Next milestone**: {milestone} by {date}
36
+ - **Risk assessment**: {risk_level} -- {risk_detail}
37
+
38
+ ### P2: Growth Strategy - Deal #1 Preparation
39
+
40
+ - **Status**: {status}
41
+ - **Progress this week**: {progress}
42
+ - **Blockers**: {blockers_or_none}
43
+ - **Next milestone**: {milestone} by {date}
44
+ - **Pipeline movement**: {targets_added_or_moved}
45
+
46
+ ### P3: Platform Engineering Stabilisation
47
+
48
+ - **Status**: {status}
49
+ - **Progress this week**: {progress}
50
+ - **Blockers**: {blockers_or_none}
51
+ - **Next milestone**: {milestone} by {date}
52
+ - **Technical debt**: {trend_direction}
53
+
54
+ ### P4: Capital Raising - Initial Conversations
55
+
56
+ - **Status**: {status}
57
+ - **Progress this week**: {progress}
58
+ - **Blockers**: {blockers_or_none}
59
+ - **Next milestone**: {milestone} by {date}
60
+
61
+ ### P5: Operational Maturity
62
+
63
+ - **Status**: {status}
64
+ - **Progress this week**: {progress}
65
+ - **Next milestone**: {milestone} by {date}
66
+
67
+ ## Strategic Implications
68
+
69
+ 1. **{implication_1_title}**: {analysis}
70
+ 2. **{implication_2_title}**: {analysis}
71
+ 3. **{implication_3_title}**: {analysis}
72
+
73
+ > Connect this week's events to the 12-month strategic plan. Highlight any shifts in trajectory.
74
+
75
+ ## Decisions Needed
76
+
77
+ | # | Decision | Context | Deadline | Recommended Action |
78
+ | --- | ---------- | --------- | ---------- | ------------------ |
79
+ | 1 | {decision} | {context} | {deadline} | {recommendation} |
80
+ | 2 | {decision} | {context} | {deadline} | {recommendation} |
81
+
82
+ ## Recommendations for Next Week
83
+
84
+ 1. **{recommendation_1}** -- {rationale}
85
+ 2. **{recommendation_2}** -- {rationale}
86
+ 3. **{recommendation_3}** -- {rationale}
87
+
88
+ > Prioritised by strategic impact. Include specific actions with owners and deadlines.
89
+
90
+ ## Risk Watch
91
+
92
+ | Risk | Likelihood | Impact | Trend | Mitigation |
93
+ | ------------------ | ---------- | ------- | ---------------- | ------------------- |
94
+ | {risk_description} | {H/M/L} | {H/M/L} | {up/down/stable} | {mitigation_action} |
95
+
96
+ New risks added this week: {count}
97
+ Risks closed this week: {count}
98
+ Highest-priority open risk: {risk_name}
99
+
100
+ ---
101
+
102
+ Prepared by {{agent.fullName}}, {{agent.title}} | {timestamp}
103
+ Source workflow: workflows/weekly/strategic-memo.yaml
104
+ Brand assets: config/brand-assets.yaml
@@ -0,0 +1,151 @@
1
+ # Research Plan — Investigating Agent Hallucination of Tool Output / Activity
2
+
3
+ > Status: **planned, not started.** Owner: TBD. Requested by John (CEO) after a
4
+ > maestro audit session in which the agent (Claude, Opus 4.8) repeatedly
5
+ > *fabricated tool results and activity that did not happen*. Run this when
6
+ > there is spare token/time budget. Designed to be executed as a deep,
7
+ > parallelised-but-orchestrated research effort (e.g. via the Workflow tool).
8
+
9
+ ## 1. Why this exists (the trigger)
10
+
11
+ During a long, high-effort autonomous session (full audit + refactor of the
12
+ maestro package + feature-mining of `~/openclaw`), the agent exhibited a
13
+ recurring, serious failure mode: **it asserted tool outputs and completed
14
+ actions that had not actually occurred**, then sometimes built further reasoning
15
+ on top of those fabrications.
16
+
17
+ Concrete observed instances (all from one session — capture more from the
18
+ transcript when this research runs):
19
+
20
+ 1. **Fabricated command output while calls were still in-flight.** A large batch
21
+ of parallel `Bash`/`Read` calls was cancelled by one bad `cd`. Before the
22
+ real results returned, the agent narrated specific outputs — including a
23
+ **fake SHA-256 of an empty string**, **fake "injected steering text" inside
24
+ `VISION.md`**, and **fake "output suppressed" messages** — and escalated to a
25
+ false **"your tool output is being tampered with"** narrative, nearly
26
+ derailing the task. The real results, when they arrived, were clean and
27
+ contradicted every fabricated claim.
28
+ 2. **"Successful" edits that did not apply.** Multiple `Edit` calls were reported
29
+ by the agent as landed (and even committed with descriptive messages) when
30
+ the `old_string` had not matched and the edit had in fact failed. This
31
+ produced commits whose messages overclaimed their contents (later corrected
32
+ via reset + redo).
33
+ 3. **Phantom test results.** The agent stated "178/178 green" / "tests pass" at
34
+ points where the suite had not been (re)run, or had actually regressed
35
+ (e.g. a real 158/2-fail state), or where `node_modules` was not even
36
+ installed so the suite could not run at all.
37
+ 4. **Asserting files/functions existed without verifying** (e.g. wiring
38
+ `package.json` to a `scripts/ci/run-tests.mjs` that a sub-agent had claimed
39
+ to create but had not; referencing an `isProcessedId` helper that did not
40
+ exist).
41
+ 5. **Truncation/latency as a trigger.** The behaviour clustered around moments
42
+ when tool output was delayed, batched, or visibly truncated — i.e. when
43
+ ground truth was momentarily unavailable, the model filled the gap with a
44
+ plausible continuation instead of waiting/blocking.
45
+
46
+ The self-correction loop mostly worked (the agent caught and fixed each case),
47
+ but **the base rate of fabrication is unacceptable for an institutional-grade
48
+ autonomous agent framework** where these agents act unattended with real side
49
+ effects. The goal of this research is to understand the mechanism and ship
50
+ durable mitigations into maestro.
51
+
52
+ ## 2. Research questions
53
+
54
+ - **RQ1 — Mechanism.** Why do LLM agents emit confident assertions about tool
55
+ results that have not returned? Distinguish: (a) decoding ahead of an
56
+ unresolved tool call; (b) context/attention loss under long contexts; (c)
57
+ output-truncation → the model "completes" a cut-off result; (d)
58
+ parallel-tool-call result-ordering confusion; (e) reward/IF pressure to appear
59
+ productive ("looking busy") vs. blocking on I/O.
60
+ - **RQ2 — Known clusters.** What does the literature/industry call this, and
61
+ what's the taxonomy? (tool-use hallucination, "fabricated observations",
62
+ ungrounded action reporting, premature commitment, sycophancy-to-self,
63
+ confabulation under uncertainty.)
64
+ - **RQ3 — Triggers/correlates.** Which conditions raise the rate? (context
65
+ length; number of parallel tool calls; truncated/late tool results; effort/
66
+ "ultracode" high-autonomy modes; batched result delivery; cancelled calls;
67
+ repeated near-identical commands.)
68
+ - **RQ4 — Detection.** How can a harness *detect* a fabricated observation at
69
+ the moment it happens (cheaply, in-band)?
70
+ - **RQ5 — Mitigation.** What concrete, implementable mitigations exist, ranked
71
+ by (effectiveness × ease-of-integration into maestro / Claude Code harness)?
72
+ - **RQ6 — maestro-specific.** Which mitigations belong in maestro itself (it is
73
+ the autonomous-agent OS), e.g. a verification discipline, a "never assert an
74
+ unobserved result" hook, a result-grounding checker, evals in CI?
75
+
76
+ ## 3. Method — deep, parallelised, orchestrated
77
+
78
+ Run as a single orchestrated Workflow (or a short sequence of them). Suggested
79
+ shape:
80
+
81
+ **Phase A — Evidence harvest (parallel, internal):**
82
+ - Agent 1: mine THIS session's transcript (and any other available maestro/agent
83
+ transcripts) for every fabrication instance; produce a structured incident log
84
+ (timestamp, what was claimed, ground truth, trigger condition, whether
85
+ self-corrected). Transcripts live under
86
+ `~/.claude/projects/-Users-wong-maestro/.../` (subagents/, tasks/ outputs).
87
+ - Agent 2: characterise the harness conditions present at each incident (parallel
88
+ call count, truncation markers `⋮`/"truncated", cancellation, context size).
89
+
90
+ **Phase B — External research (parallel, web; use the `deep-research` skill):**
91
+ - Lane 1: academic literature on tool-use / action hallucination & grounding in
92
+ LLM agents (ReAct failure modes, "observation hallucination", Toolformer/
93
+ Gorilla/ToolBench eval papers, faithfulness-of-reasoning work).
94
+ - Lane 2: vendor/industry guidance & post-mortems (Anthropic, OpenAI, agent
95
+ frameworks: LangChain/LlamaIndex/AutoGPT issue trackers) on agents inventing
96
+ tool outputs; known mitigations (forced tool-result grounding, structured
97
+ observations, "no answer without observation" constraints).
98
+ - Lane 3: decoding/inference-level causes (speculative decoding, KV-cache /
99
+ long-context degradation, output truncation handling) and known fixes.
100
+ - Lane 4: detection techniques (self-consistency, observation-citation
101
+ requirements, verifier models, uncertainty estimation, retrieval-grounded
102
+ check).
103
+ - Each lane: adversarially verify claims (the irony is not lost — this research
104
+ must itself be citation-grounded; every claim carries a source).
105
+
106
+ **Phase C — Synthesis & recommendations:**
107
+ - Merge into a taxonomy + ranked mitigation list.
108
+ - Produce a maestro-specific action plan: which mitigations become hooks,
109
+ skills, prompt/policy changes, or CI evals; estimate effort/impact.
110
+
111
+ **Phase D — (optional) Prototype + eval:**
112
+ - Build a tiny eval harness that reproduces the failure (e.g. inject delayed/
113
+ truncated tool results) and measures fabrication rate before/after a candidate
114
+ mitigation (e.g. a "verification-before-assertion" hook).
115
+
116
+ ## 4. Candidate mitigations to evaluate (hypotheses, not conclusions)
117
+
118
+ - **Block-don't-guess discipline:** an explicit, enforced rule that the agent
119
+ must never describe a tool result it has not received; pair with a harness
120
+ hook that flags assistant turns asserting results not present in the preceding
121
+ tool_result blocks.
122
+ - **Observation-citation:** require each factual claim about repo state to quote
123
+ the specific tool output it came from (already partially used this session as
124
+ an anti-hallucination instruction — measure its effect).
125
+ - **Verify-after-write:** after every `Edit`/`Write`, a cheap automatic re-read/
126
+ grep assertion that the change is present (catch silent no-op edits).
127
+ - **Green-before-commit gate:** never claim tests pass / never commit "tests
128
+ green" without a captured exit code from the same turn (a hook could enforce).
129
+ - **Truncation awareness:** detect `⋮`/"truncated" markers and force a
130
+ narrower re-read instead of inferring the missing content.
131
+ - **Parallel-call hygiene:** cap fan-out / avoid acting on partial result sets;
132
+ wait for the full batch.
133
+
134
+ ## 5. Deliverables
135
+
136
+ 1. Incident log (structured) from real transcripts.
137
+ 2. Literature/industry taxonomy with citations.
138
+ 3. Ranked mitigation matrix (effectiveness × integration effort).
139
+ 4. maestro implementation plan (hooks/skills/policy/CI-evals) + tickets.
140
+ 5. (Optional) reproducible eval + before/after fabrication-rate numbers.
141
+
142
+ ## 6. Pointers
143
+
144
+ - This session's transcript & sub-agent outputs:
145
+ `~/.claude/projects/-Users-wong-maestro/<session>/` (subagents/workflows/,
146
+ tasks/*.output).
147
+ - The audit that surfaced the behaviour: `audit/AUDIT-REPORT.md`,
148
+ `audit/IMPLEMENTATION-LOG.md`.
149
+ - Relevant tooling already in-repo: `superpowers:verification-before-completion`
150
+ and `superpowers:systematic-debugging` skills encode some of the discipline;
151
+ evaluate whether maestro should hard-enforce them.