@apifuse/provider-sdk 2.2.0-beta.10 → 2.2.0-beta.11
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +4 -0
- package/dist/server/index.d.ts +1 -1
- package/dist/server/index.js +1 -1
- package/dist/server/serve.d.ts +98 -2
- package/dist/server/serve.js +485 -23
- package/dist/stateful/errors.d.ts +14 -0
- package/dist/stateful/errors.js +14 -0
- package/dist/stateful/http-provider-event-emitter.d.ts +40 -0
- package/dist/stateful/http-provider-event-emitter.js +237 -0
- package/dist/stateful/http-session-owner-registry.d.ts +44 -0
- package/dist/stateful/http-session-owner-registry.js +210 -0
- package/dist/stateful/index.d.ts +18 -0
- package/dist/stateful/index.js +18 -0
- package/dist/stateful/provider-event-delivery-failures.d.ts +32 -0
- package/dist/stateful/provider-event-delivery-failures.js +43 -0
- package/dist/stateful/provider-event-pipeline-metrics.d.ts +46 -0
- package/dist/stateful/provider-event-pipeline-metrics.js +48 -0
- package/dist/stateful/provider-event-pipeline.d.ts +50 -0
- package/dist/stateful/provider-event-pipeline.js +1 -0
- package/dist/stateful/provider-events.d.ts +101 -0
- package/dist/stateful/provider-events.js +289 -0
- package/dist/stateful/session-key.d.ts +15 -0
- package/dist/stateful/session-key.js +86 -0
- package/dist/stateful/stateful-provider-adapter-context.d.ts +5 -0
- package/dist/stateful/stateful-provider-adapter-context.js +42 -0
- package/dist/stateful/stateful-provider-adapter-metrics.d.ts +15 -0
- package/dist/stateful/stateful-provider-adapter-metrics.js +21 -0
- package/dist/stateful/stateful-provider-adapter.d.ts +98 -0
- package/dist/stateful/stateful-provider-adapter.js +287 -0
- package/dist/stateful/stateful-provider-observability.d.ts +62 -0
- package/dist/stateful/stateful-provider-observability.js +161 -0
- package/dist/stateful/stateful-provider-owner-forwarder.d.ts +41 -0
- package/dist/stateful/stateful-provider-owner-forwarder.js +207 -0
- package/dist/stateful/stateful-provider-runtime-context.d.ts +32 -0
- package/dist/stateful/stateful-provider-runtime-context.js +60 -0
- package/dist/stateful/stateful-provider-runtime-executor.d.ts +34 -0
- package/dist/stateful/stateful-provider-runtime-executor.js +52 -0
- package/dist/stateful/stateful-provider-session-routing.d.ts +71 -0
- package/dist/stateful/stateful-provider-session-routing.js +353 -0
- package/dist/stateful/stateful-provider-session-runtime.d.ts +98 -0
- package/dist/stateful/stateful-provider-session-runtime.js +245 -0
- package/dist/stateful-signing.d.ts +18 -0
- package/dist/stateful-signing.js +27 -0
- package/package.json +6 -1
- package/src/server/index.ts +13 -1
- package/src/server/serve.ts +691 -25
- package/src/stateful/README.md +146 -0
- package/src/stateful/errors.ts +23 -0
- package/src/stateful/http-provider-event-emitter.ts +314 -0
- package/src/stateful/http-session-owner-registry.ts +306 -0
- package/src/stateful/index.ts +18 -0
- package/src/stateful/provider-event-delivery-failures.ts +80 -0
- package/src/stateful/provider-event-pipeline-metrics.ts +95 -0
- package/src/stateful/provider-event-pipeline.ts +61 -0
- package/src/stateful/provider-events.ts +462 -0
- package/src/stateful/session-key.ts +111 -0
- package/src/stateful/stateful-provider-adapter-context.ts +59 -0
- package/src/stateful/stateful-provider-adapter-metrics.ts +48 -0
- package/src/stateful/stateful-provider-adapter.ts +562 -0
- package/src/stateful/stateful-provider-observability.ts +261 -0
- package/src/stateful/stateful-provider-owner-forwarder.ts +279 -0
- package/src/stateful/stateful-provider-runtime-context.ts +92 -0
- package/src/stateful/stateful-provider-runtime-executor.ts +96 -0
- package/src/stateful/stateful-provider-session-routing.ts +555 -0
- package/src/stateful/stateful-provider-session-runtime.ts +403 -0
- package/src/stateful-signing.ts +46 -0
package/CHANGELOG.md
CHANGED
package/dist/server/index.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export { createServerApp, type ServeOptions, serve } from "./serve.js";
|
|
1
|
+
export { createServerApp, type ProviderServerCloseOptions, type ProviderServerHandle, type ProviderServerLogEvent, type ProviderServerLogger, type ProviderServerOperationExecutor, type ProviderServerOperationExecutorInput, type ProviderServerOptions, type ProviderServerStatefulForwardEnvelope, type ServeOptions, serve, } from "./serve.js";
|
|
2
2
|
export { computeSelfTestPlanDigest, createSelfTestApp, createSelfTestAuthFlowInvoke, createSelfTestInvoke, DEFAULT_SELF_TEST_REQUEST_BUDGET_MS, isSelfTestReadOnlyOperation, PROVIDER_RUNTIME_SELF_TEST_REQUEST_BUDGET_MS_ENV, resolveSelfTestPort, SELF_TEST_AUTH_FLOW_MULTI_TURN_SKIP_REASON, SELF_TEST_AUTH_FLOW_REJECTED_SKIP_REASON, SELF_TEST_HEALTHZ_PATH, SELF_TEST_PATH, SELF_TEST_SCHEMA_VERSION, type SelfTestAppOptions, type SelfTestAuthFlowInvoke, type SelfTestAuthFlowRoute, type SelfTestCaseResult, type SelfTestCaseStatus, type SelfTestOperationInvoke, type SelfTestRequest, SelfTestRequestSchema, type SelfTestResponse, } from "./self-test.js";
|
|
3
3
|
export { resolveHealthCheckInputDateTokens } from "./self-test-input-tokens.js";
|
|
4
4
|
export { collectSelfTestSensitiveValues, redactSelfTestText, SELF_TEST_MAX_TEXT_LENGTH, SELF_TEST_REDACTED_PLACEHOLDER, } from "./self-test-redaction.js";
|
package/dist/server/index.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export { createServerApp, serve } from "./serve.js";
|
|
1
|
+
export { createServerApp, serve, } from "./serve.js";
|
|
2
2
|
export { computeSelfTestPlanDigest, createSelfTestApp, createSelfTestAuthFlowInvoke, createSelfTestInvoke, DEFAULT_SELF_TEST_REQUEST_BUDGET_MS, isSelfTestReadOnlyOperation, PROVIDER_RUNTIME_SELF_TEST_REQUEST_BUDGET_MS_ENV, resolveSelfTestPort, SELF_TEST_AUTH_FLOW_MULTI_TURN_SKIP_REASON, SELF_TEST_AUTH_FLOW_REJECTED_SKIP_REASON, SELF_TEST_HEALTHZ_PATH, SELF_TEST_PATH, SELF_TEST_SCHEMA_VERSION, SelfTestRequestSchema, } from "./self-test.js";
|
|
3
3
|
export { resolveHealthCheckInputDateTokens } from "./self-test-input-tokens.js";
|
|
4
4
|
export { collectSelfTestSensitiveValues, redactSelfTestText, SELF_TEST_MAX_TEXT_LENGTH, SELF_TEST_REDACTED_PLACEHOLDER, } from "./self-test-redaction.js";
|
package/dist/server/serve.d.ts
CHANGED
|
@@ -1,7 +1,56 @@
|
|
|
1
1
|
import { Hono } from "hono";
|
|
2
|
+
import { z } from "zod";
|
|
2
3
|
import { type ProviderErrorCategory } from "../observability.js";
|
|
3
|
-
import type { ProviderDefinition, ProviderRuntimeState, SttContext } from "../types.js";
|
|
4
|
+
import type { ProviderContext, ProviderDefinition, ProviderRuntimeState, SttContext } from "../types.js";
|
|
4
5
|
import { type OperationRequest } from "./types.js";
|
|
6
|
+
export declare const ProviderServerStatefulForwardEnvelopeSchema: z.ZodObject<{
|
|
7
|
+
requestId: z.ZodString;
|
|
8
|
+
providerId: z.ZodString;
|
|
9
|
+
operationId: z.ZodString;
|
|
10
|
+
sessionKey: z.ZodString;
|
|
11
|
+
connectionId: z.ZodString;
|
|
12
|
+
serviceAccountId: z.ZodString;
|
|
13
|
+
ownerPodId: z.ZodString;
|
|
14
|
+
generation: z.ZodNumber;
|
|
15
|
+
sourcePodId: z.ZodString;
|
|
16
|
+
forwardedAt: z.ZodString;
|
|
17
|
+
deadlineAt: z.ZodOptional<z.ZodString>;
|
|
18
|
+
idempotencyKey: z.ZodOptional<z.ZodString>;
|
|
19
|
+
operationRequest: z.ZodObject<{
|
|
20
|
+
requestId: z.ZodString;
|
|
21
|
+
input: z.ZodRecord<z.ZodString, z.ZodUnknown>;
|
|
22
|
+
connectionId: z.ZodOptional<z.ZodString>;
|
|
23
|
+
headers: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
|
|
24
|
+
trace: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
|
|
25
|
+
connection: z.ZodOptional<z.ZodObject<{
|
|
26
|
+
id: z.ZodString;
|
|
27
|
+
mode: z.ZodEnum<{
|
|
28
|
+
none: "none";
|
|
29
|
+
credentials: "credentials";
|
|
30
|
+
oauth2: "oauth2";
|
|
31
|
+
"platform-managed": "platform-managed";
|
|
32
|
+
}>;
|
|
33
|
+
secrets: z.ZodRecord<z.ZodString, z.ZodString>;
|
|
34
|
+
scopes: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
35
|
+
metadata: z.ZodRecord<z.ZodString, z.ZodUnknown>;
|
|
36
|
+
externalRef: z.ZodString;
|
|
37
|
+
}, z.core.$strict>>;
|
|
38
|
+
}, z.core.$strict>;
|
|
39
|
+
}, z.core.$strict>;
|
|
40
|
+
export type ProviderServerStatefulForwardEnvelope = Readonly<z.infer<typeof ProviderServerStatefulForwardEnvelopeSchema>>;
|
|
41
|
+
export type ProviderServerStatefulOwnerFence = Readonly<Pick<ProviderServerStatefulForwardEnvelope, "providerId" | "sessionKey" | "ownerPodId" | "generation" | "sourcePodId" | "forwardedAt" | "requestId" | "idempotencyKey">>;
|
|
42
|
+
export type ProviderServerStatefulOwnerFenceValidator = (fence: ProviderServerStatefulOwnerFence, signal: AbortSignal) => boolean | Promise<boolean>;
|
|
43
|
+
export type ProviderServerOperationExecutorInput = {
|
|
44
|
+
readonly provider: ProviderDefinition;
|
|
45
|
+
readonly operationId: string;
|
|
46
|
+
readonly ctx: ProviderContext;
|
|
47
|
+
readonly request: OperationRequest & {
|
|
48
|
+
readonly deadlineAt?: string;
|
|
49
|
+
};
|
|
50
|
+
readonly signal?: AbortSignal;
|
|
51
|
+
readonly internalStatefulForward?: ProviderServerStatefulForwardEnvelope;
|
|
52
|
+
};
|
|
53
|
+
export type ProviderServerOperationExecutor = (input: ProviderServerOperationExecutorInput) => Promise<unknown>;
|
|
5
54
|
export declare function resolveProviderProxyAffinityKey(provider: ProviderDefinition, request: OperationRequest, operationId: string): string;
|
|
6
55
|
type ProviderRequestCost = {
|
|
7
56
|
durationMs: number;
|
|
@@ -49,18 +98,65 @@ export type ProviderServerLogEvent = (ProviderServerLogEventBase & {
|
|
|
49
98
|
resource: "browser" | "stealth";
|
|
50
99
|
errorClass: string;
|
|
51
100
|
message: string;
|
|
101
|
+
} | {
|
|
102
|
+
level: "error";
|
|
103
|
+
event: "provider_shutdown_hook_failed";
|
|
104
|
+
providerId: string;
|
|
105
|
+
hookIndex: number;
|
|
106
|
+
errorClass: string;
|
|
107
|
+
message: string;
|
|
52
108
|
};
|
|
53
109
|
export type ProviderServerLogger = (event: ProviderServerLogEvent) => void;
|
|
54
110
|
export type ProviderServerOptions = {
|
|
55
111
|
logger?: ProviderServerLogger;
|
|
112
|
+
/** Optional provider-specific operation executor. Stateful providers use this to preserve provider-local runtime semantics. */
|
|
113
|
+
operationExecutor?: ProviderServerOperationExecutor;
|
|
114
|
+
/** Optional signed internal executor for stateful owner forwarding. */
|
|
115
|
+
internalOperationExecutor?: ProviderServerOperationExecutor;
|
|
116
|
+
statefulForwarding?: {
|
|
117
|
+
readonly secret: string;
|
|
118
|
+
readonly maxSkewMs?: number;
|
|
119
|
+
readonly replayCacheMaxEntries?: number;
|
|
120
|
+
/** Required fail-closed check against the SDK/runtime owner registry. */
|
|
121
|
+
readonly validateOwnerFence: ProviderServerStatefulOwnerFenceValidator;
|
|
122
|
+
};
|
|
56
123
|
/** Optional STT override for tests or custom hosts; local/prod normally resolves from env. */
|
|
57
124
|
stt?: SttContext;
|
|
58
125
|
/** Optional runtime state override for tests or custom hosts. Production resolves Redis from env and fails closed when unavailable. */
|
|
59
126
|
state?: ProviderRuntimeState;
|
|
60
127
|
/** Allow process-local runtime state only for local development and tests. */
|
|
61
128
|
allowMemoryStateFallback?: boolean;
|
|
129
|
+
/**
|
|
130
|
+
* Graceful process shutdown. Hooks run in declaration order after listeners stop accepting work.
|
|
131
|
+
*
|
|
132
|
+
* @example
|
|
133
|
+
* ```ts
|
|
134
|
+
* await serve(provider, {
|
|
135
|
+
* shutdown: {
|
|
136
|
+
* hooks: [
|
|
137
|
+
* async () => { await emitter.flush(); },
|
|
138
|
+
* async () => { await sessionManager.closeAll("server-shutdown"); },
|
|
139
|
+
* async () => { await lease.release(); },
|
|
140
|
+
* async () => { await router.close(); },
|
|
141
|
+
* ],
|
|
142
|
+
* },
|
|
143
|
+
* });
|
|
144
|
+
* ```
|
|
145
|
+
*/
|
|
146
|
+
shutdown?: {
|
|
147
|
+
readonly hooks?: Array<() => Promise<void>>;
|
|
148
|
+
readonly signals?: boolean | NodeJS.Signals[];
|
|
149
|
+
readonly timeoutMs?: number;
|
|
150
|
+
};
|
|
62
151
|
};
|
|
63
152
|
export declare function createServerApp(provider: ProviderDefinition, options?: ProviderServerOptions): Hono;
|
|
153
|
+
export type ProviderServerCloseOptions = {
|
|
154
|
+
readonly timeoutMs?: number;
|
|
155
|
+
};
|
|
156
|
+
export type ProviderServerHandle = {
|
|
157
|
+
readonly port: number;
|
|
158
|
+
close(options?: ProviderServerCloseOptions): Promise<void>;
|
|
159
|
+
};
|
|
64
160
|
export interface ServeOptions extends ProviderServerOptions {
|
|
65
161
|
host?: string;
|
|
66
162
|
port?: number;
|
|
@@ -71,5 +167,5 @@ export interface ServeOptions extends ProviderServerOptions {
|
|
|
71
167
|
*/
|
|
72
168
|
selfTestPort?: number;
|
|
73
169
|
}
|
|
74
|
-
export declare function serve(provider: ProviderDefinition, options?: ServeOptions): Promise<
|
|
170
|
+
export declare function serve(provider: ProviderDefinition, options?: ServeOptions): Promise<ProviderServerHandle>;
|
|
75
171
|
export {};
|