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