@jfrog/opencode-jfrog-plugin 0.0.3 → 0.0.4

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 (34) hide show
  1. package/README.md +105 -51
  2. package/dist/index.js +30 -240
  3. package/package.json +6 -6
  4. package/skills/jfrog/SKILL.md +529 -0
  5. package/skills/jfrog/assets/.gitkeep +0 -0
  6. package/skills/jfrog/references/apptrust-entities.md +154 -0
  7. package/skills/jfrog/references/artifactory-api-gaps.md +206 -0
  8. package/skills/jfrog/references/artifactory-aql-syntax.md +656 -0
  9. package/skills/jfrog/references/artifactory-entities.md +236 -0
  10. package/skills/jfrog/references/artifactory-operations.md +178 -0
  11. package/skills/jfrog/references/catalog-entities.md +219 -0
  12. package/skills/jfrog/references/general-bulk-operations-and-agent-patterns.md +93 -0
  13. package/skills/jfrog/references/general-parallel-execution.md +131 -0
  14. package/skills/jfrog/references/general-use-case-hints.md +27 -0
  15. package/skills/jfrog/references/jfrog-brand-html-report.md +98 -0
  16. package/skills/jfrog/references/jfrog-cli-install-upgrade.md +30 -0
  17. package/skills/jfrog/references/jfrog-entity-index.md +112 -0
  18. package/skills/jfrog/references/jfrog-login-flow.md +132 -0
  19. package/skills/jfrog/references/jfrog-url-references.md +51 -0
  20. package/skills/jfrog/references/onemodel-common-patterns.md +323 -0
  21. package/skills/jfrog/references/onemodel-graphql.md +446 -0
  22. package/skills/jfrog/references/onemodel-query-examples.md +753 -0
  23. package/skills/jfrog/references/platform-access-entities.md +200 -0
  24. package/skills/jfrog/references/platform-admin-api-gaps.md +164 -0
  25. package/skills/jfrog/references/platform-admin-operations.md +58 -0
  26. package/skills/jfrog/references/projects-api.md +241 -0
  27. package/skills/jfrog/references/release-lifecycle-entities.md +180 -0
  28. package/skills/jfrog/references/stored-packages-entities.md +165 -0
  29. package/skills/jfrog/references/xray-entities.md +740 -0
  30. package/skills/jfrog/scripts/check-environment.sh +224 -0
  31. package/skills/jfrog/scripts/jfrog-login-register-session.sh +84 -0
  32. package/skills/jfrog/scripts/jfrog-login-save-credentials.sh +128 -0
  33. package/skills/jfrog-package-safety-and-download/SKILL.md +275 -0
  34. package/sync-skills-vendor.json +5 -0
@@ -0,0 +1,180 @@
1
+ # Release lifecycle entities
2
+
3
+ When to read this file:
4
+
5
+ - Working with **release bundles** (create, promote, distribute, delete).
6
+ - Understanding the **lifecycle stages** a release bundle passes through.
7
+ - Setting up **distribution** to Edge nodes or other Platform Deployments.
8
+ - Working with **evidence** (supply chain attestations).
9
+ - Mapping CLI commands (`rbc`, `rbp`, `rbd`, etc.) to their lifecycle meaning.
10
+
11
+ ## Entity relationship overview
12
+
13
+ ```mermaid
14
+ flowchart TD
15
+ Artifacts[Artifacts in Artifactory] -->|assembled into| RB[Release Bundle v2]
16
+ Build[Build Info] -->|can source artifacts for| RB
17
+ RB -->|promoted through| Stages[Lifecycle Stages]
18
+ Stages -->|promotion gates via| Env[Environments]
19
+ RB -->|distributed to| Edge[Edge Nodes]
20
+ RB -->|attested by| Evd[Evidence]
21
+ Xray -->|scans| RB
22
+ ```
23
+
24
+ ## Release Bundles (v2)
25
+
26
+ A release bundle is an **immutable, versioned collection of artifacts**
27
+ assembled from Artifactory. It represents a releasable unit that moves through
28
+ lifecycle stages toward production.
29
+
30
+ | Field | Description |
31
+ |-------|-------------|
32
+ | `name` | Bundle name (e.g. `my-app`) |
33
+ | `version` | Semantic or custom version string (e.g. `1.2.0`) |
34
+ | `artifacts` | Set of artifacts referenced by repo path and checksum |
35
+ | `created` | Timestamp of creation |
36
+ | `status` | Current lifecycle status |
37
+
38
+ Bundles can be assembled from:
39
+ - **AQL queries** — dynamically select artifacts matching criteria
40
+ - **Build info** — include all artifacts from a published build
41
+ - **Explicit list** — specify repo paths directly
42
+
43
+ Once created, a bundle's artifact list is **immutable** — the same version
44
+ always refers to the exact same set of artifacts. This is enforced by
45
+ checksums.
46
+
47
+ > **v1 vs v2:** Release Bundle v1 was managed by the Distribution service and
48
+ > is deprecated. Release Bundle v2 is managed by the Lifecycle service and is
49
+ > the current model. The CLI `rbc`/`rbp`/`rbd` commands default to v2.
50
+
51
+ ### CLI commands
52
+
53
+ | Command | Operation | Description |
54
+ |---------|-----------|-------------|
55
+ | `jf rbc` | Create | Assemble a new release bundle version |
56
+ | `jf rbp` | Promote | Move a bundle to the next lifecycle stage |
57
+ | `jf rbd` | Distribute | Deliver a bundle to target nodes |
58
+ | `jf rbs` | Sign | (v1 only — v2 signs on creation) |
59
+ | `jf rbdell` | Delete local | Remove a bundle version locally |
60
+ | `jf rbdelr` | Delete remote | Remove a distributed bundle from targets |
61
+
62
+ ## Lifecycle stages
63
+
64
+ A release bundle progresses through **stages** that typically correspond to
65
+ environments (DEV → STAGING → PROD). Each stage transition is a **promotion**.
66
+
67
+ ```
68
+ Created ──promote──▶ DEV ──promote──▶ STAGING ──promote──▶ PROD
69
+
70
+ distribute
71
+
72
+ Edge Nodes
73
+ ```
74
+
75
+ Promotion (`jf rbp`):
76
+ - Moves the bundle to a target **environment**
77
+ - Requires the bundle to have passed any required quality gates (Xray scans, approvals)
78
+ - Each promotion is **recorded** with timestamp, user, source and target environment
79
+ - Promotions are auditable — the full history is preserved
80
+
81
+ Environments used in promotion are the same environments configured in the
82
+ platform (see `platform-access-entities.md`). They scope which repos are
83
+ accessible and which roles apply at each stage.
84
+
85
+ ## Distribution
86
+
87
+ Distribution delivers a release bundle to **Edge nodes** or other JFrog
88
+ Platform Deployments.
89
+
90
+ | Concept | Description |
91
+ |---------|-------------|
92
+ | **Distribution target** | A JFrog Edge node or Platform Deployment registered to receive bundles |
93
+ | **Distribution rules** | Configuration mapping targets to the bundle version being delivered |
94
+ | **Site** | A named destination in the distribution rule |
95
+
96
+ Distribution (`jf rbd`) copies the bundle's artifacts to the target nodes,
97
+ preserving checksums and metadata. The target nodes receive the artifacts in
98
+ their local repositories.
99
+
100
+ Distribution is typically the **final step** after a bundle has been promoted
101
+ to a production-ready stage.
102
+
103
+ ## Release Bundles in GraphQL (OneModel)
104
+
105
+ Release bundle versions are also queryable via the OneModel GraphQL API
106
+ which exposes additional relationships not available
107
+ through the CLI:
108
+
109
+ | Field | Description |
110
+ |-------|-------------|
111
+ | `createdBy`, `createdAt` | Audit fields |
112
+ | `artifactsConnection` | Paginated artifacts with path, name, sha256, packageType, packageName, packageVersion, size, properties |
113
+ | `evidenceConnection` | Evidence attached to the bundle version |
114
+ | `fromBuilds` | Builds that sourced the bundle (name, number, startedAt, repositoryKey) |
115
+
116
+ Each artifact within a bundle also has its own `evidenceConnection`, allowing
117
+ per-artifact attestation queries.
118
+
119
+ For the OneModel query workflow (credentials, schema fetch, validation,
120
+ execution), read `references/onemodel-graphql.md`.
121
+
122
+ Query: `releaseBundleVersion.getReleaseBundleVersion(name: "...", version: "...", ...)`.
123
+
124
+ ## Evidence
125
+
126
+ Evidence provides **cryptographic attestations** about artifacts, builds,
127
+ release bundles, application versions, and stored packages for supply chain
128
+ integrity.
129
+
130
+ ### Evidence entity
131
+
132
+ | Field | Description |
133
+ |-------|-------------|
134
+ | `evidenceId` | Unique identifier |
135
+ | `subject` | The entity being attested (see Evidence subjects below) |
136
+ | `predicateCategory` | Category (e.g. `distribution`) |
137
+ | `predicateType` | Full type URI (e.g. `https://jfrog.com/evidence/distribution/v1`) |
138
+ | `predicateSlug` | Short form (e.g. `distribution-v1`) |
139
+ | `predicate` | Predicate data as JSON |
140
+ | `verified` | Whether the evidence signature has been verified |
141
+ | `signingKey` | Signing key with `alias` and `publicKey` for DSSE verification |
142
+ | `providerId` | ID of the evidence provider |
143
+ | `stageName` | Stage in which evidence was created (for release bundles and app versions) |
144
+ | `createdBy`, `createdAt` | Audit fields |
145
+ | `attachments` | File attachments (e.g. legal documents) with name, sha256, type, downloadPath |
146
+
147
+ Evidence records create a verifiable chain of trust:
148
+ - Build systems attest to build provenance
149
+ - Test frameworks attest to test results
150
+ - Approvers attest to manual reviews
151
+ - Security scans attest to vulnerability status
152
+ - Distribution records attest to delivery
153
+
154
+ ### Evidence subjects
155
+
156
+ Evidence subjects are **cross-domain** — the `EvidenceSubject` type is shared
157
+ across multiple domains via the `fullPath` key:
158
+
159
+ | Subject type | Domain | Example |
160
+ |-------------|--------|---------|
161
+ | Release bundle version | Release Lifecycle | Bundle attestation before distribution |
162
+ | Release bundle artifact | Release Lifecycle | Per-artifact attestation within a bundle |
163
+ | Application version | AppTrust | App version attestation before promotion |
164
+ | Application version artifact | AppTrust | Per-artifact attestation within an app version |
165
+ | Stored package version location | Stored Packages | Package attestation at a specific repo location |
166
+
167
+ This means evidence can be queried from any of these entry points — you don't
168
+ need to start from the Evidence query root. For example,
169
+ `applications.getApplicationVersion(...).evidenceSubject` reaches the same
170
+ evidence as `evidence.searchEvidence(where: {...})`.
171
+
172
+ ### CLI and GraphQL access
173
+
174
+ - **CLI**: `jf evd` namespace. Use `jf evd --help` for available commands.
175
+ - **GraphQL**: `evidence.searchEvidence(where: {...})`,
176
+ `evidence.getEvidenceById(id: "...")`, or
177
+ `evidence.getEvidence(repositoryKey: "...", path: "...", name: "...")`.
178
+
179
+ Evidence can be queried to verify that all required attestations exist before
180
+ promotion or distribution.
@@ -0,0 +1,165 @@
1
+ # Stored Packages entities (Metadata)
2
+
3
+ When to read this file:
4
+
5
+ - Querying **packages stored in Artifactory** at the package level (not raw artifacts).
6
+ - Finding **where a package version lives** (which repository, which path).
7
+ - Looking up **download statistics**, **tags**, or **qualifiers** on packages.
8
+ - Using the OneModel GraphQL API with the `storedPackages` query root.
9
+ - Understanding how the **Metadata layer bridges** Artifactory storage with
10
+ Applications and Catalog.
11
+
12
+ Stored Packages entities are accessed via the **OneModel GraphQL API**
13
+ (`/onemodel/api/v1/graphql`).
14
+
15
+ For the OneModel query workflow (credentials, schema fetch, validation,
16
+ execution), read `references/onemodel-graphql.md`.
17
+
18
+ ## Entity relationship overview
19
+
20
+ ```mermaid
21
+ erDiagram
22
+ StoredPackage ||--o{ StoredPackageVersion : "has versions"
23
+ StoredPackageVersion ||--o{ StoredPackageVersionLocation : "stored at"
24
+ StoredPackageVersion ||--o{ StoredPackageArtifact : "contains"
25
+ StoredPackageVersionLocation ||--o{ StoredPackageArtifact : "has artifacts"
26
+ StoredPackageVersionLocation }o--o| EvidenceSubject : "attested by"
27
+ StoredPackage }o--o{ StoredPackageTag : "tagged with"
28
+ StoredPackage }o--o{ StoredPackageQualifier : "qualified by"
29
+ StoredPackageVersion }o--o{ StoredPackageVersionTag : "tagged with"
30
+ StoredPackageVersion }o--o{ StoredPackageVersionQualifier : "qualified by"
31
+ ```
32
+
33
+ ## StoredPackage
34
+
35
+ A software package as known to Artifactory's metadata layer. This is the
36
+ **package-centric abstraction** over raw artifact storage — it groups related
37
+ artifacts into named, typed, versioned packages.
38
+
39
+ | Field | Description |
40
+ |-------|-------------|
41
+ | `name` | Package name (e.g. `lodash`, `spring-boot-starter-web`) |
42
+ | `type` | Package type (`npm`, `maven`, `docker`, `pypi`, etc.) |
43
+ | `repositoryPackageType` | Canonicalized Artifactory repo type enum (see below) |
44
+ | `description` | Package description |
45
+ | `versionsCount` | Number of known versions |
46
+ | `latestVersionName` | Most recent version string |
47
+ | `respectsSemver` | Whether versions follow semver |
48
+ | `tags` | Package-level tags |
49
+ | `qualifiers` | Key-value qualifiers |
50
+ | `stats` | Download count |
51
+ | `createdAt`, `modifiedAt` | Timestamps |
52
+
53
+ Query: `storedPackages.getPackage(name: "...", type: "...")` or
54
+ `storedPackages.searchPackages(where: {...})`.
55
+
56
+ ### Repository package type mapping
57
+
58
+ The `repositoryPackageType` enum canonicalizes Artifactory repo types. Notable
59
+ aliases:
60
+
61
+ | Artifactory type | Enum value |
62
+ |------------------|------------|
63
+ | `golang` | `GO` |
64
+ | `rpm` | `YUM` |
65
+ | `rubygems` | `GEMS` |
66
+ | `deb`, `dsc` | `DEBIAN` |
67
+ | `terraformprovider`, `terraformmodule` | `TERRAFORM` |
68
+ | `hfdataset` | `HUGGINGFACEML` |
69
+
70
+ The full enum includes 40+ types. Use `repositoryPackageType` for filtering
71
+ when the Artifactory repo type name differs from the canonical form.
72
+
73
+ ## StoredPackageVersion
74
+
75
+ A specific version of a package, with location and artifact details.
76
+
77
+ | Field | Description |
78
+ |-------|-------------|
79
+ | `package` | Parent StoredPackage |
80
+ | `version` | Version string |
81
+ | `versionSize` | Total size in bytes |
82
+ | `tags` | Version-level tags |
83
+ | `qualifiers` | Version-level key-value qualifiers |
84
+ | `stats` | Download count |
85
+ | `createdAt`, `modifiedAt` | Timestamps |
86
+
87
+ Connections:
88
+ - `locationsConnection` — where this version is stored (repos + paths)
89
+ - `artifactsConnection` — binary artifacts in this version
90
+
91
+ Query: `storedPackages.searchPackageVersions(where: {...})`.
92
+
93
+ ### Filtering capabilities
94
+
95
+ StoredPackageVersion supports rich filtering:
96
+ - By version string (exact, prefix, contains)
97
+ - By project key
98
+ - By creation/modification date ranges
99
+ - By version size
100
+ - By associated tags, qualifiers, locations, artifacts, licenses
101
+ - `ignorePreRelease` flag to exclude pre-release versions
102
+
103
+ ## StoredPackageVersionLocation
104
+
105
+ The **bridge entity** connecting a package version to a physical repository
106
+ location in Artifactory. This is the key entity for answering "where does
107
+ package X version Y live?"
108
+
109
+ | Field | Description |
110
+ |-------|-------------|
111
+ | `repositoryKey` | Artifactory repository key |
112
+ | `repositoryType` | Repository class |
113
+ | `packageVersion` | Parent version |
114
+ | `leadArtifactPath` | Path of the primary artifact |
115
+ | `leadArtifactSha256` | Checksum of the primary artifact |
116
+ | `evidenceSubject` | Evidence attestation anchor (shared across domains) |
117
+ | `stats` | Location-specific download count and last-downloaded timestamps |
118
+
119
+ The `evidenceSubject` field connects to the Evidence domain — evidence can be
120
+ attached to a specific package version in a specific repo, not just to the
121
+ version globally.
122
+
123
+ The `stats` block includes `downloadCount`, `lastDownloadedAt`, and
124
+ `remoteLastDownloadedAt` — the last field tracks when the artifact was last
125
+ fetched from a remote repository source.
126
+
127
+ ## StoredPackageArtifact
128
+
129
+ An individual binary file within a package version.
130
+
131
+ | Field | Description |
132
+ |-------|-------------|
133
+ | `name` | File name |
134
+ | `sha256` | SHA-256 checksum (primary identifier) |
135
+ | `sha1`, `md5` | Additional checksums |
136
+ | `size` | Size in bytes |
137
+ | `mimeType` | Content type |
138
+ | `qualifiers` | Artifact-level key-value qualifiers |
139
+
140
+ Filtering supports `isLeadArtifact` to identify the primary artifact in a
141
+ package version, and `projectKey` for project-scoped queries.
142
+
143
+ ## Cross-domain connections
144
+
145
+ Stored Packages bridge Artifactory storage to higher-level domains:
146
+
147
+ - **Applications (AppTrust)** — `ApplicationVersionReleasable.packageVersionLocation`
148
+ links to `StoredPackageVersionLocation`. Applications reference where their
149
+ package releasables physically reside.
150
+ - **Evidence** — `StoredPackageVersionLocation.evidenceSubject` connects to
151
+ the Evidence domain via `EvidenceSubject.fullPath`. Evidence can attest to
152
+ a specific package version at a specific repository location.
153
+ - **Catalog** — Stored Packages represent what's *in your Artifactory*, while
154
+ the Catalog represents the global knowledge base *about* those packages.
155
+ The package `type` + `name` can join across both.
156
+
157
+ ## Stored Packages vs. raw Artifactory
158
+
159
+ | Aspect | Stored Packages | Artifactory (REST/CLI) |
160
+ |--------|------------------------|------------------------|
161
+ | **Abstraction** | Package-centric (name + type + version) | File-centric (repo + path + name) |
162
+ | **Access** | GraphQL only | REST + CLI (`jf rt`) |
163
+ | **Versioning** | Built-in version model | Directory conventions per package type |
164
+ | **Locations** | Explicit location entity per version | Implicit via file path |
165
+ | **Use case** | Package inventory, cross-repo queries, application binding | File operations, repo management, builds |