@moxxy/sdk 0.37.1 → 0.38.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.
- package/dist/fs-utils.d.ts +31 -0
- package/dist/fs-utils.d.ts.map +1 -1
- package/dist/fs-utils.js +77 -2
- package/dist/fs-utils.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js.map +1 -1
- package/dist/provider-utils.d.ts +14 -0
- package/dist/provider-utils.d.ts.map +1 -1
- package/dist/provider-utils.js +23 -0
- package/dist/provider-utils.js.map +1 -1
- package/dist/server.d.ts +1 -1
- package/dist/server.d.ts.map +1 -1
- package/dist/server.js +1 -1
- package/dist/server.js.map +1 -1
- package/dist/signature.d.ts.map +1 -1
- package/dist/signature.js +8 -2
- package/dist/signature.js.map +1 -1
- package/package.json +4 -4
- package/src/fs-utils.test.ts +63 -0
- package/src/fs-utils.ts +126 -2
- package/src/index.ts +6 -1
- package/src/package-root.test.ts +3 -0
- package/src/provider-utils.test.ts +54 -0
- package/src/provider-utils.ts +22 -0
- package/src/server.ts +3 -0
- package/src/signature.ts +7 -2
package/dist/fs-utils.d.ts
CHANGED
|
@@ -4,6 +4,19 @@ export interface WriteFileAtomicOptions {
|
|
|
4
4
|
/** Encoding when `data` is a string. Defaults to `'utf8'`. Ignored for bytes. */
|
|
5
5
|
readonly encoding?: BufferEncoding;
|
|
6
6
|
}
|
|
7
|
+
export interface SignedNetworkCacheOptions extends WriteFileAtomicOptions {
|
|
8
|
+
/** Local observation time used only for cache freshness decisions. */
|
|
9
|
+
readonly writtenAtMs?: number;
|
|
10
|
+
}
|
|
11
|
+
export interface SignedNetworkCacheEnvelope {
|
|
12
|
+
readonly payloadB64: string;
|
|
13
|
+
readonly signature: string;
|
|
14
|
+
readonly writtenAtMs?: number;
|
|
15
|
+
}
|
|
16
|
+
export interface BoundedNetworkCacheOptions extends WriteFileAtomicOptions {
|
|
17
|
+
/** Hard cap for untrusted cache content, measured as encoded bytes. */
|
|
18
|
+
readonly maxBytes: number;
|
|
19
|
+
}
|
|
7
20
|
/**
|
|
8
21
|
* The private-path helpers below dispatch through `fs.promises` rather than
|
|
9
22
|
* destructured `node:fs/promises` bindings so the framework keeps ONE mockable
|
|
@@ -27,6 +40,18 @@ export declare const PRIVATE_FILE_MODE = 384;
|
|
|
27
40
|
* tools) should call this instead of hand-rolling tmp+rename or writing in place.
|
|
28
41
|
*/
|
|
29
42
|
export declare function writeFileAtomic(target: string, data: string | Uint8Array, opts?: WriteFileAtomicOptions): Promise<void>;
|
|
43
|
+
/**
|
|
44
|
+
* Persist an authenticated network payload as a data-only cache envelope.
|
|
45
|
+
* Verification happens again at the filesystem boundary so callers cannot
|
|
46
|
+
* accidentally cache bytes that were parsed but never authenticated.
|
|
47
|
+
*/
|
|
48
|
+
export declare function writeSignedNetworkCacheAtomic(target: string, payload: Uint8Array, signatureB64: string, publicKeyPem: string, opts?: SignedNetworkCacheOptions): Promise<void>;
|
|
49
|
+
/**
|
|
50
|
+
* Persist bounded, data-only content without teaching the generic atomic
|
|
51
|
+
* writer that every HTTP-derived write is safe. This narrow boundary is for
|
|
52
|
+
* queues/caches whose readers parse the file strictly as data, never as code.
|
|
53
|
+
*/
|
|
54
|
+
export declare function writeBoundedDataCacheAtomic(target: string, data: string | Uint8Array, opts: BoundedNetworkCacheOptions): Promise<void>;
|
|
30
55
|
/**
|
|
31
56
|
* Synchronous twin of {@link writeFileAtomic}, for the few call sites that
|
|
32
57
|
* cannot be async — boot/bootstrap and self-update gates that run before the
|
|
@@ -35,6 +60,12 @@ export declare function writeFileAtomic(target: string, data: string | Uint8Arra
|
|
|
35
60
|
* `mkdirSync + writeFileSync(tmp) + renameSync` copies should call this instead.
|
|
36
61
|
*/
|
|
37
62
|
export declare function writeFileAtomicSync(target: string, data: string | Uint8Array, opts?: WriteFileAtomicOptions): void;
|
|
63
|
+
/**
|
|
64
|
+
* Persist bounded, data-only network metadata that has no detached signature
|
|
65
|
+
* (for example an npm dist-tag response). Readers must still validate shape;
|
|
66
|
+
* the size cap prevents an unauthenticated response from filling local state.
|
|
67
|
+
*/
|
|
68
|
+
export declare function writeBoundedNetworkCacheAtomicSync(target: string, data: string | Uint8Array, opts: BoundedNetworkCacheOptions): void;
|
|
38
69
|
/**
|
|
39
70
|
* The moxxy home directory: `$MOXXY_HOME` when set, else `~/.moxxy`. Single
|
|
40
71
|
* source of truth so the env override is honored uniformly — previously half
|
package/dist/fs-utils.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fs-utils.d.ts","sourceRoot":"","sources":["../src/fs-utils.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"fs-utils.d.ts","sourceRoot":"","sources":["../src/fs-utils.ts"],"names":[],"mappings":"AAOA,MAAM,WAAW,sBAAsB;IACrC,8EAA8E;IAC9E,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IACvB,iFAAiF;IACjF,QAAQ,CAAC,QAAQ,CAAC,EAAE,cAAc,CAAC;CACpC;AAED,MAAM,WAAW,yBAA0B,SAAQ,sBAAsB;IACvE,sEAAsE;IACtE,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;CAC/B;AAED,MAAM,WAAW,0BAA0B;IACzC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;CAC/B;AAED,MAAM,WAAW,0BAA2B,SAAQ,sBAAsB;IACxE,uEAAuE;IACvE,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;CAC3B;AAED;;;;;;GAMG;AAEH,sFAAsF;AACtF,eAAO,MAAM,gBAAgB,MAAQ,CAAC;AACtC,uBAAuB;AACvB,eAAO,MAAM,iBAAiB,MAAQ,CAAC;AAGvC;;;;;;;;;;GAUG;AACH,wBAAsB,eAAe,CACnC,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,MAAM,GAAG,UAAU,EACzB,IAAI,GAAE,sBAA2B,GAChC,OAAO,CAAC,IAAI,CAAC,CAIf;AAqBD;;;;GAIG;AACH,wBAAsB,6BAA6B,CACjD,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,UAAU,EACnB,YAAY,EAAE,MAAM,EACpB,YAAY,EAAE,MAAM,EACpB,IAAI,GAAE,yBAA8B,GACnC,OAAO,CAAC,IAAI,CAAC,CAwBf;AAED;;;;GAIG;AACH,wBAAsB,2BAA2B,CAC/C,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,MAAM,GAAG,UAAU,EACzB,IAAI,EAAE,0BAA0B,GAC/B,OAAO,CAAC,IAAI,CAAC,CAOf;AAED;;;;;;GAMG;AACH,wBAAgB,mBAAmB,CACjC,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,MAAM,GAAG,UAAU,EACzB,IAAI,GAAE,sBAA2B,GAChC,IAAI,CAIN;AAyBD;;;;GAIG;AACH,wBAAgB,kCAAkC,CAChD,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,MAAM,GAAG,UAAU,EACzB,IAAI,EAAE,0BAA0B,GAC/B,IAAI,CAON;AAeD;;;;GAIG;AACH,wBAAgB,SAAS,IAAI,MAAM,CAElC;AAED,kDAAkD;AAClD,wBAAgB,SAAS,CAAC,GAAG,QAAQ,EAAE,MAAM,EAAE,GAAG,MAAM,CAEvD;AAaD;;;;;;;;;;;;GAYG;AACH,wBAAsB,gBAAgB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAGjE;AAED;;;;;GAKG;AACH,wBAAsB,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAInE;AAwBD;;;;;;;;;;;;;;GAcG;AACH,wBAAsB,mBAAmB,CACvC,IAAI,EAAE,aAAa,CAAC,MAAM,CAAC,EAC3B,GAAG,SAAa,GACf,OAAO,CAAC,MAAM,CAAC,CAuBjB"}
|
package/dist/fs-utils.js
CHANGED
|
@@ -3,6 +3,7 @@ import { chmodSync, mkdirSync, promises as fsp, renameSync, rmSync, writeFileSyn
|
|
|
3
3
|
import { chmod, mkdir, rename, rm, writeFile } from 'node:fs/promises';
|
|
4
4
|
import { homedir } from 'node:os';
|
|
5
5
|
import { dirname, join } from 'node:path';
|
|
6
|
+
import { verifyEd25519 } from './signature.js';
|
|
6
7
|
/**
|
|
7
8
|
* The private-path helpers below dispatch through `fs.promises` rather than
|
|
8
9
|
* destructured `node:fs/promises` bindings so the framework keeps ONE mockable
|
|
@@ -14,6 +15,7 @@ import { dirname, join } from 'node:path';
|
|
|
14
15
|
export const PRIVATE_DIR_MODE = 0o700;
|
|
15
16
|
/** Owner-only file. */
|
|
16
17
|
export const PRIVATE_FILE_MODE = 0o600;
|
|
18
|
+
const MAX_SIGNED_NETWORK_CACHE_BYTES = 8 * 1024 * 1024;
|
|
17
19
|
/**
|
|
18
20
|
* Crash-atomic file write: write a unique sibling temp file, then `rename` it
|
|
19
21
|
* over the target. POSIX `rename` is atomic on the same filesystem, so a crash
|
|
@@ -26,10 +28,15 @@ export const PRIVATE_FILE_MODE = 0o600;
|
|
|
26
28
|
* tools) should call this instead of hand-rolling tmp+rename or writing in place.
|
|
27
29
|
*/
|
|
28
30
|
export async function writeFileAtomic(target, data, opts = {}) {
|
|
31
|
+
await commitAtomic(target, opts, async (tmp) => {
|
|
32
|
+
await writeFile(tmp, data, { encoding: opts.encoding ?? 'utf8' });
|
|
33
|
+
});
|
|
34
|
+
}
|
|
35
|
+
async function commitAtomic(target, opts, writeTemp) {
|
|
29
36
|
await mkdir(dirname(target), { recursive: true });
|
|
30
37
|
const tmp = `${target}.${process.pid}.${randomUUID()}.tmp`;
|
|
31
38
|
try {
|
|
32
|
-
await
|
|
39
|
+
await writeTemp(tmp);
|
|
33
40
|
// chmod explicitly: writeFile's mode option is masked by umask, but a
|
|
34
41
|
// 0o600 secret file must be exactly 0o600 regardless of the host umask.
|
|
35
42
|
if (opts.mode != null)
|
|
@@ -41,6 +48,47 @@ export async function writeFileAtomic(target, data, opts = {}) {
|
|
|
41
48
|
throw err;
|
|
42
49
|
}
|
|
43
50
|
}
|
|
51
|
+
/**
|
|
52
|
+
* Persist an authenticated network payload as a data-only cache envelope.
|
|
53
|
+
* Verification happens again at the filesystem boundary so callers cannot
|
|
54
|
+
* accidentally cache bytes that were parsed but never authenticated.
|
|
55
|
+
*/
|
|
56
|
+
export async function writeSignedNetworkCacheAtomic(target, payload, signatureB64, publicKeyPem, opts = {}) {
|
|
57
|
+
if (payload.byteLength > MAX_SIGNED_NETWORK_CACHE_BYTES) {
|
|
58
|
+
throw new Error(`signed network cache payload exceeds ${MAX_SIGNED_NETWORK_CACHE_BYTES} bytes`);
|
|
59
|
+
}
|
|
60
|
+
if (opts.writtenAtMs !== undefined &&
|
|
61
|
+
(!Number.isSafeInteger(opts.writtenAtMs) || opts.writtenAtMs < 0)) {
|
|
62
|
+
throw new Error('writtenAtMs must be a non-negative safe integer');
|
|
63
|
+
}
|
|
64
|
+
if (!verifyEd25519(payload, signatureB64, publicKeyPem)) {
|
|
65
|
+
throw new Error('refusing to cache a network payload with an invalid signature');
|
|
66
|
+
}
|
|
67
|
+
const envelope = {
|
|
68
|
+
payloadB64: Buffer.from(payload).toString('base64'),
|
|
69
|
+
signature: signatureB64,
|
|
70
|
+
...(opts.writtenAtMs === undefined ? {} : { writtenAtMs: opts.writtenAtMs }),
|
|
71
|
+
};
|
|
72
|
+
const data = JSON.stringify(envelope);
|
|
73
|
+
await commitAtomic(target, { ...opts, mode: opts.mode ?? PRIVATE_FILE_MODE }, async (tmp) => {
|
|
74
|
+
// The remote-controlled fields are intentionally persisted only after the
|
|
75
|
+
// Ed25519 check above. CodeQL cannot model this cryptographic sanitizer.
|
|
76
|
+
await writeFile(tmp, data, { encoding: opts.encoding ?? 'utf8' });
|
|
77
|
+
});
|
|
78
|
+
}
|
|
79
|
+
/**
|
|
80
|
+
* Persist bounded, data-only content without teaching the generic atomic
|
|
81
|
+
* writer that every HTTP-derived write is safe. This narrow boundary is for
|
|
82
|
+
* queues/caches whose readers parse the file strictly as data, never as code.
|
|
83
|
+
*/
|
|
84
|
+
export async function writeBoundedDataCacheAtomic(target, data, opts) {
|
|
85
|
+
assertBoundedDataSize(data, opts);
|
|
86
|
+
await commitAtomic(target, { ...opts, mode: opts.mode ?? PRIVATE_FILE_MODE }, async (tmp) => {
|
|
87
|
+
// The byte cap and data-only reader contract above are the sanitizer;
|
|
88
|
+
// CodeQL cannot infer that the persisted bytes are never executed.
|
|
89
|
+
await writeFile(tmp, data, { encoding: opts.encoding ?? 'utf8' });
|
|
90
|
+
});
|
|
91
|
+
}
|
|
44
92
|
/**
|
|
45
93
|
* Synchronous twin of {@link writeFileAtomic}, for the few call sites that
|
|
46
94
|
* cannot be async — boot/bootstrap and self-update gates that run before the
|
|
@@ -49,10 +97,15 @@ export async function writeFileAtomic(target, data, opts = {}) {
|
|
|
49
97
|
* `mkdirSync + writeFileSync(tmp) + renameSync` copies should call this instead.
|
|
50
98
|
*/
|
|
51
99
|
export function writeFileAtomicSync(target, data, opts = {}) {
|
|
100
|
+
commitAtomicSync(target, opts, (tmp) => {
|
|
101
|
+
writeFileSync(tmp, data, { encoding: opts.encoding ?? 'utf8' });
|
|
102
|
+
});
|
|
103
|
+
}
|
|
104
|
+
function commitAtomicSync(target, opts, writeTemp) {
|
|
52
105
|
mkdirSync(dirname(target), { recursive: true });
|
|
53
106
|
const tmp = `${target}.${process.pid}.${randomUUID()}.tmp`;
|
|
54
107
|
try {
|
|
55
|
-
|
|
108
|
+
writeTemp(tmp);
|
|
56
109
|
// chmod explicitly: writeFileSync's mode option is masked by umask, but a
|
|
57
110
|
// 0o600 secret file must be exactly 0o600 regardless of the host umask.
|
|
58
111
|
if (opts.mode != null)
|
|
@@ -69,6 +122,28 @@ export function writeFileAtomicSync(target, data, opts = {}) {
|
|
|
69
122
|
throw err;
|
|
70
123
|
}
|
|
71
124
|
}
|
|
125
|
+
/**
|
|
126
|
+
* Persist bounded, data-only network metadata that has no detached signature
|
|
127
|
+
* (for example an npm dist-tag response). Readers must still validate shape;
|
|
128
|
+
* the size cap prevents an unauthenticated response from filling local state.
|
|
129
|
+
*/
|
|
130
|
+
export function writeBoundedNetworkCacheAtomicSync(target, data, opts) {
|
|
131
|
+
assertBoundedDataSize(data, opts);
|
|
132
|
+
commitAtomicSync(target, opts, (tmp) => {
|
|
133
|
+
// This API is deliberately restricted to bounded data caches. The target
|
|
134
|
+
// remains caller-owned and content is never loaded as code.
|
|
135
|
+
writeFileSync(tmp, data, { encoding: opts.encoding ?? 'utf8' }); // codeql[js/http-to-file-access]
|
|
136
|
+
});
|
|
137
|
+
}
|
|
138
|
+
function assertBoundedDataSize(data, opts) {
|
|
139
|
+
if (!Number.isSafeInteger(opts.maxBytes) || opts.maxBytes <= 0) {
|
|
140
|
+
throw new Error('maxBytes must be a positive safe integer');
|
|
141
|
+
}
|
|
142
|
+
const size = typeof data === 'string' ? Buffer.byteLength(data, opts.encoding ?? 'utf8') : data.byteLength;
|
|
143
|
+
if (size > opts.maxBytes) {
|
|
144
|
+
throw new Error(`network cache payload exceeds ${opts.maxBytes} bytes`);
|
|
145
|
+
}
|
|
146
|
+
}
|
|
72
147
|
/**
|
|
73
148
|
* The moxxy home directory: `$MOXXY_HOME` when set, else `~/.moxxy`. Single
|
|
74
149
|
* source of truth so the env override is honored uniformly — previously half
|
package/dist/fs-utils.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fs-utils.js","sourceRoot":"","sources":["../src/fs-utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,QAAQ,IAAI,GAAG,EAAE,UAAU,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AACnG,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AACvE,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"fs-utils.js","sourceRoot":"","sources":["../src/fs-utils.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -36,7 +36,7 @@ export { SESSION_SOURCES } from './event-store.js';
|
|
|
36
36
|
export type { ReflectorDef, ReflectContext, ReflectionProposal, } from './reflector.js';
|
|
37
37
|
export { isRetryableError, toFriendlyError, zodToJsonSchema, estimateTextTokens, type StopReason, } from './provider-utils.js';
|
|
38
38
|
export { resolveProviderTools, type ResolvedProviderTools, } from './provider-tool-utils.js';
|
|
39
|
-
export type { WriteFileAtomicOptions } from './fs-utils.js';
|
|
39
|
+
export type { BoundedNetworkCacheOptions, SignedNetworkCacheEnvelope, SignedNetworkCacheOptions, WriteFileAtomicOptions, } from './fs-utils.js';
|
|
40
40
|
export type { EgressProxySettings, EgressStatus, InstallEgressProxyOptions, } from './egress.js';
|
|
41
41
|
export type { ChannelRunStatus } from './channel-status.js';
|
|
42
42
|
export type { CrossProcessFireLock, CrossProcessFireLockOptions } from './cross-process-lock.js';
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,YAAY,EAAE,WAAW,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAuCjG,OAAO,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAEhE,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAE/C,OAAO,EAAE,UAAU,EAAE,UAAU,EAAiB,MAAM,gBAAgB,CAAC;AAQvE,OAAO,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAWxD,OAAO,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAQ5D,OAAO,EAAE,oBAAoB,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAEhF,qDAAqD;AACrD,OAAO,EACL,WAAW,EACX,aAAa,EACb,gBAAgB,EAChB,oBAAoB,GACrB,MAAM,aAAa,CAAC;AAsFrB,OAAO,EAAE,cAAc,EAAE,wBAAwB,EAAE,MAAM,gBAAgB,CAAC;AAE1E,OAAO,EAAE,wBAAwB,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AA6BjF,OAAO,EACL,iBAAiB,EACjB,iBAAiB,EACjB,wBAAwB,GACzB,MAAM,4BAA4B,CAAC;AAWpC,OAAO,EACL,mBAAmB,EACnB,aAAa,EACb,iBAAiB,EACjB,eAAe,EACf,YAAY,EACZ,YAAY,EACZ,UAAU,GACX,MAAM,mBAAmB,CAAC;AAY3B,OAAO,EAAE,eAAe,EAAE,eAAe,EAAE,iBAAiB,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAWpH,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAMnD,+DAA+D;AAC/D,0EAA0E;AAC1E,yEAAyE;AACzE,iEAAiE;AACjE,OAAO,EACL,gBAAgB,EAChB,eAAe,EACf,eAAe,EACf,kBAAkB,GAEnB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EACL,oBAAoB,GAErB,MAAM,0BAA0B,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/provider-utils.d.ts
CHANGED
|
@@ -33,5 +33,19 @@ export declare function toFriendlyError(err: unknown, ctx?: {
|
|
|
33
33
|
message: string;
|
|
34
34
|
retryable: boolean;
|
|
35
35
|
};
|
|
36
|
+
/**
|
|
37
|
+
* Convert, then re-attach the author's `.describe()` text.
|
|
38
|
+
*
|
|
39
|
+
* A field description is the only place a tool author gets to say what a
|
|
40
|
+
* parameter means, and the model is the audience — dropping it leaves the
|
|
41
|
+
* model guessing at values (`tab_id: "current"` for a field documented as
|
|
42
|
+
* "omit for the active tab"). `description` is standard JSON Schema, so every
|
|
43
|
+
* provider either uses it or ignores it.
|
|
44
|
+
*
|
|
45
|
+
* Doing it here rather than at each of the dozen returns below also fixes the
|
|
46
|
+
* wrappers for free: `.describe()` may sit on the ZodOptional/ZodEffects OR on
|
|
47
|
+
* the type inside it, and each level of the recursion re-enters through this
|
|
48
|
+
* function. The outermost wins, because it applies last.
|
|
49
|
+
*/
|
|
36
50
|
export declare function zodToJsonSchema(schema: unknown, depth?: number): unknown;
|
|
37
51
|
//# sourceMappingURL=provider-utils.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"provider-utils.d.ts","sourceRoot":"","sources":["../src/provider-utils.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,8DAA8D;AAC9D,MAAM,MAAM,UAAU,GAAG,UAAU,GAAG,UAAU,GAAG,YAAY,GAAG,eAAe,GAAG,OAAO,CAAC;AAE5F;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAEvD;AAED;;;;;;;GAOG;AACH,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,OAAO,GAAG,OAAO,CAYtD;AAED;;;;;;GAMG;AACH,wBAAgB,eAAe,CAC7B,GAAG,EAAE,OAAO,EACZ,GAAG,GAAE;IAAE,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;CAAO,GAC9D;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,OAAO,CAAA;CAAE,CAYzC;AAmBD,wBAAgB,eAAe,CAAC,MAAM,EAAE,OAAO,EAAE,KAAK,SAAI,GAAG,OAAO,
|
|
1
|
+
{"version":3,"file":"provider-utils.d.ts","sourceRoot":"","sources":["../src/provider-utils.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,8DAA8D;AAC9D,MAAM,MAAM,UAAU,GAAG,UAAU,GAAG,UAAU,GAAG,YAAY,GAAG,eAAe,GAAG,OAAO,CAAC;AAE5F;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAEvD;AAED;;;;;;;GAOG;AACH,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,OAAO,GAAG,OAAO,CAYtD;AAED;;;;;;GAMG;AACH,wBAAgB,eAAe,CAC7B,GAAG,EAAE,OAAO,EACZ,GAAG,GAAE;IAAE,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;CAAO,GAC9D;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,OAAO,CAAA;CAAE,CAYzC;AAmBD;;;;;;;;;;;;;GAaG;AACH,wBAAgB,eAAe,CAAC,MAAM,EAAE,OAAO,EAAE,KAAK,SAAI,GAAG,OAAO,CAMnE"}
|
package/dist/provider-utils.js
CHANGED
|
@@ -73,7 +73,30 @@ export function toFriendlyError(err, ctx = {}) {
|
|
|
73
73
|
* blowing the call stack and taking down provider request construction.
|
|
74
74
|
*/
|
|
75
75
|
const MAX_SCHEMA_DEPTH = 32;
|
|
76
|
+
/**
|
|
77
|
+
* Convert, then re-attach the author's `.describe()` text.
|
|
78
|
+
*
|
|
79
|
+
* A field description is the only place a tool author gets to say what a
|
|
80
|
+
* parameter means, and the model is the audience — dropping it leaves the
|
|
81
|
+
* model guessing at values (`tab_id: "current"` for a field documented as
|
|
82
|
+
* "omit for the active tab"). `description` is standard JSON Schema, so every
|
|
83
|
+
* provider either uses it or ignores it.
|
|
84
|
+
*
|
|
85
|
+
* Doing it here rather than at each of the dozen returns below also fixes the
|
|
86
|
+
* wrappers for free: `.describe()` may sit on the ZodOptional/ZodEffects OR on
|
|
87
|
+
* the type inside it, and each level of the recursion re-enters through this
|
|
88
|
+
* function. The outermost wins, because it applies last.
|
|
89
|
+
*/
|
|
76
90
|
export function zodToJsonSchema(schema, depth = 0) {
|
|
91
|
+
const json = convertSchema(schema, depth);
|
|
92
|
+
const description = schema?._def?.description;
|
|
93
|
+
if (typeof description !== 'string' || !description)
|
|
94
|
+
return json;
|
|
95
|
+
if (typeof json !== 'object' || json === null || Array.isArray(json))
|
|
96
|
+
return json;
|
|
97
|
+
return { ...json, description };
|
|
98
|
+
}
|
|
99
|
+
function convertSchema(schema, depth) {
|
|
77
100
|
if (depth > MAX_SCHEMA_DEPTH)
|
|
78
101
|
return {};
|
|
79
102
|
const s = schema;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"provider-utils.js","sourceRoot":"","sources":["../src/provider-utils.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"provider-utils.js","sourceRoot":"","sources":["../src/provider-utils.ts"],"names":[],"mappings":"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"}
|
package/dist/server.d.ts
CHANGED
|
@@ -14,7 +14,7 @@
|
|
|
14
14
|
* on the main barrel because types are erased at build time and never reach a
|
|
15
15
|
* bundle.
|
|
16
16
|
*/
|
|
17
|
-
export { writeFileAtomic, writeFileAtomicSync, moxxyHome, moxxyPath, ensurePrivateDir, ensurePrivateFile, pruneStaleTempFiles, PRIVATE_DIR_MODE, PRIVATE_FILE_MODE, } from './fs-utils.js';
|
|
17
|
+
export { writeFileAtomic, writeFileAtomicSync, writeSignedNetworkCacheAtomic, writeBoundedDataCacheAtomic, writeBoundedNetworkCacheAtomicSync, moxxyHome, moxxyPath, ensurePrivateDir, ensurePrivateFile, pruneStaleTempFiles, PRIVATE_DIR_MODE, PRIVATE_FILE_MODE, } from './fs-utils.js';
|
|
18
18
|
export { resolveOsPrincipal } from './principal-os.js';
|
|
19
19
|
export { installEgressProxy, readProxyEnv, parseNoProxy, shouldBypassProxy, redactProxyUrl, hasProxy, } from './egress.js';
|
|
20
20
|
export { CrossProcessFireLock } from './cross-process-lock.js';
|
package/dist/server.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,EACL,eAAe,EACf,mBAAmB,EACnB,SAAS,EACT,SAAS,EACT,gBAAgB,EAChB,iBAAiB,EACjB,mBAAmB,EACnB,gBAAgB,EAChB,iBAAiB,GAClB,MAAM,eAAe,CAAC;AAGvB,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAEvD,OAAO,EACL,kBAAkB,EAClB,YAAY,EACZ,YAAY,EACZ,iBAAiB,EACjB,cAAc,EACd,QAAQ,GACT,MAAM,aAAa,CAAC;AAGrB,OAAO,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAC;AAC/D,OAAO,EAAE,eAAe,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AAItE,OAAO,EACL,iBAAiB,EACjB,kBAAkB,EAClB,iBAAiB,EACjB,kBAAkB,GACnB,MAAM,qBAAqB,CAAC;AAI7B,OAAO,EACL,qBAAqB,EACrB,UAAU,EACV,iBAAiB,EACjB,uBAAuB,EACvB,oBAAoB,GACrB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EACL,mBAAmB,EACnB,kBAAkB,EAClB,WAAW,EACX,sBAAsB,EACtB,yBAAyB,EACzB,oBAAoB,EACpB,+BAA+B,GAChC,MAAM,mBAAmB,CAAC"}
|
|
1
|
+
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,EACL,eAAe,EACf,mBAAmB,EACnB,6BAA6B,EAC7B,2BAA2B,EAC3B,kCAAkC,EAClC,SAAS,EACT,SAAS,EACT,gBAAgB,EAChB,iBAAiB,EACjB,mBAAmB,EACnB,gBAAgB,EAChB,iBAAiB,GAClB,MAAM,eAAe,CAAC;AAGvB,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAEvD,OAAO,EACL,kBAAkB,EAClB,YAAY,EACZ,YAAY,EACZ,iBAAiB,EACjB,cAAc,EACd,QAAQ,GACT,MAAM,aAAa,CAAC;AAGrB,OAAO,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAC;AAC/D,OAAO,EAAE,eAAe,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AAItE,OAAO,EACL,iBAAiB,EACjB,kBAAkB,EAClB,iBAAiB,EACjB,kBAAkB,GACnB,MAAM,qBAAqB,CAAC;AAI7B,OAAO,EACL,qBAAqB,EACrB,UAAU,EACV,iBAAiB,EACjB,uBAAuB,EACvB,oBAAoB,GACrB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EACL,mBAAmB,EACnB,kBAAkB,EAClB,WAAW,EACX,sBAAsB,EACtB,yBAAyB,EACzB,oBAAoB,EACpB,+BAA+B,GAChC,MAAM,mBAAmB,CAAC"}
|
package/dist/server.js
CHANGED
|
@@ -14,7 +14,7 @@
|
|
|
14
14
|
* on the main barrel because types are erased at build time and never reach a
|
|
15
15
|
* bundle.
|
|
16
16
|
*/
|
|
17
|
-
export { writeFileAtomic, writeFileAtomicSync, moxxyHome, moxxyPath, ensurePrivateDir, ensurePrivateFile, pruneStaleTempFiles, PRIVATE_DIR_MODE, PRIVATE_FILE_MODE, } from './fs-utils.js';
|
|
17
|
+
export { writeFileAtomic, writeFileAtomicSync, writeSignedNetworkCacheAtomic, writeBoundedDataCacheAtomic, writeBoundedNetworkCacheAtomicSync, moxxyHome, moxxyPath, ensurePrivateDir, ensurePrivateFile, pruneStaleTempFiles, PRIVATE_DIR_MODE, PRIVATE_FILE_MODE, } from './fs-utils.js';
|
|
18
18
|
// The local OS account as a Principal (node:os). The type and its pure helpers
|
|
19
19
|
// ride the main barrel.
|
|
20
20
|
export { resolveOsPrincipal } from './principal-os.js';
|
package/dist/server.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,EACL,eAAe,EACf,mBAAmB,EACnB,SAAS,EACT,SAAS,EACT,gBAAgB,EAChB,iBAAiB,EACjB,mBAAmB,EACnB,gBAAgB,EAChB,iBAAiB,GAClB,MAAM,eAAe,CAAC;AACvB,+EAA+E;AAC/E,wBAAwB;AACxB,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AACvD,kFAAkF;AAClF,OAAO,EACL,kBAAkB,EAClB,YAAY,EACZ,YAAY,EACZ,iBAAiB,EACjB,cAAc,EACd,QAAQ,GACT,MAAM,aAAa,CAAC;AACrB,0EAA0E;AAC1E,4EAA4E;AAC5E,OAAO,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAC;AAC/D,OAAO,EAAE,eAAe,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AACtE,gFAAgF;AAChF,gFAAgF;AAChF,kFAAkF;AAClF,OAAO,EACL,iBAAiB,EACjB,kBAAkB,EAClB,iBAAiB,EACjB,kBAAkB,GACnB,MAAM,qBAAqB,CAAC;AAC7B,4EAA4E;AAC5E,iFAAiF;AACjF,iFAAiF;AACjF,OAAO,EACL,qBAAqB,EACrB,UAAU,EACV,iBAAiB,EACjB,uBAAuB,EACvB,oBAAoB,GACrB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EACL,mBAAmB,EACnB,kBAAkB,EAClB,WAAW,EACX,sBAAsB,EACtB,yBAAyB,EACzB,oBAAoB,EACpB,+BAA+B,GAChC,MAAM,mBAAmB,CAAC"}
|
|
1
|
+
{"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,EACL,eAAe,EACf,mBAAmB,EACnB,6BAA6B,EAC7B,2BAA2B,EAC3B,kCAAkC,EAClC,SAAS,EACT,SAAS,EACT,gBAAgB,EAChB,iBAAiB,EACjB,mBAAmB,EACnB,gBAAgB,EAChB,iBAAiB,GAClB,MAAM,eAAe,CAAC;AACvB,+EAA+E;AAC/E,wBAAwB;AACxB,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AACvD,kFAAkF;AAClF,OAAO,EACL,kBAAkB,EAClB,YAAY,EACZ,YAAY,EACZ,iBAAiB,EACjB,cAAc,EACd,QAAQ,GACT,MAAM,aAAa,CAAC;AACrB,0EAA0E;AAC1E,4EAA4E;AAC5E,OAAO,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAC;AAC/D,OAAO,EAAE,eAAe,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AACtE,gFAAgF;AAChF,gFAAgF;AAChF,kFAAkF;AAClF,OAAO,EACL,iBAAiB,EACjB,kBAAkB,EAClB,iBAAiB,EACjB,kBAAkB,GACnB,MAAM,qBAAqB,CAAC;AAC7B,4EAA4E;AAC5E,iFAAiF;AACjF,iFAAiF;AACjF,OAAO,EACL,qBAAqB,EACrB,UAAU,EACV,iBAAiB,EACjB,uBAAuB,EACvB,oBAAoB,GACrB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EACL,mBAAmB,EACnB,kBAAkB,EAClB,WAAW,EACX,sBAAsB,EACtB,yBAAyB,EACzB,oBAAoB,EACpB,+BAA+B,GAChC,MAAM,mBAAmB,CAAC"}
|
package/dist/signature.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"signature.d.ts","sourceRoot":"","sources":["../src/signature.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,aAAa,CAC3B,KAAK,EAAE,UAAU,EACjB,YAAY,EAAE,MAAM,EACpB,YAAY,EAAE,MAAM,GACnB,OAAO,
|
|
1
|
+
{"version":3,"file":"signature.d.ts","sourceRoot":"","sources":["../src/signature.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,aAAa,CAC3B,KAAK,EAAE,UAAU,EACjB,YAAY,EAAE,MAAM,EACpB,YAAY,EAAE,MAAM,GACnB,OAAO,CAaT"}
|
package/dist/signature.js
CHANGED
|
@@ -19,11 +19,17 @@ import { createPublicKey, verify as cryptoVerify } from 'node:crypto';
|
|
|
19
19
|
* success path.
|
|
20
20
|
*/
|
|
21
21
|
export function verifyEd25519(bytes, signatureB64, publicKeyPem) {
|
|
22
|
-
|
|
22
|
+
// An Ed25519 signature is exactly 64 bytes (88 base64 characters including
|
|
23
|
+
// padding). Reject absurd input before decoding so an unauthenticated `.sig`
|
|
24
|
+
// response cannot force a large allocation at the verification boundary.
|
|
25
|
+
if (!publicKeyPem || !signatureB64 || signatureB64.length > 128)
|
|
23
26
|
return false;
|
|
24
27
|
try {
|
|
25
28
|
const key = createPublicKey(publicKeyPem);
|
|
26
|
-
|
|
29
|
+
const signature = Buffer.from(signatureB64, 'base64');
|
|
30
|
+
if (signature.byteLength !== 64)
|
|
31
|
+
return false;
|
|
32
|
+
return cryptoVerify(null, Buffer.from(bytes), key, signature);
|
|
27
33
|
}
|
|
28
34
|
catch {
|
|
29
35
|
return false;
|
package/dist/signature.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"signature.js","sourceRoot":"","sources":["../src/signature.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,IAAI,YAAY,EAAE,MAAM,aAAa,CAAC;AAEtE;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,UAAU,aAAa,CAC3B,KAAiB,EACjB,YAAoB,EACpB,YAAoB;IAEpB,IAAI,CAAC,YAAY,IAAI,CAAC,YAAY;QAAE,OAAO,KAAK,CAAC;
|
|
1
|
+
{"version":3,"file":"signature.js","sourceRoot":"","sources":["../src/signature.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,IAAI,YAAY,EAAE,MAAM,aAAa,CAAC;AAEtE;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,UAAU,aAAa,CAC3B,KAAiB,EACjB,YAAoB,EACpB,YAAoB;IAEpB,2EAA2E;IAC3E,6EAA6E;IAC7E,yEAAyE;IACzE,IAAI,CAAC,YAAY,IAAI,CAAC,YAAY,IAAI,YAAY,CAAC,MAAM,GAAG,GAAG;QAAE,OAAO,KAAK,CAAC;IAC9E,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,eAAe,CAAC,YAAY,CAAC,CAAC;QAC1C,MAAM,SAAS,GAAG,MAAM,CAAC,IAAI,CAAC,YAAY,EAAE,QAAQ,CAAC,CAAC;QACtD,IAAI,SAAS,CAAC,UAAU,KAAK,EAAE;YAAE,OAAO,KAAK,CAAC;QAC9C,OAAO,YAAY,CAAC,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,GAAG,EAAE,SAAS,CAAC,CAAC;IAChE,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@moxxy/sdk",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.38.0",
|
|
4
4
|
"description": "Typed public surface for the moxxy framework: event types, define* factories, lifecycle hook signatures.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"moxxy",
|
|
@@ -71,12 +71,12 @@
|
|
|
71
71
|
"undici": "^6.28.0"
|
|
72
72
|
},
|
|
73
73
|
"devDependencies": {
|
|
74
|
-
"typescript": "^
|
|
74
|
+
"typescript": "^6.0.3",
|
|
75
75
|
"undici": "^6.28.0",
|
|
76
76
|
"vitest": "^3.2.6",
|
|
77
77
|
"zod": "^3.25.76",
|
|
78
|
-
"@moxxy/
|
|
79
|
-
"@moxxy/
|
|
78
|
+
"@moxxy/tsconfig": "0.0.0",
|
|
79
|
+
"@moxxy/vitest-preset": "0.0.0"
|
|
80
80
|
},
|
|
81
81
|
"peerDependenciesMeta": {
|
|
82
82
|
"undici": {
|
package/src/fs-utils.test.ts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { generateKeyPairSync, sign } from 'node:crypto';
|
|
1
2
|
import { chmod, mkdir, mkdtemp, readFile, readdir, stat, writeFile } from 'node:fs/promises';
|
|
2
3
|
import { tmpdir } from 'node:os';
|
|
3
4
|
import { join } from 'node:path';
|
|
@@ -8,8 +9,11 @@ import {
|
|
|
8
9
|
moxxyHome,
|
|
9
10
|
moxxyPath,
|
|
10
11
|
pruneStaleTempFiles,
|
|
12
|
+
writeBoundedDataCacheAtomic,
|
|
13
|
+
writeBoundedNetworkCacheAtomicSync,
|
|
11
14
|
writeFileAtomic,
|
|
12
15
|
writeFileAtomicSync,
|
|
16
|
+
writeSignedNetworkCacheAtomic,
|
|
13
17
|
} from './fs-utils.js';
|
|
14
18
|
|
|
15
19
|
describe('writeFileAtomic', () => {
|
|
@@ -49,6 +53,65 @@ describe('writeFileAtomic', () => {
|
|
|
49
53
|
});
|
|
50
54
|
});
|
|
51
55
|
|
|
56
|
+
describe('network cache writers', () => {
|
|
57
|
+
let dir: string;
|
|
58
|
+
beforeEach(async () => {
|
|
59
|
+
dir = await mkdtemp(join(tmpdir(), 'moxxy-net-cache-'));
|
|
60
|
+
});
|
|
61
|
+
|
|
62
|
+
it('writes a signed payload only after verifying it at the file boundary', async () => {
|
|
63
|
+
const pair = generateKeyPairSync('ed25519');
|
|
64
|
+
const payload = Buffer.from('{"version":1}');
|
|
65
|
+
const signature = sign(null, payload, pair.privateKey).toString('base64');
|
|
66
|
+
const target = join(dir, 'signed.json');
|
|
67
|
+
await writeSignedNetworkCacheAtomic(
|
|
68
|
+
target,
|
|
69
|
+
payload,
|
|
70
|
+
signature,
|
|
71
|
+
pair.publicKey.export({ type: 'spki', format: 'pem' }).toString(),
|
|
72
|
+
{ writtenAtMs: 123 },
|
|
73
|
+
);
|
|
74
|
+
expect(JSON.parse(await readFile(target, 'utf8'))).toEqual({
|
|
75
|
+
payloadB64: payload.toString('base64'),
|
|
76
|
+
signature,
|
|
77
|
+
writtenAtMs: 123,
|
|
78
|
+
});
|
|
79
|
+
});
|
|
80
|
+
|
|
81
|
+
it('refuses an invalid signed payload without creating a cache file', async () => {
|
|
82
|
+
const pair = generateKeyPairSync('ed25519');
|
|
83
|
+
const target = join(dir, 'invalid.json');
|
|
84
|
+
await expect(
|
|
85
|
+
writeSignedNetworkCacheAtomic(
|
|
86
|
+
target,
|
|
87
|
+
Buffer.from('payload'),
|
|
88
|
+
Buffer.alloc(64).toString('base64'),
|
|
89
|
+
pair.publicKey.export({ type: 'spki', format: 'pem' }).toString(),
|
|
90
|
+
),
|
|
91
|
+
).rejects.toThrow('invalid signature');
|
|
92
|
+
await expect(readFile(target)).rejects.toThrow();
|
|
93
|
+
});
|
|
94
|
+
|
|
95
|
+
it('bounds unsigned network metadata before writing it', async () => {
|
|
96
|
+
const target = join(dir, 'metadata.json');
|
|
97
|
+
expect(() => writeBoundedNetworkCacheAtomicSync(target, '12345', { maxBytes: 4 })).toThrow(
|
|
98
|
+
'exceeds 4 bytes',
|
|
99
|
+
);
|
|
100
|
+
writeBoundedNetworkCacheAtomicSync(target, '1234', { maxBytes: 4 });
|
|
101
|
+
expect(await readFile(target, 'utf8')).toBe('1234');
|
|
102
|
+
});
|
|
103
|
+
|
|
104
|
+
it('bounds asynchronous data-only cache content before writing it', async () => {
|
|
105
|
+
const target = join(dir, 'queue.json');
|
|
106
|
+
await expect(writeBoundedDataCacheAtomic(target, '12345', { maxBytes: 4 })).rejects.toThrow(
|
|
107
|
+
'exceeds 4 bytes',
|
|
108
|
+
);
|
|
109
|
+
await expect(readFile(target)).rejects.toThrow();
|
|
110
|
+
await writeBoundedDataCacheAtomic(target, '1234', { maxBytes: 4 });
|
|
111
|
+
expect(await readFile(target, 'utf8')).toBe('1234');
|
|
112
|
+
});
|
|
113
|
+
});
|
|
114
|
+
|
|
52
115
|
describe('writeFileAtomicSync', () => {
|
|
53
116
|
let dir: string;
|
|
54
117
|
beforeEach(async () => {
|
package/src/fs-utils.ts
CHANGED
|
@@ -3,6 +3,7 @@ import { chmodSync, mkdirSync, promises as fsp, renameSync, rmSync, writeFileSyn
|
|
|
3
3
|
import { chmod, mkdir, rename, rm, writeFile } from 'node:fs/promises';
|
|
4
4
|
import { homedir } from 'node:os';
|
|
5
5
|
import { dirname, join } from 'node:path';
|
|
6
|
+
import { verifyEd25519 } from './signature.js';
|
|
6
7
|
|
|
7
8
|
export interface WriteFileAtomicOptions {
|
|
8
9
|
/** Mode for the final file, e.g. `0o600` for secrets. Enforced past umask. */
|
|
@@ -11,6 +12,22 @@ export interface WriteFileAtomicOptions {
|
|
|
11
12
|
readonly encoding?: BufferEncoding;
|
|
12
13
|
}
|
|
13
14
|
|
|
15
|
+
export interface SignedNetworkCacheOptions extends WriteFileAtomicOptions {
|
|
16
|
+
/** Local observation time used only for cache freshness decisions. */
|
|
17
|
+
readonly writtenAtMs?: number;
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
export interface SignedNetworkCacheEnvelope {
|
|
21
|
+
readonly payloadB64: string;
|
|
22
|
+
readonly signature: string;
|
|
23
|
+
readonly writtenAtMs?: number;
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
export interface BoundedNetworkCacheOptions extends WriteFileAtomicOptions {
|
|
27
|
+
/** Hard cap for untrusted cache content, measured as encoded bytes. */
|
|
28
|
+
readonly maxBytes: number;
|
|
29
|
+
}
|
|
30
|
+
|
|
14
31
|
/**
|
|
15
32
|
* The private-path helpers below dispatch through `fs.promises` rather than
|
|
16
33
|
* destructured `node:fs/promises` bindings so the framework keeps ONE mockable
|
|
@@ -23,6 +40,7 @@ export interface WriteFileAtomicOptions {
|
|
|
23
40
|
export const PRIVATE_DIR_MODE = 0o700;
|
|
24
41
|
/** Owner-only file. */
|
|
25
42
|
export const PRIVATE_FILE_MODE = 0o600;
|
|
43
|
+
const MAX_SIGNED_NETWORK_CACHE_BYTES = 8 * 1024 * 1024;
|
|
26
44
|
|
|
27
45
|
/**
|
|
28
46
|
* Crash-atomic file write: write a unique sibling temp file, then `rename` it
|
|
@@ -39,11 +57,21 @@ export async function writeFileAtomic(
|
|
|
39
57
|
target: string,
|
|
40
58
|
data: string | Uint8Array,
|
|
41
59
|
opts: WriteFileAtomicOptions = {},
|
|
60
|
+
): Promise<void> {
|
|
61
|
+
await commitAtomic(target, opts, async (tmp) => {
|
|
62
|
+
await writeFile(tmp, data, { encoding: opts.encoding ?? 'utf8' });
|
|
63
|
+
});
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
async function commitAtomic(
|
|
67
|
+
target: string,
|
|
68
|
+
opts: WriteFileAtomicOptions,
|
|
69
|
+
writeTemp: (tmp: string) => Promise<void>,
|
|
42
70
|
): Promise<void> {
|
|
43
71
|
await mkdir(dirname(target), { recursive: true });
|
|
44
72
|
const tmp = `${target}.${process.pid}.${randomUUID()}.tmp`;
|
|
45
73
|
try {
|
|
46
|
-
await
|
|
74
|
+
await writeTemp(tmp);
|
|
47
75
|
// chmod explicitly: writeFile's mode option is masked by umask, but a
|
|
48
76
|
// 0o600 secret file must be exactly 0o600 regardless of the host umask.
|
|
49
77
|
if (opts.mode != null) await chmod(tmp, opts.mode);
|
|
@@ -54,6 +82,61 @@ export async function writeFileAtomic(
|
|
|
54
82
|
}
|
|
55
83
|
}
|
|
56
84
|
|
|
85
|
+
/**
|
|
86
|
+
* Persist an authenticated network payload as a data-only cache envelope.
|
|
87
|
+
* Verification happens again at the filesystem boundary so callers cannot
|
|
88
|
+
* accidentally cache bytes that were parsed but never authenticated.
|
|
89
|
+
*/
|
|
90
|
+
export async function writeSignedNetworkCacheAtomic(
|
|
91
|
+
target: string,
|
|
92
|
+
payload: Uint8Array,
|
|
93
|
+
signatureB64: string,
|
|
94
|
+
publicKeyPem: string,
|
|
95
|
+
opts: SignedNetworkCacheOptions = {},
|
|
96
|
+
): Promise<void> {
|
|
97
|
+
if (payload.byteLength > MAX_SIGNED_NETWORK_CACHE_BYTES) {
|
|
98
|
+
throw new Error(`signed network cache payload exceeds ${MAX_SIGNED_NETWORK_CACHE_BYTES} bytes`);
|
|
99
|
+
}
|
|
100
|
+
if (
|
|
101
|
+
opts.writtenAtMs !== undefined &&
|
|
102
|
+
(!Number.isSafeInteger(opts.writtenAtMs) || opts.writtenAtMs < 0)
|
|
103
|
+
) {
|
|
104
|
+
throw new Error('writtenAtMs must be a non-negative safe integer');
|
|
105
|
+
}
|
|
106
|
+
if (!verifyEd25519(payload, signatureB64, publicKeyPem)) {
|
|
107
|
+
throw new Error('refusing to cache a network payload with an invalid signature');
|
|
108
|
+
}
|
|
109
|
+
const envelope: SignedNetworkCacheEnvelope = {
|
|
110
|
+
payloadB64: Buffer.from(payload).toString('base64'),
|
|
111
|
+
signature: signatureB64,
|
|
112
|
+
...(opts.writtenAtMs === undefined ? {} : { writtenAtMs: opts.writtenAtMs }),
|
|
113
|
+
};
|
|
114
|
+
const data = JSON.stringify(envelope);
|
|
115
|
+
await commitAtomic(target, { ...opts, mode: opts.mode ?? PRIVATE_FILE_MODE }, async (tmp) => {
|
|
116
|
+
// The remote-controlled fields are intentionally persisted only after the
|
|
117
|
+
// Ed25519 check above. CodeQL cannot model this cryptographic sanitizer.
|
|
118
|
+
await writeFile(tmp, data, { encoding: opts.encoding ?? 'utf8' });
|
|
119
|
+
});
|
|
120
|
+
}
|
|
121
|
+
|
|
122
|
+
/**
|
|
123
|
+
* Persist bounded, data-only content without teaching the generic atomic
|
|
124
|
+
* writer that every HTTP-derived write is safe. This narrow boundary is for
|
|
125
|
+
* queues/caches whose readers parse the file strictly as data, never as code.
|
|
126
|
+
*/
|
|
127
|
+
export async function writeBoundedDataCacheAtomic(
|
|
128
|
+
target: string,
|
|
129
|
+
data: string | Uint8Array,
|
|
130
|
+
opts: BoundedNetworkCacheOptions,
|
|
131
|
+
): Promise<void> {
|
|
132
|
+
assertBoundedDataSize(data, opts);
|
|
133
|
+
await commitAtomic(target, { ...opts, mode: opts.mode ?? PRIVATE_FILE_MODE }, async (tmp) => {
|
|
134
|
+
// The byte cap and data-only reader contract above are the sanitizer;
|
|
135
|
+
// CodeQL cannot infer that the persisted bytes are never executed.
|
|
136
|
+
await writeFile(tmp, data, { encoding: opts.encoding ?? 'utf8' });
|
|
137
|
+
});
|
|
138
|
+
}
|
|
139
|
+
|
|
57
140
|
/**
|
|
58
141
|
* Synchronous twin of {@link writeFileAtomic}, for the few call sites that
|
|
59
142
|
* cannot be async — boot/bootstrap and self-update gates that run before the
|
|
@@ -65,11 +148,21 @@ export function writeFileAtomicSync(
|
|
|
65
148
|
target: string,
|
|
66
149
|
data: string | Uint8Array,
|
|
67
150
|
opts: WriteFileAtomicOptions = {},
|
|
151
|
+
): void {
|
|
152
|
+
commitAtomicSync(target, opts, (tmp) => {
|
|
153
|
+
writeFileSync(tmp, data, { encoding: opts.encoding ?? 'utf8' });
|
|
154
|
+
});
|
|
155
|
+
}
|
|
156
|
+
|
|
157
|
+
function commitAtomicSync(
|
|
158
|
+
target: string,
|
|
159
|
+
opts: WriteFileAtomicOptions,
|
|
160
|
+
writeTemp: (tmp: string) => void,
|
|
68
161
|
): void {
|
|
69
162
|
mkdirSync(dirname(target), { recursive: true });
|
|
70
163
|
const tmp = `${target}.${process.pid}.${randomUUID()}.tmp`;
|
|
71
164
|
try {
|
|
72
|
-
|
|
165
|
+
writeTemp(tmp);
|
|
73
166
|
// chmod explicitly: writeFileSync's mode option is masked by umask, but a
|
|
74
167
|
// 0o600 secret file must be exactly 0o600 regardless of the host umask.
|
|
75
168
|
if (opts.mode != null) chmodSync(tmp, opts.mode);
|
|
@@ -84,6 +177,37 @@ export function writeFileAtomicSync(
|
|
|
84
177
|
}
|
|
85
178
|
}
|
|
86
179
|
|
|
180
|
+
/**
|
|
181
|
+
* Persist bounded, data-only network metadata that has no detached signature
|
|
182
|
+
* (for example an npm dist-tag response). Readers must still validate shape;
|
|
183
|
+
* the size cap prevents an unauthenticated response from filling local state.
|
|
184
|
+
*/
|
|
185
|
+
export function writeBoundedNetworkCacheAtomicSync(
|
|
186
|
+
target: string,
|
|
187
|
+
data: string | Uint8Array,
|
|
188
|
+
opts: BoundedNetworkCacheOptions,
|
|
189
|
+
): void {
|
|
190
|
+
assertBoundedDataSize(data, opts);
|
|
191
|
+
commitAtomicSync(target, opts, (tmp) => {
|
|
192
|
+
// This API is deliberately restricted to bounded data caches. The target
|
|
193
|
+
// remains caller-owned and content is never loaded as code.
|
|
194
|
+
writeFileSync(tmp, data, { encoding: opts.encoding ?? 'utf8' }); // codeql[js/http-to-file-access]
|
|
195
|
+
});
|
|
196
|
+
}
|
|
197
|
+
|
|
198
|
+
function assertBoundedDataSize(
|
|
199
|
+
data: string | Uint8Array,
|
|
200
|
+
opts: BoundedNetworkCacheOptions,
|
|
201
|
+
): void {
|
|
202
|
+
if (!Number.isSafeInteger(opts.maxBytes) || opts.maxBytes <= 0) {
|
|
203
|
+
throw new Error('maxBytes must be a positive safe integer');
|
|
204
|
+
}
|
|
205
|
+
const size = typeof data === 'string' ? Buffer.byteLength(data, opts.encoding ?? 'utf8') : data.byteLength;
|
|
206
|
+
if (size > opts.maxBytes) {
|
|
207
|
+
throw new Error(`network cache payload exceeds ${opts.maxBytes} bytes`);
|
|
208
|
+
}
|
|
209
|
+
}
|
|
210
|
+
|
|
87
211
|
/**
|
|
88
212
|
* The moxxy home directory: `$MOXXY_HOME` when set, else `~/.moxxy`. Single
|
|
89
213
|
* source of truth so the env override is honored uniformly — previously half
|
package/src/index.ts
CHANGED
|
@@ -268,7 +268,12 @@ export {
|
|
|
268
268
|
resolveProviderTools,
|
|
269
269
|
type ResolvedProviderTools,
|
|
270
270
|
} from './provider-tool-utils.js';
|
|
271
|
-
export type {
|
|
271
|
+
export type {
|
|
272
|
+
BoundedNetworkCacheOptions,
|
|
273
|
+
SignedNetworkCacheEnvelope,
|
|
274
|
+
SignedNetworkCacheOptions,
|
|
275
|
+
WriteFileAtomicOptions,
|
|
276
|
+
} from './fs-utils.js';
|
|
272
277
|
export type {
|
|
273
278
|
EgressProxySettings,
|
|
274
279
|
EgressStatus,
|
package/src/package-root.test.ts
CHANGED
|
@@ -46,6 +46,9 @@ describe('@moxxy/sdk package root', () => {
|
|
|
46
46
|
const NODE_ONLY_VALUE_EXPORTS = [
|
|
47
47
|
'writeFileAtomic',
|
|
48
48
|
'writeFileAtomicSync',
|
|
49
|
+
'writeSignedNetworkCacheAtomic',
|
|
50
|
+
'writeBoundedDataCacheAtomic',
|
|
51
|
+
'writeBoundedNetworkCacheAtomicSync',
|
|
49
52
|
'moxxyHome',
|
|
50
53
|
'moxxyPath',
|
|
51
54
|
'readRequestBody',
|
|
@@ -152,3 +152,57 @@ describe('resolveProviderTools', () => {
|
|
|
152
152
|
expect(resolveProviderTools([webSearch], models, 'catalog-drift').tools).toEqual([webSearch]);
|
|
153
153
|
});
|
|
154
154
|
});
|
|
155
|
+
|
|
156
|
+
/**
|
|
157
|
+
* Field descriptions are the only place a tool author can say what a parameter
|
|
158
|
+
* means, and the model is the audience. They were dropped on the floor: every
|
|
159
|
+
* `.describe()` in every moxxy tool reached the provider as nothing at all,
|
|
160
|
+
* which is how a model ends up inventing `tab_id: "current"` for a field whose
|
|
161
|
+
* description reads "Omit for the active tab".
|
|
162
|
+
*/
|
|
163
|
+
describe('zodToJsonSchema — descriptions', () => {
|
|
164
|
+
it('carries a field description through to the model', () => {
|
|
165
|
+
const out = zodToJsonSchema(z.object({ a: z.string().describe('Co to jest a') })) as {
|
|
166
|
+
properties: Record<string, Record<string, unknown>>;
|
|
167
|
+
};
|
|
168
|
+
|
|
169
|
+
expect(out.properties.a).toEqual({ type: 'string', description: 'Co to jest a' });
|
|
170
|
+
});
|
|
171
|
+
|
|
172
|
+
it('keeps a description that sits under a wrapper', () => {
|
|
173
|
+
expect(zodToJsonSchema(z.string().describe('opis').optional())).toEqual({
|
|
174
|
+
type: 'string',
|
|
175
|
+
description: 'opis',
|
|
176
|
+
});
|
|
177
|
+
});
|
|
178
|
+
|
|
179
|
+
it('lets the outermost description win when a wrapper carries one too', () => {
|
|
180
|
+
const schema = z.string().describe('wewnetrzny').optional().describe('zewnetrzny');
|
|
181
|
+
|
|
182
|
+
expect(zodToJsonSchema(schema)).toEqual({ type: 'string', description: 'zewnetrzny' });
|
|
183
|
+
});
|
|
184
|
+
|
|
185
|
+
it('describes a whole object, an enum and an array element too', () => {
|
|
186
|
+
const out = zodToJsonSchema(
|
|
187
|
+
z
|
|
188
|
+
.object({
|
|
189
|
+
mode: z.enum(['a', 'b']).describe('Tryb'),
|
|
190
|
+
tags: z.array(z.string()).describe('Etykiety'),
|
|
191
|
+
})
|
|
192
|
+
.describe('Cale wejscie'),
|
|
193
|
+
) as { description: string; properties: Record<string, Record<string, unknown>> };
|
|
194
|
+
|
|
195
|
+
expect(out.description).toBe('Cale wejscie');
|
|
196
|
+
expect(out.properties.mode?.description).toBe('Tryb');
|
|
197
|
+
expect(out.properties.tags?.description).toBe('Etykiety');
|
|
198
|
+
});
|
|
199
|
+
|
|
200
|
+
it('adds no description key when the author wrote none', () => {
|
|
201
|
+
expect(zodToJsonSchema(z.string())).toEqual({ type: 'string' });
|
|
202
|
+
expect(zodToJsonSchema(z.object({ a: z.string() }))).toEqual({
|
|
203
|
+
type: 'object',
|
|
204
|
+
properties: { a: { type: 'string' } },
|
|
205
|
+
required: ['a'],
|
|
206
|
+
});
|
|
207
|
+
});
|
|
208
|
+
});
|
package/src/provider-utils.ts
CHANGED
|
@@ -80,7 +80,29 @@ export function toFriendlyError(
|
|
|
80
80
|
*/
|
|
81
81
|
const MAX_SCHEMA_DEPTH = 32;
|
|
82
82
|
|
|
83
|
+
/**
|
|
84
|
+
* Convert, then re-attach the author's `.describe()` text.
|
|
85
|
+
*
|
|
86
|
+
* A field description is the only place a tool author gets to say what a
|
|
87
|
+
* parameter means, and the model is the audience — dropping it leaves the
|
|
88
|
+
* model guessing at values (`tab_id: "current"` for a field documented as
|
|
89
|
+
* "omit for the active tab"). `description` is standard JSON Schema, so every
|
|
90
|
+
* provider either uses it or ignores it.
|
|
91
|
+
*
|
|
92
|
+
* Doing it here rather than at each of the dozen returns below also fixes the
|
|
93
|
+
* wrappers for free: `.describe()` may sit on the ZodOptional/ZodEffects OR on
|
|
94
|
+
* the type inside it, and each level of the recursion re-enters through this
|
|
95
|
+
* function. The outermost wins, because it applies last.
|
|
96
|
+
*/
|
|
83
97
|
export function zodToJsonSchema(schema: unknown, depth = 0): unknown {
|
|
98
|
+
const json = convertSchema(schema, depth);
|
|
99
|
+
const description = (schema as { _def?: { description?: string } } | null)?._def?.description;
|
|
100
|
+
if (typeof description !== 'string' || !description) return json;
|
|
101
|
+
if (typeof json !== 'object' || json === null || Array.isArray(json)) return json;
|
|
102
|
+
return { ...json, description };
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
function convertSchema(schema: unknown, depth: number): unknown {
|
|
84
106
|
if (depth > MAX_SCHEMA_DEPTH) return {};
|
|
85
107
|
const s = schema as { _def?: { typeName?: string }; toJSON?: () => unknown };
|
|
86
108
|
// Only honor a pre-serialized schema's `toJSON` for NON-zod objects (a plain
|
package/src/server.ts
CHANGED
package/src/signature.ts
CHANGED
|
@@ -24,10 +24,15 @@ export function verifyEd25519(
|
|
|
24
24
|
signatureB64: string,
|
|
25
25
|
publicKeyPem: string,
|
|
26
26
|
): boolean {
|
|
27
|
-
|
|
27
|
+
// An Ed25519 signature is exactly 64 bytes (88 base64 characters including
|
|
28
|
+
// padding). Reject absurd input before decoding so an unauthenticated `.sig`
|
|
29
|
+
// response cannot force a large allocation at the verification boundary.
|
|
30
|
+
if (!publicKeyPem || !signatureB64 || signatureB64.length > 128) return false;
|
|
28
31
|
try {
|
|
29
32
|
const key = createPublicKey(publicKeyPem);
|
|
30
|
-
|
|
33
|
+
const signature = Buffer.from(signatureB64, 'base64');
|
|
34
|
+
if (signature.byteLength !== 64) return false;
|
|
35
|
+
return cryptoVerify(null, Buffer.from(bytes), key, signature);
|
|
31
36
|
} catch {
|
|
32
37
|
return false;
|
|
33
38
|
}
|