@superblocksteam/vite-plugin-file-sync 2.0.139 → 2.0.140-next.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (136) hide show
  1. package/dist/ai-service/agent/tools/apis/api-validation-orchestrator.js +1 -1
  2. package/dist/ai-service/agent/tools/apis/api-validation-orchestrator.js.map +1 -1
  3. package/dist/ai-service/agent/tools/apis/test-api.d.ts.map +1 -1
  4. package/dist/ai-service/agent/tools/apis/test-api.js +3 -2
  5. package/dist/ai-service/agent/tools/apis/test-api.js.map +1 -1
  6. package/dist/ai-service/agent/tools2/tools/exit-plan-mode.d.ts.map +1 -1
  7. package/dist/ai-service/agent/tools2/tools/exit-plan-mode.js +1 -13
  8. package/dist/ai-service/agent/tools2/tools/exit-plan-mode.js.map +1 -1
  9. package/dist/ai-service/agent/tools2/tools/git.d.ts.map +1 -1
  10. package/dist/ai-service/agent/tools2/tools/git.js +19 -1
  11. package/dist/ai-service/agent/tools2/tools/git.js.map +1 -1
  12. package/dist/ai-service/agent/utils.d.ts.map +1 -1
  13. package/dist/ai-service/agent/utils.js +46 -3
  14. package/dist/ai-service/agent/utils.js.map +1 -1
  15. package/dist/ai-service/app-interface/npm-registry.d.ts +11 -7
  16. package/dist/ai-service/app-interface/npm-registry.d.ts.map +1 -1
  17. package/dist/ai-service/app-interface/npm-registry.js +11 -7
  18. package/dist/ai-service/app-interface/npm-registry.js.map +1 -1
  19. package/dist/ai-service/app-skills/helpers.d.ts.map +1 -1
  20. package/dist/ai-service/app-skills/helpers.js +2 -0
  21. package/dist/ai-service/app-skills/helpers.js.map +1 -1
  22. package/dist/ai-service/chat/chat-session-store-metrics.d.ts.map +1 -1
  23. package/dist/ai-service/chat/chat-session-store-metrics.js +26 -17
  24. package/dist/ai-service/chat/chat-session-store-metrics.js.map +1 -1
  25. package/dist/ai-service/chat/chat-session-store.d.ts +1 -4
  26. package/dist/ai-service/chat/chat-session-store.d.ts.map +1 -1
  27. package/dist/ai-service/chat/chat-session-store.js +32 -8
  28. package/dist/ai-service/chat/chat-session-store.js.map +1 -1
  29. package/dist/ai-service/chat/transcript-metrics.d.ts +5 -0
  30. package/dist/ai-service/chat/transcript-metrics.d.ts.map +1 -1
  31. package/dist/ai-service/chat/transcript-metrics.js +42 -15
  32. package/dist/ai-service/chat/transcript-metrics.js.map +1 -1
  33. package/dist/ai-service/index.d.ts +2 -0
  34. package/dist/ai-service/index.d.ts.map +1 -1
  35. package/dist/ai-service/index.js +206 -31
  36. package/dist/ai-service/index.js.map +1 -1
  37. package/dist/ai-service/llm/client.d.ts.map +1 -1
  38. package/dist/ai-service/llm/client.js +9 -9
  39. package/dist/ai-service/llm/client.js.map +1 -1
  40. package/dist/ai-service/llm/context-v2/context-metrics.d.ts +6 -0
  41. package/dist/ai-service/llm/context-v2/context-metrics.d.ts.map +1 -1
  42. package/dist/ai-service/llm/context-v2/context-metrics.js +18 -1
  43. package/dist/ai-service/llm/context-v2/context-metrics.js.map +1 -1
  44. package/dist/ai-service/llm/provider.d.ts +7 -1
  45. package/dist/ai-service/llm/provider.d.ts.map +1 -1
  46. package/dist/ai-service/llm/provider.js +292 -15
  47. package/dist/ai-service/llm/provider.js.map +1 -1
  48. package/dist/ai-service/llm/stream/empty-tool-call-tracker.d.ts +47 -0
  49. package/dist/ai-service/llm/stream/empty-tool-call-tracker.d.ts.map +1 -0
  50. package/dist/ai-service/llm/stream/empty-tool-call-tracker.js +122 -0
  51. package/dist/ai-service/llm/stream/empty-tool-call-tracker.js.map +1 -0
  52. package/dist/ai-service/llm/stream/errors.d.ts +21 -1
  53. package/dist/ai-service/llm/stream/errors.d.ts.map +1 -1
  54. package/dist/ai-service/llm/stream/errors.js +20 -0
  55. package/dist/ai-service/llm/stream/errors.js.map +1 -1
  56. package/dist/ai-service/llm/stream/managed-stream.d.ts +5 -1
  57. package/dist/ai-service/llm/stream/managed-stream.d.ts.map +1 -1
  58. package/dist/ai-service/llm/stream/managed-stream.js +51 -1
  59. package/dist/ai-service/llm/stream/managed-stream.js.map +1 -1
  60. package/dist/ai-service/llm/stream/orchestrator.d.ts +17 -2
  61. package/dist/ai-service/llm/stream/orchestrator.d.ts.map +1 -1
  62. package/dist/ai-service/llm/stream/orchestrator.js +185 -135
  63. package/dist/ai-service/llm/stream/orchestrator.js.map +1 -1
  64. package/dist/ai-service/llmobs/otel-exporter.d.ts.map +1 -1
  65. package/dist/ai-service/llmobs/otel-exporter.js +17 -6
  66. package/dist/ai-service/llmobs/otel-exporter.js.map +1 -1
  67. package/dist/ai-service/llmobs/tracer.d.ts +24 -2
  68. package/dist/ai-service/llmobs/tracer.d.ts.map +1 -1
  69. package/dist/ai-service/llmobs/tracer.js +90 -25
  70. package/dist/ai-service/llmobs/tracer.js.map +1 -1
  71. package/dist/ai-service/llmobs/types.d.ts +5 -0
  72. package/dist/ai-service/llmobs/types.d.ts.map +1 -1
  73. package/dist/ai-service/state-machine/clark-fsm.d.ts +24 -7
  74. package/dist/ai-service/state-machine/clark-fsm.d.ts.map +1 -1
  75. package/dist/ai-service/state-machine/clark-fsm.js +5 -0
  76. package/dist/ai-service/state-machine/clark-fsm.js.map +1 -1
  77. package/dist/ai-service/state-machine/handlers/agent-planning.d.ts.map +1 -1
  78. package/dist/ai-service/state-machine/handlers/agent-planning.js +30 -43
  79. package/dist/ai-service/state-machine/handlers/agent-planning.js.map +1 -1
  80. package/dist/ai-service/state-machine/handlers/awaiting-user.d.ts.map +1 -1
  81. package/dist/ai-service/state-machine/handlers/awaiting-user.js +21 -0
  82. package/dist/ai-service/state-machine/handlers/awaiting-user.js.map +1 -1
  83. package/dist/ai-service/state-machine/handlers/idle.d.ts.map +1 -1
  84. package/dist/ai-service/state-machine/handlers/idle.js +16 -1
  85. package/dist/ai-service/state-machine/handlers/idle.js.map +1 -1
  86. package/dist/ai-service/state-machine/handlers/llm-generating.d.ts.map +1 -1
  87. package/dist/ai-service/state-machine/handlers/llm-generating.js +10 -21
  88. package/dist/ai-service/state-machine/handlers/llm-generating.js.map +1 -1
  89. package/dist/ai-service/state-machine/handlers/persist-prompt-attachments.d.ts +25 -0
  90. package/dist/ai-service/state-machine/handlers/persist-prompt-attachments.d.ts.map +1 -0
  91. package/dist/ai-service/state-machine/handlers/persist-prompt-attachments.js +68 -0
  92. package/dist/ai-service/state-machine/handlers/persist-prompt-attachments.js.map +1 -0
  93. package/dist/ai-service/state-machine/helpers/prompt-failure.d.ts +51 -0
  94. package/dist/ai-service/state-machine/helpers/prompt-failure.d.ts.map +1 -0
  95. package/dist/ai-service/state-machine/helpers/prompt-failure.js +149 -0
  96. package/dist/ai-service/state-machine/helpers/prompt-failure.js.map +1 -0
  97. package/dist/ai-service/state-machine/helpers/prompt-request-metrics.d.ts +77 -0
  98. package/dist/ai-service/state-machine/helpers/prompt-request-metrics.d.ts.map +1 -0
  99. package/dist/ai-service/state-machine/helpers/prompt-request-metrics.js +229 -0
  100. package/dist/ai-service/state-machine/helpers/prompt-request-metrics.js.map +1 -0
  101. package/dist/ai-service/state-machine/helpers/transition.d.ts.map +1 -1
  102. package/dist/ai-service/state-machine/helpers/transition.js +5 -1
  103. package/dist/ai-service/state-machine/helpers/transition.js.map +1 -1
  104. package/dist/ai-service/state-machine/traced-fsm.d.ts +6 -1
  105. package/dist/ai-service/state-machine/traced-fsm.d.ts.map +1 -1
  106. package/dist/ai-service/state-machine/traced-fsm.js +13 -3
  107. package/dist/ai-service/state-machine/traced-fsm.js.map +1 -1
  108. package/dist/ai-service/util/llm-config-utils.d.ts +2 -2
  109. package/dist/ai-service/util/llm-config-utils.d.ts.map +1 -1
  110. package/dist/ai-service/util/llm-config-utils.js +2 -2
  111. package/dist/ai-service/util/llm-config-utils.js.map +1 -1
  112. package/dist/git-service/app-layout-guard.d.ts +36 -0
  113. package/dist/git-service/app-layout-guard.d.ts.map +1 -0
  114. package/dist/git-service/app-layout-guard.js +66 -0
  115. package/dist/git-service/app-layout-guard.js.map +1 -0
  116. package/dist/git-service/errors.d.ts +5 -0
  117. package/dist/git-service/errors.d.ts.map +1 -1
  118. package/dist/git-service/errors.js +10 -0
  119. package/dist/git-service/errors.js.map +1 -1
  120. package/dist/git-service/index.d.ts +2 -2
  121. package/dist/git-service/index.d.ts.map +1 -1
  122. package/dist/git-service/index.js +2 -2
  123. package/dist/git-service/index.js.map +1 -1
  124. package/dist/migration-templates/app-fullstack/package.json +1 -1
  125. package/dist/socket-manager.d.ts.map +1 -1
  126. package/dist/socket-manager.js +6 -0
  127. package/dist/socket-manager.js.map +1 -1
  128. package/dist/sync-service/index.d.ts +16 -9
  129. package/dist/sync-service/index.d.ts.map +1 -1
  130. package/dist/sync-service/index.js +154 -4
  131. package/dist/sync-service/index.js.map +1 -1
  132. package/dist/util/logger.d.ts +7 -0
  133. package/dist/util/logger.d.ts.map +1 -1
  134. package/dist/util/logger.js +29 -0
  135. package/dist/util/logger.js.map +1 -1
  136. package/package.json +14 -13
@@ -0,0 +1,77 @@
1
+ import { type PromptFailure } from "./prompt-failure.js";
2
+ export declare const PROMPT_OUTCOMES: readonly ["failure", "success"];
3
+ export type PromptOutcome = (typeof PROMPT_OUTCOMES)[number];
4
+ export { PROMPT_OUTCOME_TAG, promptOutcomeTagsFromFailure, type PromptFailure, } from "./prompt-failure.js";
5
+ export { failureDetailFromPromptFailure, PLATFORM_PROMPT_FAILURE_REASONS, PROMPT_FAILURE_ORIGINS, TELEMETRY_FAILURE_ORIGINS, telemetryFailureOrigin, isUserInitiatedPromptAbort, promptFailureFromLlmError, promptFailureFromStreamAbort, promptFailureLlmProviderUnknown, promptFailurePaywall, promptFailurePlatform, promptFailureUserCanceled, type PlatformPromptFailureReason, type PromptFailureOrigin, type TelemetryFailureOrigin, type UserPromptFailureReason, USER_PROMPT_FAILURE_REASONS, } from "./prompt-failure.js";
6
+ export declare const METRIC_AWAITING_USER_DISMISSED = "superblocks.clark.prompt.awaiting_user_dismissed_total";
7
+ export declare const AWAITING_USER_DISMISS_REASONS: readonly ["cancel", "new_prompt"];
8
+ export type AwaitingUserDismissReason = (typeof AWAITING_USER_DISMISS_REASONS)[number];
9
+ export declare const AWAITING_USER_DISMISS_REASON_TAG = "dismiss_reason";
10
+ export declare const PROMPT_APPLICATION_ID_TAG = "application_id";
11
+ export declare const PROMPT_ORGANIZATION_ID_TAG = "organization_id";
12
+ export interface PromptRequestMetricIdentity {
13
+ applicationId?: string;
14
+ organizationId?: string;
15
+ }
16
+ export declare function setPromptRequestMetricIdentity(identity: PromptRequestMetricIdentity): void;
17
+ export declare function recordPromptAttempt(outcomeDedupeKey?: string): void;
18
+ export declare function resolvePromptOutcomeDedupeKey(context: {
19
+ promptId?: string;
20
+ promptOutcomeDedupeKey?: string;
21
+ }): string | undefined;
22
+ export declare function recordPromptOutcome(params: {
23
+ dedupeKey: string | undefined;
24
+ outcome: PromptOutcome;
25
+ failure?: PromptFailure;
26
+ }): void;
27
+ export declare function resolvePromptRequestDedupeKey(request: {
28
+ requestId?: string;
29
+ prompt: string;
30
+ }): string;
31
+ /**
32
+ * Tags for the Clark root span when a prompt cycle ends via a terminal FSM
33
+ * transition (pre-FSM entry rejections have no root span).
34
+ */
35
+ export declare function promptOutcomeTagsFromTerminalEvent(event: {
36
+ type: string;
37
+ failure?: PromptFailure;
38
+ advice?: string;
39
+ countsAsPromptSuccess?: boolean;
40
+ }): Record<string, string>;
41
+ export declare function promptOutcomeTagsFromAgentNeedsUserInput(event: {
42
+ advice?: string;
43
+ countsAsPromptSuccess?: boolean;
44
+ }): Record<string, string>;
45
+ export declare function recordAwaitingUserDismissed(params: {
46
+ dedupeKey: string | undefined;
47
+ reason: AwaitingUserDismissReason;
48
+ }): void;
49
+ export declare function isOrganicPromptDuringAwaitingUserHandoff(params: {
50
+ awaitingUserHandoffRecorded?: boolean;
51
+ internal?: boolean;
52
+ responseMetadata?: unknown;
53
+ }): boolean;
54
+ export declare function awaitingUserHandoffDedupeKey(context: {
55
+ awaitingUserHandoffPromptId?: string;
56
+ promptId?: string;
57
+ promptOutcomeDedupeKey?: string;
58
+ }): string | undefined;
59
+ export declare function recordAwaitingUserHandoffDismissed(params: {
60
+ awaitingUserHandoffPromptId?: string;
61
+ awaitingUserHandoffRecorded?: boolean;
62
+ promptId?: string;
63
+ promptOutcomeDedupeKey?: string;
64
+ reason: AwaitingUserDismissReason;
65
+ }): void;
66
+ export declare function recordAwaitingUserPromptOutcome(params: {
67
+ dedupeKey: string | undefined;
68
+ advice?: string;
69
+ countsAsPromptSuccess?: boolean;
70
+ }): boolean;
71
+ /** Record attempt + immediate failure for pre-FSM entry rejections (no promptId yet). */
72
+ export declare function recordPromptEntryRejection(params: {
73
+ dedupeKey: string | undefined;
74
+ failure: PromptFailure;
75
+ }): void;
76
+ export declare function _resetPromptRequestMetricsForTesting(): void;
77
+ //# sourceMappingURL=prompt-request-metrics.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prompt-request-metrics.d.ts","sourceRoot":"","sources":["../../../../src/ai-service/state-machine/helpers/prompt-request-metrics.ts"],"names":[],"mappings":"AAUA,OAAO,EAML,KAAK,aAAa,EACnB,MAAM,qBAAqB,CAAC;AAE7B,eAAO,MAAM,eAAe,iCAAkC,CAAC;AAC/D,MAAM,MAAM,aAAa,GAAG,CAAC,OAAO,eAAe,CAAC,CAAC,MAAM,CAAC,CAAC;AAE7D,OAAO,EACL,kBAAkB,EAClB,4BAA4B,EAC5B,KAAK,aAAa,GACnB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EACL,8BAA8B,EAC9B,+BAA+B,EAC/B,sBAAsB,EACtB,yBAAyB,EACzB,sBAAsB,EACtB,0BAA0B,EAC1B,yBAAyB,EACzB,4BAA4B,EAC5B,+BAA+B,EAC/B,oBAAoB,EACpB,qBAAqB,EACrB,yBAAyB,EACzB,KAAK,2BAA2B,EAChC,KAAK,mBAAmB,EACxB,KAAK,sBAAsB,EAC3B,KAAK,uBAAuB,EAC5B,2BAA2B,GAC5B,MAAM,qBAAqB,CAAC;AAK7B,eAAO,MAAM,8BAA8B,2DACe,CAAC;AAC3D,eAAO,MAAM,6BAA6B,mCAAoC,CAAC;AAC/E,MAAM,MAAM,yBAAyB,GACnC,CAAC,OAAO,6BAA6B,CAAC,CAAC,MAAM,CAAC,CAAC;AACjD,eAAO,MAAM,gCAAgC,mBAAmB,CAAC;AACjE,eAAO,MAAM,yBAAyB,mBAAmB,CAAC;AAC1D,eAAO,MAAM,0BAA0B,oBAAoB,CAAC;AAE5D,MAAM,WAAW,2BAA2B;IAC1C,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAqID,wBAAgB,8BAA8B,CAC5C,QAAQ,EAAE,2BAA2B,GACpC,IAAI,CAEN;AAID,wBAAgB,mBAAmB,CAAC,gBAAgB,CAAC,EAAE,MAAM,GAAG,IAAI,CAKnE;AAED,wBAAgB,6BAA6B,CAAC,OAAO,EAAE;IACrD,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,sBAAsB,CAAC,EAAE,MAAM,CAAC;CACjC,GAAG,MAAM,GAAG,SAAS,CAErB;AAED,wBAAgB,mBAAmB,CAAC,MAAM,EAAE;IAC1C,SAAS,EAAE,MAAM,GAAG,SAAS,CAAC;IAC9B,OAAO,EAAE,aAAa,CAAC;IACvB,OAAO,CAAC,EAAE,aAAa,CAAC;CACzB,GAAG,IAAI,CASP;AAED,wBAAgB,6BAA6B,CAAC,OAAO,EAAE;IACrD,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;CAChB,GAAG,MAAM,CAET;AAED;;;GAGG;AACH,wBAAgB,kCAAkC,CAAC,KAAK,EAAE;IACxD,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,aAAa,CAAC;IACxB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,qBAAqB,CAAC,EAAE,OAAO,CAAC;CACjC,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAmBzB;AAED,wBAAgB,wCAAwC,CAAC,KAAK,EAAE;IAC9D,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,qBAAqB,CAAC,EAAE,OAAO,CAAC;CACjC,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAQzB;AAED,wBAAgB,2BAA2B,CAAC,MAAM,EAAE;IAClD,SAAS,EAAE,MAAM,GAAG,SAAS,CAAC;IAC9B,MAAM,EAAE,yBAAyB,CAAC;CACnC,GAAG,IAAI,CAQP;AAED,wBAAgB,wCAAwC,CAAC,MAAM,EAAE;IAC/D,2BAA2B,CAAC,EAAE,OAAO,CAAC;IACtC,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,gBAAgB,CAAC,EAAE,OAAO,CAAC;CAC5B,GAAG,OAAO,CAKV;AAED,wBAAgB,4BAA4B,CAAC,OAAO,EAAE;IACpD,2BAA2B,CAAC,EAAE,MAAM,CAAC;IACrC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,sBAAsB,CAAC,EAAE,MAAM,CAAC;CACjC,GAAG,MAAM,GAAG,SAAS,CAKrB;AAED,wBAAgB,kCAAkC,CAAC,MAAM,EAAE;IACzD,2BAA2B,CAAC,EAAE,MAAM,CAAC;IACrC,2BAA2B,CAAC,EAAE,OAAO,CAAC;IACtC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,sBAAsB,CAAC,EAAE,MAAM,CAAC;IAChC,MAAM,EAAE,yBAAyB,CAAC;CACnC,GAAG,IAAI,CAQP;AAED,wBAAgB,+BAA+B,CAAC,MAAM,EAAE;IACtD,SAAS,EAAE,MAAM,GAAG,SAAS,CAAC;IAC9B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,qBAAqB,CAAC,EAAE,OAAO,CAAC;CACjC,GAAG,OAAO,CAmBV;AAED,yFAAyF;AACzF,wBAAgB,0BAA0B,CAAC,MAAM,EAAE;IACjD,SAAS,EAAE,MAAM,GAAG,SAAS,CAAC;IAC9B,OAAO,EAAE,aAAa,CAAC;CACxB,GAAG,IAAI,CAQP;AAED,wBAAgB,oCAAoC,IAAI,IAAI,CAE3D"}
@@ -0,0 +1,229 @@
1
+ import { metrics } from "@opentelemetry/api";
2
+ import { AGENT_CANCELED, AGENT_NEEDS_USER_INPUT, APP_RUNTIME_UPDATED_WITHOUT_EDITS, RUNTIME_REVIEW_FINISHED, USER_CANCELED, V3_AGENT_FINISHED, } from "../clark-fsm.js";
3
+ import { promptFailureAttributes, promptFailurePlatform, promptFailureUserCanceled, promptOutcomeTagsFromFailure, PROMPT_OUTCOME_TAG, } from "./prompt-failure.js";
4
+ export const PROMPT_OUTCOMES = ["failure", "success"];
5
+ export { PROMPT_OUTCOME_TAG, promptOutcomeTagsFromFailure, } from "./prompt-failure.js";
6
+ export { failureDetailFromPromptFailure, PLATFORM_PROMPT_FAILURE_REASONS, PROMPT_FAILURE_ORIGINS, TELEMETRY_FAILURE_ORIGINS, telemetryFailureOrigin, isUserInitiatedPromptAbort, promptFailureFromLlmError, promptFailureFromStreamAbort, promptFailureLlmProviderUnknown, promptFailurePaywall, promptFailurePlatform, promptFailureUserCanceled, USER_PROMPT_FAILURE_REASONS, } from "./prompt-failure.js";
7
+ const METER_NAME = "superblocks.clark.prompt";
8
+ const METRIC_ATTEMPTS = "superblocks.clark.prompt.attempts_total";
9
+ const METRIC_OUTCOMES = "superblocks.clark.prompt.outcomes_total";
10
+ export const METRIC_AWAITING_USER_DISMISSED = "superblocks.clark.prompt.awaiting_user_dismissed_total";
11
+ export const AWAITING_USER_DISMISS_REASONS = ["cancel", "new_prompt"];
12
+ export const AWAITING_USER_DISMISS_REASON_TAG = "dismiss_reason";
13
+ export const PROMPT_APPLICATION_ID_TAG = "application_id";
14
+ export const PROMPT_ORGANIZATION_ID_TAG = "organization_id";
15
+ class PromptRequestMetrics {
16
+ cachedMeter;
17
+ cachedInstruments;
18
+ applicationId;
19
+ organizationId;
20
+ recordedAwaitingUserDismissedKeys = new Set();
21
+ recordedOutcomeKeys = new Set();
22
+ setIdentity(identity) {
23
+ this.applicationId = identity.applicationId;
24
+ this.organizationId = identity.organizationId;
25
+ }
26
+ baseAttributes() {
27
+ const attributes = {};
28
+ if (this.applicationId) {
29
+ attributes[PROMPT_APPLICATION_ID_TAG] = this.applicationId;
30
+ }
31
+ if (this.organizationId) {
32
+ attributes[PROMPT_ORGANIZATION_ID_TAG] = this.organizationId;
33
+ }
34
+ return attributes;
35
+ }
36
+ getInstruments() {
37
+ const meter = metrics.getMeter(METER_NAME);
38
+ if (meter === this.cachedMeter && this.cachedInstruments) {
39
+ return this.cachedInstruments;
40
+ }
41
+ this.cachedMeter = meter;
42
+ this.cachedInstruments = {
43
+ attemptCounter: meter.createCounter(METRIC_ATTEMPTS, {
44
+ description: "User prompt requests accepted by the Clark agent loop entrypoint.",
45
+ unit: "1",
46
+ }),
47
+ outcomeCounter: meter.createCounter(METRIC_OUTCOMES, {
48
+ description: "Terminal outcomes for user prompt requests in the Clark agent loop.",
49
+ unit: "1",
50
+ }),
51
+ awaitingUserDismissedCounter: meter.createCounter(METRIC_AWAITING_USER_DISMISSED, {
52
+ description: "User canceled or dismissed Clark while awaiting input after a successful handoff.",
53
+ unit: "1",
54
+ }),
55
+ };
56
+ return this.cachedInstruments;
57
+ }
58
+ recordAttempt() {
59
+ this.getInstruments().attemptCounter.add(1, this.baseAttributes());
60
+ }
61
+ /** Allow a new terminal outcome when the same request is retried. */
62
+ forgetOutcomeDedupeKey(dedupeKey) {
63
+ this.recordedOutcomeKeys.delete(dedupeKey);
64
+ }
65
+ recordAwaitingUserDismissed(params) {
66
+ if (this.recordedAwaitingUserDismissedKeys.has(params.dedupeKey)) {
67
+ return;
68
+ }
69
+ this.recordedAwaitingUserDismissedKeys.add(params.dedupeKey);
70
+ this.getInstruments().awaitingUserDismissedCounter.add(1, {
71
+ ...this.baseAttributes(),
72
+ [AWAITING_USER_DISMISS_REASON_TAG]: params.reason,
73
+ });
74
+ }
75
+ recordOutcome(params) {
76
+ if (this.recordedOutcomeKeys.has(params.dedupeKey)) {
77
+ return;
78
+ }
79
+ this.recordedOutcomeKeys.add(params.dedupeKey);
80
+ const attributes = {
81
+ ...this.baseAttributes(),
82
+ outcome: params.outcome,
83
+ };
84
+ if (params.outcome === "failure" && params.failure) {
85
+ Object.assign(attributes, promptFailureAttributes(params.failure));
86
+ }
87
+ this.getInstruments().outcomeCounter.add(1, attributes);
88
+ }
89
+ /** One attempt + failure outcome per dedupe key for pre-FSM entry rejections. */
90
+ recordEntryRejection(params) {
91
+ if (this.recordedOutcomeKeys.has(params.dedupeKey)) {
92
+ return;
93
+ }
94
+ this.recordedOutcomeKeys.add(params.dedupeKey);
95
+ this.getInstruments().attemptCounter.add(1, this.baseAttributes());
96
+ this.getInstruments().outcomeCounter.add(1, {
97
+ ...this.baseAttributes(),
98
+ outcome: "failure",
99
+ ...promptFailureAttributes(params.failure),
100
+ });
101
+ }
102
+ _resetForTesting() {
103
+ this.cachedMeter = undefined;
104
+ this.cachedInstruments = undefined;
105
+ this.applicationId = undefined;
106
+ this.organizationId = undefined;
107
+ this.recordedAwaitingUserDismissedKeys.clear();
108
+ this.recordedOutcomeKeys.clear();
109
+ }
110
+ }
111
+ export function setPromptRequestMetricIdentity(identity) {
112
+ promptRequestMetrics.setIdentity(identity);
113
+ }
114
+ const promptRequestMetrics = new PromptRequestMetrics();
115
+ export function recordPromptAttempt(outcomeDedupeKey) {
116
+ if (outcomeDedupeKey) {
117
+ promptRequestMetrics.forgetOutcomeDedupeKey(outcomeDedupeKey);
118
+ }
119
+ promptRequestMetrics.recordAttempt();
120
+ }
121
+ export function resolvePromptOutcomeDedupeKey(context) {
122
+ return context.promptOutcomeDedupeKey ?? context.promptId;
123
+ }
124
+ export function recordPromptOutcome(params) {
125
+ if (!params.dedupeKey) {
126
+ return;
127
+ }
128
+ promptRequestMetrics.recordOutcome({
129
+ dedupeKey: params.dedupeKey,
130
+ outcome: params.outcome,
131
+ failure: params.failure,
132
+ });
133
+ }
134
+ export function resolvePromptRequestDedupeKey(request) {
135
+ return request.requestId ?? `ephemeral:${request.prompt}`;
136
+ }
137
+ /**
138
+ * Tags for the Clark root span when a prompt cycle ends via a terminal FSM
139
+ * transition (pre-FSM entry rejections have no root span).
140
+ */
141
+ export function promptOutcomeTagsFromTerminalEvent(event) {
142
+ switch (event.type) {
143
+ case AGENT_CANCELED:
144
+ return event.failure
145
+ ? promptOutcomeTagsFromFailure(event.failure)
146
+ : { [PROMPT_OUTCOME_TAG]: "failure" };
147
+ case USER_CANCELED:
148
+ return promptOutcomeTagsFromFailure(event.failure ?? promptFailureUserCanceled());
149
+ case AGENT_NEEDS_USER_INPUT:
150
+ return promptOutcomeTagsFromAgentNeedsUserInput(event);
151
+ case APP_RUNTIME_UPDATED_WITHOUT_EDITS:
152
+ case RUNTIME_REVIEW_FINISHED:
153
+ case V3_AGENT_FINISHED:
154
+ return { [PROMPT_OUTCOME_TAG]: "success" };
155
+ default:
156
+ return {};
157
+ }
158
+ }
159
+ export function promptOutcomeTagsFromAgentNeedsUserInput(event) {
160
+ if (event.countsAsPromptSuccess) {
161
+ return { [PROMPT_OUTCOME_TAG]: "success" };
162
+ }
163
+ if (event.advice) {
164
+ return promptOutcomeTagsFromFailure(promptFailurePlatform("unexpected"));
165
+ }
166
+ return {};
167
+ }
168
+ export function recordAwaitingUserDismissed(params) {
169
+ if (!params.dedupeKey) {
170
+ return;
171
+ }
172
+ promptRequestMetrics.recordAwaitingUserDismissed({
173
+ dedupeKey: params.dedupeKey,
174
+ reason: params.reason,
175
+ });
176
+ }
177
+ export function isOrganicPromptDuringAwaitingUserHandoff(params) {
178
+ if (!params.awaitingUserHandoffRecorded || params.internal) {
179
+ return false;
180
+ }
181
+ return params.responseMetadata == null;
182
+ }
183
+ export function awaitingUserHandoffDedupeKey(context) {
184
+ return (context.awaitingUserHandoffPromptId ??
185
+ resolvePromptOutcomeDedupeKey(context));
186
+ }
187
+ export function recordAwaitingUserHandoffDismissed(params) {
188
+ if (!params.awaitingUserHandoffRecorded) {
189
+ return;
190
+ }
191
+ recordAwaitingUserDismissed({
192
+ dedupeKey: awaitingUserHandoffDedupeKey(params),
193
+ reason: params.reason,
194
+ });
195
+ }
196
+ export function recordAwaitingUserPromptOutcome(params) {
197
+ if (!params.dedupeKey) {
198
+ return false;
199
+ }
200
+ if (params.countsAsPromptSuccess) {
201
+ recordPromptOutcome({
202
+ dedupeKey: params.dedupeKey,
203
+ outcome: "success",
204
+ });
205
+ return true;
206
+ }
207
+ if (params.advice) {
208
+ recordPromptOutcome({
209
+ dedupeKey: params.dedupeKey,
210
+ outcome: "failure",
211
+ failure: promptFailurePlatform("unexpected"),
212
+ });
213
+ }
214
+ return false;
215
+ }
216
+ /** Record attempt + immediate failure for pre-FSM entry rejections (no promptId yet). */
217
+ export function recordPromptEntryRejection(params) {
218
+ if (!params.dedupeKey) {
219
+ return;
220
+ }
221
+ promptRequestMetrics.recordEntryRejection({
222
+ dedupeKey: params.dedupeKey,
223
+ failure: params.failure,
224
+ });
225
+ }
226
+ export function _resetPromptRequestMetricsForTesting() {
227
+ promptRequestMetrics._resetForTesting();
228
+ }
229
+ //# sourceMappingURL=prompt-request-metrics.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prompt-request-metrics.js","sourceRoot":"","sources":["../../../../src/ai-service/state-machine/helpers/prompt-request-metrics.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"transition.d.ts","sourceRoot":"","sources":["../../../../src/ai-service/state-machine/helpers/transition.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,KAAK,EACL,UAAU,EACV,UAAU,EACV,mBAAmB,EACnB,WAAW,EACZ,MAAM,iBAAiB,CAAC;AAGzB,KAAK,kBAAkB,CAAC,IAAI,SAAS,UAAU,IAAI;KAChD,GAAG,IAAI,UAAU,GAAG;SAClB,SAAS,IAAI,MAAM,CAAC,OAAO,WAAW,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,OAAO,WAAW,CAAC,CAAC,GAAG,CAAC,CAAC,SAAS,CAAC,SAAS,IAAI,GAC7F,OAAO,CAAC,UAAU,EAAE;YAAE,IAAI,EAAE,SAAS,CAAA;SAAE,CAAC,GACxC,KAAK;KACV,CAAC,MAAM,CAAC,OAAO,WAAW,CAAC,CAAC,GAAG,CAAC,CAAC;CACnC,CAAC,UAAU,CAAC,CAAC;AAGd,KAAK,sBAAsB,CACzB,GAAG,SAAS,UAAU,EACtB,IAAI,SAAS,UAAU,IACrB,mBAAmB,CAAC,GAAG,CAAC,GAAG,kBAAkB,CAAC,IAAI,CAAC,CAAC;AAExD,eAAO,MAAM,cAAc,GAAI,GAAG,SAAS,UAAU,EAAE,OAAO,KAAK,MACzD,IAAI,SAAS,UAAU,EAC7B,OAAO,sBAAsB,CAAC,GAAG,EAAE,IAAI,CAAC,kBAY3C,CAAC"}
1
+ {"version":3,"file":"transition.d.ts","sourceRoot":"","sources":["../../../../src/ai-service/state-machine/helpers/transition.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,KAAK,EACL,UAAU,EACV,UAAU,EACV,mBAAmB,EACnB,WAAW,EACZ,MAAM,iBAAiB,CAAC;AAIzB,KAAK,kBAAkB,CAAC,IAAI,SAAS,UAAU,IAAI;KAChD,GAAG,IAAI,UAAU,GAAG;SAClB,SAAS,IAAI,MAAM,CAAC,OAAO,WAAW,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,OAAO,WAAW,CAAC,CAAC,GAAG,CAAC,CAAC,SAAS,CAAC,SAAS,IAAI,GAC7F,OAAO,CAAC,UAAU,EAAE;YAAE,IAAI,EAAE,SAAS,CAAA;SAAE,CAAC,GACxC,KAAK;KACV,CAAC,MAAM,CAAC,OAAO,WAAW,CAAC,CAAC,GAAG,CAAC,CAAC;CACnC,CAAC,UAAU,CAAC,CAAC;AAGd,KAAK,sBAAsB,CACzB,GAAG,SAAS,UAAU,EACtB,IAAI,SAAS,UAAU,IACrB,mBAAmB,CAAC,GAAG,CAAC,GAAG,kBAAkB,CAAC,IAAI,CAAC,CAAC;AAExD,eAAO,MAAM,cAAc,GAAI,GAAG,SAAS,UAAU,EAAE,OAAO,KAAK,MACzD,IAAI,SAAS,UAAU,EAC7B,OAAO,sBAAsB,CAAC,GAAG,EAAE,IAAI,CAAC,kBAe3C,CAAC"}
@@ -1,11 +1,15 @@
1
1
  import { AGENT_CANCELED, USER_CANCELED } from "../clark-fsm.js";
2
+ import { promptFailureFromStreamAbort } from "./prompt-failure.js";
2
3
  export const transitionFrom = (clark) => {
3
4
  return (event) => {
4
5
  if (clark.context.abortController?.signal.aborted &&
5
6
  event.type !== USER_CANCELED &&
6
7
  event.type !== AGENT_CANCELED) {
7
8
  // abort signal was not explicitly handled by previous state
8
- return clark.send({ type: USER_CANCELED });
9
+ return clark.send({
10
+ type: USER_CANCELED,
11
+ failure: promptFailureFromStreamAbort(clark.context),
12
+ });
9
13
  }
10
14
  return clark.send(event);
11
15
  };
@@ -1 +1 @@
1
- {"version":3,"file":"transition.js","sourceRoot":"","sources":["../../../../src/ai-service/state-machine/helpers/transition.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAwBhE,MAAM,CAAC,MAAM,cAAc,GAAG,CAAyB,KAAY,EAAE,EAAE;IACrE,OAAO,CACL,KAAwC,EACxC,EAAE;QACF,IACE,KAAK,CAAC,OAAO,CAAC,eAAe,EAAE,MAAM,CAAC,OAAO;YAC7C,KAAK,CAAC,IAAI,KAAK,aAAa;YAC5B,KAAK,CAAC,IAAI,KAAK,cAAc,EAC7B,CAAC;YACD,4DAA4D;YAC5D,OAAO,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,aAAa,EAAE,CAAC,CAAC;QAC7C,CAAC;QACD,OAAO,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC3B,CAAC,CAAC;AACJ,CAAC,CAAC"}
1
+ {"version":3,"file":"transition.js","sourceRoot":"","sources":["../../../../src/ai-service/state-machine/helpers/transition.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAQhE,OAAO,EAAE,4BAA4B,EAAE,MAAM,qBAAqB,CAAC;AAiBnE,MAAM,CAAC,MAAM,cAAc,GAAG,CAAyB,KAAY,EAAE,EAAE;IACrE,OAAO,CACL,KAAwC,EACxC,EAAE;QACF,IACE,KAAK,CAAC,OAAO,CAAC,eAAe,EAAE,MAAM,CAAC,OAAO;YAC7C,KAAK,CAAC,IAAI,KAAK,aAAa;YAC5B,KAAK,CAAC,IAAI,KAAK,cAAc,EAC7B,CAAC;YACD,4DAA4D;YAC5D,OAAO,KAAK,CAAC,IAAI,CAAC;gBAChB,IAAI,EAAE,aAAa;gBACnB,OAAO,EAAE,4BAA4B,CAAC,KAAK,CAAC,OAAO,CAAC;aACrD,CAAC,CAAC;QACL,CAAC;QACD,OAAO,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC3B,CAAC,CAAC;AACJ,CAAC,CAAC"}
@@ -1,6 +1,6 @@
1
1
  import { type Logger } from "../../util/logger.js";
2
2
  import { type ExportedLLMObsSpan, type LLMObsNamedSpanOptions, LLMObsTracer } from "../llmobs/index.js";
3
- import { FSM, type FSMConfig, type FSMState, type FSMEventBase } from "./fsm.js";
3
+ import { FSM, type FSMOnTransitionParams, type FSMConfig, type FSMState, type FSMEventBase } from "./fsm.js";
4
4
  export type TracedFSMConfig<S extends FSMState, E extends FSMEventBase, C> = FSMConfig<S, E, C> & {
5
5
  /**
6
6
  * Create a provider function that returns tags to be added to every span.
@@ -66,6 +66,11 @@ export declare abstract class TracedFSM<S extends string, E extends {
66
66
  * before attaching it to the trace.
67
67
  * */
68
68
  protected abstract sanitizeEvent(event: E): Partial<E>;
69
+ /**
70
+ * Extra tags applied when finishing the root span on a terminal transition.
71
+ * Invoked before the terminal-state handler runs.
72
+ */
73
+ protected getRootSpanFinishTags(_params: FSMOnTransitionParams<S, E>): Tags;
69
74
  private handleTransitionTracing;
70
75
  private startRootSpanIfNeeded;
71
76
  private finishRootSpanIfOpen;
@@ -1 +1 @@
1
- {"version":3,"file":"traced-fsm.d.ts","sourceRoot":"","sources":["../../../src/ai-service/state-machine/traced-fsm.ts"],"names":[],"mappings":"AACA,OAAO,EAA2B,KAAK,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAC5E,OAAO,EAEL,KAAK,kBAAkB,EACvB,KAAK,sBAAsB,EAC3B,YAAY,EACb,MAAM,oBAAoB,CAAC;AAC5B,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,KAAK,CAIX;IAEF,SAAS,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IACtB,MAAM,EAAE,YAAY,CAAC;IACrB,MAAM,EAAE,MAAM,CAAC;IACtB,OAAO,CAAC,OAAO,CAAc;gBAG3B,MAAM,EAAE,eAAe,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAChC,MAAM,GAAE,YAAoC,EAC5C,MAAM,GAAE,MAAoB;IAiC9B;;OAEG;IACH,IAAW,QAAQ,IAAI,kBAAkB,GAAG,SAAS,CAEpD;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;IAY7B,OAAO,CAAC,oBAAoB;IAa5B,OAAO,CAAC,cAAc;IAOtB,OAAO,CAAC,qBAAqB;IAY7B,OAAO,CAAC,SAAS;IAgBjB,OAAO,CAAC,UAAU;IAuBlB,OAAO,CAAC,kBAAkB;IAY1B,OAAO,CAAC,uBAAuB;IAS/B,OAAO,CAAC,YAAY;CASrB;AACD,MAAM,MAAM,IAAI,GAAG;IAAE,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAA;CAAE,CAAC;AAE1C,MAAM,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC"}
1
+ {"version":3,"file":"traced-fsm.d.ts","sourceRoot":"","sources":["../../../src/ai-service/state-machine/traced-fsm.ts"],"names":[],"mappings":"AACA,OAAO,EAA2B,KAAK,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAC5E,OAAO,EAEL,KAAK,kBAAkB,EACvB,KAAK,sBAAsB,EAC3B,YAAY,EACb,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EACL,GAAG,EACH,KAAK,qBAAqB,EAC1B,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,KAAK,CAIX;IAEF,SAAS,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IACtB,MAAM,EAAE,YAAY,CAAC;IACrB,MAAM,EAAE,MAAM,CAAC;IACtB,OAAO,CAAC,OAAO,CAAc;gBAG3B,MAAM,EAAE,eAAe,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAChC,MAAM,GAAE,YAAoC,EAC5C,MAAM,GAAE,MAAoB;IAiC9B;;OAEG;IACH,IAAW,QAAQ,IAAI,kBAAkB,GAAG,SAAS,CAEpD;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;IAEtD;;;OAGG;IACH,SAAS,CAAC,qBAAqB,CAAC,OAAO,EAAE,qBAAqB,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI;YAI7D,uBAAuB;IA2BrC,OAAO,CAAC,qBAAqB;IAY7B,OAAO,CAAC,oBAAoB;IAgB5B,OAAO,CAAC,cAAc;IAOtB,OAAO,CAAC,qBAAqB;IAY7B,OAAO,CAAC,SAAS;IAgBjB,OAAO,CAAC,UAAU;IAwBlB,OAAO,CAAC,kBAAkB;IAY1B,OAAO,CAAC,uBAAuB;IAS/B,OAAO,CAAC,YAAY;CASrB;AACD,MAAM,MAAM,IAAI,GAAG;IAAE,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAA;CAAE,CAAC;AAE1C,MAAM,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC"}
@@ -58,6 +58,13 @@ export class TracedFSM extends FSM {
58
58
  get rootSpan() {
59
59
  return this.spans.exportedRootSpan;
60
60
  }
61
+ /**
62
+ * Extra tags applied when finishing the root span on a terminal transition.
63
+ * Invoked before the terminal-state handler runs.
64
+ */
65
+ getRootSpanFinishTags(_params) {
66
+ return {};
67
+ }
61
68
  async handleTransitionTracing(next, params) {
62
69
  this.finishStateSpanIfOpen(params);
63
70
  const options = this.getStateSpanOptions(params.to);
@@ -95,7 +102,10 @@ export class TracedFSM extends FSM {
95
102
  // No active root span to finish
96
103
  return;
97
104
  }
98
- this.finishSpan(span, paramsOrError);
105
+ const extraTags = this.isTransitionParams(paramsOrError)
106
+ ? this.getRootSpanFinishTags(paramsOrError)
107
+ : {};
108
+ this.finishSpan(span, paramsOrError, extraTags);
99
109
  this.spans.rootSpan = undefined;
100
110
  this.tracer.rootSpan = undefined;
101
111
  }
@@ -123,8 +133,8 @@ export class TracedFSM extends FSM {
123
133
  });
124
134
  return span;
125
135
  }
126
- finishSpan(span, paramsOrError) {
127
- const tags = this.getTags();
136
+ finishSpan(span, paramsOrError, extraTags = {}) {
137
+ const tags = { ...this.getTags(), ...extraTags };
128
138
  if (this.isTransitionParams(paramsOrError)) {
129
139
  const sanitizedEvent = this.sanitizeEvent(paramsOrError.event);
130
140
  this.tracer.annotate(span, {
@@ -1 +1 @@
1
- {"version":3,"file":"traced-fsm.js","sourceRoot":"","sources":["../../../src/ai-service/state-machine/traced-fsm.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"traced-fsm.js","sourceRoot":"","sources":["../../../src/ai-service/state-machine/traced-fsm.ts"],"names":[],"mappings":"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"}
@@ -1,8 +1,8 @@
1
1
  import type { JSONObject } from "@ai-sdk/provider";
2
- import { buildThinkingProviderOptions, usesAdaptiveEffort, type ThinkingOptionsParams, type ThinkingProviderOptions } from "@superblocksteam/clark";
2
+ import { buildThinkingProviderOptions, isExtendedThinkingModel, upstreamStallTimeoutMsFor, usesAdaptiveEffort, type ThinkingOptionsParams, type ThinkingProviderOptions } from "@superblocksteam/clark";
3
3
  import type { LLMProviderConfig } from "@superblocksteam/library-shared/types";
4
4
  import type { ContextManagementOptions } from "../llm/context-v2/context-management.js";
5
- export { buildThinkingProviderOptions, usesAdaptiveEffort, type ThinkingOptionsParams, type ThinkingProviderOptions, };
5
+ export { buildThinkingProviderOptions, isExtendedThinkingModel, upstreamStallTimeoutMsFor, usesAdaptiveEffort, type ThinkingOptionsParams, type ThinkingProviderOptions, };
6
6
  export interface LLMConfigResult {
7
7
  thinkingEnabled: boolean;
8
8
  thinkingBudgetTokens: number;
@@ -1 +1 @@
1
- {"version":3,"file":"llm-config-utils.d.ts","sourceRoot":"","sources":["../../../src/ai-service/util/llm-config-utils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAEnD,OAAO,EACL,4BAA4B,EAC5B,kBAAkB,EAClB,KAAK,qBAAqB,EAC1B,KAAK,uBAAuB,EAC7B,MAAM,wBAAwB,CAAC;AAKhC,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,uCAAuC,CAAC;AAI/E,OAAO,KAAK,EACV,wBAAwB,EAEzB,MAAM,yCAAyC,CAAC;AAEjD,OAAO,EACL,4BAA4B,EAC5B,kBAAkB,EAClB,KAAK,qBAAqB,EAC1B,KAAK,uBAAuB,GAC7B,CAAC;AAEF,MAAM,WAAW,eAAe;IAC9B,eAAe,EAAE,OAAO,CAAC;IACzB,oBAAoB,EAAE,MAAM,CAAC;IAC7B,mBAAmB,EAAE,OAAO,CAAC;IAC7B,eAAe,EAAE,MAAM,CAAC;IACxB,eAAe,CAAC,EAAE;QAChB,SAAS,EAAE,UAAU,CAAC;QACtB,OAAO,EAAE,UAAU,CAAC;KACrB,CAAC;IACF,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAAC;CAC7C;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,gBAAgB,CAC9B,SAAS,EAAE,iBAAiB,GAAG,SAAS,EACxC,mBAAmB,GAAE,MAAa,EAClC,UAAU,CAAC,EAAE,MAAM,EACnB,wBAAwB,CAAC,EAAE,wBAAwB,GAClD,eAAe,CA6EjB"}
1
+ {"version":3,"file":"llm-config-utils.d.ts","sourceRoot":"","sources":["../../../src/ai-service/util/llm-config-utils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAEnD,OAAO,EACL,4BAA4B,EAC5B,uBAAuB,EACvB,yBAAyB,EACzB,kBAAkB,EAClB,KAAK,qBAAqB,EAC1B,KAAK,uBAAuB,EAC7B,MAAM,wBAAwB,CAAC;AAKhC,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,uCAAuC,CAAC;AAI/E,OAAO,KAAK,EACV,wBAAwB,EAEzB,MAAM,yCAAyC,CAAC;AAEjD,OAAO,EACL,4BAA4B,EAC5B,uBAAuB,EACvB,yBAAyB,EACzB,kBAAkB,EAClB,KAAK,qBAAqB,EAC1B,KAAK,uBAAuB,GAC7B,CAAC;AAEF,MAAM,WAAW,eAAe;IAC9B,eAAe,EAAE,OAAO,CAAC;IACzB,oBAAoB,EAAE,MAAM,CAAC;IAC7B,mBAAmB,EAAE,OAAO,CAAC;IAC7B,eAAe,EAAE,MAAM,CAAC;IACxB,eAAe,CAAC,EAAE;QAChB,SAAS,EAAE,UAAU,CAAC;QACtB,OAAO,EAAE,UAAU,CAAC;KACrB,CAAC;IACF,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAAC;CAC7C;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,gBAAgB,CAC9B,SAAS,EAAE,iBAAiB,GAAG,SAAS,EACxC,mBAAmB,GAAE,MAAa,EAClC,UAAU,CAAC,EAAE,MAAM,EACnB,wBAAwB,CAAC,EAAE,wBAAwB,GAClD,eAAe,CA6EjB"}
@@ -1,8 +1,8 @@
1
- import { buildThinkingProviderOptions, usesAdaptiveEffort, } from "@superblocksteam/clark";
1
+ import { buildThinkingProviderOptions, isExtendedThinkingModel, upstreamStallTimeoutMsFor, usesAdaptiveEffort, } from "@superblocksteam/clark";
2
2
  import { MAX_OUTPUT_TOKENS, MODEL_CAPABILITIES, } from "@superblocksteam/library-shared/types";
3
3
  import { getLogger } from "../../util/logger.js";
4
4
  import { ContextManagementConfig } from "../llm/context-v2/context-management.js";
5
- export { buildThinkingProviderOptions, usesAdaptiveEffort, };
5
+ export { buildThinkingProviderOptions, isExtendedThinkingModel, upstreamStallTimeoutMsFor, usesAdaptiveEffort, };
6
6
  /**
7
7
  * Processes LLM config and returns the configuration options for AI SDK calls.
8
8
  *
@@ -1 +1 @@
1
- {"version":3,"file":"llm-config-utils.js","sourceRoot":"","sources":["../../../src/ai-service/util/llm-config-utils.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"llm-config-utils.js","sourceRoot":"","sources":["../../../src/ai-service/util/llm-config-utils.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,36 @@
1
+ import type { GitService } from "./index.js";
2
+ /**
3
+ * The fullstack Vite runtime boots from `client/root.tsx` at the app root
4
+ * (the live-edit pod runs the dev server with the app template root as cwd).
5
+ *
6
+ * APPS-4906: a project-root-shaped tree (where the app lives under
7
+ * `apps/<slug>/`) can be merged into that app root via `superblocks/live`.
8
+ * Applying it relocates the entry to `apps/<slug>/client/root.tsx`, deletes
9
+ * the flat `client/root.tsx`, and the dev server crashes with
10
+ * "Failed to load url /client/root.tsx". This guard detects that shape on the
11
+ * incoming tree so the pull can be aborted before the working tree is touched.
12
+ */
13
+ export declare const FULLSTACK_ENTRY_PATH = "client/root.tsx";
14
+ export interface LayoutMismatch {
15
+ mismatch: boolean;
16
+ offendingPath?: string;
17
+ }
18
+ /**
19
+ * Inspects a list of repo-relative paths (e.g. from `git ls-tree -r
20
+ * --name-only`) and reports whether they describe a project-root layout that
21
+ * would clobber the flat fullstack entrypoint.
22
+ *
23
+ * Conservative by design: only flags a tree that BOTH lacks the flat
24
+ * `client/root.tsx` AND contains a nested `apps/<slug>/client/root.tsx`. A tree
25
+ * that still has the flat entry, or that simply happens to contain an `apps/`
26
+ * directory, is never flagged.
27
+ */
28
+ export declare function detectProjectRootLayoutMismatch(treePaths: string[]): LayoutMismatch;
29
+ /**
30
+ * Reads the incoming live branch tree and throws {@link GitLayoutMismatchError}
31
+ * if applying it would remove the fullstack entrypoint. Best-effort: if the
32
+ * tree cannot be read, the pull is allowed to proceed (we never want this guard
33
+ * to be the reason a healthy pull fails).
34
+ */
35
+ export declare function assertIncomingLiveLayout(gitService: GitService, ref?: string): Promise<void>;
36
+ //# sourceMappingURL=app-layout-guard.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"app-layout-guard.d.ts","sourceRoot":"","sources":["../../src/git-service/app-layout-guard.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAE7C;;;;;;;;;;GAUG;AACH,eAAO,MAAM,oBAAoB,oBAAoB,CAAC;AAItD,MAAM,WAAW,cAAc;IAC7B,QAAQ,EAAE,OAAO,CAAC;IAClB,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED;;;;;;;;;GASG;AACH,wBAAgB,+BAA+B,CAC7C,SAAS,EAAE,MAAM,EAAE,GAClB,cAAc,CAShB;AAED;;;;;GAKG;AACH,wBAAsB,wBAAwB,CAC5C,UAAU,EAAE,UAAU,EACtB,GAAG,GAAE,MAAgD,GACpD,OAAO,CAAC,IAAI,CAAC,CA2Bf"}
@@ -0,0 +1,66 @@
1
+ import { SUPERBLOCKS_LIVE_GIT_BRANCH } from "@superblocksteam/shared";
2
+ import { getLogger } from "../util/logger.js";
3
+ import { GitLayoutMismatchError } from "./errors.js";
4
+ /**
5
+ * The fullstack Vite runtime boots from `client/root.tsx` at the app root
6
+ * (the live-edit pod runs the dev server with the app template root as cwd).
7
+ *
8
+ * APPS-4906: a project-root-shaped tree (where the app lives under
9
+ * `apps/<slug>/`) can be merged into that app root via `superblocks/live`.
10
+ * Applying it relocates the entry to `apps/<slug>/client/root.tsx`, deletes
11
+ * the flat `client/root.tsx`, and the dev server crashes with
12
+ * "Failed to load url /client/root.tsx". This guard detects that shape on the
13
+ * incoming tree so the pull can be aborted before the working tree is touched.
14
+ */
15
+ export const FULLSTACK_ENTRY_PATH = "client/root.tsx";
16
+ const NESTED_FULLSTACK_ENTRY = /^apps\/[^/]+\/client\/root\.tsx$/;
17
+ /**
18
+ * Inspects a list of repo-relative paths (e.g. from `git ls-tree -r
19
+ * --name-only`) and reports whether they describe a project-root layout that
20
+ * would clobber the flat fullstack entrypoint.
21
+ *
22
+ * Conservative by design: only flags a tree that BOTH lacks the flat
23
+ * `client/root.tsx` AND contains a nested `apps/<slug>/client/root.tsx`. A tree
24
+ * that still has the flat entry, or that simply happens to contain an `apps/`
25
+ * directory, is never flagged.
26
+ */
27
+ export function detectProjectRootLayoutMismatch(treePaths) {
28
+ const paths = treePaths.map((p) => p.trim()).filter(Boolean);
29
+ if (paths.includes(FULLSTACK_ENTRY_PATH)) {
30
+ return { mismatch: false };
31
+ }
32
+ const offendingPath = paths.find((p) => NESTED_FULLSTACK_ENTRY.test(p));
33
+ return offendingPath
34
+ ? { mismatch: true, offendingPath }
35
+ : { mismatch: false };
36
+ }
37
+ /**
38
+ * Reads the incoming live branch tree and throws {@link GitLayoutMismatchError}
39
+ * if applying it would remove the fullstack entrypoint. Best-effort: if the
40
+ * tree cannot be read, the pull is allowed to proceed (we never want this guard
41
+ * to be the reason a healthy pull fails).
42
+ */
43
+ export async function assertIncomingLiveLayout(gitService, ref = `origin/${SUPERBLOCKS_LIVE_GIT_BRANCH}`) {
44
+ let treePaths;
45
+ try {
46
+ const output = await gitService.raw(["ls-tree", "-r", "--name-only", ref]);
47
+ treePaths = output.split("\n");
48
+ }
49
+ catch {
50
+ return;
51
+ }
52
+ const { mismatch, offendingPath } = detectProjectRootLayoutMismatch(treePaths);
53
+ if (!mismatch) {
54
+ return;
55
+ }
56
+ getLogger().warn("[git] aborting pull: incoming tree would remove the app entrypoint", {
57
+ gitCategory: "pull",
58
+ gitOperation: "pull",
59
+ gitOutcome: "layout_mismatch",
60
+ ref,
61
+ expectedEntry: FULLSTACK_ENTRY_PATH,
62
+ offendingPath,
63
+ });
64
+ throw new GitLayoutMismatchError(offendingPath ?? "(unknown)");
65
+ }
66
+ //# sourceMappingURL=app-layout-guard.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"app-layout-guard.js","sourceRoot":"","sources":["../../src/git-service/app-layout-guard.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,2BAA2B,EAAE,MAAM,yBAAyB,CAAC;AAEtE,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAC9C,OAAO,EAAE,sBAAsB,EAAE,MAAM,aAAa,CAAC;AAGrD;;;;;;;;;;GAUG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAG,iBAAiB,CAAC;AAEtD,MAAM,sBAAsB,GAAG,kCAAkC,CAAC;AAOlE;;;;;;;;;GASG;AACH,MAAM,UAAU,+BAA+B,CAC7C,SAAmB;IAEnB,MAAM,KAAK,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IAC7D,IAAI,KAAK,CAAC,QAAQ,CAAC,oBAAoB,CAAC,EAAE,CAAC;QACzC,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC;IAC7B,CAAC;IACD,MAAM,aAAa,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,sBAAsB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;IACxE,OAAO,aAAa;QAClB,CAAC,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,aAAa,EAAE;QACnC,CAAC,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC;AAC1B,CAAC;AAED;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,wBAAwB,CAC5C,UAAsB,EACtB,MAAc,UAAU,2BAA2B,EAAE;IAErD,IAAI,SAAmB,CAAC;IACxB,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,GAAG,CAAC,CAAC,SAAS,EAAE,IAAI,EAAE,aAAa,EAAE,GAAG,CAAC,CAAC,CAAC;QAC3E,SAAS,GAAG,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IACjC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO;IACT,CAAC;IAED,MAAM,EAAE,QAAQ,EAAE,aAAa,EAAE,GAC/B,+BAA+B,CAAC,SAAS,CAAC,CAAC;IAC7C,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,OAAO;IACT,CAAC;IAED,SAAS,EAAE,CAAC,IAAI,CACd,oEAAoE,EACpE;QACE,WAAW,EAAE,MAAM;QACnB,YAAY,EAAE,MAAM;QACpB,UAAU,EAAE,iBAAiB;QAC7B,GAAG;QACH,aAAa,EAAE,oBAAoB;QACnC,aAAa;KACd,CACF,CAAC;IACF,MAAM,IAAI,sBAAsB,CAAC,aAAa,IAAI,WAAW,CAAC,CAAC;AACjE,CAAC"}
@@ -23,4 +23,9 @@ export declare class GitNonFastForwardError extends Error {
23
23
  readonly name = "GitNonFastForwardError";
24
24
  constructor(stderr: string);
25
25
  }
26
+ export declare class GitLayoutMismatchError extends Error {
27
+ readonly offendingPath: string;
28
+ readonly name = "GitLayoutMismatchError";
29
+ constructor(offendingPath: string);
30
+ }
26
31
  //# sourceMappingURL=errors.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../src/git-service/errors.ts"],"names":[],"mappings":"AAAA,qBAAa,gBAAiB,SAAQ,KAAK;IAIvC,QAAQ,CAAC,KAAK,EAAE,MAAM,EAAE;IAH1B,SAAkB,IAAI,sBAAsB;gBAGjC,KAAK,EAAE,MAAM,EAAE,EACxB,MAAM,EAAE,MAAM;CAIjB;AAED,qBAAa,YAAa,SAAQ,KAAK;IACrC,SAAkB,IAAI,kBAAkB;gBAE5B,MAAM,EAAE,MAAM;CAG3B;AAED,qBAAa,cAAe,SAAQ,KAAK;IACvC,SAAkB,IAAI,oBAAoB;gBAE9B,MAAM,EAAE,MAAM;CAG3B;AAED,qBAAa,aAAc,SAAQ,KAAK;IACtC,SAAkB,IAAI,mBAAmB;gBAE7B,MAAM,EAAE,MAAM;CAG3B;AAED,qBAAa,kBAAmB,SAAQ,KAAK;IAC3C,SAAkB,IAAI,wBAAwB;gBAElC,MAAM,EAAE,MAAM;CAK3B;AAED,qBAAa,sBAAuB,SAAQ,KAAK;IAC/C,SAAkB,IAAI,4BAA4B;gBAEtC,MAAM,EAAE,MAAM;CAG3B"}
1
+ {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../src/git-service/errors.ts"],"names":[],"mappings":"AAAA,qBAAa,gBAAiB,SAAQ,KAAK;IAIvC,QAAQ,CAAC,KAAK,EAAE,MAAM,EAAE;IAH1B,SAAkB,IAAI,sBAAsB;gBAGjC,KAAK,EAAE,MAAM,EAAE,EACxB,MAAM,EAAE,MAAM;CAIjB;AAED,qBAAa,YAAa,SAAQ,KAAK;IACrC,SAAkB,IAAI,kBAAkB;gBAE5B,MAAM,EAAE,MAAM;CAG3B;AAED,qBAAa,cAAe,SAAQ,KAAK;IACvC,SAAkB,IAAI,oBAAoB;gBAE9B,MAAM,EAAE,MAAM;CAG3B;AAED,qBAAa,aAAc,SAAQ,KAAK;IACtC,SAAkB,IAAI,mBAAmB;gBAE7B,MAAM,EAAE,MAAM;CAG3B;AAED,qBAAa,kBAAmB,SAAQ,KAAK;IAC3C,SAAkB,IAAI,wBAAwB;gBAElC,MAAM,EAAE,MAAM;CAK3B;AAED,qBAAa,sBAAuB,SAAQ,KAAK;IAC/C,SAAkB,IAAI,4BAA4B;gBAEtC,MAAM,EAAE,MAAM;CAG3B;AAED,qBAAa,sBAAuB,SAAQ,KAAK;IAGnC,QAAQ,CAAC,aAAa,EAAE,MAAM;IAF1C,SAAkB,IAAI,4BAA4B;gBAE7B,aAAa,EAAE,MAAM;CAO3C"}