@basilica/openclaw 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 (80) hide show
  1. package/dist/gateway/index.d.ts +7 -0
  2. package/dist/gateway/index.d.ts.map +1 -0
  3. package/dist/gateway/index.js +21 -0
  4. package/dist/gateway/index.js.map +1 -0
  5. package/dist/gateway/status.d.ts +12 -0
  6. package/dist/gateway/status.d.ts.map +1 -0
  7. package/dist/gateway/status.js +33 -0
  8. package/dist/gateway/status.js.map +1 -0
  9. package/dist/gateway/sync-service.d.ts +17 -0
  10. package/dist/gateway/sync-service.d.ts.map +1 -0
  11. package/dist/gateway/sync-service.js +46 -0
  12. package/dist/gateway/sync-service.js.map +1 -0
  13. package/dist/gateway/webhook.d.ts +12 -0
  14. package/dist/gateway/webhook.d.ts.map +1 -0
  15. package/dist/gateway/webhook.js +23 -0
  16. package/dist/gateway/webhook.js.map +1 -0
  17. package/dist/hooks/audit.d.ts +17 -0
  18. package/dist/hooks/audit.d.ts.map +1 -0
  19. package/dist/hooks/audit.js +28 -0
  20. package/dist/hooks/audit.js.map +1 -0
  21. package/dist/hooks/index.d.ts +5 -0
  22. package/dist/hooks/index.d.ts.map +1 -0
  23. package/dist/hooks/index.js +14 -0
  24. package/dist/hooks/index.js.map +1 -0
  25. package/dist/hooks/model-routing.d.ts +3 -0
  26. package/dist/hooks/model-routing.d.ts.map +1 -0
  27. package/dist/hooks/model-routing.js +11 -0
  28. package/dist/hooks/model-routing.js.map +1 -0
  29. package/dist/hooks/prompt-context.d.ts +3 -0
  30. package/dist/hooks/prompt-context.d.ts.map +1 -0
  31. package/dist/hooks/prompt-context.js +11 -0
  32. package/dist/hooks/prompt-context.js.map +1 -0
  33. package/dist/hooks/tool-policy.d.ts +3 -0
  34. package/dist/hooks/tool-policy.d.ts.map +1 -0
  35. package/dist/hooks/tool-policy.js +44 -0
  36. package/dist/hooks/tool-policy.js.map +1 -0
  37. package/dist/index.d.ts +5 -0
  38. package/dist/index.d.ts.map +1 -0
  39. package/dist/index.js +11 -0
  40. package/dist/index.js.map +1 -0
  41. package/dist/tools/context.d.ts +6 -0
  42. package/dist/tools/context.d.ts.map +1 -0
  43. package/dist/tools/context.js +28 -0
  44. package/dist/tools/context.js.map +1 -0
  45. package/dist/tools/datasets.d.ts +3 -0
  46. package/dist/tools/datasets.d.ts.map +1 -0
  47. package/dist/tools/datasets.js +57 -0
  48. package/dist/tools/datasets.js.map +1 -0
  49. package/dist/tools/deployments.d.ts +3 -0
  50. package/dist/tools/deployments.d.ts.map +1 -0
  51. package/dist/tools/deployments.js +58 -0
  52. package/dist/tools/deployments.js.map +1 -0
  53. package/dist/tools/gpu.d.ts +3 -0
  54. package/dist/tools/gpu.d.ts.map +1 -0
  55. package/dist/tools/gpu.js +63 -0
  56. package/dist/tools/gpu.js.map +1 -0
  57. package/dist/tools/index.d.ts +3 -0
  58. package/dist/tools/index.d.ts.map +1 -0
  59. package/dist/tools/index.js +15 -0
  60. package/dist/tools/index.js.map +1 -0
  61. package/dist/tools/inference.d.ts +3 -0
  62. package/dist/tools/inference.d.ts.map +1 -0
  63. package/dist/tools/inference.js +42 -0
  64. package/dist/tools/inference.js.map +1 -0
  65. package/dist/tools/jobs.d.ts +3 -0
  66. package/dist/tools/jobs.d.ts.map +1 -0
  67. package/dist/tools/jobs.js +58 -0
  68. package/dist/tools/jobs.js.map +1 -0
  69. package/dist/tools/logs.d.ts +3 -0
  70. package/dist/tools/logs.d.ts.map +1 -0
  71. package/dist/tools/logs.js +44 -0
  72. package/dist/tools/logs.js.map +1 -0
  73. package/dist/tools/schemas.d.ts +18 -0
  74. package/dist/tools/schemas.d.ts.map +1 -0
  75. package/dist/tools/schemas.js +135 -0
  76. package/dist/tools/schemas.js.map +1 -0
  77. package/openclaw.plugin.json +38 -0
  78. package/package.json +41 -0
  79. package/skills/basilica-operator/index.md +56 -0
  80. package/skills/basilica-platform/index.md +67 -0
@@ -0,0 +1,7 @@
1
+ import type { OpenClawPluginApi } from "openclaw-plugin-types";
2
+ export declare function registerBasilicaGateway(api: OpenClawPluginApi): void;
3
+ export { BasilicaSyncService } from "./sync-service.js";
4
+ export { addWebhookListener, removeWebhookListener } from "./webhook.js";
5
+ export type { WebhookPayload, WebhookEventType, WebhookListener } from "./webhook.js";
6
+ export type { PlatformStatus } from "./status.js";
7
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/gateway/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAK/D,wBAAgB,uBAAuB,CAAC,GAAG,EAAE,iBAAiB,GAAG,IAAI,CAiBpE;AAED,OAAO,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AACxD,OAAO,EAAE,kBAAkB,EAAE,qBAAqB,EAAE,MAAM,cAAc,CAAC;AACzE,YAAY,EAAE,cAAc,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AACtF,YAAY,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC"}
@@ -0,0 +1,21 @@
1
+ import { handleStatus } from "./status.js";
2
+ import { handleWebhook } from "./webhook.js";
3
+ import { BasilicaSyncService } from "./sync-service.js";
4
+ export function registerBasilicaGateway(api) {
5
+ api.registerGatewayMethod("basilica.status", handleStatus);
6
+ api.registerHttpRoute({
7
+ path: "/basilica/webhook",
8
+ method: "POST",
9
+ auth: "plugin",
10
+ handler: handleWebhook,
11
+ });
12
+ const syncService = new BasilicaSyncService();
13
+ api.registerService({
14
+ id: "basilica-sync",
15
+ start: () => syncService.start(),
16
+ stop: () => syncService.stop(),
17
+ });
18
+ }
19
+ export { BasilicaSyncService } from "./sync-service.js";
20
+ export { addWebhookListener, removeWebhookListener } from "./webhook.js";
21
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/gateway/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAC7C,OAAO,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAExD,MAAM,UAAU,uBAAuB,CAAC,GAAsB;IAC5D,GAAG,CAAC,qBAAqB,CAAC,iBAAiB,EAAE,YAAY,CAAC,CAAC;IAE3D,GAAG,CAAC,iBAAiB,CAAC;QACpB,IAAI,EAAE,mBAAmB;QACzB,MAAM,EAAE,MAAM;QACd,IAAI,EAAE,QAAQ;QACd,OAAO,EAAE,aAAa;KACvB,CAAC,CAAC;IAEH,MAAM,WAAW,GAAG,IAAI,mBAAmB,EAAE,CAAC;IAE9C,GAAG,CAAC,eAAe,CAAC;QAClB,EAAE,EAAE,eAAe;QACnB,KAAK,EAAE,GAAG,EAAE,CAAC,WAAW,CAAC,KAAK,EAAE;QAChC,IAAI,EAAE,GAAG,EAAE,CAAC,WAAW,CAAC,IAAI,EAAE;KAC/B,CAAC,CAAC;AACL,CAAC;AAED,OAAO,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AACxD,OAAO,EAAE,kBAAkB,EAAE,qBAAqB,EAAE,MAAM,cAAc,CAAC"}
@@ -0,0 +1,12 @@
1
+ import type { BasilicaCredential } from "@basilica/openclaw-sdk";
2
+ export interface StatusParams {
3
+ baseUrl?: string;
4
+ credential?: BasilicaCredential;
5
+ }
6
+ export interface PlatformStatus {
7
+ healthy: boolean;
8
+ timestamp: string;
9
+ services: Record<string, "up" | "degraded" | "down">;
10
+ }
11
+ export declare function handleStatus(params: Record<string, unknown>): Promise<PlatformStatus>;
12
+ //# sourceMappingURL=status.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"status.d.ts","sourceRoot":"","sources":["../../src/gateway/status.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAwB,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAEvF,MAAM,WAAW,YAAY;IAC3B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,kBAAkB,CAAC;CACjC;AAED,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,OAAO,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,IAAI,GAAG,UAAU,GAAG,MAAM,CAAC,CAAC;CACtD;AAED,wBAAsB,YAAY,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,cAAc,CAAC,CAgC3F"}
@@ -0,0 +1,33 @@
1
+ import { BasilicaClient, BasilicaError } from "@basilica/openclaw-sdk";
2
+ export async function handleStatus(params) {
3
+ const baseUrl = params.baseUrl ?? "https://api.basilica.cloud";
4
+ const config = {
5
+ baseUrl,
6
+ credential: params.credential ?? { type: "token", token: "" },
7
+ };
8
+ try {
9
+ const client = new BasilicaClient(config);
10
+ await client.request("GET", "/health");
11
+ return {
12
+ healthy: true,
13
+ timestamp: new Date().toISOString(),
14
+ services: {
15
+ api: "up",
16
+ inference: "up",
17
+ compute: "up",
18
+ },
19
+ };
20
+ }
21
+ catch (err) {
22
+ return {
23
+ healthy: false,
24
+ timestamp: new Date().toISOString(),
25
+ services: {
26
+ api: err instanceof BasilicaError && err.code === "NETWORK_ERROR" ? "down" : "degraded",
27
+ inference: "degraded",
28
+ compute: "degraded",
29
+ },
30
+ };
31
+ }
32
+ }
33
+ //# sourceMappingURL=status.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"status.js","sourceRoot":"","sources":["../../src/gateway/status.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAcvE,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,MAA+B;IAChE,MAAM,OAAO,GAAI,MAAM,CAAC,OAAkB,IAAI,4BAA4B,CAAC;IAE3E,MAAM,MAAM,GAAyB;QACnC,OAAO;QACP,UAAU,EAAE,MAAM,CAAC,UAAgC,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE,EAAE;KACpF,CAAC;IAEF,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,IAAI,cAAc,CAAC,MAAM,CAAC,CAAC;QAC1C,MAAM,MAAM,CAAC,OAAO,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;QAEvC,OAAO;YACL,OAAO,EAAE,IAAI;YACb,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;YACnC,QAAQ,EAAE;gBACR,GAAG,EAAE,IAAI;gBACT,SAAS,EAAE,IAAI;gBACf,OAAO,EAAE,IAAI;aACd;SACF,CAAC;IACJ,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO;YACL,OAAO,EAAE,KAAK;YACd,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;YACnC,QAAQ,EAAE;gBACR,GAAG,EAAE,GAAG,YAAY,aAAa,IAAI,GAAG,CAAC,IAAI,KAAK,eAAe,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,UAAU;gBACvF,SAAS,EAAE,UAAU;gBACrB,OAAO,EAAE,UAAU;aACpB;SACF,CAAC;IACJ,CAAC;AACH,CAAC"}
@@ -0,0 +1,17 @@
1
+ export interface SyncState {
2
+ running: boolean;
3
+ lastSyncAt: string | null;
4
+ syncCount: number;
5
+ }
6
+ export declare class BasilicaSyncService {
7
+ private intervalId;
8
+ private state;
9
+ private readonly intervalMs;
10
+ private readonly onSync;
11
+ constructor(intervalMs?: number, onSync?: () => Promise<void>);
12
+ start(): Promise<void>;
13
+ stop(): Promise<void>;
14
+ getState(): SyncState;
15
+ private tick;
16
+ }
17
+ //# sourceMappingURL=sync-service.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sync-service.d.ts","sourceRoot":"","sources":["../../src/gateway/sync-service.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,SAAS;IACxB,OAAO,EAAE,OAAO,CAAC;IACjB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,qBAAa,mBAAmB;IAC9B,OAAO,CAAC,UAAU,CAA+C;IACjE,OAAO,CAAC,KAAK,CAIX;IACF,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAS;IACpC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAsB;gBAEjC,UAAU,GAAE,MAAe,EAAE,MAAM,CAAC,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC;IAK/D,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAWtB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAW3B,QAAQ,IAAI,SAAS;YAIP,IAAI;CASnB"}
@@ -0,0 +1,46 @@
1
+ export class BasilicaSyncService {
2
+ intervalId = null;
3
+ state = {
4
+ running: false,
5
+ lastSyncAt: null,
6
+ syncCount: 0,
7
+ };
8
+ intervalMs;
9
+ onSync;
10
+ constructor(intervalMs = 60_000, onSync) {
11
+ this.intervalMs = intervalMs;
12
+ this.onSync = onSync ?? (async () => { });
13
+ }
14
+ async start() {
15
+ if (this.state.running)
16
+ return;
17
+ this.state.running = true;
18
+ this.intervalId = setInterval(() => {
19
+ void this.tick();
20
+ }, this.intervalMs);
21
+ await this.tick();
22
+ }
23
+ async stop() {
24
+ if (!this.state.running)
25
+ return;
26
+ if (this.intervalId) {
27
+ clearInterval(this.intervalId);
28
+ this.intervalId = null;
29
+ }
30
+ this.state.running = false;
31
+ }
32
+ getState() {
33
+ return { ...this.state };
34
+ }
35
+ async tick() {
36
+ try {
37
+ await this.onSync();
38
+ this.state.lastSyncAt = new Date().toISOString();
39
+ this.state.syncCount++;
40
+ }
41
+ catch {
42
+ // sync errors are non-fatal, next interval retries
43
+ }
44
+ }
45
+ }
46
+ //# sourceMappingURL=sync-service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sync-service.js","sourceRoot":"","sources":["../../src/gateway/sync-service.ts"],"names":[],"mappings":"AAMA,MAAM,OAAO,mBAAmB;IACtB,UAAU,GAA0C,IAAI,CAAC;IACzD,KAAK,GAAc;QACzB,OAAO,EAAE,KAAK;QACd,UAAU,EAAE,IAAI;QAChB,SAAS,EAAE,CAAC;KACb,CAAC;IACe,UAAU,CAAS;IACnB,MAAM,CAAsB;IAE7C,YAAY,aAAqB,MAAM,EAAE,MAA4B;QACnE,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;QAC7B,IAAI,CAAC,MAAM,GAAG,MAAM,IAAI,CAAC,KAAK,IAAI,EAAE,GAAE,CAAC,CAAC,CAAC;IAC3C,CAAC;IAED,KAAK,CAAC,KAAK;QACT,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO;YAAE,OAAO;QAE/B,IAAI,CAAC,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC;QAC1B,IAAI,CAAC,UAAU,GAAG,WAAW,CAAC,GAAG,EAAE;YACjC,KAAK,IAAI,CAAC,IAAI,EAAE,CAAC;QACnB,CAAC,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;QAEpB,MAAM,IAAI,CAAC,IAAI,EAAE,CAAC;IACpB,CAAC;IAED,KAAK,CAAC,IAAI;QACR,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO;YAAE,OAAO;QAEhC,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;YACpB,aAAa,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;YAC/B,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;QACzB,CAAC;QAED,IAAI,CAAC,KAAK,CAAC,OAAO,GAAG,KAAK,CAAC;IAC7B,CAAC;IAED,QAAQ;QACN,OAAO,EAAE,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC;IAC3B,CAAC;IAEO,KAAK,CAAC,IAAI;QAChB,IAAI,CAAC;YACH,MAAM,IAAI,CAAC,MAAM,EAAE,CAAC;YACpB,IAAI,CAAC,KAAK,CAAC,UAAU,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;YACjD,IAAI,CAAC,KAAK,CAAC,SAAS,EAAE,CAAC;QACzB,CAAC;QAAC,MAAM,CAAC;YACP,mDAAmD;QACrD,CAAC;IACH,CAAC;CACF"}
@@ -0,0 +1,12 @@
1
+ import type { HttpRequest, HttpResponse } from "openclaw-plugin-types";
2
+ export type WebhookEventType = "job.completed" | "job.failed" | "deployment.status_changed" | "alert.triggered";
3
+ export interface WebhookPayload {
4
+ eventType: WebhookEventType;
5
+ timestamp: string;
6
+ data: Record<string, unknown>;
7
+ }
8
+ export type WebhookListener = (payload: WebhookPayload) => void;
9
+ export declare function addWebhookListener(listener: WebhookListener): void;
10
+ export declare function removeWebhookListener(listener: WebhookListener): void;
11
+ export declare function handleWebhook(req: HttpRequest): Promise<HttpResponse>;
12
+ //# sourceMappingURL=webhook.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"webhook.d.ts","sourceRoot":"","sources":["../../src/gateway/webhook.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAEvE,MAAM,MAAM,gBAAgB,GAAG,eAAe,GAAG,YAAY,GAAG,2BAA2B,GAAG,iBAAiB,CAAC;AAEhH,MAAM,WAAW,cAAc;IAC7B,SAAS,EAAE,gBAAgB,CAAC;IAC5B,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAC/B;AAED,MAAM,MAAM,eAAe,GAAG,CAAC,OAAO,EAAE,cAAc,KAAK,IAAI,CAAC;AAIhE,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,eAAe,GAAG,IAAI,CAElE;AAED,wBAAgB,qBAAqB,CAAC,QAAQ,EAAE,eAAe,GAAG,IAAI,CAGrE;AAED,wBAAsB,aAAa,CAAC,GAAG,EAAE,WAAW,GAAG,OAAO,CAAC,YAAY,CAAC,CAgB3E"}
@@ -0,0 +1,23 @@
1
+ const listeners = [];
2
+ export function addWebhookListener(listener) {
3
+ listeners.push(listener);
4
+ }
5
+ export function removeWebhookListener(listener) {
6
+ const idx = listeners.indexOf(listener);
7
+ if (idx >= 0)
8
+ listeners.splice(idx, 1);
9
+ }
10
+ export async function handleWebhook(req) {
11
+ if (req.method !== "POST") {
12
+ return { status: 405, body: { error: "Method not allowed" } };
13
+ }
14
+ const payload = req.body;
15
+ if (!payload?.eventType || !payload?.timestamp) {
16
+ return { status: 400, body: { error: "Invalid webhook payload: missing eventType or timestamp" } };
17
+ }
18
+ for (const listener of listeners) {
19
+ listener(payload);
20
+ }
21
+ return { status: 200, body: { received: true } };
22
+ }
23
+ //# sourceMappingURL=webhook.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"webhook.js","sourceRoot":"","sources":["../../src/gateway/webhook.ts"],"names":[],"mappings":"AAYA,MAAM,SAAS,GAAsB,EAAE,CAAC;AAExC,MAAM,UAAU,kBAAkB,CAAC,QAAyB;IAC1D,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;AAC3B,CAAC;AAED,MAAM,UAAU,qBAAqB,CAAC,QAAyB;IAC7D,MAAM,GAAG,GAAG,SAAS,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IACxC,IAAI,GAAG,IAAI,CAAC;QAAE,SAAS,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;AACzC,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,GAAgB;IAClD,IAAI,GAAG,CAAC,MAAM,KAAK,MAAM,EAAE,CAAC;QAC1B,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE,KAAK,EAAE,oBAAoB,EAAE,EAAE,CAAC;IAChE,CAAC;IAED,MAAM,OAAO,GAAG,GAAG,CAAC,IAAkC,CAAC;IAEvD,IAAI,CAAC,OAAO,EAAE,SAAS,IAAI,CAAC,OAAO,EAAE,SAAS,EAAE,CAAC;QAC/C,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE,KAAK,EAAE,yDAAyD,EAAE,EAAE,CAAC;IACrG,CAAC;IAED,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE,CAAC;QACjC,QAAQ,CAAC,OAAO,CAAC,CAAC;IACpB,CAAC;IAED,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,EAAE,CAAC;AACnD,CAAC"}
@@ -0,0 +1,17 @@
1
+ import type { OpenClawPluginApi } from "openclaw-plugin-types";
2
+ export interface AuditRecord {
3
+ timestamp: string;
4
+ toolName: string;
5
+ toolCallId: string;
6
+ durationMs: number;
7
+ resultLength: number;
8
+ }
9
+ export interface SessionSummary {
10
+ sessionId: string;
11
+ basilicaToolCalls: number;
12
+ totalDurationMs: number;
13
+ timestamp: string;
14
+ }
15
+ export type AuditEmitter = (type: "tool_call" | "session_end", data: AuditRecord | SessionSummary) => void;
16
+ export declare function registerAuditHooks(api: OpenClawPluginApi, emit: AuditEmitter): void;
17
+ //# sourceMappingURL=audit.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"audit.d.ts","sourceRoot":"","sources":["../../src/hooks/audit.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAqC,MAAM,uBAAuB,CAAC;AAIlG,MAAM,WAAW,WAAW;IAC1B,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,cAAc;IAC7B,SAAS,EAAE,MAAM,CAAC;IAClB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,eAAe,EAAE,MAAM,CAAC;IACxB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,MAAM,YAAY,GAAG,CAAC,IAAI,EAAE,WAAW,GAAG,aAAa,EAAE,IAAI,EAAE,WAAW,GAAG,cAAc,KAAK,IAAI,CAAC;AAE3G,wBAAgB,kBAAkB,CAChC,GAAG,EAAE,iBAAiB,EACtB,IAAI,EAAE,YAAY,GACjB,IAAI,CA+BN"}
@@ -0,0 +1,28 @@
1
+ const BASILICA_TOOL_PREFIX = "basilica_";
2
+ export function registerAuditHooks(api, emit) {
3
+ api.on("after_tool_call", (event) => {
4
+ if (!event.toolName.startsWith(BASILICA_TOOL_PREFIX))
5
+ return;
6
+ const record = {
7
+ timestamp: new Date().toISOString(),
8
+ toolName: event.toolName,
9
+ toolCallId: event.toolCallId,
10
+ durationMs: event.durationMs,
11
+ resultLength: event.result.content.length,
12
+ };
13
+ emit("tool_call", record);
14
+ }, { priority: 100 });
15
+ api.on("agent_end", (event) => {
16
+ const basilicaCalls = event.toolCalls.filter((tc) => tc.toolName.startsWith(BASILICA_TOOL_PREFIX));
17
+ if (basilicaCalls.length === 0)
18
+ return;
19
+ const summary = {
20
+ sessionId: event.sessionId,
21
+ basilicaToolCalls: basilicaCalls.length,
22
+ totalDurationMs: basilicaCalls.reduce((sum, tc) => sum + tc.durationMs, 0),
23
+ timestamp: new Date().toISOString(),
24
+ };
25
+ emit("session_end", summary);
26
+ }, { priority: 100 });
27
+ }
28
+ //# sourceMappingURL=audit.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"audit.js","sourceRoot":"","sources":["../../src/hooks/audit.ts"],"names":[],"mappings":"AAEA,MAAM,oBAAoB,GAAG,WAAW,CAAC;AAmBzC,MAAM,UAAU,kBAAkB,CAChC,GAAsB,EACtB,IAAkB;IAElB,GAAG,CAAC,EAAE,CAAC,iBAAiB,EAAE,CAAC,KAAyB,EAAE,EAAE;QACtD,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,UAAU,CAAC,oBAAoB,CAAC;YAAE,OAAO;QAE7D,MAAM,MAAM,GAAgB;YAC1B,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;YACnC,QAAQ,EAAE,KAAK,CAAC,QAAQ;YACxB,UAAU,EAAE,KAAK,CAAC,UAAU;YAC5B,UAAU,EAAE,KAAK,CAAC,UAAU;YAC5B,YAAY,EAAE,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM;SAC1C,CAAC;QAEF,IAAI,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC;IAC5B,CAAC,EAAE,EAAE,QAAQ,EAAE,GAAG,EAAE,CAAC,CAAC;IAEtB,GAAG,CAAC,EAAE,CAAC,WAAW,EAAE,CAAC,KAAoB,EAAE,EAAE;QAC3C,MAAM,aAAa,GAAG,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,EAAE,CAClD,EAAE,CAAC,QAAQ,CAAC,UAAU,CAAC,oBAAoB,CAAC,CAC7C,CAAC;QAEF,IAAI,aAAa,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO;QAEvC,MAAM,OAAO,GAAmB;YAC9B,SAAS,EAAE,KAAK,CAAC,SAAS;YAC1B,iBAAiB,EAAE,aAAa,CAAC,MAAM;YACvC,eAAe,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,UAAU,EAAE,CAAC,CAAC;YAC1E,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;SACpC,CAAC;QAEF,IAAI,CAAC,aAAa,EAAE,OAAO,CAAC,CAAC;IAC/B,CAAC,EAAE,EAAE,QAAQ,EAAE,GAAG,EAAE,CAAC,CAAC;AACxB,CAAC"}
@@ -0,0 +1,5 @@
1
+ import type { OpenClawPluginApi } from "openclaw-plugin-types";
2
+ import { type AuditEmitter } from "./audit.js";
3
+ export declare function registerBasilicaHooks(api: OpenClawPluginApi, config?: Record<string, unknown>, auditEmitter?: AuditEmitter): void;
4
+ export type { AuditEmitter, AuditRecord, SessionSummary } from "./audit.js";
5
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/hooks/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAI/D,OAAO,EAAsB,KAAK,YAAY,EAAE,MAAM,YAAY,CAAC;AAMnE,wBAAgB,qBAAqB,CACnC,GAAG,EAAE,iBAAiB,EACtB,MAAM,GAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAM,EACpC,YAAY,GAAE,YAAkC,GAC/C,IAAI,CAKN;AAED,YAAY,EAAE,YAAY,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC"}
@@ -0,0 +1,14 @@
1
+ import { registerModelRouting } from "./model-routing.js";
2
+ import { registerPromptContext } from "./prompt-context.js";
3
+ import { registerToolPolicy } from "./tool-policy.js";
4
+ import { registerAuditHooks } from "./audit.js";
5
+ const defaultAuditEmitter = (_type, _data) => {
6
+ // in production, this would forward to Basilica's audit API
7
+ };
8
+ export function registerBasilicaHooks(api, config = {}, auditEmitter = defaultAuditEmitter) {
9
+ registerModelRouting(api, config);
10
+ registerPromptContext(api, config);
11
+ registerToolPolicy(api, config);
12
+ registerAuditHooks(api, auditEmitter);
13
+ }
14
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/hooks/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAC1D,OAAO,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AAC5D,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AACtD,OAAO,EAAE,kBAAkB,EAAqB,MAAM,YAAY,CAAC;AAEnE,MAAM,mBAAmB,GAAiB,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE;IACzD,4DAA4D;AAC9D,CAAC,CAAC;AAEF,MAAM,UAAU,qBAAqB,CACnC,GAAsB,EACtB,SAAkC,EAAE,EACpC,eAA6B,mBAAmB;IAEhD,oBAAoB,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;IAClC,qBAAqB,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;IACnC,kBAAkB,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;IAChC,kBAAkB,CAAC,GAAG,EAAE,YAAY,CAAC,CAAC;AACxC,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { OpenClawPluginApi } from "openclaw-plugin-types";
2
+ export declare function registerModelRouting(api: OpenClawPluginApi, config: Record<string, unknown>): void;
3
+ //# sourceMappingURL=model-routing.d.ts.map
@@ -0,0 +1 @@
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"}
@@ -0,0 +1,11 @@
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
@@ -0,0 +1 @@
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"}
@@ -0,0 +1,3 @@
1
+ import type { OpenClawPluginApi } from "openclaw-plugin-types";
2
+ export declare function registerPromptContext(api: OpenClawPluginApi, config: Record<string, unknown>): void;
3
+ //# sourceMappingURL=prompt-context.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prompt-context.d.ts","sourceRoot":"","sources":["../../src/hooks/prompt-context.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAuC,MAAM,uBAAuB,CAAC;AAEpG,wBAAgB,qBAAqB,CAAC,GAAG,EAAE,iBAAiB,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CASnG"}
@@ -0,0 +1,11 @@
1
+ export function registerPromptContext(api, config) {
2
+ const defaultProject = config.defaultProject;
3
+ api.on("before_prompt_build", (_event) => {
4
+ if (!defaultProject)
5
+ return;
6
+ return {
7
+ prependSystemContext: `Basilica project context: ${defaultProject}`,
8
+ };
9
+ }, { priority: 10 });
10
+ }
11
+ //# sourceMappingURL=prompt-context.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prompt-context.js","sourceRoot":"","sources":["../../src/hooks/prompt-context.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,qBAAqB,CAAC,GAAsB,EAAE,MAA+B;IAC3F,MAAM,cAAc,GAAG,MAAM,CAAC,cAAoC,CAAC;IAEnE,GAAG,CAAC,EAAE,CAAC,qBAAqB,EAAE,CAAC,MAAwB,EAA4B,EAAE;QACnF,IAAI,CAAC,cAAc;YAAE,OAAO;QAC5B,OAAO;YACL,oBAAoB,EAAE,6BAA6B,cAAc,EAAE;SACpE,CAAC;IACJ,CAAC,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC;AACvB,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { OpenClawPluginApi } from "openclaw-plugin-types";
2
+ export declare function registerToolPolicy(api: OpenClawPluginApi, config: Record<string, unknown>): void;
3
+ //# sourceMappingURL=tool-policy.d.ts.map
@@ -0,0 +1 @@
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"}
@@ -0,0 +1,44 @@
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
@@ -0,0 +1 @@
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"}
@@ -0,0 +1,5 @@
1
+ import type { OpenClawPluginApi } from "openclaw-plugin-types";
2
+ export declare const id = "basilica";
3
+ export declare const name = "Basilica";
4
+ export default function register(api: OpenClawPluginApi): void;
5
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAK/D,eAAO,MAAM,EAAE,aAAa,CAAC;AAC7B,eAAO,MAAM,IAAI,aAAa,CAAC;AAE/B,MAAM,CAAC,OAAO,UAAU,QAAQ,CAAC,GAAG,EAAE,iBAAiB,GAAG,IAAI,CAI7D"}
package/dist/index.js ADDED
@@ -0,0 +1,11 @@
1
+ import { registerBasilicaTools } from "./tools/index.js";
2
+ import { registerBasilicaHooks } from "./hooks/index.js";
3
+ import { registerBasilicaGateway } from "./gateway/index.js";
4
+ export const id = "basilica";
5
+ export const name = "Basilica";
6
+ export default function register(api) {
7
+ registerBasilicaTools(api);
8
+ registerBasilicaHooks(api);
9
+ registerBasilicaGateway(api);
10
+ }
11
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,qBAAqB,EAAE,MAAM,kBAAkB,CAAC;AACzD,OAAO,EAAE,qBAAqB,EAAE,MAAM,kBAAkB,CAAC;AACzD,OAAO,EAAE,uBAAuB,EAAE,MAAM,oBAAoB,CAAC;AAE7D,MAAM,CAAC,MAAM,EAAE,GAAG,UAAU,CAAC;AAC7B,MAAM,CAAC,MAAM,IAAI,GAAG,UAAU,CAAC;AAE/B,MAAM,CAAC,OAAO,UAAU,QAAQ,CAAC,GAAsB;IACrD,qBAAqB,CAAC,GAAG,CAAC,CAAC;IAC3B,qBAAqB,CAAC,GAAG,CAAC,CAAC;IAC3B,uBAAuB,CAAC,GAAG,CAAC,CAAC;AAC/B,CAAC"}
@@ -0,0 +1,6 @@
1
+ import { BasilicaClient } from "@basilica/openclaw-sdk";
2
+ import type { ToolContext } from "openclaw-plugin-types";
3
+ export declare function resolveBasilicaClient(ctx: ToolContext): BasilicaClient;
4
+ export declare function resolveProjectId(ctx: ToolContext, params: Record<string, unknown>): string | undefined;
5
+ export declare function formatError(err: unknown): string;
6
+ //# sourceMappingURL=context.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../src/tools/context.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAiB,MAAM,wBAAwB,CAAC;AAEvE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAEzD,wBAAgB,qBAAqB,CAAC,GAAG,EAAE,WAAW,GAAG,cAAc,CAmBtE;AAED,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,GAAG,SAAS,CAEtG;AAED,wBAAgB,WAAW,CAAC,GAAG,EAAE,OAAO,GAAG,MAAM,CAQhD"}
@@ -0,0 +1,28 @@
1
+ import { BasilicaClient, BasilicaError } from "@basilica/openclaw-sdk";
2
+ export function resolveBasilicaClient(ctx) {
3
+ if (!ctx.credential) {
4
+ throw new BasilicaError("Basilica authentication required. Run: openclaw models auth login --provider basilica", "AUTH_MISSING");
5
+ }
6
+ const credential = ctx.credential;
7
+ const config = {
8
+ baseUrl: ctx.config.baseUrl ?? "https://api.basilica.cloud",
9
+ credential,
10
+ org: ctx.orgId
11
+ ? { orgId: ctx.orgId, projectId: ctx.projectId }
12
+ : undefined,
13
+ };
14
+ return new BasilicaClient(config);
15
+ }
16
+ export function resolveProjectId(ctx, params) {
17
+ return params.projectId ?? ctx.projectId ?? ctx.config.defaultProject;
18
+ }
19
+ export function formatError(err) {
20
+ if (err instanceof BasilicaError) {
21
+ return `Basilica error (${err.code}): ${err.message}`;
22
+ }
23
+ if (err instanceof Error) {
24
+ return `Error: ${err.message}`;
25
+ }
26
+ return "An unknown error occurred";
27
+ }
28
+ //# sourceMappingURL=context.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"context.js","sourceRoot":"","sources":["../../src/tools/context.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAIvE,MAAM,UAAU,qBAAqB,CAAC,GAAgB;IACpD,IAAI,CAAC,GAAG,CAAC,UAAU,EAAE,CAAC;QACpB,MAAM,IAAI,aAAa,CACrB,uFAAuF,EACvF,cAAc,CACf,CAAC;IACJ,CAAC;IAED,MAAM,UAAU,GAAG,GAAG,CAAC,UAA2C,CAAC;IAEnE,MAAM,MAAM,GAAyB;QACnC,OAAO,EAAG,GAAG,CAAC,MAAM,CAAC,OAAkB,IAAI,4BAA4B;QACvE,UAAU;QACV,GAAG,EAAE,GAAG,CAAC,KAAK;YACZ,CAAC,CAAC,EAAE,KAAK,EAAE,GAAG,CAAC,KAAK,EAAE,SAAS,EAAE,GAAG,CAAC,SAAS,EAAE;YAChD,CAAC,CAAC,SAAS;KACd,CAAC;IAEF,OAAO,IAAI,cAAc,CAAC,MAAM,CAAC,CAAC;AACpC,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,GAAgB,EAAE,MAA+B;IAChF,OAAQ,MAAM,CAAC,SAAoB,IAAI,GAAG,CAAC,SAAS,IAAK,GAAG,CAAC,MAAM,CAAC,cAAyB,CAAC;AAChG,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,GAAY;IACtC,IAAI,GAAG,YAAY,aAAa,EAAE,CAAC;QACjC,OAAO,mBAAmB,GAAG,CAAC,IAAI,MAAM,GAAG,CAAC,OAAO,EAAE,CAAC;IACxD,CAAC;IACD,IAAI,GAAG,YAAY,KAAK,EAAE,CAAC;QACzB,OAAO,UAAU,GAAG,CAAC,OAAO,EAAE,CAAC;IACjC,CAAC;IACD,OAAO,2BAA2B,CAAC;AACrC,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { OpenClawPluginApi } from "openclaw-plugin-types";
2
+ export declare function registerDatasetTools(api: OpenClawPluginApi): void;
3
+ //# sourceMappingURL=datasets.d.ts.map
@@ -0,0 +1 @@
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"}
@@ -0,0 +1,57 @@
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
@@ -0,0 +1 @@
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"}
@@ -0,0 +1,3 @@
1
+ import type { OpenClawPluginApi } from "openclaw-plugin-types";
2
+ export declare function registerDeploymentTools(api: OpenClawPluginApi): void;
3
+ //# sourceMappingURL=deployments.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"deployments.d.ts","sourceRoot":"","sources":["../../src/tools/deployments.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAI/D,wBAAgB,uBAAuB,CAAC,GAAG,EAAE,iBAAiB,GAAG,IAAI,CAqDpE"}