@xemahq/temporal-runtime 0.6.0 → 0.7.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 (98) hide show
  1. package/README.md +154 -11
  2. package/dist/bin/controller-token-publisher.d.ts +3 -0
  3. package/dist/bin/controller-token-publisher.d.ts.map +1 -0
  4. package/dist/bin/controller-token-publisher.js +18 -0
  5. package/dist/bin/controller-token-publisher.js.map +1 -0
  6. package/dist/index.d.ts +11 -0
  7. package/dist/index.d.ts.map +1 -1
  8. package/dist/index.js +11 -0
  9. package/dist/index.js.map +1 -1
  10. package/dist/lib/access-token.d.ts +11 -0
  11. package/dist/lib/access-token.d.ts.map +1 -0
  12. package/dist/lib/access-token.js +30 -0
  13. package/dist/lib/access-token.js.map +1 -0
  14. package/dist/lib/base-temporal-client.service.d.ts +3 -2
  15. package/dist/lib/base-temporal-client.service.d.ts.map +1 -1
  16. package/dist/lib/base-temporal-client.service.js +5 -5
  17. package/dist/lib/base-temporal-client.service.js.map +1 -1
  18. package/dist/lib/biome-worker.d.ts +83 -0
  19. package/dist/lib/biome-worker.d.ts.map +1 -0
  20. package/dist/lib/biome-worker.js +253 -0
  21. package/dist/lib/biome-worker.js.map +1 -0
  22. package/dist/lib/bounded-retry.d.ts +22 -0
  23. package/dist/lib/bounded-retry.d.ts.map +1 -0
  24. package/dist/lib/bounded-retry.js +67 -0
  25. package/dist/lib/bounded-retry.js.map +1 -0
  26. package/dist/lib/client-credentials-token-source.d.ts +23 -0
  27. package/dist/lib/client-credentials-token-source.d.ts.map +1 -0
  28. package/dist/lib/client-credentials-token-source.js +108 -0
  29. package/dist/lib/client-credentials-token-source.js.map +1 -0
  30. package/dist/lib/connection.d.ts +48 -9
  31. package/dist/lib/connection.d.ts.map +1 -1
  32. package/dist/lib/connection.js +153 -41
  33. package/dist/lib/connection.js.map +1 -1
  34. package/dist/lib/controller-token-publisher.d.ts +51 -0
  35. package/dist/lib/controller-token-publisher.d.ts.map +1 -0
  36. package/dist/lib/controller-token-publisher.js +116 -0
  37. package/dist/lib/controller-token-publisher.js.map +1 -0
  38. package/dist/lib/fairness-constants.d.ts +3 -0
  39. package/dist/lib/fairness-constants.d.ts.map +1 -0
  40. package/dist/lib/fairness-constants.js +6 -0
  41. package/dist/lib/fairness-constants.js.map +1 -0
  42. package/dist/lib/fairness.d.ts +13 -0
  43. package/dist/lib/fairness.d.ts.map +1 -0
  44. package/dist/lib/fairness.js +56 -0
  45. package/dist/lib/fairness.js.map +1 -0
  46. package/dist/lib/org-erasure.d.ts +13 -0
  47. package/dist/lib/org-erasure.d.ts.map +1 -0
  48. package/dist/lib/org-erasure.js +68 -0
  49. package/dist/lib/org-erasure.js.map +1 -0
  50. package/dist/lib/proactive-token-refresher.d.ts +47 -0
  51. package/dist/lib/proactive-token-refresher.d.ts.map +1 -0
  52. package/dist/lib/proactive-token-refresher.js +147 -0
  53. package/dist/lib/proactive-token-refresher.js.map +1 -0
  54. package/dist/lib/search-attribute-constants.d.ts +3 -0
  55. package/dist/lib/search-attribute-constants.d.ts.map +1 -0
  56. package/dist/lib/search-attribute-constants.js +6 -0
  57. package/dist/lib/search-attribute-constants.js.map +1 -0
  58. package/dist/lib/search-attributes.d.ts +4 -18
  59. package/dist/lib/search-attributes.d.ts.map +1 -1
  60. package/dist/lib/search-attributes.js +33 -40
  61. package/dist/lib/search-attributes.js.map +1 -1
  62. package/dist/lib/standalone-activity.d.ts +23 -0
  63. package/dist/lib/standalone-activity.d.ts.map +1 -0
  64. package/dist/lib/standalone-activity.js +48 -0
  65. package/dist/lib/standalone-activity.js.map +1 -0
  66. package/dist/lib/versioned-worker.d.ts +26 -0
  67. package/dist/lib/versioned-worker.d.ts.map +1 -0
  68. package/dist/lib/versioned-worker.js +60 -0
  69. package/dist/lib/versioned-worker.js.map +1 -0
  70. package/dist/lib/worker-deployment-version.d.ts +8 -0
  71. package/dist/lib/worker-deployment-version.d.ts.map +1 -0
  72. package/dist/lib/worker-deployment-version.js +45 -0
  73. package/dist/lib/worker-deployment-version.js.map +1 -0
  74. package/dist/lib/worker.d.ts +7 -7
  75. package/dist/lib/worker.d.ts.map +1 -1
  76. package/dist/lib/worker.js +33 -37
  77. package/dist/lib/worker.js.map +1 -1
  78. package/dist/lib/workflow-interceptors/fairness-guard.d.ts +4 -0
  79. package/dist/lib/workflow-interceptors/fairness-guard.d.ts.map +1 -0
  80. package/dist/lib/workflow-interceptors/fairness-guard.js +65 -0
  81. package/dist/lib/workflow-interceptors/fairness-guard.js.map +1 -0
  82. package/dist/lib/workflow-interceptors/fairness-propagation.d.ts +3 -0
  83. package/dist/lib/workflow-interceptors/fairness-propagation.d.ts.map +1 -0
  84. package/dist/lib/workflow-interceptors/fairness-propagation.js +6 -0
  85. package/dist/lib/workflow-interceptors/fairness-propagation.js.map +1 -0
  86. package/dist/lib/workflow-interceptors/org-fairness-required.d.ts +3 -0
  87. package/dist/lib/workflow-interceptors/org-fairness-required.d.ts.map +1 -0
  88. package/dist/lib/workflow-interceptors/org-fairness-required.js +6 -0
  89. package/dist/lib/workflow-interceptors/org-fairness-required.js.map +1 -0
  90. package/dist/lib/workflow-interceptors/org-search-attribute.d.ts +3 -0
  91. package/dist/lib/workflow-interceptors/org-search-attribute.d.ts.map +1 -0
  92. package/dist/lib/workflow-interceptors/org-search-attribute.js +49 -0
  93. package/dist/lib/workflow-interceptors/org-search-attribute.js.map +1 -0
  94. package/dist/lib/workflow-purity.d.ts +27 -0
  95. package/dist/lib/workflow-purity.d.ts.map +1 -0
  96. package/dist/lib/workflow-purity.js +115 -0
  97. package/dist/lib/workflow-purity.js.map +1 -0
  98. package/package.json +21 -10
@@ -0,0 +1,47 @@
1
+ import type { AccessToken, AccessTokenSource } from './access-token';
2
+ import { type BoundedRetryPolicy, type RetryClock } from './bounded-retry';
3
+ export type AccessTokenListener = (token: AccessToken) => void | Promise<void>;
4
+ export interface TokenRefresherLogger {
5
+ log(message: string): void;
6
+ warn(message: string): void;
7
+ error(message: string): void;
8
+ }
9
+ export interface ProactiveTokenRefresherOptions {
10
+ readonly source: AccessTokenSource;
11
+ readonly description: string;
12
+ readonly refreshAtFraction?: number;
13
+ readonly startupRetry?: BoundedRetryPolicy;
14
+ readonly refreshRetryInitialDelayMs?: number;
15
+ readonly refreshRetryMaxDelayMs?: number;
16
+ readonly onFatal?: (error: Error) => void;
17
+ readonly logger?: TokenRefresherLogger;
18
+ readonly clock?: RetryClock;
19
+ }
20
+ export declare class TokenRefreshFatalError extends Error {
21
+ constructor(message: string, cause?: unknown);
22
+ }
23
+ export declare class ProactiveTokenRefresher {
24
+ private readonly options;
25
+ private current;
26
+ private obtainedAt;
27
+ private timer;
28
+ private stopped;
29
+ private readonly listeners;
30
+ private readonly clock;
31
+ private readonly logger;
32
+ private readonly fraction;
33
+ private readonly retryInitialMs;
34
+ private readonly retryMaxMs;
35
+ private readonly onFatal;
36
+ private constructor();
37
+ static start(options: ProactiveTokenRefresherOptions): Promise<ProactiveTokenRefresher>;
38
+ token(): string;
39
+ currentToken(): AccessToken;
40
+ subscribe(listener: AccessTokenListener): Promise<() => void>;
41
+ stop(): void;
42
+ private scheduleNext;
43
+ private arm;
44
+ private refresh;
45
+ private fail;
46
+ }
47
+ //# sourceMappingURL=proactive-token-refresher.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"proactive-token-refresher.d.ts","sourceRoot":"","sources":["../../src/lib/proactive-token-refresher.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AACrE,OAAO,EAIL,KAAK,kBAAkB,EACvB,KAAK,UAAU,EAChB,MAAM,iBAAiB,CAAC;AAGzB,MAAM,MAAM,mBAAmB,GAAG,CAAC,KAAK,EAAE,WAAW,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;AAG/E,MAAM,WAAW,oBAAoB;IACnC,GAAG,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,IAAI,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,KAAK,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;CAC9B;AAED,MAAM,WAAW,8BAA8B;IAE7C,QAAQ,CAAC,MAAM,EAAE,iBAAiB,CAAC;IAEnC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAM7B,QAAQ,CAAC,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAEpC,QAAQ,CAAC,YAAY,CAAC,EAAE,kBAAkB,CAAC;IAE3C,QAAQ,CAAC,0BAA0B,CAAC,EAAE,MAAM,CAAC;IAC7C,QAAQ,CAAC,sBAAsB,CAAC,EAAE,MAAM,CAAC;IASzC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC;IAC1C,QAAQ,CAAC,MAAM,CAAC,EAAE,oBAAoB,CAAC;IACvC,QAAQ,CAAC,KAAK,CAAC,EAAE,UAAU,CAAC;CAC7B;AAOD,qBAAa,sBAAuB,SAAQ,KAAK;gBACnC,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,OAAO;CAI7C;AA+BD,qBAAa,uBAAuB;IAchC,OAAO,CAAC,QAAQ,CAAC,OAAO;IAb1B,OAAO,CAAC,OAAO,CAAc;IAC7B,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,KAAK,CAAiB;IAC9B,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAkC;IAC5D,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAa;IACnC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAuB;IAC9C,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAS;IAClC,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAS;IACxC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAS;IACpC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAyB;IAEjD,OAAO;WAmBM,KAAK,CAAC,OAAO,EAAE,8BAA8B,GAAG,OAAO,CAAC,uBAAuB,CAAC;IAwB7F,KAAK,IAAI,MAAM;IAKf,YAAY,IAAI,WAAW;IAerB,SAAS,CAAC,QAAQ,EAAE,mBAAmB,GAAG,OAAO,CAAC,MAAM,IAAI,CAAC;IASnE,IAAI,IAAI,IAAI;IASZ,OAAO,CAAC,YAAY;IAMpB,OAAO,CAAC,GAAG;YAQG,OAAO;IAgDrB,OAAO,CAAC,IAAI;CAMb"}
@@ -0,0 +1,147 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ProactiveTokenRefresher = exports.TokenRefreshFatalError = void 0;
4
+ const bounded_retry_1 = require("./bounded-retry");
5
+ const DEFAULT_REFRESH_AT_FRACTION = 0.75;
6
+ const DEFAULT_REFRESH_RETRY_INITIAL_MS = 1_000;
7
+ const DEFAULT_REFRESH_RETRY_MAX_MS = 30_000;
8
+ class TokenRefreshFatalError extends Error {
9
+ constructor(message, cause) {
10
+ super(message, cause === undefined ? undefined : { cause });
11
+ this.name = 'TokenRefreshFatalError';
12
+ }
13
+ }
14
+ exports.TokenRefreshFatalError = TokenRefreshFatalError;
15
+ function throwUncaught(error) {
16
+ setImmediate(() => {
17
+ throw error;
18
+ });
19
+ }
20
+ const SILENT_LOGGER = { log: () => { }, warn: () => { }, error: () => { } };
21
+ class ProactiveTokenRefresher {
22
+ options;
23
+ current;
24
+ obtainedAt;
25
+ timer = null;
26
+ stopped = false;
27
+ listeners = new Set();
28
+ clock;
29
+ logger;
30
+ fraction;
31
+ retryInitialMs;
32
+ retryMaxMs;
33
+ onFatal;
34
+ constructor(options, first) {
35
+ this.options = options;
36
+ this.clock = options.clock ?? bounded_retry_1.SYSTEM_CLOCK;
37
+ this.logger = options.logger ?? SILENT_LOGGER;
38
+ this.fraction = options.refreshAtFraction ?? DEFAULT_REFRESH_AT_FRACTION;
39
+ this.retryInitialMs = options.refreshRetryInitialDelayMs ?? DEFAULT_REFRESH_RETRY_INITIAL_MS;
40
+ this.retryMaxMs = options.refreshRetryMaxDelayMs ?? DEFAULT_REFRESH_RETRY_MAX_MS;
41
+ this.onFatal = options.onFatal ?? throwUncaught;
42
+ this.current = first;
43
+ this.obtainedAt = this.clock.now();
44
+ }
45
+ static async start(options) {
46
+ const fraction = options.refreshAtFraction ?? DEFAULT_REFRESH_AT_FRACTION;
47
+ if (!(fraction > 0 && fraction < 1)) {
48
+ throw new Error(`refreshAtFraction must be in (0, 1) (got ${fraction}).`);
49
+ }
50
+ const clock = options.clock ?? bounded_retry_1.SYSTEM_CLOCK;
51
+ const logger = options.logger ?? SILENT_LOGGER;
52
+ const first = await (0, bounded_retry_1.withBoundedRetry)(`Obtaining the Temporal access token for ${options.description}`, options.source, options.startupRetry ?? bounded_retry_1.DEFAULT_BOUNDED_RETRY_POLICY, clock, (attempt, error, delay) => logger.warn(`Temporal access token for ${options.description}: attempt ${attempt} failed ` +
53
+ `(${describe(error)}); retrying in ${delay}ms.`));
54
+ const refresher = new ProactiveTokenRefresher(options, first);
55
+ refresher.scheduleNext();
56
+ return refresher;
57
+ }
58
+ token() {
59
+ return this.currentToken().value;
60
+ }
61
+ currentToken() {
62
+ if (this.stopped) {
63
+ throw new TokenRefreshFatalError(`The Temporal access token refresher for ${this.options.description} is stopped.`);
64
+ }
65
+ return this.current;
66
+ }
67
+ async subscribe(listener) {
68
+ await listener(this.currentToken());
69
+ this.listeners.add(listener);
70
+ return () => {
71
+ this.listeners.delete(listener);
72
+ };
73
+ }
74
+ stop() {
75
+ this.stopped = true;
76
+ if (this.timer !== null) {
77
+ this.clock.clearTimeout(this.timer);
78
+ this.timer = null;
79
+ }
80
+ this.listeners.clear();
81
+ }
82
+ scheduleNext() {
83
+ const lifetime = this.current.expiresAt - this.obtainedAt;
84
+ const refreshAt = this.obtainedAt + Math.max(0, lifetime) * this.fraction;
85
+ this.arm(Math.max(0, refreshAt - this.clock.now()), 1);
86
+ }
87
+ arm(delayMs, attempt) {
88
+ if (this.stopped)
89
+ return;
90
+ this.timer = this.clock.setTimeout(() => {
91
+ this.timer = null;
92
+ void this.refresh(attempt);
93
+ }, delayMs);
94
+ }
95
+ async refresh(attempt) {
96
+ let next;
97
+ try {
98
+ next = await this.options.source();
99
+ }
100
+ catch (error) {
101
+ if (this.stopped)
102
+ return;
103
+ const now = this.clock.now();
104
+ const delay = Math.min(this.retryMaxMs, this.retryInitialMs * 2 ** (attempt - 1));
105
+ if (now + delay >= this.current.expiresAt) {
106
+ this.fail(new TokenRefreshFatalError(`The Temporal access token for ${this.options.description} expires before ` +
107
+ `another refresh attempt could complete (attempt ${attempt} failed: ` +
108
+ `${describe(error)}). Refusing to continue without a valid credential.`, error));
109
+ return;
110
+ }
111
+ this.logger.warn(`Temporal access token refresh for ${this.options.description}: attempt ${attempt} ` +
112
+ `failed (${describe(error)}); retrying in ${delay}ms ` +
113
+ `(${this.current.expiresAt - now}ms of validity left).`);
114
+ this.arm(delay, attempt + 1);
115
+ return;
116
+ }
117
+ if (this.stopped)
118
+ return;
119
+ this.current = next;
120
+ this.obtainedAt = this.clock.now();
121
+ for (const listener of [...this.listeners]) {
122
+ try {
123
+ await listener(next);
124
+ }
125
+ catch (error) {
126
+ this.fail(new TokenRefreshFatalError(`A holder of the Temporal access token for ${this.options.description} could ` +
127
+ `not apply the refreshed token: ${describe(error)}`, error));
128
+ return;
129
+ }
130
+ if (this.stopped)
131
+ return;
132
+ }
133
+ this.scheduleNext();
134
+ }
135
+ fail(error) {
136
+ if (this.stopped)
137
+ return;
138
+ this.logger.error(error.message);
139
+ this.stop();
140
+ this.onFatal(error);
141
+ }
142
+ }
143
+ exports.ProactiveTokenRefresher = ProactiveTokenRefresher;
144
+ function describe(error) {
145
+ return error instanceof Error ? error.message : String(error);
146
+ }
147
+ //# sourceMappingURL=proactive-token-refresher.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"proactive-token-refresher.js","sourceRoot":"","sources":["../../src/lib/proactive-token-refresher.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ export declare const SEARCH_ATTR_ORG_ID = "OrgId";
2
+ export declare const ORG_SEARCH_ATTRIBUTE_OVERRIDDEN = "ORG_SEARCH_ATTRIBUTE_OVERRIDDEN";
3
+ //# sourceMappingURL=search-attribute-constants.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"search-attribute-constants.d.ts","sourceRoot":"","sources":["../../src/lib/search-attribute-constants.ts"],"names":[],"mappings":"AAOA,eAAO,MAAM,kBAAkB,UAAU,CAAC;AAO1C,eAAO,MAAM,+BAA+B,oCAAoC,CAAC"}
@@ -0,0 +1,6 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ORG_SEARCH_ATTRIBUTE_OVERRIDDEN = exports.SEARCH_ATTR_ORG_ID = void 0;
4
+ exports.SEARCH_ATTR_ORG_ID = 'OrgId';
5
+ exports.ORG_SEARCH_ATTRIBUTE_OVERRIDDEN = 'ORG_SEARCH_ATTRIBUTE_OVERRIDDEN';
6
+ //# sourceMappingURL=search-attribute-constants.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"search-attribute-constants.js","sourceRoot":"","sources":["../../src/lib/search-attribute-constants.ts"],"names":[],"mappings":";;;AAOa,QAAA,kBAAkB,GAAG,OAAO,CAAC;AAO7B,QAAA,+BAA+B,GAAG,iCAAiC,CAAC"}
@@ -1,28 +1,14 @@
1
1
  import { temporal } from '@temporalio/proto';
2
2
  import type { Connection } from '@temporalio/client';
3
- import type { PlatformWorkflowDomain } from '@xemahq/contracts/workflow';
4
- export declare const SEARCH_ATTR_ORG_ID = "OrgId";
5
- export declare const SEARCH_ATTR_PROJECT_ID = "ProjectId";
6
- export declare const SEARCH_ATTR_WORKFLOW_DOMAIN = "WorkflowDomain";
7
- export declare const SEARCH_ATTR_SUBJECT_ID = "SubjectId";
8
- export declare const SEARCH_ATTR_INTEGRATION_PROVIDER_ID = "IntegrationProviderId";
9
- export declare const SEARCH_ATTR_REGISTRY_KIND = "RegistryKind";
10
- export declare const SEARCH_ATTR_IMAGE_DIGEST = "ImageDigest";
11
- interface PlatformSearchAttribute {
3
+ export { SEARCH_ATTR_ORG_ID, ORG_SEARCH_ATTRIBUTE_OVERRIDDEN, } from './search-attribute-constants';
4
+ export interface PlatformSearchAttribute {
12
5
  readonly name: string;
13
6
  readonly type: temporal.api.enums.v1.IndexedValueType;
14
7
  }
15
8
  export declare const PLATFORM_SEARCH_ATTRIBUTES: readonly PlatformSearchAttribute[];
16
9
  export interface PlatformSearchAttributeInput {
17
- readonly workflowDomain: PlatformWorkflowDomain;
18
- readonly orgId?: string;
19
- readonly projectId?: string;
20
- readonly subjectId?: string;
10
+ readonly orgId: string | null;
21
11
  }
22
12
  export declare function buildPlatformSearchAttributes(input: PlatformSearchAttributeInput): Record<string, string[]>;
23
- export interface RegisterSearchAttributesResult {
24
- readonly registered: readonly string[];
25
- }
26
- export declare function registerPlatformSearchAttributes(connection: Connection, namespace: string): Promise<RegisterSearchAttributesResult>;
27
- export {};
13
+ export declare function verifyPlatformSearchAttributes(connection: Pick<Connection, 'operatorService'>, namespace: string): Promise<void>;
28
14
  //# sourceMappingURL=search-attributes.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"search-attributes.d.ts","sourceRoot":"","sources":["../../src/lib/search-attributes.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAE7C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,4BAA4B,CAAC;AAkBzE,eAAO,MAAM,kBAAkB,UAAU,CAAC;AAC1C,eAAO,MAAM,sBAAsB,cAAc,CAAC;AAClD,eAAO,MAAM,2BAA2B,mBAAmB,CAAC;AAC5D,eAAO,MAAM,sBAAsB,cAAc,CAAC;AAElD,eAAO,MAAM,mCAAmC,0BAA0B,CAAC;AAE3E,eAAO,MAAM,yBAAyB,iBAAiB,CAAC;AAExD,eAAO,MAAM,wBAAwB,gBAAgB,CAAC;AAEtD,UAAU,uBAAuB;IAC/B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,gBAAgB,CAAC;CACvD;AAMD,eAAO,MAAM,0BAA0B,EAAE,SAAS,uBAAuB,EAQxE,CAAC;AAGF,MAAM,WAAW,4BAA4B;IAE3C,QAAQ,CAAC,cAAc,EAAE,sBAAsB,CAAC;IAEhD,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IAExB,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAE5B,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;CAC7B;AAOD,wBAAgB,6BAA6B,CAC3C,KAAK,EAAE,4BAA4B,GAClC,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAc1B;AAGD,MAAM,WAAW,8BAA8B;IAC7C,QAAQ,CAAC,UAAU,EAAE,SAAS,MAAM,EAAE,CAAC;CACxC;AAiBD,wBAAsB,gCAAgC,CACpD,UAAU,EAAE,UAAU,EACtB,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,8BAA8B,CAAC,CAqBzC"}
1
+ {"version":3,"file":"search-attributes.d.ts","sourceRoot":"","sources":["../../src/lib/search-attributes.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAI7C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAqBrD,OAAO,EACL,kBAAkB,EAClB,+BAA+B,GAChC,MAAM,8BAA8B,CAAC;AAEtC,MAAM,WAAW,uBAAuB;IACtC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,gBAAgB,CAAC;CACvD;AAMD,eAAO,MAAM,0BAA0B,EAAE,SAAS,uBAAuB,EAExE,CAAC;AAGF,MAAM,WAAW,4BAA4B;IAC3C,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;CAC/B;AAOD,wBAAgB,6BAA6B,CAC3C,KAAK,EAAE,4BAA4B,GAClC,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAW1B;AAaD,wBAAsB,8BAA8B,CAClD,UAAU,EAAE,IAAI,CAAC,UAAU,EAAE,iBAAiB,CAAC,EAC/C,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,IAAI,CAAC,CA4Bf"}
@@ -1,58 +1,51 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.PLATFORM_SEARCH_ATTRIBUTES = exports.SEARCH_ATTR_IMAGE_DIGEST = exports.SEARCH_ATTR_REGISTRY_KIND = exports.SEARCH_ATTR_INTEGRATION_PROVIDER_ID = exports.SEARCH_ATTR_SUBJECT_ID = exports.SEARCH_ATTR_WORKFLOW_DOMAIN = exports.SEARCH_ATTR_PROJECT_ID = exports.SEARCH_ATTR_ORG_ID = void 0;
3
+ exports.PLATFORM_SEARCH_ATTRIBUTES = exports.ORG_SEARCH_ATTRIBUTE_OVERRIDDEN = exports.SEARCH_ATTR_ORG_ID = void 0;
4
4
  exports.buildPlatformSearchAttributes = buildPlatformSearchAttributes;
5
- exports.registerPlatformSearchAttributes = registerPlatformSearchAttributes;
5
+ exports.verifyPlatformSearchAttributes = verifyPlatformSearchAttributes;
6
6
  const proto_1 = require("@temporalio/proto");
7
- exports.SEARCH_ATTR_ORG_ID = 'OrgId';
8
- exports.SEARCH_ATTR_PROJECT_ID = 'ProjectId';
9
- exports.SEARCH_ATTR_WORKFLOW_DOMAIN = 'WorkflowDomain';
10
- exports.SEARCH_ATTR_SUBJECT_ID = 'SubjectId';
11
- exports.SEARCH_ATTR_INTEGRATION_PROVIDER_ID = 'IntegrationProviderId';
12
- exports.SEARCH_ATTR_REGISTRY_KIND = 'RegistryKind';
13
- exports.SEARCH_ATTR_IMAGE_DIGEST = 'ImageDigest';
7
+ const search_attribute_constants_1 = require("./search-attribute-constants");
8
+ var search_attribute_constants_2 = require("./search-attribute-constants");
9
+ Object.defineProperty(exports, "SEARCH_ATTR_ORG_ID", { enumerable: true, get: function () { return search_attribute_constants_2.SEARCH_ATTR_ORG_ID; } });
10
+ Object.defineProperty(exports, "ORG_SEARCH_ATTRIBUTE_OVERRIDDEN", { enumerable: true, get: function () { return search_attribute_constants_2.ORG_SEARCH_ATTRIBUTE_OVERRIDDEN; } });
14
11
  const KEYWORD = proto_1.temporal.api.enums.v1.IndexedValueType.INDEXED_VALUE_TYPE_KEYWORD;
15
12
  exports.PLATFORM_SEARCH_ATTRIBUTES = [
16
- { name: exports.SEARCH_ATTR_ORG_ID, type: KEYWORD },
17
- { name: exports.SEARCH_ATTR_PROJECT_ID, type: KEYWORD },
18
- { name: exports.SEARCH_ATTR_WORKFLOW_DOMAIN, type: KEYWORD },
19
- { name: exports.SEARCH_ATTR_SUBJECT_ID, type: KEYWORD },
20
- { name: exports.SEARCH_ATTR_INTEGRATION_PROVIDER_ID, type: KEYWORD },
21
- { name: exports.SEARCH_ATTR_REGISTRY_KIND, type: KEYWORD },
22
- { name: exports.SEARCH_ATTR_IMAGE_DIGEST, type: KEYWORD },
13
+ { name: search_attribute_constants_1.SEARCH_ATTR_ORG_ID, type: KEYWORD },
23
14
  ];
24
15
  function buildPlatformSearchAttributes(input) {
25
- const attrs = {
26
- [exports.SEARCH_ATTR_WORKFLOW_DOMAIN]: [input.workflowDomain],
27
- };
28
- if (input.orgId) {
29
- attrs[exports.SEARCH_ATTR_ORG_ID] = [input.orgId];
16
+ if (input.orgId === null) {
17
+ return {};
30
18
  }
31
- if (input.projectId) {
32
- attrs[exports.SEARCH_ATTR_PROJECT_ID] = [input.projectId];
19
+ if (input.orgId.trim().length === 0 || input.orgId.trim() !== input.orgId) {
20
+ throw new Error(`buildPlatformSearchAttributes: orgId must be a non-empty string without ` +
21
+ `surrounding whitespace, or null for a cluster-wide run; got ${JSON.stringify(input.orgId)}.`);
33
22
  }
34
- if (input.subjectId) {
35
- attrs[exports.SEARCH_ATTR_SUBJECT_ID] = [input.subjectId];
36
- }
37
- return attrs;
23
+ return { [search_attribute_constants_1.SEARCH_ATTR_ORG_ID]: [input.orgId] };
38
24
  }
39
- async function registerPlatformSearchAttributes(connection, namespace) {
25
+ async function verifyPlatformSearchAttributes(connection, namespace) {
40
26
  const listResponse = await connection.operatorService.listSearchAttributes({
41
27
  namespace,
42
28
  });
43
- const existing = new Set(Object.keys(listResponse.customAttributes ?? {}));
44
- const missing = exports.PLATFORM_SEARCH_ATTRIBUTES.filter((attr) => !existing.has(attr.name));
45
- if (missing.length === 0) {
46
- return { registered: [] };
29
+ const existing = listResponse.customAttributes ?? {};
30
+ const missing = [];
31
+ const mistyped = [];
32
+ for (const attr of exports.PLATFORM_SEARCH_ATTRIBUTES) {
33
+ const declared = existing[attr.name];
34
+ if (declared === undefined || declared === null) {
35
+ missing.push(attr.name);
36
+ }
37
+ else if (declared !== attr.type) {
38
+ mistyped.push(`${attr.name} (declared ${proto_1.temporal.api.enums.v1.IndexedValueType[declared]}, ` +
39
+ `required ${proto_1.temporal.api.enums.v1.IndexedValueType[attr.type]})`);
40
+ }
47
41
  }
48
- const searchAttributes = {};
49
- for (const attr of missing) {
50
- searchAttributes[attr.name] = attr.type;
42
+ if (missing.length > 0 || mistyped.length > 0) {
43
+ throw new Error(`Temporal namespace '${namespace}' does not declare the platform search ` +
44
+ `attributes: ${[
45
+ ...(missing.length > 0 ? [`missing ${missing.join(', ')}`] : []),
46
+ ...(mistyped.length > 0 ? [`mistyped ${mistyped.join(', ')}`] : []),
47
+ ].join('; ')}. The shared-infra provisioning Job owns them; a workload ` +
48
+ 'cannot register search attributes.');
51
49
  }
52
- await connection.operatorService.addSearchAttributes({
53
- namespace,
54
- searchAttributes,
55
- });
56
- return { registered: missing.map((attr) => attr.name) };
57
50
  }
58
51
  //# sourceMappingURL=search-attributes.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"search-attributes.js","sourceRoot":"","sources":["../../src/lib/search-attributes.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"search-attributes.js","sourceRoot":"","sources":["../../src/lib/search-attributes.ts"],"names":[],"mappings":";;;AAqDA,sEAaC;AAaD,wEA+BC;AA9GD,6CAA6C;AAE7C,6EAAkE;AAuBlE,2EAGsC;AAFpC,gIAAA,kBAAkB,OAAA;AAClB,6IAAA,+BAA+B,OAAA;AAQjC,MAAM,OAAO,GACX,gBAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,gBAAgB,CAAC,0BAA0B,CAAC;AAGvD,QAAA,0BAA0B,GAAuC;IAC5E,EAAE,IAAI,EAAE,+CAAkB,EAAE,IAAI,EAAE,OAAO,EAAE;CAC5C,CAAC;AAYF,SAAgB,6BAA6B,CAC3C,KAAmC;IAEnC,IAAI,KAAK,CAAC,KAAK,KAAK,IAAI,EAAE,CAAC;QACzB,OAAO,EAAE,CAAC;IACZ,CAAC;IACD,IAAI,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC,IAAI,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,KAAK,CAAC,KAAK,EAAE,CAAC;QAC1E,MAAM,IAAI,KAAK,CACb,0EAA0E;YACxE,+DAA+D,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAChG,CAAC;IACJ,CAAC;IACD,OAAO,EAAE,CAAC,+CAAkB,CAAC,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC;AACjD,CAAC;AAaM,KAAK,UAAU,8BAA8B,CAClD,UAA+C,EAC/C,SAAiB;IAEjB,MAAM,YAAY,GAAG,MAAM,UAAU,CAAC,eAAe,CAAC,oBAAoB,CAAC;QACzE,SAAS;KACV,CAAC,CAAC;IACH,MAAM,QAAQ,GAAG,YAAY,CAAC,gBAAgB,IAAI,EAAE,CAAC;IACrD,MAAM,OAAO,GAAa,EAAE,CAAC;IAC7B,MAAM,QAAQ,GAAa,EAAE,CAAC;IAC9B,KAAK,MAAM,IAAI,IAAI,kCAA0B,EAAE,CAAC;QAC9C,MAAM,QAAQ,GAAG,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACrC,IAAI,QAAQ,KAAK,SAAS,IAAI,QAAQ,KAAK,IAAI,EAAE,CAAC;YAChD,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC1B,CAAC;aAAM,IAAI,QAAQ,KAAK,IAAI,CAAC,IAAI,EAAE,CAAC;YAClC,QAAQ,CAAC,IAAI,CACX,GAAG,IAAI,CAAC,IAAI,cAAc,gBAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,gBAAgB,CAAC,QAAQ,CAAC,IAAI;gBAC5E,YAAY,gBAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CACnE,CAAC;QACJ,CAAC;IACH,CAAC;IACD,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC9C,MAAM,IAAI,KAAK,CACb,uBAAuB,SAAS,yCAAyC;YACvE,eAAe;gBACb,GAAG,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;gBAChE,GAAG,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,YAAY,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;aACpE,CAAC,IAAI,CAAC,IAAI,CAAC,4DAA4D;YACxE,oCAAoC,CACvC,CAAC;IACJ,CAAC;AACH,CAAC"}
@@ -0,0 +1,23 @@
1
+ import type { ActivityHandle, Client } from '@temporalio/client';
2
+ import type { Duration, RetryPolicy } from '@temporalio/common';
3
+ export declare enum StandaloneActivityIdConflict {
4
+ UseExisting = "use-existing",
5
+ Fail = "fail"
6
+ }
7
+ export interface StartStandaloneActivityOptions {
8
+ readonly id: string;
9
+ readonly type: string;
10
+ readonly taskQueue: string;
11
+ readonly orgId: string | null;
12
+ readonly idConflict: StandaloneActivityIdConflict;
13
+ readonly args?: readonly unknown[];
14
+ readonly startToCloseTimeout?: Duration;
15
+ readonly scheduleToCloseTimeout?: Duration;
16
+ readonly scheduleToStartTimeout?: Duration;
17
+ readonly heartbeatTimeout?: Duration;
18
+ readonly retry?: RetryPolicy;
19
+ readonly startDelay?: Duration;
20
+ readonly summary?: string;
21
+ }
22
+ export declare function startStandaloneActivity<R = unknown>(client: Pick<Client, 'activity'>, options: StartStandaloneActivityOptions): Promise<ActivityHandle<R>>;
23
+ //# sourceMappingURL=standalone-activity.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"standalone-activity.d.ts","sourceRoot":"","sources":["../../src/lib/standalone-activity.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,cAAc,EAEd,MAAM,EACP,MAAM,oBAAoB,CAAC;AAC5B,OAAO,KAAK,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAOhE,oBAAY,4BAA4B;IAEtC,WAAW,iBAAiB;IAE5B,IAAI,SAAS;CACd;AAYD,MAAM,WAAW,8BAA8B;IAE7C,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IAEpB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAEtB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAO3B,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,QAAQ,CAAC,UAAU,EAAE,4BAA4B,CAAC;IAClD,QAAQ,CAAC,IAAI,CAAC,EAAE,SAAS,OAAO,EAAE,CAAC;IAEnC,QAAQ,CAAC,mBAAmB,CAAC,EAAE,QAAQ,CAAC;IACxC,QAAQ,CAAC,sBAAsB,CAAC,EAAE,QAAQ,CAAC;IAC3C,QAAQ,CAAC,sBAAsB,CAAC,EAAE,QAAQ,CAAC;IAC3C,QAAQ,CAAC,gBAAgB,CAAC,EAAE,QAAQ,CAAC;IACrC,QAAQ,CAAC,KAAK,CAAC,EAAE,WAAW,CAAC;IAC7B,QAAQ,CAAC,UAAU,CAAC,EAAE,QAAQ,CAAC;IAC/B,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;CAC3B;AASD,wBAAsB,uBAAuB,CAAC,CAAC,GAAG,OAAO,EACvD,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,UAAU,CAAC,EAChC,OAAO,EAAE,8BAA8B,GACtC,OAAO,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAoC5B"}
@@ -0,0 +1,48 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.StandaloneActivityIdConflict = void 0;
4
+ exports.startStandaloneActivity = startStandaloneActivity;
5
+ const fairness_1 = require("./fairness");
6
+ var StandaloneActivityIdConflict;
7
+ (function (StandaloneActivityIdConflict) {
8
+ StandaloneActivityIdConflict["UseExisting"] = "use-existing";
9
+ StandaloneActivityIdConflict["Fail"] = "fail";
10
+ })(StandaloneActivityIdConflict || (exports.StandaloneActivityIdConflict = StandaloneActivityIdConflict = {}));
11
+ const ID_CONFLICT_POLICY = {
12
+ [StandaloneActivityIdConflict.UseExisting]: 'USE_EXISTING',
13
+ [StandaloneActivityIdConflict.Fail]: 'FAIL',
14
+ };
15
+ async function startStandaloneActivity(client, options) {
16
+ if (options.startToCloseTimeout === undefined &&
17
+ options.scheduleToCloseTimeout === undefined) {
18
+ throw new Error(`startStandaloneActivity(${options.type}): set startToCloseTimeout or ` +
19
+ 'scheduleToCloseTimeout; an unbounded activity is never retried to a stop.');
20
+ }
21
+ return client.activity.start(options.type, {
22
+ id: options.id,
23
+ taskQueue: options.taskQueue,
24
+ idConflictPolicy: ID_CONFLICT_POLICY[options.idConflict],
25
+ ...(options.orgId !== null
26
+ ? { priority: { fairnessKey: (0, fairness_1.orgFairnessKey)(options.orgId) } }
27
+ : {}),
28
+ ...(options.args !== undefined ? { args: [...options.args] } : {}),
29
+ ...(options.startToCloseTimeout !== undefined
30
+ ? { startToCloseTimeout: options.startToCloseTimeout }
31
+ : {}),
32
+ ...(options.scheduleToCloseTimeout !== undefined
33
+ ? { scheduleToCloseTimeout: options.scheduleToCloseTimeout }
34
+ : {}),
35
+ ...(options.scheduleToStartTimeout !== undefined
36
+ ? { scheduleToStartTimeout: options.scheduleToStartTimeout }
37
+ : {}),
38
+ ...(options.heartbeatTimeout !== undefined
39
+ ? { heartbeatTimeout: options.heartbeatTimeout }
40
+ : {}),
41
+ ...(options.retry !== undefined ? { retry: options.retry } : {}),
42
+ ...(options.startDelay !== undefined
43
+ ? { startDelay: options.startDelay }
44
+ : {}),
45
+ ...(options.summary !== undefined ? { summary: options.summary } : {}),
46
+ });
47
+ }
48
+ //# sourceMappingURL=standalone-activity.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"standalone-activity.js","sourceRoot":"","sources":["../../src/lib/standalone-activity.ts"],"names":[],"mappings":";;;AAgEA,0DAuCC;AAvGD,yCAA4C;AAc5C,IAAY,4BAKX;AALD,WAAY,4BAA4B;IAEtC,4DAA4B,CAAA;IAE5B,6CAAa,CAAA;AACf,CAAC,EALW,4BAA4B,4CAA5B,4BAA4B,QAKvC;AAED,MAAM,kBAAkB,GAKpB;IACF,CAAC,4BAA4B,CAAC,WAAW,CAAC,EAAE,cAAc;IAC1D,CAAC,4BAA4B,CAAC,IAAI,CAAC,EAAE,MAAM;CAC5C,CAAC;AAmCK,KAAK,UAAU,uBAAuB,CAC3C,MAAgC,EAChC,OAAuC;IAEvC,IACE,OAAO,CAAC,mBAAmB,KAAK,SAAS;QACzC,OAAO,CAAC,sBAAsB,KAAK,SAAS,EAC5C,CAAC;QACD,MAAM,IAAI,KAAK,CACb,2BAA2B,OAAO,CAAC,IAAI,gCAAgC;YACrE,2EAA2E,CAC9E,CAAC;IACJ,CAAC;IACD,OAAO,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAI,OAAO,CAAC,IAAI,EAAE;QAC5C,EAAE,EAAE,OAAO,CAAC,EAAE;QACd,SAAS,EAAE,OAAO,CAAC,SAAS;QAC5B,gBAAgB,EAAE,kBAAkB,CAAC,OAAO,CAAC,UAAU,CAAC;QACxD,GAAG,CAAC,OAAO,CAAC,KAAK,KAAK,IAAI;YACxB,CAAC,CAAC,EAAE,QAAQ,EAAE,EAAE,WAAW,EAAE,IAAA,yBAAc,EAAC,OAAO,CAAC,KAAK,CAAC,EAAE,EAAE;YAC9D,CAAC,CAAC,EAAE,CAAC;QACP,GAAG,CAAC,OAAO,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAClE,GAAG,CAAC,OAAO,CAAC,mBAAmB,KAAK,SAAS;YAC3C,CAAC,CAAC,EAAE,mBAAmB,EAAE,OAAO,CAAC,mBAAmB,EAAE;YACtD,CAAC,CAAC,EAAE,CAAC;QACP,GAAG,CAAC,OAAO,CAAC,sBAAsB,KAAK,SAAS;YAC9C,CAAC,CAAC,EAAE,sBAAsB,EAAE,OAAO,CAAC,sBAAsB,EAAE;YAC5D,CAAC,CAAC,EAAE,CAAC;QACP,GAAG,CAAC,OAAO,CAAC,sBAAsB,KAAK,SAAS;YAC9C,CAAC,CAAC,EAAE,sBAAsB,EAAE,OAAO,CAAC,sBAAsB,EAAE;YAC5D,CAAC,CAAC,EAAE,CAAC;QACP,GAAG,CAAC,OAAO,CAAC,gBAAgB,KAAK,SAAS;YACxC,CAAC,CAAC,EAAE,gBAAgB,EAAE,OAAO,CAAC,gBAAgB,EAAE;YAChD,CAAC,CAAC,EAAE,CAAC;QACP,GAAG,CAAC,OAAO,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAChE,GAAG,CAAC,OAAO,CAAC,UAAU,KAAK,SAAS;YAClC,CAAC,CAAC,EAAE,UAAU,EAAE,OAAO,CAAC,UAAU,EAAE;YACpC,CAAC,CAAC,EAAE,CAAC;QACP,GAAG,CAAC,OAAO,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KACvE,CAAC,CAAC;AACL,CAAC"}
@@ -0,0 +1,26 @@
1
+ import { Worker, type ActivityInterceptorsFactory, type NativeConnection, type WorkerOptions, type WorkflowBundle } from '@temporalio/worker';
2
+ import { type WorkerDeploymentVersion } from './worker-deployment-version';
3
+ import type { PayloadCodec } from '@temporalio/common';
4
+ export type PlatformWorkerSinks = NonNullable<WorkerOptions['sinks']>;
5
+ export type PlatformNexusServiceHandler = NonNullable<WorkerOptions['nexusServices']>[number];
6
+ export interface PlatformWorkerTuning {
7
+ readonly maxConcurrentActivityTaskExecutions?: number;
8
+ readonly maxConcurrentWorkflowTaskExecutions?: number;
9
+ readonly maxConcurrentNexusTaskExecutions?: number;
10
+ }
11
+ export interface VersionedWorkerParams extends PlatformWorkerTuning {
12
+ readonly connection: NativeConnection;
13
+ readonly namespace: string;
14
+ readonly taskQueue: string;
15
+ readonly version: WorkerDeploymentVersion;
16
+ readonly identity: string;
17
+ readonly workflowBundle?: WorkflowBundle;
18
+ readonly activities?: object;
19
+ readonly nexusServices?: readonly PlatformNexusServiceHandler[];
20
+ readonly payloadCodec?: PayloadCodec;
21
+ readonly activityInterceptors?: readonly ActivityInterceptorsFactory[];
22
+ readonly sinks?: PlatformWorkerSinks;
23
+ }
24
+ export declare function createVersionedWorker(params: VersionedWorkerParams): Promise<Worker>;
25
+ export declare function platformWorkerIdentity(role: string, namespace: string, taskQueue: string): string;
26
+ //# sourceMappingURL=versioned-worker.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"versioned-worker.d.ts","sourceRoot":"","sources":["../../src/lib/versioned-worker.ts"],"names":[],"mappings":"AAOA,OAAO,EACL,MAAM,EACN,KAAK,2BAA2B,EAChC,KAAK,gBAAgB,EACrB,KAAK,aAAa,EAClB,KAAK,cAAc,EACpB,MAAM,oBAAoB,CAAC;AAG5B,OAAO,EAEL,KAAK,uBAAuB,EAC7B,MAAM,6BAA6B,CAAC;AAErC,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAMvD,MAAM,MAAM,mBAAmB,GAAG,WAAW,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC;AAGtE,MAAM,MAAM,2BAA2B,GAAG,WAAW,CACnD,aAAa,CAAC,eAAe,CAAC,CAC/B,CAAC,MAAM,CAAC,CAAC;AAGV,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,mCAAmC,CAAC,EAAE,MAAM,CAAC;IACtD,QAAQ,CAAC,mCAAmC,CAAC,EAAE,MAAM,CAAC;IACtD,QAAQ,CAAC,gCAAgC,CAAC,EAAE,MAAM,CAAC;CACpD;AAOD,MAAM,WAAW,qBAAsB,SAAQ,oBAAoB;IACjE,QAAQ,CAAC,UAAU,EAAE,gBAAgB,CAAC;IACtC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,OAAO,EAAE,uBAAuB,CAAC;IAC1C,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,cAAc,CAAC,EAAE,cAAc,CAAC;IACzC,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,aAAa,CAAC,EAAE,SAAS,2BAA2B,EAAE,CAAC;IAChE,QAAQ,CAAC,YAAY,CAAC,EAAE,YAAY,CAAC;IACrC,QAAQ,CAAC,oBAAoB,CAAC,EAAE,SAAS,2BAA2B,EAAE,CAAC;IACvE,QAAQ,CAAC,KAAK,CAAC,EAAE,mBAAmB,CAAC;CACtC;AAED,wBAAsB,qBAAqB,CACzC,MAAM,EAAE,qBAAqB,GAC5B,OAAO,CAAC,MAAM,CAAC,CAkDjB;AAGD,wBAAgB,sBAAsB,CACpC,IAAI,EAAE,MAAM,EACZ,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,MAAM,GAChB,MAAM,CAER"}
@@ -0,0 +1,60 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.createVersionedWorker = createVersionedWorker;
4
+ exports.platformWorkerIdentity = platformWorkerIdentity;
5
+ const node_crypto_1 = require("node:crypto");
6
+ const worker_1 = require("@temporalio/worker");
7
+ const on_behalf_of_interceptor_1 = require("./on-behalf-of-interceptor");
8
+ const worker_deployment_version_1 = require("./worker-deployment-version");
9
+ async function createVersionedWorker(params) {
10
+ const version = (0, worker_deployment_version_1.assertWorkerDeploymentVersion)(params.version);
11
+ return worker_1.Worker.create({
12
+ connection: params.connection,
13
+ namespace: params.namespace,
14
+ taskQueue: params.taskQueue,
15
+ identity: params.identity,
16
+ ...(params.workflowBundle !== undefined
17
+ ? { workflowBundle: params.workflowBundle }
18
+ : {}),
19
+ ...(params.activities !== undefined
20
+ ? { activities: params.activities }
21
+ : {}),
22
+ ...(params.nexusServices !== undefined && params.nexusServices.length > 0
23
+ ? { nexusServices: [...params.nexusServices] }
24
+ : {}),
25
+ interceptors: {
26
+ activity: [
27
+ () => ({ inbound: new on_behalf_of_interceptor_1.OnBehalfOfActivityInterceptor() }),
28
+ ...(params.activityInterceptors ?? []),
29
+ ],
30
+ },
31
+ ...(params.sinks !== undefined ? { sinks: params.sinks } : {}),
32
+ workerDeploymentOptions: {
33
+ version,
34
+ useWorkerVersioning: true,
35
+ defaultVersioningBehavior: 'PINNED',
36
+ },
37
+ ...(params.payloadCodec
38
+ ? { dataConverter: { payloadCodecs: [params.payloadCodec] } }
39
+ : {}),
40
+ ...(params.maxConcurrentActivityTaskExecutions !== undefined
41
+ ? {
42
+ maxConcurrentActivityTaskExecutions: params.maxConcurrentActivityTaskExecutions,
43
+ }
44
+ : {}),
45
+ ...(params.maxConcurrentWorkflowTaskExecutions !== undefined
46
+ ? {
47
+ maxConcurrentWorkflowTaskExecutions: params.maxConcurrentWorkflowTaskExecutions,
48
+ }
49
+ : {}),
50
+ ...(params.maxConcurrentNexusTaskExecutions !== undefined
51
+ ? {
52
+ maxConcurrentNexusTaskExecutions: params.maxConcurrentNexusTaskExecutions,
53
+ }
54
+ : {}),
55
+ });
56
+ }
57
+ function platformWorkerIdentity(role, namespace, taskQueue) {
58
+ return `${role}-${namespace}-${taskQueue}-${(0, node_crypto_1.randomUUID)().slice(0, 8)}`;
59
+ }
60
+ //# sourceMappingURL=versioned-worker.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"versioned-worker.js","sourceRoot":"","sources":["../../src/lib/versioned-worker.ts"],"names":[],"mappings":";;AA4DA,sDAoDC;AAGD,wDAMC;AApHD,6CAAyC;AAEzC,+CAM4B;AAE5B,yEAA2E;AAC3E,2EAGqC;AAyC9B,KAAK,UAAU,qBAAqB,CACzC,MAA6B;IAE7B,MAAM,OAAO,GAAG,IAAA,yDAA6B,EAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IAC9D,OAAO,eAAM,CAAC,MAAM,CAAC;QACnB,UAAU,EAAE,MAAM,CAAC,UAAU;QAC7B,SAAS,EAAE,MAAM,CAAC,SAAS;QAC3B,SAAS,EAAE,MAAM,CAAC,SAAS;QAC3B,QAAQ,EAAE,MAAM,CAAC,QAAQ;QACzB,GAAG,CAAC,MAAM,CAAC,cAAc,KAAK,SAAS;YACrC,CAAC,CAAC,EAAE,cAAc,EAAE,MAAM,CAAC,cAAc,EAAE;YAC3C,CAAC,CAAC,EAAE,CAAC;QACP,GAAG,CAAC,MAAM,CAAC,UAAU,KAAK,SAAS;YACjC,CAAC,CAAC,EAAE,UAAU,EAAE,MAAM,CAAC,UAAU,EAAE;YACnC,CAAC,CAAC,EAAE,CAAC;QACP,GAAG,CAAC,MAAM,CAAC,aAAa,KAAK,SAAS,IAAI,MAAM,CAAC,aAAa,CAAC,MAAM,GAAG,CAAC;YACvE,CAAC,CAAC,EAAE,aAAa,EAAE,CAAC,GAAG,MAAM,CAAC,aAAa,CAAC,EAAE;YAC9C,CAAC,CAAC,EAAE,CAAC;QACP,YAAY,EAAE;YACZ,QAAQ,EAAE;gBACR,GAAG,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,IAAI,wDAA6B,EAAE,EAAE,CAAC;gBACxD,GAAG,CAAC,MAAM,CAAC,oBAAoB,IAAI,EAAE,CAAC;aACvC;SACF;QACD,GAAG,CAAC,MAAM,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC9D,uBAAuB,EAAE;YACvB,OAAO;YACP,mBAAmB,EAAE,IAAI;YACzB,yBAAyB,EAAE,QAAQ;SACpC;QACD,GAAG,CAAC,MAAM,CAAC,YAAY;YACrB,CAAC,CAAC,EAAE,aAAa,EAAE,EAAE,aAAa,EAAE,CAAC,MAAM,CAAC,YAAY,CAAC,EAAE,EAAE;YAC7D,CAAC,CAAC,EAAE,CAAC;QACP,GAAG,CAAC,MAAM,CAAC,mCAAmC,KAAK,SAAS;YAC1D,CAAC,CAAC;gBACE,mCAAmC,EACjC,MAAM,CAAC,mCAAmC;aAC7C;YACH,CAAC,CAAC,EAAE,CAAC;QACP,GAAG,CAAC,MAAM,CAAC,mCAAmC,KAAK,SAAS;YAC1D,CAAC,CAAC;gBACE,mCAAmC,EACjC,MAAM,CAAC,mCAAmC;aAC7C;YACH,CAAC,CAAC,EAAE,CAAC;QACP,GAAG,CAAC,MAAM,CAAC,gCAAgC,KAAK,SAAS;YACvD,CAAC,CAAC;gBACE,gCAAgC,EAC9B,MAAM,CAAC,gCAAgC;aAC1C;YACH,CAAC,CAAC,EAAE,CAAC;KACR,CAAC,CAAC;AACL,CAAC;AAGD,SAAgB,sBAAsB,CACpC,IAAY,EACZ,SAAiB,EACjB,SAAiB;IAEjB,OAAO,GAAG,IAAI,IAAI,SAAS,IAAI,SAAS,IAAI,IAAA,wBAAU,GAAE,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC;AACzE,CAAC"}
@@ -0,0 +1,8 @@
1
+ import type { TemporalEnvReader } from './namespace';
2
+ import type { WorkerDeploymentVersion } from '@temporalio/common';
3
+ export type { WorkerDeploymentVersion } from '@temporalio/common';
4
+ export declare const TEMPORAL_DEPLOYMENT_NAME_ENV = "TEMPORAL_DEPLOYMENT_NAME";
5
+ export declare const TEMPORAL_WORKER_BUILD_ID_ENV = "TEMPORAL_WORKER_BUILD_ID";
6
+ export declare function assertWorkerDeploymentVersion(version: WorkerDeploymentVersion): WorkerDeploymentVersion;
7
+ export declare function resolveWorkerDeploymentVersionFromEnv(env: TemporalEnvReader): WorkerDeploymentVersion;
8
+ //# sourceMappingURL=worker-deployment-version.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"worker-deployment-version.d.ts","sourceRoot":"","sources":["../../src/lib/worker-deployment-version.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AACrD,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,oBAAoB,CAAC;AAElE,YAAY,EAAE,uBAAuB,EAAE,MAAM,oBAAoB,CAAC;AAMlE,eAAO,MAAM,4BAA4B,6BAA6B,CAAC;AAQvE,eAAO,MAAM,4BAA4B,6BAA6B,CAAC;AAMvE,wBAAgB,6BAA6B,CAC3C,OAAO,EAAE,uBAAuB,GAC/B,uBAAuB,CAiBzB;AAUD,wBAAgB,qCAAqC,CACnD,GAAG,EAAE,iBAAiB,GACrB,uBAAuB,CAwBzB"}
@@ -0,0 +1,45 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.TEMPORAL_WORKER_BUILD_ID_ENV = exports.TEMPORAL_DEPLOYMENT_NAME_ENV = void 0;
4
+ exports.assertWorkerDeploymentVersion = assertWorkerDeploymentVersion;
5
+ exports.resolveWorkerDeploymentVersionFromEnv = resolveWorkerDeploymentVersionFromEnv;
6
+ exports.TEMPORAL_DEPLOYMENT_NAME_ENV = 'TEMPORAL_DEPLOYMENT_NAME';
7
+ exports.TEMPORAL_WORKER_BUILD_ID_ENV = 'TEMPORAL_WORKER_BUILD_ID';
8
+ function assertWorkerDeploymentVersion(version) {
9
+ for (const [field, value] of [
10
+ ['deploymentName', version.deploymentName],
11
+ ['buildId', version.buildId],
12
+ ]) {
13
+ if (typeof value !== 'string' ||
14
+ value.length === 0 ||
15
+ value.trim() !== value) {
16
+ throw new Error(`Worker Deployment version ${field} must be a non-empty string without ` +
17
+ `surrounding whitespace; got ${JSON.stringify(value)}.`);
18
+ }
19
+ }
20
+ return { deploymentName: version.deploymentName, buildId: version.buildId };
21
+ }
22
+ function resolveWorkerDeploymentVersionFromEnv(env) {
23
+ const deploymentName = env(exports.TEMPORAL_DEPLOYMENT_NAME_ENV);
24
+ const buildId = env(exports.TEMPORAL_WORKER_BUILD_ID_ENV);
25
+ const missing = [
26
+ deploymentName === undefined || deploymentName.length === 0
27
+ ? exports.TEMPORAL_DEPLOYMENT_NAME_ENV
28
+ : undefined,
29
+ buildId === undefined || buildId.length === 0
30
+ ? exports.TEMPORAL_WORKER_BUILD_ID_ENV
31
+ : undefined,
32
+ ].filter((name) => name !== undefined);
33
+ if (missing.length > 0) {
34
+ throw new Error(`${missing.join(' and ')} ${missing.length === 1 ? 'is' : 'are'} required: ` +
35
+ 'the Worker Deployment version is written into the pod by the Temporal ' +
36
+ 'Worker Controller from the digest-pinned pod template. There is no ' +
37
+ 'default and no unversioned mode — an unversioned worker would pick up ' +
38
+ 'runs that were started on a different version.');
39
+ }
40
+ return assertWorkerDeploymentVersion({
41
+ deploymentName: deploymentName,
42
+ buildId: buildId,
43
+ });
44
+ }
45
+ //# sourceMappingURL=worker-deployment-version.js.map