@roj-ai/shared 0.1.9 → 0.1.11
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/rpc/client.d.ts +11 -0
- package/dist/rpc/client.d.ts.map +1 -1
- package/dist/rpc/client.js +23 -3
- package/dist/rpc/client.js.map +1 -1
- package/package.json +2 -2
- package/src/rpc/client.ts +28 -4
package/dist/rpc/client.d.ts
CHANGED
|
@@ -83,6 +83,17 @@ export declare class RpcClient {
|
|
|
83
83
|
* Call an RPC method with type-safe input and output.
|
|
84
84
|
*/
|
|
85
85
|
call<M extends RpcMethodName>(method: M, input: RpcInput<M>): Promise<Result<RpcOutput<M>, RpcErrorInfo>>;
|
|
86
|
+
/**
|
|
87
|
+
* Low-level RPC call that bypasses the typed method registry.
|
|
88
|
+
*
|
|
89
|
+
* Same transport, headers, and auth as `call`, but with `string` method
|
|
90
|
+
* names and `unknown` input/output. Intended for callers that operate
|
|
91
|
+
* against a different method registry than the agent runtime's
|
|
92
|
+
* `RpcMethods` (e.g. platform/instance methods defined in
|
|
93
|
+
* `@roj-ai/client/platform`). Build a typed wrapper on top — do not call
|
|
94
|
+
* directly from app code.
|
|
95
|
+
*/
|
|
96
|
+
callUntyped(method: string, input: unknown): Promise<Result<unknown, RpcErrorInfo>>;
|
|
86
97
|
/**
|
|
87
98
|
* Execute multiple RPC calls as a batch.
|
|
88
99
|
*/
|
package/dist/rpc/client.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/rpc/client.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAA;AACzE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAA;AAG9C;;GAEG;AACH,MAAM,WAAW,YAAY;IAC5B,IAAI,EAAE,MAAM,CAAA;IACZ,OAAO,EAAE,MAAM,CAAA;IACf,OAAO,CAAC,EAAE,OAAO,CAAA;CACjB;AAED;;GAEG;AACH,qBAAa,QAAS,SAAQ,KAAK;IAE1B,MAAM,EAAE,MAAM;IACd,KAAK,EAAE,YAAY;gBADnB,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,YAAY;CAK3B;AAiBD;;GAEG;AACH,MAAM,WAAW,UAAU,CAAC,EAAE;IAC7B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;IACvB,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAA;CACvB;AAED;;GAEG;AACH,qBAAa,YAAY;IACxB,GAAG,CAAC,CAAC,SAAS,aAAa,EAAE,MAAM,EAAE,CAAC,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAC,GAAG,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;CAGrF;AAED;;GAEG;AACH,KAAK,YAAY,CAAC,CAAC,SAAS,SAAS,UAAU,CAAC,OAAO,CAAC,EAAE,IAAI;KAC5D,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,UAAU,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,GAAG,KAAK;CAC5D,CAAA;AAED;;GAEG;AACH,qBAAa,SAAS;IAIT,OAAO,CAAC,OAAO;IAH3B,OAAO,CAAC,SAAS,CAAsB;IACvC,OAAO,CAAC,SAAS,CAAsB;gBAEnB,OAAO,GAAE,MAAW;IAExC;;OAEG;IACH,UAAU,IAAI,MAAM;IAIpB;;;OAGG;IACH,YAAY,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI;IAI5C;;OAEG;IACH,YAAY,IAAI,MAAM,GAAG,IAAI;IAI7B;;;;;OAKG;IACH,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI;IAIxC;;OAEG;IACH,YAAY,IAAI,MAAM,GAAG,IAAI;IAI7B,OAAO,CAAC,SAAS;IAQjB,OAAO,CAAC,YAAY;IAKpB;;OAEG;IACG,IAAI,CAAC,CAAC,SAAS,aAAa,EACjC,MAAM,EAAE,CAAC,EACT,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAC,GAChB,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,YAAY,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/rpc/client.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAA;AACzE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAA;AAG9C;;GAEG;AACH,MAAM,WAAW,YAAY;IAC5B,IAAI,EAAE,MAAM,CAAA;IACZ,OAAO,EAAE,MAAM,CAAA;IACf,OAAO,CAAC,EAAE,OAAO,CAAA;CACjB;AAED;;GAEG;AACH,qBAAa,QAAS,SAAQ,KAAK;IAE1B,MAAM,EAAE,MAAM;IACd,KAAK,EAAE,YAAY;gBADnB,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,YAAY;CAK3B;AAiBD;;GAEG;AACH,MAAM,WAAW,UAAU,CAAC,EAAE;IAC7B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;IACvB,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAA;CACvB;AAED;;GAEG;AACH,qBAAa,YAAY;IACxB,GAAG,CAAC,CAAC,SAAS,aAAa,EAAE,MAAM,EAAE,CAAC,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAC,GAAG,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;CAGrF;AAED;;GAEG;AACH,KAAK,YAAY,CAAC,CAAC,SAAS,SAAS,UAAU,CAAC,OAAO,CAAC,EAAE,IAAI;KAC5D,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,UAAU,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,GAAG,KAAK;CAC5D,CAAA;AAED;;GAEG;AACH,qBAAa,SAAS;IAIT,OAAO,CAAC,OAAO;IAH3B,OAAO,CAAC,SAAS,CAAsB;IACvC,OAAO,CAAC,SAAS,CAAsB;gBAEnB,OAAO,GAAE,MAAW;IAExC;;OAEG;IACH,UAAU,IAAI,MAAM;IAIpB;;;OAGG;IACH,YAAY,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI;IAI5C;;OAEG;IACH,YAAY,IAAI,MAAM,GAAG,IAAI;IAI7B;;;;;OAKG;IACH,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI;IAIxC;;OAEG;IACH,YAAY,IAAI,MAAM,GAAG,IAAI;IAI7B,OAAO,CAAC,SAAS;IAQjB,OAAO,CAAC,YAAY;IAKpB;;OAEG;IACG,IAAI,CAAC,CAAC,SAAS,aAAa,EACjC,MAAM,EAAE,CAAC,EACT,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAC,GAChB,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,YAAY,CAAC,CAAC;IAI9C;;;;;;;;;OASG;IACG,WAAW,CAChB,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,OAAO,GACZ,OAAO,CAAC,MAAM,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC;IA8BzC;;OAEG;IACG,KAAK,CAAC,KAAK,CAAC,CAAC,SAAS,SAAS,UAAU,CAAC,OAAO,CAAC,EAAE,EACzD,UAAU,EAAE,CAAC,CAAC,EAAE,YAAY,KAAK,CAAC,GAChC,OAAO,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,YAAY,CAAC,CAAC;CAuCjD"}
|
package/dist/rpc/client.js
CHANGED
|
@@ -90,16 +90,36 @@ export class RpcClient {
|
|
|
90
90
|
* Call an RPC method with type-safe input and output.
|
|
91
91
|
*/
|
|
92
92
|
async call(method, input) {
|
|
93
|
+
return this.callUntyped(method, input);
|
|
94
|
+
}
|
|
95
|
+
/**
|
|
96
|
+
* Low-level RPC call that bypasses the typed method registry.
|
|
97
|
+
*
|
|
98
|
+
* Same transport, headers, and auth as `call`, but with `string` method
|
|
99
|
+
* names and `unknown` input/output. Intended for callers that operate
|
|
100
|
+
* against a different method registry than the agent runtime's
|
|
101
|
+
* `RpcMethods` (e.g. platform/instance methods defined in
|
|
102
|
+
* `@roj-ai/client/platform`). Build a typed wrapper on top — do not call
|
|
103
|
+
* directly from app code.
|
|
104
|
+
*/
|
|
105
|
+
async callUntyped(method, input) {
|
|
93
106
|
const response = await fetch(this.getRpcUrl(), {
|
|
94
107
|
method: 'POST',
|
|
95
108
|
headers: this.buildHeaders({ 'Content-Type': 'application/json' }),
|
|
96
109
|
body: JSON.stringify({ method, input }),
|
|
97
110
|
credentials: 'include',
|
|
98
111
|
});
|
|
99
|
-
const data = (await response.json());
|
|
100
|
-
// Transport error (non-200 for invalid JSON, missing method)
|
|
112
|
+
const data = (await response.json().catch(() => ({})));
|
|
113
|
+
// Transport error (non-200 for invalid JSON, missing method, auth failure, …).
|
|
114
|
+
// The instance-auth 401 body uses `{ error: { code, message } }` rather than
|
|
115
|
+
// `{ error: { type, message } }`; normalize it so callers always see a
|
|
116
|
+
// well-formed `RpcErrorInfo`.
|
|
101
117
|
if (!response.ok) {
|
|
102
|
-
|
|
118
|
+
const raw = data.error;
|
|
119
|
+
if (raw && (raw.type || raw.code) && raw.message) {
|
|
120
|
+
return Err({ type: raw.type ?? raw.code ?? 'transport_error', message: raw.message, details: raw.details });
|
|
121
|
+
}
|
|
122
|
+
return Err({ type: 'transport_error', message: `Request failed (HTTP ${response.status})` });
|
|
103
123
|
}
|
|
104
124
|
// Application result
|
|
105
125
|
if (data.ok) {
|
package/dist/rpc/client.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/rpc/client.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAIH,OAAO,EAAE,GAAG,EAAE,EAAE,EAAE,MAAM,kBAAkB,CAAA;AAW1C;;GAEG;AACH,MAAM,OAAO,QAAS,SAAQ,KAAK;IAE1B;IACA;IAFR,YACQ,MAAc,EACd,KAAmB;QAE1B,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,CAAA;QAHb,WAAM,GAAN,MAAM,CAAQ;QACd,UAAK,GAAL,KAAK,CAAc;QAG1B,IAAI,CAAC,IAAI,GAAG,UAAU,CAAA;IACvB,CAAC;CACD;AAyBD;;GAEG;AACH,MAAM,OAAO,YAAY;IACxB,GAAG,CAA0B,MAAS,EAAE,KAAkB;QACzD,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,CAAA;IACzB,CAAC;CACD;AASD;;GAEG;AACH,MAAM,OAAO,SAAS;IAID;IAHZ,SAAS,GAAkB,IAAI,CAAA;IAC/B,SAAS,GAAkB,IAAI,CAAA;IAEvC,YAAoB,UAAkB,EAAE;QAApB,YAAO,GAAP,OAAO,CAAa;IAAG,CAAC;IAE5C;;OAEG;IACH,UAAU;QACT,OAAO,IAAI,CAAC,OAAO,CAAA;IACpB,CAAC;IAED;;;OAGG;IACH,YAAY,CAAC,SAAwB;QACpC,IAAI,CAAC,SAAS,GAAG,SAAS,CAAA;IAC3B,CAAC;IAED;;OAEG;IACH,YAAY;QACX,OAAO,IAAI,CAAC,SAAS,CAAA;IACtB,CAAC;IAED;;;;;OAKG;IACH,YAAY,CAAC,KAAoB;QAChC,IAAI,CAAC,SAAS,GAAG,KAAK,CAAA;IACvB,CAAC;IAED;;OAEG;IACH,YAAY;QACX,OAAO,IAAI,CAAC,SAAS,CAAA;IACtB,CAAC;IAEO,SAAS;QAChB,IAAI,GAAG,GAAG,GAAG,IAAI,CAAC,OAAO,MAAM,CAAA;QAC/B,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;YACpB,GAAG,IAAI,YAAY,kBAAkB,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAA;QACxD,CAAC;QACD,OAAO,GAAG,CAAA;IACX,CAAC;IAEO,YAAY,CAAC,KAA6B;QACjD,IAAI,CAAC,IAAI,CAAC,SAAS;YAAE,OAAO,KAAK,CAAA;QACjC,OAAO,EAAE,GAAG,KAAK,EAAE,aAAa,EAAE,UAAU,IAAI,CAAC,SAAS,EAAE,EAAE,CAAA;IAC/D,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,IAAI,CACT,MAAS,EACT,KAAkB;QAElB,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,IAAI,CAAC,SAAS,EAAE,EAAE;YAC9C,MAAM,EAAE,MAAM;YACd,OAAO,EAAE,IAAI,CAAC,YAAY,CAAC,EAAE,cAAc,EAAE,kBAAkB,EAAE,CAAC;YAClE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;YACvC,WAAW,EAAE,SAAS;SACtB,CAAC,CAAA;QAEF,MAAM,IAAI,GAAG,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAgB,CAAA;
|
|
1
|
+
{"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/rpc/client.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAIH,OAAO,EAAE,GAAG,EAAE,EAAE,EAAE,MAAM,kBAAkB,CAAA;AAW1C;;GAEG;AACH,MAAM,OAAO,QAAS,SAAQ,KAAK;IAE1B;IACA;IAFR,YACQ,MAAc,EACd,KAAmB;QAE1B,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,CAAA;QAHb,WAAM,GAAN,MAAM,CAAQ;QACd,UAAK,GAAL,KAAK,CAAc;QAG1B,IAAI,CAAC,IAAI,GAAG,UAAU,CAAA;IACvB,CAAC;CACD;AAyBD;;GAEG;AACH,MAAM,OAAO,YAAY;IACxB,GAAG,CAA0B,MAAS,EAAE,KAAkB;QACzD,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,CAAA;IACzB,CAAC;CACD;AASD;;GAEG;AACH,MAAM,OAAO,SAAS;IAID;IAHZ,SAAS,GAAkB,IAAI,CAAA;IAC/B,SAAS,GAAkB,IAAI,CAAA;IAEvC,YAAoB,UAAkB,EAAE;QAApB,YAAO,GAAP,OAAO,CAAa;IAAG,CAAC;IAE5C;;OAEG;IACH,UAAU;QACT,OAAO,IAAI,CAAC,OAAO,CAAA;IACpB,CAAC;IAED;;;OAGG;IACH,YAAY,CAAC,SAAwB;QACpC,IAAI,CAAC,SAAS,GAAG,SAAS,CAAA;IAC3B,CAAC;IAED;;OAEG;IACH,YAAY;QACX,OAAO,IAAI,CAAC,SAAS,CAAA;IACtB,CAAC;IAED;;;;;OAKG;IACH,YAAY,CAAC,KAAoB;QAChC,IAAI,CAAC,SAAS,GAAG,KAAK,CAAA;IACvB,CAAC;IAED;;OAEG;IACH,YAAY;QACX,OAAO,IAAI,CAAC,SAAS,CAAA;IACtB,CAAC;IAEO,SAAS;QAChB,IAAI,GAAG,GAAG,GAAG,IAAI,CAAC,OAAO,MAAM,CAAA;QAC/B,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;YACpB,GAAG,IAAI,YAAY,kBAAkB,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAA;QACxD,CAAC;QACD,OAAO,GAAG,CAAA;IACX,CAAC;IAEO,YAAY,CAAC,KAA6B;QACjD,IAAI,CAAC,IAAI,CAAC,SAAS;YAAE,OAAO,KAAK,CAAA;QACjC,OAAO,EAAE,GAAG,KAAK,EAAE,aAAa,EAAE,UAAU,IAAI,CAAC,SAAS,EAAE,EAAE,CAAA;IAC/D,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,IAAI,CACT,MAAS,EACT,KAAkB;QAElB,OAAO,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,KAAK,CAAgD,CAAA;IACtF,CAAC;IAED;;;;;;;;;OASG;IACH,KAAK,CAAC,WAAW,CAChB,MAAc,EACd,KAAc;QAEd,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,IAAI,CAAC,SAAS,EAAE,EAAE;YAC9C,MAAM,EAAE,MAAM;YACd,OAAO,EAAE,IAAI,CAAC,YAAY,CAAC,EAAE,cAAc,EAAE,kBAAkB,EAAE,CAAC;YAClE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;YACvC,WAAW,EAAE,SAAS;SACtB,CAAC,CAAA;QAEF,MAAM,IAAI,GAAG,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAgB,CAAA;QAErE,+EAA+E;QAC/E,6EAA6E;QAC7E,uEAAuE;QACvE,8BAA8B;QAC9B,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;YAClB,MAAM,GAAG,GAAG,IAAI,CAAC,KAA0F,CAAA;YAC3G,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,IAAI,GAAG,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,OAAO,EAAE,CAAC;gBAClD,OAAO,GAAG,CAAC,EAAE,IAAI,EAAE,GAAG,CAAC,IAAI,IAAI,GAAG,CAAC,IAAI,IAAI,iBAAiB,EAAE,OAAO,EAAE,GAAG,CAAC,OAAO,EAAE,OAAO,EAAE,GAAG,CAAC,OAAO,EAAE,CAAC,CAAA;YAC5G,CAAC;YACD,OAAO,GAAG,CAAC,EAAE,IAAI,EAAE,iBAAiB,EAAE,OAAO,EAAE,wBAAwB,QAAQ,CAAC,MAAM,GAAG,EAAE,CAAC,CAAA;QAC7F,CAAC;QAED,qBAAqB;QACrB,IAAI,IAAI,CAAC,EAAE,EAAE,CAAC;YACb,OAAO,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;QACtB,CAAC;QAED,OAAO,GAAG,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE,IAAI,EAAE,eAAe,EAAE,OAAO,EAAE,eAAe,EAAE,CAAC,CAAA;IAC9E,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,KAAK,CACV,UAAkC;QAElC,MAAM,OAAO,GAAG,UAAU,CAAC,IAAI,YAAY,EAAE,CAAC,CAAA;QAE9C,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,IAAI,CAAC,SAAS,EAAE,EAAE;YAC9C,MAAM,EAAE,MAAM;YACd,OAAO,EAAE,IAAI,CAAC,YAAY,CAAC,EAAE,cAAc,EAAE,kBAAkB,EAAE,CAAC;YAClE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;gBACpB,KAAK,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC;aAC/D,CAAC;YACF,WAAW,EAAE,SAAS;SACtB,CAAC,CAAA;QAEF,MAAM,IAAI,GAAG,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAkB,CAAA;QAErD,kBAAkB;QAClB,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;YAClB,OAAO,GAAG,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE,IAAI,EAAE,iBAAiB,EAAE,OAAO,EAAE,gBAAgB,EAAE,CAAC,CAAA;QACjF,CAAC;QAED,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,IAAI,EAAE,CAAA;QAElC,wCAAwC;QACxC,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;YAC7B,IAAI,CAAC,KAAK,CAAC,EAAE,IAAI,KAAK,CAAC,KAAK,EAAE,CAAC;gBAC9B,OAAO,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,CAAA;YACxB,CAAC;QACF,CAAC;QAED,2EAA2E;QAC3E,IAAI,OAAO,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;YACrC,MAAM,UAAU,GAAG,OAAO,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAA;YAC9C,IAAI,UAAU,IAAI,CAAC,UAAU,CAAC,EAAE,IAAI,UAAU,CAAC,KAAK,EAAE,CAAC;gBACtD,OAAO,GAAG,CAAC,UAAU,CAAC,KAAK,CAAC,CAAA;YAC7B,CAAC;YACD,OAAO,GAAG,CAAC,EAAE,IAAI,EAAE,kBAAkB,EAAE,OAAO,EAAE,iCAAiC,EAAE,CAAC,CAAA;QACrF,CAAC;QAED,OAAO,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAoB,CAAC,CAAA;IACxD,CAAC;CACD"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@roj-ai/shared",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.11",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"main": "./dist/index.js",
|
|
6
6
|
"exports": {
|
|
@@ -38,7 +38,7 @@
|
|
|
38
38
|
"zod": "^4.1.12"
|
|
39
39
|
},
|
|
40
40
|
"devDependencies": {
|
|
41
|
-
"@roj-ai/sdk": "^0.1.
|
|
41
|
+
"@roj-ai/sdk": "^0.1.11",
|
|
42
42
|
"typescript": "^5.7.2"
|
|
43
43
|
},
|
|
44
44
|
"types": "./dist/index.d.ts"
|
package/src/rpc/client.ts
CHANGED
|
@@ -142,6 +142,23 @@ export class RpcClient {
|
|
|
142
142
|
method: M,
|
|
143
143
|
input: RpcInput<M>,
|
|
144
144
|
): Promise<Result<RpcOutput<M>, RpcErrorInfo>> {
|
|
145
|
+
return this.callUntyped(method, input) as Promise<Result<RpcOutput<M>, RpcErrorInfo>>
|
|
146
|
+
}
|
|
147
|
+
|
|
148
|
+
/**
|
|
149
|
+
* Low-level RPC call that bypasses the typed method registry.
|
|
150
|
+
*
|
|
151
|
+
* Same transport, headers, and auth as `call`, but with `string` method
|
|
152
|
+
* names and `unknown` input/output. Intended for callers that operate
|
|
153
|
+
* against a different method registry than the agent runtime's
|
|
154
|
+
* `RpcMethods` (e.g. platform/instance methods defined in
|
|
155
|
+
* `@roj-ai/client/platform`). Build a typed wrapper on top — do not call
|
|
156
|
+
* directly from app code.
|
|
157
|
+
*/
|
|
158
|
+
async callUntyped(
|
|
159
|
+
method: string,
|
|
160
|
+
input: unknown,
|
|
161
|
+
): Promise<Result<unknown, RpcErrorInfo>> {
|
|
145
162
|
const response = await fetch(this.getRpcUrl(), {
|
|
146
163
|
method: 'POST',
|
|
147
164
|
headers: this.buildHeaders({ 'Content-Type': 'application/json' }),
|
|
@@ -149,16 +166,23 @@ export class RpcClient {
|
|
|
149
166
|
credentials: 'include',
|
|
150
167
|
})
|
|
151
168
|
|
|
152
|
-
const data = (await response.json()) as RpcResponse
|
|
169
|
+
const data = (await response.json().catch(() => ({}))) as RpcResponse
|
|
153
170
|
|
|
154
|
-
// Transport error (non-200 for invalid JSON, missing method)
|
|
171
|
+
// Transport error (non-200 for invalid JSON, missing method, auth failure, …).
|
|
172
|
+
// The instance-auth 401 body uses `{ error: { code, message } }` rather than
|
|
173
|
+
// `{ error: { type, message } }`; normalize it so callers always see a
|
|
174
|
+
// well-formed `RpcErrorInfo`.
|
|
155
175
|
if (!response.ok) {
|
|
156
|
-
|
|
176
|
+
const raw = data.error as { type?: string; code?: string; message?: string; details?: unknown } | undefined
|
|
177
|
+
if (raw && (raw.type || raw.code) && raw.message) {
|
|
178
|
+
return Err({ type: raw.type ?? raw.code ?? 'transport_error', message: raw.message, details: raw.details })
|
|
179
|
+
}
|
|
180
|
+
return Err({ type: 'transport_error', message: `Request failed (HTTP ${response.status})` })
|
|
157
181
|
}
|
|
158
182
|
|
|
159
183
|
// Application result
|
|
160
184
|
if (data.ok) {
|
|
161
|
-
return Ok(data.value
|
|
185
|
+
return Ok(data.value)
|
|
162
186
|
}
|
|
163
187
|
|
|
164
188
|
return Err(data.error ?? { type: 'unknown_error', message: 'Unknown error' })
|