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