@roj-ai/client 0.1.1 → 0.1.4

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 (53) hide show
  1. package/dist/api/client.d.ts +1 -0
  2. package/dist/api/client.d.ts.map +1 -0
  3. package/dist/api/client.js +57 -0
  4. package/dist/api/client.js.map +1 -0
  5. package/dist/api/unwrap.d.ts +1 -0
  6. package/dist/api/unwrap.d.ts.map +1 -0
  7. package/dist/api/unwrap.js +7 -0
  8. package/dist/api/unwrap.js.map +1 -0
  9. package/dist/index.d.ts +1 -0
  10. package/dist/index.d.ts.map +1 -0
  11. package/dist/index.js +9 -0
  12. package/dist/index.js.map +1 -0
  13. package/dist/platform/errors.d.ts +1 -0
  14. package/dist/platform/errors.d.ts.map +1 -0
  15. package/dist/platform/errors.js +20 -0
  16. package/dist/platform/errors.js.map +1 -0
  17. package/dist/platform/index.d.ts +1 -0
  18. package/dist/platform/index.d.ts.map +1 -0
  19. package/dist/platform/index.js +20 -0
  20. package/dist/platform/index.js.map +1 -0
  21. package/dist/platform/instance-methods.d.ts +1 -0
  22. package/dist/platform/instance-methods.d.ts.map +1 -0
  23. package/dist/platform/instance-methods.js +34 -0
  24. package/dist/platform/instance-methods.js.map +1 -0
  25. package/dist/platform/methods.d.ts +1 -0
  26. package/dist/platform/methods.d.ts.map +1 -0
  27. package/dist/platform/methods.js +36 -0
  28. package/dist/platform/methods.js.map +1 -0
  29. package/dist/platform/rest-client.d.ts +1 -0
  30. package/dist/platform/rest-client.d.ts.map +1 -0
  31. package/dist/platform/rest-client.js +58 -0
  32. package/dist/platform/rest-client.js.map +1 -0
  33. package/dist/platform/rpc-client.d.ts +1 -0
  34. package/dist/platform/rpc-client.d.ts.map +1 -0
  35. package/dist/platform/rpc-client.js +30 -0
  36. package/dist/platform/rpc-client.js.map +1 -0
  37. package/dist/platform/rpc-definition.d.ts +1 -0
  38. package/dist/platform/rpc-definition.d.ts.map +1 -0
  39. package/dist/platform/rpc-definition.js +19 -0
  40. package/dist/platform/rpc-definition.js.map +1 -0
  41. package/dist/platform/rpc-server.d.ts +1 -0
  42. package/dist/platform/rpc-server.d.ts.map +1 -0
  43. package/dist/platform/rpc-server.js +24 -0
  44. package/dist/platform/rpc-server.js.map +1 -0
  45. package/dist/platform/sandbox-state.d.ts +1 -0
  46. package/dist/platform/sandbox-state.d.ts.map +1 -0
  47. package/dist/platform/sandbox-state.js +2 -0
  48. package/dist/platform/sandbox-state.js.map +1 -0
  49. package/dist/platform/urls.d.ts +1 -0
  50. package/dist/platform/urls.d.ts.map +1 -0
  51. package/dist/platform/urls.js +42 -0
  52. package/dist/platform/urls.js.map +1 -0
  53. package/package.json +9 -9
@@ -16,3 +16,4 @@ export declare function configureProjectId(projectId: string | null): void;
16
16
  export declare function createApiClient(baseUrl?: string): ApiClient;
17
17
  export declare const api: ApiClient;
18
18
  export declare function useApiError(error: unknown): string | null;
19
+ //# sourceMappingURL=client.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/api/client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAA;AACxD,OAAO,KAAK,EAAE,MAAM,EAAE,YAAY,EAAE,QAAQ,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAA;AAElG,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,CAAA;AAC9B,YAAY,EAAE,YAAY,EAAE,CAAA;AAE5B,MAAM,WAAW,SAAS;IACzB,IAAI,CAAC,CAAC,SAAS,aAAa,EAAE,MAAM,EAAE,CAAC,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,YAAY,CAAC,CAAC,CAAA;IACzG,UAAU,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,GAAG,OAAO,CAAC;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,OAAO,GAAG,QAAQ,CAAC;QAAC,gBAAgB,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;CAC/H;AAkCD,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAMrD;AAED,wBAAgB,aAAa,IAAI,MAAM,CAEtC;AAED,wBAAgB,kBAAkB,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI,CAEjE;AAED,wBAAgB,eAAe,CAAC,OAAO,GAAE,MAAW,GAAG,SAAS,CAG/D;AAED,eAAO,MAAM,GAAG,EAAE,SAAmD,CAAA;AAErE,wBAAgB,WAAW,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,GAAG,IAAI,CAQzD"}
@@ -0,0 +1,57 @@
1
+ import { RpcClient, RpcError } from '@roj-ai/shared/rpc';
2
+ export { RpcClient, RpcError };
3
+ function createApiClientFromRpc(getClient) {
4
+ return {
5
+ call: (method, input) => getClient().call(method, input),
6
+ async uploadFile(sessionId, file) {
7
+ const formData = new FormData();
8
+ formData.append('file', file);
9
+ const client = getClient();
10
+ const baseUrl = client.getBaseUrl();
11
+ const projectId = client.getProjectId();
12
+ let url = `${baseUrl}/sessions/${sessionId}/upload`;
13
+ if (projectId) {
14
+ url += `?project=${encodeURIComponent(projectId)}`;
15
+ }
16
+ const response = await fetch(url, {
17
+ method: 'POST',
18
+ body: formData,
19
+ credentials: 'include',
20
+ });
21
+ if (!response.ok) {
22
+ const error = await response.json();
23
+ throw new Error(error.error?.message || 'Upload failed');
24
+ }
25
+ return response.json();
26
+ },
27
+ };
28
+ }
29
+ let rpcClient = new RpcClient('');
30
+ export function configureApiBaseUrl(url) {
31
+ const projectId = rpcClient.getProjectId();
32
+ rpcClient = new RpcClient(url);
33
+ if (projectId) {
34
+ rpcClient.setProjectId(projectId);
35
+ }
36
+ }
37
+ export function getApiBaseUrl() {
38
+ return rpcClient.getBaseUrl();
39
+ }
40
+ export function configureProjectId(projectId) {
41
+ rpcClient.setProjectId(projectId);
42
+ }
43
+ export function createApiClient(baseUrl = '') {
44
+ const client = new RpcClient(baseUrl);
45
+ return createApiClientFromRpc(() => client);
46
+ }
47
+ export const api = createApiClientFromRpc(() => rpcClient);
48
+ export function useApiError(error) {
49
+ if (error instanceof RpcError) {
50
+ return error.error.message;
51
+ }
52
+ if (error instanceof Error) {
53
+ return error.message;
54
+ }
55
+ return null;
56
+ }
57
+ //# sourceMappingURL=client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/api/client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAA;AAGxD,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,CAAA;AAQ9B,SAAS,sBAAsB,CAAC,SAA0B;IACzD,OAAO;QACN,IAAI,EAAE,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE,CAAC,SAAS,EAAE,CAAC,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC;QACxD,KAAK,CAAC,UAAU,CAAC,SAAS,EAAE,IAAI;YAC/B,MAAM,QAAQ,GAAG,IAAI,QAAQ,EAAE,CAAA;YAC/B,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,CAAA;YAE7B,MAAM,MAAM,GAAG,SAAS,EAAE,CAAA;YAC1B,MAAM,OAAO,GAAG,MAAM,CAAC,UAAU,EAAE,CAAA;YACnC,MAAM,SAAS,GAAG,MAAM,CAAC,YAAY,EAAE,CAAA;YACvC,IAAI,GAAG,GAAG,GAAG,OAAO,aAAa,SAAS,SAAS,CAAA;YACnD,IAAI,SAAS,EAAE,CAAC;gBACf,GAAG,IAAI,YAAY,kBAAkB,CAAC,SAAS,CAAC,EAAE,CAAA;YACnD,CAAC;YACD,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE;gBACjC,MAAM,EAAE,MAAM;gBACd,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,SAAS;aACtB,CAAC,CAAA;YAEF,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;gBAClB,MAAM,KAAK,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAsC,CAAA;gBACvE,MAAM,IAAI,KAAK,CAAC,KAAK,CAAC,KAAK,EAAE,OAAO,IAAI,eAAe,CAAC,CAAA;YACzD,CAAC;YAED,OAAO,QAAQ,CAAC,IAAI,EAAE,CAAA;QACvB,CAAC;KACD,CAAA;AACF,CAAC;AAED,IAAI,SAAS,GAAG,IAAI,SAAS,CAAC,EAAE,CAAC,CAAA;AAEjC,MAAM,UAAU,mBAAmB,CAAC,GAAW;IAC9C,MAAM,SAAS,GAAG,SAAS,CAAC,YAAY,EAAE,CAAA;IAC1C,SAAS,GAAG,IAAI,SAAS,CAAC,GAAG,CAAC,CAAA;IAC9B,IAAI,SAAS,EAAE,CAAC;QACf,SAAS,CAAC,YAAY,CAAC,SAAS,CAAC,CAAA;IAClC,CAAC;AACF,CAAC;AAED,MAAM,UAAU,aAAa;IAC5B,OAAO,SAAS,CAAC,UAAU,EAAE,CAAA;AAC9B,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,SAAwB;IAC1D,SAAS,CAAC,YAAY,CAAC,SAAS,CAAC,CAAA;AAClC,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,UAAkB,EAAE;IACnD,MAAM,MAAM,GAAG,IAAI,SAAS,CAAC,OAAO,CAAC,CAAA;IACrC,OAAO,sBAAsB,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,CAAA;AAC5C,CAAC;AAED,MAAM,CAAC,MAAM,GAAG,GAAc,sBAAsB,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAA;AAErE,MAAM,UAAU,WAAW,CAAC,KAAc;IACzC,IAAI,KAAK,YAAY,QAAQ,EAAE,CAAC;QAC/B,OAAO,KAAK,CAAC,KAAK,CAAC,OAAO,CAAA;IAC3B,CAAC;IACD,IAAI,KAAK,YAAY,KAAK,EAAE,CAAC;QAC5B,OAAO,KAAK,CAAC,OAAO,CAAA;IACrB,CAAC;IACD,OAAO,IAAI,CAAA;AACZ,CAAC"}
@@ -1,2 +1,3 @@
1
1
  import type { Result, RpcErrorInfo } from '@roj-ai/shared/rpc';
2
2
  export declare function unwrap<T>(result: Result<T, RpcErrorInfo>): T;
3
+ //# sourceMappingURL=unwrap.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"unwrap.d.ts","sourceRoot":"","sources":["../../src/api/unwrap.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;AAE9D,wBAAgB,MAAM,CAAC,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC,EAAE,YAAY,CAAC,GAAG,CAAC,CAG5D"}
@@ -0,0 +1,7 @@
1
+ import { RpcError } from '@roj-ai/shared/rpc';
2
+ export function unwrap(result) {
3
+ if (result.ok)
4
+ return result.value;
5
+ throw new RpcError(0, result.error);
6
+ }
7
+ //# sourceMappingURL=unwrap.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"unwrap.js","sourceRoot":"","sources":["../../src/api/unwrap.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAA;AAG7C,MAAM,UAAU,MAAM,CAAI,MAA+B;IACxD,IAAI,MAAM,CAAC,EAAE;QAAE,OAAO,MAAM,CAAC,KAAK,CAAA;IAClC,MAAM,IAAI,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC,KAAK,CAAC,CAAA;AACpC,CAAC"}
package/dist/index.d.ts CHANGED
@@ -7,3 +7,4 @@
7
7
  export { api, configureApiBaseUrl, createApiClient, getApiBaseUrl, configureProjectId, RpcClient, RpcError, useApiError, } from './api/client';
8
8
  export type { ApiClient } from './api/client';
9
9
  export { unwrap } from './api/unwrap';
10
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EACN,GAAG,EACH,mBAAmB,EACnB,eAAe,EACf,aAAa,EACb,kBAAkB,EAClB,SAAS,EACT,QAAQ,EACR,WAAW,GACX,MAAM,cAAc,CAAA;AACrB,YAAY,EAAE,SAAS,EAAE,MAAM,cAAc,CAAA;AAC7C,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAA"}
package/dist/index.js ADDED
@@ -0,0 +1,9 @@
1
+ /**
2
+ * @roj-ai/client
3
+ *
4
+ * Vanilla TypeScript client for the roj agent server. No React — React hooks
5
+ * and chat components live in `@roj-ai/client-react`.
6
+ */
7
+ export { api, configureApiBaseUrl, createApiClient, getApiBaseUrl, configureProjectId, RpcClient, RpcError, useApiError, } from './api/client';
8
+ export { unwrap } from './api/unwrap';
9
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EACN,GAAG,EACH,mBAAmB,EACnB,eAAe,EACf,aAAa,EACb,kBAAkB,EAClB,SAAS,EACT,QAAQ,EACR,WAAW,GACX,MAAM,cAAc,CAAA;AAErB,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAA"}
@@ -4,3 +4,4 @@ export declare class RojApiError extends Error {
4
4
  readonly type: string;
5
5
  constructor(error: RpcError);
6
6
  }
7
+ //# sourceMappingURL=errors.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../src/platform/errors.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAA;AAEhD,qBAAa,WAAY,SAAQ,KAAK;aAGT,KAAK,EAAE,QAAQ;IAF3C,SAAgB,IAAI,EAAE,MAAM,CAAA;gBAEA,KAAK,EAAE,QAAQ;CAK3C"}
@@ -0,0 +1,20 @@
1
+ export class RojApiError extends Error {
2
+ constructor(error) {
3
+ super(error.message);
4
+ Object.defineProperty(this, "error", {
5
+ enumerable: true,
6
+ configurable: true,
7
+ writable: true,
8
+ value: error
9
+ });
10
+ Object.defineProperty(this, "type", {
11
+ enumerable: true,
12
+ configurable: true,
13
+ writable: true,
14
+ value: void 0
15
+ });
16
+ this.name = 'RojApiError';
17
+ this.type = error.type;
18
+ }
19
+ }
20
+ //# sourceMappingURL=errors.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/platform/errors.ts"],"names":[],"mappings":"AAEA,MAAM,OAAO,WAAY,SAAQ,KAAK;IAGrC,YAA4B,KAAe;QAC1C,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,CAAA;QADT;;;;mBAAgB,KAAK;WAAU;QAF3B;;;;;WAAY;QAI3B,IAAI,CAAC,IAAI,GAAG,aAAa,CAAA;QACzB,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC,IAAI,CAAA;IACvB,CAAC;CACD"}
@@ -22,3 +22,4 @@ export type { BuildPreviewUrlOptions, BuildWsUrlOptions } from './urls';
22
22
  export { createRojClient } from './rest-client';
23
23
  export type { RojClient, RojClientOptions } from './rest-client';
24
24
  export { RojApiError } from './errors';
25
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/platform/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,EAAE,aAAa,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAA;AACxD,YAAY,EAAE,SAAS,EAAE,WAAW,EAAE,YAAY,EAAE,UAAU,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAA;AAC/G,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAA;AAC9C,YAAY,EAAE,SAAS,EAAE,gBAAgB,EAAE,SAAS,EAAE,MAAM,cAAc,CAAA;AAC1E,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAA;AAC9C,YAAY,EAAE,SAAS,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,cAAc,CAAA;AAG5E,OAAO,EAAE,eAAe,EAAE,MAAM,WAAW,CAAA;AAC3C,YAAY,EAAE,eAAe,EAAE,kBAAkB,EAAE,MAAM,WAAW,CAAA;AACpE,mBAAmB,WAAW,CAAA;AAE9B,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAA;AACpD,YAAY,EAAE,eAAe,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAA;AAC7E,mBAAmB,oBAAoB,CAAA;AAGvC,YAAY,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAA;AAGnD,OAAO,EAAE,eAAe,EAAE,UAAU,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,QAAQ,CAAA;AACtF,YAAY,EAAE,sBAAsB,EAAE,iBAAiB,EAAE,MAAM,QAAQ,CAAA;AAGvE,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAA;AAC/C,YAAY,EAAE,SAAS,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAA;AAGhE,OAAO,EAAE,WAAW,EAAE,MAAM,UAAU,CAAA"}
@@ -0,0 +1,20 @@
1
+ /**
2
+ * @roj-ai/client/platform
3
+ *
4
+ * Client SDK for the roj platform REST API. Works against both the full
5
+ * platform (Cloudflare worker) and the standalone server.
6
+ */
7
+ // Generic RPC framework
8
+ export { defineMethods, method } from './rpc-definition';
9
+ export { createRpcClient } from './rpc-client';
10
+ export { createRpcRouter } from './rpc-server';
11
+ // Platform method contracts
12
+ export { platformMethods } from './methods';
13
+ export { instanceMethods } from './instance-methods';
14
+ // URL builders
15
+ export { buildPreviewUrl, buildWsUrl, buildApiBaseUrl, instanceIdToHex } from './urls';
16
+ // REST client
17
+ export { createRojClient } from './rest-client';
18
+ // Errors
19
+ export { RojApiError } from './errors';
20
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/platform/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,wBAAwB;AACxB,OAAO,EAAE,aAAa,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAA;AAExD,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAA;AAE9C,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAA;AAG9C,4BAA4B;AAC5B,OAAO,EAAE,eAAe,EAAE,MAAM,WAAW,CAAA;AAI3C,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAA;AAOpD,eAAe;AACf,OAAO,EAAE,eAAe,EAAE,UAAU,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,QAAQ,CAAA;AAGtF,cAAc;AACd,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAA;AAG/C,SAAS;AACT,OAAO,EAAE,WAAW,EAAE,MAAM,UAAU,CAAA"}
@@ -92,3 +92,4 @@ export declare const instanceMethods: {
92
92
  };
93
93
  export type InstanceMethods = typeof instanceMethods;
94
94
  export type InstanceMethodName = keyof InstanceMethods;
95
+ //# sourceMappingURL=instance-methods.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"instance-methods.d.ts","sourceRoot":"","sources":["../../src/platform/instance-methods.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,oBAAoB,EAAE,kBAAkB,EAAE,MAAM,WAAW,CAAA;AAMzE,MAAM,MAAM,0BAA0B,GAAG,EAAE,CAAA;AAC3C,MAAM,WAAW,2BAA2B;IAC3C,SAAS,EAAE,MAAM,CAAA;CACjB;AAED,MAAM,WAAW,yBAAyB;IACzC,SAAS,EAAE,MAAM,CAAA;CACjB;AAED,MAAM,MAAM,0BAA0B,GAAG,EAAE,CAAA;AAE3C,MAAM,WAAW,6BAA6B;IAC7C,SAAS,EAAE,MAAM,CAAA;CACjB;AAED,MAAM,WAAW,yBAAyB;IACzC,SAAS,EAAE,MAAM,CAAA;CACjB;AAED,MAAM,WAAW,yBAAyB;IACzC,SAAS,EAAE,MAAM,CAAA;IACjB,KAAK,CAAC,EAAE,MAAM,CAAA;CACd;AAED,MAAM,WAAW,0BAA0B;IAC1C,OAAO,EAAE,MAAM,CAAA;CACf;AAED,MAAM,WAAW,2BAA2B;IAC3C,MAAM,EAAE,MAAM,CAAA;IACd,MAAM,EAAE,MAAM,CAAA;IACd,OAAO,EAAE,OAAO,CAAA;CAChB;AAED,MAAM,WAAW,iCAAiC;IACjD,SAAS,EAAE,MAAM,CAAA;IACjB,KAAK,EAAE,MAAM,CAAA;CACb;AAED,MAAM,WAAW,kCAAkC;IAClD,KAAK,EAAE,OAAO,CAAA;CACd;AAMD,MAAM,WAAW,0BAA0B;IAC1C,QAAQ,EAAE,MAAM,CAAA;CAChB;AAED,MAAM,WAAW,2BAA2B;IAC3C,SAAS,EAAE,MAAM,CAAA;CACjB;AAED,MAAM,MAAM,yBAAyB,GAAG,EAAE,CAAA;AAC1C,MAAM,WAAW,0BAA0B;IAC1C,QAAQ,EAAE,KAAK,CAAC;QACf,EAAE,EAAE,MAAM,CAAA;QACV,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAA;QACvB,MAAM,EAAE,MAAM,CAAA;QACd,SAAS,EAAE,MAAM,CAAA;KACjB,CAAC,CAAA;CACF;AAED,MAAM,WAAW,2BAA2B;IAC3C,SAAS,EAAE,MAAM,CAAA;CACjB;AAMD,MAAM,WAAW,0BAA0B;IAC1C,SAAS,EAAE,MAAM,CAAA;IACjB,WAAW,EAAE,MAAM,CAAA;CACnB;AAED,MAAM,WAAW,2BAA2B;IAC3C,GAAG,EAAE,MAAM,GAAG,IAAI,CAAA;CAClB;AAED,MAAM,WAAW,2BAA2B;IAC3C,SAAS,EAAE,MAAM,CAAA;CACjB;AAED,MAAM,WAAW,4BAA4B;IAC5C,QAAQ,EAAE,KAAK,CAAC;QACf,WAAW,EAAE,MAAM,CAAA;QACnB,IAAI,EAAE,MAAM,CAAA;QACZ,IAAI,EAAE,MAAM,CAAA;KACZ,CAAC,CAAA;CACF;AAED,MAAM,WAAW,2BAA2B;IAC3C,SAAS,EAAE,MAAM,CAAA;IACjB,KAAK,EAAE,MAAM,CAAA;CACb;AAMD,MAAM,WAAW,gBAAgB;IAChC,EAAE,EAAE,OAAO,CAAA;CACX;AAMD,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;CAsB1B,CAAA;AAEF,MAAM,MAAM,eAAe,GAAG,OAAO,eAAe,CAAA;AACpD,MAAM,MAAM,kBAAkB,GAAG,MAAM,eAAe,CAAA"}
@@ -0,0 +1,34 @@
1
+ /**
2
+ * Instance-scoped RPC method definitions.
3
+ *
4
+ * These methods are called from the SPA via POST /api/v1/instances/:id/rpc
5
+ * with instance token or cookie auth. The instance is already resolved by the route,
6
+ * so inputs do NOT contain instanceId.
7
+ *
8
+ * Shared between worker (server) and client SDK.
9
+ */
10
+ import { defineMethods, method } from './rpc-definition';
11
+ // ============================================================================
12
+ // Method registry
13
+ // ============================================================================
14
+ export const instanceMethods = defineMethods({
15
+ // Sandbox
16
+ createSandbox: method(),
17
+ pauseSandbox: method(),
18
+ resumeSandbox: method(),
19
+ terminateSandbox: method(),
20
+ restartAgent: method(),
21
+ getAgentLogs: method(),
22
+ execInSandbox: method(),
23
+ validateSandboxToken: method(),
24
+ // Sessions
25
+ createSession: method(),
26
+ listSessions: method(),
27
+ publishSession: method(),
28
+ // Services
29
+ getServiceUrl: method(),
30
+ getServiceUrls: method(),
31
+ // Idempotent sandbox access
32
+ ensureSandbox: method(),
33
+ });
34
+ //# sourceMappingURL=instance-methods.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"instance-methods.js","sourceRoot":"","sources":["../../src/platform/instance-methods.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,OAAO,EAAE,aAAa,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAA;AAkHxD,+EAA+E;AAC/E,kBAAkB;AAClB,+EAA+E;AAE/E,MAAM,CAAC,MAAM,eAAe,GAAG,aAAa,CAAC;IAC5C,UAAU;IACV,aAAa,EAAE,MAAM,EAA2D;IAChF,YAAY,EAAE,MAAM,EAA+C;IACnE,aAAa,EAAE,MAAM,EAAgD;IACrE,gBAAgB,EAAE,MAAM,EAAmD;IAC3E,YAAY,EAAE,MAAM,EAA+C;IACnE,YAAY,EAAE,MAAM,EAAiD;IACrE,aAAa,EAAE,MAAM,EAA2D;IAChF,oBAAoB,EAAE,MAAM,EAAyE;IAErG,WAAW;IACX,aAAa,EAAE,MAAM,EAA2D;IAChF,YAAY,EAAE,MAAM,EAAyD;IAC7E,cAAc,EAAE,MAAM,EAAqD;IAE3E,WAAW;IACX,aAAa,EAAE,MAAM,EAA2D;IAChF,cAAc,EAAE,MAAM,EAA6D;IAEnF,4BAA4B;IAC5B,aAAa,EAAE,MAAM,EAAmC;CACxD,CAAC,CAAA"}
@@ -258,3 +258,4 @@ export declare const platformMethods: {
258
258
  };
259
259
  export type PlatformMethods = typeof platformMethods;
260
260
  export type PlatformMethodName = keyof PlatformMethods;
261
+ //# sourceMappingURL=methods.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"methods.d.ts","sourceRoot":"","sources":["../../src/platform/methods.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,36 @@
1
+ /**
2
+ * Platform RPC method definitions.
3
+ *
4
+ * Single source of truth for all platform API method types.
5
+ * Shared between worker (server) and client SDK.
6
+ */
7
+ import { defineMethods, method } from './rpc-definition';
8
+ // ============================================================================
9
+ // Method registry
10
+ // ============================================================================
11
+ export const platformMethods = defineMethods({
12
+ // Instances
13
+ 'instances.create': method(),
14
+ 'instances.get': method(),
15
+ 'instances.list': method(),
16
+ 'instances.status': method(),
17
+ 'instances.archive': method(),
18
+ // Sessions
19
+ 'sessions.create': method(),
20
+ 'sessions.list': method(),
21
+ 'sessions.publish': method(),
22
+ // Tokens
23
+ 'tokens.create': method(),
24
+ // Services
25
+ 'services.getUrl': method(),
26
+ // Bundles
27
+ 'bundles.list': method(),
28
+ 'bundles.delete': method(),
29
+ // Resources
30
+ 'resources.create': method(),
31
+ 'resources.addRevision': method(),
32
+ 'resources.get': method(),
33
+ 'resources.list': method(),
34
+ 'resources.delete': method(),
35
+ });
36
+ //# sourceMappingURL=methods.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"methods.js","sourceRoot":"","sources":["../../src/platform/methods.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,EAAE,aAAa,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAA;AA4SxD,+EAA+E;AAC/E,kBAAkB;AAClB,+EAA+E;AAE/E,MAAM,CAAC,MAAM,eAAe,GAAG,aAAa,CAAC;IAC5C,YAAY;IACZ,kBAAkB,EAAE,MAAM,EAA6C;IACvE,eAAe,EAAE,MAAM,EAAuC;IAC9D,gBAAgB,EAAE,MAAM,EAA2C;IACnE,kBAAkB,EAAE,MAAM,EAAmD;IAC7E,mBAAmB,EAAE,MAAM,EAA+C;IAE1E,WAAW;IACX,iBAAiB,EAAE,MAAM,EAA2C;IACpE,eAAe,EAAE,MAAM,EAAyC;IAChE,kBAAkB,EAAE,MAAM,EAA6C;IAEvE,SAAS;IACT,eAAe,EAAE,MAAM,EAAuD;IAE9E,WAAW;IACX,iBAAiB,EAAE,MAAM,EAA2C;IAEpE,UAAU;IACV,cAAc,EAAE,MAAM,EAAuC;IAC7D,gBAAgB,EAAE,MAAM,EAAyC;IAEjE,YAAY;IACZ,kBAAkB,EAAE,MAAM,EAA6C;IACvE,uBAAuB,EAAE,MAAM,EAAuD;IACtF,eAAe,EAAE,MAAM,EAAuC;IAC9D,gBAAgB,EAAE,MAAM,EAA2C;IACnE,kBAAkB,EAAE,MAAM,EAA6C;CACvE,CAAC,CAAA"}
@@ -47,3 +47,4 @@ export interface RojClient {
47
47
  };
48
48
  }
49
49
  export declare function createRojClient(options: RojClientOptions): RojClient;
50
+ //# sourceMappingURL=rest-client.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rest-client.d.ts","sourceRoot":"","sources":["../../src/platform/rest-client.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,58 @@
1
+ import { createRpcClient } from './rpc-client';
2
+ import { RojApiError } from './errors';
3
+ export function createRojClient(options) {
4
+ const rpc = createRpcClient(`${options.url}/api/v1`, {
5
+ headers: { Authorization: `Bearer ${options.apiKey}` },
6
+ });
7
+ async function call(method, input) {
8
+ const result = await rpc.call(method, input);
9
+ if (!result.ok)
10
+ throw new RojApiError(result.error);
11
+ return result.value;
12
+ }
13
+ return {
14
+ instances: {
15
+ create: (input) => call('instances.create', input),
16
+ get: (instanceId) => call('instances.get', { instanceId }),
17
+ getStatus: (instanceId) => call('instances.status', { instanceId }),
18
+ list: (input) => call('instances.list', input ?? {}),
19
+ archive: (instanceId) => call('instances.archive', { instanceId }),
20
+ },
21
+ sessions: {
22
+ create: (input) => call('sessions.create', input),
23
+ list: (instanceId) => call('sessions.list', { instanceId }),
24
+ publish: (input) => call('sessions.publish', input),
25
+ },
26
+ tokens: {
27
+ create: (input) => call('tokens.create', input),
28
+ },
29
+ bundles: {
30
+ list: (input) => call('bundles.list', input ?? {}),
31
+ delete: (input) => call('bundles.delete', input),
32
+ },
33
+ files: {
34
+ upload: async (file, filename) => {
35
+ const formData = new FormData();
36
+ formData.append('file', file, filename);
37
+ const response = await fetch(`${options.url}/api/v1/files/upload`, {
38
+ method: 'POST',
39
+ headers: { Authorization: `Bearer ${options.apiKey}` },
40
+ body: formData,
41
+ });
42
+ if (!response.ok) {
43
+ const body = await response.json().catch(() => ({ message: response.statusText }));
44
+ throw new RojApiError({ type: 'http_error', message: body.error ?? body.message ?? response.statusText });
45
+ }
46
+ return response.json();
47
+ },
48
+ },
49
+ resources: {
50
+ create: (input) => call('resources.create', input),
51
+ addRevision: (input) => call('resources.addRevision', input),
52
+ get: (input) => call('resources.get', input),
53
+ list: (input) => call('resources.list', input ?? {}),
54
+ delete: (resourceId) => call('resources.delete', { resourceId }),
55
+ },
56
+ };
57
+ }
58
+ //# sourceMappingURL=rest-client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rest-client.js","sourceRoot":"","sources":["../../src/platform/rest-client.ts"],"names":[],"mappings":"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"}
@@ -24,3 +24,4 @@ export type RpcResult<T> = {
24
24
  error: RpcError;
25
25
  };
26
26
  export declare function createRpcClient<Methods extends Record<string, MethodDef>>(baseUrl: string, options?: RpcClientOptions): RpcClient<Methods>;
27
+ //# sourceMappingURL=rpc-client.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rpc-client.d.ts","sourceRoot":"","sources":["../../src/platform/rpc-client.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AACH,OAAO,KAAK,EAAE,SAAS,EAAE,WAAW,EAAE,YAAY,EAAE,QAAQ,EAAe,MAAM,kBAAkB,CAAA;AAEnG,MAAM,WAAW,gBAAgB;IAChC,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAChC,WAAW,CAAC,EAAE,kBAAkB,CAAA;CAChC;AAED,MAAM,WAAW,SAAS,CAAC,OAAO,SAAS,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC;IACnE,IAAI,CAAC,CAAC,SAAS,MAAM,GAAG,MAAM,OAAO,EACpC,MAAM,EAAE,CAAC,EACT,KAAK,EAAE,WAAW,CAAC,OAAO,EAAE,CAAC,CAAC,GAC5B,OAAO,CAAC,SAAS,CAAC,YAAY,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,CAAA;CAC/C;AAED,MAAM,MAAM,SAAS,CAAC,CAAC,IACpB;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,KAAK,EAAE,CAAC,CAAA;CAAE,GACtB;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,KAAK,EAAE,QAAQ,CAAA;CAAE,CAAA;AAEjC,wBAAgB,eAAe,CAAC,OAAO,SAAS,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,EACxE,OAAO,EAAE,MAAM,EACf,OAAO,CAAC,EAAE,gBAAgB,GACxB,SAAS,CAAC,OAAO,CAAC,CAmCpB"}
@@ -0,0 +1,30 @@
1
+ export function createRpcClient(baseUrl, options) {
2
+ return {
3
+ async call(method, input) {
4
+ const response = await fetch(`${baseUrl}/rpc`, {
5
+ method: 'POST',
6
+ headers: {
7
+ 'Content-Type': 'application/json',
8
+ ...options?.headers,
9
+ },
10
+ credentials: options?.credentials,
11
+ body: JSON.stringify({ method, input }),
12
+ });
13
+ const data = (await response.json());
14
+ if (!response.ok) {
15
+ return {
16
+ ok: false,
17
+ error: data.error ?? { type: 'transport_error', message: `HTTP ${response.status}` },
18
+ };
19
+ }
20
+ if (data.ok) {
21
+ return { ok: true, value: data.value };
22
+ }
23
+ return {
24
+ ok: false,
25
+ error: data.error ?? { type: 'unknown_error', message: 'Unknown error' },
26
+ };
27
+ },
28
+ };
29
+ }
30
+ //# sourceMappingURL=rpc-client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rpc-client.js","sourceRoot":"","sources":["../../src/platform/rpc-client.ts"],"names":[],"mappings":"AA4BA,MAAM,UAAU,eAAe,CAC9B,OAAe,EACf,OAA0B;IAE1B,OAAO;QACN,KAAK,CAAC,IAAI,CACT,MAAS,EACT,KAA8B;YAE9B,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,OAAO,MAAM,EAAE;gBAC9C,MAAM,EAAE,MAAM;gBACd,OAAO,EAAE;oBACR,cAAc,EAAE,kBAAkB;oBAClC,GAAG,OAAO,EAAE,OAAO;iBACnB;gBACD,WAAW,EAAE,OAAO,EAAE,WAAW;gBACjC,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;aACvC,CAAC,CAAA;YAEF,MAAM,IAAI,GAAG,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAgB,CAAA;YAEnD,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;gBAClB,OAAO;oBACN,EAAE,EAAE,KAAK;oBACT,KAAK,EAAE,IAAI,CAAC,KAAK,IAAI,EAAE,IAAI,EAAE,iBAAiB,EAAE,OAAO,EAAE,QAAQ,QAAQ,CAAC,MAAM,EAAE,EAAE;iBACpF,CAAA;YACF,CAAC;YAED,IAAI,IAAI,CAAC,EAAE,EAAE,CAAC;gBACb,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC,KAAiC,EAAE,CAAA;YACnE,CAAC;YAED,OAAO;gBACN,EAAE,EAAE,KAAK;gBACT,KAAK,EAAE,IAAI,CAAC,KAAK,IAAI,EAAE,IAAI,EAAE,eAAe,EAAE,OAAO,EAAE,eAAe,EAAE;aACxE,CAAA;QACF,CAAC;KACD,CAAA;AACF,CAAC"}
@@ -37,3 +37,4 @@ export interface RpcError {
37
37
  message: string;
38
38
  details?: unknown;
39
39
  }
40
+ //# sourceMappingURL=rpc-definition.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rpc-definition.d.ts","sourceRoot":"","sources":["../../src/platform/rpc-definition.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,4DAA4D;AAC5D,MAAM,WAAW,SAAS,CAAC,CAAC,GAAG,OAAO,EAAE,CAAC,GAAG,OAAO;IAClD,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAA;IAClB,QAAQ,CAAC,OAAO,EAAE,CAAC,CAAA;CACnB;AAED,oEAAoE;AACpE,wBAAgB,MAAM,CAAC,CAAC,EAAE,CAAC,KAAK,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,CAE9C;AAED,4EAA4E;AAC5E,wBAAgB,aAAa,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,EAAE,OAAO,EAAE,CAAC,GAAG,CAAC,CAEhF;AAED,6CAA6C;AAC7C,MAAM,MAAM,WAAW,CACtB,OAAO,SAAS,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,EACzC,CAAC,SAAS,MAAM,OAAO,IACpB,OAAO,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAA;AAExB,8CAA8C;AAC9C,MAAM,MAAM,YAAY,CACvB,OAAO,SAAS,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,EACzC,CAAC,SAAS,MAAM,OAAO,IACpB,OAAO,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAA;AAEzB,4BAA4B;AAC5B,MAAM,WAAW,UAAU,CAAC,CAAC,SAAS,MAAM,GAAG,MAAM;IACpD,MAAM,EAAE,CAAC,CAAA;IACT,KAAK,EAAE,OAAO,CAAA;CACd;AAED,6BAA6B;AAC7B,MAAM,WAAW,WAAW,CAAC,CAAC,GAAG,OAAO;IACvC,EAAE,EAAE,OAAO,CAAA;IACX,KAAK,CAAC,EAAE,CAAC,CAAA;IACT,KAAK,CAAC,EAAE,QAAQ,CAAA;CAChB;AAED,MAAM,WAAW,QAAQ;IACxB,IAAI,EAAE,MAAM,CAAA;IACZ,OAAO,EAAE,MAAM,CAAA;IACf,OAAO,CAAC,EAAE,OAAO,CAAA;CACjB"}
@@ -0,0 +1,19 @@
1
+ /**
2
+ * Type-safe RPC definition system.
3
+ * No external dependencies — just TypeScript types + minimal runtime.
4
+ *
5
+ * Usage:
6
+ * const methods = defineMethods({
7
+ * 'instances.create': method<CreateInput, CreateOutput>(),
8
+ * 'sessions.list': method<ListInput, ListOutput>(),
9
+ * })
10
+ */
11
+ /** Define a method type. Zero runtime cost — just a type marker. */
12
+ export function method() {
13
+ return {};
14
+ }
15
+ /** Define a set of methods. Returns the definition object as-is (typed). */
16
+ export function defineMethods(methods) {
17
+ return methods;
18
+ }
19
+ //# sourceMappingURL=rpc-definition.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rpc-definition.js","sourceRoot":"","sources":["../../src/platform/rpc-definition.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAQH,oEAAoE;AACpE,MAAM,UAAU,MAAM;IACrB,OAAO,EAAqB,CAAA;AAC7B,CAAC;AAED,4EAA4E;AAC5E,MAAM,UAAU,aAAa,CAAsC,OAAU;IAC5E,OAAO,OAAO,CAAA;AACf,CAAC"}
@@ -19,3 +19,4 @@ export interface RpcRouter<Ctx> {
19
19
  handle(request: RpcRequest, ctx: Ctx): Promise<RpcResponse>;
20
20
  }
21
21
  export declare function createRpcRouter<Methods extends Record<string, MethodDef>, Ctx>(_methods: Methods, handlers: MethodHandlers<Methods, Ctx>): RpcRouter<Ctx>;
22
+ //# sourceMappingURL=rpc-server.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rpc-server.d.ts","sourceRoot":"","sources":["../../src/platform/rpc-server.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AACH,OAAO,KAAK,EAAE,SAAS,EAAE,WAAW,EAAE,YAAY,EAAY,UAAU,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAA;AAE/G,MAAM,MAAM,aAAa,CACxB,OAAO,SAAS,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,EACzC,CAAC,SAAS,MAAM,OAAO,EACvB,GAAG,IACA,CAAC,KAAK,EAAE,WAAW,CAAC,OAAO,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,GAAG,KAAK,OAAO,CAAC,YAAY,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAA;AAEnF,MAAM,MAAM,cAAc,CACzB,OAAO,SAAS,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,EACzC,GAAG,IACA;KACF,CAAC,IAAI,MAAM,OAAO,GAAG,aAAa,CAAC,OAAO,EAAE,CAAC,EAAE,GAAG,CAAC;CACpD,CAAA;AAED,MAAM,WAAW,SAAS,CAAC,GAAG;IAC7B,MAAM,CAAC,OAAO,EAAE,UAAU,EAAE,GAAG,EAAE,GAAG,GAAG,OAAO,CAAC,WAAW,CAAC,CAAA;CAC3D;AAED,wBAAgB,eAAe,CAC9B,OAAO,SAAS,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,EACzC,GAAG,EAEH,QAAQ,EAAE,OAAO,EACjB,QAAQ,EAAE,cAAc,CAAC,OAAO,EAAE,GAAG,CAAC,GACpC,SAAS,CAAC,GAAG,CAAC,CAsBhB"}
@@ -0,0 +1,24 @@
1
+ export function createRpcRouter(_methods, handlers) {
2
+ return {
3
+ async handle(request, ctx) {
4
+ const handler = handlers[request.method];
5
+ if (!handler) {
6
+ return {
7
+ ok: false,
8
+ error: { type: 'method_not_found', message: `Unknown method: ${request.method}` },
9
+ };
10
+ }
11
+ try {
12
+ const result = await handler(request.input, ctx);
13
+ return { ok: true, value: result };
14
+ }
15
+ catch (error) {
16
+ const rpcError = error instanceof Error
17
+ ? { type: 'handler_error', message: error.message }
18
+ : { type: 'unknown_error', message: String(error) };
19
+ return { ok: false, error: rpcError };
20
+ }
21
+ },
22
+ };
23
+ }
24
+ //# sourceMappingURL=rpc-server.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rpc-server.js","sourceRoot":"","sources":["../../src/platform/rpc-server.ts"],"names":[],"mappings":"AA+BA,MAAM,UAAU,eAAe,CAI9B,QAAiB,EACjB,QAAsC;IAEtC,OAAO;QACN,KAAK,CAAC,MAAM,CAAC,OAAmB,EAAE,GAAQ;YACzC,MAAM,OAAO,GAAG,QAAQ,CAAC,OAAO,CAAC,MAAuB,CAAC,CAAA;YACzD,IAAI,CAAC,OAAO,EAAE,CAAC;gBACd,OAAO;oBACN,EAAE,EAAE,KAAK;oBACT,KAAK,EAAE,EAAE,IAAI,EAAE,kBAAkB,EAAE,OAAO,EAAE,mBAAmB,OAAO,CAAC,MAAM,EAAE,EAAE;iBACjF,CAAA;YACF,CAAC;YAED,IAAI,CAAC;gBACJ,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,OAAO,CAAC,KAAY,EAAE,GAAG,CAAC,CAAA;gBACvD,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,CAAA;YACnC,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBAChB,MAAM,QAAQ,GAAa,KAAK,YAAY,KAAK;oBAChD,CAAC,CAAC,EAAE,IAAI,EAAE,eAAe,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE;oBACnD,CAAC,CAAC,EAAE,IAAI,EAAE,eAAe,EAAE,OAAO,EAAE,MAAM,CAAC,KAAK,CAAC,EAAE,CAAA;gBACpD,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAA;YACtC,CAAC;QACF,CAAC;KACD,CAAA;AACF,CAAC"}
@@ -1 +1,2 @@
1
1
  export type SandboxState = 'stopped' | 'starting' | 'running' | 'pausing' | 'paused' | 'failed';
2
+ //# sourceMappingURL=sandbox-state.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sandbox-state.d.ts","sourceRoot":"","sources":["../../src/platform/sandbox-state.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,YAAY,GAAG,SAAS,GAAG,UAAU,GAAG,SAAS,GAAG,SAAS,GAAG,QAAQ,GAAG,QAAQ,CAAA"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=sandbox-state.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sandbox-state.js","sourceRoot":"","sources":["../../src/platform/sandbox-state.ts"],"names":[],"mappings":""}
@@ -32,3 +32,4 @@ export declare function buildWsUrl({ platformUrl, instanceId, sessionId, token }
32
32
  * Build the RPC base URL for a roj instance.
33
33
  */
34
34
  export declare function buildApiBaseUrl(platformUrl: string, instanceId: string): string;
35
+ //# sourceMappingURL=urls.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"urls.d.ts","sourceRoot":"","sources":["../../src/platform/urls.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,wBAAgB,eAAe,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,CAE1D;AAED,MAAM,WAAW,sBAAsB;IACtC,UAAU,EAAE,MAAM,CAAA;IAClB,IAAI,EAAE,MAAM,CAAA;IACZ,UAAU,EAAE,MAAM,CAAA;IAClB,2DAA2D;IAC3D,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,kFAAkF;IAClF,WAAW,CAAC,EAAE,MAAM,CAAA;CACpB;AAED;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,EAAE,UAAU,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,WAAW,EAAE,EAAE,sBAAsB,GAAG,MAAM,CAapH;AAED,MAAM,WAAW,iBAAiB;IACjC,WAAW,EAAE,MAAM,CAAA;IACnB,UAAU,EAAE,MAAM,CAAA;IAClB,SAAS,EAAE,MAAM,CAAA;IACjB,KAAK,EAAE,MAAM,CAAA;CACb;AAED;;GAEG;AACH,wBAAgB,UAAU,CAAC,EAAE,WAAW,EAAE,UAAU,EAAE,SAAS,EAAE,KAAK,EAAE,EAAE,iBAAiB,GAAG,MAAM,CAMnG;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,WAAW,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,MAAM,CAE/E"}
@@ -0,0 +1,42 @@
1
+ /**
2
+ * Convert an instance UUID to its full 32-char hex representation (no hyphens, lowercase).
3
+ */
4
+ export function instanceIdToHex(instanceId) {
5
+ return instanceId.replace(/-/g, '').toLowerCase();
6
+ }
7
+ /**
8
+ * Build a dev preview URL for a service running in a roj sandbox.
9
+ *
10
+ * Production: https://dev-{slug}-{code}.{baseDomain}/
11
+ * Local dev: {platformUrl}/api/v1/instances/{id}/preview/{code}/
12
+ */
13
+ export function buildPreviewUrl({ instanceId, code, baseDomain, token, platformUrl }) {
14
+ // Cloudflare quick tunnels are already subdomains — can't nest further
15
+ if (baseDomain.includes('trycloudflare.com') && platformUrl) {
16
+ const base = `${platformUrl}/api/v1/instances/${instanceId}/preview/${code}`;
17
+ return token ? `${base}/?token=${encodeURIComponent(token)}` : base;
18
+ }
19
+ // Subdomain-based: dev-{hex}-{code}.{baseDomain}
20
+ // Works on localhost (*.localhost resolves to 127.0.0.1) and production
21
+ const hex = instanceIdToHex(instanceId);
22
+ const protocol = baseDomain.includes('localhost') ? 'http' : 'https';
23
+ const base = `${protocol}://dev-${hex}-${code}.${baseDomain}`;
24
+ return token ? `${base}/?token=${encodeURIComponent(token)}` : base;
25
+ }
26
+ /**
27
+ * Build a WebSocket URL for connecting to a roj instance.
28
+ */
29
+ export function buildWsUrl({ platformUrl, instanceId, sessionId, token }) {
30
+ const url = new URL(`/api/v1/instances/${instanceId}/ws`, platformUrl);
31
+ url.protocol = url.protocol === 'https:' ? 'wss:' : 'ws:';
32
+ url.searchParams.set('token', token);
33
+ url.searchParams.set('sessionId', sessionId);
34
+ return url.toString();
35
+ }
36
+ /**
37
+ * Build the RPC base URL for a roj instance.
38
+ */
39
+ export function buildApiBaseUrl(platformUrl, instanceId) {
40
+ return `${platformUrl}/api/v1/instances/${instanceId}`;
41
+ }
42
+ //# sourceMappingURL=urls.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"urls.js","sourceRoot":"","sources":["../../src/platform/urls.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,UAAU,eAAe,CAAC,UAAkB;IACjD,OAAO,UAAU,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,WAAW,EAAE,CAAA;AAClD,CAAC;AAYD;;;;;GAKG;AACH,MAAM,UAAU,eAAe,CAAC,EAAE,UAAU,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,WAAW,EAA0B;IAC3G,uEAAuE;IACvE,IAAI,UAAU,CAAC,QAAQ,CAAC,mBAAmB,CAAC,IAAI,WAAW,EAAE,CAAC;QAC7D,MAAM,IAAI,GAAG,GAAG,WAAW,qBAAqB,UAAU,YAAY,IAAI,EAAE,CAAA;QAC5E,OAAO,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,WAAW,kBAAkB,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAA;IACpE,CAAC;IAED,iDAAiD;IACjD,wEAAwE;IACxE,MAAM,GAAG,GAAG,eAAe,CAAC,UAAU,CAAC,CAAA;IACvC,MAAM,QAAQ,GAAG,UAAU,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAA;IACpE,MAAM,IAAI,GAAG,GAAG,QAAQ,UAAU,GAAG,IAAI,IAAI,IAAI,UAAU,EAAE,CAAA;IAC7D,OAAO,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,WAAW,kBAAkB,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAA;AACpE,CAAC;AASD;;GAEG;AACH,MAAM,UAAU,UAAU,CAAC,EAAE,WAAW,EAAE,UAAU,EAAE,SAAS,EAAE,KAAK,EAAqB;IAC1F,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,qBAAqB,UAAU,KAAK,EAAE,WAAW,CAAC,CAAA;IACtE,GAAG,CAAC,QAAQ,GAAG,GAAG,CAAC,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAA;IACzD,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,OAAO,EAAE,KAAK,CAAC,CAAA;IACpC,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,WAAW,EAAE,SAAS,CAAC,CAAA;IAC5C,OAAO,GAAG,CAAC,QAAQ,EAAE,CAAA;AACtB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,eAAe,CAAC,WAAmB,EAAE,UAAkB;IACtE,OAAO,GAAG,WAAW,qBAAqB,UAAU,EAAE,CAAA;AACvD,CAAC"}
package/package.json CHANGED
@@ -1,23 +1,23 @@
1
1
  {
2
2
  "name": "@roj-ai/client",
3
- "version": "0.1.1",
3
+ "version": "0.1.4",
4
4
  "type": "module",
5
- "main": "./src/index.ts",
5
+ "main": "./dist/index.js",
6
6
  "exports": {
7
7
  ".": {
8
8
  "types": "./dist/index.d.ts",
9
- "import": "./src/index.ts",
10
- "default": "./src/index.ts"
9
+ "import": "./dist/index.js",
10
+ "default": "./dist/index.js"
11
11
  },
12
12
  "./api": {
13
13
  "types": "./dist/api/client.d.ts",
14
- "import": "./src/api/client.ts",
15
- "default": "./src/api/client.ts"
14
+ "import": "./dist/api/client.js",
15
+ "default": "./dist/api/client.js"
16
16
  },
17
17
  "./platform": {
18
18
  "types": "./dist/platform/index.d.ts",
19
- "import": "./src/platform/index.ts",
20
- "default": "./src/platform/index.ts"
19
+ "import": "./dist/platform/index.js",
20
+ "default": "./dist/platform/index.js"
21
21
  }
22
22
  },
23
23
  "files": [
@@ -40,7 +40,7 @@
40
40
  "type-check": "tsc --noEmit"
41
41
  },
42
42
  "dependencies": {
43
- "@roj-ai/shared": "^0.1.1"
43
+ "@roj-ai/shared": "^0.1.4"
44
44
  },
45
45
  "devDependencies": {
46
46
  "typescript": "5.9.3"