@framers/agentos-extensions 1.0.4 → 1.0.5

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 (3) hide show
  1. package/README.md +23 -25
  2. package/package.json +2 -6
  3. package/registry.json +74 -43
package/README.md CHANGED
@@ -119,20 +119,19 @@ independently. Version bumps here do **not** affect curated extension versions.
119
119
 
120
120
  ### Curated Extensions (this submodule)
121
121
 
122
- ~107 packages inside `registry/curated/` use coordinated versioning via
123
- [Changesets](https://github.com/changesets/changesets). These are the full
124
- extension catalog: channel adapters, integrations, research tools, media tools,
125
- and more.
126
-
127
- Version bumps here are batched into "Version Packages" PRs and published together.
122
+ The packages inside `registry/curated/` are the full extension catalog: channel
123
+ adapters, integrations, research tools, media tools, and more. Each is versioned
124
+ on its own, and a push to `master` that changes a package's shipped files
125
+ publishes it in the same run ([RELEASING.md](./RELEASING.md)).
128
126
 
129
127
  ### Why two tiers?
130
128
 
131
129
  - **Core extensions** are safety-critical guardrails and foundational infrastructure.
132
130
  They need independent semver to signal breaking changes without forcing a catalog-wide
133
131
  release. Their CI runs on every PR to the monorepo root.
134
- - **Curated extensions** are the broader catalog. Coordinated changesets keep their
135
- interdependencies aligned and simplify bulk releases.
132
+ - **Curated extensions** are the broader catalog. The release keeps their
133
+ interdependencies aligned: when a package's new version leaves a dependent's
134
+ range on it, the same run raises that range and publishes the dependent.
136
135
 
137
136
  ### Where do safety guardrails live?
138
137
 
@@ -147,7 +146,6 @@ have not yet been merged upstream to the root packages.
147
146
 
148
147
  ```
149
148
  agentos-extensions/
150
- ├── .changeset/ # Changesets for versioning & publishing
151
149
  ├── .github/workflows/ # CI, release, TypeDoc pages
152
150
  ├── logos/ # Branding assets
153
151
  ├── templates/ # Starter templates for new extensions
@@ -171,7 +169,7 @@ agentos-extensions/
171
169
  │ │ └── productivity/ # Google Calendar, Gmail
172
170
  │ └── community/ # Community-contributed extensions
173
171
  ├── scripts/ # Registry build & scaffolding tools
174
- ├── registry.json # Auto-generated extension manifest
172
+ ├── registry.json # generated by pnpm run build; the published catalog ships in the npm package
175
173
  ├── pnpm-workspace.yaml # Workspace packages for publishing
176
174
  └── typedoc.json # API docs config
177
175
  ```
@@ -389,7 +387,8 @@ const manifest = await createCuratedManifest({
389
387
  ### Create a new extension
390
388
 
391
389
  ```bash
392
- # Copy the template
390
+ # Copy the template, then give the copy its name, its role and its own CHANGELOG.md,
391
+ # as CONTRIBUTING.md's "Adding an extension pack" says
393
392
  cp -r templates/basic-tool registry/curated/category/my-extension
394
393
  cd registry/curated/category/my-extension
395
394
  pnpm install
@@ -398,21 +397,20 @@ pnpm run dev
398
397
 
399
398
  ## Releasing & Publishing
400
399
 
401
- This repo uses [Changesets](https://github.com/changesets/changesets) for multi-package versioning and npm publishing. See [RELEASING.md](./RELEASING.md) for the full workflow.
400
+ A push to `master` publishes every package whose shipped files changed since its newest version on npm, from the tarball CI built and tested, and tags and releases each version on GitHub. Nobody writes a changeset or a release note: the merged pull request's title is the note. See [RELEASING.md](./RELEASING.md) for the full workflow.
402
401
 
403
402
  ### TL;DR
404
403
 
405
404
  ```bash
406
- # 1. Make your changes to one or more extensions
407
-
408
- # 2. Add a changeset describing what changed
409
- pnpm changeset
405
+ # 1. Change one or more extensions on a branch, and open a pull request titled in
406
+ # the Conventional Commits form: fix(web-search): ..., or feat(web-search)!: ...
407
+ # for a change that breaks users (a minor in place of a patch)
410
408
 
411
- # 3. Commit and push to master
412
- git add . && git commit -m "feat: my changes" && git push
409
+ # 2. Read the summary of CI's step "The packages this push would publish":
410
+ # each package the merge publishes, with its version and the reason
413
411
 
414
- # 4. The GitHub Action opens a "Version Packages" PR
415
- # → Merge it to publish updated packages to npm
412
+ # 3. Merge it: the push to master publishes those packages to npm, tags each
413
+ # version <name>@<version> and makes its GitHub release
416
414
  ```
417
415
 
418
416
  Each extension is versioned and published independently. A change to `web-search` does not bump `telegram`.
@@ -428,12 +426,12 @@ Each extension is versioned and published independently. A change to `web-search
428
426
 
429
427
  All extensions get free CI/CD via GitHub Actions:
430
428
 
431
- - **CI** (`ci.yml`): builds the AgentOS core and every pack, runs the release-script tests and each pack's tests, and runs the pack guard on every pull request
432
- - **Release** (`release.yml`): runs CI, then opens the "chore: version packages" pull request or publishes to npm
429
+ - **CI** (`ci.yml`): plans what the push would publish (`scripts/release-plan.mjs`), builds the AgentOS core and every pack, runs the release-script tests and each pack's tests, and runs the pack guard on the planned packages, on every pull request
430
+ - **Release** (`release.yml`): runs CI on a push to `master`, then publishes the tarballs CI tested for the packages the push changed, tags each version, makes its GitHub release, and writes the images' version tags
433
431
  - **TypeDoc** (`pages-typedoc.yml`): API docs deployed to [framerslab.github.io/agentos-extensions](https://framerslab.github.io/agentos-extensions/) on a push to `master`, one deploy at a time: a deploy that has started runs to the end, and a push that lands during it waits, the last push to come in replacing any earlier one still waiting
434
432
  - **Lockfile** (`lockfile.yml`): resolves the workspace's dependency ranges and offers `pnpm-lock.yaml` as an artifact to commit, run by hand on a branch whose `package.json` files changed
435
433
  - **Meeting bot image** (`meeting-bot-image.yml`): builds the browser meeting bot's container image and runs its lifecycle test on every pull request that touches `registry/curated/meetings/browser/`, and pushes the image to GHCR from `master`; the bot's nightly real-join check (`nightly-real-join.yml`) runs daily and by hand, and its capacity measurement on a worker (`measure-meeting-bots.yml`) by hand only, as [the pack's README](./registry/curated/meetings/browser/README.md) describes
436
- - **Document parser image** (`document-parser-image.yml`): builds the document parser's container image and runs its lifecycle test on a pull request that touches `registry/curated/tools/document-parser/` or `pnpm-lock.yaml`, once it is ready for review, and on a push to `master` that touches the pack, which also pushes the tested image to GHCR as `ghcr.io/framerslab/agentos-document-parser:sha-<commit>`, and once as `:<version>` from the version pull request's merge, as [the release guide](./RELEASING.md) and [the pack's README](./registry/curated/tools/document-parser/README.md) describe. `document-parser.yml` runs the pack's tests on Node 24, beside CI's Node 22, when a pull request or a push to `master` touches the pack, `pnpm-lock.yaml` or `pnpm-workspace.yaml`
434
+ - **Document parser image** (`document-parser-image.yml`): builds the document parser's container image and runs its lifecycle test on a pull request that touches `registry/curated/tools/document-parser/` or `pnpm-lock.yaml`, once it is ready for review, and on a push to `master` that touches the pack, which also pushes the tested image to GHCR as `ghcr.io/framerslab/agentos-document-parser:sha-<commit>`; the release workflow tags a released version's image `:<version>`, as [the release guide](./RELEASING.md) and [the pack's README](./registry/curated/tools/document-parser/README.md) describe. `document-parser.yml` runs the pack's tests on Node 24, beside CI's Node 22, when a pull request or a push to `master` touches the pack, `pnpm-lock.yaml` or `pnpm-workspace.yaml`
437
435
  - **Dependabot**: weekly dependency updates. `dependabot-auto-merge.yml` labels an npm minor or patch update `landing`, and posts one comment for its head commit naming the guards that passed, when CI's `build` check and the `links` check have succeeded on that commit, no other workflow check there is pending or failed (skipped and neutral count as passed), every commit is Dependabot's, its review threads are settled and ten minutes have passed since its last push. It never merges: a labelled update lands once its review comments on GitHub are read, those that name a failing input fixed and the rest answered, and its threads resolved. It decides again when a CI or Links run of the update is requested, starts or finishes, when a review is submitted or a comment is made on its diff, and every hour; when a push moves the head or a guard fails, it takes off a label it added, and a label a maintainer added, took off or put back stays. A thread resolved or reopened sends no event a workflow can take, so the next of those runs decides it; a landing waits for every thread to be resolved whatever the label says. Major updates, GitHub Actions updates, and a pull request whose head commit message names a different version than its title (left from an older update after a rebase) wait for a maintainer. The decision is `scripts/dependabot-merge-lib.mjs`. Dependabot updates `pnpm-lock.yaml` with pnpm's `minimumReleaseAge` at three days; `pnpm-workspace.yaml` exempts `@framers/*`, the family whose pins the weekly bump (`bump-framers-deps.yml`) moves to the newest release, and the bump runs Dependabot's update before it opens its pull request
438
436
 
439
437
  ## Quality Standards
@@ -468,8 +466,8 @@ All extensions get free CI/CD via GitHub Actions:
468
466
 
469
467
  | Guide | What |
470
468
  |---|---|
471
- | [Contributing](https://github.com/framerslab/agentos-extensions/blob/master/CONTRIBUTING.md) | Development setup, adding a pack, changesets, pull request rules, review threads, contribution licensing |
472
- | [Release guide](https://github.com/framerslab/agentos-extensions/blob/master/RELEASING.md) | How changesets become npm releases |
469
+ | [Contributing](https://github.com/framerslab/agentos-extensions/blob/master/CONTRIBUTING.md) | Development setup, adding a pack, commit messages and releases, pull request rules, review threads, contribution licensing |
470
+ | [Release guide](https://github.com/framerslab/agentos-extensions/blob/master/RELEASING.md) | What a push to `master` publishes, and at which version |
473
471
  | [Agent instructions](https://github.com/framerslab/agentos-extensions/blob/master/AGENTS.md) | Commands and conventions for coding agents |
474
472
  | [Maintainers](https://github.com/framerslab/agentos-extensions/blob/master/MAINTAINERS.md) | Who reviews and merges changes |
475
473
  | [Code of Conduct](https://github.com/framerslab/agentos-extensions/blob/master/.github/CODE_OF_CONDUCT.md) | Community standards |
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@framers/agentos-extensions",
3
- "version": "1.0.4",
3
+ "version": "1.0.5",
4
4
  "files": [
5
5
  "index.mjs",
6
6
  "registry.json",
@@ -71,19 +71,15 @@
71
71
  },
72
72
  "devDependencies": {
73
73
  "@atproto/api": "^0.13.0",
74
- "@changesets/changelog-github": "^0.5.2",
75
- "@changesets/cli": "^3.0.3",
76
74
  "masto": "^8.0.0",
77
75
  "typedoc": "^0.28.19",
78
76
  "typescript": "^5.4.5"
79
77
  },
78
+ "gitHead": "9c7c117648188abf432b48b8d9127664619dc4a5",
80
79
  "scripts": {
81
80
  "build": "node scripts/build-extensions.js && node scripts/update-registry.js",
82
81
  "update-registry": "node scripts/update-registry.js",
83
82
  "docs": "npx typedoc",
84
- "changeset": "changeset",
85
- "version-packages": "changeset version && node scripts/sync-manifest-versions.mjs",
86
- "release": "changeset publish",
87
83
  "test": "node --test scripts/__tests__/*.test.mjs",
88
84
  "pack-guard": "node scripts/pack-guard.mjs"
89
85
  }
package/registry.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": "1.0.0",
3
- "updated": "2026-10-24T23:29:10.066Z",
3
+ "updated": "2026-10-31T11:04:37.896Z",
4
4
  "categories": {
5
5
  "templates": [
6
6
  "basic-tool",
@@ -165,7 +165,7 @@
165
165
  "id": "com.framers.channels.email",
166
166
  "name": "Email Channel Extension",
167
167
  "package": "@framers/agentos-ext-channel-email",
168
- "version": "0.5.0",
168
+ "version": "0.6.0",
169
169
  "category": "channels",
170
170
  "path": "registry/curated/channels/email",
171
171
  "description": "Bidirectional email integration: send through SMTP or Resend's HTTPS API; read, search, extract verification codes, reply, move, label, flag and delete through IMAP; keep a suppression record and unsubscribe tokens on a SQL database.",
@@ -190,7 +190,7 @@
190
190
  "npm": "https://www.npmjs.com/package/@framers/agentos-ext-channel-email",
191
191
  "repository": "https://github.com/framerslab/agentos-extensions/tree/master/registry/curated/channels/email",
192
192
  "verified": true,
193
- "verifiedAt": "2026-10-24T23:29:10.066Z",
193
+ "verifiedAt": "2026-10-31T11:04:37.896Z",
194
194
  "verificationChecklistVersion": "1.0.0",
195
195
  "downloads": 0
196
196
  },
@@ -732,7 +732,7 @@
732
732
  "id": "com.framers.channels.nostr",
733
733
  "name": "Nostr Channel Extension",
734
734
  "package": "@framers/agentos-ext-channel-nostr",
735
- "version": "0.1.5",
735
+ "version": "0.1.6",
736
736
  "category": "channels",
737
737
  "path": "registry/curated/channels/nostr",
738
738
  "description": "Nostr relay messaging via nostr-tools — decentralized, censorship-resistant encrypted DMs (NIP-04).",
@@ -758,7 +758,7 @@
758
758
  "npm": "https://www.npmjs.com/package/@framers/agentos-ext-channel-nostr",
759
759
  "repository": "https://github.com/framerslab/agentos-extensions/tree/master/registry/curated/channels/nostr",
760
760
  "verified": true,
761
- "verifiedAt": "2026-10-18T17:11:31.345Z",
761
+ "verifiedAt": "2026-10-31T11:04:37.896Z",
762
762
  "verificationChecklistVersion": "1.0.0",
763
763
  "downloads": 0
764
764
  },
@@ -883,7 +883,7 @@
883
883
  "id": "com.framers.channels.slack",
884
884
  "name": "Slack Channel Extension",
885
885
  "package": "@framers/agentos-ext-channel-slack",
886
- "version": "0.1.3",
886
+ "version": "0.2.0",
887
887
  "category": "channels",
888
888
  "path": "registry/curated/channels/slack",
889
889
  "description": "Bidirectional Slack messaging via @slack/bolt — supports text, rich text, images, documents, threads, reactions, and group chat.",
@@ -900,7 +900,8 @@
900
900
  "Group chat and channel support",
901
901
  "Message editing and deletion",
902
902
  "Emoji reactions",
903
- "Mentions support"
903
+ "Mentions support",
904
+ "Posting to a person's own incoming webhook or workflow webhook link through the ./outbound entry, with no Bolt app"
904
905
  ],
905
906
  "tools": [
906
907
  "slackChannelSendMessage",
@@ -918,7 +919,7 @@
918
919
  "npm": "https://www.npmjs.com/package/@framers/agentos-ext-channel-slack",
919
920
  "repository": "https://github.com/framerslab/agentos-extensions/tree/master/registry/curated/channels/slack",
920
921
  "verified": true,
921
- "verifiedAt": "2026-10-18T17:11:31.345Z",
922
+ "verifiedAt": "2026-10-31T11:04:37.896Z",
922
923
  "verificationChecklistVersion": "1.0.0",
923
924
  "downloads": 0
924
925
  },
@@ -2077,7 +2078,7 @@
2077
2078
  "id": "com.framers.integrations.github",
2078
2079
  "name": "GitHub Extension",
2079
2080
  "package": "@framers/agentos-ext-github",
2080
- "version": "0.8.0",
2081
+ "version": "0.10.0",
2081
2082
  "category": "integrations",
2082
2083
  "path": "registry/curated/integrations/github",
2083
2084
  "description": "GitHub API tools: 26 tools for repos, issues, PRs, branches, commits, releases, Actions, files, gists, and codebase indexing. Its ./documents entry adds a GitHub App's installation mode (the app's JWT, installation tokens, the user's web flow, webhook deliveries checked and read as typed events, a daily reconcile, every call under a deadline with rate limit timing) and a connector that reads a repository's documentation as account sources.",
@@ -2139,7 +2140,36 @@
2139
2140
  "npm": "https://www.npmjs.com/package/@framers/agentos-ext-github",
2140
2141
  "repository": "https://github.com/framerslab/agentos-extensions/tree/master/registry/curated/integrations/github",
2141
2142
  "verified": true,
2142
- "verifiedAt": "2026-10-24T23:29:10.066Z",
2143
+ "verifiedAt": "2026-10-31T11:04:37.896Z",
2144
+ "verificationChecklistVersion": "1.0.0",
2145
+ "downloads": 0
2146
+ },
2147
+ {
2148
+ "id": "com.framers.integrations.notion",
2149
+ "name": "Notion",
2150
+ "package": "@framers/agentos-ext-notion",
2151
+ "version": "0.1.0",
2152
+ "category": "integrations",
2153
+ "path": "registry/curated/integrations/notion",
2154
+ "description": "A public Notion connection's OAuth for a host that keeps its own grant, and pages written as typed plain-text blocks inside Notion's request limits",
2155
+ "author": {
2156
+ "name": "Frame",
2157
+ "email": "team@frame.dev",
2158
+ "url": "https://frame.dev"
2159
+ },
2160
+ "features": [],
2161
+ "tools": [
2162
+ "notion"
2163
+ ],
2164
+ "keywords": [
2165
+ "notion",
2166
+ "oauth",
2167
+ "pages"
2168
+ ],
2169
+ "npm": "https://www.npmjs.com/package/@framers/agentos-ext-notion",
2170
+ "repository": "https://github.com/framerslab/agentos-extensions/tree/master/registry/curated/integrations/notion",
2171
+ "verified": true,
2172
+ "verifiedAt": "2026-10-31T11:04:37.896Z",
2143
2173
  "verificationChecklistVersion": "1.0.0",
2144
2174
  "downloads": 0
2145
2175
  },
@@ -2354,7 +2384,7 @@
2354
2384
  "id": "com.framers.meetings.browser",
2355
2385
  "name": "Browser Meeting Bot Provider",
2356
2386
  "package": "@framers/agentos-ext-meeting-browser",
2357
- "version": "0.1.3",
2387
+ "version": "0.1.14",
2358
2388
  "category": "meetings",
2359
2389
  "path": "registry/curated/meetings/browser",
2360
2390
  "description": "A meeting-participant provider that joins Google Meet and Microsoft Teams through a browser in a container, posts a notice, publishes the call's audio into a LiveKit room, and leaves on any participant's stop command.",
@@ -2385,7 +2415,7 @@
2385
2415
  "npm": "https://www.npmjs.com/package/@framers/agentos-ext-meeting-browser",
2386
2416
  "repository": "https://github.com/framerslab/agentos-extensions/tree/master/registry/curated/meetings/browser",
2387
2417
  "verified": true,
2388
- "verifiedAt": "2026-10-24T23:29:10.066Z",
2418
+ "verifiedAt": "2026-10-31T11:04:37.896Z",
2389
2419
  "verificationChecklistVersion": "1.0.0",
2390
2420
  "downloads": 0
2391
2421
  },
@@ -2393,7 +2423,7 @@
2393
2423
  "id": "com.framers.meetings.zoom-rtms",
2394
2424
  "name": "Zoom Realtime Media Streams Meeting Provider",
2395
2425
  "package": "@framers/agentos-ext-meeting-zoom-rtms",
2396
- "version": "0.2.1",
2426
+ "version": "0.2.2",
2397
2427
  "category": "meetings",
2398
2428
  "path": "registry/curated/meetings/zoom-rtms",
2399
2429
  "description": "A meeting-participant provider for Zoom through Realtime Media Streams: no participant joins the meeting; your own Zoom app streams the meeting's audio to a media worker, which publishes it into a LiveKit room.",
@@ -2424,7 +2454,7 @@
2424
2454
  "npm": "https://www.npmjs.com/package/@framers/agentos-ext-meeting-zoom-rtms",
2425
2455
  "repository": "https://github.com/framerslab/agentos-extensions/tree/master/registry/curated/meetings/zoom-rtms",
2426
2456
  "verified": true,
2427
- "verifiedAt": "2026-10-18T17:11:31.345Z",
2457
+ "verifiedAt": "2026-10-31T11:04:37.896Z",
2428
2458
  "verificationChecklistVersion": "1.0.0",
2429
2459
  "downloads": 0
2430
2460
  },
@@ -2468,7 +2498,7 @@
2468
2498
  "id": "com.framers.productivity.document-export",
2469
2499
  "name": "Document Export",
2470
2500
  "package": "@framers/agentos-ext-document-export",
2471
- "version": "0.3.5",
2501
+ "version": "0.3.6",
2472
2502
  "category": "productivity",
2473
2503
  "path": "registry/curated/productivity/document-export",
2474
2504
  "description": "Generate PDF, DOCX, PPTX, CSV, and XLSX documents from structured content",
@@ -2493,7 +2523,7 @@
2493
2523
  "npm": "https://www.npmjs.com/package/@framers/agentos-ext-document-export",
2494
2524
  "repository": "https://github.com/framerslab/agentos-extensions/tree/master/registry/curated/productivity/document-export",
2495
2525
  "verified": true,
2496
- "verifiedAt": "2026-10-22T04:19:48.241Z",
2526
+ "verifiedAt": "2026-10-31T11:04:37.896Z",
2497
2527
  "verificationChecklistVersion": "1.0.0",
2498
2528
  "downloads": 0
2499
2529
  },
@@ -2597,7 +2627,7 @@
2597
2627
  "id": "com.framers.productivity.gmail-source",
2598
2628
  "name": "Gmail Source",
2599
2629
  "package": "@framers/agentos-ext-gmail-source",
2600
- "version": "0.6.2",
2630
+ "version": "0.6.3",
2601
2631
  "category": "productivity",
2602
2632
  "path": "registry/curated/productivity/gmail-source",
2603
2633
  "description": "Read-only OAuth and bounded personal Gmail source helpers",
@@ -2618,7 +2648,7 @@
2618
2648
  "npm": "https://www.npmjs.com/package/@framers/agentos-ext-gmail-source",
2619
2649
  "repository": "https://github.com/framerslab/agentos-extensions/tree/master/registry/curated/productivity/gmail-source",
2620
2650
  "verified": true,
2621
- "verifiedAt": "2026-10-22T04:19:48.241Z",
2651
+ "verifiedAt": "2026-10-31T11:04:37.896Z",
2622
2652
  "verificationChecklistVersion": "1.0.0",
2623
2653
  "downloads": 0
2624
2654
  },
@@ -2626,7 +2656,7 @@
2626
2656
  "id": "com.framers.productivity.google-calendar",
2627
2657
  "name": "Google Calendar Extension",
2628
2658
  "package": "@framers/agentos-ext-calendar-google",
2629
- "version": "1.0.3",
2659
+ "version": "1.0.4",
2630
2660
  "category": "productivity",
2631
2661
  "path": "registry/curated/productivity/google-calendar",
2632
2662
  "description": "Google Calendar integration with OAuth2 auth and event management — supports event CRUD, free/busy queries, and multi-calendar listing.",
@@ -2662,7 +2692,7 @@
2662
2692
  "npm": "https://www.npmjs.com/package/@framers/agentos-ext-calendar-google",
2663
2693
  "repository": "https://github.com/framerslab/agentos-extensions/tree/master/registry/curated/productivity/google-calendar",
2664
2694
  "verified": true,
2665
- "verifiedAt": "2026-10-19T06:39:25.136Z",
2695
+ "verifiedAt": "2026-10-31T11:04:37.896Z",
2666
2696
  "verificationChecklistVersion": "1.0.0",
2667
2697
  "downloads": 0
2668
2698
  },
@@ -2670,7 +2700,7 @@
2670
2700
  "id": "com.framers.productivity.google-drive",
2671
2701
  "name": "Google Drive",
2672
2702
  "package": "@framers/agentos-ext-google-drive",
2673
- "version": "1.3.0",
2703
+ "version": "1.4.0",
2674
2704
  "category": "productivity",
2675
2705
  "path": "registry/curated/productivity/google-drive",
2676
2706
  "description": "Google Drive files a person picked, read under the drive.file scope: Google's grant on AgentOS's redirect OAuth flow, Drive's calls and an account source connector",
@@ -2692,7 +2722,7 @@
2692
2722
  "npm": "https://www.npmjs.com/package/@framers/agentos-ext-google-drive",
2693
2723
  "repository": "https://github.com/framerslab/agentos-extensions/tree/master/registry/curated/productivity/google-drive",
2694
2724
  "verified": true,
2695
- "verifiedAt": "2026-10-24T23:29:10.066Z",
2725
+ "verifiedAt": "2026-10-31T11:04:37.896Z",
2696
2726
  "verificationChecklistVersion": "1.0.0",
2697
2727
  "downloads": 0
2698
2728
  },
@@ -2772,7 +2802,7 @@
2772
2802
  "id": "com.framers.research.account-sources",
2773
2803
  "name": "Account Sources",
2774
2804
  "package": "@framers/agentos-ext-account-sources",
2775
- "version": "0.9.6",
2805
+ "version": "0.11.0",
2776
2806
  "category": "research",
2777
2807
  "path": "registry/curated/research/account-sources",
2778
2808
  "description": "A person's own accounts as sources: connector interfaces, passage attribution, capped reads and a shared limiter",
@@ -2793,7 +2823,7 @@
2793
2823
  "npm": "https://www.npmjs.com/package/@framers/agentos-ext-account-sources",
2794
2824
  "repository": "https://github.com/framerslab/agentos-extensions/tree/master/registry/curated/research/account-sources",
2795
2825
  "verified": true,
2796
- "verifiedAt": "2026-10-24T23:29:10.066Z",
2826
+ "verifiedAt": "2026-10-31T11:04:37.896Z",
2797
2827
  "verificationChecklistVersion": "1.0.0",
2798
2828
  "downloads": 0
2799
2829
  },
@@ -2801,7 +2831,7 @@
2801
2831
  "id": "com.framers.research.citation-check",
2802
2832
  "name": "Citation Check",
2803
2833
  "package": "@framers/agentos-ext-citation-check",
2804
- "version": "0.1.2",
2834
+ "version": "0.1.3",
2805
2835
  "category": "research",
2806
2836
  "path": "registry/curated/research/citation-check",
2807
2837
  "description": "Checks the quoted claims of a document against the pages they cite, with AgentOS's citation tooling: word for word first, then by embeddings when a model is configured",
@@ -2823,7 +2853,7 @@
2823
2853
  "npm": "https://www.npmjs.com/package/@framers/agentos-ext-citation-check",
2824
2854
  "repository": "https://github.com/framerslab/agentos-extensions/tree/master/registry/curated/research/citation-check",
2825
2855
  "verified": true,
2826
- "verifiedAt": "2026-10-22T04:19:48.241Z",
2856
+ "verifiedAt": "2026-10-31T11:04:37.896Z",
2827
2857
  "verificationChecklistVersion": "1.0.0",
2828
2858
  "downloads": 0
2829
2859
  },
@@ -2831,7 +2861,7 @@
2831
2861
  "id": "com.framers.tools.citation-verifier",
2832
2862
  "name": "Citation Verifier",
2833
2863
  "package": "@framers/agentos-ext-citation-verifier",
2834
- "version": "0.1.2",
2864
+ "version": "0.1.3",
2835
2865
  "category": "research",
2836
2866
  "path": "registry/curated/research/citation-verifier",
2837
2867
  "description": "DEPRECATED — thin tool wrapper around the first-class @framers/agentos CitationVerifier. Kept for backwards compatibility.",
@@ -2856,7 +2886,7 @@
2856
2886
  "npm": "https://www.npmjs.com/package/@framers/agentos-ext-citation-verifier",
2857
2887
  "repository": "https://github.com/framerslab/agentos-extensions/tree/master/registry/curated/research/citation-verifier",
2858
2888
  "verified": true,
2859
- "verifiedAt": "2026-10-18T17:11:31.345Z",
2889
+ "verifiedAt": "2026-10-31T11:04:37.896Z",
2860
2890
  "verificationChecklistVersion": "1.0.0",
2861
2891
  "downloads": 0
2862
2892
  },
@@ -3230,7 +3260,7 @@
3230
3260
  "id": "com.framers.safety.ml-classifiers",
3231
3261
  "name": "ML-based content classifiers for AgentOS — toxicity, prompt injection, and NSFW detection via ONNX models or LLM fallback",
3232
3262
  "package": "@framers/agentos-ext-ml-classifiers",
3233
- "version": "0.2.1",
3263
+ "version": "0.3.2",
3234
3264
  "category": "safety",
3235
3265
  "path": "registry/curated/safety/ml-classifiers",
3236
3266
  "description": "ML-based content classifiers for AgentOS — toxicity, prompt injection, and NSFW detection via ONNX models or LLM fallback",
@@ -3241,7 +3271,7 @@
3241
3271
  "npm": "https://www.npmjs.com/package/@framers/agentos-ext-ml-classifiers",
3242
3272
  "repository": "https://github.com/framerslab/agentos-extensions/tree/master/registry/curated/safety/ml-classifiers",
3243
3273
  "verified": true,
3244
- "verifiedAt": "2026-10-18T17:11:31.345Z",
3274
+ "verifiedAt": "2026-10-31T11:04:37.896Z",
3245
3275
  "verificationChecklistVersion": "1.0.0",
3246
3276
  "downloads": 0
3247
3277
  },
@@ -3249,7 +3279,7 @@
3249
3279
  "id": "com.framers.safety.topicality",
3250
3280
  "name": "Topic enforcement guardrail for AgentOS — embedding-based on/off-topic detection with LLM fallback",
3251
3281
  "package": "@framers/agentos-ext-topicality",
3252
- "version": "0.2.1",
3282
+ "version": "0.2.3",
3253
3283
  "category": "safety",
3254
3284
  "path": "registry/curated/safety/topicality",
3255
3285
  "description": "Topic enforcement guardrail for AgentOS — embedding-based on/off-topic detection with LLM fallback",
@@ -3260,7 +3290,7 @@
3260
3290
  "npm": "https://www.npmjs.com/package/@framers/agentos-ext-topicality",
3261
3291
  "repository": "https://github.com/framerslab/agentos-extensions/tree/master/registry/curated/safety/topicality",
3262
3292
  "verified": true,
3263
- "verifiedAt": "2026-10-18T17:11:31.345Z",
3293
+ "verifiedAt": "2026-10-31T11:04:37.896Z",
3264
3294
  "verificationChecklistVersion": "1.0.0",
3265
3295
  "downloads": 0
3266
3296
  },
@@ -3381,10 +3411,10 @@
3381
3411
  "id": "com.framers.system.operations",
3382
3412
  "name": "Operations",
3383
3413
  "package": "@framers/agentos-ext-operations",
3384
- "version": "0.1.0",
3414
+ "version": "0.2.0",
3385
3415
  "category": "system",
3386
3416
  "path": "registry/curated/system/operations",
3387
- "description": "Operations records in a product's own database through the SQL storage adapter: a log table with search, an events table with daily totals over the product's figures, and the jobs that keep them, under a table prefix of its own. Support requests, error capture and health checks are typed stubs until the next minor release.",
3417
+ "description": "Operations records in a product's own database through the SQL storage adapter: support requests with a per-request anonymous id, a live stream, mail and bell outboxes, pictures, deletions and an export; a log table with search; an events table with daily totals over the product's figures; and the jobs that keep them, under a table prefix of its own. Error capture and health checks are typed stubs until the next minor release.",
3388
3418
  "author": {
3389
3419
  "name": "Frame",
3390
3420
  "email": "team@frame.dev",
@@ -3395,8 +3425,9 @@
3395
3425
  "Logs: the lines the product already writes, checked against the keys it declares, kept 14 days and searched by kind, path, status, process and time",
3396
3426
  "Events: counts by kind and plan with the time cut to the hour, kept 90 days, and daily totals of the product's figures by day and by plan, kept two years, with a funnel, retention by sign-up cohort and revenue against cost",
3397
3427
  "A field rule every line and event is checked against: a closed list of keys the product declares, with refusals counted and never stored",
3398
- "Shared jobs under try-locks: the nightly totals at 00:20 UTC and an hourly sweep of every retention",
3399
- "Support requests, error capture and health checks: their tables and types ship now, and their functions throw not_built until the next minor release",
3428
+ "Shared jobs under try-locks: the nightly totals at 00:20 UTC and an hourly sweep that resolves and closes requests by their silence and runs every retention",
3429
+ "Support requests: a thread a person opens from the app and staff work from the admin, each request under an anonymous id of its own, with a live stream, mail to a person who has not read a reply, the product's bell, pictures decoded and written again as WebP with no metadata, links to token paths cut before they are stored, deletion of one request or a whole account, and an export as a zip",
3430
+ "Error capture and health checks: their tables and types ship now, and their functions throw not_built until the next minor release",
3400
3431
  "An adoption guide in the README for the next product"
3401
3432
  ],
3402
3433
  "tools": [
@@ -3414,7 +3445,7 @@
3414
3445
  "npm": "https://www.npmjs.com/package/@framers/agentos-ext-operations",
3415
3446
  "repository": "https://github.com/framerslab/agentos-extensions/tree/master/registry/curated/system/operations",
3416
3447
  "verified": true,
3417
- "verifiedAt": "2026-10-24T23:29:10.066Z",
3448
+ "verifiedAt": "2026-10-31T11:04:37.896Z",
3418
3449
  "verificationChecklistVersion": "1.0.0",
3419
3450
  "downloads": 0
3420
3451
  },
@@ -3502,7 +3533,7 @@
3502
3533
  "id": "com.framers.tools.document-parser",
3503
3534
  "name": "Document Parser",
3504
3535
  "package": "@framers/agentos-ext-document-parser",
3505
- "version": "0.1.1",
3536
+ "version": "0.1.2",
3506
3537
  "category": "tools",
3507
3538
  "path": "registry/curated/tools/document-parser",
3508
3539
  "description": "A document reader over a Unix socket: PDF, Word and text files read with AgentOS's isolated loader inside a container of their own",
@@ -3525,7 +3556,7 @@
3525
3556
  "npm": "https://www.npmjs.com/package/@framers/agentos-ext-document-parser",
3526
3557
  "repository": "https://github.com/framerslab/agentos-extensions/tree/master/registry/curated/tools/document-parser",
3527
3558
  "verified": true,
3528
- "verifiedAt": "2026-10-24T23:29:10.066Z",
3559
+ "verifiedAt": "2026-10-31T11:04:37.896Z",
3529
3560
  "verificationChecklistVersion": "1.0.0",
3530
3561
  "downloads": 0
3531
3562
  },
@@ -3920,7 +3951,7 @@
3920
3951
  "id": "com.framers.tools.zip-files",
3921
3952
  "name": "Zip Files",
3922
3953
  "package": "@framers/agentos-ext-zip-files",
3923
- "version": "0.1.3",
3954
+ "version": "0.1.4",
3924
3955
  "category": "tools",
3925
3956
  "path": "registry/curated/tools/zip-files",
3926
3957
  "description": "Create zip archives from local files for easy sharing via chat channels.",
@@ -3944,7 +3975,7 @@
3944
3975
  "npm": "https://www.npmjs.com/package/@framers/agentos-ext-zip-files",
3945
3976
  "repository": "https://github.com/framerslab/agentos-extensions/tree/master/registry/curated/tools/zip-files",
3946
3977
  "verified": true,
3947
- "verifiedAt": "2026-10-22T04:19:48.241Z",
3978
+ "verifiedAt": "2026-10-31T11:04:37.896Z",
3948
3979
  "verificationChecklistVersion": "1.0.0",
3949
3980
  "downloads": 0
3950
3981
  },
@@ -4347,8 +4378,8 @@
4347
4378
  ]
4348
4379
  },
4349
4380
  "stats": {
4350
- "totalExtensions": 126,
4351
- "curatedCount": 123,
4381
+ "totalExtensions": 127,
4382
+ "curatedCount": 124,
4352
4383
  "communityCount": 0,
4353
4384
  "templateCount": 3,
4354
4385
  "totalDownloads": 0