@source-repo/rpc-cli 4.5.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 +483 -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 +97 -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 +254 -41
- package/dist/index.js.map +1 -1
- package/dist/mcp.d.ts +5 -0
- package/dist/mcp.d.ts.map +1 -1
- package/dist/mcp.js +329 -2
- 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 +15 -0
- package/dist/node.d.ts.map +1 -1
- package/dist/node.js +14 -1
- 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/scripting.d.ts +10 -0
- package/dist/scripting.d.ts.map +1 -1
- package/dist/scripting.js +2 -2
- package/dist/scripting.js.map +1 -1
- package/dist/scripts.d.ts +27 -3
- package/dist/scripts.d.ts.map +1 -1
- package/dist/scripts.js +31 -8
- package/dist/scripts.js.map +1 -1
- 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":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAA;AAE3C;;;;;;;;;;;;GAYG;AAEH,oGAAoG;AACpG,MAAM,CAAC,MAAM,yBAAyB,GAAG,GAAG,CAAA;AAE5C,kFAAkF;AAClF,MAAM,qBAAqB,GAAG,IAAI,CAAA;AA2ClC,MAAM,OAAO,eAAe;IAGK,GAAG;IAFf,QAAQ,GAAG,IAAI,GAAG,EAAgB,CAAA;IAEnD,YAA6B,GAAG,GAAiB,IAAI,CAAC,GAAG;mBAA5B,GAAG;IAA4B,CAAC;IAE7D;;;;;OAKG;IACH,QAAQ,CAAC,OAAgF;QACrF,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,IAAI,yBAAyB,EAAE,CAAC,CAAC,EAAE,qBAAqB,CAAC,CAAA;QAClG,MAAM,OAAO,GAAS;YAClB,QAAQ,EAAE,OAAO,CAAC,QAAQ;YAC1B,SAAS,EAAE,YAAY,EAAE;YACzB,SAAS,EAAE,OAAO,CAAC,SAAS;YAC5B,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,GAAG,GAAG,IAAI;YAClC,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SAC3D,CAAA;QACD,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,SAAS,EAAE,OAAO,CAAC,CAAA;QAC7C,OAAO,EAAE,GAAG,OAAO,EAAE,CAAA;IACzB,CAAC;IAED,+FAA+F;IAC/F,OAAO;QACH,IAAI,CAAC,KAAK,EAAE,CAAA;QACZ,OAAO,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,OAAO,EAAE,QAAQ,EAAE,GAAG,OAAO,EAAE,EAAE,EAAE,CAAC,OAAO,CAAC,CAAA;IAChI,CAAC;IAEO,KAAK;QACT,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAA;QACtB,KAAK,MAAM,CAAC,EAAE,EAAE,OAAO,CAAC,IAAI,IAAI,CAAC,QAAQ;YAAE,IAAI,OAAO,CAAC,SAAS,IAAI,GAAG;gBAAE,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC,CAAA;IACrG,CAAC;IAED;;;;;;OAMG;IACH,KAAK,CAAC,KAAK,CAAC,SAAiB,EAAE,OAA2D;QACtF,IAAI,CAAC,KAAK,EAAE,CAAA;QACZ,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAC,CAAA;QAC5C,IAAI,CAAC,OAAO;YAAE,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,CAAA;QAC3C,IAAI,OAAO,CAAC,OAAO;YAAE,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,CAAA;QAElD,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,GAAG,OAAO,EAAE,GAAG,OAAO,CAAA;QACjD,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,OAAO,CAAC,CAAA;QACtC,IAAI,CAAC,OAAO,CAAC,QAAQ;YAAE,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAA;QAE3G,6FAA6F;QAC7F,4FAA4F;QAC5F,qFAAqF;QACrF,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAC,CAAA;QAC5C,IAAI,CAAC,OAAO;YAAE,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,CAAA;QAC3C,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;YAClB,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,SAAS,CAAC,CAAA;YAC/B,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,CAAA;QACnC,CAAC;QACD,OAAO,CAAC,OAAO,GAAG,IAAI,CAAA;QACtB,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,GAAG,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAA;IACvG,CAAC;IAED,+EAA+E;IAC/E,OAAO,CAAC,SAAiB;QACrB,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,SAAS,CAAC,CAAA;IACnC,CAAC;IAED,IAAI,IAAI;QACJ,IAAI,CAAC,KAAK,EAAE,CAAA;QACZ,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAA;IAC7B,CAAC;CACJ"}
|
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,
|
|
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');
|
|
@@ -128,6 +146,60 @@ const literalOption = (argument, option) => {
|
|
|
128
146
|
return Node.isStringLiteral(initializer) ? initializer.getLiteralValue() : undefined;
|
|
129
147
|
};
|
|
130
148
|
const SEMANTICS = new Set(['query', 'idempotent-command', 'non-repeatable-command']);
|
|
149
|
+
const EFFECTS = new Set(['observe', 'operate', 'program', 'security-admin']);
|
|
150
|
+
/**
|
|
151
|
+
* What `@rpc({ effect: '…' })` declares, if anything.
|
|
152
|
+
*
|
|
153
|
+
* In the contract because it is a promise about what calling this *is* - which authority a caller
|
|
154
|
+
* must hold - and a grant will be written against it. Undeclared is left undeclared here; the
|
|
155
|
+
* server applies its conservative default, and `check` compares only what both sides declared.
|
|
156
|
+
*/
|
|
157
|
+
const declaredEffect = (method, context) => {
|
|
158
|
+
const decorator = method.getDecorators().find((candidate) => candidate.getName() === 'rpc');
|
|
159
|
+
const declared = literalOption(decorator?.getArguments()[0], 'effect');
|
|
160
|
+
if (declared === undefined)
|
|
161
|
+
return undefined;
|
|
162
|
+
if (!EFFECTS.has(declared)) {
|
|
163
|
+
// Named rather than dropped, for the same reason a mistyped semantics is: a typo publishes
|
|
164
|
+
// a contract saying nothing about a method whose author thought it said something.
|
|
165
|
+
context.diagnostics.push({
|
|
166
|
+
where: context.where,
|
|
167
|
+
reason: `declares effect '${declared}', which is not one of ${[...EFFECTS].join(', ')}`,
|
|
168
|
+
file: method.getSourceFile().getFilePath(),
|
|
169
|
+
line: method.getStartLineNumber()
|
|
170
|
+
});
|
|
171
|
+
return undefined;
|
|
172
|
+
}
|
|
173
|
+
return declared;
|
|
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
|
+
};
|
|
131
203
|
/**
|
|
132
204
|
* What `@rpc({ semantics: '…' })` declares, if anything.
|
|
133
205
|
*
|
|
@@ -201,7 +273,11 @@ const methodToSchema = (method, context) => {
|
|
|
201
273
|
// the declaration - is diagnosed, because each half alone is a handler reading undefined.
|
|
202
274
|
let parameters = method.getParameters();
|
|
203
275
|
const last = parameters[parameters.length - 1];
|
|
204
|
-
|
|
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';
|
|
205
281
|
const injecting = declaresInjection(method);
|
|
206
282
|
if (injecting && lastIsHandle)
|
|
207
283
|
parameters = parameters.slice(0, -1);
|
|
@@ -227,14 +303,32 @@ const methodToSchema = (method, context) => {
|
|
|
227
303
|
let returnType = method.getReturnType();
|
|
228
304
|
if (isPromise(returnType))
|
|
229
305
|
returnType = returnType.getTypeArguments()[0] ?? returnType;
|
|
230
|
-
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` });
|
|
231
320
|
const semantics = declaredSemantics(method, context);
|
|
321
|
+
const effect = declaredEffect(method, context);
|
|
322
|
+
const sets = declaredSets(method, context);
|
|
232
323
|
return {
|
|
233
324
|
params,
|
|
234
325
|
...(paramNames.length ? { paramNames } : {}),
|
|
235
326
|
...(rest ? { rest } : {}),
|
|
236
327
|
...(returns ? { returns } : {}),
|
|
237
|
-
...(
|
|
328
|
+
...(deferred ? { deferred } : {}),
|
|
329
|
+
...(semantics ? { semantics } : {}),
|
|
330
|
+
...(effect ? { effect } : {}),
|
|
331
|
+
...(sets ? { sets } : {})
|
|
238
332
|
};
|
|
239
333
|
};
|
|
240
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"}
|