@numa-tech/numa 1.26.15 → 1.26.16

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.
@@ -0,0 +1,72 @@
1
+ # Data resource CLI
2
+
3
+ `numa data-resource` uses the current platform identity and `/api/v1/data-resources`.
4
+ Instance, policy, scope and settings reads require the platform ops-admin role;
5
+ application reads and mutations retain server-side VIEWER/MAINTAINER checks.
6
+
7
+ ```sh
8
+ numa data-resource instances --kind RDS --json
9
+ numa data-resource instances --kind REDIS --json
10
+ numa data-resource policy 2 --json
11
+ numa data-resource scopes 1 --kind REDIS --json
12
+ numa data-resource candidates --app 8 --environment 2 --kind RDS --purpose main --json
13
+ numa data-resource bindings --app 8 --environment 2 --json
14
+ ```
15
+
16
+ Names and IDs must come from the target platform. A catalog instance alone does
17
+ not prove cloud identity, application access or usable credentials. An empty
18
+ candidate list is not permission to select another environment's instance.
19
+
20
+ Administrators can use `cloud-bind`, `set-scopes`, `set-settings`, `set-connection`, and `set-policy`
21
+ with `--file` and `--yes`. Each takes the backend's complete, credential-free
22
+ configuration DTO including its current `version`. Instance commands also require
23
+ `--kind RDS|REDIS`; policy targets an environment ID. These PUT requests are sent
24
+ once. Review cloud identity, environment scope, TLS and Redis instance-wide access
25
+ before applying; existing bindings do not follow changed defaults automatically.
26
+
27
+ `set-connection` additionally requires `instanceVersion`, `endpoint` (hostname/IP,
28
+ not a URL), and `port`. It requires the backend connection-correction upgrade and
29
+ rejects instances with existing resources or unresolved operations.
30
+
31
+ Allocation uses a credential-free JSON PlanInput matching the platform contract:
32
+
33
+ ```json
34
+ {
35
+ "appId": 8,
36
+ "environmentId": 2,
37
+ "kind": "RDS",
38
+ "purpose": "main",
39
+ "mode": "CREATE",
40
+ "instanceId": 4,
41
+ "isolationMode": "DATABASE"
42
+ }
43
+ ```
44
+
45
+ These IDs are illustrative, not existing-resource evidence. Save the input to a
46
+ file and call `numa data-resource plan --file plan.json --yes --json`. Review the
47
+ returned immutable target, account profile, operations and warnings before
48
+ `apply <plan-id> --idempotency-key <original-key> --yes`. Production requires the
49
+ server's accepted `--production-reason`. Redis `INSTANCE_ACCOUNT` grants access
50
+ to the whole instance; DB 0 is not dataset isolation.
51
+
52
+ `run <run-id>` reads the saved request. `reconcile <run-id> --yes` observes cloud
53
+ state and updates its ledger; it does not repeat a cloud mutation. Transport
54
+ loss, uncertain HTTP 5xx, and malformed successful write responses return
55
+ `DATA_RESOURCE_RESULT_UNKNOWN`. Writes, including 401 responses, are never
56
+ automatically replayed. Never replace a key to recover an unknown operation.
57
+ Plan creation has no resolve-by-key API: an unknown preview must be inspected
58
+ through existing bindings/platform records before considering a new plan.
59
+
60
+ Secret delivery is separate: `delivery <binding-id>` reads its CAS version and
61
+ `deliver <binding-id> --version <version> --idempotency-key <key> --yes` submits
62
+ the versioned delivery/reconciliation request. A valid receipt does not prove
63
+ application connectivity, migration success or restarted Pods. Credentials,
64
+ reveal, rotations, arbitrary cloud calls and inventory creation are deliberately
65
+ outside this initial command family.
66
+
67
+ The CLI preserves backend field names under `data`. Unknown response fields are dropped using explicit DTO schemas. Sensitive fields,
68
+ credential assignments and URL userinfo are redacted; provider error bodies and headers are not printed.
69
+
70
+ If an onboarding application is PROVISIONING and data-resource reads return
71
+ NOT_FOUND, check the platform's ACTIVE-only application gate. Do not silently
72
+ mark onboarding complete just to obtain database access.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@numa-tech/numa",
3
- "version": "1.26.15",
3
+ "version": "1.26.16",
4
4
  "description": "Cross-platform CLI for the Numa internal developer platform with Keycloak authentication and MCP support.",
5
5
  "author": "numa-tech",
6
6
  "keywords": [
@@ -39,7 +39,8 @@
39
39
  "docs/oss-policy-client-governance.md",
40
40
  "docs/environment-configuration-publication.md",
41
41
  "docs/keycloak-managed-import.md",
42
- "docs/design/kb-capability-upgrade.md"
42
+ "docs/design/kb-capability-upgrade.md",
43
+ "docs/data-resources.md"
43
44
  ],
44
45
  "scripts": {
45
46
  "clean": "node scripts/clean.mjs",
@@ -51,7 +52,7 @@
51
52
  "dev:oss-web": "tsx src/cli.ts oss web",
52
53
  "test:oss-web": "node --import tsx --test src/oss/web.test.ts src/oss/web-session.test.ts src/oss/web-transfers.test.ts src/oss/web-command.test.ts src/oss/local-picker.test.ts src/oss/transfer-paths.test.ts src/oss/transfer-worker.test.ts src/oss/transfer-queue.test.ts src/oss/web-page.test.ts src/oss/file-operations.test.ts src/oss/download-links.test.ts src/local-web/context-menu.test.ts",
53
54
  "test:oss-auth-code": "node scripts/test-oss-auth-code.mjs",
54
- "root:test": "node --import tsx --test --test-concurrency=4 src/mcp-gateway/profile.test.ts src/mcp-gateway/runtime.test.ts src/mcp-gateway/install.test.ts src/branding.test.ts src/app-config.test.ts src/platform-profile.test.ts src/profile-migration.test.ts src/identity.test.ts src/backend.test.ts src/cert/client.test.ts src/cert/commands.test.ts src/oauth.test.ts src/web-console.test.ts src/cli-options.test.ts src/mail/client.test.ts src/wecom/client.test.ts src/wecom/commands.test.ts src/wecom/tools.test.ts src/ai-registry/client.test.ts src/ai-registry/bootstrap.test.ts src/ai-registry/install-defaults.test.ts src/ai-registry/workspace.test.ts src/ai-registry/namespace.test.ts src/compatibility/registry-instance.test.ts src/ai-registry/sync.test.ts src/ai-registry/bridge.test.ts src/ai-registry/skill-installer.test.ts src/ai-registry/skill-uninstaller.test.ts src/ai-registry/skill-dependencies.test.ts src/ai-registry/updates.test.ts src/maintenance/scheduler.test.ts src/maintenance/codex.test.ts src/ai-registry/mcp-installer.test.ts src/media/client.test.ts src/media/commands.test.ts src/media/transfers.test.ts src/oss/client.test.ts src/oss/governance.test.ts src/oss/commands.test.ts src/oss/auth-code.test.ts src/oss/clipboard.test.ts src/oss/web.test.ts src/oss/web-session.test.ts src/oss/web-transfers.test.ts src/oss/web-command.test.ts src/oss/local-picker.test.ts src/oss/transfer-paths.test.ts src/oss/transfer-worker.test.ts src/oss/transfer-queue.test.ts src/oss/web-page.test.ts src/oss/file-operations.test.ts src/oss/download-links.test.ts src/oss/bootstrap.test.ts src/oss/transfers.test.ts src/oss/search.test.ts src/oss/tools.test.ts src/mcp/install.test.ts src/mcp/catalog.test.ts src/tasks/runtime.test.ts src/tasks/stdio.test.ts src/tasks/wecom-notify.test.ts src/tasks/oss-query.test.ts src/interactive/wizard.test.ts src/pipeline/client.test.ts src/pipeline/commands.test.ts src/gitops/client.test.ts src/gitops/commands.test.ts src/gitops/workload-input.test.ts src/gitops/workload-client.test.ts src/gitops/workload-commands.test.ts src/repositories/client.test.ts src/repositories/commands.test.ts src/publications/scanner.test.ts src/publications/client.test.ts src/publications/commands.test.ts src/jenkins-jobs/client.test.ts src/jenkins-jobs/commands.test.ts src/clusters/client.test.ts src/clusters/commands.test.ts src/clusters/kubeconfig-discovery.test.ts src/teams/client.test.ts src/teams/commands.test.ts src/authorization/bootstrap-client.test.ts src/authorization/commands.test.ts src/authorization/access-request-client.test.ts src/authorization/access-request-commands.test.ts src/application-candidates/client.test.ts src/application-candidates/commands.test.ts src/application-onboarding/client.test.ts src/application-onboarding/commands.test.ts src/application-onboarding/tui.test.ts src/chatgpt-desktop.test.ts src/codex-integration.test.ts scripts/release-all.test.mjs src/authorization/application-commands.test.ts src/authorization/application-client.test.ts src/authorization/application-schemas.test.ts src/notion/client.test.ts src/notion/commands.test.ts src/notion/tools.test.ts src/notion/machine-cli.test.ts src/cloud/accounts.test.ts src/cloud/bootstrap.test.ts src/cloud/business-bootstrap.test.ts src/cloud/maintenance.test.ts src/cloud/wizard.test.ts src/cloud/oss-bootstrap.test.ts src/business-issuer.test.ts src/login-configuration.test.ts src/login-recovery.test.ts src/ai-registry/mcp-management.test.ts src/ai-registry/mcp-runtime.test.ts src/ai-registry/mcp-stdio.test.ts src/kb/client.test.ts src/kb/config.test.ts src/kb/commands.test.ts src/kb/login.test.ts src/kb/transfers.test.ts src/kb/contract.test.ts src/authorization/environment-governance-client.test.ts src/authorization/environment-governance-commands.test.ts src/authorization/environment-publication.test.ts src/authorization/managed-keycloak.test.ts src/authorization/managed-keycloak-producer.test.ts src/kb/web.test.ts src/kb/web-queue.test.ts src/local-web/context-menu.test.ts src/kb/web-login.test.ts src/kb/capabilities.test.ts src/jev/input.test.ts src/jev/profile.test.ts src/jev/client.test.ts src/jev/commands.test.ts scripts/check-default-profile.test.mjs",
55
+ "root:test": "node --import tsx --test --test-concurrency=4 src/mcp-gateway/profile.test.ts src/mcp-gateway/runtime.test.ts src/mcp-gateway/install.test.ts src/branding.test.ts src/app-config.test.ts src/platform-profile.test.ts src/profile-migration.test.ts src/identity.test.ts src/backend.test.ts src/cert/client.test.ts src/cert/commands.test.ts src/oauth.test.ts src/web-console.test.ts src/cli-options.test.ts src/mail/client.test.ts src/wecom/client.test.ts src/wecom/commands.test.ts src/wecom/tools.test.ts src/ai-registry/client.test.ts src/ai-registry/bootstrap.test.ts src/ai-registry/install-defaults.test.ts src/ai-registry/workspace.test.ts src/ai-registry/namespace.test.ts src/compatibility/registry-instance.test.ts src/ai-registry/sync.test.ts src/ai-registry/bridge.test.ts src/ai-registry/skill-installer.test.ts src/ai-registry/skill-uninstaller.test.ts src/ai-registry/skill-dependencies.test.ts src/ai-registry/updates.test.ts src/maintenance/scheduler.test.ts src/maintenance/codex.test.ts src/ai-registry/mcp-installer.test.ts src/media/client.test.ts src/media/commands.test.ts src/media/transfers.test.ts src/oss/client.test.ts src/oss/governance.test.ts src/oss/commands.test.ts src/oss/auth-code.test.ts src/oss/clipboard.test.ts src/oss/web.test.ts src/oss/web-session.test.ts src/oss/web-transfers.test.ts src/oss/web-command.test.ts src/oss/local-picker.test.ts src/oss/transfer-paths.test.ts src/oss/transfer-worker.test.ts src/oss/transfer-queue.test.ts src/oss/web-page.test.ts src/oss/file-operations.test.ts src/oss/download-links.test.ts src/oss/bootstrap.test.ts src/oss/transfers.test.ts src/oss/search.test.ts src/oss/tools.test.ts src/mcp/install.test.ts src/mcp/catalog.test.ts src/tasks/runtime.test.ts src/tasks/stdio.test.ts src/tasks/wecom-notify.test.ts src/tasks/oss-query.test.ts src/interactive/wizard.test.ts src/pipeline/client.test.ts src/pipeline/commands.test.ts src/gitops/client.test.ts src/gitops/commands.test.ts src/gitops/workload-input.test.ts src/gitops/workload-client.test.ts src/gitops/workload-commands.test.ts src/repositories/client.test.ts src/repositories/commands.test.ts src/publications/scanner.test.ts src/publications/client.test.ts src/publications/commands.test.ts src/jenkins-jobs/client.test.ts src/jenkins-jobs/commands.test.ts src/clusters/client.test.ts src/clusters/commands.test.ts src/clusters/kubeconfig-discovery.test.ts src/teams/client.test.ts src/teams/commands.test.ts src/authorization/bootstrap-client.test.ts src/authorization/commands.test.ts src/authorization/access-request-client.test.ts src/authorization/access-request-commands.test.ts src/application-candidates/client.test.ts src/application-candidates/commands.test.ts src/application-onboarding/client.test.ts src/application-onboarding/commands.test.ts src/application-onboarding/tui.test.ts src/chatgpt-desktop.test.ts src/codex-integration.test.ts scripts/release-all.test.mjs src/authorization/application-commands.test.ts src/authorization/application-client.test.ts src/authorization/application-schemas.test.ts src/notion/client.test.ts src/notion/commands.test.ts src/notion/tools.test.ts src/notion/machine-cli.test.ts src/cloud/accounts.test.ts src/cloud/bootstrap.test.ts src/cloud/business-bootstrap.test.ts src/cloud/maintenance.test.ts src/cloud/wizard.test.ts src/cloud/oss-bootstrap.test.ts src/business-issuer.test.ts src/login-configuration.test.ts src/login-recovery.test.ts src/ai-registry/mcp-management.test.ts src/ai-registry/mcp-runtime.test.ts src/ai-registry/mcp-stdio.test.ts src/kb/client.test.ts src/kb/config.test.ts src/kb/commands.test.ts src/kb/login.test.ts src/kb/transfers.test.ts src/kb/contract.test.ts src/authorization/environment-governance-client.test.ts src/authorization/environment-governance-commands.test.ts src/authorization/environment-publication.test.ts src/authorization/managed-keycloak.test.ts src/authorization/managed-keycloak-producer.test.ts src/kb/web.test.ts src/kb/web-queue.test.ts src/local-web/context-menu.test.ts src/kb/web-login.test.ts src/kb/capabilities.test.ts src/jev/input.test.ts src/jev/profile.test.ts src/jev/client.test.ts src/jev/commands.test.ts scripts/check-default-profile.test.mjs src/data-resources/client.test.ts src/data-resources/commands.test.ts",
55
56
  "pack:check": "turbo run pack:check root:pack:check",
56
57
  "root:pack:check": "node scripts/check-root-package.mjs",
57
58
  "boundaries": "node scripts/check-workspace-boundaries.mjs",
@@ -78,8 +79,8 @@
78
79
  "dependencies": {
79
80
  "@clack/prompts": "^1.7.0",
80
81
  "@modelcontextprotocol/sdk": "^1.29.0",
81
- "@numa-tech/cli-auth": "1.26.15",
82
- "@tokensrc/codex": "1.26.15",
82
+ "@numa-tech/cli-auth": "1.26.16",
83
+ "@tokensrc/codex": "1.26.16",
83
84
  "ali-oss": "^6.23.0",
84
85
  "commander": "^14.0.3",
85
86
  "ink": "^6.8.0",