npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

@executioncontrolprotocol/plugin-adobe-firefly-services

v0.51.0

Published

Adobe Firefly Services plugin for ECP (family-prefixed kebab capability ids)

Readme

@executioncontrolprotocol/plugin-adobe-firefly-services

Adobe Firefly Services for ECP (Execution Control Protocol). One plugin, 68 generated capabilities (OpenAPI operations minus internal status/cancel). Install with:

ecp plugins install adobe-firefly-services

ecp firefly --help is a generated topic alias for ecp adobe-firefly-services. Capability ids stay @executioncontrolprotocol/adobe-firefly-services.<family>-<operation>.

Auth uses current OAuth Server-to-Server (client_credentials). Bind credentials with secrets() — not deprecated JWT technical accounts.

Guide index: Firefly Services docs.

Binding

import adobeFireflyServicesExtension from "@executioncontrolprotocol/plugin-adobe-firefly-services"
import { environment, extension, NODE_ENVIRONMENT_ID, secrets } from "@executioncontrolprotocol/node"

export default environment(NODE_ENVIRONMENT_ID, "adobe-demo").with([
  extension(adobeFireflyServicesExtension).with({
    clientId: secrets("adobe-firefly-services/client-id"),
    clientSecret: secrets("adobe-firefly-services/client-secret"),
  }),
])

Or install the plugin and let the CLI host load it. Workflow files bind by id and never import this package.

extension("@executioncontrolprotocol/adobe-firefly-services").with({
  clientId: secrets("adobe-firefly-services/client-id"),
  clientSecret: secrets("adobe-firefly-services/client-secret"),
})

Secrets

| Key | Config field | | --- | --- | | adobe-firefly-services/client-id | clientId (x-api-key) | | adobe-firefly-services/client-secret | clientSecret |

Optional: scopes, imsEndpoint.

Families

| Prefix | Spec (under openapi/) | Notes | | ------ | ----------------------- | ----- | | firefly | firefly/firefly-api.json | Generative image/video/etc. | | photoshop | photoshop/photoshopv2-api.json | v2 only; absorbs Lightroom-style workflows | | express | express/ffs-express-api.json | Express (beta) | | indesign | indesign/indesignapi.json | InDesign | | substance3d | substance3d/openapi.yaml | Substance 3D | | illustrator | illustrator/*.json | GA + beta merged | | creative-production | creative-production/workflow-builder-api.yaml | Workflow Builder | | audio-video | audio-video/*.json | Audio/Video + translate/lipsync |

Examples:

  • @executioncontrolprotocol/adobe-firefly-services.firefly-generate-images-v3-async
  • @executioncontrolprotocol/adobe-firefly-services.firefly-generate-images-v5-async (Image5)
  • @executioncontrolprotocol/adobe-firefly-services.photoshop-generate-manifest

Browser apps import the package root; bundlers resolve exports["."].browser to a host-hop catalog (no IMS). Execution needs a Node host.

Photoshop v1 and standalone Lightroom OpenAPI are out of scope (v2 supersedes them).

Content Tagging: no Firefly Services OpenAPI is published under AdobeDocs ffs-* yet — see openapi/content-tagging/SOURCE.md. Express tagged-document endpoints live under the express family.

Asset URLs via Azure Blob Storage

Firefly and Photoshop accept allow-listed HTTPS SAS URLs (including Azure *.windows.net). Use @executioncontrolprotocol/plugin-azure-blob-storage to upload assets and mint read/write SAS URLs, then pass them into Firefly referenceBlobs / Photoshop source.url via ref(). See examples/azure-adobe-assets.ecp.ts.

Async capabilities return final results

Adobe Firefly Services APIs are often 202 async. This package hides that from workflows:

  • Async submit ops always poll internally via pollAdobeJob and return the inner result document (for example Firefly { outputs }), not the job envelope (status, jobId, statusUrl).
  • Optional pollIntervalMs / pollTimeoutMs on extension config tune the wait. They are not step ports. There is no poll flag and no status/cancel capabilities.
  • Sync caps (list/get metadata) are unchanged.

photoshop-generate-manifest materializes the PSD manifest JSON (layer tree) after the job succeeds so you can ref("manifest.layers.0.id").

Capability input shape

Generated handlers merge OpenAPI path/query/header/body into:

{
  // path, query, header, and JSON-body fields as top-level keys
  prompt?: string,
  "x-model-version"?: string,
  body?: { ... }, // optional full JSON merge
}
ecp adobe-firefly-services --help --json
ecp firefly --help

Codegen

pnpm --filter @executioncontrolprotocol/plugin-adobe-firefly-services run fetch:specs
pnpm --filter @executioncontrolprotocol/plugin-adobe-firefly-services run generate

Generated sources under src/generated/ are committed. Empty free-form OpenAPI objects fail the generator (use openapi/overlays/); z.unknown / z.any / untyped z.record are forbidden.

Examples

  • examples/adobe-firefly-smoke.ecp.ts — thin generate-images smoke
  • examples/azure-adobe-assets.ecp.ts — Azure upload + Image5 recolor
  • examples/azure-photoshop-manifest.ecp.ts — Azure upload + Photoshop generate-manifest