@apart-tech/intelligence-core 1.11.3 → 1.11.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/auth/ability.d.ts +148 -0
- package/dist/auth/ability.d.ts.map +1 -0
- package/dist/auth/ability.js +285 -0
- package/dist/auth/ability.js.map +1 -0
- package/dist/auth/ability.test.d.ts +2 -0
- package/dist/auth/ability.test.d.ts.map +1 -0
- package/dist/auth/ability.test.js +680 -0
- package/dist/auth/ability.test.js.map +1 -0
- package/dist/auth/delegation-jwt.d.ts +167 -0
- package/dist/auth/delegation-jwt.d.ts.map +1 -0
- package/dist/auth/delegation-jwt.js +237 -0
- package/dist/auth/delegation-jwt.js.map +1 -0
- package/dist/auth/delegation-jwt.test.d.ts +2 -0
- package/dist/auth/delegation-jwt.test.d.ts.map +1 -0
- package/dist/auth/delegation-jwt.test.js +283 -0
- package/dist/auth/delegation-jwt.test.js.map +1 -0
- package/dist/auth/principal.d.ts +94 -0
- package/dist/auth/principal.d.ts.map +1 -0
- package/dist/auth/principal.js +33 -0
- package/dist/auth/principal.js.map +1 -0
- package/dist/config/config.test.d.ts +2 -0
- package/dist/config/config.test.d.ts.map +1 -0
- package/dist/config/config.test.js +57 -0
- package/dist/config/config.test.js.map +1 -0
- package/dist/config/index.d.ts.map +1 -1
- package/dist/config/index.js +17 -0
- package/dist/config/index.js.map +1 -1
- package/dist/index.d.ts +13 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +6 -0
- package/dist/index.js.map +1 -1
- package/dist/lib/__tests__/jwt.test.d.ts +2 -0
- package/dist/lib/__tests__/jwt.test.d.ts.map +1 -0
- package/dist/lib/__tests__/jwt.test.js +97 -0
- package/dist/lib/__tests__/jwt.test.js.map +1 -0
- package/dist/lib/jwt.d.ts +20 -0
- package/dist/lib/jwt.d.ts.map +1 -1
- package/dist/lib/jwt.js +56 -3
- package/dist/lib/jwt.js.map +1 -1
- package/dist/services/__tests__/delegation-cleanup-service.test.d.ts +2 -0
- package/dist/services/__tests__/delegation-cleanup-service.test.d.ts.map +1 -0
- package/dist/services/__tests__/delegation-cleanup-service.test.js +211 -0
- package/dist/services/__tests__/delegation-cleanup-service.test.js.map +1 -0
- package/dist/services/agent-run-service.d.ts +44 -7
- package/dist/services/agent-run-service.d.ts.map +1 -1
- package/dist/services/agent-run-service.js +14 -0
- package/dist/services/agent-run-service.js.map +1 -1
- package/dist/services/agent-schedule-service.d.ts +21 -0
- package/dist/services/agent-schedule-service.d.ts.map +1 -1
- package/dist/services/agent-schedule-service.js +12 -0
- package/dist/services/agent-schedule-service.js.map +1 -1
- package/dist/services/audit-event-service.d.ts +76 -0
- package/dist/services/audit-event-service.d.ts.map +1 -0
- package/dist/services/audit-event-service.js +48 -0
- package/dist/services/audit-event-service.js.map +1 -0
- package/dist/services/cleaning-service.d.ts.map +1 -1
- package/dist/services/cleaning-service.js +5 -1
- package/dist/services/cleaning-service.js.map +1 -1
- package/dist/services/delegation-cleanup-service.d.ts +133 -0
- package/dist/services/delegation-cleanup-service.d.ts.map +1 -0
- package/dist/services/delegation-cleanup-service.js +111 -0
- package/dist/services/delegation-cleanup-service.js.map +1 -0
- package/dist/services/edge-service.d.ts.map +1 -1
- package/dist/services/edge-service.js +3 -0
- package/dist/services/edge-service.js.map +1 -1
- package/dist/services/org-agent-type-service.d.ts +15 -0
- package/dist/services/org-agent-type-service.d.ts.map +1 -1
- package/dist/services/org-agent-type-service.js +2 -0
- package/dist/services/org-agent-type-service.js.map +1 -1
- package/dist/services/usage-service.d.ts +48 -0
- package/dist/services/usage-service.d.ts.map +1 -0
- package/dist/services/usage-service.js +116 -0
- package/dist/services/usage-service.js.map +1 -0
- package/dist/services/user-service.d.ts.map +1 -1
- package/dist/services/user-service.js +24 -6
- package/dist/services/user-service.js.map +1 -1
- package/dist/services/user-service.test.d.ts +2 -0
- package/dist/services/user-service.test.d.ts.map +1 -0
- package/dist/services/user-service.test.js +86 -0
- package/dist/services/user-service.test.js.map +1 -0
- package/dist/types/index.d.ts +13 -0
- package/dist/types/index.d.ts.map +1 -1
- package/package.json +3 -2
- package/prisma/schema.prisma +158 -82
- package/dist/db/schema.d.ts +0 -507
- package/dist/db/schema.d.ts.map +0 -1
- package/dist/db/schema.js +0 -77
- package/dist/db/schema.js.map +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ability.test.js","sourceRoot":"","sources":["../../src/auth/ability.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,167 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* In-process delegation JWT helpers (Phase 1d).
|
|
3
|
+
*
|
|
4
|
+
* Phase 1d replaces the original RFC 8693 Token Exchange plan with
|
|
5
|
+
* in-process delegation tokens — decision `e2f847e2`. When a user spawns
|
|
6
|
+
* an agent run, the API mints a short-lived JWT whose payload names the
|
|
7
|
+
* `AgentRun`, the user it runs on behalf of, and the organization; the
|
|
8
|
+
* sandbox receives this token instead of the user's Apart access token
|
|
9
|
+
* and presents it on every callback. The middleware verifies the token,
|
|
10
|
+
* looks up the `AgentRun`, and reconstructs a `DelegatedAgentPrincipal`
|
|
11
|
+
* whose ability is the captured snapshot from `AgentRun.captured_ability`
|
|
12
|
+
* (the Phase 1c column).
|
|
13
|
+
*
|
|
14
|
+
* Design notes
|
|
15
|
+
* ------------
|
|
16
|
+
* - **HS256 HMAC**, not RSA. The signer and the verifier are the same
|
|
17
|
+
* process (the intelligence-api backend). There are no third-party
|
|
18
|
+
* verifiers, so a symmetric key is the simplest correct shape and
|
|
19
|
+
* avoids any public-key distribution story.
|
|
20
|
+
* - **Key material** is a 32-byte random value, base64-encoded, stored
|
|
21
|
+
* in GCP Secret Manager as `intelligence-api-{env}-delegation-jwt-key`.
|
|
22
|
+
* See `docs/runbooks/auth0-tenant-provisioning.md` for the rotation
|
|
23
|
+
* procedure. The helpers here take the decoded key as a `Uint8Array`
|
|
24
|
+
* argument; `loadDelegationKeyFromEnv` handles the env-var boundary.
|
|
25
|
+
* - **Issuer claim** distinguishes delegation tokens from Auth0 tokens
|
|
26
|
+
* in the middleware. Auth0 issuers are `https://apart-next-*.eu.auth0.com/`
|
|
27
|
+
* (URL-shaped); the delegation issuer is the bare string
|
|
28
|
+
* `apart-intelligence` — the middleware can decode the JWT header/
|
|
29
|
+
* payload without verifying to route a request to the right verifier.
|
|
30
|
+
* - **TTL is 15 minutes**, matching the spec's "short-lived" guidance.
|
|
31
|
+
* A sandbox callback that arrives more than 15 minutes after spawn
|
|
32
|
+
* gets a fresh token via the refresh-on-callback flow (see the Phase
|
|
33
|
+
* 1d user story `ed8fcc68`).
|
|
34
|
+
* - **No condition on `aud`.** A delegation token is only ever sent to
|
|
35
|
+
* the intelligence-api and only ever verified by the intelligence-api;
|
|
36
|
+
* an audience claim adds nothing a process-local HMAC key does not
|
|
37
|
+
* already give us. `iss` is the one claim the middleware inspects to
|
|
38
|
+
* route between Auth0 and delegation.
|
|
39
|
+
*/
|
|
40
|
+
/** The fixed issuer claim for delegation tokens. Checked on verify. */
|
|
41
|
+
export declare const DELEGATION_ISSUER = "apart-intelligence";
|
|
42
|
+
/** The fixed signing algorithm. HS256 matches the HMAC key material. */
|
|
43
|
+
export declare const DELEGATION_ALGORITHM = "HS256";
|
|
44
|
+
/** Delegation token lifetime in seconds. 15 minutes. */
|
|
45
|
+
export declare const DELEGATION_TTL_SECONDS: number;
|
|
46
|
+
/** The minimum acceptable key length, in bytes, after base64 decode. */
|
|
47
|
+
export declare const DELEGATION_KEY_MIN_BYTES = 32;
|
|
48
|
+
/**
|
|
49
|
+
* The fully-decoded payload of a delegation token. This is what the
|
|
50
|
+
* verifier returns and what the middleware threads into the
|
|
51
|
+
* `DelegatedAgentPrincipal` before calling `buildAbility`.
|
|
52
|
+
*
|
|
53
|
+
* - `sub` is the `AgentRun.id` the token was minted for.
|
|
54
|
+
* - `behalfOf` is the `User.id` who spawned the run.
|
|
55
|
+
* - `organizationId` is the org the run is scoped to.
|
|
56
|
+
* - `iat` and `exp` are JWT-standard, seconds-since-epoch.
|
|
57
|
+
*/
|
|
58
|
+
export interface DelegationTokenPayload {
|
|
59
|
+
sub: string;
|
|
60
|
+
behalfOf: string;
|
|
61
|
+
organizationId: string;
|
|
62
|
+
iat: number;
|
|
63
|
+
exp: number;
|
|
64
|
+
}
|
|
65
|
+
/** Arguments accepted by `mintDelegationToken`. */
|
|
66
|
+
export interface MintDelegationTokenArgs {
|
|
67
|
+
agentRunId: string;
|
|
68
|
+
userId: string;
|
|
69
|
+
organizationId: string;
|
|
70
|
+
/**
|
|
71
|
+
* Optional override for TTL in seconds. Defaults to
|
|
72
|
+
* {@link DELEGATION_TTL_SECONDS}. Tests use short TTLs to exercise
|
|
73
|
+
* expiry paths without real-time sleeps.
|
|
74
|
+
*/
|
|
75
|
+
ttlSeconds?: number;
|
|
76
|
+
/**
|
|
77
|
+
* Optional override for the "now" timestamp in seconds since epoch.
|
|
78
|
+
* Tests inject a fixed value so expiry and iat claims are
|
|
79
|
+
* deterministic.
|
|
80
|
+
*/
|
|
81
|
+
nowSeconds?: number;
|
|
82
|
+
}
|
|
83
|
+
/** Discriminant for the typed reasons `verifyDelegationToken` can fail. */
|
|
84
|
+
export type DelegationTokenErrorReason = "malformed" | "bad_signature" | "expired" | "wrong_issuer" | "missing_claim";
|
|
85
|
+
/**
|
|
86
|
+
* Thrown by `verifyDelegationToken` on any verification failure. The
|
|
87
|
+
* `reason` discriminant lets the middleware map failures to the right
|
|
88
|
+
* HTTP status (401 for signature/expiry/issuer, 400 for malformed) and
|
|
89
|
+
* the right audit-event classification without having to parse error
|
|
90
|
+
* messages.
|
|
91
|
+
*/
|
|
92
|
+
export declare class DelegationTokenError extends Error {
|
|
93
|
+
readonly reason: DelegationTokenErrorReason;
|
|
94
|
+
readonly detail: string;
|
|
95
|
+
constructor(reason: DelegationTokenErrorReason, detail: string);
|
|
96
|
+
}
|
|
97
|
+
/**
|
|
98
|
+
* Mint a signed delegation token. Pure function: takes the claims and
|
|
99
|
+
* the key, returns the compact-serialization JWT string. Never touches
|
|
100
|
+
* the filesystem, the network, or the database.
|
|
101
|
+
*
|
|
102
|
+
* The caller is responsible for persisting the `AgentRun` row and its
|
|
103
|
+
* `captured_ability` before minting — if the token lands in the
|
|
104
|
+
* sandbox before the `AgentRun` row is visible to a concurrent
|
|
105
|
+
* middleware verification, the verifier will see a token whose `sub`
|
|
106
|
+
* is not in the DB and must reject with the appropriate error. That
|
|
107
|
+
* ordering belongs to the spawn path, not here.
|
|
108
|
+
*/
|
|
109
|
+
export declare function mintDelegationToken(args: MintDelegationTokenArgs, key: Uint8Array): Promise<string>;
|
|
110
|
+
/**
|
|
111
|
+
* Verify a delegation token string against the given key. Returns the
|
|
112
|
+
* decoded payload or throws a `DelegationTokenError` with a typed
|
|
113
|
+
* reason. Never touches the filesystem, the network, or the database.
|
|
114
|
+
*
|
|
115
|
+
* Verification checks, in order:
|
|
116
|
+
* 1. The token is a syntactically valid JWS compact serialization.
|
|
117
|
+
* 2. The signature verifies against the given HMAC key.
|
|
118
|
+
* 3. The `iss` claim equals {@link DELEGATION_ISSUER}. Any other
|
|
119
|
+
* issuer — including Auth0 issuers — is rejected as `wrong_issuer`
|
|
120
|
+
* so that a leaked Auth0 token presented here cannot accidentally
|
|
121
|
+
* authenticate against the delegation path.
|
|
122
|
+
* 4. The `exp` claim is in the future. jose checks this automatically
|
|
123
|
+
* as part of `jwtVerify`; we re-map its error class to our typed
|
|
124
|
+
* reason.
|
|
125
|
+
* 5. `sub`, `behalfOf`, and `organizationId` claims are all present
|
|
126
|
+
* and non-empty strings. A token missing any of these cannot
|
|
127
|
+
* successfully attach a `DelegatedAgentPrincipal` downstream, so
|
|
128
|
+
* the verifier fails fast.
|
|
129
|
+
*/
|
|
130
|
+
export declare function verifyDelegationToken(token: string, key: Uint8Array): Promise<DelegationTokenPayload>;
|
|
131
|
+
/**
|
|
132
|
+
* Peek at a JWT's `iss` claim without verifying the signature. Used by
|
|
133
|
+
* the auth middleware to route a bearer token to the right verifier
|
|
134
|
+
* (Auth0 vs delegation) before it knows which key to use. Returns
|
|
135
|
+
* `null` if the token is syntactically broken or the `iss` claim is
|
|
136
|
+
* absent — the caller should then fall through to its default path
|
|
137
|
+
* (currently Auth0) and let that verifier produce the real error.
|
|
138
|
+
*
|
|
139
|
+
* This is NOT authentication. Do not use the returned issuer for any
|
|
140
|
+
* authorization decision — it is entirely attacker-controlled. The
|
|
141
|
+
* only correct use is "pick which verifier to hand the token to."
|
|
142
|
+
*/
|
|
143
|
+
export declare function peekIssuer(token: string): string | null;
|
|
144
|
+
/** Discriminant for `loadDelegationKeyFromEnv` failures. */
|
|
145
|
+
export type DelegationKeyLoadErrorReason = "missing" | "malformed" | "too_short";
|
|
146
|
+
/**
|
|
147
|
+
* Thrown by `loadDelegationKeyFromEnv` if the env var is missing,
|
|
148
|
+
* not valid base64, or yields a key shorter than
|
|
149
|
+
* {@link DELEGATION_KEY_MIN_BYTES}. Separate from
|
|
150
|
+
* `DelegationTokenError` because key-loading failures happen at
|
|
151
|
+
* service startup, not on the hot path — they should crash the
|
|
152
|
+
* process, not return a 4xx.
|
|
153
|
+
*/
|
|
154
|
+
export declare class DelegationKeyLoadError extends Error {
|
|
155
|
+
readonly reason: DelegationKeyLoadErrorReason;
|
|
156
|
+
constructor(reason: DelegationKeyLoadErrorReason, detail: string);
|
|
157
|
+
}
|
|
158
|
+
/**
|
|
159
|
+
* Read the HMAC key from `INTELLIGENCE_DELEGATION_JWT_KEY`, base64-
|
|
160
|
+
* decode it, and return the decoded bytes. Call this once at service
|
|
161
|
+
* startup; cache the result and pass it into every mint/verify call.
|
|
162
|
+
*
|
|
163
|
+
* Takes an optional `env` record to make tests hermetic — production
|
|
164
|
+
* callers pass nothing and get `process.env`.
|
|
165
|
+
*/
|
|
166
|
+
export declare function loadDelegationKeyFromEnv(env?: NodeJS.ProcessEnv): Uint8Array;
|
|
167
|
+
//# sourceMappingURL=delegation-jwt.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"delegation-jwt.d.ts","sourceRoot":"","sources":["../../src/auth/delegation-jwt.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAsCG;AAEH,uEAAuE;AACvE,eAAO,MAAM,iBAAiB,uBAAuB,CAAC;AAEtD,wEAAwE;AACxE,eAAO,MAAM,oBAAoB,UAAU,CAAC;AAE5C,wDAAwD;AACxD,eAAO,MAAM,sBAAsB,QAAU,CAAC;AAE9C,wEAAwE;AACxE,eAAO,MAAM,wBAAwB,KAAK,CAAC;AAE3C;;;;;;;;;GASG;AACH,MAAM,WAAW,sBAAsB;IACrC,GAAG,EAAE,MAAM,CAAC;IACZ,QAAQ,EAAE,MAAM,CAAC;IACjB,cAAc,EAAE,MAAM,CAAC;IACvB,GAAG,EAAE,MAAM,CAAC;IACZ,GAAG,EAAE,MAAM,CAAC;CACb;AAED,mDAAmD;AACnD,MAAM,WAAW,uBAAuB;IACtC,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;IACf,cAAc,EAAE,MAAM,CAAC;IACvB;;;;OAIG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB;;;;OAIG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,2EAA2E;AAC3E,MAAM,MAAM,0BAA0B,GAClC,WAAW,GACX,eAAe,GACf,SAAS,GACT,cAAc,GACd,eAAe,CAAC;AAEpB;;;;;;GAMG;AACH,qBAAa,oBAAqB,SAAQ,KAAK;IAC7C,QAAQ,CAAC,MAAM,EAAE,0BAA0B,CAAC;IAC5C,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;gBAEZ,MAAM,EAAE,0BAA0B,EAAE,MAAM,EAAE,MAAM;CAM/D;AAED;;;;;;;;;;;GAWG;AACH,wBAAsB,mBAAmB,CACvC,IAAI,EAAE,uBAAuB,EAC7B,GAAG,EAAE,UAAU,GACd,OAAO,CAAC,MAAM,CAAC,CAcjB;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAsB,qBAAqB,CACzC,KAAK,EAAE,MAAM,EACb,GAAG,EAAE,UAAU,GACd,OAAO,CAAC,sBAAsB,CAAC,CA6DjC;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAYvD;AAED,4DAA4D;AAC5D,MAAM,MAAM,4BAA4B,GAAG,SAAS,GAAG,WAAW,GAAG,WAAW,CAAC;AAEjF;;;;;;;GAOG;AACH,qBAAa,sBAAuB,SAAQ,KAAK;IAC/C,QAAQ,CAAC,MAAM,EAAE,4BAA4B,CAAC;gBAElC,MAAM,EAAE,4BAA4B,EAAE,MAAM,EAAE,MAAM;CAKjE;AAED;;;;;;;GAOG;AACH,wBAAgB,wBAAwB,CACtC,GAAG,GAAE,MAAM,CAAC,UAAwB,GACnC,UAAU,CA+BZ"}
|
|
@@ -0,0 +1,237 @@
|
|
|
1
|
+
import { SignJWT, jwtVerify, errors as joseErrors } from "jose";
|
|
2
|
+
/**
|
|
3
|
+
* In-process delegation JWT helpers (Phase 1d).
|
|
4
|
+
*
|
|
5
|
+
* Phase 1d replaces the original RFC 8693 Token Exchange plan with
|
|
6
|
+
* in-process delegation tokens — decision `e2f847e2`. When a user spawns
|
|
7
|
+
* an agent run, the API mints a short-lived JWT whose payload names the
|
|
8
|
+
* `AgentRun`, the user it runs on behalf of, and the organization; the
|
|
9
|
+
* sandbox receives this token instead of the user's Apart access token
|
|
10
|
+
* and presents it on every callback. The middleware verifies the token,
|
|
11
|
+
* looks up the `AgentRun`, and reconstructs a `DelegatedAgentPrincipal`
|
|
12
|
+
* whose ability is the captured snapshot from `AgentRun.captured_ability`
|
|
13
|
+
* (the Phase 1c column).
|
|
14
|
+
*
|
|
15
|
+
* Design notes
|
|
16
|
+
* ------------
|
|
17
|
+
* - **HS256 HMAC**, not RSA. The signer and the verifier are the same
|
|
18
|
+
* process (the intelligence-api backend). There are no third-party
|
|
19
|
+
* verifiers, so a symmetric key is the simplest correct shape and
|
|
20
|
+
* avoids any public-key distribution story.
|
|
21
|
+
* - **Key material** is a 32-byte random value, base64-encoded, stored
|
|
22
|
+
* in GCP Secret Manager as `intelligence-api-{env}-delegation-jwt-key`.
|
|
23
|
+
* See `docs/runbooks/auth0-tenant-provisioning.md` for the rotation
|
|
24
|
+
* procedure. The helpers here take the decoded key as a `Uint8Array`
|
|
25
|
+
* argument; `loadDelegationKeyFromEnv` handles the env-var boundary.
|
|
26
|
+
* - **Issuer claim** distinguishes delegation tokens from Auth0 tokens
|
|
27
|
+
* in the middleware. Auth0 issuers are `https://apart-next-*.eu.auth0.com/`
|
|
28
|
+
* (URL-shaped); the delegation issuer is the bare string
|
|
29
|
+
* `apart-intelligence` — the middleware can decode the JWT header/
|
|
30
|
+
* payload without verifying to route a request to the right verifier.
|
|
31
|
+
* - **TTL is 15 minutes**, matching the spec's "short-lived" guidance.
|
|
32
|
+
* A sandbox callback that arrives more than 15 minutes after spawn
|
|
33
|
+
* gets a fresh token via the refresh-on-callback flow (see the Phase
|
|
34
|
+
* 1d user story `ed8fcc68`).
|
|
35
|
+
* - **No condition on `aud`.** A delegation token is only ever sent to
|
|
36
|
+
* the intelligence-api and only ever verified by the intelligence-api;
|
|
37
|
+
* an audience claim adds nothing a process-local HMAC key does not
|
|
38
|
+
* already give us. `iss` is the one claim the middleware inspects to
|
|
39
|
+
* route between Auth0 and delegation.
|
|
40
|
+
*/
|
|
41
|
+
/** The fixed issuer claim for delegation tokens. Checked on verify. */
|
|
42
|
+
export const DELEGATION_ISSUER = "apart-intelligence";
|
|
43
|
+
/** The fixed signing algorithm. HS256 matches the HMAC key material. */
|
|
44
|
+
export const DELEGATION_ALGORITHM = "HS256";
|
|
45
|
+
/** Delegation token lifetime in seconds. 15 minutes. */
|
|
46
|
+
export const DELEGATION_TTL_SECONDS = 15 * 60;
|
|
47
|
+
/** The minimum acceptable key length, in bytes, after base64 decode. */
|
|
48
|
+
export const DELEGATION_KEY_MIN_BYTES = 32;
|
|
49
|
+
/**
|
|
50
|
+
* Thrown by `verifyDelegationToken` on any verification failure. The
|
|
51
|
+
* `reason` discriminant lets the middleware map failures to the right
|
|
52
|
+
* HTTP status (401 for signature/expiry/issuer, 400 for malformed) and
|
|
53
|
+
* the right audit-event classification without having to parse error
|
|
54
|
+
* messages.
|
|
55
|
+
*/
|
|
56
|
+
export class DelegationTokenError extends Error {
|
|
57
|
+
reason;
|
|
58
|
+
detail;
|
|
59
|
+
constructor(reason, detail) {
|
|
60
|
+
super(`delegation token ${reason}: ${detail}`);
|
|
61
|
+
this.name = "DelegationTokenError";
|
|
62
|
+
this.reason = reason;
|
|
63
|
+
this.detail = detail;
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* Mint a signed delegation token. Pure function: takes the claims and
|
|
68
|
+
* the key, returns the compact-serialization JWT string. Never touches
|
|
69
|
+
* the filesystem, the network, or the database.
|
|
70
|
+
*
|
|
71
|
+
* The caller is responsible for persisting the `AgentRun` row and its
|
|
72
|
+
* `captured_ability` before minting — if the token lands in the
|
|
73
|
+
* sandbox before the `AgentRun` row is visible to a concurrent
|
|
74
|
+
* middleware verification, the verifier will see a token whose `sub`
|
|
75
|
+
* is not in the DB and must reject with the appropriate error. That
|
|
76
|
+
* ordering belongs to the spawn path, not here.
|
|
77
|
+
*/
|
|
78
|
+
export async function mintDelegationToken(args, key) {
|
|
79
|
+
const ttl = args.ttlSeconds ?? DELEGATION_TTL_SECONDS;
|
|
80
|
+
const now = args.nowSeconds ?? Math.floor(Date.now() / 1000);
|
|
81
|
+
return await new SignJWT({
|
|
82
|
+
behalfOf: args.userId,
|
|
83
|
+
organizationId: args.organizationId,
|
|
84
|
+
})
|
|
85
|
+
.setProtectedHeader({ alg: DELEGATION_ALGORITHM, typ: "JWT" })
|
|
86
|
+
.setIssuer(DELEGATION_ISSUER)
|
|
87
|
+
.setSubject(args.agentRunId)
|
|
88
|
+
.setIssuedAt(now)
|
|
89
|
+
.setExpirationTime(now + ttl)
|
|
90
|
+
.sign(key);
|
|
91
|
+
}
|
|
92
|
+
/**
|
|
93
|
+
* Verify a delegation token string against the given key. Returns the
|
|
94
|
+
* decoded payload or throws a `DelegationTokenError` with a typed
|
|
95
|
+
* reason. Never touches the filesystem, the network, or the database.
|
|
96
|
+
*
|
|
97
|
+
* Verification checks, in order:
|
|
98
|
+
* 1. The token is a syntactically valid JWS compact serialization.
|
|
99
|
+
* 2. The signature verifies against the given HMAC key.
|
|
100
|
+
* 3. The `iss` claim equals {@link DELEGATION_ISSUER}. Any other
|
|
101
|
+
* issuer — including Auth0 issuers — is rejected as `wrong_issuer`
|
|
102
|
+
* so that a leaked Auth0 token presented here cannot accidentally
|
|
103
|
+
* authenticate against the delegation path.
|
|
104
|
+
* 4. The `exp` claim is in the future. jose checks this automatically
|
|
105
|
+
* as part of `jwtVerify`; we re-map its error class to our typed
|
|
106
|
+
* reason.
|
|
107
|
+
* 5. `sub`, `behalfOf`, and `organizationId` claims are all present
|
|
108
|
+
* and non-empty strings. A token missing any of these cannot
|
|
109
|
+
* successfully attach a `DelegatedAgentPrincipal` downstream, so
|
|
110
|
+
* the verifier fails fast.
|
|
111
|
+
*/
|
|
112
|
+
export async function verifyDelegationToken(token, key) {
|
|
113
|
+
let payload;
|
|
114
|
+
try {
|
|
115
|
+
const result = await jwtVerify(token, key, {
|
|
116
|
+
issuer: DELEGATION_ISSUER,
|
|
117
|
+
algorithms: [DELEGATION_ALGORITHM],
|
|
118
|
+
});
|
|
119
|
+
payload = result.payload;
|
|
120
|
+
}
|
|
121
|
+
catch (err) {
|
|
122
|
+
if (err instanceof joseErrors.JWTExpired) {
|
|
123
|
+
throw new DelegationTokenError("expired", err.message);
|
|
124
|
+
}
|
|
125
|
+
if (err instanceof joseErrors.JWTClaimValidationFailed) {
|
|
126
|
+
// jose throws this for issuer mismatch. Map to wrong_issuer so
|
|
127
|
+
// the caller gets the useful signal even though the library
|
|
128
|
+
// class is generic.
|
|
129
|
+
if (err.claim === "iss") {
|
|
130
|
+
throw new DelegationTokenError("wrong_issuer", err.message);
|
|
131
|
+
}
|
|
132
|
+
throw new DelegationTokenError("missing_claim", err.message);
|
|
133
|
+
}
|
|
134
|
+
if (err instanceof joseErrors.JWSSignatureVerificationFailed) {
|
|
135
|
+
throw new DelegationTokenError("bad_signature", err.message);
|
|
136
|
+
}
|
|
137
|
+
if (err instanceof joseErrors.JWSInvalid || err instanceof joseErrors.JWTInvalid) {
|
|
138
|
+
throw new DelegationTokenError("malformed", err.message);
|
|
139
|
+
}
|
|
140
|
+
// Unknown jose error — treat as malformed. Downstream sees a 4xx
|
|
141
|
+
// rather than a 5xx for anything we didn't explicitly classify.
|
|
142
|
+
throw new DelegationTokenError("malformed", err instanceof Error ? err.message : String(err));
|
|
143
|
+
}
|
|
144
|
+
const sub = payload.sub;
|
|
145
|
+
const behalfOf = payload.behalfOf;
|
|
146
|
+
const organizationId = payload.organizationId;
|
|
147
|
+
const iat = payload.iat;
|
|
148
|
+
const exp = payload.exp;
|
|
149
|
+
if (typeof sub !== "string" || sub.length === 0) {
|
|
150
|
+
throw new DelegationTokenError("missing_claim", "sub is missing or empty");
|
|
151
|
+
}
|
|
152
|
+
if (typeof behalfOf !== "string" || behalfOf.length === 0) {
|
|
153
|
+
throw new DelegationTokenError("missing_claim", "behalfOf is missing or empty");
|
|
154
|
+
}
|
|
155
|
+
if (typeof organizationId !== "string" || organizationId.length === 0) {
|
|
156
|
+
throw new DelegationTokenError("missing_claim", "organizationId is missing or empty");
|
|
157
|
+
}
|
|
158
|
+
if (typeof iat !== "number") {
|
|
159
|
+
throw new DelegationTokenError("missing_claim", "iat is missing");
|
|
160
|
+
}
|
|
161
|
+
if (typeof exp !== "number") {
|
|
162
|
+
throw new DelegationTokenError("missing_claim", "exp is missing");
|
|
163
|
+
}
|
|
164
|
+
return { sub, behalfOf, organizationId, iat, exp };
|
|
165
|
+
}
|
|
166
|
+
/**
|
|
167
|
+
* Peek at a JWT's `iss` claim without verifying the signature. Used by
|
|
168
|
+
* the auth middleware to route a bearer token to the right verifier
|
|
169
|
+
* (Auth0 vs delegation) before it knows which key to use. Returns
|
|
170
|
+
* `null` if the token is syntactically broken or the `iss` claim is
|
|
171
|
+
* absent — the caller should then fall through to its default path
|
|
172
|
+
* (currently Auth0) and let that verifier produce the real error.
|
|
173
|
+
*
|
|
174
|
+
* This is NOT authentication. Do not use the returned issuer for any
|
|
175
|
+
* authorization decision — it is entirely attacker-controlled. The
|
|
176
|
+
* only correct use is "pick which verifier to hand the token to."
|
|
177
|
+
*/
|
|
178
|
+
export function peekIssuer(token) {
|
|
179
|
+
const parts = token.split(".");
|
|
180
|
+
if (parts.length !== 3) {
|
|
181
|
+
return null;
|
|
182
|
+
}
|
|
183
|
+
try {
|
|
184
|
+
const payloadJson = Buffer.from(parts[1], "base64url").toString("utf8");
|
|
185
|
+
const payload = JSON.parse(payloadJson);
|
|
186
|
+
return typeof payload.iss === "string" ? payload.iss : null;
|
|
187
|
+
}
|
|
188
|
+
catch {
|
|
189
|
+
return null;
|
|
190
|
+
}
|
|
191
|
+
}
|
|
192
|
+
/**
|
|
193
|
+
* Thrown by `loadDelegationKeyFromEnv` if the env var is missing,
|
|
194
|
+
* not valid base64, or yields a key shorter than
|
|
195
|
+
* {@link DELEGATION_KEY_MIN_BYTES}. Separate from
|
|
196
|
+
* `DelegationTokenError` because key-loading failures happen at
|
|
197
|
+
* service startup, not on the hot path — they should crash the
|
|
198
|
+
* process, not return a 4xx.
|
|
199
|
+
*/
|
|
200
|
+
export class DelegationKeyLoadError extends Error {
|
|
201
|
+
reason;
|
|
202
|
+
constructor(reason, detail) {
|
|
203
|
+
super(`delegation key ${reason}: ${detail}`);
|
|
204
|
+
this.name = "DelegationKeyLoadError";
|
|
205
|
+
this.reason = reason;
|
|
206
|
+
}
|
|
207
|
+
}
|
|
208
|
+
/**
|
|
209
|
+
* Read the HMAC key from `INTELLIGENCE_DELEGATION_JWT_KEY`, base64-
|
|
210
|
+
* decode it, and return the decoded bytes. Call this once at service
|
|
211
|
+
* startup; cache the result and pass it into every mint/verify call.
|
|
212
|
+
*
|
|
213
|
+
* Takes an optional `env` record to make tests hermetic — production
|
|
214
|
+
* callers pass nothing and get `process.env`.
|
|
215
|
+
*/
|
|
216
|
+
export function loadDelegationKeyFromEnv(env = process.env) {
|
|
217
|
+
const raw = env["INTELLIGENCE_DELEGATION_JWT_KEY"];
|
|
218
|
+
if (typeof raw !== "string" || raw.length === 0) {
|
|
219
|
+
throw new DelegationKeyLoadError("missing", "INTELLIGENCE_DELEGATION_JWT_KEY is not set");
|
|
220
|
+
}
|
|
221
|
+
let decoded;
|
|
222
|
+
try {
|
|
223
|
+
decoded = Buffer.from(raw, "base64");
|
|
224
|
+
}
|
|
225
|
+
catch (err) {
|
|
226
|
+
throw new DelegationKeyLoadError("malformed", `INTELLIGENCE_DELEGATION_JWT_KEY is not valid base64: ${err instanceof Error ? err.message : String(err)}`);
|
|
227
|
+
}
|
|
228
|
+
// Buffer.from(..., "base64") never throws on invalid input — it silently
|
|
229
|
+
// drops unrecognized characters. The length check below catches the
|
|
230
|
+
// case where the env var was, e.g., an empty string, whitespace, or
|
|
231
|
+
// a few stray characters.
|
|
232
|
+
if (decoded.length < DELEGATION_KEY_MIN_BYTES) {
|
|
233
|
+
throw new DelegationKeyLoadError("too_short", `decoded key is ${decoded.length} bytes; need at least ${DELEGATION_KEY_MIN_BYTES}`);
|
|
234
|
+
}
|
|
235
|
+
return new Uint8Array(decoded);
|
|
236
|
+
}
|
|
237
|
+
//# sourceMappingURL=delegation-jwt.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"delegation-jwt.js","sourceRoot":"","sources":["../../src/auth/delegation-jwt.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"delegation-jwt.test.d.ts","sourceRoot":"","sources":["../../src/auth/delegation-jwt.test.ts"],"names":[],"mappings":""}
|