@shipfox/api-auth 19.0.0 → 20.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/.turbo/turbo-build.log +17 -2
- package/CHANGELOG.md +13 -0
- package/dist/core/cimd.d.ts +39 -0
- package/dist/core/cimd.d.ts.map +1 -0
- package/dist/core/cimd.js +392 -0
- package/dist/core/cimd.js.map +1 -0
- package/dist/core/errors.d.ts +14 -0
- package/dist/core/errors.d.ts.map +1 -1
- package/dist/core/errors.js +26 -0
- package/dist/core/errors.js.map +1 -1
- package/dist/core/oauth-client-resolver.d.ts +54 -0
- package/dist/core/oauth-client-resolver.d.ts.map +1 -0
- package/dist/core/oauth-client-resolver.js +154 -0
- package/dist/core/oauth-client-resolver.js.map +1 -0
- package/dist/core/oauth-client.d.ts +39 -0
- package/dist/core/oauth-client.d.ts.map +1 -0
- package/dist/core/oauth-client.js +236 -0
- package/dist/core/oauth-client.js.map +1 -0
- package/dist/db/agent-access-retention.d.ts +10 -0
- package/dist/db/agent-access-retention.d.ts.map +1 -0
- package/dist/db/agent-access-retention.js +11 -0
- package/dist/db/agent-access-retention.js.map +1 -0
- package/dist/db/agent-access.d.ts +100 -4
- package/dist/db/agent-access.d.ts.map +1 -1
- package/dist/db/agent-access.js +483 -45
- package/dist/db/agent-access.js.map +1 -1
- package/dist/index.d.ts +9 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +25 -1
- package/dist/index.js.map +1 -1
- package/dist/metrics/instance.d.ts +1 -1
- package/dist/metrics/instance.d.ts.map +1 -1
- package/dist/metrics/instance.js.map +1 -1
- package/dist/presentation/routes/oauth.d.ts +9 -0
- package/dist/presentation/routes/oauth.d.ts.map +1 -0
- package/dist/presentation/routes/oauth.js +150 -0
- package/dist/presentation/routes/oauth.js.map +1 -0
- package/dist/presentation/routes/rate-limit.d.ts.map +1 -1
- package/dist/presentation/routes/rate-limit.js +24 -0
- package/dist/presentation/routes/rate-limit.js.map +1 -1
- package/dist/temporal/activities/agent-access-retention.d.ts +13 -0
- package/dist/temporal/activities/agent-access-retention.d.ts.map +1 -0
- package/dist/temporal/activities/agent-access-retention.js +58 -0
- package/dist/temporal/activities/agent-access-retention.js.map +1 -0
- package/dist/temporal/activities/index.d.ts +5 -0
- package/dist/temporal/activities/index.d.ts.map +1 -0
- package/dist/temporal/activities/index.js +8 -0
- package/dist/temporal/activities/index.js.map +1 -0
- package/dist/temporal/constants.d.ts +2 -0
- package/dist/temporal/constants.d.ts.map +1 -0
- package/dist/temporal/constants.js +3 -0
- package/dist/temporal/constants.js.map +1 -0
- package/dist/temporal/workflows/agent-access-retention-cron.d.ts +2 -0
- package/dist/temporal/workflows/agent-access-retention-cron.d.ts.map +1 -0
- package/dist/temporal/workflows/agent-access-retention-cron.js +22 -0
- package/dist/temporal/workflows/agent-access-retention-cron.js.map +1 -0
- package/dist/temporal/workflows/index.bundle.js +25227 -0
- package/dist/temporal/workflows/index.bundle.meta.json +1 -0
- package/dist/temporal/workflows/index.d.ts +2 -0
- package/dist/temporal/workflows/index.d.ts.map +1 -0
- package/dist/temporal/workflows/index.js +3 -0
- package/dist/temporal/workflows/index.js.map +1 -0
- package/dist/tsconfig.test.tsbuildinfo +1 -1
- package/package.json +7 -4
- package/src/core/cimd.test.ts +213 -0
- package/src/core/cimd.ts +532 -0
- package/src/core/errors.ts +41 -0
- package/src/core/oauth-client-resolver.test.ts +198 -0
- package/src/core/oauth-client-resolver.ts +253 -0
- package/src/core/oauth-client.test.ts +157 -0
- package/src/core/oauth-client.ts +331 -0
- package/src/db/agent-access-retention.ts +10 -0
- package/src/db/agent-access.test.ts +697 -3
- package/src/db/agent-access.ts +953 -91
- package/src/index.test.ts +27 -0
- package/src/index.ts +76 -0
- package/src/metrics/instance.ts +5 -1
- package/src/presentation/routes/oauth.test.ts +133 -0
- package/src/presentation/routes/oauth.ts +144 -0
- package/src/presentation/routes/rate-limit.ts +12 -0
- package/src/temporal/activities/agent-access-retention.ts +76 -0
- package/src/temporal/activities/index.ts +5 -0
- package/src/temporal/constants.ts +1 -0
- package/src/temporal/workflows/agent-access-retention-cron.ts +23 -0
- package/src/temporal/workflows/index.ts +1 -0
- package/tsconfig.build.tsbuildinfo +1 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agent-access-retention.d.ts","sourceRoot":"","sources":["../../src/db/agent-access-retention.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,kCAAkC,IAAI,CAAC;AACpD,eAAO,MAAM,kCAAkC,KAAK,CAAC;AACrD,eAAO,MAAM,0BAA0B,KAAK,CAAC;AAC7C,eAAO,MAAM,wBAAwB,KAAK,CAAC;AAC3C,eAAO,MAAM,2BAA2B,KAAK,CAAC;AAE9C,eAAO,MAAM,kCAAkC,MAAM,CAAC;AACtD,eAAO,MAAM,qCAAqC,OAAQ,CAAC;AAC3D,eAAO,MAAM,qCAAqC,QAAa,CAAC;AAChE,eAAO,MAAM,wCAAwC,OAAQ,CAAC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
export const AGENT_AUTHORIZATION_RETENTION_DAYS = 1;
|
|
2
|
+
export const AGENT_REFRESH_TOKEN_RETENTION_DAYS = 30;
|
|
3
|
+
export const AGENT_GRANT_RETENTION_DAYS = 90;
|
|
4
|
+
export const AGENT_PAT_RETENTION_DAYS = 90;
|
|
5
|
+
export const AGENT_CLIENT_RETENTION_DAYS = 30;
|
|
6
|
+
export const AGENT_ACCESS_RETENTION_BATCH_LIMIT = 200;
|
|
7
|
+
export const AGENT_ACCESS_RETENTION_MAX_ITERATIONS = 1_000;
|
|
8
|
+
export const AGENT_ACCESS_RETENTION_TIME_BUDGET_MS = 4 * 60_000;
|
|
9
|
+
export const AGENT_ACCESS_RETENTION_TIMEOUT_MARGIN_MS = 1_000;
|
|
10
|
+
|
|
11
|
+
//# sourceMappingURL=agent-access-retention.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/db/agent-access-retention.ts"],"sourcesContent":["export const AGENT_AUTHORIZATION_RETENTION_DAYS = 1;\nexport const AGENT_REFRESH_TOKEN_RETENTION_DAYS = 30;\nexport const AGENT_GRANT_RETENTION_DAYS = 90;\nexport const AGENT_PAT_RETENTION_DAYS = 90;\nexport const AGENT_CLIENT_RETENTION_DAYS = 30;\n\nexport const AGENT_ACCESS_RETENTION_BATCH_LIMIT = 200;\nexport const AGENT_ACCESS_RETENTION_MAX_ITERATIONS = 1_000;\nexport const AGENT_ACCESS_RETENTION_TIME_BUDGET_MS = 4 * 60_000;\nexport const AGENT_ACCESS_RETENTION_TIMEOUT_MARGIN_MS = 1_000;\n"],"names":["AGENT_AUTHORIZATION_RETENTION_DAYS","AGENT_REFRESH_TOKEN_RETENTION_DAYS","AGENT_GRANT_RETENTION_DAYS","AGENT_PAT_RETENTION_DAYS","AGENT_CLIENT_RETENTION_DAYS","AGENT_ACCESS_RETENTION_BATCH_LIMIT","AGENT_ACCESS_RETENTION_MAX_ITERATIONS","AGENT_ACCESS_RETENTION_TIME_BUDGET_MS","AGENT_ACCESS_RETENTION_TIMEOUT_MARGIN_MS"],"mappings":"AAAA,OAAO,MAAMA,qCAAqC,EAAE;AACpD,OAAO,MAAMC,qCAAqC,GAAG;AACrD,OAAO,MAAMC,6BAA6B,GAAG;AAC7C,OAAO,MAAMC,2BAA2B,GAAG;AAC3C,OAAO,MAAMC,8BAA8B,GAAG;AAE9C,OAAO,MAAMC,qCAAqC,IAAI;AACtD,OAAO,MAAMC,wCAAwC,MAAM;AAC3D,OAAO,MAAMC,wCAAwC,IAAI,OAAO;AAChE,OAAO,MAAMC,2CAA2C,MAAM"}
|
|
@@ -2,6 +2,18 @@ import type { AgentAuthorizationCode, AgentAuthorizationRequest, AgentClient, Ag
|
|
|
2
2
|
import { db } from './db.js';
|
|
3
3
|
export type AgentAccessTx = Parameters<Parameters<ReturnType<typeof db>['transaction']>[0]>[0];
|
|
4
4
|
type AgentAccessExecutor = ReturnType<typeof db> | AgentAccessTx;
|
|
5
|
+
/** Returns the default sliding lifetime for a newly issued agent refresh token. */
|
|
6
|
+
export declare function agentRefreshTokenExpiresAt(now?: Date): Date;
|
|
7
|
+
/**
|
|
8
|
+
* A rotated token remains usable for an access-token-only grace response. The
|
|
9
|
+
* row must still exist; pruning deliberately turns later replays into plain
|
|
10
|
+
* unknown-token responses.
|
|
11
|
+
*/
|
|
12
|
+
export declare function isWithinAgentRefreshRotationGrace(params: {
|
|
13
|
+
rotatedAt: Date | null;
|
|
14
|
+
now?: Date;
|
|
15
|
+
graceSeconds?: number | undefined;
|
|
16
|
+
}): boolean;
|
|
5
17
|
export interface CreateAgentClientParams {
|
|
6
18
|
clientId: string;
|
|
7
19
|
name: string;
|
|
@@ -10,6 +22,17 @@ export interface CreateAgentClientParams {
|
|
|
10
22
|
}
|
|
11
23
|
export declare function createAgentClient(params: CreateAgentClientParams): Promise<AgentClient>;
|
|
12
24
|
export declare function createAgentClientTx(tx: AgentAccessTx, params: CreateAgentClientParams): Promise<AgentClient>;
|
|
25
|
+
export interface UpsertCimdAgentClientParams {
|
|
26
|
+
clientId: string;
|
|
27
|
+
name: string;
|
|
28
|
+
redirectUris: string[];
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Stores the latest validated CIMD identity. The generic client upsert above
|
|
32
|
+
* intentionally preserves registration metadata; CIMD documents are the
|
|
33
|
+
* source of truth and therefore use this explicit update path.
|
|
34
|
+
*/
|
|
35
|
+
export declare function upsertCimdAgentClient(params: UpsertCimdAgentClientParams): Promise<AgentClient>;
|
|
13
36
|
export declare function findAgentClientByClientId(params: {
|
|
14
37
|
clientId: string;
|
|
15
38
|
executor?: AgentAccessExecutor;
|
|
@@ -55,6 +78,12 @@ export interface CreateAgentGrantParams {
|
|
|
55
78
|
scopes: string[];
|
|
56
79
|
}
|
|
57
80
|
export declare function createAgentGrant(params: CreateAgentGrantParams): Promise<AgentGrant>;
|
|
81
|
+
/**
|
|
82
|
+
* Creates or reauthorizes a grant while holding its client row lock. A newly
|
|
83
|
+
* created grant has no live child until its first authorization code or refresh
|
|
84
|
+
* token is issued, so approval callers must compose that first child creation
|
|
85
|
+
* with this Tx helper in one database transaction.
|
|
86
|
+
*/
|
|
58
87
|
export declare function createAgentGrantTx(tx: AgentAccessTx, params: CreateAgentGrantParams): Promise<AgentGrant>;
|
|
59
88
|
export declare function findAgentGrant(params: {
|
|
60
89
|
id: string;
|
|
@@ -97,7 +126,8 @@ export declare function consumeAgentAuthorizationCodeTx(tx: AgentAccessTx, param
|
|
|
97
126
|
export interface CreateAgentRefreshTokenParams {
|
|
98
127
|
grantId: string;
|
|
99
128
|
hashedToken: string;
|
|
100
|
-
|
|
129
|
+
/** Defaults to the configured 14-day lifetime. */
|
|
130
|
+
expiresAt?: Date;
|
|
101
131
|
}
|
|
102
132
|
export declare function createAgentRefreshToken(params: CreateAgentRefreshTokenParams): Promise<AgentRefreshToken>;
|
|
103
133
|
export declare function createAgentRefreshTokenTx(tx: AgentAccessTx, params: CreateAgentRefreshTokenParams): Promise<AgentRefreshToken>;
|
|
@@ -109,20 +139,72 @@ export declare function findActiveAgentRefreshTokenByHash(params: {
|
|
|
109
139
|
hashedToken: string;
|
|
110
140
|
executor?: AgentAccessExecutor;
|
|
111
141
|
}): Promise<AgentRefreshToken | undefined>;
|
|
142
|
+
/** Finds the one live refresh token currently attached to a grant. */
|
|
143
|
+
export declare function findActiveAgentRefreshTokenByGrantId(params: {
|
|
144
|
+
grantId: string;
|
|
145
|
+
executor?: AgentAccessExecutor;
|
|
146
|
+
}): Promise<AgentRefreshToken | undefined>;
|
|
147
|
+
export type AgentRefreshTokenReplayResult = {
|
|
148
|
+
kind: 'grace';
|
|
149
|
+
grant: AgentGrant;
|
|
150
|
+
predecessor: AgentRefreshToken;
|
|
151
|
+
successor: AgentRefreshToken;
|
|
152
|
+
} | {
|
|
153
|
+
kind: 'reused';
|
|
154
|
+
grant: AgentGrant;
|
|
155
|
+
predecessor: AgentRefreshToken;
|
|
156
|
+
};
|
|
157
|
+
/**
|
|
158
|
+
* Resolves a replay of a retained, rotated token. A grace hit returns the one
|
|
159
|
+
* live successor so the caller can mint an access token without issuing a new
|
|
160
|
+
* refresh cookie. A replay after grace revokes the complete grant family.
|
|
161
|
+
* Missing or pruned rows return undefined and therefore remain plain 401s.
|
|
162
|
+
*/
|
|
163
|
+
export declare function resolveAgentRefreshTokenReplay(params: {
|
|
164
|
+
hashedToken: string;
|
|
165
|
+
now?: Date;
|
|
166
|
+
graceSeconds?: number;
|
|
167
|
+
}): Promise<AgentRefreshTokenReplayResult | undefined>;
|
|
168
|
+
export declare function resolveAgentRefreshTokenReplayTx(tx: AgentAccessTx, params: {
|
|
169
|
+
hashedToken: string;
|
|
170
|
+
now?: Date;
|
|
171
|
+
graceSeconds?: number;
|
|
172
|
+
}): Promise<AgentRefreshTokenReplayResult | undefined>;
|
|
112
173
|
/** Rotates a refresh token atomically; a concurrent rotation cannot win twice. */
|
|
113
174
|
export declare function rotateAgentRefreshToken(params: {
|
|
114
175
|
hashedToken: string;
|
|
115
176
|
replacementHashedToken: string;
|
|
116
|
-
|
|
177
|
+
/** Defaults to the configured 14-day sliding lifetime. */
|
|
178
|
+
replacementExpiresAt?: Date;
|
|
117
179
|
}): Promise<AgentRefreshToken | undefined>;
|
|
118
180
|
export declare function rotateAgentRefreshTokenTx(tx: AgentAccessTx, params: {
|
|
119
181
|
hashedToken: string;
|
|
120
182
|
replacementHashedToken: string;
|
|
121
|
-
replacementExpiresAt
|
|
183
|
+
replacementExpiresAt?: Date;
|
|
122
184
|
}): Promise<AgentRefreshToken | undefined>;
|
|
123
185
|
export declare function revokeAgentRefreshToken(params: {
|
|
124
186
|
id: string;
|
|
125
187
|
}): Promise<AgentRefreshToken | undefined>;
|
|
188
|
+
/** Revokes a grant and every refresh-token generation in its family. */
|
|
189
|
+
export declare function revokeAgentGrant(params: {
|
|
190
|
+
grantId: string;
|
|
191
|
+
}): Promise<AgentGrant | undefined>;
|
|
192
|
+
export declare function revokeAgentGrantTx(tx: AgentAccessTx, params: {
|
|
193
|
+
grantId: string;
|
|
194
|
+
}): Promise<AgentGrant | undefined>;
|
|
195
|
+
export interface TransitionAgentGrantsToTerminalParams {
|
|
196
|
+
limit?: number;
|
|
197
|
+
now?: Date;
|
|
198
|
+
deadlineMs?: number | undefined;
|
|
199
|
+
}
|
|
200
|
+
/**
|
|
201
|
+
* Marks grants terminal once they have no usable refresh token or authorization
|
|
202
|
+
* code left. Each candidate is locked before its children are inspected so a
|
|
203
|
+
* concurrent code exchange or token rotation cannot create a live child after
|
|
204
|
+
* the decision.
|
|
205
|
+
*/
|
|
206
|
+
export declare function transitionAgentGrantsToTerminal(params?: TransitionAgentGrantsToTerminalParams): Promise<number>;
|
|
207
|
+
export declare function transitionAgentGrantsToTerminalTx(tx: AgentAccessTx, params?: TransitionAgentGrantsToTerminalParams): Promise<number>;
|
|
126
208
|
export interface CreateAgentPersonalAccessTokenParams {
|
|
127
209
|
userId: string;
|
|
128
210
|
workspaceId: string;
|
|
@@ -144,16 +226,30 @@ export declare function findActiveAgentPersonalAccessTokenByHash(params: {
|
|
|
144
226
|
}): Promise<AgentPersonalAccessToken | undefined>;
|
|
145
227
|
export declare function markAgentPersonalAccessTokenUsed(params: {
|
|
146
228
|
id: string;
|
|
229
|
+
throttleSeconds?: number;
|
|
147
230
|
}): Promise<AgentPersonalAccessToken | undefined>;
|
|
148
231
|
export declare function revokeAgentPersonalAccessToken(params: {
|
|
149
232
|
id: string;
|
|
150
233
|
}): Promise<AgentPersonalAccessToken | undefined>;
|
|
151
234
|
export interface PruneAgentAccessParams {
|
|
235
|
+
/** Overrides every retention horizon for deterministic maintenance tests. */
|
|
152
236
|
retentionDays?: number;
|
|
153
237
|
limit?: number;
|
|
154
238
|
now?: Date;
|
|
239
|
+
/** Absolute epoch deadline used to bound every PostgreSQL statement. */
|
|
240
|
+
deadlineMs?: number;
|
|
241
|
+
}
|
|
242
|
+
export interface PruneAgentAccessResult {
|
|
243
|
+
deleted: number;
|
|
244
|
+
transitioned: number;
|
|
155
245
|
}
|
|
156
|
-
/**
|
|
246
|
+
/**
|
|
247
|
+
* Transitions inactive grants and deletes retained agent-access rows in bounded
|
|
248
|
+
* batches. The caller can override the common horizon in tests; production uses
|
|
249
|
+
* the per-row windows from the agent-access retention policy.
|
|
250
|
+
*/
|
|
157
251
|
export declare function pruneAgentAccess(params?: PruneAgentAccessParams): Promise<number>;
|
|
252
|
+
/** Runs one bounded retention transaction and reports terminal transitions separately. */
|
|
253
|
+
export declare function pruneAgentAccessBatch(params?: PruneAgentAccessParams): Promise<PruneAgentAccessResult>;
|
|
158
254
|
export {};
|
|
159
255
|
//# sourceMappingURL=agent-access.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agent-access.d.ts","sourceRoot":"","sources":["../../src/db/agent-access.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"agent-access.d.ts","sourceRoot":"","sources":["../../src/db/agent-access.ts"],"names":[],"mappings":"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"}
|