@superblocksteam/vite-plugin-file-sync 2.0.153 → 2.0.154-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/build-base-system-prompt.d.ts +13 -2
- 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 +31 -2
- package/dist/ai-service/agent/prompts/build-base-system-prompt.js.map +1 -1
- package/dist/ai-service/agent/tools/apis/analysis.d.ts.map +1 -1
- package/dist/ai-service/agent/tools/apis/analysis.js +92 -4
- package/dist/ai-service/agent/tools/apis/analysis.js.map +1 -1
- package/dist/ai-service/agent/tools/apis/get-sdk-api-docs.d.ts +6 -0
- package/dist/ai-service/agent/tools/apis/get-sdk-api-docs.d.ts.map +1 -1
- package/dist/ai-service/agent/tools/apis/get-sdk-api-docs.js +22 -4
- package/dist/ai-service/agent/tools/apis/get-sdk-api-docs.js.map +1 -1
- package/dist/ai-service/agent/tools/build-debug.d.ts +13 -3
- package/dist/ai-service/agent/tools/build-debug.d.ts.map +1 -1
- package/dist/ai-service/agent/tools/build-debug.js +30 -1
- package/dist/ai-service/agent/tools/build-debug.js.map +1 -1
- package/dist/ai-service/agent/tools/debug-cache.d.ts +13 -0
- package/dist/ai-service/agent/tools/debug-cache.d.ts.map +1 -1
- package/dist/ai-service/agent/tools/debug-cache.js +42 -0
- package/dist/ai-service/agent/tools/debug-cache.js.map +1 -1
- package/dist/ai-service/agent/tools2/tools/spawn-coding-subagents.d.ts +2 -0
- package/dist/ai-service/agent/tools2/tools/spawn-coding-subagents.d.ts.map +1 -1
- package/dist/ai-service/agent/tools2/tools/spawn-coding-subagents.js +22 -3
- package/dist/ai-service/agent/tools2/tools/spawn-coding-subagents.js.map +1 -1
- package/dist/ai-service/app-interface/npm-package-lookup.d.ts +3 -2
- package/dist/ai-service/app-interface/npm-package-lookup.d.ts.map +1 -1
- package/dist/ai-service/app-interface/npm-package-lookup.js +18 -7
- package/dist/ai-service/app-interface/npm-package-lookup.js.map +1 -1
- package/dist/ai-service/app-interface/npm-registry.d.ts +20 -0
- package/dist/ai-service/app-interface/npm-registry.d.ts.map +1 -1
- package/dist/ai-service/app-interface/npm-registry.js +181 -3
- package/dist/ai-service/app-interface/npm-registry.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 +7 -0
- package/dist/ai-service/features.js.map +1 -1
- package/dist/ai-service/index.d.ts +4 -2
- package/dist/ai-service/index.d.ts.map +1 -1
- package/dist/ai-service/index.js +62 -4
- package/dist/ai-service/index.js.map +1 -1
- package/dist/ai-service/llm/stream/observers/workflow-usage.d.ts +6 -22
- package/dist/ai-service/llm/stream/observers/workflow-usage.d.ts.map +1 -1
- package/dist/ai-service/llm/stream/observers/workflow-usage.js +18 -14
- package/dist/ai-service/llm/stream/observers/workflow-usage.js.map +1 -1
- package/dist/ai-service/skills/system/superblocks-migration/skill.generated.d.ts +1 -1
- package/dist/ai-service/skills/system/superblocks-migration/skill.generated.d.ts.map +1 -1
- package/dist/ai-service/skills/system/superblocks-migration/skill.generated.js +3 -2
- package/dist/ai-service/skills/system/superblocks-migration/skill.generated.js.map +1 -1
- package/dist/ai-service/state-machine/clark-fsm.d.ts +15 -1
- package/dist/ai-service/state-machine/clark-fsm.d.ts.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 +4 -1
- package/dist/ai-service/state-machine/handlers/llm-generating.js.map +1 -1
- package/dist/ai-service/state-machine/helpers/policy-gate-usage-metrics.d.ts +34 -0
- package/dist/ai-service/state-machine/helpers/policy-gate-usage-metrics.d.ts.map +1 -0
- package/dist/ai-service/state-machine/helpers/policy-gate-usage-metrics.js +83 -0
- package/dist/ai-service/state-machine/helpers/policy-gate-usage-metrics.js.map +1 -0
- package/dist/ai-service/state-machine/helpers/prompt-request-metrics.d.ts +7 -0
- 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 +22 -4
- package/dist/ai-service/state-machine/helpers/prompt-request-metrics.js.map +1 -1
- package/dist/ai-service/util/scoped-token-utils.d.ts.map +1 -1
- package/dist/ai-service/util/scoped-token-utils.js +18 -12
- package/dist/ai-service/util/scoped-token-utils.js.map +1 -1
- package/dist/file-sync-vite-plugin.d.ts.map +1 -1
- package/dist/file-sync-vite-plugin.js +15 -5
- package/dist/file-sync-vite-plugin.js.map +1 -1
- package/dist/migration/restructure.d.ts +1 -0
- package/dist/migration/restructure.d.ts.map +1 -1
- package/dist/migration/restructure.js +18 -2
- package/dist/migration/restructure.js.map +1 -1
- package/package.json +8 -8
package/dist/ai-service/index.js
CHANGED
|
@@ -85,6 +85,7 @@ import { classificationHelper } from "./state-machine/helpers/classification.js"
|
|
|
85
85
|
import { getContextId } from "./state-machine/helpers/context-id.js";
|
|
86
86
|
import { sendUserGenerationStateChannel } from "./state-machine/helpers/peer.js";
|
|
87
87
|
import { sendUserMessageChannel, clearPendingToolPermissionRequest, } from "./state-machine/helpers/peer.js";
|
|
88
|
+
import { collectPolicyGateLlmUsage, finalizePolicyGateUsageMetrics, policyGateFailureFromStream, recordPolicyGateAttempt, } from "./state-machine/helpers/policy-gate-usage-metrics.js";
|
|
88
89
|
import { finalizePromptBillingMetrics } from "./state-machine/helpers/prompt-billing-metrics.js";
|
|
89
90
|
import { paywallStopAdvice } from "./state-machine/helpers/prompt-failure.js";
|
|
90
91
|
import { promptFailureFromStreamAbort, promptFailurePaywall, promptFailurePlatform, promptFailureUserCanceled, recordBaseCommitResolutionFailed, recordPromptAttempt, recordPromptEntryRejection, recordPromptOutcome, recordAwaitingUserHandoffDismissed, resolvePromptMetricLabels, resolvePromptOutcomeDedupeKey, resolvePromptRequestDedupeKey, setPromptRequestMetricIdentity, } from "./state-machine/helpers/prompt-request-metrics.js";
|
|
@@ -1721,6 +1722,7 @@ export class AiService extends TracedEventEmitter {
|
|
|
1721
1722
|
origin: "app_migration",
|
|
1722
1723
|
pendingSeedApiCount,
|
|
1723
1724
|
retryMode,
|
|
1725
|
+
surface: "app",
|
|
1724
1726
|
triggeredBy,
|
|
1725
1727
|
};
|
|
1726
1728
|
const baseCommitId = await this.resolveBaseCommitId(promptId);
|
|
@@ -2182,8 +2184,14 @@ export class AiService extends TracedEventEmitter {
|
|
|
2182
2184
|
userInitiatedPromptAbort: undefined,
|
|
2183
2185
|
// Third-party import turns are billed as app_migration; everything
|
|
2184
2186
|
// else falls back to the default in-app Clark generation metadata.
|
|
2187
|
+
// Both are app building, so the surface matches the default that
|
|
2188
|
+
// this object replaces.
|
|
2185
2189
|
usageMetadata: request.importSource
|
|
2186
|
-
? {
|
|
2190
|
+
? {
|
|
2191
|
+
origin: "app_migration",
|
|
2192
|
+
source: request.importSource,
|
|
2193
|
+
surface: "app",
|
|
2194
|
+
}
|
|
2187
2195
|
: undefined,
|
|
2188
2196
|
useMockGeneration: request.mockGeneration ?? false,
|
|
2189
2197
|
planContext: mergePlanContexts(context.planContext, request.planContext),
|
|
@@ -3495,7 +3503,7 @@ export class AiService extends TracedEventEmitter {
|
|
|
3495
3503
|
// are queued and flushed when the next peer connects.
|
|
3496
3504
|
this.stablePeer.setInner({ peer: undefined });
|
|
3497
3505
|
}
|
|
3498
|
-
handleBuildSystemError(error) {
|
|
3506
|
+
handleBuildSystemError(error, phase) {
|
|
3499
3507
|
// Explicitly copy error properties since they're not enumerable
|
|
3500
3508
|
const errorWithTimestamp = {
|
|
3501
3509
|
...error, // Copy any custom enumerable properties (e.g., 'code', 'importPath')
|
|
@@ -3503,8 +3511,9 @@ export class AiService extends TracedEventEmitter {
|
|
|
3503
3511
|
name: error.name,
|
|
3504
3512
|
stack: error.stack,
|
|
3505
3513
|
timestamp: Date.now(),
|
|
3514
|
+
phase,
|
|
3506
3515
|
};
|
|
3507
|
-
this.getLogger().info(`[ai-service] Received build system error: ${error.message}`);
|
|
3516
|
+
this.getLogger().info(`[ai-service] Received build system error phase=${phase ?? "unknown"}: ${error.message}`);
|
|
3508
3517
|
this.clark.updateContext((context) => ({
|
|
3509
3518
|
...context,
|
|
3510
3519
|
buildSystemErrors: [
|
|
@@ -3766,6 +3775,13 @@ export class AiService extends TracedEventEmitter {
|
|
|
3766
3775
|
let textDeltaChars = 0;
|
|
3767
3776
|
let modelName;
|
|
3768
3777
|
let promptHash;
|
|
3778
|
+
// Hoisted so the outer catch can attribute a failed run to the same model
|
|
3779
|
+
// and provider as the attempt it belongs to, and can still price whatever
|
|
3780
|
+
// tokens the stream consumed before it threw.
|
|
3781
|
+
let coreModel;
|
|
3782
|
+
let providerName = "unknown";
|
|
3783
|
+
let streamResult;
|
|
3784
|
+
let attemptRecorded = false;
|
|
3769
3785
|
const scanRoot = typeof this.appShell.appRootDirPath === "string"
|
|
3770
3786
|
? this.appShell.appRootDirPath
|
|
3771
3787
|
: undefined;
|
|
@@ -3821,8 +3837,16 @@ export class AiService extends TracedEventEmitter {
|
|
|
3821
3837
|
session_id: this.sessionId,
|
|
3822
3838
|
trigger_type: "policy_gate",
|
|
3823
3839
|
}));
|
|
3824
|
-
const { model } = llmProvider.modelForTask("generateBroadEdit");
|
|
3840
|
+
const { model, providerConfig } = llmProvider.modelForTask("generateBroadEdit");
|
|
3825
3841
|
modelName = typeof model === "string" ? model : model.modelId;
|
|
3842
|
+
providerName = providerConfig?.provider ?? "unknown";
|
|
3843
|
+
coreModel = llmConfig?.coreModel;
|
|
3844
|
+
// Counted as soon as the model resolves, because everything below is
|
|
3845
|
+
// inside this try and so is guaranteed a terminal outcome from the catch.
|
|
3846
|
+
// A throw above this line leaves no attempt and records no outcome, which
|
|
3847
|
+
// keeps the failure ratio free of outcomes with no denominator.
|
|
3848
|
+
recordPolicyGateAttempt({ coreModel });
|
|
3849
|
+
attemptRecorded = true;
|
|
3826
3850
|
const availableIntegrations = await this.integrationStore.availableIntegrations();
|
|
3827
3851
|
const integrations = availableIntegrations.map((i) => ({
|
|
3828
3852
|
name: i.name,
|
|
@@ -3852,6 +3876,7 @@ export class AiService extends TracedEventEmitter {
|
|
|
3852
3876
|
stopWhen: hasToolCall("reportReviewRun"),
|
|
3853
3877
|
timeout: { totalMs: POLICY_GATE_MAX_TOTAL_TIME_MS },
|
|
3854
3878
|
});
|
|
3879
|
+
streamResult = result;
|
|
3855
3880
|
// Best-effort: surface the agent's latest tool/reasoning step in the editor
|
|
3856
3881
|
// so a running policy row shows live activity instead of an opaque spinner.
|
|
3857
3882
|
// Only meaningful when an editor session is connected; never blocks the run.
|
|
@@ -4041,6 +4066,18 @@ export class AiService extends TracedEventEmitter {
|
|
|
4041
4066
|
}
|
|
4042
4067
|
logger.info(`[ai-service] Policy gate execution complete: ${completedScanResult.findings.length} findings`);
|
|
4043
4068
|
recordExecutionMetrics("success");
|
|
4069
|
+
await finalizePolicyGateUsageMetrics({
|
|
4070
|
+
aiAgentRunId: request.aiAgentRunId,
|
|
4071
|
+
chatSessionStore: this.chatSessionStore,
|
|
4072
|
+
coreModel,
|
|
4073
|
+
llmUsage: await collectPolicyGateLlmUsage({
|
|
4074
|
+
modelName: modelName ?? "unknown",
|
|
4075
|
+
providerName,
|
|
4076
|
+
result,
|
|
4077
|
+
}),
|
|
4078
|
+
logger,
|
|
4079
|
+
outcome: "success",
|
|
4080
|
+
});
|
|
4044
4081
|
return {
|
|
4045
4082
|
...completedScanResult,
|
|
4046
4083
|
runtimeMetadataJson: buildRuntimeMetadata(),
|
|
@@ -4050,6 +4087,27 @@ export class AiService extends TracedEventEmitter {
|
|
|
4050
4087
|
if (!metricsRecorded) {
|
|
4051
4088
|
recordExecutionMetrics("error");
|
|
4052
4089
|
}
|
|
4090
|
+
// Only when the attempt was counted, so a failure that happened before
|
|
4091
|
+
// the model resolved cannot land as an outcome with no denominator.
|
|
4092
|
+
// Failing before the stream exists is still an outcome, just one with no
|
|
4093
|
+
// tokens to price.
|
|
4094
|
+
if (attemptRecorded) {
|
|
4095
|
+
await finalizePolicyGateUsageMetrics({
|
|
4096
|
+
aiAgentRunId: request.aiAgentRunId,
|
|
4097
|
+
chatSessionStore: this.chatSessionStore,
|
|
4098
|
+
coreModel,
|
|
4099
|
+
failure: policyGateFailureFromStream(streamErrors),
|
|
4100
|
+
llmUsage: streamResult
|
|
4101
|
+
? await collectPolicyGateLlmUsage({
|
|
4102
|
+
modelName: modelName ?? "unknown",
|
|
4103
|
+
providerName,
|
|
4104
|
+
result: streamResult,
|
|
4105
|
+
})
|
|
4106
|
+
: [],
|
|
4107
|
+
logger,
|
|
4108
|
+
outcome: "failure",
|
|
4109
|
+
});
|
|
4110
|
+
}
|
|
4053
4111
|
throw error;
|
|
4054
4112
|
}
|
|
4055
4113
|
}
|