@prefactor/core 0.2.0 → 0.2.2

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 (94) hide show
  1. package/dist/agent/instance-manager.d.ts +5 -8
  2. package/dist/agent/instance-manager.d.ts.map +1 -1
  3. package/dist/agent/instance-manager.js +34 -55
  4. package/dist/agent/instance-manager.js.map +1 -1
  5. package/dist/config.d.ts +15 -63
  6. package/dist/config.d.ts.map +1 -1
  7. package/dist/config.js +29 -20
  8. package/dist/config.js.map +1 -1
  9. package/dist/create-core.d.ts +0 -2
  10. package/dist/create-core.d.ts.map +1 -1
  11. package/dist/create-core.js +17 -28
  12. package/dist/create-core.js.map +1 -1
  13. package/dist/index.cjs +678 -453
  14. package/dist/index.cjs.map +20 -15
  15. package/dist/index.d.ts +4 -7
  16. package/dist/index.d.ts.map +1 -1
  17. package/dist/index.js +678 -453
  18. package/dist/index.js.map +20 -15
  19. package/dist/lifecycle.d.ts +5 -0
  20. package/dist/lifecycle.d.ts.map +1 -0
  21. package/dist/lifecycle.js +27 -0
  22. package/dist/lifecycle.js.map +1 -0
  23. package/dist/queue/actions.d.ts +15 -26
  24. package/dist/queue/actions.d.ts.map +1 -1
  25. package/dist/queue/base.d.ts +15 -3
  26. package/dist/queue/base.d.ts.map +1 -1
  27. package/dist/queue/in-memory-queue.d.ts +11 -0
  28. package/dist/queue/in-memory-queue.d.ts.map +1 -0
  29. package/dist/queue/in-memory-queue.js +46 -0
  30. package/dist/queue/in-memory-queue.js.map +1 -0
  31. package/dist/queue/task-executor.d.ts +18 -0
  32. package/dist/queue/task-executor.d.ts.map +1 -0
  33. package/dist/queue/task-executor.js +77 -0
  34. package/dist/queue/task-executor.js.map +1 -0
  35. package/dist/tracing/active-tracer.d.ts +5 -0
  36. package/dist/tracing/active-tracer.d.ts.map +1 -0
  37. package/dist/tracing/active-tracer.js +13 -0
  38. package/dist/tracing/active-tracer.js.map +1 -0
  39. package/dist/tracing/span.d.ts +7 -14
  40. package/dist/tracing/span.d.ts.map +1 -1
  41. package/dist/tracing/span.js +5 -36
  42. package/dist/tracing/span.js.map +1 -1
  43. package/dist/tracing/tracer.d.ts +6 -7
  44. package/dist/tracing/tracer.d.ts.map +1 -1
  45. package/dist/tracing/tracer.js +27 -12
  46. package/dist/tracing/tracer.js.map +1 -1
  47. package/dist/tracing/with-span.d.ts +4 -0
  48. package/dist/tracing/with-span.d.ts.map +1 -0
  49. package/dist/tracing/with-span.js +35 -0
  50. package/dist/tracing/with-span.js.map +1 -0
  51. package/dist/transport/http/agent-instance-client.d.ts +23 -0
  52. package/dist/transport/http/agent-instance-client.d.ts.map +1 -0
  53. package/dist/transport/http/agent-instance-client.js +25 -0
  54. package/dist/transport/http/agent-instance-client.js.map +1 -0
  55. package/dist/transport/http/agent-span-client.d.ts +25 -0
  56. package/dist/transport/http/agent-span-client.d.ts.map +1 -0
  57. package/dist/transport/http/agent-span-client.js +37 -0
  58. package/dist/transport/http/agent-span-client.js.map +1 -0
  59. package/dist/transport/http/http-client.d.ts +43 -0
  60. package/dist/transport/http/http-client.d.ts.map +1 -0
  61. package/dist/transport/http/http-client.js +127 -0
  62. package/dist/transport/http/http-client.js.map +1 -0
  63. package/dist/transport/http/retry-policy.d.ts +4 -0
  64. package/dist/transport/http/retry-policy.d.ts.map +1 -0
  65. package/dist/transport/http/retry-policy.js +10 -0
  66. package/dist/transport/http/retry-policy.js.map +1 -0
  67. package/dist/transport/http.d.ts +34 -50
  68. package/dist/transport/http.d.ts.map +1 -1
  69. package/dist/transport/http.js +163 -227
  70. package/dist/transport/http.js.map +1 -1
  71. package/dist/utils/logging.d.ts.map +1 -1
  72. package/dist/utils/logging.js +7 -1
  73. package/dist/utils/logging.js.map +1 -1
  74. package/package.json +1 -1
  75. package/dist/agent/schema-registry.d.ts +0 -9
  76. package/dist/agent/schema-registry.d.ts.map +0 -1
  77. package/dist/agent/schema-registry.js +0 -16
  78. package/dist/agent/schema-registry.js.map +0 -1
  79. package/dist/queue/in-memory.d.ts +0 -9
  80. package/dist/queue/in-memory.d.ts.map +0 -1
  81. package/dist/queue/in-memory.js +0 -18
  82. package/dist/queue/in-memory.js.map +0 -1
  83. package/dist/transport/base.d.ts +0 -18
  84. package/dist/transport/base.d.ts.map +0 -1
  85. package/dist/transport/base.js +0 -2
  86. package/dist/transport/base.js.map +0 -1
  87. package/dist/transport/stdio.d.ts +0 -36
  88. package/dist/transport/stdio.d.ts.map +0 -1
  89. package/dist/transport/stdio.js +0 -56
  90. package/dist/transport/stdio.js.map +0 -1
  91. package/dist/transport/worker.d.ts +0 -22
  92. package/dist/transport/worker.d.ts.map +0 -1
  93. package/dist/transport/worker.js +0 -85
  94. package/dist/transport/worker.js.map +0 -1
@@ -0,0 +1,46 @@
1
+ export class InMemoryQueue {
2
+ items = [];
3
+ waiters = [];
4
+ isClosed = false;
5
+ async put(item) {
6
+ if (this.isClosed) {
7
+ throw new Error('Cannot put item into a closed queue');
8
+ }
9
+ const waiter = this.waiters.shift();
10
+ if (waiter) {
11
+ waiter({ done: false, item });
12
+ return;
13
+ }
14
+ this.items.push({ item });
15
+ }
16
+ async get() {
17
+ if (this.items.length > 0) {
18
+ const entry = this.items.shift();
19
+ if (entry) {
20
+ return { done: false, item: entry.item };
21
+ }
22
+ }
23
+ if (this.isClosed) {
24
+ return { done: true };
25
+ }
26
+ return new Promise((resolve) => {
27
+ this.waiters.push(resolve);
28
+ });
29
+ }
30
+ close() {
31
+ if (this.isClosed) {
32
+ return;
33
+ }
34
+ this.isClosed = true;
35
+ while (this.waiters.length > 0) {
36
+ const waiter = this.waiters.shift();
37
+ if (waiter) {
38
+ waiter({ done: true });
39
+ }
40
+ }
41
+ }
42
+ size() {
43
+ return this.items.length;
44
+ }
45
+ }
46
+ //# sourceMappingURL=in-memory-queue.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"in-memory-queue.js","sourceRoot":"","sources":["../../src/queue/in-memory-queue.ts"],"names":[],"mappings":"AAMA,MAAM,OAAO,aAAa;IAChB,KAAK,GAAoB,EAAE,CAAC;IAC5B,OAAO,GAA+C,EAAE,CAAC;IACzD,QAAQ,GAAG,KAAK,CAAC;IAEzB,KAAK,CAAC,GAAG,CAAC,IAAO;QACf,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YAClB,MAAM,IAAI,KAAK,CAAC,qCAAqC,CAAC,CAAC;QACzD,CAAC;QAED,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;QACpC,IAAI,MAAM,EAAE,CAAC;YACX,MAAM,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;YAC9B,OAAO;QACT,CAAC;QAED,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC;IAC5B,CAAC;IAED,KAAK,CAAC,GAAG;QACP,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC1B,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;YACjC,IAAI,KAAK,EAAE,CAAC;gBACV,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC;YAC3C,CAAC;QACH,CAAC;QAED,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YAClB,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;QACxB,CAAC;QAED,OAAO,IAAI,OAAO,CAAoB,CAAC,OAAO,EAAE,EAAE;YAChD,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAC7B,CAAC,CAAC,CAAC;IACL,CAAC;IAED,KAAK;QACH,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YAClB,OAAO;QACT,CAAC;QAED,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;QACrB,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC/B,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;YACpC,IAAI,MAAM,EAAE,CAAC;gBACX,MAAM,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;YACzB,CAAC;QACH,CAAC;IACH,CAAC;IAED,IAAI;QACF,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC;IAC3B,CAAC;CACF"}
@@ -0,0 +1,18 @@
1
+ import type { Queue, TaskExecutorOptions } from './base.js';
2
+ export declare class TaskExecutor<T> {
3
+ private queue;
4
+ private handler;
5
+ private isRunning;
6
+ private workerPromises;
7
+ private workerCount;
8
+ private maxRetries;
9
+ private retryDelayMs;
10
+ private onError?;
11
+ constructor(queue: Queue<T>, handler: (item: T) => Promise<void>, options?: TaskExecutorOptions<T>);
12
+ start(): void;
13
+ stop(): Promise<void>;
14
+ private runWorker;
15
+ private executeWithRetry;
16
+ private safeOnError;
17
+ }
18
+ //# sourceMappingURL=task-executor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"task-executor.d.ts","sourceRoot":"","sources":["../../src/queue/task-executor.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,mBAAmB,EAAE,MAAM,WAAW,CAAC;AAM5D,qBAAa,YAAY,CAAC,CAAC;IASvB,OAAO,CAAC,KAAK;IACb,OAAO,CAAC,OAAO;IATjB,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,cAAc,CAAuB;IAC7C,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,YAAY,CAAS;IAC7B,OAAO,CAAC,OAAO,CAAC,CAAoD;gBAG1D,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,EACf,OAAO,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,OAAO,CAAC,IAAI,CAAC,EAC3C,OAAO,GAAE,mBAAmB,CAAC,CAAC,CAAM;IAQtC,KAAK,IAAI,IAAI;IASP,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;YAWb,SAAS;YAWT,gBAAgB;YAsBhB,WAAW;CAW1B"}
@@ -0,0 +1,77 @@
1
+ const DEFAULT_WORKER_COUNT = 1;
2
+ const DEFAULT_MAX_RETRIES = 0;
3
+ const DEFAULT_RETRY_DELAY_MS = 0;
4
+ export class TaskExecutor {
5
+ queue;
6
+ handler;
7
+ isRunning = false;
8
+ workerPromises = [];
9
+ workerCount;
10
+ maxRetries;
11
+ retryDelayMs;
12
+ onError;
13
+ constructor(queue, handler, options = {}) {
14
+ this.queue = queue;
15
+ this.handler = handler;
16
+ this.workerCount = Math.max(options.workerCount ?? DEFAULT_WORKER_COUNT, 1);
17
+ this.maxRetries = Math.max(options.maxRetries ?? DEFAULT_MAX_RETRIES, 0);
18
+ this.retryDelayMs = Math.max(options.retryDelayMs ?? DEFAULT_RETRY_DELAY_MS, 0);
19
+ this.onError = options.onError;
20
+ }
21
+ start() {
22
+ if (this.isRunning) {
23
+ return;
24
+ }
25
+ this.isRunning = true;
26
+ this.workerPromises = Array.from({ length: this.workerCount }, () => this.runWorker());
27
+ }
28
+ async stop() {
29
+ if (!this.isRunning) {
30
+ return;
31
+ }
32
+ this.isRunning = false;
33
+ this.queue.close();
34
+ await Promise.all(this.workerPromises);
35
+ this.workerPromises = [];
36
+ }
37
+ async runWorker() {
38
+ while (true) {
39
+ const result = await this.queue.get();
40
+ if (result.done) {
41
+ return;
42
+ }
43
+ await this.executeWithRetry(result.item);
44
+ }
45
+ }
46
+ async executeWithRetry(item) {
47
+ let attempt = 0;
48
+ while (attempt <= this.maxRetries) {
49
+ try {
50
+ await this.handler(item);
51
+ return;
52
+ }
53
+ catch (error) {
54
+ if (attempt >= this.maxRetries) {
55
+ await this.safeOnError(error, item);
56
+ return;
57
+ }
58
+ if (this.retryDelayMs > 0) {
59
+ await new Promise((resolve) => setTimeout(resolve, this.retryDelayMs));
60
+ }
61
+ }
62
+ attempt += 1;
63
+ }
64
+ }
65
+ async safeOnError(error, item) {
66
+ if (!this.onError) {
67
+ return;
68
+ }
69
+ try {
70
+ await this.onError(error, item);
71
+ }
72
+ catch {
73
+ return;
74
+ }
75
+ }
76
+ }
77
+ //# sourceMappingURL=task-executor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"task-executor.js","sourceRoot":"","sources":["../../src/queue/task-executor.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ import type { Tracer } from './tracer.js';
2
+ export declare function setActiveTracer(tracer: Tracer): void;
3
+ export declare function getActiveTracer(): Tracer | undefined;
4
+ export declare function clearActiveTracer(tracer?: Tracer): void;
5
+ //# sourceMappingURL=active-tracer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"active-tracer.d.ts","sourceRoot":"","sources":["../../src/tracing/active-tracer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAI1C,wBAAgB,eAAe,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAEpD;AAED,wBAAgB,eAAe,IAAI,MAAM,GAAG,SAAS,CAEpD;AAED,wBAAgB,iBAAiB,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAIvD"}
@@ -0,0 +1,13 @@
1
+ let activeTracer;
2
+ export function setActiveTracer(tracer) {
3
+ activeTracer = tracer;
4
+ }
5
+ export function getActiveTracer() {
6
+ return activeTracer;
7
+ }
8
+ export function clearActiveTracer(tracer) {
9
+ if (!tracer || activeTracer === tracer) {
10
+ activeTracer = undefined;
11
+ }
12
+ }
13
+ //# sourceMappingURL=active-tracer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"active-tracer.js","sourceRoot":"","sources":["../../src/tracing/active-tracer.ts"],"names":[],"mappings":"AAEA,IAAI,YAAgC,CAAC;AAErC,MAAM,UAAU,eAAe,CAAC,MAAc;IAC5C,YAAY,GAAG,MAAM,CAAC;AACxB,CAAC;AAED,MAAM,UAAU,eAAe;IAC7B,OAAO,YAAY,CAAC;AACtB,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,MAAe;IAC/C,IAAI,CAAC,MAAM,IAAI,YAAY,KAAK,MAAM,EAAE,CAAC;QACvC,YAAY,GAAG,SAAS,CAAC;IAC3B,CAAC;AACH,CAAC"}
@@ -1,18 +1,13 @@
1
1
  /**
2
2
  * Types of spans that can be traced
3
3
  */
4
- export declare enum SpanType {
5
- AGENT = "agent",
6
- LLM = "llm",
7
- TOOL = "tool",
8
- CHAIN = "chain",
9
- RETRIEVER = "retriever"
10
- }
11
- /**
12
- * Default agent schema (v1.0.0) with span schemas for all supported types.
13
- * Used when no custom schema is provided during registration.
14
- */
15
- export declare const DEFAULT_AGENT_SCHEMA: Record<string, unknown>;
4
+ export declare const SpanType: {
5
+ readonly AGENT: "agent";
6
+ readonly LLM: "llm";
7
+ readonly TOOL: "tool";
8
+ readonly CHAIN: "chain";
9
+ };
10
+ export type SpanType = (typeof SpanType)[keyof typeof SpanType] | string;
16
11
  /**
17
12
  * Status of a span
18
13
  */
@@ -67,7 +62,5 @@ export interface Span {
67
62
  error: ErrorInfo | null;
68
63
  /** Additional metadata about this span */
69
64
  metadata: Record<string, unknown>;
70
- /** Tags for categorizing and filtering spans */
71
- tags: string[];
72
65
  }
73
66
  //# sourceMappingURL=span.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"span.d.ts","sourceRoot":"","sources":["../../src/tracing/span.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,oBAAY,QAAQ;IAClB,KAAK,UAAU;IACf,GAAG,QAAQ;IACX,IAAI,SAAS;IACb,KAAK,UAAU;IACf,SAAS,cAAc;CACxB;AAED;;;GAGG;AACH,eAAO,MAAM,oBAAoB,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAwBxD,CAAC;AAEF;;GAEG;AACH,oBAAY,UAAU;IACpB,OAAO,YAAY;IACnB,OAAO,YAAY;IACnB,KAAK,UAAU;CAChB;AAED;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB,YAAY,EAAE,MAAM,CAAC;IACrB,gBAAgB,EAAE,MAAM,CAAC;IACzB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED;;GAEG;AACH,MAAM,WAAW,SAAS;IACxB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED;;GAEG;AACH,MAAM,WAAW,IAAI;IACnB,sCAAsC;IACtC,MAAM,EAAE,MAAM,CAAC;IAEf,4DAA4D;IAC5D,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAE5B,qDAAqD;IACrD,OAAO,EAAE,MAAM,CAAC;IAEhB,wCAAwC;IACxC,IAAI,EAAE,MAAM,CAAC;IAEb,6CAA6C;IAC7C,QAAQ,EAAE,QAAQ,CAAC;IAEnB,kDAAkD;IAClD,SAAS,EAAE,MAAM,CAAC;IAElB,0EAA0E;IAC1E,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IAEvB,iCAAiC;IACjC,MAAM,EAAE,UAAU,CAAC;IAEnB,oCAAoC;IACpC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAEhC,gEAAgE;IAChE,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;IAExC,2DAA2D;IAC3D,UAAU,EAAE,UAAU,GAAG,IAAI,CAAC;IAE9B,kEAAkE;IAClE,KAAK,EAAE,SAAS,GAAG,IAAI,CAAC;IAExB,0CAA0C;IAC1C,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAElC,gDAAgD;IAChD,IAAI,EAAE,MAAM,EAAE,CAAC;CAChB"}
1
+ {"version":3,"file":"span.d.ts","sourceRoot":"","sources":["../../src/tracing/span.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,eAAO,MAAM,QAAQ;;;;;CAKX,CAAC;AAEX,MAAM,MAAM,QAAQ,GAAG,CAAC,OAAO,QAAQ,CAAC,CAAC,MAAM,OAAO,QAAQ,CAAC,GAAG,MAAM,CAAC;AAEzE;;GAEG;AACH,oBAAY,UAAU;IACpB,OAAO,YAAY;IACnB,OAAO,YAAY;IACnB,KAAK,UAAU;CAChB;AAED;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB,YAAY,EAAE,MAAM,CAAC;IACrB,gBAAgB,EAAE,MAAM,CAAC;IACzB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED;;GAEG;AACH,MAAM,WAAW,SAAS;IACxB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED;;GAEG;AACH,MAAM,WAAW,IAAI;IACnB,sCAAsC;IACtC,MAAM,EAAE,MAAM,CAAC;IAEf,4DAA4D;IAC5D,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAE5B,qDAAqD;IACrD,OAAO,EAAE,MAAM,CAAC;IAEhB,wCAAwC;IACxC,IAAI,EAAE,MAAM,CAAC;IAEb,6CAA6C;IAC7C,QAAQ,EAAE,QAAQ,CAAC;IAEnB,kDAAkD;IAClD,SAAS,EAAE,MAAM,CAAC;IAElB,0EAA0E;IAC1E,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IAEvB,iCAAiC;IACjC,MAAM,EAAE,UAAU,CAAC;IAEnB,oCAAoC;IACpC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAEhC,gEAAgE;IAChE,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;IAExC,2DAA2D;IAC3D,UAAU,EAAE,UAAU,GAAG,IAAI,CAAC;IAE9B,kEAAkE;IAClE,KAAK,EAAE,SAAS,GAAG,IAAI,CAAC;IAExB,0CAA0C;IAC1C,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACnC"}
@@ -1,42 +1,11 @@
1
1
  /**
2
2
  * Types of spans that can be traced
3
3
  */
4
- export var SpanType;
5
- (function (SpanType) {
6
- SpanType["AGENT"] = "agent";
7
- SpanType["LLM"] = "llm";
8
- SpanType["TOOL"] = "tool";
9
- SpanType["CHAIN"] = "chain";
10
- SpanType["RETRIEVER"] = "retriever";
11
- })(SpanType || (SpanType = {}));
12
- /**
13
- * Default agent schema (v1.0.0) with span schemas for all supported types.
14
- * Used when no custom schema is provided during registration.
15
- */
16
- export const DEFAULT_AGENT_SCHEMA = {
17
- external_identifier: '1.0.0',
18
- span_schemas: {
19
- agent: {
20
- type: 'object',
21
- properties: { type: { type: 'string', const: 'agent' } },
22
- },
23
- llm: {
24
- type: 'object',
25
- properties: { type: { type: 'string', const: 'llm' } },
26
- },
27
- tool: {
28
- type: 'object',
29
- properties: { type: { type: 'string', const: 'tool' } },
30
- },
31
- chain: {
32
- type: 'object',
33
- properties: { type: { type: 'string', const: 'chain' } },
34
- },
35
- retriever: {
36
- type: 'object',
37
- properties: { type: { type: 'string', const: 'retriever' } },
38
- },
39
- },
4
+ export const SpanType = {
5
+ AGENT: 'agent',
6
+ LLM: 'llm',
7
+ TOOL: 'tool',
8
+ CHAIN: 'chain',
40
9
  };
41
10
  /**
42
11
  * Status of a span
@@ -1 +1 @@
1
- {"version":3,"file":"span.js","sourceRoot":"","sources":["../../src/tracing/span.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,CAAN,IAAY,QAMX;AAND,WAAY,QAAQ;IAClB,2BAAe,CAAA;IACf,uBAAW,CAAA;IACX,yBAAa,CAAA;IACb,2BAAe,CAAA;IACf,mCAAuB,CAAA;AACzB,CAAC,EANW,QAAQ,KAAR,QAAQ,QAMnB;AAED;;;GAGG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAA4B;IAC3D,mBAAmB,EAAE,OAAO;IAC5B,YAAY,EAAE;QACZ,KAAK,EAAE;YACL,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE;SACzD;QACD,GAAG,EAAE;YACH,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE;SACvD;QACD,IAAI,EAAE;YACJ,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE;SACxD;QACD,KAAK,EAAE;YACL,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE;SACzD;QACD,SAAS,EAAE;YACT,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,WAAW,EAAE,EAAE;SAC7D;KACF;CACF,CAAC;AAEF;;GAEG;AACH,MAAM,CAAN,IAAY,UAIX;AAJD,WAAY,UAAU;IACpB,iCAAmB,CAAA;IACnB,iCAAmB,CAAA;IACnB,6BAAe,CAAA;AACjB,CAAC,EAJW,UAAU,KAAV,UAAU,QAIrB"}
1
+ {"version":3,"file":"span.js","sourceRoot":"","sources":["../../src/tracing/span.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,CAAC,MAAM,QAAQ,GAAG;IACtB,KAAK,EAAE,OAAO;IACd,GAAG,EAAE,KAAK;IACV,IAAI,EAAE,MAAM;IACZ,KAAK,EAAE,OAAO;CACN,CAAC;AAIX;;GAEG;AACH,MAAM,CAAN,IAAY,UAIX;AAJD,WAAY,UAAU;IACpB,iCAAmB,CAAA;IACnB,iCAAmB,CAAA;IACnB,6BAAe,CAAA;AACjB,CAAC,EAJW,UAAU,KAAV,UAAU,QAIrB"}
@@ -1,6 +1,5 @@
1
1
  import { type Partition } from '@prefactor/pfid';
2
- import type { QueueAction } from '../queue/actions.js';
3
- import type { Queue } from '../queue/base.js';
2
+ import type { Transport } from '../transport/http.js';
4
3
  import type { Span, TokenUsage } from './span.js';
5
4
  import { SpanType } from './span.js';
6
5
  /**
@@ -15,8 +14,6 @@ export interface StartSpanOptions {
15
14
  inputs: Record<string, unknown>;
16
15
  /** Additional metadata (optional) */
17
16
  metadata?: Record<string, unknown>;
18
- /** Tags for categorizing the span (optional) */
19
- tags?: string[];
20
17
  }
21
18
  /**
22
19
  * Options for ending a span
@@ -57,15 +54,15 @@ export interface EndSpanOptions {
57
54
  * ```
58
55
  */
59
56
  export declare class Tracer {
60
- private queue;
57
+ private transport;
61
58
  private partition;
62
59
  /**
63
60
  * Initialize the tracer.
64
61
  *
65
- * @param queue - The queue to use for emitting spans
62
+ * @param transport - The transport to use for emitting spans
66
63
  * @param partition - The partition for ID generation. If not provided, a random partition will be generated.
67
64
  */
68
- constructor(queue: Queue<QueueAction>, partition?: Partition);
65
+ constructor(transport: Transport, partition?: Partition);
69
66
  /**
70
67
  * Start a new span
71
68
  *
@@ -86,5 +83,7 @@ export declare class Tracer {
86
83
  * @returns Promise that resolves when the tracer is closed
87
84
  */
88
85
  close(): Promise<void>;
86
+ startAgentInstance(): void;
87
+ finishAgentInstance(): void;
89
88
  }
90
89
  //# sourceMappingURL=tracer.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"tracer.d.ts","sourceRoot":"","sources":["../../src/tracing/tracer.ts"],"names":[],"mappings":"AAAA,OAAO,EAA+B,KAAK,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC9E,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AACvD,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AAE9C,OAAO,KAAK,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAClD,OAAO,EAAc,QAAQ,EAAE,MAAM,WAAW,CAAC;AAEjD;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,uBAAuB;IACvB,IAAI,EAAE,MAAM,CAAC;IAEb,6CAA6C;IAC7C,QAAQ,EAAE,QAAQ,CAAC;IAEnB,oCAAoC;IACpC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAEhC,qCAAqC;IACrC,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAEnC,gDAAgD;IAChD,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;CACjB;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,qCAAqC;IACrC,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAElC,mCAAmC;IACnC,KAAK,CAAC,EAAE,KAAK,CAAC;IAEd,8CAA8C;IAC9C,UAAU,CAAC,EAAE,UAAU,CAAC;CACzB;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,qBAAa,MAAM;IAUf,OAAO,CAAC,KAAK;IATf,OAAO,CAAC,SAAS,CAAY;IAE7B;;;;;OAKG;gBAEO,KAAK,EAAE,KAAK,CAAC,WAAW,CAAC,EACjC,SAAS,CAAC,EAAE,SAAS;IAKvB;;;;;OAKG;IACH,SAAS,CAAC,OAAO,EAAE,gBAAgB,GAAG,IAAI;IAmC1C;;;;;OAKG;IACH,OAAO,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,CAAC,EAAE,cAAc,GAAG,IAAI;IA8BnD;;;;OAIG;IACG,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;CAO7B"}
1
+ {"version":3,"file":"tracer.d.ts","sourceRoot":"","sources":["../../src/tracing/tracer.ts"],"names":[],"mappings":"AAAA,OAAO,EAA+B,KAAK,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC9E,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAEtD,OAAO,KAAK,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAClD,OAAO,EAAc,QAAQ,EAAE,MAAM,WAAW,CAAC;AAEjD;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,uBAAuB;IACvB,IAAI,EAAE,MAAM,CAAC;IAEb,6CAA6C;IAC7C,QAAQ,EAAE,QAAQ,CAAC;IAEnB,oCAAoC;IACpC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAEhC,qCAAqC;IACrC,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACpC;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,qCAAqC;IACrC,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAElC,mCAAmC;IACnC,KAAK,CAAC,EAAE,KAAK,CAAC;IAEd,8CAA8C;IAC9C,UAAU,CAAC,EAAE,UAAU,CAAC;CACzB;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,qBAAa,MAAM;IAUf,OAAO,CAAC,SAAS;IATnB,OAAO,CAAC,SAAS,CAAY;IAE7B;;;;;OAKG;gBAEO,SAAS,EAAE,SAAS,EAC5B,SAAS,CAAC,EAAE,SAAS;IAKvB;;;;;OAKG;IACH,SAAS,CAAC,OAAO,EAAE,gBAAgB,GAAG,IAAI;IAkC1C;;;;;OAKG;IACH,OAAO,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,CAAC,EAAE,cAAc,GAAG,IAAI;IA8BnD;;;;OAIG;IACG,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAQ5B,kBAAkB,IAAI,IAAI;IAQ1B,mBAAmB,IAAI,IAAI;CAO5B"}
@@ -29,16 +29,16 @@ import { SpanStatus, SpanType } from './span.js';
29
29
  * ```
30
30
  */
31
31
  export class Tracer {
32
- queue;
32
+ transport;
33
33
  partition;
34
34
  /**
35
35
  * Initialize the tracer.
36
36
  *
37
- * @param queue - The queue to use for emitting spans
37
+ * @param transport - The transport to use for emitting spans
38
38
  * @param partition - The partition for ID generation. If not provided, a random partition will be generated.
39
39
  */
40
- constructor(queue, partition) {
41
- this.queue = queue;
40
+ constructor(transport, partition) {
41
+ this.transport = transport;
42
42
  this.partition = partition ?? generatePartition();
43
43
  }
44
44
  /**
@@ -65,16 +65,15 @@ export class Tracer {
65
65
  tokenUsage: null,
66
66
  error: null,
67
67
  metadata: options.metadata ?? {},
68
- tags: options.tags ?? [],
69
68
  };
70
69
  // AGENT spans are emitted immediately for real-time tracking
71
70
  // They will be finished later with finishSpan()
72
71
  if (options.spanType === SpanType.AGENT) {
73
72
  try {
74
- this.queue.enqueue({ type: 'span_end', data: span });
73
+ this.transport.emit(span);
75
74
  }
76
75
  catch (error) {
77
- console.error('Failed to enqueue agent span:', error);
76
+ console.error('Failed to emit agent span:', error);
78
77
  }
79
78
  }
80
79
  return span;
@@ -105,14 +104,14 @@ export class Tracer {
105
104
  // AGENT spans use finishSpan API (they were already emitted on start)
106
105
  // Other span types are emitted here
107
106
  if (span.spanType === SpanType.AGENT) {
108
- this.queue.enqueue({ type: 'span_finish', data: { spanId: span.spanId, endTime } });
107
+ this.transport.finishSpan(span.spanId, endTime);
109
108
  }
110
109
  else {
111
- this.queue.enqueue({ type: 'span_end', data: span });
110
+ this.transport.emit(span);
112
111
  }
113
112
  }
114
113
  catch (error) {
115
- console.error('Failed to enqueue span action:', error);
114
+ console.error('Failed to emit span action:', error);
116
115
  }
117
116
  }
118
117
  /**
@@ -122,10 +121,26 @@ export class Tracer {
122
121
  */
123
122
  async close() {
124
123
  try {
125
- await this.queue.flush();
124
+ await this.transport.close();
126
125
  }
127
126
  catch (error) {
128
- console.error('Failed to flush queue:', error);
127
+ console.error('Failed to close transport:', error);
128
+ }
129
+ }
130
+ startAgentInstance() {
131
+ try {
132
+ this.transport.startAgentInstance();
133
+ }
134
+ catch (error) {
135
+ console.error('Failed to start agent instance:', error);
136
+ }
137
+ }
138
+ finishAgentInstance() {
139
+ try {
140
+ this.transport.finishAgentInstance();
141
+ }
142
+ catch (error) {
143
+ console.error('Failed to finish agent instance:', error);
129
144
  }
130
145
  }
131
146
  }
@@ -1 +1 @@
1
- {"version":3,"file":"tracer.js","sourceRoot":"","sources":["../../src/tracing/tracer.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"tracer.js","sourceRoot":"","sources":["../../src/tracing/tracer.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ import type { StartSpanOptions, Tracer } from './tracer.js';
2
+ export declare function withSpan<T>(tracer: Tracer, options: StartSpanOptions, fn: () => Promise<T> | T): Promise<T>;
3
+ export declare function withSpan<T>(options: StartSpanOptions, fn: () => Promise<T> | T): Promise<T>;
4
+ //# sourceMappingURL=with-span.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"with-span.d.ts","sourceRoot":"","sources":["../../src/tracing/with-span.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAE5D,wBAAsB,QAAQ,CAAC,CAAC,EAC9B,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,gBAAgB,EACzB,EAAE,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,GACvB,OAAO,CAAC,CAAC,CAAC,CAAC;AACd,wBAAsB,QAAQ,CAAC,CAAC,EAAE,OAAO,EAAE,gBAAgB,EAAE,EAAE,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC"}
@@ -0,0 +1,35 @@
1
+ import { getActiveTracer } from './active-tracer.js';
2
+ import { SpanContext } from './context.js';
3
+ export async function withSpan(tracerOrOptions, optionsOrFn, maybeFn) {
4
+ const { tracer, options, fn } = resolveArgs(tracerOrOptions, optionsOrFn, maybeFn);
5
+ const span = tracer.startSpan(options);
6
+ try {
7
+ const result = await SpanContext.runAsync(span, async () => await fn());
8
+ tracer.endSpan(span);
9
+ return result;
10
+ }
11
+ catch (error) {
12
+ const normalizedError = error instanceof Error ? error : new Error(String(error));
13
+ tracer.endSpan(span, { error: normalizedError });
14
+ throw error;
15
+ }
16
+ }
17
+ function resolveArgs(tracerOrOptions, optionsOrFn, maybeFn) {
18
+ if (maybeFn) {
19
+ return {
20
+ tracer: tracerOrOptions,
21
+ options: optionsOrFn,
22
+ fn: maybeFn,
23
+ };
24
+ }
25
+ const tracer = getActiveTracer();
26
+ if (!tracer) {
27
+ throw new Error('No active tracer found. Initialize Prefactor first or pass a tracer explicitly.');
28
+ }
29
+ return {
30
+ tracer,
31
+ options: tracerOrOptions,
32
+ fn: optionsOrFn,
33
+ };
34
+ }
35
+ //# sourceMappingURL=with-span.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"with-span.js","sourceRoot":"","sources":["../../src/tracing/with-span.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAS3C,MAAM,CAAC,KAAK,UAAU,QAAQ,CAC5B,eAA0C,EAC1C,WAAsD,EACtD,OAA8B;IAE9B,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,EAAE,EAAE,GAAG,WAAW,CAAC,eAAe,EAAE,WAAW,EAAE,OAAO,CAAC,CAAC;IACnF,MAAM,IAAI,GAAG,MAAM,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;IAEvC,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,WAAW,CAAC,QAAQ,CAAC,IAAI,EAAE,KAAK,IAAI,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;QACxE,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QACrB,OAAO,MAAM,CAAC;IAChB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,eAAe,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;QAClF,MAAM,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,KAAK,EAAE,eAAe,EAAE,CAAC,CAAC;QACjD,MAAM,KAAK,CAAC;IACd,CAAC;AACH,CAAC;AAED,SAAS,WAAW,CAClB,eAA0C,EAC1C,WAAsD,EACtD,OAA8B;IAM9B,IAAI,OAAO,EAAE,CAAC;QACZ,OAAO;YACL,MAAM,EAAE,eAAyB;YACjC,OAAO,EAAE,WAA+B;YACxC,EAAE,EAAE,OAAO;SACZ,CAAC;IACJ,CAAC;IAED,MAAM,MAAM,GAAG,eAAe,EAAE,CAAC;IACjC,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,MAAM,IAAI,KAAK,CACb,iFAAiF,CAClF,CAAC;IACJ,CAAC;IAED,OAAO;QACL,MAAM;QACN,OAAO,EAAE,eAAmC;QAC5C,EAAE,EAAE,WAAmC;KACxC,CAAC;AACJ,CAAC"}
@@ -0,0 +1,23 @@
1
+ import type { HttpRequester } from './http-client.js';
2
+ export type AgentInstanceRegisterPayload = {
3
+ agent_id?: string;
4
+ agent_version?: {
5
+ external_identifier: string;
6
+ name: string;
7
+ description: string;
8
+ };
9
+ agent_schema_version?: Record<string, unknown>;
10
+ };
11
+ export type AgentInstanceResponse = {
12
+ details?: {
13
+ id?: string;
14
+ };
15
+ };
16
+ export declare class AgentInstanceClient {
17
+ private readonly httpClient;
18
+ constructor(httpClient: HttpRequester);
19
+ register(payload: AgentInstanceRegisterPayload): Promise<AgentInstanceResponse>;
20
+ start(agentInstanceId: string): Promise<void>;
21
+ finish(agentInstanceId: string): Promise<void>;
22
+ }
23
+ //# sourceMappingURL=agent-instance-client.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agent-instance-client.d.ts","sourceRoot":"","sources":["../../../src/transport/http/agent-instance-client.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAEtD,MAAM,MAAM,4BAA4B,GAAG;IACzC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,aAAa,CAAC,EAAE;QACd,mBAAmB,EAAE,MAAM,CAAC;QAC5B,IAAI,EAAE,MAAM,CAAC;QACb,WAAW,EAAE,MAAM,CAAC;KACrB,CAAC;IACF,oBAAoB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAChD,CAAC;AAEF,MAAM,MAAM,qBAAqB,GAAG;IAClC,OAAO,CAAC,EAAE;QACR,EAAE,CAAC,EAAE,MAAM,CAAC;KACb,CAAC;CACH,CAAC;AAEF,qBAAa,mBAAmB;IAClB,OAAO,CAAC,QAAQ,CAAC,UAAU;gBAAV,UAAU,EAAE,aAAa;IAEtD,QAAQ,CAAC,OAAO,EAAE,4BAA4B,GAAG,OAAO,CAAC,qBAAqB,CAAC;IAOzE,KAAK,CAAC,eAAe,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAO7C,MAAM,CAAC,eAAe,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAMrD"}
@@ -0,0 +1,25 @@
1
+ export class AgentInstanceClient {
2
+ httpClient;
3
+ constructor(httpClient) {
4
+ this.httpClient = httpClient;
5
+ }
6
+ register(payload) {
7
+ return this.httpClient.request('/api/v1/agent_instance/register', {
8
+ method: 'POST',
9
+ body: payload,
10
+ });
11
+ }
12
+ async start(agentInstanceId) {
13
+ await this.httpClient.request(`/api/v1/agent_instance/${agentInstanceId}/start`, {
14
+ method: 'POST',
15
+ body: {},
16
+ });
17
+ }
18
+ async finish(agentInstanceId) {
19
+ await this.httpClient.request(`/api/v1/agent_instance/${agentInstanceId}/finish`, {
20
+ method: 'POST',
21
+ body: {},
22
+ });
23
+ }
24
+ }
25
+ //# sourceMappingURL=agent-instance-client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agent-instance-client.js","sourceRoot":"","sources":["../../../src/transport/http/agent-instance-client.ts"],"names":[],"mappings":"AAkBA,MAAM,OAAO,mBAAmB;IACD;IAA7B,YAA6B,UAAyB;QAAzB,eAAU,GAAV,UAAU,CAAe;IAAG,CAAC;IAE1D,QAAQ,CAAC,OAAqC;QAC5C,OAAO,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,iCAAiC,EAAE;YAChE,MAAM,EAAE,MAAM;YACd,IAAI,EAAE,OAAO;SACd,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,KAAK,CAAC,eAAuB;QACjC,MAAM,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,0BAA0B,eAAe,QAAQ,EAAE;YAC/E,MAAM,EAAE,MAAM;YACd,IAAI,EAAE,EAAE;SACT,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,eAAuB;QAClC,MAAM,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,0BAA0B,eAAe,SAAS,EAAE;YAChF,MAAM,EAAE,MAAM;YACd,IAAI,EAAE,EAAE;SACT,CAAC,CAAC;IACL,CAAC;CACF"}
@@ -0,0 +1,25 @@
1
+ import { type HttpRequester } from './http-client.js';
2
+ export type AgentSpanStatus = 'active' | 'complete' | 'failed';
3
+ export type AgentSpanCreatePayload = {
4
+ details: {
5
+ agent_instance_id: string | null;
6
+ schema_name: string;
7
+ status: AgentSpanStatus;
8
+ payload: Record<string, unknown>;
9
+ parent_span_id: string | null;
10
+ started_at: string;
11
+ finished_at: string | null;
12
+ };
13
+ };
14
+ export type AgentSpanResponse = {
15
+ details?: {
16
+ id?: string;
17
+ };
18
+ };
19
+ export declare class AgentSpanClient {
20
+ private readonly httpClient;
21
+ constructor(httpClient: HttpRequester);
22
+ create(payload: AgentSpanCreatePayload): Promise<AgentSpanResponse>;
23
+ finish(spanId: string, timestamp: string): Promise<void>;
24
+ }
25
+ //# sourceMappingURL=agent-span-client.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agent-span-client.d.ts","sourceRoot":"","sources":["../../../src/transport/http/agent-span-client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAmB,KAAK,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAEvE,MAAM,MAAM,eAAe,GAAG,QAAQ,GAAG,UAAU,GAAG,QAAQ,CAAC;AAE/D,MAAM,MAAM,sBAAsB,GAAG;IACnC,OAAO,EAAE;QACP,iBAAiB,EAAE,MAAM,GAAG,IAAI,CAAC;QACjC,WAAW,EAAE,MAAM,CAAC;QACpB,MAAM,EAAE,eAAe,CAAC;QACxB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QACjC,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;QAC9B,UAAU,EAAE,MAAM,CAAC;QACnB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;KAC5B,CAAC;CACH,CAAC;AAEF,MAAM,MAAM,iBAAiB,GAAG;IAC9B,OAAO,CAAC,EAAE;QACR,EAAE,CAAC,EAAE,MAAM,CAAC;KACb,CAAC;CACH,CAAC;AAEF,qBAAa,eAAe;IACd,OAAO,CAAC,QAAQ,CAAC,UAAU;gBAAV,UAAU,EAAE,aAAa;IAEtD,MAAM,CAAC,OAAO,EAAE,sBAAsB,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAO7D,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAkB/D"}
@@ -0,0 +1,37 @@
1
+ import { HttpClientError } from './http-client.js';
2
+ export class AgentSpanClient {
3
+ httpClient;
4
+ constructor(httpClient) {
5
+ this.httpClient = httpClient;
6
+ }
7
+ create(payload) {
8
+ return this.httpClient.request('/api/v1/agent_spans', {
9
+ method: 'POST',
10
+ body: payload,
11
+ });
12
+ }
13
+ async finish(spanId, timestamp) {
14
+ try {
15
+ await this.httpClient.request(`/api/v1/agent_spans/${spanId}/finish`, {
16
+ method: 'POST',
17
+ body: { timestamp },
18
+ });
19
+ }
20
+ catch (error) {
21
+ if (error instanceof HttpClientError &&
22
+ error.status === 409 &&
23
+ isAlreadyFinishedError(error.responseBody)) {
24
+ return;
25
+ }
26
+ throw error;
27
+ }
28
+ }
29
+ }
30
+ function isAlreadyFinishedError(responseBody) {
31
+ if (!responseBody || typeof responseBody !== 'object') {
32
+ return false;
33
+ }
34
+ const payload = responseBody;
35
+ return payload.code === 'invalid_action';
36
+ }
37
+ //# sourceMappingURL=agent-span-client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agent-span-client.js","sourceRoot":"","sources":["../../../src/transport/http/agent-span-client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAsB,MAAM,kBAAkB,CAAC;AAsBvE,MAAM,OAAO,eAAe;IACG;IAA7B,YAA6B,UAAyB;QAAzB,eAAU,GAAV,UAAU,CAAe;IAAG,CAAC;IAE1D,MAAM,CAAC,OAA+B;QACpC,OAAO,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,qBAAqB,EAAE;YACpD,MAAM,EAAE,MAAM;YACd,IAAI,EAAE,OAAO;SACd,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,MAAc,EAAE,SAAiB;QAC5C,IAAI,CAAC;YACH,MAAM,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,uBAAuB,MAAM,SAAS,EAAE;gBACpE,MAAM,EAAE,MAAM;gBACd,IAAI,EAAE,EAAE,SAAS,EAAE;aACpB,CAAC,CAAC;QACL,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IACE,KAAK,YAAY,eAAe;gBAChC,KAAK,CAAC,MAAM,KAAK,GAAG;gBACpB,sBAAsB,CAAC,KAAK,CAAC,YAAY,CAAC,EAC1C,CAAC;gBACD,OAAO;YACT,CAAC;YAED,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC;CACF;AAED,SAAS,sBAAsB,CAAC,YAAqB;IACnD,IAAI,CAAC,YAAY,IAAI,OAAO,YAAY,KAAK,QAAQ,EAAE,CAAC;QACtD,OAAO,KAAK,CAAC;IACf,CAAC;IAED,MAAM,OAAO,GAAG,YAAuC,CAAC;IACxD,OAAO,OAAO,CAAC,IAAI,KAAK,gBAAgB,CAAC;AAC3C,CAAC"}