stitchkit 0.67.0 → 0.68.1
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/agent-runtime/admission-lanes.d.ts +1 -1
- package/dist/agent-runtime/compaction.d.ts +2 -2
- package/dist/agent-runtime/events.d.ts +1 -1
- package/dist/agent-runtime/history.d.ts +1 -1
- package/dist/agent-runtime/history.d.ts.map +1 -1
- package/dist/agent-runtime/injection.d.ts +1 -1
- package/dist/agent-runtime/managed-tools.d.ts +3 -3
- package/dist/agent-runtime/models.d.ts +1 -1
- package/dist/agent-runtime/observability.d.ts +1 -1
- package/dist/agent-runtime/prompt.d.ts +1 -1
- package/dist/agent-runtime/prompt.d.ts.map +1 -1
- package/dist/agent-runtime/protocol.d.ts +19 -1
- package/dist/agent-runtime/protocol.d.ts.map +1 -1
- package/dist/agent-runtime/run-execution.d.ts +5 -5
- package/dist/agent-runtime/run-execution.d.ts.map +1 -1
- package/dist/agent-runtime/runtime-internals.d.ts +1 -1
- package/dist/agent-runtime/runtime-result.d.ts +1 -1
- package/dist/agent-runtime/runtime.d.ts +14 -12
- package/dist/agent-runtime/runtime.d.ts.map +1 -1
- package/dist/agent-runtime/store-driver.d.ts +2 -2
- package/dist/agent-runtime/store.d.ts +2 -2
- package/dist/agent-runtime/terminal-commit.d.ts +2 -2
- package/dist/agent-runtime/terminal-status.d.ts +1 -1
- package/dist/agent-runtime-openrouter.d.ts +1 -1
- package/dist/agent-runtime.d.ts +15 -15
- package/dist/agent-runtime.d.ts.map +1 -1
- package/dist/agent-runtime.js +90 -30
- package/dist/application/admission.d.ts +131 -0
- package/dist/application/admission.d.ts.map +1 -0
- package/dist/application/channel.d.ts +106 -0
- package/dist/application/channel.d.ts.map +1 -0
- package/dist/application/events.d.ts +2 -2
- package/dist/application/grammy.d.ts +2 -2
- package/dist/application/graph.d.ts +1 -1
- package/dist/application/health.d.ts +1 -1
- package/dist/application/kernel.d.ts +3 -3
- package/dist/application/latest-sink.d.ts.map +1 -1
- package/dist/application/opentelemetry.d.ts +3 -3
- package/dist/application/resource.d.ts +1 -1
- package/dist/application/schedule.d.ts +1 -1
- package/dist/application/server-resource.d.ts +7 -9
- package/dist/application/server-resource.d.ts.map +1 -1
- package/dist/application-grammy.d.ts +1 -1
- package/dist/application-grammy.js +1 -1
- package/dist/application-opentelemetry.d.ts +1 -1
- package/dist/application-opentelemetry.js +1 -1
- package/dist/application.d.ts +11 -9
- package/dist/application.d.ts.map +1 -1
- package/dist/application.js +393 -24
- package/dist/browser/client-multipart.d.ts +1 -1
- package/dist/browser/client-url.d.ts +2 -2
- package/dist/browser/client.d.ts +4 -5
- package/dist/browser/client.d.ts.map +1 -1
- package/dist/browser/contract-stream.d.ts +5 -0
- package/dist/browser/contract-stream.d.ts.map +1 -0
- package/dist/browser/http.d.ts +9 -6
- package/dist/browser/http.d.ts.map +1 -1
- package/dist/browser/socket-io.d.ts +12 -31
- package/dist/browser/socket-io.d.ts.map +1 -1
- package/dist/browser/stream.d.ts +5 -2
- package/dist/browser/stream.d.ts.map +1 -1
- package/dist/browser/transport.d.ts +3 -0
- package/dist/browser/transport.d.ts.map +1 -0
- package/dist/cli.d.ts +6 -6
- package/dist/cli.js +7 -7
- package/dist/contract/define.d.ts +34 -2
- package/dist/contract/define.d.ts.map +1 -1
- package/dist/contract/errors-factory.d.ts +1 -1
- package/dist/contract/errors.d.ts +4 -0
- package/dist/contract/errors.d.ts.map +1 -1
- package/dist/contract/factory.d.ts +1 -1
- package/dist/contract/index.d.ts +7 -6
- package/dist/contract/index.d.ts.map +1 -1
- package/dist/contract/index.js +5 -1
- package/dist/contract/stream.d.ts +19 -0
- package/dist/contract/stream.d.ts.map +1 -0
- package/dist/files/boundary.d.ts +1 -1
- package/dist/files.d.ts +2 -2
- package/dist/{index-xxye8j3k.js → index-0w9abg87.js} +4 -0
- package/dist/{index-svqhcrrj.js → index-2ve29dzn.js} +159 -13
- package/dist/index-69m2278y.js +115 -0
- package/dist/{index-physbf4z.js → index-6wzr93cg.js} +1 -1
- package/dist/index-7etq650s.js +75 -0
- package/dist/index-9ky9hhg3.js +484 -0
- package/dist/{index-413xk7ga.js → index-cq9q73nf.js} +50 -1
- package/dist/{index-1pgeyyee.js → index-cszjsxy5.js} +25 -88
- package/dist/{index-wrhf06ak.js → index-cz32amcb.js} +8 -8
- package/dist/{index-6taryy00.js → index-dafax5md.js} +1 -1
- package/dist/index-g2j2m6vv.js +63 -0
- package/dist/{index-8mxadm34.js → index-nck3yx3y.js} +1102 -22
- package/dist/{index-y91zd0ch.js → index-pr0qsmjy.js} +3 -2
- package/dist/index-v5bayx1z.js +138 -0
- package/dist/{index-mfw1pec7.js → index-wqyrvhzz.js} +3 -3
- package/dist/{index-x8v8b7rc.js → index-zpyj7hsv.js} +330 -58
- package/dist/index.d.ts +10 -10
- package/dist/index.js +274 -109
- package/dist/internal/bounded-lines.d.ts +4 -0
- package/dist/internal/bounded-lines.d.ts.map +1 -0
- package/dist/internal/errors.d.ts +1 -1
- package/dist/internal/observability-sink.d.ts +1 -1
- package/dist/node.d.ts +11 -10
- package/dist/node.d.ts.map +1 -1
- package/dist/node.js +11 -8
- package/dist/observability/audit.d.ts +5 -5
- package/dist/observability/context.d.ts +2 -2
- package/dist/observability/event.d.ts +2 -2
- package/dist/observability/index.d.ts +6 -6
- package/dist/observability/index.js +6 -7
- package/dist/react/entity-cache.d.ts +26 -1
- package/dist/react/entity-cache.d.ts.map +1 -1
- package/dist/react.d.ts +3 -3
- package/dist/react.d.ts.map +1 -1
- package/dist/react.js +136 -38
- package/dist/realtime/contract.d.ts +1 -1
- package/dist/realtime/index.d.ts +4 -4
- package/dist/realtime/rejection.d.ts +1 -1
- package/dist/realtime/request.d.ts +1 -1
- package/dist/realtime/socket.d.ts +2 -2
- package/dist/remote.d.ts +1 -1
- package/dist/remote.js +5 -6
- package/dist/server/bun.d.ts +3 -3
- package/dist/server/context-contribution.d.ts +1 -1
- package/dist/server/context.d.ts +4 -4
- package/dist/server/contract-stream.d.ts +5 -0
- package/dist/server/contract-stream.d.ts.map +1 -0
- package/dist/server/create.d.ts +1 -1
- package/dist/server/create.d.ts.map +1 -1
- package/dist/server/error-hook.d.ts +3 -3
- package/dist/server/file.d.ts +1 -1
- package/dist/server/implement.d.ts +2 -2
- package/dist/server/implement.d.ts.map +1 -1
- package/dist/server/index.d.ts +31 -30
- package/dist/server/index.d.ts.map +1 -1
- package/dist/server/index.js +44 -286
- package/dist/server/lifecycle.d.ts +1 -1
- package/dist/server/logging.d.ts +1 -1
- package/dist/server/middleware/auth.d.ts +2 -2
- package/dist/server/multipart.d.ts +2 -2
- package/dist/server/node.d.ts +2 -2
- package/dist/server/openapi.d.ts +1 -1
- package/dist/server/openapi.d.ts.map +1 -1
- package/dist/server/process-signal-common.d.ts +1 -1
- package/dist/server/process-signals.d.ts +1 -1
- package/dist/server/realtime.d.ts +4 -4
- package/dist/server/response-metadata.d.ts +1 -1
- package/dist/server/router.d.ts +1 -1
- package/dist/server/shutdown.d.ts +1 -1
- package/dist/server/socket-io-node.d.ts +3 -3
- package/dist/server/socket-io.d.ts +6 -6
- package/dist/server/stream.d.ts +3 -1
- package/dist/server/stream.d.ts.map +1 -1
- package/dist/server/streaming-route.d.ts +4 -2
- package/dist/server/streaming-route.d.ts.map +1 -1
- package/dist/server/types.d.ts +18 -8
- package/dist/server/types.d.ts.map +1 -1
- package/dist/server/unix-client-body.d.ts +4 -0
- package/dist/server/unix-client-body.d.ts.map +1 -0
- package/dist/server/unix-client-bun.d.ts +13 -0
- package/dist/server/unix-client-bun.d.ts.map +1 -0
- package/dist/server/unix-client-error.d.ts +9 -0
- package/dist/server/unix-client-error.d.ts.map +1 -0
- package/dist/server/unix-client.d.ts +25 -0
- package/dist/server/unix-client.d.ts.map +1 -0
- package/dist/testing/agent-store-conformance.d.ts +1 -1
- package/dist/testing/managed-resource-conformance-contract.d.ts +1 -1
- package/dist/testing/managed-resource-conformance-driver.d.ts +2 -2
- package/dist/testing/managed-resource-conformance-scenarios.d.ts +2 -2
- package/dist/testing/managed-resource-conformance.d.ts +2 -2
- package/dist/testing/surface-conformance.d.ts +3 -3
- package/dist/testing/surface-manifest.d.ts +5 -5
- package/dist/testing.d.ts +8 -8
- package/dist/testing.js +6 -5
- package/dist/tool-invoker.d.ts +9 -0
- package/dist/tool-invoker.d.ts.map +1 -0
- package/dist/tool-invoker.js +16 -0
- package/dist/tools/agent.d.ts +4 -4
- package/dist/tools/async-operation.d.ts +3 -3
- package/dist/tools/cli-command.d.ts +3 -3
- package/dist/tools/cli-format.d.ts +1 -1
- package/dist/tools/cli-policy.d.ts +1 -1
- package/dist/tools/cli-wait.d.ts +1 -1
- package/dist/tools/cli.d.ts +7 -7
- package/dist/tools/define-download-tool.d.ts +4 -4
- package/dist/tools/define-upload-tool.d.ts +3 -3
- package/dist/tools/define-view-file-tool.d.ts +3 -3
- package/dist/tools/define-wait-tool.d.ts +2 -2
- package/dist/tools/download-core.d.ts +2 -2
- package/dist/tools/execute.d.ts +2 -2
- package/dist/tools/flatten-join.d.ts +1 -1
- package/dist/tools/internal/surface-projector.d.ts +3 -3
- package/dist/tools/invoker.d.ts +4 -4
- package/dist/tools/lifecycle.d.ts +1 -1
- package/dist/tools/list-names.d.ts +2 -2
- package/dist/tools/managed-file-error.d.ts +1 -1
- package/dist/tools/manifest.d.ts +3 -3
- package/dist/tools/mcp-handler.d.ts +4 -4
- package/dist/tools/mcp-prepare.d.ts +8 -8
- package/dist/tools/mcp-round-policy.d.ts +1 -1
- package/dist/tools/mcp-round.d.ts +3 -3
- package/dist/tools/mcp-stdio-signals.d.ts +2 -2
- package/dist/tools/mcp-stdio.d.ts +3 -3
- package/dist/tools/mcp.d.ts +7 -7
- package/dist/tools/mount-download.d.ts +1 -1
- package/dist/tools/mount-upload.d.ts +1 -1
- package/dist/tools/mount.d.ts +5 -5
- package/dist/tools/native-definition.d.ts +2 -2
- package/dist/tools/native-mcp.d.ts +3 -3
- package/dist/tools/oauth-metadata.d.ts +1 -1
- package/dist/tools/oauth-provider.d.ts +1 -1
- package/dist/tools/presentation.d.ts +1 -1
- package/dist/tools/remote.d.ts +3 -3
- package/dist/tools/runtime-tool.d.ts +2 -2
- package/dist/tools/surface.d.ts +5 -5
- package/dist/tools/tool-logger.d.ts +1 -1
- package/dist/tools/toolkit.d.ts +7 -7
- package/dist/tools/transports.d.ts +2 -2
- package/dist/tools/upload-core.d.ts +1 -1
- package/dist/tools/view-file.d.ts +1 -1
- package/dist/tools.d.ts +42 -42
- package/dist/tools.js +27 -72
- package/llms-full.txt +506 -35
- package/package.json +8 -4
- package/dist/index-48ffdxgk.js +0 -6
- package/dist/index-pzyt11ch.js +0 -127
- package/dist/index-tvwcrx2d.js +0 -224
- package/dist/index-wd8g8z6e.js +0 -206
package/dist/application.js
CHANGED
|
@@ -1,3 +1,6 @@
|
|
|
1
|
+
import {
|
|
2
|
+
createBoundedSinkManager
|
|
3
|
+
} from "./index-a59da114.js";
|
|
1
4
|
import {
|
|
2
5
|
ActivityIdSchema,
|
|
3
6
|
ActivityLiveStateSchema,
|
|
@@ -6,20 +9,27 @@ import {
|
|
|
6
9
|
ActivityStageSnapshotSchema,
|
|
7
10
|
ActivityTokenBrand,
|
|
8
11
|
ApplicationSnapshotSinkStatusSchema,
|
|
12
|
+
BoundedChannelPolicySchema,
|
|
13
|
+
BoundedChannelReaderError,
|
|
14
|
+
BoundedChannelSnapshotSchema,
|
|
15
|
+
BoundedChannelStateSchema,
|
|
16
|
+
CreditWindowSnapshotSchema,
|
|
9
17
|
ManagedScheduleDescriptorSchema,
|
|
10
18
|
ManagedScheduleErrorPolicySchema,
|
|
11
19
|
ManagedScheduleOverlapSchema,
|
|
12
20
|
ManagedScheduleStatusSchema,
|
|
13
21
|
createActivityProjection,
|
|
14
22
|
createApplicationSnapshotSink,
|
|
23
|
+
createBoundedChannel,
|
|
24
|
+
createCreditWindow,
|
|
15
25
|
createManagedSchedule
|
|
16
|
-
} from "./index-
|
|
26
|
+
} from "./index-zpyj7hsv.js";
|
|
17
27
|
import {
|
|
18
28
|
ApplicationAdmissionError,
|
|
19
29
|
ApplicationShutdownBudgetSchema,
|
|
20
30
|
ApplicationShutdownOptionsSchema,
|
|
21
31
|
createApplication
|
|
22
|
-
} from "./index-
|
|
32
|
+
} from "./index-6wzr93cg.js";
|
|
23
33
|
import {
|
|
24
34
|
defineManagedResource,
|
|
25
35
|
managedResourceDependencyId
|
|
@@ -38,22 +48,366 @@ import {
|
|
|
38
48
|
projectApplicationStatus
|
|
39
49
|
} from "./index-8eywc9zv.js";
|
|
40
50
|
import"./index-dk6e56g0.js";
|
|
41
|
-
import
|
|
42
|
-
|
|
43
|
-
} from "./index-a59da114.js";
|
|
44
|
-
import"./index-xxye8j3k.js";
|
|
45
|
-
// src/application/events.ts
|
|
51
|
+
import"./index-0w9abg87.js";
|
|
52
|
+
// src/application/admission.ts
|
|
46
53
|
import { z } from "zod";
|
|
47
|
-
var
|
|
48
|
-
|
|
54
|
+
var PositiveSafeIntegerSchema = z.number().int().positive().safe();
|
|
55
|
+
var BoundedRateBudgetSchema = z.object({
|
|
56
|
+
limit: PositiveSafeIntegerSchema,
|
|
57
|
+
intervalMs: PositiveSafeIntegerSchema
|
|
58
|
+
}).strict().readonly();
|
|
59
|
+
var BoundedAdmissionPolicySchema = z.object({
|
|
60
|
+
global: z.object({
|
|
61
|
+
maxConcurrent: PositiveSafeIntegerSchema,
|
|
62
|
+
rate: BoundedRateBudgetSchema.optional()
|
|
63
|
+
}).strict(),
|
|
64
|
+
perKey: z.object({
|
|
65
|
+
maxConcurrent: PositiveSafeIntegerSchema,
|
|
66
|
+
maxKeys: PositiveSafeIntegerSchema,
|
|
67
|
+
rate: BoundedRateBudgetSchema.optional()
|
|
68
|
+
}).strict().optional()
|
|
69
|
+
}).strict().readonly();
|
|
70
|
+
var BoundedAdmissionStateSchema = z.enum(["accepting", "draining", "closed"]);
|
|
71
|
+
var BoundedAdmissionRefusalReasonSchema = z.enum([
|
|
72
|
+
"not-accepting",
|
|
73
|
+
"global-concurrency",
|
|
74
|
+
"key-required",
|
|
75
|
+
"key-capacity",
|
|
76
|
+
"key-concurrency",
|
|
77
|
+
"global-rate",
|
|
78
|
+
"key-rate",
|
|
79
|
+
"upstream"
|
|
80
|
+
]);
|
|
81
|
+
var RefusalCountersSchema = z.object({
|
|
82
|
+
"not-accepting": z.number().int().nonnegative(),
|
|
83
|
+
"global-concurrency": z.number().int().nonnegative(),
|
|
84
|
+
"key-required": z.number().int().nonnegative(),
|
|
85
|
+
"key-capacity": z.number().int().nonnegative(),
|
|
86
|
+
"key-concurrency": z.number().int().nonnegative(),
|
|
87
|
+
"global-rate": z.number().int().nonnegative(),
|
|
88
|
+
"key-rate": z.number().int().nonnegative(),
|
|
89
|
+
upstream: z.number().int().nonnegative()
|
|
90
|
+
}).strict().readonly();
|
|
91
|
+
var BoundedAdmissionSnapshotSchema = z.object({
|
|
92
|
+
state: BoundedAdmissionStateSchema,
|
|
93
|
+
active: z.number().int().nonnegative(),
|
|
94
|
+
accepted: z.number().int().nonnegative(),
|
|
95
|
+
released: z.number().int().nonnegative(),
|
|
96
|
+
refused: z.number().int().nonnegative(),
|
|
97
|
+
keys: z.number().int().nonnegative(),
|
|
98
|
+
globalRateSamples: z.number().int().nonnegative(),
|
|
99
|
+
keyRateSamples: z.number().int().nonnegative(),
|
|
100
|
+
refusals: RefusalCountersSchema
|
|
101
|
+
}).strict().readonly();
|
|
102
|
+
|
|
103
|
+
class BoundedAdmissionRefusalError extends Error {
|
|
104
|
+
reason;
|
|
105
|
+
retryAfterMs;
|
|
106
|
+
constructor(reason, retryAfterMs) {
|
|
107
|
+
super(`Bounded admission refused: ${reason}`);
|
|
108
|
+
this.reason = reason;
|
|
109
|
+
this.retryAfterMs = retryAfterMs;
|
|
110
|
+
this.name = "BoundedAdmissionRefusalError";
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
class BoundedOperationWaitError extends Error {
|
|
115
|
+
reason;
|
|
116
|
+
constructor(reason) {
|
|
117
|
+
super(reason === "cancelled" ? "Operation wait was cancelled" : "Operation wait timed out");
|
|
118
|
+
this.reason = reason;
|
|
119
|
+
this.name = "BoundedOperationWaitError";
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
function createBoundedAdmission(config) {
|
|
123
|
+
const policy = BoundedAdmissionPolicySchema.parse(config.policy);
|
|
124
|
+
const clock = config.clock ?? { now: () => performance.now() };
|
|
125
|
+
const keys = new Map;
|
|
126
|
+
const globalRate = [];
|
|
127
|
+
const drainWaiters = new Set;
|
|
128
|
+
const refusals = {
|
|
129
|
+
"not-accepting": 0,
|
|
130
|
+
"global-concurrency": 0,
|
|
131
|
+
"key-required": 0,
|
|
132
|
+
"key-capacity": 0,
|
|
133
|
+
"key-concurrency": 0,
|
|
134
|
+
"global-rate": 0,
|
|
135
|
+
"key-rate": 0,
|
|
136
|
+
upstream: 0
|
|
137
|
+
};
|
|
138
|
+
let state = "accepting";
|
|
139
|
+
let active = 0;
|
|
140
|
+
let accepted = 0;
|
|
141
|
+
let released = 0;
|
|
142
|
+
let refused = 0;
|
|
143
|
+
let lastNow = Number.NEGATIVE_INFINITY;
|
|
144
|
+
const now = () => {
|
|
145
|
+
const value = clock.now();
|
|
146
|
+
if (!Number.isFinite(value))
|
|
147
|
+
throw new TypeError("Bounded admission clock must be finite");
|
|
148
|
+
if (value < lastNow)
|
|
149
|
+
throw new Error("Bounded admission clock moved backwards");
|
|
150
|
+
lastNow = value;
|
|
151
|
+
return value;
|
|
152
|
+
};
|
|
153
|
+
const pruneRate = (samples, intervalMs, at) => {
|
|
154
|
+
let expired = 0;
|
|
155
|
+
while (expired < samples.length && at - (samples[expired]?.at ?? at) >= intervalMs) {
|
|
156
|
+
expired += 1;
|
|
157
|
+
}
|
|
158
|
+
if (expired > 0)
|
|
159
|
+
samples.splice(0, expired);
|
|
160
|
+
};
|
|
161
|
+
const prune = (at) => {
|
|
162
|
+
if (policy.global.rate)
|
|
163
|
+
pruneRate(globalRate, policy.global.rate.intervalMs, at);
|
|
164
|
+
for (const [key, record] of keys) {
|
|
165
|
+
if (policy.perKey?.rate) {
|
|
166
|
+
pruneRate(record.rate, policy.perKey.rate.intervalMs, at);
|
|
167
|
+
}
|
|
168
|
+
if (record.active === 0 && record.rate.length === 0)
|
|
169
|
+
keys.delete(key);
|
|
170
|
+
}
|
|
171
|
+
};
|
|
172
|
+
const retryAfter = (samples, budget, at) => Math.max(1, Math.ceil(budget.intervalMs - (at - (samples[0]?.at ?? at))));
|
|
173
|
+
const refuse = (reason, retryAfterMs) => {
|
|
174
|
+
refused += 1;
|
|
175
|
+
refusals[reason] += 1;
|
|
176
|
+
return {
|
|
177
|
+
outcome: "refused",
|
|
178
|
+
reason,
|
|
179
|
+
...retryAfterMs !== undefined && { retryAfterMs }
|
|
180
|
+
};
|
|
181
|
+
};
|
|
182
|
+
const closeIfDrained = () => {
|
|
183
|
+
if (state !== "draining" || active !== 0)
|
|
184
|
+
return;
|
|
185
|
+
state = "closed";
|
|
186
|
+
for (const resolve of drainWaiters)
|
|
187
|
+
resolve();
|
|
188
|
+
drainWaiters.clear();
|
|
189
|
+
};
|
|
190
|
+
const rollbackReservation = (key, keyRecord, globalSample, keySample) => {
|
|
191
|
+
active -= 1;
|
|
192
|
+
if (keyRecord)
|
|
193
|
+
keyRecord.active -= 1;
|
|
194
|
+
if (globalSample) {
|
|
195
|
+
const index = globalRate.indexOf(globalSample);
|
|
196
|
+
if (index >= 0)
|
|
197
|
+
globalRate.splice(index, 1);
|
|
198
|
+
}
|
|
199
|
+
if (keySample && keyRecord) {
|
|
200
|
+
const index = keyRecord.rate.indexOf(keySample);
|
|
201
|
+
if (index >= 0)
|
|
202
|
+
keyRecord.rate.splice(index, 1);
|
|
203
|
+
}
|
|
204
|
+
if (key !== undefined && keyRecord?.active === 0 && keyRecord.rate.length === 0) {
|
|
205
|
+
keys.delete(key);
|
|
206
|
+
}
|
|
207
|
+
};
|
|
208
|
+
const acquire = (key) => {
|
|
209
|
+
const at = now();
|
|
210
|
+
prune(at);
|
|
211
|
+
if (state !== "accepting")
|
|
212
|
+
return refuse("not-accepting");
|
|
213
|
+
if (active >= policy.global.maxConcurrent)
|
|
214
|
+
return refuse("global-concurrency");
|
|
215
|
+
if (policy.perKey && key === undefined)
|
|
216
|
+
return refuse("key-required");
|
|
217
|
+
let keyRecord = key === undefined ? undefined : keys.get(key);
|
|
218
|
+
if (policy.perKey && key !== undefined) {
|
|
219
|
+
if (!keyRecord && keys.size >= policy.perKey.maxKeys)
|
|
220
|
+
return refuse("key-capacity");
|
|
221
|
+
if (keyRecord && keyRecord.active >= policy.perKey.maxConcurrent) {
|
|
222
|
+
return refuse("key-concurrency");
|
|
223
|
+
}
|
|
224
|
+
}
|
|
225
|
+
if (policy.global.rate && globalRate.length >= policy.global.rate.limit) {
|
|
226
|
+
return refuse("global-rate", retryAfter(globalRate, policy.global.rate, at));
|
|
227
|
+
}
|
|
228
|
+
if (policy.perKey?.rate && keyRecord && keyRecord.rate.length >= policy.perKey.rate.limit) {
|
|
229
|
+
return refuse("key-rate", retryAfter(keyRecord.rate, policy.perKey.rate, at));
|
|
230
|
+
}
|
|
231
|
+
if (key !== undefined && !keyRecord) {
|
|
232
|
+
keyRecord = { active: 0, rate: [] };
|
|
233
|
+
keys.set(key, keyRecord);
|
|
234
|
+
}
|
|
235
|
+
const globalSample = policy.global.rate ? { at } : undefined;
|
|
236
|
+
const keySample = policy.perKey?.rate && keyRecord ? { at } : undefined;
|
|
237
|
+
active += 1;
|
|
238
|
+
if (keyRecord)
|
|
239
|
+
keyRecord.active += 1;
|
|
240
|
+
if (globalSample)
|
|
241
|
+
globalRate.push(globalSample);
|
|
242
|
+
if (keySample && keyRecord)
|
|
243
|
+
keyRecord.rate.push(keySample);
|
|
244
|
+
const upstreamLease = config.upstream?.acquire();
|
|
245
|
+
if (config.upstream && !upstreamLease) {
|
|
246
|
+
rollbackReservation(key, keyRecord, globalSample, keySample);
|
|
247
|
+
return refuse("upstream");
|
|
248
|
+
}
|
|
249
|
+
accepted += 1;
|
|
250
|
+
let leaseReleased = false;
|
|
251
|
+
const lease = {
|
|
252
|
+
...key !== undefined && { key },
|
|
253
|
+
get released() {
|
|
254
|
+
return leaseReleased;
|
|
255
|
+
},
|
|
256
|
+
release() {
|
|
257
|
+
if (leaseReleased)
|
|
258
|
+
return;
|
|
259
|
+
leaseReleased = true;
|
|
260
|
+
active -= 1;
|
|
261
|
+
if (keyRecord)
|
|
262
|
+
keyRecord.active -= 1;
|
|
263
|
+
released += 1;
|
|
264
|
+
if (key !== undefined && keyRecord?.active === 0 && keyRecord.rate.length === 0) {
|
|
265
|
+
keys.delete(key);
|
|
266
|
+
}
|
|
267
|
+
upstreamLease?.release();
|
|
268
|
+
closeIfDrained();
|
|
269
|
+
}
|
|
270
|
+
};
|
|
271
|
+
return { outcome: "leased", lease };
|
|
272
|
+
};
|
|
273
|
+
const getSnapshot = () => {
|
|
274
|
+
const at = now();
|
|
275
|
+
prune(at);
|
|
276
|
+
let keyRateSamples = 0;
|
|
277
|
+
for (const record of keys.values())
|
|
278
|
+
keyRateSamples += record.rate.length;
|
|
279
|
+
return BoundedAdmissionSnapshotSchema.parse({
|
|
280
|
+
state,
|
|
281
|
+
active,
|
|
282
|
+
accepted,
|
|
283
|
+
released,
|
|
284
|
+
refused,
|
|
285
|
+
keys: keys.size,
|
|
286
|
+
globalRateSamples: globalRate.length,
|
|
287
|
+
keyRateSamples,
|
|
288
|
+
refusals
|
|
289
|
+
});
|
|
290
|
+
};
|
|
291
|
+
const stopAdmission = () => {
|
|
292
|
+
if (state === "accepting")
|
|
293
|
+
state = "draining";
|
|
294
|
+
closeIfDrained();
|
|
295
|
+
return getSnapshot();
|
|
296
|
+
};
|
|
297
|
+
const drain = async (options = {}) => {
|
|
298
|
+
stopAdmission();
|
|
299
|
+
if (active === 0)
|
|
300
|
+
return { drained: true, remaining: 0 };
|
|
301
|
+
const controller = new AbortController;
|
|
302
|
+
let timer;
|
|
303
|
+
const abort = () => controller.abort();
|
|
304
|
+
if (options.signal?.aborted)
|
|
305
|
+
abort();
|
|
306
|
+
else
|
|
307
|
+
options.signal?.addEventListener("abort", abort, { once: true });
|
|
308
|
+
if (options.timeoutMs !== undefined) {
|
|
309
|
+
if (!Number.isSafeInteger(options.timeoutMs) || options.timeoutMs < 0) {
|
|
310
|
+
throw new TypeError("drain timeoutMs must be a non-negative safe integer");
|
|
311
|
+
}
|
|
312
|
+
timer = setTimeout(abort, options.timeoutMs);
|
|
313
|
+
}
|
|
314
|
+
let resolveDrained;
|
|
315
|
+
try {
|
|
316
|
+
await Promise.race([
|
|
317
|
+
new Promise((resolve) => {
|
|
318
|
+
resolveDrained = resolve;
|
|
319
|
+
drainWaiters.add(resolve);
|
|
320
|
+
}),
|
|
321
|
+
new Promise((resolve) => {
|
|
322
|
+
if (controller.signal.aborted)
|
|
323
|
+
resolve();
|
|
324
|
+
else
|
|
325
|
+
controller.signal.addEventListener("abort", () => resolve(), { once: true });
|
|
326
|
+
})
|
|
327
|
+
]);
|
|
328
|
+
} finally {
|
|
329
|
+
if (timer !== undefined)
|
|
330
|
+
clearTimeout(timer);
|
|
331
|
+
options.signal?.removeEventListener("abort", abort);
|
|
332
|
+
if (resolveDrained)
|
|
333
|
+
drainWaiters.delete(resolveDrained);
|
|
334
|
+
}
|
|
335
|
+
return { drained: active === 0, remaining: active };
|
|
336
|
+
};
|
|
337
|
+
const run = async (key, work, options = {}) => {
|
|
338
|
+
if (options.timeoutMs !== undefined) {
|
|
339
|
+
if (!Number.isSafeInteger(options.timeoutMs) || options.timeoutMs < 0) {
|
|
340
|
+
throw new TypeError("run timeoutMs must be a non-negative safe integer");
|
|
341
|
+
}
|
|
342
|
+
}
|
|
343
|
+
if (options.signal?.aborted)
|
|
344
|
+
throw new BoundedOperationWaitError("cancelled");
|
|
345
|
+
const admission = acquire(key);
|
|
346
|
+
if (admission.outcome === "refused") {
|
|
347
|
+
throw new BoundedAdmissionRefusalError(admission.reason, admission.retryAfterMs);
|
|
348
|
+
}
|
|
349
|
+
const workAbort = new AbortController;
|
|
350
|
+
const abortWork = () => workAbort.abort(options.signal?.reason);
|
|
351
|
+
options.signal?.addEventListener("abort", abortWork, { once: true });
|
|
352
|
+
let timer;
|
|
353
|
+
let timedOut = false;
|
|
354
|
+
if (options.timeoutMs !== undefined) {
|
|
355
|
+
timer = setTimeout(() => {
|
|
356
|
+
timedOut = true;
|
|
357
|
+
workAbort.abort(new DOMException("Operation wait timed out", "TimeoutError"));
|
|
358
|
+
}, options.timeoutMs);
|
|
359
|
+
}
|
|
360
|
+
const outcome = Promise.resolve().then(() => work({ signal: workAbort.signal })).then((value) => ({ kind: "value", value }), (error) => ({ kind: "error", error })).finally(() => admission.lease.release());
|
|
361
|
+
const callerDone = new Promise((resolve) => {
|
|
362
|
+
const settle = () => resolve({ kind: "caller" });
|
|
363
|
+
if (workAbort.signal.aborted)
|
|
364
|
+
settle();
|
|
365
|
+
else
|
|
366
|
+
workAbort.signal.addEventListener("abort", settle, { once: true });
|
|
367
|
+
});
|
|
368
|
+
try {
|
|
369
|
+
const settled = await Promise.race([outcome, callerDone]);
|
|
370
|
+
if (settled.kind === "caller") {
|
|
371
|
+
throw new BoundedOperationWaitError(timedOut ? "timed-out" : "cancelled");
|
|
372
|
+
}
|
|
373
|
+
if (settled.kind === "error")
|
|
374
|
+
throw settled.error;
|
|
375
|
+
return settled.value;
|
|
376
|
+
} finally {
|
|
377
|
+
if (timer !== undefined)
|
|
378
|
+
clearTimeout(timer);
|
|
379
|
+
options.signal?.removeEventListener("abort", abortWork);
|
|
380
|
+
}
|
|
381
|
+
};
|
|
382
|
+
return {
|
|
383
|
+
acquire,
|
|
384
|
+
run,
|
|
385
|
+
stopAdmission,
|
|
386
|
+
drain,
|
|
387
|
+
force() {
|
|
388
|
+
if (state === "accepting")
|
|
389
|
+
state = "draining";
|
|
390
|
+
state = "closed";
|
|
391
|
+
for (const resolve of drainWaiters)
|
|
392
|
+
resolve();
|
|
393
|
+
drainWaiters.clear();
|
|
394
|
+
return { remaining: active };
|
|
395
|
+
},
|
|
396
|
+
getSnapshot
|
|
397
|
+
};
|
|
398
|
+
}
|
|
399
|
+
// src/application/events.ts
|
|
400
|
+
import { z as z2 } from "zod";
|
|
401
|
+
var ApplicationLifecycleEventSchema = z2.object({
|
|
402
|
+
type: z2.literal("application-state"),
|
|
49
403
|
applicationId: ApplicationIdSchema,
|
|
50
|
-
epoch:
|
|
51
|
-
revision:
|
|
404
|
+
epoch: z2.string().uuid(),
|
|
405
|
+
revision: z2.number().int().nonnegative(),
|
|
52
406
|
lifecycle: ApplicationLifecycleSchema,
|
|
53
407
|
health: ApplicationHealthSchema,
|
|
54
|
-
ready:
|
|
55
|
-
capturedAt:
|
|
56
|
-
resources:
|
|
408
|
+
ready: z2.boolean(),
|
|
409
|
+
capturedAt: z2.string().datetime({ offset: true }),
|
|
410
|
+
resources: z2.array(ManagedResourceSnapshotSchema).readonly()
|
|
57
411
|
}).strict().readonly();
|
|
58
412
|
function applicationLifecycleEvent(snapshot) {
|
|
59
413
|
return ApplicationLifecycleEventSchema.parse({
|
|
@@ -84,13 +438,13 @@ function createApplicationEventSink(config) {
|
|
|
84
438
|
};
|
|
85
439
|
}
|
|
86
440
|
// src/application/health.ts
|
|
87
|
-
import { z as
|
|
88
|
-
var ApplicationHealthHandlerOptionsSchema =
|
|
89
|
-
kind:
|
|
90
|
-
retryAfterSeconds:
|
|
441
|
+
import { z as z3 } from "zod";
|
|
442
|
+
var ApplicationHealthHandlerOptionsSchema = z3.object({
|
|
443
|
+
kind: z3.enum(["liveness", "readiness"]),
|
|
444
|
+
retryAfterSeconds: z3.number().int().nonnegative().default(5)
|
|
91
445
|
});
|
|
92
|
-
var ApplicationOperationalHandlersOptionsSchema =
|
|
93
|
-
retryAfterSeconds:
|
|
446
|
+
var ApplicationOperationalHandlersOptionsSchema = z3.object({
|
|
447
|
+
retryAfterSeconds: z3.number().int().nonnegative().default(5)
|
|
94
448
|
});
|
|
95
449
|
function createApplicationHealthHandler(application, options) {
|
|
96
450
|
const parsed = ApplicationHealthHandlerOptionsSchema.parse(options);
|
|
@@ -122,7 +476,7 @@ function managedServerResource(config) {
|
|
|
122
476
|
let shutdownPromise;
|
|
123
477
|
let started;
|
|
124
478
|
let startAttempted = false;
|
|
125
|
-
const resolveServer = () => typeof config.server === "function" ? config.server() : config.server;
|
|
479
|
+
const resolveServer = (context) => typeof config.server === "function" ? config.server(context) : config.server;
|
|
126
480
|
const isHandle = (value) => ("shutdown" in value);
|
|
127
481
|
const whole = (milliseconds, round) => Number.isFinite(milliseconds) ? Math.max(0, round(milliseconds)) : milliseconds;
|
|
128
482
|
const grace = (milliseconds) => whole(milliseconds, Math.floor);
|
|
@@ -133,7 +487,7 @@ function managedServerResource(config) {
|
|
|
133
487
|
const now = context.now();
|
|
134
488
|
const gracePeriodMs = phase === "force" ? 0 : context.deadlineAt === undefined ? undefined : grace(context.deadlineAt - now);
|
|
135
489
|
const forceTimeoutMs = context.forceDeadlineAt === undefined ? undefined : phase === "force" ? force(context.forceDeadlineAt - now) : force(context.forceDeadlineAt - (context.deadlineAt ?? now));
|
|
136
|
-
const server = started ?? (startAttempted ? undefined : resolveServer());
|
|
490
|
+
const server = started ?? (startAttempted ? undefined : resolveServer(context));
|
|
137
491
|
if (server === undefined) {
|
|
138
492
|
shutdownPromise = Promise.resolve(undefined);
|
|
139
493
|
return shutdownPromise;
|
|
@@ -154,9 +508,9 @@ function managedServerResource(config) {
|
|
|
154
508
|
id: config.id,
|
|
155
509
|
...config.dependsOn && { dependsOn: config.dependsOn },
|
|
156
510
|
...config.required !== undefined && { required: config.required },
|
|
157
|
-
async start() {
|
|
511
|
+
async start(context) {
|
|
158
512
|
startAttempted = true;
|
|
159
|
-
started = await resolveServer();
|
|
513
|
+
started = await resolveServer(context);
|
|
160
514
|
return { value: started };
|
|
161
515
|
},
|
|
162
516
|
stopAdmission(context) {
|
|
@@ -195,6 +549,18 @@ export {
|
|
|
195
549
|
ApplicationSnapshotSchema,
|
|
196
550
|
ApplicationSnapshotSinkStatusSchema,
|
|
197
551
|
ApplicationStatusProjectionSchema,
|
|
552
|
+
BoundedAdmissionPolicySchema,
|
|
553
|
+
BoundedAdmissionRefusalError,
|
|
554
|
+
BoundedAdmissionRefusalReasonSchema,
|
|
555
|
+
BoundedAdmissionSnapshotSchema,
|
|
556
|
+
BoundedAdmissionStateSchema,
|
|
557
|
+
BoundedChannelPolicySchema,
|
|
558
|
+
BoundedChannelReaderError,
|
|
559
|
+
BoundedChannelSnapshotSchema,
|
|
560
|
+
BoundedChannelStateSchema,
|
|
561
|
+
BoundedOperationWaitError,
|
|
562
|
+
BoundedRateBudgetSchema,
|
|
563
|
+
CreditWindowSnapshotSchema,
|
|
198
564
|
ManagedResourceSnapshotSchema,
|
|
199
565
|
ManagedResourceStateSchema,
|
|
200
566
|
ManagedScheduleDescriptorSchema,
|
|
@@ -208,6 +574,9 @@ export {
|
|
|
208
574
|
createApplicationHealthHandler,
|
|
209
575
|
createApplicationOperationalHandlers,
|
|
210
576
|
createApplicationSnapshotSink,
|
|
577
|
+
createBoundedAdmission,
|
|
578
|
+
createBoundedChannel,
|
|
579
|
+
createCreditWindow,
|
|
211
580
|
createManagedSchedule,
|
|
212
581
|
defineManagedResource,
|
|
213
582
|
managedResourceDependencyId,
|
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
* the only genuinely subtle part, and keeping it together with its two guards
|
|
7
7
|
* makes that subtlety readable in one screen.
|
|
8
8
|
*/
|
|
9
|
-
import type { MultipartDescriptor, MultipartFile } from '../contract';
|
|
9
|
+
import type { MultipartDescriptor, MultipartFile } from '../contract/index.js';
|
|
10
10
|
/** A multipart file field — a `Blob` (web / Bun) or a platform descriptor (RN). */
|
|
11
11
|
export declare function isMultipartFile(value: unknown): value is MultipartFile;
|
|
12
12
|
/**
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import type { EndpointDef } from '../contract';
|
|
2
|
-
import type { ContractClientConfig } from './client';
|
|
1
|
+
import type { EndpointDef } from '../contract/index.js';
|
|
2
|
+
import type { ContractClientConfig } from './client.js';
|
|
3
3
|
export interface ClientRequestPlan {
|
|
4
4
|
relativeUrl: string;
|
|
5
5
|
remainingArgs: Record<string, unknown>;
|
package/dist/browser/client.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import type { ContractDef, EndpointDef, ScopedHttpClient, ScopedUrlBuilder } from '../contract';
|
|
2
|
-
import { type HttpClient as HttpAdapter, type UnauthorizedMatcher } from './http';
|
|
3
|
-
|
|
4
|
-
export type ClientFetch
|
|
1
|
+
import type { ContractDef, EndpointDef, ScopedHttpClient, ScopedUrlBuilder } from '../contract/index.js';
|
|
2
|
+
import { type HttpClient as HttpAdapter, type UnauthorizedMatcher } from './http.js';
|
|
3
|
+
import type { ClientFetch } from './transport.js';
|
|
4
|
+
export type { ClientFetch } from './transport.js';
|
|
5
5
|
export interface ClientConfig {
|
|
6
6
|
baseUrl: string;
|
|
7
7
|
/** Override Web Fetch delivery while preserving the complete client pipeline. */
|
|
@@ -85,5 +85,4 @@ export declare function createUrlBuilders<T extends Record<string, ContractDef<R
|
|
|
85
85
|
};
|
|
86
86
|
/** Build one URL registry routed by contract scope; arrays compose a namespace. */
|
|
87
87
|
export declare function createScopedUrlBuilders<const T extends Record<string, ClientRegistryValue>, const Configs extends ScopeClientConfigs<RegistryScope<T[keyof T]>>>(contracts: T, source: UrlBuilderConfig, scopeConfigs: Configs): ScopedUrlBuilderRegistry<T, Configs>;
|
|
88
|
-
export {};
|
|
89
88
|
//# sourceMappingURL=client.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/browser/client.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAEV,WAAW,EACX,WAAW,EACX,gBAAgB,EAChB,gBAAgB,EAGjB,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/browser/client.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import type { ZodType } from 'zod';
|
|
2
|
+
import { type EndpointStreamDescriptor } from '../contract/index.js';
|
|
3
|
+
/** Convert protocol frames into an immediately-owned schema-derived iterator. */
|
|
4
|
+
export declare function parseContractStream<T>(response: Response, descriptor: EndpointStreamDescriptor<ZodType<T>>, abort: () => void): AsyncIterableIterator<T>;
|
|
5
|
+
//# sourceMappingURL=contract-stream.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"contract-stream.d.ts","sourceRoot":"","sources":["../../src/browser/contract-stream.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,KAAK,CAAC;AACnC,OAAO,EAGL,KAAK,wBAAwB,EAC9B,MAAM,aAAa,CAAC;AAkHrB,iFAAiF;AACjF,wBAAgB,mBAAmB,CAAC,CAAC,EACnC,QAAQ,EAAE,QAAQ,EAClB,UAAU,EAAE,wBAAwB,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAChD,KAAK,EAAE,MAAM,IAAI,GAChB,qBAAqB,CAAC,CAAC,CAAC,CAE1B"}
|
package/dist/browser/http.d.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import type { ErrorEnvelope } from '../contract';
|
|
1
|
+
import type { ErrorEnvelope } from '../contract/index.js';
|
|
2
|
+
import type { ClientFetch } from './transport.js';
|
|
2
3
|
export type ApiEvent = {
|
|
3
4
|
type: 'unauthorized';
|
|
4
5
|
} | {
|
|
@@ -15,7 +16,7 @@ export declare class ApiError extends Error {
|
|
|
15
16
|
readonly details?: unknown;
|
|
16
17
|
readonly hint?: string | undefined;
|
|
17
18
|
readonly traceId?: string | undefined;
|
|
18
|
-
constructor(code: string, status?: number, details?: unknown, message?: string, hint?: string | undefined, traceId?: string | undefined);
|
|
19
|
+
constructor(code: string, status?: number, details?: unknown, message?: string, hint?: string | undefined, traceId?: string | undefined, options?: ErrorOptions);
|
|
19
20
|
static is(error: unknown): error is ApiError;
|
|
20
21
|
}
|
|
21
22
|
/** @internal Narrow adapter for a Bun fetch error Ky does not classify. */
|
|
@@ -61,11 +62,13 @@ export interface HttpClientConfig {
|
|
|
61
62
|
* Default `false`.
|
|
62
63
|
*/
|
|
63
64
|
trace?: boolean;
|
|
65
|
+
/** Explicit Fetch-compatible transport, for example `createUnixClientTransport().fetch`. */
|
|
66
|
+
fetch?: ClientFetch;
|
|
64
67
|
/**
|
|
65
|
-
* Dial a unix domain socket instead of TCP (Bun runtime only
|
|
66
|
-
*
|
|
67
|
-
* required as the path/prefix source;
|
|
68
|
-
*
|
|
68
|
+
* Dial a unix domain socket instead of TCP (Bun runtime only). Other runtimes
|
|
69
|
+
* fail before dispatch; use `createUnixClientTransport().fetch` for the
|
|
70
|
+
* portable Bun/Node path. `baseUrl` stays required as the path/prefix source;
|
|
71
|
+
* its host is ignored by Bun's socket transport.
|
|
69
72
|
*/
|
|
70
73
|
unix?: string;
|
|
71
74
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"http.d.ts","sourceRoot":"","sources":["../../src/browser/http.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"http.d.ts","sourceRoot":"","sources":["../../src/browser/http.ts"],"names":[],"mappings":"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"}
|