@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,926 @@
|
|
|
1
|
+
# Information Barrier & Disclosure Control — Implementation Plan
|
|
2
|
+
|
|
3
|
+
> **For agentic workers:** REQUIRED SUB-SKILL: Use superpowers:subagent-driven-development (recommended) or superpowers:executing-plans to implement this plan task-by-task. Steps use checkbox (`- [ ]`) syntax for tracking.
|
|
4
|
+
|
|
5
|
+
**Goal:** Prevent confidential information from leaking across recipient boundaries in all outbound communications by implementing defense-in-depth information barriers with provenance tracking, dynamic boundary guidance, and post-draft disclosure assessment.
|
|
6
|
+
|
|
7
|
+
**Architecture:** Two-layer defense: (1) pre-draft boundary guidance extends `pre_draft_lookup.py` to surface what Sophie should NOT reference for each recipient, (2) post-draft disclosure assessment adds Rule 6 to `validate-outbound.py` that programmatically checks drafts against recipient boundaries and provenance. Both layers draw on enhanced user profiles with `information_boundaries` fields and a provenance index that tracks where information came from and who was present.
|
|
8
|
+
|
|
9
|
+
**Tech Stack:** Python 3 (matching existing scripts), YAML configuration, JSONL audit logging. No new dependencies — uses the same `_parse_yaml_simple()` pattern from `validate-outbound.py` and the same audit logging pattern from `pre_draft_lookup.py`.
|
|
10
|
+
|
|
11
|
+
**Spec:** `docs/superpowers/specs/2026-04-05-information-barrier-design.md`
|
|
12
|
+
|
|
13
|
+
---
|
|
14
|
+
|
|
15
|
+
## File Structure
|
|
16
|
+
|
|
17
|
+
### New Files
|
|
18
|
+
|
|
19
|
+
| File | Responsibility |
|
|
20
|
+
|------|---------------|
|
|
21
|
+
| `policies/information-barriers.yaml` | Domain taxonomy, sensitivity signal definitions, default boundary rules, assessment thresholds |
|
|
22
|
+
| `scripts/disclosure_boundaries.py` | `generate_disclosure_boundaries(recipient_slug)` — builds the disclosure boundaries block for pre-draft lookup |
|
|
23
|
+
| `scripts/disclosure_assessment.py` | `assess_disclosure(draft, recipient_slug, channel)` — post-draft assessment engine, returns severity + action |
|
|
24
|
+
| `scripts/test-information-barriers.py` | Test suite: boundary generation, assessment logic, severity routing, scenario tests |
|
|
25
|
+
| `memory/provenance/index.jsonl` | Provenance index — searchable log of information provenance records (starts empty) |
|
|
26
|
+
| `memory/precedents/disclosure-calibration.yaml` | Calibration precedent store for override/feedback tracking |
|
|
27
|
+
|
|
28
|
+
### Modified Files
|
|
29
|
+
|
|
30
|
+
| File | Changes |
|
|
31
|
+
|------|---------|
|
|
32
|
+
| `memory/profiles/users/*.yaml` (all 8) | Add `information_boundaries` block to each profile |
|
|
33
|
+
| `memory/profiles/channels/*.yaml` (all 10) | Add `members` field listing user slugs |
|
|
34
|
+
| `scripts/pre_draft_lookup.py` | Import and call `generate_disclosure_boundaries()`, include result in return dict and audit log |
|
|
35
|
+
| `config/validation-rules.yaml` | Add Rule 6: `disclosure_assessment` configuration block |
|
|
36
|
+
| `scripts/validate-outbound.py` | Import and call `assess_disclosure()`, integrate with existing severity/blocking logic |
|
|
37
|
+
|
|
38
|
+
---
|
|
39
|
+
|
|
40
|
+
## Task 1: Information Barrier Policy Configuration
|
|
41
|
+
|
|
42
|
+
**Files:**
|
|
43
|
+
- Create: `policies/information-barriers.yaml`
|
|
44
|
+
|
|
45
|
+
- [ ] **Step 1: Create the barrier policy file**
|
|
46
|
+
|
|
47
|
+
```yaml
|
|
48
|
+
# policies/information-barriers.yaml
|
|
49
|
+
# Information Barrier & Disclosure Control — Policy Configuration
|
|
50
|
+
# Used by: scripts/disclosure_boundaries.py, scripts/disclosure_assessment.py
|
|
51
|
+
# Spec: docs/superpowers/specs/2026-04-05-information-barrier-design.md
|
|
52
|
+
|
|
53
|
+
# ─────────────────────────────────────────────
|
|
54
|
+
# Domain Taxonomy
|
|
55
|
+
# Used in provenance context_domain and profile boundaries
|
|
56
|
+
# ─────────────────────────────────────────────
|
|
57
|
+
domains:
|
|
58
|
+
adaptic-internal-legal:
|
|
59
|
+
description: "Adaptic's own legal strategy, GC advice, privilege-protected"
|
|
60
|
+
default_sensitivity: high
|
|
61
|
+
adaptic-financial:
|
|
62
|
+
description: "Cap table, runway, fundraising, financial planning"
|
|
63
|
+
default_sensitivity: high
|
|
64
|
+
adaptic-hr:
|
|
65
|
+
description: "Hiring, compensation, performance, org structure decisions"
|
|
66
|
+
default_sensitivity: medium
|
|
67
|
+
adaptic-operations:
|
|
68
|
+
description: "Internal ops, processes, tooling"
|
|
69
|
+
default_sensitivity: low
|
|
70
|
+
regulatory-strategy:
|
|
71
|
+
description: "Approach to regulators, gap assessments, remediation"
|
|
72
|
+
default_sensitivity: high
|
|
73
|
+
rollup-strategy:
|
|
74
|
+
description: "Project Aether M&A targets, deal terms, pipeline"
|
|
75
|
+
default_sensitivity: critical
|
|
76
|
+
board-governance:
|
|
77
|
+
description: "Board materials, resolutions, governance"
|
|
78
|
+
default_sensitivity: high
|
|
79
|
+
ftlab-operations:
|
|
80
|
+
description: "FTLab JV operational matters (shared domain)"
|
|
81
|
+
default_sensitivity: low
|
|
82
|
+
ftlab-commercial:
|
|
83
|
+
description: "FTLab commercial / revenue matters (shared domain)"
|
|
84
|
+
default_sensitivity: medium
|
|
85
|
+
ftlab-internal:
|
|
86
|
+
description: "Adaptic-side-only FTLab matters (negotiation position, internal JV strategy)"
|
|
87
|
+
default_sensitivity: high
|
|
88
|
+
investor-relations:
|
|
89
|
+
description: "Investor communications, fundraising pipeline"
|
|
90
|
+
default_sensitivity: high
|
|
91
|
+
competitive-intelligence:
|
|
92
|
+
description: "Market positioning, competitor analysis"
|
|
93
|
+
default_sensitivity: medium
|
|
94
|
+
engineering:
|
|
95
|
+
description: "Technical development, platform, repos"
|
|
96
|
+
default_sensitivity: low
|
|
97
|
+
product:
|
|
98
|
+
description: "Product strategy, roadmap, features"
|
|
99
|
+
default_sensitivity: low
|
|
100
|
+
public:
|
|
101
|
+
description: "Published information, press, website — no restrictions"
|
|
102
|
+
default_sensitivity: none
|
|
103
|
+
|
|
104
|
+
# ─────────────────────────────────────────────
|
|
105
|
+
# Sensitivity Signals
|
|
106
|
+
# Tagged on provenance records at ingestion
|
|
107
|
+
# ─────────────────────────────────────────────
|
|
108
|
+
sensitivity_signals:
|
|
109
|
+
legal_privilege:
|
|
110
|
+
description: "Legal advice, attorney-client communications, GC strategy"
|
|
111
|
+
severity_floor: critical
|
|
112
|
+
negotiation_position:
|
|
113
|
+
description: "Positional information on active negotiations"
|
|
114
|
+
severity_floor: critical
|
|
115
|
+
financial_terms:
|
|
116
|
+
description: "Pricing, valuations, cap table, runway, compensation"
|
|
117
|
+
severity_floor: high
|
|
118
|
+
personal_data:
|
|
119
|
+
description: "Individual compensation, health, performance reviews"
|
|
120
|
+
severity_floor: high
|
|
121
|
+
regulatory_strategy:
|
|
122
|
+
description: "Internal approach to regulators, gap assessments"
|
|
123
|
+
severity_floor: high
|
|
124
|
+
board_deliberation:
|
|
125
|
+
description: "Board-level discussions, resolutions in draft"
|
|
126
|
+
severity_floor: high
|
|
127
|
+
competitive_intelligence:
|
|
128
|
+
description: "M&A pipeline, competitive positioning, market strategy"
|
|
129
|
+
severity_floor: medium
|
|
130
|
+
internal_operations:
|
|
131
|
+
description: "Internal process, tooling, workflow details"
|
|
132
|
+
severity_floor: low
|
|
133
|
+
|
|
134
|
+
# ─────────────────────────────────────────────
|
|
135
|
+
# Assessment Configuration
|
|
136
|
+
# ─────────────────────────────────────────────
|
|
137
|
+
assessment:
|
|
138
|
+
timeout_ms: 3000
|
|
139
|
+
low_confidence_escalation: true
|
|
140
|
+
timeout_actions:
|
|
141
|
+
partner: block_and_flag
|
|
142
|
+
investor: block_and_flag
|
|
143
|
+
board-member: block_and_flag
|
|
144
|
+
regulator: block_and_flag
|
|
145
|
+
acquisition-target: block_and_flag
|
|
146
|
+
advisor: block_and_flag
|
|
147
|
+
internal-ceo: warn_and_send
|
|
148
|
+
internal-executive: warn_and_send
|
|
149
|
+
internal-team: warn_and_send
|
|
150
|
+
unknown: block
|
|
151
|
+
actions:
|
|
152
|
+
critical: block_and_escalate
|
|
153
|
+
high: block_and_flag
|
|
154
|
+
medium: strip_and_send
|
|
155
|
+
low: warn_and_send
|
|
156
|
+
recent_context_hours: 48
|
|
157
|
+
unrestricted_recipients:
|
|
158
|
+
- mehran-granfar
|
|
159
|
+
|
|
160
|
+
# ─────────────────────────────────────────────
|
|
161
|
+
# Audit Configuration
|
|
162
|
+
# ─────────────────────────────────────────────
|
|
163
|
+
audit:
|
|
164
|
+
log_dir: logs/audit
|
|
165
|
+
log_prefix: disclosure-assessments
|
|
166
|
+
log_clean_passes: true
|
|
167
|
+
```
|
|
168
|
+
|
|
169
|
+
- [ ] **Step 2: Verify file parses correctly**
|
|
170
|
+
|
|
171
|
+
```bash
|
|
172
|
+
python3 -c "
|
|
173
|
+
from pathlib import Path
|
|
174
|
+
text = Path('policies/information-barriers.yaml').read_text()
|
|
175
|
+
for key in ['domains', 'sensitivity_signals', 'assessment', 'audit']:
|
|
176
|
+
assert key + ':' in text, f'Missing key: {key}'
|
|
177
|
+
print('OK: all top-level keys present')
|
|
178
|
+
"
|
|
179
|
+
```
|
|
180
|
+
Expected: `OK: all top-level keys present`
|
|
181
|
+
|
|
182
|
+
- [ ] **Step 3: Commit**
|
|
183
|
+
|
|
184
|
+
```bash
|
|
185
|
+
git add policies/information-barriers.yaml
|
|
186
|
+
git commit -m "feat: add information barrier policy configuration
|
|
187
|
+
|
|
188
|
+
Domain taxonomy, sensitivity signals, assessment thresholds, and
|
|
189
|
+
audit config for the disclosure control system."
|
|
190
|
+
```
|
|
191
|
+
|
|
192
|
+
---
|
|
193
|
+
|
|
194
|
+
## Task 2: Add Information Boundaries to All User Profiles
|
|
195
|
+
|
|
196
|
+
**Files:**
|
|
197
|
+
- Modify: `memory/profiles/users/shayan-kargarian.yaml`
|
|
198
|
+
- Modify: `memory/profiles/users/mehran-granfar.yaml`
|
|
199
|
+
- Modify: `memory/profiles/users/hootan-yazhari.yaml`
|
|
200
|
+
- Modify: `memory/profiles/users/nima-masroori.yaml`
|
|
201
|
+
- Modify: `memory/profiles/users/bronwyn-leong.yaml`
|
|
202
|
+
- Modify: `memory/profiles/users/graham-syder.yaml`
|
|
203
|
+
- Modify: `memory/profiles/users/rishel-chheda.yaml`
|
|
204
|
+
- Modify: `memory/profiles/users/saleh-abdulhalim.yaml`
|
|
205
|
+
|
|
206
|
+
- [ ] **Step 1: Add boundaries to shayan-kargarian.yaml**
|
|
207
|
+
|
|
208
|
+
Append before the `authority:` section:
|
|
209
|
+
|
|
210
|
+
```yaml
|
|
211
|
+
information_boundaries:
|
|
212
|
+
domains_of_interest:
|
|
213
|
+
- ftlab-operations
|
|
214
|
+
- ftlab-commercial
|
|
215
|
+
excluded_domains:
|
|
216
|
+
- adaptic-internal-legal
|
|
217
|
+
- adaptic-financial
|
|
218
|
+
- adaptic-hr
|
|
219
|
+
- regulatory-strategy
|
|
220
|
+
- rollup-strategy
|
|
221
|
+
- board-governance
|
|
222
|
+
- ftlab-internal
|
|
223
|
+
party_to_matters:
|
|
224
|
+
- ftlab-jva
|
|
225
|
+
- ftlab-operations
|
|
226
|
+
conflicts:
|
|
227
|
+
- matter: jva-review-adaptic-group-investments
|
|
228
|
+
nature: "Counterparty — Adaptic's JV negotiation position is adverse to Shayan's interests"
|
|
229
|
+
- matter: seed-safe-review
|
|
230
|
+
nature: "Investor — terms under review affect his investment"
|
|
231
|
+
information_shared_with:
|
|
232
|
+
- mehran-granfar
|
|
233
|
+
- sophie
|
|
234
|
+
```
|
|
235
|
+
|
|
236
|
+
- [ ] **Step 2: Add boundaries to mehran-granfar.yaml**
|
|
237
|
+
|
|
238
|
+
Append before the `authority:` section. Mehran has unrestricted access:
|
|
239
|
+
|
|
240
|
+
```yaml
|
|
241
|
+
information_boundaries:
|
|
242
|
+
domains_of_interest: ["*"]
|
|
243
|
+
excluded_domains: []
|
|
244
|
+
party_to_matters: ["*"]
|
|
245
|
+
conflicts: []
|
|
246
|
+
information_shared_with: ["*"]
|
|
247
|
+
```
|
|
248
|
+
|
|
249
|
+
- [ ] **Step 3: Add boundaries to hootan-yazhari.yaml**
|
|
250
|
+
|
|
251
|
+
Append before the `authority:` section:
|
|
252
|
+
|
|
253
|
+
```yaml
|
|
254
|
+
information_boundaries:
|
|
255
|
+
domains_of_interest:
|
|
256
|
+
- adaptic-financial
|
|
257
|
+
- regulatory-strategy
|
|
258
|
+
- adaptic-operations
|
|
259
|
+
- engineering
|
|
260
|
+
- board-governance
|
|
261
|
+
- investor-relations
|
|
262
|
+
excluded_domains: []
|
|
263
|
+
party_to_matters:
|
|
264
|
+
- dfsa-submission
|
|
265
|
+
- adaptic-financial-strategy
|
|
266
|
+
conflicts: []
|
|
267
|
+
information_shared_with:
|
|
268
|
+
- mehran-granfar
|
|
269
|
+
- nima-masroori
|
|
270
|
+
- bronwyn-leong
|
|
271
|
+
- sophie
|
|
272
|
+
```
|
|
273
|
+
|
|
274
|
+
- [ ] **Step 4: Add boundaries to nima-masroori.yaml**
|
|
275
|
+
|
|
276
|
+
Append before the `authority:` section:
|
|
277
|
+
|
|
278
|
+
```yaml
|
|
279
|
+
information_boundaries:
|
|
280
|
+
domains_of_interest:
|
|
281
|
+
- adaptic-internal-legal
|
|
282
|
+
- regulatory-strategy
|
|
283
|
+
- board-governance
|
|
284
|
+
- rollup-strategy
|
|
285
|
+
excluded_domains:
|
|
286
|
+
- engineering
|
|
287
|
+
- product
|
|
288
|
+
party_to_matters:
|
|
289
|
+
- jva-review-adaptic-group-investments
|
|
290
|
+
- seed-safe-review
|
|
291
|
+
- dfsa-submission
|
|
292
|
+
- gc-appointment
|
|
293
|
+
conflicts: []
|
|
294
|
+
information_shared_with:
|
|
295
|
+
- mehran-granfar
|
|
296
|
+
- sophie
|
|
297
|
+
```
|
|
298
|
+
|
|
299
|
+
- [ ] **Step 5: Add boundaries to bronwyn-leong.yaml**
|
|
300
|
+
|
|
301
|
+
Append before the `authority:` section:
|
|
302
|
+
|
|
303
|
+
```yaml
|
|
304
|
+
information_boundaries:
|
|
305
|
+
domains_of_interest:
|
|
306
|
+
- board-governance
|
|
307
|
+
- adaptic-financial
|
|
308
|
+
- adaptic-operations
|
|
309
|
+
excluded_domains:
|
|
310
|
+
- engineering
|
|
311
|
+
- product
|
|
312
|
+
- adaptic-hr
|
|
313
|
+
party_to_matters:
|
|
314
|
+
- board-governance
|
|
315
|
+
conflicts: []
|
|
316
|
+
information_shared_with:
|
|
317
|
+
- mehran-granfar
|
|
318
|
+
- hootan-yazhari
|
|
319
|
+
- nima-masroori
|
|
320
|
+
- sophie
|
|
321
|
+
```
|
|
322
|
+
|
|
323
|
+
- [ ] **Step 6: Add boundaries to graham-syder.yaml**
|
|
324
|
+
|
|
325
|
+
Append before the `authority:` section. Graham is an external contact (KPM):
|
|
326
|
+
|
|
327
|
+
```yaml
|
|
328
|
+
information_boundaries:
|
|
329
|
+
domains_of_interest:
|
|
330
|
+
- adaptic-operations
|
|
331
|
+
excluded_domains:
|
|
332
|
+
- adaptic-internal-legal
|
|
333
|
+
- adaptic-financial
|
|
334
|
+
- adaptic-hr
|
|
335
|
+
- regulatory-strategy
|
|
336
|
+
- rollup-strategy
|
|
337
|
+
- board-governance
|
|
338
|
+
- ftlab-internal
|
|
339
|
+
- ftlab-operations
|
|
340
|
+
- ftlab-commercial
|
|
341
|
+
- investor-relations
|
|
342
|
+
- competitive-intelligence
|
|
343
|
+
party_to_matters:
|
|
344
|
+
- kpm-office-fitout
|
|
345
|
+
conflicts: []
|
|
346
|
+
information_shared_with:
|
|
347
|
+
- mehran-granfar
|
|
348
|
+
- sophie
|
|
349
|
+
```
|
|
350
|
+
|
|
351
|
+
- [ ] **Step 7: Add boundaries to rishel-chheda.yaml**
|
|
352
|
+
|
|
353
|
+
Append before the `authority:` section. Rishel is an external vendor (10leaves):
|
|
354
|
+
|
|
355
|
+
```yaml
|
|
356
|
+
information_boundaries:
|
|
357
|
+
domains_of_interest:
|
|
358
|
+
- adaptic-operations
|
|
359
|
+
excluded_domains:
|
|
360
|
+
- adaptic-internal-legal
|
|
361
|
+
- adaptic-financial
|
|
362
|
+
- adaptic-hr
|
|
363
|
+
- regulatory-strategy
|
|
364
|
+
- rollup-strategy
|
|
365
|
+
- board-governance
|
|
366
|
+
- ftlab-internal
|
|
367
|
+
- ftlab-operations
|
|
368
|
+
- ftlab-commercial
|
|
369
|
+
- investor-relations
|
|
370
|
+
- competitive-intelligence
|
|
371
|
+
party_to_matters: []
|
|
372
|
+
conflicts: []
|
|
373
|
+
information_shared_with:
|
|
374
|
+
- mehran-granfar
|
|
375
|
+
- sophie
|
|
376
|
+
```
|
|
377
|
+
|
|
378
|
+
- [ ] **Step 8: Add boundaries to saleh-abdulhalim.yaml**
|
|
379
|
+
|
|
380
|
+
Append before the `authority:` section. Saleh is an external advisor:
|
|
381
|
+
|
|
382
|
+
```yaml
|
|
383
|
+
information_boundaries:
|
|
384
|
+
domains_of_interest:
|
|
385
|
+
- adaptic-operations
|
|
386
|
+
- regulatory-strategy
|
|
387
|
+
excluded_domains:
|
|
388
|
+
- adaptic-internal-legal
|
|
389
|
+
- adaptic-financial
|
|
390
|
+
- adaptic-hr
|
|
391
|
+
- rollup-strategy
|
|
392
|
+
- board-governance
|
|
393
|
+
- ftlab-internal
|
|
394
|
+
- ftlab-operations
|
|
395
|
+
- ftlab-commercial
|
|
396
|
+
- investor-relations
|
|
397
|
+
- competitive-intelligence
|
|
398
|
+
party_to_matters: []
|
|
399
|
+
conflicts: []
|
|
400
|
+
information_shared_with:
|
|
401
|
+
- mehran-granfar
|
|
402
|
+
- sophie
|
|
403
|
+
```
|
|
404
|
+
|
|
405
|
+
- [ ] **Step 9: Verify all profiles have information_boundaries**
|
|
406
|
+
|
|
407
|
+
```bash
|
|
408
|
+
for f in memory/profiles/users/*.yaml; do
|
|
409
|
+
name=$(basename "$f" .yaml)
|
|
410
|
+
if grep -q "information_boundaries:" "$f"; then
|
|
411
|
+
echo "OK: $name"
|
|
412
|
+
else
|
|
413
|
+
echo "MISSING: $name"
|
|
414
|
+
fi
|
|
415
|
+
done
|
|
416
|
+
```
|
|
417
|
+
|
|
418
|
+
Expected: `OK` for all 8 profiles, no `MISSING` lines.
|
|
419
|
+
|
|
420
|
+
- [ ] **Step 10: Commit**
|
|
421
|
+
|
|
422
|
+
```bash
|
|
423
|
+
git add memory/profiles/users/*.yaml
|
|
424
|
+
git commit -m "feat: add information_boundaries to all user profiles
|
|
425
|
+
|
|
426
|
+
Each profile now has domains_of_interest, excluded_domains,
|
|
427
|
+
party_to_matters, conflicts, and information_shared_with fields
|
|
428
|
+
for the disclosure control system."
|
|
429
|
+
```
|
|
430
|
+
|
|
431
|
+
---
|
|
432
|
+
|
|
433
|
+
## Task 3: Enhance Channel Profiles with Members
|
|
434
|
+
|
|
435
|
+
**Files:**
|
|
436
|
+
- Modify: `memory/profiles/channels/*.yaml` (all 10 channel profiles)
|
|
437
|
+
|
|
438
|
+
- [ ] **Step 1: Add members to each channel profile**
|
|
439
|
+
|
|
440
|
+
For each channel profile, add a `members` field listing the user slugs of current participants. This is needed for group communication assessment — when Sophie posts in a channel, the assessment must check against ALL members.
|
|
441
|
+
|
|
442
|
+
Read each channel profile to see existing `participants` field, then ensure a `members` list with slugs is present. Where `participants` already has slug-formatted names, add `members` as an alias or ensure it matches.
|
|
443
|
+
|
|
444
|
+
**ceo-office.yaml** — already has `participants: [mehran-granfar, sophie-nguyen]`. Add:
|
|
445
|
+
```yaml
|
|
446
|
+
members: [mehran-granfar]
|
|
447
|
+
```
|
|
448
|
+
(Sophie is excluded from members — she's the operator, not a recipient)
|
|
449
|
+
|
|
450
|
+
**engineering.yaml** — add `members` based on known engineering participants:
|
|
451
|
+
```yaml
|
|
452
|
+
members: [mehran-granfar]
|
|
453
|
+
```
|
|
454
|
+
|
|
455
|
+
**all-adaptic.yaml** — company-wide channel:
|
|
456
|
+
```yaml
|
|
457
|
+
members: [mehran-granfar, hootan-yazhari, bronwyn-leong, nima-masroori, shayan-kargarian]
|
|
458
|
+
```
|
|
459
|
+
|
|
460
|
+
**For all other channels** (dfsa-remediation, rollup-strategy, legal-compliance, general, product, platform, adaptic-engine): read the current file to identify participants and add an appropriate `members` list. Default to `[mehran-granfar]` if unclear — profiles should be updated as membership is confirmed.
|
|
461
|
+
|
|
462
|
+
- [ ] **Step 2: Verify all channel profiles have members**
|
|
463
|
+
|
|
464
|
+
```bash
|
|
465
|
+
for f in memory/profiles/channels/*.yaml; do
|
|
466
|
+
name=$(basename "$f" .yaml)
|
|
467
|
+
if grep -q "members:" "$f"; then
|
|
468
|
+
echo "OK: $name"
|
|
469
|
+
else
|
|
470
|
+
echo "MISSING: $name"
|
|
471
|
+
fi
|
|
472
|
+
done
|
|
473
|
+
```
|
|
474
|
+
|
|
475
|
+
Expected: `OK` for all channel profiles.
|
|
476
|
+
|
|
477
|
+
- [ ] **Step 3: Commit**
|
|
478
|
+
|
|
479
|
+
```bash
|
|
480
|
+
git add memory/profiles/channels/*.yaml
|
|
481
|
+
git commit -m "feat: add members field to channel profiles
|
|
482
|
+
|
|
483
|
+
Required for group communication disclosure assessment —
|
|
484
|
+
the barrier system checks against all channel members."
|
|
485
|
+
```
|
|
486
|
+
|
|
487
|
+
---
|
|
488
|
+
|
|
489
|
+
## Task 4: Create Provenance Index and Calibration Store
|
|
490
|
+
|
|
491
|
+
**Files:**
|
|
492
|
+
- Create: `memory/provenance/index.jsonl`
|
|
493
|
+
- Create: `memory/precedents/disclosure-calibration.yaml`
|
|
494
|
+
|
|
495
|
+
- [ ] **Step 1: Create the provenance index file**
|
|
496
|
+
|
|
497
|
+
```bash
|
|
498
|
+
mkdir -p memory/provenance
|
|
499
|
+
touch memory/provenance/index.jsonl
|
|
500
|
+
```
|
|
501
|
+
|
|
502
|
+
- [ ] **Step 2: Create the calibration precedent store**
|
|
503
|
+
|
|
504
|
+
```yaml
|
|
505
|
+
# memory/precedents/disclosure-calibration.yaml
|
|
506
|
+
# Calibration precedents for the disclosure assessment system
|
|
507
|
+
# Updated when Mehran overrides a block or flags a missed leak
|
|
508
|
+
# Read by: scripts/disclosure_assessment.py to adjust future assessments
|
|
509
|
+
|
|
510
|
+
calibration_entries: []
|
|
511
|
+
|
|
512
|
+
# Example entry format:
|
|
513
|
+
# - id: cal-001
|
|
514
|
+
# date: "2026-04-05"
|
|
515
|
+
# type: override # override (block was wrong) or miss (should have caught)
|
|
516
|
+
# recipient: shayan-kargarian
|
|
517
|
+
# matter: ftlab-jva
|
|
518
|
+
# original_severity: high
|
|
519
|
+
# corrected_action: allow # allow, block, strip
|
|
520
|
+
# reason: "Operational FTLab scheduling info is fine to share with Shayan"
|
|
521
|
+
# precedent_rule: "FTLab meeting scheduling logistics are operational, not strategic — safe to share with JV partner"
|
|
522
|
+
```
|
|
523
|
+
|
|
524
|
+
- [ ] **Step 3: Commit**
|
|
525
|
+
|
|
526
|
+
```bash
|
|
527
|
+
git add memory/provenance/index.jsonl memory/precedents/disclosure-calibration.yaml
|
|
528
|
+
git commit -m "feat: create provenance index and calibration store
|
|
529
|
+
|
|
530
|
+
Empty provenance index (populated at ingestion) and calibration
|
|
531
|
+
precedent store for disclosure assessment feedback loop."
|
|
532
|
+
```
|
|
533
|
+
|
|
534
|
+
---
|
|
535
|
+
|
|
536
|
+
## Task 5: Build Disclosure Boundary Generator
|
|
537
|
+
|
|
538
|
+
This is the core of Layer 1 (pre-draft guidance). It generates the `disclosure_boundaries` block that tells Sophie what NOT to reference for a given recipient.
|
|
539
|
+
|
|
540
|
+
**Files:**
|
|
541
|
+
- Create: `scripts/disclosure_boundaries.py`
|
|
542
|
+
|
|
543
|
+
- [ ] **Step 1: Create disclosure_boundaries.py**
|
|
544
|
+
|
|
545
|
+
Create the file at `scripts/disclosure_boundaries.py`. The module must:
|
|
546
|
+
|
|
547
|
+
1. Export `generate_disclosure_boundaries(recipient_slug, recent_context_hours=48)` that returns a dict with keys: `recipient_clearance_summary`, `active_conflicts`, `recent_sensitive_context`, `excluded_domains_active`. Returns `None` if no profile found.
|
|
548
|
+
|
|
549
|
+
2. Load user profiles from `memory/profiles/users/{slug}.yaml` using a minimal YAML parser (same pattern as `validate-outbound.py`).
|
|
550
|
+
|
|
551
|
+
3. Load recent provenance records from `memory/provenance/index.jsonl` within the lookback window.
|
|
552
|
+
|
|
553
|
+
4. Cross-reference provenance against the recipient's `information_boundaries`: flag records where the recipient was not present AND the matter is in their conflicts or the domain is in their excluded_domains.
|
|
554
|
+
|
|
555
|
+
5. Build a natural language `recipient_clearance_summary` from the profile fields.
|
|
556
|
+
|
|
557
|
+
6. Include a CLI entry point (`--recipient`, `--hours` args) that prints JSON to stdout.
|
|
558
|
+
|
|
559
|
+
Key implementation details:
|
|
560
|
+
- The YAML parser only needs to handle the subset used in profiles: top-level keys, nested mappings, lists of scalars, lists of mappings (for conflicts).
|
|
561
|
+
- Provenance records are JSONL with fields: `source_id`, `source_type`, `participants`, `originator`, `context_domain`, `matter`, `sensitivity_signals`, `timestamp`, `classification_confidence`.
|
|
562
|
+
- For the `recipient_clearance_summary`, concatenate: name, role, org, relationship, domains of interest, excluded domains, conflicts, party-to-matters.
|
|
563
|
+
- For unrestricted recipients (domains_of_interest == ["*"]), return a summary saying "unrestricted access" with empty conflicts/excluded/sensitive lists.
|
|
564
|
+
|
|
565
|
+
- [ ] **Step 2: Verify the module runs**
|
|
566
|
+
|
|
567
|
+
```bash
|
|
568
|
+
python3 scripts/disclosure_boundaries.py --recipient shayan-kargarian
|
|
569
|
+
```
|
|
570
|
+
|
|
571
|
+
Expected: JSON with `recipient_clearance_summary` containing Shayan's info, 2 active conflicts, 7+ excluded domains.
|
|
572
|
+
|
|
573
|
+
```bash
|
|
574
|
+
python3 scripts/disclosure_boundaries.py --recipient mehran-granfar
|
|
575
|
+
```
|
|
576
|
+
|
|
577
|
+
Expected: JSON with "unrestricted access" in summary, empty conflicts and excluded domains.
|
|
578
|
+
|
|
579
|
+
```bash
|
|
580
|
+
python3 scripts/disclosure_boundaries.py --recipient unknown-person
|
|
581
|
+
```
|
|
582
|
+
|
|
583
|
+
Expected: stderr message, exit code 0.
|
|
584
|
+
|
|
585
|
+
- [ ] **Step 3: Commit**
|
|
586
|
+
|
|
587
|
+
```bash
|
|
588
|
+
git add scripts/disclosure_boundaries.py
|
|
589
|
+
git commit -m "feat: disclosure boundary generator (Layer 1)
|
|
590
|
+
|
|
591
|
+
Generates dynamic disclosure boundary guidance for recipients
|
|
592
|
+
by cross-referencing their information_boundaries profile against
|
|
593
|
+
recent provenance records. Used by pre_draft_lookup.py."
|
|
594
|
+
```
|
|
595
|
+
|
|
596
|
+
---
|
|
597
|
+
|
|
598
|
+
## Task 6: Integrate Disclosure Boundaries into Pre-Draft Lookup
|
|
599
|
+
|
|
600
|
+
Extend `pre_draft_lookup.py` to call `generate_disclosure_boundaries()` and include the result in its return value and audit log.
|
|
601
|
+
|
|
602
|
+
**Files:**
|
|
603
|
+
- Modify: `scripts/pre_draft_lookup.py:1-222`
|
|
604
|
+
|
|
605
|
+
- [ ] **Step 1: Add import for disclosure_boundaries module**
|
|
606
|
+
|
|
607
|
+
After the existing `_pdc_module` import block (after line 46), add a try/except block that imports `generate_disclosure_boundaries` from `disclosure_boundaries.py` using the same `importlib.util` pattern used for `pre-draft-context.py`. Set a `_db_module` flag to `True` on success, `None` on failure.
|
|
608
|
+
|
|
609
|
+
- [ ] **Step 2: Add disclosure boundary call in pre_draft_lookup()**
|
|
610
|
+
|
|
611
|
+
Inside `pre_draft_lookup()`, after the `log_record["critical_facts"] = critical_facts` block (around line 153), add code that:
|
|
612
|
+
1. Checks `_db_module` is available
|
|
613
|
+
2. Derives the recipient slug from the entity name (lowercase, spaces to hyphens)
|
|
614
|
+
3. Calls `generate_disclosure_boundaries(slug)`
|
|
615
|
+
4. If boundaries returned, adds `context["disclosure_boundaries"] = disclosure_boundaries`
|
|
616
|
+
5. Adds to log_record: `disclosure_boundaries_generated` (bool), `active_conflicts_count` (int), `excluded_domains_count` (int), `recent_sensitive_count` (int)
|
|
617
|
+
6. Wraps everything in try/except (fail-open)
|
|
618
|
+
|
|
619
|
+
- [ ] **Step 3: Verify the integration**
|
|
620
|
+
|
|
621
|
+
```bash
|
|
622
|
+
python3 scripts/pre_draft_lookup.py --recipient "Shayan Kargarian" --type slack
|
|
623
|
+
```
|
|
624
|
+
|
|
625
|
+
Expected: JSON output with `status: found`. Check audit log:
|
|
626
|
+
```bash
|
|
627
|
+
tail -1 logs/audit/$(date -u +%Y-%m-%d)-pre-draft-lookups.jsonl | python3 -m json.tool | grep disclosure
|
|
628
|
+
```
|
|
629
|
+
|
|
630
|
+
Expected: `disclosure_boundaries_generated: true`, `active_conflicts_count: 2`.
|
|
631
|
+
|
|
632
|
+
- [ ] **Step 4: Commit**
|
|
633
|
+
|
|
634
|
+
```bash
|
|
635
|
+
git add scripts/pre_draft_lookup.py
|
|
636
|
+
git commit -m "feat: integrate disclosure boundaries into pre-draft lookup
|
|
637
|
+
|
|
638
|
+
Pre-draft lookup now returns disclosure_boundaries alongside
|
|
639
|
+
existing context. Audit log records boundary generation status."
|
|
640
|
+
```
|
|
641
|
+
|
|
642
|
+
---
|
|
643
|
+
|
|
644
|
+
## Task 7: Build Post-Draft Disclosure Assessment Engine
|
|
645
|
+
|
|
646
|
+
This is the core of Layer 2 (hard gate). It analyses a draft message against the recipient's boundaries and provenance data.
|
|
647
|
+
|
|
648
|
+
**Files:**
|
|
649
|
+
- Create: `scripts/disclosure_assessment.py`
|
|
650
|
+
|
|
651
|
+
- [ ] **Step 1: Create the assessment engine**
|
|
652
|
+
|
|
653
|
+
Create `scripts/disclosure_assessment.py`. The module must:
|
|
654
|
+
|
|
655
|
+
1. Export `assess_disclosure(draft, recipient_slug, channel=None, message_id=None)` returning a dict with: `outcome` ("passed"/"stripped"/"blocked"), `severity` (None/"low"/"medium"/"high"/"critical"), `action`, `references_assessed` (list), `assessment_duration_ms`.
|
|
656
|
+
|
|
657
|
+
2. Severity constants: `SEVERITY_ORDER = {"low": 0, "medium": 1, "high": 2, "critical": 3}` and `SEVERITY_ACTIONS = {"critical": "block_and_escalate", "high": "block_and_flag", "medium": "strip_and_send", "low": "warn_and_send"}`.
|
|
658
|
+
|
|
659
|
+
3. For channel messages, resolve all channel members from `memory/profiles/channels/` and assess against ALL restricted recipients. Most restrictive boundary wins.
|
|
660
|
+
|
|
661
|
+
4. For unrestricted recipients (domains_of_interest == ["*"]), skip assessment — always pass.
|
|
662
|
+
|
|
663
|
+
5. Reference matching: extract keywords from provenance `matter` and `source_id` fields, check if they appear in the draft text. Match confidence: "high" if 2+ keywords match, "medium" if 1.
|
|
664
|
+
|
|
665
|
+
6. Assessment criteria per matched reference per restricted recipient:
|
|
666
|
+
- **Privilege check**: FAIL (critical) if provenance has `legal_privilege` or `negotiation_position` signals
|
|
667
|
+
- **Conflict check**: FAIL (critical/high) if provenance matter is in recipient's conflicts
|
|
668
|
+
- **Participant check**: FAIL (medium) if recipient slug not in provenance participants
|
|
669
|
+
- **Domain check**: FAIL (high if combined with participant FAIL, medium if alone) if provenance domain is in recipient's excluded_domains
|
|
670
|
+
- **Necessity check**: Always "REVIEW" (contextual judgment deferred to LLM layer)
|
|
671
|
+
|
|
672
|
+
7. Low confidence escalation: if match confidence is "medium", escalate severity by one level.
|
|
673
|
+
|
|
674
|
+
8. Outcome determination: critical/high severity -> "blocked", medium -> "stripped", low/none -> "passed".
|
|
675
|
+
|
|
676
|
+
9. Audit logging: append to `logs/audit/{date}-disclosure-assessments.jsonl` with timestamp, message_id, channel, recipients, references_assessed, outcome, severity, action, draft_hash (sha256 truncated to 16 chars), assessment_duration_ms.
|
|
677
|
+
|
|
678
|
+
10. **Un-profiled recipients:** If the recipient has no profile in `memory/profiles/users/`, treat them as maximally restricted — all domains excluded, no domains of interest, no party-to-matters. Any provenance-matched reference triggers a block. Log a warning that the recipient has no profile.
|
|
679
|
+
|
|
680
|
+
11. CLI entry point: `--recipient`, `--channel`, `--message` (or stdin). Exit codes: 0=passed, 1=stripped, 2=blocked.
|
|
681
|
+
|
|
682
|
+
- [ ] **Step 2: Verify basic operation**
|
|
683
|
+
|
|
684
|
+
```bash
|
|
685
|
+
echo "Let's discuss the FTLab operations schedule" | python3 scripts/disclosure_assessment.py --recipient shayan-kargarian
|
|
686
|
+
```
|
|
687
|
+
|
|
688
|
+
Expected: `outcome: passed` (no provenance records to match).
|
|
689
|
+
|
|
690
|
+
```bash
|
|
691
|
+
echo "Test" | python3 scripts/disclosure_assessment.py --recipient mehran-granfar
|
|
692
|
+
```
|
|
693
|
+
|
|
694
|
+
Expected: `outcome: passed` (unrestricted recipient).
|
|
695
|
+
|
|
696
|
+
- [ ] **Step 3: Commit**
|
|
697
|
+
|
|
698
|
+
```bash
|
|
699
|
+
git add scripts/disclosure_assessment.py
|
|
700
|
+
git commit -m "feat: post-draft disclosure assessment engine (Layer 2)
|
|
701
|
+
|
|
702
|
+
Hard gate that analyses draft messages against recipient boundaries
|
|
703
|
+
and provenance records. Five assessment criteria with severity-based
|
|
704
|
+
action routing (block/strip/warn/pass)."
|
|
705
|
+
```
|
|
706
|
+
|
|
707
|
+
---
|
|
708
|
+
|
|
709
|
+
## Task 8: Add Rule 6 to Validation Pipeline
|
|
710
|
+
|
|
711
|
+
**Files:**
|
|
712
|
+
- Modify: `config/validation-rules.yaml`
|
|
713
|
+
|
|
714
|
+
- [ ] **Step 1: Append Rule 6 to validation-rules.yaml**
|
|
715
|
+
|
|
716
|
+
Add after the existing `global:` section at the end of the file:
|
|
717
|
+
|
|
718
|
+
```yaml
|
|
719
|
+
# ─────────────────────────────────────────────
|
|
720
|
+
# Rule 6: Disclosure Assessment (Information Barrier)
|
|
721
|
+
# Assesses whether substantive references in the draft are appropriate
|
|
722
|
+
# to share with the recipient. Dynamic severity per reference.
|
|
723
|
+
# Created: 2026-04-05 — triggered by JVA/Shayan information leak
|
|
724
|
+
# ─────────────────────────────────────────────
|
|
725
|
+
disclosure_assessment:
|
|
726
|
+
enabled: true
|
|
727
|
+
severity: dynamic
|
|
728
|
+
description: >
|
|
729
|
+
Assess whether substantive references in the draft are appropriate
|
|
730
|
+
to share with the recipient, based on information provenance,
|
|
731
|
+
recipient boundary profiles, and contextual judgment.
|
|
732
|
+
assessment_criteria:
|
|
733
|
+
- privilege_check
|
|
734
|
+
- conflict_check
|
|
735
|
+
- participant_check
|
|
736
|
+
- domain_check
|
|
737
|
+
- necessity_check
|
|
738
|
+
data_sources:
|
|
739
|
+
user_profiles: memory/profiles/users/
|
|
740
|
+
provenance_index: memory/provenance/index.jsonl
|
|
741
|
+
barrier_policy: policies/information-barriers.yaml
|
|
742
|
+
actions:
|
|
743
|
+
critical: block_and_escalate
|
|
744
|
+
high: block_and_flag
|
|
745
|
+
medium: strip_and_send
|
|
746
|
+
low: warn_and_send
|
|
747
|
+
low_confidence_escalation: true
|
|
748
|
+
timeout_ms: 3000
|
|
749
|
+
timeout_action: block_and_flag
|
|
750
|
+
```
|
|
751
|
+
|
|
752
|
+
- [ ] **Step 2: Commit**
|
|
753
|
+
|
|
754
|
+
```bash
|
|
755
|
+
git add config/validation-rules.yaml
|
|
756
|
+
git commit -m "feat: add Rule 6 (disclosure assessment) to validation pipeline
|
|
757
|
+
|
|
758
|
+
Dynamic severity rule that assesses information disclosure
|
|
759
|
+
appropriateness for each recipient before sending."
|
|
760
|
+
```
|
|
761
|
+
|
|
762
|
+
---
|
|
763
|
+
|
|
764
|
+
## Task 9: Integrate Disclosure Assessment into validate-outbound.py
|
|
765
|
+
|
|
766
|
+
**Files:**
|
|
767
|
+
- Modify: `scripts/validate-outbound.py`
|
|
768
|
+
|
|
769
|
+
- [ ] **Step 1: Read the full validate-outbound.py to find the integration point**
|
|
770
|
+
|
|
771
|
+
Read the file to identify where the existing rules are evaluated and where results are collected. Find the main validation function and the point after all five rules have been checked.
|
|
772
|
+
|
|
773
|
+
- [ ] **Step 2: Add import for disclosure_assessment module**
|
|
774
|
+
|
|
775
|
+
Near the top of the file, after existing imports, add a try/except block that imports the `disclosure_assessment` module using `importlib.util` (same pattern as the existing imports). Set `_da_module` on success.
|
|
776
|
+
|
|
777
|
+
- [ ] **Step 3: Add disclosure assessment call after existing rules**
|
|
778
|
+
|
|
779
|
+
In the main validation flow, after all five existing rules have been checked and their issues collected, add code that:
|
|
780
|
+
1. Checks `_da_module` is available and `disclosure_assessment` rule is enabled in config
|
|
781
|
+
2. Derives recipient slug from recipient name
|
|
782
|
+
3. Calls `_da_module.assess_disclosure(message, recipient_slug, channel=channel)`
|
|
783
|
+
4. If outcome is "blocked": appends a `block` severity issue with the assessment details
|
|
784
|
+
5. If outcome is "stripped": appends a `warn` severity issue
|
|
785
|
+
6. Wraps in try/except (fail-open — assessment errors don't block sends)
|
|
786
|
+
|
|
787
|
+
- [ ] **Step 4: Verify integration**
|
|
788
|
+
|
|
789
|
+
```bash
|
|
790
|
+
echo "Test message with no sensitive content" | python3 scripts/validate-outbound.py --type slack --recipient "Shayan Kargarian"
|
|
791
|
+
```
|
|
792
|
+
|
|
793
|
+
Expected: `status: clean` (no provenance records to match against).
|
|
794
|
+
|
|
795
|
+
- [ ] **Step 5: Commit**
|
|
796
|
+
|
|
797
|
+
```bash
|
|
798
|
+
git add scripts/validate-outbound.py
|
|
799
|
+
git commit -m "feat: integrate disclosure assessment (Rule 6) into validate-outbound.py
|
|
800
|
+
|
|
801
|
+
Post-draft disclosure assessment now runs as part of the pre-send
|
|
802
|
+
validation pipeline. Blocked disclosures prevent message sending."
|
|
803
|
+
```
|
|
804
|
+
|
|
805
|
+
---
|
|
806
|
+
|
|
807
|
+
## Task 10: Test Suite
|
|
808
|
+
|
|
809
|
+
**Files:**
|
|
810
|
+
- Create: `scripts/test-information-barriers.py`
|
|
811
|
+
|
|
812
|
+
- [ ] **Step 1: Create the test file**
|
|
813
|
+
|
|
814
|
+
Create `scripts/test-information-barriers.py` following the same pattern as `scripts/test-pre-draft-integration.py` (custom test runner with pass/fail counters, section headers).
|
|
815
|
+
|
|
816
|
+
Test sections:
|
|
817
|
+
|
|
818
|
+
**1. Module Imports** — verify `disclosure_boundaries` and `disclosure_assessment` import.
|
|
819
|
+
|
|
820
|
+
**2. Disclosure Boundary Generation:**
|
|
821
|
+
- Shayan: boundaries not None, 2 active conflicts (JVA + Seed SAFE), 7+ excluded domains, summary mentions partner/JV/FTLab
|
|
822
|
+
- Mehran: unrestricted, no conflicts, no excluded domains
|
|
823
|
+
- Nima: boundaries present, no conflicts, has excluded domains (engineering, product)
|
|
824
|
+
- Unknown person: returns None
|
|
825
|
+
|
|
826
|
+
**3. Disclosure Assessment — Basic Cases:**
|
|
827
|
+
- Clean message to Shayan (no provenance): passes
|
|
828
|
+
- Empty draft: passes
|
|
829
|
+
- Message to Mehran (unrestricted): always passes
|
|
830
|
+
|
|
831
|
+
**4. Disclosure Assessment — With Provenance:**
|
|
832
|
+
Write test provenance records to `memory/provenance/index.jsonl` (save and restore original content):
|
|
833
|
+
- Record 1: JVA review meeting (Mehran + Nima), domain=adaptic-internal-legal, matter=jva-review-adaptic-group-investments, signals=[legal_privilege, negotiation_position]
|
|
834
|
+
- Record 2: FTLab ops meeting (Mehran + Shayan), domain=ftlab-operations, matter=ftlab-operations, signals=[]
|
|
835
|
+
- Record 3: Seed SAFE email (Mehran + Nima), domain=adaptic-financial, matter=seed-safe-review, signals=[financial_terms, negotiation_position]
|
|
836
|
+
|
|
837
|
+
Scenario tests:
|
|
838
|
+
- **Shayan incident**: Draft referencing JVA review + governance terms -> BLOCKED, critical/high severity, privilege and conflict checks FAIL
|
|
839
|
+
- **Legitimate FTLab ops**: Draft about FTLab ops to Shayan -> PASSED or low severity (he was participant, domain is allowed)
|
|
840
|
+
- **Seed SAFE to Shayan**: Draft about seed safe valuation terms -> BLOCKED
|
|
841
|
+
- **JVA to Nima**: Draft about JVA to Nima -> PASSED (he was participant)
|
|
842
|
+
- **Mehran always passes**: Sensitive content to Mehran -> PASSED
|
|
843
|
+
|
|
844
|
+
**5. Severity Routing:**
|
|
845
|
+
- Verify SEVERITY_ACTIONS mapping: critical->block_and_escalate, high->block_and_flag, medium->strip_and_send, low->warn_and_send
|
|
846
|
+
- Verify SEVERITY_ORDER: critical > high > medium > low
|
|
847
|
+
|
|
848
|
+
**6. Boundary Generation with Provenance:**
|
|
849
|
+
- With test provenance records, Shayan boundaries should include recent_sensitive_context entries
|
|
850
|
+
- JVA meeting should be flagged (Shayan not present + conflict matter)
|
|
851
|
+
|
|
852
|
+
**7. Audit Logging:**
|
|
853
|
+
- Run an assessment, verify audit log file exists at `logs/audit/{date}-disclosure-assessments.jsonl`
|
|
854
|
+
- Verify last entry has: timestamp, outcome, recipients, draft_hash
|
|
855
|
+
|
|
856
|
+
Always restore original provenance file content in a finally block.
|
|
857
|
+
|
|
858
|
+
- [ ] **Step 2: Run the test suite**
|
|
859
|
+
|
|
860
|
+
```bash
|
|
861
|
+
python3 scripts/test-information-barriers.py
|
|
862
|
+
```
|
|
863
|
+
|
|
864
|
+
Expected: All tests pass.
|
|
865
|
+
|
|
866
|
+
- [ ] **Step 3: Commit**
|
|
867
|
+
|
|
868
|
+
```bash
|
|
869
|
+
git add scripts/test-information-barriers.py
|
|
870
|
+
git commit -m "test: information barrier test suite
|
|
871
|
+
|
|
872
|
+
Tests boundary generation, disclosure assessment, severity routing,
|
|
873
|
+
scenario tests (Shayan incident, legitimate FTLab ops, Nima access),
|
|
874
|
+
audit logging, and edge cases."
|
|
875
|
+
```
|
|
876
|
+
|
|
877
|
+
---
|
|
878
|
+
|
|
879
|
+
## Task 11: Save Feedback Memory
|
|
880
|
+
|
|
881
|
+
**Files:**
|
|
882
|
+
- Create: `/Users/sophie/.claude/projects/-Users-sophie-sophie-ai/memory/feedback_information_barriers.md`
|
|
883
|
+
- Modify: `/Users/sophie/.claude/projects/-Users-sophie-sophie-ai/memory/MEMORY.md`
|
|
884
|
+
|
|
885
|
+
- [ ] **Step 1: Save the incident as a feedback memory**
|
|
886
|
+
|
|
887
|
+
```markdown
|
|
888
|
+
---
|
|
889
|
+
name: Information barrier system
|
|
890
|
+
description: Never share confidential information across recipient boundaries — enforce dynamic disclosure assessment on all outbound communications
|
|
891
|
+
type: feedback
|
|
892
|
+
---
|
|
893
|
+
|
|
894
|
+
Never share information from confidential meetings/conversations with recipients who were not present or who have conflicts of interest on the matter. This applies to ALL outbound channels (Slack, email, WhatsApp, SMS, voice, documents).
|
|
895
|
+
|
|
896
|
+
**Why:** Sophie leaked JVA/Seed SAFE review content from a Mehran + Nima legal meeting into a Slack message to Shayan Kargarian (counterparty on JVA, interested party on Seed SAFE). This was a serious information barrier breach.
|
|
897
|
+
|
|
898
|
+
**How to apply:** Before composing any outbound message, check the recipient's `information_boundaries` in their profile. The pre-draft lookup now returns `disclosure_boundaries` with active conflicts, excluded domains, and recent sensitive context. The post-draft assessment (Rule 6 in validate-outbound.py) programmatically checks drafts against provenance records. System spec: `docs/superpowers/specs/2026-04-05-information-barrier-design.md`.
|
|
899
|
+
```
|
|
900
|
+
|
|
901
|
+
- [ ] **Step 2: Update MEMORY.md index**
|
|
902
|
+
|
|
903
|
+
Add line:
|
|
904
|
+
```
|
|
905
|
+
- [Information barrier system](feedback_information_barriers.md) — Never share confidential info across recipient boundaries; dynamic disclosure assessment on all outbound
|
|
906
|
+
```
|
|
907
|
+
|
|
908
|
+
---
|
|
909
|
+
|
|
910
|
+
## Execution Summary
|
|
911
|
+
|
|
912
|
+
| Task | What | Files | Key Deliverable |
|
|
913
|
+
|------|------|-------|----------------|
|
|
914
|
+
| 1 | Barrier policy config | 1 new | `policies/information-barriers.yaml` |
|
|
915
|
+
| 2 | User profile boundaries | 8 modified | `information_boundaries` on all profiles |
|
|
916
|
+
| 3 | Channel profile members | 10 modified | `members` field on all channels |
|
|
917
|
+
| 4 | Provenance index + calibration | 2 new | Empty stores ready for data |
|
|
918
|
+
| 5 | Disclosure boundary generator | 1 new | `scripts/disclosure_boundaries.py` |
|
|
919
|
+
| 6 | Pre-draft lookup integration | 1 modified | Boundaries in pre-draft return |
|
|
920
|
+
| 7 | Disclosure assessment engine | 1 new | `scripts/disclosure_assessment.py` |
|
|
921
|
+
| 8 | Validation Rule 6 config | 1 modified | Rule 6 in `validation-rules.yaml` |
|
|
922
|
+
| 9 | validate-outbound.py integration | 1 modified | Assessment in validation pipeline |
|
|
923
|
+
| 10 | Test suite | 1 new | `scripts/test-information-barriers.py` |
|
|
924
|
+
| 11 | Feedback memory | 2 files | Persistent learning from incident |
|
|
925
|
+
|
|
926
|
+
**Total: 6 new files, 20 modified files, ~1,000 lines of new code.**
|