@superblocksteam/vite-plugin-file-sync 2.0.137 → 2.0.138-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/middleware.d.ts.map +1 -1
- package/dist/ai-service/agent/middleware.js +2 -22
- package/dist/ai-service/agent/middleware.js.map +1 -1
- package/dist/ai-service/agent/tools/build-capture-screenshot.d.ts +1 -0
- package/dist/ai-service/agent/tools/build-capture-screenshot.d.ts.map +1 -1
- package/dist/ai-service/agent/tools/build-capture-screenshot.js +150 -7
- package/dist/ai-service/agent/tools/build-capture-screenshot.js.map +1 -1
- package/dist/ai-service/agent/tools/build-read-file.d.ts +10 -0
- package/dist/ai-service/agent/tools/build-read-file.d.ts.map +1 -1
- package/dist/ai-service/agent/tools/build-read-file.js +14 -1
- package/dist/ai-service/agent/tools/build-read-file.js.map +1 -1
- package/dist/ai-service/agent/tools/index.d.ts +1 -1
- package/dist/ai-service/agent/tools/index.d.ts.map +1 -1
- package/dist/ai-service/agent/tools/index.js +1 -1
- package/dist/ai-service/agent/tools/index.js.map +1 -1
- package/dist/ai-service/agent/tools.d.ts +1 -1
- package/dist/ai-service/agent/tools.d.ts.map +1 -1
- package/dist/ai-service/agent/tools.js +15 -1
- package/dist/ai-service/agent/tools.js.map +1 -1
- package/dist/ai-service/agent/tools2/tools/grep.d.ts.map +1 -1
- package/dist/ai-service/agent/tools2/tools/grep.js +2 -1
- package/dist/ai-service/agent/tools2/tools/grep.js.map +1 -1
- package/dist/ai-service/agent/tools2/tools/remember-knowledge.d.ts.map +1 -1
- package/dist/ai-service/agent/tools2/tools/remember-knowledge.js +8 -0
- package/dist/ai-service/agent/tools2/tools/remember-knowledge.js.map +1 -1
- package/dist/ai-service/agent/tools2/tools/start-test-run.d.ts.map +1 -1
- package/dist/ai-service/agent/tools2/tools/start-test-run.js +14 -6
- package/dist/ai-service/agent/tools2/tools/start-test-run.js.map +1 -1
- package/dist/ai-service/agent/tools2/tools/web-fetch.d.ts +2 -0
- package/dist/ai-service/agent/tools2/tools/web-fetch.d.ts.map +1 -1
- package/dist/ai-service/agent/tools2/tools/web-fetch.js +10 -5
- package/dist/ai-service/agent/tools2/tools/web-fetch.js.map +1 -1
- package/dist/ai-service/agent/utils.d.ts.map +1 -1
- package/dist/ai-service/agent/utils.js +25 -7
- package/dist/ai-service/agent/utils.js.map +1 -1
- package/dist/ai-service/app-interface/linter.d.ts.map +1 -1
- package/dist/ai-service/app-interface/linter.js +14 -3
- package/dist/ai-service/app-interface/linter.js.map +1 -1
- package/dist/ai-service/app-interface/npm-package-lookup.d.ts +19 -14
- package/dist/ai-service/app-interface/npm-package-lookup.d.ts.map +1 -1
- package/dist/ai-service/app-interface/npm-package-lookup.js +56 -23
- package/dist/ai-service/app-interface/npm-package-lookup.js.map +1 -1
- package/dist/ai-service/app-interface/npm-registry.d.ts +96 -48
- package/dist/ai-service/app-interface/npm-registry.d.ts.map +1 -1
- package/dist/ai-service/app-interface/npm-registry.js +247 -220
- package/dist/ai-service/app-interface/npm-registry.js.map +1 -1
- package/dist/ai-service/app-interface/shell.d.ts +36 -0
- package/dist/ai-service/app-interface/shell.d.ts.map +1 -1
- package/dist/ai-service/app-interface/shell.js +183 -8
- package/dist/ai-service/app-interface/shell.js.map +1 -1
- package/dist/ai-service/app-skills/helpers.d.ts.map +1 -1
- package/dist/ai-service/app-skills/helpers.js +48 -8
- package/dist/ai-service/app-skills/helpers.js.map +1 -1
- package/dist/ai-service/app-skills/manager.d.ts +5 -0
- package/dist/ai-service/app-skills/manager.d.ts.map +1 -1
- package/dist/ai-service/app-skills/manager.js +13 -4
- package/dist/ai-service/app-skills/manager.js.map +1 -1
- package/dist/ai-service/attachments/uploaded-content-part.d.ts.map +1 -1
- package/dist/ai-service/attachments/uploaded-content-part.js +12 -5
- package/dist/ai-service/attachments/uploaded-content-part.js.map +1 -1
- package/dist/ai-service/index.d.ts +1 -2
- package/dist/ai-service/index.d.ts.map +1 -1
- package/dist/ai-service/index.js +16 -175
- package/dist/ai-service/index.js.map +1 -1
- package/dist/ai-service/judge/judge-eval-service-runner.js +0 -4
- package/dist/ai-service/judge/judge-eval-service-runner.js.map +1 -1
- package/dist/ai-service/judge/judge-service.js +1 -1
- package/dist/ai-service/judge/judge-service.js.map +1 -1
- package/dist/ai-service/knowledge/knowledge-metrics-emitters.d.ts +20 -0
- package/dist/ai-service/knowledge/knowledge-metrics-emitters.d.ts.map +1 -0
- package/dist/ai-service/knowledge/knowledge-metrics-emitters.js +77 -0
- package/dist/ai-service/knowledge/knowledge-metrics-emitters.js.map +1 -0
- package/dist/ai-service/knowledge/knowledge-metrics.d.ts +43 -0
- package/dist/ai-service/knowledge/knowledge-metrics.d.ts.map +1 -0
- package/dist/ai-service/knowledge/knowledge-metrics.js +217 -0
- package/dist/ai-service/knowledge/knowledge-metrics.js.map +1 -0
- package/dist/ai-service/llm/client.d.ts +144 -18
- package/dist/ai-service/llm/client.d.ts.map +1 -1
- package/dist/ai-service/llm/client.js +303 -48
- package/dist/ai-service/llm/client.js.map +1 -1
- package/dist/ai-service/llm/context-v2/context-metrics.d.ts +1 -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 +14 -1
- 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 +34 -1
- package/dist/ai-service/llm/context-v2/context.js.map +1 -1
- package/dist/ai-service/llm/context-v2/manager.d.ts.map +1 -1
- package/dist/ai-service/llm/context-v2/manager.js +4 -1
- package/dist/ai-service/llm/context-v2/manager.js.map +1 -1
- package/dist/ai-service/llm/interaction/adapters/vercel.d.ts +1 -1
- package/dist/ai-service/llm/interaction/adapters/vercel.d.ts.map +1 -1
- package/dist/ai-service/llm/interaction/adapters/vercel.js +19 -4
- package/dist/ai-service/llm/interaction/adapters/vercel.js.map +1 -1
- package/dist/ai-service/llm/interaction/provider.d.ts +17 -3
- package/dist/ai-service/llm/interaction/provider.d.ts.map +1 -1
- package/dist/ai-service/llm/provider.d.ts.map +1 -1
- package/dist/ai-service/llm/provider.js +19 -15
- package/dist/ai-service/llm/provider.js.map +1 -1
- package/dist/ai-service/llm/stream/managed-stream.d.ts.map +1 -1
- package/dist/ai-service/llm/stream/managed-stream.js +25 -2
- package/dist/ai-service/llm/stream/managed-stream.js.map +1 -1
- package/dist/ai-service/llm/stream/observers/llmobs.d.ts +9 -0
- package/dist/ai-service/llm/stream/observers/llmobs.d.ts.map +1 -1
- package/dist/ai-service/llm/stream/observers/llmobs.js +22 -5
- package/dist/ai-service/llm/stream/observers/llmobs.js.map +1 -1
- package/dist/ai-service/llm/stream/observers/logging.d.ts.map +1 -1
- package/dist/ai-service/llm/stream/observers/logging.js +17 -12
- package/dist/ai-service/llm/stream/observers/logging.js.map +1 -1
- package/dist/ai-service/llm/stream/orchestrator.d.ts +1 -0
- package/dist/ai-service/llm/stream/orchestrator.d.ts.map +1 -1
- package/dist/ai-service/llm/stream/orchestrator.js +131 -0
- package/dist/ai-service/llm/stream/orchestrator.js.map +1 -1
- package/dist/ai-service/llm/types.d.ts +17 -6
- package/dist/ai-service/llm/types.d.ts.map +1 -1
- package/dist/ai-service/prompt-builder-service/classifiers/prompt-interpret-task.d.ts +3 -1
- package/dist/ai-service/prompt-builder-service/classifiers/prompt-interpret-task.d.ts.map +1 -1
- package/dist/ai-service/prompt-builder-service/classifiers/prompt-interpret-task.js +13 -5
- package/dist/ai-service/prompt-builder-service/classifiers/prompt-interpret-task.js.map +1 -1
- package/dist/ai-service/security/safety-classifier.d.ts +14 -1
- package/dist/ai-service/security/safety-classifier.d.ts.map +1 -1
- package/dist/ai-service/security/safety-classifier.js +26 -12
- package/dist/ai-service/security/safety-classifier.js.map +1 -1
- package/dist/ai-service/skills/system/third-party-migration/claude-design.generated.d.ts +1 -1
- package/dist/ai-service/skills/system/third-party-migration/claude-design.generated.d.ts.map +1 -1
- package/dist/ai-service/skills/system/third-party-migration/claude-design.generated.js +35 -18
- package/dist/ai-service/skills/system/third-party-migration/claude-design.generated.js.map +1 -1
- package/dist/ai-service/skills/system/third-party-migration/skill.generated.d.ts +1 -1
- package/dist/ai-service/skills/system/third-party-migration/skill.generated.d.ts.map +1 -1
- package/dist/ai-service/skills/system/third-party-migration/skill.generated.js +7 -5
- package/dist/ai-service/skills/system/third-party-migration/skill.generated.js.map +1 -1
- package/dist/ai-service/state-machine/clark-fsm.d.ts.map +1 -1
- package/dist/ai-service/state-machine/clark-fsm.js +3 -2
- 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 +14 -7
- package/dist/ai-service/state-machine/handlers/agent-planning.js.map +1 -1
- package/dist/ai-service/state-machine/handlers/awaiting-user.d.ts +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 +40 -27
- package/dist/ai-service/state-machine/handlers/awaiting-user.js.map +1 -1
- package/dist/ai-service/state-machine/handlers/llm-generating.d.ts +14 -0
- package/dist/ai-service/state-machine/handlers/llm-generating.d.ts.map +1 -1
- package/dist/ai-service/state-machine/handlers/llm-generating.js +72 -16
- package/dist/ai-service/state-machine/handlers/llm-generating.js.map +1 -1
- package/dist/ai-service/state-machine/handlers/next-steps.d.ts +8 -1
- package/dist/ai-service/state-machine/handlers/next-steps.d.ts.map +1 -1
- package/dist/ai-service/state-machine/handlers/next-steps.js +13 -11
- package/dist/ai-service/state-machine/handlers/next-steps.js.map +1 -1
- package/dist/ai-service/state-machine/helpers/peer.d.ts.map +1 -1
- package/dist/ai-service/state-machine/helpers/peer.js +3 -2
- package/dist/ai-service/state-machine/helpers/peer.js.map +1 -1
- package/dist/ai-service/state-machine/helpers/stable-peer.d.ts +5 -0
- package/dist/ai-service/state-machine/helpers/stable-peer.d.ts.map +1 -1
- package/dist/ai-service/state-machine/helpers/stable-peer.js +37 -0
- package/dist/ai-service/state-machine/helpers/stable-peer.js.map +1 -1
- package/dist/ai-service/template-renderer.d.ts.map +1 -1
- package/dist/ai-service/template-renderer.js +2 -2
- package/dist/ai-service/template-renderer.js.map +1 -1
- package/dist/ai-service/types.d.ts +2 -2
- package/dist/ai-service/types.d.ts.map +1 -1
- package/dist/dev-server-ws-smoke-client.d.ts +41 -0
- package/dist/dev-server-ws-smoke-client.d.ts.map +1 -0
- package/dist/dev-server-ws-smoke-client.js +314 -0
- package/dist/dev-server-ws-smoke-client.js.map +1 -0
- package/dist/early-error-relay.d.ts +31 -0
- package/dist/early-error-relay.d.ts.map +1 -0
- package/dist/early-error-relay.js +88 -0
- package/dist/early-error-relay.js.map +1 -0
- package/dist/file-sync-vite-plugin.d.ts +26 -1
- package/dist/file-sync-vite-plugin.d.ts.map +1 -1
- package/dist/file-sync-vite-plugin.js +82 -43
- package/dist/file-sync-vite-plugin.js.map +1 -1
- package/dist/file-system-helpers.d.ts +13 -0
- package/dist/file-system-helpers.d.ts.map +1 -1
- package/dist/file-system-helpers.js +18 -1
- package/dist/file-system-helpers.js.map +1 -1
- package/dist/file-system-manager.d.ts +0 -1
- package/dist/file-system-manager.d.ts.map +1 -1
- package/dist/file-system-manager.js +0 -53
- package/dist/file-system-manager.js.map +1 -1
- package/dist/injected-index.d.ts +6 -0
- package/dist/injected-index.d.ts.map +1 -1
- package/dist/injected-index.js +59 -14
- package/dist/injected-index.js.map +1 -1
- package/dist/migration/migration-routes.d.ts +3 -0
- package/dist/migration/migration-routes.d.ts.map +1 -1
- package/dist/migration/migration-routes.js +93 -108
- package/dist/migration/migration-routes.js.map +1 -1
- package/dist/migration/restructure.d.ts +15 -0
- package/dist/migration/restructure.d.ts.map +1 -1
- package/dist/migration/restructure.js +50 -1
- package/dist/migration/restructure.js.map +1 -1
- package/dist/migration-templates/app-fullstack/eslint.config.js +6 -1
- package/dist/migration-templates/app-fullstack/package.json +2 -1
- package/dist/plugin-options.d.ts +7 -0
- package/dist/plugin-options.d.ts.map +1 -1
- package/dist/plugin-options.js.map +1 -1
- package/dist/socket-manager.d.ts.map +1 -1
- package/dist/socket-manager.js +0 -5
- package/dist/socket-manager.js.map +1 -1
- package/dist/sync-service/list-dir.d.ts +1 -1
- package/dist/sync-service/list-dir.js +3 -3
- package/dist/sync-service/list-dir.js.map +1 -1
- package/dist/util/log-sanitizer.d.ts.map +1 -1
- package/dist/util/log-sanitizer.js +13 -6
- package/dist/util/log-sanitizer.js.map +1 -1
- package/dist/util/summarize-for-logging.d.ts +14 -0
- package/dist/util/summarize-for-logging.d.ts.map +1 -0
- package/dist/util/summarize-for-logging.js +94 -0
- package/dist/util/summarize-for-logging.js.map +1 -0
- package/package.json +8 -8
- package/dist/ai-service/agent/tools2/tools/explain-code-finalize.d.ts +0 -4
- package/dist/ai-service/agent/tools2/tools/explain-code-finalize.d.ts.map +0 -1
- package/dist/ai-service/agent/tools2/tools/explain-code-finalize.js +0 -19
- package/dist/ai-service/agent/tools2/tools/explain-code-finalize.js.map +0 -1
- package/dist/ai-service/llm/impl/anthropic.d.ts +0 -3
- package/dist/ai-service/llm/impl/anthropic.d.ts.map +0 -1
- package/dist/ai-service/llm/impl/anthropic.js +0 -15
- package/dist/ai-service/llm/impl/anthropic.js.map +0 -1
- package/dist/ai-service/prompts/explain-code.d.ts +0 -7
- package/dist/ai-service/prompts/explain-code.d.ts.map +0 -1
- package/dist/ai-service/prompts/explain-code.js +0 -23
- package/dist/ai-service/prompts/explain-code.js.map +0 -1
- package/dist/ai-service/util/json-stream-parser.d.ts +0 -20
- package/dist/ai-service/util/json-stream-parser.d.ts.map +0 -1
- package/dist/ai-service/util/json-stream-parser.js +0 -139
- package/dist/ai-service/util/json-stream-parser.js.map +0 -1
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import { WebSocket } from "ws";
|
|
2
|
+
import { AiGenerationState } from "@superblocksteam/library-shared/types";
|
|
3
|
+
import type { AiGenerateRequest, AiMode, CoreModelName, LLMProviderConfig } from "@superblocksteam/library-shared/types";
|
|
4
|
+
type Provider = LLMProviderConfig["provider"];
|
|
5
|
+
export interface ClientOptions {
|
|
6
|
+
applicationId: string;
|
|
7
|
+
baseUrl: string;
|
|
8
|
+
coreModel: CoreModelName;
|
|
9
|
+
jwt: string;
|
|
10
|
+
mode: AiMode;
|
|
11
|
+
peerId: string;
|
|
12
|
+
prompt: string;
|
|
13
|
+
provider: Provider;
|
|
14
|
+
timeoutMs: number;
|
|
15
|
+
userId?: string;
|
|
16
|
+
}
|
|
17
|
+
export type GenerateOptions = Pick<ClientOptions, "coreModel" | "jwt" | "mode" | "prompt" | "provider">;
|
|
18
|
+
export interface DevServerWsConnectionOptions extends Pick<ClientOptions, "applicationId" | "baseUrl" | "peerId" | "timeoutMs" | "userId"> {
|
|
19
|
+
closeOnTerminalGenerationState?: boolean;
|
|
20
|
+
onClose?: (event: WebSocket.CloseEvent) => void;
|
|
21
|
+
onEvent: (event: unknown) => void;
|
|
22
|
+
}
|
|
23
|
+
export interface DevServerWsClient {
|
|
24
|
+
close: (reason?: string) => void;
|
|
25
|
+
generate: (options: GenerateOptions) => Promise<{
|
|
26
|
+
status: "started" | "interrupted";
|
|
27
|
+
}>;
|
|
28
|
+
waitForClose: () => Promise<void>;
|
|
29
|
+
}
|
|
30
|
+
export declare function parseArgs(args: string[], env?: NodeJS.ProcessEnv): ClientOptions;
|
|
31
|
+
export declare function buildWsUrl(options: Pick<ClientOptions, "applicationId" | "baseUrl" | "peerId" | "userId">): URL;
|
|
32
|
+
export declare function buildGenerateRequest(options: GenerateOptions): AiGenerateRequest & {
|
|
33
|
+
queueMode: "interrupt";
|
|
34
|
+
};
|
|
35
|
+
export declare function buildAuthorization(jwt: string): string;
|
|
36
|
+
export declare function isTerminalGenerationState(state: AiGenerationState): boolean;
|
|
37
|
+
export declare function isMainModule(moduleUrl: string, argvPath: string | undefined, cwd?: string): boolean;
|
|
38
|
+
export declare function connectDevServerWsClient(options: DevServerWsConnectionOptions): Promise<DevServerWsClient>;
|
|
39
|
+
export declare function runClient(options: ClientOptions): Promise<void>;
|
|
40
|
+
export {};
|
|
41
|
+
//# sourceMappingURL=dev-server-ws-smoke-client.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dev-server-ws-smoke-client.d.ts","sourceRoot":"","sources":["../src/dev-server-ws-smoke-client.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,SAAS,EAAE,MAAM,IAAI,CAAC;AAE/B,OAAO,EAAE,iBAAiB,EAAE,MAAM,uCAAuC,CAAC;AAC1E,OAAO,KAAK,EAEV,iBAAiB,EACjB,MAAM,EACN,aAAa,EAEb,iBAAiB,EAGlB,MAAM,uCAAuC,CAAC;AAQ/C,KAAK,QAAQ,GAAG,iBAAiB,CAAC,UAAU,CAAC,CAAC;AAE9C,MAAM,WAAW,aAAa;IAC5B,aAAa,EAAE,MAAM,CAAC;IACtB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,aAAa,CAAC;IACzB,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,QAAQ,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,MAAM,eAAe,GAAG,IAAI,CAChC,aAAa,EACb,WAAW,GAAG,KAAK,GAAG,MAAM,GAAG,QAAQ,GAAG,UAAU,CACrD,CAAC;AAEF,MAAM,WAAW,4BAA6B,SAAQ,IAAI,CACxD,aAAa,EACb,eAAe,GAAG,SAAS,GAAG,QAAQ,GAAG,WAAW,GAAG,QAAQ,CAChE;IACC,8BAA8B,CAAC,EAAE,OAAO,CAAC;IACzC,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,SAAS,CAAC,UAAU,KAAK,IAAI,CAAC;IAChD,OAAO,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,CAAC;CACnC;AAED,MAAM,WAAW,iBAAiB;IAChC,KAAK,EAAE,CAAC,MAAM,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;IACjC,QAAQ,EAAE,CACR,OAAO,EAAE,eAAe,KACrB,OAAO,CAAC;QAAE,MAAM,EAAE,SAAS,GAAG,aAAa,CAAA;KAAE,CAAC,CAAC;IACpD,YAAY,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;CACnC;AAuCD,wBAAgB,SAAS,CACvB,IAAI,EAAE,MAAM,EAAE,EACd,GAAG,GAAE,MAAM,CAAC,UAAwB,GACnC,aAAa,CA0Bf;AAED,wBAAgB,UAAU,CACxB,OAAO,EAAE,IAAI,CACX,aAAa,EACb,eAAe,GAAG,SAAS,GAAG,QAAQ,GAAG,QAAQ,CAClD,GACA,GAAG,CASL;AAED,wBAAgB,oBAAoB,CAClC,OAAO,EAAE,eAAe,GACvB,iBAAiB,GAAG;IAAE,SAAS,EAAE,WAAW,CAAA;CAAE,CAkBhD;AAED,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAEtD;AAED,wBAAgB,yBAAyB,CAAC,KAAK,EAAE,iBAAiB,GAAG,OAAO,CAM3E;AAED,wBAAgB,YAAY,CAC1B,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,MAAM,GAAG,SAAS,EAC5B,GAAG,SAAgB,GAClB,OAAO,CAGT;AA0KD,wBAAsB,wBAAwB,CAC5C,OAAO,EAAE,4BAA4B,GACpC,OAAO,CAAC,iBAAiB,CAAC,CA+C5B;AAED,wBAAsB,SAAS,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,CAqBrE"}
|
|
@@ -0,0 +1,314 @@
|
|
|
1
|
+
import { randomUUID } from "node:crypto";
|
|
2
|
+
import { resolve } from "node:path";
|
|
3
|
+
import { fileURLToPath } from "node:url";
|
|
4
|
+
import { WebSocket } from "ws";
|
|
5
|
+
import { AiGenerationState } from "@superblocksteam/library-shared/types";
|
|
6
|
+
import { createISocketClient, ISocket, } from "@superblocksteam/shared";
|
|
7
|
+
const DEFAULTS = {
|
|
8
|
+
baseUrl: "http://localhost:3304",
|
|
9
|
+
coreModel: "claude-sonnet-4-5",
|
|
10
|
+
mode: "BUILD",
|
|
11
|
+
provider: "bedrock",
|
|
12
|
+
timeoutMs: 180_000,
|
|
13
|
+
};
|
|
14
|
+
function readFlag(args, name) {
|
|
15
|
+
const flag = `--${name}`;
|
|
16
|
+
const index = args.indexOf(flag);
|
|
17
|
+
if (index === -1)
|
|
18
|
+
return undefined;
|
|
19
|
+
const value = args[index + 1];
|
|
20
|
+
if (!value || value.startsWith("--")) {
|
|
21
|
+
throw new Error(`${flag} requires a value`);
|
|
22
|
+
}
|
|
23
|
+
return value;
|
|
24
|
+
}
|
|
25
|
+
function requireValue(value, message) {
|
|
26
|
+
if (!value)
|
|
27
|
+
throw new Error(message);
|
|
28
|
+
return value;
|
|
29
|
+
}
|
|
30
|
+
function readPositiveNumberFlag(args, name, fallback) {
|
|
31
|
+
const raw = readFlag(args, name);
|
|
32
|
+
const value = raw === undefined ? fallback : Number(raw);
|
|
33
|
+
if (!Number.isFinite(value) || value <= 0) {
|
|
34
|
+
throw new Error(`--${name} must be a positive number`);
|
|
35
|
+
}
|
|
36
|
+
return value;
|
|
37
|
+
}
|
|
38
|
+
export function parseArgs(args, env = process.env) {
|
|
39
|
+
return {
|
|
40
|
+
applicationId: requireValue(readFlag(args, "application-id") ?? env.SUPERBLOCKS_APPLICATION_ID, "--application-id is required"),
|
|
41
|
+
baseUrl: readFlag(args, "base-url") ??
|
|
42
|
+
env.SUPERBLOCKS_DEV_SERVER_URL ??
|
|
43
|
+
DEFAULTS.baseUrl,
|
|
44
|
+
coreModel: (readFlag(args, "core-model") ??
|
|
45
|
+
env.SUPERBLOCKS_AI_CORE_MODEL ??
|
|
46
|
+
DEFAULTS.coreModel),
|
|
47
|
+
jwt: requireValue(readFlag(args, "jwt") ?? env.SUPERBLOCKS_DEV_SERVER_JWT, "--jwt is required"),
|
|
48
|
+
mode: (readFlag(args, "mode") ?? DEFAULTS.mode),
|
|
49
|
+
peerId: readFlag(args, "peer-id") ?? `smoke-${randomUUID()}`,
|
|
50
|
+
prompt: requireValue(readFlag(args, "prompt"), "--prompt is required"),
|
|
51
|
+
provider: (readFlag(args, "provider") ??
|
|
52
|
+
env.SUPERBLOCKS_AI_PROVIDER ??
|
|
53
|
+
DEFAULTS.provider),
|
|
54
|
+
timeoutMs: readPositiveNumberFlag(args, "timeout-ms", DEFAULTS.timeoutMs),
|
|
55
|
+
userId: readFlag(args, "user-id") ?? env.SUPERBLOCKS_USER_ID,
|
|
56
|
+
};
|
|
57
|
+
}
|
|
58
|
+
export function buildWsUrl(options) {
|
|
59
|
+
const url = new URL("/sb-updates", options.baseUrl);
|
|
60
|
+
url.protocol = url.protocol === "https:" ? "wss:" : "ws:";
|
|
61
|
+
url.searchParams.set("peerId", options.peerId);
|
|
62
|
+
if (options.userId) {
|
|
63
|
+
url.searchParams.set("userId", options.userId);
|
|
64
|
+
}
|
|
65
|
+
url.searchParams.set("applicationId", options.applicationId);
|
|
66
|
+
return url;
|
|
67
|
+
}
|
|
68
|
+
export function buildGenerateRequest(options) {
|
|
69
|
+
return {
|
|
70
|
+
jwt: options.jwt,
|
|
71
|
+
llmConfig: {
|
|
72
|
+
coreModel: options.coreModel,
|
|
73
|
+
interleavedThinking: false,
|
|
74
|
+
provider: options.provider,
|
|
75
|
+
thinkingBudgetTokens: "0",
|
|
76
|
+
thinkingEnabled: false,
|
|
77
|
+
unifiedProviderEnabled: true,
|
|
78
|
+
},
|
|
79
|
+
mode: options.mode,
|
|
80
|
+
prompt: options.prompt,
|
|
81
|
+
promptContext: { entities: [], integrations: [] },
|
|
82
|
+
queueMode: "interrupt",
|
|
83
|
+
requestId: randomUUID(),
|
|
84
|
+
userPreferences: { suggestNextSteps: false },
|
|
85
|
+
};
|
|
86
|
+
}
|
|
87
|
+
export function buildAuthorization(jwt) {
|
|
88
|
+
return `Bearer ${jwt}`;
|
|
89
|
+
}
|
|
90
|
+
export function isTerminalGenerationState(state) {
|
|
91
|
+
return (state === AiGenerationState.COMPLETED ||
|
|
92
|
+
state === AiGenerationState.CANCELLED ||
|
|
93
|
+
state === AiGenerationState.IDLE);
|
|
94
|
+
}
|
|
95
|
+
export function isMainModule(moduleUrl, argvPath, cwd = process.cwd()) {
|
|
96
|
+
if (!argvPath)
|
|
97
|
+
return false;
|
|
98
|
+
return fileURLToPath(moduleUrl) === resolve(cwd, argvPath);
|
|
99
|
+
}
|
|
100
|
+
function createEditorHandlers(onEvent, onTerminalGenerationState) {
|
|
101
|
+
const ok = [async () => undefined];
|
|
102
|
+
return {
|
|
103
|
+
aiPushMessage: [
|
|
104
|
+
async (message) => {
|
|
105
|
+
onEvent({ type: "message", message });
|
|
106
|
+
},
|
|
107
|
+
],
|
|
108
|
+
aiSetGenerationState: [
|
|
109
|
+
async (payload) => {
|
|
110
|
+
onEvent({ type: "generation_state", ...payload });
|
|
111
|
+
if (isTerminalGenerationState(payload.state)) {
|
|
112
|
+
onTerminalGenerationState();
|
|
113
|
+
}
|
|
114
|
+
},
|
|
115
|
+
],
|
|
116
|
+
aiPushTokenUsage: [
|
|
117
|
+
async (payload) => {
|
|
118
|
+
onEvent({ type: "token_usage", ...payload });
|
|
119
|
+
},
|
|
120
|
+
],
|
|
121
|
+
error: [
|
|
122
|
+
async (payload) => {
|
|
123
|
+
onEvent({ type: "error", error: payload });
|
|
124
|
+
},
|
|
125
|
+
],
|
|
126
|
+
aiRequestToolPermission: [
|
|
127
|
+
async (payload) => {
|
|
128
|
+
onEvent({ type: "tool_permission", request: payload });
|
|
129
|
+
},
|
|
130
|
+
],
|
|
131
|
+
aiClearToolPermission: ok,
|
|
132
|
+
aiPushChangeInfo: ok,
|
|
133
|
+
aiPushPromptInterpretation: ok,
|
|
134
|
+
aiSetDraftState: ok,
|
|
135
|
+
aiPushContextUsed: ok,
|
|
136
|
+
aiPushCodeExplanation: ok,
|
|
137
|
+
aiPushApiUsageSummary: ok,
|
|
138
|
+
aiPushErrorSummary: ok,
|
|
139
|
+
aiPushPolicyAgentStep: ok,
|
|
140
|
+
aiPushTaskStatus: ok,
|
|
141
|
+
updateScope: ok,
|
|
142
|
+
resetScope: ok,
|
|
143
|
+
manualDeleteApi: ok,
|
|
144
|
+
manualUpdateApi: ok,
|
|
145
|
+
updateApiInputs: ok,
|
|
146
|
+
releasingLock: ok,
|
|
147
|
+
closedByServer: ok,
|
|
148
|
+
syncStatus: ok,
|
|
149
|
+
setDegradedMode: ok,
|
|
150
|
+
setApiDependencies: ok,
|
|
151
|
+
appFactsChanged: ok,
|
|
152
|
+
requestGitRefresh: ok,
|
|
153
|
+
reloadIframe: ok,
|
|
154
|
+
clarkLog: ok,
|
|
155
|
+
notifyDeploySuccess: ok,
|
|
156
|
+
aiNavigatePreviewRoute: [
|
|
157
|
+
async () => ({
|
|
158
|
+
success: false,
|
|
159
|
+
error: "smoke client has no browser route",
|
|
160
|
+
}),
|
|
161
|
+
],
|
|
162
|
+
aiCaptureScreenshot: [
|
|
163
|
+
async () => ({
|
|
164
|
+
success: false,
|
|
165
|
+
error: "smoke client has no browser viewport",
|
|
166
|
+
}),
|
|
167
|
+
],
|
|
168
|
+
aiExecuteRequestToIntegration: [
|
|
169
|
+
async () => ({
|
|
170
|
+
error: "smoke client cannot execute browser integration requests",
|
|
171
|
+
}),
|
|
172
|
+
],
|
|
173
|
+
aiGetOpenApiSpec: [async () => undefined],
|
|
174
|
+
aiGetIntegration: [
|
|
175
|
+
async () => {
|
|
176
|
+
throw new Error("smoke client cannot provide integration metadata");
|
|
177
|
+
},
|
|
178
|
+
],
|
|
179
|
+
aiGetIntegrations: [async () => []],
|
|
180
|
+
aiExecuteV2Api: [
|
|
181
|
+
async () => {
|
|
182
|
+
throw new Error("smoke client cannot execute SDK APIs");
|
|
183
|
+
},
|
|
184
|
+
],
|
|
185
|
+
aiExecuteSdkApi: [
|
|
186
|
+
async () => {
|
|
187
|
+
throw new Error("smoke client cannot execute SDK APIs");
|
|
188
|
+
},
|
|
189
|
+
],
|
|
190
|
+
aiOpenIntegrationSetup: [
|
|
191
|
+
async () => ({
|
|
192
|
+
success: false,
|
|
193
|
+
error: "smoke client cannot open integration setup",
|
|
194
|
+
}),
|
|
195
|
+
],
|
|
196
|
+
aiOpenExistingIntegration: [
|
|
197
|
+
async () => ({
|
|
198
|
+
success: false,
|
|
199
|
+
error: "smoke client cannot open integration setup",
|
|
200
|
+
}),
|
|
201
|
+
],
|
|
202
|
+
aiUpdateIntegrationFields: [
|
|
203
|
+
async () => ({
|
|
204
|
+
success: false,
|
|
205
|
+
error: "smoke client cannot update integrations",
|
|
206
|
+
}),
|
|
207
|
+
],
|
|
208
|
+
aiTestIntegrationConnection: [
|
|
209
|
+
async () => ({
|
|
210
|
+
success: false,
|
|
211
|
+
error: {
|
|
212
|
+
message: "smoke client cannot test integrations",
|
|
213
|
+
details: "",
|
|
214
|
+
},
|
|
215
|
+
}),
|
|
216
|
+
],
|
|
217
|
+
aiSaveIntegration: [
|
|
218
|
+
async () => ({
|
|
219
|
+
success: false,
|
|
220
|
+
error: "smoke client cannot save integrations",
|
|
221
|
+
}),
|
|
222
|
+
],
|
|
223
|
+
aiCloseIntegrationSetup: [async () => ({ success: true })],
|
|
224
|
+
aiGetIntegrationFormSchema: [
|
|
225
|
+
async () => ({
|
|
226
|
+
success: false,
|
|
227
|
+
error: "smoke client cannot provide integration forms",
|
|
228
|
+
}),
|
|
229
|
+
],
|
|
230
|
+
aiDeleteIntegration: [
|
|
231
|
+
async () => ({
|
|
232
|
+
success: false,
|
|
233
|
+
error: "smoke client cannot delete integrations",
|
|
234
|
+
}),
|
|
235
|
+
],
|
|
236
|
+
aiGetIntegrationDependents: [
|
|
237
|
+
async () => ({
|
|
238
|
+
success: false,
|
|
239
|
+
error: "smoke client cannot inspect integration dependents",
|
|
240
|
+
}),
|
|
241
|
+
],
|
|
242
|
+
};
|
|
243
|
+
}
|
|
244
|
+
async function openWs(url) {
|
|
245
|
+
const ws = new WebSocket(url);
|
|
246
|
+
return await new Promise((resolve, reject) => {
|
|
247
|
+
const onOpen = () => {
|
|
248
|
+
ws.off("error", onError);
|
|
249
|
+
resolve(ws);
|
|
250
|
+
};
|
|
251
|
+
const onError = (err) => {
|
|
252
|
+
ws.off("open", onOpen);
|
|
253
|
+
reject(err);
|
|
254
|
+
};
|
|
255
|
+
ws.once("open", onOpen);
|
|
256
|
+
ws.once("error", onError);
|
|
257
|
+
});
|
|
258
|
+
}
|
|
259
|
+
export async function connectDevServerWsClient(options) {
|
|
260
|
+
const ws = await openWs(buildWsUrl(options));
|
|
261
|
+
const closed = new Promise((resolve) => {
|
|
262
|
+
ws.on("close", () => resolve());
|
|
263
|
+
});
|
|
264
|
+
const socket = new ISocket(ws, createEditorHandlers(options.onEvent, () => {
|
|
265
|
+
if (options.closeOnTerminalGenerationState) {
|
|
266
|
+
ws.close(1000, "terminal generation state");
|
|
267
|
+
}
|
|
268
|
+
}), [], {
|
|
269
|
+
onClose: (event) => {
|
|
270
|
+
options.onClose?.(event);
|
|
271
|
+
},
|
|
272
|
+
timeouts: {
|
|
273
|
+
connectionTimeoutInSeconds: undefined,
|
|
274
|
+
noResponseTimeoutInSeconds: options.timeoutMs / 1000,
|
|
275
|
+
},
|
|
276
|
+
});
|
|
277
|
+
const client = createISocketClient(socket);
|
|
278
|
+
return {
|
|
279
|
+
close: (reason) => socket.close(reason),
|
|
280
|
+
generate: (generateOptions) => client.requestWithTracing("editor.aiGenerateWithQueue", buildGenerateRequest(generateOptions), {}, buildAuthorization(generateOptions.jwt)),
|
|
281
|
+
waitForClose: () => closed,
|
|
282
|
+
};
|
|
283
|
+
}
|
|
284
|
+
export async function runClient(options) {
|
|
285
|
+
const client = await connectDevServerWsClient({
|
|
286
|
+
...options,
|
|
287
|
+
closeOnTerminalGenerationState: true,
|
|
288
|
+
onClose: (event) => {
|
|
289
|
+
console.error(`closed code=${event.code} reason=${event.reason}`);
|
|
290
|
+
},
|
|
291
|
+
onEvent: (event) => console.log(JSON.stringify(event)),
|
|
292
|
+
});
|
|
293
|
+
const timeout = setTimeout(() => {
|
|
294
|
+
client.close();
|
|
295
|
+
}, options.timeoutMs);
|
|
296
|
+
try {
|
|
297
|
+
console.error(`connected ${buildWsUrl(options).toString()}`);
|
|
298
|
+
const result = await client.generate(options);
|
|
299
|
+
console.error(`aiGenerateWithQueue ${JSON.stringify(result)}`);
|
|
300
|
+
await client.waitForClose();
|
|
301
|
+
}
|
|
302
|
+
finally {
|
|
303
|
+
clearTimeout(timeout);
|
|
304
|
+
}
|
|
305
|
+
}
|
|
306
|
+
if (isMainModule(import.meta.url, process.argv[1])) {
|
|
307
|
+
Promise.resolve()
|
|
308
|
+
.then(() => runClient(parseArgs(process.argv.slice(2))))
|
|
309
|
+
.catch((error) => {
|
|
310
|
+
console.error(error instanceof Error ? error.message : String(error));
|
|
311
|
+
process.exitCode = 1;
|
|
312
|
+
});
|
|
313
|
+
}
|
|
314
|
+
//# sourceMappingURL=dev-server-ws-smoke-client.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dev-server-ws-smoke-client.js","sourceRoot":"","sources":["../src/dev-server-ws-smoke-client.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Early, dependency-free relay for errors that break the customer app's module
|
|
3
|
+
* graph BEFORE React (and the in-app error capture) can run.
|
|
4
|
+
*
|
|
5
|
+
* Example: a bad named import — `import { AppProvider } from "..."` when the
|
|
6
|
+
* package only exports `App`. Vite compiles this fine, so the `vite:error` HMR
|
|
7
|
+
* event never fires. The browser fails to *instantiate* the whole entry module
|
|
8
|
+
* graph, so no module body runs — including the library code that installs the
|
|
9
|
+
* in-app `error-capture` handlers. The only code still alive is this script,
|
|
10
|
+
* which the dev server injects in the document `<head>` before `root.tsx`.
|
|
11
|
+
*
|
|
12
|
+
* When such an uncaught error fires, this relays it to the parent editor with
|
|
13
|
+
* the same `sb-load-error` message the in-app bridge uses, so the editor clears
|
|
14
|
+
* the "Loading your app" spinner and shows the "Fix with Clark" panel (and
|
|
15
|
+
* forwards the error to Clark's build_debug).
|
|
16
|
+
*
|
|
17
|
+
* It defers to the in-app capture whenever that capture installed (the graph
|
|
18
|
+
* evaluated), keyed off `window.__SB_EDIT_ERROR_CAPTURE_INSTALLED`, to avoid
|
|
19
|
+
* duplicate load-error reports for post-evaluation crashes.
|
|
20
|
+
*
|
|
21
|
+
* The function must stay self-contained (no imports, no closure references) so
|
|
22
|
+
* {@link getEarlyErrorRelayScript} can inline it verbatim via `toString()`.
|
|
23
|
+
*/
|
|
24
|
+
export declare function relayPreloadErrorsToParent(win: Window): void;
|
|
25
|
+
/**
|
|
26
|
+
* Returns the relay as a self-invoking script string to inject into the preview
|
|
27
|
+
* iframe's HTML head. Inlines {@link relayPreloadErrorsToParent} verbatim so the
|
|
28
|
+
* injected code and the unit-tested code are identical.
|
|
29
|
+
*/
|
|
30
|
+
export declare function getEarlyErrorRelayScript(): string;
|
|
31
|
+
//# sourceMappingURL=early-error-relay.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"early-error-relay.d.ts","sourceRoot":"","sources":["../src/early-error-relay.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,wBAAgB,0BAA0B,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAgE5D;AAED;;;;GAIG;AACH,wBAAgB,wBAAwB,IAAI,MAAM,CAEjD"}
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Early, dependency-free relay for errors that break the customer app's module
|
|
3
|
+
* graph BEFORE React (and the in-app error capture) can run.
|
|
4
|
+
*
|
|
5
|
+
* Example: a bad named import — `import { AppProvider } from "..."` when the
|
|
6
|
+
* package only exports `App`. Vite compiles this fine, so the `vite:error` HMR
|
|
7
|
+
* event never fires. The browser fails to *instantiate* the whole entry module
|
|
8
|
+
* graph, so no module body runs — including the library code that installs the
|
|
9
|
+
* in-app `error-capture` handlers. The only code still alive is this script,
|
|
10
|
+
* which the dev server injects in the document `<head>` before `root.tsx`.
|
|
11
|
+
*
|
|
12
|
+
* When such an uncaught error fires, this relays it to the parent editor with
|
|
13
|
+
* the same `sb-load-error` message the in-app bridge uses, so the editor clears
|
|
14
|
+
* the "Loading your app" spinner and shows the "Fix with Clark" panel (and
|
|
15
|
+
* forwards the error to Clark's build_debug).
|
|
16
|
+
*
|
|
17
|
+
* It defers to the in-app capture whenever that capture installed (the graph
|
|
18
|
+
* evaluated), keyed off `window.__SB_EDIT_ERROR_CAPTURE_INSTALLED`, to avoid
|
|
19
|
+
* duplicate load-error reports for post-evaluation crashes.
|
|
20
|
+
*
|
|
21
|
+
* The function must stay self-contained (no imports, no closure references) so
|
|
22
|
+
* {@link getEarlyErrorRelayScript} can inline it verbatim via `toString()`.
|
|
23
|
+
*/
|
|
24
|
+
export function relayPreloadErrorsToParent(win) {
|
|
25
|
+
if (!win || win.parent === win)
|
|
26
|
+
return;
|
|
27
|
+
// Edit-mode only, mirroring the library's isEditMode(). The editor overlay and
|
|
28
|
+
// Clark only exist in edit mode; in a deployed/preview iframe this would just
|
|
29
|
+
// post editor-only messages to a non-editor parent. `_SB_VIEW_MODE` is set
|
|
30
|
+
// inline in the iframe HTML before this script runs.
|
|
31
|
+
if (win._SB_VIEW_MODE !== "dev") {
|
|
32
|
+
return;
|
|
33
|
+
}
|
|
34
|
+
let notified = false;
|
|
35
|
+
const relay = (message) => {
|
|
36
|
+
const w = win;
|
|
37
|
+
// The in-app capture owns errors once the module graph evaluated.
|
|
38
|
+
//
|
|
39
|
+
// Timing contract: the flag is set synchronously at the start of
|
|
40
|
+
// installEditModeErrorCapture(). Module-evaluation crashes surface as
|
|
41
|
+
// asynchronous `error` events, so by event time the flag reliably reflects
|
|
42
|
+
// whether the in-app capture's module executed: set (graph evaluated → in-app
|
|
43
|
+
// capture owns it) or unset (graph never evaluated → only this relay is
|
|
44
|
+
// alive). We therefore read it at event time, not at install time.
|
|
45
|
+
if (w.__SB_EDIT_ERROR_CAPTURE_INSTALLED === true)
|
|
46
|
+
return;
|
|
47
|
+
if (notified)
|
|
48
|
+
return;
|
|
49
|
+
notified = true;
|
|
50
|
+
try {
|
|
51
|
+
// The editor's sb-load-error handler clears the loader (setLoaded) and
|
|
52
|
+
// shows the failure UI, so we do NOT send sb-ready — that would log a
|
|
53
|
+
// bogus iframe-ready / load-complete "success" for a failed load.
|
|
54
|
+
win.parent.postMessage({
|
|
55
|
+
type: "sb-load-error",
|
|
56
|
+
// `source: "early_relay"` lets the editor tag its app-render-error
|
|
57
|
+
// metric by capture path (this relay vs the in-app handler). Keep the
|
|
58
|
+
// literal in sync with LoadErrorSource in the library types.
|
|
59
|
+
payload: { error: message, source: "early_relay" },
|
|
60
|
+
startTime: Date.now(),
|
|
61
|
+
}, "*");
|
|
62
|
+
}
|
|
63
|
+
catch (_e) {
|
|
64
|
+
// Best-effort: a failed postMessage must not throw out of the handler.
|
|
65
|
+
}
|
|
66
|
+
};
|
|
67
|
+
win.addEventListener("error", (event) => {
|
|
68
|
+
const err = event.error;
|
|
69
|
+
const message = (err && (err.stack || err.message)) || event.message || "Unknown error";
|
|
70
|
+
relay(String(message));
|
|
71
|
+
});
|
|
72
|
+
win.addEventListener("unhandledrejection", (event) => {
|
|
73
|
+
const reason = event.reason;
|
|
74
|
+
const message = (reason && (reason.stack || reason.message)) ||
|
|
75
|
+
String(reason) ||
|
|
76
|
+
"Unhandled promise rejection";
|
|
77
|
+
relay(String(message));
|
|
78
|
+
});
|
|
79
|
+
}
|
|
80
|
+
/**
|
|
81
|
+
* Returns the relay as a self-invoking script string to inject into the preview
|
|
82
|
+
* iframe's HTML head. Inlines {@link relayPreloadErrorsToParent} verbatim so the
|
|
83
|
+
* injected code and the unit-tested code are identical.
|
|
84
|
+
*/
|
|
85
|
+
export function getEarlyErrorRelayScript() {
|
|
86
|
+
return `(${relayPreloadErrorsToParent.toString()})(window);`;
|
|
87
|
+
}
|
|
88
|
+
//# sourceMappingURL=early-error-relay.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"early-error-relay.js","sourceRoot":"","sources":["../src/early-error-relay.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,MAAM,UAAU,0BAA0B,CAAC,GAAW;IACpD,IAAI,CAAC,GAAG,IAAI,GAAG,CAAC,MAAM,KAAK,GAAG;QAAE,OAAO;IACvC,+EAA+E;IAC/E,8EAA8E;IAC9E,2EAA2E;IAC3E,qDAAqD;IACrD,IAAK,GAA6C,CAAC,aAAa,KAAK,KAAK,EAAE,CAAC;QAC3E,OAAO;IACT,CAAC;IAED,IAAI,QAAQ,GAAG,KAAK,CAAC;IAErB,MAAM,KAAK,GAAG,CAAC,OAAe,EAAQ,EAAE;QACtC,MAAM,CAAC,GAAG,GAET,CAAC;QACF,kEAAkE;QAClE,EAAE;QACF,iEAAiE;QACjE,sEAAsE;QACtE,2EAA2E;QAC3E,8EAA8E;QAC9E,wEAAwE;QACxE,mEAAmE;QACnE,IAAI,CAAC,CAAC,iCAAiC,KAAK,IAAI;YAAE,OAAO;QACzD,IAAI,QAAQ;YAAE,OAAO;QACrB,QAAQ,GAAG,IAAI,CAAC;QAChB,IAAI,CAAC;YACH,uEAAuE;YACvE,sEAAsE;YACtE,kEAAkE;YAClE,GAAG,CAAC,MAAM,CAAC,WAAW,CACpB;gBACE,IAAI,EAAE,eAAe;gBACrB,mEAAmE;gBACnE,sEAAsE;gBACtE,6DAA6D;gBAC7D,OAAO,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE;gBAClD,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;aACtB,EACD,GAAG,CACJ,CAAC;QACJ,CAAC;QAAC,OAAO,EAAE,EAAE,CAAC;YACZ,uEAAuE;QACzE,CAAC;IACH,CAAC,CAAC;IAEF,GAAG,CAAC,gBAAgB,CAAC,OAAO,EAAE,CAAC,KAAiB,EAAE,EAAE;QAClD,MAAM,GAAG,GAAG,KAAK,CAAC,KAAyD,CAAC;QAC5E,MAAM,OAAO,GACX,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,IAAI,GAAG,CAAC,OAAO,CAAC,CAAC,IAAI,KAAK,CAAC,OAAO,IAAI,eAAe,CAAC;QAC1E,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC;IACzB,CAAC,CAAC,CAAC;IAEH,GAAG,CAAC,gBAAgB,CAAC,oBAAoB,EAAE,CAAC,KAA4B,EAAE,EAAE;QAC1E,MAAM,MAAM,GAAG,KAAK,CAAC,MAER,CAAC;QACd,MAAM,OAAO,GACX,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,KAAK,IAAI,MAAM,CAAC,OAAO,CAAC,CAAC;YAC5C,MAAM,CAAC,MAAM,CAAC;YACd,6BAA6B,CAAC;QAChC,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC;IACzB,CAAC,CAAC,CAAC;AACL,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,wBAAwB;IACtC,OAAO,IAAI,0BAA0B,CAAC,QAAQ,EAAE,YAAY,CAAC;AAC/D,CAAC"}
|
|
@@ -1,8 +1,33 @@
|
|
|
1
|
-
import type { Plugin } from "vite";
|
|
1
|
+
import type { Plugin, ViteDevServer } from "vite";
|
|
2
|
+
import { ContextFlushScheduler } from "./ai-service/context-flush-scheduler.js";
|
|
3
|
+
import type { AiService } from "./ai-service/index.js";
|
|
2
4
|
import type { FileSyncPluginOptions, FileSyncPluginParams } from "./plugin-options.js";
|
|
5
|
+
import type { SyncService } from "./sync-service/index.js";
|
|
6
|
+
import type { Logger } from "./util/logger.js";
|
|
3
7
|
export declare const PLUGIN_NAME = "sb-file-sync";
|
|
8
|
+
export declare function createGenerationFreshnessTracker(): {
|
|
9
|
+
markStarted: (generationId: string) => void;
|
|
10
|
+
isLatest: (generationId: string) => boolean;
|
|
11
|
+
};
|
|
12
|
+
interface GenerationCompletedFileSyncParams {
|
|
13
|
+
aiService: Pick<AiService, "handleClearBuildSystemErrors" | "hasConnectedPeer">;
|
|
14
|
+
contextFlushScheduler: Pick<ContextFlushScheduler, "flushNow"> | undefined;
|
|
15
|
+
hasHadAnyDrafts: boolean;
|
|
16
|
+
isFirstContentfulGeneration: boolean;
|
|
17
|
+
isLatestGeneration?: () => boolean;
|
|
18
|
+
logger: Logger;
|
|
19
|
+
producedDraft: boolean;
|
|
20
|
+
server: {
|
|
21
|
+
ws: Pick<ViteDevServer["ws"], "send">;
|
|
22
|
+
};
|
|
23
|
+
syncService: Pick<SyncService, "applicationId" | "branchName" | "uploadDirectory" | "uploadDirectoryNowIfNeeded">;
|
|
24
|
+
}
|
|
25
|
+
export declare function handleGenerationCompletedFileSync({ aiService, contextFlushScheduler, hasHadAnyDrafts, isFirstContentfulGeneration, isLatestGeneration, logger, producedDraft, server, syncService, }: GenerationCompletedFileSyncParams): Promise<{
|
|
26
|
+
isFirstContentfulGeneration: boolean;
|
|
27
|
+
}>;
|
|
4
28
|
export declare function fileSyncVitePlugin(pluginParams?: FileSyncPluginParams, options?: FileSyncPluginOptions): {
|
|
5
29
|
plugin: Plugin[];
|
|
6
30
|
dispose: () => void;
|
|
7
31
|
};
|
|
32
|
+
export {};
|
|
8
33
|
//# sourceMappingURL=file-sync-vite-plugin.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"file-sync-vite-plugin.d.ts","sourceRoot":"","sources":["../src/file-sync-vite-plugin.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,MAAM,EAA0B,MAAM,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"file-sync-vite-plugin.d.ts","sourceRoot":"","sources":["../src/file-sync-vite-plugin.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,MAAM,EAA0B,aAAa,EAAE,MAAM,MAAM,CAAC;AAY1E,OAAO,EAAE,qBAAqB,EAAE,MAAM,yCAAyC,CAAC;AAEhF,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAyBvD,OAAO,KAAK,EACV,qBAAqB,EACrB,oBAAoB,EACrB,MAAM,qBAAqB,CAAC;AAO7B,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAK3D,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AA0C/C,eAAO,MAAM,WAAW,iBAAiB,CAAC;AAE1C,wBAAgB,gCAAgC,IAAI;IAClD,WAAW,EAAE,CAAC,YAAY,EAAE,MAAM,KAAK,IAAI,CAAC;IAC5C,QAAQ,EAAE,CAAC,YAAY,EAAE,MAAM,KAAK,OAAO,CAAC;CAC7C,CAQA;AAED,UAAU,iCAAiC;IACzC,SAAS,EAAE,IAAI,CACb,SAAS,EACT,8BAA8B,GAAG,kBAAkB,CACpD,CAAC;IACF,qBAAqB,EAAE,IAAI,CAAC,qBAAqB,EAAE,UAAU,CAAC,GAAG,SAAS,CAAC;IAC3E,eAAe,EAAE,OAAO,CAAC;IACzB,2BAA2B,EAAE,OAAO,CAAC;IACrC,kBAAkB,CAAC,EAAE,MAAM,OAAO,CAAC;IACnC,MAAM,EAAE,MAAM,CAAC;IACf,aAAa,EAAE,OAAO,CAAC;IACvB,MAAM,EAAE;QAAE,EAAE,EAAE,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC,CAAA;KAAE,CAAC;IAClD,WAAW,EAAE,IAAI,CACf,WAAW,EACT,eAAe,GACf,YAAY,GACZ,iBAAiB,GACjB,4BAA4B,CAC/B,CAAC;CACH;AAED,wBAAsB,iCAAiC,CAAC,EACtD,SAAS,EACT,qBAAqB,EACrB,eAAe,EACf,2BAA2B,EAC3B,kBAA+B,EAC/B,MAAM,EACN,aAAa,EACb,MAAM,EACN,WAAW,GACZ,EAAE,iCAAiC,GAAG,OAAO,CAAC;IAC7C,2BAA2B,EAAE,OAAO,CAAC;CACtC,CAAC,CAsED;AAED,wBAAgB,kBAAkB,CAChC,YAAY,CAAC,EAAE,oBAAoB,EACnC,OAAO,CAAC,EAAE,qBAAqB,GAC9B;IAAE,MAAM,EAAE,MAAM,EAAE,CAAC;IAAC,OAAO,EAAE,MAAM,IAAI,CAAA;CAAE,CA+iD3C"}
|