@superblocksteam/vite-plugin-file-sync 2.0.149 → 2.0.150-next.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/ai-service/agent/prompts/api-prompts.js +1 -1
- package/dist/ai-service/agent/prompts/build-base-system-prompt.d.ts.map +1 -1
- package/dist/ai-service/agent/prompts/build-base-system-prompt.js +38 -10
- package/dist/ai-service/agent/prompts/build-base-system-prompt.js.map +1 -1
- package/dist/ai-service/agent/prompts/build-security-scan-prompt.d.ts.map +1 -1
- package/dist/ai-service/agent/prompts/build-security-scan-prompt.js +20 -4
- package/dist/ai-service/agent/prompts/build-security-scan-prompt.js.map +1 -1
- package/dist/ai-service/agent/subagents/testing/prompt-builder.js +1 -1
- package/dist/ai-service/agent/tools/apis/analysis.d.ts +6 -0
- package/dist/ai-service/agent/tools/apis/analysis.d.ts.map +1 -1
- package/dist/ai-service/agent/tools/apis/analysis.js +130 -26
- package/dist/ai-service/agent/tools/apis/analysis.js.map +1 -1
- package/dist/ai-service/agent/tools/apis/get-sdk-api-docs.js +2 -2
- package/dist/ai-service/agent/tools/apis/get-sdk-api-docs.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 +131 -31
- package/dist/ai-service/agent/tools/apis/test-api.js.map +1 -1
- package/dist/ai-service/agent/tools/build-delete-file.d.ts +2 -2
- package/dist/ai-service/agent/tools/build-delete-file.js +3 -3
- package/dist/ai-service/agent/tools/build-delete-file.js.map +1 -1
- package/dist/ai-service/agent/tools/build-install-packages.d.ts +41 -21
- package/dist/ai-service/agent/tools/build-install-packages.d.ts.map +1 -1
- package/dist/ai-service/agent/tools/build-install-packages.js +299 -20
- package/dist/ai-service/agent/tools/build-install-packages.js.map +1 -1
- package/dist/ai-service/agent/tools/build-manage-checklist.d.ts.map +1 -1
- package/dist/ai-service/agent/tools/build-manage-checklist.js +2 -1
- package/dist/ai-service/agent/tools/build-manage-checklist.js.map +1 -1
- package/dist/ai-service/agent/tools/databases/dev-database-tasks.d.ts +161 -24
- package/dist/ai-service/agent/tools/databases/dev-database-tasks.d.ts.map +1 -1
- package/dist/ai-service/agent/tools/databases/dev-database-tasks.js +312 -55
- package/dist/ai-service/agent/tools/databases/dev-database-tasks.js.map +1 -1
- package/dist/ai-service/agent/tools/get-logs.d.ts +2 -2
- package/dist/ai-service/agent/tools/report-security-findings.d.ts +3 -3
- package/dist/ai-service/agent/tools.d.ts +10 -11
- package/dist/ai-service/agent/tools.d.ts.map +1 -1
- package/dist/ai-service/agent/tools.js +38 -19
- package/dist/ai-service/agent/tools.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 +9 -8
- package/dist/ai-service/agent/tools2/tools/exit-plan-mode.js.map +1 -1
- package/dist/ai-service/agent/tools2/tools/grep.js +1 -1
- package/dist/ai-service/agent/tools2/tools/index.d.ts.map +1 -1
- package/dist/ai-service/agent/tools2/tools/index.js +2 -3
- package/dist/ai-service/agent/tools2/tools/index.js.map +1 -1
- package/dist/ai-service/app-interface/npm-package-lookup.d.ts +22 -0
- package/dist/ai-service/app-interface/npm-package-lookup.d.ts.map +1 -1
- package/dist/ai-service/app-interface/npm-package-lookup.js +111 -0
- package/dist/ai-service/app-interface/npm-package-lookup.js.map +1 -1
- package/dist/ai-service/app-interface/shell.d.ts +71 -3
- package/dist/ai-service/app-interface/shell.d.ts.map +1 -1
- package/dist/ai-service/app-interface/shell.js +575 -23
- package/dist/ai-service/app-interface/shell.js.map +1 -1
- package/dist/ai-service/app-interface/vulnerability-gate.d.ts +83 -0
- package/dist/ai-service/app-interface/vulnerability-gate.d.ts.map +1 -0
- package/dist/ai-service/app-interface/vulnerability-gate.js +543 -0
- package/dist/ai-service/app-interface/vulnerability-gate.js.map +1 -0
- package/dist/ai-service/dev-database-client.d.ts +14 -4
- package/dist/ai-service/dev-database-client.d.ts.map +1 -1
- package/dist/ai-service/dev-database-client.js +1 -24
- package/dist/ai-service/dev-database-client.js.map +1 -1
- package/dist/ai-service/features.d.ts +5 -0
- package/dist/ai-service/features.d.ts.map +1 -1
- package/dist/ai-service/features.js +5 -0
- package/dist/ai-service/features.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 +60 -9
- package/dist/ai-service/index.js.map +1 -1
- package/dist/ai-service/integrations/store.d.ts +3 -0
- package/dist/ai-service/integrations/store.d.ts.map +1 -1
- package/dist/ai-service/integrations/store.js +2 -0
- package/dist/ai-service/integrations/store.js.map +1 -1
- package/dist/ai-service/llm/client.d.ts +2 -9
- package/dist/ai-service/llm/client.d.ts.map +1 -1
- package/dist/ai-service/llm/client.js +2 -81
- package/dist/ai-service/llm/client.js.map +1 -1
- package/dist/ai-service/llm/context-v2/compaction/client-side.d.ts.map +1 -1
- package/dist/ai-service/llm/context-v2/compaction/client-side.js +15 -4
- package/dist/ai-service/llm/context-v2/compaction/client-side.js.map +1 -1
- package/dist/ai-service/llm/context-v2/config.d.ts +8 -0
- package/dist/ai-service/llm/context-v2/config.d.ts.map +1 -1
- package/dist/ai-service/llm/context-v2/config.js +13 -0
- package/dist/ai-service/llm/context-v2/config.js.map +1 -1
- package/dist/ai-service/llm/context-v2/context-metrics.d.ts +18 -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 +94 -2
- package/dist/ai-service/llm/context-v2/context-metrics.js.map +1 -1
- package/dist/ai-service/llm/context-v2/context.d.ts +3 -0
- package/dist/ai-service/llm/context-v2/context.d.ts.map +1 -1
- package/dist/ai-service/llm/context-v2/context.js +13 -1
- package/dist/ai-service/llm/context-v2/context.js.map +1 -1
- package/dist/ai-service/llm/stream/observers/workflow-usage.d.ts +35 -0
- package/dist/ai-service/llm/stream/observers/workflow-usage.d.ts.map +1 -0
- package/dist/ai-service/llm/stream/observers/workflow-usage.js +108 -0
- package/dist/ai-service/llm/stream/observers/workflow-usage.js.map +1 -0
- package/dist/ai-service/llm/stream/orchestrator.d.ts.map +1 -1
- package/dist/ai-service/llm/stream/orchestrator.js +1 -0
- package/dist/ai-service/llm/stream/orchestrator.js.map +1 -1
- package/dist/ai-service/llm/stream/session.d.ts +2 -0
- package/dist/ai-service/llm/stream/session.d.ts.map +1 -1
- package/dist/ai-service/llm/stream/session.js +2 -0
- package/dist/ai-service/llm/stream/session.js.map +1 -1
- package/dist/ai-service/managed-native-db-availability.d.ts +62 -0
- package/dist/ai-service/managed-native-db-availability.d.ts.map +1 -0
- package/dist/ai-service/managed-native-db-availability.js +37 -0
- package/dist/ai-service/managed-native-db-availability.js.map +1 -0
- package/dist/ai-service/security/vulnerability-triage.d.ts +90 -0
- package/dist/ai-service/security/vulnerability-triage.d.ts.map +1 -0
- package/dist/ai-service/security/vulnerability-triage.js +113 -0
- package/dist/ai-service/security/vulnerability-triage.js.map +1 -0
- package/dist/ai-service/skills/system/superblocks-frontend/skill.generated.d.ts +1 -1
- package/dist/ai-service/skills/system/superblocks-frontend/skill.generated.d.ts.map +1 -1
- package/dist/ai-service/skills/system/superblocks-frontend/skill.generated.js +13 -0
- package/dist/ai-service/skills/system/superblocks-frontend/skill.generated.js.map +1 -1
- package/dist/ai-service/state-machine/clark-fsm.d.ts +12 -0
- package/dist/ai-service/state-machine/clark-fsm.d.ts.map +1 -1
- package/dist/ai-service/state-machine/clark-fsm.js +23 -0
- package/dist/ai-service/state-machine/clark-fsm.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 +17 -27
- package/dist/ai-service/state-machine/handlers/awaiting-user.js.map +1 -1
- package/dist/ai-service/state-machine/handlers/idle.d.ts +1 -1
- package/dist/ai-service/state-machine/handlers/idle.d.ts.map +1 -1
- package/dist/ai-service/state-machine/handlers/idle.js +28 -2
- package/dist/ai-service/state-machine/handlers/idle.js.map +1 -1
- package/dist/ai-service/state-machine/handlers/play-dead.d.ts +2 -2
- package/dist/ai-service/state-machine/handlers/play-dead.d.ts.map +1 -1
- package/dist/ai-service/state-machine/handlers/play-dead.js +18 -4
- package/dist/ai-service/state-machine/handlers/play-dead.js.map +1 -1
- package/dist/ai-service/state-machine/helpers/prompt-billing-metrics.d.ts +26 -0
- package/dist/ai-service/state-machine/helpers/prompt-billing-metrics.d.ts.map +1 -0
- package/dist/ai-service/state-machine/helpers/prompt-billing-metrics.js +127 -0
- package/dist/ai-service/state-machine/helpers/prompt-billing-metrics.js.map +1 -0
- package/dist/ai-service/state-machine/helpers/prompt-request-metrics.d.ts +36 -3
- package/dist/ai-service/state-machine/helpers/prompt-request-metrics.d.ts.map +1 -1
- package/dist/ai-service/state-machine/helpers/prompt-request-metrics.js +119 -11
- package/dist/ai-service/state-machine/helpers/prompt-request-metrics.js.map +1 -1
- package/dist/ai-service/tasks/factory.d.ts +2 -0
- package/dist/ai-service/tasks/factory.d.ts.map +1 -1
- package/dist/ai-service/tasks/factory.js +7 -0
- package/dist/ai-service/tasks/factory.js.map +1 -1
- package/dist/ai-service/types.d.ts +57 -3
- package/dist/ai-service/types.d.ts.map +1 -1
- package/dist/ai-service/types.js +20 -0
- package/dist/ai-service/types.js.map +1 -1
- package/dist/migration/restructure.js +1 -1
- package/dist/migration-templates/app-fullstack/client/pages/{Page1 → Home}/index.tsx +1 -1
- package/dist/migration-templates/app-fullstack/client/router.tsx +1 -1
- package/dist/migration-templates/app-fullstack/package.json +2 -2
- package/dist/npm/apply-package-json-substitutions.d.ts +19 -0
- package/dist/npm/apply-package-json-substitutions.d.ts.map +1 -0
- package/dist/npm/apply-package-json-substitutions.js +108 -0
- package/dist/npm/apply-package-json-substitutions.js.map +1 -0
- package/dist/policy-gate-callback-mapper.d.ts +1 -1
- package/dist/policy-gate-callback-mapper.d.ts.map +1 -1
- package/dist/policy-gate-callback-mapper.js +5 -6
- package/dist/policy-gate-callback-mapper.js.map +1 -1
- package/dist/policy-gate-runner.d.ts.map +1 -1
- package/dist/policy-gate-runner.js +22 -4
- package/dist/policy-gate-runner.js.map +1 -1
- package/package.json +8 -8
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"idle.js","sourceRoot":"","sources":["../../../../src/ai-service/state-machine/handlers/idle.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,uCAAuC,CAAC;AAE1E,OAAO,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AACpD,OAAO,EACL,iCAAiC,EACjC,mBAAmB,EACnB,aAAa,EACb,cAAc,GAIf,MAAM,iBAAiB,CAAC;AACzB,OAAO,EACL,8BAA8B,EAC9B,sBAAsB,GACvB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EACL,mBAAmB,EACnB,yBAAyB,EACzB,6BAA6B,GAC9B,MAAM,sCAAsC,CAAC;AAE9C,MAAM,CAAC,MAAM,MAAM,GAAG,CACpB,KAAY,EACZ,EAAE,gBAAgB,EAAE,aAAa,EAA2B,
|
|
1
|
+
{"version":3,"file":"idle.js","sourceRoot":"","sources":["../../../../src/ai-service/state-machine/handlers/idle.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import { type ClarkTransition } from "../clark-fsm.js";
|
|
2
|
-
export declare const playDead: () => ({ event }: ClarkTransition) => Promise<void>;
|
|
1
|
+
import { type Clark, type ClarkStateHandlerParams, type ClarkTransition } from "../clark-fsm.js";
|
|
2
|
+
export declare const playDead: (clark: Clark, { chatSessionStore, features }: ClarkStateHandlerParams) => ({ event }: ClarkTransition) => Promise<void>;
|
|
3
3
|
//# sourceMappingURL=play-dead.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"play-dead.d.ts","sourceRoot":"","sources":["../../../../src/ai-service/state-machine/handlers/play-dead.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"play-dead.d.ts","sourceRoot":"","sources":["../../../../src/ai-service/state-machine/handlers/play-dead.ts"],"names":[],"mappings":"AACA,OAAO,EAEL,KAAK,KAAK,EACV,KAAK,uBAAuB,EAC5B,KAAK,eAAe,EACrB,MAAM,iBAAiB,CAAC;AAIzB,eAAO,MAAM,QAAQ,GAClB,OAAO,KAAK,EAAE,gCAAgC,uBAAuB,MAC/D,WAAW,eAAe,KAAG,OAAO,CAAC,IAAI,CAoB/C,CAAC"}
|
|
@@ -1,9 +1,23 @@
|
|
|
1
|
-
import {
|
|
2
|
-
|
|
1
|
+
import { getLogger } from "../../../util/logger.js";
|
|
2
|
+
import { AGENT_GAVE_UP, } from "../clark-fsm.js";
|
|
3
|
+
import { finalizePromptBillingMetrics } from "../helpers/prompt-billing-metrics.js";
|
|
4
|
+
import { resolvePromptMetricLabels } from "../helpers/prompt-request-metrics.js";
|
|
5
|
+
export const playDead = (clark, { chatSessionStore, features }) => async ({ event }) => {
|
|
3
6
|
switch (event.type) {
|
|
4
|
-
case AGENT_GAVE_UP:
|
|
5
|
-
|
|
7
|
+
case AGENT_GAVE_UP: {
|
|
8
|
+
const { promptId, workflowMetrics } = clark.context;
|
|
9
|
+
// Do not await: give-up teardown must not wait on an unbounded billing
|
|
10
|
+
// RPC. finalizePromptBillingMetrics already swallows and logs errors.
|
|
11
|
+
void finalizePromptBillingMetrics({
|
|
12
|
+
chatSessionStore,
|
|
13
|
+
labels: resolvePromptMetricLabels(clark.context),
|
|
14
|
+
logger: getLogger(),
|
|
15
|
+
promptId,
|
|
16
|
+
promptUsageAlarmThreshold: features.promptUsageAlarmThreshold,
|
|
17
|
+
workflowMetrics,
|
|
18
|
+
});
|
|
6
19
|
break;
|
|
20
|
+
}
|
|
7
21
|
default:
|
|
8
22
|
throw new Error(`Unhandled event: ${event}`);
|
|
9
23
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"play-dead.js","sourceRoot":"","sources":["../../../../src/ai-service/state-machine/handlers/play-dead.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,
|
|
1
|
+
{"version":3,"file":"play-dead.js","sourceRoot":"","sources":["../../../../src/ai-service/state-machine/handlers/play-dead.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AACpD,OAAO,EACL,aAAa,GAId,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,4BAA4B,EAAE,MAAM,sCAAsC,CAAC;AACpF,OAAO,EAAE,yBAAyB,EAAE,MAAM,sCAAsC,CAAC;AAEjF,MAAM,CAAC,MAAM,QAAQ,GACnB,CAAC,KAAY,EAAE,EAAE,gBAAgB,EAAE,QAAQ,EAA2B,EAAE,EAAE,CAC1E,KAAK,EAAE,EAAE,KAAK,EAAmB,EAAiB,EAAE;IAClD,QAAQ,KAAK,CAAC,IAAI,EAAE,CAAC;QACnB,KAAK,aAAa,CAAC,CAAC,CAAC;YACnB,MAAM,EAAE,QAAQ,EAAE,eAAe,EAAE,GAAG,KAAK,CAAC,OAAO,CAAC;YACpD,uEAAuE;YACvE,sEAAsE;YACtE,KAAK,4BAA4B,CAAC;gBAChC,gBAAgB;gBAChB,MAAM,EAAE,yBAAyB,CAAC,KAAK,CAAC,OAAO,CAAC;gBAChD,MAAM,EAAE,SAAS,EAAE;gBACnB,QAAQ;gBACR,yBAAyB,EAAE,QAAQ,CAAC,yBAAyB;gBAC7D,eAAe;aAChB,CAAC,CAAC;YACH,MAAM;QACR,CAAC;QAED;YACE,MAAM,IAAI,KAAK,CAAC,oBAAoB,KAAK,EAAE,CAAC,CAAC;IACjD,CAAC;AACH,CAAC,CAAC"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import type { ChatSessionStore } from "../../chat/chat-session-store.js";
|
|
2
|
+
import { type PromptMetricLabels } from "./prompt-request-metrics.js";
|
|
3
|
+
export declare function _resetPromptBillingMetricsForTesting(): void;
|
|
4
|
+
/**
|
|
5
|
+
* Flush per-prompt billing and context headroom metrics at any terminal
|
|
6
|
+
* outcome — success, cancel, or give-up — so credits-per-prompt is not
|
|
7
|
+
* survivorship-biased toward completed prompts.
|
|
8
|
+
*/
|
|
9
|
+
export declare function finalizePromptBillingMetrics(params: {
|
|
10
|
+
chatSessionStore: ChatSessionStore;
|
|
11
|
+
labels: PromptMetricLabels;
|
|
12
|
+
logger: {
|
|
13
|
+
info: (...args: unknown[]) => void;
|
|
14
|
+
warn: (...args: unknown[]) => void;
|
|
15
|
+
};
|
|
16
|
+
promptId: string | undefined;
|
|
17
|
+
promptUsageAlarmThreshold?: number;
|
|
18
|
+
workflowMetrics?: {
|
|
19
|
+
hadProviderFallback?: boolean;
|
|
20
|
+
llmUsage: Parameters<ChatSessionStore["calculatePromptCost"]>[1];
|
|
21
|
+
llmCallCount: number;
|
|
22
|
+
minHeadroomTokens?: number;
|
|
23
|
+
peakContextUsed?: number;
|
|
24
|
+
};
|
|
25
|
+
}): Promise<void>;
|
|
26
|
+
//# sourceMappingURL=prompt-billing-metrics.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"prompt-billing-metrics.d.ts","sourceRoot":"","sources":["../../../../src/ai-service/state-machine/helpers/prompt-billing-metrics.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,kCAAkC,CAAC;AAEzE,OAAO,EAEL,KAAK,kBAAkB,EACxB,MAAM,6BAA6B,CAAC;AAgFrC,wBAAgB,oCAAoC,IAAI,IAAI,CAG3D;AAED;;;;GAIG;AACH,wBAAsB,4BAA4B,CAAC,MAAM,EAAE;IACzD,gBAAgB,EAAE,gBAAgB,CAAC;IACnC,MAAM,EAAE,kBAAkB,CAAC;IAC3B,MAAM,EAAE;QACN,IAAI,EAAE,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,IAAI,CAAC;QACnC,IAAI,EAAE,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,IAAI,CAAC;KACpC,CAAC;IACF,QAAQ,EAAE,MAAM,GAAG,SAAS,CAAC;IAC7B,yBAAyB,CAAC,EAAE,MAAM,CAAC;IACnC,eAAe,CAAC,EAAE;QAChB,mBAAmB,CAAC,EAAE,OAAO,CAAC;QAC9B,QAAQ,EAAE,UAAU,CAAC,gBAAgB,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACjE,YAAY,EAAE,MAAM,CAAC;QACrB,iBAAiB,CAAC,EAAE,MAAM,CAAC;QAC3B,eAAe,CAAC,EAAE,MAAM,CAAC;KAC1B,CAAC;CACH,GAAG,OAAO,CAAC,IAAI,CAAC,CAiEhB"}
|
|
@@ -0,0 +1,127 @@
|
|
|
1
|
+
import { recordPromptContextHeadroom } from "../../llm/context-v2/context-metrics.js";
|
|
2
|
+
import { recordPromptCredits, } from "./prompt-request-metrics.js";
|
|
3
|
+
/** Cost round-trips currently in flight, keyed by prompt. */
|
|
4
|
+
const inflightCostRpcs = new Map();
|
|
5
|
+
/**
|
|
6
|
+
* Prompts already priced by a successful round-trip, keyed by promptId with
|
|
7
|
+
* the expiry timestamp (ms). Entries only need to outlive concurrent terminal
|
|
8
|
+
* paths for the same prompt; after that they are pruned so the map cannot grow
|
|
9
|
+
* without bound under sustained traffic.
|
|
10
|
+
*/
|
|
11
|
+
const pricedPrompts = new Map();
|
|
12
|
+
/** How long a successful pricing claim is remembered for race dedupe. */
|
|
13
|
+
const PRICED_PROMPT_TTL_MS = 60_000;
|
|
14
|
+
function pruneExpiredPricedPrompts(now) {
|
|
15
|
+
for (const [promptId, expiresAt] of pricedPrompts) {
|
|
16
|
+
if (expiresAt <= now) {
|
|
17
|
+
pricedPrompts.delete(promptId);
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
function isPromptPriced(promptId, now = Date.now()) {
|
|
22
|
+
pruneExpiredPricedPrompts(now);
|
|
23
|
+
return pricedPrompts.has(promptId);
|
|
24
|
+
}
|
|
25
|
+
function markPromptPriced(promptId, now = Date.now()) {
|
|
26
|
+
pruneExpiredPricedPrompts(now);
|
|
27
|
+
pricedPrompts.set(promptId, now + PRICED_PROMPT_TTL_MS);
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Price a prompt exactly once across terminal paths, returning `undefined`
|
|
31
|
+
* when someone else has already accounted for it.
|
|
32
|
+
*
|
|
33
|
+
* Terminal paths both overlap and repeat. Aborting the stream drives the FSM
|
|
34
|
+
* into its own cancel handler while `handleUserCanceled` is still awaiting the
|
|
35
|
+
* cost call, so a concurrent caller joins the in-flight round-trip; a caller
|
|
36
|
+
* arriving after one succeeded is turned away by `pricedPrompts`.
|
|
37
|
+
*
|
|
38
|
+
* A joiner waits on the result rather than returning immediately, because
|
|
39
|
+
* returning loses the prompt outright when the round-trip fails — it would
|
|
40
|
+
* already be gone by the time the failure surfaced, leaving nobody to retry.
|
|
41
|
+
* Cancel is when the call is most likely to fail, so a joiner that sees a
|
|
42
|
+
* rejection retries instead. Only a success marks the prompt priced, which is
|
|
43
|
+
* what lets a later terminal path pick up after a failed attempt.
|
|
44
|
+
*/
|
|
45
|
+
async function calculatePromptCostOnce(chatSessionStore, promptId, llmUsage) {
|
|
46
|
+
if (isPromptPriced(promptId)) {
|
|
47
|
+
return undefined;
|
|
48
|
+
}
|
|
49
|
+
const inflight = inflightCostRpcs.get(promptId);
|
|
50
|
+
if (inflight) {
|
|
51
|
+
try {
|
|
52
|
+
await inflight;
|
|
53
|
+
return undefined;
|
|
54
|
+
}
|
|
55
|
+
catch {
|
|
56
|
+
// Fall through and retry; the owner has already dropped the slot.
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
const attempt = chatSessionStore.calculatePromptCost(promptId, llmUsage);
|
|
60
|
+
inflightCostRpcs.set(promptId, attempt);
|
|
61
|
+
try {
|
|
62
|
+
const credits = await attempt;
|
|
63
|
+
markPromptPriced(promptId);
|
|
64
|
+
return credits;
|
|
65
|
+
}
|
|
66
|
+
finally {
|
|
67
|
+
inflightCostRpcs.delete(promptId);
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
export function _resetPromptBillingMetricsForTesting() {
|
|
71
|
+
inflightCostRpcs.clear();
|
|
72
|
+
pricedPrompts.clear();
|
|
73
|
+
}
|
|
74
|
+
/**
|
|
75
|
+
* Flush per-prompt billing and context headroom metrics at any terminal
|
|
76
|
+
* outcome — success, cancel, or give-up — so credits-per-prompt is not
|
|
77
|
+
* survivorship-biased toward completed prompts.
|
|
78
|
+
*/
|
|
79
|
+
export async function finalizePromptBillingMetrics(params) {
|
|
80
|
+
const { promptId, workflowMetrics } = params;
|
|
81
|
+
if (!promptId || !workflowMetrics) {
|
|
82
|
+
return;
|
|
83
|
+
}
|
|
84
|
+
// Local measurement off workflowMetrics, so it stays above the RPC: a
|
|
85
|
+
// transient socket failure must not punch holes in the context signal.
|
|
86
|
+
recordPromptContextHeadroom({
|
|
87
|
+
dedupeKey: promptId,
|
|
88
|
+
minHeadroomTokens: workflowMetrics.minHeadroomTokens,
|
|
89
|
+
peakContextUsed: workflowMetrics.peakContextUsed,
|
|
90
|
+
});
|
|
91
|
+
let totalCreditsUsed;
|
|
92
|
+
try {
|
|
93
|
+
totalCreditsUsed = await calculatePromptCostOnce(params.chatSessionStore, promptId, workflowMetrics.llmUsage);
|
|
94
|
+
}
|
|
95
|
+
catch (error) {
|
|
96
|
+
params.logger.warn("[billing:prompt-cost] Failed to calculate prompt credits", {
|
|
97
|
+
promptId,
|
|
98
|
+
error: error instanceof Error ? error.message : String(error),
|
|
99
|
+
});
|
|
100
|
+
return;
|
|
101
|
+
}
|
|
102
|
+
if (totalCreditsUsed === undefined) {
|
|
103
|
+
return;
|
|
104
|
+
}
|
|
105
|
+
recordPromptCredits({
|
|
106
|
+
...params.labels,
|
|
107
|
+
credits: totalCreditsUsed,
|
|
108
|
+
dedupeKey: promptId,
|
|
109
|
+
});
|
|
110
|
+
const threshold = params.promptUsageAlarmThreshold;
|
|
111
|
+
if (threshold === undefined) {
|
|
112
|
+
return;
|
|
113
|
+
}
|
|
114
|
+
const costSummary = {
|
|
115
|
+
llmCallCount: workflowMetrics.llmCallCount,
|
|
116
|
+
promptId,
|
|
117
|
+
threshold,
|
|
118
|
+
totalCreditsUsed,
|
|
119
|
+
};
|
|
120
|
+
if (totalCreditsUsed > threshold) {
|
|
121
|
+
params.logger.warn(`[billing:prompt-cost] Prompt credit usage ${totalCreditsUsed} exceeds threshold of ${threshold}`, costSummary);
|
|
122
|
+
}
|
|
123
|
+
else {
|
|
124
|
+
params.logger.info(`[billing:prompt-cost] Prompt cost summary: ${totalCreditsUsed} credits across ${workflowMetrics.llmCallCount} LLM calls`, costSummary);
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
//# sourceMappingURL=prompt-billing-metrics.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"prompt-billing-metrics.js","sourceRoot":"","sources":["../../../../src/ai-service/state-machine/helpers/prompt-billing-metrics.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,2BAA2B,EAAE,MAAM,yCAAyC,CAAC;AACtF,OAAO,EACL,mBAAmB,GAEpB,MAAM,6BAA6B,CAAC;AAErC,6DAA6D;AAC7D,MAAM,gBAAgB,GAAG,IAAI,GAAG,EAA2B,CAAC;AAE5D;;;;;GAKG;AACH,MAAM,aAAa,GAAG,IAAI,GAAG,EAAkB,CAAC;AAEhD,yEAAyE;AACzE,MAAM,oBAAoB,GAAG,MAAM,CAAC;AAEpC,SAAS,yBAAyB,CAAC,GAAW;IAC5C,KAAK,MAAM,CAAC,QAAQ,EAAE,SAAS,CAAC,IAAI,aAAa,EAAE,CAAC;QAClD,IAAI,SAAS,IAAI,GAAG,EAAE,CAAC;YACrB,aAAa,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;QACjC,CAAC;IACH,CAAC;AACH,CAAC;AAED,SAAS,cAAc,CAAC,QAAgB,EAAE,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE;IACxD,yBAAyB,CAAC,GAAG,CAAC,CAAC;IAC/B,OAAO,aAAa,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;AACrC,CAAC;AAED,SAAS,gBAAgB,CAAC,QAAgB,EAAE,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE;IAC1D,yBAAyB,CAAC,GAAG,CAAC,CAAC;IAC/B,aAAa,CAAC,GAAG,CAAC,QAAQ,EAAE,GAAG,GAAG,oBAAoB,CAAC,CAAC;AAC1D,CAAC;AAED;;;;;;;;;;;;;;;GAeG;AACH,KAAK,UAAU,uBAAuB,CACpC,gBAAkC,EAClC,QAAgB,EAChB,QAAgE;IAEhE,IAAI,cAAc,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC7B,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,MAAM,QAAQ,GAAG,gBAAgB,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IAChD,IAAI,QAAQ,EAAE,CAAC;QACb,IAAI,CAAC;YACH,MAAM,QAAQ,CAAC;YACf,OAAO,SAAS,CAAC;QACnB,CAAC;QAAC,MAAM,CAAC;YACP,kEAAkE;QACpE,CAAC;IACH,CAAC;IAED,MAAM,OAAO,GAAG,gBAAgB,CAAC,mBAAmB,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;IACzE,gBAAgB,CAAC,GAAG,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;IACxC,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC;QAC9B,gBAAgB,CAAC,QAAQ,CAAC,CAAC;QAC3B,OAAO,OAAO,CAAC;IACjB,CAAC;YAAS,CAAC;QACT,gBAAgB,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;IACpC,CAAC;AACH,CAAC;AAED,MAAM,UAAU,oCAAoC;IAClD,gBAAgB,CAAC,KAAK,EAAE,CAAC;IACzB,aAAa,CAAC,KAAK,EAAE,CAAC;AACxB,CAAC;AAED;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,4BAA4B,CAAC,MAgBlD;IACC,MAAM,EAAE,QAAQ,EAAE,eAAe,EAAE,GAAG,MAAM,CAAC;IAC7C,IAAI,CAAC,QAAQ,IAAI,CAAC,eAAe,EAAE,CAAC;QAClC,OAAO;IACT,CAAC;IAED,sEAAsE;IACtE,uEAAuE;IACvE,2BAA2B,CAAC;QAC1B,SAAS,EAAE,QAAQ;QACnB,iBAAiB,EAAE,eAAe,CAAC,iBAAiB;QACpD,eAAe,EAAE,eAAe,CAAC,eAAe;KACjD,CAAC,CAAC;IAEH,IAAI,gBAAoC,CAAC;IACzC,IAAI,CAAC;QACH,gBAAgB,GAAG,MAAM,uBAAuB,CAC9C,MAAM,CAAC,gBAAgB,EACvB,QAAQ,EACR,eAAe,CAAC,QAAQ,CACzB,CAAC;IACJ,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,CAAC,MAAM,CAAC,IAAI,CAChB,0DAA0D,EAC1D;YACE,QAAQ;YACR,KAAK,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;SAC9D,CACF,CAAC;QACF,OAAO;IACT,CAAC;IAED,IAAI,gBAAgB,KAAK,SAAS,EAAE,CAAC;QACnC,OAAO;IACT,CAAC;IAED,mBAAmB,CAAC;QAClB,GAAG,MAAM,CAAC,MAAM;QAChB,OAAO,EAAE,gBAAgB;QACzB,SAAS,EAAE,QAAQ;KACpB,CAAC,CAAC;IAEH,MAAM,SAAS,GAAG,MAAM,CAAC,yBAAyB,CAAC;IACnD,IAAI,SAAS,KAAK,SAAS,EAAE,CAAC;QAC5B,OAAO;IACT,CAAC;IAED,MAAM,WAAW,GAAG;QAClB,YAAY,EAAE,eAAe,CAAC,YAAY;QAC1C,QAAQ;QACR,SAAS;QACT,gBAAgB;KACjB,CAAC;IAEF,IAAI,gBAAgB,GAAG,SAAS,EAAE,CAAC;QACjC,MAAM,CAAC,MAAM,CAAC,IAAI,CAChB,6CAA6C,gBAAgB,yBAAyB,SAAS,EAAE,EACjG,WAAW,CACZ,CAAC;IACJ,CAAC;SAAM,CAAC;QACN,MAAM,CAAC,MAAM,CAAC,IAAI,CAChB,8CAA8C,gBAAgB,mBAAmB,eAAe,CAAC,YAAY,YAAY,EACzH,WAAW,CACZ,CAAC;IACJ,CAAC;AACH,CAAC"}
|
|
@@ -8,22 +8,52 @@ export declare const AWAITING_USER_DISMISS_REASONS: readonly ["cancel", "new_pro
|
|
|
8
8
|
export type AwaitingUserDismissReason = (typeof AWAITING_USER_DISMISS_REASONS)[number];
|
|
9
9
|
export declare const AWAITING_USER_DISMISS_REASON_TAG = "dismiss_reason";
|
|
10
10
|
export declare const PROMPT_APPLICATION_ID_TAG = "application_id";
|
|
11
|
+
export declare const PROMPT_CORE_MODEL_TAG = "core_model";
|
|
12
|
+
export declare const PROMPT_HAD_FALLBACK_TAG = "had_fallback";
|
|
11
13
|
export declare const PROMPT_ORGANIZATION_ID_TAG = "organization_id";
|
|
14
|
+
export declare const METRIC_CREDITS = "superblocks.clark.prompt.credits";
|
|
15
|
+
/**
|
|
16
|
+
* Credit-scale bucket boundaries for credits-per-prompt. Centered on the
|
|
17
|
+
* default prompt-usage alarm threshold (10) so p95/avg dashboards resolve
|
|
18
|
+
* near the golden-metric alert edge.
|
|
19
|
+
*/
|
|
20
|
+
export declare const PROMPT_CREDITS_BUCKETS: readonly [0.5, 1, 2, 5, 7.5, 10, 15, 25, 50, 100, 250];
|
|
21
|
+
export interface PromptMetricLabels {
|
|
22
|
+
coreModel?: string;
|
|
23
|
+
hadFallback?: boolean;
|
|
24
|
+
}
|
|
25
|
+
export declare function resolvePromptMetricLabels(context: {
|
|
26
|
+
llmConfig?: {
|
|
27
|
+
coreModel?: string;
|
|
28
|
+
};
|
|
29
|
+
workflowMetrics?: {
|
|
30
|
+
hadProviderFallback?: boolean;
|
|
31
|
+
};
|
|
32
|
+
}): PromptMetricLabels;
|
|
12
33
|
export interface PromptRequestMetricIdentity {
|
|
13
34
|
applicationId?: string;
|
|
14
35
|
organizationId?: string;
|
|
15
36
|
}
|
|
16
37
|
export declare function setPromptRequestMetricIdentity(identity: PromptRequestMetricIdentity): void;
|
|
17
|
-
export declare function recordPromptAttempt(
|
|
38
|
+
export declare function recordPromptAttempt(params?: {
|
|
39
|
+
coreModel?: string;
|
|
40
|
+
outcomeDedupeKey?: string;
|
|
41
|
+
}): void;
|
|
18
42
|
export declare function resolvePromptOutcomeDedupeKey(context: {
|
|
19
43
|
promptId?: string;
|
|
20
44
|
promptOutcomeDedupeKey?: string;
|
|
21
45
|
}): string | undefined;
|
|
22
46
|
export declare function recordPromptOutcome(params: {
|
|
47
|
+
coreModel?: string;
|
|
23
48
|
dedupeKey: string | undefined;
|
|
24
|
-
outcome: PromptOutcome;
|
|
25
49
|
failure?: PromptFailure;
|
|
50
|
+
hadFallback?: boolean;
|
|
51
|
+
outcome: PromptOutcome;
|
|
26
52
|
}): void;
|
|
53
|
+
export declare function recordPromptCredits(params: {
|
|
54
|
+
credits: number;
|
|
55
|
+
dedupeKey: string | undefined;
|
|
56
|
+
} & PromptMetricLabels): void;
|
|
27
57
|
export declare function resolvePromptRequestDedupeKey(request: {
|
|
28
58
|
requestId?: string;
|
|
29
59
|
prompt: string;
|
|
@@ -64,12 +94,15 @@ export declare function recordAwaitingUserHandoffDismissed(params: {
|
|
|
64
94
|
reason: AwaitingUserDismissReason;
|
|
65
95
|
}): void;
|
|
66
96
|
export declare function recordAwaitingUserPromptOutcome(params: {
|
|
67
|
-
dedupeKey: string | undefined;
|
|
68
97
|
advice?: string;
|
|
98
|
+
coreModel?: string;
|
|
69
99
|
countsAsPromptSuccess?: boolean;
|
|
100
|
+
dedupeKey: string | undefined;
|
|
101
|
+
hadFallback?: boolean;
|
|
70
102
|
}): boolean;
|
|
71
103
|
/** Record attempt + immediate failure for pre-FSM entry rejections (no promptId yet). */
|
|
72
104
|
export declare function recordPromptEntryRejection(params: {
|
|
105
|
+
coreModel?: string;
|
|
73
106
|
dedupeKey: string | undefined;
|
|
74
107
|
failure: PromptFailure;
|
|
75
108
|
}): void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"prompt-request-metrics.d.ts","sourceRoot":"","sources":["../../../../src/ai-service/state-machine/helpers/prompt-request-metrics.ts"],"names":[],"mappings":"
|
|
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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"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { metrics } from "@opentelemetry/api";
|
|
2
|
+
import { coreModelLabel } from "@superblocksteam/library-shared/types";
|
|
2
3
|
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
4
|
import { promptFailureAttributes, promptFailurePlatform, promptFailureUserCanceled, promptOutcomeTagsFromFailure, PROMPT_OUTCOME_TAG, } from "./prompt-failure.js";
|
|
4
5
|
export const PROMPT_OUTCOMES = ["failure", "success"];
|
|
@@ -11,13 +12,47 @@ export const METRIC_AWAITING_USER_DISMISSED = "superblocks.clark.prompt.awaiting
|
|
|
11
12
|
export const AWAITING_USER_DISMISS_REASONS = ["cancel", "new_prompt"];
|
|
12
13
|
export const AWAITING_USER_DISMISS_REASON_TAG = "dismiss_reason";
|
|
13
14
|
export const PROMPT_APPLICATION_ID_TAG = "application_id";
|
|
15
|
+
export const PROMPT_CORE_MODEL_TAG = "core_model";
|
|
16
|
+
export const PROMPT_HAD_FALLBACK_TAG = "had_fallback";
|
|
14
17
|
export const PROMPT_ORGANIZATION_ID_TAG = "organization_id";
|
|
18
|
+
export const METRIC_CREDITS = "superblocks.clark.prompt.credits";
|
|
19
|
+
/**
|
|
20
|
+
* Credit-scale bucket boundaries for credits-per-prompt. Centered on the
|
|
21
|
+
* default prompt-usage alarm threshold (10) so p95/avg dashboards resolve
|
|
22
|
+
* near the golden-metric alert edge.
|
|
23
|
+
*/
|
|
24
|
+
export const PROMPT_CREDITS_BUCKETS = [
|
|
25
|
+
0.5, 1, 2, 5, 7.5, 10, 15, 25, 50, 100, 250,
|
|
26
|
+
];
|
|
27
|
+
export function resolvePromptMetricLabels(context) {
|
|
28
|
+
return {
|
|
29
|
+
coreModel: context.llmConfig?.coreModel,
|
|
30
|
+
hadFallback: context.workflowMetrics?.hadProviderFallback ?? false,
|
|
31
|
+
};
|
|
32
|
+
}
|
|
33
|
+
function promptCoreModelAttributes(labels) {
|
|
34
|
+
const attributes = {};
|
|
35
|
+
// Absent stays absent: a prompt that reported no model and one that reported
|
|
36
|
+
// a model we don't recognize are different facts, and only the latter needs
|
|
37
|
+
// bounding.
|
|
38
|
+
if (labels.coreModel) {
|
|
39
|
+
attributes[PROMPT_CORE_MODEL_TAG] = coreModelLabel(labels.coreModel);
|
|
40
|
+
}
|
|
41
|
+
return attributes;
|
|
42
|
+
}
|
|
43
|
+
function promptOutcomeModelAttributes(labels) {
|
|
44
|
+
return {
|
|
45
|
+
...promptCoreModelAttributes(labels),
|
|
46
|
+
[PROMPT_HAD_FALLBACK_TAG]: labels.hadFallback ? "true" : "false",
|
|
47
|
+
};
|
|
48
|
+
}
|
|
15
49
|
class PromptRequestMetrics {
|
|
16
50
|
cachedMeter;
|
|
17
51
|
cachedInstruments;
|
|
18
52
|
applicationId;
|
|
19
53
|
organizationId;
|
|
20
54
|
recordedAwaitingUserDismissedKeys = new Set();
|
|
55
|
+
recordedCreditsKeys = new Set();
|
|
21
56
|
recordedOutcomeKeys = new Set();
|
|
22
57
|
setIdentity(identity) {
|
|
23
58
|
this.applicationId = identity.applicationId;
|
|
@@ -33,6 +68,24 @@ class PromptRequestMetrics {
|
|
|
33
68
|
}
|
|
34
69
|
return attributes;
|
|
35
70
|
}
|
|
71
|
+
/**
|
|
72
|
+
* Org + core_model + had_fallback for the credits histogram. Credits is
|
|
73
|
+
* cardinality-sensitive, so application_id stays off it; core_model and
|
|
74
|
+
* had_fallback are bounded (a fixed model set and a boolean) and are what
|
|
75
|
+
* separate per-model cost from fallback-contaminated traffic.
|
|
76
|
+
*/
|
|
77
|
+
creditsAttributes(labels) {
|
|
78
|
+
const attributes = this.creditsAttributesBase();
|
|
79
|
+
Object.assign(attributes, promptOutcomeModelAttributes(labels));
|
|
80
|
+
return attributes;
|
|
81
|
+
}
|
|
82
|
+
creditsAttributesBase() {
|
|
83
|
+
const attributes = {};
|
|
84
|
+
if (this.organizationId) {
|
|
85
|
+
attributes[PROMPT_ORGANIZATION_ID_TAG] = this.organizationId;
|
|
86
|
+
}
|
|
87
|
+
return attributes;
|
|
88
|
+
}
|
|
36
89
|
getInstruments() {
|
|
37
90
|
const meter = metrics.getMeter(METER_NAME);
|
|
38
91
|
if (meter === this.cachedMeter && this.cachedInstruments) {
|
|
@@ -44,19 +97,29 @@ class PromptRequestMetrics {
|
|
|
44
97
|
description: "User prompt requests accepted by the Clark agent loop entrypoint.",
|
|
45
98
|
unit: "1",
|
|
46
99
|
}),
|
|
47
|
-
outcomeCounter: meter.createCounter(METRIC_OUTCOMES, {
|
|
48
|
-
description: "Terminal outcomes for user prompt requests in the Clark agent loop.",
|
|
49
|
-
unit: "1",
|
|
50
|
-
}),
|
|
51
100
|
awaitingUserDismissedCounter: meter.createCounter(METRIC_AWAITING_USER_DISMISSED, {
|
|
52
101
|
description: "User canceled or dismissed Clark while awaiting input after a successful handoff.",
|
|
53
102
|
unit: "1",
|
|
54
103
|
}),
|
|
104
|
+
creditsHistogram: meter.createHistogram(METRIC_CREDITS, {
|
|
105
|
+
description: "AI credits consumed by a Clark user prompt at any terminal outcome (golden cost metric). Labeled by organization_id, core_model, and had_fallback.",
|
|
106
|
+
unit: "{credit}",
|
|
107
|
+
advice: {
|
|
108
|
+
explicitBucketBoundaries: [...PROMPT_CREDITS_BUCKETS],
|
|
109
|
+
},
|
|
110
|
+
}),
|
|
111
|
+
outcomeCounter: meter.createCounter(METRIC_OUTCOMES, {
|
|
112
|
+
description: "Terminal outcomes for user prompt requests in the Clark agent loop.",
|
|
113
|
+
unit: "1",
|
|
114
|
+
}),
|
|
55
115
|
};
|
|
56
116
|
return this.cachedInstruments;
|
|
57
117
|
}
|
|
58
|
-
recordAttempt() {
|
|
59
|
-
this.getInstruments().attemptCounter.add(1,
|
|
118
|
+
recordAttempt(labels = {}) {
|
|
119
|
+
this.getInstruments().attemptCounter.add(1, {
|
|
120
|
+
...this.baseAttributes(),
|
|
121
|
+
...promptCoreModelAttributes(labels),
|
|
122
|
+
});
|
|
60
123
|
}
|
|
61
124
|
/** Allow a new terminal outcome when the same request is retried. */
|
|
62
125
|
forgetOutcomeDedupeKey(dedupeKey) {
|
|
@@ -72,6 +135,19 @@ class PromptRequestMetrics {
|
|
|
72
135
|
[AWAITING_USER_DISMISS_REASON_TAG]: params.reason,
|
|
73
136
|
});
|
|
74
137
|
}
|
|
138
|
+
/**
|
|
139
|
+
* Record credits for one prompt at its terminal outcome, whether it
|
|
140
|
+
* completed, was canceled, or gave up. Dedupe key is `promptId` (a fresh
|
|
141
|
+
* UUID per generate), so retries do not need a clear path — unlike
|
|
142
|
+
* outcomes, which reuse requestId-based keys across attempts.
|
|
143
|
+
*/
|
|
144
|
+
recordCredits(params) {
|
|
145
|
+
if (this.recordedCreditsKeys.has(params.dedupeKey)) {
|
|
146
|
+
return;
|
|
147
|
+
}
|
|
148
|
+
this.recordedCreditsKeys.add(params.dedupeKey);
|
|
149
|
+
this.getInstruments().creditsHistogram.record(params.credits, this.creditsAttributes(params.labels));
|
|
150
|
+
}
|
|
75
151
|
recordOutcome(params) {
|
|
76
152
|
if (this.recordedOutcomeKeys.has(params.dedupeKey)) {
|
|
77
153
|
return;
|
|
@@ -79,6 +155,7 @@ class PromptRequestMetrics {
|
|
|
79
155
|
this.recordedOutcomeKeys.add(params.dedupeKey);
|
|
80
156
|
const attributes = {
|
|
81
157
|
...this.baseAttributes(),
|
|
158
|
+
...promptOutcomeModelAttributes(params.labels ?? {}),
|
|
82
159
|
outcome: params.outcome,
|
|
83
160
|
};
|
|
84
161
|
if (params.outcome === "failure" && params.failure) {
|
|
@@ -92,9 +169,15 @@ class PromptRequestMetrics {
|
|
|
92
169
|
return;
|
|
93
170
|
}
|
|
94
171
|
this.recordedOutcomeKeys.add(params.dedupeKey);
|
|
95
|
-
|
|
172
|
+
const coreModelAttributes = promptCoreModelAttributes(params.labels ?? {});
|
|
173
|
+
const outcomeModelAttributes = promptOutcomeModelAttributes(params.labels ?? {});
|
|
174
|
+
this.getInstruments().attemptCounter.add(1, {
|
|
175
|
+
...this.baseAttributes(),
|
|
176
|
+
...coreModelAttributes,
|
|
177
|
+
});
|
|
96
178
|
this.getInstruments().outcomeCounter.add(1, {
|
|
97
179
|
...this.baseAttributes(),
|
|
180
|
+
...outcomeModelAttributes,
|
|
98
181
|
outcome: "failure",
|
|
99
182
|
...promptFailureAttributes(params.failure),
|
|
100
183
|
});
|
|
@@ -105,6 +188,7 @@ class PromptRequestMetrics {
|
|
|
105
188
|
this.applicationId = undefined;
|
|
106
189
|
this.organizationId = undefined;
|
|
107
190
|
this.recordedAwaitingUserDismissedKeys.clear();
|
|
191
|
+
this.recordedCreditsKeys.clear();
|
|
108
192
|
this.recordedOutcomeKeys.clear();
|
|
109
193
|
}
|
|
110
194
|
}
|
|
@@ -112,11 +196,11 @@ export function setPromptRequestMetricIdentity(identity) {
|
|
|
112
196
|
promptRequestMetrics.setIdentity(identity);
|
|
113
197
|
}
|
|
114
198
|
const promptRequestMetrics = new PromptRequestMetrics();
|
|
115
|
-
export function recordPromptAttempt(
|
|
116
|
-
if (outcomeDedupeKey) {
|
|
117
|
-
promptRequestMetrics.forgetOutcomeDedupeKey(outcomeDedupeKey);
|
|
199
|
+
export function recordPromptAttempt(params) {
|
|
200
|
+
if (params?.outcomeDedupeKey) {
|
|
201
|
+
promptRequestMetrics.forgetOutcomeDedupeKey(params.outcomeDedupeKey);
|
|
118
202
|
}
|
|
119
|
-
promptRequestMetrics.recordAttempt();
|
|
203
|
+
promptRequestMetrics.recordAttempt({ coreModel: params?.coreModel });
|
|
120
204
|
}
|
|
121
205
|
export function resolvePromptOutcomeDedupeKey(context) {
|
|
122
206
|
return context.promptOutcomeDedupeKey ?? context.promptId;
|
|
@@ -129,6 +213,23 @@ export function recordPromptOutcome(params) {
|
|
|
129
213
|
dedupeKey: params.dedupeKey,
|
|
130
214
|
outcome: params.outcome,
|
|
131
215
|
failure: params.failure,
|
|
216
|
+
labels: {
|
|
217
|
+
coreModel: params.coreModel,
|
|
218
|
+
hadFallback: params.hadFallback ?? false,
|
|
219
|
+
},
|
|
220
|
+
});
|
|
221
|
+
}
|
|
222
|
+
export function recordPromptCredits(params) {
|
|
223
|
+
if (!params.dedupeKey) {
|
|
224
|
+
return;
|
|
225
|
+
}
|
|
226
|
+
promptRequestMetrics.recordCredits({
|
|
227
|
+
dedupeKey: params.dedupeKey,
|
|
228
|
+
credits: params.credits,
|
|
229
|
+
labels: {
|
|
230
|
+
coreModel: params.coreModel,
|
|
231
|
+
hadFallback: params.hadFallback ?? false,
|
|
232
|
+
},
|
|
132
233
|
});
|
|
133
234
|
}
|
|
134
235
|
export function resolvePromptRequestDedupeKey(request) {
|
|
@@ -197,10 +298,15 @@ export function recordAwaitingUserPromptOutcome(params) {
|
|
|
197
298
|
if (!params.dedupeKey) {
|
|
198
299
|
return false;
|
|
199
300
|
}
|
|
301
|
+
const outcomeLabels = {
|
|
302
|
+
coreModel: params.coreModel,
|
|
303
|
+
hadFallback: params.hadFallback ?? false,
|
|
304
|
+
};
|
|
200
305
|
if (params.countsAsPromptSuccess) {
|
|
201
306
|
recordPromptOutcome({
|
|
202
307
|
dedupeKey: params.dedupeKey,
|
|
203
308
|
outcome: "success",
|
|
309
|
+
...outcomeLabels,
|
|
204
310
|
});
|
|
205
311
|
return true;
|
|
206
312
|
}
|
|
@@ -209,6 +315,7 @@ export function recordAwaitingUserPromptOutcome(params) {
|
|
|
209
315
|
dedupeKey: params.dedupeKey,
|
|
210
316
|
outcome: "failure",
|
|
211
317
|
failure: promptFailurePlatform("unexpected"),
|
|
318
|
+
...outcomeLabels,
|
|
212
319
|
});
|
|
213
320
|
}
|
|
214
321
|
return false;
|
|
@@ -221,6 +328,7 @@ export function recordPromptEntryRejection(params) {
|
|
|
221
328
|
promptRequestMetrics.recordEntryRejection({
|
|
222
329
|
dedupeKey: params.dedupeKey,
|
|
223
330
|
failure: params.failure,
|
|
331
|
+
labels: { coreModel: params.coreModel },
|
|
224
332
|
});
|
|
225
333
|
}
|
|
226
334
|
export function _resetPromptRequestMetricsForTesting() {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"prompt-request-metrics.js","sourceRoot":"","sources":["../../../../src/ai-service/state-machine/helpers/prompt-request-metrics.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAc,MAAM,oBAAoB,CAAC;AAEzD,OAAO,EACL,cAAc,EACd,sBAAsB,EACtB,iCAAiC,EACjC,uBAAuB,EACvB,aAAa,EACb,iBAAiB,GAClB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EACL,uBAAuB,EACvB,qBAAqB,EACrB,yBAAyB,EACzB,4BAA4B,EAC5B,kBAAkB,GAEnB,MAAM,qBAAqB,CAAC;AAE7B,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,SAAS,EAAE,SAAS,CAAU,CAAC;AAG/D,OAAO,EACL,kBAAkB,EAClB,4BAA4B,GAE7B,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,EAKzB,2BAA2B,GAC5B,MAAM,qBAAqB,CAAC;AAE7B,MAAM,UAAU,GAAG,0BAA0B,CAAC;AAC9C,MAAM,eAAe,GAAG,yCAAyC,CAAC;AAClE,MAAM,eAAe,GAAG,yCAAyC,CAAC;AAClE,MAAM,CAAC,MAAM,8BAA8B,GACzC,wDAAwD,CAAC;AAC3D,MAAM,CAAC,MAAM,6BAA6B,GAAG,CAAC,QAAQ,EAAE,YAAY,CAAU,CAAC;AAG/E,MAAM,CAAC,MAAM,gCAAgC,GAAG,gBAAgB,CAAC;AACjE,MAAM,CAAC,MAAM,yBAAyB,GAAG,gBAAgB,CAAC;AAC1D,MAAM,CAAC,MAAM,0BAA0B,GAAG,iBAAiB,CAAC;
|
|
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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"}
|
|
@@ -40,6 +40,8 @@ export interface StartToolOutput {
|
|
|
40
40
|
/** Fuller classified failure detail for Clark (optional). */
|
|
41
41
|
detail?: string;
|
|
42
42
|
label?: string;
|
|
43
|
+
/** When ensure fans out, how many editor datatags were provisioned. */
|
|
44
|
+
tagCount?: number;
|
|
43
45
|
}
|
|
44
46
|
/**
|
|
45
47
|
* Subset of `TaskType` the factory actually reads. Module-scoped task
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"factory.d.ts","sourceRoot":"","sources":["../../../src/ai-service/tasks/factory.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,CAAC,MAAM,KAAK,CAAC;AAEzB,OAAO,EAEL,eAAe,EACf,KAAK,IAAI,EACT,KAAK,YAAY,EACjB,KAAK,WAAW,EACjB,MAAM,0BAA0B,CAAC;AAClC,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AACjD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAE3C;;;;;;;;;;;GAWG;AACH,MAAM,WAAW,sBAAsB;IACrC,QAAQ,EAAE;QACR,SAAS,EAAE,SAAS,CAAC;QACrB,iBAAiB,CAAC,EAAE,MAAM,MAAM,GAAG,SAAS,CAAC;KAC9C,CAAC;CACH;AAED;;;;;;;;;;;GAWG;AACH,MAAM,WAAW,eAAe;IAC9B,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,SAAS,GAAG,WAAW,GAAG,QAAQ,GAAG,WAAW,CAAC;IACxD,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,6DAA6D;IAC7D,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"factory.d.ts","sourceRoot":"","sources":["../../../src/ai-service/tasks/factory.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,CAAC,MAAM,KAAK,CAAC;AAEzB,OAAO,EAEL,eAAe,EACf,KAAK,IAAI,EACT,KAAK,YAAY,EACjB,KAAK,WAAW,EACjB,MAAM,0BAA0B,CAAC;AAClC,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AACjD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAE3C;;;;;;;;;;;GAWG;AACH,MAAM,WAAW,sBAAsB;IACrC,QAAQ,EAAE;QACR,SAAS,EAAE,SAAS,CAAC;QACrB,iBAAiB,CAAC,EAAE,MAAM,MAAM,GAAG,SAAS,CAAC;KAC9C,CAAC;CACH;AAED;;;;;;;;;;;GAWG;AACH,MAAM,WAAW,eAAe;IAC9B,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,SAAS,GAAG,WAAW,GAAG,QAAQ,GAAG,WAAW,CAAC;IACxD,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,6DAA6D;IAC7D,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,uEAAuE;IACvE,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED;;;;;;;;;GASG;AACH,UAAU,6BAA6B,CACrC,KAAK,EACL,MAAM,SAAS,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC;IAE/B;;;;;;;;;;OAUG;IACH,kCAAkC,CAAC,EAAE,OAAO,CAAC;IAC7C,QAAQ,EAAE,YAAY,CAAC;IACvB,iBAAiB,CAAC,EAAE,eAAe,CAAC;IACpC,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,MAAM,CAAC;CACd;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,2BAA2B,CACzC,KAAK,EACL,MAAM,SAAS,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,EAE/B,QAAQ,EAAE,6BAA6B,CAAC,KAAK,EAAE,MAAM,CAAC,GACrD,WAAW,CAAC,sBAAsB,EAAE,IAAI,CAAC,KAAK,EAAE,eAAe,CAAC,CAAC,CAqDnE;AAED;;;;;;;GAOG;AACH,wBAAgB,2BAA2B,CACzC,KAAK,EAAE,SAAS,EAChB,KAAK,EAAE,aAAa,CAAC,QAAQ,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,GAC5C,IAAI,CAIN"}
|
|
@@ -39,6 +39,13 @@ export function defineBackgroundTaskFactory(metadata) {
|
|
|
39
39
|
result.error = error;
|
|
40
40
|
if (detail !== undefined)
|
|
41
41
|
result.detail = detail;
|
|
42
|
+
// Surface fan-out tag count from the provision task handle so the
|
|
43
|
+
// chat kickoff title can say "N tags".
|
|
44
|
+
const externalHandle = services.taskStore.get(handle.taskId)?.externalHandle;
|
|
45
|
+
if (typeof externalHandle?.tagCount === "number" &&
|
|
46
|
+
externalHandle.tagCount > 1) {
|
|
47
|
+
result.tagCount = externalHandle.tagCount;
|
|
48
|
+
}
|
|
42
49
|
return result;
|
|
43
50
|
},
|
|
44
51
|
}));
|