@tinycloud/courier 0.2.0-beta.39 → 0.2.0-beta.41
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/errors.d.ts +6 -0
- package/dist/errors.js +31 -0
- package/dist/errors.js.map +1 -1
- package/dist/inbox.js +2 -2
- package/dist/inbox.js.map +1 -1
- package/dist/store.js +7 -9
- package/dist/store.js.map +1 -1
- package/package.json +3 -3
package/dist/errors.d.ts
CHANGED
|
@@ -21,5 +21,11 @@ export interface ResultLike<T> {
|
|
|
21
21
|
};
|
|
22
22
|
};
|
|
23
23
|
}
|
|
24
|
+
/** Conditional write rejected by the store (HTTP 412 or KV_PRECONDITION_FAILED). */
|
|
25
|
+
export declare function isPreconditionError(error: unknown): boolean;
|
|
26
|
+
/** Key or space missing (HTTP 404 or KV_NOT_FOUND). */
|
|
27
|
+
export declare function isNotFoundError(error: unknown): boolean;
|
|
28
|
+
/** Node-side or network failure worth a bounded retry on an idempotent read: any 5xx, or a network code. */
|
|
29
|
+
export declare function isTransientError(error: unknown): boolean;
|
|
24
30
|
/** Unwrap an SDK Result, throwing a CourierError on failure. */
|
|
25
31
|
export declare function unwrap<T>(r: ResultLike<T> | T, what: string): T;
|
package/dist/errors.js
CHANGED
|
@@ -20,6 +20,37 @@ export function errInfo(e) {
|
|
|
20
20
|
message: String(anyE.message ?? e).slice(0, 400),
|
|
21
21
|
};
|
|
22
22
|
}
|
|
23
|
+
const TRANSIENT_CODES = ['NETWORK_ERROR', 'ECONNRESET', 'ETIMEDOUT'];
|
|
24
|
+
/** Reads one structured field. Message text is never parsed: keys and messages can contain any digits. */
|
|
25
|
+
function fieldOf(source, name) {
|
|
26
|
+
return typeof source === 'object' && source !== null ? Reflect.get(source, name) : undefined;
|
|
27
|
+
}
|
|
28
|
+
function asStatus(value) {
|
|
29
|
+
const n = typeof value === 'string' && /^\d{3}$/.test(value) ? Number(value) : value;
|
|
30
|
+
return typeof n === 'number' && Number.isInteger(n) ? n : undefined;
|
|
31
|
+
}
|
|
32
|
+
/** HTTP statuses from the `status`, `meta.status` and numeric `code` fields. Each field is checked on its own. */
|
|
33
|
+
function httpStatuses(error) {
|
|
34
|
+
return [fieldOf(error, 'status'), fieldOf(fieldOf(error, 'meta'), 'status'), fieldOf(error, 'code')]
|
|
35
|
+
.map(asStatus)
|
|
36
|
+
.filter((s) => s !== undefined);
|
|
37
|
+
}
|
|
38
|
+
/** Conditional write rejected by the store (HTTP 412 or KV_PRECONDITION_FAILED). */
|
|
39
|
+
export function isPreconditionError(error) {
|
|
40
|
+
return fieldOf(error, 'code') === 'KV_PRECONDITION_FAILED' || httpStatuses(error).includes(412);
|
|
41
|
+
}
|
|
42
|
+
/** Key or space missing (HTTP 404 or KV_NOT_FOUND). */
|
|
43
|
+
export function isNotFoundError(error) {
|
|
44
|
+
return fieldOf(error, 'code') === 'KV_NOT_FOUND' || httpStatuses(error).includes(404);
|
|
45
|
+
}
|
|
46
|
+
/** Node-side or network failure worth a bounded retry on an idempotent read: any 5xx, or a network code. */
|
|
47
|
+
export function isTransientError(error) {
|
|
48
|
+
if (httpStatuses(error).some((s) => s >= 500 && s <= 599))
|
|
49
|
+
return true;
|
|
50
|
+
const code = fieldOf(error, 'code');
|
|
51
|
+
const causeCode = fieldOf(fieldOf(error, 'cause'), 'code');
|
|
52
|
+
return TRANSIENT_CODES.some((c) => c === code || c === causeCode);
|
|
53
|
+
}
|
|
23
54
|
/** Unwrap an SDK Result, throwing a CourierError on failure. */
|
|
24
55
|
export function unwrap(r, what) {
|
|
25
56
|
if (r && typeof r === 'object' && 'ok' in r) {
|
package/dist/errors.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAAA,6DAA6D;AAC7D,MAAM,OAAO,YAAa,SAAQ,KAAK;IAC5B,IAAI,CAAS;IAEtB,YAAY,IAAY,EAAE,OAAe;QACvC,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,cAAc,CAAC;QAC3B,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IACnB,CAAC;CACF;AAED,4EAA4E;AAC5E,MAAM,UAAU,OAAO,CAAC,CAAU;IAChC,IAAI,CAAC,CAAC;QAAE,OAAO,EAAE,OAAO,EAAE,eAAe,EAAE,CAAC;IAC5C,IAAI,CAAC,YAAY,YAAY;QAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC;IACzF,MAAM,IAAI,GAAG,CAA4B,CAAC;IAC1C,OAAO;QACL,IAAI,EAAE,OAAO,IAAI,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS;QAC3D,IAAI,EAAE,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,MAAM;QAC9B,OAAO,EAAE,MAAM,CAAC,IAAI,CAAC,OAAO,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC;KACjD,CAAC;AACJ,CAAC;AAQD,gEAAgE;AAChE,MAAM,UAAU,MAAM,CAAI,CAAoB,EAAE,IAAY;IAC1D,IAAI,CAAC,IAAI,OAAO,CAAC,KAAK,QAAQ,IAAI,IAAI,IAAK,CAAmB,EAAE,CAAC;QAC/D,MAAM,GAAG,GAAG,CAAkB,CAAC;QAC/B,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;YACZ,MAAM,IAAI,GAAG,MAAM,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,IAAI,GAAG,CAAC,KAAK,EAAE,MAAM,IAAI,GAAG,CAAC,KAAK,EAAE,IAAI,EAAE,MAAM,IAAI,WAAW,CAAC,CAAC;YACpG,MAAM,IAAI,YAAY,CAAC,IAAI,EAAE,GAAG,IAAI,KAAK,GAAG,CAAC,KAAK,EAAE,OAAO,IAAI,QAAQ,EAAE,CAAC,CAAC;QAC7E,CAAC;QACD,OAAO,GAAG,CAAC,IAAS,CAAC;IACvB,CAAC;IACD,OAAO,CAAM,CAAC;AAChB,CAAC"}
|
|
1
|
+
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"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"}
|
package/dist/inbox.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { defer } from './defer.js';
|
|
2
|
-
import { errInfo } from './errors.js';
|
|
2
|
+
import { CourierError, errInfo } from './errors.js';
|
|
3
3
|
import { k, PREFIX } from './keys.js';
|
|
4
4
|
import { COUNTERPARTY_NOTICE, isRecord, messageView, oneLine } from './a2a.js';
|
|
5
5
|
import { getJson, listAll, putCreate, putMatch } from './store.js';
|
|
@@ -89,7 +89,7 @@ export async function commitReceipts(selfKv, pending) {
|
|
|
89
89
|
break;
|
|
90
90
|
}
|
|
91
91
|
catch (error) {
|
|
92
|
-
const conflict =
|
|
92
|
+
const conflict = error instanceof CourierError && error.code === 'conflict';
|
|
93
93
|
if (conflict && attempt < 2)
|
|
94
94
|
continue;
|
|
95
95
|
console.error(`warning: could not advance receipts for ${peer}: ${errInfo(error).message}`);
|
package/dist/inbox.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"inbox.js","sourceRoot":"","sources":["../src/inbox.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAEnC,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"inbox.js","sourceRoot":"","sources":["../src/inbox.ts"],"names":[],"mappings":"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"}
|
package/dist/store.js
CHANGED
|
@@ -1,8 +1,7 @@
|
|
|
1
1
|
import { defer } from './defer.js';
|
|
2
|
-
import { CourierError, unwrap } from './errors.js';
|
|
2
|
+
import { CourierError, unwrap, isNotFoundError, isPreconditionError, isTransientError } from './errors.js';
|
|
3
3
|
/** `DelegatedAccess.path` reflects only the first grant entry — always pass full keys (TC-708). */
|
|
4
4
|
const FULL = { prefix: '' };
|
|
5
|
-
const TRANSIENT = /fetch failed|NETWORK_ERROR|ECONNRESET|ETIMEDOUT|5\d\d/i;
|
|
6
5
|
async function nap(ms) {
|
|
7
6
|
const { promise, resolve } = defer();
|
|
8
7
|
setTimeout(resolve, ms);
|
|
@@ -16,8 +15,7 @@ async function readRetry(fn) {
|
|
|
16
15
|
const r = await fn();
|
|
17
16
|
const res = r;
|
|
18
17
|
if (res && typeof res === 'object' && res.ok === false) {
|
|
19
|
-
|
|
20
|
-
if (TRANSIENT.test(m) && i < 2) {
|
|
18
|
+
if (isTransientError(res.error) && i < 2) {
|
|
21
19
|
await nap(1500);
|
|
22
20
|
continue;
|
|
23
21
|
}
|
|
@@ -26,7 +24,8 @@ async function readRetry(fn) {
|
|
|
26
24
|
}
|
|
27
25
|
catch (e) {
|
|
28
26
|
last = e;
|
|
29
|
-
|
|
27
|
+
const undiciFetchFailure = e instanceof Error && e.message === 'fetch failed';
|
|
28
|
+
if (!(isTransientError(e) || undiciFetchFailure) || i === 2)
|
|
30
29
|
throw e;
|
|
31
30
|
await nap(1500);
|
|
32
31
|
}
|
|
@@ -45,7 +44,7 @@ export async function putCreate(kv, key, value) {
|
|
|
45
44
|
return putEtag(unwrap(r, `put ${key}`));
|
|
46
45
|
}
|
|
47
46
|
catch (e) {
|
|
48
|
-
if (e instanceof CourierError &&
|
|
47
|
+
if (e instanceof CourierError && r.ok === false && isPreconditionError(r.error)) {
|
|
49
48
|
throw new CourierError('conflict', `${key} already exists (create-only write)`);
|
|
50
49
|
}
|
|
51
50
|
throw e;
|
|
@@ -58,7 +57,7 @@ export async function putMatch(kv, key, value, etag) {
|
|
|
58
57
|
return putEtag(unwrap(r, `put ${key}`));
|
|
59
58
|
}
|
|
60
59
|
catch (e) {
|
|
61
|
-
if (e instanceof CourierError &&
|
|
60
|
+
if (e instanceof CourierError && r.ok === false && isPreconditionError(r.error)) {
|
|
62
61
|
throw new CourierError('conflict', `${key} changed under us; re-read and retry`);
|
|
63
62
|
}
|
|
64
63
|
throw e;
|
|
@@ -67,11 +66,10 @@ export async function putMatch(kv, key, value, etag) {
|
|
|
67
66
|
export async function getJson(kv, key) {
|
|
68
67
|
const r = (await readRetry(() => kv.get(key, FULL)));
|
|
69
68
|
if (r && typeof r === 'object' && 'ok' in r && !r.ok) {
|
|
70
|
-
const status = r.error?.status ?? r.error?.meta?.status ?? r.error?.code;
|
|
71
69
|
if (/space not found/i.test(String(r.error?.message))) {
|
|
72
70
|
throw new CourierError('no-space', String(r.error?.message));
|
|
73
71
|
}
|
|
74
|
-
if (
|
|
72
|
+
if (isNotFoundError(r.error))
|
|
75
73
|
return undefined;
|
|
76
74
|
unwrap(r, `get ${key}`);
|
|
77
75
|
}
|
package/dist/store.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"store.js","sourceRoot":"","sources":["../src/store.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAEnC,OAAO,EAAE,YAAY,EAAE,MAAM,EAAmB,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"store.js","sourceRoot":"","sources":["../src/store.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@tinycloud/courier",
|
|
3
|
-
"version": "0.2.0-beta.
|
|
3
|
+
"version": "0.2.0-beta.41",
|
|
4
4
|
"description": "Courier: agent-to-agent threads over TinyCloud (CLI, library and agent skill)",
|
|
5
5
|
"author": "TinyCloud, Inc.",
|
|
6
6
|
"type": "module",
|
|
@@ -30,11 +30,11 @@
|
|
|
30
30
|
"test:live": "tsc -p tsconfig.json && node scripts/happy-path.mjs"
|
|
31
31
|
},
|
|
32
32
|
"dependencies": {
|
|
33
|
-
"@tinycloud/node-sdk": "3.3.0-beta.
|
|
33
|
+
"@tinycloud/node-sdk": "3.3.0-beta.36",
|
|
34
34
|
"ulid": "^3.0.2"
|
|
35
35
|
},
|
|
36
36
|
"devDependencies": {
|
|
37
|
-
"@tinycloud/sdk-core": "3.3.0-beta.
|
|
37
|
+
"@tinycloud/sdk-core": "3.3.0-beta.36",
|
|
38
38
|
"@types/node": "^20",
|
|
39
39
|
"typescript": "^5.9.3"
|
|
40
40
|
},
|