@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,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
+ ```