@pikku/core 0.12.103 → 0.12.106
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/CHANGELOG.md +24 -0
- package/dist/dev/module-runner.js +33 -1
- package/dist/middleware/index.d.ts +1 -0
- package/dist/middleware/index.js +1 -0
- package/dist/middleware/remote-jobs-secret.d.ts +14 -0
- package/dist/middleware/remote-jobs-secret.js +27 -0
- package/dist/services/credential-wire-service.d.ts +15 -0
- package/dist/services/credential-wire-service.js +30 -11
- package/dist/services/index.d.ts +1 -0
- package/dist/services/index.js +1 -0
- package/dist/services/remote-jobs.d.ts +27 -0
- package/dist/services/remote-jobs.js +59 -0
- package/dist/services/webhook-service.d.ts +8 -0
- package/dist/wirings/scheduler/index.d.ts +1 -1
- package/dist/wirings/scheduler/index.js +1 -1
- package/dist/wirings/scheduler/scheduler-runner.d.ts +4 -0
- package/dist/wirings/scheduler/scheduler-runner.js +1 -1
- package/package.json +1 -1
- package/src/dev/module-runner.test.ts +23 -0
- package/src/dev/module-runner.ts +39 -1
- package/src/middleware/index.ts +1 -0
- package/src/middleware/remote-jobs-secret.ts +35 -0
- package/src/public-surface.json +61 -14
- package/src/services/credential-wire-service.test.ts +63 -0
- package/src/services/credential-wire-service.ts +27 -9
- package/src/services/index.ts +10 -0
- package/src/services/remote-jobs.test.ts +106 -0
- package/src/services/remote-jobs.ts +92 -0
- package/src/services/webhook-service.ts +8 -0
- package/src/wirings/scheduler/index.ts +1 -0
- package/src/wirings/scheduler/scheduler-runner.ts +1 -1
- package/tsconfig.tsbuildinfo +1 -1
- package/dist/classification/data-lock.d.ts +0 -80
- package/dist/classification/data-lock.js +0 -146
- package/dist/column-form.d.ts +0 -32
- package/dist/column-form.js +0 -42
- package/dist/data-classification.d.ts +0 -64
- package/dist/data-classification.js +0 -1
- package/dist/ecosystem/agent-scorer.d.ts +0 -12
- package/dist/ecosystem/agent-scorer.js +0 -5
- package/dist/ecosystem/agent.d.ts +0 -21
- package/dist/ecosystem/agent.js +0 -6
- package/dist/ecosystem/channel/local.d.ts +0 -3
- package/dist/ecosystem/channel/local.js +0 -3
- package/dist/ecosystem/channel/serverless.d.ts +0 -9
- package/dist/ecosystem/channel/serverless.js +0 -1
- package/dist/ecosystem/channel.d.ts +0 -15
- package/dist/ecosystem/channel.js +0 -5
- package/dist/ecosystem/cli/channel.d.ts +0 -16
- package/dist/ecosystem/cli/channel.js +0 -2
- package/dist/ecosystem/cli.d.ts +0 -9
- package/dist/ecosystem/cli.js +0 -2
- package/dist/ecosystem/credential.d.ts +0 -10
- package/dist/ecosystem/credential.js +0 -1
- package/dist/ecosystem/crypto-utils.d.ts +0 -8
- package/dist/ecosystem/crypto-utils.js +0 -1
- package/dist/ecosystem/dev.d.ts +0 -9
- package/dist/ecosystem/dev.js +0 -2
- package/dist/ecosystem/errors.d.ts +0 -8
- package/dist/ecosystem/errors.js +0 -2
- package/dist/ecosystem/function.d.ts +0 -13
- package/dist/ecosystem/function.js +0 -2
- package/dist/ecosystem/gateway.d.ts +0 -1
- package/dist/ecosystem/gateway.js +0 -1
- package/dist/ecosystem/hmac.d.ts +0 -1
- package/dist/ecosystem/hmac.js +0 -1
- package/dist/ecosystem/http.d.ts +0 -13
- package/dist/ecosystem/http.js +0 -5
- package/dist/ecosystem/mcp.d.ts +0 -3
- package/dist/ecosystem/mcp.js +0 -2
- package/dist/ecosystem/middleware.d.ts +0 -18
- package/dist/ecosystem/middleware.js +0 -7
- package/dist/ecosystem/node-host-resolver.d.ts +0 -1
- package/dist/ecosystem/node-host-resolver.js +0 -1
- package/dist/ecosystem/node.d.ts +0 -1
- package/dist/ecosystem/node.js +0 -1
- package/dist/ecosystem/oauth2.d.ts +0 -1
- package/dist/ecosystem/oauth2.js +0 -1
- package/dist/ecosystem/persona.d.ts +0 -17
- package/dist/ecosystem/persona.js +0 -5
- package/dist/ecosystem/queue.d.ts +0 -13
- package/dist/ecosystem/queue.js +0 -4
- package/dist/ecosystem/remote.d.ts +0 -8
- package/dist/ecosystem/remote.js +0 -1
- package/dist/ecosystem/role.d.ts +0 -4
- package/dist/ecosystem/role.js +0 -2
- package/dist/ecosystem/rpc.d.ts +0 -6
- package/dist/ecosystem/rpc.js +0 -3
- package/dist/ecosystem/safe-fetch.d.ts +0 -7
- package/dist/ecosystem/safe-fetch.js +0 -1
- package/dist/ecosystem/scenario.d.ts +0 -21
- package/dist/ecosystem/scenario.js +0 -8
- package/dist/ecosystem/scheduler.d.ts +0 -3
- package/dist/ecosystem/scheduler.js +0 -2
- package/dist/ecosystem/schema.d.ts +0 -2
- package/dist/ecosystem/schema.js +0 -1
- package/dist/ecosystem/scope.d.ts +0 -5
- package/dist/ecosystem/scope.js +0 -3
- package/dist/ecosystem/secret.d.ts +0 -11
- package/dist/ecosystem/secret.js +0 -2
- package/dist/ecosystem/services/istanbul-coverage.d.ts +0 -1
- package/dist/ecosystem/services/istanbul-coverage.js +0 -1
- package/dist/ecosystem/services/local-content-request-handler.d.ts +0 -9
- package/dist/ecosystem/services/local-content-request-handler.js +0 -1
- package/dist/ecosystem/services/local-content.d.ts +0 -2
- package/dist/ecosystem/services/local-content.js +0 -1
- package/dist/ecosystem/services/local-meta.d.ts +0 -1
- package/dist/ecosystem/services/local-meta.js +0 -1
- package/dist/ecosystem/services/v8-coverage.d.ts +0 -1
- package/dist/ecosystem/services/v8-coverage.js +0 -1
- package/dist/ecosystem/services.d.ts +0 -36
- package/dist/ecosystem/services.js +0 -12
- package/dist/ecosystem/testing.d.ts +0 -7
- package/dist/ecosystem/testing.js +0 -1
- package/dist/ecosystem/trigger.d.ts +0 -2
- package/dist/ecosystem/trigger.js +0 -1
- package/dist/ecosystem/types.d.ts +0 -12
- package/dist/ecosystem/types.js +0 -6
- package/dist/ecosystem/variable.d.ts +0 -9
- package/dist/ecosystem/variable.js +0 -1
- package/dist/ecosystem/virtual-user.d.ts +0 -24
- package/dist/ecosystem/virtual-user.js +0 -8
- package/dist/ecosystem/workflow.d.ts +0 -20
- package/dist/ecosystem/workflow.js +0 -6
- package/dist/ecosystem.d.ts +0 -27
- package/dist/ecosystem.js +0 -26
- package/dist/index.d.ts +0 -60
- package/dist/index.js +0 -25
- package/dist/middleware/require-unlocked.d.ts +0 -23
- package/dist/middleware/require-unlocked.js +0 -21
- package/dist/pikku-request.d.ts +0 -8
- package/dist/pikku-request.js +0 -15
- package/dist/secret-value.d.ts +0 -56
- package/dist/secret-value.js +0 -46
- package/dist/wirings/data-lock/data-lock-wiring.d.ts +0 -40
- package/dist/wirings/data-lock/data-lock-wiring.js +0 -77
- package/dist/wirings/data-lock/index.d.ts +0 -9
- package/dist/wirings/data-lock/index.js +0 -8
- package/dist/wirings/rpc/addon-runner.d.ts +0 -17
- package/dist/wirings/rpc/addon-runner.js +0 -150
- package/dist/wirings/rpc/remote-addon-auth.d.ts +0 -16
- package/dist/wirings/rpc/remote-addon-auth.js +0 -39
- package/dist/wirings/rpc/wire-addon.d.ts +0 -62
- package/dist/wirings/rpc/wire-addon.js +0 -88
- package/dist/wirings/rpc/wire-remote-addon.d.ts +0 -22
- package/dist/wirings/rpc/wire-remote-addon.js +0 -11
|
@@ -1,80 +0,0 @@
|
|
|
1
|
-
import type { WrappedValue } from './data-classification.js';
|
|
2
|
-
export type LockState = 'uninitialized' | 'locked' | 'unlocked';
|
|
3
|
-
/**
|
|
4
|
-
* One KEK's stored material: everything a passphrase has to reproduce, and
|
|
5
|
-
* nothing a passphrase could be recovered from.
|
|
6
|
-
*/
|
|
7
|
-
export type LockRecord = {
|
|
8
|
-
keyId: string;
|
|
9
|
-
keyVersion: number;
|
|
10
|
-
salt: string;
|
|
11
|
-
/**
|
|
12
|
-
* A DEK sealed under this KEK. Unwrapping it is the passphrase check — AES-GCM
|
|
13
|
-
* fails its authentication tag under the wrong key, so a bad passphrase is
|
|
14
|
-
* caught before it can produce a single garbled row.
|
|
15
|
-
*/
|
|
16
|
-
verifier: WrappedValue;
|
|
17
|
-
};
|
|
18
|
-
/**
|
|
19
|
-
* Where lock records live.
|
|
20
|
-
*
|
|
21
|
-
* Necessarily readable while locked — a store that needed its own key to find
|
|
22
|
-
* out how to unlock itself could never be opened. It holds no plaintext key
|
|
23
|
-
* material, so this costs nothing.
|
|
24
|
-
*/
|
|
25
|
-
export interface LockVault {
|
|
26
|
-
read(): Promise<LockRecord[]>;
|
|
27
|
-
write(records: LockRecord[]): Promise<void>;
|
|
28
|
-
}
|
|
29
|
-
/**
|
|
30
|
-
* The gate in front of every classified column.
|
|
31
|
-
*
|
|
32
|
-
* A key is never held at construction: the server boots locked and serves the
|
|
33
|
-
* unlock screen, so the passphrase arrives over HTTP long after services are
|
|
34
|
-
* built. `getKEK` is what a Kysely classification resolver calls per operation,
|
|
35
|
-
* and it throws rather than returning a falsy key — silently writing plaintext
|
|
36
|
-
* into a column the manifest calls `wrapped` would look like a working app
|
|
37
|
-
* while the data sat exposed.
|
|
38
|
-
*/
|
|
39
|
-
export declare class DataLock {
|
|
40
|
-
private readonly vault;
|
|
41
|
-
private keks;
|
|
42
|
-
private records;
|
|
43
|
-
private initialized;
|
|
44
|
-
private failures;
|
|
45
|
-
private lockedOutUntil;
|
|
46
|
-
private readonly now;
|
|
47
|
-
constructor(vault: LockVault, options?: {
|
|
48
|
-
now?: () => number;
|
|
49
|
-
});
|
|
50
|
-
get state(): LockState;
|
|
51
|
-
/**
|
|
52
|
-
* How long before another guess will be looked at, or 0.
|
|
53
|
-
*
|
|
54
|
-
* Exposed so an unlock screen can show the wait instead of discovering it by
|
|
55
|
-
* guessing again — a guess made during a lockout is itself a failure, and
|
|
56
|
-
* extends the window it was trying to wait out.
|
|
57
|
-
*/
|
|
58
|
-
get retryAfterMs(): number;
|
|
59
|
-
/** Read what the store already has, so `state` can answer. */
|
|
60
|
-
init(): Promise<LockState>;
|
|
61
|
-
/**
|
|
62
|
-
* First run: mint a salt and verifier per key and leave the store open, since
|
|
63
|
-
* whoever chose the passphrase a moment ago does not need to retype it.
|
|
64
|
-
*/
|
|
65
|
-
initialize(passphrase: string, keyIds?: string[]): Promise<void>;
|
|
66
|
-
unlock(passphrase: string): Promise<void>;
|
|
67
|
-
lock(): void;
|
|
68
|
-
getKEK(keyId: string): Promise<CryptoKey>;
|
|
69
|
-
/**
|
|
70
|
-
* The version to stamp into a value written under `keyId`.
|
|
71
|
-
*
|
|
72
|
-
* Separate from `getKEK` because only a write has to ask: a stored value
|
|
73
|
-
* carries the version it was sealed under, so a read already knows. Readable
|
|
74
|
-
* while locked, since a version number is not key material.
|
|
75
|
-
*/
|
|
76
|
-
getKeyVersion(keyId: string): number;
|
|
77
|
-
private assertKnownKeyId;
|
|
78
|
-
private recordFailure;
|
|
79
|
-
private assertInitialized;
|
|
80
|
-
}
|
|
@@ -1,146 +0,0 @@
|
|
|
1
|
-
import { deriveKEK, generateDEK, generateKEKSalt, unwrapDEK, wrapDEK, } from '../crypto-utils.js';
|
|
2
|
-
import { DataLockedError, InvalidPassphraseError, TooManyAttemptsError, } from '../errors/errors.js';
|
|
3
|
-
import { DEFAULT_KEY_ID } from './key-ids.js';
|
|
4
|
-
/** Wrong guesses tolerated before a lockout window opens. */
|
|
5
|
-
const MAX_ATTEMPTS = 5;
|
|
6
|
-
const LOCKOUT_MS = 30_000;
|
|
7
|
-
const MAX_LOCKOUT_MS = 15 * 60_000;
|
|
8
|
-
/**
|
|
9
|
-
* The gate in front of every classified column.
|
|
10
|
-
*
|
|
11
|
-
* A key is never held at construction: the server boots locked and serves the
|
|
12
|
-
* unlock screen, so the passphrase arrives over HTTP long after services are
|
|
13
|
-
* built. `getKEK` is what a Kysely classification resolver calls per operation,
|
|
14
|
-
* and it throws rather than returning a falsy key — silently writing plaintext
|
|
15
|
-
* into a column the manifest calls `wrapped` would look like a working app
|
|
16
|
-
* while the data sat exposed.
|
|
17
|
-
*/
|
|
18
|
-
export class DataLock {
|
|
19
|
-
vault;
|
|
20
|
-
keks = new Map();
|
|
21
|
-
records = [];
|
|
22
|
-
initialized = false;
|
|
23
|
-
failures = 0;
|
|
24
|
-
lockedOutUntil = 0;
|
|
25
|
-
now;
|
|
26
|
-
constructor(vault, options = {}) {
|
|
27
|
-
this.vault = vault;
|
|
28
|
-
this.now = options.now ?? Date.now;
|
|
29
|
-
}
|
|
30
|
-
get state() {
|
|
31
|
-
if (!this.records.length) {
|
|
32
|
-
return 'uninitialized';
|
|
33
|
-
}
|
|
34
|
-
return this.keks.size ? 'unlocked' : 'locked';
|
|
35
|
-
}
|
|
36
|
-
/**
|
|
37
|
-
* How long before another guess will be looked at, or 0.
|
|
38
|
-
*
|
|
39
|
-
* Exposed so an unlock screen can show the wait instead of discovering it by
|
|
40
|
-
* guessing again — a guess made during a lockout is itself a failure, and
|
|
41
|
-
* extends the window it was trying to wait out.
|
|
42
|
-
*/
|
|
43
|
-
get retryAfterMs() {
|
|
44
|
-
return Math.max(0, this.lockedOutUntil - this.now());
|
|
45
|
-
}
|
|
46
|
-
/** Read what the store already has, so `state` can answer. */
|
|
47
|
-
async init() {
|
|
48
|
-
this.records = await this.vault.read();
|
|
49
|
-
this.initialized = true;
|
|
50
|
-
return this.state;
|
|
51
|
-
}
|
|
52
|
-
/**
|
|
53
|
-
* First run: mint a salt and verifier per key and leave the store open, since
|
|
54
|
-
* whoever chose the passphrase a moment ago does not need to retype it.
|
|
55
|
-
*/
|
|
56
|
-
async initialize(passphrase, keyIds = [DEFAULT_KEY_ID]) {
|
|
57
|
-
this.assertInitialized();
|
|
58
|
-
if (this.records.length) {
|
|
59
|
-
throw new Error('This store is already initialized. Re-initializing would seal it under a new key while every existing row stayed sealed under the old one.');
|
|
60
|
-
}
|
|
61
|
-
const records = [];
|
|
62
|
-
for (const keyId of keyIds) {
|
|
63
|
-
const salt = generateKEKSalt();
|
|
64
|
-
const kek = await deriveKEK(passphrase, salt);
|
|
65
|
-
records.push({
|
|
66
|
-
keyId,
|
|
67
|
-
keyVersion: 1,
|
|
68
|
-
salt,
|
|
69
|
-
verifier: await wrapDEK(kek, await generateDEK()),
|
|
70
|
-
});
|
|
71
|
-
this.keks.set(keyId, kek);
|
|
72
|
-
}
|
|
73
|
-
await this.vault.write(records);
|
|
74
|
-
this.records = records;
|
|
75
|
-
}
|
|
76
|
-
async unlock(passphrase) {
|
|
77
|
-
this.assertInitialized();
|
|
78
|
-
if (this.now() < this.lockedOutUntil) {
|
|
79
|
-
// A correct passphrase waits too. Exempting it would hand an attacker the
|
|
80
|
-
// oracle the throttle exists to deny: a guess that behaves differently is
|
|
81
|
-
// a guess that has been confirmed.
|
|
82
|
-
throw new TooManyAttemptsError();
|
|
83
|
-
}
|
|
84
|
-
const opened = new Map();
|
|
85
|
-
for (const record of this.records) {
|
|
86
|
-
const kek = await deriveKEK(passphrase, record.salt);
|
|
87
|
-
try {
|
|
88
|
-
await unwrapDEK(kek, record.verifier);
|
|
89
|
-
}
|
|
90
|
-
catch {
|
|
91
|
-
this.recordFailure();
|
|
92
|
-
// Which record failed says which key the passphrase was not for, so the
|
|
93
|
-
// whole attempt fails as one rather than naming it.
|
|
94
|
-
throw new InvalidPassphraseError();
|
|
95
|
-
}
|
|
96
|
-
opened.set(record.keyId, kek);
|
|
97
|
-
}
|
|
98
|
-
this.failures = 0;
|
|
99
|
-
this.lockedOutUntil = 0;
|
|
100
|
-
this.keks = opened;
|
|
101
|
-
}
|
|
102
|
-
lock() {
|
|
103
|
-
this.keks.clear();
|
|
104
|
-
}
|
|
105
|
-
async getKEK(keyId) {
|
|
106
|
-
// A keyId nobody initialized is a configuration error, and saying "locked"
|
|
107
|
-
// about it sends whoever reads that log hunting for a passphrase to a
|
|
108
|
-
// store that is already open. `DataLockedError` means only the lock state.
|
|
109
|
-
this.assertKnownKeyId(keyId);
|
|
110
|
-
const kek = this.keks.get(keyId);
|
|
111
|
-
if (!kek) {
|
|
112
|
-
throw new DataLockedError();
|
|
113
|
-
}
|
|
114
|
-
return kek;
|
|
115
|
-
}
|
|
116
|
-
/**
|
|
117
|
-
* The version to stamp into a value written under `keyId`.
|
|
118
|
-
*
|
|
119
|
-
* Separate from `getKEK` because only a write has to ask: a stored value
|
|
120
|
-
* carries the version it was sealed under, so a read already knows. Readable
|
|
121
|
-
* while locked, since a version number is not key material.
|
|
122
|
-
*/
|
|
123
|
-
getKeyVersion(keyId) {
|
|
124
|
-
this.assertKnownKeyId(keyId);
|
|
125
|
-
return this.records.find((record) => record.keyId === keyId).keyVersion;
|
|
126
|
-
}
|
|
127
|
-
assertKnownKeyId(keyId) {
|
|
128
|
-
if (!this.records.some((record) => record.keyId === keyId)) {
|
|
129
|
-
throw new Error(`No lock record for key "${keyId}" — every keyId a column names has to be passed to initialize(). Derive the list from the classification manifest with keyIdsFromManifest() so the two cannot drift.`);
|
|
130
|
-
}
|
|
131
|
-
}
|
|
132
|
-
recordFailure() {
|
|
133
|
-
this.failures += 1;
|
|
134
|
-
if (this.failures < MAX_ATTEMPTS) {
|
|
135
|
-
return;
|
|
136
|
-
}
|
|
137
|
-
const escalation = this.failures - MAX_ATTEMPTS;
|
|
138
|
-
this.lockedOutUntil =
|
|
139
|
-
this.now() + Math.min(LOCKOUT_MS * 2 ** escalation, MAX_LOCKOUT_MS);
|
|
140
|
-
}
|
|
141
|
-
assertInitialized() {
|
|
142
|
-
if (!this.initialized) {
|
|
143
|
-
throw new Error('DataLock.init() must run before the store is used');
|
|
144
|
-
}
|
|
145
|
-
}
|
|
146
|
-
}
|
package/dist/column-form.d.ts
DELETED
|
@@ -1,32 +0,0 @@
|
|
|
1
|
-
import type { HashedValue, SealedValue, WrappedValue } from './data-classification.js';
|
|
2
|
-
/**
|
|
3
|
-
* SHA-256 of a credential, lowercase hex — the sole producer of `HashedValue`.
|
|
4
|
-
*
|
|
5
|
-
* Deliberately unpeppered. These are high-entropy random bearer tokens, not
|
|
6
|
-
* passwords: there is no candidate set to search, so a pepper would add a key
|
|
7
|
-
* to manage and a rotation story to own while buying nothing. A column holding
|
|
8
|
-
* a *low*-entropy secret is not a `hashed` column — it wants a password KDF and
|
|
9
|
-
* a different type entirely.
|
|
10
|
-
*
|
|
11
|
-
* Async because it runs on WebCrypto rather than `node:crypto`, so the same
|
|
12
|
-
* code path works in a Worker. Callers that hash a bearer token on every
|
|
13
|
-
* request are already async.
|
|
14
|
-
*/
|
|
15
|
-
export declare const hashToken: (raw: string) => Promise<HashedValue>;
|
|
16
|
-
/**
|
|
17
|
-
* Assert that a string already in storage is ciphertext of the given form.
|
|
18
|
-
*
|
|
19
|
-
* The brands exist so that new writes must come from a real encrypt/hash call,
|
|
20
|
-
* but three paths legitimately hold such a value as a bare `string`: a
|
|
21
|
-
* migration backfilling rows written before the column declared its form, a
|
|
22
|
-
* test fixture, and a value arriving over the wire from a service that sealed
|
|
23
|
-
* it elsewhere. Each of those is a promise the caller is making, not something
|
|
24
|
-
* the type system can check — which is why these are named to be greppable and
|
|
25
|
-
* why there is no non-`unsafe` spelling. If one of these appears in ordinary
|
|
26
|
-
* request-handling code, that is the bug.
|
|
27
|
-
*/
|
|
28
|
-
export declare const unsafeAsWrapped: (stored: string) => WrappedValue;
|
|
29
|
-
/** See `unsafeAsWrapped`. */
|
|
30
|
-
export declare const unsafeAsSealed: (stored: string) => SealedValue;
|
|
31
|
-
/** See `unsafeAsWrapped`. */
|
|
32
|
-
export declare const unsafeAsHashed: (stored: string) => HashedValue;
|
package/dist/column-form.js
DELETED
|
@@ -1,42 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* SHA-256 of a credential, lowercase hex — the sole producer of `HashedValue`.
|
|
3
|
-
*
|
|
4
|
-
* Deliberately unpeppered. These are high-entropy random bearer tokens, not
|
|
5
|
-
* passwords: there is no candidate set to search, so a pepper would add a key
|
|
6
|
-
* to manage and a rotation story to own while buying nothing. A column holding
|
|
7
|
-
* a *low*-entropy secret is not a `hashed` column — it wants a password KDF and
|
|
8
|
-
* a different type entirely.
|
|
9
|
-
*
|
|
10
|
-
* Async because it runs on WebCrypto rather than `node:crypto`, so the same
|
|
11
|
-
* code path works in a Worker. Callers that hash a bearer token on every
|
|
12
|
-
* request are already async.
|
|
13
|
-
*/
|
|
14
|
-
export const hashToken = async (raw) => {
|
|
15
|
-
const subtle = globalThis.crypto?.subtle;
|
|
16
|
-
if (!subtle) {
|
|
17
|
-
throw new Error('WebCrypto not available');
|
|
18
|
-
}
|
|
19
|
-
const digest = await subtle.digest('SHA-256', new TextEncoder().encode(raw));
|
|
20
|
-
let hex = '';
|
|
21
|
-
for (const byte of new Uint8Array(digest)) {
|
|
22
|
-
hex += byte.toString(16).padStart(2, '0');
|
|
23
|
-
}
|
|
24
|
-
return hex;
|
|
25
|
-
};
|
|
26
|
-
/**
|
|
27
|
-
* Assert that a string already in storage is ciphertext of the given form.
|
|
28
|
-
*
|
|
29
|
-
* The brands exist so that new writes must come from a real encrypt/hash call,
|
|
30
|
-
* but three paths legitimately hold such a value as a bare `string`: a
|
|
31
|
-
* migration backfilling rows written before the column declared its form, a
|
|
32
|
-
* test fixture, and a value arriving over the wire from a service that sealed
|
|
33
|
-
* it elsewhere. Each of those is a promise the caller is making, not something
|
|
34
|
-
* the type system can check — which is why these are named to be greppable and
|
|
35
|
-
* why there is no non-`unsafe` spelling. If one of these appears in ordinary
|
|
36
|
-
* request-handling code, that is the bug.
|
|
37
|
-
*/
|
|
38
|
-
export const unsafeAsWrapped = (stored) => stored;
|
|
39
|
-
/** See `unsafeAsWrapped`. */
|
|
40
|
-
export const unsafeAsSealed = (stored) => stored;
|
|
41
|
-
/** See `unsafeAsWrapped`. */
|
|
42
|
-
export const unsafeAsHashed = (stored) => stored;
|
|
@@ -1,64 +0,0 @@
|
|
|
1
|
-
export type Private<T> = T & {
|
|
2
|
-
readonly __classification__?: 'private';
|
|
3
|
-
};
|
|
4
|
-
export type Pii<T> = T & {
|
|
5
|
-
readonly __classification__?: 'pii';
|
|
6
|
-
};
|
|
7
|
-
export type Secret<T> = T & {
|
|
8
|
-
readonly __classification__?: 'secret';
|
|
9
|
-
};
|
|
10
|
-
export type Classification = 'public' | 'private' | 'pii' | 'secret';
|
|
11
|
-
export type AnonymizeStrategy = 'fake:email' | 'fake:name' | 'hash' | 'keep' | null;
|
|
12
|
-
/**
|
|
13
|
-
* How a column's bytes are represented at rest, as distinct from how sensitive
|
|
14
|
-
* the value is (`Classification`). The two are independent: a token hash is
|
|
15
|
-
* `secret` + `hashed` and must never be encrypted, because the hash *is* the
|
|
16
|
-
* lookup key; a live bearer token is `secret` + `plain` today and should not be.
|
|
17
|
-
*
|
|
18
|
-
* `wrapped` and `sealed` are siblings rather than one being "encrypted": both
|
|
19
|
-
* are ciphertext, and what separates them is who can read it back. Wrapped is
|
|
20
|
-
* symmetric and the application holds the key. Sealed is asymmetric and the
|
|
21
|
-
* application holds only the public half, so it can write the value and never
|
|
22
|
-
* read it. Storing one where the other is expected is silent, permanent data
|
|
23
|
-
* loss, which is why they are not collapsed into a single `encrypted`.
|
|
24
|
-
*/
|
|
25
|
-
export type ColumnForm = 'plain' | 'hashed' | 'wrapped' | 'sealed';
|
|
26
|
-
declare const wrappedBrand: unique symbol;
|
|
27
|
-
declare const sealedBrand: unique symbol;
|
|
28
|
-
declare const hashedBrand: unique symbol;
|
|
29
|
-
/**
|
|
30
|
-
* Ciphertext under a symmetric key the application holds — the output of
|
|
31
|
-
* `envelopeEncrypt`, `wrapDEK` or `envelopeRewrap`.
|
|
32
|
-
*
|
|
33
|
-
* Unlike `Secret<T>` the brand is REQUIRED, so a plain `string` is not
|
|
34
|
-
* assignable and a column declared `form: 'wrapped'` cannot be written with
|
|
35
|
-
* anything but genuine ciphertext. It stays assignable *to* `string`, so it
|
|
36
|
-
* still works as a query operand and serializes normally — the constraint is on
|
|
37
|
-
* construction, not on use.
|
|
38
|
-
*/
|
|
39
|
-
export type WrappedValue = string & {
|
|
40
|
-
readonly [wrappedBrand]: true;
|
|
41
|
-
};
|
|
42
|
-
/** Ciphertext under a public key whose private half the application does not
|
|
43
|
-
* hold. Deliberately not assignable to `WrappedValue`: writing one where the
|
|
44
|
-
* other belongs produces a row nobody can ever open. */
|
|
45
|
-
export type SealedValue = string & {
|
|
46
|
-
readonly [sealedBrand]: true;
|
|
47
|
-
};
|
|
48
|
-
/** A one-way digest of a secret input. The brand's job is narrow — stop a *raw*
|
|
49
|
-
* credential being written into the column that should hold its hash. */
|
|
50
|
-
export type HashedValue = string & {
|
|
51
|
-
readonly [hashedBrand]: true;
|
|
52
|
-
};
|
|
53
|
-
export interface ColumnClassification {
|
|
54
|
-
classification: Classification;
|
|
55
|
-
anonymize_strategy: AnonymizeStrategy;
|
|
56
|
-
/** At-rest representation. Absent means `plain`. */
|
|
57
|
-
form?: ColumnForm;
|
|
58
|
-
description?: string;
|
|
59
|
-
}
|
|
60
|
-
export type ClassificationManifest = {
|
|
61
|
-
version: 1;
|
|
62
|
-
tables: Record<string, Record<string, ColumnClassification>>;
|
|
63
|
-
};
|
|
64
|
-
export {};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export {};
|
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
export { gradeRun } from '../wirings/agent-scorer/agent-scorer-grade.js';
|
|
2
|
-
export { addAgentScorer } from '../wirings/agent-scorer/agent-scorer-registry.js';
|
|
3
|
-
export { enableScoreSnapshots, getScoreSnapshot, } from '../wirings/agent-scorer/agent-scorer-snapshots.js';
|
|
4
|
-
export { wireAgentScorerQueueWorkers } from '../wirings/agent-scorer/agent-scorer-worker.js';
|
|
5
|
-
export { pikkuAgentJudge, pikkuAgentScorer, } from '../wirings/agent-scorer/agent-scorer.js';
|
|
6
|
-
export type { AgentRunScore, ScorerMeta, } from '../wirings/agent-scorer/agent-scorer.types.js';
|
|
7
|
-
/**
|
|
8
|
-
* Types the exports above mention but do not themselves export. Without
|
|
9
|
-
* them a consumer's declaration emit has no name for the type it infers,
|
|
10
|
-
* and fails with TS2883 rather than reaching for the original entry point.
|
|
11
|
-
*/
|
|
12
|
-
export type { PikkuAgentScorer, ScoreJob, ScorerInput, ScorerOutput, } from '../wirings/agent-scorer/agent-scorer.types.js';
|
|
@@ -1,5 +0,0 @@
|
|
|
1
|
-
export { gradeRun } from '../wirings/agent-scorer/agent-scorer-grade.js';
|
|
2
|
-
export { addAgentScorer } from '../wirings/agent-scorer/agent-scorer-registry.js';
|
|
3
|
-
export { enableScoreSnapshots, getScoreSnapshot, } from '../wirings/agent-scorer/agent-scorer-snapshots.js';
|
|
4
|
-
export { wireAgentScorerQueueWorkers } from '../wirings/agent-scorer/agent-scorer-worker.js';
|
|
5
|
-
export { pikkuAgentJudge, pikkuAgentScorer, } from '../wirings/agent-scorer/agent-scorer.js';
|
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
export type { AgentRunStateService, CreateRunInput, SaveScoreInput, } from '../services/agent-run-state-service.js';
|
|
2
|
-
export type { AgentRunnerParams, AgentRunnerService, AgentStepResult, } from '../services/agent-runner-service.js';
|
|
3
|
-
export type { AgentStorageService } from '../services/agent-storage-service.js';
|
|
4
|
-
export { agent, agentApprove, agentResume, agentStream, } from '../wirings/agent/agent-helpers.js';
|
|
5
|
-
export { resolveModelAlias } from '../wirings/agent/agent-model-config.js';
|
|
6
|
-
export { canAccessThread, isOwnedByPrincipal, threadOwnerConstraint, } from '../wirings/agent/agent-prepare.js';
|
|
7
|
-
export { addAgent } from '../wirings/agent/agent-registry.js';
|
|
8
|
-
export type { AgentInput, AgentMemoryConfig, AgentMessage, AgentsMeta, AgentStep, AgentContentPart, AgentRunRow, AgentRunService, AgentRunState, AgentStreamChannel, AgentThread, CoreAgent, PendingApproval, PikkuAgentMiddlewareHooks, } from '../wirings/agent/agent.types.js';
|
|
9
|
-
export { voiceInput } from '../wirings/agent/voice-input.js';
|
|
10
|
-
export { voiceOutput } from '../wirings/agent/voice-output.js';
|
|
11
|
-
/**
|
|
12
|
-
* Types the exports above mention but do not themselves export. Without
|
|
13
|
-
* them a consumer's declaration emit has no name for the type it infers,
|
|
14
|
-
* and fails with TS2883 rather than reaching for the original entry point.
|
|
15
|
-
*/
|
|
16
|
-
export type { LogLevel } from '../services/logger.js';
|
|
17
|
-
export type { WebhookServiceConfig } from '../services/webhook-service.js';
|
|
18
|
-
export type { CoreSingletonServices, PostgresConfig, } from '../types/core.types.js';
|
|
19
|
-
export type { SpeakableScripts } from '../wirings/agent/voice-output.js';
|
|
20
|
-
export type { WorkflowServiceConfig } from '../wirings/workflow/workflow.types.js';
|
|
21
|
-
export type { VoiceOutputState } from '../wirings/agent/voice-output.js';
|
package/dist/ecosystem/agent.js
DELETED
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
export { agent, agentApprove, agentResume, agentStream, } from '../wirings/agent/agent-helpers.js';
|
|
2
|
-
export { resolveModelAlias } from '../wirings/agent/agent-model-config.js';
|
|
3
|
-
export { canAccessThread, isOwnedByPrincipal, threadOwnerConstraint, } from '../wirings/agent/agent-prepare.js';
|
|
4
|
-
export { addAgent } from '../wirings/agent/agent-registry.js';
|
|
5
|
-
export { voiceInput } from '../wirings/agent/voice-input.js';
|
|
6
|
-
export { voiceOutput } from '../wirings/agent/voice-output.js';
|
|
@@ -1,3 +0,0 @@
|
|
|
1
|
-
export { PikkuLocalChannelHandler } from '../../wirings/channel/local/local-channel-handler.js';
|
|
2
|
-
export { runLocalChannel } from '../../wirings/channel/local/local-channel-runner.js';
|
|
3
|
-
export { LocalEventHubService } from '../../wirings/channel/local/local-eventhub-service.js';
|
|
@@ -1,3 +0,0 @@
|
|
|
1
|
-
export { PikkuLocalChannelHandler } from '../../wirings/channel/local/local-channel-handler.js';
|
|
2
|
-
export { runLocalChannel } from '../../wirings/channel/local/local-channel-runner.js';
|
|
3
|
-
export { LocalEventHubService } from '../../wirings/channel/local/local-eventhub-service.js';
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
export { runChannelConnect, runChannelDisconnect, runChannelMessage, } from '../../wirings/channel/serverless/serverless-channel-runner.js';
|
|
2
|
-
export type { RunServerlessChannelParams } from '../../wirings/channel/serverless/serverless-channel-runner.js';
|
|
3
|
-
/**
|
|
4
|
-
* Types the exports above mention but do not themselves export. Without
|
|
5
|
-
* them a consumer's declaration emit has no name for the type it infers,
|
|
6
|
-
* and fails with TS2883 rather than reaching for the original entry point.
|
|
7
|
-
*/
|
|
8
|
-
export type { ChannelStore } from '../../wirings/channel/channel-store.js';
|
|
9
|
-
export type { PikkuChannelHandlerFactory } from '../../wirings/channel/channel.types.js';
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export { runChannelConnect, runChannelDisconnect, runChannelMessage, } from '../../wirings/channel/serverless/serverless-channel-runner.js';
|
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
export { addChannelMiddleware } from '../wirings/channel/channel-middleware-runner.js';
|
|
2
|
-
export type { Capabilities } from '../wirings/channel/channel-rpc.types.js';
|
|
3
|
-
export { ChannelStore } from '../wirings/channel/channel-store.js';
|
|
4
|
-
export type { Channel } from '../wirings/channel/channel-store.js';
|
|
5
|
-
export type { BinaryData, ChannelMessageMeta, ChannelMeta, ChannelsMeta, CoreChannel, CorePikkuChannelMiddleware, CorePikkuChannelMiddlewareFactory, PikkuChannelHandlerFactory, } from '../wirings/channel/channel.types.js';
|
|
6
|
-
export type { EventHubService } from '../wirings/channel/eventhub-service.js';
|
|
7
|
-
export { EventHubStore } from '../wirings/channel/eventhub-store.js';
|
|
8
|
-
export { logChannels } from '../wirings/channel/log-channels.js';
|
|
9
|
-
export { PikkuAbstractChannelHandler } from '../wirings/channel/pikku-abstract-channel-handler.js';
|
|
10
|
-
/**
|
|
11
|
-
* Types the exports above mention but do not themselves export. Without
|
|
12
|
-
* them a consumer's declaration emit has no name for the type it infers,
|
|
13
|
-
* and fails with TS2883 rather than reaching for the original entry point.
|
|
14
|
-
*/
|
|
15
|
-
export type { Logger } from '../services/logger.js';
|
|
@@ -1,5 +0,0 @@
|
|
|
1
|
-
export { addChannelMiddleware } from '../wirings/channel/channel-middleware-runner.js';
|
|
2
|
-
export { ChannelStore } from '../wirings/channel/channel-store.js';
|
|
3
|
-
export { EventHubStore } from '../wirings/channel/eventhub-store.js';
|
|
4
|
-
export { logChannels } from '../wirings/channel/log-channels.js';
|
|
5
|
-
export { PikkuAbstractChannelHandler } from '../wirings/channel/pikku-abstract-channel-handler.js';
|
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
export { handleRawCLI } from '../../wirings/cli/channel/cli-raw-channel-runner.js';
|
|
2
|
-
export type { RawCLIFrame } from '../../wirings/cli/channel/cli-raw-channel-runner.js';
|
|
3
|
-
export { executeRawCLIViaChannel } from '../../wirings/cli/channel/cli-raw-client-runner.js';
|
|
4
|
-
export type { CorePikkuCLIClientRender } from '../../wirings/cli/channel/cli-raw-client-runner.js';
|
|
5
|
-
/**
|
|
6
|
-
* Types the exports above mention but do not themselves export. Without
|
|
7
|
-
* them a consumer's declaration emit has no name for the type it infers,
|
|
8
|
-
* and fails with TS2883 rather than reaching for the original entry point.
|
|
9
|
-
*/
|
|
10
|
-
export type { LogLevel } from '../../services/logger.js';
|
|
11
|
-
export type { WebhookServiceConfig } from '../../services/webhook-service.js';
|
|
12
|
-
export type { CoreSingletonServices, CoreUserSession, CreateWireServices, PostgresConfig, } from '../../types/core.types.js';
|
|
13
|
-
export type { ApprovalRequester, Capabilities, } from '../../wirings/channel/channel-rpc.types.js';
|
|
14
|
-
export type { PikkuChannel } from '../../wirings/channel/channel.types.js';
|
|
15
|
-
export type { RawCLIResult } from '../../wirings/cli/channel/cli-raw-channel-runner.js';
|
|
16
|
-
export type { WorkflowServiceConfig } from '../../wirings/workflow/workflow.types.js';
|
package/dist/ecosystem/cli.d.ts
DELETED
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
export { CLIError, executeCLI, pikkuCLIRender, } from '../wirings/cli/cli-runner.js';
|
|
2
|
-
export type { CLICommandMeta, CLIMeta, CLIProgramMeta, CoreCLI, CoreCLICommandConfig, CorePikkuCLIRender, } from '../wirings/cli/cli.types.js';
|
|
3
|
-
export { generateCommandHelp } from '../wirings/cli/command-parser.js';
|
|
4
|
-
/**
|
|
5
|
-
* Types the exports above mention but do not themselves export. Without
|
|
6
|
-
* them a consumer's declaration emit has no name for the type it infers,
|
|
7
|
-
* and fails with TS2883 rather than reaching for the original entry point.
|
|
8
|
-
*/
|
|
9
|
-
export type { CreateConfig, CreateSingletonServices, CreateWireServices, } from '../types/core.types.js';
|
package/dist/ecosystem/cli.js
DELETED
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
export type { CredentialService } from '../services/credential-service.js';
|
|
2
|
-
export type { CredentialDefinitions } from '../wirings/credential/credential.types.js';
|
|
3
|
-
export { validateAndBuildCredentialDefinitionsMeta } from '../wirings/credential/validate-credential-definitions.js';
|
|
4
|
-
/**
|
|
5
|
-
* Types the exports above mention but do not themselves export. Without
|
|
6
|
-
* them a consumer's declaration emit has no name for the type it infers,
|
|
7
|
-
* and fails with TS2883 rather than reaching for the original entry point.
|
|
8
|
-
*/
|
|
9
|
-
export type { SchemaRefLike } from '../types/core.types.js';
|
|
10
|
-
export type { CredentialDefinitionsMeta } from '../wirings/credential/credential.types.js';
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export { validateAndBuildCredentialDefinitionsMeta } from '../wirings/credential/validate-credential-definitions.js';
|
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
export { deriveKEK, envelopeDecrypt, envelopeEncrypt, envelopeRewrap, generateKEKSalt, } from '../crypto-utils.js';
|
|
2
|
-
export type { EnvelopeEncryptResult } from '../crypto-utils.js';
|
|
3
|
-
/**
|
|
4
|
-
* Types the exports above mention but do not themselves export. Without
|
|
5
|
-
* them a consumer's declaration emit has no name for the type it infers,
|
|
6
|
-
* and fails with TS2883 rather than reaching for the original entry point.
|
|
7
|
-
*/
|
|
8
|
-
export type { WrappedValue } from '../data-classification.js';
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export { deriveKEK, envelopeDecrypt, envelopeEncrypt, envelopeRewrap, generateKEKSalt, } from '../crypto-utils.js';
|
package/dist/ecosystem/dev.d.ts
DELETED
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
export { pikkuDevReloader } from '../dev/hot-reload.js';
|
|
2
|
-
export { reconcileAddonRegistry, reloadGeneratedMeta, } from '../dev/reload-meta.js';
|
|
3
|
-
/**
|
|
4
|
-
* Types the exports above mention but do not themselves export. Without
|
|
5
|
-
* them a consumer's declaration emit has no name for the type it infers,
|
|
6
|
-
* and fails with TS2883 rather than reaching for the original entry point.
|
|
7
|
-
*/
|
|
8
|
-
export type { ReloadGeneratedMetaOptions } from '../dev/reload-meta.js';
|
|
9
|
-
export type { Logger } from '../services/logger.js';
|
package/dist/ecosystem/dev.js
DELETED
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
export * from '../errors/errors.js';
|
|
2
|
-
export { PikkuError, addError } from '../errors/error-handler.js';
|
|
3
|
-
/**
|
|
4
|
-
* Types the exports above mention but do not themselves export. Without
|
|
5
|
-
* them a consumer's declaration emit has no name for the type it infers,
|
|
6
|
-
* and fails with TS2883 rather than reaching for the original entry point.
|
|
7
|
-
*/
|
|
8
|
-
export type { ErrorDetails } from '../errors/error-handler.js';
|
package/dist/ecosystem/errors.js
DELETED
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
export { addFunction, getAllFunctionNames, } from '../function/function-runner.js';
|
|
2
|
-
export { pikkuAuth } from '../function/functions.types.js';
|
|
3
|
-
export type { CorePikkuAuth, CorePikkuAuthConfig, CorePikkuFunction, CorePikkuFunctionConfig, CorePikkuFunctionSessionless, CorePikkuPermission, CorePikkuSessionlessFunctionConfig, } from '../function/functions.types.js';
|
|
4
|
-
export type { ListInput, ListOutput } from '../function/list.types.js';
|
|
5
|
-
/**
|
|
6
|
-
* Types the exports above mention but do not themselves export. Without
|
|
7
|
-
* them a consumer's declaration emit has no name for the type it infers,
|
|
8
|
-
* and fails with TS2883 rather than reaching for the original entry point.
|
|
9
|
-
*/
|
|
10
|
-
export type { LogLevel } from '../services/logger.js';
|
|
11
|
-
export type { WebhookServiceConfig } from '../services/webhook-service.js';
|
|
12
|
-
export type { CoreSecretlessSingletonServices, CoreSingletonServices, CoreUserSession, PostgresConfig, SecretlessServices, } from '../types/core.types.js';
|
|
13
|
-
export type { WorkflowServiceConfig } from '../wirings/workflow/workflow.types.js';
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export type { GatewayTransportType, GatewaysMeta, } from '../wirings/gateway/gateway.types.js';
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export {};
|
package/dist/ecosystem/hmac.d.ts
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export { hmacSha256Hex, timingSafeStringEqual } from '../utils/hmac.js';
|
package/dist/ecosystem/hmac.js
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export { hmacSha256Hex, timingSafeStringEqual } from '../utils/hmac.js';
|
package/dist/ecosystem/http.d.ts
DELETED
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
export { fetch, fetchData, wireHTTP } from '../wirings/http/http-runner.js';
|
|
2
|
-
export type { AssertHTTPWiringParams, CoreHTTPFunctionWiring, HTTPMethod, HTTPRouteBaseConfig, HTTPWiringsMeta, PikkuHTTP, PikkuHTTPResponse, PikkuQuery, RunHTTPWiringOptions, } from '../wirings/http/http.types.js';
|
|
3
|
-
export { logRoutes } from '../wirings/http/log-http-routes.js';
|
|
4
|
-
export { DEFAULT_MAX_BODY_SIZE, PikkuFetchHTTPRequest, } from '../wirings/http/pikku-fetch-http-request.js';
|
|
5
|
-
export { PikkuFetchHTTPResponse } from '../wirings/http/pikku-fetch-http-response.js';
|
|
6
|
-
export { toWebRequest } from '../wirings/http/web-request.js';
|
|
7
|
-
/**
|
|
8
|
-
* Types the exports above mention but do not themselves export. Without
|
|
9
|
-
* them a consumer's declaration emit has no name for the type it infers,
|
|
10
|
-
* and fails with TS2883 rather than reaching for the original entry point.
|
|
11
|
-
*/
|
|
12
|
-
export type { Logger } from '../services/logger.js';
|
|
13
|
-
export type { PikkuHTTPRequest } from '../wirings/http/http.types.js';
|
package/dist/ecosystem/http.js
DELETED
|
@@ -1,5 +0,0 @@
|
|
|
1
|
-
export { fetch, fetchData, wireHTTP } from '../wirings/http/http-runner.js';
|
|
2
|
-
export { logRoutes } from '../wirings/http/log-http-routes.js';
|
|
3
|
-
export { DEFAULT_MAX_BODY_SIZE, PikkuFetchHTTPRequest, } from '../wirings/http/pikku-fetch-http-request.js';
|
|
4
|
-
export { PikkuFetchHTTPResponse } from '../wirings/http/pikku-fetch-http-response.js';
|
|
5
|
-
export { toWebRequest } from '../wirings/http/web-request.js';
|
package/dist/ecosystem/mcp.d.ts
DELETED
|
@@ -1,3 +0,0 @@
|
|
|
1
|
-
export { MCPEndpointRegistry } from '../wirings/mcp/mcp-endpoint-registry.js';
|
|
2
|
-
export { MCPError, getMCPPromptsMeta, getMCPResourcesMeta, getMCPToolsMeta, runMCPPrompt, runMCPResource, runMCPTool, } from '../wirings/mcp/mcp-runner.js';
|
|
3
|
-
export type { AssertMCPResourceURIParams, CoreMCPPrompt, CoreMCPResource, MCPPromptMeta, MCPResourceMeta, MCPToolMeta, MCPToolResponse, PikkuMCP, } from '../wirings/mcp/mcp.types.js';
|
package/dist/ecosystem/mcp.js
DELETED