@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.
- package/README.md +105 -51
- package/dist/index.js +30 -240
- package/package.json +6 -6
- package/skills/jfrog/SKILL.md +529 -0
- package/skills/jfrog/assets/.gitkeep +0 -0
- package/skills/jfrog/references/apptrust-entities.md +154 -0
- package/skills/jfrog/references/artifactory-api-gaps.md +206 -0
- package/skills/jfrog/references/artifactory-aql-syntax.md +656 -0
- package/skills/jfrog/references/artifactory-entities.md +236 -0
- package/skills/jfrog/references/artifactory-operations.md +178 -0
- package/skills/jfrog/references/catalog-entities.md +219 -0
- package/skills/jfrog/references/general-bulk-operations-and-agent-patterns.md +93 -0
- package/skills/jfrog/references/general-parallel-execution.md +131 -0
- package/skills/jfrog/references/general-use-case-hints.md +27 -0
- package/skills/jfrog/references/jfrog-brand-html-report.md +98 -0
- package/skills/jfrog/references/jfrog-cli-install-upgrade.md +30 -0
- package/skills/jfrog/references/jfrog-entity-index.md +112 -0
- package/skills/jfrog/references/jfrog-login-flow.md +132 -0
- package/skills/jfrog/references/jfrog-url-references.md +51 -0
- package/skills/jfrog/references/onemodel-common-patterns.md +323 -0
- package/skills/jfrog/references/onemodel-graphql.md +446 -0
- package/skills/jfrog/references/onemodel-query-examples.md +753 -0
- package/skills/jfrog/references/platform-access-entities.md +200 -0
- package/skills/jfrog/references/platform-admin-api-gaps.md +164 -0
- package/skills/jfrog/references/platform-admin-operations.md +58 -0
- package/skills/jfrog/references/projects-api.md +241 -0
- package/skills/jfrog/references/release-lifecycle-entities.md +180 -0
- package/skills/jfrog/references/stored-packages-entities.md +165 -0
- package/skills/jfrog/references/xray-entities.md +740 -0
- package/skills/jfrog/scripts/check-environment.sh +224 -0
- package/skills/jfrog/scripts/jfrog-login-register-session.sh +84 -0
- package/skills/jfrog/scripts/jfrog-login-save-credentials.sh +128 -0
- package/skills/jfrog-package-safety-and-download/SKILL.md +275 -0
- package/sync-skills-vendor.json +5 -0
|
@@ -0,0 +1,154 @@
|
|
|
1
|
+
# AppTrust entities
|
|
2
|
+
|
|
3
|
+
When to read this file:
|
|
4
|
+
|
|
5
|
+
- Working with **applications**, **application versions**, or **releasables**.
|
|
6
|
+
- Querying or managing **application version promotions** through stages.
|
|
7
|
+
- Understanding what **sources** (builds, release bundles, other app versions) feed into an application version.
|
|
8
|
+
- Using the OneModel GraphQL API with the `applications` query root.
|
|
9
|
+
|
|
10
|
+
AppTrust entities are accessed exclusively via the **OneModel GraphQL API**
|
|
11
|
+
(`/onemodel/api/v1/graphql`). There are no CLI commands for this domain.
|
|
12
|
+
|
|
13
|
+
For the OneModel query workflow (credentials, schema fetch, validation,
|
|
14
|
+
execution), read `references/onemodel-graphql.md`.
|
|
15
|
+
|
|
16
|
+
## Entity relationship overview
|
|
17
|
+
|
|
18
|
+
```mermaid
|
|
19
|
+
erDiagram
|
|
20
|
+
Application ||--o{ ApplicationVersion : "has versions"
|
|
21
|
+
ApplicationVersion ||--o{ Releasable : "contains"
|
|
22
|
+
ApplicationVersion ||--o{ Promotion : "promoted through"
|
|
23
|
+
ApplicationVersion }o--o{ Source : "assembled from"
|
|
24
|
+
Releasable }o--o{ Source : "contributed by"
|
|
25
|
+
Releasable ||--o{ Artifact : "contains"
|
|
26
|
+
Releasable }o--o| StoredPackageVersionLocation : "located at"
|
|
27
|
+
Application }o--o{ Owner : "owned by"
|
|
28
|
+
Application }o--o{ Label : "tagged with"
|
|
29
|
+
ApplicationVersion }o--o| EvidenceSubject : "attested by"
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
## Application
|
|
33
|
+
|
|
34
|
+
The top-level entity representing a software application registered in
|
|
35
|
+
AppTrust. Applications belong to a JFrog Project and serve as the
|
|
36
|
+
organizational container for tracking versions, ownership, and criticality.
|
|
37
|
+
|
|
38
|
+
| Field | Description |
|
|
39
|
+
|-------|-------------|
|
|
40
|
+
| `key` | Unique identifier (referenced as `applicationKey` or `appKey` elsewhere) |
|
|
41
|
+
| `projectKey` | JFrog Project this application belongs to |
|
|
42
|
+
| `displayName` | Human-readable name |
|
|
43
|
+
| `criticality` | `unspecified`, `low`, `medium`, `high`, `critical` |
|
|
44
|
+
| `maturityLevel` | `unspecified`, `experimental`, `production`, `end_of_life` |
|
|
45
|
+
| `owners` | List of users or groups that own the application |
|
|
46
|
+
| `labels` | Key-value pairs for custom categorization |
|
|
47
|
+
|
|
48
|
+
Query: `applications.getApplication(key: "...")` or
|
|
49
|
+
`applications.searchApplications(where: {...})`.
|
|
50
|
+
|
|
51
|
+
## Application version
|
|
52
|
+
|
|
53
|
+
A versioned instance of an application. Each version captures a specific set
|
|
54
|
+
of releasable artifacts, their sources, and a promotion history through
|
|
55
|
+
lifecycle stages.
|
|
56
|
+
|
|
57
|
+
| Field | Description |
|
|
58
|
+
|-------|-------------|
|
|
59
|
+
| `application` | Parent application |
|
|
60
|
+
| `version` | Version identifier (semantic or custom) |
|
|
61
|
+
| `tag` | Optional tag |
|
|
62
|
+
| `status` | Processing status: `STARTED`, `FAILED`, `COMPLETED`, `DELETING` |
|
|
63
|
+
| `releaseStatus` | Release maturity: `PRE_RELEASE`, `RELEASED`, `TRUSTED_RELEASE` |
|
|
64
|
+
| `currentStageName` | Most recent stage the version has been promoted to (null if never promoted) |
|
|
65
|
+
| `createdBy`, `createdAt` | Audit fields |
|
|
66
|
+
| `evidenceSubject` | Evidence attestation anchor (shared across domains) |
|
|
67
|
+
|
|
68
|
+
The `releaseStatus` field is distinct from `status`: `status` tracks the
|
|
69
|
+
version creation process, while `releaseStatus` tracks its release maturity.
|
|
70
|
+
|
|
71
|
+
Query: `applications.getApplicationVersion(applicationKey: "...", version: "...")`
|
|
72
|
+
or `applications.searchApplicationVersions(where: {...})`.
|
|
73
|
+
|
|
74
|
+
## Releasable
|
|
75
|
+
|
|
76
|
+
A deployable unit within an application version — either a **package version**
|
|
77
|
+
or an individual **artifact**.
|
|
78
|
+
|
|
79
|
+
| Field | Description |
|
|
80
|
+
|-------|-------------|
|
|
81
|
+
| `name` | Package name or artifact file name |
|
|
82
|
+
| `version` | Package version (empty for non-package artifacts) |
|
|
83
|
+
| `packageType` | Repository package type (docker, maven, generic, etc.) |
|
|
84
|
+
| `releasableType` | `artifact` or `package_version` |
|
|
85
|
+
| `sha256` | Leading file checksum (e.g. manifest for Docker images) |
|
|
86
|
+
| `totalSize` | Sum of all artifact sizes in bytes |
|
|
87
|
+
| `sources` | Sources that contributed to this releasable |
|
|
88
|
+
| `artifacts` | Individual files that make up the releasable |
|
|
89
|
+
| `packageVersionLocation` | Link to `StoredPackageVersionLocation` for package releasables |
|
|
90
|
+
| `vcsCommit` | VCS commit details (for AppTrust-bound package versions) |
|
|
91
|
+
|
|
92
|
+
Releasables bridge the application model to the underlying Artifactory
|
|
93
|
+
storage. The `packageVersionLocation` field connects to the Stored Packages
|
|
94
|
+
domain (see `stored-packages-entities.md`).
|
|
95
|
+
|
|
96
|
+
## Application version promotion
|
|
97
|
+
|
|
98
|
+
Records the promotion of an application version from one stage to another.
|
|
99
|
+
All promotions are recorded including failed attempts.
|
|
100
|
+
|
|
101
|
+
| Field | Description |
|
|
102
|
+
|-------|-------------|
|
|
103
|
+
| `sourceStageName` | Stage being promoted from (empty for first promotion) |
|
|
104
|
+
| `targetStageName` | Stage being promoted to |
|
|
105
|
+
| `status` | `SUBMITTED`, `STARTED`, `PENDING`, `COMPLETED`, `FAILED`, `REJECTED` |
|
|
106
|
+
| `createdBy`, `createdAt` | Who initiated and when |
|
|
107
|
+
| `artifacts` | Artifacts included in this promotion (repo + path) |
|
|
108
|
+
| `messages` | Error messages if the promotion failed |
|
|
109
|
+
|
|
110
|
+
Promotions use the same environment/stage model as Release Bundle promotions
|
|
111
|
+
(see `release-lifecycle-entities.md`) but at the application level.
|
|
112
|
+
|
|
113
|
+
## Sources
|
|
114
|
+
|
|
115
|
+
Sources describe how releasables were assembled into an application version.
|
|
116
|
+
Four types exist:
|
|
117
|
+
|
|
118
|
+
| Source type | Fields | Description |
|
|
119
|
+
|-------------|--------|-------------|
|
|
120
|
+
| **Build** | `name`, `number`, `startedAt`, `repositoryKey` | A CI/CD build that produced releasables |
|
|
121
|
+
| **ReleaseBundle** | `name`, `version` | A release bundle whose artifacts were included |
|
|
122
|
+
| **ApplicationVersion** | `applicationKey`, `version` | Another application version (composition) |
|
|
123
|
+
| **Direct** | (none) | Directly included without an associated build or bundle |
|
|
124
|
+
|
|
125
|
+
Sources appear at both the application version level (all sources) and the
|
|
126
|
+
individual releasable level (sources for that specific releasable).
|
|
127
|
+
|
|
128
|
+
## Artifacts (within application versions)
|
|
129
|
+
|
|
130
|
+
Individual files within releasables.
|
|
131
|
+
|
|
132
|
+
| Field | Description |
|
|
133
|
+
|-------|-------------|
|
|
134
|
+
| `filePath` | Path in the repository (excluding repo key) |
|
|
135
|
+
| `downloadPath` | Full path for downloading from a Release Bundle repository |
|
|
136
|
+
| `sha256` | Checksum |
|
|
137
|
+
| `size` | Size in bytes |
|
|
138
|
+
| `evidenceSubject` | Evidence attestation anchor |
|
|
139
|
+
|
|
140
|
+
## Cross-domain connections
|
|
141
|
+
|
|
142
|
+
AppTrust entities connect to other domains via the OneModel GraphQL API:
|
|
143
|
+
|
|
144
|
+
- **Evidence** — `ApplicationVersion.evidenceSubject` and
|
|
145
|
+
`ApplicationVersionArtifact.evidenceSubject` link to the Evidence domain
|
|
146
|
+
via `EvidenceSubject.fullPath`. This allows querying evidence attached to
|
|
147
|
+
app versions and their artifacts.
|
|
148
|
+
- **Stored Packages** — `Releasable.packageVersionLocation` links to
|
|
149
|
+
`StoredPackageVersionLocation`, connecting the application model to where
|
|
150
|
+
packages physically reside in Artifactory.
|
|
151
|
+
- **Release Bundles** — source type `ReleaseBundle` references release bundle
|
|
152
|
+
name/version from the Release Lifecycle domain.
|
|
153
|
+
- **Builds** — source type `Build` references build-info records from
|
|
154
|
+
Artifactory.
|
|
@@ -0,0 +1,206 @@
|
|
|
1
|
+
# Artifactory API Gaps
|
|
2
|
+
|
|
3
|
+
Operations available through REST API but not through CLI commands.
|
|
4
|
+
Invoke them via `jf api <path> [flags]` (authentication is handled
|
|
5
|
+
automatically against the active `jf config` server; see the base skill's
|
|
6
|
+
*Invoking platform APIs with `jf api`* section).
|
|
7
|
+
|
|
8
|
+
## Repository management
|
|
9
|
+
|
|
10
|
+
### Get repository configuration
|
|
11
|
+
```bash
|
|
12
|
+
jf api /artifactory/api/repositories/<repo-key>
|
|
13
|
+
```
|
|
14
|
+
Returns the full JSON configuration of a repository. Useful as a template
|
|
15
|
+
for creating similar repos.
|
|
16
|
+
|
|
17
|
+
### List all repositories
|
|
18
|
+
```bash
|
|
19
|
+
jf api /artifactory/api/repositories
|
|
20
|
+
```
|
|
21
|
+
Optional query params (combinable): `type` (one of `local`, `remote`,
|
|
22
|
+
`virtual`, `federated`), `packageType` (e.g. `docker`, `maven`, `npm`,
|
|
23
|
+
`pypi`, `generic`), `project`. Examples:
|
|
24
|
+
```bash
|
|
25
|
+
jf api "/artifactory/api/repositories?type=local"
|
|
26
|
+
jf api "/artifactory/api/repositories?packageType=docker"
|
|
27
|
+
jf api "/artifactory/api/repositories?type=remote&packageType=maven&project=my-project"
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
### Get repositories (v2)
|
|
31
|
+
```bash
|
|
32
|
+
jf api /artifactory/api/repositories/configurations
|
|
33
|
+
```
|
|
34
|
+
Optional query params (combinable, comma-separated values allowed):
|
|
35
|
+
`repoType` (case-insensitive; one of `local`, `remote`, `virtual`,
|
|
36
|
+
`federated`) and `packageType` (e.g. `maven`, `docker`, `npm`). Note:
|
|
37
|
+
`repo_type` is silently ignored — the correct name is `repoType`.
|
|
38
|
+
Examples:
|
|
39
|
+
```bash
|
|
40
|
+
jf api "/artifactory/api/repositories/configurations?repoType=local"
|
|
41
|
+
jf api "/artifactory/api/repositories/configurations?packageType=maven"
|
|
42
|
+
jf api "/artifactory/api/repositories/configurations?repoType=local,remote&packageType=docker"
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
### Check if repository exists
|
|
46
|
+
```bash
|
|
47
|
+
jf api /artifactory/api/repositories/<repo-key> -X HEAD
|
|
48
|
+
# 200 = exists, 400 = does not exist
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
## Storage and system
|
|
52
|
+
|
|
53
|
+
### Get storage summary
|
|
54
|
+
```bash
|
|
55
|
+
jf api /artifactory/api/storageinfo
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
### Refresh storage summary
|
|
59
|
+
```bash
|
|
60
|
+
jf api /artifactory/api/storageinfo/calculate -X POST
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
### Get storage item info
|
|
64
|
+
```bash
|
|
65
|
+
jf api "/artifactory/api/storage/<repo>/<path>"
|
|
66
|
+
```
|
|
67
|
+
|
|
68
|
+
### System ping
|
|
69
|
+
```bash
|
|
70
|
+
jf api /artifactory/api/system/ping
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
### System version
|
|
74
|
+
```bash
|
|
75
|
+
jf api /artifactory/api/system/version
|
|
76
|
+
```
|
|
77
|
+
|
|
78
|
+
### System configuration
|
|
79
|
+
```bash
|
|
80
|
+
jf api /artifactory/api/system/configuration
|
|
81
|
+
```
|
|
82
|
+
|
|
83
|
+
## Search (beyond CLI)
|
|
84
|
+
|
|
85
|
+
### AQL queries
|
|
86
|
+
```bash
|
|
87
|
+
jf api /artifactory/api/search/aql \
|
|
88
|
+
-X POST -H "Content-Type: text/plain" \
|
|
89
|
+
-d 'items.find({"repo":"my-repo","name":{"$match":"*.jar"}})'
|
|
90
|
+
```
|
|
91
|
+
|
|
92
|
+
For remote repository content, query the `-cache` suffixed repo:
|
|
93
|
+
```bash
|
|
94
|
+
jf api /artifactory/api/search/aql \
|
|
95
|
+
-X POST -H "Content-Type: text/plain" \
|
|
96
|
+
-d 'items.find({"repo":"my-remote-cache"})'
|
|
97
|
+
```
|
|
98
|
+
|
|
99
|
+
### Property search
|
|
100
|
+
```bash
|
|
101
|
+
jf api "/artifactory/api/search/prop?key=value&repos=my-repo"
|
|
102
|
+
```
|
|
103
|
+
|
|
104
|
+
### Checksum search
|
|
105
|
+
```bash
|
|
106
|
+
jf api "/artifactory/api/search/checksum?sha256=<sha256>"
|
|
107
|
+
```
|
|
108
|
+
|
|
109
|
+
### GAVC search (Maven)
|
|
110
|
+
```bash
|
|
111
|
+
jf api "/artifactory/api/search/gavc?g=com.example&a=mylib&v=1.0"
|
|
112
|
+
```
|
|
113
|
+
|
|
114
|
+
## User and group management
|
|
115
|
+
|
|
116
|
+
User and group operations are handled by the Access service. See
|
|
117
|
+
`platform-admin-api-gaps.md` (Users / Groups sections) for the full set.
|
|
118
|
+
|
|
119
|
+
## Metadata calculation
|
|
120
|
+
|
|
121
|
+
Trigger metadata recalculation for various package types:
|
|
122
|
+
```bash
|
|
123
|
+
# Maven
|
|
124
|
+
jf api /artifactory/api/maven/calculateMetaData/<repo-key> -X POST
|
|
125
|
+
|
|
126
|
+
# npm
|
|
127
|
+
jf api /artifactory/api/npm/<repo-key>/reindex -X POST
|
|
128
|
+
|
|
129
|
+
# Docker
|
|
130
|
+
# (automatic, no manual trigger)
|
|
131
|
+
|
|
132
|
+
# PyPI
|
|
133
|
+
jf api /artifactory/api/pypi/<repo-key>/reindex -X POST
|
|
134
|
+
|
|
135
|
+
# Helm
|
|
136
|
+
jf api /artifactory/api/helm/<repo-key>/reindex -X POST
|
|
137
|
+
|
|
138
|
+
# Debian
|
|
139
|
+
jf api /artifactory/api/deb/reindex/<repo-key> -X POST
|
|
140
|
+
```
|
|
141
|
+
|
|
142
|
+
## Trash can and garbage collection
|
|
143
|
+
|
|
144
|
+
### Empty trash
|
|
145
|
+
```bash
|
|
146
|
+
jf api /artifactory/api/trash/empty -X POST
|
|
147
|
+
```
|
|
148
|
+
|
|
149
|
+
### Restore from trash
|
|
150
|
+
```bash
|
|
151
|
+
jf api "/artifactory/api/trash/restore/<repo>/<path>" -X POST
|
|
152
|
+
```
|
|
153
|
+
|
|
154
|
+
### Run garbage collection
|
|
155
|
+
```bash
|
|
156
|
+
jf api /artifactory/api/system/storage/gc -X POST
|
|
157
|
+
```
|
|
158
|
+
|
|
159
|
+
## Federated repositories (beyond basic CRUD)
|
|
160
|
+
|
|
161
|
+
### Get federation status
|
|
162
|
+
```bash
|
|
163
|
+
jf api /artifactory/api/federation/status/<repo-key>
|
|
164
|
+
```
|
|
165
|
+
|
|
166
|
+
### Trigger full sync
|
|
167
|
+
```bash
|
|
168
|
+
jf api "/artifactory/api/federation/fullSyncAll/<repo-key>" -X POST
|
|
169
|
+
```
|
|
170
|
+
|
|
171
|
+
## Build info (beyond CLI)
|
|
172
|
+
|
|
173
|
+
### List builds (prefer scoped queries)
|
|
174
|
+
|
|
175
|
+
**Unscoped** `GET /artifactory/api/build` (no query parameters) can **time
|
|
176
|
+
out** on busy instances. Prefer **project-scoped** or **repo-scoped**
|
|
177
|
+
listing, then detail GETs. Full flow: read `artifactory-operations.md`
|
|
178
|
+
§ *Listing builds when the project key is known*.
|
|
179
|
+
|
|
180
|
+
```bash
|
|
181
|
+
# Project scope — build names (latest per name)
|
|
182
|
+
jf api "/artifactory/api/build?project=<project-key>"
|
|
183
|
+
|
|
184
|
+
# Project scope — all run numbers for one build name (response: buildsNumbers)
|
|
185
|
+
jf api "/artifactory/api/build/<build-name>?project=<project-key>"
|
|
186
|
+
|
|
187
|
+
# Build-info repo scope — alternative when you know the repo key
|
|
188
|
+
jf api "/artifactory/api/build?buildRepo=<build-info-repo-key>"
|
|
189
|
+
```
|
|
190
|
+
|
|
191
|
+
### Get build info
|
|
192
|
+
```bash
|
|
193
|
+
# Default build-info repo only (no project / non-default repo)
|
|
194
|
+
jf api "/artifactory/api/build/<build-name>/<build-number>"
|
|
195
|
+
|
|
196
|
+
# Project or custom build-info repo
|
|
197
|
+
jf api "/artifactory/api/build/<build-name>/<build-number>?project=<project-key>"
|
|
198
|
+
jf api "/artifactory/api/build/<build-name>/<build-number>?buildRepo=<build-info-repo-key>"
|
|
199
|
+
```
|
|
200
|
+
|
|
201
|
+
### Delete builds
|
|
202
|
+
```bash
|
|
203
|
+
jf api /artifactory/api/build/delete \
|
|
204
|
+
-X POST -H "Content-Type: application/json" \
|
|
205
|
+
-d '{"buildName":"my-build","buildNumbers":["1","2"]}'
|
|
206
|
+
```
|