@relkit/invocation 0.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.
Files changed (103) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +5 -0
  3. package/dist/abort.d.ts +9 -0
  4. package/dist/abort.d.ts.map +1 -0
  5. package/dist/abort.js +80 -0
  6. package/dist/abort.js.map +1 -0
  7. package/dist/context.d.ts +7 -0
  8. package/dist/context.d.ts.map +1 -0
  9. package/dist/context.js +39 -0
  10. package/dist/context.js.map +1 -0
  11. package/dist/contracts.d.ts +135 -0
  12. package/dist/contracts.d.ts.map +1 -0
  13. package/dist/contracts.js +14 -0
  14. package/dist/contracts.js.map +1 -0
  15. package/dist/deadline.d.ts +12 -0
  16. package/dist/deadline.d.ts.map +1 -0
  17. package/dist/deadline.js +57 -0
  18. package/dist/deadline.js.map +1 -0
  19. package/dist/dispatcher-context.d.ts +26 -0
  20. package/dist/dispatcher-context.d.ts.map +1 -0
  21. package/dist/dispatcher-context.js +90 -0
  22. package/dist/dispatcher-context.js.map +1 -0
  23. package/dist/dispatcher-scope.d.ts +4 -0
  24. package/dist/dispatcher-scope.d.ts.map +1 -0
  25. package/dist/dispatcher-scope.js +9 -0
  26. package/dist/dispatcher-scope.js.map +1 -0
  27. package/dist/dispatcher-types.d.ts +80 -0
  28. package/dist/dispatcher-types.d.ts.map +1 -0
  29. package/dist/dispatcher-types.js +8 -0
  30. package/dist/dispatcher-types.js.map +1 -0
  31. package/dist/dispatcher.d.ts +11 -0
  32. package/dist/dispatcher.d.ts.map +1 -0
  33. package/dist/dispatcher.js +12 -0
  34. package/dist/dispatcher.js.map +1 -0
  35. package/dist/error-retry.d.ts +12 -0
  36. package/dist/error-retry.d.ts.map +1 -0
  37. package/dist/error-retry.js +33 -0
  38. package/dist/error-retry.js.map +1 -0
  39. package/dist/failure-dependency.d.ts +6 -0
  40. package/dist/failure-dependency.d.ts.map +1 -0
  41. package/dist/failure-dependency.js +13 -0
  42. package/dist/failure-dependency.js.map +1 -0
  43. package/dist/failure-guards.d.ts +30 -0
  44. package/dist/failure-guards.d.ts.map +1 -0
  45. package/dist/failure-guards.js +58 -0
  46. package/dist/failure-guards.js.map +1 -0
  47. package/dist/failure-internals.d.ts +8 -0
  48. package/dist/failure-internals.d.ts.map +1 -0
  49. package/dist/failure-internals.js +20 -0
  50. package/dist/failure-internals.js.map +1 -0
  51. package/dist/failure-runtime.d.ts +30 -0
  52. package/dist/failure-runtime.d.ts.map +1 -0
  53. package/dist/failure-runtime.js +25 -0
  54. package/dist/failure-runtime.js.map +1 -0
  55. package/dist/failure-types.d.ts +89 -0
  56. package/dist/failure-types.d.ts.map +1 -0
  57. package/dist/failure-types.js +2 -0
  58. package/dist/failure-types.js.map +1 -0
  59. package/dist/failure.d.ts +18 -0
  60. package/dist/failure.d.ts.map +1 -0
  61. package/dist/failure.js +128 -0
  62. package/dist/failure.js.map +1 -0
  63. package/dist/handler-bridge.d.ts +16 -0
  64. package/dist/handler-bridge.d.ts.map +1 -0
  65. package/dist/handler-bridge.js +75 -0
  66. package/dist/handler-bridge.js.map +1 -0
  67. package/dist/identity.d.ts +22 -0
  68. package/dist/identity.d.ts.map +1 -0
  69. package/dist/identity.js +67 -0
  70. package/dist/identity.js.map +1 -0
  71. package/dist/index.d.ts +20 -0
  72. package/dist/index.d.ts.map +1 -0
  73. package/dist/index.js +20 -0
  74. package/dist/index.js.map +1 -0
  75. package/dist/lifecycle.d.ts +39 -0
  76. package/dist/lifecycle.d.ts.map +1 -0
  77. package/dist/lifecycle.js +39 -0
  78. package/dist/lifecycle.js.map +1 -0
  79. package/dist/recursion.d.ts +31 -0
  80. package/dist/recursion.d.ts.map +1 -0
  81. package/dist/recursion.js +81 -0
  82. package/dist/recursion.js.map +1 -0
  83. package/dist/service-policy.d.ts +18 -0
  84. package/dist/service-policy.d.ts.map +1 -0
  85. package/dist/service-policy.js +113 -0
  86. package/dist/service-policy.js.map +1 -0
  87. package/dist/standalone-dispatcher.d.ts +3 -0
  88. package/dist/standalone-dispatcher.d.ts.map +1 -0
  89. package/dist/standalone-dispatcher.js +107 -0
  90. package/dist/standalone-dispatcher.js.map +1 -0
  91. package/dist/standalone-lifecycle.d.ts +20 -0
  92. package/dist/standalone-lifecycle.d.ts.map +1 -0
  93. package/dist/standalone-lifecycle.js +30 -0
  94. package/dist/standalone-lifecycle.js.map +1 -0
  95. package/dist/standalone-utils.d.ts +10 -0
  96. package/dist/standalone-utils.d.ts.map +1 -0
  97. package/dist/standalone-utils.js +52 -0
  98. package/dist/standalone-utils.js.map +1 -0
  99. package/dist/validation.d.ts +17 -0
  100. package/dist/validation.d.ts.map +1 -0
  101. package/dist/validation.js +58 -0
  102. package/dist/validation.js.map +1 -0
  103. package/package.json +41 -0
package/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 rel-kit
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/README.md ADDED
@@ -0,0 +1,5 @@
1
+ # @relkit/invocation
2
+
3
+ Unsupported internal RELKIT invocation contracts; use @relkit/app.
4
+
5
+ See [@relkit/app](https://github.com/rel-kit/relkit) for supported application APIs.
@@ -0,0 +1,9 @@
1
+ export interface AbortBridge {
2
+ readonly signal: AbortSignal;
3
+ readonly dispose: () => void;
4
+ }
5
+ /** Links a public signal to the fiber signal without retaining listeners. */
6
+ export declare function createAbortBridge(fiberSignal: AbortSignal, parentSignal?: AbortSignal): AbortBridge;
7
+ /** Passes a signal to a Promise operation and rejects promptly on abort. */
8
+ export declare function abortablePromise<A>(signal: AbortSignal, operation: (signal: AbortSignal) => PromiseLike<A>): Promise<A>;
9
+ //# sourceMappingURL=abort.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"abort.d.ts","sourceRoot":"","sources":["../src/abort.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAC;IAC7B,QAAQ,CAAC,OAAO,EAAE,MAAM,IAAI,CAAC;CAC9B;AAED,6EAA6E;AAC7E,wBAAgB,iBAAiB,CAC/B,WAAW,EAAE,WAAW,EACxB,YAAY,CAAC,EAAE,WAAW,GACzB,WAAW,CAkCb;AAED,4EAA4E;AAC5E,wBAAgB,gBAAgB,CAAC,CAAC,EAChC,MAAM,EAAE,WAAW,EACnB,SAAS,EAAE,CAAC,MAAM,EAAE,WAAW,KAAK,WAAW,CAAC,CAAC,CAAC,GACjD,OAAO,CAAC,CAAC,CAAC,CAwCZ"}
package/dist/abort.js ADDED
@@ -0,0 +1,80 @@
1
+ /** Links a public signal to the fiber signal without retaining listeners. */
2
+ export function createAbortBridge(fiberSignal, parentSignal) {
3
+ const controller = new AbortController();
4
+ let disposed = false;
5
+ const abortFrom = (source) => {
6
+ if (!controller.signal.aborted)
7
+ controller.abort(source.reason);
8
+ };
9
+ const onFiberAbort = () => abortFrom(fiberSignal);
10
+ const onParentAbort = () => {
11
+ if (parentSignal !== undefined)
12
+ abortFrom(parentSignal);
13
+ };
14
+ const preAborted = parentSignal?.aborted === true ? parentSignal : fiberSignal.aborted ? fiberSignal : undefined;
15
+ if (preAborted !== undefined) {
16
+ controller.abort(preAborted.reason);
17
+ }
18
+ else {
19
+ fiberSignal.addEventListener("abort", onFiberAbort, { once: true });
20
+ if (parentSignal !== undefined && parentSignal !== fiberSignal) {
21
+ parentSignal.addEventListener("abort", onParentAbort, { once: true });
22
+ }
23
+ }
24
+ return {
25
+ signal: controller.signal,
26
+ dispose: () => {
27
+ if (disposed)
28
+ return;
29
+ disposed = true;
30
+ fiberSignal.removeEventListener("abort", onFiberAbort);
31
+ if (parentSignal !== undefined && parentSignal !== fiberSignal) {
32
+ parentSignal.removeEventListener("abort", onParentAbort);
33
+ }
34
+ },
35
+ };
36
+ }
37
+ /** Passes a signal to a Promise operation and rejects promptly on abort. */
38
+ export function abortablePromise(signal, operation) {
39
+ if (signal.aborted)
40
+ return Promise.reject(abortReason(signal));
41
+ return new Promise((resolve, reject) => {
42
+ let settled = false;
43
+ const cleanup = () => signal.removeEventListener("abort", onAbort);
44
+ function onAbort() {
45
+ if (settled)
46
+ return;
47
+ settled = true;
48
+ cleanup();
49
+ reject(abortReason(signal));
50
+ }
51
+ signal.addEventListener("abort", onAbort, { once: true });
52
+ if (signal.aborted) {
53
+ onAbort();
54
+ return;
55
+ }
56
+ void Promise.resolve()
57
+ .then(() => {
58
+ if (settled)
59
+ return;
60
+ return operation(signal);
61
+ })
62
+ .then((value) => {
63
+ if (settled)
64
+ return;
65
+ settled = true;
66
+ cleanup();
67
+ resolve(value);
68
+ }, (cause) => {
69
+ if (settled)
70
+ return;
71
+ settled = true;
72
+ cleanup();
73
+ reject(cause);
74
+ });
75
+ });
76
+ }
77
+ function abortReason(signal) {
78
+ return signal.reason ?? new Error("Operation aborted");
79
+ }
80
+ //# sourceMappingURL=abort.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"abort.js","sourceRoot":"","sources":["../src/abort.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ import type { MaybePromise } from "@relkit/contracts";
2
+ import type { InvocationContextOptions, InvocationRecord, PublicClock } from "./contracts.js";
3
+ export declare function makeContext<Context extends {
4
+ readonly signal: AbortSignal;
5
+ }>(factory: ((options: InvocationContextOptions) => MaybePromise<Context>) | undefined, record: InvocationRecord, signal: AbortSignal, env: Readonly<Record<string, unknown>>, time: PublicClock): Promise<Context>;
6
+ export declare function linkSignals(controller: AbortController, signals: readonly (AbortSignal | undefined)[]): () => void;
7
+ //# sourceMappingURL=context.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../src/context.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACtD,OAAO,KAAK,EAAE,wBAAwB,EAAE,gBAAgB,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAE9F,wBAAgB,WAAW,CAAC,OAAO,SAAS;IAAE,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAA;CAAE,EAC1E,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,wBAAwB,KAAK,YAAY,CAAC,OAAO,CAAC,CAAC,GAAG,SAAS,EACnF,MAAM,EAAE,gBAAgB,EACxB,MAAM,EAAE,WAAW,EACnB,GAAG,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,EACtC,IAAI,EAAE,WAAW,GAChB,OAAO,CAAC,OAAO,CAAC,CAuBlB;AAED,wBAAgB,WAAW,CACzB,UAAU,EAAE,eAAe,EAC3B,OAAO,EAAE,SAAS,CAAC,WAAW,GAAG,SAAS,CAAC,EAAE,GAC5C,MAAM,IAAI,CAYZ"}
@@ -0,0 +1,39 @@
1
+ export function makeContext(factory, record, signal, env, time) {
2
+ const options = { invocation: record, signal, env: Object.freeze({ ...env }), time };
3
+ if (factory !== undefined)
4
+ return Promise.resolve(factory(options));
5
+ const noop = () => undefined;
6
+ return Promise.resolve(Object.freeze({
7
+ invocation: record,
8
+ signal,
9
+ env: options.env,
10
+ log: Object.freeze({ trace: noop, debug: noop, info: noop, warn: noop, error: noop }),
11
+ time,
12
+ jobs: Object.freeze({}),
13
+ events: Object.freeze({}),
14
+ buckets: Object.freeze({}),
15
+ cache: Object.freeze({}),
16
+ agents: Object.freeze({}),
17
+ database: Object.freeze({}),
18
+ auth: Object.freeze({ getSession: () => Promise.resolve(null) }),
19
+ constants: Object.freeze({}),
20
+ prompts: Object.freeze({}),
21
+ service: Object.freeze({}),
22
+ }));
23
+ }
24
+ export function linkSignals(controller, signals) {
25
+ const listeners = [];
26
+ for (const signal of signals) {
27
+ if (signal === undefined)
28
+ continue;
29
+ const abort = () => controller.abort(signal.reason);
30
+ if (signal.aborted)
31
+ abort();
32
+ else {
33
+ signal.addEventListener("abort", abort, { once: true });
34
+ listeners.push([signal, abort]);
35
+ }
36
+ }
37
+ return () => listeners.forEach(([signal, abort]) => signal.removeEventListener("abort", abort));
38
+ }
39
+ //# sourceMappingURL=context.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"context.js","sourceRoot":"","sources":["../src/context.ts"],"names":[],"mappings":"AAGA,MAAM,UAAU,WAAW,CACzB,OAAmF,EACnF,MAAwB,EACxB,MAAmB,EACnB,GAAsC,EACtC,IAAiB;IAEjB,MAAM,OAAO,GAAG,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,GAAG,GAAG,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC;IACrF,IAAI,OAAO,KAAK,SAAS;QAAE,OAAO,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAY,CAAC,CAAC;IAC/E,MAAM,IAAI,GAAG,GAAS,EAAE,CAAC,SAAS,CAAC;IACnC,OAAO,OAAO,CAAC,OAAO,CACpB,MAAM,CAAC,MAAM,CAAC;QACZ,UAAU,EAAE,MAAM;QAClB,MAAM;QACN,GAAG,EAAE,OAAO,CAAC,GAAG;QAChB,GAAG,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;QACrF,IAAI;QACJ,IAAI,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC;QACvB,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC;QACzB,OAAO,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC;QAC1B,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC;QACxB,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC;QACzB,QAAQ,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC;QAC3B,IAAI,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,UAAU,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;QAChE,SAAS,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC;QAC5B,OAAO,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC;QAC1B,OAAO,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC;KAC3B,CAAuB,CACzB,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,WAAW,CACzB,UAA2B,EAC3B,OAA6C;IAE7C,MAAM,SAAS,GAA8C,EAAE,CAAC;IAChE,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;QAC7B,IAAI,MAAM,KAAK,SAAS;YAAE,SAAS;QACnC,MAAM,KAAK,GAAG,GAAS,EAAE,CAAC,UAAU,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QAC1D,IAAI,MAAM,CAAC,OAAO;YAAE,KAAK,EAAE,CAAC;aACvB,CAAC;YACJ,MAAM,CAAC,gBAAgB,CAAC,OAAO,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;YACxD,SAAS,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC;QAClC,CAAC;IACH,CAAC;IACD,OAAO,GAAG,EAAE,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,mBAAmB,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC;AAClG,CAAC"}
@@ -0,0 +1,135 @@
1
+ import type { MaybePromise, ProtocolId } from "@relkit/contracts";
2
+ import type { StandardIssue, StandardSchemaV1 } from "@relkit/schema";
3
+ import { Effect } from "effect";
4
+ import type { InvocationFailure, PublicFailureEnvelope } from "./failure-types.js";
5
+ export type InvocationSource = "direct" | "http" | "job" | "event" | "tool" | "agent";
6
+ export type InvocationKind = "trace" | "invocation" | "span";
7
+ export type InvocationIdSource = {
8
+ readonly next: (kind: InvocationKind) => ProtocolId;
9
+ };
10
+ export interface PublicLogger {
11
+ readonly trace: (message: string, fields?: Readonly<Record<string, unknown>>) => void;
12
+ readonly debug: (message: string, fields?: Readonly<Record<string, unknown>>) => void;
13
+ readonly info: (message: string, fields?: Readonly<Record<string, unknown>>) => void;
14
+ readonly warn: (message: string, fields?: Readonly<Record<string, unknown>>) => void;
15
+ readonly error: (message: string, fields?: Readonly<Record<string, unknown>>) => void;
16
+ }
17
+ export interface PublicClock {
18
+ readonly now: () => Date;
19
+ readonly sleep: (milliseconds: number) => Promise<void>;
20
+ }
21
+ export interface InvocationMetadata {
22
+ readonly id: string;
23
+ readonly parentId?: string;
24
+ readonly traceId: string;
25
+ readonly correlationId?: string;
26
+ readonly startedAt: string;
27
+ readonly deadline?: string;
28
+ readonly attempt: number;
29
+ readonly source: InvocationSource;
30
+ readonly serviceId?: string;
31
+ }
32
+ export interface InvocationContext {
33
+ readonly invocation: InvocationMetadata;
34
+ readonly signal: AbortSignal;
35
+ readonly env: Readonly<Record<string, unknown>>;
36
+ readonly log: PublicLogger;
37
+ readonly time: PublicClock;
38
+ readonly jobs: Readonly<Record<string, never>>;
39
+ readonly events: Readonly<Record<string, never>>;
40
+ readonly buckets: Readonly<Record<string, never>>;
41
+ readonly cache: Readonly<Record<string, never>>;
42
+ readonly agents: Readonly<Record<string, never>>;
43
+ readonly database: Readonly<Record<string, never>>;
44
+ readonly auth: {
45
+ readonly getSession: () => Promise<unknown | null>;
46
+ };
47
+ readonly constants: Readonly<Record<string, never>>;
48
+ readonly prompts: Readonly<Record<string, never>>;
49
+ readonly service: Readonly<Record<string, unknown>>;
50
+ }
51
+ export interface InvocationErrorDefinition {
52
+ readonly id: string;
53
+ readonly data: StandardSchemaV1;
54
+ }
55
+ export interface InvocationTarget<Input = unknown, Output = unknown, Context extends {
56
+ readonly signal: AbortSignal;
57
+ } = InvocationContext> {
58
+ readonly id: string;
59
+ readonly input: StandardSchemaV1;
60
+ readonly output: StandardSchemaV1;
61
+ readonly errors?: readonly InvocationErrorDefinition[];
62
+ readonly timeoutMs?: number;
63
+ readonly concurrency?: number;
64
+ readonly onBefore?: (input: Input, context: Context) => MaybePromise<Input>;
65
+ readonly onAfter?: (output: Output, context: Context) => MaybePromise<Output>;
66
+ readonly handler: (input: Input, context: Context) => MaybePromise<Output>;
67
+ }
68
+ export interface InvocationRecord extends InvocationMetadata {
69
+ readonly functionId: string;
70
+ readonly status: "started" | "success" | "validation-error" | "declared-error" | "provider-failure" | "cancelled" | "timeout" | "defect";
71
+ readonly completedAt?: string;
72
+ readonly durationMs?: number;
73
+ }
74
+ export interface SpanRecord {
75
+ readonly invocationId: string;
76
+ readonly functionId: string;
77
+ readonly name: string;
78
+ readonly spanId: string;
79
+ readonly parentSpanId?: string;
80
+ readonly traceId: string;
81
+ readonly source: InvocationSource;
82
+ readonly serviceId?: string;
83
+ readonly status: "started" | "completed";
84
+ readonly startedAt: string;
85
+ readonly completedAt?: string;
86
+ }
87
+ export interface InvocationParent {
88
+ readonly id: string;
89
+ readonly traceId: string;
90
+ readonly spanId?: string;
91
+ readonly correlationId?: string;
92
+ readonly deadlineMs?: number;
93
+ readonly signal?: AbortSignal;
94
+ readonly trace?: unknown;
95
+ }
96
+ export interface InvocationAdmissionRequest {
97
+ readonly functionId: string;
98
+ readonly source: InvocationSource;
99
+ readonly triggerLimit?: number;
100
+ readonly limit?: number;
101
+ readonly deadlineMs?: number;
102
+ readonly signal: AbortSignal;
103
+ }
104
+ export interface InvocationLease {
105
+ readonly release: () => MaybePromise<void>;
106
+ }
107
+ export type InvocationAdmit = (request: InvocationAdmissionRequest) => MaybePromise<InvocationLease | void>;
108
+ export interface InvocationContextOptions {
109
+ readonly invocation: InvocationRecord;
110
+ readonly signal: AbortSignal;
111
+ readonly env: Readonly<Record<string, unknown>>;
112
+ readonly time: PublicClock;
113
+ }
114
+ export interface InvocationRunner {
115
+ readonly run: <A, E>(effect: Effect.Effect<A, E, never>, options?: {
116
+ readonly signal?: AbortSignal;
117
+ }) => Promise<A>;
118
+ }
119
+ export interface InvocationCompletion {
120
+ readonly record: InvocationRecord;
121
+ readonly outcome: Exclude<InvocationRecord["status"], "started">;
122
+ readonly error?: InvocationValidationError | InvocationFailure;
123
+ readonly publicError?: PublicFailureEnvelope;
124
+ }
125
+ export interface InvocationRelease {
126
+ readonly record: InvocationRecord;
127
+ readonly admitted: boolean;
128
+ }
129
+ export declare class InvocationValidationError extends TypeError {
130
+ readonly code: "RELKIT_INPUT_VALIDATION" | "RELKIT_OUTPUT_VALIDATION";
131
+ readonly phase: "input" | "output";
132
+ readonly issues: readonly StandardIssue[];
133
+ constructor(phase: "input" | "output", issues: readonly StandardIssue[]);
134
+ }
135
+ //# sourceMappingURL=contracts.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"contracts.d.ts","sourceRoot":"","sources":["../src/contracts.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,14 @@
1
+ import { Effect } from "effect";
2
+ export class InvocationValidationError extends TypeError {
3
+ code;
4
+ phase;
5
+ issues;
6
+ constructor(phase, issues) {
7
+ super(`${phase === "input" ? "Input" : "Output"} validation failed`);
8
+ this.name = "InvocationValidationError";
9
+ this.code = phase === "input" ? "RELKIT_INPUT_VALIDATION" : "RELKIT_OUTPUT_VALIDATION";
10
+ this.phase = phase;
11
+ this.issues = Object.freeze(issues.map((issue) => Object.freeze({ ...issue })));
12
+ }
13
+ }
14
+ //# sourceMappingURL=contracts.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"contracts.js","sourceRoot":"","sources":["../src/contracts.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAyJhC,MAAM,OAAO,yBAA0B,SAAQ,SAAS;IAC7C,IAAI,CAAyD;IAC7D,KAAK,CAAqB;IAC1B,MAAM,CAA2B;IAE1C,YAAY,KAAyB,EAAE,MAAgC;QACrE,KAAK,CAAC,GAAG,KAAK,KAAK,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,oBAAoB,CAAC,CAAC;QACrE,IAAI,CAAC,IAAI,GAAG,2BAA2B,CAAC;QACxC,IAAI,CAAC,IAAI,GAAG,KAAK,KAAK,OAAO,CAAC,CAAC,CAAC,yBAAyB,CAAC,CAAC,CAAC,0BAA0B,CAAC;QACvF,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,GAAG,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC;IAClF,CAAC;CACF"}
@@ -0,0 +1,12 @@
1
+ import { Cause, Context, Effect } from "effect";
2
+ /** An absolute Unix timestamp in milliseconds. */
3
+ export type Deadline = number;
4
+ /** The effective deadline inherited by child effects in the current fiber. */
5
+ export declare const Deadline: Context.Reference<number | undefined>;
6
+ /** Combines a parent deadline with a child timeout using the earliest instant. */
7
+ export declare function composeDeadline(parentDeadline: Deadline | undefined, timeoutMs: number | undefined, now: number): Deadline | undefined;
8
+ /** Runs an effect until an absolute deadline, preserving the deadline for children. */
9
+ export declare function withDeadline<A, E, R>(effect: Effect.Effect<A, E, R>, deadline: Deadline | undefined): Effect.Effect<A, E | Cause.TimeoutError, R>;
10
+ /** Applies a child timeout while inheriting an earlier deadline from the fiber. */
11
+ export declare function withTimeout<A, E, R>(effect: Effect.Effect<A, E, R>, timeoutMs: number, parentDeadline?: Deadline): Effect.Effect<A, E | Cause.TimeoutError, R>;
12
+ //# sourceMappingURL=deadline.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"deadline.d.ts","sourceRoot":"","sources":["../src/deadline.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAEhD,kDAAkD;AAClD,MAAM,MAAM,QAAQ,GAAG,MAAM,CAAC;AAE9B,8EAA8E;AAC9E,eAAO,MAAM,QAAQ,uCAEnB,CAAC;AAEH,kFAAkF;AAClF,wBAAgB,eAAe,CAC7B,cAAc,EAAE,QAAQ,GAAG,SAAS,EACpC,SAAS,EAAE,MAAM,GAAG,SAAS,EAC7B,GAAG,EAAE,MAAM,GACV,QAAQ,GAAG,SAAS,CAWtB;AAED,uFAAuF;AACvF,wBAAgB,YAAY,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAClC,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAC9B,QAAQ,EAAE,QAAQ,GAAG,SAAS,GAC7B,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,YAAY,EAAE,CAAC,CAAC,CAS7C;AAED,mFAAmF;AACnF,wBAAgB,WAAW,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EACjC,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAC9B,SAAS,EAAE,MAAM,EACjB,cAAc,CAAC,EAAE,QAAQ,GACxB,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,YAAY,EAAE,CAAC,CAAC,CAS7C"}
@@ -0,0 +1,57 @@
1
+ import { Cause, Context, Effect } from "effect";
2
+ /** The effective deadline inherited by child effects in the current fiber. */
3
+ export const Deadline = Context.Reference("relkit/runtime/Deadline", {
4
+ defaultValue: () => undefined,
5
+ });
6
+ /** Combines a parent deadline with a child timeout using the earliest instant. */
7
+ export function composeDeadline(parentDeadline, timeoutMs, now) {
8
+ assertTimestamp(now, "now");
9
+ assertDeadline(parentDeadline);
10
+ if (timeoutMs !== undefined && (!Number.isFinite(timeoutMs) || timeoutMs < 0)) {
11
+ throw new RangeError("timeoutMs must be a finite non-negative number");
12
+ }
13
+ const childDeadline = timeoutMs === undefined ? undefined : now + timeoutMs;
14
+ if (childDeadline !== undefined)
15
+ assertTimestamp(childDeadline, "timeoutMs");
16
+ if (parentDeadline === undefined)
17
+ return childDeadline;
18
+ if (childDeadline === undefined)
19
+ return parentDeadline;
20
+ return Math.min(parentDeadline, childDeadline);
21
+ }
22
+ /** Runs an effect until an absolute deadline, preserving the deadline for children. */
23
+ export function withDeadline(effect, deadline) {
24
+ if (deadline === undefined)
25
+ return effect;
26
+ assertDeadline(deadline);
27
+ return Effect.clockWith((clock) => {
28
+ const remaining = deadline - clock.currentTimeMillisUnsafe();
29
+ const timed = remaining <= 0 ? Effect.fail(new Cause.TimeoutError()) : Effect.timeout(effect, remaining);
30
+ return Effect.provideService(timed, Deadline, deadline);
31
+ });
32
+ }
33
+ /** Applies a child timeout while inheriting an earlier deadline from the fiber. */
34
+ export function withTimeout(effect, timeoutMs, parentDeadline) {
35
+ return Effect.clockWith((clock) => Effect.gen(function* () {
36
+ const inherited = yield* Effect.service(Deadline);
37
+ const parent = earliest(inherited, parentDeadline);
38
+ const deadline = composeDeadline(parent, timeoutMs, clock.currentTimeMillisUnsafe());
39
+ return yield* withDeadline(effect, deadline);
40
+ }));
41
+ }
42
+ function earliest(first, second) {
43
+ if (first === undefined)
44
+ return second;
45
+ if (second === undefined)
46
+ return first;
47
+ return Math.min(first, second);
48
+ }
49
+ function assertDeadline(value) {
50
+ if (value !== undefined)
51
+ assertTimestamp(value, "deadline");
52
+ }
53
+ function assertTimestamp(value, name) {
54
+ if (!Number.isFinite(value))
55
+ throw new RangeError(`${name} must be a finite number`);
56
+ }
57
+ //# sourceMappingURL=deadline.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"deadline.js","sourceRoot":"","sources":["../src/deadline.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,26 @@
1
+ import type { InvocationRecord, PublicClock, PublicLogger } from "./contracts.js";
2
+ import type { InvocationContextFactory, LocalStructuredLogger, ManagedDependencySources } from "./dispatcher-types.js";
3
+ import type { ManagedDependencyCategory } from "./dispatcher-types.js";
4
+ export declare class DependencyNotConfiguredError extends Error {
5
+ readonly code: "RELKIT_DEPENDENCY_NOT_CONFIGURED";
6
+ readonly category: ManagedDependencyCategory;
7
+ readonly dependencyName: string;
8
+ constructor(category: ManagedDependencyCategory, dependencyName: string);
9
+ }
10
+ export declare function createLocalClock(signal: AbortSignal, now?: () => number): PublicClock;
11
+ export declare function createLocalStructuredLogger(record: InvocationRecord, time: PublicClock): LocalStructuredLogger;
12
+ export interface StandaloneContextOptions<Context extends {
13
+ readonly signal: AbortSignal;
14
+ }> {
15
+ readonly factory?: InvocationContextFactory<Context>;
16
+ readonly record: InvocationRecord;
17
+ readonly signal: AbortSignal;
18
+ readonly env: Readonly<Record<string, unknown>>;
19
+ readonly time: PublicClock;
20
+ readonly logger?: PublicLogger;
21
+ readonly clients?: ManagedDependencySources;
22
+ }
23
+ export declare function makeStandaloneContext<Context extends {
24
+ readonly signal: AbortSignal;
25
+ }>(options: StandaloneContextOptions<Context>): Promise<Context>;
26
+ //# sourceMappingURL=dispatcher-context.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dispatcher-context.d.ts","sourceRoot":"","sources":["../src/dispatcher-context.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,gBAAgB,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAElF,OAAO,KAAK,EACV,wBAAwB,EACxB,qBAAqB,EACrB,wBAAwB,EAEzB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,uBAAuB,CAAC;AAEvE,qBAAa,4BAA6B,SAAQ,KAAK;IACrD,QAAQ,CAAC,IAAI,EAAG,kCAAkC,CAAU;IAC5D,QAAQ,CAAC,QAAQ,EAAE,yBAAyB,CAAC;IAC7C,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;gBAEpB,QAAQ,EAAE,yBAAyB,EAAE,cAAc,EAAE,MAAM;CAMxE;AAED,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,WAAW,EAAE,GAAG,GAAE,MAAM,MAAiB,GAAG,WAAW,CAyB/F;AAED,wBAAgB,2BAA2B,CACzC,MAAM,EAAE,gBAAgB,EACxB,IAAI,EAAE,WAAW,GAChB,qBAAqB,CAoCvB;AAED,MAAM,WAAW,wBAAwB,CAAC,OAAO,SAAS;IAAE,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAA;CAAE;IACxF,QAAQ,CAAC,OAAO,CAAC,EAAE,wBAAwB,CAAC,OAAO,CAAC,CAAC;IACrD,QAAQ,CAAC,MAAM,EAAE,gBAAgB,CAAC;IAClC,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAC;IAC7B,QAAQ,CAAC,GAAG,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;IAChD,QAAQ,CAAC,IAAI,EAAE,WAAW,CAAC;IAC3B,QAAQ,CAAC,MAAM,CAAC,EAAE,YAAY,CAAC;IAC/B,QAAQ,CAAC,OAAO,CAAC,EAAE,wBAAwB,CAAC;CAC7C;AAED,wBAAsB,qBAAqB,CAAC,OAAO,SAAS;IAAE,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAA;CAAE,EAC1F,OAAO,EAAE,wBAAwB,CAAC,OAAO,CAAC,GACzC,OAAO,CAAC,OAAO,CAAC,CAgBlB"}
@@ -0,0 +1,90 @@
1
+ import { abortablePromise } from "./abort.js";
2
+ import { makeContext } from "./context.js";
3
+ import { MANAGED_DEPENDENCY_CATEGORIES } from "./dispatcher-types.js";
4
+ export class DependencyNotConfiguredError extends Error {
5
+ code = "RELKIT_DEPENDENCY_NOT_CONFIGURED";
6
+ category;
7
+ dependencyName;
8
+ constructor(category, dependencyName) {
9
+ super(`Managed dependency "${category}.${dependencyName}" has no configured standalone client`);
10
+ this.name = "DependencyNotConfiguredError";
11
+ this.category = category;
12
+ this.dependencyName = dependencyName;
13
+ }
14
+ }
15
+ export function createLocalClock(signal, now = Date.now) {
16
+ return Object.freeze({
17
+ now: () => new Date(now()),
18
+ sleep: (milliseconds) => {
19
+ if (!Number.isFinite(milliseconds) || milliseconds < 0) {
20
+ return Promise.reject(new RangeError("sleep duration must be finite and non-negative"));
21
+ }
22
+ return abortablePromise(signal, (sleepSignal) => new Promise((resolve, reject) => {
23
+ const onAbort = () => {
24
+ clearTimeout(timer);
25
+ reject(sleepSignal.reason ?? new Error("Operation aborted"));
26
+ };
27
+ const timer = setTimeout(() => {
28
+ sleepSignal.removeEventListener("abort", onAbort);
29
+ resolve();
30
+ }, milliseconds);
31
+ sleepSignal.addEventListener("abort", onAbort, { once: true });
32
+ if (sleepSignal.aborted)
33
+ onAbort();
34
+ }));
35
+ },
36
+ });
37
+ }
38
+ export function createLocalStructuredLogger(record, time) {
39
+ const entries = [];
40
+ const write = (level, message, fields) => {
41
+ entries.push(Object.freeze({
42
+ level,
43
+ message,
44
+ fields: Object.freeze({ ...(fields ?? {}) }),
45
+ timestamp: time.now().toISOString(),
46
+ invocationId: record.id,
47
+ traceId: record.traceId,
48
+ functionId: record.functionId,
49
+ source: record.source,
50
+ ...(record.serviceId === undefined ? {} : { serviceId: record.serviceId }),
51
+ }));
52
+ };
53
+ return Object.freeze({
54
+ trace: (message, fields) => write("trace", message, fields),
55
+ debug: (message, fields) => write("debug", message, fields),
56
+ info: (message, fields) => write("info", message, fields),
57
+ warn: (message, fields) => write("warn", message, fields),
58
+ error: (message, fields) => write("error", message, fields),
59
+ get records() {
60
+ return Object.freeze([...entries]);
61
+ },
62
+ });
63
+ }
64
+ export async function makeStandaloneContext(options) {
65
+ const base = await makeContext(options.factory, options.record, options.signal, options.env, options.time);
66
+ const installManagedMaps = options.factory === undefined || options.clients !== undefined;
67
+ return Object.freeze({
68
+ ...base,
69
+ ...(options.logger === undefined && options.factory !== undefined
70
+ ? {}
71
+ : { log: options.logger ?? createLocalStructuredLogger(options.record, options.time) }),
72
+ ...(installManagedMaps ? createManagedMaps(options.clients) : {}),
73
+ });
74
+ }
75
+ function createManagedMaps(sources) {
76
+ const categories = MANAGED_DEPENDENCY_CATEGORIES;
77
+ return Object.fromEntries(categories.map((category) => [category, configuredMap(category, sources?.[category])]));
78
+ }
79
+ function configuredMap(category, source) {
80
+ const target = Object.freeze({ ...(source ?? {}) });
81
+ return new Proxy(target, {
82
+ get(current, property, receiver) {
83
+ if (typeof property === "string" && !Object.hasOwn(current, property)) {
84
+ throw new DependencyNotConfiguredError(category, property);
85
+ }
86
+ return Reflect.get(current, property, receiver);
87
+ },
88
+ });
89
+ }
90
+ //# sourceMappingURL=dispatcher-context.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dispatcher-context.js","sourceRoot":"","sources":["../src/dispatcher-context.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ import type { InvocationDispatchScope } from "./dispatcher-types.js";
2
+ export declare function currentInvocationScope(): InvocationDispatchScope | undefined;
3
+ export declare function runInInvocationScope<A>(scope: InvocationDispatchScope, callback: () => A): A;
4
+ //# sourceMappingURL=dispatcher-scope.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dispatcher-scope.d.ts","sourceRoot":"","sources":["../src/dispatcher-scope.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,uBAAuB,CAAC;AAIrE,wBAAgB,sBAAsB,IAAI,uBAAuB,GAAG,SAAS,CAE5E;AAED,wBAAgB,oBAAoB,CAAC,CAAC,EAAE,KAAK,EAAE,uBAAuB,EAAE,QAAQ,EAAE,MAAM,CAAC,GAAG,CAAC,CAE5F"}
@@ -0,0 +1,9 @@
1
+ import { AsyncLocalStorage } from "node:async_hooks";
2
+ const storage = new AsyncLocalStorage();
3
+ export function currentInvocationScope() {
4
+ return storage.getStore();
5
+ }
6
+ export function runInInvocationScope(scope, callback) {
7
+ return storage.run(scope, callback);
8
+ }
9
+ //# sourceMappingURL=dispatcher-scope.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dispatcher-scope.js","sourceRoot":"","sources":["../src/dispatcher-scope.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAGrD,MAAM,OAAO,GAAG,IAAI,iBAAiB,EAA2B,CAAC;AAEjE,MAAM,UAAU,sBAAsB;IACpC,OAAO,OAAO,CAAC,QAAQ,EAAE,CAAC;AAC5B,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAI,KAA8B,EAAE,QAAiB;IACvF,OAAO,OAAO,CAAC,GAAG,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;AACtC,CAAC"}