@basilica/openclaw 0.1.0 → 0.3.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.
- package/dist/gateway/status.d.ts +3 -6
- package/dist/gateway/status.d.ts.map +1 -1
- package/dist/gateway/status.js +12 -15
- package/dist/gateway/status.js.map +1 -1
- package/dist/gateway/webhook.d.ts +2 -1
- package/dist/gateway/webhook.d.ts.map +1 -1
- package/dist/gateway/webhook.js +28 -1
- package/dist/gateway/webhook.js.map +1 -1
- package/dist/hooks/index.d.ts.map +1 -1
- package/dist/hooks/index.js +0 -4
- package/dist/hooks/index.js.map +1 -1
- package/dist/tools/auth.d.ts +3 -0
- package/dist/tools/auth.d.ts.map +1 -0
- package/dist/tools/auth.js +170 -0
- package/dist/tools/auth.js.map +1 -0
- package/dist/tools/billing.d.ts +3 -0
- package/dist/tools/billing.d.ts.map +1 -0
- package/dist/tools/billing.js +37 -0
- package/dist/tools/billing.js.map +1 -0
- package/dist/tools/context.d.ts +7 -2
- package/dist/tools/context.d.ts.map +1 -1
- package/dist/tools/context.js +19 -10
- package/dist/tools/context.js.map +1 -1
- package/dist/tools/deployments.d.ts.map +1 -1
- package/dist/tools/deployments.js +97 -24
- package/dist/tools/deployments.js.map +1 -1
- package/dist/tools/index.js +10 -10
- package/dist/tools/index.js.map +1 -1
- package/dist/tools/jobs.d.ts.map +1 -1
- package/dist/tools/jobs.js +68 -22
- package/dist/tools/jobs.js.map +1 -1
- package/dist/tools/rentals.d.ts +3 -0
- package/dist/tools/rentals.d.ts.map +1 -0
- package/dist/tools/rentals.js +114 -0
- package/dist/tools/rentals.js.map +1 -0
- package/dist/tools/schemas.d.ts +25 -15
- package/dist/tools/schemas.d.ts.map +1 -1
- package/dist/tools/schemas.js +139 -69
- package/dist/tools/schemas.js.map +1 -1
- package/dist/tools/secure-cloud.d.ts +3 -0
- package/dist/tools/secure-cloud.d.ts.map +1 -0
- package/dist/tools/secure-cloud.js +41 -0
- package/dist/tools/secure-cloud.js.map +1 -0
- package/openclaw.plugin.json +3 -23
- package/package.json +3 -2
- package/skills/basilica-operator/index.md +43 -31
- package/skills/basilica-platform/index.md +87 -54
- package/dist/hooks/model-routing.d.ts +0 -3
- package/dist/hooks/model-routing.d.ts.map +0 -1
- package/dist/hooks/model-routing.js +0 -11
- package/dist/hooks/model-routing.js.map +0 -1
- package/dist/hooks/tool-policy.d.ts +0 -3
- package/dist/hooks/tool-policy.d.ts.map +0 -1
- package/dist/hooks/tool-policy.js +0 -44
- package/dist/hooks/tool-policy.js.map +0 -1
- package/dist/tools/datasets.d.ts +0 -3
- package/dist/tools/datasets.d.ts.map +0 -1
- package/dist/tools/datasets.js +0 -57
- package/dist/tools/datasets.js.map +0 -1
- package/dist/tools/gpu.d.ts +0 -3
- package/dist/tools/gpu.d.ts.map +0 -1
- package/dist/tools/gpu.js +0 -63
- package/dist/tools/gpu.js.map +0 -1
- package/dist/tools/inference.d.ts +0 -3
- package/dist/tools/inference.d.ts.map +0 -1
- package/dist/tools/inference.js +0 -42
- package/dist/tools/inference.js.map +0 -1
- package/dist/tools/logs.d.ts +0 -3
- package/dist/tools/logs.d.ts.map +0 -1
- package/dist/tools/logs.js +0 -44
- package/dist/tools/logs.js.map +0 -1
|
@@ -2,66 +2,99 @@
|
|
|
2
2
|
|
|
3
3
|
## Overview
|
|
4
4
|
|
|
5
|
-
Basilica is a GPU
|
|
5
|
+
Basilica is a decentralized GPU cloud infrastructure platform built on the Bittensor network. It provides bare-metal GPU rentals with SSH access, Kubernetes container deployments, stateful container jobs, and a secure cloud GPU marketplace -- all accessible through a unified API at api.basilica.ai.
|
|
6
6
|
|
|
7
7
|
## Resource Model
|
|
8
8
|
|
|
9
|
-
###
|
|
10
|
-
-
|
|
11
|
-
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
-
|
|
20
|
-
-
|
|
21
|
-
-
|
|
22
|
-
|
|
23
|
-
### Jobs
|
|
24
|
-
-
|
|
25
|
-
-
|
|
26
|
-
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
-
|
|
9
|
+
### Rentals (Bare Metal GPU Servers)
|
|
10
|
+
- Rent GPU servers directly from miners on the Bittensor network
|
|
11
|
+
- Full SSH access to bare-metal hardware
|
|
12
|
+
- Supports: A100, H100, H200, L40S, and other GPU categories
|
|
13
|
+
- Pay per hour with configurable max rate in cents
|
|
14
|
+
- Lifecycle: starting -> running -> stopped
|
|
15
|
+
|
|
16
|
+
### Deployments (Kubernetes Containers)
|
|
17
|
+
- Deploy Docker containers on Basilica's managed Kubernetes cluster
|
|
18
|
+
- Auto-scaled with configurable replica count
|
|
19
|
+
- Built-in load balancing, health checks, and public URL assignment
|
|
20
|
+
- GPU acceleration optional (specify gpuCount and gpuModels)
|
|
21
|
+
- Lifecycle: deploying -> running -> stopped
|
|
22
|
+
|
|
23
|
+
### Jobs (Stateful Container Workloads)
|
|
24
|
+
- Run one-off or long-running container jobs
|
|
25
|
+
- Configurable CPU, memory, and GPU resources
|
|
26
|
+
- Time-to-live (TTL) for automatic cleanup
|
|
27
|
+
- Can be suspended and resumed
|
|
28
|
+
- Lifecycle: pending -> running -> completed/failed
|
|
29
|
+
|
|
30
|
+
### Secure Cloud GPU Marketplace
|
|
31
|
+
- Browse available GPU offerings from vetted providers
|
|
32
|
+
- Compare pricing by GPU type, interconnect, region
|
|
33
|
+
- Rent managed GPU instances (not bare-metal) with SSH
|
|
34
|
+
- Supports both on-demand and spot instances
|
|
35
|
+
|
|
36
|
+
### Volumes
|
|
37
|
+
- Persistent storage that can be attached to rentals
|
|
38
|
+
- Managed across providers and regions
|
|
39
|
+
|
|
40
|
+
### Billing
|
|
41
|
+
- Account balance tracking
|
|
42
|
+
- Usage history per rental
|
|
43
|
+
- Deposit account management (Bittensor TAO deposits)
|
|
42
44
|
|
|
43
45
|
## Authentication
|
|
44
46
|
|
|
45
|
-
Basilica
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
47
|
+
Basilica uses API key authentication. Tokens are prefixed with `basilica_` and passed as Bearer tokens.
|
|
48
|
+
|
|
49
|
+
## Available Tools
|
|
50
|
+
|
|
51
|
+
### Rental Management
|
|
52
|
+
- `basilica_start_rental` -- Start a bare-metal GPU rental
|
|
53
|
+
- `basilica_get_rental` -- Get rental status and SSH credentials
|
|
54
|
+
- `basilica_stop_rental` -- Stop a running rental
|
|
55
|
+
- `basilica_list_rentals` -- List active rentals
|
|
56
|
+
- `basilica_restart_rental` -- Restart a rental container
|
|
57
|
+
- `basilica_rental_history` -- View historical rental records
|
|
58
|
+
|
|
59
|
+
### Deployment Management
|
|
60
|
+
- `basilica_create_deployment` -- Create a container deployment
|
|
61
|
+
- `basilica_get_deployment` -- Get deployment status
|
|
62
|
+
- `basilica_list_deployments` -- List all deployments
|
|
63
|
+
- `basilica_delete_deployment` -- Delete a deployment
|
|
64
|
+
- `basilica_restart_deployment` -- Restart a deployment
|
|
65
|
+
- `basilica_scale_deployment` -- Scale deployment replicas
|
|
66
|
+
- `basilica_deployment_logs` -- Get deployment logs
|
|
67
|
+
|
|
68
|
+
### Job Management
|
|
69
|
+
- `basilica_create_job` -- Create a container job
|
|
70
|
+
- `basilica_job_status` -- Get job status
|
|
71
|
+
- `basilica_delete_job` -- Delete a job
|
|
72
|
+
- `basilica_job_logs` -- Get job logs
|
|
73
|
+
- `basilica_suspend_job` -- Suspend a running job
|
|
74
|
+
|
|
75
|
+
### GPU Marketplace
|
|
76
|
+
- `basilica_list_gpu_prices` -- Browse available GPU offerings and pricing
|
|
77
|
+
- `basilica_list_gpu_rentals` -- List secure cloud GPU rentals
|
|
78
|
+
|
|
79
|
+
### Billing
|
|
80
|
+
- `basilica_get_balance` -- Get current account balance
|
|
81
|
+
- `basilica_usage_history` -- View usage and billing history
|
|
51
82
|
|
|
52
83
|
## Common Workflows
|
|
53
84
|
|
|
54
|
-
###
|
|
55
|
-
1.
|
|
56
|
-
2.
|
|
57
|
-
3.
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
85
|
+
### Rent a GPU Server
|
|
86
|
+
1. Check pricing: `basilica_list_gpu_prices`
|
|
87
|
+
2. Start rental: `basilica_start_rental` with gpu_category, gpu_count, container_image, ssh_public_key
|
|
88
|
+
3. Monitor: `basilica_get_rental` to get SSH credentials once running
|
|
89
|
+
4. Stop when done: `basilica_stop_rental`
|
|
90
|
+
|
|
91
|
+
### Deploy a Container Service
|
|
92
|
+
1. Create: `basilica_create_deployment` with instanceName, image, port
|
|
93
|
+
2. Check status: `basilica_get_deployment`
|
|
94
|
+
3. Scale if needed: `basilica_scale_deployment`
|
|
95
|
+
4. View logs: `basilica_deployment_logs`
|
|
96
|
+
|
|
97
|
+
### Run a Batch Job
|
|
98
|
+
1. Create: `basilica_create_job` with image, command, resources, ttl_seconds
|
|
99
|
+
2. Monitor: `basilica_job_status`
|
|
100
|
+
3. Get output: `basilica_job_logs`
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"model-routing.d.ts","sourceRoot":"","sources":["../../src/hooks/model-routing.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAyC,MAAM,uBAAuB,CAAC;AAEtG,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,iBAAiB,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CASlG"}
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
export function registerModelRouting(api, config) {
|
|
2
|
-
const routing = config.routing;
|
|
3
|
-
if (!routing?.preferBasilicaModels)
|
|
4
|
-
return;
|
|
5
|
-
api.on("before_model_resolve", (event) => {
|
|
6
|
-
if (event.requestedModel)
|
|
7
|
-
return;
|
|
8
|
-
return { modelOverride: "basilica/default" };
|
|
9
|
-
}, { priority: 10 });
|
|
10
|
-
}
|
|
11
|
-
//# sourceMappingURL=model-routing.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"model-routing.js","sourceRoot":"","sources":["../../src/hooks/model-routing.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,oBAAoB,CAAC,GAAsB,EAAE,MAA+B;IAC1F,MAAM,OAAO,GAAG,MAAM,CAAC,OAAyD,CAAC;IAEjF,IAAI,CAAC,OAAO,EAAE,oBAAoB;QAAE,OAAO;IAE3C,GAAG,CAAC,EAAE,CAAC,sBAAsB,EAAE,CAAC,KAAwB,EAA6B,EAAE;QACrF,IAAI,KAAK,CAAC,cAAc;YAAE,OAAO;QACjC,OAAO,EAAE,aAAa,EAAE,kBAAkB,EAAE,CAAC;IAC/C,CAAC,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC;AACvB,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"tool-policy.d.ts","sourceRoot":"","sources":["../../src/hooks/tool-policy.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAiC,MAAM,uBAAuB,CAAC;AAS9F,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,iBAAiB,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAyBhG"}
|
|
@@ -1,44 +0,0 @@
|
|
|
1
|
-
const BASILICA_TOOL_PREFIX = "basilica_";
|
|
2
|
-
const DESTRUCTIVE_TOOLS = new Set([
|
|
3
|
-
"basilica_cancel_job",
|
|
4
|
-
"basilica_restart_deployment",
|
|
5
|
-
]);
|
|
6
|
-
export function registerToolPolicy(api, config) {
|
|
7
|
-
const toolGroups = config.toolGroups;
|
|
8
|
-
api.on("before_tool_call", (event) => {
|
|
9
|
-
if (!event.toolName.startsWith(BASILICA_TOOL_PREFIX))
|
|
10
|
-
return;
|
|
11
|
-
if (toolGroups && !isToolGroupEnabled(event.toolName, toolGroups)) {
|
|
12
|
-
return {
|
|
13
|
-
blocked: true,
|
|
14
|
-
reason: `Tool group for "${event.toolName}" is disabled in plugin configuration`,
|
|
15
|
-
};
|
|
16
|
-
}
|
|
17
|
-
if (DESTRUCTIVE_TOOLS.has(event.toolName)) {
|
|
18
|
-
const params = event.params;
|
|
19
|
-
if (!params.projectId && !config.defaultProject) {
|
|
20
|
-
return {
|
|
21
|
-
blocked: true,
|
|
22
|
-
reason: `Destructive operation "${event.toolName}" requires an explicit project scope`,
|
|
23
|
-
};
|
|
24
|
-
}
|
|
25
|
-
}
|
|
26
|
-
return undefined;
|
|
27
|
-
}, { priority: 5 });
|
|
28
|
-
}
|
|
29
|
-
function isToolGroupEnabled(toolName, groups) {
|
|
30
|
-
if (toolName.includes("inference"))
|
|
31
|
-
return groups.inference !== false;
|
|
32
|
-
if (toolName.includes("job"))
|
|
33
|
-
return groups.jobs !== false;
|
|
34
|
-
if (toolName.includes("gpu") || toolName.includes("compute") || toolName.includes("allocation"))
|
|
35
|
-
return groups.gpu !== false;
|
|
36
|
-
if (toolName.includes("deploy"))
|
|
37
|
-
return groups.deployments !== false;
|
|
38
|
-
if (toolName.includes("dataset"))
|
|
39
|
-
return groups.datasets !== false;
|
|
40
|
-
if (toolName.includes("log") || toolName.includes("error"))
|
|
41
|
-
return groups.logs !== false;
|
|
42
|
-
return true;
|
|
43
|
-
}
|
|
44
|
-
//# sourceMappingURL=tool-policy.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"tool-policy.js","sourceRoot":"","sources":["../../src/hooks/tool-policy.ts"],"names":[],"mappings":"AAEA,MAAM,oBAAoB,GAAG,WAAW,CAAC;AAEzC,MAAM,iBAAiB,GAAG,IAAI,GAAG,CAAC;IAChC,qBAAqB;IACrB,6BAA6B;CAC9B,CAAC,CAAC;AAEH,MAAM,UAAU,kBAAkB,CAAC,GAAsB,EAAE,MAA+B;IACxF,MAAM,UAAU,GAAG,MAAM,CAAC,UAAiD,CAAC;IAE5E,GAAG,CAAC,EAAE,CAAC,kBAAkB,EAAE,CAAC,KAAoB,EAAyB,EAAE;QACzE,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,UAAU,CAAC,oBAAoB,CAAC;YAAE,OAAO;QAE7D,IAAI,UAAU,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC,QAAQ,EAAE,UAAU,CAAC,EAAE,CAAC;YAClE,OAAO;gBACL,OAAO,EAAE,IAAI;gBACb,MAAM,EAAE,mBAAmB,KAAK,CAAC,QAAQ,uCAAuC;aACjF,CAAC;QACJ,CAAC;QAED,IAAI,iBAAiB,CAAC,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC1C,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC;YAC5B,IAAI,CAAC,MAAM,CAAC,SAAS,IAAI,CAAC,MAAM,CAAC,cAAc,EAAE,CAAC;gBAChD,OAAO;oBACL,OAAO,EAAE,IAAI;oBACb,MAAM,EAAE,0BAA0B,KAAK,CAAC,QAAQ,sCAAsC;iBACvF,CAAC;YACJ,CAAC;QACH,CAAC;QAED,OAAO,SAAS,CAAC;IACnB,CAAC,EAAE,EAAE,QAAQ,EAAE,CAAC,EAAE,CAAC,CAAC;AACtB,CAAC;AAED,SAAS,kBAAkB,CAAC,QAAgB,EAAE,MAA+B;IAC3E,IAAI,QAAQ,CAAC,QAAQ,CAAC,WAAW,CAAC;QAAE,OAAO,MAAM,CAAC,SAAS,KAAK,KAAK,CAAC;IACtE,IAAI,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC;QAAE,OAAO,MAAM,CAAC,IAAI,KAAK,KAAK,CAAC;IAC3D,IAAI,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,QAAQ,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,QAAQ,CAAC,QAAQ,CAAC,YAAY,CAAC;QAAE,OAAO,MAAM,CAAC,GAAG,KAAK,KAAK,CAAC;IAC7H,IAAI,QAAQ,CAAC,QAAQ,CAAC,QAAQ,CAAC;QAAE,OAAO,MAAM,CAAC,WAAW,KAAK,KAAK,CAAC;IACrE,IAAI,QAAQ,CAAC,QAAQ,CAAC,SAAS,CAAC;QAAE,OAAO,MAAM,CAAC,QAAQ,KAAK,KAAK,CAAC;IACnE,IAAI,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC;QAAE,OAAO,MAAM,CAAC,IAAI,KAAK,KAAK,CAAC;IACzF,OAAO,IAAI,CAAC;AACd,CAAC"}
|
package/dist/tools/datasets.d.ts
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"datasets.d.ts","sourceRoot":"","sources":["../../src/tools/datasets.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAI/D,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,iBAAiB,GAAG,IAAI,CAoDjE"}
|
package/dist/tools/datasets.js
DELETED
|
@@ -1,57 +0,0 @@
|
|
|
1
|
-
import { resolveBasilicaClient, resolveProjectId, formatError } from "./context.js";
|
|
2
|
-
import { datasetListSchema, datasetGetSchema, datasetArtifactsSchema } from "./schemas.js";
|
|
3
|
-
export function registerDatasetTools(api) {
|
|
4
|
-
api.registerTool((ctx) => ({
|
|
5
|
-
name: "basilica_list_datasets",
|
|
6
|
-
label: "List Basilica Datasets",
|
|
7
|
-
description: "List datasets available on Basilica",
|
|
8
|
-
parameters: datasetListSchema,
|
|
9
|
-
async execute(_toolCallId, params) {
|
|
10
|
-
try {
|
|
11
|
-
const client = resolveBasilicaClient(ctx);
|
|
12
|
-
const result = await client.datasets.list({
|
|
13
|
-
projectId: resolveProjectId(ctx, params),
|
|
14
|
-
page: params.page,
|
|
15
|
-
pageSize: params.pageSize,
|
|
16
|
-
});
|
|
17
|
-
return { content: JSON.stringify(result, null, 2) };
|
|
18
|
-
}
|
|
19
|
-
catch (err) {
|
|
20
|
-
return { content: formatError(err) };
|
|
21
|
-
}
|
|
22
|
-
},
|
|
23
|
-
}));
|
|
24
|
-
api.registerTool((ctx) => ({
|
|
25
|
-
name: "basilica_get_dataset",
|
|
26
|
-
label: "Get Basilica Dataset",
|
|
27
|
-
description: "Get metadata for a Basilica dataset",
|
|
28
|
-
parameters: datasetGetSchema,
|
|
29
|
-
async execute(_toolCallId, params) {
|
|
30
|
-
try {
|
|
31
|
-
const client = resolveBasilicaClient(ctx);
|
|
32
|
-
const result = await client.datasets.get(params.datasetId);
|
|
33
|
-
return { content: JSON.stringify(result, null, 2) };
|
|
34
|
-
}
|
|
35
|
-
catch (err) {
|
|
36
|
-
return { content: formatError(err) };
|
|
37
|
-
}
|
|
38
|
-
},
|
|
39
|
-
}));
|
|
40
|
-
api.registerTool((ctx) => ({
|
|
41
|
-
name: "basilica_dataset_artifacts",
|
|
42
|
-
label: "Basilica Dataset Artifacts",
|
|
43
|
-
description: "Locate artifacts for a Basilica dataset",
|
|
44
|
-
parameters: datasetArtifactsSchema,
|
|
45
|
-
async execute(_toolCallId, params) {
|
|
46
|
-
try {
|
|
47
|
-
const client = resolveBasilicaClient(ctx);
|
|
48
|
-
const result = await client.datasets.getArtifacts(params.datasetId);
|
|
49
|
-
return { content: JSON.stringify(result, null, 2) };
|
|
50
|
-
}
|
|
51
|
-
catch (err) {
|
|
52
|
-
return { content: formatError(err) };
|
|
53
|
-
}
|
|
54
|
-
},
|
|
55
|
-
}));
|
|
56
|
-
}
|
|
57
|
-
//# sourceMappingURL=datasets.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"datasets.js","sourceRoot":"","sources":["../../src/tools/datasets.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,qBAAqB,EAAE,gBAAgB,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AACpF,OAAO,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,sBAAsB,EAAE,MAAM,cAAc,CAAC;AAE3F,MAAM,UAAU,oBAAoB,CAAC,GAAsB;IACzD,GAAG,CAAC,YAAY,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;QACzB,IAAI,EAAE,wBAAwB;QAC9B,KAAK,EAAE,wBAAwB;QAC/B,WAAW,EAAE,qCAAqC;QAClD,UAAU,EAAE,iBAAiB;QAC7B,KAAK,CAAC,OAAO,CAAC,WAAW,EAAE,MAAM;YAC/B,IAAI,CAAC;gBACH,MAAM,MAAM,GAAG,qBAAqB,CAAC,GAAG,CAAC,CAAC;gBAC1C,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC;oBACxC,SAAS,EAAE,gBAAgB,CAAC,GAAG,EAAE,MAAM,CAAC;oBACxC,IAAI,EAAE,MAAM,CAAC,IAA0B;oBACvC,QAAQ,EAAE,MAAM,CAAC,QAA8B;iBAChD,CAAC,CAAC;gBACH,OAAO,EAAE,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC;YACtD,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,OAAO,EAAE,OAAO,EAAE,WAAW,CAAC,GAAG,CAAC,EAAE,CAAC;YACvC,CAAC;QACH,CAAC;KACF,CAAC,CAAC,CAAC;IAEJ,GAAG,CAAC,YAAY,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;QACzB,IAAI,EAAE,sBAAsB;QAC5B,KAAK,EAAE,sBAAsB;QAC7B,WAAW,EAAE,qCAAqC;QAClD,UAAU,EAAE,gBAAgB;QAC5B,KAAK,CAAC,OAAO,CAAC,WAAW,EAAE,MAAM;YAC/B,IAAI,CAAC;gBACH,MAAM,MAAM,GAAG,qBAAqB,CAAC,GAAG,CAAC,CAAC;gBAC1C,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,SAAmB,CAAC,CAAC;gBACrE,OAAO,EAAE,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC;YACtD,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,OAAO,EAAE,OAAO,EAAE,WAAW,CAAC,GAAG,CAAC,EAAE,CAAC;YACvC,CAAC;QACH,CAAC;KACF,CAAC,CAAC,CAAC;IAEJ,GAAG,CAAC,YAAY,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;QACzB,IAAI,EAAE,4BAA4B;QAClC,KAAK,EAAE,4BAA4B;QACnC,WAAW,EAAE,yCAAyC;QACtD,UAAU,EAAE,sBAAsB;QAClC,KAAK,CAAC,OAAO,CAAC,WAAW,EAAE,MAAM;YAC/B,IAAI,CAAC;gBACH,MAAM,MAAM,GAAG,qBAAqB,CAAC,GAAG,CAAC,CAAC;gBAC1C,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,QAAQ,CAAC,YAAY,CAAC,MAAM,CAAC,SAAmB,CAAC,CAAC;gBAC9E,OAAO,EAAE,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC;YACtD,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,OAAO,EAAE,OAAO,EAAE,WAAW,CAAC,GAAG,CAAC,EAAE,CAAC;YACvC,CAAC;QACH,CAAC;KACF,CAAC,CAAC,CAAC;AACN,CAAC"}
|
package/dist/tools/gpu.d.ts
DELETED
package/dist/tools/gpu.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"gpu.d.ts","sourceRoot":"","sources":["../../src/tools/gpu.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAK/D,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,iBAAiB,GAAG,IAAI,CA0D7D"}
|
package/dist/tools/gpu.js
DELETED
|
@@ -1,63 +0,0 @@
|
|
|
1
|
-
import { resolveBasilicaClient, resolveProjectId, formatError } from "./context.js";
|
|
2
|
-
import { gpuListSchema, gpuRequestSchema, gpuInspectSchema } from "./schemas.js";
|
|
3
|
-
export function registerGpuTools(api) {
|
|
4
|
-
api.registerTool((ctx) => ({
|
|
5
|
-
name: "basilica_list_gpu",
|
|
6
|
-
label: "List Basilica GPU Resources",
|
|
7
|
-
description: "List available GPU resources on Basilica",
|
|
8
|
-
parameters: gpuListSchema,
|
|
9
|
-
async execute(_toolCallId, params) {
|
|
10
|
-
try {
|
|
11
|
-
const client = resolveBasilicaClient(ctx);
|
|
12
|
-
const result = await client.gpu.listResources({
|
|
13
|
-
projectId: resolveProjectId(ctx, params),
|
|
14
|
-
page: params.page,
|
|
15
|
-
pageSize: params.pageSize,
|
|
16
|
-
});
|
|
17
|
-
return { content: JSON.stringify(result, null, 2) };
|
|
18
|
-
}
|
|
19
|
-
catch (err) {
|
|
20
|
-
return { content: formatError(err) };
|
|
21
|
-
}
|
|
22
|
-
},
|
|
23
|
-
}));
|
|
24
|
-
api.registerTool((ctx) => ({
|
|
25
|
-
name: "basilica_request_compute",
|
|
26
|
-
label: "Request Basilica Compute",
|
|
27
|
-
description: "Request GPU compute allocation on Basilica",
|
|
28
|
-
parameters: gpuRequestSchema,
|
|
29
|
-
async execute(_toolCallId, params) {
|
|
30
|
-
try {
|
|
31
|
-
const client = resolveBasilicaClient(ctx);
|
|
32
|
-
const result = await client.gpu.requestCompute({
|
|
33
|
-
gpuType: params.gpuType,
|
|
34
|
-
count: params.count,
|
|
35
|
-
region: params.region,
|
|
36
|
-
projectId: resolveProjectId(ctx, params),
|
|
37
|
-
durationHours: params.durationHours,
|
|
38
|
-
});
|
|
39
|
-
return { content: JSON.stringify(result, null, 2) };
|
|
40
|
-
}
|
|
41
|
-
catch (err) {
|
|
42
|
-
return { content: formatError(err) };
|
|
43
|
-
}
|
|
44
|
-
},
|
|
45
|
-
}));
|
|
46
|
-
api.registerTool((ctx) => ({
|
|
47
|
-
name: "basilica_inspect_allocation",
|
|
48
|
-
label: "Inspect Basilica Allocation",
|
|
49
|
-
description: "Inspect a GPU compute allocation on Basilica",
|
|
50
|
-
parameters: gpuInspectSchema,
|
|
51
|
-
async execute(_toolCallId, params) {
|
|
52
|
-
try {
|
|
53
|
-
const client = resolveBasilicaClient(ctx);
|
|
54
|
-
const result = await client.gpu.getAllocation(params.allocationId);
|
|
55
|
-
return { content: JSON.stringify(result, null, 2) };
|
|
56
|
-
}
|
|
57
|
-
catch (err) {
|
|
58
|
-
return { content: formatError(err) };
|
|
59
|
-
}
|
|
60
|
-
},
|
|
61
|
-
}));
|
|
62
|
-
}
|
|
63
|
-
//# sourceMappingURL=gpu.js.map
|
package/dist/tools/gpu.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"gpu.js","sourceRoot":"","sources":["../../src/tools/gpu.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"inference.d.ts","sourceRoot":"","sources":["../../src/tools/inference.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAI/D,wBAAgB,sBAAsB,CAAC,GAAG,EAAE,iBAAiB,GAAG,IAAI,CAqCnE"}
|
package/dist/tools/inference.js
DELETED
|
@@ -1,42 +0,0 @@
|
|
|
1
|
-
import { resolveBasilicaClient, resolveProjectId, formatError } from "./context.js";
|
|
2
|
-
import { inferenceStartSchema, inferenceQuerySchema } from "./schemas.js";
|
|
3
|
-
export function registerInferenceTools(api) {
|
|
4
|
-
api.registerTool((ctx) => ({
|
|
5
|
-
name: "basilica_start_inference",
|
|
6
|
-
label: "Start Basilica Inference",
|
|
7
|
-
description: "Start an inference run on a Basilica model",
|
|
8
|
-
parameters: inferenceStartSchema,
|
|
9
|
-
async execute(_toolCallId, params) {
|
|
10
|
-
try {
|
|
11
|
-
const client = resolveBasilicaClient(ctx);
|
|
12
|
-
const result = await client.inference.start({
|
|
13
|
-
modelId: params.modelId,
|
|
14
|
-
input: params.input,
|
|
15
|
-
parameters: params.parameters,
|
|
16
|
-
projectId: resolveProjectId(ctx, params),
|
|
17
|
-
});
|
|
18
|
-
return { content: JSON.stringify(result, null, 2) };
|
|
19
|
-
}
|
|
20
|
-
catch (err) {
|
|
21
|
-
return { content: formatError(err) };
|
|
22
|
-
}
|
|
23
|
-
},
|
|
24
|
-
}));
|
|
25
|
-
api.registerTool((ctx) => ({
|
|
26
|
-
name: "basilica_query_inference",
|
|
27
|
-
label: "Query Basilica Inference",
|
|
28
|
-
description: "Query the status and result of a Basilica inference run",
|
|
29
|
-
parameters: inferenceQuerySchema,
|
|
30
|
-
async execute(_toolCallId, params) {
|
|
31
|
-
try {
|
|
32
|
-
const client = resolveBasilicaClient(ctx);
|
|
33
|
-
const result = await client.inference.get(params.inferenceId);
|
|
34
|
-
return { content: JSON.stringify(result, null, 2) };
|
|
35
|
-
}
|
|
36
|
-
catch (err) {
|
|
37
|
-
return { content: formatError(err) };
|
|
38
|
-
}
|
|
39
|
-
},
|
|
40
|
-
}));
|
|
41
|
-
}
|
|
42
|
-
//# sourceMappingURL=inference.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"inference.js","sourceRoot":"","sources":["../../src/tools/inference.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,qBAAqB,EAAE,gBAAgB,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AACpF,OAAO,EAAE,oBAAoB,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAC;AAE1E,MAAM,UAAU,sBAAsB,CAAC,GAAsB;IAC3D,GAAG,CAAC,YAAY,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;QACzB,IAAI,EAAE,0BAA0B;QAChC,KAAK,EAAE,0BAA0B;QACjC,WAAW,EAAE,4CAA4C;QACzD,UAAU,EAAE,oBAAoB;QAChC,KAAK,CAAC,OAAO,CAAC,WAAW,EAAE,MAAM;YAC/B,IAAI,CAAC;gBACH,MAAM,MAAM,GAAG,qBAAqB,CAAC,GAAG,CAAC,CAAC;gBAC1C,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC;oBAC1C,OAAO,EAAE,MAAM,CAAC,OAAiB;oBACjC,KAAK,EAAE,MAAM,CAAC,KAAe;oBAC7B,UAAU,EAAE,MAAM,CAAC,UAAqC;oBACxD,SAAS,EAAE,gBAAgB,CAAC,GAAG,EAAE,MAAM,CAAC;iBACzC,CAAC,CAAC;gBACH,OAAO,EAAE,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC;YACtD,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,OAAO,EAAE,OAAO,EAAE,WAAW,CAAC,GAAG,CAAC,EAAE,CAAC;YACvC,CAAC;QACH,CAAC;KACF,CAAC,CAAC,CAAC;IAEJ,GAAG,CAAC,YAAY,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;QACzB,IAAI,EAAE,0BAA0B;QAChC,KAAK,EAAE,0BAA0B;QACjC,WAAW,EAAE,yDAAyD;QACtE,UAAU,EAAE,oBAAoB;QAChC,KAAK,CAAC,OAAO,CAAC,WAAW,EAAE,MAAM;YAC/B,IAAI,CAAC;gBACH,MAAM,MAAM,GAAG,qBAAqB,CAAC,GAAG,CAAC,CAAC;gBAC1C,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,WAAqB,CAAC,CAAC;gBACxE,OAAO,EAAE,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC;YACtD,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,OAAO,EAAE,OAAO,EAAE,WAAW,CAAC,GAAG,CAAC,EAAE,CAAC;YACvC,CAAC;QACH,CAAC;KACF,CAAC,CAAC,CAAC;AACN,CAAC"}
|
package/dist/tools/logs.d.ts
DELETED
package/dist/tools/logs.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"logs.d.ts","sourceRoot":"","sources":["../../src/tools/logs.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAK/D,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,iBAAiB,GAAG,IAAI,CA0C7D"}
|
package/dist/tools/logs.js
DELETED
|
@@ -1,44 +0,0 @@
|
|
|
1
|
-
import { resolveBasilicaClient, resolveProjectId, formatError } from "./context.js";
|
|
2
|
-
import { logsQuerySchema, logsRecentErrorsSchema } from "./schemas.js";
|
|
3
|
-
export function registerLogTools(api) {
|
|
4
|
-
api.registerTool((ctx) => ({
|
|
5
|
-
name: "basilica_query_logs",
|
|
6
|
-
label: "Query Basilica Logs",
|
|
7
|
-
description: "Query logs from Basilica platform",
|
|
8
|
-
parameters: logsQuerySchema,
|
|
9
|
-
async execute(_toolCallId, params) {
|
|
10
|
-
try {
|
|
11
|
-
const client = resolveBasilicaClient(ctx);
|
|
12
|
-
const result = await client.logs.query({
|
|
13
|
-
source: params.source,
|
|
14
|
-
level: params.level,
|
|
15
|
-
since: params.since,
|
|
16
|
-
until: params.until,
|
|
17
|
-
limit: params.limit,
|
|
18
|
-
projectId: resolveProjectId(ctx, params),
|
|
19
|
-
});
|
|
20
|
-
return { content: JSON.stringify(result, null, 2) };
|
|
21
|
-
}
|
|
22
|
-
catch (err) {
|
|
23
|
-
return { content: formatError(err) };
|
|
24
|
-
}
|
|
25
|
-
},
|
|
26
|
-
}));
|
|
27
|
-
api.registerTool((ctx) => ({
|
|
28
|
-
name: "basilica_recent_errors",
|
|
29
|
-
label: "Basilica Recent Errors",
|
|
30
|
-
description: "Get recent error logs from Basilica",
|
|
31
|
-
parameters: logsRecentErrorsSchema,
|
|
32
|
-
async execute(_toolCallId, params) {
|
|
33
|
-
try {
|
|
34
|
-
const client = resolveBasilicaClient(ctx);
|
|
35
|
-
const result = await client.logs.getRecentErrors(resolveProjectId(ctx, params), params.limit);
|
|
36
|
-
return { content: JSON.stringify(result, null, 2) };
|
|
37
|
-
}
|
|
38
|
-
catch (err) {
|
|
39
|
-
return { content: formatError(err) };
|
|
40
|
-
}
|
|
41
|
-
},
|
|
42
|
-
}));
|
|
43
|
-
}
|
|
44
|
-
//# sourceMappingURL=logs.js.map
|
package/dist/tools/logs.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"logs.js","sourceRoot":"","sources":["../../src/tools/logs.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,qBAAqB,EAAE,gBAAgB,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AACpF,OAAO,EAAE,eAAe,EAAE,sBAAsB,EAAE,MAAM,cAAc,CAAC;AAEvE,MAAM,UAAU,gBAAgB,CAAC,GAAsB;IACrD,GAAG,CAAC,YAAY,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;QACzB,IAAI,EAAE,qBAAqB;QAC3B,KAAK,EAAE,qBAAqB;QAC5B,WAAW,EAAE,mCAAmC;QAChD,UAAU,EAAE,eAAe;QAC3B,KAAK,CAAC,OAAO,CAAC,WAAW,EAAE,MAAM;YAC/B,IAAI,CAAC;gBACH,MAAM,MAAM,GAAG,qBAAqB,CAAC,GAAG,CAAC,CAAC;gBAC1C,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC;oBACrC,MAAM,EAAE,MAAM,CAAC,MAA4B;oBAC3C,KAAK,EAAE,MAAM,CAAC,KAA6B;oBAC3C,KAAK,EAAE,MAAM,CAAC,KAA2B;oBACzC,KAAK,EAAE,MAAM,CAAC,KAA2B;oBACzC,KAAK,EAAE,MAAM,CAAC,KAA2B;oBACzC,SAAS,EAAE,gBAAgB,CAAC,GAAG,EAAE,MAAM,CAAC;iBACzC,CAAC,CAAC;gBACH,OAAO,EAAE,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC;YACtD,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,OAAO,EAAE,OAAO,EAAE,WAAW,CAAC,GAAG,CAAC,EAAE,CAAC;YACvC,CAAC;QACH,CAAC;KACF,CAAC,CAAC,CAAC;IAEJ,GAAG,CAAC,YAAY,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;QACzB,IAAI,EAAE,wBAAwB;QAC9B,KAAK,EAAE,wBAAwB;QAC/B,WAAW,EAAE,qCAAqC;QAClD,UAAU,EAAE,sBAAsB;QAClC,KAAK,CAAC,OAAO,CAAC,WAAW,EAAE,MAAM;YAC/B,IAAI,CAAC;gBACH,MAAM,MAAM,GAAG,qBAAqB,CAAC,GAAG,CAAC,CAAC;gBAC1C,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,eAAe,CAC9C,gBAAgB,CAAC,GAAG,EAAE,MAAM,CAAC,EAC7B,MAAM,CAAC,KAA2B,CACnC,CAAC;gBACF,OAAO,EAAE,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC;YACtD,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,OAAO,EAAE,OAAO,EAAE,WAAW,CAAC,GAAG,CAAC,EAAE,CAAC;YACvC,CAAC;QACH,CAAC;KACF,CAAC,CAAC,CAAC;AACN,CAAC"}
|