@prefactor/core 0.2.9 → 0.3.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 (50) hide show
  1. package/README.md +1 -1
  2. package/dist/agent/instance-manager.d.ts +4 -0
  3. package/dist/agent/instance-manager.d.ts.map +1 -1
  4. package/dist/agent/instance-manager.js +3 -0
  5. package/dist/agent/instance-manager.js.map +1 -1
  6. package/dist/client.d.ts +111 -0
  7. package/dist/client.d.ts.map +1 -0
  8. package/dist/client.js +142 -0
  9. package/dist/client.js.map +1 -0
  10. package/dist/config.d.ts +1 -1
  11. package/dist/config.d.ts.map +1 -1
  12. package/dist/config.js +2 -2
  13. package/dist/config.js.map +1 -1
  14. package/dist/create-core.d.ts +9 -0
  15. package/dist/create-core.d.ts.map +1 -1
  16. package/dist/create-core.js +6 -0
  17. package/dist/create-core.js.map +1 -1
  18. package/dist/index.cjs +121 -8
  19. package/dist/index.cjs.map +14 -12
  20. package/dist/index.d.ts +54 -1
  21. package/dist/index.d.ts.map +1 -1
  22. package/dist/index.js +121 -8
  23. package/dist/index.js.map +14 -12
  24. package/dist/lifecycle.d.ts +15 -0
  25. package/dist/lifecycle.d.ts.map +1 -1
  26. package/dist/lifecycle.js +15 -0
  27. package/dist/lifecycle.js.map +1 -1
  28. package/dist/tracing/span.d.ts +9 -0
  29. package/dist/tracing/span.d.ts.map +1 -1
  30. package/dist/tracing/span.js +6 -0
  31. package/dist/tracing/span.js.map +1 -1
  32. package/dist/tracing/with-span.d.ts +15 -0
  33. package/dist/tracing/with-span.d.ts.map +1 -1
  34. package/dist/tracing/with-span.js +3 -0
  35. package/dist/tracing/with-span.js.map +1 -1
  36. package/dist/transport/http/agent-instance-client.d.ts.map +1 -1
  37. package/dist/transport/http/agent-instance-client.js +6 -3
  38. package/dist/transport/http/agent-instance-client.js.map +1 -1
  39. package/dist/transport/http/agent-span-client.d.ts.map +1 -1
  40. package/dist/transport/http/agent-span-client.js +3 -1
  41. package/dist/transport/http/agent-span-client.js.map +1 -1
  42. package/dist/transport/http/idempotency.d.ts +2 -0
  43. package/dist/transport/http/idempotency.d.ts.map +1 -0
  44. package/dist/transport/http/idempotency.js +11 -0
  45. package/dist/transport/http/idempotency.js.map +1 -0
  46. package/dist/transport/http.d.ts +12 -0
  47. package/dist/transport/http.d.ts.map +1 -1
  48. package/dist/transport/http.js +3 -0
  49. package/dist/transport/http.js.map +1 -1
  50. package/package.json +1 -1
package/README.md CHANGED
@@ -38,7 +38,7 @@ import {
38
38
  const config = createConfig({
39
39
  transportType: 'http',
40
40
  httpConfig: {
41
- apiUrl: 'https://api.prefactor.ai',
41
+ apiUrl: 'https://app.prefactorai.com',
42
42
  apiToken: 'your-token',
43
43
  },
44
44
  });
@@ -1,8 +1,12 @@
1
1
  import type { AgentInstanceOptions, Transport } from '../transport/http.js';
2
2
  export type AgentInstanceManagerOptions = {
3
+ /** Allows starting instances before a schema has been registered. */
3
4
  allowUnregisteredSchema?: boolean;
4
5
  };
5
6
  type AgentInstanceStartOptions = AgentInstanceOptions;
7
+ /**
8
+ * Coordinates agent instance lifecycle and schema registration for a transport.
9
+ */
6
10
  export declare class AgentInstanceManager {
7
11
  private transport;
8
12
  private options;
@@ -1 +1 @@
1
- {"version":3,"file":"instance-manager.d.ts","sourceRoot":"","sources":["../../src/agent/instance-manager.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,oBAAoB,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAE5E,MAAM,MAAM,2BAA2B,GAAG;IACxC,uBAAuB,CAAC,EAAE,OAAO,CAAC;CACnC,CAAC;AAEF,KAAK,yBAAyB,GAAG,oBAAoB,CAAC;AAEtD,qBAAa,oBAAoB;IAI7B,OAAO,CAAC,SAAS;IACjB,OAAO,CAAC,OAAO;IAJjB,OAAO,CAAC,gBAAgB,CAAwC;gBAGtD,SAAS,EAAE,SAAS,EACpB,OAAO,EAAE,2BAA2B;IAG9C,cAAc,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI;IAgBrD,aAAa,CAAC,OAAO,GAAE,yBAA8B,GAAG,IAAI;IAS5D,cAAc,IAAI,IAAI;CAGvB"}
1
+ {"version":3,"file":"instance-manager.d.ts","sourceRoot":"","sources":["../../src/agent/instance-manager.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,oBAAoB,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAE5E,MAAM,MAAM,2BAA2B,GAAG;IACxC,qEAAqE;IACrE,uBAAuB,CAAC,EAAE,OAAO,CAAC;CACnC,CAAC;AAEF,KAAK,yBAAyB,GAAG,oBAAoB,CAAC;AAEtD;;GAEG;AACH,qBAAa,oBAAoB;IAI7B,OAAO,CAAC,SAAS;IACjB,OAAO,CAAC,OAAO;IAJjB,OAAO,CAAC,gBAAgB,CAAwC;gBAGtD,SAAS,EAAE,SAAS,EACpB,OAAO,EAAE,2BAA2B;IAG9C,cAAc,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI;IAgBrD,aAAa,CAAC,OAAO,GAAE,yBAA8B,GAAG,IAAI;IAS5D,cAAc,IAAI,IAAI;CAGvB"}
@@ -1,3 +1,6 @@
1
+ /**
2
+ * Coordinates agent instance lifecycle and schema registration for a transport.
3
+ */
1
4
  export class AgentInstanceManager {
2
5
  transport;
3
6
  options;
@@ -1 +1 @@
1
- {"version":3,"file":"instance-manager.js","sourceRoot":"","sources":["../../src/agent/instance-manager.ts"],"names":[],"mappings":"AAQA,MAAM,OAAO,oBAAoB;IAIrB;IACA;IAJF,gBAAgB,GAAmC,IAAI,CAAC;IAEhE,YACU,SAAoB,EACpB,OAAoC;QADpC,cAAS,GAAT,SAAS,CAAW;QACpB,YAAO,GAAP,OAAO,CAA6B;IAC3C,CAAC;IAEJ,cAAc,CAAC,MAA+B;QAC5C,IAAI,IAAI,CAAC,gBAAgB,KAAK,IAAI,EAAE,CAAC;YACnC,IAAI,CAAC,gBAAgB,GAAG,MAAM,CAAC;YAC/B,IAAI,CAAC,SAAS,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;YACtC,OAAO;QACT,CAAC;QAED,MAAM,cAAc,GAAG,eAAe,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;QAC9D,MAAM,cAAc,GAAG,eAAe,CAAC,MAAM,CAAC,CAAC;QAC/C,IAAI,cAAc,KAAK,cAAc,EAAE,CAAC;YACtC,OAAO,CAAC,IAAI,CACV,iFAAiF,CAClF,CAAC;QACJ,CAAC;IACH,CAAC;IAED,aAAa,CAAC,UAAqC,EAAE;QACnD,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,uBAAuB,IAAI,IAAI,CAAC,gBAAgB,KAAK,IAAI,EAAE,CAAC;YAC5E,OAAO,CAAC,IAAI,CAAC,8DAA8D,CAAC,CAAC;YAC7E,OAAO;QACT,CAAC;QAED,IAAI,CAAC,SAAS,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC;IAC7C,CAAC;IAED,cAAc;QACZ,IAAI,CAAC,SAAS,CAAC,mBAAmB,EAAE,CAAC;IACvC,CAAC;CACF;AAED,SAAS,eAAe,CAAC,KAAc;IACrC,OAAO,IAAI,CAAC,SAAS,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC,CAAC;AAC/C,CAAC;AAED,SAAS,cAAc,CAAC,KAAc;IACpC,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QACzB,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC,CAAC;IACrD,CAAC;IAED,IAAI,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QACvC,MAAM,UAAU,GAA4B,EAAE,CAAC;QAC/C,MAAM,WAAW,GAAG,KAAgC,CAAC;QACrD,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC;QACzE,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;YACvB,UAAU,CAAC,GAAG,CAAC,GAAG,cAAc,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC;QACrD,CAAC;QACD,OAAO,UAAU,CAAC;IACpB,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC"}
1
+ {"version":3,"file":"instance-manager.js","sourceRoot":"","sources":["../../src/agent/instance-manager.ts"],"names":[],"mappings":"AASA;;GAEG;AACH,MAAM,OAAO,oBAAoB;IAIrB;IACA;IAJF,gBAAgB,GAAmC,IAAI,CAAC;IAEhE,YACU,SAAoB,EACpB,OAAoC;QADpC,cAAS,GAAT,SAAS,CAAW;QACpB,YAAO,GAAP,OAAO,CAA6B;IAC3C,CAAC;IAEJ,cAAc,CAAC,MAA+B;QAC5C,IAAI,IAAI,CAAC,gBAAgB,KAAK,IAAI,EAAE,CAAC;YACnC,IAAI,CAAC,gBAAgB,GAAG,MAAM,CAAC;YAC/B,IAAI,CAAC,SAAS,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;YACtC,OAAO;QACT,CAAC;QAED,MAAM,cAAc,GAAG,eAAe,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;QAC9D,MAAM,cAAc,GAAG,eAAe,CAAC,MAAM,CAAC,CAAC;QAC/C,IAAI,cAAc,KAAK,cAAc,EAAE,CAAC;YACtC,OAAO,CAAC,IAAI,CACV,iFAAiF,CAClF,CAAC;QACJ,CAAC;IACH,CAAC;IAED,aAAa,CAAC,UAAqC,EAAE;QACnD,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,uBAAuB,IAAI,IAAI,CAAC,gBAAgB,KAAK,IAAI,EAAE,CAAC;YAC5E,OAAO,CAAC,IAAI,CAAC,8DAA8D,CAAC,CAAC;YAC7E,OAAO;QACT,CAAC;QAED,IAAI,CAAC,SAAS,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC;IAC7C,CAAC;IAED,cAAc;QACZ,IAAI,CAAC,SAAS,CAAC,mBAAmB,EAAE,CAAC;IACvC,CAAC;CACF;AAED,SAAS,eAAe,CAAC,KAAc;IACrC,OAAO,IAAI,CAAC,SAAS,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC,CAAC;AAC/C,CAAC;AAED,SAAS,cAAc,CAAC,KAAc;IACpC,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QACzB,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC,CAAC;IACrD,CAAC;IAED,IAAI,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QACvC,MAAM,UAAU,GAA4B,EAAE,CAAC;QAC/C,MAAM,WAAW,GAAG,KAAgC,CAAC;QACrD,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC;QACzE,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;YACvB,UAAU,CAAC,GAAG,CAAC,GAAG,cAAc,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC;QACrD,CAAC;QACD,OAAO,UAAU,CAAC;IACpB,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC"}
@@ -0,0 +1,111 @@
1
+ import type { AgentInstanceManager } from './agent/instance-manager.js';
2
+ import type { Config } from './config.js';
3
+ import type { CoreRuntime } from './create-core.js';
4
+ import type { Tracer } from './tracing/tracer.js';
5
+ /**
6
+ * Options for creating a manual span around custom code.
7
+ */
8
+ export interface ManualSpanOptions {
9
+ /** Human-readable span name. */
10
+ name: string;
11
+ /** Provider-specific span type identifier. */
12
+ spanType: string;
13
+ /** Captured input payload for the span. */
14
+ inputs: Record<string, unknown>;
15
+ /** Optional metadata associated with the span. */
16
+ metadata?: Record<string, unknown>;
17
+ }
18
+ /**
19
+ * Provider middleware value exposed by integrations.
20
+ */
21
+ export type MiddlewareLike = unknown;
22
+ /**
23
+ * Provider integration contract for Prefactor SDK clients.
24
+ */
25
+ export interface PrefactorProvider {
26
+ /**
27
+ * Creates provider middleware bound to the core runtime services.
28
+ *
29
+ * @param tracer - Runtime tracer used for span creation.
30
+ * @param agentManager - Runtime agent instance manager.
31
+ * @param config - Resolved SDK configuration.
32
+ * @returns Provider middleware consumed by upstream frameworks.
33
+ */
34
+ createMiddleware(tracer: Tracer, agentManager: AgentInstanceManager, config: Config): MiddlewareLike;
35
+ /**
36
+ * Optional provider-level cleanup hook invoked during client shutdown.
37
+ */
38
+ shutdown?: () => void | Promise<void>;
39
+ /**
40
+ * Provides a default agent schema when a user does not supply one.
41
+ *
42
+ * @returns Agent schema object, or `undefined` when no default is available.
43
+ */
44
+ getDefaultAgentSchema?: () => Record<string, unknown> | undefined;
45
+ }
46
+ export declare class PrefactorClient {
47
+ private readonly core;
48
+ private readonly middleware;
49
+ private readonly provider;
50
+ /**
51
+ * Creates a Prefactor client bound to a runtime and provider middleware.
52
+ *
53
+ * @param core - Initialized core runtime.
54
+ * @param middleware - Provider middleware returned by the integration.
55
+ * @param provider - Provider used to construct the client.
56
+ */
57
+ constructor(core: CoreRuntime, middleware: MiddlewareLike, provider: PrefactorProvider);
58
+ /**
59
+ * Returns the runtime tracer used by this client.
60
+ *
61
+ * @returns Active tracer instance.
62
+ */
63
+ getTracer(): Tracer;
64
+ /**
65
+ * Returns provider middleware created during initialization.
66
+ *
67
+ * @returns Provider middleware object.
68
+ */
69
+ getMiddleware(): MiddlewareLike;
70
+ /**
71
+ * Runs a function within a manually-created span.
72
+ *
73
+ * @param options - Manual span options.
74
+ * @param fn - Function executed inside the created span.
75
+ * @returns Result of `fn` as a promise.
76
+ */
77
+ withSpan<T>(options: ManualSpanOptions, fn: () => T | Promise<T>): Promise<T>;
78
+ /**
79
+ * Flushes pending telemetry and releases the global singleton reference.
80
+ *
81
+ * The global client reference is always cleared, even if shutdown fails.
82
+ *
83
+ * @returns Promise that resolves when shutdown completes.
84
+ */
85
+ shutdown(): Promise<void>;
86
+ }
87
+ /**
88
+ * Options for initializing the global Prefactor client.
89
+ */
90
+ export interface PrefactorOptions {
91
+ /** Provider integration used to create middleware and defaults. */
92
+ provider: PrefactorProvider;
93
+ /** Optional HTTP configuration overrides for the runtime config. */
94
+ httpConfig?: Config['httpConfig'];
95
+ }
96
+ /**
97
+ * Initializes and returns the process-wide Prefactor client singleton.
98
+ *
99
+ * Repeated calls return the same client instance until it is shut down.
100
+ *
101
+ * @param options - Initialization options.
102
+ * @returns Global Prefactor client instance.
103
+ */
104
+ export declare function init(options: PrefactorOptions): PrefactorClient;
105
+ /**
106
+ * Returns the currently initialized global Prefactor client, if any.
107
+ *
108
+ * @returns Active global client or `null`.
109
+ */
110
+ export declare function getClient(): PrefactorClient | null;
111
+ //# sourceMappingURL=client.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;AACxE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAE1C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAEpD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAIlD;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,gCAAgC;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,8CAA8C;IAC9C,QAAQ,EAAE,MAAM,CAAC;IACjB,2CAA2C;IAC3C,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAChC,kDAAkD;IAClD,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACpC;AAED;;GAEG;AACH,MAAM,MAAM,cAAc,GAAG,OAAO,CAAC;AAErC;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC;;;;;;;OAOG;IACH,gBAAgB,CACd,MAAM,EAAE,MAAM,EACd,YAAY,EAAE,oBAAoB,EAClC,MAAM,EAAE,MAAM,GACb,cAAc,CAAC;IAClB;;OAEG;IACH,QAAQ,CAAC,EAAE,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACtC;;;;OAIG;IACH,qBAAqB,CAAC,EAAE,MAAM,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,CAAC;CACnE;AAKD,qBAAa,eAAe;IAC1B,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAc;IACnC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAiB;IAC5C,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAoB;IAE7C;;;;;;OAMG;gBACS,IAAI,EAAE,WAAW,EAAE,UAAU,EAAE,cAAc,EAAE,QAAQ,EAAE,iBAAiB;IAMtF;;;;OAIG;IACH,SAAS,IAAI,MAAM;IAInB;;;;OAIG;IACH,aAAa,IAAI,cAAc;IAI/B;;;;;;OAMG;IACH,QAAQ,CAAC,CAAC,EAAE,OAAO,EAAE,iBAAiB,EAAE,EAAE,EAAE,MAAM,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC;IAa7E;;;;;;OAMG;IACG,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;CAShC;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,mEAAmE;IACnE,QAAQ,EAAE,iBAAiB,CAAC;IAC5B,oEAAoE;IACpE,UAAU,CAAC,EAAE,MAAM,CAAC,YAAY,CAAC,CAAC;CACnC;AAED;;;;;;;GAOG;AACH,wBAAgB,IAAI,CAAC,OAAO,EAAE,gBAAgB,GAAG,eAAe,CA2C/D;AAED;;;;GAIG;AACH,wBAAgB,SAAS,IAAI,eAAe,GAAG,IAAI,CAElD"}
package/dist/client.js ADDED
@@ -0,0 +1,142 @@
1
+ import { createConfig } from './config.js';
2
+ import { createCore } from './create-core.js';
3
+ import { withSpan as coreWithSpan } from './tracing/with-span.js';
4
+ import { configureLogging } from './utils/logging.js';
5
+ let prefactorClient = null;
6
+ let prefactorInitKey = null;
7
+ export class PrefactorClient {
8
+ core;
9
+ middleware;
10
+ provider;
11
+ /**
12
+ * Creates a Prefactor client bound to a runtime and provider middleware.
13
+ *
14
+ * @param core - Initialized core runtime.
15
+ * @param middleware - Provider middleware returned by the integration.
16
+ * @param provider - Provider used to construct the client.
17
+ */
18
+ constructor(core, middleware, provider) {
19
+ this.core = core;
20
+ this.middleware = middleware;
21
+ this.provider = provider;
22
+ }
23
+ /**
24
+ * Returns the runtime tracer used by this client.
25
+ *
26
+ * @returns Active tracer instance.
27
+ */
28
+ getTracer() {
29
+ return this.core.tracer;
30
+ }
31
+ /**
32
+ * Returns provider middleware created during initialization.
33
+ *
34
+ * @returns Provider middleware object.
35
+ */
36
+ getMiddleware() {
37
+ return this.middleware;
38
+ }
39
+ /**
40
+ * Runs a function within a manually-created span.
41
+ *
42
+ * @param options - Manual span options.
43
+ * @param fn - Function executed inside the created span.
44
+ * @returns Result of `fn` as a promise.
45
+ */
46
+ withSpan(options, fn) {
47
+ return coreWithSpan(this.core.tracer, {
48
+ name: options.name,
49
+ spanType: options.spanType,
50
+ inputs: options.inputs,
51
+ metadata: options.metadata,
52
+ }, fn);
53
+ }
54
+ /**
55
+ * Flushes pending telemetry and releases the global singleton reference.
56
+ *
57
+ * The global client reference is always cleared, even if shutdown fails.
58
+ *
59
+ * @returns Promise that resolves when shutdown completes.
60
+ */
61
+ async shutdown() {
62
+ try {
63
+ await this.provider.shutdown?.();
64
+ await this.core.shutdown();
65
+ }
66
+ finally {
67
+ prefactorClient = null;
68
+ prefactorInitKey = null;
69
+ }
70
+ }
71
+ }
72
+ /**
73
+ * Initializes and returns the process-wide Prefactor client singleton.
74
+ *
75
+ * Repeated calls return the same client instance until it is shut down.
76
+ *
77
+ * @param options - Initialization options.
78
+ * @returns Global Prefactor client instance.
79
+ */
80
+ export function init(options) {
81
+ const nextInitKey = buildInitKey(options);
82
+ if (prefactorClient) {
83
+ if (prefactorInitKey !== nextInitKey) {
84
+ throw new Error('Prefactor is already initialized with a different provider or configuration. ' +
85
+ 'Call shutdown() before re-initializing with different options.');
86
+ }
87
+ return prefactorClient;
88
+ }
89
+ configureLogging();
90
+ const config = options.httpConfig ? { httpConfig: options.httpConfig } : {};
91
+ let finalConfig = createConfig(config);
92
+ const providerSchema = options.provider.getDefaultAgentSchema?.();
93
+ if (!finalConfig.httpConfig?.agentSchema && providerSchema && finalConfig.httpConfig) {
94
+ finalConfig = {
95
+ ...finalConfig,
96
+ httpConfig: {
97
+ ...finalConfig.httpConfig,
98
+ agentSchema: providerSchema,
99
+ },
100
+ };
101
+ }
102
+ const core = createCore(finalConfig);
103
+ const httpConfig = finalConfig.httpConfig;
104
+ if (httpConfig?.agentSchema) {
105
+ core.agentManager.registerSchema(httpConfig.agentSchema);
106
+ }
107
+ const middleware = options.provider.createMiddleware(core.tracer, core.agentManager, finalConfig);
108
+ prefactorClient = new PrefactorClient(core, middleware, options.provider);
109
+ prefactorInitKey = nextInitKey;
110
+ return prefactorClient;
111
+ }
112
+ /**
113
+ * Returns the currently initialized global Prefactor client, if any.
114
+ *
115
+ * @returns Active global client or `null`.
116
+ */
117
+ export function getClient() {
118
+ return prefactorClient;
119
+ }
120
+ function buildInitKey(options) {
121
+ const providerType = options.provider.constructor?.name ?? 'anonymous-provider';
122
+ return `${providerType}:${stableStringify(options.httpConfig ?? null)}`;
123
+ }
124
+ function stableStringify(value) {
125
+ return JSON.stringify(normalizeValue(value));
126
+ }
127
+ function normalizeValue(value) {
128
+ if (Array.isArray(value)) {
129
+ return value.map((entry) => normalizeValue(entry));
130
+ }
131
+ if (value && typeof value === 'object') {
132
+ const normalized = {};
133
+ const objectValue = value;
134
+ const keys = Object.keys(objectValue).sort((a, b) => a.localeCompare(b));
135
+ for (const key of keys) {
136
+ normalized[key] = normalizeValue(objectValue[key]);
137
+ }
138
+ return normalized;
139
+ }
140
+ return value;
141
+ }
142
+ //# sourceMappingURL=client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
package/dist/config.d.ts CHANGED
@@ -79,7 +79,7 @@ export type Config = z.infer<typeof ConfigSchema>;
79
79
  * const config = createConfig({
80
80
  * transportType: 'http',
81
81
  * httpConfig: {
82
- * apiUrl: 'https://api.prefactor.ai',
82
+ * apiUrl: 'https://app.prefactorai.com',
83
83
  * apiToken: process.env.PREFACTOR_API_TOKEN!,
84
84
  * }
85
85
  * });
@@ -1 +1 @@
1
- {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAQxB;;GAEG;AACH,eAAO,MAAM,yBAAyB;;;;;;;;;;;;;;iBAuCpC,CAAC;AAEH,MAAM,MAAM,mBAAmB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,yBAAyB,CAAC,CAAC;AAE5E;;GAEG;AACH,eAAO,MAAM,uBAAuB;;;;;;;;;;;;;;iBAclC,CAAC;AAEH,MAAM,MAAM,iBAAiB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,uBAAuB,CAAC,CAAC;AAExE;;GAEG;AACH,eAAO,MAAM,YAAY;;;;;;;;;;;;;;;;;;;;;;;;iBAqBvB,CAAC;AAEH,MAAM,MAAM,MAAM,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,YAAY,CAAC,CAAC;AAElD;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,YAAY,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,GAAG,MAAM,CAyB9D"}
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAQxB;;GAEG;AACH,eAAO,MAAM,yBAAyB;;;;;;;;;;;;;;iBAuCpC,CAAC;AAEH,MAAM,MAAM,mBAAmB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,yBAAyB,CAAC,CAAC;AAE5E;;GAEG;AACH,eAAO,MAAM,uBAAuB;;;;;;;;;;;;;;iBAclC,CAAC;AAEH,MAAM,MAAM,iBAAiB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,uBAAuB,CAAC,CAAC;AAExE;;GAEG;AACH,eAAO,MAAM,YAAY;;;;;;;;;;;;;;;;;;;;;;;;iBAqBvB,CAAC;AAEH,MAAM,MAAM,MAAM,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,YAAY,CAAC,CAAC;AAElD;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,YAAY,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,GAAG,MAAM,CAwB9D"}
package/dist/config.js CHANGED
@@ -85,7 +85,7 @@ export const ConfigSchema = z.object({
85
85
  * const config = createConfig({
86
86
  * transportType: 'http',
87
87
  * httpConfig: {
88
- * apiUrl: 'https://api.prefactor.ai',
88
+ * apiUrl: 'https://app.prefactorai.com',
89
89
  * apiToken: process.env.PREFACTOR_API_TOKEN!,
90
90
  * }
91
91
  * });
@@ -94,7 +94,7 @@ export const ConfigSchema = z.object({
94
94
  export function createConfig(options) {
95
95
  const retryOnStatusCodesFromEnv = parseRetryOnStatusCodesEnv(process.env.PREFACTOR_RETRY_ON_STATUS_CODES);
96
96
  const config = {
97
- transportType: options?.transportType ?? process.env.PREFACTOR_TRANSPORT ?? 'http',
97
+ transportType: options?.transportType ?? 'http',
98
98
  sampleRate: options?.sampleRate ?? parseFloat(process.env.PREFACTOR_SAMPLE_RATE ?? '1.0'),
99
99
  captureInputs: options?.captureInputs ?? process.env.PREFACTOR_CAPTURE_INPUTS !== 'false',
100
100
  captureOutputs: options?.captureOutputs ?? process.env.PREFACTOR_CAPTURE_OUTPUTS !== 'false',
@@ -1 +1 @@
1
- {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
@@ -2,9 +2,18 @@ import { AgentInstanceManager } from './agent/instance-manager.js';
2
2
  import type { Config } from './config.js';
3
3
  import { Tracer } from './tracing/tracer.js';
4
4
  export type CoreRuntime = {
5
+ /** Active tracer used to create and finish spans. */
5
6
  tracer: Tracer;
7
+ /** Agent instance lifecycle manager bound to the configured transport. */
6
8
  agentManager: AgentInstanceManager;
9
+ /** Gracefully shuts down the runtime and flushes transport work. */
7
10
  shutdown: () => Promise<void>;
8
11
  };
12
+ /**
13
+ * Creates a fully initialized core runtime from validated SDK configuration.
14
+ *
15
+ * @param config - Resolved SDK configuration.
16
+ * @returns Runtime containing tracer, agent manager, and shutdown function.
17
+ */
9
18
  export declare function createCore(config: Config): CoreRuntime;
10
19
  //# sourceMappingURL=create-core.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"create-core.d.ts","sourceRoot":"","sources":["../src/create-core.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;AACnE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAI1C,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAG7C,MAAM,MAAM,WAAW,GAAG;IACxB,MAAM,EAAE,MAAM,CAAC;IACf,YAAY,EAAE,oBAAoB,CAAC;IACnC,QAAQ,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;CAC/B,CAAC;AAEF,wBAAgB,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,WAAW,CAiCtD"}
1
+ {"version":3,"file":"create-core.d.ts","sourceRoot":"","sources":["../src/create-core.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;AACnE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAI1C,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAG7C,MAAM,MAAM,WAAW,GAAG;IACxB,qDAAqD;IACrD,MAAM,EAAE,MAAM,CAAC;IAEf,0EAA0E;IAC1E,YAAY,EAAE,oBAAoB,CAAC;IAEnC,oEAAoE;IACpE,QAAQ,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;CAC/B,CAAC;AAEF;;;;;GAKG;AACH,wBAAgB,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,WAAW,CAiCtD"}
@@ -5,6 +5,12 @@ import { setActiveCoreRuntime } from './lifecycle.js';
5
5
  import { clearActiveTracer, setActiveTracer } from './tracing/active-tracer.js';
6
6
  import { Tracer } from './tracing/tracer.js';
7
7
  import { HttpTransport } from './transport/http.js';
8
+ /**
9
+ * Creates a fully initialized core runtime from validated SDK configuration.
10
+ *
11
+ * @param config - Resolved SDK configuration.
12
+ * @returns Runtime containing tracer, agent manager, and shutdown function.
13
+ */
8
14
  export function createCore(config) {
9
15
  if (!config.httpConfig) {
10
16
  throw new Error('HTTP transport requires httpConfig to be provided in configuration');
@@ -1 +1 @@
1
- {"version":3,"file":"create-core.js","sourceRoot":"","sources":["../src/create-core.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAkB,MAAM,iBAAiB,CAAC;AACnE,OAAO,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;AAEnE,OAAO,EAAE,yBAAyB,EAAE,MAAM,aAAa,CAAC;AACxD,OAAO,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAC;AACtD,OAAO,EAAE,iBAAiB,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAChF,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAC7C,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAQpD,MAAM,UAAU,UAAU,CAAC,MAAc;IACvC,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC;QACvB,MAAM,IAAI,KAAK,CAAC,oEAAoE,CAAC,CAAC;IACxF,CAAC;IAED,MAAM,UAAU,GAAG,yBAAyB,CAAC,KAAK,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;IACtE,MAAM,SAAS,GAAG,IAAI,aAAa,CAAC,UAAU,CAAC,CAAC;IAEhD,IAAI,SAAgC,CAAC;IACrC,IAAI,MAAM,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC;QAC9B,IAAI,CAAC;YACH,SAAS,GAAG,gBAAgB,CAAC,MAAM,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;QAC1D,CAAC;QAAC,MAAM,CAAC;YACP,SAAS,GAAG,SAAS,CAAC;QACxB,CAAC;IACH,CAAC;IAED,MAAM,MAAM,GAAG,IAAI,MAAM,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;IAChD,eAAe,CAAC,MAAM,CAAC,CAAC;IAExB,MAAM,uBAAuB,GAAG,OAAO,CAAC,MAAM,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC;IACvE,MAAM,YAAY,GAAG,IAAI,oBAAoB,CAAC,SAAS,EAAE;QACvD,uBAAuB;KACxB,CAAC,CAAC;IAEH,MAAM,QAAQ,GAAG,KAAK,IAAmB,EAAE;QACzC,MAAM,MAAM,CAAC,KAAK,EAAE,CAAC;QACrB,iBAAiB,CAAC,MAAM,CAAC,CAAC;QAC1B,oBAAoB,CAAC,IAAI,CAAC,CAAC;IAC7B,CAAC,CAAC;IACF,MAAM,OAAO,GAAgB,EAAE,MAAM,EAAE,YAAY,EAAE,QAAQ,EAAE,CAAC;IAChE,oBAAoB,CAAC,OAAO,CAAC,CAAC;IAC9B,OAAO,OAAO,CAAC;AACjB,CAAC"}
1
+ {"version":3,"file":"create-core.js","sourceRoot":"","sources":["../src/create-core.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAkB,MAAM,iBAAiB,CAAC;AACnE,OAAO,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;AAEnE,OAAO,EAAE,yBAAyB,EAAE,MAAM,aAAa,CAAC;AACxD,OAAO,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAC;AACtD,OAAO,EAAE,iBAAiB,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAChF,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAC7C,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAapD;;;;;GAKG;AACH,MAAM,UAAU,UAAU,CAAC,MAAc;IACvC,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC;QACvB,MAAM,IAAI,KAAK,CAAC,oEAAoE,CAAC,CAAC;IACxF,CAAC;IAED,MAAM,UAAU,GAAG,yBAAyB,CAAC,KAAK,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;IACtE,MAAM,SAAS,GAAG,IAAI,aAAa,CAAC,UAAU,CAAC,CAAC;IAEhD,IAAI,SAAgC,CAAC;IACrC,IAAI,MAAM,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC;QAC9B,IAAI,CAAC;YACH,SAAS,GAAG,gBAAgB,CAAC,MAAM,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;QAC1D,CAAC;QAAC,MAAM,CAAC;YACP,SAAS,GAAG,SAAS,CAAC;QACxB,CAAC;IACH,CAAC;IAED,MAAM,MAAM,GAAG,IAAI,MAAM,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;IAChD,eAAe,CAAC,MAAM,CAAC,CAAC;IAExB,MAAM,uBAAuB,GAAG,OAAO,CAAC,MAAM,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC;IACvE,MAAM,YAAY,GAAG,IAAI,oBAAoB,CAAC,SAAS,EAAE;QACvD,uBAAuB;KACxB,CAAC,CAAC;IAEH,MAAM,QAAQ,GAAG,KAAK,IAAmB,EAAE;QACzC,MAAM,MAAM,CAAC,KAAK,EAAE,CAAC;QACrB,iBAAiB,CAAC,MAAM,CAAC,CAAC;QAC1B,oBAAoB,CAAC,IAAI,CAAC,CAAC;IAC7B,CAAC,CAAC;IACF,MAAM,OAAO,GAAgB,EAAE,MAAM,EAAE,YAAY,EAAE,QAAQ,EAAE,CAAC;IAChE,oBAAoB,CAAC,OAAO,CAAC,CAAC;IAC9B,OAAO,OAAO,CAAC;AACjB,CAAC"}
package/dist/index.cjs CHANGED
@@ -34,7 +34,9 @@ __export(exports_src, {
34
34
  shutdown: () => shutdown,
35
35
  serializeValue: () => serializeValue,
36
36
  registerShutdownHandler: () => registerShutdownHandler,
37
+ init: () => init,
37
38
  getLogger: () => getLogger,
39
+ getClient: () => getClient,
38
40
  createSpanTypePrefixer: () => createSpanTypePrefixer,
39
41
  createCore: () => createCore,
40
42
  createConfig: () => createConfig,
@@ -43,12 +45,12 @@ __export(exports_src, {
43
45
  SpanType: () => SpanType,
44
46
  SpanStatus: () => SpanStatus,
45
47
  SpanContext: () => SpanContext,
48
+ PrefactorClient: () => PrefactorClient,
46
49
  PartialHttpConfigSchema: () => PartialHttpConfigSchema,
47
50
  HttpTransportConfigSchema: () => HttpTransportConfigSchema,
48
51
  HttpTransport: () => HttpTransport,
49
52
  HttpClientError: () => HttpClientError,
50
53
  HttpClient: () => HttpClient,
51
- HTTPClient: () => HttpClient,
52
54
  ConfigSchema: () => ConfigSchema,
53
55
  AgentSpanClient: () => AgentSpanClient,
54
56
  AgentInstanceManager: () => AgentInstanceManager,
@@ -155,7 +157,7 @@ var ConfigSchema = import_zod.z.object({
155
157
  function createConfig(options) {
156
158
  const retryOnStatusCodesFromEnv = parseRetryOnStatusCodesEnv(process.env.PREFACTOR_RETRY_ON_STATUS_CODES);
157
159
  const config = {
158
- transportType: options?.transportType ?? process.env.PREFACTOR_TRANSPORT ?? "http",
160
+ transportType: options?.transportType ?? "http",
159
161
  sampleRate: options?.sampleRate ?? parseFloat(process.env.PREFACTOR_SAMPLE_RATE ?? "1.0"),
160
162
  captureInputs: options?.captureInputs ?? process.env.PREFACTOR_CAPTURE_INPUTS !== "false",
161
163
  captureOutputs: options?.captureOutputs ?? process.env.PREFACTOR_CAPTURE_OUTPUTS !== "false",
@@ -175,6 +177,7 @@ function parseRetryOnStatusCodesEnv(value) {
175
177
  const parsedCodes = value.split(",").map((status) => status.trim()).filter((status) => /^\d{3}$/.test(status)).map((status) => Number(status)).filter((status) => status >= 100 && status <= 599);
176
178
  return parsedCodes.length > 0 ? parsedCodes : undefined;
177
179
  }
180
+
178
181
  // packages/core/src/create-core.ts
179
182
  var import_pfid2 = require("@prefactor/pfid");
180
183
 
@@ -567,6 +570,18 @@ function configureLogging() {
567
570
  }
568
571
  }
569
572
 
573
+ // packages/core/src/transport/http/idempotency.ts
574
+ var MAX_KEY_LENGTH = 64;
575
+ function ensureIdempotencyKey(key) {
576
+ if (key === undefined) {
577
+ return crypto.randomUUID();
578
+ }
579
+ if (key.length > MAX_KEY_LENGTH) {
580
+ throw new Error(`idempotency_key must be ≤${MAX_KEY_LENGTH} characters, got ${key.length}`);
581
+ }
582
+ return key;
583
+ }
584
+
570
585
  // packages/core/src/transport/http/agent-instance-client.ts
571
586
  class AgentInstanceClient {
572
587
  httpClient;
@@ -576,19 +591,21 @@ class AgentInstanceClient {
576
591
  register(payload) {
577
592
  return this.httpClient.request("/api/v1/agent_instance/register", {
578
593
  method: "POST",
579
- body: payload
594
+ body: { ...payload, idempotency_key: ensureIdempotencyKey(payload.idempotency_key) }
580
595
  });
581
596
  }
582
597
  start(agentInstanceId, options) {
598
+ const opts = options ?? {};
583
599
  return this.httpClient.request(`/api/v1/agent_instance/${agentInstanceId}/start`, {
584
600
  method: "POST",
585
- body: options ?? {}
601
+ body: { ...opts, idempotency_key: ensureIdempotencyKey(opts.idempotency_key) }
586
602
  });
587
603
  }
588
604
  finish(agentInstanceId, options) {
605
+ const opts = options ?? {};
589
606
  return this.httpClient.request(`/api/v1/agent_instance/${agentInstanceId}/finish`, {
590
607
  method: "POST",
591
- body: options ?? {}
608
+ body: { ...opts, idempotency_key: ensureIdempotencyKey(opts.idempotency_key) }
592
609
  });
593
610
  }
594
611
  }
@@ -735,7 +752,7 @@ class AgentSpanClient {
735
752
  create(payload) {
736
753
  return this.httpClient.request("/api/v1/agent_spans", {
737
754
  method: "POST",
738
- body: payload
755
+ body: { ...payload, idempotency_key: ensureIdempotencyKey(payload.idempotency_key) }
739
756
  });
740
757
  }
741
758
  async finish(spanId, timestamp, options = {}) {
@@ -744,7 +761,8 @@ class AgentSpanClient {
744
761
  method: "POST",
745
762
  body: {
746
763
  timestamp,
747
- ...options
764
+ ...options,
765
+ idempotency_key: ensureIdempotencyKey(options.idempotency_key)
748
766
  }
749
767
  });
750
768
  } catch (error) {
@@ -1097,6 +1115,7 @@ function createCore(config) {
1097
1115
  setActiveCoreRuntime(runtime);
1098
1116
  return runtime;
1099
1117
  }
1118
+
1100
1119
  // packages/core/src/tracing/with-span.ts
1101
1120
  async function withSpan(tracerOrOptions, optionsOrFn, maybeFn) {
1102
1121
  const { tracer, options, fn } = resolveArgs(tracerOrOptions, optionsOrFn, maybeFn);
@@ -1145,6 +1164,100 @@ function resolveArgs(tracerOrOptions, optionsOrFn, maybeFn) {
1145
1164
  fn: optionsOrFn
1146
1165
  };
1147
1166
  }
1167
+
1168
+ // packages/core/src/client.ts
1169
+ var prefactorClient = null;
1170
+ var prefactorInitKey = null;
1171
+
1172
+ class PrefactorClient {
1173
+ core;
1174
+ middleware;
1175
+ provider;
1176
+ constructor(core, middleware, provider) {
1177
+ this.core = core;
1178
+ this.middleware = middleware;
1179
+ this.provider = provider;
1180
+ }
1181
+ getTracer() {
1182
+ return this.core.tracer;
1183
+ }
1184
+ getMiddleware() {
1185
+ return this.middleware;
1186
+ }
1187
+ withSpan(options, fn) {
1188
+ return withSpan(this.core.tracer, {
1189
+ name: options.name,
1190
+ spanType: options.spanType,
1191
+ inputs: options.inputs,
1192
+ metadata: options.metadata
1193
+ }, fn);
1194
+ }
1195
+ async shutdown() {
1196
+ try {
1197
+ await this.provider.shutdown?.();
1198
+ await this.core.shutdown();
1199
+ } finally {
1200
+ prefactorClient = null;
1201
+ prefactorInitKey = null;
1202
+ }
1203
+ }
1204
+ }
1205
+ function init(options) {
1206
+ const nextInitKey = buildInitKey(options);
1207
+ if (prefactorClient) {
1208
+ if (prefactorInitKey !== nextInitKey) {
1209
+ throw new Error("Prefactor is already initialized with a different provider or configuration. " + "Call shutdown() before re-initializing with different options.");
1210
+ }
1211
+ return prefactorClient;
1212
+ }
1213
+ configureLogging();
1214
+ const config = options.httpConfig ? { httpConfig: options.httpConfig } : {};
1215
+ let finalConfig = createConfig(config);
1216
+ const providerSchema = options.provider.getDefaultAgentSchema?.();
1217
+ if (!finalConfig.httpConfig?.agentSchema && providerSchema && finalConfig.httpConfig) {
1218
+ finalConfig = {
1219
+ ...finalConfig,
1220
+ httpConfig: {
1221
+ ...finalConfig.httpConfig,
1222
+ agentSchema: providerSchema
1223
+ }
1224
+ };
1225
+ }
1226
+ const core = createCore(finalConfig);
1227
+ const httpConfig = finalConfig.httpConfig;
1228
+ if (httpConfig?.agentSchema) {
1229
+ core.agentManager.registerSchema(httpConfig.agentSchema);
1230
+ }
1231
+ const middleware = options.provider.createMiddleware(core.tracer, core.agentManager, finalConfig);
1232
+ prefactorClient = new PrefactorClient(core, middleware, options.provider);
1233
+ prefactorInitKey = nextInitKey;
1234
+ return prefactorClient;
1235
+ }
1236
+ function getClient() {
1237
+ return prefactorClient;
1238
+ }
1239
+ function buildInitKey(options) {
1240
+ const providerType = options.provider.constructor?.name ?? "anonymous-provider";
1241
+ return `${providerType}:${stableStringify2(options.httpConfig ?? null)}`;
1242
+ }
1243
+ function stableStringify2(value) {
1244
+ return JSON.stringify(normalizeValue2(value));
1245
+ }
1246
+ function normalizeValue2(value) {
1247
+ if (Array.isArray(value)) {
1248
+ return value.map((entry) => normalizeValue2(entry));
1249
+ }
1250
+ if (value && typeof value === "object") {
1251
+ const normalized = {};
1252
+ const objectValue = value;
1253
+ const keys = Object.keys(objectValue).sort((a, b) => a.localeCompare(b));
1254
+ for (const key of keys) {
1255
+ normalized[key] = normalizeValue2(objectValue[key]);
1256
+ }
1257
+ return normalized;
1258
+ }
1259
+ return value;
1260
+ }
1148
1261
  // packages/core/src/utils/serialization.ts
1149
1262
  function truncateString(value, maxLength) {
1150
1263
  if (value.length <= maxLength) {
@@ -1179,4 +1292,4 @@ function serializeValue(value, maxLength = 1e4) {
1179
1292
  }
1180
1293
  }
1181
1294
 
1182
- //# debugId=D9393D8709E8908264756E2164756E21
1295
+ //# debugId=4C0DC6DB86519AD564756E2164756E21