@gapi/gcli 1.8.247 → 1.8.248

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/AGENTS.md CHANGED
@@ -92,6 +92,10 @@ This repo is documentation-driven. With every change:
92
92
  3. **Skills / AGENTS.md** - learned something non-obvious, or a workflow
93
93
  bit you? Update the owning skill (`.agents/skills/<name>/SKILL.md`) or
94
94
  this file in the same change.
95
+ 4. **User docs + What's new** - a change users can see or do also updates
96
+ gql-fission's public docs page (`gql-fission/src/docs/<slug>.md`) and adds a
97
+ line to `gql-fission/src/app/changelog/releases.ts`. Skill:
98
+ `user-docs-and-changelog` in gql-fission.
95
99
 
96
100
  Before working on an existing feature: `node scripts/changelog.mjs render
97
101
  --feature <slug>` + its feature doc. That is where "how to test" and "how
package/README.md CHANGED
@@ -211,6 +211,27 @@ Steps that remove capacity or release the load balancer's IP (going back to
211
211
  `singleNode: true`, `loadBalancer: false`) are skipped unless you pass
212
212
  `--yes`. Nodes and the load balancer are billed per started hour.
213
213
 
214
+ #### Virtual clusters
215
+
216
+ A virtual cluster has its own Kubernetes API and Fission but no servers: it
217
+ runs in one namespace of the shared Lambforge cluster, or of one of your
218
+ private clusters, and is ready in about two minutes. Everything else
219
+ (environments, lambdas, `--clusterName`, `cluster:kubeconfig`,
220
+ `cluster:teardown`) works the same as for a private cluster; scaling and
221
+ load balancer commands don't apply.
222
+
223
+ ```bash
224
+ gcli cluster:create --virtual --name dev # on the shared cluster
225
+ gcli cluster:create --virtual --name stage --host prod # on your private cluster "prod"
226
+ ```
227
+
228
+ ```yaml
229
+ cluster:
230
+ name: dev
231
+ provider: vcluster
232
+ host: prod # optional - omitted = the shared cluster
233
+ ```
234
+
214
235
  ### RabbitMQ Brokers
215
236
 
216
237
  A project may have several RabbitMQ brokers, each optionally scoped to one of its private clusters.
@@ -0,0 +1,18 @@
1
+ ## 2026-10-27 - virtual-clusters: cluster:create --virtual and provider vcluster in cluster:apply
2
+
3
+ **Feature:** virtual-clusters · **Type:** feat
4
+
5
+ - `cluster:create --virtual [--host <private-cluster-name>]` and, in the
6
+ `cluster:` section, `provider: vcluster` + `host:` (both read by
7
+ `cluster:create` and `cluster:apply`). The host is resolved by name
8
+ (`helpers/virtual-cluster.ts`); no host = the shared cluster.
9
+ `cluster:apply` only creates a virtual cluster - nothing else to reconcile;
10
+ `validateDesired` rejects node settings on it and `host` without it.
11
+ - `GraphqlClienAPI.provisionProjectVirtualCluster` selects `routerUrl` and
12
+ `hostNamespace` itself (not in `ClusterFragment`, so older servers keep
13
+ working). Canonical doc: `graphql-server-functions/docs/features/virtual-clusters.md`.
14
+ - **Test:** `npx jest --coverage=false test/cluster-apply`.
15
+ - **Debug:** `No cluster named "<host>"` = the host name is not a live
16
+ cluster of the project (`gcli cluster:list`).
17
+ - **Verification:** jest 118/118 (4 new), tsc + eslint clean. README-CLI.md
18
+ not regenerated (needs a build of release/index.js).
@@ -36,3 +36,4 @@ Outline (drop sections that don't apply):
36
36
  | `dedicated-platform-cluster` | [dedicated-platform-cluster.md](dedicated-platform-cluster.md) | `cluster:status/health/scale/autoscale/...` commands; canonical doc in lambforge-agent |
37
37
  | `ci-token-scopes` | [ci-token-scopes.md](ci-token-scopes.md) | Which permission each command needs; `mq-trigger:*` commands; canonical doc in graphql-server |
38
38
  | `workflows` | [workflows.md](workflows.md) | `workflow:*` commands incl. AI drafts (`workflow:generate`); canonical doc in graphql-server-lambdas |
39
+ | `virtual-clusters` | [virtual-clusters.md](virtual-clusters.md) | cluster:create --virtual, provider: vcluster (slice; canonical in graphql-server-functions) |
@@ -0,0 +1,12 @@
1
+ # Virtual clusters (slice)
2
+
3
+ **Status:** built and tested end to end on minikube 2026-10-28, not deployed. Feature slug `virtual-clusters`.
4
+ Canonical doc (how it works, test, debug, limits):
5
+ [`graphql-server-functions/docs/features/virtual-clusters.md`](../../../../../graphql-server-functions/docs/features/virtual-clusters.md).
6
+
7
+ Virtual clusters are vClusters (own Kubernetes API + Fission) on the shared
8
+ cluster or one of the project's private clusters, `provider: 'vcluster'`.
9
+
10
+ ## This repo
11
+
12
+ `gcli cluster:create --virtual [--host <private-cluster>]`; in `lambforge.yaml`: `cluster: { name: dev, provider: vcluster, host: prod }` for `cluster:create` / `cluster:apply` (no host = shared cluster; node settings are rejected). Code: `src/commands/cluster/helpers/virtual-cluster.ts`, `helpers/plan.ts`. Test: `npx jest --coverage=false test/cluster-apply`.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@gapi/gcli",
3
- "version": "1.8.247",
3
+ "version": "1.8.248",
4
4
  "repository": {
5
5
  "type": "git",
6
6
  "url": "https://github.com/Stradivario/gapi.git"