stitchkit 0.66.1 → 0.68.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/dist/agent-runtime.js +5 -6
- 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/graph.d.ts +1 -1
- package/dist/application/graph.d.ts.map +1 -1
- package/dist/application/kernel.d.ts.map +1 -1
- package/dist/application/latest-sink.d.ts.map +1 -1
- package/dist/application/resource.d.ts +72 -1
- package/dist/application/resource.d.ts.map +1 -1
- package/dist/application/server-resource.d.ts +26 -5
- package/dist/application/server-resource.d.ts.map +1 -1
- package/dist/application-grammy.js +2 -2
- package/dist/application-opentelemetry.js +1 -1
- package/dist/application.d.ts +4 -2
- package/dist/application.d.ts.map +1 -1
- package/dist/application.js +408 -24
- package/dist/browser/client.d.ts +2 -3
- 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 +3 -0
- package/dist/browser/http.d.ts.map +1 -1
- package/dist/browser/stream.d.ts +4 -1
- 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.js +6 -7
- package/dist/contract/define.d.ts +34 -2
- package/dist/contract/define.d.ts.map +1 -1
- package/dist/contract/errors.d.ts +4 -0
- package/dist/contract/errors.d.ts.map +1 -1
- package/dist/contract/index.d.ts +2 -1
- 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/{index-xxye8j3k.js → index-0w9abg87.js} +4 -0
- package/dist/index-2k4yrqkc.js +9 -0
- package/dist/index-69m2278y.js +115 -0
- package/dist/{index-eabpd4tb.js → index-6wzr93cg.js} +21 -2
- package/dist/{index-1pgeyyee.js → index-7pn02bgv.js} +4 -6
- package/dist/index-9ky9hhg3.js +484 -0
- package/dist/{index-wrhf06ak.js → index-avjd67h6.js} +8 -8
- package/dist/{index-413xk7ga.js → index-cq9q73nf.js} +50 -1
- package/dist/{index-6taryy00.js → index-dafax5md.js} +1 -1
- package/dist/{index-s1tywej8.js → index-nymn7wbg.js} +1103 -20
- 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-svqhcrrj.js → index-zd4v31v2.js} +156 -10
- package/dist/{index-x8v8b7rc.js → index-zpyj7hsv.js} +330 -58
- package/dist/index.js +270 -105
- package/dist/internal/bounded-lines.d.ts +4 -0
- package/dist/internal/bounded-lines.d.ts.map +1 -0
- package/dist/node.d.ts +1 -0
- package/dist/node.d.ts.map +1 -1
- package/dist/node.js +11 -8
- package/dist/observability/index.js +6 -7
- package/dist/remote.js +5 -6
- 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.map +1 -1
- package/dist/server/implement.d.ts.map +1 -1
- package/dist/server/index.d.ts +1 -0
- package/dist/server/index.d.ts.map +1 -1
- package/dist/server/index.js +41 -283
- package/dist/server/openapi.d.ts.map +1 -1
- package/dist/server/process-signals.d.ts.map +1 -1
- package/dist/server/stream.d.ts +3 -1
- package/dist/server/stream.d.ts.map +1 -1
- package/dist/server/streaming-route.d.ts +2 -0
- package/dist/server/streaming-route.d.ts.map +1 -1
- package/dist/server/types.d.ts +13 -3
- 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.js +7 -5
- package/dist/tools.js +14 -16
- package/llms-full.txt +594 -29
- package/package.json +1 -1
- 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/index-yr276yz0.js +0 -6
package/dist/agent-runtime.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import {
|
|
2
2
|
ToolExecutionControlError,
|
|
3
3
|
isToolExecutionControlError
|
|
4
|
-
} from "./index-
|
|
4
|
+
} from "./index-avjd67h6.js";
|
|
5
5
|
import {
|
|
6
6
|
AgentAssistantPlaceholderSchema,
|
|
7
7
|
AgentControlPartSchema,
|
|
@@ -37,15 +37,14 @@ import"./index-cby4ar3v.js";
|
|
|
37
37
|
import {
|
|
38
38
|
createBoundedSinkManager
|
|
39
39
|
} from "./index-a59da114.js";
|
|
40
|
-
import"./index-
|
|
41
|
-
import"./index-wd8g8z6e.js";
|
|
42
|
-
import"./index-6k1937bx.js";
|
|
40
|
+
import"./index-69m2278y.js";
|
|
43
41
|
import {
|
|
44
42
|
childSpan,
|
|
45
43
|
createTraceContext
|
|
46
|
-
} from "./index-
|
|
44
|
+
} from "./index-9ky9hhg3.js";
|
|
47
45
|
import"./index-smpbdg6k.js";
|
|
48
|
-
import"./index-
|
|
46
|
+
import"./index-0w9abg87.js";
|
|
47
|
+
import"./index-6k1937bx.js";
|
|
49
48
|
|
|
50
49
|
// src/agent-runtime/terminal-status.ts
|
|
51
50
|
function isSpeakableAssistantStatus(status) {
|
|
@@ -0,0 +1,131 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
import type { ApplicationAdmission, ApplicationOperationLease } from './kernel';
|
|
3
|
+
export declare const BoundedRateBudgetSchema: z.ZodReadonly<z.ZodObject<{
|
|
4
|
+
limit: z.ZodNumber;
|
|
5
|
+
intervalMs: z.ZodNumber;
|
|
6
|
+
}, z.core.$strict>>;
|
|
7
|
+
export type BoundedRateBudget = z.infer<typeof BoundedRateBudgetSchema>;
|
|
8
|
+
export declare const BoundedAdmissionPolicySchema: z.ZodReadonly<z.ZodObject<{
|
|
9
|
+
global: z.ZodObject<{
|
|
10
|
+
maxConcurrent: z.ZodNumber;
|
|
11
|
+
rate: z.ZodOptional<z.ZodReadonly<z.ZodObject<{
|
|
12
|
+
limit: z.ZodNumber;
|
|
13
|
+
intervalMs: z.ZodNumber;
|
|
14
|
+
}, z.core.$strict>>>;
|
|
15
|
+
}, z.core.$strict>;
|
|
16
|
+
perKey: z.ZodOptional<z.ZodObject<{
|
|
17
|
+
maxConcurrent: z.ZodNumber;
|
|
18
|
+
maxKeys: z.ZodNumber;
|
|
19
|
+
rate: z.ZodOptional<z.ZodReadonly<z.ZodObject<{
|
|
20
|
+
limit: z.ZodNumber;
|
|
21
|
+
intervalMs: z.ZodNumber;
|
|
22
|
+
}, z.core.$strict>>>;
|
|
23
|
+
}, z.core.$strict>>;
|
|
24
|
+
}, z.core.$strict>>;
|
|
25
|
+
export type BoundedAdmissionPolicy = z.infer<typeof BoundedAdmissionPolicySchema>;
|
|
26
|
+
export declare const BoundedAdmissionStateSchema: z.ZodEnum<{
|
|
27
|
+
accepting: "accepting";
|
|
28
|
+
closed: "closed";
|
|
29
|
+
draining: "draining";
|
|
30
|
+
}>;
|
|
31
|
+
export type BoundedAdmissionState = z.infer<typeof BoundedAdmissionStateSchema>;
|
|
32
|
+
export declare const BoundedAdmissionRefusalReasonSchema: z.ZodEnum<{
|
|
33
|
+
"global-concurrency": "global-concurrency";
|
|
34
|
+
"global-rate": "global-rate";
|
|
35
|
+
"key-capacity": "key-capacity";
|
|
36
|
+
"key-concurrency": "key-concurrency";
|
|
37
|
+
"key-rate": "key-rate";
|
|
38
|
+
"key-required": "key-required";
|
|
39
|
+
"not-accepting": "not-accepting";
|
|
40
|
+
upstream: "upstream";
|
|
41
|
+
}>;
|
|
42
|
+
export type BoundedAdmissionRefusalReason = z.infer<typeof BoundedAdmissionRefusalReasonSchema>;
|
|
43
|
+
export declare const BoundedAdmissionSnapshotSchema: z.ZodReadonly<z.ZodObject<{
|
|
44
|
+
state: z.ZodEnum<{
|
|
45
|
+
accepting: "accepting";
|
|
46
|
+
closed: "closed";
|
|
47
|
+
draining: "draining";
|
|
48
|
+
}>;
|
|
49
|
+
active: z.ZodNumber;
|
|
50
|
+
accepted: z.ZodNumber;
|
|
51
|
+
released: z.ZodNumber;
|
|
52
|
+
refused: z.ZodNumber;
|
|
53
|
+
keys: z.ZodNumber;
|
|
54
|
+
globalRateSamples: z.ZodNumber;
|
|
55
|
+
keyRateSamples: z.ZodNumber;
|
|
56
|
+
refusals: z.ZodReadonly<z.ZodObject<{
|
|
57
|
+
'not-accepting': z.ZodNumber;
|
|
58
|
+
'global-concurrency': z.ZodNumber;
|
|
59
|
+
'key-required': z.ZodNumber;
|
|
60
|
+
'key-capacity': z.ZodNumber;
|
|
61
|
+
'key-concurrency': z.ZodNumber;
|
|
62
|
+
'global-rate': z.ZodNumber;
|
|
63
|
+
'key-rate': z.ZodNumber;
|
|
64
|
+
upstream: z.ZodNumber;
|
|
65
|
+
}, z.core.$strict>>;
|
|
66
|
+
}, z.core.$strict>>;
|
|
67
|
+
export type BoundedAdmissionSnapshot = z.infer<typeof BoundedAdmissionSnapshotSchema>;
|
|
68
|
+
export interface BoundedAdmissionClock {
|
|
69
|
+
now(): number;
|
|
70
|
+
}
|
|
71
|
+
export interface BoundedAdmissionConfig {
|
|
72
|
+
readonly policy: BoundedAdmissionPolicy;
|
|
73
|
+
/** Compose with application readiness/lifecycle admission. */
|
|
74
|
+
readonly upstream?: ApplicationAdmission;
|
|
75
|
+
/** Monotonic milliseconds. Default `performance.now()`. */
|
|
76
|
+
readonly clock?: BoundedAdmissionClock;
|
|
77
|
+
}
|
|
78
|
+
export interface BoundedOperationLease extends ApplicationOperationLease {
|
|
79
|
+
readonly key?: string;
|
|
80
|
+
}
|
|
81
|
+
export interface BoundedAdmissionLeaseResult {
|
|
82
|
+
readonly outcome: 'leased';
|
|
83
|
+
readonly lease: BoundedOperationLease;
|
|
84
|
+
}
|
|
85
|
+
export interface BoundedAdmissionRefusedResult {
|
|
86
|
+
readonly outcome: 'refused';
|
|
87
|
+
readonly reason: BoundedAdmissionRefusalReason;
|
|
88
|
+
/** Present only for a rate budget whose oldest sample gives a real bound. */
|
|
89
|
+
readonly retryAfterMs?: number;
|
|
90
|
+
}
|
|
91
|
+
export type BoundedAdmissionResult = BoundedAdmissionLeaseResult | BoundedAdmissionRefusedResult;
|
|
92
|
+
export interface BoundedOperationRunContext {
|
|
93
|
+
readonly signal: AbortSignal;
|
|
94
|
+
}
|
|
95
|
+
export interface BoundedOperationRunOptions {
|
|
96
|
+
readonly signal?: AbortSignal;
|
|
97
|
+
/** Caller wait budget. It never shortens the underlying lease lifetime. */
|
|
98
|
+
readonly timeoutMs?: number;
|
|
99
|
+
}
|
|
100
|
+
export interface BoundedAdmissionDrainOptions {
|
|
101
|
+
readonly signal?: AbortSignal;
|
|
102
|
+
readonly timeoutMs?: number;
|
|
103
|
+
}
|
|
104
|
+
export interface BoundedAdmissionDrainResult {
|
|
105
|
+
readonly drained: boolean;
|
|
106
|
+
readonly remaining: number;
|
|
107
|
+
}
|
|
108
|
+
export interface BoundedAdmissionForceResult {
|
|
109
|
+
/** Work still physically active. `force()` does not pretend to terminate it. */
|
|
110
|
+
readonly remaining: number;
|
|
111
|
+
}
|
|
112
|
+
export interface BoundedAdmission {
|
|
113
|
+
acquire(key?: string): BoundedAdmissionResult;
|
|
114
|
+
run<T>(key: string | undefined, work: (context: BoundedOperationRunContext) => T | Promise<T>, options?: BoundedOperationRunOptions): Promise<T>;
|
|
115
|
+
stopAdmission(): BoundedAdmissionSnapshot;
|
|
116
|
+
drain(options?: BoundedAdmissionDrainOptions): Promise<BoundedAdmissionDrainResult>;
|
|
117
|
+
force(): BoundedAdmissionForceResult;
|
|
118
|
+
getSnapshot(): BoundedAdmissionSnapshot;
|
|
119
|
+
}
|
|
120
|
+
export declare class BoundedAdmissionRefusalError extends Error {
|
|
121
|
+
readonly reason: BoundedAdmissionRefusalReason;
|
|
122
|
+
readonly retryAfterMs?: number | undefined;
|
|
123
|
+
constructor(reason: BoundedAdmissionRefusalReason, retryAfterMs?: number | undefined);
|
|
124
|
+
}
|
|
125
|
+
export declare class BoundedOperationWaitError extends Error {
|
|
126
|
+
readonly reason: 'cancelled' | 'timed-out';
|
|
127
|
+
constructor(reason: 'cancelled' | 'timed-out');
|
|
128
|
+
}
|
|
129
|
+
/** Process-local, no-queue admission with explicit finite concurrency/rate budgets. */
|
|
130
|
+
export declare function createBoundedAdmission(config: BoundedAdmissionConfig): BoundedAdmission;
|
|
131
|
+
//# sourceMappingURL=admission.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"admission.d.ts","sourceRoot":"","sources":["../../src/application/admission.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
export declare const BoundedChannelPolicySchema: z.ZodEnum<{
|
|
3
|
+
latest: "latest";
|
|
4
|
+
ordered: "ordered";
|
|
5
|
+
}>;
|
|
6
|
+
export type BoundedChannelPolicy = z.infer<typeof BoundedChannelPolicySchema>;
|
|
7
|
+
export declare const BoundedChannelStateSchema: z.ZodEnum<{
|
|
8
|
+
closed: "closed";
|
|
9
|
+
draining: "draining";
|
|
10
|
+
failed: "failed";
|
|
11
|
+
open: "open";
|
|
12
|
+
}>;
|
|
13
|
+
export type BoundedChannelState = z.infer<typeof BoundedChannelStateSchema>;
|
|
14
|
+
export declare const BoundedChannelSnapshotSchema: z.ZodReadonly<z.ZodObject<{
|
|
15
|
+
state: z.ZodEnum<{
|
|
16
|
+
closed: "closed";
|
|
17
|
+
draining: "draining";
|
|
18
|
+
failed: "failed";
|
|
19
|
+
open: "open";
|
|
20
|
+
}>;
|
|
21
|
+
policy: z.ZodEnum<{
|
|
22
|
+
latest: "latest";
|
|
23
|
+
ordered: "ordered";
|
|
24
|
+
}>;
|
|
25
|
+
queuedItems: z.ZodNumber;
|
|
26
|
+
queuedBytes: z.ZodNumber;
|
|
27
|
+
waitingReader: z.ZodBoolean;
|
|
28
|
+
offered: z.ZodNumber;
|
|
29
|
+
delivered: z.ZodNumber;
|
|
30
|
+
queued: z.ZodNumber;
|
|
31
|
+
coalesced: z.ZodNumber;
|
|
32
|
+
refused: z.ZodNumber;
|
|
33
|
+
discarded: z.ZodNumber;
|
|
34
|
+
}, z.core.$strict>>;
|
|
35
|
+
export type BoundedChannelSnapshot = z.infer<typeof BoundedChannelSnapshotSchema>;
|
|
36
|
+
export interface BoundedChannelConfig<T> {
|
|
37
|
+
readonly policy: BoundedChannelPolicy;
|
|
38
|
+
readonly maxItems: number;
|
|
39
|
+
readonly maxBytes: number;
|
|
40
|
+
/** Exact retained-byte accounting chosen by the caller. */
|
|
41
|
+
readonly sizeOf: (value: T) => number;
|
|
42
|
+
/** Abort closes with discard semantics. */
|
|
43
|
+
readonly signal?: AbortSignal;
|
|
44
|
+
}
|
|
45
|
+
export type BoundedChannelOfferResult = {
|
|
46
|
+
readonly outcome: 'delivered';
|
|
47
|
+
} | {
|
|
48
|
+
readonly outcome: 'queued';
|
|
49
|
+
} | {
|
|
50
|
+
readonly outcome: 'coalesced';
|
|
51
|
+
readonly replaced: 1;
|
|
52
|
+
} | {
|
|
53
|
+
readonly outcome: 'refused';
|
|
54
|
+
readonly reason: 'not-open' | 'item-too-large' | 'item-capacity' | 'byte-capacity';
|
|
55
|
+
};
|
|
56
|
+
export interface BoundedChannelCloseOptions {
|
|
57
|
+
/** Default `drain`. */
|
|
58
|
+
readonly mode?: 'drain' | 'discard';
|
|
59
|
+
}
|
|
60
|
+
export interface BoundedChannel<T> extends AsyncIterableIterator<T> {
|
|
61
|
+
/** Non-blocking offer. There is deliberately no hidden writer queue. */
|
|
62
|
+
offer(value: T): BoundedChannelOfferResult;
|
|
63
|
+
close(options?: BoundedChannelCloseOptions): BoundedChannelSnapshot;
|
|
64
|
+
fail(error: unknown): BoundedChannelSnapshot;
|
|
65
|
+
getSnapshot(): BoundedChannelSnapshot;
|
|
66
|
+
}
|
|
67
|
+
export declare class BoundedChannelReaderError extends Error {
|
|
68
|
+
constructor();
|
|
69
|
+
}
|
|
70
|
+
/** Finite process-local async delivery with explicit ordered/latest overflow policy. */
|
|
71
|
+
export declare function createBoundedChannel<T>(config: BoundedChannelConfig<T>): BoundedChannel<T>;
|
|
72
|
+
export declare const CreditWindowSnapshotSchema: z.ZodReadonly<z.ZodObject<{
|
|
73
|
+
state: z.ZodEnum<{
|
|
74
|
+
closed: "closed";
|
|
75
|
+
open: "open";
|
|
76
|
+
}>;
|
|
77
|
+
capacityBytes: z.ZodNumber;
|
|
78
|
+
availableBytes: z.ZodNumber;
|
|
79
|
+
leasedBytes: z.ZodNumber;
|
|
80
|
+
acquired: z.ZodNumber;
|
|
81
|
+
refused: z.ZodNumber;
|
|
82
|
+
replenishedBytes: z.ZodNumber;
|
|
83
|
+
}, z.core.$strict>>;
|
|
84
|
+
export type CreditWindowSnapshot = z.infer<typeof CreditWindowSnapshotSchema>;
|
|
85
|
+
export interface CreditLease {
|
|
86
|
+
readonly bytes: number;
|
|
87
|
+
readonly released: boolean;
|
|
88
|
+
release(): void;
|
|
89
|
+
}
|
|
90
|
+
export type CreditAcquireResult = {
|
|
91
|
+
readonly outcome: 'leased';
|
|
92
|
+
readonly lease: CreditLease;
|
|
93
|
+
} | {
|
|
94
|
+
readonly outcome: 'refused';
|
|
95
|
+
readonly reason: 'closed' | 'larger-than-window' | 'insufficient-credit';
|
|
96
|
+
};
|
|
97
|
+
export interface CreditWindow {
|
|
98
|
+
acquire(bytes: number): CreditAcquireResult;
|
|
99
|
+
close(): CreditWindowSnapshot;
|
|
100
|
+
getSnapshot(): CreditWindowSnapshot;
|
|
101
|
+
}
|
|
102
|
+
/** Finite byte permission; release is local accounting, not delivery acknowledgement. */
|
|
103
|
+
export declare function createCreditWindow(config: {
|
|
104
|
+
readonly capacityBytes: number;
|
|
105
|
+
}): CreditWindow;
|
|
106
|
+
//# sourceMappingURL=channel.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"channel.d.ts","sourceRoot":"","sources":["../../src/application/channel.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"graph.d.ts","sourceRoot":"","sources":["../../src/application/graph.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"graph.d.ts","sourceRoot":"","sources":["../../src/application/graph.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,eAAe,EAA+B,MAAM,YAAY,CAAC;AAG/E,MAAM,WAAW,uBAAuB;IACtC,QAAQ,CAAC,QAAQ,EAAE,eAAe,CAAC;IACnC,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,SAAS,EAAE,SAAS,MAAM,EAAE,CAAC;IACtC,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC;IAC3B,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC;CACnC;AAED,2FAA2F;AAC3F,wBAAgB,oBAAoB,CAClC,SAAS,EAAE,SAAS,eAAe,EAAE,GACpC,SAAS,uBAAuB,EAAE,CAoDpC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"kernel.d.ts","sourceRoot":"","sources":["../../src/application/kernel.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAC7B,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAG9C,OAAO,KAAK,EACV,eAAe,
|
|
1
|
+
{"version":3,"file":"kernel.d.ts","sourceRoot":"","sources":["../../src/application/kernel.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAC7B,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAG9C,OAAO,KAAK,EACV,eAAe,EAIhB,MAAM,YAAY,CAAC;AACpB,OAAO,EAIL,KAAK,2BAA2B,EAChC,KAAK,yBAAyB,EAE9B,KAAK,mBAAmB,EAGzB,MAAM,WAAW,CAAC;AAEnB,6EAA6E;AAC7E,MAAM,MAAM,wBAAwB,GAAG,2BAA2B,CAAC,UAAU,CAAC,CAAC,MAAM,CAAC,CAAC;AA8DvF,wEAAwE;AACxE,MAAM,WAAW,0BAA0B;IACzC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,KAAK,EAAE,wBAAwB,CAAC;IACzC,8DAA8D;IAC9D,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC;CACzB;AAED;;;;;;;GAOG;AACH,eAAO,MAAM,gCAAgC;;;;iBAI3C,CAAC;AACH,MAAM,MAAM,0BAA0B,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,gCAAgC,CAAC,CAAC;AAE1F;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,+BAA+B;;;iBAG1C,CAAC;AACH,MAAM,MAAM,yBAAyB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,+BAA+B,CAAC,CAAC;AAExF,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,SAAS,CAAC,EAAE,SAAS,eAAe,EAAE,CAAC;IAChD;;;OAGG;IACH,QAAQ,CAAC,QAAQ,CAAC,EAAE,yBAAyB,CAAC;IAC9C,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC,QAAQ,EAAE,mBAAmB,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC9E;;;;;;;;;;;;;;;;;;;;;OAqBG;IACH,QAAQ,CAAC,iBAAiB,CAAC,EAAE,CAAC,OAAO,EAAE,0BAA0B,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CAC5F;AAED,MAAM,WAAW,yBAAyB;IACxC,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC;IAC3B,OAAO,IAAI,IAAI,CAAC;CACjB;AAED,MAAM,WAAW,oBAAoB;IACnC,OAAO,IAAI,yBAAyB,GAAG,IAAI,CAAC;IAC5C,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;CAChD;AAED,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,SAAS,EAAE,oBAAoB,CAAC;IACzC,KAAK,IAAI,OAAO,CAAC,mBAAmB,CAAC,CAAC;IACtC,WAAW,IAAI,mBAAmB,CAAC;IACnC,SAAS,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE,mBAAmB,KAAK,IAAI,GAAG,MAAM,IAAI,CAAC;IACzE,QAAQ,CAAC,OAAO,CAAC,EAAE,0BAA0B,GAAG,OAAO,CAAC,yBAAyB,CAAC,CAAC;CACpF;AAED;;;;;;;;;GASG;AACH,qBAAa,yBAA0B,SAAQ,QAAQ,CAAC,2BAA2B,CAAC;IAClF,cAGC;CACF;AA2BD,mFAAmF;AACnF,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,iBAAiB,GAAG,iBAAiB,CAs1B9E"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"latest-sink.d.ts","sourceRoot":"","sources":["../../src/application/latest-sink.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;
|
|
1
|
+
{"version":3,"file":"latest-sink.d.ts","sourceRoot":"","sources":["../../src/application/latest-sink.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAKxB,eAAO,MAAM,mCAAmC;;;;;;;;;;;;mBAenC,CAAC;AACd,MAAM,MAAM,6BAA6B,GAAG,CAAC,CAAC,KAAK,CACjD,OAAO,mCAAmC,CAC3C,CAAC;AAEF,MAAM,WAAW,6BAA6B;IAC5C,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;CAC3B;AAED,MAAM,WAAW,4BAA4B,CAAC,SAAS;IACrD,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC;IACxB,QAAQ,CAAC,QAAQ,EAAE,SAAS,CAAC;CAC9B;AAED,MAAM,WAAW,6BAA6B,CAC5C,SAAS,SAAS,6BAA6B;IAE/C,KAAK,CAAC,QAAQ,EAAE,SAAS,GAAG,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACjD,WAAW,CAAC,CAAC,OAAO,EAAE,4BAA4B,CAAC,SAAS,CAAC,GAAG,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACtF;AAED,MAAM,WAAW,uBAAuB,CAAC,SAAS,SAAS,6BAA6B;IACtF,0FAA0F;IAC1F,OAAO,CAAC,QAAQ,EAAE,SAAS,GAAG,OAAO,CAAC;IACtC,SAAS,IAAI,6BAA6B,CAAC;IAC3C,qFAAqF;IACrF,KAAK,IAAI,OAAO,CAAC,6BAA6B,CAAC,CAAC;CACjD;AAED;;;GAGG;AACH,wBAAgB,6BAA6B,CAAC,SAAS,SAAS,6BAA6B,EAC3F,MAAM,EAAE,6BAA6B,CAAC,SAAS,CAAC,GAC/C,uBAAuB,CAAC,SAAS,CAAC,CAgHpC"}
|
|
@@ -1,4 +1,50 @@
|
|
|
1
1
|
import type { ApplicationHealth } from './schemas';
|
|
2
|
+
/**
|
|
3
|
+
* What a resource declares it must start after.
|
|
4
|
+
*
|
|
5
|
+
* A string names the dependency; the resource object *is* the dependency, and
|
|
6
|
+
* that is the form `use()` can type. Both are accepted because ordering and
|
|
7
|
+
* value-passing are separate needs: a resource that only has to start later
|
|
8
|
+
* still says so with a string, and nothing forces a graph to be rewritten.
|
|
9
|
+
*/
|
|
10
|
+
export type ManagedResourceDependency = string | ManagedResource;
|
|
11
|
+
/**
|
|
12
|
+
* What `use()` returns for a resource whose `start` publishes no value.
|
|
13
|
+
*
|
|
14
|
+
* Deliberately a branded interface rather than `never`. `never` is assignable
|
|
15
|
+
* to every type, so reading a value off a resource that never published one
|
|
16
|
+
* would compile everywhere and fail only at runtime — the exact silent shape
|
|
17
|
+
* this whole mechanism exists to remove. The property name is the message: it
|
|
18
|
+
* is what the compiler prints when the assignment is refused.
|
|
19
|
+
*/
|
|
20
|
+
export interface ManagedResourcePublishesNoValue {
|
|
21
|
+
readonly 'this managed resource publishes no value from start()': never;
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* The value a resource's `start` publishes, recovered from its own literal type.
|
|
25
|
+
*
|
|
26
|
+
* Recovered by a conditional type on purpose. The obvious alternative —
|
|
27
|
+
* `use<TValue>(resource: ManagedResource<TValue>): TValue` — is unsound: with
|
|
28
|
+
* no inference site in the argument, TypeScript happily infers `TValue` from
|
|
29
|
+
* the *assignment context*, so `const port: string = context.use(database)`
|
|
30
|
+
* compiles and the annotation becomes self-fulfilling. Reading the type out of
|
|
31
|
+
* `start`'s return leaves the argument as the only source.
|
|
32
|
+
*
|
|
33
|
+
* A resource whose `start` is annotated with the wide
|
|
34
|
+
* `ManagedResourceStartResult` publishes nothing as far as this type is
|
|
35
|
+
* concerned — `value` is optional there, and an optional property cannot be
|
|
36
|
+
* distinguished from an absent one. That is why `managedServerResource` and
|
|
37
|
+
* anything else meant to publish declares a precise return type.
|
|
38
|
+
*/
|
|
39
|
+
export type ManagedResourcePublished<TResource> = TResource extends {
|
|
40
|
+
start(...args: never): infer TStart;
|
|
41
|
+
} ? [Extract<Awaited<TStart>, {
|
|
42
|
+
value: unknown;
|
|
43
|
+
}>] extends [never] ? ManagedResourcePublishesNoValue : Extract<Awaited<TStart>, {
|
|
44
|
+
value: unknown;
|
|
45
|
+
}> extends {
|
|
46
|
+
value: infer TValue;
|
|
47
|
+
} ? TValue : ManagedResourcePublishesNoValue : ManagedResourcePublishesNoValue;
|
|
2
48
|
export interface ManagedResourceContext {
|
|
3
49
|
readonly applicationId: string;
|
|
4
50
|
readonly signal: AbortSignal;
|
|
@@ -6,16 +52,39 @@ export interface ManagedResourceContext {
|
|
|
6
52
|
readonly forceDeadlineAt?: number;
|
|
7
53
|
now(): number;
|
|
8
54
|
reportHealth(health: Exclude<ApplicationHealth, 'unknown'>): void;
|
|
55
|
+
/**
|
|
56
|
+
* The value a declared dependency published from its `start`.
|
|
57
|
+
*
|
|
58
|
+
* `dependsOn` carries ordering; this carries the object. Without it every
|
|
59
|
+
* dependency that is a real thing — a connection, a socket server, a client —
|
|
60
|
+
* travels through a module-local `let handle: T | null` whose null guard the
|
|
61
|
+
* graph makes unreachable: the type is lost, the guard is noise, and half the
|
|
62
|
+
* invariant lives in the order of assignments rather than in the graph.
|
|
63
|
+
*
|
|
64
|
+
* Refuses a resource this one did not declare a dependency on, and refuses a
|
|
65
|
+
* resource that published nothing. Both are ordering bugs the graph can see
|
|
66
|
+
* and a mutable module-local cannot.
|
|
67
|
+
*/
|
|
68
|
+
use<TResource extends ManagedResource>(resource: TResource): ManagedResourcePublished<TResource>;
|
|
9
69
|
}
|
|
10
70
|
export interface ManagedResourceStartResult {
|
|
11
71
|
/** Resolves when the resource is ready for dependants. */
|
|
12
72
|
readonly ready?: Promise<void>;
|
|
13
73
|
/** Long-lived completion; settling before shutdown marks the resource unhealthy. */
|
|
14
74
|
readonly completion?: Promise<void>;
|
|
75
|
+
/**
|
|
76
|
+
* What this resource hands to the resources that depend on it.
|
|
77
|
+
*
|
|
78
|
+
* Read with `context.use(thisResource)`. Published once, when `start`
|
|
79
|
+
* resolves, and readable for the rest of the application's life — including
|
|
80
|
+
* from `activate` and the shutdown phases, where a dependant may still need
|
|
81
|
+
* the handle it was given.
|
|
82
|
+
*/
|
|
83
|
+
readonly value?: unknown;
|
|
15
84
|
}
|
|
16
85
|
export interface ManagedResource {
|
|
17
86
|
readonly id: string;
|
|
18
|
-
readonly dependsOn?: readonly
|
|
87
|
+
readonly dependsOn?: readonly ManagedResourceDependency[];
|
|
19
88
|
readonly required?: boolean;
|
|
20
89
|
start(context: ManagedResourceContext): void | ManagedResourceStartResult | Promise<void> | Promise<ManagedResourceStartResult | undefined>;
|
|
21
90
|
/** Runs only after the whole required graph reached readiness. */
|
|
@@ -26,5 +95,7 @@ export interface ManagedResource {
|
|
|
26
95
|
close?(context: ManagedResourceContext): void | Promise<void>;
|
|
27
96
|
force?(context: ManagedResourceContext): void | Promise<void>;
|
|
28
97
|
}
|
|
98
|
+
/** The id of a dependency declared either way. */
|
|
99
|
+
export declare function managedResourceDependencyId(dependency: ManagedResourceDependency): string;
|
|
29
100
|
export declare function defineManagedResource<const TResource extends ManagedResource>(resource: TResource): TResource;
|
|
30
101
|
//# sourceMappingURL=resource.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"resource.d.ts","sourceRoot":"","sources":["../../src/application/resource.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAC;AAEnD,MAAM,WAAW,sBAAsB;IACrC,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAC;IAC7B,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,eAAe,CAAC,EAAE,MAAM,CAAC;IAClC,GAAG,IAAI,MAAM,CAAC;IACd,YAAY,CAAC,MAAM,EAAE,OAAO,CAAC,iBAAiB,EAAE,SAAS,CAAC,GAAG,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"resource.d.ts","sourceRoot":"","sources":["../../src/application/resource.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,12 +1,33 @@
|
|
|
1
1
|
import type { ManagedServerHandle } from '../server/shutdown';
|
|
2
|
-
import { type ManagedResource } from './resource';
|
|
2
|
+
import { type ManagedResource, type ManagedResourceContext, type ManagedResourceDependency } from './resource';
|
|
3
3
|
export interface ManagedServerResourceConfig<TRuntime> {
|
|
4
4
|
readonly id: string;
|
|
5
|
-
|
|
6
|
-
|
|
5
|
+
/**
|
|
6
|
+
* The server, or how to make one.
|
|
7
|
+
*
|
|
8
|
+
* A handle is adopted as it is. A thunk is called during `start`, which is
|
|
9
|
+
* the only way to say "bind the port after the database is up" — and the only
|
|
10
|
+
* reading of a thunk that is not a trap. It used to be called during
|
|
11
|
+
* *shutdown*, so a graph that delegated creation here started clean, reported
|
|
12
|
+
* `healthy`, and had nothing listening on the port; the failure surfaced as a
|
|
13
|
+
* request that never arrived.
|
|
14
|
+
*/
|
|
15
|
+
readonly server: ManagedServerHandle<TRuntime> | (() => ManagedServerHandle<TRuntime> | Promise<ManagedServerHandle<TRuntime>>);
|
|
16
|
+
readonly dependsOn?: readonly ManagedResourceDependency[];
|
|
7
17
|
readonly required?: boolean;
|
|
8
18
|
readonly retryAfterSeconds?: number;
|
|
9
19
|
}
|
|
10
|
-
/**
|
|
11
|
-
|
|
20
|
+
/**
|
|
21
|
+
* A managed resource that owns a managed server.
|
|
22
|
+
*
|
|
23
|
+
* Its `start` publishes the handle, so a resource that depends on this one
|
|
24
|
+
* reads the running server with `context.use(...)` instead of a module-local.
|
|
25
|
+
*/
|
|
26
|
+
export interface ManagedServerResource<TRuntime> extends ManagedResource {
|
|
27
|
+
start(context: ManagedResourceContext): Promise<{
|
|
28
|
+
readonly value: ManagedServerHandle<TRuntime>;
|
|
29
|
+
}>;
|
|
30
|
+
}
|
|
31
|
+
/** Own a managed server's lifecycle without duplicating its shutdown state machine. */
|
|
32
|
+
export declare function managedServerResource<TRuntime>(config: ManagedServerResourceConfig<TRuntime>): ManagedServerResource<TRuntime>;
|
|
12
33
|
//# sourceMappingURL=server-resource.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server-resource.d.ts","sourceRoot":"","sources":["../../src/application/server-resource.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,
|
|
1
|
+
{"version":3,"file":"server-resource.d.ts","sourceRoot":"","sources":["../../src/application/server-resource.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAmC,MAAM,oBAAoB,CAAC;AAC/F,OAAO,EAEL,KAAK,eAAe,EACpB,KAAK,sBAAsB,EAC3B,KAAK,yBAAyB,EAC/B,MAAM,YAAY,CAAC;AAEpB,MAAM,WAAW,2BAA2B,CAAC,QAAQ;IACnD,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB;;;;;;;;;OASG;IACH,QAAQ,CAAC,MAAM,EACX,mBAAmB,CAAC,QAAQ,CAAC,GAC7B,CAAC,MAAM,mBAAmB,CAAC,QAAQ,CAAC,GAAG,OAAO,CAAC,mBAAmB,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;IACnF,QAAQ,CAAC,SAAS,CAAC,EAAE,SAAS,yBAAyB,EAAE,CAAC;IAC1D,QAAQ,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAC;IAC5B,QAAQ,CAAC,iBAAiB,CAAC,EAAE,MAAM,CAAC;CACrC;AAED;;;;;GAKG;AACH,MAAM,WAAW,qBAAqB,CAAC,QAAQ,CAAE,SAAQ,eAAe;IACtE,KAAK,CACH,OAAO,EAAE,sBAAsB,GAC9B,OAAO,CAAC;QAAE,QAAQ,CAAC,KAAK,EAAE,mBAAmB,CAAC,QAAQ,CAAC,CAAA;KAAE,CAAC,CAAC;CAC/D;AAED,uFAAuF;AACvF,wBAAgB,qBAAqB,CAAC,QAAQ,EAC5C,MAAM,EAAE,2BAA2B,CAAC,QAAQ,CAAC,GAC5C,qBAAqB,CAAC,QAAQ,CAAC,CAwIjC"}
|
package/dist/application.d.ts
CHANGED
|
@@ -1,10 +1,12 @@
|
|
|
1
1
|
export { type ActivityId, ActivityIdSchema, type ActivityLiveState, ActivityLiveStateSchema, type ActivityProjection, type ActivityProjectionConfig, type ActivityProjectionSubscriberError, type ActivitySnapshot, ActivitySnapshotSchema, type ActivityStageId, ActivityStageIdSchema, type ActivityStageSnapshot, ActivityStageSnapshotSchema, type ActivityToken, ActivityTokenBrand, type ActivityTransition, createActivityProjection, } from './application/activity';
|
|
2
|
+
export { type BoundedAdmission, type BoundedAdmissionClock, type BoundedAdmissionConfig, type BoundedAdmissionDrainOptions, type BoundedAdmissionDrainResult, type BoundedAdmissionForceResult, type BoundedAdmissionLeaseResult, type BoundedAdmissionPolicy, BoundedAdmissionPolicySchema, BoundedAdmissionRefusalError, type BoundedAdmissionRefusalReason, BoundedAdmissionRefusalReasonSchema, type BoundedAdmissionRefusedResult, type BoundedAdmissionResult, type BoundedAdmissionSnapshot, BoundedAdmissionSnapshotSchema, type BoundedAdmissionState, BoundedAdmissionStateSchema, type BoundedOperationLease, type BoundedOperationRunContext, type BoundedOperationRunOptions, BoundedOperationWaitError, type BoundedRateBudget, BoundedRateBudgetSchema, createBoundedAdmission, } from './application/admission';
|
|
3
|
+
export { type BoundedChannel, type BoundedChannelCloseOptions, type BoundedChannelConfig, type BoundedChannelOfferResult, type BoundedChannelPolicy, BoundedChannelPolicySchema, BoundedChannelReaderError, type BoundedChannelSnapshot, BoundedChannelSnapshotSchema, type BoundedChannelState, BoundedChannelStateSchema, type CreditAcquireResult, type CreditLease, type CreditWindow, type CreditWindowSnapshot, CreditWindowSnapshotSchema, createBoundedChannel, createCreditWindow, } from './application/channel';
|
|
2
4
|
export { type ApplicationEventSink, type ApplicationEventSinkConfig, type ApplicationLifecycleEvent, ApplicationLifecycleEventSchema, applicationLifecycleEvent, createApplicationEventSink, } from './application/events';
|
|
3
5
|
export { type ApplicationHealthHandlerOptions, ApplicationHealthHandlerOptionsSchema, type ApplicationOperationalHandlers, type ApplicationOperationalHandlersOptions, ApplicationOperationalHandlersOptionsSchema, createApplicationHealthHandler, createApplicationOperationalHandlers, } from './application/health';
|
|
4
6
|
export { type ApplicationAdmission, ApplicationAdmissionError, type ApplicationConfig, type ApplicationHandle, type ApplicationOperationLease, type ApplicationResourceFailure, type ApplicationResourcePhase, type ApplicationShutdownBudget, ApplicationShutdownBudgetSchema, type ApplicationShutdownOptions, ApplicationShutdownOptionsSchema, createApplication, } from './application/kernel';
|
|
5
7
|
export { type ApplicationSnapshotSink, type ApplicationSnapshotSinkConfig, type ApplicationSnapshotSinkError, type ApplicationSnapshotSinkStatus, ApplicationSnapshotSinkStatusSchema, createApplicationSnapshotSink, type RevisionedApplicationSnapshot, } from './application/latest-sink';
|
|
6
|
-
export { defineManagedResource, type ManagedResource, type ManagedResourceContext, type ManagedResourceStartResult, } from './application/resource';
|
|
8
|
+
export { defineManagedResource, type ManagedResource, type ManagedResourceContext, type ManagedResourceDependency, type ManagedResourcePublished, type ManagedResourcePublishesNoValue, type ManagedResourceStartResult, managedResourceDependencyId, } from './application/resource';
|
|
7
9
|
export { createManagedSchedule, type ManagedSchedule, type ManagedScheduleClock, type ManagedScheduleConfig, type ManagedScheduleDescriptor, ManagedScheduleDescriptorSchema, type ManagedScheduleErrorPolicy, ManagedScheduleErrorPolicySchema, type ManagedScheduleOverlap, ManagedScheduleOverlapSchema, type ManagedScheduleRunContext, type ManagedScheduleStatus, ManagedScheduleStatusSchema, type ManagedScheduleTimer, } from './application/schedule';
|
|
8
10
|
export { type ApplicationAdmissionSnapshot, ApplicationAdmissionSnapshotSchema, type ApplicationHealth, ApplicationHealthSchema, type ApplicationId, ApplicationIdSchema, type ApplicationLifecycle, ApplicationLifecycleSchema, type ApplicationResourceShutdown, ApplicationResourceShutdownSchema, type ApplicationShutdownResult, ApplicationShutdownResultSchema, type ApplicationSnapshot, ApplicationSnapshotSchema, type ApplicationStatusProjection, ApplicationStatusProjectionSchema, type ManagedResourceSnapshot, ManagedResourceSnapshotSchema, type ManagedResourceState, ManagedResourceStateSchema, projectApplicationStatus, } from './application/schemas';
|
|
9
|
-
export { type ManagedServerResourceConfig, managedServerResource, } from './application/server-resource';
|
|
11
|
+
export { type ManagedServerResource, type ManagedServerResourceConfig, managedServerResource, } from './application/server-resource';
|
|
10
12
|
//# sourceMappingURL=application.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"application.d.ts","sourceRoot":"","sources":["../src/application.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,UAAU,EACf,gBAAgB,EAChB,KAAK,iBAAiB,EACtB,uBAAuB,EACvB,KAAK,kBAAkB,EACvB,KAAK,wBAAwB,EAC7B,KAAK,iCAAiC,EACtC,KAAK,gBAAgB,EACrB,sBAAsB,EACtB,KAAK,eAAe,EACpB,qBAAqB,EACrB,KAAK,qBAAqB,EAC1B,2BAA2B,EAC3B,KAAK,aAAa,EAClB,kBAAkB,EAClB,KAAK,kBAAkB,EACvB,wBAAwB,GACzB,MAAM,wBAAwB,CAAC;AAChC,OAAO,EACL,KAAK,oBAAoB,EACzB,KAAK,0BAA0B,EAC/B,KAAK,yBAAyB,EAC9B,+BAA+B,EAC/B,yBAAyB,EACzB,0BAA0B,GAC3B,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EACL,KAAK,+BAA+B,EACpC,qCAAqC,EACrC,KAAK,8BAA8B,EACnC,KAAK,qCAAqC,EAC1C,2CAA2C,EAC3C,8BAA8B,EAC9B,oCAAoC,GACrC,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EACL,KAAK,oBAAoB,EACzB,yBAAyB,EACzB,KAAK,iBAAiB,EACtB,KAAK,iBAAiB,EACtB,KAAK,yBAAyB,EAC9B,KAAK,0BAA0B,EAC/B,KAAK,wBAAwB,EAC7B,KAAK,yBAAyB,EAC9B,+BAA+B,EAC/B,KAAK,0BAA0B,EAC/B,gCAAgC,EAChC,iBAAiB,GAClB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EACL,KAAK,uBAAuB,EAC5B,KAAK,6BAA6B,EAClC,KAAK,4BAA4B,EACjC,KAAK,6BAA6B,EAClC,mCAAmC,EACnC,6BAA6B,EAC7B,KAAK,6BAA6B,GACnC,MAAM,2BAA2B,CAAC;AACnC,OAAO,EACL,qBAAqB,EACrB,KAAK,eAAe,EACpB,KAAK,sBAAsB,EAC3B,KAAK,0BAA0B,
|
|
1
|
+
{"version":3,"file":"application.d.ts","sourceRoot":"","sources":["../src/application.ts"],"names":[],"mappings":"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"}
|