@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.
@@ -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
  */
@@ -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;IAuB9C;;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"}
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"}
@@ -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
- return Err(data.error ?? { type: 'transport_error', message: 'Request failed' });
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) {
@@ -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;QAEnD,6DAA6D;QAC7D,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,qBAAqB;QACrB,IAAI,IAAI,CAAC,EAAE,EAAE,CAAC;YACb,OAAO,EAAE,CAAC,IAAI,CAAC,KAAqB,CAAC,CAAA;QACtC,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"}
1
+ {"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/rpc/client.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@roj-ai/shared",
3
- "version": "0.1.9",
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.9",
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
- return Err(data.error ?? { type: 'transport_error', message: 'Request failed' })
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 as RpcOutput<M>)
185
+ return Ok(data.value)
162
186
  }
163
187
 
164
188
  return Err(data.error ?? { type: 'unknown_error', message: 'Unknown error' })