@treeseed/sdk 0.13.0-rc.94 → 0.13.0-rc.95

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.
@@ -1 +1 @@
1
- {"completedAt":"2026-09-07T10:58:49.818Z"}
1
+ {"completedAt":"2026-09-07T12:41:51.583Z"}
@@ -46,3 +46,20 @@ export declare const aiInstanceDraftSchema: z.ZodEffects<z.ZodObject<{
46
46
  model: string;
47
47
  }>;
48
48
  export type AiInstanceDraft = z.infer<typeof aiInstanceDraftSchema>;
49
+ /** Registration adopts an already managed local runtime; it never provisions a cloud machine. */
50
+ export declare const aiNodeRegistrationSchema: z.ZodObject<{
51
+ name: z.ZodString;
52
+ projectId: z.ZodString;
53
+ purpose: z.ZodEnum<["inference", "training", "both"]>;
54
+ model: z.ZodString;
55
+ }, "strict", z.ZodTypeAny, {
56
+ name: string;
57
+ projectId: string;
58
+ purpose: "inference" | "training" | "both";
59
+ model: string;
60
+ }, {
61
+ name: string;
62
+ projectId: string;
63
+ purpose: "inference" | "training" | "both";
64
+ model: string;
65
+ }>;
@@ -18,6 +18,13 @@ const aiInstanceDraftSchema = z.object({
18
18
  }).strict().superRefine((value, context) => {
19
19
  if (value.purpose !== "inference" && !value.storageConnectionId) context.addIssue({ code: "custom", path: ["storageConnectionId"], message: "Training requires a storage connection." });
20
20
  });
21
+ const aiNodeRegistrationSchema = z.object({
22
+ name: z.string().trim().min(1).max(128),
23
+ projectId: z.string().uuid(),
24
+ purpose: z.enum(["inference", "training", "both"]),
25
+ model: z.string().trim().min(1).max(512)
26
+ }).strict();
21
27
  export {
22
- aiInstanceDraftSchema
28
+ aiInstanceDraftSchema,
29
+ aiNodeRegistrationSchema
23
30
  };
@@ -1,4 +1,13 @@
1
1
  export declare const AI_INSTANCE_OPERATIONS: {
2
+ register: import("../../control-plane-operation.js").ControlPlaneOperationBinding<{
3
+ teamId: string;
4
+ instanceId: string;
5
+ }, {}, {
6
+ name: string;
7
+ projectId: string;
8
+ purpose: "inference" | "training" | "both";
9
+ model: string;
10
+ }, Record<string, unknown>>;
2
11
  list: import("../../control-plane-operation.js").ControlPlaneOperationBinding<{
3
12
  teamId: string;
4
13
  }, {
@@ -1,6 +1,6 @@
1
1
  import { z } from "zod";
2
2
  import { defineOperation } from "../../operation-builder.js";
3
- import { aiInstanceDraftSchema } from "../../../deployment/ai-instance.js";
3
+ import { aiInstanceDraftSchema, aiNodeRegistrationSchema } from "../../../deployment/ai-instance.js";
4
4
  const team = z.object({ teamId: z.string().min(1) }).strict(), instance = team.extend({ instanceId: z.string().uuid() });
5
5
  const empty = z.object({}).strict(), record = z.record(z.unknown());
6
6
  function descriptor(action, method, path) {
@@ -8,6 +8,7 @@ function descriptor(action, method, path) {
8
8
  return { operationId: `ai.instances.${action}`, description: `${action} a team-owned AI configuration; no cloud provisioning.`, rest: { method, path }, parameters: `treeseed.ai.instances.${action}.parameters/v1`, capability: read ? "infrastructure.read" : "infrastructure.write", authentication: "oauth", oauthScopes: read ? ["treeseed:read"] : ["treeseed:admin"], kind: read ? "read" : "mutation", riskClass: "ordinary", confirmation: "never", surfaces: ["rest", "cli"], cacheScope: read ? "principal" : "none", pagination: "none", concurrencyRequired: !read };
9
9
  }
10
10
  const AI_INSTANCE_OPERATIONS = {
11
+ register: defineOperation(descriptor("register", "PUT", "/v1/teams/{teamId}/ai-instances/{instanceId}/registration"), { path: instance, query: empty, body: aiNodeRegistrationSchema, output: record }),
11
12
  list: defineOperation({ ...descriptor("list", "GET", "/v1/teams/{teamId}/ai-instances"), pagination: "cursor" }, { path: team, query: z.object({ cursor: z.string().optional(), limit: z.coerce.number().int().min(1).max(100).optional() }).strict(), body: z.undefined(), output: record }),
12
13
  show: defineOperation(descriptor("show", "GET", "/v1/teams/{teamId}/ai-instances/{instanceId}"), { path: instance, query: empty, body: z.undefined(), output: record }),
13
14
  put: defineOperation(descriptor("put", "PUT", "/v1/teams/{teamId}/ai-instances/{instanceId}"), { path: instance, query: empty, body: aiInstanceDraftSchema, output: record }),
@@ -1,6 +1,15 @@
1
1
  import type { ControlPlaneOperationDescriptor } from './control-plane-operation.js';
2
2
  export declare const CONTROL_PLANE_OPERATIONS: {
3
3
  readonly aiInstances: {
4
+ register: import("./control-plane-operation.js").ControlPlaneOperationBinding<{
5
+ teamId: string;
6
+ instanceId: string;
7
+ }, {}, {
8
+ name: string;
9
+ projectId: string;
10
+ purpose: "inference" | "training" | "both";
11
+ model: string;
12
+ }, Record<string, unknown>>;
4
13
  list: import("./control-plane-operation.js").ControlPlaneOperationBinding<{
5
14
  teamId: string;
6
15
  }, {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@treeseed/sdk",
3
- "version": "0.13.0-rc.94",
3
+ "version": "0.13.0-rc.95",
4
4
  "description": "Portable TreeSeed contracts, standards, and typed remote control-plane clients.",
5
5
  "license": "Apache-2.0",
6
6
  "repository": {