veryfront 0.1.1189 → 0.1.1190
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/esm/cli/commands/analyze-chunks/command.d.ts.map +1 -1
- package/esm/cli/commands/analyze-chunks/command.js +3 -1
- package/esm/cli/commands/schedule/command-help.d.ts.map +1 -1
- package/esm/cli/commands/schedule/command-help.js +5 -1
- package/esm/cli/commands/schedule/handler.d.ts +17 -0
- package/esm/cli/commands/schedule/handler.d.ts.map +1 -1
- package/esm/cli/commands/schedule/handler.js +119 -29
- package/esm/cli/commands/webhook/command-help.d.ts.map +1 -1
- package/esm/cli/commands/webhook/command-help.js +5 -1
- package/esm/cli/commands/webhook/handler.d.ts +5 -0
- package/esm/cli/commands/webhook/handler.d.ts.map +1 -1
- package/esm/cli/commands/webhook/handler.js +62 -7
- package/esm/cli/templates/manifest.js +2 -2
- package/esm/deno.js +6 -3
- package/esm/src/agent/conversation/durable.d.ts.map +1 -1
- package/esm/src/agent/conversation/durable.js +61 -50
- package/esm/src/agent/conversation/private-run-event.d.ts +13 -0
- package/esm/src/agent/conversation/private-run-event.d.ts.map +1 -0
- package/esm/src/agent/conversation/private-run-event.js +38 -0
- package/esm/src/agent/conversation/run-event-limits.d.ts +6 -3
- package/esm/src/agent/conversation/run-event-limits.d.ts.map +1 -1
- package/esm/src/agent/conversation/run-event-limits.js +17 -3
- package/esm/src/agent/conversation/run-event-normalization.d.ts.map +1 -1
- package/esm/src/agent/conversation/run-event-normalization.js +5 -3
- package/esm/src/agent/hosted/chat-execution-runtime.d.ts +3 -3
- package/esm/src/agent/hosted/chat-execution-runtime.d.ts.map +1 -1
- package/esm/src/agent/hosted/chat-execution-runtime.js +14 -16
- package/esm/src/agent/hosted/child-fork-execution-runner.d.ts.map +1 -1
- package/esm/src/agent/hosted/child-fork-execution-runner.js +10 -12
- package/esm/src/agent/hosted/durable-run-event-sink.d.ts +10 -0
- package/esm/src/agent/hosted/durable-run-event-sink.d.ts.map +1 -0
- package/esm/src/agent/hosted/durable-run-event-sink.js +102 -0
- package/esm/src/agent/index.d.ts +2 -1
- package/esm/src/agent/index.d.ts.map +1 -1
- package/esm/src/agent/index.js +1 -0
- package/esm/src/agent/runtime/index.d.ts.map +1 -1
- package/esm/src/agent/runtime/index.js +0 -6
- package/esm/src/agent/types.d.ts +0 -7
- package/esm/src/agent/types.d.ts.map +1 -1
- package/esm/src/discovery/handlers/schedule-handler.d.ts.map +1 -1
- package/esm/src/discovery/handlers/schedule-handler.js +2 -1
- package/esm/src/discovery/handlers/webhook-handler.d.ts.map +1 -1
- package/esm/src/discovery/handlers/webhook-handler.js +2 -1
- package/esm/src/embedding/local-json-store-lock.d.ts +15 -0
- package/esm/src/embedding/local-json-store-lock.d.ts.map +1 -0
- package/esm/src/embedding/local-json-store-lock.js +457 -0
- package/esm/src/embedding/rag-store.d.ts.map +1 -1
- package/esm/src/embedding/rag-store.js +342 -165
- package/esm/src/errors/error-registry/agent.d.ts +2 -0
- package/esm/src/errors/error-registry/agent.d.ts.map +1 -1
- package/esm/src/errors/error-registry/agent.js +8 -0
- package/esm/src/errors/error-registry/server.d.ts +6 -0
- package/esm/src/errors/error-registry/server.d.ts.map +1 -1
- package/esm/src/errors/error-registry/server.js +18 -0
- package/esm/src/errors/error-registry.d.ts +3 -0
- package/esm/src/errors/error-registry.d.ts.map +1 -1
- package/esm/src/errors/index.d.ts +1 -1
- package/esm/src/errors/index.d.ts.map +1 -1
- package/esm/src/errors/index.js +2 -2
- package/esm/src/extensions/builtin-extensions.d.ts +10 -10
- package/esm/src/extensions/builtin-extensions.d.ts.map +1 -1
- package/esm/src/extensions/builtin-extensions.js +22 -63
- package/esm/src/extensions/first-party-defaults.d.ts +105 -0
- package/esm/src/extensions/first-party-defaults.d.ts.map +1 -0
- package/esm/src/extensions/first-party-defaults.js +178 -0
- package/esm/src/extensions/orchestrate.d.ts.map +1 -1
- package/esm/src/extensions/orchestrate.js +41 -4
- package/esm/src/extensions/websocket/node-websocket-server-provider.d.ts +4 -4
- package/esm/src/extensions/websocket/node-websocket-server-provider.d.ts.map +1 -1
- package/esm/src/extensions/websocket/node-websocket-server-provider.js +4 -4
- package/esm/src/html/hydration-script-builder/hydration-runtime.generated.js +1 -1
- package/esm/src/observability/instruments/instruments-factory.d.ts.map +1 -1
- package/esm/src/observability/instruments/instruments-factory.js +0 -8
- package/esm/src/observability/metrics/index.d.ts +1 -14
- package/esm/src/observability/metrics/index.d.ts.map +1 -1
- package/esm/src/observability/metrics/index.js +0 -28
- package/esm/src/observability/metrics/recorder.d.ts +1 -9
- package/esm/src/observability/metrics/recorder.d.ts.map +1 -1
- package/esm/src/observability/metrics/recorder.js +0 -12
- package/esm/src/observability/metrics/types.d.ts +0 -12
- package/esm/src/observability/metrics/types.d.ts.map +1 -1
- package/esm/src/observability/metrics/types.js +1 -17
- package/esm/src/platform/adapters/file-snapshot-error.d.ts +7 -0
- package/esm/src/platform/adapters/file-snapshot-error.d.ts.map +1 -1
- package/esm/src/platform/adapters/file-snapshot-error.js +13 -0
- package/esm/src/platform/adapters/fs/cache/size-estimator.d.ts.map +1 -1
- package/esm/src/platform/adapters/fs/cache/size-estimator.js +12 -2
- package/esm/src/platform/adapters/fs/github/cache-scope.d.ts +8 -0
- package/esm/src/platform/adapters/fs/github/cache-scope.d.ts.map +1 -0
- package/esm/src/platform/adapters/fs/github/cache-scope.js +12 -0
- package/esm/src/platform/adapters/fs/github/directory-operations.d.ts.map +1 -1
- package/esm/src/platform/adapters/fs/github/directory-operations.js +2 -1
- package/esm/src/platform/adapters/fs/github/path-utils.d.ts.map +1 -1
- package/esm/src/platform/adapters/fs/github/path-utils.js +27 -4
- package/esm/src/platform/adapters/fs/github/read-operations.d.ts.map +1 -1
- package/esm/src/platform/adapters/fs/github/read-operations.js +4 -3
- package/esm/src/platform/adapters/fs/github/stat-operations.d.ts.map +1 -1
- package/esm/src/platform/adapters/fs/github/stat-operations.js +3 -2
- package/esm/src/platform/adapters/fs/integration.d.ts.map +1 -1
- package/esm/src/platform/adapters/fs/integration.js +4 -0
- package/esm/src/platform/adapters/fs/veryfront/adapter-helpers.d.ts.map +1 -1
- package/esm/src/platform/adapters/fs/veryfront/adapter-helpers.js +21 -6
- package/esm/src/platform/adapters/fs/veryfront/path-normalizer.d.ts +2 -0
- package/esm/src/platform/adapters/fs/veryfront/path-normalizer.d.ts.map +1 -1
- package/esm/src/platform/adapters/fs/veryfront/path-normalizer.js +57 -5
- package/esm/src/platform/adapters/fs/veryfront/retry.d.ts.map +1 -1
- package/esm/src/platform/adapters/fs/veryfront/retry.js +66 -13
- package/esm/src/platform/adapters/fs/veryfront/types.d.ts +3 -1
- package/esm/src/platform/adapters/fs/veryfront/types.d.ts.map +1 -1
- package/esm/src/platform/adapters/mock.d.ts.map +1 -1
- package/esm/src/platform/adapters/mock.js +3 -7
- package/esm/src/platform/adapters/path-containment.d.ts +9 -0
- package/esm/src/platform/adapters/path-containment.d.ts.map +1 -0
- package/esm/src/platform/adapters/path-containment.js +13 -0
- package/esm/src/platform/adapters/runtime/shared/native-snapshot-identity.d.ts +13 -0
- package/esm/src/platform/adapters/runtime/shared/native-snapshot-identity.d.ts.map +1 -0
- package/esm/src/platform/adapters/runtime/shared/native-snapshot-identity.js +12 -0
- package/esm/src/platform/adapters/runtime/shared/node-filesystem-adapter.d.ts +7 -0
- package/esm/src/platform/adapters/runtime/shared/node-filesystem-adapter.d.ts.map +1 -1
- package/esm/src/platform/adapters/runtime/shared/node-filesystem-adapter.js +62 -18
- package/esm/src/rendering/app-route-resolver.d.ts +4 -5
- package/esm/src/rendering/app-route-resolver.d.ts.map +1 -1
- package/esm/src/rendering/app-route-resolver.js +142 -87
- package/esm/src/rendering/chunk-optimizer/contracts.d.ts +49 -0
- package/esm/src/rendering/chunk-optimizer/contracts.d.ts.map +1 -0
- package/esm/src/rendering/chunk-optimizer/contracts.js +1 -0
- package/esm/src/rendering/chunk-optimizer/data-properties.d.ts +12 -0
- package/esm/src/rendering/chunk-optimizer/data-properties.d.ts.map +1 -0
- package/esm/src/rendering/chunk-optimizer/data-properties.js +24 -0
- package/esm/src/rendering/chunk-optimizer/file-discovery.d.ts +3 -0
- package/esm/src/rendering/chunk-optimizer/file-discovery.d.ts.map +1 -0
- package/esm/src/rendering/chunk-optimizer/file-discovery.js +167 -0
- package/esm/src/rendering/chunk-optimizer/filesystem.d.ts +7 -0
- package/esm/src/rendering/chunk-optimizer/filesystem.d.ts.map +1 -0
- package/esm/src/rendering/chunk-optimizer/filesystem.js +51 -0
- package/esm/src/rendering/chunk-optimizer/limits.d.ts +23 -0
- package/esm/src/rendering/chunk-optimizer/limits.d.ts.map +1 -0
- package/esm/src/rendering/chunk-optimizer/limits.js +22 -0
- package/esm/src/rendering/chunk-optimizer/manifest.d.ts +4 -0
- package/esm/src/rendering/chunk-optimizer/manifest.d.ts.map +1 -0
- package/esm/src/rendering/chunk-optimizer/manifest.js +220 -0
- package/esm/src/rendering/chunk-optimizer/source-imports.d.ts +9 -0
- package/esm/src/rendering/chunk-optimizer/source-imports.d.ts.map +1 -0
- package/esm/src/rendering/chunk-optimizer/source-imports.js +359 -0
- package/esm/src/rendering/chunk-optimizer/specifier.d.ts +5 -0
- package/esm/src/rendering/chunk-optimizer/specifier.d.ts.map +1 -0
- package/esm/src/rendering/chunk-optimizer/specifier.js +10 -0
- package/esm/src/rendering/chunk-optimizer/suggestions.d.ts +3 -0
- package/esm/src/rendering/chunk-optimizer/suggestions.d.ts.map +1 -0
- package/esm/src/rendering/chunk-optimizer/suggestions.js +164 -0
- package/esm/src/rendering/chunk-optimizer.d.ts +10 -43
- package/esm/src/rendering/chunk-optimizer.d.ts.map +1 -1
- package/esm/src/rendering/chunk-optimizer.js +39 -161
- package/esm/src/rendering/orchestrator/pipeline.d.ts.map +1 -1
- package/esm/src/rendering/orchestrator/pipeline.js +6 -2
- package/esm/src/rendering/page-resolution/page-resolver.d.ts +3 -2
- package/esm/src/rendering/page-resolution/page-resolver.d.ts.map +1 -1
- package/esm/src/rendering/page-resolution/page-resolver.js +21 -10
- package/esm/src/runtime/model-call-context.d.ts +7 -4
- package/esm/src/runtime/model-call-context.d.ts.map +1 -1
- package/esm/src/runtime/run-event-sink-context.d.ts +17 -0
- package/esm/src/runtime/run-event-sink-context.d.ts.map +1 -0
- package/esm/src/runtime/run-event-sink-context.js +47 -0
- package/esm/src/runtime/runtime-bridge.d.ts +0 -3
- package/esm/src/runtime/runtime-bridge.d.ts.map +1 -1
- package/esm/src/runtime/runtime-bridge.js +26 -8
- package/esm/src/security/http/outbound-fetch.d.ts +1 -0
- package/esm/src/security/http/outbound-fetch.d.ts.map +1 -1
- package/esm/src/security/http/outbound-fetch.js +14 -0
- package/esm/src/server/bootstrap.d.ts +1 -1
- package/esm/src/server/bootstrap.d.ts.map +1 -1
- package/esm/src/server/bootstrap.js +1 -1
- package/esm/src/server/dev-server/server.d.ts +1 -1
- package/esm/src/server/dev-server/server.d.ts.map +1 -1
- package/esm/src/server/dev-server/server.js +1 -1
- package/esm/src/server/handlers/request/api/api-handler-wrapper.d.ts.map +1 -1
- package/esm/src/server/handlers/request/api/api-handler-wrapper.js +7 -3
- package/esm/src/server/handlers/request/api/app-router-resolver.d.ts.map +1 -1
- package/esm/src/server/handlers/request/api/app-router-resolver.js +28 -30
- package/esm/src/server/service-server.d.ts +1 -1
- package/esm/src/server/service-server.d.ts.map +1 -1
- package/esm/src/server/services/rsc/endpoints/rsc-bundles.generated.d.ts.map +1 -1
- package/esm/src/server/services/rsc/endpoints/rsc-bundles.generated.js +2 -2
- package/esm/src/types/entities/getEntityInfo.d.ts +57 -3
- package/esm/src/types/entities/getEntityInfo.d.ts.map +1 -1
- package/esm/src/types/entities/getEntityInfo.js +1015 -231
- package/esm/src/types/entities.d.ts +9 -1
- package/esm/src/types/entities.d.ts.map +1 -1
- package/esm/src/types/entities.js +92 -0
- package/esm/src/utils/constants/limits.d.ts +2 -0
- package/esm/src/utils/constants/limits.d.ts.map +1 -1
- package/esm/src/utils/constants/limits.js +2 -0
- package/esm/src/utils/route-path-utils.d.ts +9 -0
- package/esm/src/utils/route-path-utils.d.ts.map +1 -1
- package/esm/src/utils/route-path-utils.js +56 -20
- package/esm/src/utils/version-constant.d.ts +1 -1
- package/esm/src/utils/version-constant.js +1 -1
- package/package.json +8 -6
- package/esm/src/agent/conversation/model-call-context-run-event.d.ts +0 -41
- package/esm/src/agent/conversation/model-call-context-run-event.d.ts.map +0 -1
- package/esm/src/agent/conversation/model-call-context-run-event.js +0 -74
- package/esm/src/agent/hosted/model-call-context-run-event-recorder.d.ts +0 -35
- package/esm/src/agent/hosted/model-call-context-run-event-recorder.d.ts.map +0 -1
- package/esm/src/agent/hosted/model-call-context-run-event-recorder.js +0 -266
- package/esm/src/observability/instruments/model-call-context-instruments.d.ts +0 -18
- package/esm/src/observability/instruments/model-call-context-instruments.d.ts.map +0 -1
- package/esm/src/observability/instruments/model-call-context-instruments.js +0 -25
- package/esm/src/runtime/model-call-recorder-context.d.ts +0 -8
- package/esm/src/runtime/model-call-recorder-context.d.ts.map +0 -1
- package/esm/src/runtime/model-call-recorder-context.js +0 -14
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"command.d.ts","sourceRoot":"","sources":["../../../../src/cli/commands/analyze-chunks/command.ts"],"names":[],"mappings":"AAKA,MAAM,WAAW,oBAAoB;IACnC,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,wBAAsB,oBAAoB,CACxC,OAAO,EAAE,oBAAoB,GAC5B,OAAO,CAAC,IAAI,CAAC,
|
|
1
|
+
{"version":3,"file":"command.d.ts","sourceRoot":"","sources":["../../../../src/cli/commands/analyze-chunks/command.ts"],"names":[],"mappings":"AAKA,MAAM,WAAW,oBAAoB;IACnC,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,wBAAsB,oBAAoB,CACxC,OAAO,EAAE,oBAAoB,GAC5B,OAAO,CAAC,IAAI,CAAC,CA8Ef"}
|
|
@@ -46,7 +46,9 @@ export async function analyzeChunksCommand(options) {
|
|
|
46
46
|
cliLogger.info("Detected heavy UI libraries shared across pages. Break them into dedicated chunks.");
|
|
47
47
|
}
|
|
48
48
|
}
|
|
49
|
-
catch {
|
|
49
|
+
catch (error) {
|
|
50
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
51
|
+
cliLogger.error(`Failed to analyze chunks: ${message}`);
|
|
50
52
|
exit(1);
|
|
51
53
|
}
|
|
52
54
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"command-help.d.ts","sourceRoot":"","sources":["../../../../src/cli/commands/schedule/command-help.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAEvD,eAAO,MAAM,YAAY,EAAE,
|
|
1
|
+
{"version":3,"file":"command-help.d.ts","sourceRoot":"","sources":["../../../../src/cli/commands/schedule/command-help.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAEvD,eAAO,MAAM,YAAY,EAAE,WA+B1B,CAAC"}
|
|
@@ -6,7 +6,7 @@ export const scheduleHelp = {
|
|
|
6
6
|
options: [
|
|
7
7
|
{
|
|
8
8
|
flag: "--input <file>",
|
|
9
|
-
description: "JSON
|
|
9
|
+
description: "JSON object file to override the schedule input (run only)",
|
|
10
10
|
},
|
|
11
11
|
{
|
|
12
12
|
flag: "--remote",
|
|
@@ -16,6 +16,10 @@ export const scheduleHelp = {
|
|
|
16
16
|
flag: "--json",
|
|
17
17
|
description: "Output as JSON",
|
|
18
18
|
},
|
|
19
|
+
{
|
|
20
|
+
flag: "--debug",
|
|
21
|
+
description: "Enable debug logging (run only)",
|
|
22
|
+
},
|
|
19
23
|
],
|
|
20
24
|
examples: [
|
|
21
25
|
"veryfront schedule list",
|
|
@@ -5,6 +5,23 @@ interface RemoteSchedulePollOptions {
|
|
|
5
5
|
now?: () => number;
|
|
6
6
|
sleep?: (delayMs: number) => Promise<void>;
|
|
7
7
|
}
|
|
8
|
+
interface LocalScheduleTimeoutOptions {
|
|
9
|
+
maxDelaySeconds?: number;
|
|
10
|
+
setTimer?: (callback: () => void, delayMs: number) => ReturnType<typeof setTimeout>;
|
|
11
|
+
clearTimer?: (timerId: ReturnType<typeof setTimeout>) => void;
|
|
12
|
+
}
|
|
13
|
+
export interface LocalScheduleTimeout {
|
|
14
|
+
readonly signal: AbortSignal | undefined;
|
|
15
|
+
dispose(): void;
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* Create a disposable cooperative timeout for one local schedule execution.
|
|
19
|
+
*
|
|
20
|
+
* Long durations are armed in bounded chunks so timer coercion cannot shorten
|
|
21
|
+
* the configured deadline.
|
|
22
|
+
*/
|
|
23
|
+
export declare function createLocalScheduleTimeout(timeoutSeconds: number | undefined, options?: LocalScheduleTimeoutOptions): LocalScheduleTimeout;
|
|
24
|
+
export declare function normalizeLocalScheduleInput(value: unknown): Record<string, unknown>;
|
|
8
25
|
export declare function waitForRemoteScheduleRun(client: Pick<VeryfrontRunsClient, "get">, accepted: CreateScheduleRunFromSourceResult, options?: RemoteSchedulePollOptions): Promise<Run>;
|
|
9
26
|
export declare function formatRemoteScheduleRunOutput(run: Run): Record<string, unknown>;
|
|
10
27
|
export declare function resolveRemoteScheduleTarget(run: Run, fallback: TriggerTarget): TriggerTarget;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"handler.d.ts","sourceRoot":"","sources":["../../../../src/cli/commands/schedule/handler.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAUxD,OAAO,EAEL,KAAK,iCAAiC,EACtC,KAAK,GAAG,EACR,KAAK,mBAAmB,EACzB,MAAM,4BAA4B,CAAC;AAEpC,OAAO,
|
|
1
|
+
{"version":3,"file":"handler.d.ts","sourceRoot":"","sources":["../../../../src/cli/commands/schedule/handler.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAUxD,OAAO,EAEL,KAAK,iCAAiC,EACtC,KAAK,GAAG,EACR,KAAK,mBAAmB,EACzB,MAAM,4BAA4B,CAAC;AAEpC,OAAO,EAIL,KAAK,aAAa,EACnB,MAAM,+BAA+B,CAAC;AAyDvC,UAAU,yBAAyB;IACjC,GAAG,CAAC,EAAE,MAAM,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CAC5C;AAED,UAAU,2BAA2B;IACnC,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,IAAI,EAAE,OAAO,EAAE,MAAM,KAAK,UAAU,CAAC,OAAO,UAAU,CAAC,CAAC;IACpF,UAAU,CAAC,EAAE,CAAC,OAAO,EAAE,UAAU,CAAC,OAAO,UAAU,CAAC,KAAK,IAAI,CAAC;CAC/D;AAED,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,MAAM,EAAE,WAAW,GAAG,SAAS,CAAC;IACzC,OAAO,IAAI,IAAI,CAAC;CACjB;AAED;;;;;GAKG;AACH,wBAAgB,0BAA0B,CACxC,cAAc,EAAE,MAAM,GAAG,SAAS,EAClC,OAAO,GAAE,2BAAgC,GACxC,oBAAoB,CAmDtB;AAED,wBAAgB,2BAA2B,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAOnF;AAED,wBAAsB,wBAAwB,CAC5C,MAAM,EAAE,IAAI,CAAC,mBAAmB,EAAE,KAAK,CAAC,EACxC,QAAQ,EAAE,iCAAiC,EAC3C,OAAO,GAAE,yBAA8B,GACtC,OAAO,CAAC,GAAG,CAAC,CAwDd;AAED,wBAAgB,6BAA6B,CAAC,GAAG,EAAE,GAAG,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAO/E;AAED,wBAAgB,2BAA2B,CAAC,GAAG,EAAE,GAAG,EAAE,QAAQ,EAAE,aAAa,GAAG,aAAa,CAiB5F;AAiCD,wBAAsB,qBAAqB,CAAC,IAAI,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAgH3E"}
|
|
@@ -7,13 +7,17 @@ import { defineSchema, lazySchema } from "../../../src/schemas/index.js";
|
|
|
7
7
|
import { DEPLOYMENT_ERROR, DEPLOYMENT_VERIFICATION_TIMEOUT, INVALID_ARGUMENT, RESOURCE_NOT_FOUND, } from "../../../src/errors/index.js";
|
|
8
8
|
import { createRunsClient, } from "../../../src/runs/index.js";
|
|
9
9
|
import { discoverSchedules } from "../../../src/schedule/index.js";
|
|
10
|
-
import { runTriggerTarget } from "../../../src/trigger/index.js";
|
|
10
|
+
import { isTriggerId, isTriggerTarget, runTriggerTarget, } from "../../../src/trigger/index.js";
|
|
11
11
|
import { outputTriggerList, outputTriggerRun, readJsonFile } from "../trigger-utils.js";
|
|
12
12
|
const REMOTE_SCHEDULE_POLL_INTERVAL_MS = 1_000;
|
|
13
13
|
const REMOTE_SCHEDULE_TIMEOUT_GRACE_MS = 30_000;
|
|
14
14
|
// Bound how long the CLI waits for dispatch without consuming the cloud run's
|
|
15
15
|
// execution budget. The run remains durable in Veryfront if this wait expires.
|
|
16
16
|
const REMOTE_SCHEDULE_QUEUE_WAIT_TIMEOUT_MS = 5 * 60_000;
|
|
17
|
+
// Deno and Node both clamp longer setTimeout delays. Chaining bounded chunks
|
|
18
|
+
// preserves the authored timeout instead of firing early after host coercion.
|
|
19
|
+
const MAX_HOST_TIMER_DELAY_MS = 2 ** 31 - 1;
|
|
20
|
+
const MAX_TIMER_DELAY_SECONDS = Math.floor(MAX_HOST_TIMER_DELAY_MS / 1_000);
|
|
17
21
|
const getScheduleArgsSchema = defineSchema((v) => v.object({
|
|
18
22
|
action: v.enum(["run", "list"]).optional(),
|
|
19
23
|
id: v.string().optional(),
|
|
@@ -49,7 +53,70 @@ async function handleScheduleList(_args) {
|
|
|
49
53
|
});
|
|
50
54
|
});
|
|
51
55
|
}
|
|
56
|
+
/**
|
|
57
|
+
* Create a disposable cooperative timeout for one local schedule execution.
|
|
58
|
+
*
|
|
59
|
+
* Long durations are armed in bounded chunks so timer coercion cannot shorten
|
|
60
|
+
* the configured deadline.
|
|
61
|
+
*/
|
|
62
|
+
export function createLocalScheduleTimeout(timeoutSeconds, options = {}) {
|
|
63
|
+
if (timeoutSeconds === undefined) {
|
|
64
|
+
return { signal: undefined, dispose() { } };
|
|
65
|
+
}
|
|
66
|
+
if (!Number.isSafeInteger(timeoutSeconds) || timeoutSeconds <= 0) {
|
|
67
|
+
throw new TypeError("Local schedule timeout must be a positive safe integer.");
|
|
68
|
+
}
|
|
69
|
+
const maxDelaySeconds = options.maxDelaySeconds ?? MAX_TIMER_DELAY_SECONDS;
|
|
70
|
+
if (!Number.isSafeInteger(maxDelaySeconds) || maxDelaySeconds <= 0) {
|
|
71
|
+
throw new TypeError("Local schedule timer chunk must be a positive safe integer.");
|
|
72
|
+
}
|
|
73
|
+
const setTimer = options.setTimer ?? globalThis.setTimeout;
|
|
74
|
+
const clearTimer = options.clearTimer ?? globalThis.clearTimeout;
|
|
75
|
+
const controller = new AbortController();
|
|
76
|
+
let remainingSeconds = timeoutSeconds;
|
|
77
|
+
let timerId;
|
|
78
|
+
let disposed = false;
|
|
79
|
+
const armNextChunk = () => {
|
|
80
|
+
if (disposed || controller.signal.aborted)
|
|
81
|
+
return;
|
|
82
|
+
const delaySeconds = Math.min(remainingSeconds, maxDelaySeconds);
|
|
83
|
+
remainingSeconds -= delaySeconds;
|
|
84
|
+
timerId = setTimer(() => {
|
|
85
|
+
timerId = undefined;
|
|
86
|
+
if (disposed)
|
|
87
|
+
return;
|
|
88
|
+
if (remainingSeconds > 0) {
|
|
89
|
+
armNextChunk();
|
|
90
|
+
return;
|
|
91
|
+
}
|
|
92
|
+
controller.abort(new DOMException("Local schedule execution exceeded its configured timeout.", "TimeoutError"));
|
|
93
|
+
}, delaySeconds * 1_000);
|
|
94
|
+
};
|
|
95
|
+
armNextChunk();
|
|
96
|
+
return {
|
|
97
|
+
signal: controller.signal,
|
|
98
|
+
dispose() {
|
|
99
|
+
disposed = true;
|
|
100
|
+
if (timerId !== undefined) {
|
|
101
|
+
clearTimer(timerId);
|
|
102
|
+
timerId = undefined;
|
|
103
|
+
}
|
|
104
|
+
},
|
|
105
|
+
};
|
|
106
|
+
}
|
|
107
|
+
export function normalizeLocalScheduleInput(value) {
|
|
108
|
+
if (value === null || typeof value !== "object" || Array.isArray(value)) {
|
|
109
|
+
throw INVALID_ARGUMENT.create({
|
|
110
|
+
detail: "--input JSON file must contain a JSON object.",
|
|
111
|
+
});
|
|
112
|
+
}
|
|
113
|
+
return value;
|
|
114
|
+
}
|
|
52
115
|
export async function waitForRemoteScheduleRun(client, accepted, options = {}) {
|
|
116
|
+
if (!Number.isSafeInteger(accepted.timeoutSeconds) ||
|
|
117
|
+
accepted.timeoutSeconds <= 0) {
|
|
118
|
+
throw new Error("Remote schedule returned an invalid execution timeout.");
|
|
119
|
+
}
|
|
53
120
|
const now = options.now ?? Date.now;
|
|
54
121
|
const sleep = options.sleep ??
|
|
55
122
|
((delayMs) => new Promise((resolve) => setTimeout(resolve, delayMs)));
|
|
@@ -79,7 +146,8 @@ export async function waitForRemoteScheduleRun(client, accepted, options = {}) {
|
|
|
79
146
|
throw DEPLOYMENT_ERROR.create({ detail: `Scheduled run was cancelled: ${runId}` });
|
|
80
147
|
}
|
|
81
148
|
const recordedTimeoutSeconds = run.timeout_seconds;
|
|
82
|
-
const executionTimeoutSeconds = recordedTimeoutSeconds
|
|
149
|
+
const executionTimeoutSeconds = Number.isSafeInteger(recordedTimeoutSeconds) &&
|
|
150
|
+
recordedTimeoutSeconds !== null &&
|
|
83
151
|
recordedTimeoutSeconds > 0
|
|
84
152
|
? recordedTimeoutSeconds
|
|
85
153
|
: accepted.timeoutSeconds;
|
|
@@ -109,17 +177,26 @@ export function formatRemoteScheduleRunOutput(run) {
|
|
|
109
177
|
};
|
|
110
178
|
}
|
|
111
179
|
export function resolveRemoteScheduleTarget(run, fallback) {
|
|
112
|
-
|
|
113
|
-
|
|
180
|
+
const fallbackTarget = isTriggerTarget(fallback) ? { ...fallback } : null;
|
|
181
|
+
if (!run.target) {
|
|
182
|
+
if (fallbackTarget !== null)
|
|
183
|
+
return fallbackTarget;
|
|
184
|
+
throw new Error("Remote schedule returned an invalid target.");
|
|
185
|
+
}
|
|
114
186
|
const separator = run.target.indexOf(":");
|
|
115
|
-
if (separator < 1)
|
|
116
|
-
|
|
187
|
+
if (separator < 1) {
|
|
188
|
+
if (fallbackTarget !== null)
|
|
189
|
+
return fallbackTarget;
|
|
190
|
+
throw new Error("Remote schedule returned an invalid target.");
|
|
191
|
+
}
|
|
117
192
|
const kind = run.target.slice(0, separator);
|
|
118
193
|
const id = run.target.slice(separator + 1).trim();
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
194
|
+
const candidate = { kind, id };
|
|
195
|
+
if (isTriggerTarget(candidate))
|
|
196
|
+
return candidate;
|
|
197
|
+
if (fallbackTarget !== null)
|
|
198
|
+
return fallbackTarget;
|
|
199
|
+
throw new Error("Remote schedule returned an invalid target.");
|
|
123
200
|
}
|
|
124
201
|
async function runRemoteSchedule(projectDir, opts) {
|
|
125
202
|
const startedAt = Date.now();
|
|
@@ -133,6 +210,9 @@ async function runRemoteSchedule(projectDir, opts) {
|
|
|
133
210
|
sourceTriggerId: opts.id,
|
|
134
211
|
idempotencyKey: `schedule-cli:${dntShim.crypto.randomUUID()}`,
|
|
135
212
|
});
|
|
213
|
+
if (!isTriggerTarget(accepted.target)) {
|
|
214
|
+
throw new Error("Remote schedule returned an invalid target.");
|
|
215
|
+
}
|
|
136
216
|
const remoteRun = await waitForRemoteScheduleRun(client, accepted);
|
|
137
217
|
await outputTriggerRun({
|
|
138
218
|
command: "schedule",
|
|
@@ -154,7 +234,10 @@ export async function handleScheduleCommand(args) {
|
|
|
154
234
|
throw INVALID_ARGUMENT.create({ detail: "Usage: veryfront schedule run <id>" });
|
|
155
235
|
}
|
|
156
236
|
const projectDir = dntShim.Deno.cwd();
|
|
157
|
-
if (opts.
|
|
237
|
+
if (!isTriggerId(opts.id)) {
|
|
238
|
+
throw INVALID_ARGUMENT.create({ detail: `Invalid schedule id: "${opts.id}".` });
|
|
239
|
+
}
|
|
240
|
+
if (opts.remote && opts.input !== undefined) {
|
|
158
241
|
throw INVALID_ARGUMENT.create({
|
|
159
242
|
detail: "Remote schedule runs use the source already pushed to Veryfront and do not accept --input.",
|
|
160
243
|
});
|
|
@@ -166,7 +249,9 @@ export async function handleScheduleCommand(args) {
|
|
|
166
249
|
}
|
|
167
250
|
await withProjectSourceContext(projectDir, async (context) => {
|
|
168
251
|
const { adapter, config, configCacheKey, projectId } = context;
|
|
169
|
-
const input = opts.input
|
|
252
|
+
const input = opts.input !== undefined
|
|
253
|
+
? await readJsonFile(opts.input, "--input JSON file")
|
|
254
|
+
: undefined;
|
|
170
255
|
const result = await discoverSchedules({
|
|
171
256
|
projectDir,
|
|
172
257
|
adapter,
|
|
@@ -182,10 +267,8 @@ export async function handleScheduleCommand(args) {
|
|
|
182
267
|
if (!schedule) {
|
|
183
268
|
throw RESOURCE_NOT_FOUND.create({ detail: `Schedule "${opts.id}" not found.` });
|
|
184
269
|
}
|
|
185
|
-
const triggerInput = input
|
|
186
|
-
const scheduleConfig = triggerInput
|
|
187
|
-
? triggerInput
|
|
188
|
-
: {};
|
|
270
|
+
const triggerInput = normalizeLocalScheduleInput(opts.input === undefined ? schedule.input ?? {} : input);
|
|
271
|
+
const scheduleConfig = triggerInput;
|
|
189
272
|
const scheduleName = schedule.name ?? schedule.id;
|
|
190
273
|
const scheduleTarget = scheduleConfig._schedule_target;
|
|
191
274
|
const conversationMode = scheduleTarget && typeof scheduleTarget === "object" &&
|
|
@@ -209,17 +292,26 @@ export async function handleScheduleCommand(args) {
|
|
|
209
292
|
},
|
|
210
293
|
}
|
|
211
294
|
: {};
|
|
212
|
-
const
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
295
|
+
const timeout = createLocalScheduleTimeout(schedule.timeoutSeconds);
|
|
296
|
+
const run = await (async () => {
|
|
297
|
+
try {
|
|
298
|
+
return await runTriggerTarget({
|
|
299
|
+
projectDir,
|
|
300
|
+
adapter,
|
|
301
|
+
config,
|
|
302
|
+
cacheKey: configCacheKey,
|
|
303
|
+
projectId,
|
|
304
|
+
target: schedule.target,
|
|
305
|
+
input: triggerInput,
|
|
306
|
+
...agentRunOptions,
|
|
307
|
+
signal: timeout.signal,
|
|
308
|
+
debug: opts.debug,
|
|
309
|
+
});
|
|
310
|
+
}
|
|
311
|
+
finally {
|
|
312
|
+
timeout.dispose();
|
|
313
|
+
}
|
|
314
|
+
})();
|
|
223
315
|
await outputTriggerRun({
|
|
224
316
|
command: "schedule",
|
|
225
317
|
triggerId: schedule.id,
|
|
@@ -227,8 +319,6 @@ export async function handleScheduleCommand(args) {
|
|
|
227
319
|
output: run.output,
|
|
228
320
|
durationMs: run.durationMs,
|
|
229
321
|
});
|
|
230
|
-
}).catch((error) => {
|
|
231
|
-
throw error;
|
|
232
322
|
});
|
|
233
323
|
exitProcess(0);
|
|
234
324
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"command-help.d.ts","sourceRoot":"","sources":["../../../../src/cli/commands/webhook/command-help.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAEvD,eAAO,MAAM,WAAW,EAAE,
|
|
1
|
+
{"version":3,"file":"command-help.d.ts","sourceRoot":"","sources":["../../../../src/cli/commands/webhook/command-help.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAEvD,eAAO,MAAM,WAAW,EAAE,WA0BzB,CAAC"}
|
|
@@ -6,12 +6,16 @@ export const webhookHelp = {
|
|
|
6
6
|
options: [
|
|
7
7
|
{
|
|
8
8
|
flag: "--payload <file>",
|
|
9
|
-
description: "JSON payload fixture (run only)",
|
|
9
|
+
description: "JSON payload fixture (run only; 64 KiB maximum; filters and agent templates are applied)",
|
|
10
10
|
},
|
|
11
11
|
{
|
|
12
12
|
flag: "--json",
|
|
13
13
|
description: "Output as JSON",
|
|
14
14
|
},
|
|
15
|
+
{
|
|
16
|
+
flag: "--debug",
|
|
17
|
+
description: "Enable debug logging (run only)",
|
|
18
|
+
},
|
|
15
19
|
],
|
|
16
20
|
examples: [
|
|
17
21
|
"veryfront webhook list",
|
|
@@ -1,3 +1,8 @@
|
|
|
1
1
|
import type { ParsedArgs } from "../../shared/types.js";
|
|
2
|
+
import { type PreparedWebhookInvocation } from "../../../src/webhook/index.js";
|
|
3
|
+
export declare function toWebhookAgentOptions(invocation: PreparedWebhookInvocation): {
|
|
4
|
+
agentInput?: string;
|
|
5
|
+
agentContext?: Record<string, unknown>;
|
|
6
|
+
};
|
|
2
7
|
export declare function handleWebhookCommand(args: ParsedArgs): Promise<void>;
|
|
3
8
|
//# sourceMappingURL=handler.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"handler.d.ts","sourceRoot":"","sources":["../../../../src/cli/commands/webhook/handler.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"handler.d.ts","sourceRoot":"","sources":["../../../../src/cli/commands/webhook/handler.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAKxD,OAAO,EAGL,KAAK,yBAAyB,EAG/B,MAAM,+BAA+B,CAAC;AA2BvC,wBAAgB,qBAAqB,CACnC,UAAU,EAAE,yBAAyB,GACpC;IACD,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACxC,CA4BA;AA4CD,wBAAsB,oBAAoB,CAAC,IAAI,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAqE1E"}
|
|
@@ -1,12 +1,14 @@
|
|
|
1
1
|
import * as dntShim from "../../../_dnt.shims.js";
|
|
2
2
|
import { createArgParser, parseArgsOrThrow } from "../../shared/args.js";
|
|
3
3
|
import { withProjectSourceContext } from "../../shared/project-source-context.js";
|
|
4
|
-
import { exitProcess } from "../../utils/index.js";
|
|
4
|
+
import { cliLogger, exitProcess } from "../../utils/index.js";
|
|
5
5
|
import { defineSchema, lazySchema } from "../../../src/schemas/index.js";
|
|
6
6
|
import { runTriggerTarget } from "../../../src/trigger/index.js";
|
|
7
|
-
import { discoverWebhooks } from "../../../src/webhook/index.js";
|
|
7
|
+
import { discoverWebhooks, isWebhookId, prepareWebhookInvocation, } from "../../../src/webhook/index.js";
|
|
8
8
|
import { outputTriggerList, outputTriggerRun, readJsonFile } from "../trigger-utils.js";
|
|
9
|
+
import { createSuccessEnvelope, isJsonMode, outputJson } from "../../shared/json-output.js";
|
|
9
10
|
import { INVALID_ARGUMENT } from "../../../src/errors/index.js";
|
|
11
|
+
const FILTERED_REASON = "Webhook event did not match configured filter";
|
|
10
12
|
const getWebhookArgsSchema = defineSchema((v) => v.object({
|
|
11
13
|
action: v.enum(["run", "list"]).optional(),
|
|
12
14
|
id: v.string().optional(),
|
|
@@ -20,6 +22,51 @@ const parseWebhookArgs = createArgParser(WebhookArgsSchema, {
|
|
|
20
22
|
payload: { keys: ["payload"], type: "string" },
|
|
21
23
|
debug: { keys: ["debug"], type: "boolean" },
|
|
22
24
|
});
|
|
25
|
+
export function toWebhookAgentOptions(invocation) {
|
|
26
|
+
const webhook = invocation.definition;
|
|
27
|
+
if (webhook.target.kind !== "agent")
|
|
28
|
+
return {};
|
|
29
|
+
if (webhook.agentMessage?.conversationMode === "existing") {
|
|
30
|
+
throw INVALID_ARGUMENT.create({
|
|
31
|
+
detail: "Local agent webhook runs cannot attach to an existing cloud conversation.",
|
|
32
|
+
});
|
|
33
|
+
}
|
|
34
|
+
if (typeof invocation.agentInput !== "string") {
|
|
35
|
+
throw INVALID_ARGUMENT.create({
|
|
36
|
+
detail: "Local agent webhook runs require a rendered prompt.",
|
|
37
|
+
});
|
|
38
|
+
}
|
|
39
|
+
return {
|
|
40
|
+
agentInput: invocation.agentInput,
|
|
41
|
+
agentContext: {
|
|
42
|
+
trigger: "webhook",
|
|
43
|
+
webhook: {
|
|
44
|
+
id: webhook.id,
|
|
45
|
+
name: webhook.name ?? webhook.id,
|
|
46
|
+
},
|
|
47
|
+
forwardedProps: {
|
|
48
|
+
source: "webhook",
|
|
49
|
+
source_trigger_id: webhook.id,
|
|
50
|
+
payload: invocation.payload,
|
|
51
|
+
},
|
|
52
|
+
},
|
|
53
|
+
};
|
|
54
|
+
}
|
|
55
|
+
async function outputFilteredWebhook(webhook) {
|
|
56
|
+
const result = {
|
|
57
|
+
command: "webhook",
|
|
58
|
+
triggerId: webhook.id,
|
|
59
|
+
target: webhook.target,
|
|
60
|
+
matched: false,
|
|
61
|
+
status: "ignored",
|
|
62
|
+
reason: FILTERED_REASON,
|
|
63
|
+
};
|
|
64
|
+
if (isJsonMode()) {
|
|
65
|
+
await outputJson(createSuccessEnvelope("webhook", result));
|
|
66
|
+
return;
|
|
67
|
+
}
|
|
68
|
+
cliLogger.info(`webhook "${webhook.id}" was ignored: ${FILTERED_REASON}`);
|
|
69
|
+
}
|
|
23
70
|
function formatWebhook(webhook) {
|
|
24
71
|
return `${webhook.id} -> ${webhook.target.kind}:${webhook.target.id}`;
|
|
25
72
|
}
|
|
@@ -54,6 +101,9 @@ export async function handleWebhookCommand(args) {
|
|
|
54
101
|
if (!opts.payload) {
|
|
55
102
|
throw INVALID_ARGUMENT.create({ detail: "webhook run requires --payload <file>" });
|
|
56
103
|
}
|
|
104
|
+
if (!isWebhookId(opts.id)) {
|
|
105
|
+
throw INVALID_ARGUMENT.create({ detail: `Invalid webhook id: "${opts.id}".` });
|
|
106
|
+
}
|
|
57
107
|
const projectDir = dntShim.Deno.cwd();
|
|
58
108
|
const payload = await readJsonFile(opts.payload, "--payload JSON file");
|
|
59
109
|
await withProjectSourceContext(projectDir, async (context) => {
|
|
@@ -67,10 +117,16 @@ export async function handleWebhookCommand(args) {
|
|
|
67
117
|
if (result.errors.length > 0) {
|
|
68
118
|
throw new Error(`Webhook discovery failed: ${result.errors[0]?.message}`);
|
|
69
119
|
}
|
|
70
|
-
const
|
|
71
|
-
if (!
|
|
120
|
+
const discovered = result.items.find((candidate) => candidate.id === opts.id);
|
|
121
|
+
if (!discovered) {
|
|
72
122
|
throw new Error(`Webhook "${opts.id}" not found.`);
|
|
73
123
|
}
|
|
124
|
+
const invocation = prepareWebhookInvocation(discovered, payload);
|
|
125
|
+
const webhook = invocation.definition;
|
|
126
|
+
if (!invocation.matched) {
|
|
127
|
+
await outputFilteredWebhook(webhook);
|
|
128
|
+
return;
|
|
129
|
+
}
|
|
74
130
|
const run = await runTriggerTarget({
|
|
75
131
|
projectDir,
|
|
76
132
|
adapter,
|
|
@@ -78,7 +134,8 @@ export async function handleWebhookCommand(args) {
|
|
|
78
134
|
cacheKey: configCacheKey,
|
|
79
135
|
projectId,
|
|
80
136
|
target: webhook.target,
|
|
81
|
-
input:
|
|
137
|
+
input: invocation.targetInput,
|
|
138
|
+
...toWebhookAgentOptions(invocation),
|
|
82
139
|
debug: opts.debug,
|
|
83
140
|
});
|
|
84
141
|
await outputTriggerRun({
|
|
@@ -88,8 +145,6 @@ export async function handleWebhookCommand(args) {
|
|
|
88
145
|
output: run.output,
|
|
89
146
|
durationMs: run.durationMs,
|
|
90
147
|
});
|
|
91
|
-
}).catch((error) => {
|
|
92
|
-
throw error;
|
|
93
148
|
});
|
|
94
149
|
exitProcess(0);
|
|
95
150
|
}
|
|
@@ -99,11 +99,11 @@ export default {
|
|
|
99
99
|
"app/dashboard/page.tsx": "\"use client\";\n\nimport { useState } from \"react\";\nimport { Chat } from \"veryfront/chat\";\n\ninterface Conversation {\n id: string;\n title: string;\n updatedAt: string;\n}\n\nconst INITIAL_CONVERSATIONS: Conversation[] = [\n { id: \"1\", title: \"Getting started\", updatedAt: \"Just now\" },\n];\n\nexport default function Dashboard(): React.JSX.Element {\n const [conversations] = useState<Conversation[]>(INITIAL_CONVERSATIONS);\n const [activeId, setActiveId] = useState(\"1\");\n\n return (\n <div className=\"flex h-screen bg-white dark:bg-neutral-950\">\n {/* Sidebar */}\n <aside className=\"w-64 border-r border-neutral-200 dark:border-neutral-800 flex flex-col bg-neutral-50 dark:bg-neutral-900\">\n <div className=\"p-4 border-b border-neutral-200 dark:border-neutral-800\">\n <button className=\"w-full flex items-center gap-2 px-3 py-2 text-sm font-medium text-neutral-700 dark:text-neutral-300 bg-white dark:bg-neutral-800 border border-neutral-200 dark:border-neutral-700 rounded-lg hover:bg-neutral-50 dark:hover:bg-neutral-700 transition-colors\">\n <svg\n className=\"w-4 h-4\"\n fill=\"none\"\n viewBox=\"0 0 24 24\"\n stroke=\"currentColor\"\n strokeWidth={2}\n >\n <path\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n d=\"M12 4.5v15m7.5-7.5h-15\"\n />\n </svg>\n New chat\n </button>\n </div>\n\n <nav className=\"flex-1 overflow-y-auto p-2 space-y-0.5\">\n {conversations.map((conv) => (\n <button\n key={conv.id}\n onClick={() => setActiveId(conv.id)}\n className={`w-full text-left px-3 py-2 rounded-lg text-sm transition-colors ${\n activeId === conv.id\n ? \"bg-neutral-200 dark:bg-neutral-800 text-neutral-900 dark:text-white\"\n : \"text-neutral-600 dark:text-neutral-400 hover:bg-neutral-100 dark:hover:bg-neutral-800/50\"\n }`}\n >\n <p className=\"truncate\">{conv.title}</p>\n <p className=\"text-xs text-neutral-400 mt-0.5\">\n {conv.updatedAt}\n </p>\n </button>\n ))}\n </nav>\n\n <div className=\"p-4 border-t border-neutral-200 dark:border-neutral-800\">\n <div className=\"flex items-center gap-2\">\n <div className=\"w-8 h-8 rounded-full bg-neutral-200 dark:bg-neutral-700 flex items-center justify-center text-xs font-medium text-neutral-600 dark:text-neutral-300\">\n U\n </div>\n <div className=\"flex-1 min-w-0\">\n <p className=\"text-sm font-medium text-neutral-900 dark:text-white truncate\">\n User\n </p>\n <p className=\"text-xs text-neutral-500 truncate\">\n user@example.com\n </p>\n </div>\n </div>\n </div>\n </aside>\n\n {/* Chat */}\n <main className=\"flex-1 flex flex-col\">\n <Chat\n agentId=\"assistant\"\n api=\"/api/ag-ui\"\n className=\"flex-1 min-h-0\"\n placeholder=\"Message...\"\n />\n </main>\n </div>\n );\n}\n",
|
|
100
100
|
"app/layout.tsx": "import \"../globals.css\";\nimport { Head } from \"veryfront/head\";\n\nexport default function RootLayout({\n children,\n}: {\n children: React.ReactNode;\n}): React.ReactNode {\n return (\n <>\n <Head>\n <title>AI SaaS</title>\n <link rel=\"icon\" href=\"/favicon.svg\" type=\"image/svg+xml\" />\n </Head>\n <div className=\"antialiased\">\n {children}\n </div>\n </>\n );\n}\n",
|
|
101
101
|
"app/login/page.tsx": "\"use client\";\n\n// Demo sign-in: the buttons below pass straight through to /dashboard so the\n// starter is usable out of the box. To wire up real OAuth, scaffold provider\n// routes at app/api/auth/google/route.ts and app/api/auth/github/route.ts and\n// point the hrefs there. See https://veryfront.com/docs/code/guides/oauth.\nexport default function LoginPage(): React.JSX.Element {\n return (\n <div className=\"min-h-screen flex items-center justify-center bg-neutral-50 dark:bg-neutral-950 px-4\">\n <div className=\"w-full max-w-sm\">\n <div className=\"text-center mb-8\">\n <h1 className=\"text-xl font-bold text-neutral-900 dark:text-white\">\n Welcome back\n </h1>\n <p className=\"text-sm text-neutral-500 dark:text-neutral-400 mt-1\">\n Sign in to continue\n </p>\n </div>\n\n <div className=\"bg-white dark:bg-neutral-900 rounded-2xl border border-neutral-200 dark:border-neutral-800 p-6 space-y-3\">\n <a\n href=\"/dashboard\"\n className=\"flex items-center justify-center gap-2 w-full px-4 py-2.5 border border-neutral-200 dark:border-neutral-800 rounded-xl text-sm font-medium text-neutral-700 dark:text-neutral-300 hover:bg-neutral-50 dark:hover:bg-neutral-800 transition-colors\"\n >\n <svg className=\"w-4 h-4\" viewBox=\"0 0 24 24\">\n <path\n fill=\"#4285F4\"\n d=\"M22.56 12.25c0-.78-.07-1.53-.2-2.25H12v4.26h5.92a5.06 5.06 0 01-2.2 3.32v2.76h3.57c2.08-1.92 3.28-4.74 3.28-8.09z\"\n />\n <path\n fill=\"#34A853\"\n d=\"M12 23c2.97 0 5.46-.98 7.28-2.66l-3.57-2.77c-.98.66-2.23 1.06-3.71 1.06-2.86 0-5.29-1.93-6.16-4.53H2.18v2.84C3.99 20.53 7.7 23 12 23z\"\n />\n <path\n fill=\"#FBBC05\"\n d=\"M5.84 14.09a7.12 7.12 0 010-4.18V7.07H2.18A11.99 11.99 0 001 12c0 1.94.46 3.77 1.18 5.43l3.66-3.34z\"\n />\n <path\n fill=\"#EA4335\"\n d=\"M12 5.38c1.62 0 3.06.56 4.21 1.64l3.15-3.15C17.45 2.09 14.97 1 12 1 7.7 1 3.99 3.47 2.18 7.07l3.66 2.84c.87-2.6 3.3-4.53 6.16-4.53z\"\n />\n </svg>\n Continue with Google\n </a>\n <a\n href=\"/dashboard\"\n className=\"flex items-center justify-center gap-2 w-full px-4 py-2.5 border border-neutral-200 dark:border-neutral-800 rounded-xl text-sm font-medium text-neutral-700 dark:text-neutral-300 hover:bg-neutral-50 dark:hover:bg-neutral-800 transition-colors\"\n >\n <svg className=\"w-4 h-4\" fill=\"currentColor\" viewBox=\"0 0 24 24\">\n <path d=\"M12 0c-6.626 0-12 5.373-12 12 0 5.302 3.438 9.8 8.207 11.387.599.111.793-.261.793-.577v-2.234c-3.338.726-4.033-1.416-4.033-1.416-.546-1.387-1.333-1.756-1.333-1.756-1.089-.745.083-.729.083-.729 1.205.084 1.839 1.237 1.839 1.237 1.07 1.834 2.807 1.304 3.492.997.107-.775.418-1.305.762-1.604-2.665-.305-5.467-1.334-5.467-5.931 0-1.311.469-2.381 1.236-3.221-.124-.303-.535-1.524.117-3.176 0 0 1.008-.322 3.301 1.23A11.51 11.51 0 0112 5.803c1.02.005 2.047.138 3.006.404 2.291-1.552 3.297-1.23 3.297-1.23.653 1.653.242 2.874.118 3.176.77.84 1.235 1.911 1.235 3.221 0 4.609-2.807 5.624-5.479 5.921.43.372.823 1.102.823 2.222v3.293c0 .319.192.694.801.576C20.566 21.797 24 17.3 24 12c0-6.627-5.373-12-12-12z\" />\n </svg>\n Continue with GitHub\n </a>\n </div>\n\n <p className=\"mt-6 text-center text-xs text-neutral-400\">\n <a\n href=\"/\"\n className=\"hover:text-neutral-600 dark:hover:text-neutral-300\"\n >\n ← Back to home\n </a>\n </p>\n </div>\n </div>\n );\n}\n",
|
|
102
|
-
"app/page.tsx": "export default function LandingPage(): React.JSX.Element {\n return (\n <div className=\"min-h-screen bg-white dark:bg-neutral-950\">\n {/* Nav */}\n <nav className=\"border-b border-neutral-100 dark:border-neutral-900\">\n <div className=\"max-w-5xl mx-auto flex items-center justify-between px-6 h-14\">\n <span className=\"font-semibold text-neutral-900 dark:text-white\">\n AI SaaS\n </span>\n <div className=\"flex items-center gap-4\">\n <a\n href=\"/login\"\n className=\"text-sm text-neutral-600 dark:text-neutral-400 hover:text-neutral-900 dark:hover:text-white transition-colors\"\n >\n Sign in\n </a>\n <a\n href=\"/login\"\n className=\"text-sm px-4 py-1.5 bg-neutral-900 dark:bg-white text-white dark:text-neutral-900 rounded-full font-medium hover:opacity-90 transition-opacity\"\n >\n Get started\n </a>\n </div>\n </div>\n </nav>\n\n {/* Hero */}\n <main className=\"max-w-5xl mx-auto px-6\">\n <div className=\"pt-24 pb-16 text-center\">\n <h1 className=\"text-4xl md:text-5xl font-bold tracking-tight text-neutral-900 dark:text-white\">\n Your AI-powered platform\n </h1>\n <p className=\"mt-4 text-lg text-neutral-500 dark:text-neutral-400 max-w-lg mx-auto\">\n Built with Veryfront. Agents, tools, and memory are ready for
|
|
102
|
+
"app/page.tsx": "export default function LandingPage(): React.JSX.Element {\n return (\n <div className=\"min-h-screen bg-white dark:bg-neutral-950\">\n {/* Nav */}\n <nav className=\"border-b border-neutral-100 dark:border-neutral-900\">\n <div className=\"max-w-5xl mx-auto flex items-center justify-between px-6 h-14\">\n <span className=\"font-semibold text-neutral-900 dark:text-white\">\n AI SaaS\n </span>\n <div className=\"flex items-center gap-4\">\n <a\n href=\"/login\"\n className=\"text-sm text-neutral-600 dark:text-neutral-400 hover:text-neutral-900 dark:hover:text-white transition-colors\"\n >\n Sign in\n </a>\n <a\n href=\"/login\"\n className=\"text-sm px-4 py-1.5 bg-neutral-900 dark:bg-white text-white dark:text-neutral-900 rounded-full font-medium hover:opacity-90 transition-opacity\"\n >\n Get started\n </a>\n </div>\n </div>\n </nav>\n\n {/* Hero */}\n <main className=\"max-w-5xl mx-auto px-6\">\n <div className=\"pt-24 pb-16 text-center\">\n <h1 className=\"text-4xl md:text-5xl font-bold tracking-tight text-neutral-900 dark:text-white\">\n Your AI-powered platform\n </h1>\n <p className=\"mt-4 text-lg text-neutral-500 dark:text-neutral-400 max-w-lg mx-auto\">\n Built with Veryfront. Agents, tools, and memory are ready for production.\n </p>\n <div className=\"mt-8 flex gap-3 justify-center\">\n <a\n href=\"/login\"\n className=\"px-6 py-2.5 bg-neutral-900 dark:bg-white text-white dark:text-neutral-900 rounded-full font-medium hover:opacity-90 transition-opacity\"\n >\n Start free\n </a>\n <a\n href=\"https://veryfront.com/docs/code/guides\"\n className=\"px-6 py-2.5 border border-neutral-200 dark:border-neutral-800 text-neutral-700 dark:text-neutral-300 rounded-full font-medium hover:bg-neutral-50 dark:hover:bg-neutral-900 transition-colors\"\n >\n Documentation\n </a>\n </div>\n </div>\n\n {/* Features */}\n <div className=\"grid grid-cols-1 md:grid-cols-3 gap-6 py-16 border-t border-neutral-100 dark:border-neutral-900\">\n {[\n {\n title: \"AI Agents\",\n desc:\n \"Define agents with tools, memory, and streaming. Veryfront auto-discovers them from your project.\",\n },\n {\n title: \"Per-User Memory\",\n desc: \"Each user gets their own conversation history, persisted across sessions.\",\n },\n {\n title: \"Production Ready\",\n desc:\n \"Use auth, rate limiting, and deployment to ship to production with one command.\",\n },\n ].map(({ title, desc }) => (\n <div key={title}>\n <h3 className=\"font-medium text-neutral-900 dark:text-white\">\n {title}\n </h3>\n <p className=\"mt-1 text-sm text-neutral-500 dark:text-neutral-400\">\n {desc}\n </p>\n </div>\n ))}\n </div>\n </main>\n </div>\n );\n}\n",
|
|
103
103
|
"globals.css": "@import \"tailwindcss\";\n",
|
|
104
104
|
"public/favicon.svg": "<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 64 64\">\n <rect width=\"64\" height=\"64\" fill=\"#fff\"/>\n <circle cx=\"32\" cy=\"32\" r=\"20\" fill=\"#000\"/>\n</svg>\n",
|
|
105
105
|
"README.md": "# SaaS Starter\n\nA SaaS-shaped starter with authentication, conversation memory, and a full UI.\n\n## What's included\n\n- Landing page with feature highlights\n- OAuth login (Google and GitHub)\n- Dashboard with conversation sidebar\n- Per-user conversation memory persisted across sessions\n\n## Structure\n\n```\nagents/assistant.ts Agent with conversation memory\ntools/search.ts Placeholder domain search\napp/\n api/ag-ui/route.ts AG-UI endpoint\n page.tsx Landing page\n login/page.tsx OAuth login\n dashboard/page.tsx Chat with sidebar\n```\n\nThis starter is not production-ready.\n",
|
|
106
|
-
"tools/search.ts": "import { tool } from \"veryfront/tool\";\nimport { defineSchema } from \"veryfront/schemas\";\n\nexport default tool({\n id: \"search\",\n description: \"Search your knowledge base\",\n inputSchema: defineSchema((v)
|
|
106
|
+
"tools/search.ts": "import { tool } from \"veryfront/tool\";\nimport { defineSchema } from \"veryfront/schemas\";\n\nexport default tool({\n id: \"search\",\n description: \"Search your knowledge base\",\n inputSchema: defineSchema((v) =>\n v.object({\n query: v.string().describe(\"Search query\"),\n })\n )(),\n execute: async ({ query }) => {\n // Replace with your domain-specific search logic\n return {\n results: [],\n query,\n message: \"Connect your data source for real results.\",\n };\n },\n});\n",
|
|
107
107
|
"tsconfig.json": "{\n \"compilerOptions\": {\n \"target\": \"ES2022\",\n \"module\": \"ESNext\",\n \"moduleResolution\": \"bundler\",\n \"strict\": true,\n \"jsx\": \"react-jsx\",\n \"skipLibCheck\": true,\n \"esModuleInterop\": true,\n \"paths\": {\n \"@/*\": [\"./*\"]\n }\n },\n \"include\": [\"**/*.ts\", \"**/*.tsx\"],\n \"exclude\": [\"node_modules\"]\n}\n"
|
|
108
108
|
}
|
|
109
109
|
},
|
package/esm/deno.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
export default {
|
|
2
2
|
"name": "veryfront",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.1190",
|
|
4
4
|
"license": "Apache-2.0",
|
|
5
5
|
"nodeModulesDir": "auto",
|
|
6
6
|
"minimumDependencyAge": {
|
|
@@ -478,7 +478,7 @@ export default {
|
|
|
478
478
|
"storybook": "npm --prefix storybook run storybook",
|
|
479
479
|
"build:storybook": "npm --prefix storybook run build-storybook",
|
|
480
480
|
"storybook:check": "deno test --no-lock --config=scripts/test.deno.json --no-check --allow-read scripts/storybook/storybook-workbench.test.ts",
|
|
481
|
-
"lint": "DENO_NO_PACKAGE_JSON=1 deno lint
|
|
481
|
+
"lint": "DENO_NO_PACKAGE_JSON=1 deno lint && deno lint --config=scripts/test.deno.json scripts/test/ scripts/build/dnt-polyfill.ts scripts/build/dnt-polyfill.test.ts scripts/build/npm-package-metadata.test.ts scripts/build/prepare-framework-sources.test.ts && deno lint --config=scripts/codemods/deno.json scripts/codemods/",
|
|
482
482
|
"fmt": "deno fmt src/ cli/ react/ && deno fmt --config=scripts/test.deno.json scripts/test/ scripts/build/dnt-polyfill.ts scripts/build/dnt-polyfill.test.ts scripts/build/prepare-framework-sources.test.ts && deno fmt --config=scripts/codemods/deno.json scripts/codemods/",
|
|
483
483
|
"fmt:check": "deno fmt --check src/ cli/ react/ && deno fmt --check --config=scripts/test.deno.json scripts/test/ scripts/build/dnt-polyfill.ts scripts/build/dnt-polyfill.test.ts scripts/build/prepare-framework-sources.test.ts && deno fmt --check --config=scripts/codemods/deno.json scripts/codemods/",
|
|
484
484
|
"typecheck": "deno task generate:manifests:check && deno check src/index.ts cli/main.ts src/server/index.ts src/routing/api/index.ts src/rendering/index.ts src/platform/index.ts src/platform/adapters/index.ts src/build/index.ts src/build/production-build/index.ts src/transforms/index.ts src/config/index.ts src/utils/index.ts src/data/index.ts src/security/index.ts src/middleware/index.ts src/server/handlers/dev/index.ts src/server/handlers/request/api/index.ts src/rendering/cache/index.ts src/rendering/cache/stores/index.ts src/rendering/rsc/actions/index.ts src/html/index.ts src/html/hydration-script-builder/runtime/main.ts src/modules/index.ts src/proxy/main.ts src/react/components/ui/index.ts src/chat/index.ts src/markdown/index.ts src/mdx/index.ts src/fs/index.ts src/oauth/index.ts src/agent/index.ts src/agent/service/route-export.check.ts src/eval/index.ts src/tool/index.ts src/workflow/index.ts src/prompt/index.ts src/resource/index.ts src/runs/index.ts src/mcp/index.ts src/provider/index.ts",
|
|
@@ -519,7 +519,7 @@ export default {
|
|
|
519
519
|
"lint:ban-test-only": "deno run --allow-read scripts/lint/ban-test-only.ts",
|
|
520
520
|
"lint:sanitizer-baseline": "deno run --allow-read scripts/lint/check-sanitizer-baseline.ts",
|
|
521
521
|
"lint:skipped-tests": "deno run --allow-read scripts/lint/check-skipped-tests-baseline.ts",
|
|
522
|
-
"test:scripts": "deno test --config=scripts/test.deno.json --no-check --allow-read --allow-write --allow-run scripts/ci/publish-npm-packages.test.ts scripts/build/dnt-polyfill.test.ts scripts/build/generate-sbom.test.ts scripts/build/npm-dependency-sources.test.ts scripts/build/npm-extension-package-metadata.test.ts scripts/build/npm-package-metadata.test.ts scripts/build/npm-react-shims.test.ts scripts/build/prepare-framework-sources.test.ts scripts/docs/docs-coverage.test.ts scripts/docs/generate-api-reference.test.ts scripts/docs/guide-validation.test.ts scripts/lint/audit-core-deps.test.ts scripts/lint/audit-dependency-boundaries.test.ts scripts/lint/audit-extension-capabilities.test.ts scripts/lint/audit-extension-contracts.test.ts scripts/lint/audit-deps.test.ts scripts/lint/check-module-boundaries.test.ts scripts/lint/ban-test-only.test.ts scripts/lint/check-sanitizer-baseline.test.ts scripts/lint/check-skipped-tests-baseline.test.ts scripts/lint/check-test-typecheck-baseline.test.ts scripts/lint/check-coverage.test.ts scripts/security/audit-npm.test.ts scripts/security/submit-dependency-snapshot.test.ts && deno task test:tool-search-live",
|
|
522
|
+
"test:scripts": "deno test --config=scripts/test.deno.json --no-check --allow-read --allow-write --allow-run scripts/ci/publish-npm-packages.test.ts scripts/build/dnt-polyfill.test.ts scripts/build/generate-sbom.test.ts scripts/build/npm-dependency-sources.test.ts scripts/build/npm-extension-package-metadata.test.ts scripts/build/npm-package-metadata.test.ts scripts/build/npm-react-shims.test.ts scripts/build/prepare-framework-sources.test.ts scripts/docs/docs-coverage.test.ts scripts/docs/generate-api-reference.test.ts scripts/docs/guide-validation.test.ts scripts/lint/audit-core-deps.test.ts scripts/lint/audit-dependency-boundaries.test.ts scripts/lint/audit-extension-capabilities.test.ts scripts/lint/audit-extension-contracts.test.ts scripts/lint/audit-deps.test.ts scripts/lint/check-module-boundaries.test.ts scripts/lint/lint-config.test.ts scripts/lint/ban-test-only.test.ts scripts/lint/check-sanitizer-baseline.test.ts scripts/lint/check-skipped-tests-baseline.test.ts scripts/lint/check-test-typecheck-baseline.test.ts scripts/lint/check-coverage.test.ts scripts/security/audit-npm.test.ts scripts/security/submit-dependency-snapshot.test.ts && deno task test:tool-search-live",
|
|
523
523
|
"test:sentry-runtime-packages": "deno test --config=scripts/test.deno.json --no-check --no-lock --allow-read --allow-write --allow-run --allow-env=DENO_DIR,HOME,XDG_CACHE_HOME,LOCALAPPDATA,USERPROFILE scripts/build/sentry-runtime-packages.test.ts",
|
|
524
524
|
"test:tool-search-live": "VF_DISABLE_LRU_INTERVAL=1 deno test --no-check -A tests/agent/verify-tool-search-live.test.ts",
|
|
525
525
|
"test:cross-runtime": "deno run --allow-all src/platform/compat/cross-runtime.test.ts",
|
|
@@ -546,8 +546,11 @@ export default {
|
|
|
546
546
|
"include": [
|
|
547
547
|
"src/**/*.ts",
|
|
548
548
|
"src/**/*.tsx",
|
|
549
|
+
"src/**/*.js",
|
|
549
550
|
"cli/**/*.ts",
|
|
550
551
|
"cli/**/*.tsx",
|
|
552
|
+
"extensions/**/*.ts",
|
|
553
|
+
"extensions/**/*.tsx",
|
|
551
554
|
"react/**/*.ts",
|
|
552
555
|
"react/**/*.tsx"
|
|
553
556
|
],
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"durable.d.ts","sourceRoot":"","sources":["../../../../src/src/agent/conversation/durable.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EACV,2BAA2B,EAC3B,mCAAmC,EACnC,uCAAuC,EACvC,mCAAmC,EACnC,oCAAoC,EACpC,mCAAmC,EACnC,yBAAyB,EACzB,+BAA+B,EAC/B,iCAAiC,EACjC,6BAA6B,EAC9B,MAAM,wBAAwB,CAAC;AAUhC,OAAO,EACL,yCAAyC,EACzC,qCAAqC,EACrC,+BAA+B,EAC/B,2BAA2B,EAC3B,4BAA4B,EAC5B,mCAAmC,EACnC,4CAA4C,EAC5C,wCAAwC,EACxC,kCAAkC,EAClC,8BAA8B,EAC9B,+BAA+B,EAC/B,sCAAsC,EACtC,6BAA6B,GAC9B,MAAM,wBAAwB,CAAC;AAChC,OAAO,EACL,gCAAgC,EAChC,0CAA0C,EAC1C,qCAAqC,EACrC,yCAAyC,EACzC,yCAAyC,GAC1C,MAAM,4BAA4B,CAAC;
|
|
1
|
+
{"version":3,"file":"durable.d.ts","sourceRoot":"","sources":["../../../../src/src/agent/conversation/durable.ts"],"names":[],"mappings":"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"}
|