@source-repo/rpc-cli 4.6.0 → 5.0.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/README.md +1 -0
- package/dist/console.d.ts +15 -2
- package/dist/console.d.ts.map +1 -1
- package/dist/console.js +49 -15
- package/dist/console.js.map +1 -1
- package/dist/console.types.json +459 -0
- package/dist/credentials.d.ts +77 -0
- package/dist/credentials.d.ts.map +1 -0
- package/dist/credentials.js +118 -0
- package/dist/credentials.js.map +1 -0
- package/dist/enrolment.d.ts +91 -0
- package/dist/enrolment.d.ts.map +1 -0
- package/dist/enrolment.js +94 -0
- package/dist/enrolment.js.map +1 -0
- package/dist/extract.d.ts.map +1 -1
- package/dist/extract.js +69 -3
- package/dist/extract.js.map +1 -1
- package/dist/grants.d.ts +25 -0
- package/dist/grants.d.ts.map +1 -0
- package/dist/grants.js +62 -0
- package/dist/grants.js.map +1 -0
- package/dist/index.js +219 -71
- package/dist/index.js.map +1 -1
- package/dist/mcp.d.ts.map +1 -1
- package/dist/mcp.js +323 -1
- package/dist/mcp.js.map +1 -1
- package/dist/network.d.ts +47 -1
- package/dist/network.d.ts.map +1 -1
- package/dist/network.js +17 -1
- package/dist/network.js.map +1 -1
- package/dist/node.d.ts +10 -0
- package/dist/node.d.ts.map +1 -1
- package/dist/node.js +12 -0
- package/dist/node.js.map +1 -1
- package/dist/pairing.d.ts +52 -0
- package/dist/pairing.d.ts.map +1 -0
- package/dist/pairing.js +57 -0
- package/dist/pairing.js.map +1 -0
- package/dist/tasks.d.ts +189 -0
- package/dist/tasks.d.ts.map +1 -0
- package/dist/tasks.js +485 -0
- package/dist/tasks.js.map +1 -0
- package/dist/web/app.css +1 -1
- package/dist/web/app.js +12 -12
- package/dist/web/app.js.map +1 -1
- package/package.json +7 -5
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
import { readFileSync, statSync } from 'node:fs';
|
|
2
|
+
import { createHmacSigner, createHmacVerifier, mintDerivedCredential } from '@source-repo/rpc';
|
|
3
|
+
/**
|
|
4
|
+
* Whether anyone but the owner can read a file holding secrets.
|
|
5
|
+
*
|
|
6
|
+
* Reported rather than refused: a mode nobody can read is not always achievable - a mounted config
|
|
7
|
+
* map, a Windows filesystem - and a command that stopped there would be a command nobody could run
|
|
8
|
+
* in those places. Saying it once is what makes the ordinary case, where the mode is simply wrong,
|
|
9
|
+
* visible to whoever started it.
|
|
10
|
+
*/
|
|
11
|
+
export const readableByOthers = (path) => {
|
|
12
|
+
try {
|
|
13
|
+
return !!(statSync(path).mode & 0o077);
|
|
14
|
+
}
|
|
15
|
+
catch {
|
|
16
|
+
// File modes are not available on every platform. The secrets are still valid there.
|
|
17
|
+
return false;
|
|
18
|
+
}
|
|
19
|
+
};
|
|
20
|
+
/**
|
|
21
|
+
* The signer and verifier for one identity, wherever its secrets were written down.
|
|
22
|
+
*
|
|
23
|
+
* `where` names that place in the errors - a key file's path, or the task the keys are written
|
|
24
|
+
* inside - because the reader has to go and edit it, and "has no secret" without an address is a
|
|
25
|
+
* message that sends someone looking through every file they have.
|
|
26
|
+
*/
|
|
27
|
+
export const signingFrom = (value, where) => {
|
|
28
|
+
if (!value || typeof value !== 'object' || Array.isArray(value))
|
|
29
|
+
throw new Error(`${where} must be an object with a "secret"`);
|
|
30
|
+
const keys = value;
|
|
31
|
+
if (typeof keys.secret !== 'string' || !keys.secret)
|
|
32
|
+
throw new Error(`${where} has no "secret"`);
|
|
33
|
+
if (keys.name !== undefined && (typeof keys.name !== 'string' || !keys.name))
|
|
34
|
+
throw new Error(`${where} has an invalid "name"`);
|
|
35
|
+
if (keys.peers !== undefined && (!keys.peers || typeof keys.peers !== 'object' || Array.isArray(keys.peers)))
|
|
36
|
+
throw new Error(`${where} has invalid "peers"`);
|
|
37
|
+
if (keys.peers && Object.entries(keys.peers).some(([peer, secret]) => !peer || typeof secret !== 'string' || !secret))
|
|
38
|
+
throw new Error(`${where} has a peer in "peers" with no secret`);
|
|
39
|
+
const sign = createHmacSigner(keys.secret);
|
|
40
|
+
const verify = keys.peers ? createHmacVerifier((peer) => keys.peers?.[peer]) : undefined;
|
|
41
|
+
return { keys, sign, ...(verify ? { verify } : {}) };
|
|
42
|
+
};
|
|
43
|
+
/** Read and validate one peer's HMAC identity without deciding how a command reports failures. */
|
|
44
|
+
export const loadSigningKeys = (path) => {
|
|
45
|
+
let keys;
|
|
46
|
+
try {
|
|
47
|
+
keys = JSON.parse(readFileSync(path, 'utf8'));
|
|
48
|
+
}
|
|
49
|
+
catch (e) {
|
|
50
|
+
throw new Error(`cannot read keys from ${path}: ${e instanceof Error ? e.message : String(e)}`, { cause: e });
|
|
51
|
+
}
|
|
52
|
+
return { ...signingFrom(keys, path), readableByOthers: readableByOthers(path) };
|
|
53
|
+
};
|
|
54
|
+
/**
|
|
55
|
+
* The certificate and key a server serves TLS with.
|
|
56
|
+
*
|
|
57
|
+
* Paths rather than contents wherever this is configured, and both halves together: a PEM on a
|
|
58
|
+
* command line would be in `ps` and in the shell history, and a certificate without its key opens a
|
|
59
|
+
* port that listens and then fails every handshake.
|
|
60
|
+
*/
|
|
61
|
+
export const loadTls = (certPath, keyPath) => {
|
|
62
|
+
try {
|
|
63
|
+
return { cert: readFileSync(certPath), key: readFileSync(keyPath) };
|
|
64
|
+
}
|
|
65
|
+
catch (e) {
|
|
66
|
+
throw new Error(`cannot read the certificate or key: ${e instanceof Error ? e.message : String(e)}`, { cause: e });
|
|
67
|
+
}
|
|
68
|
+
};
|
|
69
|
+
/** Read the credentials a command presents, or the grants a bus accepts, from a file. */
|
|
70
|
+
export const loadAuthFile = (path) => {
|
|
71
|
+
let auth;
|
|
72
|
+
try {
|
|
73
|
+
auth = JSON.parse(readFileSync(path, 'utf8'));
|
|
74
|
+
}
|
|
75
|
+
catch (e) {
|
|
76
|
+
throw new Error(`cannot read tokens from ${path}: ${e instanceof Error ? e.message : String(e)}`, { cause: e });
|
|
77
|
+
}
|
|
78
|
+
// An empty file is the failure that looks like success: the command starts, and the bus it
|
|
79
|
+
// meant to gate is open. Better to refuse than to run unauthenticated on request.
|
|
80
|
+
if (!auth.token && !auth.tokens)
|
|
81
|
+
throw new Error(`${path} has neither "token" nor "tokens"`);
|
|
82
|
+
return { auth, readableByOthers: readableByOthers(path) };
|
|
83
|
+
};
|
|
84
|
+
/**
|
|
85
|
+
* How long a script's credential lasts. Deliberately short of a working day: a credential that
|
|
86
|
+
* outlives the run it was minted for is the failure this design exists to avoid, and a script that
|
|
87
|
+
* needs longer should be a peer with a credential an operator issued.
|
|
88
|
+
*/
|
|
89
|
+
const SCRIPT_CREDENTIAL_MS = 4 * 60 * 60 * 1000;
|
|
90
|
+
/**
|
|
91
|
+
* Mints each script its own short-lived credential, or nothing when this peer holds no `derive`
|
|
92
|
+
* secret - in which case scripts start unauthenticated rather than borrowing the node's identity.
|
|
93
|
+
*/
|
|
94
|
+
export const scriptCredentials = (auth, issuer, warning) => {
|
|
95
|
+
if (!auth.derive)
|
|
96
|
+
return undefined;
|
|
97
|
+
if (!auth.token && !auth.tokens && !auth.issuers)
|
|
98
|
+
warning?.("'derive' is set but no credential of this peer's own is - scripts will present credentials to a bus that may not be checking any.");
|
|
99
|
+
return async (script) => {
|
|
100
|
+
const name = `${script}@${issuer}`;
|
|
101
|
+
const issuedAt = Date.now();
|
|
102
|
+
return {
|
|
103
|
+
name,
|
|
104
|
+
token: await mintDerivedCredential({
|
|
105
|
+
credentialId: `${script}-${issuedAt.toString(36)}`,
|
|
106
|
+
subject: name,
|
|
107
|
+
// The provenance the AI boundary reads. A script is a program this node started,
|
|
108
|
+
// whoever wrote it - the honest claim, and never a claim about what wrote it.
|
|
109
|
+
roles: ['ai-program'],
|
|
110
|
+
issuer,
|
|
111
|
+
generation: 2,
|
|
112
|
+
issuedAt,
|
|
113
|
+
expiresAt: issuedAt + SCRIPT_CREDENTIAL_MS
|
|
114
|
+
}, auth.derive)
|
|
115
|
+
};
|
|
116
|
+
};
|
|
117
|
+
};
|
|
118
|
+
//# sourceMappingURL=credentials.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"credentials.js","sourceRoot":"","sources":["../src/credentials.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The enrolment authority's bookkeeping: which bare nodes are waiting to be claimed.
|
|
3
|
+
*
|
|
4
|
+
* **This holds no secrets and can verify nothing.** The commissioning secret is on the device's
|
|
5
|
+
* label and in the operator's console, and never here - which is the whole reason enrolment proves
|
|
6
|
+
* end-to-end. So the authority cannot decide whether a claim is genuine; it relays the claim to the
|
|
7
|
+
* node, and the node's verdict is what it records. A rendezvous that could authenticate a claim
|
|
8
|
+
* would be a rendezvous that could provision a device on its own.
|
|
9
|
+
*
|
|
10
|
+
* That constraint decides the shape of everything below, including the concurrency rule: "reject an
|
|
11
|
+
* invalid claim without disturbing the session" cannot be enforced here, because invalid is not
|
|
12
|
+
* something this can see.
|
|
13
|
+
*/
|
|
14
|
+
/** How long a registration waits to be claimed. The window's job is hygiene, not authentication. */
|
|
15
|
+
export declare const DEFAULT_COMMISSIONING_TTL = 300;
|
|
16
|
+
/** What a node publishes about itself while it waits. Nothing here is secret. */
|
|
17
|
+
export interface PendingSession {
|
|
18
|
+
/** As the label names it, which is what the operator matches against what they scanned. */
|
|
19
|
+
deviceId: string;
|
|
20
|
+
sessionId: string;
|
|
21
|
+
/** The node's contribution to the transcript, chosen before it knew who would claim it. */
|
|
22
|
+
nodeNonce: string;
|
|
23
|
+
expiresAt: number;
|
|
24
|
+
/** Free-form, for a console listing several waiting devices. Never trusted for anything. */
|
|
25
|
+
product?: string;
|
|
26
|
+
}
|
|
27
|
+
/** What the node said about a relayed claim. The authority records this and never decides it. */
|
|
28
|
+
export interface ClaimVerdict {
|
|
29
|
+
/** Whether the node accepted the proof. */
|
|
30
|
+
accepted: boolean;
|
|
31
|
+
/** The node's own proof back, so the claimant knows it reached the device and not a stand-in. */
|
|
32
|
+
acceptProof?: string;
|
|
33
|
+
reason?: string;
|
|
34
|
+
}
|
|
35
|
+
export type ClaimOutcome = {
|
|
36
|
+
outcome: 'claimed';
|
|
37
|
+
acceptProof?: string;
|
|
38
|
+
}
|
|
39
|
+
/** No such session, or it lapsed. Deliberately one answer: which of the two is not the caller's business. */
|
|
40
|
+
| {
|
|
41
|
+
outcome: 'unknown';
|
|
42
|
+
}
|
|
43
|
+
/** The node refused the proof. The session survives - a wrong secret is somebody mistyping. */
|
|
44
|
+
| {
|
|
45
|
+
outcome: 'refused';
|
|
46
|
+
reason?: string;
|
|
47
|
+
}
|
|
48
|
+
/** Already completed. A session completes at most once. */
|
|
49
|
+
| {
|
|
50
|
+
outcome: 'already';
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* A second independently valid claim arrived. Both are dropped and the session is destroyed:
|
|
54
|
+
* two parties proved possession of a secret that should have been in one pair of hands, and
|
|
55
|
+
* carrying on would mean picking one of them arbitrarily.
|
|
56
|
+
*/
|
|
57
|
+
| {
|
|
58
|
+
outcome: 'contested';
|
|
59
|
+
};
|
|
60
|
+
export declare class PendingRegistry {
|
|
61
|
+
private readonly now;
|
|
62
|
+
private readonly sessions;
|
|
63
|
+
constructor(now?: () => number);
|
|
64
|
+
/**
|
|
65
|
+
* A bare node announces itself and waits.
|
|
66
|
+
*
|
|
67
|
+
* The session id is generated here rather than taken from the node, so a node cannot choose one
|
|
68
|
+
* that collides with another device's - which would let it be handed a claim meant for that one.
|
|
69
|
+
*/
|
|
70
|
+
register(request: {
|
|
71
|
+
deviceId: string;
|
|
72
|
+
nodeNonce: string;
|
|
73
|
+
ttl?: number;
|
|
74
|
+
product?: string;
|
|
75
|
+
}): PendingSession;
|
|
76
|
+
/** What a console lists. Lapsed sessions are swept here rather than by a timer nobody owns. */
|
|
77
|
+
pending(): PendingSession[];
|
|
78
|
+
private sweep;
|
|
79
|
+
/**
|
|
80
|
+
* Relay a claim to the node and record what it said.
|
|
81
|
+
*
|
|
82
|
+
* `askNode` is how the verdict is reached somewhere this code cannot see, and injecting it is
|
|
83
|
+
* what keeps this class honest: there is no path here that could accept a claim on the node's
|
|
84
|
+
* behalf, because there is nothing here to accept it with.
|
|
85
|
+
*/
|
|
86
|
+
claim(sessionId: string, askNode: (session: PendingSession) => Promise<ClaimVerdict>): Promise<ClaimOutcome>;
|
|
87
|
+
/** Once the node has persisted its identity there is nothing left to claim. */
|
|
88
|
+
release(sessionId: string): void;
|
|
89
|
+
get size(): number;
|
|
90
|
+
}
|
|
91
|
+
//# sourceMappingURL=enrolment.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"enrolment.d.ts","sourceRoot":"","sources":["../src/enrolment.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;;GAYG;AAEH,oGAAoG;AACpG,eAAO,MAAM,yBAAyB,MAAM,CAAA;AAK5C,iFAAiF;AACjF,MAAM,WAAW,cAAc;IAC3B,2FAA2F;IAC3F,QAAQ,EAAE,MAAM,CAAA;IAChB,SAAS,EAAE,MAAM,CAAA;IACjB,2FAA2F;IAC3F,SAAS,EAAE,MAAM,CAAA;IACjB,SAAS,EAAE,MAAM,CAAA;IACjB,4FAA4F;IAC5F,OAAO,CAAC,EAAE,MAAM,CAAA;CACnB;AAED,iGAAiG;AACjG,MAAM,WAAW,YAAY;IACzB,2CAA2C;IAC3C,QAAQ,EAAE,OAAO,CAAA;IACjB,iGAAiG;IACjG,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,MAAM,CAAC,EAAE,MAAM,CAAA;CAClB;AAED,MAAM,MAAM,YAAY,GAClB;IAAE,OAAO,EAAE,SAAS,CAAC;IAAC,WAAW,CAAC,EAAE,MAAM,CAAA;CAAE;AAC9C,6GAA6G;GAC3G;IAAE,OAAO,EAAE,SAAS,CAAA;CAAE;AACxB,+FAA+F;GAC7F;IAAE,OAAO,EAAE,SAAS,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE;AACzC,2DAA2D;GACzD;IAAE,OAAO,EAAE,SAAS,CAAA;CAAE;AACxB;;;;GAIG;GACD;IAAE,OAAO,EAAE,WAAW,CAAA;CAAE,CAAA;AAO9B,qBAAa,eAAe;IAGZ,OAAO,CAAC,QAAQ,CAAC,GAAG;IAFhC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAA0B;IAEnD,YAA6B,GAAG,GAAE,MAAM,MAAiB,EAAI;IAE7D;;;;;OAKG;IACH,QAAQ,CAAC,OAAO,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAC;QAAC,GAAG,CAAC,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,cAAc,CAWzG;IAED,+FAA+F;IAC/F,OAAO,IAAI,cAAc,EAAE,CAG1B;IAED,OAAO,CAAC,KAAK;IAKb;;;;;;OAMG;IACG,KAAK,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,OAAO,EAAE,cAAc,KAAK,OAAO,CAAC,YAAY,CAAC,GAAG,OAAO,CAAC,YAAY,CAAC,CAqBjH;IAED,+EAA+E;IAC/E,OAAO,CAAC,SAAS,EAAE,MAAM,QAExB;IAED,IAAI,IAAI,WAGP;CACJ"}
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
import { sessionNonce } from './pairing.js';
|
|
2
|
+
/**
|
|
3
|
+
* The enrolment authority's bookkeeping: which bare nodes are waiting to be claimed.
|
|
4
|
+
*
|
|
5
|
+
* **This holds no secrets and can verify nothing.** The commissioning secret is on the device's
|
|
6
|
+
* label and in the operator's console, and never here - which is the whole reason enrolment proves
|
|
7
|
+
* end-to-end. So the authority cannot decide whether a claim is genuine; it relays the claim to the
|
|
8
|
+
* node, and the node's verdict is what it records. A rendezvous that could authenticate a claim
|
|
9
|
+
* would be a rendezvous that could provision a device on its own.
|
|
10
|
+
*
|
|
11
|
+
* That constraint decides the shape of everything below, including the concurrency rule: "reject an
|
|
12
|
+
* invalid claim without disturbing the session" cannot be enforced here, because invalid is not
|
|
13
|
+
* something this can see.
|
|
14
|
+
*/
|
|
15
|
+
/** How long a registration waits to be claimed. The window's job is hygiene, not authentication. */
|
|
16
|
+
export const DEFAULT_COMMISSIONING_TTL = 300;
|
|
17
|
+
/** Bounded, because a ttl of a week is a device left open with a number on it. */
|
|
18
|
+
const MAX_COMMISSIONING_TTL = 3600;
|
|
19
|
+
export class PendingRegistry {
|
|
20
|
+
now;
|
|
21
|
+
sessions = new Map();
|
|
22
|
+
constructor(now = Date.now) {
|
|
23
|
+
this.now = now;
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* A bare node announces itself and waits.
|
|
27
|
+
*
|
|
28
|
+
* The session id is generated here rather than taken from the node, so a node cannot choose one
|
|
29
|
+
* that collides with another device's - which would let it be handed a claim meant for that one.
|
|
30
|
+
*/
|
|
31
|
+
register(request) {
|
|
32
|
+
const ttl = Math.min(Math.max(request.ttl ?? DEFAULT_COMMISSIONING_TTL, 1), MAX_COMMISSIONING_TTL);
|
|
33
|
+
const session = {
|
|
34
|
+
deviceId: request.deviceId,
|
|
35
|
+
sessionId: sessionNonce(),
|
|
36
|
+
nodeNonce: request.nodeNonce,
|
|
37
|
+
expiresAt: this.now() + ttl * 1000,
|
|
38
|
+
...(request.product ? { product: request.product } : {})
|
|
39
|
+
};
|
|
40
|
+
this.sessions.set(session.sessionId, session);
|
|
41
|
+
return { ...session };
|
|
42
|
+
}
|
|
43
|
+
/** What a console lists. Lapsed sessions are swept here rather than by a timer nobody owns. */
|
|
44
|
+
pending() {
|
|
45
|
+
this.sweep();
|
|
46
|
+
return [...this.sessions.values()].filter((session) => !session.claimed).map(({ claimed: _claimed, ...session }) => session);
|
|
47
|
+
}
|
|
48
|
+
sweep() {
|
|
49
|
+
const now = this.now();
|
|
50
|
+
for (const [id, session] of this.sessions)
|
|
51
|
+
if (session.expiresAt <= now)
|
|
52
|
+
this.sessions.delete(id);
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* Relay a claim to the node and record what it said.
|
|
56
|
+
*
|
|
57
|
+
* `askNode` is how the verdict is reached somewhere this code cannot see, and injecting it is
|
|
58
|
+
* what keeps this class honest: there is no path here that could accept a claim on the node's
|
|
59
|
+
* behalf, because there is nothing here to accept it with.
|
|
60
|
+
*/
|
|
61
|
+
async claim(sessionId, askNode) {
|
|
62
|
+
this.sweep();
|
|
63
|
+
const session = this.sessions.get(sessionId);
|
|
64
|
+
if (!session)
|
|
65
|
+
return { outcome: 'unknown' };
|
|
66
|
+
if (session.claimed)
|
|
67
|
+
return { outcome: 'already' };
|
|
68
|
+
const { claimed: _claimed, ...offered } = session;
|
|
69
|
+
const verdict = await askNode(offered);
|
|
70
|
+
if (!verdict.accepted)
|
|
71
|
+
return { outcome: 'refused', ...(verdict.reason ? { reason: verdict.reason } : {}) };
|
|
72
|
+
// Re-read after the await: a second claim may have been accepted while this one was with the
|
|
73
|
+
// node. Two parties holding a secret meant for one is not something to resolve by ordering,
|
|
74
|
+
// so the session goes and the operator has to open commissioning again deliberately.
|
|
75
|
+
const current = this.sessions.get(sessionId);
|
|
76
|
+
if (!current)
|
|
77
|
+
return { outcome: 'unknown' };
|
|
78
|
+
if (current.claimed) {
|
|
79
|
+
this.sessions.delete(sessionId);
|
|
80
|
+
return { outcome: 'contested' };
|
|
81
|
+
}
|
|
82
|
+
current.claimed = true;
|
|
83
|
+
return { outcome: 'claimed', ...(verdict.acceptProof ? { acceptProof: verdict.acceptProof } : {}) };
|
|
84
|
+
}
|
|
85
|
+
/** Once the node has persisted its identity there is nothing left to claim. */
|
|
86
|
+
release(sessionId) {
|
|
87
|
+
this.sessions.delete(sessionId);
|
|
88
|
+
}
|
|
89
|
+
get size() {
|
|
90
|
+
this.sweep();
|
|
91
|
+
return this.sessions.size;
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
//# sourceMappingURL=enrolment.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"enrolment.js","sourceRoot":"","sources":["../src/enrolment.ts"],"names":[],"mappings":"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"}
|
package/dist/extract.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"extract.d.ts","sourceRoot":"","sources":["../src/extract.ts"],"names":[],"mappings":"AAEA,OAAO,EAAuC,IAAI,EAAsC,IAAI,EAAE,MAAM,UAAU,CAAA;AAC9G,OAAO,EAA0H,KAAK,SAAS,EAAE,KAAK,QAAQ,EAAE,MAAM,kBAAkB,CAAA;AAExL;;;;;;;;;GASG;AAEH,MAAM,WAAW,UAAU;IACvB,mEAAmE;IACnE,KAAK,EAAE,MAAM,CAAA;IACb,MAAM,EAAE,MAAM,CAAA;IACd,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,IAAI,CAAC,EAAE,MAAM,CAAA;CAChB;AAED,MAAM,WAAW,aAAa;IAC1B,MAAM,EAAE,SAAS,CAAA;IACjB,WAAW,EAAE,UAAU,EAAE,CAAA;CAC5B;AAED,UAAU,OAAO;IACb,KAAK,EAAE;QAAE,CAAC,IAAI,EAAE,MAAM,GAAG,QAAQ,CAAA;KAAE,CAAA;IACnC,WAAW,EAAE,UAAU,EAAE,CAAA;IACzB,kGAAkG;IAClG,UAAU,EAAE,GAAG,CAAC,MAAM,CAAC,CAAA;IACvB,KAAK,EAAE,MAAM,CAAA;IACb,IAAI,EAAE,IAAI,CAAA;CACb;
|
|
1
|
+
{"version":3,"file":"extract.d.ts","sourceRoot":"","sources":["../src/extract.ts"],"names":[],"mappings":"AAEA,OAAO,EAAuC,IAAI,EAAsC,IAAI,EAAE,MAAM,UAAU,CAAA;AAC9G,OAAO,EAA0H,KAAK,SAAS,EAAE,KAAK,QAAQ,EAAE,MAAM,kBAAkB,CAAA;AAExL;;;;;;;;;GASG;AAEH,MAAM,WAAW,UAAU;IACvB,mEAAmE;IACnE,KAAK,EAAE,MAAM,CAAA;IACb,MAAM,EAAE,MAAM,CAAA;IACd,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,IAAI,CAAC,EAAE,MAAM,CAAA;CAChB;AAED,MAAM,WAAW,aAAa;IAC1B,MAAM,EAAE,SAAS,CAAA;IACjB,WAAW,EAAE,UAAU,EAAE,CAAA;CAC5B;AAED,UAAU,OAAO;IACb,KAAK,EAAE;QAAE,CAAC,IAAI,EAAE,MAAM,GAAG,QAAQ,CAAA;KAAE,CAAA;IACnC,WAAW,EAAE,UAAU,EAAE,CAAA;IACzB,kGAAkG;IAClG,UAAU,EAAE,GAAG,CAAC,MAAM,CAAC,CAAA;IACvB,KAAK,EAAE,MAAM,CAAA;IACb,IAAI,EAAE,IAAI,CAAA;CACb;AAgDD,eAAO,MAAM,UAAU,SAAU,IAAI,WAAW,OAAO,qBAAc,QA4CpE,CAAA;AAkXD,eAAO,MAAM,aAAa,qBAAsB,MAAM,KAAG,aAyDxD,CAAA"}
|
package/dist/extract.js
CHANGED
|
@@ -27,6 +27,24 @@ const nameOf = (type) => {
|
|
|
27
27
|
return symbol && symbol !== '__type' && symbol !== '__object' ? symbol : undefined;
|
|
28
28
|
};
|
|
29
29
|
const isPromise = (type) => type.getSymbol()?.getName() === 'Promise';
|
|
30
|
+
/**
|
|
31
|
+
* A deferred reply, recognised by name the same way a Promise is.
|
|
32
|
+
*
|
|
33
|
+
* A ticket cannot be described as a value, and should not be: as a TypeScript type it is an
|
|
34
|
+
* awaitable, subscribable handle, and `on`, `off` and `then` are functions that cannot be checked
|
|
35
|
+
* on the wire - so extraction refuses it, correctly, and would refuse every deferred method with it.
|
|
36
|
+
*
|
|
37
|
+
* What actually travels when such a method is called is a correlation id and an expiry. That is what
|
|
38
|
+
* `returns` describes, and the payload the caller eventually receives is carried beside it in
|
|
39
|
+
* `deferred`, so a result type that changes incompatibly is still a breaking change rather than
|
|
40
|
+
* something the contract stopped watching.
|
|
41
|
+
*/
|
|
42
|
+
const isTicket = (type) => type.getSymbol()?.getName() === 'RpcTicket';
|
|
43
|
+
/** What a call to a deferred method answers: correlation, and when the ticket lapses. */
|
|
44
|
+
const TICKET_ON_THE_WIRE = {
|
|
45
|
+
kind: 'object',
|
|
46
|
+
fields: { id: { type: { kind: 'string' } }, expiresAt: { type: { kind: 'number' } } }
|
|
47
|
+
};
|
|
30
48
|
export const typeToNode = (type, context, depth = 0) => {
|
|
31
49
|
if (depth > 24)
|
|
32
50
|
return fail(context, 'nests deeper than the extractor follows');
|
|
@@ -154,6 +172,34 @@ const declaredEffect = (method, context) => {
|
|
|
154
172
|
}
|
|
155
173
|
return declared;
|
|
156
174
|
};
|
|
175
|
+
/**
|
|
176
|
+
* What `@rpc({ sets: '…' })` declares, if anything: which path in the component's state calling
|
|
177
|
+
* this method changes.
|
|
178
|
+
*
|
|
179
|
+
* In the contract because it is what makes a value editable by *declaration*. A consumer can guess
|
|
180
|
+
* which method sets a field by looking for a one-argument `set<Field>`, and the guess is right
|
|
181
|
+
* almost always - the residue being methods like `setMode`, which may begin a transition rather
|
|
182
|
+
* than assign `state.mode`, and where being wrong means a console offers to command a plant in a
|
|
183
|
+
* way nobody wrote down. Read from the source the way `effect` is, so the claim is the author's.
|
|
184
|
+
*/
|
|
185
|
+
const declaredSets = (method, context) => {
|
|
186
|
+
const decorator = method.getDecorators().find((candidate) => candidate.getName() === 'rpc');
|
|
187
|
+
const declared = literalOption(decorator?.getArguments()[0], 'sets');
|
|
188
|
+
if (declared === undefined)
|
|
189
|
+
return undefined;
|
|
190
|
+
// Segments must be non-empty, but need not be identifiers: a record's keys are data, so
|
|
191
|
+
// `tags.147` is a real path into state and a stricter rule would refuse it for looking wrong.
|
|
192
|
+
if (declared !== '*' && (declared === '' || declared.split('.').some((segment) => segment.length === 0))) {
|
|
193
|
+
context.diagnostics.push({
|
|
194
|
+
where: context.where,
|
|
195
|
+
reason: `declares sets '${declared}', which is not a usable path - use '*', a field, or a dot path like 'zones.top.setpoint'`,
|
|
196
|
+
file: method.getSourceFile().getFilePath(),
|
|
197
|
+
line: method.getStartLineNumber()
|
|
198
|
+
});
|
|
199
|
+
return undefined;
|
|
200
|
+
}
|
|
201
|
+
return declared;
|
|
202
|
+
};
|
|
157
203
|
/**
|
|
158
204
|
* What `@rpc({ semantics: '…' })` declares, if anything.
|
|
159
205
|
*
|
|
@@ -227,7 +273,11 @@ const methodToSchema = (method, context) => {
|
|
|
227
273
|
// the declaration - is diagnosed, because each half alone is a handler reading undefined.
|
|
228
274
|
let parameters = method.getParameters();
|
|
229
275
|
const last = parameters[parameters.length - 1];
|
|
230
|
-
|
|
276
|
+
// Non-nullable, because the handle has to be declared optional on any method whose last real
|
|
277
|
+
// parameter is optional - TypeScript refuses a required parameter after one. The alternative
|
|
278
|
+
// was widening that parameter to `T | undefined`, which compiles and is a breaking contract
|
|
279
|
+
// change: a caller that sent nothing is suddenly one argument short.
|
|
280
|
+
const lastIsHandle = last?.getType().getNonNullableType().getSymbol()?.getName() === 'RpcInvocationHandle';
|
|
231
281
|
const injecting = declaresInjection(method);
|
|
232
282
|
if (injecting && lastIsHandle)
|
|
233
283
|
parameters = parameters.slice(0, -1);
|
|
@@ -253,16 +303,32 @@ const methodToSchema = (method, context) => {
|
|
|
253
303
|
let returnType = method.getReturnType();
|
|
254
304
|
if (isPromise(returnType))
|
|
255
305
|
returnType = returnType.getTypeArguments()[0] ?? returnType;
|
|
256
|
-
const
|
|
306
|
+
const ticket = isTicket(returnType) ? returnType.getTypeArguments() : undefined;
|
|
307
|
+
const deferred = ticket
|
|
308
|
+
? {
|
|
309
|
+
result: typeToNode(ticket[0], { ...context, where: `${context.where} deferred result` }),
|
|
310
|
+
// A ticket that reports nothing types its progress as unknown, which describes as
|
|
311
|
+
// `any` - and carrying that would say the contract checked something it did not.
|
|
312
|
+
...(ticket[1] && !ticket[1].isUnknown() ? { progress: typeToNode(ticket[1], { ...context, where: `${context.where} deferred progress` }) } : {})
|
|
313
|
+
}
|
|
314
|
+
: undefined;
|
|
315
|
+
const returns = ticket
|
|
316
|
+
? TICKET_ON_THE_WIRE
|
|
317
|
+
: returnType.isVoid() || returnType.isUndefined()
|
|
318
|
+
? undefined
|
|
319
|
+
: typeToNode(returnType, { ...context, where: `${context.where} return` });
|
|
257
320
|
const semantics = declaredSemantics(method, context);
|
|
258
321
|
const effect = declaredEffect(method, context);
|
|
322
|
+
const sets = declaredSets(method, context);
|
|
259
323
|
return {
|
|
260
324
|
params,
|
|
261
325
|
...(paramNames.length ? { paramNames } : {}),
|
|
262
326
|
...(rest ? { rest } : {}),
|
|
263
327
|
...(returns ? { returns } : {}),
|
|
328
|
+
...(deferred ? { deferred } : {}),
|
|
264
329
|
...(semantics ? { semantics } : {}),
|
|
265
|
-
...(effect ? { effect } : {})
|
|
330
|
+
...(effect ? { effect } : {}),
|
|
331
|
+
...(sets ? { sets } : {})
|
|
266
332
|
};
|
|
267
333
|
};
|
|
268
334
|
/**
|
package/dist/extract.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"extract.js","sourceRoot":"","sources":["../src/extract.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"extract.js","sourceRoot":"","sources":["../src/extract.ts"],"names":[],"mappings":"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"}
|
package/dist/grants.d.ts
ADDED
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { type RpcAiGrants } from '@source-repo/rpc';
|
|
2
|
+
/**
|
|
3
|
+
* The AI grants document, read from a file rather than assembled from flags.
|
|
4
|
+
*
|
|
5
|
+
* A path and not a set of options, for the reason the document exists at all: it is declarative
|
|
6
|
+
* data with a revision, so that a console can render it and a reviewer can diff it. Something built
|
|
7
|
+
* out of `--grant ai.tool.write --to bench --until …` would be neither - there would be nothing to
|
|
8
|
+
* diff, and the revision would have nowhere to live.
|
|
9
|
+
*
|
|
10
|
+
* Not a secret, either, which is why it is only ever a path and never written inline in a task
|
|
11
|
+
* file the way `sign` and `auth` may be. The revision field is there so policy can be replaced on
|
|
12
|
+
* its own cadence; burying the document inside another file that changes for unrelated reasons
|
|
13
|
+
* takes that away.
|
|
14
|
+
*/
|
|
15
|
+
export declare const loadAiGrants: (path: string) => RpcAiGrants;
|
|
16
|
+
/**
|
|
17
|
+
* What this node has open, in the order a person would ask it.
|
|
18
|
+
*
|
|
19
|
+
* Printed at startup because closed-by-default means "it is running" and "it can do something" are
|
|
20
|
+
* separately true, and an operator who has just written a grants file is entitled to see whether
|
|
21
|
+
* the thing they wrote is the thing that took effect. An expired grant is simply absent here, which
|
|
22
|
+
* is the honest answer and not the same as it having been removed from the file.
|
|
23
|
+
*/
|
|
24
|
+
export declare const grantLines: (grants: RpcAiGrants | undefined, now?: number) => string[];
|
|
25
|
+
//# sourceMappingURL=grants.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"grants.d.ts","sourceRoot":"","sources":["../src/grants.ts"],"names":[],"mappings":"AACA,OAAO,EAAkC,KAAK,WAAW,EAAE,MAAM,kBAAkB,CAAA;AAEnF;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,YAAY,SAAU,MAAM,KAAG,WAgB3C,CAAA;AAcD;;;;;;;GAOG;AACH,eAAO,MAAM,UAAU,WAAY,WAAW,GAAG,SAAS,mBAAqB,MAAM,EAKpF,CAAA"}
|
package/dist/grants.js
ADDED
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
import { readFileSync } from 'node:fs';
|
|
2
|
+
import { openAiGrants, validateAiGrants } from '@source-repo/rpc';
|
|
3
|
+
/**
|
|
4
|
+
* The AI grants document, read from a file rather than assembled from flags.
|
|
5
|
+
*
|
|
6
|
+
* A path and not a set of options, for the reason the document exists at all: it is declarative
|
|
7
|
+
* data with a revision, so that a console can render it and a reviewer can diff it. Something built
|
|
8
|
+
* out of `--grant ai.tool.write --to bench --until …` would be neither - there would be nothing to
|
|
9
|
+
* diff, and the revision would have nowhere to live.
|
|
10
|
+
*
|
|
11
|
+
* Not a secret, either, which is why it is only ever a path and never written inline in a task
|
|
12
|
+
* file the way `sign` and `auth` may be. The revision field is there so policy can be replaced on
|
|
13
|
+
* its own cadence; burying the document inside another file that changes for unrelated reasons
|
|
14
|
+
* takes that away.
|
|
15
|
+
*/
|
|
16
|
+
export const loadAiGrants = (path) => {
|
|
17
|
+
let document;
|
|
18
|
+
try {
|
|
19
|
+
document = JSON.parse(readFileSync(path, 'utf8'));
|
|
20
|
+
}
|
|
21
|
+
catch (e) {
|
|
22
|
+
throw new Error(`cannot read grants from ${path}: ${e instanceof Error ? e.message : String(e)}`, { cause: e });
|
|
23
|
+
}
|
|
24
|
+
try {
|
|
25
|
+
// validateAiGrants throws with the reason. A node that starts holding an unreadable security
|
|
26
|
+
// policy is the failure the document exists to prevent, so this is never softened into a
|
|
27
|
+
// warning: the operator meant to grant something, and carrying on with nothing granted would
|
|
28
|
+
// be a quiet answer to a loud problem.
|
|
29
|
+
return validateAiGrants(document);
|
|
30
|
+
}
|
|
31
|
+
catch (e) {
|
|
32
|
+
throw new Error(`${path}: ${e instanceof Error ? e.message : String(e)}`, { cause: e });
|
|
33
|
+
}
|
|
34
|
+
};
|
|
35
|
+
const describeEntry = (entry) => {
|
|
36
|
+
const bounds = [
|
|
37
|
+
entry.to?.length ? `to ${entry.to.join(', ')}` : undefined,
|
|
38
|
+
entry.roles?.length ? `roles ${entry.roles.join(', ')}` : undefined,
|
|
39
|
+
// Said out loud because it is the one an operator is most likely to have meant to set and
|
|
40
|
+
// not set: an unbounded grant is a real choice and should not read like an oversight.
|
|
41
|
+
entry.expiresAt === undefined ? 'no expiry' : `until ${new Date(entry.expiresAt).toISOString()}`,
|
|
42
|
+
entry.maxGeneration === undefined ? undefined : `generation ${entry.maxGeneration}`
|
|
43
|
+
].filter(Boolean);
|
|
44
|
+
return bounds.length ? bounds.join(', ') : 'every AI principal of that provenance';
|
|
45
|
+
};
|
|
46
|
+
/**
|
|
47
|
+
* What this node has open, in the order a person would ask it.
|
|
48
|
+
*
|
|
49
|
+
* Printed at startup because closed-by-default means "it is running" and "it can do something" are
|
|
50
|
+
* separately true, and an operator who has just written a grants file is entitled to see whether
|
|
51
|
+
* the thing they wrote is the thing that took effect. An expired grant is simply absent here, which
|
|
52
|
+
* is the honest answer and not the same as it having been removed from the file.
|
|
53
|
+
*/
|
|
54
|
+
export const grantLines = (grants, now = Date.now()) => {
|
|
55
|
+
if (!grants)
|
|
56
|
+
return ['no grants document, so AI principals may observe and nothing else'];
|
|
57
|
+
const open = openAiGrants(grants, now);
|
|
58
|
+
if (!open.length)
|
|
59
|
+
return [`grants revision ${grants.revision}: nothing open, so AI principals may observe and nothing else`];
|
|
60
|
+
return [`grants revision ${grants.revision}:`, ...open.map(({ grant, ...entry }) => ` ${grant} — ${describeEntry(entry)}`)];
|
|
61
|
+
};
|
|
62
|
+
//# sourceMappingURL=grants.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"grants.js","sourceRoot":"","sources":["../src/grants.ts"],"names":[],"mappings":"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"}
|