@adaptic/maestro 1.0.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 +99 -0
- package/.claude/commands/init-maestro.md +565 -0
- package/.claude/settings.json +114 -0
- package/.env.example +152 -0
- package/README.md +491 -0
- package/agents/board-prep/agent.md +80 -0
- package/agents/browser-operator/agent.md +52 -0
- package/agents/calendar-ops/agent.md +50 -0
- package/agents/capital-raising/agent.md +69 -0
- package/agents/ceo-briefing/agent.md +72 -0
- package/agents/communications/agent.md +69 -0
- package/agents/competitive-intelligence/agent.md +49 -0
- package/agents/corporate-development/agent.md +66 -0
- package/agents/decision-log/agent.md +65 -0
- package/agents/desktop-operator/agent.md +59 -0
- package/agents/engineering-coordination/agent.md +51 -0
- package/agents/founder-voice/agent.md +72 -0
- package/agents/fund-ops/agent.md +52 -0
- package/agents/gmail-operator/agent.md +62 -0
- package/agents/hiring-org-design/agent.md +119 -0
- package/agents/inbound-dispatcher/agent.md +66 -0
- package/agents/legal-structuring/agent.md +65 -0
- package/agents/market-research/agent.md +48 -0
- package/agents/partnerships/agent.md +59 -0
- package/agents/platform-architecture/agent.md +57 -0
- package/agents/pmo-execution/agent.md +60 -0
- package/agents/product-strategy/agent.md +50 -0
- package/agents/regulatory-dfsa/agent.md +96 -0
- package/agents/risk-register/agent.md +62 -0
- package/agents/rollup-target-sourcing/agent.md +59 -0
- package/agents/session-spawner/agent.md +64 -0
- package/agents/slack-operator/agent.md +60 -0
- package/agents/sophie-chief-of-staff/agent.md +134 -0
- package/agents/strategic-planning/agent.md +54 -0
- package/agents/whatsapp-operator/agent.md +60 -0
- package/agents/workflow-automation/agent.md +61 -0
- package/bin/maestro.mjs +388 -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 +2222 -0
- package/docs/architecture/continuous-monitoring.md +221 -0
- package/docs/architecture/mcp-capability-map.md +560 -0
- package/docs/architecture/system-architecture.md +1273 -0
- package/docs/business-synthesis/ADAPTIC-GROUP-FINAL-OWNERSHIP-STRUCTURE.pdf +13667 -10
- package/docs/business-synthesis/adaptic-overview.md +296 -0
- package/docs/business-synthesis/executive-operating-model.md +261 -0
- package/docs/governance/action-approval-model.md +331 -0
- package/docs/governance/communications-policy.md +410 -0
- package/docs/governance/desktop-control-safety.md +499 -0
- package/docs/guides/agent-persona-setup.md +600 -0
- package/docs/operating-charter.md +87 -0
- package/docs/prompts/board-pack-cover-template.md +37 -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/runbooks/mac-mini-bootstrap.md +404 -0
- package/docs/runbooks/perpetual-operations.md +505 -0
- package/docs/runbooks/recovery-and-failover.md +588 -0
- package/docs/superpowers/plans/2026-04-02-phase0-operational-foundation.md +2550 -0
- package/docs/superpowers/plans/2026-04-03-phase1-executive-core.md +1085 -0
- package/docs/superpowers/plans/2026-04-03-phase2-people-product-commercial.md +739 -0
- package/docs/superpowers/plans/2026-04-05-information-barrier-implementation.md +926 -0
- package/docs/superpowers/plans/2026-04-06-session-context-dedup.md +1994 -0
- package/docs/superpowers/specs/2026-04-02-phase0-operational-foundation-design.md +842 -0
- package/docs/superpowers/specs/2026-04-03-phase1-executive-core-design.md +516 -0
- package/docs/superpowers/specs/2026-04-03-phase2-people-product-commercial-design.md +452 -0
- package/docs/superpowers/specs/2026-04-03-phase3-4-final-towers-design.md +129 -0
- package/docs/superpowers/specs/2026-04-05-information-barrier-design.md +678 -0
- package/docs/superpowers/specs/2026-04-05-reactive-daemon-design.md +237 -0
- package/docs/superpowers/specs/2026-04-06-session-context-dedup-design.md +369 -0
- package/docs/workflows/executive-cadence.md +218 -0
- package/ingest/README.md +87 -0
- package/mcp/README.md +51 -0
- package/package.json +48 -0
- package/plugins/maestro-skills/plugin.json +55 -0
- package/plugins/maestro-skills/skills/board-deck.md +68 -0
- package/plugins/maestro-skills/skills/decision-brief.md +89 -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/hiring-triage.md +74 -0
- package/plugins/maestro-skills/skills/inbox-triage.md +61 -0
- package/plugins/maestro-skills/skills/morning-brief.md +54 -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/schedule-meeting.md +91 -0
- package/plugins/maestro-skills/skills/slack-followup.md +64 -0
- package/plugins/maestro-skills/skills/weekly-memo.md +70 -0
- package/policies/action-classification.yaml +110 -0
- package/policies/information-barriers.yaml +119 -0
- package/policies/prompt-injection-defence.yaml +138 -0
- package/public/assets/adaptic-icon-dark.png +0 -0
- package/public/assets/adaptic-icon-dark.svg +4 -0
- package/public/assets/adaptic-icon-light.svg +4 -0
- package/public/assets/adaptic-logo-dark.svg +17 -0
- package/public/assets/adaptic-logo-light.svg +17 -0
- package/scaffold/CLAUDE.md +21 -0
- package/scaffold/config/agent.ts +69 -0
- package/scaffold/config/agent.ts.example +218 -0
- package/schedules/README.md +49 -0
- package/schedules/triggers/backlog-executor.md +102 -0
- package/schedules/triggers/daily-evening-wrap.md +142 -0
- package/schedules/triggers/daily-midday-sweep.md +58 -0
- package/schedules/triggers/daily-morning-brief.md +55 -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/quarterly-self-assessment.md +54 -0
- package/schedules/triggers/weekly-engineering-health.md +37 -0
- package/schedules/triggers/weekly-execution.md +67 -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/__pycache__/disclosure_assessment.cpython-313.pyc +0 -0
- package/scripts/__pycache__/disclosure_boundaries.cpython-313.pyc +0 -0
- package/scripts/__pycache__/email_quote_thread.cpython-313.pyc +0 -0
- package/scripts/__pycache__/email_thread_dedup.cpython-313.pyc +0 -0
- package/scripts/__pycache__/mehran-inbox-poller.cpython-313.pyc +0 -0
- package/scripts/__pycache__/outbound_dedup.cpython-313.pyc +0 -0
- package/scripts/__pycache__/pre-draft-context.cpython-313.pyc +0 -0
- package/scripts/__pycache__/pre_draft_lookup.cpython-313.pyc +0 -0
- package/scripts/__pycache__/send-email-as-mehran.cpython-313.pyc +0 -0
- package/scripts/__pycache__/send-email-threaded.cpython-313.pyc +0 -0
- package/scripts/__pycache__/send-email-with-attachment.cpython-313.pyc +0 -0
- package/scripts/__pycache__/validate_outbound.cpython-313.pyc +0 -0
- package/scripts/airtable-crm-populate.md +99 -0
- package/scripts/archive-email.sh +41 -0
- package/scripts/comms-monitor.sh +285 -0
- package/scripts/configure-whatsapp-sandbox.sh +201 -0
- package/scripts/continuous-monitor.sh +86 -0
- package/scripts/daemon/classifier.mjs +355 -0
- package/scripts/daemon/context-compiler.mjs +490 -0
- package/scripts/daemon/dispatcher.mjs +385 -0
- package/scripts/daemon/health.mjs +72 -0
- package/scripts/daemon/prompt-builder.mjs +426 -0
- package/scripts/daemon/responder.mjs +547 -0
- package/scripts/daemon/session-lock.mjs +520 -0
- package/scripts/daemon/sophie-daemon.mjs +521 -0
- package/scripts/daemon/test-context-compiler.mjs +238 -0
- package/scripts/daemon/test-integration.mjs +130 -0
- package/scripts/daemon/test-session-lock.mjs +215 -0
- package/scripts/disclosure_assessment.py +873 -0
- package/scripts/disclosure_boundaries.py +562 -0
- package/scripts/email-signature-mehran.html +52 -0
- package/scripts/email-signature.html +44 -0
- package/scripts/email_quote_thread.py +167 -0
- package/scripts/email_thread_dedup.py +361 -0
- package/scripts/emergency-stop.sh +41 -0
- package/scripts/healthcheck.sh +110 -0
- package/scripts/hooks/block-mcp-slack-send.sh +7 -0
- package/scripts/hooks/post-action-log.sh +17 -0
- package/scripts/hooks/pre-send-audit.sh +57 -0
- package/scripts/hooks/session-end-log.sh +27 -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 +1059 -0
- package/scripts/huddle/launch-slack.sh +232 -0
- package/scripts/huddle/node_modules/.package-lock.json +50 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/CHANGELOG.md +1677 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/LICENSE +8 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/README.md +674 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/_vendor/partial-json-parser/parser.d.mts +3 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/_vendor/partial-json-parser/parser.d.mts.map +1 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/_vendor/partial-json-parser/parser.d.ts +3 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/_vendor/partial-json-parser/parser.d.ts.map +1 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/_vendor/partial-json-parser/parser.js +226 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/_vendor/partial-json-parser/parser.js.map +1 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/_vendor/partial-json-parser/parser.mjs +223 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/_vendor/partial-json-parser/parser.mjs.map +1 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/api-promise.d.mts +2 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/api-promise.d.mts.map +1 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/api-promise.d.ts +2 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/api-promise.d.ts.map +1 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/api-promise.js +6 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/api-promise.js.map +1 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/api-promise.mjs +2 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/api-promise.mjs.map +1 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/bin/cli +53 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/bin/migration-config.json +7 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/client.d.mts +225 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/client.d.mts.map +1 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/client.d.ts +225 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/client.d.ts.map +1 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/client.js +536 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/client.js.map +1 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/client.mjs +531 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/client.mjs.map +1 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/core/api-promise.d.mts +49 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/core/api-promise.d.mts.map +1 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/core/api-promise.d.ts +49 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/core/api-promise.d.ts.map +1 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/core/api-promise.js +76 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/core/api-promise.js.map +1 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/core/api-promise.mjs +72 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/core/api-promise.mjs.map +1 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/core/error.d.mts +47 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/core/error.d.mts.map +1 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/core/error.d.ts +47 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/core/error.d.ts.map +1 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/core/error.js +114 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/core/error.js.map +1 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/core/error.mjs +98 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/core/error.mjs.map +1 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/core/pagination.d.mts +63 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/core/pagination.d.mts.map +1 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/core/pagination.d.ts +63 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/core/pagination.d.ts.map +1 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/core/pagination.js +123 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/core/pagination.js.map +1 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/core/pagination.mjs +117 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/core/pagination.mjs.map +1 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/core/resource.d.mts +6 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/core/resource.d.mts.map +1 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/core/resource.d.ts +6 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/core/resource.d.ts.map +1 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/core/resource.js +11 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/core/resource.js.map +1 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/core/resource.mjs +7 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/core/resource.mjs.map +1 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/core/streaming.d.mts +31 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/core/streaming.d.mts.map +1 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/core/streaming.d.ts +31 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/core/streaming.d.ts.map +1 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/core/streaming.js +282 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/core/streaming.js.map +1 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/core/streaming.mjs +277 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/core/streaming.mjs.map +1 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/core/uploads.d.mts +3 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/core/uploads.d.mts.map +1 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/core/uploads.d.ts +3 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/core/uploads.d.ts.map +1 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/core/uploads.js +6 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/core/uploads.js.map +1 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/core/uploads.mjs +2 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/core/uploads.mjs.map +1 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/error.d.mts +2 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/error.d.mts.map +1 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/error.d.ts +2 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/error.d.ts.map +1 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/error.js +6 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/error.js.map +1 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/error.mjs +2 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/error.mjs.map +1 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/index.d.mts +7 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/index.d.mts.map +1 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/index.d.ts +7 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/index.d.ts.map +1 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/index.js +35 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/index.js.map +1 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/index.mjs +8 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/index.mjs.map +1 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/internal/builtin-types.d.mts +73 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/internal/builtin-types.d.mts.map +1 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/internal/builtin-types.d.ts +73 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/internal/builtin-types.d.ts.map +1 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/internal/builtin-types.js +4 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/internal/builtin-types.js.map +1 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/internal/builtin-types.mjs +3 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/internal/builtin-types.mjs.map +1 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/internal/constants.d.mts +5 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/internal/constants.d.mts.map +1 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/internal/constants.d.ts +5 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/internal/constants.d.ts.map +1 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/internal/constants.js +15 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/internal/constants.js.map +1 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/internal/constants.mjs +12 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/internal/constants.mjs.map +1 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/internal/decoders/jsonl.d.mts +10 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/internal/decoders/jsonl.d.mts.map +1 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/internal/decoders/jsonl.d.ts +10 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/internal/decoders/jsonl.d.ts.map +1 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/internal/decoders/jsonl.js +39 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/internal/decoders/jsonl.js.map +1 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/internal/decoders/jsonl.mjs +35 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/internal/decoders/jsonl.mjs.map +1 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/internal/decoders/line.d.mts +17 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/internal/decoders/line.d.mts.map +1 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/internal/decoders/line.d.ts +17 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/internal/decoders/line.d.ts.map +1 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/internal/decoders/line.js +113 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/internal/decoders/line.js.map +1 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/internal/decoders/line.mjs +108 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/internal/decoders/line.mjs.map +1 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/internal/detect-platform.d.mts +15 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/internal/detect-platform.d.mts.map +1 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/internal/detect-platform.d.ts +15 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/internal/detect-platform.d.ts.map +1 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/internal/detect-platform.js +162 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/internal/detect-platform.js.map +1 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/internal/detect-platform.mjs +157 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/internal/detect-platform.mjs.map +1 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/internal/errors.d.mts +3 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/internal/errors.d.mts.map +1 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/internal/errors.d.ts +3 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/internal/errors.d.ts.map +1 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/internal/errors.js +41 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/internal/errors.js.map +1 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/internal/errors.mjs +36 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/internal/errors.mjs.map +1 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/internal/headers.d.mts +22 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/internal/headers.d.mts.map +1 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/internal/headers.d.ts +22 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/internal/headers.d.ts.map +1 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/internal/headers.js +79 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/internal/headers.js.map +1 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/internal/headers.mjs +74 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/internal/headers.mjs.map +1 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/internal/parse.d.mts +17 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/internal/parse.d.mts.map +1 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/internal/parse.d.ts +17 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/internal/parse.d.ts.map +1 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/internal/parse.js +55 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/internal/parse.js.map +1 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/internal/parse.mjs +51 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/internal/parse.mjs.map +1 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/internal/request-options.d.mts +34 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/internal/request-options.d.mts.map +1 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/internal/request-options.d.ts +34 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/internal/request-options.d.ts.map +1 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/internal/request-options.js +14 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/internal/request-options.js.map +1 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/internal/request-options.mjs +10 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/internal/request-options.mjs.map +1 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/internal/shim-types.d.mts +28 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/internal/shim-types.d.ts +28 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/internal/shims.d.mts +20 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/internal/shims.d.mts.map +1 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/internal/shims.d.ts +20 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/internal/shims.d.ts.map +1 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/internal/shims.js +92 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/internal/shims.js.map +1 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/internal/shims.mjs +85 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/internal/shims.mjs.map +1 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/internal/stream-utils.d.mts +8 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/internal/stream-utils.d.mts.map +1 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/internal/stream-utils.d.ts +8 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/internal/stream-utils.d.ts.map +1 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/internal/stream-utils.js +38 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/internal/stream-utils.js.map +1 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/internal/stream-utils.mjs +35 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/internal/stream-utils.mjs.map +1 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/internal/to-file.d.mts +45 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/internal/to-file.d.mts.map +1 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/internal/to-file.d.ts +45 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/internal/to-file.d.ts.map +1 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/internal/to-file.js +96 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/internal/to-file.js.map +1 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/internal/to-file.mjs +93 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/internal/to-file.mjs.map +1 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/internal/tslib.js +81 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/internal/tslib.mjs +17 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/internal/types.d.mts +67 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/internal/types.d.mts.map +1 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/internal/types.d.ts +67 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/internal/types.d.ts.map +1 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/internal/types.js +4 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/internal/types.js.map +1 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/internal/types.mjs +3 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/internal/types.mjs.map +1 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/internal/uploads.d.mts +42 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/internal/uploads.d.mts.map +1 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/internal/uploads.d.ts +42 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/internal/uploads.d.ts.map +1 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/internal/uploads.js +146 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/internal/uploads.js.map +1 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/internal/uploads.mjs +136 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/internal/uploads.mjs.map +1 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/internal/utils/base64.d.mts +3 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/internal/utils/base64.d.mts.map +1 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/internal/utils/base64.d.ts +3 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/internal/utils/base64.d.ts.map +1 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/internal/utils/base64.js +38 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/internal/utils/base64.js.map +1 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/internal/utils/base64.mjs +33 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/internal/utils/base64.mjs.map +1 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/internal/utils/bytes.d.mts +4 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/internal/utils/bytes.d.mts.map +1 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/internal/utils/bytes.d.ts +4 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/internal/utils/bytes.d.ts.map +1 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/internal/utils/bytes.js +31 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/internal/utils/bytes.js.map +1 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/internal/utils/bytes.mjs +26 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/internal/utils/bytes.mjs.map +1 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/internal/utils/env.d.mts +9 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/internal/utils/env.d.mts.map +1 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/internal/utils/env.d.ts +9 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/internal/utils/env.d.ts.map +1 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/internal/utils/env.js +22 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/internal/utils/env.js.map +1 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/internal/utils/env.mjs +18 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/internal/utils/env.mjs.map +1 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/internal/utils/log.d.mts +37 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/internal/utils/log.d.mts.map +1 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/internal/utils/log.d.ts +37 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/internal/utils/log.d.ts.map +1 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/internal/utils/log.js +86 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/internal/utils/log.js.map +1 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/internal/utils/log.mjs +80 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/internal/utils/log.mjs.map +1 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/internal/utils/path.d.mts +15 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/internal/utils/path.d.mts.map +1 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/internal/utils/path.d.ts +15 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/internal/utils/path.d.ts.map +1 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/internal/utils/path.js +58 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/internal/utils/path.js.map +1 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/internal/utils/path.mjs +53 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/internal/utils/path.mjs.map +1 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/internal/utils/sleep.d.mts +2 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/internal/utils/sleep.d.mts.map +1 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/internal/utils/sleep.d.ts +2 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/internal/utils/sleep.d.ts.map +1 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/internal/utils/sleep.js +7 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/internal/utils/sleep.js.map +1 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/internal/utils/sleep.mjs +3 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/internal/utils/sleep.mjs.map +1 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/internal/utils/uuid.d.mts +5 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/internal/utils/uuid.d.mts.map +1 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/internal/utils/uuid.d.ts +5 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/internal/utils/uuid.d.ts.map +1 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/internal/utils/uuid.js +19 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/internal/utils/uuid.js.map +1 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/internal/utils/uuid.mjs +15 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/internal/utils/uuid.mjs.map +1 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/internal/utils/values.d.mts +16 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/internal/utils/values.d.mts.map +1 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/internal/utils/values.d.ts +16 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/internal/utils/values.d.ts.map +1 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/internal/utils/values.js +109 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/internal/utils/values.js.map +1 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/internal/utils/values.mjs +92 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/internal/utils/values.mjs.map +1 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/internal/utils.d.mts +7 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/internal/utils.d.mts.map +1 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/internal/utils.d.ts +7 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/internal/utils.d.ts.map +1 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/internal/utils.js +11 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/internal/utils.js.map +1 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/internal/utils.mjs +8 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/internal/utils.mjs.map +1 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/lib/BetaMessageStream.d.mts +114 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/lib/BetaMessageStream.d.mts.map +1 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/lib/BetaMessageStream.d.ts +114 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/lib/BetaMessageStream.d.ts.map +1 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/lib/BetaMessageStream.js +553 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/lib/BetaMessageStream.js.map +1 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/lib/BetaMessageStream.mjs +549 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/lib/BetaMessageStream.mjs.map +1 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/lib/MessageStream.d.mts +114 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/lib/MessageStream.d.mts.map +1 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/lib/MessageStream.d.ts +114 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/lib/MessageStream.d.ts.map +1 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/lib/MessageStream.js +553 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/lib/MessageStream.js.map +1 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/lib/MessageStream.mjs +549 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/lib/MessageStream.mjs.map +1 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/package.json +185 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/pagination.d.mts +2 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/pagination.d.mts.map +1 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/pagination.d.ts +2 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/pagination.d.ts.map +1 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/pagination.js +6 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/pagination.js.map +1 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/pagination.mjs +2 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/pagination.mjs.map +1 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/resource.d.mts +2 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/resource.d.mts.map +1 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/resource.d.ts +2 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/resource.d.ts.map +1 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/resource.js +6 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/resource.js.map +1 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/resource.mjs +2 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/resource.mjs.map +1 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/resources/beta/beta.d.mts +61 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/resources/beta/beta.d.mts.map +1 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/resources/beta/beta.d.ts +61 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/resources/beta/beta.d.ts.map +1 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/resources/beta/beta.js +25 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/resources/beta/beta.js.map +1 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/resources/beta/beta.mjs +20 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/resources/beta/beta.mjs.map +1 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/resources/beta/files.d.mts +151 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/resources/beta/files.d.mts.map +1 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/resources/beta/files.d.ts +151 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/resources/beta/files.d.ts.map +1 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/resources/beta/files.js +122 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/resources/beta/files.js.map +1 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/resources/beta/files.mjs +118 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/resources/beta/files.mjs.map +1 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/resources/beta/index.d.mts +5 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/resources/beta/index.d.mts.map +1 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/resources/beta/index.d.ts +5 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/resources/beta/index.d.ts.map +1 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/resources/beta/index.js +13 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/resources/beta/index.js.map +1 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/resources/beta/index.mjs +6 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/resources/beta/index.mjs.map +1 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/resources/beta/messages/batches.d.mts +343 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/resources/beta/messages/batches.d.mts.map +1 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/resources/beta/messages/batches.d.ts +343 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/resources/beta/messages/batches.d.ts.map +1 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/resources/beta/messages/batches.js +204 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/resources/beta/messages/batches.js.map +1 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/resources/beta/messages/batches.mjs +200 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/resources/beta/messages/batches.mjs.map +1 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/resources/beta/messages/index.d.mts +3 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/resources/beta/messages/index.d.mts.map +1 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/resources/beta/messages/index.d.ts +3 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/resources/beta/messages/index.d.ts.map +1 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/resources/beta/messages/index.js +9 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/resources/beta/messages/index.js.map +1 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/resources/beta/messages/index.mjs +4 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/resources/beta/messages/index.mjs.map +1 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/resources/beta/messages/messages.d.mts +1561 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/resources/beta/messages/messages.d.mts.map +1 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/resources/beta/messages/messages.d.ts +1561 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/resources/beta/messages/messages.d.ts.map +1 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/resources/beta/messages/messages.js +86 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/resources/beta/messages/messages.js.map +1 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/resources/beta/messages/messages.mjs +81 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/resources/beta/messages/messages.mjs.map +1 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/resources/beta/messages.d.mts +2 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/resources/beta/messages.d.mts.map +1 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/resources/beta/messages.d.ts +2 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/resources/beta/messages.d.ts.map +1 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/resources/beta/messages.js +6 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/resources/beta/messages.js.map +1 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/resources/beta/messages.mjs +3 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/resources/beta/messages.mjs.map +1 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/resources/beta/models.d.mts +74 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/resources/beta/models.d.mts.map +1 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/resources/beta/models.d.ts +74 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/resources/beta/models.d.ts.map +1 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/resources/beta/models.js +60 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/resources/beta/models.js.map +1 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/resources/beta/models.mjs +56 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/resources/beta/models.mjs.map +1 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/resources/beta.d.mts +2 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/resources/beta.d.mts.map +1 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/resources/beta.d.ts +2 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/resources/beta.d.ts.map +1 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/resources/beta.js +6 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/resources/beta.js.map +1 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/resources/beta.mjs +3 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/resources/beta.mjs.map +1 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/resources/completions.d.mts +183 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/resources/completions.d.mts.map +1 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/resources/completions.d.ts +183 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/resources/completions.d.ts.map +1 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/resources/completions.js +23 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/resources/completions.js.map +1 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/resources/completions.mjs +19 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/resources/completions.mjs.map +1 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/resources/index.d.mts +6 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/resources/index.d.mts.map +1 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/resources/index.d.ts +6 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/resources/index.d.ts.map +1 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/resources/index.js +15 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/resources/index.js.map +1 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/resources/index.mjs +7 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/resources/index.mjs.map +1 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/resources/messages/batches.d.mts +304 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/resources/messages/batches.d.mts.map +1 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/resources/messages/batches.d.ts +304 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/resources/messages/batches.d.ts.map +1 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/resources/messages/batches.js +153 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/resources/messages/batches.js.map +1 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/resources/messages/batches.mjs +149 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/resources/messages/batches.mjs.map +1 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/resources/messages/index.d.mts +3 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/resources/messages/index.d.mts.map +1 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/resources/messages/index.d.ts +3 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/resources/messages/index.d.ts.map +1 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/resources/messages/index.js +9 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/resources/messages/index.js.map +1 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/resources/messages/index.mjs +4 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/resources/messages/index.mjs.map +1 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/resources/messages/messages.d.mts +1264 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/resources/messages/messages.d.mts.map +1 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/resources/messages/messages.d.ts +1264 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/resources/messages/messages.d.ts.map +1 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/resources/messages/messages.js +72 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/resources/messages/messages.js.map +1 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/resources/messages/messages.mjs +67 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/resources/messages/messages.mjs.map +1 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/resources/messages.d.mts +2 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/resources/messages.d.mts.map +1 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/resources/messages.d.ts +2 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/resources/messages.d.ts.map +1 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/resources/messages.js +6 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/resources/messages.js.map +1 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/resources/messages.mjs +3 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/resources/messages.mjs.map +1 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/resources/models.d.mts +59 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/resources/models.d.mts.map +1 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/resources/models.d.ts +59 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/resources/models.d.ts.map +1 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/resources/models.js +45 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/resources/models.js.map +1 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/resources/models.mjs +41 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/resources/models.mjs.map +1 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/resources/shared.d.mts +42 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/resources/shared.d.mts.map +1 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/resources/shared.d.ts +42 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/resources/shared.d.ts.map +1 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/resources/shared.js +4 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/resources/shared.js.map +1 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/resources/shared.mjs +3 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/resources/shared.mjs.map +1 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/resources/top-level.d.mts +2 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/resources/top-level.d.mts.map +1 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/resources/top-level.d.ts +2 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/resources/top-level.d.ts.map +1 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/resources/top-level.js +4 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/resources/top-level.js.map +1 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/resources/top-level.mjs +3 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/resources/top-level.mjs.map +1 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/resources.d.mts +2 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/resources.d.mts.map +1 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/resources.d.ts +2 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/resources.d.ts.map +1 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/resources.js +5 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/resources.js.map +1 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/resources.mjs +2 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/resources.mjs.map +1 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/src/_vendor/partial-json-parser/README.md +3 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/src/_vendor/partial-json-parser/parser.ts +264 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/src/api-promise.ts +2 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/src/client.ts +1070 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/src/core/README.md +3 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/src/core/api-promise.ts +101 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/src/core/error.ts +133 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/src/core/pagination.ts +201 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/src/core/resource.ts +11 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/src/core/streaming.ts +331 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/src/core/uploads.ts +2 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/src/error.ts +2 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/src/index.ts +23 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/src/internal/README.md +3 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/src/internal/builtin-types.ts +93 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/src/internal/constants.ts +12 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/src/internal/decoders/jsonl.ts +48 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/src/internal/decoders/line.ts +135 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/src/internal/detect-platform.ts +196 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/src/internal/errors.ts +33 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/src/internal/headers.ts +99 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/src/internal/parse.ts +84 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/src/internal/request-options.ts +39 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/src/internal/shim-types.d.ts +28 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/src/internal/shims.ts +107 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/src/internal/stream-utils.ts +32 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/src/internal/to-file.ts +159 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/src/internal/types.ts +92 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/src/internal/uploads.ts +193 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/src/internal/utils/base64.ts +40 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/src/internal/utils/bytes.ts +32 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/src/internal/utils/env.ts +18 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/src/internal/utils/log.ts +127 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/src/internal/utils/path.ts +65 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/src/internal/utils/sleep.ts +3 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/src/internal/utils/uuid.ts +17 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/src/internal/utils/values.ts +102 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/src/internal/utils.ts +8 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/src/lib/.keep +4 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/src/lib/BetaMessageStream.ts +683 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/src/lib/MessageStream.ts +684 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/src/pagination.ts +2 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/src/resource.ts +2 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/src/resources/beta/beta.ts +380 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/src/resources/beta/files.ts +258 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/src/resources/beta/index.ts +148 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/src/resources/beta/messages/batches.ts +502 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/src/resources/beta/messages/index.ts +135 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/src/resources/beta/messages/messages.ts +2249 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/src/resources/beta/messages.ts +3 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/src/resources/beta/models.ts +118 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/src/resources/beta.ts +3 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/src/resources/completions.ts +231 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/src/resources/index.ts +121 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/src/resources/messages/batches.ts +396 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/src/resources/messages/index.ts +110 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/src/resources/messages/messages.ts +1783 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/src/resources/messages.ts +3 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/src/resources/models.ts +103 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/src/resources/shared.ts +72 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/src/resources/top-level.ts +3 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/src/resources.ts +1 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/src/streaming.ts +2 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/src/tsconfig.json +11 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/src/uploads.ts +2 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/src/version.ts +1 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/streaming.d.mts +2 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/streaming.d.mts.map +1 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/streaming.d.ts +2 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/streaming.d.ts.map +1 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/streaming.js +6 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/streaming.js.map +1 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/streaming.mjs +2 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/streaming.mjs.map +1 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/uploads.d.mts +2 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/uploads.d.mts.map +1 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/uploads.d.ts +2 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/uploads.d.ts.map +1 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/uploads.js +6 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/uploads.js.map +1 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/uploads.mjs +2 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/uploads.mjs.map +1 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/version.d.mts +2 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/version.d.mts.map +1 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/version.d.ts +2 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/version.d.ts.map +1 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/version.js +5 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/version.js.map +1 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/version.mjs +2 -0
- package/scripts/huddle/node_modules/@anthropic-ai/sdk/version.mjs.map +1 -0
- package/scripts/huddle/node_modules/dotenv/CHANGELOG.md +520 -0
- package/scripts/huddle/node_modules/dotenv/LICENSE +23 -0
- package/scripts/huddle/node_modules/dotenv/README-es.md +411 -0
- package/scripts/huddle/node_modules/dotenv/README.md +645 -0
- package/scripts/huddle/node_modules/dotenv/SECURITY.md +1 -0
- package/scripts/huddle/node_modules/dotenv/config.d.ts +1 -0
- package/scripts/huddle/node_modules/dotenv/config.js +9 -0
- package/scripts/huddle/node_modules/dotenv/lib/cli-options.js +17 -0
- package/scripts/huddle/node_modules/dotenv/lib/env-options.js +28 -0
- package/scripts/huddle/node_modules/dotenv/lib/main.d.ts +162 -0
- package/scripts/huddle/node_modules/dotenv/lib/main.js +386 -0
- package/scripts/huddle/node_modules/dotenv/package.json +62 -0
- package/scripts/huddle/node_modules/ws/LICENSE +20 -0
- package/scripts/huddle/node_modules/ws/README.md +548 -0
- package/scripts/huddle/node_modules/ws/browser.js +8 -0
- package/scripts/huddle/node_modules/ws/index.js +22 -0
- package/scripts/huddle/node_modules/ws/lib/buffer-util.js +131 -0
- package/scripts/huddle/node_modules/ws/lib/constants.js +19 -0
- package/scripts/huddle/node_modules/ws/lib/event-target.js +292 -0
- package/scripts/huddle/node_modules/ws/lib/extension.js +203 -0
- package/scripts/huddle/node_modules/ws/lib/limiter.js +55 -0
- package/scripts/huddle/node_modules/ws/lib/permessage-deflate.js +528 -0
- package/scripts/huddle/node_modules/ws/lib/receiver.js +706 -0
- package/scripts/huddle/node_modules/ws/lib/sender.js +602 -0
- package/scripts/huddle/node_modules/ws/lib/stream.js +161 -0
- package/scripts/huddle/node_modules/ws/lib/subprotocol.js +62 -0
- package/scripts/huddle/node_modules/ws/lib/validation.js +152 -0
- package/scripts/huddle/node_modules/ws/lib/websocket-server.js +554 -0
- package/scripts/huddle/node_modules/ws/lib/websocket.js +1393 -0
- package/scripts/huddle/node_modules/ws/package.json +70 -0
- package/scripts/huddle/node_modules/ws/wrapper.mjs +21 -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/llm_email_dedup.py +434 -0
- package/scripts/local-triggers/install-all.sh +43 -0
- package/scripts/local-triggers/plists/ai.adaptic.slack-events-server.plist +45 -0
- package/scripts/local-triggers/plists/ai.adaptic.sophie-backlog-executor.plist +21 -0
- package/scripts/local-triggers/plists/ai.adaptic.sophie-daemon.plist +32 -0
- package/scripts/local-triggers/plists/ai.adaptic.sophie-inbox-processor.plist +21 -0
- package/scripts/local-triggers/plists/ai.adaptic.sophie-meeting-action-capture.plist +21 -0
- package/scripts/local-triggers/plists/ai.adaptic.sophie-meeting-prep.plist +21 -0
- package/scripts/local-triggers/plists/ai.adaptic.sophie-midday-sweep.plist +26 -0
- package/scripts/local-triggers/plists/ai.adaptic.sophie-quarterly-self-assessment.plist +62 -0
- package/scripts/local-triggers/plists/ai.adaptic.sophie-weekly-engineering-health.plist +28 -0
- package/scripts/local-triggers/plists/ai.adaptic.sophie-weekly-execution.plist +28 -0
- package/scripts/local-triggers/plists/ai.adaptic.sophie-weekly-hiring.plist +28 -0
- package/scripts/local-triggers/plists/ai.adaptic.sophie-weekly-priorities.plist +28 -0
- package/scripts/local-triggers/plists/ai.adaptic.sophie-weekly-strategic-memo.plist +28 -0
- package/scripts/local-triggers/run-trigger.sh +44 -0
- package/scripts/media-generation/README.md +103 -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/mehran-inbox-poller.py +437 -0
- package/scripts/outbound-dedup-cleanup.sh +43 -0
- package/scripts/outbound-dedup.sh +476 -0
- package/scripts/outbound_dedup.py +115 -0
- package/scripts/parse-voice-transcript.mjs +486 -0
- package/scripts/pdf-generation/README.md +61 -0
- package/scripts/pdf-generation/build-document.mjs +230 -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 +33 -0
- package/scripts/poller/calendar-poller.mjs +12 -0
- package/scripts/poller/gmail-poller.mjs +156 -0
- package/scripts/poller/imap-client.mjs +286 -0
- package/scripts/poller/index.mjs +73 -0
- package/scripts/poller/intra-session-check.mjs +267 -0
- package/scripts/poller/mehran-gmail-poller.mjs +98 -0
- package/scripts/poller/slack-poller.mjs +716 -0
- package/scripts/poller/trigger.mjs +47 -0
- package/scripts/poller/utils.mjs +253 -0
- package/scripts/poller-launchd/ai.adaptic.sophie-poller.plist +40 -0
- package/scripts/poller-launchd/ai.adaptic.sophie-whatsapp-handler.plist +39 -0
- package/scripts/poller-launchd/install.sh +38 -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-indexer.py +629 -0
- package/scripts/resume-operations.sh +40 -0
- package/scripts/search-mehran-inbox.py +181 -0
- package/scripts/self-optimization/compute-metrics.py +377 -0
- package/scripts/send-difc-rfp.sh +98 -0
- package/scripts/send-email-as-mehran.py +369 -0
- package/scripts/send-email-threaded.py +336 -0
- package/scripts/send-email-with-attachment.py +360 -0
- package/scripts/send-email.sh +93 -0
- package/scripts/send-sms.sh +151 -0
- package/scripts/send-whatsapp.sh +261 -0
- package/scripts/session-start.sh +106 -0
- package/scripts/setup/configure-macos.sh +508 -0
- package/scripts/setup/init-agent.sh +450 -0
- package/scripts/slack-events-ctl.sh +177 -0
- package/scripts/slack-events-server.mjs +989 -0
- package/scripts/slack-react.mjs +89 -0
- package/scripts/slack-responded.sh +185 -0
- package/scripts/slack-send.sh +190 -0
- package/scripts/slack-typing.mjs +196 -0
- package/scripts/slack-upload-v2.py +95 -0
- package/scripts/sms-handler.mjs +436 -0
- package/scripts/sophie-inbox-poller.py +406 -0
- package/scripts/spawn-session.sh +85 -0
- package/scripts/system-verify.sh +171 -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 +660 -0
- package/scripts/validate-outbound.py +1493 -0
- package/scripts/whatsapp-handler.mjs +525 -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/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 +65 -0
- package/workflows/daily/morning-brief.yaml +147 -0
- package/workflows/daily/slack-followup-sweep.yaml +87 -0
- package/workflows/event-driven/README.md +50 -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/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,678 @@
|
|
|
1
|
+
# Information Barrier & Disclosure Control System
|
|
2
|
+
|
|
3
|
+
**Date:** 2026-04-05
|
|
4
|
+
**Status:** Approved design — pending implementation
|
|
5
|
+
**Triggered by:** Incident where confidential JVA/Seed SAFE review content from a Mehran + Nima meeting was included in a Slack message to Shayan Kargarian (counterparty on JVA, interested party on Seed SAFE)
|
|
6
|
+
**Scope:** All outbound communications, all recipients, all channels
|
|
7
|
+
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
## Problem Statement
|
|
11
|
+
|
|
12
|
+
Sophie operates with full context — meetings, conversations, legal discussions, financial details, board deliberations — all in a single shared memory pool. When composing outbound messages, there is no mechanism to prevent information from one context bleeding into communications with recipients who should not have access to it.
|
|
13
|
+
|
|
14
|
+
The existing pre-send validation pipeline catches factual errors (relationship claims, AI disclosure, in-person scheduling) but does not assess **whether the recipient should see the information being shared**.
|
|
15
|
+
|
|
16
|
+
This is the equivalent of an institutional Chinese wall / information barrier failure. In a regulated firm, this would be a compliance breach.
|
|
17
|
+
|
|
18
|
+
## Design Principles
|
|
19
|
+
|
|
20
|
+
1. **Universal application** — Every outbound message, every recipient, every channel. Internal and external. No exceptions.
|
|
21
|
+
2. **Dynamic assessment** — No static ring/matrix lookup. Sophie assesses disclosure appropriateness at send-time using recipient profiles, information provenance, and contextual judgment.
|
|
22
|
+
3. **Defense in depth** — Two layers: pre-draft guidance (shapes what Sophie considers) + post-draft assessment (catches what slips through).
|
|
23
|
+
4. **Severity-based response** — Sophie distinguishes between critical leaks (block and escalate) and minor oversharing (strip and log). She uses judgment, not a single response for all cases.
|
|
24
|
+
5. **Audit everything** — Every assessment logged, whether the message passed, was stripped, or was blocked.
|
|
25
|
+
6. **Fail-closed on high severity** — If assessment confidence is low on a potentially critical disclosure, default to block and escalate rather than allow.
|
|
26
|
+
|
|
27
|
+
---
|
|
28
|
+
|
|
29
|
+
## Architecture Overview
|
|
30
|
+
|
|
31
|
+
```
|
|
32
|
+
[Sophie composes message]
|
|
33
|
+
|
|
|
34
|
+
v
|
|
35
|
+
[Pre-Draft Boundary Guidance] ← Layer 1 (soft)
|
|
36
|
+
- Loads recipient profile + information_boundaries
|
|
37
|
+
- Surfaces active conflicts, excluded domains
|
|
38
|
+
- Warns about recent sensitive context the recipient shouldn't see
|
|
39
|
+
- Shapes Sophie's drafting — prevents leaks at the source
|
|
40
|
+
|
|
|
41
|
+
v
|
|
42
|
+
[Sophie drafts message]
|
|
43
|
+
|
|
|
44
|
+
v
|
|
45
|
+
[Post-Draft Disclosure Assessment] ← Layer 2 (hard)
|
|
46
|
+
- Extracts substantive references from draft
|
|
47
|
+
- Traces provenance for each reference
|
|
48
|
+
- Assesses against recipient boundaries
|
|
49
|
+
- Classifies severity per reference
|
|
50
|
+
- Action: PASS / STRIP / BLOCK
|
|
51
|
+
|
|
|
52
|
+
v
|
|
53
|
+
[Existing Validation Rules] ← Rules 1-5 still apply
|
|
54
|
+
- Relationship claims, title accuracy, AI disclosure,
|
|
55
|
+
in-person scheduling, unverified commitments
|
|
56
|
+
|
|
|
57
|
+
v
|
|
58
|
+
[Dispatch or Hold]
|
|
59
|
+
|
|
|
60
|
+
v
|
|
61
|
+
[Audit Log]
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
---
|
|
65
|
+
|
|
66
|
+
## Component 1: Information Provenance (Ingestion Layer)
|
|
67
|
+
|
|
68
|
+
### Purpose
|
|
69
|
+
|
|
70
|
+
Every time Sophie ingests information — meeting notes, conversations, documents, emails, queue items — provenance metadata is recorded. This is the foundation the disclosure assessment draws on to determine where Sophie learned something and who was involved.
|
|
71
|
+
|
|
72
|
+
### Provenance Record Structure
|
|
73
|
+
|
|
74
|
+
Stored as metadata alongside the information in interactions, queue items, and memory:
|
|
75
|
+
|
|
76
|
+
```yaml
|
|
77
|
+
provenance:
|
|
78
|
+
source_type: meeting | conversation | document | email | internal_analysis
|
|
79
|
+
source_id: "meeting-2026-04-04-jva-review"
|
|
80
|
+
participants: [mehran-granfar, nima-masroori]
|
|
81
|
+
originator: nima-masroori
|
|
82
|
+
context_domain: adaptic-internal-legal
|
|
83
|
+
matter: "jva-review-adaptic-group-investments"
|
|
84
|
+
sensitivity_signals:
|
|
85
|
+
- legal_privilege
|
|
86
|
+
- negotiation_position
|
|
87
|
+
- financial_terms
|
|
88
|
+
- personal_data
|
|
89
|
+
- regulatory_strategy
|
|
90
|
+
- board_deliberation
|
|
91
|
+
timestamp: "2026-04-04T05:00:00Z"
|
|
92
|
+
classification_confidence: high | medium | low
|
|
93
|
+
```
|
|
94
|
+
|
|
95
|
+
### Field Definitions
|
|
96
|
+
|
|
97
|
+
| Field | Description |
|
|
98
|
+
|-------|-------------|
|
|
99
|
+
| `source_type` | How Sophie received this information |
|
|
100
|
+
| `source_id` | Unique identifier for the source event, traceable in logs |
|
|
101
|
+
| `participants` | People who were present or party to the source (slug format) |
|
|
102
|
+
| `originator` | The person who provided or originated the information |
|
|
103
|
+
| `context_domain` | Broad domain category (see Domain Taxonomy below) |
|
|
104
|
+
| `matter` | Specific matter identifier — links to queue items, meeting IDs, project names |
|
|
105
|
+
| `sensitivity_signals` | Machine-detectable markers indicating the nature of the information |
|
|
106
|
+
| `timestamp` | When the information was ingested |
|
|
107
|
+
| `classification_confidence` | How confident the automated tagging is. Low confidence triggers conservative treatment |
|
|
108
|
+
|
|
109
|
+
### Sensitivity Signals
|
|
110
|
+
|
|
111
|
+
| Signal | Description | Examples |
|
|
112
|
+
|--------|-------------|----------|
|
|
113
|
+
| `legal_privilege` | Legal advice, attorney-client communications, GC strategy | Nima's advice on JVA terms, litigation strategy |
|
|
114
|
+
| `negotiation_position` | Positional information on active negotiations | Adaptic's target price on an acquisition, JVA term preferences |
|
|
115
|
+
| `financial_terms` | Pricing, valuations, cap table, runway, compensation | Seed SAFE terms, employee offer amounts, fundraising targets |
|
|
116
|
+
| `personal_data` | Individual compensation, health, performance reviews | Candidate screening scores, salary details |
|
|
117
|
+
| `regulatory_strategy` | Internal approach to regulators, gap assessments | DFSA remediation strategy, how to position on compliance gaps |
|
|
118
|
+
| `board_deliberation` | Board-level discussions, resolutions in draft, governance decisions | Draft board resolutions, director appointment deliberations |
|
|
119
|
+
| `competitive_intelligence` | M&A pipeline, competitive positioning, market strategy | Project Aether targets, competitive analysis |
|
|
120
|
+
| `internal_operations` | Internal process, tooling, workflow details | Sophie's own infrastructure, internal team dynamics |
|
|
121
|
+
|
|
122
|
+
### Ingestion Points
|
|
123
|
+
|
|
124
|
+
Provenance is tagged at these integration points:
|
|
125
|
+
|
|
126
|
+
| Ingestion Point | Script / Workflow | What Gets Tagged |
|
|
127
|
+
|-----------------|-------------------|------------------|
|
|
128
|
+
| Meeting action capture | `workflows/daily/meeting-action-capture.yaml` | Meeting notes with participants, agenda items, extracted actions |
|
|
129
|
+
| Inbox processor | `scripts/daemon/dispatcher.mjs` | Inbound emails and Slack messages with sender, topic, detected sensitivity |
|
|
130
|
+
| Post-interaction indexer | `scripts/post-interaction-indexer.py` | Conversation summaries with participants and context |
|
|
131
|
+
| Queue item creation | Any workflow that writes to `state/queues/` | Action items with originating context and matter |
|
|
132
|
+
| Document ingestion | Manual or workflow-triggered | Documents with author, matter, privilege markers |
|
|
133
|
+
|
|
134
|
+
### Storage
|
|
135
|
+
|
|
136
|
+
Provenance metadata is stored:
|
|
137
|
+
|
|
138
|
+
1. **Inline with interactions** — `memory/interactions/{service}/{channel}/{date}.jsonl` entries include a `provenance` field
|
|
139
|
+
2. **Inline with queue items** — Queue items in `state/queues/*.yaml` include provenance on creation
|
|
140
|
+
3. **Provenance index** — `memory/provenance/index.jsonl` is a searchable index of all provenance records, enabling fast lookup by matter, participant, or source_id
|
|
141
|
+
|
|
142
|
+
### Provenance Index Schema
|
|
143
|
+
|
|
144
|
+
Each line in `memory/provenance/index.jsonl`:
|
|
145
|
+
|
|
146
|
+
```json
|
|
147
|
+
{
|
|
148
|
+
"source_id": "meeting-2026-04-04-jva-review",
|
|
149
|
+
"source_type": "meeting",
|
|
150
|
+
"participants": ["mehran-granfar", "nima-masroori"],
|
|
151
|
+
"originator": "nima-masroori",
|
|
152
|
+
"context_domain": "adaptic-internal-legal",
|
|
153
|
+
"matter": "jva-review-adaptic-group-investments",
|
|
154
|
+
"sensitivity_signals": ["legal_privilege", "negotiation_position"],
|
|
155
|
+
"timestamp": "2026-04-04T05:00:00Z",
|
|
156
|
+
"classification_confidence": "high",
|
|
157
|
+
"interaction_ref": "memory/interactions/slack/ceo-office/2026-04-04.jsonl:42"
|
|
158
|
+
}
|
|
159
|
+
```
|
|
160
|
+
|
|
161
|
+
The `interaction_ref` field points back to the full content, enabling provenance tracing without duplicating message bodies in the index.
|
|
162
|
+
|
|
163
|
+
---
|
|
164
|
+
|
|
165
|
+
## Component 2: Recipient Boundary Profiles (RBAC Layer)
|
|
166
|
+
|
|
167
|
+
### Purpose
|
|
168
|
+
|
|
169
|
+
Every user profile in `memory/profiles/users/` is enhanced with information boundary attributes. These are not static permission lists — they are the inputs Sophie uses for dynamic disclosure assessment. They describe the person's legitimate scope of interest, explicit exclusions, active conflicts, and matter involvement.
|
|
170
|
+
|
|
171
|
+
### New Profile Fields
|
|
172
|
+
|
|
173
|
+
Added under an `information_boundaries` key in each user profile:
|
|
174
|
+
|
|
175
|
+
```yaml
|
|
176
|
+
information_boundaries:
|
|
177
|
+
domains_of_interest:
|
|
178
|
+
- ftlab-operations
|
|
179
|
+
- ftlab-commercial
|
|
180
|
+
|
|
181
|
+
excluded_domains:
|
|
182
|
+
- adaptic-internal-legal
|
|
183
|
+
- adaptic-financial
|
|
184
|
+
- adaptic-hr
|
|
185
|
+
- regulatory-strategy
|
|
186
|
+
- rollup-strategy
|
|
187
|
+
|
|
188
|
+
party_to_matters:
|
|
189
|
+
- ftlab-jva
|
|
190
|
+
- ftlab-operations
|
|
191
|
+
|
|
192
|
+
conflicts:
|
|
193
|
+
- matter: jva-review-adaptic-group-investments
|
|
194
|
+
nature: "Counterparty — Adaptic's JV negotiation position is adverse to Shayan's interests"
|
|
195
|
+
- matter: seed-safe-review
|
|
196
|
+
nature: "Investor — terms under review affect his investment"
|
|
197
|
+
|
|
198
|
+
information_shared_with:
|
|
199
|
+
- mehran-granfar
|
|
200
|
+
- sophie
|
|
201
|
+
```
|
|
202
|
+
|
|
203
|
+
### Field Definitions
|
|
204
|
+
|
|
205
|
+
| Field | Description | Usage |
|
|
206
|
+
|-------|-------------|-------|
|
|
207
|
+
| `domains_of_interest` | Domains where this person has legitimate need-to-know | Strong positive signal — information in these domains is generally safe to share |
|
|
208
|
+
| `excluded_domains` | Domains explicitly out of scope for this person | Strong negative signal — references to these domains should be assessed carefully |
|
|
209
|
+
| `party_to_matters` | Specific matters this person is directly involved in | Person can see operational facts about these matters, but NOT the other side's strategy if they are a counterparty |
|
|
210
|
+
| `conflicts` | Active conflicts of interest with matter identifier and nature description | Sharpest signal — any information touching a conflicted matter requires extreme caution |
|
|
211
|
+
| `information_shared_with` | Who can receive information that originated from or about this person | Reverse-direction protection — controls sharing OF information about this person, not just TO them |
|
|
212
|
+
|
|
213
|
+
### Key Design Rules
|
|
214
|
+
|
|
215
|
+
1. **Sophie always has full access.** She needs complete context to operate. Boundaries govern what she shares outward, not what she knows.
|
|
216
|
+
2. **Mehran (CEO) has full access.** No information is withheld from the CEO in outbound communications.
|
|
217
|
+
3. **`domains_of_interest` and `excluded_domains` are guidance, not hard rules.** Sophie uses them as strong signals during assessment but can reason about edge cases where a reference is genuinely necessary.
|
|
218
|
+
4. **`conflicts` is the sharpest signal.** If a conflict exists, Sophie should be extremely cautious about any information touching that matter. The `nature` field explains why, enabling Sophie to judge severity.
|
|
219
|
+
5. **Every person gets a profile** — internal and external. Hootan doesn't need to see HR screening notes for candidates he's not involved with. Nima doesn't need engineering sprint details. The system is universal.
|
|
220
|
+
6. **Profiles evolve.** As relationships change, matters open and close, conflicts arise and resolve — profiles are updated. The post-interaction indexer and evening wrap workflows maintain freshness.
|
|
221
|
+
|
|
222
|
+
### Domain Taxonomy
|
|
223
|
+
|
|
224
|
+
Used in `context_domain` (provenance) and `domains_of_interest` / `excluded_domains` (profiles):
|
|
225
|
+
|
|
226
|
+
| Domain | Description |
|
|
227
|
+
|--------|-------------|
|
|
228
|
+
| `adaptic-internal-legal` | Adaptic's own legal strategy, GC advice, privilege-protected |
|
|
229
|
+
| `adaptic-financial` | Cap table, runway, fundraising, financial planning |
|
|
230
|
+
| `adaptic-hr` | Hiring, compensation, performance, org structure decisions |
|
|
231
|
+
| `adaptic-operations` | Internal ops, processes, tooling |
|
|
232
|
+
| `regulatory-strategy` | Approach to regulators, gap assessments, remediation |
|
|
233
|
+
| `rollup-strategy` | Project Aether M&A targets, deal terms, pipeline |
|
|
234
|
+
| `board-governance` | Board materials, resolutions, governance |
|
|
235
|
+
| `ftlab-operations` | FTLab JV operational matters (shared domain) |
|
|
236
|
+
| `ftlab-commercial` | FTLab commercial / revenue matters (shared domain) |
|
|
237
|
+
| `ftlab-internal` | Adaptic-side-only FTLab matters (negotiation position, internal JV strategy) |
|
|
238
|
+
| `investor-relations` | Investor communications, fundraising pipeline |
|
|
239
|
+
| `competitive-intelligence` | Market positioning, competitor analysis |
|
|
240
|
+
| `engineering` | Technical development, platform, repos |
|
|
241
|
+
| `product` | Product strategy, roadmap, features |
|
|
242
|
+
| `public` | Published information, press, website — no restrictions |
|
|
243
|
+
|
|
244
|
+
### Example Profiles
|
|
245
|
+
|
|
246
|
+
**Shayan Kargarian (JV Partner / Investor):**
|
|
247
|
+
```yaml
|
|
248
|
+
information_boundaries:
|
|
249
|
+
domains_of_interest: [ftlab-operations, ftlab-commercial]
|
|
250
|
+
excluded_domains: [adaptic-internal-legal, adaptic-financial, adaptic-hr, regulatory-strategy, rollup-strategy, board-governance, ftlab-internal]
|
|
251
|
+
party_to_matters: [ftlab-jva, ftlab-operations]
|
|
252
|
+
conflicts:
|
|
253
|
+
- matter: jva-review-adaptic-group-investments
|
|
254
|
+
nature: "Counterparty — Adaptic's JV negotiation position is adverse"
|
|
255
|
+
- matter: seed-safe-review
|
|
256
|
+
nature: "Investor — terms under review affect his investment"
|
|
257
|
+
information_shared_with: [mehran-granfar, sophie]
|
|
258
|
+
```
|
|
259
|
+
|
|
260
|
+
**Hootan Yazhari (CFO / CIO / SEO):**
|
|
261
|
+
```yaml
|
|
262
|
+
information_boundaries:
|
|
263
|
+
domains_of_interest: [adaptic-financial, regulatory-strategy, adaptic-operations, engineering, board-governance, investor-relations]
|
|
264
|
+
excluded_domains: []
|
|
265
|
+
party_to_matters: [dfsa-submission, adaptic-financial-strategy]
|
|
266
|
+
conflicts: []
|
|
267
|
+
information_shared_with: [mehran-granfar, nima-masroori, bronwyn-leong, sophie]
|
|
268
|
+
```
|
|
269
|
+
|
|
270
|
+
**Nima Masroori (General Counsel):**
|
|
271
|
+
```yaml
|
|
272
|
+
information_boundaries:
|
|
273
|
+
domains_of_interest: [adaptic-internal-legal, regulatory-strategy, board-governance, rollup-strategy]
|
|
274
|
+
excluded_domains: [engineering, product]
|
|
275
|
+
party_to_matters: [jva-review-adaptic-group-investments, seed-safe-review, dfsa-submission, gc-appointment]
|
|
276
|
+
conflicts: []
|
|
277
|
+
information_shared_with: [mehran-granfar, sophie]
|
|
278
|
+
```
|
|
279
|
+
|
|
280
|
+
---
|
|
281
|
+
|
|
282
|
+
## Component 3: Pre-Draft Boundary Guidance (First Defence — Soft Layer)
|
|
283
|
+
|
|
284
|
+
### Purpose
|
|
285
|
+
|
|
286
|
+
Extend the existing `pre_draft_lookup.py` to return disclosure boundary guidance alongside the current recipient context. This shapes Sophie's drafting by making her aware of what she should NOT reference before she composes a single word.
|
|
287
|
+
|
|
288
|
+
### Current Interface
|
|
289
|
+
|
|
290
|
+
```python
|
|
291
|
+
pre_draft_lookup(recipient, message_type="email", channel=None, topic=None)
|
|
292
|
+
# Returns: { profile, recent_interactions, standing_instructions, critical_facts }
|
|
293
|
+
```
|
|
294
|
+
|
|
295
|
+
### Enhanced Interface
|
|
296
|
+
|
|
297
|
+
```python
|
|
298
|
+
pre_draft_lookup(recipient, message_type="email", channel=None, topic=None)
|
|
299
|
+
# Returns: { profile, recent_interactions, standing_instructions, critical_facts, disclosure_boundaries }
|
|
300
|
+
```
|
|
301
|
+
|
|
302
|
+
### The `disclosure_boundaries` Block
|
|
303
|
+
|
|
304
|
+
Generated dynamically at lookup time by cross-referencing:
|
|
305
|
+
- The recipient's `information_boundaries` profile
|
|
306
|
+
- Sophie's recent activity (interactions, queue items, meetings) that touch the recipient's conflicts or excluded domains
|
|
307
|
+
- Active provenance records that involve the recipient as a counterparty or non-participant
|
|
308
|
+
|
|
309
|
+
```yaml
|
|
310
|
+
disclosure_boundaries:
|
|
311
|
+
recipient_clearance_summary: >
|
|
312
|
+
Shayan Kargarian is a JV partner (FTLab) and Adaptic investor.
|
|
313
|
+
He has legitimate interest in FTLab operational and commercial matters.
|
|
314
|
+
He is a counterparty on JVA terms and an interested party on Seed SAFE terms.
|
|
315
|
+
Do NOT reference: Adaptic internal legal strategy, financial position,
|
|
316
|
+
regulatory approach, M&A pipeline, HR matters, or board deliberations.
|
|
317
|
+
Do NOT share Adaptic's negotiation position on any matter where he is counterparty.
|
|
318
|
+
|
|
319
|
+
active_conflicts:
|
|
320
|
+
- matter: jva-review-adaptic-group-investments
|
|
321
|
+
warning: "Counterparty — do not reference Adaptic's position, Nima's advice, or internal JVA review discussions"
|
|
322
|
+
- matter: seed-safe-review
|
|
323
|
+
warning: "Interested party — do not reference internal term negotiations or legal strategy"
|
|
324
|
+
|
|
325
|
+
recent_sensitive_context:
|
|
326
|
+
- source: "meeting-2026-04-04-jva-review (Mehran + Nima)"
|
|
327
|
+
warning: "JVA review meeting — Shayan was not present, content is adverse to his position"
|
|
328
|
+
- source: "queue item as-20260404-027 (GC appointment)"
|
|
329
|
+
warning: "Internal corporate governance — no relevance to Shayan"
|
|
330
|
+
|
|
331
|
+
excluded_domains_active:
|
|
332
|
+
- adaptic-internal-legal
|
|
333
|
+
- adaptic-financial
|
|
334
|
+
- adaptic-hr
|
|
335
|
+
- regulatory-strategy
|
|
336
|
+
- rollup-strategy
|
|
337
|
+
```
|
|
338
|
+
|
|
339
|
+
### Generation Logic
|
|
340
|
+
|
|
341
|
+
The `disclosure_boundaries` block is generated by a new function `generate_disclosure_boundaries(recipient_slug)`:
|
|
342
|
+
|
|
343
|
+
1. **Load recipient profile** — Read `information_boundaries` from `memory/profiles/users/{slug}.yaml`
|
|
344
|
+
2. **Scan recent activity** — Check Sophie's recent interactions (last 48 hours) and active queue items for provenance records that:
|
|
345
|
+
- Touch the recipient's `conflicts` (by matter ID)
|
|
346
|
+
- Fall in the recipient's `excluded_domains`
|
|
347
|
+
- Have participants that don't include the recipient
|
|
348
|
+
3. **Generate clearance summary** — Natural language summary of who this person is, what they can see, and what they cannot see
|
|
349
|
+
4. **Surface active conflicts** — List each conflict with a specific warning
|
|
350
|
+
5. **Surface recent sensitive context** — List recent provenance records that the recipient should not see, with source and warning
|
|
351
|
+
6. **List active excluded domains** — Quick reference of domain exclusions
|
|
352
|
+
|
|
353
|
+
### Fail-Open Behaviour
|
|
354
|
+
|
|
355
|
+
Consistent with the existing pre-draft lookup design:
|
|
356
|
+
- If the recipient has no profile → return `disclosure_boundaries: null` with a warning log
|
|
357
|
+
- If provenance index is unavailable → return partial boundaries from profile only
|
|
358
|
+
- If the function errors → log and return `None` — never block a send at this layer
|
|
359
|
+
- The post-draft assessment (Layer 2) is the hard gate
|
|
360
|
+
|
|
361
|
+
---
|
|
362
|
+
|
|
363
|
+
## Component 4: Post-Draft Disclosure Assessment (Second Defence — Hard Gate)
|
|
364
|
+
|
|
365
|
+
### Purpose
|
|
366
|
+
|
|
367
|
+
After Sophie composes a message and before it is sent, the disclosure assessor analyses the draft against provenance metadata and recipient boundaries. This is a new validation rule (Rule 6) added to the existing `config/validation-rules.yaml` pipeline.
|
|
368
|
+
|
|
369
|
+
### Assessment Process
|
|
370
|
+
|
|
371
|
+
For each outbound message:
|
|
372
|
+
|
|
373
|
+
**Step 1 — Extract substantive references:**
|
|
374
|
+
Identify references in the draft to: meetings, decisions, legal matters, financial details, named individuals in context, specific topics, queue items, documents, or action items. Ignore generic pleasantries, scheduling logistics, and publicly known facts.
|
|
375
|
+
|
|
376
|
+
**Step 2 — Trace provenance:**
|
|
377
|
+
For each substantive reference, look up the provenance record:
|
|
378
|
+
- What source did this come from?
|
|
379
|
+
- Who were the participants?
|
|
380
|
+
- What matter does it relate to?
|
|
381
|
+
- What sensitivity signals are tagged?
|
|
382
|
+
|
|
383
|
+
**Step 3 — Assess against recipient boundaries:**
|
|
384
|
+
For each reference, run the assessment criteria:
|
|
385
|
+
|
|
386
|
+
```
|
|
387
|
+
ASSESSMENT CRITERIA (evaluated in order of severity)
|
|
388
|
+
|
|
389
|
+
1. PRIVILEGE CHECK — Is this information legally privileged?
|
|
390
|
+
- Legal advice from counsel → never share outside privilege circle
|
|
391
|
+
- Board deliberations in draft → never share outside board + officers
|
|
392
|
+
- Financial terms under negotiation → never share with counterparties
|
|
393
|
+
→ FAIL = Critical severity
|
|
394
|
+
|
|
395
|
+
2. CONFLICT CHECK — Does the recipient have a conflict on this matter?
|
|
396
|
+
- Active conflict flagged in profile → no strategy, no positioning,
|
|
397
|
+
no legal advice, no negotiation context for this matter
|
|
398
|
+
- Operational facts about the matter MAY be acceptable if the recipient
|
|
399
|
+
is a party (e.g., "the JVA signing is scheduled for next week" is OK;
|
|
400
|
+
"we're pushing for better terms on Schedule 3" is not)
|
|
401
|
+
→ FAIL = Critical or High severity depending on content
|
|
402
|
+
|
|
403
|
+
3. PARTICIPANT CHECK — Was the recipient present when this was discussed?
|
|
404
|
+
- If yes → generally safe to reference
|
|
405
|
+
- If no → proceed to domain and necessity checks
|
|
406
|
+
→ FAIL alone = Medium severity (not present, but no conflict)
|
|
407
|
+
|
|
408
|
+
4. DOMAIN CHECK — Does this reference fall in the recipient's excluded domains?
|
|
409
|
+
- If yes → should not be referenced unless there is a clear, specific
|
|
410
|
+
reason it's necessary for the purpose of this message
|
|
411
|
+
→ FAIL = High severity if combined with other fails; Medium if isolated
|
|
412
|
+
|
|
413
|
+
5. NECESSITY CHECK — Is this reference necessary for the message's purpose?
|
|
414
|
+
- If the message is about FTLab ops and Sophie tangentially mentions
|
|
415
|
+
the DFSA submission → unnecessary, strip it
|
|
416
|
+
- If the message is a direct response to a question the recipient asked
|
|
417
|
+
about a topic → may be necessary even if borderline
|
|
418
|
+
→ FAIL = Medium or Low severity
|
|
419
|
+
```
|
|
420
|
+
|
|
421
|
+
**Step 4 — Classify severity and determine action:**
|
|
422
|
+
|
|
423
|
+
| Severity | Trigger Conditions | Action |
|
|
424
|
+
|----------|--------------------|--------|
|
|
425
|
+
| **Critical** | Privilege check FAIL, or conflict check FAIL with strategy/positioning/legal content | **BLOCK** — Message held. Mehran notified immediately via Slack DM with: the draft (not sent), the specific concern, Sophie's recommendation |
|
|
426
|
+
| **High** | Conflict check FAIL with operational content, or domain check FAIL combined with participant check FAIL | **BLOCK** — Message held. Sophie flags to Mehran with the concern and a recommendation on how to proceed |
|
|
427
|
+
| **Medium** | Participant check FAIL in non-conflicted domain, or necessity check FAIL (tangential oversharing) | **STRIP** — Remove the specific reference from the message. Send cleaned version. Log what was removed and why |
|
|
428
|
+
| **Low** | Borderline reference tangentially related to recipient's legitimate interests | **WARN** — Log the concern in audit trail. Send the message. Flag in weekly digest for Mehran's review |
|
|
429
|
+
|
|
430
|
+
### Severity Judgment — Strip vs. Block
|
|
431
|
+
|
|
432
|
+
Sophie uses judgment, not a rigid lookup. The guiding principle:
|
|
433
|
+
|
|
434
|
+
- **Block when the damage is irreversible or severe.** Once privileged legal strategy reaches a counterparty, it cannot be unsaid. Once a negotiation position is revealed, leverage is lost. These require human review.
|
|
435
|
+
- **Strip when the issue is oversharing, not a breach.** Mentioning a meeting the recipient wasn't in, referencing an unrelated internal project — these are indiscretions, not crises. Remove and log.
|
|
436
|
+
|
|
437
|
+
When assessment confidence is low (e.g., ambiguous whether content is privileged, unclear if recipient has a conflict), **default to the more conservative action** — block rather than strip, strip rather than pass.
|
|
438
|
+
|
|
439
|
+
### Integration with Existing Validation Pipeline
|
|
440
|
+
|
|
441
|
+
The disclosure assessment runs as Rule 6 in the validation pipeline, after the existing five rules:
|
|
442
|
+
|
|
443
|
+
```yaml
|
|
444
|
+
# In config/validation-rules.yaml
|
|
445
|
+
|
|
446
|
+
disclosure_assessment:
|
|
447
|
+
enabled: true
|
|
448
|
+
severity: dynamic # determined per-reference by assessment logic
|
|
449
|
+
description: >
|
|
450
|
+
Assess whether substantive references in the draft are appropriate
|
|
451
|
+
to share with the recipient, based on information provenance,
|
|
452
|
+
recipient boundary profiles, and contextual judgment.
|
|
453
|
+
|
|
454
|
+
assessment_criteria:
|
|
455
|
+
- privilege_check
|
|
456
|
+
- conflict_check
|
|
457
|
+
- participant_check
|
|
458
|
+
- domain_check
|
|
459
|
+
- necessity_check
|
|
460
|
+
|
|
461
|
+
data_sources:
|
|
462
|
+
user_profiles: memory/profiles/users/
|
|
463
|
+
provenance_index: memory/provenance/index.jsonl
|
|
464
|
+
active_queues: state/queues/
|
|
465
|
+
recent_interactions: memory/interactions/
|
|
466
|
+
|
|
467
|
+
actions:
|
|
468
|
+
critical: block_and_escalate
|
|
469
|
+
high: block_and_flag
|
|
470
|
+
medium: strip_and_send
|
|
471
|
+
low: warn_and_send
|
|
472
|
+
|
|
473
|
+
# When assessment confidence is low, escalate severity by one level
|
|
474
|
+
low_confidence_escalation: true
|
|
475
|
+
|
|
476
|
+
# Maximum assessment time before fail-open (ms)
|
|
477
|
+
timeout_ms: 3000
|
|
478
|
+
|
|
479
|
+
# Fail behaviour on timeout
|
|
480
|
+
timeout_action: block_and_flag # fail-closed for this rule
|
|
481
|
+
```
|
|
482
|
+
|
|
483
|
+
### Timeout and Failure Behaviour
|
|
484
|
+
|
|
485
|
+
Unlike the pre-draft layer (fail-open), the post-draft assessment is **fail-closed on timeout for high-sensitivity recipients**:
|
|
486
|
+
|
|
487
|
+
| Recipient Classification | Timeout Action |
|
|
488
|
+
|--------------------------|----------------|
|
|
489
|
+
| `partner`, `investor`, `board-member`, `regulator`, `acquisition-target`, `advisor` | **Block and flag** — too risky to send without assessment |
|
|
490
|
+
| `internal-ceo`, `internal-executive`, `internal-team` | **Warn and send** — internal recipients are lower risk |
|
|
491
|
+
| `unknown` | **Block** — always block unknown recipients |
|
|
492
|
+
|
|
493
|
+
---
|
|
494
|
+
|
|
495
|
+
## Component 5: Audit Trail & Transparency
|
|
496
|
+
|
|
497
|
+
### Purpose
|
|
498
|
+
|
|
499
|
+
Every disclosure assessment is logged — passes, strips, and blocks — creating a reviewable record of Sophie's information-sharing judgment. This enables calibration, compliance review, and incident investigation.
|
|
500
|
+
|
|
501
|
+
### Log Structure
|
|
502
|
+
|
|
503
|
+
Appended to `logs/audit/{date}-disclosure-assessments.jsonl`:
|
|
504
|
+
|
|
505
|
+
```json
|
|
506
|
+
{
|
|
507
|
+
"timestamp": "2026-04-04T12:51:30Z",
|
|
508
|
+
"message_id": "msg-20260404-slack-shayan-003",
|
|
509
|
+
"channel": "slack",
|
|
510
|
+
"recipient": "shayan-kargarian",
|
|
511
|
+
"recipient_classification": "partner",
|
|
512
|
+
|
|
513
|
+
"references_assessed": [
|
|
514
|
+
{
|
|
515
|
+
"reference_summary": "JVA governance terms adjustment",
|
|
516
|
+
"provenance_source_id": "meeting-2026-04-04-jva-review",
|
|
517
|
+
"provenance_participants": ["mehran-granfar", "nima-masroori"],
|
|
518
|
+
"provenance_sensitivity": ["legal_privilege", "negotiation_position"],
|
|
519
|
+
"checks": {
|
|
520
|
+
"privilege": { "result": "FAIL", "detail": "GC legal strategy" },
|
|
521
|
+
"conflict": { "result": "FAIL", "detail": "Counterparty on jva-review" },
|
|
522
|
+
"participant": { "result": "FAIL", "detail": "Recipient not present" },
|
|
523
|
+
"domain": { "result": "FAIL", "detail": "adaptic-internal-legal excluded" },
|
|
524
|
+
"necessity": { "result": "FAIL", "detail": "Not necessary for message purpose" }
|
|
525
|
+
},
|
|
526
|
+
"severity": "critical",
|
|
527
|
+
"action": "blocked",
|
|
528
|
+
"reasoning": "Negotiation position on JVA terms shared with counterparty who was not present in review meeting. Content includes privileged legal strategy from GC."
|
|
529
|
+
}
|
|
530
|
+
],
|
|
531
|
+
|
|
532
|
+
"outcome": "blocked",
|
|
533
|
+
"escalated_to": "mehran-granfar",
|
|
534
|
+
"draft_hash": "sha256:abc123...",
|
|
535
|
+
"cleaned_hash": null,
|
|
536
|
+
"assessment_duration_ms": 450,
|
|
537
|
+
"assessment_confidence": "high"
|
|
538
|
+
}
|
|
539
|
+
```
|
|
540
|
+
|
|
541
|
+
### Audit Outcomes
|
|
542
|
+
|
|
543
|
+
| Outcome | Description | Visibility |
|
|
544
|
+
|---------|-------------|------------|
|
|
545
|
+
| `passed` | All references assessed clean. Message sent. | Logged silently. Available in audit search. |
|
|
546
|
+
| `stripped` | Medium-severity references removed. Cleaned message sent. | Logged with detail of what was removed. Surfaced in weekly digest. |
|
|
547
|
+
| `blocked` | High/critical severity. Message held. | Mehran notified immediately via Slack DM. Full detail in audit log. |
|
|
548
|
+
|
|
549
|
+
### Mehran's Visibility
|
|
550
|
+
|
|
551
|
+
- **Blocks** → Immediate Slack DM notification with: what was caught, why, the draft, and Sophie's recommendation
|
|
552
|
+
- **Strips** → Weekly digest summarising what was removed from messages and why — so Mehran can review Sophie's judgment without being interrupted for every minor edit
|
|
553
|
+
- **Passes** → Searchable in audit log on request ("show me all disclosure assessments for Shayan this week")
|
|
554
|
+
|
|
555
|
+
### Calibration Loop
|
|
556
|
+
|
|
557
|
+
When Mehran overrides a block ("that was fine to share") or flags a miss ("you should have caught that"), Sophie:
|
|
558
|
+
|
|
559
|
+
1. Logs the override/feedback in the audit trail
|
|
560
|
+
2. Updates her assessment criteria notes in `memory/precedents/disclosure-calibration.yaml`
|
|
561
|
+
3. Adjusts future assessments based on accumulated precedent
|
|
562
|
+
|
|
563
|
+
This is a learning system. Over time, Sophie's judgment improves as she accumulates calibration data from Mehran's feedback.
|
|
564
|
+
|
|
565
|
+
---
|
|
566
|
+
|
|
567
|
+
## Component 6: Scope of Application
|
|
568
|
+
|
|
569
|
+
### Channels
|
|
570
|
+
|
|
571
|
+
This system applies to every outbound communication channel:
|
|
572
|
+
|
|
573
|
+
| Channel | Integration Point | Assessment Applies |
|
|
574
|
+
|---------|-------------------|--------------------|
|
|
575
|
+
| Slack (DMs, channels, threads) | `scripts/daemon/responder.mjs`, `slack-send.sh` | Yes — all messages |
|
|
576
|
+
| Email (Sophie's voice) | `send-email.sh` | Yes — all messages |
|
|
577
|
+
| Email (Mehran's voice) | `send-email-as-mehran.py` | Yes — all messages |
|
|
578
|
+
| WhatsApp | `send-whatsapp.sh` | Yes — all messages |
|
|
579
|
+
| SMS | `send-sms.sh` | Yes — all messages |
|
|
580
|
+
| Voice briefing scripts | Voice AI pipeline | Yes — all generated scripts |
|
|
581
|
+
| Documents shared externally | PDF generation, Google Docs uploads | Yes — content reviewed before sharing |
|
|
582
|
+
| Calendar invites with agenda content | Google Calendar integration | Yes — agenda text assessed |
|
|
583
|
+
|
|
584
|
+
### Recipients
|
|
585
|
+
|
|
586
|
+
Every person Sophie communicates with, whether internal or external:
|
|
587
|
+
|
|
588
|
+
- **Internal executives** (Hootan, Bronwyn, Nima) — bounded by their role scope
|
|
589
|
+
- **Internal team** — bounded by their function and involvement
|
|
590
|
+
- **JV partners** (Shayan) — bounded by JV scope, excluded from internal Adaptic matters
|
|
591
|
+
- **Investors** — bounded to investor-relevant information only
|
|
592
|
+
- **Board members** — full governance access, excluded from operational minutiae
|
|
593
|
+
- **Regulators** — only formal, approved content
|
|
594
|
+
- **Advisors** — bounded by their advisory scope
|
|
595
|
+
- **Candidates** — hiring-relevant information only
|
|
596
|
+
- **Vendors** — engagement-relevant information only
|
|
597
|
+
- **External parties** — most restrictive by default
|
|
598
|
+
|
|
599
|
+
### Group Communications (Channels, CC, Multi-Recipient)
|
|
600
|
+
|
|
601
|
+
When a message is sent to multiple recipients — a Slack channel, a CC'd email, or a group thread — the disclosure assessment evaluates against **every recipient** present. The most restrictive boundary wins.
|
|
602
|
+
|
|
603
|
+
**Process:**
|
|
604
|
+
|
|
605
|
+
1. **Enumerate all recipients** — For Slack channels, resolve current membership. For emails, include all To/CC/BCC. For threads, include all participants.
|
|
606
|
+
2. **Run assessment per recipient** — Each substantive reference is assessed against every recipient's profile independently.
|
|
607
|
+
3. **Apply highest severity** — If a reference is `passed` for Nima but `critical` for Shayan, the overall severity is `critical`.
|
|
608
|
+
4. **Action based on highest severity** — If any recipient triggers a block, the entire message is blocked. If any triggers a strip, the reference is stripped for all recipients (since all see the same message).
|
|
609
|
+
|
|
610
|
+
**Example:** Sophie posts in a Slack channel where both Nima and Shayan are members. She references the JVA review meeting. Nima was a participant (PASS), but Shayan has an active conflict (CRITICAL). The message is blocked because Shayan is in the channel.
|
|
611
|
+
|
|
612
|
+
**Channel profiles** in `memory/profiles/channels/` should include a `members` field that is kept current. The disclosure assessment uses this to enumerate recipients for channel-level messages.
|
|
613
|
+
|
|
614
|
+
**Sophie should prefer DMs over channels** when the content is sensitive enough that channel membership could cause a disclosure issue. The pre-draft boundary guidance should flag this: "Consider sending this as a DM to [specific person] rather than posting in [channel] — [person X] in this channel has boundary conflicts with this content."
|
|
615
|
+
|
|
616
|
+
### New Recipients Without Profiles
|
|
617
|
+
|
|
618
|
+
When Sophie encounters a recipient with no profile in `memory/profiles/users/`:
|
|
619
|
+
|
|
620
|
+
1. **Default to most restrictive boundaries** — treat as external with no domains of interest and all domains excluded
|
|
621
|
+
2. **Log a warning** — flag that a message is being sent to an un-profiled recipient
|
|
622
|
+
3. **Create a stub profile** — auto-generate a minimal profile with `information_boundaries` set to maximum restriction, flagged for Mehran to review and populate
|
|
623
|
+
4. **Block if high-sensitivity content detected** — any substantive reference triggers a block for un-profiled recipients
|
|
624
|
+
|
|
625
|
+
---
|
|
626
|
+
|
|
627
|
+
## Implementation Priorities
|
|
628
|
+
|
|
629
|
+
### Phase 1: Foundation (Immediate)
|
|
630
|
+
1. Add `information_boundaries` to all existing user profiles
|
|
631
|
+
2. Create the provenance record schema and index
|
|
632
|
+
3. Implement `generate_disclosure_boundaries()` in pre-draft lookup
|
|
633
|
+
4. Add disclosure assessment as Rule 6 in validation pipeline
|
|
634
|
+
|
|
635
|
+
### Phase 2: Ingestion Integration
|
|
636
|
+
5. Update meeting action capture to tag provenance
|
|
637
|
+
6. Update inbox processor to tag provenance on inbound messages
|
|
638
|
+
7. Update post-interaction indexer to tag provenance
|
|
639
|
+
8. Update queue item creation to include provenance
|
|
640
|
+
|
|
641
|
+
### Phase 3: Audit & Calibration
|
|
642
|
+
9. Implement disclosure assessment audit logging
|
|
643
|
+
10. Implement block notification to Mehran (Slack DM)
|
|
644
|
+
11. Implement weekly strip digest
|
|
645
|
+
12. Create calibration precedent store
|
|
646
|
+
|
|
647
|
+
### Phase 4: Coverage Completion
|
|
648
|
+
13. Integrate assessment into all send scripts (Slack, email, WhatsApp, SMS)
|
|
649
|
+
14. Integrate into voice AI briefing pipeline
|
|
650
|
+
15. Integrate into document sharing workflow
|
|
651
|
+
16. Integrate into calendar invite content
|
|
652
|
+
|
|
653
|
+
---
|
|
654
|
+
|
|
655
|
+
## Testing Strategy
|
|
656
|
+
|
|
657
|
+
### Unit Tests
|
|
658
|
+
- Provenance tagging: verify correct metadata extraction from meeting notes, emails, conversations
|
|
659
|
+
- Boundary generation: verify `generate_disclosure_boundaries()` correctly surfaces conflicts, excluded domains, recent sensitive context
|
|
660
|
+
- Assessment logic: verify each check (privilege, conflict, participant, domain, necessity) produces correct severity for known scenarios
|
|
661
|
+
- Action routing: verify critical → block, high → block, medium → strip, low → warn
|
|
662
|
+
|
|
663
|
+
### Integration Tests
|
|
664
|
+
- End-to-end: compose a message with sensitive content → verify it is blocked before sending
|
|
665
|
+
- End-to-end: compose a clean message → verify it passes without delay
|
|
666
|
+
- Strip test: compose a message with one sensitive reference and one clean reference → verify sensitive part is stripped, clean part is sent
|
|
667
|
+
- Timeout: simulate slow provenance lookup → verify fail-closed behaviour for external recipients
|
|
668
|
+
|
|
669
|
+
### Scenario Tests (based on real incidents)
|
|
670
|
+
- **The Shayan incident:** Draft a message to Shayan referencing JVA review meeting with Nima → must be BLOCKED at critical severity
|
|
671
|
+
- **Legitimate FTLab ops:** Draft a message to Shayan about FTLab operational matter he's party to → must PASS
|
|
672
|
+
- **Hootan HR overshare:** Draft a message to Hootan referencing candidate screening scores for a role he's not hiring for → must be STRIPPED
|
|
673
|
+
- **Nima engineering detail:** Draft a message to Nima about engineering sprint progress → must be STRIPPED (unnecessary, excluded domain)
|
|
674
|
+
- **Unknown recipient:** Draft a message to an un-profiled external contact with any substantive reference → must be BLOCKED
|
|
675
|
+
|
|
676
|
+
### Calibration Tests
|
|
677
|
+
- Override a block → verify precedent is recorded and future similar assessments adjust
|
|
678
|
+
- Flag a miss → verify assessment criteria update and future similar content is caught
|