@superblocksteam/vite-plugin-file-sync 2.0.41-next.31 → 2.0.41-next.33
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.
- package/dist/ai-service/agent/apis.js +1 -1
- package/dist/ai-service/agent/apis.js.map +1 -1
- package/dist/ai-service/agent/tools/build-finalize.d.ts.map +1 -1
- package/dist/ai-service/agent/tools/build-finalize.js +15 -2
- package/dist/ai-service/agent/tools/build-finalize.js.map +1 -1
- package/dist/ai-service/agent/tools/debug-cache.d.ts.map +1 -1
- package/dist/ai-service/agent/tools/debug-cache.js +3 -2
- package/dist/ai-service/agent/tools/debug-cache.js.map +1 -1
- package/dist/ai-service/agent/utils.d.ts.map +1 -1
- package/dist/ai-service/agent/utils.js +170 -159
- package/dist/ai-service/agent/utils.js.map +1 -1
- package/dist/ai-service/app-interface/file-system-interface.d.ts.map +1 -1
- package/dist/ai-service/app-interface/file-system-interface.js +117 -68
- package/dist/ai-service/app-interface/file-system-interface.js.map +1 -1
- package/dist/ai-service/app-interface/linter.d.ts.map +1 -1
- package/dist/ai-service/app-interface/linter.js +103 -54
- package/dist/ai-service/app-interface/linter.js.map +1 -1
- package/dist/ai-service/app-interface/shell.d.ts.map +1 -1
- package/dist/ai-service/app-interface/shell.js +227 -160
- package/dist/ai-service/app-interface/shell.js.map +1 -1
- package/dist/ai-service/artifacts/bolt.d.ts.map +1 -1
- package/dist/ai-service/artifacts/bolt.js +88 -30
- package/dist/ai-service/artifacts/bolt.js.map +1 -1
- package/dist/ai-service/chat/extract-history.d.ts +3 -1
- package/dist/ai-service/chat/extract-history.d.ts.map +1 -1
- package/dist/ai-service/chat/extract-history.js +6 -1
- package/dist/ai-service/chat/extract-history.js.map +1 -1
- package/dist/ai-service/context/app-context.d.ts.map +1 -1
- package/dist/ai-service/context/app-context.js +305 -241
- package/dist/ai-service/context/app-context.js.map +1 -1
- package/dist/ai-service/index.d.ts +1 -0
- package/dist/ai-service/index.d.ts.map +1 -1
- package/dist/ai-service/index.js +72 -59
- package/dist/ai-service/index.js.map +1 -1
- package/dist/ai-service/integration-validator.d.ts +1 -1
- package/dist/ai-service/integration-validator.d.ts.map +1 -1
- package/dist/ai-service/integration-validator.js +6 -3
- package/dist/ai-service/integration-validator.js.map +1 -1
- package/dist/ai-service/integrations/metadata/database.d.ts.map +1 -1
- package/dist/ai-service/integrations/metadata/database.js +1 -1
- package/dist/ai-service/integrations/metadata/database.js.map +1 -1
- package/dist/ai-service/integrations/metadata/graphql-based.js +1 -1
- package/dist/ai-service/integrations/metadata/graphql-based.js.map +1 -1
- package/dist/ai-service/integrations/metadata/open-api.js +1 -1
- package/dist/ai-service/integrations/metadata/open-api.js.map +1 -1
- package/dist/ai-service/integrations/store.d.ts.map +1 -1
- package/dist/ai-service/integrations/store.js +135 -74
- package/dist/ai-service/integrations/store.js.map +1 -1
- package/dist/ai-service/llmobs/helpers.d.ts +20 -0
- package/dist/ai-service/llmobs/helpers.d.ts.map +1 -0
- package/dist/ai-service/llmobs/helpers.js +130 -0
- package/dist/ai-service/llmobs/helpers.js.map +1 -0
- package/dist/ai-service/llmobs/index.d.ts +8 -0
- package/dist/ai-service/llmobs/index.d.ts.map +1 -0
- package/dist/ai-service/llmobs/index.js +7 -0
- package/dist/ai-service/llmobs/index.js.map +1 -0
- package/dist/ai-service/llmobs/middleware/stream-text.d.ts +60 -0
- package/dist/ai-service/llmobs/middleware/stream-text.d.ts.map +1 -0
- package/dist/ai-service/llmobs/middleware/stream-text.js +601 -0
- package/dist/ai-service/llmobs/middleware/stream-text.js.map +1 -0
- package/dist/ai-service/llmobs/tracer.d.ts +95 -0
- package/dist/ai-service/llmobs/tracer.d.ts.map +1 -0
- package/dist/ai-service/llmobs/tracer.js +341 -0
- package/dist/ai-service/llmobs/tracer.js.map +1 -0
- package/dist/ai-service/llmobs/types.d.ts +47 -0
- package/dist/ai-service/llmobs/types.d.ts.map +1 -0
- package/dist/ai-service/llmobs/types.js +2 -0
- package/dist/ai-service/llmobs/types.js.map +1 -0
- package/dist/ai-service/prompt-builder-service/fragment-generators/chakra-tokens.d.ts +3 -1
- package/dist/ai-service/prompt-builder-service/fragment-generators/chakra-tokens.d.ts.map +1 -1
- package/dist/ai-service/prompt-builder-service/fragment-generators/chakra-tokens.js +5 -3
- package/dist/ai-service/prompt-builder-service/fragment-generators/chakra-tokens.js.map +1 -1
- package/dist/ai-service/prompt-builder-service/fragment-generators/file-fragments.d.ts +3 -1
- package/dist/ai-service/prompt-builder-service/fragment-generators/file-fragments.d.ts.map +1 -1
- package/dist/ai-service/prompt-builder-service/fragment-generators/file-fragments.js +3 -1
- package/dist/ai-service/prompt-builder-service/fragment-generators/file-fragments.js.map +1 -1
- package/dist/ai-service/prompt-builder-service/static-fragments/library-components/ButtonPropsDocs.js +1 -1
- package/dist/ai-service/prompt-builder-service/static-fragments/library-components/CheckboxPropsDocs.js +1 -1
- package/dist/ai-service/prompt-builder-service/static-fragments/library-components/ColumnPropsDocs.js +1 -1
- package/dist/ai-service/prompt-builder-service/static-fragments/library-components/ContainerPropsDocs.js +1 -1
- package/dist/ai-service/prompt-builder-service/static-fragments/library-components/DatePickerPropsDocs.js +1 -1
- package/dist/ai-service/prompt-builder-service/static-fragments/library-components/DropdownPropsDocs.js +1 -1
- package/dist/ai-service/prompt-builder-service/static-fragments/library-components/IconPropsDocs.js +1 -1
- package/dist/ai-service/prompt-builder-service/static-fragments/library-components/ImagePropsDocs.js +1 -1
- package/dist/ai-service/prompt-builder-service/static-fragments/library-components/InputPropsDocs.js +1 -1
- package/dist/ai-service/prompt-builder-service/static-fragments/library-components/ModalPropsDocs.js +1 -1
- package/dist/ai-service/prompt-builder-service/static-fragments/library-components/PagePropsDocs.js +1 -1
- package/dist/ai-service/prompt-builder-service/static-fragments/library-components/SectionPropsDocs.js +1 -1
- package/dist/ai-service/prompt-builder-service/static-fragments/library-components/SlideoutPropsDocs.js +1 -1
- package/dist/ai-service/prompt-builder-service/static-fragments/library-components/SwitchPropsDocs.js +1 -1
- package/dist/ai-service/prompt-builder-service/static-fragments/library-components/TablePropsDocs.js +1 -1
- package/dist/ai-service/prompt-builder-service/static-fragments/library-components/TextPropsDocs.js +1 -1
- package/dist/ai-service/prompt-builder-service/static-fragments/library-typedefs/Dim.js +1 -1
- package/dist/ai-service/prompt-builder-service/static-fragments/library-typedefs/EventFlow.js +1 -1
- package/dist/ai-service/prompt-builder-service/static-fragments/library-typedefs/TextStyleWithVariant.js +1 -1
- package/dist/ai-service/prompt-builder-service/static-fragments/platform-parts/full-examples.js +1 -1
- package/dist/ai-service/prompt-builder-service/static-fragments/platform-parts/superblocks-api.js +1 -1
- package/dist/ai-service/prompt-builder-service/static-fragments/platform-parts/superblocks-components-rules.js +1 -1
- package/dist/ai-service/prompt-builder-service/static-fragments/platform-parts/superblocks-custom-components.js +1 -1
- package/dist/ai-service/prompt-builder-service/static-fragments/platform-parts/superblocks-data-filtering.js +1 -1
- package/dist/ai-service/prompt-builder-service/static-fragments/platform-parts/superblocks-event-flow.js +1 -1
- package/dist/ai-service/prompt-builder-service/static-fragments/platform-parts/superblocks-forms.js +1 -1
- package/dist/ai-service/prompt-builder-service/static-fragments/platform-parts/superblocks-layouts.js +1 -1
- package/dist/ai-service/prompt-builder-service/static-fragments/platform-parts/superblocks-page.js +1 -1
- package/dist/ai-service/prompt-builder-service/static-fragments/platform-parts/superblocks-rbac.js +1 -1
- package/dist/ai-service/prompt-builder-service/static-fragments/platform-parts/superblocks-routes.js +1 -1
- package/dist/ai-service/prompt-builder-service/static-fragments/platform-parts/superblocks-state.js +1 -1
- package/dist/ai-service/prompt-builder-service/static-fragments/platform-parts/superblocks-theming-chakra-new.js +1 -1
- package/dist/ai-service/prompt-builder-service/static-fragments/platform-parts/system-base.js +1 -1
- package/dist/ai-service/prompt-builder-service/static-fragments/platform-parts/system-incremental.js +1 -1
- package/dist/ai-service/prompt-builder-service/static-fragments/platform-parts/system-specific-edit.js +1 -1
- package/dist/ai-service/prompt-builder-service/utils/integrations/to-sdk-prompt.d.ts +3 -1
- package/dist/ai-service/prompt-builder-service/utils/integrations/to-sdk-prompt.d.ts.map +1 -1
- package/dist/ai-service/prompt-builder-service/utils/integrations/to-sdk-prompt.js +4 -2
- package/dist/ai-service/prompt-builder-service/utils/integrations/to-sdk-prompt.js.map +1 -1
- package/dist/ai-service/prompt-builder-service/utils/markdown-loader.d.ts +3 -1
- package/dist/ai-service/prompt-builder-service/utils/markdown-loader.d.ts.map +1 -1
- package/dist/ai-service/prompt-builder-service/utils/markdown-loader.js +3 -1
- package/dist/ai-service/prompt-builder-service/utils/markdown-loader.js.map +1 -1
- package/dist/ai-service/state-machine/clark-fsm.d.ts +16 -4
- package/dist/ai-service/state-machine/clark-fsm.d.ts.map +1 -1
- package/dist/ai-service/state-machine/clark-fsm.js +47 -0
- package/dist/ai-service/state-machine/clark-fsm.js.map +1 -1
- package/dist/ai-service/state-machine/handlers/agent-planning.d.ts.map +1 -1
- package/dist/ai-service/state-machine/handlers/agent-planning.js +3 -5
- package/dist/ai-service/state-machine/handlers/agent-planning.js.map +1 -1
- package/dist/ai-service/state-machine/handlers/awaiting-user.d.ts.map +1 -1
- package/dist/ai-service/state-machine/handlers/awaiting-user.js +5 -4
- package/dist/ai-service/state-machine/handlers/awaiting-user.js.map +1 -1
- package/dist/ai-service/state-machine/handlers/llm-generating.d.ts.map +1 -1
- package/dist/ai-service/state-machine/handlers/llm-generating.js +240 -260
- package/dist/ai-service/state-machine/handlers/llm-generating.js.map +1 -1
- package/dist/ai-service/state-machine/traced-fsm.d.ts +41 -70
- package/dist/ai-service/state-machine/traced-fsm.d.ts.map +1 -1
- package/dist/ai-service/state-machine/traced-fsm.js +66 -173
- package/dist/ai-service/state-machine/traced-fsm.js.map +1 -1
- package/dist/ai-service/template-renderer.d.ts.map +1 -1
- package/dist/ai-service/template-renderer.js +102 -56
- package/dist/ai-service/template-renderer.js.map +1 -1
- package/dist/ai-service/test-utils/dd-trace-helpers.d.ts +1 -0
- package/dist/ai-service/test-utils/dd-trace-helpers.d.ts.map +1 -1
- package/dist/ai-service/test-utils/dd-trace-helpers.js.map +1 -1
- package/dist/ai-service/test-utils/span-interceptor.d.ts +74 -0
- package/dist/ai-service/test-utils/span-interceptor.d.ts.map +1 -0
- package/dist/ai-service/test-utils/span-interceptor.js +272 -0
- package/dist/ai-service/test-utils/span-interceptor.js.map +1 -0
- package/dist/ai-service/transform/api-builder/to-sdk-transformer.d.ts +2 -1
- package/dist/ai-service/transform/api-builder/to-sdk-transformer.d.ts.map +1 -1
- package/dist/ai-service/transform/api-builder/to-sdk-transformer.js +120 -63
- package/dist/ai-service/transform/api-builder/to-sdk-transformer.js.map +1 -1
- package/dist/ai-service/transform/api-builder/to-yaml-transformer.d.ts.map +1 -1
- package/dist/ai-service/transform/api-builder/to-yaml-transformer.js +97 -47
- package/dist/ai-service/transform/api-builder/to-yaml-transformer.js.map +1 -1
- package/dist/ai-service/transform/remove-api-builder-imports/transformer.d.ts.map +1 -1
- package/dist/ai-service/transform/remove-api-builder-imports/transformer.js +88 -37
- package/dist/ai-service/transform/remove-api-builder-imports/transformer.js.map +1 -1
- package/dist/ai-service/transform/shared.d.ts +4 -2
- package/dist/ai-service/transform/shared.d.ts.map +1 -1
- package/dist/ai-service/transform/shared.js +6 -3
- package/dist/ai-service/transform/shared.js.map +1 -1
- package/dist/ai-service/transform/workaround-missing-sbapi/transformer.d.ts.map +1 -1
- package/dist/ai-service/transform/workaround-missing-sbapi/transformer.js +77 -26
- package/dist/ai-service/transform/workaround-missing-sbapi/transformer.js.map +1 -1
- package/dist/ai-service/types.d.ts +2 -0
- package/dist/ai-service/types.d.ts.map +1 -1
- package/dist/ai-service/types.js.map +1 -1
- package/dist/ai-service/util/safe-stringify.d.ts +2 -0
- package/dist/ai-service/util/safe-stringify.d.ts.map +1 -0
- package/dist/ai-service/util/safe-stringify.js +68 -0
- package/dist/ai-service/util/safe-stringify.js.map +1 -0
- package/dist/binding-extraction/extract-identifiers.d.ts +5 -2
- package/dist/binding-extraction/extract-identifiers.d.ts.map +1 -1
- package/dist/binding-extraction/extract-identifiers.js +7 -4
- package/dist/binding-extraction/extract-identifiers.js.map +1 -1
- package/dist/util/logger.d.ts +9 -0
- package/dist/util/logger.d.ts.map +1 -1
- package/dist/util/logger.js +64 -7
- package/dist/util/logger.js.map +1 -1
- package/package.json +8 -7
- package/dist/ai-service/llmobs.d.ts +0 -154
- package/dist/ai-service/llmobs.d.ts.map +0 -1
- package/dist/ai-service/llmobs.js +0 -216
- package/dist/ai-service/llmobs.js.map +0 -1
- package/dist/ai-service/util/ddog-llmobs.d.ts +0 -20
- package/dist/ai-service/util/ddog-llmobs.d.ts.map +0 -1
- package/dist/ai-service/util/ddog-llmobs.js +0 -197
- package/dist/ai-service/util/ddog-llmobs.js.map +0 -1
|
@@ -1,50 +1,20 @@
|
|
|
1
1
|
import { type Logger } from "../../util/logger.js";
|
|
2
|
-
import {
|
|
3
|
-
import { FSM, type
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
};
|
|
16
|
-
/**
|
|
17
|
-
* Tracing configuration for a Finite State Machine.
|
|
18
|
-
*
|
|
19
|
-
* @example
|
|
20
|
-
* ```typescript
|
|
21
|
-
* const tracingConfig: TracedFSMConfig<MyState> = {
|
|
22
|
-
* state: {
|
|
23
|
-
* 'planning': { kind: 'task', tags: { priority: 'low' } },
|
|
24
|
-
* 'generating': { kind: 'workflow', tags: { priority: 'high' } },
|
|
25
|
-
* 'idle': 'terminal', // Terminal states end the root span
|
|
26
|
-
* 'failed': 'terminal'
|
|
27
|
-
* },
|
|
28
|
-
* rootSpan: {
|
|
29
|
-
* name: 'GenerationProcess',
|
|
30
|
-
* kind: 'workflow',
|
|
31
|
-
* tags: { version: '1.0' }
|
|
32
|
-
* }
|
|
33
|
-
* };
|
|
34
|
-
* ```
|
|
35
|
-
*
|
|
36
|
-
* @property state - Configuration for each state. Use 'terminal' for states that end the FSM lifecycle
|
|
37
|
-
* @property rootSpan - Optional configuration for a root span that tracks the entire FSM lifecycle
|
|
38
|
-
*/
|
|
39
|
-
export type TracedFSMConfig<S extends string> = {
|
|
40
|
-
state: {
|
|
41
|
-
[K in S]?: TracedFSMSpanConfig | "terminal";
|
|
42
|
-
};
|
|
43
|
-
rootSpan?: TracedFSMSpanConfig & {
|
|
44
|
-
name: string;
|
|
45
|
-
};
|
|
46
|
-
validateFullTracingEnabled?: boolean;
|
|
2
|
+
import { type ExportedLLMObsSpan, type LLMObsNamedSpanOptions, LLMObsTracer } from "../llmobs/index.js";
|
|
3
|
+
import { FSM, type FSMConfig, type FSMState, type FSMEventBase } from "./fsm.js";
|
|
4
|
+
export type TracedFSMConfig<S extends FSMState, E extends FSMEventBase, C> = FSMConfig<S, E, C> & {
|
|
5
|
+
/**
|
|
6
|
+
* Create a provider function that returns tags to be added to every span.
|
|
7
|
+
* This can be used to attach contextual metadata such as request IDs,
|
|
8
|
+
* user IDs, etc. It is called at the termination of each non-terminal state,
|
|
9
|
+
* and at the end of the FSM lifecycle.
|
|
10
|
+
* @param fsm The TracedFSM instance
|
|
11
|
+
*/
|
|
12
|
+
createTagProvider?: TracedFSMTagProviderFactory<S, E, C>;
|
|
13
|
+
/** Optional session ID to associate with all spans created by this FSM instance. */
|
|
14
|
+
sessionId?: string;
|
|
47
15
|
};
|
|
16
|
+
export type TracedFSMStateSpanOptions = LLMObsNamedSpanOptions | "terminal";
|
|
17
|
+
export type TracedFSMTagProviderFactory<S extends FSMState, E extends FSMEventBase, C> = (fsm: TracedFSM<S, E, C>) => TagProvider;
|
|
48
18
|
/**
|
|
49
19
|
* FSM wrapper that emits tracing spans for each state transition.
|
|
50
20
|
*
|
|
@@ -65,25 +35,12 @@ export type TracedFSMConfig<S extends string> = {
|
|
|
65
35
|
*
|
|
66
36
|
* Tracing failures are logged but do not interrupt FSM operation. The FSM will continue
|
|
67
37
|
* to function normally even if the tracing infrastructure is unavailable.
|
|
68
|
-
*
|
|
69
|
-
* Subclasses can override {@link getSpanTags} to attach contextual metadata to every span.
|
|
70
38
|
*/
|
|
71
|
-
export declare class TracedFSM<S extends string, E extends {
|
|
39
|
+
export declare abstract class TracedFSM<S extends string, E extends {
|
|
72
40
|
type: string;
|
|
73
41
|
}, C> extends FSM<S, E, C> {
|
|
74
42
|
private tracing;
|
|
75
|
-
constructor(config:
|
|
76
|
-
transitions: {
|
|
77
|
-
[K in S]: Partial<Record<E["type"], S>>;
|
|
78
|
-
};
|
|
79
|
-
initialState: S;
|
|
80
|
-
initialContext: C;
|
|
81
|
-
createTransitionHandler: (fsm: TracedFSM<S, E, C>) => (params: FSMOnTransitionParams<S, E>) => void | Promise<void>;
|
|
82
|
-
metadata?: FSMMetadata<S>;
|
|
83
|
-
tracing: TracedFSMConfig<S>;
|
|
84
|
-
sessionId?: string;
|
|
85
|
-
}, tracer?: LLMObsTracer, logger?: Logger);
|
|
86
|
-
private validateTracingConfig;
|
|
43
|
+
constructor(config: TracedFSMConfig<S, E, C>, tracer?: LLMObsTracer, logger?: Logger);
|
|
87
44
|
get sessionId(): string | undefined;
|
|
88
45
|
/**
|
|
89
46
|
* Exported representation of the active root span (FSM lifecycle), if any.
|
|
@@ -92,19 +49,33 @@ export declare class TracedFSM<S extends string, E extends {
|
|
|
92
49
|
get tracer(): LLMObsTracer;
|
|
93
50
|
get logger(): Logger;
|
|
94
51
|
/**
|
|
95
|
-
*
|
|
96
|
-
*
|
|
97
|
-
*
|
|
98
|
-
*
|
|
99
|
-
* @returns A record of key-value pairs to attach as tags to each span
|
|
52
|
+
* Supply the span options for the long-lived root span that wraps
|
|
53
|
+
* the entire FSM lifecycle. Invoked once when the first state transition
|
|
54
|
+
* runs.
|
|
100
55
|
*/
|
|
101
|
-
protected
|
|
56
|
+
protected abstract getRootSpanOptions(initialEvent: E): LLMObsNamedSpanOptions;
|
|
57
|
+
/**
|
|
58
|
+
* Provide the span options for the state being entered.
|
|
59
|
+
* Return "terminal" to finish the root span instead of
|
|
60
|
+
* creating a new state span.
|
|
61
|
+
*/
|
|
62
|
+
protected abstract getStateSpanOptions(state: S): TracedFSMStateSpanOptions;
|
|
63
|
+
/**
|
|
64
|
+
* Sanitize the event object to remove sensitive information
|
|
65
|
+
* before attaching it to the trace.
|
|
66
|
+
* */
|
|
67
|
+
protected abstract sanitizeEvent(event: E): Partial<E>;
|
|
102
68
|
private handleTransitionTracing;
|
|
103
69
|
private startRootSpanIfNeeded;
|
|
104
|
-
private
|
|
70
|
+
private finishRootSpanIfOpen;
|
|
105
71
|
private startStateSpan;
|
|
106
|
-
private
|
|
107
|
-
private
|
|
72
|
+
private finishStateSpanIfOpen;
|
|
73
|
+
private startSpan;
|
|
74
|
+
private finishSpan;
|
|
75
|
+
private isTransitionParams;
|
|
108
76
|
}
|
|
109
|
-
export {
|
|
77
|
+
export type Tags = {
|
|
78
|
+
[key: string]: any;
|
|
79
|
+
};
|
|
80
|
+
export type TagProvider = () => Tags;
|
|
110
81
|
//# sourceMappingURL=traced-fsm.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"traced-fsm.d.ts","sourceRoot":"","sources":["../../../src/ai-service/state-machine/traced-fsm.ts"],"names":[],"mappings":"AAAA,OAAO,EAA2B,KAAK,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAC5E,OAAO,
|
|
1
|
+
{"version":3,"file":"traced-fsm.d.ts","sourceRoot":"","sources":["../../../src/ai-service/state-machine/traced-fsm.ts"],"names":[],"mappings":"AAAA,OAAO,EAA2B,KAAK,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAC5E,OAAO,EAEL,KAAK,kBAAkB,EACvB,KAAK,sBAAsB,EAC3B,YAAY,EACb,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EACL,GAAG,EAEH,KAAK,SAAS,EACd,KAAK,QAAQ,EACb,KAAK,YAAY,EAClB,MAAM,UAAU,CAAC;AAElB,MAAM,MAAM,eAAe,CACzB,CAAC,SAAS,QAAQ,EAClB,CAAC,SAAS,YAAY,EACtB,CAAC,IACC,SAAS,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,GAAG;IACvB;;;;;;OAMG;IACH,iBAAiB,CAAC,EAAE,2BAA2B,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;IACzD,oFAAoF;IACpF,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF,MAAM,MAAM,yBAAyB,GAAG,sBAAsB,GAAG,UAAU,CAAC;AAE5E,MAAM,MAAM,2BAA2B,CACrC,CAAC,SAAS,QAAQ,EAClB,CAAC,SAAS,YAAY,EACtB,CAAC,IACC,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,KAAK,WAAW,CAAC;AAE7C;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,8BAAsB,SAAS,CAC7B,CAAC,SAAS,MAAM,EAChB,CAAC,SAAS;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,EAC1B,CAAC,CACD,SAAQ,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;IACpB,OAAO,CAAC,OAAO,CAQb;gBAGA,MAAM,EAAE,eAAe,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAChC,MAAM,GAAE,YAAoC,EAC5C,MAAM,GAAE,MAAoB;IA6B9B,IAAW,SAAS,IAAI,MAAM,GAAG,SAAS,CAEzC;IAED;;OAEG;IACH,IAAW,QAAQ,IAAI,kBAAkB,GAAG,SAAS,CAEpD;IAED,IAAW,MAAM,IAAI,YAAY,CAEhC;IAED,IAAW,MAAM,IAAI,MAAM,CAE1B;IAED;;;;OAIG;IACH,SAAS,CAAC,QAAQ,CAAC,kBAAkB,CACnC,YAAY,EAAE,CAAC,GACd,sBAAsB;IAEzB;;;;OAIG;IACH,SAAS,CAAC,QAAQ,CAAC,mBAAmB,CAAC,KAAK,EAAE,CAAC,GAAG,yBAAyB;IAE3E;;;SAGK;IACL,SAAS,CAAC,QAAQ,CAAC,aAAa,CAAC,KAAK,EAAE,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC;YAExC,uBAAuB;IA2BrC,OAAO,CAAC,qBAAqB;IAW7B,OAAO,CAAC,oBAAoB;IAY5B,OAAO,CAAC,cAAc;IAOtB,OAAO,CAAC,qBAAqB;IAY7B,OAAO,CAAC,SAAS;IAgBjB,OAAO,CAAC,UAAU;IAoBlB,OAAO,CAAC,kBAAkB;CAW3B;AACD,MAAM,MAAM,IAAI,GAAG;IAAE,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAA;CAAE,CAAC;AAE1C,MAAM,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { getErrorMeta, getLogger } from "../../util/logger.js";
|
|
2
|
-
import { LLMObsTracer, } from "../llmobs.js";
|
|
2
|
+
import { LLMObsTracer, } from "../llmobs/index.js";
|
|
3
|
+
import { safeJsonStringify } from "../util/safe-stringify.js";
|
|
3
4
|
import { FSM, } from "./fsm.js";
|
|
4
5
|
/**
|
|
5
6
|
* FSM wrapper that emits tracing spans for each state transition.
|
|
@@ -21,13 +22,11 @@ import { FSM, } from "./fsm.js";
|
|
|
21
22
|
*
|
|
22
23
|
* Tracing failures are logged but do not interrupt FSM operation. The FSM will continue
|
|
23
24
|
* to function normally even if the tracing infrastructure is unavailable.
|
|
24
|
-
*
|
|
25
|
-
* Subclasses can override {@link getSpanTags} to attach contextual metadata to every span.
|
|
26
25
|
*/
|
|
27
26
|
export class TracedFSM extends FSM {
|
|
28
27
|
tracing;
|
|
29
28
|
constructor(config, tracer = LLMObsTracer.instance, logger = getLogger()) {
|
|
30
|
-
const {
|
|
29
|
+
const { sessionId, createTransitionHandler, createTagProvider, ...rest } = config;
|
|
31
30
|
const wrappedConfig = {
|
|
32
31
|
...rest,
|
|
33
32
|
createTransitionHandler: (fsm) => {
|
|
@@ -39,48 +38,13 @@ export class TracedFSM extends FSM {
|
|
|
39
38
|
},
|
|
40
39
|
};
|
|
41
40
|
super(wrappedConfig);
|
|
42
|
-
this.validateTracingConfig(tracingConfig, rest.transitions);
|
|
43
41
|
this.tracing = {
|
|
44
|
-
config: tracingConfig,
|
|
45
42
|
sessionId,
|
|
46
43
|
tracer,
|
|
47
44
|
logger,
|
|
45
|
+
getTags: createTagProvider?.(this) ?? (() => ({})),
|
|
48
46
|
};
|
|
49
47
|
}
|
|
50
|
-
validateTracingConfig(config, transitions) {
|
|
51
|
-
const states = Object.keys(transitions);
|
|
52
|
-
const missingStates = [];
|
|
53
|
-
for (const state of states) {
|
|
54
|
-
const stateConfig = config.state[state];
|
|
55
|
-
if (!stateConfig) {
|
|
56
|
-
missingStates.push(state);
|
|
57
|
-
}
|
|
58
|
-
else if (stateConfig !== "terminal" &&
|
|
59
|
-
typeof stateConfig === "object") {
|
|
60
|
-
// Validate non-terminal configs have required fields
|
|
61
|
-
if (!stateConfig.kind) {
|
|
62
|
-
throw new Error(`Tracing config for state "${state}" is missing required 'kind' field`);
|
|
63
|
-
}
|
|
64
|
-
}
|
|
65
|
-
}
|
|
66
|
-
if (config.validateFullTracingEnabled === true &&
|
|
67
|
-
missingStates.length > 0) {
|
|
68
|
-
throw new Error(`Missing tracing config for states: ${missingStates.join(", ")}`);
|
|
69
|
-
}
|
|
70
|
-
// Validate rootSpan config if provided
|
|
71
|
-
if (config.rootSpan) {
|
|
72
|
-
if (!config.rootSpan.name) {
|
|
73
|
-
throw new Error("Root span config is missing required 'name' field");
|
|
74
|
-
}
|
|
75
|
-
if (!config.rootSpan.kind) {
|
|
76
|
-
throw new Error("Root span config is missing required 'kind' field");
|
|
77
|
-
}
|
|
78
|
-
}
|
|
79
|
-
else if (config.validateFullTracingEnabled === true) {
|
|
80
|
-
// If full tracing is required, rootSpan must be configured
|
|
81
|
-
throw new Error("Tracing config is missing required 'rootSpan' configuration");
|
|
82
|
-
}
|
|
83
|
-
}
|
|
84
48
|
get sessionId() {
|
|
85
49
|
return this.tracing.sessionId;
|
|
86
50
|
}
|
|
@@ -96,163 +60,92 @@ export class TracedFSM extends FSM {
|
|
|
96
60
|
get logger() {
|
|
97
61
|
return this.tracing.logger;
|
|
98
62
|
}
|
|
99
|
-
/**
|
|
100
|
-
* Override to provide additional tags to attach to every span created by the TracedFSM.
|
|
101
|
-
*
|
|
102
|
-
* This can be used to add contextual metadata relevant to your application.
|
|
103
|
-
*
|
|
104
|
-
* @returns A record of key-value pairs to attach as tags to each span
|
|
105
|
-
*/
|
|
106
|
-
getSpanTags() {
|
|
107
|
-
return {};
|
|
108
|
-
}
|
|
109
63
|
async handleTransitionTracing(next, params) {
|
|
110
|
-
this.
|
|
111
|
-
const
|
|
112
|
-
if (
|
|
113
|
-
this.
|
|
114
|
-
}
|
|
115
|
-
else if (toConfig == "terminal") {
|
|
116
|
-
this.logger.debug(`State ${params.to} is terminal, finishing root span if active`);
|
|
117
|
-
this.finishRootSpan(params);
|
|
64
|
+
this.finishStateSpanIfOpen(params);
|
|
65
|
+
const options = this.getStateSpanOptions(params.to);
|
|
66
|
+
if (options == "terminal") {
|
|
67
|
+
this.finishRootSpanIfOpen(params);
|
|
118
68
|
}
|
|
119
69
|
else {
|
|
120
70
|
this.startRootSpanIfNeeded(params);
|
|
121
|
-
this.startStateSpan(
|
|
71
|
+
this.startStateSpan(options, params);
|
|
72
|
+
}
|
|
73
|
+
try {
|
|
74
|
+
await next(params);
|
|
75
|
+
}
|
|
76
|
+
catch (error) {
|
|
77
|
+
this.logger.error("Traced FSM transition threw an error", getErrorMeta(error));
|
|
78
|
+
this.finishStateSpanIfOpen(error);
|
|
79
|
+
this.finishRootSpanIfOpen(error);
|
|
80
|
+
throw error;
|
|
122
81
|
}
|
|
123
|
-
await next(params);
|
|
124
82
|
}
|
|
125
83
|
startRootSpanIfNeeded(params) {
|
|
126
84
|
if (this.tracing.rootSpan) {
|
|
127
85
|
// Root span already active
|
|
128
86
|
return;
|
|
129
87
|
}
|
|
130
|
-
const config = this.
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
}
|
|
135
|
-
this.logger.debug(`Starting root span for FSM lifecycle`);
|
|
136
|
-
try {
|
|
137
|
-
const rootSpanOptions = {
|
|
138
|
-
name: config.rootSpan.name,
|
|
139
|
-
kind: config.rootSpan.kind,
|
|
140
|
-
sessionId: this.sessionId,
|
|
141
|
-
tags: {
|
|
142
|
-
"fsm.initialState": params.to,
|
|
143
|
-
...config.rootSpan.tags,
|
|
144
|
-
...this.getSpanTags(),
|
|
145
|
-
},
|
|
146
|
-
};
|
|
147
|
-
const rootSpan = this.tracer.startActiveSpan(rootSpanOptions);
|
|
148
|
-
this.tracer.annotate(rootSpan, {
|
|
149
|
-
inputData: safeJsonStringify(params.event),
|
|
150
|
-
});
|
|
151
|
-
this.tracing.rootSpan = rootSpan;
|
|
152
|
-
this.tracing.exportedRootSpan = this.tracer.exportSpan(rootSpan);
|
|
153
|
-
}
|
|
154
|
-
catch (error) {
|
|
155
|
-
this.logger.error("Failed to start root span:", getErrorMeta(error));
|
|
156
|
-
// Continue without root span - don't fail the FSM
|
|
157
|
-
}
|
|
88
|
+
const config = this.getRootSpanOptions(params.event);
|
|
89
|
+
const span = this.startSpan(config, params);
|
|
90
|
+
this.tracing.rootSpan = span;
|
|
91
|
+
this.tracing.exportedRootSpan = this.tracer.exportSpan(span);
|
|
158
92
|
}
|
|
159
|
-
|
|
160
|
-
const
|
|
161
|
-
if (!
|
|
93
|
+
finishRootSpanIfOpen(paramsOrError) {
|
|
94
|
+
const span = this.tracing.rootSpan;
|
|
95
|
+
if (!span) {
|
|
162
96
|
// No active root span to finish
|
|
163
97
|
return;
|
|
164
98
|
}
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
outputData: safeJsonStringify(params.event),
|
|
168
|
-
tags: { "fsm.terminalState": params.to },
|
|
169
|
-
});
|
|
170
|
-
rootSpan.finish();
|
|
171
|
-
}
|
|
172
|
-
catch (error) {
|
|
173
|
-
this.logger.error("Failed to finish root span:", getErrorMeta(error));
|
|
174
|
-
}
|
|
175
|
-
finally {
|
|
176
|
-
this.tracing.rootSpan = undefined;
|
|
177
|
-
}
|
|
99
|
+
this.finishSpan(span, paramsOrError);
|
|
100
|
+
this.tracing.rootSpan = undefined;
|
|
178
101
|
}
|
|
179
|
-
startStateSpan(
|
|
180
|
-
this.
|
|
181
|
-
try {
|
|
182
|
-
const spanOptions = {
|
|
183
|
-
name: config.name || params.to,
|
|
184
|
-
kind: config.kind,
|
|
185
|
-
sessionId: this.sessionId,
|
|
186
|
-
tags: {
|
|
187
|
-
"fsm.fromState": params.from,
|
|
188
|
-
...config.tags,
|
|
189
|
-
...this.getSpanTags(),
|
|
190
|
-
},
|
|
191
|
-
};
|
|
192
|
-
const stateSpan = this.tracer.startActiveSpan(spanOptions);
|
|
193
|
-
this.tracer.annotate(stateSpan, {
|
|
194
|
-
inputData: safeJsonStringify(params.event),
|
|
195
|
-
});
|
|
196
|
-
this.tracing.stateSpan = stateSpan;
|
|
197
|
-
}
|
|
198
|
-
catch (error) {
|
|
199
|
-
this.logger.error("Failed to start state span:", getErrorMeta(error));
|
|
200
|
-
}
|
|
102
|
+
startStateSpan(options, params) {
|
|
103
|
+
this.tracing.stateSpan = this.startSpan(options, params);
|
|
201
104
|
}
|
|
202
|
-
|
|
203
|
-
const
|
|
204
|
-
if (!
|
|
105
|
+
finishStateSpanIfOpen(paramsOrError) {
|
|
106
|
+
const stateSpan = this.tracing.stateSpan;
|
|
107
|
+
if (!stateSpan) {
|
|
205
108
|
// No active state span to finish. This should only occur on initial transition.
|
|
206
109
|
return;
|
|
207
110
|
}
|
|
208
|
-
this.
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
111
|
+
this.finishSpan(stateSpan, paramsOrError);
|
|
112
|
+
this.tracing.stateSpan = undefined;
|
|
113
|
+
}
|
|
114
|
+
startSpan(options, params) {
|
|
115
|
+
if (this.sessionId) {
|
|
116
|
+
options.sessionId = this.sessionId;
|
|
117
|
+
}
|
|
118
|
+
const span = this.tracer.startActiveSpan(options);
|
|
119
|
+
const sanitizedEvent = this.sanitizeEvent(params.event);
|
|
120
|
+
this.tracer.annotate(span, {
|
|
121
|
+
inputData: safeJsonStringify(sanitizedEvent),
|
|
122
|
+
tags: { "fsm.fromState": params.from },
|
|
123
|
+
});
|
|
124
|
+
return span;
|
|
125
|
+
}
|
|
126
|
+
finishSpan(span, paramsOrError) {
|
|
127
|
+
const tags = this.tracing.getTags();
|
|
128
|
+
if (this.isTransitionParams(paramsOrError)) {
|
|
129
|
+
const sanitizedEvent = this.sanitizeEvent(paramsOrError.event);
|
|
130
|
+
this.tracer.annotate(span, {
|
|
131
|
+
outputData: safeJsonStringify(sanitizedEvent),
|
|
132
|
+
tags: { "fsm.toState": paramsOrError.to, ...tags },
|
|
213
133
|
});
|
|
214
|
-
currentStateSpan.finish();
|
|
215
|
-
}
|
|
216
|
-
catch (error) {
|
|
217
|
-
// Log error but don't fail the transition
|
|
218
|
-
this.logger.error("Failed to finish state span:", getErrorMeta(error));
|
|
219
134
|
}
|
|
220
|
-
|
|
221
|
-
this.
|
|
135
|
+
else {
|
|
136
|
+
this.tracer.annotate(span, {
|
|
137
|
+
error: paramsOrError,
|
|
138
|
+
tags: { ...tags },
|
|
139
|
+
});
|
|
222
140
|
}
|
|
141
|
+
span.finish();
|
|
223
142
|
}
|
|
224
|
-
|
|
225
|
-
return
|
|
143
|
+
isTransitionParams(value) {
|
|
144
|
+
return (value !== null &&
|
|
145
|
+
typeof value === "object" &&
|
|
146
|
+
"event" in value &&
|
|
147
|
+
"from" in value &&
|
|
148
|
+
"to" in value);
|
|
226
149
|
}
|
|
227
150
|
}
|
|
228
|
-
function safeJsonStringify(obj) {
|
|
229
|
-
const seen = new WeakSet();
|
|
230
|
-
return JSON.stringify(obj, (_key, value) => {
|
|
231
|
-
if (typeof value === "object" && value !== null) {
|
|
232
|
-
if (seen.has(value)) {
|
|
233
|
-
return "[Circular Reference]";
|
|
234
|
-
}
|
|
235
|
-
seen.add(value);
|
|
236
|
-
}
|
|
237
|
-
try {
|
|
238
|
-
JSON.stringify(value);
|
|
239
|
-
return value;
|
|
240
|
-
}
|
|
241
|
-
catch (_error) {
|
|
242
|
-
if (typeof value === "function") {
|
|
243
|
-
return "[Function]";
|
|
244
|
-
}
|
|
245
|
-
if (typeof value === "symbol") {
|
|
246
|
-
return "[Symbol]";
|
|
247
|
-
}
|
|
248
|
-
if (typeof value === "undefined") {
|
|
249
|
-
return "[Undefined]";
|
|
250
|
-
}
|
|
251
|
-
if (typeof value === "bigint") {
|
|
252
|
-
return `[BigInt: ${value.toString()}]`;
|
|
253
|
-
}
|
|
254
|
-
return "[Non-serializable]";
|
|
255
|
-
}
|
|
256
|
-
});
|
|
257
|
-
}
|
|
258
151
|
//# sourceMappingURL=traced-fsm.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"traced-fsm.js","sourceRoot":"","sources":["../../../src/ai-service/state-machine/traced-fsm.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,SAAS,EAAe,MAAM,sBAAsB,CAAC;AAC5E,OAAO,
|
|
1
|
+
{"version":3,"file":"traced-fsm.js","sourceRoot":"","sources":["../../../src/ai-service/state-machine/traced-fsm.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"template-renderer.d.ts","sourceRoot":"","sources":["../../src/ai-service/template-renderer.ts"],"names":[],"mappings":"AASA,OAAO,EAAE,SAAS,EAAE,MAAM,iDAAiD,CAAC;
|
|
1
|
+
{"version":3,"file":"template-renderer.d.ts","sourceRoot":"","sources":["../../src/ai-service/template-renderer.ts"],"names":[],"mappings":"AASA,OAAO,EAAE,SAAS,EAAE,MAAM,iDAAiD,CAAC;AAI5E,KAAK,YAAY,GAAG,MAAM,OAAO,SAAS,CAAC;AAI3C,qBAAa,gBAAgB;IAC3B,OAAO,EAAE,MAAM,CAAC;IAChB,cAAc,EAAE,MAAM,CAAC,YAAY,EAAE,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC,CAAC;gBAEjD,EACV,mBAA2B,GAC5B,EAAE;QACD,mBAAmB,CAAC,EAAE,OAAO,CAAC;KAC/B;IAiBK,oBAAoB;IAKpB,cAAc,CAAC,YAAY,EAAE,YAAY;YAkCjC,kBAAkB;CAgCjC"}
|