@ornncompute/cli 0.2.23 → 1.0.25

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 (85) hide show
  1. package/README.md +304 -420
  2. package/package.json +12 -6
  3. package/src/admin-capacity-reservations.mjs +280 -0
  4. package/src/admin-command-handlers.mjs +57 -0
  5. package/src/admin-enrollment.mjs +680 -0
  6. package/src/admin-mutations.mjs +187 -0
  7. package/src/admin-node-diagnostics.mjs +412 -0
  8. package/src/admin-node-lifecycle.mjs +908 -0
  9. package/src/admin-shell.mjs +322 -0
  10. package/src/api-client.mjs +81 -28
  11. package/src/atomic-output.mjs +112 -0
  12. package/src/auth-store.mjs +182 -11
  13. package/src/capability-catalog.mjs +7 -0
  14. package/src/catalog-shell.mjs +1350 -0
  15. package/src/cli.mjs +123 -10266
  16. package/src/connect-mode-handlers.mjs +170 -0
  17. package/src/device-auth.mjs +178 -61
  18. package/src/evidence-commands.mjs +1340 -0
  19. package/src/external-bucket-commands.mjs +1374 -0
  20. package/src/interaction-runtime.mjs +310 -0
  21. package/src/kubernetes-commands.mjs +2229 -0
  22. package/src/launch-mode-handlers.mjs +119 -0
  23. package/src/machine-reference.mjs +277 -0
  24. package/src/mount-commands.mjs +1146 -0
  25. package/src/session-commands.mjs +565 -0
  26. package/src/slurm-commands.mjs +263 -0
  27. package/src/startup.mjs +34 -11
  28. package/src/storage-commands.mjs +1144 -0
  29. package/src/update.mjs +172 -24
  30. package/src/vm-commands.mjs +4273 -0
  31. package/src/vpn-secret-output.mjs +150 -0
  32. package/src/wait-runtime.mjs +231 -0
  33. package/vendor/capabilities/capabilities/admin-capacity-reservations.js +126 -0
  34. package/vendor/capabilities/capabilities/admin-enrollment.js +321 -0
  35. package/vendor/capabilities/capabilities/admin-node-diagnostics.js +88 -0
  36. package/vendor/capabilities/capabilities/admin-nodes-lifecycle.js +235 -0
  37. package/vendor/capabilities/capabilities/admin.js +89 -0
  38. package/vendor/capabilities/capabilities/capacity-offers.js +368 -0
  39. package/vendor/capabilities/capabilities/cli.js +156 -0
  40. package/vendor/capabilities/capabilities/clusters.js +150 -1
  41. package/vendor/capabilities/capabilities/compute.js +522 -0
  42. package/vendor/capabilities/capabilities/evidence.js +145 -0
  43. package/vendor/capabilities/capabilities/external-buckets.js +191 -0
  44. package/vendor/capabilities/capabilities/fleet.js +21 -5
  45. package/vendor/capabilities/capabilities/identity.js +114 -3
  46. package/vendor/capabilities/capabilities/listings.js +14 -8
  47. package/vendor/capabilities/capabilities/mounts.js +176 -0
  48. package/vendor/capabilities/capabilities/networks.js +1257 -0
  49. package/vendor/capabilities/capabilities/observability.js +38 -8
  50. package/vendor/capabilities/capabilities/tokens.js +20 -8
  51. package/vendor/capabilities/capabilities/volumes.js +178 -0
  52. package/vendor/capabilities/capability.js +19 -13
  53. package/vendor/capabilities/cli-catalog.js +65 -0
  54. package/vendor/capabilities/cli-migrations.js +288 -0
  55. package/vendor/capabilities/cli.js +7 -0
  56. package/vendor/capabilities/software-catalog.js +36 -0
  57. package/vendor/capabilities/spec-catalog.js +2 -2
  58. package/src/catalog-dispatch.mjs +0 -605
  59. package/src/color.mjs +0 -71
  60. package/vendor/capabilities/capabilities/clusters.d.ts +0 -2
  61. package/vendor/capabilities/capabilities/fleet.d.ts +0 -8
  62. package/vendor/capabilities/capabilities/identity.d.ts +0 -3
  63. package/vendor/capabilities/capabilities/listings.d.ts +0 -51
  64. package/vendor/capabilities/capabilities/observability.d.ts +0 -5
  65. package/vendor/capabilities/capabilities/staff-access.d.ts +0 -29
  66. package/vendor/capabilities/capabilities/staff-access.js +0 -278
  67. package/vendor/capabilities/capabilities/staff-commerce.d.ts +0 -160
  68. package/vendor/capabilities/capabilities/staff-commerce.js +0 -689
  69. package/vendor/capabilities/capabilities/staff-fleet.d.ts +0 -140
  70. package/vendor/capabilities/capabilities/staff-fleet.js +0 -538
  71. package/vendor/capabilities/capabilities/staff-gtm.d.ts +0 -142
  72. package/vendor/capabilities/capabilities/staff-gtm.js +0 -521
  73. package/vendor/capabilities/capabilities/staff-shared.d.ts +0 -47
  74. package/vendor/capabilities/capabilities/staff-shared.js +0 -98
  75. package/vendor/capabilities/capabilities/tokens.d.ts +0 -10
  76. package/vendor/capabilities/capabilities/users.d.ts +0 -2
  77. package/vendor/capabilities/capability.d.ts +0 -93
  78. package/vendor/capabilities/catalog.d.ts +0 -3
  79. package/vendor/capabilities/catalog.js +0 -26
  80. package/vendor/capabilities/index.d.ts +0 -16
  81. package/vendor/capabilities/index.js +0 -16
  82. package/vendor/capabilities/names.d.ts +0 -6
  83. package/vendor/capabilities/role.d.ts +0 -6
  84. package/vendor/capabilities/role.js +0 -17
  85. package/vendor/capabilities/spec-catalog.d.ts +0 -78
@@ -1,47 +0,0 @@
1
- /** Helpers shared by the staff MCP verbs in `staff-*.ts`. */
2
- /**
3
- * Build a request body from the fields that were actually supplied.
4
- *
5
- * Staff writes are almost all "PATCH the fields the caller named": `undefined`
6
- * means leave alone, and `null` is a real value that clears the field. So the
7
- * check is `!== undefined`, never truthiness.
8
- */
9
- export declare function mapBody(input: Record<string, unknown>, mapping: Record<string, string>): Record<string, unknown>;
10
- /** Path segment escape. */
11
- export declare function seg(value: string): string;
12
- /**
13
- * A transport failure's HTTP status, when it carries one.
14
- *
15
- * Capabilities cannot import a surface's error class (`apps/mcp`'s
16
- * `WebApiError`, say), so read the status structurally.
17
- */
18
- export declare function statusOf(error: unknown): number | undefined;
19
- /**
20
- * Read a resource's current optimistic-concurrency version.
21
- *
22
- * Commerce rejects a PATCH or lifecycle action whose `version` is absent or
23
- * non-positive ("missing version" / "version must be positive"), but no staff
24
- * caller has that number to hand. Read it back when it was not supplied, and
25
- * only once confirmed so a preview stays a pure dry run.
26
- */
27
- export declare function resolveVersion(ctx: {
28
- fetch: (path: string, init: {
29
- method: string;
30
- }) => Promise<unknown>;
31
- confirmed?: boolean;
32
- }, path: string, provided?: number): Promise<number>;
33
- /**
34
- * Require a commerce identifier, named by this tool's own parameter.
35
- *
36
- * A malformed UUID never reaches a commerce handler's validation: Go fails the
37
- * JSON decode first and answers with a bare "invalid request body" that names
38
- * no field at all.
39
- */
40
- export declare function requireUuid(value: string | undefined, field: string): string;
41
- /**
42
- * The human-readable text a transport failure carries, wherever it put it.
43
- *
44
- * Mirrors how the MCP surface renders an error so a capability can rewrite
45
- * that same string before it reaches the caller.
46
- */
47
- export declare function errorTextOf(error: unknown): string;
@@ -1,98 +0,0 @@
1
- /** Helpers shared by the staff MCP verbs in `staff-*.ts`. */
2
- /**
3
- * Build a request body from the fields that were actually supplied.
4
- *
5
- * Staff writes are almost all "PATCH the fields the caller named": `undefined`
6
- * means leave alone, and `null` is a real value that clears the field. So the
7
- * check is `!== undefined`, never truthiness.
8
- */
9
- export function mapBody(input, mapping) {
10
- const body = {};
11
- for (const [field, wire] of Object.entries(mapping)) {
12
- if (input[field] !== undefined)
13
- body[wire] = input[field];
14
- }
15
- return body;
16
- }
17
- /** Path segment escape. */
18
- export function seg(value) {
19
- return encodeURIComponent(value);
20
- }
21
- /**
22
- * A transport failure's HTTP status, when it carries one.
23
- *
24
- * Capabilities cannot import a surface's error class (`apps/mcp`'s
25
- * `WebApiError`, say), so read the status structurally.
26
- */
27
- export function statusOf(error) {
28
- if (error && typeof error === "object" && "status" in error) {
29
- const status = error.status;
30
- if (typeof status === "number")
31
- return status;
32
- }
33
- return undefined;
34
- }
35
- /**
36
- * Read a resource's current optimistic-concurrency version.
37
- *
38
- * Commerce rejects a PATCH or lifecycle action whose `version` is absent or
39
- * non-positive ("missing version" / "version must be positive"), but no staff
40
- * caller has that number to hand. Read it back when it was not supplied, and
41
- * only once confirmed so a preview stays a pure dry run.
42
- */
43
- export async function resolveVersion(ctx, path, provided) {
44
- if (provided && provided > 0)
45
- return provided;
46
- if (!ctx.confirmed)
47
- return 1;
48
- try {
49
- const current = (await ctx.fetch(path, { method: "GET" }));
50
- if (typeof current?.version === "number" && current.version > 0)
51
- return current.version;
52
- }
53
- catch {
54
- // Fall through: send 1 and let commerce report the conflict, which names
55
- // the expected version, rather than failing on a lookup the caller can't see.
56
- }
57
- return 1;
58
- }
59
- const UUID_PATTERN = /^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i;
60
- /**
61
- * Require a commerce identifier, named by this tool's own parameter.
62
- *
63
- * A malformed UUID never reaches a commerce handler's validation: Go fails the
64
- * JSON decode first and answers with a bare "invalid request body" that names
65
- * no field at all.
66
- */
67
- export function requireUuid(value, field) {
68
- const trimmed = (value ?? "").trim();
69
- if (!trimmed)
70
- throw new Error(`${field} is required.`);
71
- if (!UUID_PATTERN.test(trimmed)) {
72
- throw new Error(`${field} must be a UUID; received ${JSON.stringify(trimmed)}.`);
73
- }
74
- return trimmed;
75
- }
76
- /**
77
- * The human-readable text a transport failure carries, wherever it put it.
78
- *
79
- * Mirrors how the MCP surface renders an error so a capability can rewrite
80
- * that same string before it reaches the caller.
81
- */
82
- export function errorTextOf(error) {
83
- if (error && typeof error === "object" && "detail" in error) {
84
- const detail = error.detail;
85
- if (typeof detail === "string" && detail)
86
- return detail;
87
- if (detail && typeof detail === "object") {
88
- for (const key of ["summary", "message", "error", "reason"]) {
89
- const value = detail[key];
90
- if (typeof value === "string" && value)
91
- return value;
92
- }
93
- }
94
- }
95
- if (error instanceof Error)
96
- return error.message;
97
- return String(error);
98
- }
@@ -1,10 +0,0 @@
1
- export declare function buildEnrollmentInstallCommand(options: {
2
- token: string;
3
- base?: string;
4
- ip?: string;
5
- restoreNodeId?: string;
6
- force?: boolean;
7
- }): string;
8
- export declare const tokensListCapability: import("../capability.ts").Capability<unknown, unknown>;
9
- export declare const tokensCreateCapability: import("../capability.ts").Capability<unknown, unknown>;
10
- export declare const tokenCapabilities: import("../capability.ts").Capability<unknown, unknown>[];
@@ -1,2 +0,0 @@
1
- export declare const usersQueryCapability: import("../capability.ts").Capability<unknown, unknown>;
2
- export declare const userCapabilities: import("../capability.ts").Capability<unknown, unknown>[];
@@ -1,93 +0,0 @@
1
- import type { ZodType } from "zod";
2
- import type { ClientKind, Role } from "./role.ts";
3
- export declare const DOMAINS: readonly ["identity", "listings", "fleet", "users", "reservations", "bids", "access", "clusters", "slurm", "kubernetes", "networks", "storage", "vpn", "billing", "observability", "gtm"];
4
- export type Domain = (typeof DOMAINS)[number];
5
- export type Mutation = "read" | "preview-confirm" | "local";
6
- export type HttpSpec = {
7
- method: "GET" | "POST" | "PATCH" | "PUT" | "DELETE";
8
- path: string;
9
- };
10
- export type CapabilityTransport = (path: string, init?: {
11
- method?: string;
12
- body?: unknown;
13
- headers?: Record<string, string>;
14
- }) => Promise<unknown>;
15
- export type CapabilityContext = {
16
- actor: string;
17
- role: Role;
18
- fetch: CapabilityTransport;
19
- /** Human (or MCP) confirmed a preview-confirm mutation. Execute never POSTs without this. */
20
- confirmed?: boolean;
21
- };
22
- /** The un-executed result of a `preview-confirm` capability. */
23
- export type PreviewResult = {
24
- status: "preview";
25
- requiresConfirm: true;
26
- confirmed: false;
27
- action: string;
28
- payload: unknown;
29
- };
30
- /**
31
- * Build a preview-confirm capability's un-executed result.
32
- *
33
- * Previews used to return `{ ok: true, action, payload }`, which is
34
- * indistinguishable from a completed mutation to anyone skimming the JSON --
35
- * a human, or an LLM deciding whether its call took effect. ORN-3417 recorded
36
- * a live `node.off-grid` preview as a confirm-gate failure for exactly that
37
- * reason. `status: "preview"` states it outright, and carries no `ok`.
38
- */
39
- export declare function preview(action: string, payload: unknown): PreviewResult;
40
- export type JsonSchema = {
41
- type: "object";
42
- properties?: Record<string, unknown>;
43
- required?: string[];
44
- };
45
- export type CapabilityBindings = {
46
- cli?: {
47
- command: string[];
48
- };
49
- mcp?: {
50
- name: string;
51
- };
52
- slack?: {
53
- name: string;
54
- parameters?: JsonSchema;
55
- };
56
- };
57
- export type Capability<I = unknown, O = unknown> = CapabilityBindings & {
58
- id: string;
59
- domain: Domain;
60
- roles: readonly Role[];
61
- description: string;
62
- mutation: Mutation;
63
- http?: HttpSpec;
64
- input: ZodType<I>;
65
- execute: (ctx: CapabilityContext, input: I) => Promise<O>;
66
- };
67
- export type CapabilitySpec<I = unknown, O = unknown> = Omit<Capability<I, O>, "cli" | "mcp" | "slack"> & {
68
- slack?: false | {
69
- parameters?: JsonSchema;
70
- };
71
- };
72
- /** Fill CLI/MCP/Slack names from `id`. Slack parameters stay optional. */
73
- export declare function defineCapability<I, O>(spec: CapabilitySpec<I, O>): Capability;
74
- /** A staff verb that only MCP dispatches: an MCP name, no Slack or CLI binding. */
75
- export type StaffMcpCapabilitySpec<I = unknown, O = unknown> = Omit<CapabilitySpec<I, O>, "slack">;
76
- /**
77
- * Fill only the MCP name from `id`.
78
- *
79
- * `visibleToClient` gates Slack on `capability.slack != null` and CLI on
80
- * `capability.cli != null`, so omitting a binding is how the catalog already
81
- * says "not on that surface" — `defineCapability` just happens to set all
82
- * three unconditionally. Staff admin verbs need the MCP one only: Slack's
83
- * staff surface is a deliberately small, human-confirmed set, and `apps/cli`
84
- * writes each command by hand, so a CLI binding here would advertise a
85
- * command that does not exist.
86
- */
87
- export declare function defineStaffMcpCapability<I, O>(spec: StaffMcpCapabilitySpec<I, O>): Capability;
88
- export declare function slackStaffVisible(capability: Pick<Capability, "roles">): boolean;
89
- export declare function visibleToClient(capability: Pick<Capability, "roles" | "cli" | "mcp" | "slack">, client: ClientKind, role: Role): boolean;
90
- export declare function forRole(catalog: readonly Capability[], role: Role, client: ClientKind): Capability[];
91
- export declare function byMcpName(catalog: readonly Capability[], name: string): Capability | undefined;
92
- export declare function bySlackName(catalog: readonly Capability[], name: string): Capability | undefined;
93
- export declare function byCliCommand(catalog: readonly Capability[], command: string[]): Capability | undefined;
@@ -1,3 +0,0 @@
1
- import type { Capability } from "./capability.ts";
2
- /** System of record for CLI, MCP, and Slack verbs. Add capabilities here. */
3
- export declare const catalog: Capability[];
@@ -1,26 +0,0 @@
1
- import { kubernetesCapabilities, slurmCapabilities } from "./capabilities/clusters.js";
2
- import { fleetCapabilities } from "./capabilities/fleet.js";
3
- import { tokenCapabilities } from "./capabilities/tokens.js";
4
- import { identityCapabilities } from "./capabilities/identity.js";
5
- import { listingCapabilities } from "./capabilities/listings.js";
6
- import { observabilityCapabilities } from "./capabilities/observability.js";
7
- import { staffAccessCapabilities } from "./capabilities/staff-access.js";
8
- import { staffCommerceCapabilities } from "./capabilities/staff-commerce.js";
9
- import { staffFleetCapabilities } from "./capabilities/staff-fleet.js";
10
- import { staffGTMCapabilities } from "./capabilities/staff-gtm.js";
11
- import { userCapabilities } from "./capabilities/users.js";
12
- /** System of record for CLI, MCP, and Slack verbs. Add capabilities here. */
13
- export const catalog = [
14
- ...identityCapabilities,
15
- ...listingCapabilities,
16
- ...fleetCapabilities,
17
- ...tokenCapabilities,
18
- ...userCapabilities,
19
- ...observabilityCapabilities,
20
- ...slurmCapabilities,
21
- ...kubernetesCapabilities,
22
- ...staffFleetCapabilities,
23
- ...staffGTMCapabilities,
24
- ...staffCommerceCapabilities,
25
- ...staffAccessCapabilities,
26
- ];
@@ -1,16 +0,0 @@
1
- export { byCliCommand, byMcpName, bySlackName, defineCapability, defineStaffMcpCapability, forRole, preview, slackStaffVisible, visibleToClient, type Capability, type CapabilityBindings, type CapabilityContext, type CapabilitySpec, type StaffMcpCapabilitySpec, type JsonSchema, type CapabilityTransport, type Domain, type HttpSpec, type Mutation, type PreviewResult, } from "./capability.ts";
2
- export { namesFromId } from "./names.ts";
3
- export { catalog } from "./catalog.ts";
4
- export { fleetCapabilities, listFacilitiesCapability, listNodesCapability, listOperatorsCapability, nodeExecCapability, nodeOffGridCapability, nodeOnGridCapability, nodeTerminateCapability, } from "./capabilities/fleet.ts";
5
- export { buildEnrollmentInstallCommand, tokenCapabilities, tokensCreateCapability, tokensListCapability, } from "./capabilities/tokens.ts";
6
- export { identityCapabilities, statusCapability, whoamiCapability, } from "./capabilities/identity.ts";
7
- export { createListingCapability, forecastListingsCapability, listingCreateInput, listCatalogTermsCapability, listingCapabilities, listListingsCapability, proposeListingCapability, } from "./capabilities/listings.ts";
8
- export { userCapabilities, usersQueryCapability } from "./capabilities/users.ts";
9
- export { kubernetesCapabilities, slurmCapabilities } from "./capabilities/clusters.ts";
10
- export { logsLatestCapability, logsTailCapability, observabilityCapabilities, telemetryLatestCapability, telemetryTailCapability, } from "./capabilities/observability.ts";
11
- export { enrollmentTokenRevokeCapability, enrollmentTokenRevokeInput, facilityCreateCapability, facilityCreateInput, facilityUpdateCapability, facilityUpdateInput, nodeAdminKeyCapability, nodeAdminKeyInput, nodeBenchmarkCapability, nodeBenchmarkInput, nodeDeployCapability, nodeDeployInput, nodeDetailsUpdateCapability, nodeDetailsUpdateInput, nodeHardResetCapability, nodeHardResetInput, nodeOperatorTransferCapability, nodeOperatorTransferInput, nodeRebootCapability, nodeRebootInput, nodeShowCapability, nodeShowInput, nodeTestResultCapability, nodeTestResultInput, nodeTestTriggerCapability, nodeTestTriggerInput, nodeUpdateCapability, nodeUpdateInput, operatorCreateCapability, operatorCreateInput, operatorDeleteCapability, operatorDeleteInput, operatorUpdateCapability, operatorUpdateInput, staffFleetCapabilities, } from "./capabilities/staff-fleet.ts";
12
- export { bidShowCapability, bidShowInput, bidAcceptCapability, bidAcceptInput, bidRejectCapability, bidRejectInput, billingInvoicesListCapability, billingInvoicesListInput, inventoryDelistCapability, inventoryDelistInput, inventoryUpdateCapability, inventoryUpdateInput, reservationActivateCapability, reservationActivateInput, reservationCancelCapability, reservationCancelInput, reservationCompleteCapability, reservationCompleteInput, reservationDraftCreateCapability, reservationDraftCreateInput, reservationListCapability, reservationListInput, reservationMachinesListCapability, reservationMachinesListInput, reservationPublishCapability, reservationPublishInput, reservationShowCapability, reservationShowInput, reservationSshKeyAddCapability, reservationSshKeyAddInput, reservationSshKeyRemoveCapability, reservationSshKeyRemoveInput, reservationTransferCapability, reservationTransferInput, reservationUpdateCapability, reservationUpdateInput, staffCommerceCapabilities, tenantCreditProfileShowCapability, tenantCreditProfileShowInput, } from "./capabilities/staff-commerce.ts";
13
- export { sshKeyAddCapability, sshKeyAddInput, sshKeyPushCapability, sshKeyPushInput, sshKeyRevokeCapability, sshKeyRevokeInput, staffAccessCapabilities, } from "./capabilities/staff-access.ts";
14
- export { gtmCommentDeleteCapability, gtmCommentDeleteInput, gtmCommentListCapability, gtmCommentListInput, gtmCommentWriteCapability, gtmCommentWriteInput, gtmCompanyDeleteCapability, gtmCompanyDeleteInput, gtmCompanyListCapability, gtmCompanyListInput, gtmCompanyWriteCapability, gtmCompanyWriteInput, gtmCompanyBulkRetagCapability, gtmCompanyBulkRetagInput, gtmDealListCapability, gtmDealListInput, gtmListingListCapability, gtmListingListInput, gtmListingUpdateCapability, gtmListingUpdateInput, gtmDealWriteCapability, gtmDealWriteInput, gtmTaskDeleteCapability, gtmTaskDeleteInput, gtmTaskListCapability, gtmTaskListInput, gtmTaskWriteCapability, gtmTaskWriteInput, gtmTaskActivityListCapability, gtmTaskActivityListInput, gtmWorkspaceShowCapability, gtmWorkspaceShowInput, staffGTMCapabilities, } from "./capabilities/staff-gtm.ts";
15
- export { CLIENTS, parseRole, roleAtLeast, ROLES, type ClientKind, type Role } from "./role.ts";
16
- export { bindHardwareFields, HARDWARE_CATALOG_PATH, HARDWARE_KINDS, HARDWARE_LISTING_FIELDS, HARDWARE_LISTING_FILTERS, loadHardwareCatalog, looksLikeSpecDump, normalizeCatalogQuery, parseHardwareCatalog, projectCatalogTerms, proposeListingPayload, resolveCatalogTerm, UNRESOLVED_CATALOG_HINT, type CatalogBindResult, type CatalogTerm, type HardwareCatalog, type HardwareKind, type ResolvedCatalogTerm, } from "./spec-catalog.ts";
@@ -1,16 +0,0 @@
1
- export { byCliCommand, byMcpName, bySlackName, defineCapability, defineStaffMcpCapability, forRole, preview, slackStaffVisible, visibleToClient, } from "./capability.js";
2
- export { namesFromId } from "./names.js";
3
- export { catalog } from "./catalog.js";
4
- export { fleetCapabilities, listFacilitiesCapability, listNodesCapability, listOperatorsCapability, nodeExecCapability, nodeOffGridCapability, nodeOnGridCapability, nodeTerminateCapability, } from "./capabilities/fleet.js";
5
- export { buildEnrollmentInstallCommand, tokenCapabilities, tokensCreateCapability, tokensListCapability, } from "./capabilities/tokens.js";
6
- export { identityCapabilities, statusCapability, whoamiCapability, } from "./capabilities/identity.js";
7
- export { createListingCapability, forecastListingsCapability, listingCreateInput, listCatalogTermsCapability, listingCapabilities, listListingsCapability, proposeListingCapability, } from "./capabilities/listings.js";
8
- export { userCapabilities, usersQueryCapability } from "./capabilities/users.js";
9
- export { kubernetesCapabilities, slurmCapabilities } from "./capabilities/clusters.js";
10
- export { logsLatestCapability, logsTailCapability, observabilityCapabilities, telemetryLatestCapability, telemetryTailCapability, } from "./capabilities/observability.js";
11
- export { enrollmentTokenRevokeCapability, enrollmentTokenRevokeInput, facilityCreateCapability, facilityCreateInput, facilityUpdateCapability, facilityUpdateInput, nodeAdminKeyCapability, nodeAdminKeyInput, nodeBenchmarkCapability, nodeBenchmarkInput, nodeDeployCapability, nodeDeployInput, nodeDetailsUpdateCapability, nodeDetailsUpdateInput, nodeHardResetCapability, nodeHardResetInput, nodeOperatorTransferCapability, nodeOperatorTransferInput, nodeRebootCapability, nodeRebootInput, nodeShowCapability, nodeShowInput, nodeTestResultCapability, nodeTestResultInput, nodeTestTriggerCapability, nodeTestTriggerInput, nodeUpdateCapability, nodeUpdateInput, operatorCreateCapability, operatorCreateInput, operatorDeleteCapability, operatorDeleteInput, operatorUpdateCapability, operatorUpdateInput, staffFleetCapabilities, } from "./capabilities/staff-fleet.js";
12
- export { bidShowCapability, bidShowInput, bidAcceptCapability, bidAcceptInput, bidRejectCapability, bidRejectInput, billingInvoicesListCapability, billingInvoicesListInput, inventoryDelistCapability, inventoryDelistInput, inventoryUpdateCapability, inventoryUpdateInput, reservationActivateCapability, reservationActivateInput, reservationCancelCapability, reservationCancelInput, reservationCompleteCapability, reservationCompleteInput, reservationDraftCreateCapability, reservationDraftCreateInput, reservationListCapability, reservationListInput, reservationMachinesListCapability, reservationMachinesListInput, reservationPublishCapability, reservationPublishInput, reservationShowCapability, reservationShowInput, reservationSshKeyAddCapability, reservationSshKeyAddInput, reservationSshKeyRemoveCapability, reservationSshKeyRemoveInput, reservationTransferCapability, reservationTransferInput, reservationUpdateCapability, reservationUpdateInput, staffCommerceCapabilities, tenantCreditProfileShowCapability, tenantCreditProfileShowInput, } from "./capabilities/staff-commerce.js";
13
- export { sshKeyAddCapability, sshKeyAddInput, sshKeyPushCapability, sshKeyPushInput, sshKeyRevokeCapability, sshKeyRevokeInput, staffAccessCapabilities, } from "./capabilities/staff-access.js";
14
- export { gtmCommentDeleteCapability, gtmCommentDeleteInput, gtmCommentListCapability, gtmCommentListInput, gtmCommentWriteCapability, gtmCommentWriteInput, gtmCompanyDeleteCapability, gtmCompanyDeleteInput, gtmCompanyListCapability, gtmCompanyListInput, gtmCompanyWriteCapability, gtmCompanyWriteInput, gtmCompanyBulkRetagCapability, gtmCompanyBulkRetagInput, gtmDealListCapability, gtmDealListInput, gtmListingListCapability, gtmListingListInput, gtmListingUpdateCapability, gtmListingUpdateInput, gtmDealWriteCapability, gtmDealWriteInput, gtmTaskDeleteCapability, gtmTaskDeleteInput, gtmTaskListCapability, gtmTaskListInput, gtmTaskWriteCapability, gtmTaskWriteInput, gtmTaskActivityListCapability, gtmTaskActivityListInput, gtmWorkspaceShowCapability, gtmWorkspaceShowInput, staffGTMCapabilities, } from "./capabilities/staff-gtm.js";
15
- export { CLIENTS, parseRole, roleAtLeast, ROLES } from "./role.js";
16
- export { bindHardwareFields, HARDWARE_CATALOG_PATH, HARDWARE_KINDS, HARDWARE_LISTING_FIELDS, HARDWARE_LISTING_FILTERS, loadHardwareCatalog, looksLikeSpecDump, normalizeCatalogQuery, parseHardwareCatalog, projectCatalogTerms, proposeListingPayload, resolveCatalogTerm, UNRESOLVED_CATALOG_HINT, } from "./spec-catalog.js";
@@ -1,6 +0,0 @@
1
- /** Shared wire names derived from `Capability.id`. */
2
- export declare function namesFromId(id: string): {
3
- mcp: string;
4
- slack: string;
5
- cli: string[];
6
- };
@@ -1,6 +0,0 @@
1
- export declare const ROLES: readonly ["user", "reviewer", "admin"];
2
- export type Role = (typeof ROLES)[number];
3
- export declare const CLIENTS: readonly ["cli", "mcp", "slack"];
4
- export type ClientKind = (typeof CLIENTS)[number];
5
- export declare function roleAtLeast(have: Role, min: Role): boolean;
6
- export declare function parseRole(raw: unknown): Role | null;
@@ -1,17 +0,0 @@
1
- export const ROLES = ["user", "reviewer", "admin"];
2
- export const CLIENTS = ["cli", "mcp", "slack"];
3
- const ROLE_RANK = {
4
- user: 0,
5
- reviewer: 1,
6
- admin: 2,
7
- };
8
- export function roleAtLeast(have, min) {
9
- return ROLE_RANK[have] >= ROLE_RANK[min];
10
- }
11
- export function parseRole(raw) {
12
- if (raw === "admin" || raw === "reviewer" || raw === "user")
13
- return raw;
14
- if (raw === "operator")
15
- return "reviewer";
16
- return null;
17
- }
@@ -1,78 +0,0 @@
1
- import type { CapabilityTransport } from "./capability.ts";
2
- /** Live orchestrator dictionary: `GET /v1/orchestrator/catalog` from `spec/dictionary.csv`. */
3
- export declare const HARDWARE_CATALOG_PATH = "/v1/orchestrator/catalog";
4
- export declare const HARDWARE_KINDS: readonly ["gpu", "cpu", "node", "link"];
5
- export type HardwareKind = (typeof HARDWARE_KINDS)[number];
6
- export declare const UNRESOLVED_CATALOG_HINT = "Leave this field empty. Only dictionary.csv product names are allowed. Do not ask to add spec-sheet text to the dictionary.";
7
- export declare const HARDWARE_LISTING_FIELDS: readonly [{
8
- readonly field: "gpu_type";
9
- readonly kind: "gpu";
10
- }, {
11
- readonly field: "cpu";
12
- readonly kind: "cpu";
13
- }, {
14
- readonly field: "node_model";
15
- readonly kind: "node";
16
- }, {
17
- readonly field: "fabric_type";
18
- readonly kind: "link";
19
- }];
20
- export declare const HARDWARE_LISTING_FILTERS: readonly [{
21
- readonly field: "gpu";
22
- readonly kind: "gpu";
23
- }, {
24
- readonly field: "cpu";
25
- readonly kind: "cpu";
26
- }, {
27
- readonly field: "fabric";
28
- readonly kind: "link";
29
- }];
30
- export type CatalogTerm = {
31
- kind: string;
32
- canonical: string;
33
- display: string;
34
- aliases?: string[];
35
- link_category?: string;
36
- };
37
- export type HardwareCatalog = {
38
- terms: CatalogTerm[];
39
- };
40
- export type ResolvedCatalogTerm = {
41
- canonical: string | null;
42
- display: string | null;
43
- hint?: string;
44
- kind?: string;
45
- };
46
- export type CatalogBindFailure = {
47
- ok: false;
48
- error: "unknown_catalog_term";
49
- rejected: {
50
- field: string;
51
- value: string;
52
- }[];
53
- hint: string;
54
- };
55
- export type CatalogBindSuccess<T> = {
56
- ok: true;
57
- payload: T;
58
- };
59
- export type CatalogBindResult<T> = CatalogBindSuccess<T> | CatalogBindFailure;
60
- export declare function looksLikeSpecDump(query: string): boolean;
61
- export declare function normalizeCatalogQuery(value: string): string;
62
- export declare function parseHardwareCatalog(payload: unknown): HardwareCatalog;
63
- export declare function loadHardwareCatalog(fetchImpl: CapabilityTransport): Promise<HardwareCatalog>;
64
- export declare function resolveCatalogTerm(terms: readonly CatalogTerm[], kind: string, query: string): ResolvedCatalogTerm;
65
- export declare function bindHardwareFields<T extends Record<string, unknown>>(terms: readonly CatalogTerm[], input: T, fields: readonly {
66
- field: string;
67
- kind: HardwareKind;
68
- }[]): CatalogBindResult<T>;
69
- export declare function proposeListingPayload(terms: readonly CatalogTerm[], args: Record<string, unknown>): CatalogBindResult<Record<string, unknown>> & {
70
- action?: "create_listing";
71
- };
72
- export declare function projectCatalogTerms(terms: readonly CatalogTerm[], kind?: string): {
73
- terms: {
74
- kind: string;
75
- display: string;
76
- aliases: string[];
77
- }[];
78
- };