@framers/agentos-extensions 1.0.3 → 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.
- package/README.md +49 -42
- package/package.json +7 -10
- package/registry.json +772 -432
package/README.md
CHANGED
|
@@ -8,11 +8,12 @@
|
|
|
8
8
|
|
|
9
9
|
Extension source code for AgentOS — tools, channel adapters, integrations, and starter templates.
|
|
10
10
|
|
|
11
|
-
[](https://github.com/framerslab/agentos-extensions/actions)
|
|
12
12
|
[](https://opensource.org/licenses/Apache-2.0)
|
|
13
|
-
[](https://
|
|
13
|
+
[](https://framerslab.github.io/agentos-extensions/)
|
|
14
14
|
[](https://www.npmjs.com/package/@framers/agentos-extensions-registry)
|
|
15
15
|
[](https://www.npmjs.com/package/@framers/agentos-extensions)
|
|
16
|
+
[](https://www.nvidia.com/en-us/startups/)
|
|
16
17
|
|
|
17
18
|
## What This Package Is
|
|
18
19
|
|
|
@@ -90,7 +91,7 @@ All extensions are published to npm under the `@framers` scope.
|
|
|
90
91
|
| [`@framers/agentos-ext-channel-blog-publisher`](./registry/curated/channels/blog-publisher) | Blog publisher (Dev.to, Hashnode, Medium, WordPress) | [](https://www.npmjs.com/package/@framers/agentos-ext-channel-blog-publisher) |
|
|
91
92
|
| [`@framers/agentos-ext-channel-pinterest`](./registry/curated/channels/pinterest) | Pinterest social channel (API v5) | [](https://www.npmjs.com/package/@framers/agentos-ext-channel-pinterest) |
|
|
92
93
|
| [`@framers/agentos-ext-channel-tiktok`](./registry/curated/channels/tiktok) | TikTok social channel (API for Business) | [](https://www.npmjs.com/package/@framers/agentos-ext-channel-tiktok) |
|
|
93
|
-
| [`@framers/agentos-ext-channel-email`](./registry/curated/channels/email) | Email messaging channel (
|
|
94
|
+
| [`@framers/agentos-ext-channel-email`](./registry/curated/channels/email) | Email messaging channel (SMTP or Resend's HTTPS API, IMAP), with a suppression record and unsubscribe tokens on SQL | [](https://www.npmjs.com/package/@framers/agentos-ext-channel-email) |
|
|
94
95
|
|
|
95
96
|
## Two-Tier Extension Pattern
|
|
96
97
|
|
|
@@ -118,20 +119,19 @@ independently. Version bumps here do **not** affect curated extension versions.
|
|
|
118
119
|
|
|
119
120
|
### Curated Extensions (this submodule)
|
|
120
121
|
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
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)).
|
|
127
126
|
|
|
128
127
|
### Why two tiers?
|
|
129
128
|
|
|
130
129
|
- **Core extensions** are safety-critical guardrails and foundational infrastructure.
|
|
131
130
|
They need independent semver to signal breaking changes without forcing a catalog-wide
|
|
132
131
|
release. Their CI runs on every PR to the monorepo root.
|
|
133
|
-
- **Curated extensions** are the broader catalog.
|
|
134
|
-
interdependencies aligned
|
|
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.
|
|
135
135
|
|
|
136
136
|
### Where do safety guardrails live?
|
|
137
137
|
|
|
@@ -146,7 +146,6 @@ have not yet been merged upstream to the root packages.
|
|
|
146
146
|
|
|
147
147
|
```
|
|
148
148
|
agentos-extensions/
|
|
149
|
-
├── .changeset/ # Changesets for versioning & publishing
|
|
150
149
|
├── .github/workflows/ # CI, release, TypeDoc pages
|
|
151
150
|
├── logos/ # Branding assets
|
|
152
151
|
├── templates/ # Starter templates for new extensions
|
|
@@ -161,6 +160,7 @@ agentos-extensions/
|
|
|
161
160
|
│ │ ├── communications/# Telegram bot, notifications
|
|
162
161
|
│ │ ├── integrations/ # External services (Telegram API)
|
|
163
162
|
│ │ ├── media/ # Giphy, image search, voice synthesis
|
|
163
|
+
│ │ ├── meetings/ # Browser-join meeting bot provider (Google Meet, Microsoft Teams)
|
|
164
164
|
│ │ ├── provenance/ # On-chain anchoring (tip-ingestion package is published separately)
|
|
165
165
|
│ │ ├── research/ # Web search, deep research, content extraction
|
|
166
166
|
│ │ ├── safety/ # Stub READMEs -> core packages (see above)
|
|
@@ -169,7 +169,7 @@ agentos-extensions/
|
|
|
169
169
|
│ │ └── productivity/ # Google Calendar, Gmail
|
|
170
170
|
│ └── community/ # Community-contributed extensions
|
|
171
171
|
├── scripts/ # Registry build & scaffolding tools
|
|
172
|
-
├── registry.json #
|
|
172
|
+
├── registry.json # generated by pnpm run build; the published catalog ships in the npm package
|
|
173
173
|
├── pnpm-workspace.yaml # Workspace packages for publishing
|
|
174
174
|
└── typedoc.json # API docs config
|
|
175
175
|
```
|
|
@@ -352,6 +352,7 @@ For the dispatcher mechanics (Phase 1 sanitizers, Phase 2 parallel classifiers,
|
|
|
352
352
|
| `email.smtpHost` | `SMTP_HOST` | channel-email |
|
|
353
353
|
| `email.smtpUser` | `SMTP_USER` | channel-email |
|
|
354
354
|
| `email.smtpPassword` | `SMTP_PASSWORD` | channel-email |
|
|
355
|
+
| `email.resendApiKey` | `RESEND_API_KEY` | channel-email |
|
|
355
356
|
|
|
356
357
|
#### Selective loading examples
|
|
357
358
|
|
|
@@ -386,10 +387,8 @@ const manifest = await createCuratedManifest({
|
|
|
386
387
|
### Create a new extension
|
|
387
388
|
|
|
388
389
|
```bash
|
|
389
|
-
#
|
|
390
|
-
|
|
391
|
-
|
|
392
|
-
# Or copy a 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
|
-
|
|
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.
|
|
407
|
-
|
|
408
|
-
#
|
|
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
|
-
#
|
|
412
|
-
|
|
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
|
-
#
|
|
415
|
-
#
|
|
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,11 +426,13 @@ 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`):
|
|
432
|
-
- **Release** (`release.yml`):
|
|
433
|
-
- **TypeDoc** (`pages-typedoc.yml`): API docs deployed to [
|
|
434
|
-
- **
|
|
435
|
-
- **
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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`
|
|
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
|
|
436
436
|
|
|
437
437
|
## Quality Standards
|
|
438
438
|
|
|
@@ -452,7 +452,7 @@ All extensions get free CI/CD via GitHub Actions:
|
|
|
452
452
|
|
|
453
453
|
## Documentation
|
|
454
454
|
|
|
455
|
-
- [API Reference (TypeDoc)](https://
|
|
455
|
+
- [API Reference (TypeDoc)](https://framerslab.github.io/agentos-extensions/)
|
|
456
456
|
- [How Extensions Work](./HOW_EXTENSIONS_WORK.md)
|
|
457
457
|
- [Extension Architecture](./EXTENSION_ARCHITECTURE.md)
|
|
458
458
|
- [Auto-Loading Extensions](./AUTO_LOADING_EXTENSIONS.md)
|
|
@@ -462,22 +462,29 @@ All extensions get free CI/CD via GitHub Actions:
|
|
|
462
462
|
- [Releasing & Publishing](./RELEASING.md)
|
|
463
463
|
- [Contributing](./CONTRIBUTING.md)
|
|
464
464
|
|
|
465
|
-
## Contributing
|
|
465
|
+
## Contributing and support
|
|
466
466
|
|
|
467
|
-
|
|
467
|
+
| Guide | What |
|
|
468
|
+
|---|---|
|
|
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 |
|
|
471
|
+
| [Agent instructions](https://github.com/framerslab/agentos-extensions/blob/master/AGENTS.md) | Commands and conventions for coding agents |
|
|
472
|
+
| [Maintainers](https://github.com/framerslab/agentos-extensions/blob/master/MAINTAINERS.md) | Who reviews and merges changes |
|
|
473
|
+
| [Code of Conduct](https://github.com/framerslab/agentos-extensions/blob/master/.github/CODE_OF_CONDUCT.md) | Community standards |
|
|
474
|
+
| [Security Policy](https://github.com/framerslab/agentos-extensions/blob/master/.github/SECURITY.md) | Reporting vulnerabilities privately |
|
|
475
|
+
| [Support](https://github.com/framerslab/agentos-extensions/blob/master/SUPPORT.md) | Where to get help |
|
|
468
476
|
|
|
469
|
-
- [
|
|
470
|
-
- [Report
|
|
471
|
-
- [Request
|
|
477
|
+
- [Propose a new extension](https://github.com/framerslab/agentos-extensions/issues/new?template=new-extension.yml)
|
|
478
|
+
- [Report a bug](https://github.com/framerslab/agentos-extensions/issues/new?template=bug_report.yml)
|
|
479
|
+
- [Request a feature](https://github.com/framerslab/agentos-extensions/issues/new?template=feature_request.yml)
|
|
472
480
|
|
|
473
481
|
## Links
|
|
474
482
|
|
|
475
483
|
- **AgentOS**: [agentos.sh](https://agentos.sh)
|
|
476
|
-
- **AgentOS GitHub**: [github.com/
|
|
477
|
-
- **Extensions GitHub**: [github.com/
|
|
478
|
-
- **Mars Genesis Demo**: [github.com/framersai/mars-genesis-simulation](https://github.com/framersai/mars-genesis-simulation)
|
|
484
|
+
- **AgentOS GitHub**: [github.com/framerslab/agentos](https://github.com/framerslab/agentos)
|
|
485
|
+
- **Extensions GitHub**: [github.com/framerslab/agentos-extensions](https://github.com/framerslab/agentos-extensions)
|
|
479
486
|
- **npm**: [@framers](https://www.npmjs.com/org/framers)
|
|
480
|
-
- **API Docs**: [
|
|
487
|
+
- **API Docs**: [framerslab.github.io/agentos-extensions](https://framerslab.github.io/agentos-extensions/)
|
|
481
488
|
- **Discord**: [wilds.ai/discord](https://wilds.ai/discord)
|
|
482
489
|
- **Website**: [frame.dev](https://frame.dev)
|
|
483
490
|
- **Contact**: [team@frame.dev](mailto:team@frame.dev)
|
|
@@ -495,6 +502,6 @@ All extensions in this repository are Apache 2.0 licensed.
|
|
|
495
502
|
</p>
|
|
496
503
|
|
|
497
504
|
<p align="center">
|
|
498
|
-
Built by <a href="https://
|
|
505
|
+
Built by <a href="https://frame.dev">Frame</a><br>
|
|
499
506
|
Contact: <a href="mailto:team@frame.dev">team@frame.dev</a>
|
|
500
507
|
</p>
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@framers/agentos-extensions",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.5",
|
|
4
4
|
"files": [
|
|
5
5
|
"index.mjs",
|
|
6
6
|
"registry.json",
|
|
@@ -10,7 +10,7 @@
|
|
|
10
10
|
"description": "Extension source for AgentOS — implementations, templates, and manifests for tools, channel adapters, and integrations. Companion to the @framers/agentos TypeScript AI agent runtime.",
|
|
11
11
|
"homepage": "https://agentos.sh",
|
|
12
12
|
"bugs": {
|
|
13
|
-
"url": "https://github.com/
|
|
13
|
+
"url": "https://github.com/framerslab/agentos-extensions/issues"
|
|
14
14
|
},
|
|
15
15
|
"type": "module",
|
|
16
16
|
"sideEffects": false,
|
|
@@ -24,7 +24,7 @@
|
|
|
24
24
|
},
|
|
25
25
|
"repository": {
|
|
26
26
|
"type": "git",
|
|
27
|
-
"url": "https://github.com/
|
|
27
|
+
"url": "https://github.com/framerslab/agentos-extensions.git"
|
|
28
28
|
},
|
|
29
29
|
"keywords": [
|
|
30
30
|
"agentos",
|
|
@@ -71,19 +71,16 @@
|
|
|
71
71
|
},
|
|
72
72
|
"devDependencies": {
|
|
73
73
|
"@atproto/api": "^0.13.0",
|
|
74
|
-
"
|
|
75
|
-
"@changesets/cli": "^2.29.8",
|
|
76
|
-
"masto": "^6.8.0",
|
|
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
|
-
"create-extension": "node scripts/create-extension.js",
|
|
83
81
|
"update-registry": "node scripts/update-registry.js",
|
|
84
82
|
"docs": "npx typedoc",
|
|
85
|
-
"
|
|
86
|
-
"
|
|
87
|
-
"release": "changeset publish"
|
|
83
|
+
"test": "node --test scripts/__tests__/*.test.mjs",
|
|
84
|
+
"pack-guard": "node scripts/pack-guard.mjs"
|
|
88
85
|
}
|
|
89
86
|
}
|