effectSets
Standard effect sets — named groups of the interrupt effects the standard library raises, for use in raises clauses.
A raises clause is an allowlist (an upper bound), so these sets are composable building blocks you union together to say what a function or node is permitted to do:
import { FileRead, Network } from "std::effectSets"
// may read files and make network calls — nothing else
node main() raises <FileRead, Network> { ... }
// read-only inspection
node audit() raises <FileRead> { ... }
// guaranteed to perform no interrupting actions
def pure() raises <> { ... }The sets are purely mechanical groupings by kind of action; they encode no security judgement (e.g. there is intentionally no "read-only" set that decides whether a network fetch counts as a read). Compose the pieces you need.
Note: these constrain callers. Individual functions should still declare the specific effect they raise (e.g. raises <std::read>), not a whole effect set.
Types
FileRead
Read-only filesystem access: reading files and listing/searching paths.
/** Read-only filesystem access: reading files and listing/searching paths. */
export effectSet FileRead = <std::read, std::readBinary, std::ls, std::glob, std::grep, std::vision>(source)
FileWrite
Filesystem mutation: creating, editing, moving, copying, and deleting.
/** Filesystem mutation: creating, editing, moving, copying, and deleting. */
export effectSet FileWrite = <std::write, std::writeBinary, std::edit, std::applyPatch, std::mkdir, std::move, std::copy, std::remove, std::cropImage, std::pasteImages>(source)
FileSystem
All filesystem access — reads and writes.
/** All filesystem access — reads and writes. */
export effectSet FileSystem = <FileRead, FileWrite>(source)
Shell
Arbitrary command / process execution. The sharpest edge — grant with care.
/** Arbitrary command / process execution. The sharpest edge — grant with care. */
export effectSet Shell = <std::bash, std::exec, std::run>(source)
Network
Anything that talks to the outside world over the network.
/** Anything that talks to the outside world over the network. */
export effectSet Network = <std::http::fetch, std::http::fetchJSON, std::http::fetchMarkdown, std::search, std::tavilySearch, std::weather, std::browserUse, std::wikipedia::article, std::wikipedia::search, std::wikipedia::summary, std::gdelt, std::fred, std::dbnomics, std::edgar, std::littlesis, std::yc, std::hackernews, std::bluesky, std::wikidata, std::usaspending, std::aws::s3::get, std::aws::s3::getBinary, std::aws::s3::put, std::aws::s3::putBinary, std::aws::s3::createBucket, std::github::prList, std::github::prGet, std::github::prDiff, std::github::prFiles, std::github::prReviewList, std::github::prReviewCommentList, std::github::prChecks, std::github::issueList, std::github::issueGet, std::github::issueCommentList, std::github::issueSearch, std::github::prReviewComment, std::github::prReview, std::github::prApprove, std::github::issueCreate, std::github::issueComment, std::github::issueUpdate, std::github::issueLabel, std::uploadImage>(source)
AwsS3
Amazon S3 access: reading and writing objects, creating buckets, and minting presigned download URLs. Presigning is deliberately NOT in Network — it sends nothing; it mints a bearer capability locally.
/** Amazon S3 access: reading and writing objects, creating buckets, and minting presigned download URLs. Presigning is deliberately NOT in Network — it sends nothing; it mints a bearer capability locally. */
export effectSet AwsS3 = <std::aws::s3::get, std::aws::s3::getBinary, std::aws::s3::put, std::aws::s3::putBinary, std::aws::s3::createBucket, std::aws::s3::presignGet>(source)
GithubRead
Read-only GitHub access: pull requests, issues, and their comments.
/** Read-only GitHub access: pull requests, issues, and their comments. */
export effectSet GithubRead = <std::github::prList, std::github::prGet, std::github::prDiff, std::github::prFiles, std::github::prReviewList, std::github::prReviewCommentList, std::github::prChecks, std::github::issueList, std::github::issueGet, std::github::issueCommentList, std::github::issueSearch>(source)
GithubReview
Posting comments and reviews on GitHub pull requests.
/** Posting comments and reviews on GitHub pull requests. */
export effectSet GithubReview = <std::github::prReviewComment, std::github::prReview, std::github::prApprove>(source)
GithubIssueWrite
Creating and editing GitHub issues.
/** Creating and editing GitHub issues. */
export effectSet GithubIssueWrite = <std::github::issueCreate, std::github::issueComment, std::github::issueUpdate, std::github::issueLabel>(source)
GithubWrite
All GitHub mutations.
/** All GitHub mutations. */
export effectSet GithubWrite = <GithubReview, GithubIssueWrite>(source)
Github
All GitHub access.
/** All GitHub access. */
export effectSet Github = <GithubRead, GithubWrite>(source)
DataFinance
The std::data/finance connectors (macro + filings). Each also raises std::http::fetchJSON, which is covered by the broader Network set. GDELT (news) lives in std::data/news and is not part of this set.
/** The std::data/finance connectors (macro + filings). Each also raises
std::http::fetchJSON, which is covered by the broader Network set. GDELT
(news) lives in std::data/news and is not part of this set. */
export effectSet DataFinance = <std::fred, std::edgar, std::dbnomics>(source)
Messaging
Sending messages to people: email, SMS, and iMessage.
/** Sending messages to people: email, SMS, and iMessage. */
export effectSet Messaging = <std::sendEmail, std::sendSms, std::sendIMessage>(source)
Secrets
Reading and writing credentials in the system keyring.
/** Reading and writing credentials in the system keyring. */
export effectSet Secrets = <std::getSecret, std::setSecret, std::deleteSecret>(source)
Auth
OAuth-style authorization flows: granting, fetching, and revoking access.
/** OAuth-style authorization flows: granting, fetching, and revoking access. */
export effectSet Auth = <std::authorize, std::getAccessToken, std::revokeAuth>(source)
Calendar
Calendar access: listing and mutating events (incl. calendar authorization).
/** Calendar access: listing and mutating events (incl. calendar authorization). */
export effectSet Calendar = <std::listEvents, std::createEvent, std::updateEvent, std::deleteEvent, std::authorizeCalendar>(source)
Memory
Agent long-term memory: recall, remember, forget, and enable/disable.
/** Agent long-term memory: recall, remember, forget, and enable/disable. */
export effectSet Memory = <std::memory::recall, std::memory::remember, std::memory::forget, std::memory::enableMemory, std::memory::disableMemory>(source)
NotesRead
Read-only Notes access: reading, searching, and listing.
/** Read-only Notes access: reading, searching, and listing. */
export effectSet NotesRead = <std::notes::read, std::notes::search, std::notes::list>(source)
NotesWrite
Notes mutation: creating, appending, and deleting.
/** Notes mutation: creating, appending, and deleting. */
export effectSet NotesWrite = <std::notes::create, std::notes::append, std::notes::delete>(source)
Notes
All Notes access, reads and writes.
/** All Notes access, reads and writes. */
export effectSet Notes = <NotesRead, NotesWrite>(source)