veryfront 0.1.810 → 0.1.812
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/deno.d.ts +3 -0
- package/esm/deno.js +5 -2
- package/esm/src/agent/conversation/durable-contracts.d.ts +204 -0
- package/esm/src/agent/conversation/durable-contracts.d.ts.map +1 -0
- package/esm/src/agent/conversation/durable-contracts.js +168 -0
- package/esm/src/agent/conversation/durable.d.ts +3 -198
- package/esm/src/agent/conversation/durable.d.ts.map +1 -1
- package/esm/src/agent/conversation/durable.js +2 -167
- package/esm/src/agent/factory.d.ts.map +1 -1
- package/esm/src/agent/factory.js +18 -6
- package/esm/src/agent/hosted/veryfront-cloud-agent-service.d.ts.map +1 -1
- package/esm/src/agent/hosted/veryfront-cloud-agent-service.js +1 -0
- package/esm/src/agent/types.d.ts +8 -0
- package/esm/src/agent/types.d.ts.map +1 -1
- package/esm/src/config/schemas/config.schema.d.ts +12 -0
- package/esm/src/config/schemas/config.schema.d.ts.map +1 -1
- package/esm/src/config/schemas/config.schema.js +12 -0
- package/esm/src/discovery/discovery-engine.d.ts.map +1 -1
- package/esm/src/discovery/discovery-engine.js +6 -1
- package/esm/src/discovery/handlers/index.d.ts +1 -0
- package/esm/src/discovery/handlers/index.d.ts.map +1 -1
- package/esm/src/discovery/handlers/index.js +1 -0
- package/esm/src/discovery/handlers/work-handler.d.ts +7 -0
- package/esm/src/discovery/handlers/work-handler.d.ts.map +1 -0
- package/esm/src/discovery/handlers/work-handler.js +19 -0
- package/esm/src/discovery/import-rewriter.d.ts +1 -1
- package/esm/src/discovery/import-rewriter.d.ts.map +1 -1
- package/esm/src/discovery/import-rewriter.js +1 -0
- package/esm/src/discovery/project-discovery-config.d.ts +2 -0
- package/esm/src/discovery/project-discovery-config.d.ts.map +1 -1
- package/esm/src/discovery/project-discovery-config.js +2 -0
- package/esm/src/discovery/transpiler.d.ts.map +1 -1
- package/esm/src/discovery/transpiler.js +2 -0
- package/esm/src/discovery/types.d.ts +3 -0
- package/esm/src/discovery/types.d.ts.map +1 -1
- package/esm/src/modules/import-map/loader.d.ts.map +1 -1
- package/esm/src/modules/import-map/loader.js +2 -1
- package/esm/src/modules/manifest/route-module-manifest.d.ts.map +1 -1
- package/esm/src/modules/manifest/route-module-manifest.js +2 -0
- package/esm/src/modules/server/module-server.d.ts.map +1 -1
- package/esm/src/modules/server/module-server.js +27 -9
- package/esm/src/observability/request-profiler.d.ts +1 -0
- package/esm/src/observability/request-profiler.d.ts.map +1 -1
- package/esm/src/observability/request-profiler.js +6 -0
- package/esm/src/observability/simple-metrics/index.d.ts +6 -3
- package/esm/src/observability/simple-metrics/index.d.ts.map +1 -1
- package/esm/src/observability/simple-metrics/index.js +5 -2
- package/esm/src/observability/simple-metrics/metrics-recorder.d.ts +4 -0
- package/esm/src/observability/simple-metrics/metrics-recorder.d.ts.map +1 -1
- package/esm/src/observability/simple-metrics/metrics-recorder.js +34 -0
- package/esm/src/observability/simple-metrics/metrics-state.d.ts.map +1 -1
- package/esm/src/observability/simple-metrics/metrics-state.js +24 -0
- package/esm/src/observability/simple-metrics/otel-instruments.d.ts.map +1 -1
- package/esm/src/observability/simple-metrics/otel-instruments.js +13 -0
- package/esm/src/observability/simple-metrics/types.d.ts +12 -0
- package/esm/src/observability/simple-metrics/types.d.ts.map +1 -1
- package/esm/src/platform/adapters/runtime/shared/shared-watcher.d.ts.map +1 -1
- package/esm/src/platform/adapters/runtime/shared/shared-watcher.js +1 -1
- package/esm/src/platform/compat/http/native-response.d.ts +10 -1
- package/esm/src/platform/compat/http/native-response.d.ts.map +1 -1
- package/esm/src/platform/compat/http/native-response.js +20 -14
- package/esm/src/proxy/handler.d.ts +1 -7
- package/esm/src/proxy/handler.d.ts.map +1 -1
- package/esm/src/proxy/handler.js +24 -160
- package/esm/src/proxy/proxy-access-control.d.ts +41 -0
- package/esm/src/proxy/proxy-access-control.d.ts.map +1 -0
- package/esm/src/proxy/proxy-access-control.js +151 -0
- package/esm/src/react/components/chat/chat/composition/chat-composer.d.ts.map +1 -1
- package/esm/src/react/components/chat/chat/composition/chat-composer.js +3 -1
- package/esm/src/rendering/cache/cache-coordinator.d.ts +3 -0
- package/esm/src/rendering/cache/cache-coordinator.d.ts.map +1 -1
- package/esm/src/rendering/cache/cache-coordinator.js +27 -2
- package/esm/src/rendering/cache/stores/memory-store.d.ts +2 -0
- package/esm/src/rendering/cache/stores/memory-store.d.ts.map +1 -1
- package/esm/src/rendering/cache/stores/memory-store.js +2 -1
- package/esm/src/rendering/orchestrator/lifecycle.d.ts.map +1 -1
- package/esm/src/rendering/orchestrator/lifecycle.js +1 -0
- package/esm/src/rendering/orchestrator/pipeline.d.ts.map +1 -1
- package/esm/src/rendering/orchestrator/pipeline.js +13 -25
- package/esm/src/rendering/orchestrator/render-result-assembly.d.ts +27 -0
- package/esm/src/rendering/orchestrator/render-result-assembly.d.ts.map +1 -0
- package/esm/src/rendering/orchestrator/render-result-assembly.js +28 -0
- package/esm/src/rendering/renderer.d.ts.map +1 -1
- package/esm/src/rendering/renderer.js +3 -1
- package/esm/src/rendering/shared/context-aware-cache.d.ts +3 -0
- package/esm/src/rendering/shared/context-aware-cache.d.ts.map +1 -1
- package/esm/src/rendering/shared/context-aware-cache.js +25 -2
- package/esm/src/server/dev-server/server.d.ts.map +1 -1
- package/esm/src/server/dev-server/server.js +4 -1
- package/esm/src/server/handlers/dev/dashboard/api.d.ts +3 -0
- package/esm/src/server/handlers/dev/dashboard/api.d.ts.map +1 -1
- package/esm/src/server/handlers/dev/dashboard/api.js +41 -57
- package/esm/src/server/handlers/dev/framework-candidates.generated.d.ts.map +1 -1
- package/esm/src/server/handlers/dev/framework-candidates.generated.js +11 -1
- package/esm/src/transforms/esm/specifier-resolver.d.ts.map +1 -1
- package/esm/src/transforms/esm/specifier-resolver.js +14 -0
- package/esm/src/utils/version-constant.d.ts +1 -1
- package/esm/src/utils/version-constant.js +1 -1
- package/esm/src/work/factory.d.ts +4 -0
- package/esm/src/work/factory.d.ts.map +1 -0
- package/esm/src/work/factory.js +51 -0
- package/esm/src/work/index.d.ts +27 -0
- package/esm/src/work/index.d.ts.map +1 -0
- package/esm/src/work/index.js +25 -0
- package/esm/src/work/prompt-augmentation.d.ts +6 -0
- package/esm/src/work/prompt-augmentation.d.ts.map +1 -0
- package/esm/src/work/prompt-augmentation.js +30 -0
- package/esm/src/work/registry.d.ts +10 -0
- package/esm/src/work/registry.d.ts.map +1 -0
- package/esm/src/work/registry.js +23 -0
- package/esm/src/work/types.d.ts +30 -0
- package/esm/src/work/types.d.ts.map +1 -0
- package/esm/src/work/types.js +1 -0
- package/package.json +5 -1
|
@@ -35,6 +35,7 @@ import { getCSSByHashAsync, regenerateCSSByHash, } from "../../html/styles-build
|
|
|
35
35
|
import { getReadyManifestForRender } from "../../release-assets/manifest-cache.js";
|
|
36
36
|
import { createEsmCache, createModuleCache, loadModule } from "./module-loader/index.js";
|
|
37
37
|
import { getCSSImports, runWithCSSCollector, } from "../../modules/react-loader/css-import-collector.js";
|
|
38
|
+
import { assembleRenderResult } from "./render-result-assembly.js";
|
|
38
39
|
// Extracted modules
|
|
39
40
|
import { EMPTY_LAYOUT_RESULT, isDotPath } from "./path-helpers.js";
|
|
40
41
|
import { cachePageCss, CSS_SSR_TIMEOUT_MS, getCachedPageCss, getPageCssCacheKey, } from "./css-cache.js";
|
|
@@ -342,31 +343,18 @@ export class RenderPipeline {
|
|
|
342
343
|
paths: collectedCSSImports.map((p) => p.split("/").pop()),
|
|
343
344
|
});
|
|
344
345
|
}
|
|
345
|
-
const
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
:
|
|
352
|
-
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
stream: ssrResult.finalStream,
|
|
358
|
-
ssrHash: ssrResult.ssrHash,
|
|
359
|
-
...(pageModule ? { pageModule } : {}),
|
|
360
|
-
};
|
|
361
|
-
if (shouldCache && !options?.skipCachePersist) {
|
|
362
|
-
void this.config.cacheCoordinator.persistResult(result, slug, cacheKey).catch((error) => {
|
|
363
|
-
renderPipelineLog.error("Cache persist failed", {
|
|
364
|
-
slug,
|
|
365
|
-
error: error instanceof Error ? error.message : String(error),
|
|
366
|
-
stack: error instanceof Error ? error.stack : undefined,
|
|
367
|
-
});
|
|
368
|
-
});
|
|
369
|
-
}
|
|
346
|
+
const result = assembleRenderResult({
|
|
347
|
+
slug,
|
|
348
|
+
cacheKey,
|
|
349
|
+
ssrResult,
|
|
350
|
+
pageBundle: pageBundleResult.pageBundle,
|
|
351
|
+
clientModuleCode: pageBundleResult.clientModuleCode,
|
|
352
|
+
pageModuleType: pageBundleResult.pageModuleType,
|
|
353
|
+
shouldCache,
|
|
354
|
+
skipCachePersist: options?.skipCachePersist,
|
|
355
|
+
cacheCoordinator: this.config.cacheCoordinator,
|
|
356
|
+
logger: renderPipelineLog,
|
|
357
|
+
});
|
|
370
358
|
timing.total = Math.round(performance.now() - pipelineStartTime);
|
|
371
359
|
renderPipelineLog.debug("Complete", { slug, timing });
|
|
372
360
|
return result;
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import type { PageBundle, RenderResult } from "../../types/index.js";
|
|
2
|
+
interface RenderResultAssemblyCache {
|
|
3
|
+
persistResult(result: RenderResult, slug: string, cacheKey?: string): Promise<void>;
|
|
4
|
+
}
|
|
5
|
+
interface RenderResultAssemblyLogger {
|
|
6
|
+
error(message: string, metadata?: Record<string, unknown>): void;
|
|
7
|
+
}
|
|
8
|
+
interface SSRResult {
|
|
9
|
+
fullHtml: string;
|
|
10
|
+
finalStream?: ReadableStream | null;
|
|
11
|
+
ssrHash?: string;
|
|
12
|
+
}
|
|
13
|
+
export interface AssembleRenderResultOptions {
|
|
14
|
+
slug: string;
|
|
15
|
+
cacheKey?: string | null;
|
|
16
|
+
ssrResult: SSRResult;
|
|
17
|
+
pageBundle: PageBundle;
|
|
18
|
+
clientModuleCode?: string;
|
|
19
|
+
pageModuleType?: "mdx" | "component";
|
|
20
|
+
shouldCache: boolean;
|
|
21
|
+
skipCachePersist?: boolean;
|
|
22
|
+
cacheCoordinator?: RenderResultAssemblyCache;
|
|
23
|
+
logger?: RenderResultAssemblyLogger;
|
|
24
|
+
}
|
|
25
|
+
export declare function assembleRenderResult(options: AssembleRenderResultOptions): RenderResult;
|
|
26
|
+
export {};
|
|
27
|
+
//# sourceMappingURL=render-result-assembly.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"render-result-assembly.d.ts","sourceRoot":"","sources":["../../../../src/src/rendering/orchestrator/render-result-assembly.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAErE,UAAU,yBAAyB;IACjC,aAAa,CAAC,MAAM,EAAE,YAAY,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACrF;AAED,UAAU,0BAA0B;IAClC,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;CAClE;AAED,UAAU,SAAS;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,cAAc,GAAG,IAAI,CAAC;IACpC,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,2BAA2B;IAC1C,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,SAAS,EAAE,SAAS,CAAC;IACrB,UAAU,EAAE,UAAU,CAAC;IACvB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,cAAc,CAAC,EAAE,KAAK,GAAG,WAAW,CAAC;IACrC,WAAW,EAAE,OAAO,CAAC;IACrB,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,gBAAgB,CAAC,EAAE,yBAAyB,CAAC;IAC7C,MAAM,CAAC,EAAE,0BAA0B,CAAC;CACrC;AAED,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,2BAA2B,GAAG,YAAY,CAoCvF"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
export function assembleRenderResult(options) {
|
|
2
|
+
const pageModule = options.clientModuleCode && options.pageModuleType
|
|
3
|
+
? {
|
|
4
|
+
slug: options.slug,
|
|
5
|
+
code: options.clientModuleCode,
|
|
6
|
+
type: options.pageModuleType,
|
|
7
|
+
}
|
|
8
|
+
: undefined;
|
|
9
|
+
const result = {
|
|
10
|
+
html: options.ssrResult.fullHtml,
|
|
11
|
+
frontmatter: options.pageBundle.frontmatter || {},
|
|
12
|
+
headings: options.pageBundle.headings || [],
|
|
13
|
+
nodeMap: options.pageBundle.nodeMap,
|
|
14
|
+
stream: options.ssrResult.finalStream,
|
|
15
|
+
ssrHash: options.ssrResult.ssrHash,
|
|
16
|
+
...(pageModule ? { pageModule } : {}),
|
|
17
|
+
};
|
|
18
|
+
if (options.shouldCache && !options.skipCachePersist) {
|
|
19
|
+
void options.cacheCoordinator?.persistResult(result, options.slug, options.cacheKey ?? undefined).catch((error) => {
|
|
20
|
+
options.logger?.error("Cache persist failed", {
|
|
21
|
+
slug: options.slug,
|
|
22
|
+
error: error instanceof Error ? error.message : String(error),
|
|
23
|
+
stack: error instanceof Error ? error.stack : undefined,
|
|
24
|
+
});
|
|
25
|
+
});
|
|
26
|
+
}
|
|
27
|
+
return result;
|
|
28
|
+
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"renderer.d.ts","sourceRoot":"","sources":["../../../src/src/rendering/renderer.ts"],"names":[],"mappings":"AA6CA,OAAO,EACL,mBAAmB,EACnB,+BAA+B,EAC/B,KAAK,0BAA0B,EAC/B,KAAK,aAAa,EACnB,MAAM,6BAA6B,CAAC;AACrC,OAAO,EAKL,KAAK,qBAAqB,EAC3B,MAAM,6BAA6B,CAAC;AACrC,OAAO,EAEL,KAAK,wBAAwB,EAC9B,MAAM,iCAAiC,CAAC;AAgBzC,OAAO,KAAK,EAAE,gBAAgB,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAC7F,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAwBxD;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,8BAA8B;IAC9B,MAAM,CAAC,EAAE,qBAAqB,CAAC;IAC/B,oBAAoB;IACpB,KAAK,CAAC,EAAE,wBAAwB,CAAC;CAClC;AAeD;;;;;;;;;;;;;;;;;GAiBG;AACH,qBAAa,QAAQ;IACnB,OAAO,CAAC,KAAK,CAA+B;IAC5C,OAAO,CAAC,oBAAoB,CAAgC;IAC5D,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,qBAAqB,CAA8B;IAE3D;;;;OAIG;IACH,OAAO,CAAC,YAAY,CAAwC;gBAEhD,OAAO,GAAE,eAAoB;IAInC,UAAU,CAAC,OAAO,CAAC,EAAE,qBAAqB,GAAG,OAAO,CAAC,IAAI,CAAC;IAoBhE,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,aAAa,EAAE,OAAO,CAAC,EAAE,aAAa,GAAG,OAAO,CAAC,YAAY,CAAC;YAwF9E,2BAA2B;IAWzC,OAAO,CAAC,uBAAuB;IAiB/B;;;OAGG;IACH,OAAO,CAAC,kBAAkB;IAQ1B;;;;;;;;;OASG;IACH,OAAO,CAAC,aAAa;YAwBP,YAAY;IAoF1B,eAAe,CACb,IAAI,EAAE,MAAM,EACZ,GAAG,EAAE,aAAa,EAClB,OAAO,CAAC,EAAE,aAAa,GACtB,OAAO,CAAC,gBAAgB,CAAC;IAkB5B,WAAW,CAAC,GAAG,EAAE,aAAa,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAU5C,UAAU,CAAC,GAAG,EAAE,aAAa,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAQ5D,oBAAoB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAKtD,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAO9B,OAAO,CAAC,wBAAwB;
|
|
1
|
+
{"version":3,"file":"renderer.d.ts","sourceRoot":"","sources":["../../../src/src/rendering/renderer.ts"],"names":[],"mappings":"AA6CA,OAAO,EACL,mBAAmB,EACnB,+BAA+B,EAC/B,KAAK,0BAA0B,EAC/B,KAAK,aAAa,EACnB,MAAM,6BAA6B,CAAC;AACrC,OAAO,EAKL,KAAK,qBAAqB,EAC3B,MAAM,6BAA6B,CAAC;AACrC,OAAO,EAEL,KAAK,wBAAwB,EAC9B,MAAM,iCAAiC,CAAC;AAgBzC,OAAO,KAAK,EAAE,gBAAgB,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAC7F,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAwBxD;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,8BAA8B;IAC9B,MAAM,CAAC,EAAE,qBAAqB,CAAC;IAC/B,oBAAoB;IACpB,KAAK,CAAC,EAAE,wBAAwB,CAAC;CAClC;AAeD;;;;;;;;;;;;;;;;;GAiBG;AACH,qBAAa,QAAQ;IACnB,OAAO,CAAC,KAAK,CAA+B;IAC5C,OAAO,CAAC,oBAAoB,CAAgC;IAC5D,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,qBAAqB,CAA8B;IAE3D;;;;OAIG;IACH,OAAO,CAAC,YAAY,CAAwC;gBAEhD,OAAO,GAAE,eAAoB;IAInC,UAAU,CAAC,OAAO,CAAC,EAAE,qBAAqB,GAAG,OAAO,CAAC,IAAI,CAAC;IAoBhE,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,aAAa,EAAE,OAAO,CAAC,EAAE,aAAa,GAAG,OAAO,CAAC,YAAY,CAAC;YAwF9E,2BAA2B;IAWzC,OAAO,CAAC,uBAAuB;IAiB/B;;;OAGG;IACH,OAAO,CAAC,kBAAkB;IAQ1B;;;;;;;;;OASG;IACH,OAAO,CAAC,aAAa;YAwBP,YAAY;IAoF1B,eAAe,CACb,IAAI,EAAE,MAAM,EACZ,GAAG,EAAE,aAAa,EAClB,OAAO,CAAC,EAAE,aAAa,GACtB,OAAO,CAAC,gBAAgB,CAAC;IAkB5B,WAAW,CAAC,GAAG,EAAE,aAAa,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAU5C,UAAU,CAAC,GAAG,EAAE,aAAa,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAQ5D,oBAAoB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAKtD,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAO9B,OAAO,CAAC,wBAAwB;CA4FjC;AAED,OAAO,EACL,mBAAmB,EACnB,+BAA+B,EAC/B,KAAK,0BAA0B,EAC/B,KAAK,aAAa,GACnB,CAAC;AAMF,wBAAgB,WAAW,IAAI,QAAQ,CAOtC;AAED,wBAAsB,kBAAkB,CAAC,OAAO,CAAC,EAAE,eAAe,GAAG,OAAO,CAAC,QAAQ,CAAC,CAsBrF;AAED,wBAAgB,qBAAqB,IAAI,OAAO,CAE/C;AAED,wBAAsB,eAAe,IAAI,OAAO,CAAC,IAAI,CAAC,CAQrD;AAED,wBAAsB,4BAA4B,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAYnF;AAED,wBAAgB,UAAU,CACxB,IAAI,EAAE,MAAM,EACZ,UAAU,EAAE,cAAc,EAC1B,OAAO,CAAC,EAAE,aAAa,EACvB,cAAc,CAAC,EAAE,0BAA0B,GAC1C,OAAO,CAAC,YAAY,CAAC,CAIvB"}
|
|
@@ -130,7 +130,7 @@ export class Renderer {
|
|
|
130
130
|
const cacheKey = this.buildCacheKey(slug, effectiveCtx, effectiveOptions);
|
|
131
131
|
const cacheResult = cacheKey
|
|
132
132
|
? await this.cache.checkCache(slug, effectiveCtx, effectiveOptions?.colorScheme, cacheKey)
|
|
133
|
-
: { hit: false, cacheKey: "" };
|
|
133
|
+
: { hit: false, cacheKey: "", status: "miss", lookupDurationMs: 0 };
|
|
134
134
|
if (cacheResult.hit && cacheResult.cachedResult) {
|
|
135
135
|
logger.debug("Cache hit", {
|
|
136
136
|
slug,
|
|
@@ -398,6 +398,8 @@ export class Renderer {
|
|
|
398
398
|
depAwareSlug: slug,
|
|
399
399
|
moduleCacheKey: cacheKey ?? slug,
|
|
400
400
|
cachedModule: result.cachedResult?.pageModule,
|
|
401
|
+
cacheStatus: result.status,
|
|
402
|
+
lookupDurationMs: result.lookupDurationMs,
|
|
401
403
|
};
|
|
402
404
|
},
|
|
403
405
|
persistResult: async (result, slug, cacheKey) => {
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import type { RenderResult } from "../orchestrator/types.js";
|
|
2
2
|
import type { CacheStore } from "../cache/types.js";
|
|
3
|
+
import type { CacheLookupStatus } from "../cache/cache-coordinator.js";
|
|
3
4
|
import { type MemoryCacheStoreOptions } from "../cache/stores/index.js";
|
|
4
5
|
import type { RenderContext } from "../context/render-context.js";
|
|
5
6
|
export interface ContextAwareCacheOptions {
|
|
@@ -11,6 +12,8 @@ export interface ContextAwareCacheLookupResult {
|
|
|
11
12
|
cachedResult?: RenderResult;
|
|
12
13
|
cacheKey: string;
|
|
13
14
|
hit: boolean;
|
|
15
|
+
status: CacheLookupStatus;
|
|
16
|
+
lookupDurationMs: number;
|
|
14
17
|
}
|
|
15
18
|
export declare class ContextAwareCacheCoordinator {
|
|
16
19
|
private store;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"context-aware-cache.d.ts","sourceRoot":"","sources":["../../../../src/src/rendering/shared/context-aware-cache.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"context-aware-cache.d.ts","sourceRoot":"","sources":["../../../../src/src/rendering/shared/context-aware-cache.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAC;AACvE,OAAO,EAAoB,KAAK,uBAAuB,EAAE,MAAM,0BAA0B,CAAC;AAC1F,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAUlE,MAAM,WAAW,wBAAwB;IACvC,KAAK,CAAC,EAAE,UAAU,CAAC;IACnB,MAAM,CAAC,EAAE,uBAAuB,CAAC;IACjC,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAUD,MAAM,WAAW,6BAA6B;IAC5C,YAAY,CAAC,EAAE,YAAY,CAAC;IAC5B,QAAQ,EAAE,MAAM,CAAC;IACjB,GAAG,EAAE,OAAO,CAAC;IACb,MAAM,EAAE,iBAAiB,CAAC;IAC1B,gBAAgB,EAAE,MAAM,CAAC;CAC1B;AAED,qBAAa,4BAA4B;IACvC,OAAO,CAAC,KAAK,CAAa;IAC1B,OAAO,CAAC,KAAK,CAAqB;IAClC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAwB;gBAEzC,OAAO,GAAE,wBAA6B;IAUlD,UAAU,CACR,IAAI,EAAE,MAAM,EACZ,GAAG,EAAE,aAAa,EAClB,WAAW,CAAC,EAAE,OAAO,GAAG,MAAM,EAC9B,gBAAgB,CAAC,EAAE,MAAM,GACxB,OAAO,CAAC,6BAA6B,CAAC;IAiEnC,aAAa,CACjB,MAAM,EAAE,YAAY,EACpB,IAAI,EAAE,MAAM,EACZ,GAAG,EAAE,aAAa,EAClB,WAAW,CAAC,EAAE,OAAO,GAAG,MAAM,EAC9B,gBAAgB,CAAC,EAAE,MAAM,GACxB,OAAO,CAAC,IAAI,CAAC;IAqBV,eAAe,CAAC,GAAG,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC;IA0BlD,eAAe,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAoBjD,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC;IA2B1D,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;IAKzB,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAI9B,QAAQ,IAAI;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE;IAO5B,OAAO,CAAC,WAAW;IAgBnB,OAAO,CAAC,SAAS;IAIjB,OAAO,CAAC,WAAW;CAkCpB"}
|
|
@@ -1,4 +1,6 @@
|
|
|
1
1
|
import { rendererLogger } from "../../utils/index.js";
|
|
2
|
+
import { markRequestProfilePhase } from "../../observability/request-profiler.js";
|
|
3
|
+
import { metrics } from "../../observability/simple-metrics/index.js";
|
|
2
4
|
import { withSpan } from "../../observability/tracing/otlp-setup.js";
|
|
3
5
|
import { SpanNames } from "../../observability/tracing/span-names.js";
|
|
4
6
|
import { MemoryCacheStore } from "../cache/stores/index.js";
|
|
@@ -18,40 +20,53 @@ export class ContextAwareCacheCoordinator {
|
|
|
18
20
|
new MemoryCacheStore({
|
|
19
21
|
maxEntries: options.memory?.maxEntries ?? DEFAULT_MAX_ENTRIES,
|
|
20
22
|
ttlMs: options.memory?.ttlMs ?? this.ttlMs,
|
|
23
|
+
enforceStoreTtl: false,
|
|
21
24
|
});
|
|
22
25
|
}
|
|
23
26
|
checkCache(slug, ctx, colorScheme, cacheKeyOverride) {
|
|
24
27
|
const cacheKey = this.getCacheKey(slug, ctx, colorScheme, cacheKeyOverride);
|
|
25
28
|
return withSpan(SpanNames.CACHE_CHECK_SPECULATIVE, async () => {
|
|
29
|
+
const lookupStart = performance.now();
|
|
26
30
|
const cached = (await this.store.get(cacheKey));
|
|
27
31
|
if (!cached) {
|
|
32
|
+
const lookupDurationMs = roundDurationMs(performance.now() - lookupStart);
|
|
33
|
+
recordCacheLookup("miss", lookupDurationMs);
|
|
28
34
|
logger.debug("Cache miss", {
|
|
29
35
|
slug,
|
|
30
36
|
cacheKey,
|
|
31
37
|
projectId: ctx.projectId,
|
|
32
38
|
environment: ctx.environment,
|
|
39
|
+
lookupDurationMs,
|
|
33
40
|
});
|
|
34
|
-
return { cacheKey, hit: false };
|
|
41
|
+
return { cacheKey, hit: false, status: "miss", lookupDurationMs };
|
|
35
42
|
}
|
|
36
43
|
if (this.isExpired(cached)) {
|
|
37
44
|
await this.store.delete(cacheKey);
|
|
45
|
+
const lookupDurationMs = roundDurationMs(performance.now() - lookupStart);
|
|
46
|
+
recordCacheLookup("expired", lookupDurationMs);
|
|
38
47
|
logger.debug("Cache expired", {
|
|
39
48
|
slug,
|
|
40
49
|
cacheKey,
|
|
41
50
|
projectId: ctx.projectId,
|
|
42
51
|
environment: ctx.environment,
|
|
52
|
+
lookupDurationMs,
|
|
43
53
|
});
|
|
44
|
-
return { cacheKey, hit: false };
|
|
54
|
+
return { cacheKey, hit: false, status: "expired", lookupDurationMs };
|
|
45
55
|
}
|
|
56
|
+
const lookupDurationMs = roundDurationMs(performance.now() - lookupStart);
|
|
57
|
+
recordCacheLookup("hit", lookupDurationMs);
|
|
46
58
|
logger.debug("Cache hit", {
|
|
47
59
|
slug,
|
|
48
60
|
projectId: ctx.projectId,
|
|
49
61
|
environment: ctx.environment,
|
|
62
|
+
lookupDurationMs,
|
|
50
63
|
});
|
|
51
64
|
return {
|
|
52
65
|
cachedResult: this.cloneResult(cached.result, cached.nodeMapEntries),
|
|
53
66
|
cacheKey,
|
|
54
67
|
hit: true,
|
|
68
|
+
status: "hit",
|
|
69
|
+
lookupDurationMs,
|
|
55
70
|
};
|
|
56
71
|
}, {
|
|
57
72
|
"cache.key": cacheKey,
|
|
@@ -195,3 +210,11 @@ export class ContextAwareCacheCoordinator {
|
|
|
195
210
|
return cloned;
|
|
196
211
|
}
|
|
197
212
|
}
|
|
213
|
+
function roundDurationMs(value) {
|
|
214
|
+
return Math.round(value * 100) / 100;
|
|
215
|
+
}
|
|
216
|
+
function recordCacheLookup(status, durationMs) {
|
|
217
|
+
markRequestProfilePhase("render.cache_lookup", durationMs);
|
|
218
|
+
markRequestProfilePhase(`render.cache_${status}`);
|
|
219
|
+
metrics.recordCacheGet(status === "hit");
|
|
220
|
+
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../../../src/src/server/dev-server/server.ts"],"names":[],"mappings":"AAcA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAInD,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAmCvD,4BAA4B;AAC5B,qBAAa,SAAS;IAiBR,OAAO,CAAC,OAAO;IAhB3B,OAAO,CAAC,MAAM,CAAkB;IAChC,OAAO,CAAC,iBAAiB,CAAqB;IAC9C,OAAO,CAAC,cAAc,CAAC,CAAiB;IACxC,OAAO,CAAC,QAAQ,CAAqB;IACrC,OAAO,CAAC,OAAO,CAAkB;IACjC,OAAO,CAAC,MAAM,CAAC,CAAS;IACxB,OAAO,CAAC,SAAS,CAA8B;IAC/C,OAAO,CAAC,cAAc,CAAC,CAAiB;IACxC,OAAO,CAAC,QAAQ,CAAC,CAAsC;IACvD,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;IAC9B,OAAO,CAAC,aAAa,CAAc;IACnC,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,iBAAiB,CAAC,CAAa;IACvC,OAAO,CAAC,qBAAqB,CAAC,CAAa;IAC3C,OAAO,CAAC,8BAA8B,CAAC,CAAa;gBAEhC,OAAO,EAAE,gBAAgB;IAQ7C,OAAO,CAAC,OAAO;YAID,YAAY;IAWpB,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAgL5B,qEAAqE;IACrE,IAAI,OAAO,IAAI,CAAC,GAAG,EAAE,OAAO,KAAK,OAAO,CAAC,QAAQ,CAAC,CAKjD;IAED,OAAO,CAAC,oBAAoB;
|
|
1
|
+
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../../../src/src/server/dev-server/server.ts"],"names":[],"mappings":"AAcA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAInD,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAmCvD,4BAA4B;AAC5B,qBAAa,SAAS;IAiBR,OAAO,CAAC,OAAO;IAhB3B,OAAO,CAAC,MAAM,CAAkB;IAChC,OAAO,CAAC,iBAAiB,CAAqB;IAC9C,OAAO,CAAC,cAAc,CAAC,CAAiB;IACxC,OAAO,CAAC,QAAQ,CAAqB;IACrC,OAAO,CAAC,OAAO,CAAkB;IACjC,OAAO,CAAC,MAAM,CAAC,CAAS;IACxB,OAAO,CAAC,SAAS,CAA8B;IAC/C,OAAO,CAAC,cAAc,CAAC,CAAiB;IACxC,OAAO,CAAC,QAAQ,CAAC,CAAsC;IACvD,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;IAC9B,OAAO,CAAC,aAAa,CAAc;IACnC,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,iBAAiB,CAAC,CAAa;IACvC,OAAO,CAAC,qBAAqB,CAAC,CAAa;IAC3C,OAAO,CAAC,8BAA8B,CAAC,CAAa;gBAEhC,OAAO,EAAE,gBAAgB;IAQ7C,OAAO,CAAC,OAAO;YAID,YAAY;IAWpB,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAgL5B,qEAAqE;IACrE,IAAI,OAAO,IAAI,CAAC,GAAG,EAAE,OAAO,KAAK,OAAO,CAAC,QAAQ,CAAC,CAKjD;IAED,OAAO,CAAC,oBAAoB;YAmBd,qBAAqB;YAoBrB,yBAAyB;YAoBzB,uBAAuB;YA4BvB,wBAAwB;IAmBtC,OAAO,CAAC,kBAAkB;IAuBpB,oBAAoB,IAAI,OAAO,CAAC,IAAI,CAAC;YAe7B,iBAAiB;IAsC/B,qBAAqB,IAAI,UAAU,CAAC,cAAc,CAAC,YAAY,CAAC,CAAC,GAAG,IAAI;IAIlE,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;CA6B5B"}
|
|
@@ -227,6 +227,7 @@ export class DevServer {
|
|
|
227
227
|
resourceDirs: ["resources"],
|
|
228
228
|
promptDirs: ["prompts"],
|
|
229
229
|
workflowDirs: ["workflows"],
|
|
230
|
+
workDirs: ["work"],
|
|
230
231
|
fsAdapter: this.adapter.fs,
|
|
231
232
|
verbose: this.isDebug(),
|
|
232
233
|
};
|
|
@@ -236,10 +237,12 @@ export class DevServer {
|
|
|
236
237
|
const config = this.buildDiscoveryConfig();
|
|
237
238
|
const result = await discoverAll(config);
|
|
238
239
|
const total = result.tools.size + result.agents.size + result.skills.size +
|
|
239
|
-
result.workflows.size + result.
|
|
240
|
+
result.workflows.size + result.works.size + result.prompts.size +
|
|
241
|
+
result.resources.size;
|
|
240
242
|
if (total > 0) {
|
|
241
243
|
logger.debug(`[Discovery] Registered ${result.tools.size} tools, ${result.agents.size} agents, ` +
|
|
242
244
|
`${result.skills.size} skills, ${result.workflows.size} workflows, ` +
|
|
245
|
+
`${result.works.size} Work definitions, ` +
|
|
243
246
|
`${result.prompts.size} prompts, ${result.resources.size} resources`);
|
|
244
247
|
}
|
|
245
248
|
}
|
|
@@ -1,3 +1,6 @@
|
|
|
1
1
|
import type { HandlerContext } from "../../types.js";
|
|
2
|
+
type DashboardApiMethod = "GET" | "POST";
|
|
3
|
+
export declare function getDashboardApiRoutePaths(method: DashboardApiMethod): string[];
|
|
2
4
|
export declare function handleDashboardAPI(req: Request, ctx: HandlerContext): Promise<Response | null> | Response | null;
|
|
5
|
+
export {};
|
|
3
6
|
//# sourceMappingURL=api.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"api.d.ts","sourceRoot":"","sources":["../../../../../../src/src/server/handlers/dev/dashboard/api.ts"],"names":[],"mappings":"AA4BA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AA4CrD,wBAAgB,kBAAkB,CAChC,GAAG,EAAE,OAAO,EACZ,GAAG,EAAE,cAAc,GAClB,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC,GAAG,QAAQ,GAAG,IAAI,
|
|
1
|
+
{"version":3,"file":"api.d.ts","sourceRoot":"","sources":["../../../../../../src/src/server/handlers/dev/dashboard/api.ts"],"names":[],"mappings":"AA4BA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AA4CrD,KAAK,kBAAkB,GAAG,KAAK,GAAG,MAAM,CAAC;AA2CzC,wBAAgB,yBAAyB,CAAC,MAAM,EAAE,kBAAkB,GAAG,MAAM,EAAE,CAG9E;AAED,wBAAgB,kBAAkB,CAChC,GAAG,EAAE,OAAO,EACZ,GAAG,EAAE,cAAc,GAClB,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC,GAAG,QAAQ,GAAG,IAAI,CAQ5C"}
|
|
@@ -59,67 +59,51 @@ const TEXT_EXTENSIONS = new Set([
|
|
|
59
59
|
"gitignore",
|
|
60
60
|
"dockerignore",
|
|
61
61
|
]);
|
|
62
|
+
const GET_DASHBOARD_API_ROUTES = {
|
|
63
|
+
"/_dev/api/stats": () => handleStats(),
|
|
64
|
+
"/_dev/api/tools": () => handleListTools(),
|
|
65
|
+
"/_dev/api/resources": () => handleListResources(),
|
|
66
|
+
"/_dev/api/prompts": () => handleListPrompts(),
|
|
67
|
+
"/_dev/api/agents": () => handleListAgents(),
|
|
68
|
+
"/_dev/api/workflows": () => handleListWorkflows(),
|
|
69
|
+
"/_dev/api/handlers": (_req, ctx) => handleListHandlers(ctx),
|
|
70
|
+
"/_dev/api/metrics": () => handleGetMetrics(),
|
|
71
|
+
"/_dev/api/files": (req, ctx) => handleListFiles(req, ctx),
|
|
72
|
+
"/_dev/api/file-content": (req, ctx) => handleReadFileContent(req, ctx),
|
|
73
|
+
"/_dev/api/infrastructure": () => handleGetInfrastructure(),
|
|
74
|
+
"/_dev/api/memory": () => handleGetMemory(),
|
|
75
|
+
"/_dev/api/build": () => handleGetBuild(),
|
|
76
|
+
"/_dev/api/errors": () => handleGetErrors(),
|
|
77
|
+
"/_dev/api/config": (_req, ctx) => handleGetConfig(ctx),
|
|
78
|
+
"/_dev/api/live-errors": (req) => handleLiveErrors(req),
|
|
79
|
+
"/_dev/api/live-logs": (req) => handleLiveLogs(req),
|
|
80
|
+
};
|
|
81
|
+
const POST_DASHBOARD_API_ROUTES = {
|
|
82
|
+
"/_dev/api/hmr-trigger": (req) => handleHmrTrigger(req),
|
|
83
|
+
"/_dev/api/execute-tool": (req) => handleExecuteTool(req),
|
|
84
|
+
"/_dev/api/read-resource": (req) => handleReadResource(req),
|
|
85
|
+
"/_dev/api/render-prompt": (req) => handleRenderPrompt(req),
|
|
86
|
+
"/_dev/api/start-workflow": (req) => handleStartWorkflow(req),
|
|
87
|
+
};
|
|
88
|
+
function getDashboardRouteHandler(method, pathname) {
|
|
89
|
+
if (method === "GET")
|
|
90
|
+
return GET_DASHBOARD_API_ROUTES[pathname];
|
|
91
|
+
if (method === "POST")
|
|
92
|
+
return POST_DASHBOARD_API_ROUTES[pathname];
|
|
93
|
+
return undefined;
|
|
94
|
+
}
|
|
95
|
+
export function getDashboardApiRoutePaths(method) {
|
|
96
|
+
const routes = method === "GET" ? GET_DASHBOARD_API_ROUTES : POST_DASHBOARD_API_ROUTES;
|
|
97
|
+
return Object.keys(routes).sort();
|
|
98
|
+
}
|
|
62
99
|
export function handleDashboardAPI(req, ctx) {
|
|
63
100
|
if (!ctx.isLocalProject)
|
|
64
101
|
return errorResponse("Unauthorized", 401);
|
|
65
102
|
const { pathname } = new URL(req.url);
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
case "/_dev/api/tools":
|
|
71
|
-
return handleListTools();
|
|
72
|
-
case "/_dev/api/resources":
|
|
73
|
-
return handleListResources();
|
|
74
|
-
case "/_dev/api/prompts":
|
|
75
|
-
return handleListPrompts();
|
|
76
|
-
case "/_dev/api/agents":
|
|
77
|
-
return handleListAgents();
|
|
78
|
-
case "/_dev/api/workflows":
|
|
79
|
-
return handleListWorkflows();
|
|
80
|
-
case "/_dev/api/handlers":
|
|
81
|
-
return handleListHandlers(ctx);
|
|
82
|
-
case "/_dev/api/metrics":
|
|
83
|
-
return handleGetMetrics();
|
|
84
|
-
case "/_dev/api/files":
|
|
85
|
-
return handleListFiles(req, ctx);
|
|
86
|
-
case "/_dev/api/file-content":
|
|
87
|
-
return handleReadFileContent(req, ctx);
|
|
88
|
-
case "/_dev/api/infrastructure":
|
|
89
|
-
return handleGetInfrastructure();
|
|
90
|
-
case "/_dev/api/memory":
|
|
91
|
-
return handleGetMemory();
|
|
92
|
-
case "/_dev/api/build":
|
|
93
|
-
return handleGetBuild();
|
|
94
|
-
case "/_dev/api/errors":
|
|
95
|
-
return handleGetErrors();
|
|
96
|
-
case "/_dev/api/config":
|
|
97
|
-
return handleGetConfig(ctx);
|
|
98
|
-
case "/_dev/api/live-errors":
|
|
99
|
-
return handleLiveErrors(req);
|
|
100
|
-
case "/_dev/api/live-logs":
|
|
101
|
-
return handleLiveLogs(req);
|
|
102
|
-
default:
|
|
103
|
-
return null;
|
|
104
|
-
}
|
|
105
|
-
}
|
|
106
|
-
if (req.method === "POST") {
|
|
107
|
-
switch (pathname) {
|
|
108
|
-
case "/_dev/api/hmr-trigger":
|
|
109
|
-
return handleHmrTrigger(req);
|
|
110
|
-
case "/_dev/api/execute-tool":
|
|
111
|
-
return handleExecuteTool(req);
|
|
112
|
-
case "/_dev/api/read-resource":
|
|
113
|
-
return handleReadResource(req);
|
|
114
|
-
case "/_dev/api/render-prompt":
|
|
115
|
-
return handleRenderPrompt(req);
|
|
116
|
-
case "/_dev/api/start-workflow":
|
|
117
|
-
return handleStartWorkflow(req);
|
|
118
|
-
default:
|
|
119
|
-
return null;
|
|
120
|
-
}
|
|
121
|
-
}
|
|
122
|
-
return null;
|
|
103
|
+
const handler = getDashboardRouteHandler(req.method, pathname);
|
|
104
|
+
if (!handler)
|
|
105
|
+
return null;
|
|
106
|
+
return handler(req, ctx);
|
|
123
107
|
}
|
|
124
108
|
function handleStats() {
|
|
125
109
|
const mcpStats = getMCPStats();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"framework-candidates.generated.d.ts","sourceRoot":"","sources":["../../../../../src/src/server/handlers/dev/framework-candidates.generated.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,eAAO,MAAM,oBAAoB,EAAE,SAAS,MAAM,
|
|
1
|
+
{"version":3,"file":"framework-candidates.generated.d.ts","sourceRoot":"","sources":["../../../../../src/src/server/handlers/dev/framework-candidates.generated.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,eAAO,MAAM,oBAAoB,EAAE,SAAS,MAAM,EA2sLjD,CAAC"}
|
|
@@ -2085,10 +2085,12 @@ export const FRAMEWORK_CANDIDATES = [
|
|
|
2085
2085
|
"aria-expanded={attachmentMenuOpen}",
|
|
2086
2086
|
"aria-expanded={open}",
|
|
2087
2087
|
"aria-haspopup=",
|
|
2088
|
+
"aria-label",
|
|
2088
2089
|
"aria-label=",
|
|
2089
2090
|
"aria-label={",
|
|
2090
2091
|
"aria-label={ariaLabel}",
|
|
2091
2092
|
"aria-label={copied",
|
|
2093
|
+
"aria-label={inputLabel}",
|
|
2092
2094
|
"aria-label={isDark",
|
|
2093
2095
|
"aria-label={provider",
|
|
2094
2096
|
"aria-label={sidebarOpen",
|
|
@@ -2142,6 +2144,7 @@ export const FRAMEWORK_CANDIDATES = [
|
|
|
2142
2144
|
"assertEquals(selectCalls,",
|
|
2143
2145
|
"assertEquals(submitButton.className.includes(",
|
|
2144
2146
|
"assertEquals(submitCalls,",
|
|
2147
|
+
"assertEquals(textarea.getAttribute(",
|
|
2145
2148
|
"assertEquals(theme.messageVariants({",
|
|
2146
2149
|
"assertEquals(third.type,",
|
|
2147
2150
|
"assertEquals,",
|
|
@@ -2155,6 +2158,7 @@ export const FRAMEWORK_CANDIDATES = [
|
|
|
2155
2158
|
"assistant",
|
|
2156
2159
|
"assistant:",
|
|
2157
2160
|
"assistant?:",
|
|
2161
|
+
"assistive",
|
|
2158
2162
|
"async",
|
|
2159
2163
|
"at",
|
|
2160
2164
|
"attachAccept",
|
|
@@ -3487,6 +3491,8 @@ export const FRAMEWORK_CANDIDATES = [
|
|
|
3487
3491
|
"input?.script",
|
|
3488
3492
|
"input?.skillId",
|
|
3489
3493
|
"input?:",
|
|
3494
|
+
"inputLabel",
|
|
3495
|
+
"inputPlaceholder",
|
|
3490
3496
|
"inputRef",
|
|
3491
3497
|
"inputRef.current?.focus();",
|
|
3492
3498
|
"input}",
|
|
@@ -3643,6 +3649,7 @@ export const FRAMEWORK_CANDIDATES = [
|
|
|
3643
3649
|
"label.",
|
|
3644
3650
|
"label:",
|
|
3645
3651
|
"label?:",
|
|
3652
|
+
"labels",
|
|
3646
3653
|
"label}",
|
|
3647
3654
|
"language",
|
|
3648
3655
|
"language,",
|
|
@@ -4448,7 +4455,9 @@ export const FRAMEWORK_CANDIDATES = [
|
|
|
4448
4455
|
"placeholder",
|
|
4449
4456
|
"placeholder,",
|
|
4450
4457
|
"placeholder:text-[var(--input-placeholder)]",
|
|
4451
|
-
"placeholder
|
|
4458
|
+
"placeholder;",
|
|
4459
|
+
"placeholder=",
|
|
4460
|
+
"placeholder={inputPlaceholder}",
|
|
4452
4461
|
"placeholder={voice.isListening",
|
|
4453
4462
|
"placeholder?:",
|
|
4454
4463
|
"placeholder}",
|
|
@@ -5273,6 +5282,7 @@ export const FRAMEWORK_CANDIDATES = [
|
|
|
5273
5282
|
"tc2",
|
|
5274
5283
|
"td",
|
|
5275
5284
|
"td>",
|
|
5285
|
+
"technology",
|
|
5276
5286
|
"text",
|
|
5277
5287
|
"text)",
|
|
5278
5288
|
"text);",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"specifier-resolver.d.ts","sourceRoot":"","sources":["../../../../src/src/transforms/esm/specifier-resolver.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;
|
|
1
|
+
{"version":3,"file":"specifier-resolver.d.ts","sourceRoot":"","sources":["../../../../src/src/transforms/esm/specifier-resolver.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAKH,OAAO,EACL,KAAK,YAAY,EAOlB,MAAM,yBAAyB,CAAC;AAEjC,kFAAkF;AAClF,MAAM,MAAM,iBAAiB,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,YAAY,KAAK,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;AAoE/F;;GAEG;AACH,wBAAsB,iBAAiB,CACrC,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,MAAM,GAAG,SAAS,EAC3B,OAAO,EAAE,YAAY,EACrB,eAAe,EAAE,iBAAiB,GACjC,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAiB9B;AAED;;GAEG;AACH,wBAAsB,oBAAoB,CACxC,IAAI,EAAE,MAAM,EACZ,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,YAAY,EACrB,eAAe,EAAE,iBAAiB,GACjC,OAAO,CAAC,MAAM,CAAC,CAKjB"}
|
|
@@ -7,8 +7,14 @@
|
|
|
7
7
|
* @module transforms/esm/specifier-resolver
|
|
8
8
|
*/
|
|
9
9
|
import { basename } from "../../platform/compat/path/index.js";
|
|
10
|
+
import { resolveImport } from "../../modules/import-map/resolver.js";
|
|
10
11
|
import { parseImports, replaceSpecifiers } from "./lexer.js";
|
|
11
12
|
import { isExternalScheme, isHttpUrl, isInternalBare, isParentHttpModule, isRelative, resolveBareSpecifier, } from "./http-cache-helpers.js";
|
|
13
|
+
function isLocalMappedSpecifier(specifier) {
|
|
14
|
+
return specifier.startsWith("/_vf_modules/") ||
|
|
15
|
+
specifier.startsWith("_vf_modules/") ||
|
|
16
|
+
specifier.startsWith("file://");
|
|
17
|
+
}
|
|
12
18
|
/**
|
|
13
19
|
* Resolve a single import specifier to a local cached path.
|
|
14
20
|
*
|
|
@@ -29,6 +35,12 @@ async function resolveSpecifier(specifier, baseUrl, options, cacheHttpModule) {
|
|
|
29
35
|
return `file://${cached}`;
|
|
30
36
|
}
|
|
31
37
|
if (isHttpUrl(specifier)) {
|
|
38
|
+
const mapped = resolveImport(specifier, options.importMap);
|
|
39
|
+
if (mapped !== specifier) {
|
|
40
|
+
if (isLocalMappedSpecifier(mapped))
|
|
41
|
+
return mapped;
|
|
42
|
+
return resolveSpecifier(mapped, baseUrl, options, cacheHttpModule);
|
|
43
|
+
}
|
|
32
44
|
const cached = await cacheHttpModule(specifier, options);
|
|
33
45
|
if (!cached)
|
|
34
46
|
return null;
|
|
@@ -51,6 +63,8 @@ async function resolveSpecifier(specifier, baseUrl, options, cacheHttpModule) {
|
|
|
51
63
|
const mapped = resolveBareSpecifier(specifier, options.importMap, options.reactVersion);
|
|
52
64
|
if (mapped === specifier)
|
|
53
65
|
return null;
|
|
66
|
+
if (isLocalMappedSpecifier(mapped))
|
|
67
|
+
return mapped;
|
|
54
68
|
return resolveSpecifier(mapped, baseUrl, options, cacheHttpModule);
|
|
55
69
|
}
|
|
56
70
|
/**
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"factory.d.ts","sourceRoot":"","sources":["../../../src/src/work/factory.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAA2B,UAAU,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAGtF,sCAAsC;AACtC,wBAAgB,IAAI,CAAC,MAAM,EAAE,UAAU,GAAG,cAAc,CA0CvD"}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import { createError, toError } from "../errors/veryfront-error.js";
|
|
2
|
+
/** Create a typed Work definition. */
|
|
3
|
+
export function work(config) {
|
|
4
|
+
const id = assertWorkId(config.id);
|
|
5
|
+
const outcome = assertNonEmptyString(config.outcome, `Work "${id}" outcome`);
|
|
6
|
+
if (!Array.isArray(config.acceptanceCriteria) || config.acceptanceCriteria.length === 0) {
|
|
7
|
+
throwWorkConfigError(`Work "${id}" must define at least one acceptance criterion.`);
|
|
8
|
+
}
|
|
9
|
+
const seenCriterionIds = new Set();
|
|
10
|
+
const acceptanceCriteria = config.acceptanceCriteria.map((criterion, index) => {
|
|
11
|
+
const criterionId = assertNonEmptyString(criterion.id, `Work "${id}" acceptance criterion at index ${index} id`);
|
|
12
|
+
if (seenCriterionIds.has(criterionId)) {
|
|
13
|
+
throwWorkConfigError(`Work "${id}" has duplicate acceptance criterion id "${criterionId}".`);
|
|
14
|
+
}
|
|
15
|
+
seenCriterionIds.add(criterionId);
|
|
16
|
+
const description = assertNonEmptyString(criterion.description, `Work "${id}" acceptance criterion "${criterionId}" description`);
|
|
17
|
+
const normalizedCriterion = {
|
|
18
|
+
id: criterionId,
|
|
19
|
+
description,
|
|
20
|
+
};
|
|
21
|
+
if (criterion.optional === true) {
|
|
22
|
+
normalizedCriterion.optional = true;
|
|
23
|
+
}
|
|
24
|
+
return normalizedCriterion;
|
|
25
|
+
});
|
|
26
|
+
return {
|
|
27
|
+
id,
|
|
28
|
+
name: config.name?.trim() || id,
|
|
29
|
+
outcome,
|
|
30
|
+
acceptanceCriteria,
|
|
31
|
+
};
|
|
32
|
+
}
|
|
33
|
+
function assertWorkId(value) {
|
|
34
|
+
const id = assertNonEmptyString(value, "Work id");
|
|
35
|
+
if (!/^[A-Za-z0-9][A-Za-z0-9_-]*$/.test(id)) {
|
|
36
|
+
throwWorkConfigError("Work id must be a path-safe single segment using letters, numbers, underscores, or hyphens.");
|
|
37
|
+
}
|
|
38
|
+
return id;
|
|
39
|
+
}
|
|
40
|
+
function assertNonEmptyString(value, label) {
|
|
41
|
+
if (typeof value !== "string" || value.trim().length === 0) {
|
|
42
|
+
throwWorkConfigError(`${label} cannot be empty.`);
|
|
43
|
+
}
|
|
44
|
+
return value.trim();
|
|
45
|
+
}
|
|
46
|
+
function throwWorkConfigError(message) {
|
|
47
|
+
throw toError(createError({
|
|
48
|
+
type: "agent",
|
|
49
|
+
message,
|
|
50
|
+
}));
|
|
51
|
+
}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Declare source-backed Work definitions for business process observability.
|
|
3
|
+
*
|
|
4
|
+
* @module work
|
|
5
|
+
*
|
|
6
|
+
* @example
|
|
7
|
+
* ```ts
|
|
8
|
+
* import { work } from "veryfront/work";
|
|
9
|
+
*
|
|
10
|
+
* export default work({
|
|
11
|
+
* id: "supplier-invoice-processing",
|
|
12
|
+
* name: "Supplier invoice processing",
|
|
13
|
+
* outcome: "Resolve all open supplier invoices.",
|
|
14
|
+
* acceptanceCriteria: [
|
|
15
|
+
* {
|
|
16
|
+
* id: "invoices_discovered",
|
|
17
|
+
* description: "Open supplier invoices have been discovered.",
|
|
18
|
+
* },
|
|
19
|
+
* ],
|
|
20
|
+
* });
|
|
21
|
+
* ```
|
|
22
|
+
*/
|
|
23
|
+
import "../../_dnt.polyfills.js";
|
|
24
|
+
export type { WorkAcceptanceCriterion, WorkConfig, WorkDefinition, WorkReference, } from "./types.js";
|
|
25
|
+
export { work } from "./factory.js";
|
|
26
|
+
export { workRegistry } from "./registry.js";
|
|
27
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/src/work/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,OAAO,yBAAyB,CAAC;AAGjC,YAAY,EACV,uBAAuB,EACvB,UAAU,EACV,cAAc,EACd,aAAa,GACd,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,IAAI,EAAE,MAAM,cAAc,CAAC;AACpC,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC"}
|