@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.
Files changed (854) hide show
  1. package/.claude/commands/init-agent.md +99 -0
  2. package/.claude/commands/init-maestro.md +565 -0
  3. package/.claude/settings.json +114 -0
  4. package/.env.example +152 -0
  5. package/README.md +491 -0
  6. package/agents/board-prep/agent.md +80 -0
  7. package/agents/browser-operator/agent.md +52 -0
  8. package/agents/calendar-ops/agent.md +50 -0
  9. package/agents/capital-raising/agent.md +69 -0
  10. package/agents/ceo-briefing/agent.md +72 -0
  11. package/agents/communications/agent.md +69 -0
  12. package/agents/competitive-intelligence/agent.md +49 -0
  13. package/agents/corporate-development/agent.md +66 -0
  14. package/agents/decision-log/agent.md +65 -0
  15. package/agents/desktop-operator/agent.md +59 -0
  16. package/agents/engineering-coordination/agent.md +51 -0
  17. package/agents/founder-voice/agent.md +72 -0
  18. package/agents/fund-ops/agent.md +52 -0
  19. package/agents/gmail-operator/agent.md +62 -0
  20. package/agents/hiring-org-design/agent.md +119 -0
  21. package/agents/inbound-dispatcher/agent.md +66 -0
  22. package/agents/legal-structuring/agent.md +65 -0
  23. package/agents/market-research/agent.md +48 -0
  24. package/agents/partnerships/agent.md +59 -0
  25. package/agents/platform-architecture/agent.md +57 -0
  26. package/agents/pmo-execution/agent.md +60 -0
  27. package/agents/product-strategy/agent.md +50 -0
  28. package/agents/regulatory-dfsa/agent.md +96 -0
  29. package/agents/risk-register/agent.md +62 -0
  30. package/agents/rollup-target-sourcing/agent.md +59 -0
  31. package/agents/session-spawner/agent.md +64 -0
  32. package/agents/slack-operator/agent.md +60 -0
  33. package/agents/sophie-chief-of-staff/agent.md +134 -0
  34. package/agents/strategic-planning/agent.md +54 -0
  35. package/agents/whatsapp-operator/agent.md +60 -0
  36. package/agents/workflow-automation/agent.md +61 -0
  37. package/bin/maestro.mjs +388 -0
  38. package/desktop-control/README.md +56 -0
  39. package/desktop-control/app-profiles/gmail.yaml +120 -0
  40. package/desktop-control/app-profiles/slack.yaml +315 -0
  41. package/desktop-control/app-profiles/whatsapp.yaml +107 -0
  42. package/docs/architecture/agent-topology.md +2222 -0
  43. package/docs/architecture/continuous-monitoring.md +221 -0
  44. package/docs/architecture/mcp-capability-map.md +560 -0
  45. package/docs/architecture/system-architecture.md +1273 -0
  46. package/docs/business-synthesis/ADAPTIC-GROUP-FINAL-OWNERSHIP-STRUCTURE.pdf +13667 -10
  47. package/docs/business-synthesis/adaptic-overview.md +296 -0
  48. package/docs/business-synthesis/executive-operating-model.md +261 -0
  49. package/docs/governance/action-approval-model.md +331 -0
  50. package/docs/governance/communications-policy.md +410 -0
  51. package/docs/governance/desktop-control-safety.md +499 -0
  52. package/docs/guides/agent-persona-setup.md +600 -0
  53. package/docs/operating-charter.md +87 -0
  54. package/docs/prompts/board-pack-cover-template.md +37 -0
  55. package/docs/prompts/decision-recommendation-template.md +88 -0
  56. package/docs/prompts/followup-message-template.md +141 -0
  57. package/docs/prompts/investor-letter-template.md +52 -0
  58. package/docs/prompts/morning-brief-template.md +82 -0
  59. package/docs/prompts/presentation-template.md +58 -0
  60. package/docs/prompts/weekly-strategic-memo-template.md +104 -0
  61. package/docs/runbooks/mac-mini-bootstrap.md +404 -0
  62. package/docs/runbooks/perpetual-operations.md +505 -0
  63. package/docs/runbooks/recovery-and-failover.md +588 -0
  64. package/docs/superpowers/plans/2026-04-02-phase0-operational-foundation.md +2550 -0
  65. package/docs/superpowers/plans/2026-04-03-phase1-executive-core.md +1085 -0
  66. package/docs/superpowers/plans/2026-04-03-phase2-people-product-commercial.md +739 -0
  67. package/docs/superpowers/plans/2026-04-05-information-barrier-implementation.md +926 -0
  68. package/docs/superpowers/plans/2026-04-06-session-context-dedup.md +1994 -0
  69. package/docs/superpowers/specs/2026-04-02-phase0-operational-foundation-design.md +842 -0
  70. package/docs/superpowers/specs/2026-04-03-phase1-executive-core-design.md +516 -0
  71. package/docs/superpowers/specs/2026-04-03-phase2-people-product-commercial-design.md +452 -0
  72. package/docs/superpowers/specs/2026-04-03-phase3-4-final-towers-design.md +129 -0
  73. package/docs/superpowers/specs/2026-04-05-information-barrier-design.md +678 -0
  74. package/docs/superpowers/specs/2026-04-05-reactive-daemon-design.md +237 -0
  75. package/docs/superpowers/specs/2026-04-06-session-context-dedup-design.md +369 -0
  76. package/docs/workflows/executive-cadence.md +218 -0
  77. package/ingest/README.md +87 -0
  78. package/mcp/README.md +51 -0
  79. package/package.json +48 -0
  80. package/plugins/maestro-skills/plugin.json +55 -0
  81. package/plugins/maestro-skills/skills/board-deck.md +68 -0
  82. package/plugins/maestro-skills/skills/decision-brief.md +89 -0
  83. package/plugins/maestro-skills/skills/draft-comms.md +84 -0
  84. package/plugins/maestro-skills/skills/evening-wrap.md +53 -0
  85. package/plugins/maestro-skills/skills/hiring-triage.md +74 -0
  86. package/plugins/maestro-skills/skills/inbox-triage.md +61 -0
  87. package/plugins/maestro-skills/skills/morning-brief.md +54 -0
  88. package/plugins/maestro-skills/skills/pipeline-review.md +76 -0
  89. package/plugins/maestro-skills/skills/regulatory-status.md +81 -0
  90. package/plugins/maestro-skills/skills/schedule-meeting.md +91 -0
  91. package/plugins/maestro-skills/skills/slack-followup.md +64 -0
  92. package/plugins/maestro-skills/skills/weekly-memo.md +70 -0
  93. package/policies/action-classification.yaml +110 -0
  94. package/policies/information-barriers.yaml +119 -0
  95. package/policies/prompt-injection-defence.yaml +138 -0
  96. package/public/assets/adaptic-icon-dark.png +0 -0
  97. package/public/assets/adaptic-icon-dark.svg +4 -0
  98. package/public/assets/adaptic-icon-light.svg +4 -0
  99. package/public/assets/adaptic-logo-dark.svg +17 -0
  100. package/public/assets/adaptic-logo-light.svg +17 -0
  101. package/scaffold/CLAUDE.md +21 -0
  102. package/scaffold/config/agent.ts +69 -0
  103. package/scaffold/config/agent.ts.example +218 -0
  104. package/schedules/README.md +49 -0
  105. package/schedules/triggers/backlog-executor.md +102 -0
  106. package/schedules/triggers/daily-evening-wrap.md +142 -0
  107. package/schedules/triggers/daily-midday-sweep.md +58 -0
  108. package/schedules/triggers/daily-morning-brief.md +55 -0
  109. package/schedules/triggers/inbox-processor.md +115 -0
  110. package/schedules/triggers/meeting-action-capture.md +60 -0
  111. package/schedules/triggers/meeting-prep.md +69 -0
  112. package/schedules/triggers/quarterly-self-assessment.md +54 -0
  113. package/schedules/triggers/weekly-engineering-health.md +37 -0
  114. package/schedules/triggers/weekly-execution.md +67 -0
  115. package/schedules/triggers/weekly-hiring.md +53 -0
  116. package/schedules/triggers/weekly-priorities.md +38 -0
  117. package/schedules/triggers/weekly-strategic-memo.md +124 -0
  118. package/scripts/__pycache__/disclosure_assessment.cpython-313.pyc +0 -0
  119. package/scripts/__pycache__/disclosure_boundaries.cpython-313.pyc +0 -0
  120. package/scripts/__pycache__/email_quote_thread.cpython-313.pyc +0 -0
  121. package/scripts/__pycache__/email_thread_dedup.cpython-313.pyc +0 -0
  122. package/scripts/__pycache__/mehran-inbox-poller.cpython-313.pyc +0 -0
  123. package/scripts/__pycache__/outbound_dedup.cpython-313.pyc +0 -0
  124. package/scripts/__pycache__/pre-draft-context.cpython-313.pyc +0 -0
  125. package/scripts/__pycache__/pre_draft_lookup.cpython-313.pyc +0 -0
  126. package/scripts/__pycache__/send-email-as-mehran.cpython-313.pyc +0 -0
  127. package/scripts/__pycache__/send-email-threaded.cpython-313.pyc +0 -0
  128. package/scripts/__pycache__/send-email-with-attachment.cpython-313.pyc +0 -0
  129. package/scripts/__pycache__/validate_outbound.cpython-313.pyc +0 -0
  130. package/scripts/airtable-crm-populate.md +99 -0
  131. package/scripts/archive-email.sh +41 -0
  132. package/scripts/comms-monitor.sh +285 -0
  133. package/scripts/configure-whatsapp-sandbox.sh +201 -0
  134. package/scripts/continuous-monitor.sh +86 -0
  135. package/scripts/daemon/classifier.mjs +355 -0
  136. package/scripts/daemon/context-compiler.mjs +490 -0
  137. package/scripts/daemon/dispatcher.mjs +385 -0
  138. package/scripts/daemon/health.mjs +72 -0
  139. package/scripts/daemon/prompt-builder.mjs +426 -0
  140. package/scripts/daemon/responder.mjs +547 -0
  141. package/scripts/daemon/session-lock.mjs +520 -0
  142. package/scripts/daemon/sophie-daemon.mjs +521 -0
  143. package/scripts/daemon/test-context-compiler.mjs +238 -0
  144. package/scripts/daemon/test-integration.mjs +130 -0
  145. package/scripts/daemon/test-session-lock.mjs +215 -0
  146. package/scripts/disclosure_assessment.py +873 -0
  147. package/scripts/disclosure_boundaries.py +562 -0
  148. package/scripts/email-signature-mehran.html +52 -0
  149. package/scripts/email-signature.html +44 -0
  150. package/scripts/email_quote_thread.py +167 -0
  151. package/scripts/email_thread_dedup.py +361 -0
  152. package/scripts/emergency-stop.sh +41 -0
  153. package/scripts/healthcheck.sh +110 -0
  154. package/scripts/hooks/block-mcp-slack-send.sh +7 -0
  155. package/scripts/hooks/post-action-log.sh +17 -0
  156. package/scripts/hooks/pre-send-audit.sh +57 -0
  157. package/scripts/hooks/session-end-log.sh +27 -0
  158. package/scripts/huddle/audio-bridge.mjs +664 -0
  159. package/scripts/huddle/boot-slack-cdp.sh +102 -0
  160. package/scripts/huddle/huddle-controller.mjs +942 -0
  161. package/scripts/huddle/huddle-server.mjs +1059 -0
  162. package/scripts/huddle/launch-slack.sh +232 -0
  163. package/scripts/huddle/node_modules/.package-lock.json +50 -0
  164. package/scripts/huddle/node_modules/@anthropic-ai/sdk/CHANGELOG.md +1677 -0
  165. package/scripts/huddle/node_modules/@anthropic-ai/sdk/LICENSE +8 -0
  166. package/scripts/huddle/node_modules/@anthropic-ai/sdk/README.md +674 -0
  167. package/scripts/huddle/node_modules/@anthropic-ai/sdk/_vendor/partial-json-parser/parser.d.mts +3 -0
  168. package/scripts/huddle/node_modules/@anthropic-ai/sdk/_vendor/partial-json-parser/parser.d.mts.map +1 -0
  169. package/scripts/huddle/node_modules/@anthropic-ai/sdk/_vendor/partial-json-parser/parser.d.ts +3 -0
  170. package/scripts/huddle/node_modules/@anthropic-ai/sdk/_vendor/partial-json-parser/parser.d.ts.map +1 -0
  171. package/scripts/huddle/node_modules/@anthropic-ai/sdk/_vendor/partial-json-parser/parser.js +226 -0
  172. package/scripts/huddle/node_modules/@anthropic-ai/sdk/_vendor/partial-json-parser/parser.js.map +1 -0
  173. package/scripts/huddle/node_modules/@anthropic-ai/sdk/_vendor/partial-json-parser/parser.mjs +223 -0
  174. package/scripts/huddle/node_modules/@anthropic-ai/sdk/_vendor/partial-json-parser/parser.mjs.map +1 -0
  175. package/scripts/huddle/node_modules/@anthropic-ai/sdk/api-promise.d.mts +2 -0
  176. package/scripts/huddle/node_modules/@anthropic-ai/sdk/api-promise.d.mts.map +1 -0
  177. package/scripts/huddle/node_modules/@anthropic-ai/sdk/api-promise.d.ts +2 -0
  178. package/scripts/huddle/node_modules/@anthropic-ai/sdk/api-promise.d.ts.map +1 -0
  179. package/scripts/huddle/node_modules/@anthropic-ai/sdk/api-promise.js +6 -0
  180. package/scripts/huddle/node_modules/@anthropic-ai/sdk/api-promise.js.map +1 -0
  181. package/scripts/huddle/node_modules/@anthropic-ai/sdk/api-promise.mjs +2 -0
  182. package/scripts/huddle/node_modules/@anthropic-ai/sdk/api-promise.mjs.map +1 -0
  183. package/scripts/huddle/node_modules/@anthropic-ai/sdk/bin/cli +53 -0
  184. package/scripts/huddle/node_modules/@anthropic-ai/sdk/bin/migration-config.json +7 -0
  185. package/scripts/huddle/node_modules/@anthropic-ai/sdk/client.d.mts +225 -0
  186. package/scripts/huddle/node_modules/@anthropic-ai/sdk/client.d.mts.map +1 -0
  187. package/scripts/huddle/node_modules/@anthropic-ai/sdk/client.d.ts +225 -0
  188. package/scripts/huddle/node_modules/@anthropic-ai/sdk/client.d.ts.map +1 -0
  189. package/scripts/huddle/node_modules/@anthropic-ai/sdk/client.js +536 -0
  190. package/scripts/huddle/node_modules/@anthropic-ai/sdk/client.js.map +1 -0
  191. package/scripts/huddle/node_modules/@anthropic-ai/sdk/client.mjs +531 -0
  192. package/scripts/huddle/node_modules/@anthropic-ai/sdk/client.mjs.map +1 -0
  193. package/scripts/huddle/node_modules/@anthropic-ai/sdk/core/api-promise.d.mts +49 -0
  194. package/scripts/huddle/node_modules/@anthropic-ai/sdk/core/api-promise.d.mts.map +1 -0
  195. package/scripts/huddle/node_modules/@anthropic-ai/sdk/core/api-promise.d.ts +49 -0
  196. package/scripts/huddle/node_modules/@anthropic-ai/sdk/core/api-promise.d.ts.map +1 -0
  197. package/scripts/huddle/node_modules/@anthropic-ai/sdk/core/api-promise.js +76 -0
  198. package/scripts/huddle/node_modules/@anthropic-ai/sdk/core/api-promise.js.map +1 -0
  199. package/scripts/huddle/node_modules/@anthropic-ai/sdk/core/api-promise.mjs +72 -0
  200. package/scripts/huddle/node_modules/@anthropic-ai/sdk/core/api-promise.mjs.map +1 -0
  201. package/scripts/huddle/node_modules/@anthropic-ai/sdk/core/error.d.mts +47 -0
  202. package/scripts/huddle/node_modules/@anthropic-ai/sdk/core/error.d.mts.map +1 -0
  203. package/scripts/huddle/node_modules/@anthropic-ai/sdk/core/error.d.ts +47 -0
  204. package/scripts/huddle/node_modules/@anthropic-ai/sdk/core/error.d.ts.map +1 -0
  205. package/scripts/huddle/node_modules/@anthropic-ai/sdk/core/error.js +114 -0
  206. package/scripts/huddle/node_modules/@anthropic-ai/sdk/core/error.js.map +1 -0
  207. package/scripts/huddle/node_modules/@anthropic-ai/sdk/core/error.mjs +98 -0
  208. package/scripts/huddle/node_modules/@anthropic-ai/sdk/core/error.mjs.map +1 -0
  209. package/scripts/huddle/node_modules/@anthropic-ai/sdk/core/pagination.d.mts +63 -0
  210. package/scripts/huddle/node_modules/@anthropic-ai/sdk/core/pagination.d.mts.map +1 -0
  211. package/scripts/huddle/node_modules/@anthropic-ai/sdk/core/pagination.d.ts +63 -0
  212. package/scripts/huddle/node_modules/@anthropic-ai/sdk/core/pagination.d.ts.map +1 -0
  213. package/scripts/huddle/node_modules/@anthropic-ai/sdk/core/pagination.js +123 -0
  214. package/scripts/huddle/node_modules/@anthropic-ai/sdk/core/pagination.js.map +1 -0
  215. package/scripts/huddle/node_modules/@anthropic-ai/sdk/core/pagination.mjs +117 -0
  216. package/scripts/huddle/node_modules/@anthropic-ai/sdk/core/pagination.mjs.map +1 -0
  217. package/scripts/huddle/node_modules/@anthropic-ai/sdk/core/resource.d.mts +6 -0
  218. package/scripts/huddle/node_modules/@anthropic-ai/sdk/core/resource.d.mts.map +1 -0
  219. package/scripts/huddle/node_modules/@anthropic-ai/sdk/core/resource.d.ts +6 -0
  220. package/scripts/huddle/node_modules/@anthropic-ai/sdk/core/resource.d.ts.map +1 -0
  221. package/scripts/huddle/node_modules/@anthropic-ai/sdk/core/resource.js +11 -0
  222. package/scripts/huddle/node_modules/@anthropic-ai/sdk/core/resource.js.map +1 -0
  223. package/scripts/huddle/node_modules/@anthropic-ai/sdk/core/resource.mjs +7 -0
  224. package/scripts/huddle/node_modules/@anthropic-ai/sdk/core/resource.mjs.map +1 -0
  225. package/scripts/huddle/node_modules/@anthropic-ai/sdk/core/streaming.d.mts +31 -0
  226. package/scripts/huddle/node_modules/@anthropic-ai/sdk/core/streaming.d.mts.map +1 -0
  227. package/scripts/huddle/node_modules/@anthropic-ai/sdk/core/streaming.d.ts +31 -0
  228. package/scripts/huddle/node_modules/@anthropic-ai/sdk/core/streaming.d.ts.map +1 -0
  229. package/scripts/huddle/node_modules/@anthropic-ai/sdk/core/streaming.js +282 -0
  230. package/scripts/huddle/node_modules/@anthropic-ai/sdk/core/streaming.js.map +1 -0
  231. package/scripts/huddle/node_modules/@anthropic-ai/sdk/core/streaming.mjs +277 -0
  232. package/scripts/huddle/node_modules/@anthropic-ai/sdk/core/streaming.mjs.map +1 -0
  233. package/scripts/huddle/node_modules/@anthropic-ai/sdk/core/uploads.d.mts +3 -0
  234. package/scripts/huddle/node_modules/@anthropic-ai/sdk/core/uploads.d.mts.map +1 -0
  235. package/scripts/huddle/node_modules/@anthropic-ai/sdk/core/uploads.d.ts +3 -0
  236. package/scripts/huddle/node_modules/@anthropic-ai/sdk/core/uploads.d.ts.map +1 -0
  237. package/scripts/huddle/node_modules/@anthropic-ai/sdk/core/uploads.js +6 -0
  238. package/scripts/huddle/node_modules/@anthropic-ai/sdk/core/uploads.js.map +1 -0
  239. package/scripts/huddle/node_modules/@anthropic-ai/sdk/core/uploads.mjs +2 -0
  240. package/scripts/huddle/node_modules/@anthropic-ai/sdk/core/uploads.mjs.map +1 -0
  241. package/scripts/huddle/node_modules/@anthropic-ai/sdk/error.d.mts +2 -0
  242. package/scripts/huddle/node_modules/@anthropic-ai/sdk/error.d.mts.map +1 -0
  243. package/scripts/huddle/node_modules/@anthropic-ai/sdk/error.d.ts +2 -0
  244. package/scripts/huddle/node_modules/@anthropic-ai/sdk/error.d.ts.map +1 -0
  245. package/scripts/huddle/node_modules/@anthropic-ai/sdk/error.js +6 -0
  246. package/scripts/huddle/node_modules/@anthropic-ai/sdk/error.js.map +1 -0
  247. package/scripts/huddle/node_modules/@anthropic-ai/sdk/error.mjs +2 -0
  248. package/scripts/huddle/node_modules/@anthropic-ai/sdk/error.mjs.map +1 -0
  249. package/scripts/huddle/node_modules/@anthropic-ai/sdk/index.d.mts +7 -0
  250. package/scripts/huddle/node_modules/@anthropic-ai/sdk/index.d.mts.map +1 -0
  251. package/scripts/huddle/node_modules/@anthropic-ai/sdk/index.d.ts +7 -0
  252. package/scripts/huddle/node_modules/@anthropic-ai/sdk/index.d.ts.map +1 -0
  253. package/scripts/huddle/node_modules/@anthropic-ai/sdk/index.js +35 -0
  254. package/scripts/huddle/node_modules/@anthropic-ai/sdk/index.js.map +1 -0
  255. package/scripts/huddle/node_modules/@anthropic-ai/sdk/index.mjs +8 -0
  256. package/scripts/huddle/node_modules/@anthropic-ai/sdk/index.mjs.map +1 -0
  257. package/scripts/huddle/node_modules/@anthropic-ai/sdk/internal/builtin-types.d.mts +73 -0
  258. package/scripts/huddle/node_modules/@anthropic-ai/sdk/internal/builtin-types.d.mts.map +1 -0
  259. package/scripts/huddle/node_modules/@anthropic-ai/sdk/internal/builtin-types.d.ts +73 -0
  260. package/scripts/huddle/node_modules/@anthropic-ai/sdk/internal/builtin-types.d.ts.map +1 -0
  261. package/scripts/huddle/node_modules/@anthropic-ai/sdk/internal/builtin-types.js +4 -0
  262. package/scripts/huddle/node_modules/@anthropic-ai/sdk/internal/builtin-types.js.map +1 -0
  263. package/scripts/huddle/node_modules/@anthropic-ai/sdk/internal/builtin-types.mjs +3 -0
  264. package/scripts/huddle/node_modules/@anthropic-ai/sdk/internal/builtin-types.mjs.map +1 -0
  265. package/scripts/huddle/node_modules/@anthropic-ai/sdk/internal/constants.d.mts +5 -0
  266. package/scripts/huddle/node_modules/@anthropic-ai/sdk/internal/constants.d.mts.map +1 -0
  267. package/scripts/huddle/node_modules/@anthropic-ai/sdk/internal/constants.d.ts +5 -0
  268. package/scripts/huddle/node_modules/@anthropic-ai/sdk/internal/constants.d.ts.map +1 -0
  269. package/scripts/huddle/node_modules/@anthropic-ai/sdk/internal/constants.js +15 -0
  270. package/scripts/huddle/node_modules/@anthropic-ai/sdk/internal/constants.js.map +1 -0
  271. package/scripts/huddle/node_modules/@anthropic-ai/sdk/internal/constants.mjs +12 -0
  272. package/scripts/huddle/node_modules/@anthropic-ai/sdk/internal/constants.mjs.map +1 -0
  273. package/scripts/huddle/node_modules/@anthropic-ai/sdk/internal/decoders/jsonl.d.mts +10 -0
  274. package/scripts/huddle/node_modules/@anthropic-ai/sdk/internal/decoders/jsonl.d.mts.map +1 -0
  275. package/scripts/huddle/node_modules/@anthropic-ai/sdk/internal/decoders/jsonl.d.ts +10 -0
  276. package/scripts/huddle/node_modules/@anthropic-ai/sdk/internal/decoders/jsonl.d.ts.map +1 -0
  277. package/scripts/huddle/node_modules/@anthropic-ai/sdk/internal/decoders/jsonl.js +39 -0
  278. package/scripts/huddle/node_modules/@anthropic-ai/sdk/internal/decoders/jsonl.js.map +1 -0
  279. package/scripts/huddle/node_modules/@anthropic-ai/sdk/internal/decoders/jsonl.mjs +35 -0
  280. package/scripts/huddle/node_modules/@anthropic-ai/sdk/internal/decoders/jsonl.mjs.map +1 -0
  281. package/scripts/huddle/node_modules/@anthropic-ai/sdk/internal/decoders/line.d.mts +17 -0
  282. package/scripts/huddle/node_modules/@anthropic-ai/sdk/internal/decoders/line.d.mts.map +1 -0
  283. package/scripts/huddle/node_modules/@anthropic-ai/sdk/internal/decoders/line.d.ts +17 -0
  284. package/scripts/huddle/node_modules/@anthropic-ai/sdk/internal/decoders/line.d.ts.map +1 -0
  285. package/scripts/huddle/node_modules/@anthropic-ai/sdk/internal/decoders/line.js +113 -0
  286. package/scripts/huddle/node_modules/@anthropic-ai/sdk/internal/decoders/line.js.map +1 -0
  287. package/scripts/huddle/node_modules/@anthropic-ai/sdk/internal/decoders/line.mjs +108 -0
  288. package/scripts/huddle/node_modules/@anthropic-ai/sdk/internal/decoders/line.mjs.map +1 -0
  289. package/scripts/huddle/node_modules/@anthropic-ai/sdk/internal/detect-platform.d.mts +15 -0
  290. package/scripts/huddle/node_modules/@anthropic-ai/sdk/internal/detect-platform.d.mts.map +1 -0
  291. package/scripts/huddle/node_modules/@anthropic-ai/sdk/internal/detect-platform.d.ts +15 -0
  292. package/scripts/huddle/node_modules/@anthropic-ai/sdk/internal/detect-platform.d.ts.map +1 -0
  293. package/scripts/huddle/node_modules/@anthropic-ai/sdk/internal/detect-platform.js +162 -0
  294. package/scripts/huddle/node_modules/@anthropic-ai/sdk/internal/detect-platform.js.map +1 -0
  295. package/scripts/huddle/node_modules/@anthropic-ai/sdk/internal/detect-platform.mjs +157 -0
  296. package/scripts/huddle/node_modules/@anthropic-ai/sdk/internal/detect-platform.mjs.map +1 -0
  297. package/scripts/huddle/node_modules/@anthropic-ai/sdk/internal/errors.d.mts +3 -0
  298. package/scripts/huddle/node_modules/@anthropic-ai/sdk/internal/errors.d.mts.map +1 -0
  299. package/scripts/huddle/node_modules/@anthropic-ai/sdk/internal/errors.d.ts +3 -0
  300. package/scripts/huddle/node_modules/@anthropic-ai/sdk/internal/errors.d.ts.map +1 -0
  301. package/scripts/huddle/node_modules/@anthropic-ai/sdk/internal/errors.js +41 -0
  302. package/scripts/huddle/node_modules/@anthropic-ai/sdk/internal/errors.js.map +1 -0
  303. package/scripts/huddle/node_modules/@anthropic-ai/sdk/internal/errors.mjs +36 -0
  304. package/scripts/huddle/node_modules/@anthropic-ai/sdk/internal/errors.mjs.map +1 -0
  305. package/scripts/huddle/node_modules/@anthropic-ai/sdk/internal/headers.d.mts +22 -0
  306. package/scripts/huddle/node_modules/@anthropic-ai/sdk/internal/headers.d.mts.map +1 -0
  307. package/scripts/huddle/node_modules/@anthropic-ai/sdk/internal/headers.d.ts +22 -0
  308. package/scripts/huddle/node_modules/@anthropic-ai/sdk/internal/headers.d.ts.map +1 -0
  309. package/scripts/huddle/node_modules/@anthropic-ai/sdk/internal/headers.js +79 -0
  310. package/scripts/huddle/node_modules/@anthropic-ai/sdk/internal/headers.js.map +1 -0
  311. package/scripts/huddle/node_modules/@anthropic-ai/sdk/internal/headers.mjs +74 -0
  312. package/scripts/huddle/node_modules/@anthropic-ai/sdk/internal/headers.mjs.map +1 -0
  313. package/scripts/huddle/node_modules/@anthropic-ai/sdk/internal/parse.d.mts +17 -0
  314. package/scripts/huddle/node_modules/@anthropic-ai/sdk/internal/parse.d.mts.map +1 -0
  315. package/scripts/huddle/node_modules/@anthropic-ai/sdk/internal/parse.d.ts +17 -0
  316. package/scripts/huddle/node_modules/@anthropic-ai/sdk/internal/parse.d.ts.map +1 -0
  317. package/scripts/huddle/node_modules/@anthropic-ai/sdk/internal/parse.js +55 -0
  318. package/scripts/huddle/node_modules/@anthropic-ai/sdk/internal/parse.js.map +1 -0
  319. package/scripts/huddle/node_modules/@anthropic-ai/sdk/internal/parse.mjs +51 -0
  320. package/scripts/huddle/node_modules/@anthropic-ai/sdk/internal/parse.mjs.map +1 -0
  321. package/scripts/huddle/node_modules/@anthropic-ai/sdk/internal/request-options.d.mts +34 -0
  322. package/scripts/huddle/node_modules/@anthropic-ai/sdk/internal/request-options.d.mts.map +1 -0
  323. package/scripts/huddle/node_modules/@anthropic-ai/sdk/internal/request-options.d.ts +34 -0
  324. package/scripts/huddle/node_modules/@anthropic-ai/sdk/internal/request-options.d.ts.map +1 -0
  325. package/scripts/huddle/node_modules/@anthropic-ai/sdk/internal/request-options.js +14 -0
  326. package/scripts/huddle/node_modules/@anthropic-ai/sdk/internal/request-options.js.map +1 -0
  327. package/scripts/huddle/node_modules/@anthropic-ai/sdk/internal/request-options.mjs +10 -0
  328. package/scripts/huddle/node_modules/@anthropic-ai/sdk/internal/request-options.mjs.map +1 -0
  329. package/scripts/huddle/node_modules/@anthropic-ai/sdk/internal/shim-types.d.mts +28 -0
  330. package/scripts/huddle/node_modules/@anthropic-ai/sdk/internal/shim-types.d.ts +28 -0
  331. package/scripts/huddle/node_modules/@anthropic-ai/sdk/internal/shims.d.mts +20 -0
  332. package/scripts/huddle/node_modules/@anthropic-ai/sdk/internal/shims.d.mts.map +1 -0
  333. package/scripts/huddle/node_modules/@anthropic-ai/sdk/internal/shims.d.ts +20 -0
  334. package/scripts/huddle/node_modules/@anthropic-ai/sdk/internal/shims.d.ts.map +1 -0
  335. package/scripts/huddle/node_modules/@anthropic-ai/sdk/internal/shims.js +92 -0
  336. package/scripts/huddle/node_modules/@anthropic-ai/sdk/internal/shims.js.map +1 -0
  337. package/scripts/huddle/node_modules/@anthropic-ai/sdk/internal/shims.mjs +85 -0
  338. package/scripts/huddle/node_modules/@anthropic-ai/sdk/internal/shims.mjs.map +1 -0
  339. package/scripts/huddle/node_modules/@anthropic-ai/sdk/internal/stream-utils.d.mts +8 -0
  340. package/scripts/huddle/node_modules/@anthropic-ai/sdk/internal/stream-utils.d.mts.map +1 -0
  341. package/scripts/huddle/node_modules/@anthropic-ai/sdk/internal/stream-utils.d.ts +8 -0
  342. package/scripts/huddle/node_modules/@anthropic-ai/sdk/internal/stream-utils.d.ts.map +1 -0
  343. package/scripts/huddle/node_modules/@anthropic-ai/sdk/internal/stream-utils.js +38 -0
  344. package/scripts/huddle/node_modules/@anthropic-ai/sdk/internal/stream-utils.js.map +1 -0
  345. package/scripts/huddle/node_modules/@anthropic-ai/sdk/internal/stream-utils.mjs +35 -0
  346. package/scripts/huddle/node_modules/@anthropic-ai/sdk/internal/stream-utils.mjs.map +1 -0
  347. package/scripts/huddle/node_modules/@anthropic-ai/sdk/internal/to-file.d.mts +45 -0
  348. package/scripts/huddle/node_modules/@anthropic-ai/sdk/internal/to-file.d.mts.map +1 -0
  349. package/scripts/huddle/node_modules/@anthropic-ai/sdk/internal/to-file.d.ts +45 -0
  350. package/scripts/huddle/node_modules/@anthropic-ai/sdk/internal/to-file.d.ts.map +1 -0
  351. package/scripts/huddle/node_modules/@anthropic-ai/sdk/internal/to-file.js +96 -0
  352. package/scripts/huddle/node_modules/@anthropic-ai/sdk/internal/to-file.js.map +1 -0
  353. package/scripts/huddle/node_modules/@anthropic-ai/sdk/internal/to-file.mjs +93 -0
  354. package/scripts/huddle/node_modules/@anthropic-ai/sdk/internal/to-file.mjs.map +1 -0
  355. package/scripts/huddle/node_modules/@anthropic-ai/sdk/internal/tslib.js +81 -0
  356. package/scripts/huddle/node_modules/@anthropic-ai/sdk/internal/tslib.mjs +17 -0
  357. package/scripts/huddle/node_modules/@anthropic-ai/sdk/internal/types.d.mts +67 -0
  358. package/scripts/huddle/node_modules/@anthropic-ai/sdk/internal/types.d.mts.map +1 -0
  359. package/scripts/huddle/node_modules/@anthropic-ai/sdk/internal/types.d.ts +67 -0
  360. package/scripts/huddle/node_modules/@anthropic-ai/sdk/internal/types.d.ts.map +1 -0
  361. package/scripts/huddle/node_modules/@anthropic-ai/sdk/internal/types.js +4 -0
  362. package/scripts/huddle/node_modules/@anthropic-ai/sdk/internal/types.js.map +1 -0
  363. package/scripts/huddle/node_modules/@anthropic-ai/sdk/internal/types.mjs +3 -0
  364. package/scripts/huddle/node_modules/@anthropic-ai/sdk/internal/types.mjs.map +1 -0
  365. package/scripts/huddle/node_modules/@anthropic-ai/sdk/internal/uploads.d.mts +42 -0
  366. package/scripts/huddle/node_modules/@anthropic-ai/sdk/internal/uploads.d.mts.map +1 -0
  367. package/scripts/huddle/node_modules/@anthropic-ai/sdk/internal/uploads.d.ts +42 -0
  368. package/scripts/huddle/node_modules/@anthropic-ai/sdk/internal/uploads.d.ts.map +1 -0
  369. package/scripts/huddle/node_modules/@anthropic-ai/sdk/internal/uploads.js +146 -0
  370. package/scripts/huddle/node_modules/@anthropic-ai/sdk/internal/uploads.js.map +1 -0
  371. package/scripts/huddle/node_modules/@anthropic-ai/sdk/internal/uploads.mjs +136 -0
  372. package/scripts/huddle/node_modules/@anthropic-ai/sdk/internal/uploads.mjs.map +1 -0
  373. package/scripts/huddle/node_modules/@anthropic-ai/sdk/internal/utils/base64.d.mts +3 -0
  374. package/scripts/huddle/node_modules/@anthropic-ai/sdk/internal/utils/base64.d.mts.map +1 -0
  375. package/scripts/huddle/node_modules/@anthropic-ai/sdk/internal/utils/base64.d.ts +3 -0
  376. package/scripts/huddle/node_modules/@anthropic-ai/sdk/internal/utils/base64.d.ts.map +1 -0
  377. package/scripts/huddle/node_modules/@anthropic-ai/sdk/internal/utils/base64.js +38 -0
  378. package/scripts/huddle/node_modules/@anthropic-ai/sdk/internal/utils/base64.js.map +1 -0
  379. package/scripts/huddle/node_modules/@anthropic-ai/sdk/internal/utils/base64.mjs +33 -0
  380. package/scripts/huddle/node_modules/@anthropic-ai/sdk/internal/utils/base64.mjs.map +1 -0
  381. package/scripts/huddle/node_modules/@anthropic-ai/sdk/internal/utils/bytes.d.mts +4 -0
  382. package/scripts/huddle/node_modules/@anthropic-ai/sdk/internal/utils/bytes.d.mts.map +1 -0
  383. package/scripts/huddle/node_modules/@anthropic-ai/sdk/internal/utils/bytes.d.ts +4 -0
  384. package/scripts/huddle/node_modules/@anthropic-ai/sdk/internal/utils/bytes.d.ts.map +1 -0
  385. package/scripts/huddle/node_modules/@anthropic-ai/sdk/internal/utils/bytes.js +31 -0
  386. package/scripts/huddle/node_modules/@anthropic-ai/sdk/internal/utils/bytes.js.map +1 -0
  387. package/scripts/huddle/node_modules/@anthropic-ai/sdk/internal/utils/bytes.mjs +26 -0
  388. package/scripts/huddle/node_modules/@anthropic-ai/sdk/internal/utils/bytes.mjs.map +1 -0
  389. package/scripts/huddle/node_modules/@anthropic-ai/sdk/internal/utils/env.d.mts +9 -0
  390. package/scripts/huddle/node_modules/@anthropic-ai/sdk/internal/utils/env.d.mts.map +1 -0
  391. package/scripts/huddle/node_modules/@anthropic-ai/sdk/internal/utils/env.d.ts +9 -0
  392. package/scripts/huddle/node_modules/@anthropic-ai/sdk/internal/utils/env.d.ts.map +1 -0
  393. package/scripts/huddle/node_modules/@anthropic-ai/sdk/internal/utils/env.js +22 -0
  394. package/scripts/huddle/node_modules/@anthropic-ai/sdk/internal/utils/env.js.map +1 -0
  395. package/scripts/huddle/node_modules/@anthropic-ai/sdk/internal/utils/env.mjs +18 -0
  396. package/scripts/huddle/node_modules/@anthropic-ai/sdk/internal/utils/env.mjs.map +1 -0
  397. package/scripts/huddle/node_modules/@anthropic-ai/sdk/internal/utils/log.d.mts +37 -0
  398. package/scripts/huddle/node_modules/@anthropic-ai/sdk/internal/utils/log.d.mts.map +1 -0
  399. package/scripts/huddle/node_modules/@anthropic-ai/sdk/internal/utils/log.d.ts +37 -0
  400. package/scripts/huddle/node_modules/@anthropic-ai/sdk/internal/utils/log.d.ts.map +1 -0
  401. package/scripts/huddle/node_modules/@anthropic-ai/sdk/internal/utils/log.js +86 -0
  402. package/scripts/huddle/node_modules/@anthropic-ai/sdk/internal/utils/log.js.map +1 -0
  403. package/scripts/huddle/node_modules/@anthropic-ai/sdk/internal/utils/log.mjs +80 -0
  404. package/scripts/huddle/node_modules/@anthropic-ai/sdk/internal/utils/log.mjs.map +1 -0
  405. package/scripts/huddle/node_modules/@anthropic-ai/sdk/internal/utils/path.d.mts +15 -0
  406. package/scripts/huddle/node_modules/@anthropic-ai/sdk/internal/utils/path.d.mts.map +1 -0
  407. package/scripts/huddle/node_modules/@anthropic-ai/sdk/internal/utils/path.d.ts +15 -0
  408. package/scripts/huddle/node_modules/@anthropic-ai/sdk/internal/utils/path.d.ts.map +1 -0
  409. package/scripts/huddle/node_modules/@anthropic-ai/sdk/internal/utils/path.js +58 -0
  410. package/scripts/huddle/node_modules/@anthropic-ai/sdk/internal/utils/path.js.map +1 -0
  411. package/scripts/huddle/node_modules/@anthropic-ai/sdk/internal/utils/path.mjs +53 -0
  412. package/scripts/huddle/node_modules/@anthropic-ai/sdk/internal/utils/path.mjs.map +1 -0
  413. package/scripts/huddle/node_modules/@anthropic-ai/sdk/internal/utils/sleep.d.mts +2 -0
  414. package/scripts/huddle/node_modules/@anthropic-ai/sdk/internal/utils/sleep.d.mts.map +1 -0
  415. package/scripts/huddle/node_modules/@anthropic-ai/sdk/internal/utils/sleep.d.ts +2 -0
  416. package/scripts/huddle/node_modules/@anthropic-ai/sdk/internal/utils/sleep.d.ts.map +1 -0
  417. package/scripts/huddle/node_modules/@anthropic-ai/sdk/internal/utils/sleep.js +7 -0
  418. package/scripts/huddle/node_modules/@anthropic-ai/sdk/internal/utils/sleep.js.map +1 -0
  419. package/scripts/huddle/node_modules/@anthropic-ai/sdk/internal/utils/sleep.mjs +3 -0
  420. package/scripts/huddle/node_modules/@anthropic-ai/sdk/internal/utils/sleep.mjs.map +1 -0
  421. package/scripts/huddle/node_modules/@anthropic-ai/sdk/internal/utils/uuid.d.mts +5 -0
  422. package/scripts/huddle/node_modules/@anthropic-ai/sdk/internal/utils/uuid.d.mts.map +1 -0
  423. package/scripts/huddle/node_modules/@anthropic-ai/sdk/internal/utils/uuid.d.ts +5 -0
  424. package/scripts/huddle/node_modules/@anthropic-ai/sdk/internal/utils/uuid.d.ts.map +1 -0
  425. package/scripts/huddle/node_modules/@anthropic-ai/sdk/internal/utils/uuid.js +19 -0
  426. package/scripts/huddle/node_modules/@anthropic-ai/sdk/internal/utils/uuid.js.map +1 -0
  427. package/scripts/huddle/node_modules/@anthropic-ai/sdk/internal/utils/uuid.mjs +15 -0
  428. package/scripts/huddle/node_modules/@anthropic-ai/sdk/internal/utils/uuid.mjs.map +1 -0
  429. package/scripts/huddle/node_modules/@anthropic-ai/sdk/internal/utils/values.d.mts +16 -0
  430. package/scripts/huddle/node_modules/@anthropic-ai/sdk/internal/utils/values.d.mts.map +1 -0
  431. package/scripts/huddle/node_modules/@anthropic-ai/sdk/internal/utils/values.d.ts +16 -0
  432. package/scripts/huddle/node_modules/@anthropic-ai/sdk/internal/utils/values.d.ts.map +1 -0
  433. package/scripts/huddle/node_modules/@anthropic-ai/sdk/internal/utils/values.js +109 -0
  434. package/scripts/huddle/node_modules/@anthropic-ai/sdk/internal/utils/values.js.map +1 -0
  435. package/scripts/huddle/node_modules/@anthropic-ai/sdk/internal/utils/values.mjs +92 -0
  436. package/scripts/huddle/node_modules/@anthropic-ai/sdk/internal/utils/values.mjs.map +1 -0
  437. package/scripts/huddle/node_modules/@anthropic-ai/sdk/internal/utils.d.mts +7 -0
  438. package/scripts/huddle/node_modules/@anthropic-ai/sdk/internal/utils.d.mts.map +1 -0
  439. package/scripts/huddle/node_modules/@anthropic-ai/sdk/internal/utils.d.ts +7 -0
  440. package/scripts/huddle/node_modules/@anthropic-ai/sdk/internal/utils.d.ts.map +1 -0
  441. package/scripts/huddle/node_modules/@anthropic-ai/sdk/internal/utils.js +11 -0
  442. package/scripts/huddle/node_modules/@anthropic-ai/sdk/internal/utils.js.map +1 -0
  443. package/scripts/huddle/node_modules/@anthropic-ai/sdk/internal/utils.mjs +8 -0
  444. package/scripts/huddle/node_modules/@anthropic-ai/sdk/internal/utils.mjs.map +1 -0
  445. package/scripts/huddle/node_modules/@anthropic-ai/sdk/lib/BetaMessageStream.d.mts +114 -0
  446. package/scripts/huddle/node_modules/@anthropic-ai/sdk/lib/BetaMessageStream.d.mts.map +1 -0
  447. package/scripts/huddle/node_modules/@anthropic-ai/sdk/lib/BetaMessageStream.d.ts +114 -0
  448. package/scripts/huddle/node_modules/@anthropic-ai/sdk/lib/BetaMessageStream.d.ts.map +1 -0
  449. package/scripts/huddle/node_modules/@anthropic-ai/sdk/lib/BetaMessageStream.js +553 -0
  450. package/scripts/huddle/node_modules/@anthropic-ai/sdk/lib/BetaMessageStream.js.map +1 -0
  451. package/scripts/huddle/node_modules/@anthropic-ai/sdk/lib/BetaMessageStream.mjs +549 -0
  452. package/scripts/huddle/node_modules/@anthropic-ai/sdk/lib/BetaMessageStream.mjs.map +1 -0
  453. package/scripts/huddle/node_modules/@anthropic-ai/sdk/lib/MessageStream.d.mts +114 -0
  454. package/scripts/huddle/node_modules/@anthropic-ai/sdk/lib/MessageStream.d.mts.map +1 -0
  455. package/scripts/huddle/node_modules/@anthropic-ai/sdk/lib/MessageStream.d.ts +114 -0
  456. package/scripts/huddle/node_modules/@anthropic-ai/sdk/lib/MessageStream.d.ts.map +1 -0
  457. package/scripts/huddle/node_modules/@anthropic-ai/sdk/lib/MessageStream.js +553 -0
  458. package/scripts/huddle/node_modules/@anthropic-ai/sdk/lib/MessageStream.js.map +1 -0
  459. package/scripts/huddle/node_modules/@anthropic-ai/sdk/lib/MessageStream.mjs +549 -0
  460. package/scripts/huddle/node_modules/@anthropic-ai/sdk/lib/MessageStream.mjs.map +1 -0
  461. package/scripts/huddle/node_modules/@anthropic-ai/sdk/package.json +185 -0
  462. package/scripts/huddle/node_modules/@anthropic-ai/sdk/pagination.d.mts +2 -0
  463. package/scripts/huddle/node_modules/@anthropic-ai/sdk/pagination.d.mts.map +1 -0
  464. package/scripts/huddle/node_modules/@anthropic-ai/sdk/pagination.d.ts +2 -0
  465. package/scripts/huddle/node_modules/@anthropic-ai/sdk/pagination.d.ts.map +1 -0
  466. package/scripts/huddle/node_modules/@anthropic-ai/sdk/pagination.js +6 -0
  467. package/scripts/huddle/node_modules/@anthropic-ai/sdk/pagination.js.map +1 -0
  468. package/scripts/huddle/node_modules/@anthropic-ai/sdk/pagination.mjs +2 -0
  469. package/scripts/huddle/node_modules/@anthropic-ai/sdk/pagination.mjs.map +1 -0
  470. package/scripts/huddle/node_modules/@anthropic-ai/sdk/resource.d.mts +2 -0
  471. package/scripts/huddle/node_modules/@anthropic-ai/sdk/resource.d.mts.map +1 -0
  472. package/scripts/huddle/node_modules/@anthropic-ai/sdk/resource.d.ts +2 -0
  473. package/scripts/huddle/node_modules/@anthropic-ai/sdk/resource.d.ts.map +1 -0
  474. package/scripts/huddle/node_modules/@anthropic-ai/sdk/resource.js +6 -0
  475. package/scripts/huddle/node_modules/@anthropic-ai/sdk/resource.js.map +1 -0
  476. package/scripts/huddle/node_modules/@anthropic-ai/sdk/resource.mjs +2 -0
  477. package/scripts/huddle/node_modules/@anthropic-ai/sdk/resource.mjs.map +1 -0
  478. package/scripts/huddle/node_modules/@anthropic-ai/sdk/resources/beta/beta.d.mts +61 -0
  479. package/scripts/huddle/node_modules/@anthropic-ai/sdk/resources/beta/beta.d.mts.map +1 -0
  480. package/scripts/huddle/node_modules/@anthropic-ai/sdk/resources/beta/beta.d.ts +61 -0
  481. package/scripts/huddle/node_modules/@anthropic-ai/sdk/resources/beta/beta.d.ts.map +1 -0
  482. package/scripts/huddle/node_modules/@anthropic-ai/sdk/resources/beta/beta.js +25 -0
  483. package/scripts/huddle/node_modules/@anthropic-ai/sdk/resources/beta/beta.js.map +1 -0
  484. package/scripts/huddle/node_modules/@anthropic-ai/sdk/resources/beta/beta.mjs +20 -0
  485. package/scripts/huddle/node_modules/@anthropic-ai/sdk/resources/beta/beta.mjs.map +1 -0
  486. package/scripts/huddle/node_modules/@anthropic-ai/sdk/resources/beta/files.d.mts +151 -0
  487. package/scripts/huddle/node_modules/@anthropic-ai/sdk/resources/beta/files.d.mts.map +1 -0
  488. package/scripts/huddle/node_modules/@anthropic-ai/sdk/resources/beta/files.d.ts +151 -0
  489. package/scripts/huddle/node_modules/@anthropic-ai/sdk/resources/beta/files.d.ts.map +1 -0
  490. package/scripts/huddle/node_modules/@anthropic-ai/sdk/resources/beta/files.js +122 -0
  491. package/scripts/huddle/node_modules/@anthropic-ai/sdk/resources/beta/files.js.map +1 -0
  492. package/scripts/huddle/node_modules/@anthropic-ai/sdk/resources/beta/files.mjs +118 -0
  493. package/scripts/huddle/node_modules/@anthropic-ai/sdk/resources/beta/files.mjs.map +1 -0
  494. package/scripts/huddle/node_modules/@anthropic-ai/sdk/resources/beta/index.d.mts +5 -0
  495. package/scripts/huddle/node_modules/@anthropic-ai/sdk/resources/beta/index.d.mts.map +1 -0
  496. package/scripts/huddle/node_modules/@anthropic-ai/sdk/resources/beta/index.d.ts +5 -0
  497. package/scripts/huddle/node_modules/@anthropic-ai/sdk/resources/beta/index.d.ts.map +1 -0
  498. package/scripts/huddle/node_modules/@anthropic-ai/sdk/resources/beta/index.js +13 -0
  499. package/scripts/huddle/node_modules/@anthropic-ai/sdk/resources/beta/index.js.map +1 -0
  500. package/scripts/huddle/node_modules/@anthropic-ai/sdk/resources/beta/index.mjs +6 -0
  501. package/scripts/huddle/node_modules/@anthropic-ai/sdk/resources/beta/index.mjs.map +1 -0
  502. package/scripts/huddle/node_modules/@anthropic-ai/sdk/resources/beta/messages/batches.d.mts +343 -0
  503. package/scripts/huddle/node_modules/@anthropic-ai/sdk/resources/beta/messages/batches.d.mts.map +1 -0
  504. package/scripts/huddle/node_modules/@anthropic-ai/sdk/resources/beta/messages/batches.d.ts +343 -0
  505. package/scripts/huddle/node_modules/@anthropic-ai/sdk/resources/beta/messages/batches.d.ts.map +1 -0
  506. package/scripts/huddle/node_modules/@anthropic-ai/sdk/resources/beta/messages/batches.js +204 -0
  507. package/scripts/huddle/node_modules/@anthropic-ai/sdk/resources/beta/messages/batches.js.map +1 -0
  508. package/scripts/huddle/node_modules/@anthropic-ai/sdk/resources/beta/messages/batches.mjs +200 -0
  509. package/scripts/huddle/node_modules/@anthropic-ai/sdk/resources/beta/messages/batches.mjs.map +1 -0
  510. package/scripts/huddle/node_modules/@anthropic-ai/sdk/resources/beta/messages/index.d.mts +3 -0
  511. package/scripts/huddle/node_modules/@anthropic-ai/sdk/resources/beta/messages/index.d.mts.map +1 -0
  512. package/scripts/huddle/node_modules/@anthropic-ai/sdk/resources/beta/messages/index.d.ts +3 -0
  513. package/scripts/huddle/node_modules/@anthropic-ai/sdk/resources/beta/messages/index.d.ts.map +1 -0
  514. package/scripts/huddle/node_modules/@anthropic-ai/sdk/resources/beta/messages/index.js +9 -0
  515. package/scripts/huddle/node_modules/@anthropic-ai/sdk/resources/beta/messages/index.js.map +1 -0
  516. package/scripts/huddle/node_modules/@anthropic-ai/sdk/resources/beta/messages/index.mjs +4 -0
  517. package/scripts/huddle/node_modules/@anthropic-ai/sdk/resources/beta/messages/index.mjs.map +1 -0
  518. package/scripts/huddle/node_modules/@anthropic-ai/sdk/resources/beta/messages/messages.d.mts +1561 -0
  519. package/scripts/huddle/node_modules/@anthropic-ai/sdk/resources/beta/messages/messages.d.mts.map +1 -0
  520. package/scripts/huddle/node_modules/@anthropic-ai/sdk/resources/beta/messages/messages.d.ts +1561 -0
  521. package/scripts/huddle/node_modules/@anthropic-ai/sdk/resources/beta/messages/messages.d.ts.map +1 -0
  522. package/scripts/huddle/node_modules/@anthropic-ai/sdk/resources/beta/messages/messages.js +86 -0
  523. package/scripts/huddle/node_modules/@anthropic-ai/sdk/resources/beta/messages/messages.js.map +1 -0
  524. package/scripts/huddle/node_modules/@anthropic-ai/sdk/resources/beta/messages/messages.mjs +81 -0
  525. package/scripts/huddle/node_modules/@anthropic-ai/sdk/resources/beta/messages/messages.mjs.map +1 -0
  526. package/scripts/huddle/node_modules/@anthropic-ai/sdk/resources/beta/messages.d.mts +2 -0
  527. package/scripts/huddle/node_modules/@anthropic-ai/sdk/resources/beta/messages.d.mts.map +1 -0
  528. package/scripts/huddle/node_modules/@anthropic-ai/sdk/resources/beta/messages.d.ts +2 -0
  529. package/scripts/huddle/node_modules/@anthropic-ai/sdk/resources/beta/messages.d.ts.map +1 -0
  530. package/scripts/huddle/node_modules/@anthropic-ai/sdk/resources/beta/messages.js +6 -0
  531. package/scripts/huddle/node_modules/@anthropic-ai/sdk/resources/beta/messages.js.map +1 -0
  532. package/scripts/huddle/node_modules/@anthropic-ai/sdk/resources/beta/messages.mjs +3 -0
  533. package/scripts/huddle/node_modules/@anthropic-ai/sdk/resources/beta/messages.mjs.map +1 -0
  534. package/scripts/huddle/node_modules/@anthropic-ai/sdk/resources/beta/models.d.mts +74 -0
  535. package/scripts/huddle/node_modules/@anthropic-ai/sdk/resources/beta/models.d.mts.map +1 -0
  536. package/scripts/huddle/node_modules/@anthropic-ai/sdk/resources/beta/models.d.ts +74 -0
  537. package/scripts/huddle/node_modules/@anthropic-ai/sdk/resources/beta/models.d.ts.map +1 -0
  538. package/scripts/huddle/node_modules/@anthropic-ai/sdk/resources/beta/models.js +60 -0
  539. package/scripts/huddle/node_modules/@anthropic-ai/sdk/resources/beta/models.js.map +1 -0
  540. package/scripts/huddle/node_modules/@anthropic-ai/sdk/resources/beta/models.mjs +56 -0
  541. package/scripts/huddle/node_modules/@anthropic-ai/sdk/resources/beta/models.mjs.map +1 -0
  542. package/scripts/huddle/node_modules/@anthropic-ai/sdk/resources/beta.d.mts +2 -0
  543. package/scripts/huddle/node_modules/@anthropic-ai/sdk/resources/beta.d.mts.map +1 -0
  544. package/scripts/huddle/node_modules/@anthropic-ai/sdk/resources/beta.d.ts +2 -0
  545. package/scripts/huddle/node_modules/@anthropic-ai/sdk/resources/beta.d.ts.map +1 -0
  546. package/scripts/huddle/node_modules/@anthropic-ai/sdk/resources/beta.js +6 -0
  547. package/scripts/huddle/node_modules/@anthropic-ai/sdk/resources/beta.js.map +1 -0
  548. package/scripts/huddle/node_modules/@anthropic-ai/sdk/resources/beta.mjs +3 -0
  549. package/scripts/huddle/node_modules/@anthropic-ai/sdk/resources/beta.mjs.map +1 -0
  550. package/scripts/huddle/node_modules/@anthropic-ai/sdk/resources/completions.d.mts +183 -0
  551. package/scripts/huddle/node_modules/@anthropic-ai/sdk/resources/completions.d.mts.map +1 -0
  552. package/scripts/huddle/node_modules/@anthropic-ai/sdk/resources/completions.d.ts +183 -0
  553. package/scripts/huddle/node_modules/@anthropic-ai/sdk/resources/completions.d.ts.map +1 -0
  554. package/scripts/huddle/node_modules/@anthropic-ai/sdk/resources/completions.js +23 -0
  555. package/scripts/huddle/node_modules/@anthropic-ai/sdk/resources/completions.js.map +1 -0
  556. package/scripts/huddle/node_modules/@anthropic-ai/sdk/resources/completions.mjs +19 -0
  557. package/scripts/huddle/node_modules/@anthropic-ai/sdk/resources/completions.mjs.map +1 -0
  558. package/scripts/huddle/node_modules/@anthropic-ai/sdk/resources/index.d.mts +6 -0
  559. package/scripts/huddle/node_modules/@anthropic-ai/sdk/resources/index.d.mts.map +1 -0
  560. package/scripts/huddle/node_modules/@anthropic-ai/sdk/resources/index.d.ts +6 -0
  561. package/scripts/huddle/node_modules/@anthropic-ai/sdk/resources/index.d.ts.map +1 -0
  562. package/scripts/huddle/node_modules/@anthropic-ai/sdk/resources/index.js +15 -0
  563. package/scripts/huddle/node_modules/@anthropic-ai/sdk/resources/index.js.map +1 -0
  564. package/scripts/huddle/node_modules/@anthropic-ai/sdk/resources/index.mjs +7 -0
  565. package/scripts/huddle/node_modules/@anthropic-ai/sdk/resources/index.mjs.map +1 -0
  566. package/scripts/huddle/node_modules/@anthropic-ai/sdk/resources/messages/batches.d.mts +304 -0
  567. package/scripts/huddle/node_modules/@anthropic-ai/sdk/resources/messages/batches.d.mts.map +1 -0
  568. package/scripts/huddle/node_modules/@anthropic-ai/sdk/resources/messages/batches.d.ts +304 -0
  569. package/scripts/huddle/node_modules/@anthropic-ai/sdk/resources/messages/batches.d.ts.map +1 -0
  570. package/scripts/huddle/node_modules/@anthropic-ai/sdk/resources/messages/batches.js +153 -0
  571. package/scripts/huddle/node_modules/@anthropic-ai/sdk/resources/messages/batches.js.map +1 -0
  572. package/scripts/huddle/node_modules/@anthropic-ai/sdk/resources/messages/batches.mjs +149 -0
  573. package/scripts/huddle/node_modules/@anthropic-ai/sdk/resources/messages/batches.mjs.map +1 -0
  574. package/scripts/huddle/node_modules/@anthropic-ai/sdk/resources/messages/index.d.mts +3 -0
  575. package/scripts/huddle/node_modules/@anthropic-ai/sdk/resources/messages/index.d.mts.map +1 -0
  576. package/scripts/huddle/node_modules/@anthropic-ai/sdk/resources/messages/index.d.ts +3 -0
  577. package/scripts/huddle/node_modules/@anthropic-ai/sdk/resources/messages/index.d.ts.map +1 -0
  578. package/scripts/huddle/node_modules/@anthropic-ai/sdk/resources/messages/index.js +9 -0
  579. package/scripts/huddle/node_modules/@anthropic-ai/sdk/resources/messages/index.js.map +1 -0
  580. package/scripts/huddle/node_modules/@anthropic-ai/sdk/resources/messages/index.mjs +4 -0
  581. package/scripts/huddle/node_modules/@anthropic-ai/sdk/resources/messages/index.mjs.map +1 -0
  582. package/scripts/huddle/node_modules/@anthropic-ai/sdk/resources/messages/messages.d.mts +1264 -0
  583. package/scripts/huddle/node_modules/@anthropic-ai/sdk/resources/messages/messages.d.mts.map +1 -0
  584. package/scripts/huddle/node_modules/@anthropic-ai/sdk/resources/messages/messages.d.ts +1264 -0
  585. package/scripts/huddle/node_modules/@anthropic-ai/sdk/resources/messages/messages.d.ts.map +1 -0
  586. package/scripts/huddle/node_modules/@anthropic-ai/sdk/resources/messages/messages.js +72 -0
  587. package/scripts/huddle/node_modules/@anthropic-ai/sdk/resources/messages/messages.js.map +1 -0
  588. package/scripts/huddle/node_modules/@anthropic-ai/sdk/resources/messages/messages.mjs +67 -0
  589. package/scripts/huddle/node_modules/@anthropic-ai/sdk/resources/messages/messages.mjs.map +1 -0
  590. package/scripts/huddle/node_modules/@anthropic-ai/sdk/resources/messages.d.mts +2 -0
  591. package/scripts/huddle/node_modules/@anthropic-ai/sdk/resources/messages.d.mts.map +1 -0
  592. package/scripts/huddle/node_modules/@anthropic-ai/sdk/resources/messages.d.ts +2 -0
  593. package/scripts/huddle/node_modules/@anthropic-ai/sdk/resources/messages.d.ts.map +1 -0
  594. package/scripts/huddle/node_modules/@anthropic-ai/sdk/resources/messages.js +6 -0
  595. package/scripts/huddle/node_modules/@anthropic-ai/sdk/resources/messages.js.map +1 -0
  596. package/scripts/huddle/node_modules/@anthropic-ai/sdk/resources/messages.mjs +3 -0
  597. package/scripts/huddle/node_modules/@anthropic-ai/sdk/resources/messages.mjs.map +1 -0
  598. package/scripts/huddle/node_modules/@anthropic-ai/sdk/resources/models.d.mts +59 -0
  599. package/scripts/huddle/node_modules/@anthropic-ai/sdk/resources/models.d.mts.map +1 -0
  600. package/scripts/huddle/node_modules/@anthropic-ai/sdk/resources/models.d.ts +59 -0
  601. package/scripts/huddle/node_modules/@anthropic-ai/sdk/resources/models.d.ts.map +1 -0
  602. package/scripts/huddle/node_modules/@anthropic-ai/sdk/resources/models.js +45 -0
  603. package/scripts/huddle/node_modules/@anthropic-ai/sdk/resources/models.js.map +1 -0
  604. package/scripts/huddle/node_modules/@anthropic-ai/sdk/resources/models.mjs +41 -0
  605. package/scripts/huddle/node_modules/@anthropic-ai/sdk/resources/models.mjs.map +1 -0
  606. package/scripts/huddle/node_modules/@anthropic-ai/sdk/resources/shared.d.mts +42 -0
  607. package/scripts/huddle/node_modules/@anthropic-ai/sdk/resources/shared.d.mts.map +1 -0
  608. package/scripts/huddle/node_modules/@anthropic-ai/sdk/resources/shared.d.ts +42 -0
  609. package/scripts/huddle/node_modules/@anthropic-ai/sdk/resources/shared.d.ts.map +1 -0
  610. package/scripts/huddle/node_modules/@anthropic-ai/sdk/resources/shared.js +4 -0
  611. package/scripts/huddle/node_modules/@anthropic-ai/sdk/resources/shared.js.map +1 -0
  612. package/scripts/huddle/node_modules/@anthropic-ai/sdk/resources/shared.mjs +3 -0
  613. package/scripts/huddle/node_modules/@anthropic-ai/sdk/resources/shared.mjs.map +1 -0
  614. package/scripts/huddle/node_modules/@anthropic-ai/sdk/resources/top-level.d.mts +2 -0
  615. package/scripts/huddle/node_modules/@anthropic-ai/sdk/resources/top-level.d.mts.map +1 -0
  616. package/scripts/huddle/node_modules/@anthropic-ai/sdk/resources/top-level.d.ts +2 -0
  617. package/scripts/huddle/node_modules/@anthropic-ai/sdk/resources/top-level.d.ts.map +1 -0
  618. package/scripts/huddle/node_modules/@anthropic-ai/sdk/resources/top-level.js +4 -0
  619. package/scripts/huddle/node_modules/@anthropic-ai/sdk/resources/top-level.js.map +1 -0
  620. package/scripts/huddle/node_modules/@anthropic-ai/sdk/resources/top-level.mjs +3 -0
  621. package/scripts/huddle/node_modules/@anthropic-ai/sdk/resources/top-level.mjs.map +1 -0
  622. package/scripts/huddle/node_modules/@anthropic-ai/sdk/resources.d.mts +2 -0
  623. package/scripts/huddle/node_modules/@anthropic-ai/sdk/resources.d.mts.map +1 -0
  624. package/scripts/huddle/node_modules/@anthropic-ai/sdk/resources.d.ts +2 -0
  625. package/scripts/huddle/node_modules/@anthropic-ai/sdk/resources.d.ts.map +1 -0
  626. package/scripts/huddle/node_modules/@anthropic-ai/sdk/resources.js +5 -0
  627. package/scripts/huddle/node_modules/@anthropic-ai/sdk/resources.js.map +1 -0
  628. package/scripts/huddle/node_modules/@anthropic-ai/sdk/resources.mjs +2 -0
  629. package/scripts/huddle/node_modules/@anthropic-ai/sdk/resources.mjs.map +1 -0
  630. package/scripts/huddle/node_modules/@anthropic-ai/sdk/src/_vendor/partial-json-parser/README.md +3 -0
  631. package/scripts/huddle/node_modules/@anthropic-ai/sdk/src/_vendor/partial-json-parser/parser.ts +264 -0
  632. package/scripts/huddle/node_modules/@anthropic-ai/sdk/src/api-promise.ts +2 -0
  633. package/scripts/huddle/node_modules/@anthropic-ai/sdk/src/client.ts +1070 -0
  634. package/scripts/huddle/node_modules/@anthropic-ai/sdk/src/core/README.md +3 -0
  635. package/scripts/huddle/node_modules/@anthropic-ai/sdk/src/core/api-promise.ts +101 -0
  636. package/scripts/huddle/node_modules/@anthropic-ai/sdk/src/core/error.ts +133 -0
  637. package/scripts/huddle/node_modules/@anthropic-ai/sdk/src/core/pagination.ts +201 -0
  638. package/scripts/huddle/node_modules/@anthropic-ai/sdk/src/core/resource.ts +11 -0
  639. package/scripts/huddle/node_modules/@anthropic-ai/sdk/src/core/streaming.ts +331 -0
  640. package/scripts/huddle/node_modules/@anthropic-ai/sdk/src/core/uploads.ts +2 -0
  641. package/scripts/huddle/node_modules/@anthropic-ai/sdk/src/error.ts +2 -0
  642. package/scripts/huddle/node_modules/@anthropic-ai/sdk/src/index.ts +23 -0
  643. package/scripts/huddle/node_modules/@anthropic-ai/sdk/src/internal/README.md +3 -0
  644. package/scripts/huddle/node_modules/@anthropic-ai/sdk/src/internal/builtin-types.ts +93 -0
  645. package/scripts/huddle/node_modules/@anthropic-ai/sdk/src/internal/constants.ts +12 -0
  646. package/scripts/huddle/node_modules/@anthropic-ai/sdk/src/internal/decoders/jsonl.ts +48 -0
  647. package/scripts/huddle/node_modules/@anthropic-ai/sdk/src/internal/decoders/line.ts +135 -0
  648. package/scripts/huddle/node_modules/@anthropic-ai/sdk/src/internal/detect-platform.ts +196 -0
  649. package/scripts/huddle/node_modules/@anthropic-ai/sdk/src/internal/errors.ts +33 -0
  650. package/scripts/huddle/node_modules/@anthropic-ai/sdk/src/internal/headers.ts +99 -0
  651. package/scripts/huddle/node_modules/@anthropic-ai/sdk/src/internal/parse.ts +84 -0
  652. package/scripts/huddle/node_modules/@anthropic-ai/sdk/src/internal/request-options.ts +39 -0
  653. package/scripts/huddle/node_modules/@anthropic-ai/sdk/src/internal/shim-types.d.ts +28 -0
  654. package/scripts/huddle/node_modules/@anthropic-ai/sdk/src/internal/shims.ts +107 -0
  655. package/scripts/huddle/node_modules/@anthropic-ai/sdk/src/internal/stream-utils.ts +32 -0
  656. package/scripts/huddle/node_modules/@anthropic-ai/sdk/src/internal/to-file.ts +159 -0
  657. package/scripts/huddle/node_modules/@anthropic-ai/sdk/src/internal/types.ts +92 -0
  658. package/scripts/huddle/node_modules/@anthropic-ai/sdk/src/internal/uploads.ts +193 -0
  659. package/scripts/huddle/node_modules/@anthropic-ai/sdk/src/internal/utils/base64.ts +40 -0
  660. package/scripts/huddle/node_modules/@anthropic-ai/sdk/src/internal/utils/bytes.ts +32 -0
  661. package/scripts/huddle/node_modules/@anthropic-ai/sdk/src/internal/utils/env.ts +18 -0
  662. package/scripts/huddle/node_modules/@anthropic-ai/sdk/src/internal/utils/log.ts +127 -0
  663. package/scripts/huddle/node_modules/@anthropic-ai/sdk/src/internal/utils/path.ts +65 -0
  664. package/scripts/huddle/node_modules/@anthropic-ai/sdk/src/internal/utils/sleep.ts +3 -0
  665. package/scripts/huddle/node_modules/@anthropic-ai/sdk/src/internal/utils/uuid.ts +17 -0
  666. package/scripts/huddle/node_modules/@anthropic-ai/sdk/src/internal/utils/values.ts +102 -0
  667. package/scripts/huddle/node_modules/@anthropic-ai/sdk/src/internal/utils.ts +8 -0
  668. package/scripts/huddle/node_modules/@anthropic-ai/sdk/src/lib/.keep +4 -0
  669. package/scripts/huddle/node_modules/@anthropic-ai/sdk/src/lib/BetaMessageStream.ts +683 -0
  670. package/scripts/huddle/node_modules/@anthropic-ai/sdk/src/lib/MessageStream.ts +684 -0
  671. package/scripts/huddle/node_modules/@anthropic-ai/sdk/src/pagination.ts +2 -0
  672. package/scripts/huddle/node_modules/@anthropic-ai/sdk/src/resource.ts +2 -0
  673. package/scripts/huddle/node_modules/@anthropic-ai/sdk/src/resources/beta/beta.ts +380 -0
  674. package/scripts/huddle/node_modules/@anthropic-ai/sdk/src/resources/beta/files.ts +258 -0
  675. package/scripts/huddle/node_modules/@anthropic-ai/sdk/src/resources/beta/index.ts +148 -0
  676. package/scripts/huddle/node_modules/@anthropic-ai/sdk/src/resources/beta/messages/batches.ts +502 -0
  677. package/scripts/huddle/node_modules/@anthropic-ai/sdk/src/resources/beta/messages/index.ts +135 -0
  678. package/scripts/huddle/node_modules/@anthropic-ai/sdk/src/resources/beta/messages/messages.ts +2249 -0
  679. package/scripts/huddle/node_modules/@anthropic-ai/sdk/src/resources/beta/messages.ts +3 -0
  680. package/scripts/huddle/node_modules/@anthropic-ai/sdk/src/resources/beta/models.ts +118 -0
  681. package/scripts/huddle/node_modules/@anthropic-ai/sdk/src/resources/beta.ts +3 -0
  682. package/scripts/huddle/node_modules/@anthropic-ai/sdk/src/resources/completions.ts +231 -0
  683. package/scripts/huddle/node_modules/@anthropic-ai/sdk/src/resources/index.ts +121 -0
  684. package/scripts/huddle/node_modules/@anthropic-ai/sdk/src/resources/messages/batches.ts +396 -0
  685. package/scripts/huddle/node_modules/@anthropic-ai/sdk/src/resources/messages/index.ts +110 -0
  686. package/scripts/huddle/node_modules/@anthropic-ai/sdk/src/resources/messages/messages.ts +1783 -0
  687. package/scripts/huddle/node_modules/@anthropic-ai/sdk/src/resources/messages.ts +3 -0
  688. package/scripts/huddle/node_modules/@anthropic-ai/sdk/src/resources/models.ts +103 -0
  689. package/scripts/huddle/node_modules/@anthropic-ai/sdk/src/resources/shared.ts +72 -0
  690. package/scripts/huddle/node_modules/@anthropic-ai/sdk/src/resources/top-level.ts +3 -0
  691. package/scripts/huddle/node_modules/@anthropic-ai/sdk/src/resources.ts +1 -0
  692. package/scripts/huddle/node_modules/@anthropic-ai/sdk/src/streaming.ts +2 -0
  693. package/scripts/huddle/node_modules/@anthropic-ai/sdk/src/tsconfig.json +11 -0
  694. package/scripts/huddle/node_modules/@anthropic-ai/sdk/src/uploads.ts +2 -0
  695. package/scripts/huddle/node_modules/@anthropic-ai/sdk/src/version.ts +1 -0
  696. package/scripts/huddle/node_modules/@anthropic-ai/sdk/streaming.d.mts +2 -0
  697. package/scripts/huddle/node_modules/@anthropic-ai/sdk/streaming.d.mts.map +1 -0
  698. package/scripts/huddle/node_modules/@anthropic-ai/sdk/streaming.d.ts +2 -0
  699. package/scripts/huddle/node_modules/@anthropic-ai/sdk/streaming.d.ts.map +1 -0
  700. package/scripts/huddle/node_modules/@anthropic-ai/sdk/streaming.js +6 -0
  701. package/scripts/huddle/node_modules/@anthropic-ai/sdk/streaming.js.map +1 -0
  702. package/scripts/huddle/node_modules/@anthropic-ai/sdk/streaming.mjs +2 -0
  703. package/scripts/huddle/node_modules/@anthropic-ai/sdk/streaming.mjs.map +1 -0
  704. package/scripts/huddle/node_modules/@anthropic-ai/sdk/uploads.d.mts +2 -0
  705. package/scripts/huddle/node_modules/@anthropic-ai/sdk/uploads.d.mts.map +1 -0
  706. package/scripts/huddle/node_modules/@anthropic-ai/sdk/uploads.d.ts +2 -0
  707. package/scripts/huddle/node_modules/@anthropic-ai/sdk/uploads.d.ts.map +1 -0
  708. package/scripts/huddle/node_modules/@anthropic-ai/sdk/uploads.js +6 -0
  709. package/scripts/huddle/node_modules/@anthropic-ai/sdk/uploads.js.map +1 -0
  710. package/scripts/huddle/node_modules/@anthropic-ai/sdk/uploads.mjs +2 -0
  711. package/scripts/huddle/node_modules/@anthropic-ai/sdk/uploads.mjs.map +1 -0
  712. package/scripts/huddle/node_modules/@anthropic-ai/sdk/version.d.mts +2 -0
  713. package/scripts/huddle/node_modules/@anthropic-ai/sdk/version.d.mts.map +1 -0
  714. package/scripts/huddle/node_modules/@anthropic-ai/sdk/version.d.ts +2 -0
  715. package/scripts/huddle/node_modules/@anthropic-ai/sdk/version.d.ts.map +1 -0
  716. package/scripts/huddle/node_modules/@anthropic-ai/sdk/version.js +5 -0
  717. package/scripts/huddle/node_modules/@anthropic-ai/sdk/version.js.map +1 -0
  718. package/scripts/huddle/node_modules/@anthropic-ai/sdk/version.mjs +2 -0
  719. package/scripts/huddle/node_modules/@anthropic-ai/sdk/version.mjs.map +1 -0
  720. package/scripts/huddle/node_modules/dotenv/CHANGELOG.md +520 -0
  721. package/scripts/huddle/node_modules/dotenv/LICENSE +23 -0
  722. package/scripts/huddle/node_modules/dotenv/README-es.md +411 -0
  723. package/scripts/huddle/node_modules/dotenv/README.md +645 -0
  724. package/scripts/huddle/node_modules/dotenv/SECURITY.md +1 -0
  725. package/scripts/huddle/node_modules/dotenv/config.d.ts +1 -0
  726. package/scripts/huddle/node_modules/dotenv/config.js +9 -0
  727. package/scripts/huddle/node_modules/dotenv/lib/cli-options.js +17 -0
  728. package/scripts/huddle/node_modules/dotenv/lib/env-options.js +28 -0
  729. package/scripts/huddle/node_modules/dotenv/lib/main.d.ts +162 -0
  730. package/scripts/huddle/node_modules/dotenv/lib/main.js +386 -0
  731. package/scripts/huddle/node_modules/dotenv/package.json +62 -0
  732. package/scripts/huddle/node_modules/ws/LICENSE +20 -0
  733. package/scripts/huddle/node_modules/ws/README.md +548 -0
  734. package/scripts/huddle/node_modules/ws/browser.js +8 -0
  735. package/scripts/huddle/node_modules/ws/index.js +22 -0
  736. package/scripts/huddle/node_modules/ws/lib/buffer-util.js +131 -0
  737. package/scripts/huddle/node_modules/ws/lib/constants.js +19 -0
  738. package/scripts/huddle/node_modules/ws/lib/event-target.js +292 -0
  739. package/scripts/huddle/node_modules/ws/lib/extension.js +203 -0
  740. package/scripts/huddle/node_modules/ws/lib/limiter.js +55 -0
  741. package/scripts/huddle/node_modules/ws/lib/permessage-deflate.js +528 -0
  742. package/scripts/huddle/node_modules/ws/lib/receiver.js +706 -0
  743. package/scripts/huddle/node_modules/ws/lib/sender.js +602 -0
  744. package/scripts/huddle/node_modules/ws/lib/stream.js +161 -0
  745. package/scripts/huddle/node_modules/ws/lib/subprotocol.js +62 -0
  746. package/scripts/huddle/node_modules/ws/lib/validation.js +152 -0
  747. package/scripts/huddle/node_modules/ws/lib/websocket-server.js +554 -0
  748. package/scripts/huddle/node_modules/ws/lib/websocket.js +1393 -0
  749. package/scripts/huddle/node_modules/ws/package.json +70 -0
  750. package/scripts/huddle/node_modules/ws/wrapper.mjs +21 -0
  751. package/scripts/huddle/package-lock.json +62 -0
  752. package/scripts/huddle/package.json +22 -0
  753. package/scripts/huddle/setup-audio.sh +239 -0
  754. package/scripts/huddle/start-call.mjs +318 -0
  755. package/scripts/huddle/test-pipeline.mjs +263 -0
  756. package/scripts/llm_email_dedup.py +434 -0
  757. package/scripts/local-triggers/install-all.sh +43 -0
  758. package/scripts/local-triggers/plists/ai.adaptic.slack-events-server.plist +45 -0
  759. package/scripts/local-triggers/plists/ai.adaptic.sophie-backlog-executor.plist +21 -0
  760. package/scripts/local-triggers/plists/ai.adaptic.sophie-daemon.plist +32 -0
  761. package/scripts/local-triggers/plists/ai.adaptic.sophie-inbox-processor.plist +21 -0
  762. package/scripts/local-triggers/plists/ai.adaptic.sophie-meeting-action-capture.plist +21 -0
  763. package/scripts/local-triggers/plists/ai.adaptic.sophie-meeting-prep.plist +21 -0
  764. package/scripts/local-triggers/plists/ai.adaptic.sophie-midday-sweep.plist +26 -0
  765. package/scripts/local-triggers/plists/ai.adaptic.sophie-quarterly-self-assessment.plist +62 -0
  766. package/scripts/local-triggers/plists/ai.adaptic.sophie-weekly-engineering-health.plist +28 -0
  767. package/scripts/local-triggers/plists/ai.adaptic.sophie-weekly-execution.plist +28 -0
  768. package/scripts/local-triggers/plists/ai.adaptic.sophie-weekly-hiring.plist +28 -0
  769. package/scripts/local-triggers/plists/ai.adaptic.sophie-weekly-priorities.plist +28 -0
  770. package/scripts/local-triggers/plists/ai.adaptic.sophie-weekly-strategic-memo.plist +28 -0
  771. package/scripts/local-triggers/run-trigger.sh +44 -0
  772. package/scripts/media-generation/README.md +103 -0
  773. package/scripts/media-generation/gemini-image-client.mjs +173 -0
  774. package/scripts/media-generation/generate-assets.mjs +289 -0
  775. package/scripts/media-generation/veo-video-client.mjs +219 -0
  776. package/scripts/mehran-inbox-poller.py +437 -0
  777. package/scripts/outbound-dedup-cleanup.sh +43 -0
  778. package/scripts/outbound-dedup.sh +476 -0
  779. package/scripts/outbound_dedup.py +115 -0
  780. package/scripts/parse-voice-transcript.mjs +486 -0
  781. package/scripts/pdf-generation/README.md +61 -0
  782. package/scripts/pdf-generation/build-document.mjs +230 -0
  783. package/scripts/pdf-generation/templates/board-pack.latex +136 -0
  784. package/scripts/pdf-generation/templates/corporate-letter.latex +126 -0
  785. package/scripts/pdf-generation/templates/memo.latex +114 -0
  786. package/scripts/poll-slack-events.sh +33 -0
  787. package/scripts/poller/calendar-poller.mjs +12 -0
  788. package/scripts/poller/gmail-poller.mjs +156 -0
  789. package/scripts/poller/imap-client.mjs +286 -0
  790. package/scripts/poller/index.mjs +73 -0
  791. package/scripts/poller/intra-session-check.mjs +267 -0
  792. package/scripts/poller/mehran-gmail-poller.mjs +98 -0
  793. package/scripts/poller/slack-poller.mjs +716 -0
  794. package/scripts/poller/trigger.mjs +47 -0
  795. package/scripts/poller/utils.mjs +253 -0
  796. package/scripts/poller-launchd/ai.adaptic.sophie-poller.plist +40 -0
  797. package/scripts/poller-launchd/ai.adaptic.sophie-whatsapp-handler.plist +39 -0
  798. package/scripts/poller-launchd/install.sh +38 -0
  799. package/scripts/post-interaction-indexer.py +1598 -0
  800. package/scripts/pre-draft-context.py +994 -0
  801. package/scripts/pre_draft_lookup.py +258 -0
  802. package/scripts/rag-indexer.py +629 -0
  803. package/scripts/resume-operations.sh +40 -0
  804. package/scripts/search-mehran-inbox.py +181 -0
  805. package/scripts/self-optimization/compute-metrics.py +377 -0
  806. package/scripts/send-difc-rfp.sh +98 -0
  807. package/scripts/send-email-as-mehran.py +369 -0
  808. package/scripts/send-email-threaded.py +336 -0
  809. package/scripts/send-email-with-attachment.py +360 -0
  810. package/scripts/send-email.sh +93 -0
  811. package/scripts/send-sms.sh +151 -0
  812. package/scripts/send-whatsapp.sh +261 -0
  813. package/scripts/session-start.sh +106 -0
  814. package/scripts/setup/configure-macos.sh +508 -0
  815. package/scripts/setup/init-agent.sh +450 -0
  816. package/scripts/slack-events-ctl.sh +177 -0
  817. package/scripts/slack-events-server.mjs +989 -0
  818. package/scripts/slack-react.mjs +89 -0
  819. package/scripts/slack-responded.sh +185 -0
  820. package/scripts/slack-send.sh +190 -0
  821. package/scripts/slack-typing.mjs +196 -0
  822. package/scripts/slack-upload-v2.py +95 -0
  823. package/scripts/sms-handler.mjs +436 -0
  824. package/scripts/sophie-inbox-poller.py +406 -0
  825. package/scripts/spawn-session.sh +85 -0
  826. package/scripts/system-verify.sh +171 -0
  827. package/scripts/test-email-thread-dedup.py +239 -0
  828. package/scripts/test-information-barriers.py +484 -0
  829. package/scripts/test-llm-email-dedup.py +251 -0
  830. package/scripts/test-pre-draft-integration.py +203 -0
  831. package/scripts/test-rag-phase2.sh +442 -0
  832. package/scripts/test-rag-search.sh +251 -0
  833. package/scripts/test-voice-parser.mjs +316 -0
  834. package/scripts/user-context-search.py +660 -0
  835. package/scripts/validate-outbound.py +1493 -0
  836. package/scripts/whatsapp-handler.mjs +525 -0
  837. package/teams/desktop-operations.yaml +34 -0
  838. package/teams/executive-office.yaml +27 -0
  839. package/teams/legal-and-regulatory.yaml +24 -0
  840. package/teams/platform-and-engineering.yaml +23 -0
  841. package/teams/strategy-and-growth.yaml +29 -0
  842. package/workflows/continuous/inbound-monitor.yaml +168 -0
  843. package/workflows/daily/applicant-triage.yaml +197 -0
  844. package/workflows/daily/comms-triage.yaml +80 -0
  845. package/workflows/daily/evening-wrap.yaml +65 -0
  846. package/workflows/daily/morning-brief.yaml +147 -0
  847. package/workflows/daily/slack-followup-sweep.yaml +87 -0
  848. package/workflows/event-driven/README.md +50 -0
  849. package/workflows/monthly/board-readiness.yaml +76 -0
  850. package/workflows/quarterly/strategic-scenario-analysis.yaml +85 -0
  851. package/workflows/session-protocol.md +171 -0
  852. package/workflows/weekly/hiring-review.yaml +169 -0
  853. package/workflows/weekly/rollup-pipeline-review.yaml +76 -0
  854. 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.**