hexel-sdk 0.1.0

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 (57) hide show
  1. package/LICENSE +21 -0
  2. package/Makefile +28 -0
  3. package/README.md +123 -0
  4. package/dist/_internal/auth.d.ts +17 -0
  5. package/dist/_internal/auth.d.ts.map +1 -0
  6. package/dist/_internal/auth.js +50 -0
  7. package/dist/_internal/auth.js.map +1 -0
  8. package/dist/_internal/client.d.ts +15 -0
  9. package/dist/_internal/client.d.ts.map +1 -0
  10. package/dist/_internal/client.js +22 -0
  11. package/dist/_internal/client.js.map +1 -0
  12. package/dist/_internal/http.d.ts +15 -0
  13. package/dist/_internal/http.d.ts.map +1 -0
  14. package/dist/_internal/http.js +59 -0
  15. package/dist/_internal/http.js.map +1 -0
  16. package/dist/compute/agent.d.ts +18 -0
  17. package/dist/compute/agent.d.ts.map +1 -0
  18. package/dist/compute/agent.js +40 -0
  19. package/dist/compute/agent.js.map +1 -0
  20. package/dist/compute/index.d.ts +13 -0
  21. package/dist/compute/index.d.ts.map +1 -0
  22. package/dist/compute/index.js +36 -0
  23. package/dist/compute/index.js.map +1 -0
  24. package/dist/compute/instance.d.ts +18 -0
  25. package/dist/compute/instance.d.ts.map +1 -0
  26. package/dist/compute/instance.js +40 -0
  27. package/dist/compute/instance.js.map +1 -0
  28. package/dist/compute/sandbox.d.ts +20 -0
  29. package/dist/compute/sandbox.d.ts.map +1 -0
  30. package/dist/compute/sandbox.js +44 -0
  31. package/dist/compute/sandbox.js.map +1 -0
  32. package/dist/compute/types.d.ts +272 -0
  33. package/dist/compute/types.d.ts.map +1 -0
  34. package/dist/compute/types.js +4 -0
  35. package/dist/compute/types.js.map +1 -0
  36. package/dist/index.d.ts +4 -0
  37. package/dist/index.d.ts.map +1 -0
  38. package/dist/index.js +23 -0
  39. package/dist/index.js.map +1 -0
  40. package/generator/generate.py +180 -0
  41. package/generator/ir.json +1545 -0
  42. package/generator/overrides.json +66 -0
  43. package/generator/parser.py +180 -0
  44. package/package.json +21 -0
  45. package/specs/agent-registry-api.json +1 -0
  46. package/specs/agentd-api.json +1364 -0
  47. package/specs/compute-api.json +1 -0
  48. package/src/_internal/auth.ts +56 -0
  49. package/src/_internal/client.ts +33 -0
  50. package/src/_internal/http.ts +61 -0
  51. package/src/compute/agent.ts +41 -0
  52. package/src/compute/index.ts +20 -0
  53. package/src/compute/instance.ts +41 -0
  54. package/src/compute/sandbox.ts +46 -0
  55. package/src/compute/types.ts +310 -0
  56. package/src/index.ts +3 -0
  57. package/tsconfig.json +17 -0
@@ -0,0 +1,44 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.SandboxClient = void 0;
4
+ class SandboxClient {
5
+ http;
6
+ constructor(http) {
7
+ this.http = http;
8
+ }
9
+ /** Allocates a VM from the pool or creates a new one for the requesting org */
10
+ async create(data) {
11
+ const resp = await this.http.post("/compute/v1/vms/allocate", data);
12
+ return resp;
13
+ }
14
+ /** Returns VMs scoped to the caller's org */
15
+ async list() {
16
+ const resp = await this.http.get("/compute/v1/vms");
17
+ return resp;
18
+ }
19
+ /** Get Agent VM by ID */
20
+ async get(id) {
21
+ const resp = await this.http.get("/compute/v1/vms/{id}".replace("{id}", id));
22
+ return resp;
23
+ }
24
+ /** Delete Agent VM */
25
+ async delete(id) {
26
+ const resp = await this.http.delete("/compute/v1/vms/{id}".replace("{id}", id));
27
+ }
28
+ /** Release Agent VM */
29
+ async release(id, data) {
30
+ const resp = await this.http.post("/compute/v1/vms/{id}/release".replace("{id}", id), data);
31
+ return resp;
32
+ }
33
+ /** Renew Agent VM TTL */
34
+ async renew(id, data) {
35
+ const resp = await this.http.post("/compute/v1/vms/{id}/renew".replace("{id}", id), data);
36
+ return resp;
37
+ }
38
+ /** Runs code or shell commands in an allocated sandbox VM */
39
+ async execute(id) {
40
+ const resp = await this.http.post("/compute/v1/vms/{id}/execute".replace("{id}", id));
41
+ }
42
+ }
43
+ exports.SandboxClient = SandboxClient;
44
+ //# sourceMappingURL=sandbox.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sandbox.js","sourceRoot":"","sources":["../../src/compute/sandbox.ts"],"names":[],"mappings":";;;AAGA,MAAa,aAAa;IACJ;IAApB,YAAoB,IAAgB;QAAhB,SAAI,GAAJ,IAAI,CAAY;IAAG,CAAC;IAExC,+EAA+E;IAC/E,KAAK,CAAC,MAAM,CAAC,IAA6B;QACxC,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,0BAA0B,EAAE,IAAI,CAAC,CAAC;QACpE,OAAO,IAAI,CAAC;IACd,CAAC;IAED,6CAA6C;IAC7C,KAAK,CAAC,IAAI;QACR,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC;QACpD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,yBAAyB;IACzB,KAAK,CAAC,GAAG,CAAC,EAAU;QAClB,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,sBAAsB,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,CAAC;QAC7E,OAAO,IAAI,CAAC;IACd,CAAC;IAED,sBAAsB;IACtB,KAAK,CAAC,MAAM,CAAC,EAAU;QACrB,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,sBAAsB,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,CAAC;IAClF,CAAC;IAED,uBAAuB;IACvB,KAAK,CAAC,OAAO,CAAC,EAAU,EAAE,IAA6B;QACrD,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,8BAA8B,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC;QAC5F,OAAO,IAAI,CAAC;IACd,CAAC;IAED,yBAAyB;IACzB,KAAK,CAAC,KAAK,CAAC,EAAU,EAAE,IAA6B;QACnD,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,4BAA4B,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC;QAC1F,OAAO,IAAI,CAAC;IACd,CAAC;IAED,6DAA6D;IAC7D,KAAK,CAAC,OAAO,CAAC,EAAU;QACtB,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,8BAA8B,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,CAAC;IACxF,CAAC;CACF;AA1CD,sCA0CC"}
@@ -0,0 +1,272 @@
1
+ export interface OAuthClient {
2
+ client_id?: string;
3
+ created_at?: string;
4
+ is_active?: boolean;
5
+ name?: string;
6
+ }
7
+ export interface OAuthClientResponse {
8
+ client_id?: string;
9
+ client_secret?: string;
10
+ name?: string;
11
+ }
12
+ export interface InstanceInfo {
13
+ allowed_org_ids?: string[];
14
+ author?: string;
15
+ capabilities?: string[];
16
+ created_at?: string;
17
+ description?: string;
18
+ endpoint?: string;
19
+ id?: string;
20
+ image?: string;
21
+ image_pull_secret?: ImagePullSecret;
22
+ manifest?: AgentManifest;
23
+ metadata?: Record<string, string>;
24
+ name?: string;
25
+ org_id?: string;
26
+ public_key?: string;
27
+ state?: string;
28
+ updated_at?: string;
29
+ version?: string;
30
+ visibility?: string;
31
+ }
32
+ export interface SandboxInfo {
33
+ allocated_at?: string;
34
+ created_at?: string;
35
+ expires_at?: string;
36
+ id?: string;
37
+ metadata?: Record<string, string>;
38
+ released_at?: string;
39
+ skills?: string[];
40
+ state?: string;
41
+ tier?: string;
42
+ token?: string;
43
+ ttl_seconds?: number;
44
+ }
45
+ export interface CreateSandboxRequest {
46
+ env?: Record<string, string>;
47
+ metadata?: Record<string, string>;
48
+ org_id?: string;
49
+ secure_runtime?: string;
50
+ skills?: string[];
51
+ tier: string;
52
+ ttl_seconds?: number;
53
+ }
54
+ export interface SandboxResponse {
55
+ endpoint?: string;
56
+ expires_at?: string;
57
+ skills_loaded?: string[];
58
+ state?: string;
59
+ tier?: string;
60
+ token?: string;
61
+ vm_id?: string;
62
+ ws_url?: string;
63
+ }
64
+ export interface CreateSkillRequest {
65
+ content: string;
66
+ description?: string;
67
+ name: string;
68
+ resources?: Record<string, string>;
69
+ }
70
+ export interface ErrorResponse {
71
+ code?: number;
72
+ message?: string;
73
+ }
74
+ export interface PoolConfig {
75
+ default_skills?: string[];
76
+ default_tier?: string;
77
+ idle_ttl_seconds?: number;
78
+ max_total?: number;
79
+ max_vm_ttl_seconds?: number;
80
+ max_warm?: number;
81
+ min_warm?: number;
82
+ recycle?: boolean;
83
+ scale_up_threshold?: number;
84
+ }
85
+ export interface PoolStatus {
86
+ allocated?: number;
87
+ by_tier?: Record<string, number>;
88
+ total?: number;
89
+ warm?: number;
90
+ }
91
+ export interface ReleaseRequest {
92
+ recycle?: boolean;
93
+ }
94
+ export interface RenewRequest {
95
+ ttl_seconds: number;
96
+ }
97
+ export interface Skill {
98
+ content?: string;
99
+ content_hash?: string;
100
+ created_at?: string;
101
+ description?: string;
102
+ name?: string;
103
+ resources?: Record<string, string>;
104
+ updated_at?: string;
105
+ }
106
+ export interface UsageRecord {
107
+ duration_seconds?: number;
108
+ ended_at?: string;
109
+ reason?: string;
110
+ started_at?: string;
111
+ tier?: string;
112
+ vm_id?: string;
113
+ }
114
+ export interface UsageSummary {
115
+ by_tier?: Record<string, number>;
116
+ period_end?: string;
117
+ period_start?: string;
118
+ total_seconds?: number;
119
+ vm_count?: number;
120
+ }
121
+ export interface AgentManifest {
122
+ authentication?: Record<string, unknown>;
123
+ capabilities?: Record<string, unknown>;
124
+ description?: string;
125
+ input_schema?: Record<string, unknown>;
126
+ name?: string;
127
+ output_schema?: Record<string, unknown>;
128
+ runtime?: Record<string, unknown>;
129
+ skills?: ManifestSkill[];
130
+ url?: string;
131
+ version?: string;
132
+ }
133
+ export interface Agent {
134
+ id?: string;
135
+ name?: string;
136
+ image?: string;
137
+ description?: string;
138
+ author?: string;
139
+ version?: string;
140
+ state?: string;
141
+ visibility?: string;
142
+ capabilities?: string[];
143
+ endpoint?: string;
144
+ metadata?: Record<string, string>;
145
+ image_pull_secret?: ImagePullSecret;
146
+ manifest?: AgentManifest;
147
+ created_at?: string;
148
+ updated_at?: string;
149
+ }
150
+ export interface AgentResponse {
151
+ agent?: Agent;
152
+ }
153
+ export interface AgentsListResponse {
154
+ agents?: Agent[];
155
+ total?: number;
156
+ }
157
+ export interface CreateAgentRequest {
158
+ author?: string;
159
+ capabilities?: string[];
160
+ description?: string;
161
+ endpoint?: string;
162
+ image: string;
163
+ image_pull_secret?: ImagePullSecret;
164
+ manifest?: AgentManifest;
165
+ metadata?: Record<string, string>;
166
+ name: string;
167
+ org_id: string;
168
+ version?: string;
169
+ }
170
+ export interface CreateToolRequest {
171
+ category?: string;
172
+ description?: string;
173
+ id: string;
174
+ name: string;
175
+ }
176
+ export interface ImagePullSecret {
177
+ password?: string;
178
+ registry?: string;
179
+ username?: string;
180
+ }
181
+ export interface ManifestSkill {
182
+ id?: string;
183
+ inputModes?: string[];
184
+ outputModes?: string[];
185
+ }
186
+ export interface Tool {
187
+ category?: string;
188
+ created_at?: string;
189
+ description?: string;
190
+ id?: string;
191
+ name?: string;
192
+ }
193
+ export interface ToolResponse {
194
+ tool?: Tool;
195
+ }
196
+ export interface ToolsListResponse {
197
+ tools?: Tool[];
198
+ total?: number;
199
+ }
200
+ export interface UpdateAgentRequest {
201
+ capabilities?: string[];
202
+ description?: string;
203
+ endpoint?: string;
204
+ image?: string;
205
+ manifest?: AgentManifest;
206
+ metadata?: Record<string, string>;
207
+ name?: string;
208
+ public_key?: string;
209
+ state?: string;
210
+ version?: string;
211
+ }
212
+ export interface CodeContext {
213
+ created_at?: string;
214
+ id?: string;
215
+ kernel_id?: string;
216
+ language?: string;
217
+ session_id?: string;
218
+ }
219
+ export interface CommandStatus {
220
+ exit_code?: number;
221
+ finished_at?: string;
222
+ id?: string;
223
+ running?: boolean;
224
+ started_at?: string;
225
+ }
226
+ export interface CreateContextRequest {
227
+ language: string;
228
+ session_id: string;
229
+ }
230
+ export interface ExecuteCodeRequest {
231
+ code: string;
232
+ context_id: string;
233
+ }
234
+ export interface ExecuteRequest {
235
+ }
236
+ export interface FileInfo {
237
+ group?: string;
238
+ is_dir?: boolean;
239
+ mod_time?: string;
240
+ mode?: string;
241
+ owner?: string;
242
+ path?: string;
243
+ size?: number;
244
+ }
245
+ export interface LoadSkillsRequest {
246
+ skills: string[];
247
+ }
248
+ export interface MetricsSnapshot {
249
+ cpu_percent?: number;
250
+ mem_total_bytes?: number;
251
+ mem_used_bytes?: number;
252
+ tokens_total?: number;
253
+ }
254
+ export interface RunCommandRequest {
255
+ background?: boolean;
256
+ command: string;
257
+ cwd?: string;
258
+ envs?: Record<string, string>;
259
+ gid?: number;
260
+ timeout_ms?: number;
261
+ uid?: number;
262
+ }
263
+ export interface SSEEvent {
264
+ data?: string;
265
+ event?: string;
266
+ }
267
+ export interface SkillInfo {
268
+ loaded?: boolean;
269
+ name?: string;
270
+ path?: string;
271
+ }
272
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/compute/types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ "use strict";
2
+ // Generated by hexel-sdk-generator. Do not edit manually.
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/compute/types.ts"],"names":[],"mappings":";AAAA,0DAA0D"}
@@ -0,0 +1,4 @@
1
+ export { Hexel } from "./_internal/client";
2
+ export { ComputeClient } from "./compute";
3
+ export * from "./compute/types";
4
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAC3C,OAAO,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAC1C,cAAc,iBAAiB,CAAC"}
package/dist/index.js ADDED
@@ -0,0 +1,23 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ exports.ComputeClient = exports.Hexel = void 0;
18
+ var client_1 = require("./_internal/client");
19
+ Object.defineProperty(exports, "Hexel", { enumerable: true, get: function () { return client_1.Hexel; } });
20
+ var compute_1 = require("./compute");
21
+ Object.defineProperty(exports, "ComputeClient", { enumerable: true, get: function () { return compute_1.ComputeClient; } });
22
+ __exportStar(require("./compute/types"), exports);
23
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAAA,6CAA2C;AAAlC,+FAAA,KAAK,OAAA;AACd,qCAA0C;AAAjC,wGAAA,aAAa,OAAA;AACtB,kDAAgC"}
@@ -0,0 +1,180 @@
1
+ #!/usr/bin/env python3
2
+ """
3
+ Hexel TypeScript SDK Generator
4
+
5
+ Reads OpenAPI specs + overrides → builds IR → generates TypeScript SDK.
6
+
7
+ Usage:
8
+ python generator/generate.py
9
+ """
10
+ import json
11
+ import os
12
+ import sys
13
+ from pathlib import Path
14
+
15
+ # Reuse parser from python-sdk
16
+ sys.path.insert(0, str(Path(__file__).resolve().parent))
17
+ from parser import build_from_files
18
+
19
+ SPECS_DIR = "specs"
20
+ OVERRIDES = "generator/overrides.json"
21
+ OUTPUT_DIR = "src/compute"
22
+
23
+ TS_TYPE_MAP = {
24
+ "string": "string",
25
+ "integer": "number",
26
+ "number": "number",
27
+ "boolean": "boolean",
28
+ "object": "Record<string, unknown>",
29
+ "any": "unknown",
30
+ }
31
+
32
+
33
+ def ts_type(t: str) -> str:
34
+ if t.startswith("list["):
35
+ inner = t[5:-1]
36
+ return f"{ts_type(inner)}[]"
37
+ if t.startswith("dict[str,"):
38
+ val = t.split(",")[1].strip().rstrip("]")
39
+ return f"Record<string, {ts_type(val)}>"
40
+ if t == "dict":
41
+ return "Record<string, unknown>"
42
+ return TS_TYPE_MAP.get(t, t)
43
+
44
+
45
+ def to_class_name(s: str) -> str:
46
+ return s[0].upper() + s[1:] + "Client"
47
+
48
+
49
+ def to_camel(s: str) -> str:
50
+ parts = s.split("_")
51
+ return parts[0] + "".join(p.capitalize() for p in parts[1:])
52
+
53
+
54
+ def generate_types(ir: dict, output: Path):
55
+ lines = ['// Generated by hexel-sdk-generator. Do not edit manually.', '']
56
+ for name, typedef in ir["types"].items():
57
+ lines.append(f"export interface {name} {{")
58
+ for f in typedef["fields"]:
59
+ opt = "" if f["required"] else "?"
60
+ lines.append(f" {f['name']}{opt}: {ts_type(f['type'])};")
61
+ lines.append("}")
62
+ lines.append("")
63
+ (output / "types.ts").write_text("\n".join(lines))
64
+
65
+
66
+ def generate_service(service_name: str, service_def: dict, output: Path, has_ws: bool):
67
+ class_name = to_class_name(service_name)
68
+ lines = [
69
+ "// Generated by hexel-sdk-generator. Do not edit manually.",
70
+ 'import { HttpClient } from "../_internal/http";',
71
+ "",
72
+ f"export class {class_name} {{",
73
+ " constructor(private http: HttpClient) {}",
74
+ ]
75
+
76
+ for method_name, method in service_def["methods"].items():
77
+ params = []
78
+ for p in method["path_params"]:
79
+ params.append(f"{to_camel(p)}: string")
80
+ if method["request_type"]:
81
+ params.append("data: Record<string, unknown>")
82
+
83
+ ret_type = "unknown" if method["response_type"] else "void"
84
+ param_str = ", ".join(params)
85
+
86
+ lines.append("")
87
+ lines.append(f" /** {method['description']} */")
88
+ lines.append(f" async {to_camel(method_name)}({param_str}): Promise<{ret_type}> {{")
89
+
90
+ path_expr = f'"{method["path"]}"'
91
+ for p in method["path_params"]:
92
+ path_expr += f'.replace("{{{p}}}", {to_camel(p)})'
93
+
94
+ http_method = method["http_method"].lower()
95
+ if http_method == "get":
96
+ lines.append(f" const resp = await this.http.get({path_expr});")
97
+ elif http_method == "post":
98
+ data_arg = ", data" if method["request_type"] else ""
99
+ lines.append(f" const resp = await this.http.post({path_expr}{data_arg});")
100
+ elif http_method == "put":
101
+ data_arg = ", data" if method["request_type"] else ""
102
+ lines.append(f" const resp = await this.http.put({path_expr}{data_arg});")
103
+ elif http_method == "delete":
104
+ lines.append(f" const resp = await this.http.delete({path_expr});")
105
+ elif http_method == "patch":
106
+ data_arg = ", data" if method["request_type"] else ""
107
+ lines.append(f" const resp = await this.http.patch({path_expr}{data_arg});")
108
+
109
+ if method["response_type"]:
110
+ lines.append(" return resp;")
111
+
112
+ lines.append(" }")
113
+
114
+ lines.append("}")
115
+ lines.append("")
116
+ (output / f"{service_name}.ts").write_text("\n".join(lines))
117
+
118
+
119
+ def generate_index(ir: dict, output: Path):
120
+ lines = [
121
+ "// Generated by hexel-sdk-generator. Do not edit manually.",
122
+ 'import { HttpClient } from "../_internal/http";',
123
+ ]
124
+ for svc in ir["services"]:
125
+ cls = to_class_name(svc)
126
+ lines.append(f'import {{ {cls} }} from "./{svc}";')
127
+
128
+ lines.append("")
129
+ lines.append("export class ComputeClient {")
130
+ for svc in ir["services"]:
131
+ cls = to_class_name(svc)
132
+ lines.append(f" readonly {svc}: {cls};")
133
+ lines.append("")
134
+ lines.append(" constructor(http: HttpClient) {")
135
+ for svc in ir["services"]:
136
+ cls = to_class_name(svc)
137
+ lines.append(f" this.{svc} = new {cls}(http);")
138
+ lines.append(" }")
139
+ lines.append("}")
140
+ lines.append("")
141
+
142
+ # Re-export
143
+ lines.append(f'export {{ {", ".join(to_class_name(s) for s in ir["services"])} }};')
144
+ lines.append('export * from "./types";')
145
+ lines.append("")
146
+ (output / "index.ts").write_text("\n".join(lines))
147
+
148
+
149
+ def generate():
150
+ print("→ Parsing specs...")
151
+ ir = build_from_files(SPECS_DIR, OVERRIDES)
152
+ print(f" Services: {list(ir['services'].keys())}")
153
+ print(f" Types: {len(ir['types'])}")
154
+
155
+ output = Path(OUTPUT_DIR)
156
+ output.mkdir(parents=True, exist_ok=True)
157
+
158
+ print("→ Generating types.ts...")
159
+ generate_types(ir, output)
160
+
161
+ for svc_name, svc_def in ir["services"].items():
162
+ has_ws = svc_name in ir.get("websocket", {})
163
+ print(f"→ Generating {svc_name}.ts ({to_class_name(svc_name)}, {len(svc_def['methods'])} methods)...")
164
+ generate_service(svc_name, svc_def, output, has_ws)
165
+
166
+ print("→ Generating index.ts...")
167
+ generate_index(ir, output)
168
+
169
+ # Write IR
170
+ Path("generator/ir.json").write_text(json.dumps(ir, indent=2))
171
+
172
+ print(f"\n✅ Generated {len(ir['services'])} services + types in {OUTPUT_DIR}/")
173
+ for f in sorted(output.glob("*.ts")):
174
+ lines = len(f.read_text().splitlines())
175
+ print(f" {f.name:20s} {lines:4d} lines")
176
+
177
+
178
+ if __name__ == "__main__":
179
+ os.chdir(Path(__file__).resolve().parent.parent)
180
+ generate()