@agnt5/sdk 0.2.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (126) hide show
  1. package/README.md +183 -0
  2. package/dist/__tests__/integration/helpers.d.ts +41 -0
  3. package/dist/__tests__/integration/helpers.d.ts.map +1 -0
  4. package/dist/__tests__/integration/helpers.js +78 -0
  5. package/dist/__tests__/integration/helpers.js.map +1 -0
  6. package/dist/agent.d.ts +260 -0
  7. package/dist/agent.d.ts.map +1 -0
  8. package/dist/agent.js +493 -0
  9. package/dist/agent.js.map +1 -0
  10. package/dist/async-context.d.ts +57 -0
  11. package/dist/async-context.d.ts.map +1 -0
  12. package/dist/async-context.js +52 -0
  13. package/dist/async-context.js.map +1 -0
  14. package/dist/batch.d.ts +116 -0
  15. package/dist/batch.d.ts.map +1 -0
  16. package/dist/batch.js +98 -0
  17. package/dist/batch.js.map +1 -0
  18. package/dist/chat.d.ts +137 -0
  19. package/dist/chat.d.ts.map +1 -0
  20. package/dist/chat.js +278 -0
  21. package/dist/chat.js.map +1 -0
  22. package/dist/client.d.ts +394 -0
  23. package/dist/client.d.ts.map +1 -0
  24. package/dist/client.js +757 -0
  25. package/dist/client.js.map +1 -0
  26. package/dist/context.d.ts +47 -0
  27. package/dist/context.d.ts.map +1 -0
  28. package/dist/context.js +244 -0
  29. package/dist/context.js.map +1 -0
  30. package/dist/errors.d.ts +148 -0
  31. package/dist/errors.d.ts.map +1 -0
  32. package/dist/errors.js +201 -0
  33. package/dist/errors.js.map +1 -0
  34. package/dist/eval.d.ts +242 -0
  35. package/dist/eval.d.ts.map +1 -0
  36. package/dist/eval.js +452 -0
  37. package/dist/eval.js.map +1 -0
  38. package/dist/event-emitter.d.ts +28 -0
  39. package/dist/event-emitter.d.ts.map +1 -0
  40. package/dist/event-emitter.js +79 -0
  41. package/dist/event-emitter.js.map +1 -0
  42. package/dist/events.d.ts +285 -0
  43. package/dist/events.d.ts.map +1 -0
  44. package/dist/events.js +256 -0
  45. package/dist/events.js.map +1 -0
  46. package/dist/function.d.ts +61 -0
  47. package/dist/function.d.ts.map +1 -0
  48. package/dist/function.js +78 -0
  49. package/dist/function.js.map +1 -0
  50. package/dist/index.d.ts +67 -0
  51. package/dist/index.d.ts.map +1 -0
  52. package/dist/index.js +80 -0
  53. package/dist/index.js.map +1 -0
  54. package/dist/lm.d.ts +301 -0
  55. package/dist/lm.d.ts.map +1 -0
  56. package/dist/lm.js +283 -0
  57. package/dist/lm.js.map +1 -0
  58. package/dist/logging.d.ts +68 -0
  59. package/dist/logging.d.ts.map +1 -0
  60. package/dist/logging.js +165 -0
  61. package/dist/logging.js.map +1 -0
  62. package/dist/mcp-server.d.ts +98 -0
  63. package/dist/mcp-server.d.ts.map +1 -0
  64. package/dist/mcp-server.js +307 -0
  65. package/dist/mcp-server.js.map +1 -0
  66. package/dist/mcp.d.ts +73 -0
  67. package/dist/mcp.d.ts.map +1 -0
  68. package/dist/mcp.js +224 -0
  69. package/dist/mcp.js.map +1 -0
  70. package/dist/memory.d.ts +234 -0
  71. package/dist/memory.d.ts.map +1 -0
  72. package/dist/memory.js +609 -0
  73. package/dist/memory.js.map +1 -0
  74. package/dist/platform-adapters.d.ts +121 -0
  75. package/dist/platform-adapters.d.ts.map +1 -0
  76. package/dist/platform-adapters.js +174 -0
  77. package/dist/platform-adapters.js.map +1 -0
  78. package/dist/platform-context.d.ts +55 -0
  79. package/dist/platform-context.d.ts.map +1 -0
  80. package/dist/platform-context.js +196 -0
  81. package/dist/platform-context.js.map +1 -0
  82. package/dist/retry-utils.d.ts +169 -0
  83. package/dist/retry-utils.d.ts.map +1 -0
  84. package/dist/retry-utils.js +304 -0
  85. package/dist/retry-utils.js.map +1 -0
  86. package/dist/sandbox.d.ts +103 -0
  87. package/dist/sandbox.d.ts.map +1 -0
  88. package/dist/sandbox.js +168 -0
  89. package/dist/sandbox.js.map +1 -0
  90. package/dist/schema-utils.d.ts +250 -0
  91. package/dist/schema-utils.d.ts.map +1 -0
  92. package/dist/schema-utils.js +444 -0
  93. package/dist/schema-utils.js.map +1 -0
  94. package/dist/scorer.d.ts +130 -0
  95. package/dist/scorer.d.ts.map +1 -0
  96. package/dist/scorer.js +211 -0
  97. package/dist/scorer.js.map +1 -0
  98. package/dist/state.d.ts +92 -0
  99. package/dist/state.d.ts.map +1 -0
  100. package/dist/state.js +151 -0
  101. package/dist/state.js.map +1 -0
  102. package/dist/tool.d.ts +120 -0
  103. package/dist/tool.d.ts.map +1 -0
  104. package/dist/tool.js +215 -0
  105. package/dist/tool.js.map +1 -0
  106. package/dist/tracing.d.ts +82 -0
  107. package/dist/tracing.d.ts.map +1 -0
  108. package/dist/tracing.js +206 -0
  109. package/dist/tracing.js.map +1 -0
  110. package/dist/types.d.ts +139 -0
  111. package/dist/types.d.ts.map +1 -0
  112. package/dist/types.js +2 -0
  113. package/dist/types.js.map +1 -0
  114. package/dist/worker.d.ts +111 -0
  115. package/dist/worker.d.ts.map +1 -0
  116. package/dist/worker.js +944 -0
  117. package/dist/worker.js.map +1 -0
  118. package/dist/workflow-utils.d.ts +257 -0
  119. package/dist/workflow-utils.d.ts.map +1 -0
  120. package/dist/workflow-utils.js +370 -0
  121. package/dist/workflow-utils.js.map +1 -0
  122. package/dist/workflow.d.ts +78 -0
  123. package/dist/workflow.d.ts.map +1 -0
  124. package/dist/workflow.js +138 -0
  125. package/dist/workflow.js.map +1 -0
  126. package/package.json +86 -0
@@ -0,0 +1,121 @@
1
+ /**
2
+ * Platform adapter interfaces for connecting TypeScript SDK features
3
+ * to the Rust core via NAPI bindings.
4
+ *
5
+ * These adapters provide the TypeScript-side contract. When the Rust/NAPI
6
+ * bindings expose PollJobs, CompleteJob, platform state, and real OTel spans,
7
+ * these adapters will bridge to them.
8
+ *
9
+ * For now, each adapter has a stub/noop implementation that logs warnings.
10
+ */
11
+ import type { StateAdapter } from './state.js';
12
+ /** A job assignment from the platform queue */
13
+ export interface JobAssignment {
14
+ jobId: string;
15
+ runId: string;
16
+ componentId: string;
17
+ componentType: string;
18
+ componentName: string;
19
+ inputJson: string;
20
+ metadata: Record<string, string>;
21
+ }
22
+ /** Result of completing a job */
23
+ export interface JobCompletionResult {
24
+ acknowledged: boolean;
25
+ }
26
+ /**
27
+ * Adapter for platform job queue polling.
28
+ *
29
+ * The platform implementation will call PollJobs/CompleteJob RPCs
30
+ * via the NAPI-exposed Rust WorkerCoordinatorClient.
31
+ */
32
+ export interface JobQueueAdapter {
33
+ pollJobs(workerId: string, componentIds: string[], maxJobs: number): Promise<JobAssignment[]>;
34
+ completeJob(jobId: string, success: boolean, outputJson?: string, errorMessage?: string, errorCode?: string, metadata?: Record<string, string>): Promise<JobCompletionResult>;
35
+ }
36
+ /**
37
+ * Stub job queue adapter that always returns no jobs.
38
+ * Used when NAPI bindings aren't available yet.
39
+ */
40
+ export declare class StubJobQueueAdapter implements JobQueueAdapter {
41
+ private warned;
42
+ pollJobs(): Promise<JobAssignment[]>;
43
+ completeJob(): Promise<JobCompletionResult>;
44
+ }
45
+ /**
46
+ * Platform-backed state adapter that persists state via the Rust core.
47
+ *
48
+ * When connected, state operations flow through NAPI → Rust core → gRPC
49
+ * to the platform's state service.
50
+ *
51
+ * TODO(D1): Replace StubPlatformStateAdapter with actual NAPI bridge.
52
+ */
53
+ export declare class StubPlatformStateAdapter implements StateAdapter {
54
+ private warned;
55
+ private warn;
56
+ load(): Promise<Record<string, any> | null>;
57
+ save(): Promise<void>;
58
+ }
59
+ /** Attributes for a platform span */
60
+ export interface SpanAttributes {
61
+ [key: string]: string | number | boolean;
62
+ }
63
+ /**
64
+ * Adapter for platform-backed OpenTelemetry spans.
65
+ *
66
+ * The platform implementation will create real OTel spans via the
67
+ * Rust core's telemetry subsystem, and export them to the journal.
68
+ */
69
+ export interface PlatformSpanAdapter {
70
+ createSpan(name: string, attributes?: SpanAttributes): PlatformSpanHandle;
71
+ }
72
+ /**
73
+ * Handle to a platform span. Call end() when done.
74
+ */
75
+ export interface PlatformSpanHandle {
76
+ readonly traceId: string;
77
+ readonly spanId: string;
78
+ setAttribute(key: string, value: string | number | boolean): void;
79
+ addEvent(name: string, attributes?: SpanAttributes): void;
80
+ recordError(error: Error | string): void;
81
+ end(): void;
82
+ }
83
+ /**
84
+ * Stub span adapter that logs to console.
85
+ * Used when NAPI bindings aren't available.
86
+ */
87
+ export declare class StubPlatformSpanAdapter implements PlatformSpanAdapter {
88
+ createSpan(name: string): PlatformSpanHandle;
89
+ }
90
+ /**
91
+ * NAPI-backed span adapter that creates real OpenTelemetry spans
92
+ * via the sdk-core Rust telemetry subsystem.
93
+ *
94
+ * Uses the Span NAPI class from tracing.ts which delegates to
95
+ * sdk-core's create_component_span() + OTLP exporter.
96
+ */
97
+ export declare class NapiPlatformSpanAdapter implements PlatformSpanAdapter {
98
+ createSpan(name: string, attributes?: SpanAttributes): PlatformSpanHandle;
99
+ }
100
+ export interface JobQueueConfig {
101
+ workerId: string;
102
+ componentIds: string[];
103
+ concurrency: number;
104
+ pollIntervalMs: number;
105
+ maxPollIntervalMs: number;
106
+ adapter: JobQueueAdapter;
107
+ handler: (job: JobAssignment) => Promise<{
108
+ outputJson?: string;
109
+ error?: string;
110
+ }>;
111
+ }
112
+ /**
113
+ * Run a job queue polling loop with capacity-aware exponential backoff.
114
+ *
115
+ * This is the TypeScript-side orchestration. The actual poll/complete RPCs
116
+ * go through the JobQueueAdapter (NAPI when available, stub otherwise).
117
+ *
118
+ * @returns AbortController to stop polling
119
+ */
120
+ export declare function startJobQueuePolling(config: JobQueueConfig): AbortController;
121
+ //# sourceMappingURL=platform-adapters.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"platform-adapters.d.ts","sourceRoot":"","sources":["../src/platform-adapters.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,174 @@
1
+ /**
2
+ * Platform adapter interfaces for connecting TypeScript SDK features
3
+ * to the Rust core via NAPI bindings.
4
+ *
5
+ * These adapters provide the TypeScript-side contract. When the Rust/NAPI
6
+ * bindings expose PollJobs, CompleteJob, platform state, and real OTel spans,
7
+ * these adapters will bridge to them.
8
+ *
9
+ * For now, each adapter has a stub/noop implementation that logs warnings.
10
+ */
11
+ /**
12
+ * Stub job queue adapter that always returns no jobs.
13
+ * Used when NAPI bindings aren't available yet.
14
+ */
15
+ export class StubJobQueueAdapter {
16
+ constructor() {
17
+ this.warned = false;
18
+ }
19
+ async pollJobs() {
20
+ if (!this.warned) {
21
+ console.warn('[agnt5] Job queue polling requires NAPI bindings (Phase D1). Using stub adapter.');
22
+ this.warned = true;
23
+ }
24
+ return [];
25
+ }
26
+ async completeJob() {
27
+ return { acknowledged: false };
28
+ }
29
+ }
30
+ // ─── Platform State Adapter ──────────────────────────────────────────
31
+ /**
32
+ * Platform-backed state adapter that persists state via the Rust core.
33
+ *
34
+ * When connected, state operations flow through NAPI → Rust core → gRPC
35
+ * to the platform's state service.
36
+ *
37
+ * TODO(D1): Replace StubPlatformStateAdapter with actual NAPI bridge.
38
+ */
39
+ export class StubPlatformStateAdapter {
40
+ constructor() {
41
+ this.warned = false;
42
+ }
43
+ warn() {
44
+ if (!this.warned) {
45
+ console.warn('[agnt5] Platform state adapter requires NAPI bindings (Phase D1). State is not persisted.');
46
+ this.warned = true;
47
+ }
48
+ }
49
+ async load() {
50
+ this.warn();
51
+ return null;
52
+ }
53
+ async save() {
54
+ this.warn();
55
+ }
56
+ }
57
+ /**
58
+ * Stub span adapter that logs to console.
59
+ * Used when NAPI bindings aren't available.
60
+ */
61
+ export class StubPlatformSpanAdapter {
62
+ createSpan(name) {
63
+ return {
64
+ traceId: 'stub-trace',
65
+ spanId: 'stub-span',
66
+ setAttribute: () => { },
67
+ addEvent: (eventName) => console.debug(`[span:${name}] event: ${eventName}`),
68
+ recordError: (err) => console.error(`[span:${name}] error:`, err),
69
+ end: () => { },
70
+ };
71
+ }
72
+ }
73
+ /**
74
+ * NAPI-backed span adapter that creates real OpenTelemetry spans
75
+ * via the sdk-core Rust telemetry subsystem.
76
+ *
77
+ * Uses the Span NAPI class from tracing.ts which delegates to
78
+ * sdk-core's create_component_span() + OTLP exporter.
79
+ */
80
+ export class NapiPlatformSpanAdapter {
81
+ createSpan(name, attributes) {
82
+ // Import Span from tracing.ts (which handles NAPI loading internally)
83
+ // We use dynamic import to avoid circular deps at module load time
84
+ const { Span } = require('./tracing.js');
85
+ const stringAttrs = {};
86
+ if (attributes) {
87
+ for (const [k, v] of Object.entries(attributes)) {
88
+ stringAttrs[k] = String(v);
89
+ }
90
+ }
91
+ const span = new Span(name, 'platform', undefined, stringAttrs);
92
+ return {
93
+ get traceId() { return span.traceId; },
94
+ get spanId() { return span.spanId; },
95
+ setAttribute(key, value) {
96
+ span.setAttribute(key, String(value));
97
+ },
98
+ addEvent(eventName, eventAttrs) {
99
+ // Span class delegates to NAPI addEvent if available
100
+ span.setAttribute(`event.${eventName}`, 'true');
101
+ },
102
+ recordError(error) {
103
+ const msg = error instanceof Error ? error.message : error;
104
+ span.recordException(new Error(msg));
105
+ },
106
+ end() {
107
+ span.end();
108
+ },
109
+ };
110
+ }
111
+ }
112
+ /**
113
+ * Run a job queue polling loop with capacity-aware exponential backoff.
114
+ *
115
+ * This is the TypeScript-side orchestration. The actual poll/complete RPCs
116
+ * go through the JobQueueAdapter (NAPI when available, stub otherwise).
117
+ *
118
+ * @returns AbortController to stop polling
119
+ */
120
+ export function startJobQueuePolling(config) {
121
+ const controller = new AbortController();
122
+ const { adapter, handler, workerId, componentIds, concurrency } = config;
123
+ let currentInterval = config.pollIntervalMs;
124
+ let activeJobs = 0;
125
+ const poll = async () => {
126
+ if (controller.signal.aborted)
127
+ return;
128
+ const capacity = concurrency - activeJobs;
129
+ if (capacity <= 0) {
130
+ schedule();
131
+ return;
132
+ }
133
+ try {
134
+ const jobs = await adapter.pollJobs(workerId, componentIds, capacity);
135
+ if (jobs.length > 0) {
136
+ // Reset backoff on successful poll
137
+ currentInterval = config.pollIntervalMs;
138
+ for (const job of jobs) {
139
+ activeJobs++;
140
+ processJob(job).finally(() => {
141
+ activeJobs--;
142
+ });
143
+ }
144
+ }
145
+ else {
146
+ // Exponential backoff on empty poll
147
+ currentInterval = Math.min(currentInterval * 2, config.maxPollIntervalMs);
148
+ }
149
+ }
150
+ catch (error) {
151
+ console.error('[agnt5] Job queue poll error:', error);
152
+ currentInterval = Math.min(currentInterval * 2, config.maxPollIntervalMs);
153
+ }
154
+ schedule();
155
+ };
156
+ const processJob = async (job) => {
157
+ try {
158
+ const result = await handler(job);
159
+ await adapter.completeJob(job.jobId, !result.error, result.outputJson, result.error);
160
+ }
161
+ catch (error) {
162
+ await adapter.completeJob(job.jobId, false, undefined, error.message);
163
+ }
164
+ };
165
+ const schedule = () => {
166
+ if (!controller.signal.aborted) {
167
+ setTimeout(poll, currentInterval);
168
+ }
169
+ };
170
+ // Start polling
171
+ poll();
172
+ return controller;
173
+ }
174
+ //# sourceMappingURL=platform-adapters.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"platform-adapters.js","sourceRoot":"","sources":["../src/platform-adapters.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,55 @@
1
+ /**
2
+ * Platform-backed Context implementation using native State and Span bindings
3
+ * Phase 2: Durable state and distributed tracing
4
+ */
5
+ import type { Context, Logger } from './types.js';
6
+ /**
7
+ * Platform-backed context with durable state and distributed tracing
8
+ */
9
+ export declare class PlatformContext implements Context {
10
+ readonly invocationId: string;
11
+ readonly runId: string;
12
+ readonly attempt: number;
13
+ readonly serviceName: string;
14
+ private stateManager;
15
+ private span;
16
+ private checkpointCounter;
17
+ constructor(invocationId: string, runId: string, attempt: number, serviceName: string, spanName?: string);
18
+ /**
19
+ * Get value from state (async)
20
+ */
21
+ get<T>(key: string, defaultValue?: T): Promise<T | undefined>;
22
+ /**
23
+ * Set value in state (async)
24
+ */
25
+ set<T>(key: string, value: T): Promise<void>;
26
+ /**
27
+ * Delete value from state (async)
28
+ */
29
+ delete(key: string): Promise<boolean>;
30
+ /**
31
+ * Execute a step with checkpointing
32
+ */
33
+ step<T>(stepName: string, fn: () => T | Promise<T>): Promise<T>;
34
+ /**
35
+ * Get logger with span integration
36
+ */
37
+ get logger(): Logger;
38
+ /**
39
+ * Get the underlying span for advanced use cases
40
+ */
41
+ getSpan(): any;
42
+ /**
43
+ * Get the underlying state manager for advanced use cases
44
+ */
45
+ getStateManager(): any;
46
+ /**
47
+ * Emit an event to the platform. No-op in PlatformContext (events are handled by the worker).
48
+ */
49
+ emit(event: any): Promise<void>;
50
+ /**
51
+ * End the span (call this when context is no longer needed)
52
+ */
53
+ endSpan(): void;
54
+ }
55
+ //# sourceMappingURL=platform-context.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"platform-context.d.ts","sourceRoot":"","sources":["../src/platform-context.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,YAAY,CAAC;AAwClD;;GAEG;AACH,qBAAa,eAAgB,YAAW,OAAO;aAM3B,YAAY,EAAE,MAAM;aACpB,KAAK,EAAE,MAAM;aACb,OAAO,EAAE,MAAM;aACf,WAAW,EAAE,MAAM;IARrC,OAAO,CAAC,YAAY,CAAM;IAC1B,OAAO,CAAC,IAAI,CAAM;IAClB,OAAO,CAAC,iBAAiB,CAAK;gBAGZ,YAAY,EAAE,MAAM,EACpB,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,MAAM,EACf,WAAW,EAAE,MAAM,EACnC,QAAQ,CAAC,EAAE,MAAM;IAanB;;OAEG;IACG,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,YAAY,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,CAAC,GAAG,SAAS,CAAC;IAiBnE;;OAEG;IACG,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAkBlD;;OAEG;IACG,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAkB3C;;OAEG;IACG,IAAI,CAAC,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC;IAwCrE;;OAEG;IACH,IAAI,MAAM,IAAI,MAAM,CA0BnB;IAED;;OAEG;IACH,OAAO,IAAI,GAAG;IAId;;OAEG;IACH,eAAe,IAAI,GAAG;IAItB;;OAEG;IACG,IAAI,CAAC,KAAK,EAAE,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC;IAIrC;;OAEG;IACH,OAAO,IAAI,IAAI;CAKhB"}
@@ -0,0 +1,196 @@
1
+ /**
2
+ * Platform-backed Context implementation using native State and Span bindings
3
+ * Phase 2: Durable state and distributed tracing
4
+ */
5
+ import { createRequire } from 'module';
6
+ import { fileURLToPath } from 'url';
7
+ import { dirname, join } from 'path';
8
+ import { StateError, CheckpointError } from './errors.js';
9
+ // Dynamic import for native bindings
10
+ let nativeBindings = null;
11
+ function loadNativeBindings() {
12
+ if (nativeBindings)
13
+ return nativeBindings;
14
+ try {
15
+ const __filename = fileURLToPath(import.meta.url);
16
+ const __dirname = dirname(__filename);
17
+ const require = createRequire(import.meta.url);
18
+ // Try multiple paths to find the native module
19
+ const possiblePaths = [
20
+ join(__dirname, '../../native/agnt5-sdk-native.linux-x64-gnu.node'),
21
+ join(__dirname, '../native/agnt5-sdk-native.linux-x64-gnu.node'),
22
+ join(__dirname, '../../native/agnt5-sdk-native.darwin-arm64.node'),
23
+ join(__dirname, '../native/agnt5-sdk-native.darwin-arm64.node'),
24
+ ];
25
+ for (const nativePath of possiblePaths) {
26
+ try {
27
+ nativeBindings = require(nativePath);
28
+ return nativeBindings;
29
+ }
30
+ catch (e) {
31
+ continue;
32
+ }
33
+ }
34
+ throw new Error('Could not find native bindings');
35
+ }
36
+ catch (error) {
37
+ throw new Error(`Failed to load native bindings: ${error.message}`);
38
+ }
39
+ }
40
+ /**
41
+ * Platform-backed context with durable state and distributed tracing
42
+ */
43
+ export class PlatformContext {
44
+ constructor(invocationId, runId, attempt, serviceName, spanName) {
45
+ this.invocationId = invocationId;
46
+ this.runId = runId;
47
+ this.attempt = attempt;
48
+ this.serviceName = serviceName;
49
+ this.checkpointCounter = 0;
50
+ const native = loadNativeBindings();
51
+ this.stateManager = new native.StateManager();
52
+ this.span = native.Span.create(spanName || `${serviceName}.${invocationId}`);
53
+ // Set initial span attributes
54
+ this.span.setAttribute('invocation.id', invocationId);
55
+ this.span.setAttribute('run.id', runId);
56
+ this.span.setAttribute('service.name', serviceName);
57
+ this.span.setAttribute('attempt', String(attempt));
58
+ }
59
+ /**
60
+ * Get value from state (async)
61
+ */
62
+ async get(key, defaultValue) {
63
+ try {
64
+ const buffer = await this.stateManager.get(key);
65
+ if (!buffer) {
66
+ return defaultValue;
67
+ }
68
+ const json = buffer.toString('utf-8');
69
+ return JSON.parse(json);
70
+ }
71
+ catch (error) {
72
+ throw new StateError(`Failed to get state key '${key}': ${error.message}`, 'get', key);
73
+ }
74
+ }
75
+ /**
76
+ * Set value in state (async)
77
+ */
78
+ async set(key, value) {
79
+ try {
80
+ const json = JSON.stringify(value);
81
+ const buffer = Buffer.from(json, 'utf-8');
82
+ await this.stateManager.set(key, buffer);
83
+ // Record in span
84
+ this.span.addEvent('state.set', { key });
85
+ }
86
+ catch (error) {
87
+ this.span.recordError(`State set failed: ${error.message}`);
88
+ throw new StateError(`Failed to set state key '${key}': ${error.message}`, 'set', key);
89
+ }
90
+ }
91
+ /**
92
+ * Delete value from state (async)
93
+ */
94
+ async delete(key) {
95
+ try {
96
+ const deleted = await this.stateManager.delete(key);
97
+ // Record in span
98
+ this.span.addEvent('state.delete', { key, deleted: String(deleted) });
99
+ return deleted;
100
+ }
101
+ catch (error) {
102
+ this.span.recordError(`State delete failed: ${error.message}`);
103
+ throw new StateError(`Failed to delete state key '${key}': ${error.message}`, 'delete', key);
104
+ }
105
+ }
106
+ /**
107
+ * Execute a step with checkpointing
108
+ */
109
+ async step(stepName, fn) {
110
+ const checkpointKey = `checkpoint:${stepName}`;
111
+ try {
112
+ // Check if step already executed (checkpoint exists)
113
+ const existingCheckpoint = await this.stateManager.get(checkpointKey);
114
+ if (existingCheckpoint) {
115
+ this.span.addEvent('step.restored', { step: stepName });
116
+ const json = existingCheckpoint.toString('utf-8');
117
+ return JSON.parse(json);
118
+ }
119
+ // Start step span
120
+ this.span.addEvent('step.started', { step: stepName });
121
+ // Execute step
122
+ const result = await fn();
123
+ // Checkpoint result
124
+ const json = JSON.stringify(result);
125
+ const buffer = Buffer.from(json, 'utf-8');
126
+ await this.stateManager.set(checkpointKey, buffer);
127
+ this.checkpointCounter++;
128
+ this.span.addEvent('step.completed', {
129
+ step: stepName,
130
+ sequence: String(this.checkpointCounter),
131
+ });
132
+ return result;
133
+ }
134
+ catch (error) {
135
+ this.span.recordError(`Step '${stepName}' failed: ${error.message}`);
136
+ throw new CheckpointError(`Failed to execute step '${stepName}': ${error.message}`, stepName, this.checkpointCounter);
137
+ }
138
+ }
139
+ /**
140
+ * Get logger with span integration
141
+ */
142
+ get logger() {
143
+ const runId = this.runId;
144
+ const native = nativeBindings;
145
+ return {
146
+ info: (message, meta) => {
147
+ console.log(`[INFO] ${message}`, meta || '');
148
+ this.span.addEvent('log.info', { message, ...meta });
149
+ native?.logFromTypescript('INFO', message, runId, null, null, meta ?? null);
150
+ },
151
+ error: (message, meta) => {
152
+ console.error(`[ERROR] ${message}`, meta || '');
153
+ this.span.addEvent('log.error', { message, ...meta });
154
+ this.span.recordError(message);
155
+ native?.logFromTypescript('ERROR', message, runId, null, null, meta ?? null);
156
+ },
157
+ warn: (message, meta) => {
158
+ console.warn(`[WARN] ${message}`, meta || '');
159
+ this.span.addEvent('log.warn', { message, ...meta });
160
+ native?.logFromTypescript('WARN', message, runId, null, null, meta ?? null);
161
+ },
162
+ debug: (message, meta) => {
163
+ console.debug(`[DEBUG] ${message}`, meta || '');
164
+ this.span.addEvent('log.debug', { message, ...meta });
165
+ native?.logFromTypescript('DEBUG', message, runId, null, null, meta ?? null);
166
+ },
167
+ };
168
+ }
169
+ /**
170
+ * Get the underlying span for advanced use cases
171
+ */
172
+ getSpan() {
173
+ return this.span;
174
+ }
175
+ /**
176
+ * Get the underlying state manager for advanced use cases
177
+ */
178
+ getStateManager() {
179
+ return this.stateManager;
180
+ }
181
+ /**
182
+ * Emit an event to the platform. No-op in PlatformContext (events are handled by the worker).
183
+ */
184
+ async emit(event) {
185
+ // PlatformContext doesn't emit events directly — the worker's EventEmitter handles this.
186
+ }
187
+ /**
188
+ * End the span (call this when context is no longer needed)
189
+ */
190
+ endSpan() {
191
+ if (this.span && !this.span.isEnded()) {
192
+ this.span.end();
193
+ }
194
+ }
195
+ }
196
+ //# sourceMappingURL=platform-context.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"platform-context.js","sourceRoot":"","sources":["../src/platform-context.ts"],"names":[],"mappings":"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"}