@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,88 @@
|
|
|
1
|
+

|
|
2
|
+
|
|
3
|
+
# Decision Required: {title}
|
|
4
|
+
|
|
5
|
+
**Priority**: {P1-P5 alignment or standalone}
|
|
6
|
+
**Requested by**: {requestor}
|
|
7
|
+
**Decision owner**: {{agent.principal.fullName}}, {{agent.principal.title}}
|
|
8
|
+
**Prepared by**: {{agent.fullName}}, {{agent.title}}
|
|
9
|
+
**Date prepared**: {date}
|
|
10
|
+
|
|
11
|
+
## Context
|
|
12
|
+
|
|
13
|
+
{what_prompted_this_decision}
|
|
14
|
+
|
|
15
|
+
> 2-4 sentences maximum. State the triggering event, why it matters now, and what happens if no decision is made.
|
|
16
|
+
|
|
17
|
+
## Options
|
|
18
|
+
|
|
19
|
+
### Option A: {option_a_name}
|
|
20
|
+
|
|
21
|
+
**Description**: {option_a_description}
|
|
22
|
+
|
|
23
|
+
| Dimension | Assessment |
|
|
24
|
+
| ----------------- | --------------------------------------------------------- |
|
|
25
|
+
| **Pros** | {pro_1}; {pro_2}; {pro_3} |
|
|
26
|
+
| **Cons** | {con_1}; {con_2} |
|
|
27
|
+
| **Risk** | {risk_description} (Likelihood: {H/M/L}, Impact: {H/M/L}) |
|
|
28
|
+
| **Cost** | {financial_and_opportunity_cost} |
|
|
29
|
+
| **Timeline** | {implementation_timeline} |
|
|
30
|
+
| **Reversibility** | {easy/moderate/difficult/irreversible} |
|
|
31
|
+
|
|
32
|
+
### Option B: {option_b_name}
|
|
33
|
+
|
|
34
|
+
**Description**: {option_b_description}
|
|
35
|
+
|
|
36
|
+
| Dimension | Assessment |
|
|
37
|
+
| ----------------- | --------------------------------------------------------- |
|
|
38
|
+
| **Pros** | {pro_1}; {pro_2}; {pro_3} |
|
|
39
|
+
| **Cons** | {con_1}; {con_2} |
|
|
40
|
+
| **Risk** | {risk_description} (Likelihood: {H/M/L}, Impact: {H/M/L}) |
|
|
41
|
+
| **Cost** | {financial_and_opportunity_cost} |
|
|
42
|
+
| **Timeline** | {implementation_timeline} |
|
|
43
|
+
| **Reversibility** | {easy/moderate/difficult/irreversible} |
|
|
44
|
+
|
|
45
|
+
### Option C: {option_c_name} (if applicable)
|
|
46
|
+
|
|
47
|
+
> Include a third option only when materially distinct from A and B. Do not fabricate a middle option for appearance.
|
|
48
|
+
|
|
49
|
+
## Comparison Matrix
|
|
50
|
+
|
|
51
|
+
| Criterion | Weight | Option A | Option B |
|
|
52
|
+
| -------------------- | -------- | ----------- | ----------- |
|
|
53
|
+
| Strategic alignment | {weight} | {score}/5 | {score}/5 |
|
|
54
|
+
| Speed to execute | {weight} | {score}/5 | {score}/5 |
|
|
55
|
+
| Downside risk | {weight} | {score}/5 | {score}/5 |
|
|
56
|
+
| Resource requirement | {weight} | {score}/5 | {score}/5 |
|
|
57
|
+
| **Weighted total** | | **{total}** | **{total}** |
|
|
58
|
+
|
|
59
|
+
## {{agent.firstName}}'s Recommendation
|
|
60
|
+
|
|
61
|
+
**Recommended option**: {Option A or B}
|
|
62
|
+
|
|
63
|
+
{2-3 sentence rationale explaining why this option best serves the {{agent.principal.title}}'s stated priorities and risk posture. Reference specific strategic priorities (P1-P5) where applicable.}
|
|
64
|
+
|
|
65
|
+
**Confidence level**: {High / Medium / Low}
|
|
66
|
+
**Key assumption**: {the_most_important_assumption_underlying_this_recommendation}
|
|
67
|
+
|
|
68
|
+
## Decision Deadline
|
|
69
|
+
|
|
70
|
+
**Decide by**: {date_and_time}
|
|
71
|
+
**Reason for deadline**: {why_this_date}
|
|
72
|
+
|
|
73
|
+
## Impact if Delayed
|
|
74
|
+
|
|
75
|
+
{what_happens_if_no_decision_by_deadline}
|
|
76
|
+
|
|
77
|
+
> Be specific: quantify costs, name missed windows, identify cascading effects on other workstreams.
|
|
78
|
+
|
|
79
|
+
## Next Steps (upon decision)
|
|
80
|
+
|
|
81
|
+
- [ ] {action_1} -- Owner: {owner}, Due: {date}
|
|
82
|
+
- [ ] {action_2} -- Owner: {owner}, Due: {date}
|
|
83
|
+
- [ ] {action_3} -- Owner: {owner}, Due: {date}
|
|
84
|
+
|
|
85
|
+
---
|
|
86
|
+
|
|
87
|
+
Prepared by {{agent.fullName}}, {{agent.title}} | {timestamp}
|
|
88
|
+
Brand assets: config/brand-assets.yaml
|
|
@@ -0,0 +1,141 @@
|
|
|
1
|
+
# Follow-Up Message Templates
|
|
2
|
+
|
|
3
|
+
Voice: {{agent.fullName}}, {{agent.title}}
|
|
4
|
+
Tone: Professional, warm, efficient. Never passive-aggressive. Always assumes good faith.
|
|
5
|
+
Brand: Use the company icon in email signatures per `config/brand-assets.yaml`
|
|
6
|
+
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
## Gentle Reminder (3 days since request)
|
|
10
|
+
|
|
11
|
+
**Use when**: An action item or reply has been pending for approximately 3 business days with no response.
|
|
12
|
+
|
|
13
|
+
**Slack template**:
|
|
14
|
+
|
|
15
|
+
```
|
|
16
|
+
Hi {name} -- just circling back on {topic/request}. I know things get busy, but wanted to keep this on your radar. {{agent.principal.firstName}} is tracking this for {context/workstream}, and it would be great to have an update by {suggested_date}.
|
|
17
|
+
|
|
18
|
+
Happy to hop on a quick call if that's easier. Let me know!
|
|
19
|
+
```
|
|
20
|
+
|
|
21
|
+
**Email template**:
|
|
22
|
+
|
|
23
|
+
```
|
|
24
|
+
Subject: Quick follow-up: {topic}
|
|
25
|
+
|
|
26
|
+
Hi {name},
|
|
27
|
+
|
|
28
|
+
Hope you're well. I wanted to follow up on {specific_request_or_action_item} from {original_date_or_conversation}.
|
|
29
|
+
|
|
30
|
+
We're tracking this as part of {workstream/priority}, and having your input would help us keep things moving. Could you share an update by {suggested_date}?
|
|
31
|
+
|
|
32
|
+
If there are any blockers on your end, I'm happy to help clear them.
|
|
33
|
+
|
|
34
|
+
Thanks,
|
|
35
|
+
{{agent.firstName}}
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
**WhatsApp template**:
|
|
39
|
+
|
|
40
|
+
```
|
|
41
|
+
Hi {name}, quick follow-up on {topic} from {day}. Any update? Happy to chat if easier. Thanks!
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
---
|
|
45
|
+
|
|
46
|
+
## Firm Follow-Up (1 week since request)
|
|
47
|
+
|
|
48
|
+
**Use when**: 7 days have passed. The item is overdue and affecting other workstreams.
|
|
49
|
+
|
|
50
|
+
**Slack template**:
|
|
51
|
+
|
|
52
|
+
```
|
|
53
|
+
Hi {name} -- following up again on {topic/request} (originally raised on {original_date}). This is now a week overdue and is starting to affect {downstream_impact}.
|
|
54
|
+
|
|
55
|
+
Could you provide a status update today? If there's a blocker, let me know and I'll see what we can do to unblock it.
|
|
56
|
+
|
|
57
|
+
{{agent.principal.firstName}} will be reviewing open items in {next_review_context}, so I want to make sure we have the latest.
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
**Email template**:
|
|
61
|
+
|
|
62
|
+
```
|
|
63
|
+
Subject: Follow-up needed: {topic} (1 week overdue)
|
|
64
|
+
|
|
65
|
+
Hi {name},
|
|
66
|
+
|
|
67
|
+
I'm following up on {specific_request_or_action_item}, originally requested on {original_date}. We haven't received an update yet and this is now a week past the expected timeline.
|
|
68
|
+
|
|
69
|
+
This is connected to {workstream/priority} and the delay is beginning to affect {specific_downstream_impact}.
|
|
70
|
+
|
|
71
|
+
Could you please provide a status update by end of day today? Specifically:
|
|
72
|
+
- Current status of {the_deliverable}
|
|
73
|
+
- Any blockers preventing completion
|
|
74
|
+
- Revised timeline if the original date is no longer feasible
|
|
75
|
+
|
|
76
|
+
I want to help get this resolved -- let me know what you need.
|
|
77
|
+
|
|
78
|
+
Thanks,
|
|
79
|
+
{{agent.firstName}}
|
|
80
|
+
```
|
|
81
|
+
|
|
82
|
+
**WhatsApp template**:
|
|
83
|
+
|
|
84
|
+
```
|
|
85
|
+
Hi {name}, this is the second follow-up on {topic} from {original_date} -- it's now a week overdue and impacting {downstream}. Can you send a status update today? If you're blocked I can help. Thanks.
|
|
86
|
+
```
|
|
87
|
+
|
|
88
|
+
---
|
|
89
|
+
|
|
90
|
+
## Escalation Notice (2 weeks since request)
|
|
91
|
+
|
|
92
|
+
**Use when**: 14+ days have passed. The item will be escalated to {{agent.principal.firstName}}'s direct attention.
|
|
93
|
+
|
|
94
|
+
**Slack template**:
|
|
95
|
+
|
|
96
|
+
```
|
|
97
|
+
Hi {name} -- I've followed up on {topic/request} twice now (on {first_followup_date} and {second_followup_date}) without a response. This has been open since {original_date}.
|
|
98
|
+
|
|
99
|
+
I need to flag this for {{agent.principal.firstName}}'s direct review as part of the weekly open items sweep. Before I do, I wanted to give you a final opportunity to provide an update or let me know if there's something preventing progress.
|
|
100
|
+
|
|
101
|
+
Please respond by end of day {date}. If I don't hear back, I'll include this in the escalation summary for {{agent.principal.firstName}}'s review on {next_review_date}.
|
|
102
|
+
```
|
|
103
|
+
|
|
104
|
+
**Email template**:
|
|
105
|
+
|
|
106
|
+
```
|
|
107
|
+
Subject: Escalation pending: {topic} (2+ weeks overdue)
|
|
108
|
+
|
|
109
|
+
Hi {name},
|
|
110
|
+
|
|
111
|
+
This is a final follow-up regarding {specific_request_or_action_item}, originally requested on {original_date}. I've followed up previously on {first_followup_date} and {second_followup_date} without receiving a response.
|
|
112
|
+
|
|
113
|
+
This item is part of {workstream/priority} and the extended delay has the following impact:
|
|
114
|
+
- {impact_1}
|
|
115
|
+
- {impact_2}
|
|
116
|
+
|
|
117
|
+
Per our escalation process, items unresolved after two weeks are raised to {{agent.principal.firstName}}'s direct attention. I will be including this in the review on {escalation_date} unless we receive an update beforehand.
|
|
118
|
+
|
|
119
|
+
Please respond by {deadline} with either:
|
|
120
|
+
1. A status update and revised completion date
|
|
121
|
+
2. An explanation of blockers so we can help resolve them
|
|
122
|
+
3. A request to reassign the item
|
|
123
|
+
|
|
124
|
+
Thanks,
|
|
125
|
+
{{agent.fullName}}
|
|
126
|
+
{{agent.title}}
|
|
127
|
+
```
|
|
128
|
+
|
|
129
|
+
---
|
|
130
|
+
|
|
131
|
+
## Usage Guidelines
|
|
132
|
+
|
|
133
|
+
- **Channel selection**: Use the same channel as the original request. If the original was email, follow up via email.
|
|
134
|
+
- **Tone escalation**: Each stage is slightly firmer but never threatening. {{agent.firstName}} is firm, not hostile.
|
|
135
|
+
- **Approval requirements**: Gentle reminders (3-day) may be sent without CEO approval. Firm follow-ups (1-week) may be sent without approval. Escalation notices (2-week) require CEO awareness before sending -- log in the daily brief.
|
|
136
|
+
- **Logging**: Every follow-up sent must be logged in `knowledge/memory/executive-memory.yaml` under `open_loops` with the follow-up date and stage.
|
|
137
|
+
- **Do not send** if the person has already provided a partial response or acknowledged the item -- adjust the template to reference their partial response instead.
|
|
138
|
+
|
|
139
|
+
---
|
|
140
|
+
|
|
141
|
+
Source workflow: workflows/daily/slack-followup-sweep.yaml
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+

|
|
2
|
+
|
|
3
|
+
---
|
|
4
|
+
|
|
5
|
+
# Investor Update — {period}
|
|
6
|
+
|
|
7
|
+
**DRAFT — REQUIRES CEO APPROVAL**
|
|
8
|
+
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
Dear Partners,
|
|
12
|
+
|
|
13
|
+
{opening_paragraph — state of affairs, macro context, portfolio positioning}
|
|
14
|
+
|
|
15
|
+
## Performance Summary
|
|
16
|
+
|
|
17
|
+
| Metric | Current Period | Prior Period | Change |
|
|
18
|
+
| ------------- | -------------- | ------------ | ------ |
|
|
19
|
+
| {metric_name} | {value} | {value} | {pct} |
|
|
20
|
+
|
|
21
|
+
## Strategic Highlights
|
|
22
|
+
|
|
23
|
+
1. **{highlight_1_title}**: {description}
|
|
24
|
+
2. **{highlight_2_title}**: {description}
|
|
25
|
+
3. **{highlight_3_title}**: {description}
|
|
26
|
+
|
|
27
|
+
## Operational Progress
|
|
28
|
+
|
|
29
|
+
{narrative — what was accomplished, key milestones reached, team developments}
|
|
30
|
+
|
|
31
|
+
## Outlook
|
|
32
|
+
|
|
33
|
+
{forward_looking — priorities for next period, expected milestones, risk factors to monitor}
|
|
34
|
+
|
|
35
|
+
> Constraint: Forward-looking statements must include appropriate disclaimers. No return projections.
|
|
36
|
+
|
|
37
|
+
---
|
|
38
|
+
|
|
39
|
+
With appreciation,
|
|
40
|
+
|
|
41
|
+
**{{agent.principal.fullName}}**
|
|
42
|
+
{{agent.principal.title}}
|
|
43
|
+
{{agent.company}}
|
|
44
|
+
|
|
45
|
+

|
|
46
|
+
|
|
47
|
+
---
|
|
48
|
+
|
|
49
|
+
**Classification**: LP Confidential — Not for redistribution
|
|
50
|
+
**Prepared by**: {{agent.fullName}}, {{agent.title}} (via `founder-voice` agent)
|
|
51
|
+
**Date**: {date}
|
|
52
|
+
Brand assets: config/brand-assets.yaml
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+

|
|
2
|
+
|
|
3
|
+
# CEO Morning Brief -- {date}
|
|
4
|
+
|
|
5
|
+
## Priority Decisions (max 3)
|
|
6
|
+
|
|
7
|
+
1. **{decision_1_title}**
|
|
8
|
+
- Context: {decision_1_context}
|
|
9
|
+
- Deadline: {decision_1_deadline}
|
|
10
|
+
- Recommendation: {decision_1_recommendation}
|
|
11
|
+
|
|
12
|
+
2. **{decision_2_title}**
|
|
13
|
+
- Context: {decision_2_context}
|
|
14
|
+
- Deadline: {decision_2_deadline}
|
|
15
|
+
- Recommendation: {decision_2_recommendation}
|
|
16
|
+
|
|
17
|
+
3. **{decision_3_title}**
|
|
18
|
+
- Context: {decision_3_context}
|
|
19
|
+
- Deadline: {decision_3_deadline}
|
|
20
|
+
- Recommendation: {decision_3_recommendation}
|
|
21
|
+
|
|
22
|
+
> If fewer than 3 decisions are pending, omit the unused slots. Never pad.
|
|
23
|
+
|
|
24
|
+
## Overnight Developments
|
|
25
|
+
|
|
26
|
+
### Markets
|
|
27
|
+
|
|
28
|
+
| Asset Class | Move | Signal |
|
|
29
|
+
| ------------- | ---------- | ----------------------- |
|
|
30
|
+
| {asset_class} | {move_pct} | {signal_interpretation} |
|
|
31
|
+
|
|
32
|
+
Key takeaway: {market_summary_one_liner}
|
|
33
|
+
|
|
34
|
+
### News
|
|
35
|
+
|
|
36
|
+
- **{headline_1}** -- {relevance_to_company}
|
|
37
|
+
- **{headline_2}** -- {relevance_to_company}
|
|
38
|
+
- **{headline_3}** -- {relevance_to_company}
|
|
39
|
+
|
|
40
|
+
### Competitor Signals
|
|
41
|
+
|
|
42
|
+
- **{competitor_name}**: {signal_description}
|
|
43
|
+
|
|
44
|
+
> Include only signals with direct strategic relevance. Omit noise.
|
|
45
|
+
|
|
46
|
+
## Today's Calendar
|
|
47
|
+
|
|
48
|
+
| Time (GST) | Event | Prep Needed | Notes |
|
|
49
|
+
| ---------- | ------------- | ------------- | ------- |
|
|
50
|
+
| {time} | {event_title} | {prep_status} | {notes} |
|
|
51
|
+
|
|
52
|
+
Blocks of unscheduled time: {free_blocks}
|
|
53
|
+
|
|
54
|
+
## Open Loops (Top 5)
|
|
55
|
+
|
|
56
|
+
| # | Item | Owner | Age | Status | Next Action |
|
|
57
|
+
| --- | ------ | ------- | ----------- | -------- | ------------- |
|
|
58
|
+
| 1 | {item} | {owner} | {days} days | {status} | {next_action} |
|
|
59
|
+
| 2 | {item} | {owner} | {days} days | {status} | {next_action} |
|
|
60
|
+
| 3 | {item} | {owner} | {days} days | {status} | {next_action} |
|
|
61
|
+
| 4 | {item} | {owner} | {days} days | {status} | {next_action} |
|
|
62
|
+
| 5 | {item} | {owner} | {days} days | {status} | {next_action} |
|
|
63
|
+
|
|
64
|
+
> Sorted by urgency and age. Items awaiting reply > 5 days are flagged for escalation.
|
|
65
|
+
|
|
66
|
+
## Workstream Pulse
|
|
67
|
+
|
|
68
|
+
| Workstream | Status | One-Line Update |
|
|
69
|
+
| ------------------------------ | -------------- | --------------- |
|
|
70
|
+
| {workstream_1_name} | {status_emoji} | {one_liner} |
|
|
71
|
+
| {workstream_2_name} | {status_emoji} | {one_liner} |
|
|
72
|
+
| {workstream_3_name} | {status_emoji} | {one_liner} |
|
|
73
|
+
| {workstream_4_name} | {status_emoji} | {one_liner} |
|
|
74
|
+
| {workstream_5_name} | {status_emoji} | {one_liner} |
|
|
75
|
+
|
|
76
|
+
Status key: ON_TRACK / AT_RISK / BLOCKED / PAUSED
|
|
77
|
+
|
|
78
|
+
---
|
|
79
|
+
|
|
80
|
+
Prepared by {{agent.fullName}}, {{agent.title}} | {timestamp}
|
|
81
|
+
Source workflow: workflows/daily/morning-brief.yaml
|
|
82
|
+
Brand assets: config/brand-assets.yaml
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
# Presentation Template — Brand Asset Placement Guide
|
|
2
|
+
|
|
3
|
+
Reference: `config/brand-assets.yaml`
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## Title Slide
|
|
8
|
+
|
|
9
|
+

|
|
10
|
+
|
|
11
|
+
**{presentation_title}**
|
|
12
|
+
|
|
13
|
+
{subtitle_or_context}
|
|
14
|
+
|
|
15
|
+
{presenter_name} | {date}
|
|
16
|
+
|
|
17
|
+
> Full logo centred or top-left. Use dark variant on light backgrounds, light variant on dark backgrounds.
|
|
18
|
+
|
|
19
|
+
---
|
|
20
|
+
|
|
21
|
+
## Section Slides
|
|
22
|
+
|
|
23
|
+
 **{section_title}**
|
|
24
|
+
|
|
25
|
+
{content}
|
|
26
|
+
|
|
27
|
+
> Icon in top-left corner alongside section title. Compact placement.
|
|
28
|
+
|
|
29
|
+
---
|
|
30
|
+
|
|
31
|
+
## Content Slides
|
|
32
|
+
|
|
33
|
+
{slide_content}
|
|
34
|
+
|
|
35
|
+
> No logo on content-heavy slides — keep clean. Icon permitted in footer if brand reinforcement needed.
|
|
36
|
+
|
|
37
|
+
---
|
|
38
|
+
|
|
39
|
+
## Closing Slide
|
|
40
|
+
|
|
41
|
+

|
|
42
|
+
|
|
43
|
+
**Thank you**
|
|
44
|
+
|
|
45
|
+
{contact_information}
|
|
46
|
+
|
|
47
|
+
> Full logo centred. Match the title slide branding.
|
|
48
|
+
|
|
49
|
+
---
|
|
50
|
+
|
|
51
|
+
## Variant Selection Guide
|
|
52
|
+
|
|
53
|
+
| Slide Background | Logo Variant | Icon Variant |
|
|
54
|
+
| ---------------- | ---------------------- | ---------------------- |
|
|
55
|
+
| White / Light | logo-dark.svg | icon-dark.svg |
|
|
56
|
+
| Dark / Navy | logo-light.svg | icon-light.svg |
|
|
57
|
+
|
|
58
|
+
Brand assets: config/brand-assets.yaml
|
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+

|
|
2
|
+
|
|
3
|
+
# Weekly Strategic Memo -- Week of {date}
|
|
4
|
+
|
|
5
|
+
## Executive Summary (3 sentences max)
|
|
6
|
+
|
|
7
|
+
{executive_summary}
|
|
8
|
+
|
|
9
|
+
> Constraint: Exactly 3 sentences. First sentence: overall posture. Second: most important development. Third: key action or decision required.
|
|
10
|
+
|
|
11
|
+
## Key Developments This Week
|
|
12
|
+
|
|
13
|
+
### Strategic
|
|
14
|
+
|
|
15
|
+
- {strategic_development_1}
|
|
16
|
+
- {strategic_development_2}
|
|
17
|
+
|
|
18
|
+
### Operational
|
|
19
|
+
|
|
20
|
+
- {operational_development_1}
|
|
21
|
+
- {operational_development_2}
|
|
22
|
+
|
|
23
|
+
### External
|
|
24
|
+
|
|
25
|
+
- {external_development_1} -- {impact_assessment}
|
|
26
|
+
- {external_development_2} -- {impact_assessment}
|
|
27
|
+
|
|
28
|
+
## Workstream Status
|
|
29
|
+
|
|
30
|
+
### P1: Regulatory Submission
|
|
31
|
+
|
|
32
|
+
- **Status**: {status}
|
|
33
|
+
- **Progress this week**: {progress}
|
|
34
|
+
- **Blockers**: {blockers_or_none}
|
|
35
|
+
- **Next milestone**: {milestone} by {date}
|
|
36
|
+
- **Risk assessment**: {risk_level} -- {risk_detail}
|
|
37
|
+
|
|
38
|
+
### P2: Growth Strategy - Deal #1 Preparation
|
|
39
|
+
|
|
40
|
+
- **Status**: {status}
|
|
41
|
+
- **Progress this week**: {progress}
|
|
42
|
+
- **Blockers**: {blockers_or_none}
|
|
43
|
+
- **Next milestone**: {milestone} by {date}
|
|
44
|
+
- **Pipeline movement**: {targets_added_or_moved}
|
|
45
|
+
|
|
46
|
+
### P3: Platform Engineering Stabilisation
|
|
47
|
+
|
|
48
|
+
- **Status**: {status}
|
|
49
|
+
- **Progress this week**: {progress}
|
|
50
|
+
- **Blockers**: {blockers_or_none}
|
|
51
|
+
- **Next milestone**: {milestone} by {date}
|
|
52
|
+
- **Technical debt**: {trend_direction}
|
|
53
|
+
|
|
54
|
+
### P4: Capital Raising - Initial Conversations
|
|
55
|
+
|
|
56
|
+
- **Status**: {status}
|
|
57
|
+
- **Progress this week**: {progress}
|
|
58
|
+
- **Blockers**: {blockers_or_none}
|
|
59
|
+
- **Next milestone**: {milestone} by {date}
|
|
60
|
+
|
|
61
|
+
### P5: Operational Maturity
|
|
62
|
+
|
|
63
|
+
- **Status**: {status}
|
|
64
|
+
- **Progress this week**: {progress}
|
|
65
|
+
- **Next milestone**: {milestone} by {date}
|
|
66
|
+
|
|
67
|
+
## Strategic Implications
|
|
68
|
+
|
|
69
|
+
1. **{implication_1_title}**: {analysis}
|
|
70
|
+
2. **{implication_2_title}**: {analysis}
|
|
71
|
+
3. **{implication_3_title}**: {analysis}
|
|
72
|
+
|
|
73
|
+
> Connect this week's events to the 12-month strategic plan. Highlight any shifts in trajectory.
|
|
74
|
+
|
|
75
|
+
## Decisions Needed
|
|
76
|
+
|
|
77
|
+
| # | Decision | Context | Deadline | Recommended Action |
|
|
78
|
+
| --- | ---------- | --------- | ---------- | ------------------ |
|
|
79
|
+
| 1 | {decision} | {context} | {deadline} | {recommendation} |
|
|
80
|
+
| 2 | {decision} | {context} | {deadline} | {recommendation} |
|
|
81
|
+
|
|
82
|
+
## Recommendations for Next Week
|
|
83
|
+
|
|
84
|
+
1. **{recommendation_1}** -- {rationale}
|
|
85
|
+
2. **{recommendation_2}** -- {rationale}
|
|
86
|
+
3. **{recommendation_3}** -- {rationale}
|
|
87
|
+
|
|
88
|
+
> Prioritised by strategic impact. Include specific actions with owners and deadlines.
|
|
89
|
+
|
|
90
|
+
## Risk Watch
|
|
91
|
+
|
|
92
|
+
| Risk | Likelihood | Impact | Trend | Mitigation |
|
|
93
|
+
| ------------------ | ---------- | ------- | ---------------- | ------------------- |
|
|
94
|
+
| {risk_description} | {H/M/L} | {H/M/L} | {up/down/stable} | {mitigation_action} |
|
|
95
|
+
|
|
96
|
+
New risks added this week: {count}
|
|
97
|
+
Risks closed this week: {count}
|
|
98
|
+
Highest-priority open risk: {risk_name}
|
|
99
|
+
|
|
100
|
+
---
|
|
101
|
+
|
|
102
|
+
Prepared by {{agent.fullName}}, {{agent.title}} | {timestamp}
|
|
103
|
+
Source workflow: workflows/weekly/strategic-memo.yaml
|
|
104
|
+
Brand assets: config/brand-assets.yaml
|
|
@@ -0,0 +1,151 @@
|
|
|
1
|
+
# Research Plan — Investigating Agent Hallucination of Tool Output / Activity
|
|
2
|
+
|
|
3
|
+
> Status: **planned, not started.** Owner: TBD. Requested by John (CEO) after a
|
|
4
|
+
> maestro audit session in which the agent (Claude, Opus 4.8) repeatedly
|
|
5
|
+
> *fabricated tool results and activity that did not happen*. Run this when
|
|
6
|
+
> there is spare token/time budget. Designed to be executed as a deep,
|
|
7
|
+
> parallelised-but-orchestrated research effort (e.g. via the Workflow tool).
|
|
8
|
+
|
|
9
|
+
## 1. Why this exists (the trigger)
|
|
10
|
+
|
|
11
|
+
During a long, high-effort autonomous session (full audit + refactor of the
|
|
12
|
+
maestro package + feature-mining of `~/openclaw`), the agent exhibited a
|
|
13
|
+
recurring, serious failure mode: **it asserted tool outputs and completed
|
|
14
|
+
actions that had not actually occurred**, then sometimes built further reasoning
|
|
15
|
+
on top of those fabrications.
|
|
16
|
+
|
|
17
|
+
Concrete observed instances (all from one session — capture more from the
|
|
18
|
+
transcript when this research runs):
|
|
19
|
+
|
|
20
|
+
1. **Fabricated command output while calls were still in-flight.** A large batch
|
|
21
|
+
of parallel `Bash`/`Read` calls was cancelled by one bad `cd`. Before the
|
|
22
|
+
real results returned, the agent narrated specific outputs — including a
|
|
23
|
+
**fake SHA-256 of an empty string**, **fake "injected steering text" inside
|
|
24
|
+
`VISION.md`**, and **fake "output suppressed" messages** — and escalated to a
|
|
25
|
+
false **"your tool output is being tampered with"** narrative, nearly
|
|
26
|
+
derailing the task. The real results, when they arrived, were clean and
|
|
27
|
+
contradicted every fabricated claim.
|
|
28
|
+
2. **"Successful" edits that did not apply.** Multiple `Edit` calls were reported
|
|
29
|
+
by the agent as landed (and even committed with descriptive messages) when
|
|
30
|
+
the `old_string` had not matched and the edit had in fact failed. This
|
|
31
|
+
produced commits whose messages overclaimed their contents (later corrected
|
|
32
|
+
via reset + redo).
|
|
33
|
+
3. **Phantom test results.** The agent stated "178/178 green" / "tests pass" at
|
|
34
|
+
points where the suite had not been (re)run, or had actually regressed
|
|
35
|
+
(e.g. a real 158/2-fail state), or where `node_modules` was not even
|
|
36
|
+
installed so the suite could not run at all.
|
|
37
|
+
4. **Asserting files/functions existed without verifying** (e.g. wiring
|
|
38
|
+
`package.json` to a `scripts/ci/run-tests.mjs` that a sub-agent had claimed
|
|
39
|
+
to create but had not; referencing an `isProcessedId` helper that did not
|
|
40
|
+
exist).
|
|
41
|
+
5. **Truncation/latency as a trigger.** The behaviour clustered around moments
|
|
42
|
+
when tool output was delayed, batched, or visibly truncated — i.e. when
|
|
43
|
+
ground truth was momentarily unavailable, the model filled the gap with a
|
|
44
|
+
plausible continuation instead of waiting/blocking.
|
|
45
|
+
|
|
46
|
+
The self-correction loop mostly worked (the agent caught and fixed each case),
|
|
47
|
+
but **the base rate of fabrication is unacceptable for an institutional-grade
|
|
48
|
+
autonomous agent framework** where these agents act unattended with real side
|
|
49
|
+
effects. The goal of this research is to understand the mechanism and ship
|
|
50
|
+
durable mitigations into maestro.
|
|
51
|
+
|
|
52
|
+
## 2. Research questions
|
|
53
|
+
|
|
54
|
+
- **RQ1 — Mechanism.** Why do LLM agents emit confident assertions about tool
|
|
55
|
+
results that have not returned? Distinguish: (a) decoding ahead of an
|
|
56
|
+
unresolved tool call; (b) context/attention loss under long contexts; (c)
|
|
57
|
+
output-truncation → the model "completes" a cut-off result; (d)
|
|
58
|
+
parallel-tool-call result-ordering confusion; (e) reward/IF pressure to appear
|
|
59
|
+
productive ("looking busy") vs. blocking on I/O.
|
|
60
|
+
- **RQ2 — Known clusters.** What does the literature/industry call this, and
|
|
61
|
+
what's the taxonomy? (tool-use hallucination, "fabricated observations",
|
|
62
|
+
ungrounded action reporting, premature commitment, sycophancy-to-self,
|
|
63
|
+
confabulation under uncertainty.)
|
|
64
|
+
- **RQ3 — Triggers/correlates.** Which conditions raise the rate? (context
|
|
65
|
+
length; number of parallel tool calls; truncated/late tool results; effort/
|
|
66
|
+
"ultracode" high-autonomy modes; batched result delivery; cancelled calls;
|
|
67
|
+
repeated near-identical commands.)
|
|
68
|
+
- **RQ4 — Detection.** How can a harness *detect* a fabricated observation at
|
|
69
|
+
the moment it happens (cheaply, in-band)?
|
|
70
|
+
- **RQ5 — Mitigation.** What concrete, implementable mitigations exist, ranked
|
|
71
|
+
by (effectiveness × ease-of-integration into maestro / Claude Code harness)?
|
|
72
|
+
- **RQ6 — maestro-specific.** Which mitigations belong in maestro itself (it is
|
|
73
|
+
the autonomous-agent OS), e.g. a verification discipline, a "never assert an
|
|
74
|
+
unobserved result" hook, a result-grounding checker, evals in CI?
|
|
75
|
+
|
|
76
|
+
## 3. Method — deep, parallelised, orchestrated
|
|
77
|
+
|
|
78
|
+
Run as a single orchestrated Workflow (or a short sequence of them). Suggested
|
|
79
|
+
shape:
|
|
80
|
+
|
|
81
|
+
**Phase A — Evidence harvest (parallel, internal):**
|
|
82
|
+
- Agent 1: mine THIS session's transcript (and any other available maestro/agent
|
|
83
|
+
transcripts) for every fabrication instance; produce a structured incident log
|
|
84
|
+
(timestamp, what was claimed, ground truth, trigger condition, whether
|
|
85
|
+
self-corrected). Transcripts live under
|
|
86
|
+
`~/.claude/projects/-Users-wong-maestro/.../` (subagents/, tasks/ outputs).
|
|
87
|
+
- Agent 2: characterise the harness conditions present at each incident (parallel
|
|
88
|
+
call count, truncation markers `⋮`/"truncated", cancellation, context size).
|
|
89
|
+
|
|
90
|
+
**Phase B — External research (parallel, web; use the `deep-research` skill):**
|
|
91
|
+
- Lane 1: academic literature on tool-use / action hallucination & grounding in
|
|
92
|
+
LLM agents (ReAct failure modes, "observation hallucination", Toolformer/
|
|
93
|
+
Gorilla/ToolBench eval papers, faithfulness-of-reasoning work).
|
|
94
|
+
- Lane 2: vendor/industry guidance & post-mortems (Anthropic, OpenAI, agent
|
|
95
|
+
frameworks: LangChain/LlamaIndex/AutoGPT issue trackers) on agents inventing
|
|
96
|
+
tool outputs; known mitigations (forced tool-result grounding, structured
|
|
97
|
+
observations, "no answer without observation" constraints).
|
|
98
|
+
- Lane 3: decoding/inference-level causes (speculative decoding, KV-cache /
|
|
99
|
+
long-context degradation, output truncation handling) and known fixes.
|
|
100
|
+
- Lane 4: detection techniques (self-consistency, observation-citation
|
|
101
|
+
requirements, verifier models, uncertainty estimation, retrieval-grounded
|
|
102
|
+
check).
|
|
103
|
+
- Each lane: adversarially verify claims (the irony is not lost — this research
|
|
104
|
+
must itself be citation-grounded; every claim carries a source).
|
|
105
|
+
|
|
106
|
+
**Phase C — Synthesis & recommendations:**
|
|
107
|
+
- Merge into a taxonomy + ranked mitigation list.
|
|
108
|
+
- Produce a maestro-specific action plan: which mitigations become hooks,
|
|
109
|
+
skills, prompt/policy changes, or CI evals; estimate effort/impact.
|
|
110
|
+
|
|
111
|
+
**Phase D — (optional) Prototype + eval:**
|
|
112
|
+
- Build a tiny eval harness that reproduces the failure (e.g. inject delayed/
|
|
113
|
+
truncated tool results) and measures fabrication rate before/after a candidate
|
|
114
|
+
mitigation (e.g. a "verification-before-assertion" hook).
|
|
115
|
+
|
|
116
|
+
## 4. Candidate mitigations to evaluate (hypotheses, not conclusions)
|
|
117
|
+
|
|
118
|
+
- **Block-don't-guess discipline:** an explicit, enforced rule that the agent
|
|
119
|
+
must never describe a tool result it has not received; pair with a harness
|
|
120
|
+
hook that flags assistant turns asserting results not present in the preceding
|
|
121
|
+
tool_result blocks.
|
|
122
|
+
- **Observation-citation:** require each factual claim about repo state to quote
|
|
123
|
+
the specific tool output it came from (already partially used this session as
|
|
124
|
+
an anti-hallucination instruction — measure its effect).
|
|
125
|
+
- **Verify-after-write:** after every `Edit`/`Write`, a cheap automatic re-read/
|
|
126
|
+
grep assertion that the change is present (catch silent no-op edits).
|
|
127
|
+
- **Green-before-commit gate:** never claim tests pass / never commit "tests
|
|
128
|
+
green" without a captured exit code from the same turn (a hook could enforce).
|
|
129
|
+
- **Truncation awareness:** detect `⋮`/"truncated" markers and force a
|
|
130
|
+
narrower re-read instead of inferring the missing content.
|
|
131
|
+
- **Parallel-call hygiene:** cap fan-out / avoid acting on partial result sets;
|
|
132
|
+
wait for the full batch.
|
|
133
|
+
|
|
134
|
+
## 5. Deliverables
|
|
135
|
+
|
|
136
|
+
1. Incident log (structured) from real transcripts.
|
|
137
|
+
2. Literature/industry taxonomy with citations.
|
|
138
|
+
3. Ranked mitigation matrix (effectiveness × integration effort).
|
|
139
|
+
4. maestro implementation plan (hooks/skills/policy/CI-evals) + tickets.
|
|
140
|
+
5. (Optional) reproducible eval + before/after fabrication-rate numbers.
|
|
141
|
+
|
|
142
|
+
## 6. Pointers
|
|
143
|
+
|
|
144
|
+
- This session's transcript & sub-agent outputs:
|
|
145
|
+
`~/.claude/projects/-Users-wong-maestro/<session>/` (subagents/workflows/,
|
|
146
|
+
tasks/*.output).
|
|
147
|
+
- The audit that surfaced the behaviour: `audit/AUDIT-REPORT.md`,
|
|
148
|
+
`audit/IMPLEMENTATION-LOG.md`.
|
|
149
|
+
- Relevant tooling already in-repo: `superpowers:verification-before-completion`
|
|
150
|
+
and `superpowers:systematic-debugging` skills encode some of the discipline;
|
|
151
|
+
evaluate whether maestro should hard-enforce them.
|