@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.
- package/dist/ai-service/agent/tools/apis/api-validation-orchestrator.js +1 -1
- package/dist/ai-service/agent/tools/apis/api-validation-orchestrator.js.map +1 -1
- package/dist/ai-service/agent/tools/apis/test-api.d.ts.map +1 -1
- package/dist/ai-service/agent/tools/apis/test-api.js +3 -2
- package/dist/ai-service/agent/tools/apis/test-api.js.map +1 -1
- package/dist/ai-service/agent/tools2/tools/exit-plan-mode.d.ts.map +1 -1
- package/dist/ai-service/agent/tools2/tools/exit-plan-mode.js +1 -13
- package/dist/ai-service/agent/tools2/tools/exit-plan-mode.js.map +1 -1
- package/dist/ai-service/agent/tools2/tools/git.d.ts.map +1 -1
- package/dist/ai-service/agent/tools2/tools/git.js +19 -1
- package/dist/ai-service/agent/tools2/tools/git.js.map +1 -1
- package/dist/ai-service/agent/utils.d.ts.map +1 -1
- package/dist/ai-service/agent/utils.js +46 -3
- package/dist/ai-service/agent/utils.js.map +1 -1
- package/dist/ai-service/app-interface/npm-registry.d.ts +11 -7
- package/dist/ai-service/app-interface/npm-registry.d.ts.map +1 -1
- package/dist/ai-service/app-interface/npm-registry.js +11 -7
- package/dist/ai-service/app-interface/npm-registry.js.map +1 -1
- package/dist/ai-service/app-skills/helpers.d.ts.map +1 -1
- package/dist/ai-service/app-skills/helpers.js +2 -0
- package/dist/ai-service/app-skills/helpers.js.map +1 -1
- package/dist/ai-service/chat/chat-session-store-metrics.d.ts.map +1 -1
- package/dist/ai-service/chat/chat-session-store-metrics.js +26 -17
- package/dist/ai-service/chat/chat-session-store-metrics.js.map +1 -1
- package/dist/ai-service/chat/chat-session-store.d.ts +1 -4
- package/dist/ai-service/chat/chat-session-store.d.ts.map +1 -1
- package/dist/ai-service/chat/chat-session-store.js +32 -8
- package/dist/ai-service/chat/chat-session-store.js.map +1 -1
- package/dist/ai-service/chat/transcript-metrics.d.ts +5 -0
- package/dist/ai-service/chat/transcript-metrics.d.ts.map +1 -1
- package/dist/ai-service/chat/transcript-metrics.js +42 -15
- package/dist/ai-service/chat/transcript-metrics.js.map +1 -1
- package/dist/ai-service/index.d.ts +2 -0
- package/dist/ai-service/index.d.ts.map +1 -1
- package/dist/ai-service/index.js +206 -31
- package/dist/ai-service/index.js.map +1 -1
- package/dist/ai-service/llm/client.d.ts.map +1 -1
- package/dist/ai-service/llm/client.js +9 -9
- package/dist/ai-service/llm/client.js.map +1 -1
- package/dist/ai-service/llm/context-v2/context-metrics.d.ts +6 -0
- package/dist/ai-service/llm/context-v2/context-metrics.d.ts.map +1 -1
- package/dist/ai-service/llm/context-v2/context-metrics.js +18 -1
- package/dist/ai-service/llm/context-v2/context-metrics.js.map +1 -1
- package/dist/ai-service/llm/provider.d.ts +7 -1
- package/dist/ai-service/llm/provider.d.ts.map +1 -1
- package/dist/ai-service/llm/provider.js +292 -15
- package/dist/ai-service/llm/provider.js.map +1 -1
- package/dist/ai-service/llm/stream/empty-tool-call-tracker.d.ts +47 -0
- package/dist/ai-service/llm/stream/empty-tool-call-tracker.d.ts.map +1 -0
- package/dist/ai-service/llm/stream/empty-tool-call-tracker.js +122 -0
- package/dist/ai-service/llm/stream/empty-tool-call-tracker.js.map +1 -0
- package/dist/ai-service/llm/stream/errors.d.ts +21 -1
- package/dist/ai-service/llm/stream/errors.d.ts.map +1 -1
- package/dist/ai-service/llm/stream/errors.js +20 -0
- package/dist/ai-service/llm/stream/errors.js.map +1 -1
- package/dist/ai-service/llm/stream/managed-stream.d.ts +5 -1
- package/dist/ai-service/llm/stream/managed-stream.d.ts.map +1 -1
- package/dist/ai-service/llm/stream/managed-stream.js +51 -1
- package/dist/ai-service/llm/stream/managed-stream.js.map +1 -1
- package/dist/ai-service/llm/stream/orchestrator.d.ts +17 -2
- package/dist/ai-service/llm/stream/orchestrator.d.ts.map +1 -1
- package/dist/ai-service/llm/stream/orchestrator.js +185 -135
- package/dist/ai-service/llm/stream/orchestrator.js.map +1 -1
- package/dist/ai-service/llmobs/otel-exporter.d.ts.map +1 -1
- package/dist/ai-service/llmobs/otel-exporter.js +17 -6
- package/dist/ai-service/llmobs/otel-exporter.js.map +1 -1
- package/dist/ai-service/llmobs/tracer.d.ts +24 -2
- package/dist/ai-service/llmobs/tracer.d.ts.map +1 -1
- package/dist/ai-service/llmobs/tracer.js +90 -25
- package/dist/ai-service/llmobs/tracer.js.map +1 -1
- package/dist/ai-service/llmobs/types.d.ts +5 -0
- package/dist/ai-service/llmobs/types.d.ts.map +1 -1
- package/dist/ai-service/state-machine/clark-fsm.d.ts +24 -7
- package/dist/ai-service/state-machine/clark-fsm.d.ts.map +1 -1
- package/dist/ai-service/state-machine/clark-fsm.js +5 -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 +30 -43
- 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 +21 -0
- package/dist/ai-service/state-machine/handlers/awaiting-user.js.map +1 -1
- package/dist/ai-service/state-machine/handlers/idle.d.ts.map +1 -1
- package/dist/ai-service/state-machine/handlers/idle.js +16 -1
- package/dist/ai-service/state-machine/handlers/idle.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 +10 -21
- package/dist/ai-service/state-machine/handlers/llm-generating.js.map +1 -1
- package/dist/ai-service/state-machine/handlers/persist-prompt-attachments.d.ts +25 -0
- package/dist/ai-service/state-machine/handlers/persist-prompt-attachments.d.ts.map +1 -0
- package/dist/ai-service/state-machine/handlers/persist-prompt-attachments.js +68 -0
- package/dist/ai-service/state-machine/handlers/persist-prompt-attachments.js.map +1 -0
- package/dist/ai-service/state-machine/helpers/prompt-failure.d.ts +51 -0
- package/dist/ai-service/state-machine/helpers/prompt-failure.d.ts.map +1 -0
- package/dist/ai-service/state-machine/helpers/prompt-failure.js +149 -0
- package/dist/ai-service/state-machine/helpers/prompt-failure.js.map +1 -0
- package/dist/ai-service/state-machine/helpers/prompt-request-metrics.d.ts +77 -0
- package/dist/ai-service/state-machine/helpers/prompt-request-metrics.d.ts.map +1 -0
- package/dist/ai-service/state-machine/helpers/prompt-request-metrics.js +229 -0
- package/dist/ai-service/state-machine/helpers/prompt-request-metrics.js.map +1 -0
- package/dist/ai-service/state-machine/helpers/transition.d.ts.map +1 -1
- package/dist/ai-service/state-machine/helpers/transition.js +5 -1
- package/dist/ai-service/state-machine/helpers/transition.js.map +1 -1
- package/dist/ai-service/state-machine/traced-fsm.d.ts +6 -1
- package/dist/ai-service/state-machine/traced-fsm.d.ts.map +1 -1
- package/dist/ai-service/state-machine/traced-fsm.js +13 -3
- package/dist/ai-service/state-machine/traced-fsm.js.map +1 -1
- package/dist/ai-service/util/llm-config-utils.d.ts +2 -2
- package/dist/ai-service/util/llm-config-utils.d.ts.map +1 -1
- package/dist/ai-service/util/llm-config-utils.js +2 -2
- package/dist/ai-service/util/llm-config-utils.js.map +1 -1
- package/dist/git-service/app-layout-guard.d.ts +36 -0
- package/dist/git-service/app-layout-guard.d.ts.map +1 -0
- package/dist/git-service/app-layout-guard.js +66 -0
- package/dist/git-service/app-layout-guard.js.map +1 -0
- package/dist/git-service/errors.d.ts +5 -0
- package/dist/git-service/errors.d.ts.map +1 -1
- package/dist/git-service/errors.js +10 -0
- package/dist/git-service/errors.js.map +1 -1
- package/dist/git-service/index.d.ts +2 -2
- package/dist/git-service/index.d.ts.map +1 -1
- package/dist/git-service/index.js +2 -2
- package/dist/git-service/index.js.map +1 -1
- package/dist/migration-templates/app-fullstack/package.json +1 -1
- package/dist/socket-manager.d.ts.map +1 -1
- package/dist/socket-manager.js +6 -0
- package/dist/socket-manager.js.map +1 -1
- package/dist/sync-service/index.d.ts +16 -9
- package/dist/sync-service/index.d.ts.map +1 -1
- package/dist/sync-service/index.js +154 -4
- package/dist/sync-service/index.js.map +1 -1
- package/dist/util/logger.d.ts +7 -0
- package/dist/util/logger.d.ts.map +1 -1
- package/dist/util/logger.js +29 -0
- package/dist/util/logger.js.map +1 -1
- 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":"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"}
|
|
@@ -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;
|
|
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({
|
|
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;
|
|
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,
|
|
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.
|
|
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":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,6BAA6B,CAAC;AAChE,OAAO,EAAE,YAAY,EAAE,SAAS,EAAe,MAAM,sBAAsB,CAAC;AAC5E,OAAO,EAIL,YAAY,GACb,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EACL,GAAG,GAKJ,MAAM,UAAU,CAAC;AA2BlB;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,MAAM,OAAgB,SAIpB,SAAQ,GAAY;IACZ,KAAK,CAIX;IAEQ,SAAS,CAAU;IACtB,MAAM,CAAe;IACrB,MAAM,CAAS;IACd,OAAO,CAAc;IAE7B,YACE,MAAgC,EAChC,SAAuB,YAAY,CAAC,QAAQ,EAC5C,SAAiB,SAAS,EAAE;QAE5B,MAAM,EAAE,SAAS,EAAE,uBAAuB,EAAE,iBAAiB,EAAE,GAAG,IAAI,EAAE,GACtE,MAAM,CAAC;QAET,MAAM,aAAa,GAAuB;YACxC,GAAG,IAAI;YACP,uBAAuB,EAAE,CAAC,GAAiB,EAAE,EAAE;gBAC7C,MAAM,SAAS,GAAG,GAAyB,CAAC;gBAC5C,MAAM,eAAe,GAAG,uBAAuB,CAAC,SAAS,CAAC,CAAC;gBAC3D,OAAO,KAAK,EAAE,MAAmC,EAAE,EAAE;oBACnD,OAAO,MAAM,SAAS,CAAC,uBAAuB,CAC5C,eAAe,EACf,MAAM,CACP,CAAC;gBACJ,CAAC,CAAC;YACJ,CAAC;SACF,CAAC;QAEF,KAAK,CAAC,aAAa,CAAC,CAAC;QAErB,IAAI,CAAC,KAAK,GAAG;YACX,SAAS,EAAE,SAAS;YACpB,QAAQ,EAAE,SAAS;YACnB,gBAAgB,EAAE,SAAS;SAC5B,CAAC;QAEF,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;QAC3B,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,OAAO,GAAG,iBAAiB,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAC3D,CAAC;IAED;;OAEG;IACH,IAAW,QAAQ;QACjB,OAAO,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAAC;IACrC,CAAC;
|
|
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"}
|