veryfront 0.1.629 → 0.1.631
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/worker/command-help.d.ts.map +1 -1
- package/esm/cli/commands/worker/command-help.js +0 -5
- package/esm/cli/commands/worker/command.d.ts.map +1 -1
- package/esm/cli/commands/worker/command.js +0 -6
- package/esm/cli/commands/worker/handler.js +1 -1
- package/esm/deno.d.ts +6 -0
- package/esm/deno.js +11 -5
- package/esm/src/agent/ag-ui/handler.d.ts.map +1 -1
- package/esm/src/agent/ag-ui/handler.js +36 -3
- package/esm/src/agent/ag-ui/runtime-chat-stream-encoder.d.ts.map +1 -1
- package/esm/src/agent/ag-ui/runtime-chat-stream-encoder.js +9 -1
- package/esm/src/agent/hosted/child-fork-execution-runner.d.ts.map +1 -1
- package/esm/src/agent/hosted/child-fork-execution-runner.js +1 -0
- package/esm/src/agent/hosted/child-fork-step-message-preparation.d.ts.map +1 -1
- package/esm/src/agent/hosted/child-requested-tools.d.ts +1 -0
- package/esm/src/agent/hosted/child-requested-tools.d.ts.map +1 -1
- package/esm/src/agent/hosted/child-requested-tools.js +15 -5
- package/esm/src/agent/react/use-chat/streaming/handler.d.ts.map +1 -1
- package/esm/src/agent/react/use-chat/streaming/handler.js +32 -3
- package/esm/src/agent/react/use-chat/streaming/parts-builder.d.ts +2 -2
- package/esm/src/agent/react/use-chat/streaming/parts-builder.d.ts.map +1 -1
- package/esm/src/agent/react/use-chat/streaming/parts-builder.js +8 -1
- package/esm/src/agent/react/use-chat/streaming/types.d.ts +4 -0
- package/esm/src/agent/react/use-chat/streaming/types.d.ts.map +1 -1
- package/esm/src/agent/react/use-chat/types.d.ts +2 -2
- package/esm/src/agent/react/use-chat/types.d.ts.map +1 -1
- package/esm/src/agent/runtime/chat-stream-handler.d.ts +2 -0
- package/esm/src/agent/runtime/chat-stream-handler.d.ts.map +1 -1
- package/esm/src/agent/runtime/chat-stream-handler.js +151 -15
- package/esm/src/agent/runtime/index.d.ts +15 -0
- package/esm/src/agent/runtime/index.d.ts.map +1 -1
- package/esm/src/agent/runtime/index.js +55 -1
- package/esm/src/agent/runtime/provider-native-tool-inventory.d.ts +1 -1
- package/esm/src/agent/runtime/provider-native-tool-inventory.d.ts.map +1 -1
- package/esm/src/agent/runtime/provider-native-tool-inventory.js +2 -7
- package/esm/src/agent/runtime/runtime-tool-types.d.ts +11 -0
- package/esm/src/agent/runtime/runtime-tool-types.d.ts.map +1 -1
- package/esm/src/agent/streaming/fork-runtime-stream.d.ts +1 -0
- package/esm/src/agent/streaming/fork-runtime-stream.d.ts.map +1 -1
- package/esm/src/agent/streaming/fork-runtime-stream.js +7 -5
- package/esm/src/agent/streaming/tool-execution-data-event-bridge.d.ts.map +1 -1
- package/esm/src/agent/streaming/tool-execution-data-event-bridge.js +4 -0
- package/esm/src/cache/registry.d.ts +13 -2
- package/esm/src/cache/registry.d.ts.map +1 -1
- package/esm/src/channels/control-plane.d.ts +9 -7
- package/esm/src/channels/control-plane.d.ts.map +1 -1
- package/esm/src/channels/control-plane.js +3 -1
- package/esm/src/channels/invoke.d.ts +2 -2
- package/esm/src/chat/protocol.d.ts +6 -1
- package/esm/src/chat/protocol.d.ts.map +1 -1
- package/esm/src/discovery/import-rewriter.d.ts.map +1 -1
- package/esm/src/discovery/import-rewriter.js +8 -1
- package/esm/src/embedding/veryfront-cloud/rag-store.d.ts.map +1 -1
- package/esm/src/embedding/veryfront-cloud/rag-store.js +4 -1
- package/esm/src/html/hydration-script-builder/hydration-data-generator.d.ts.map +1 -1
- package/esm/src/html/hydration-script-builder/hydration-data-generator.js +5 -1
- package/esm/src/html/utils.d.ts.map +1 -1
- package/esm/src/html/utils.js +11 -1
- package/esm/src/internal-agents/control-plane-auth.d.ts +3 -2
- package/esm/src/internal-agents/control-plane-auth.d.ts.map +1 -1
- package/esm/src/internal-agents/control-plane-auth.js +1 -1
- package/esm/src/mcp/server.d.ts.map +1 -1
- package/esm/src/mcp/server.js +8 -2
- package/esm/src/modules/react-loader/ssr-module-loader/cache/memory.d.ts.map +1 -1
- package/esm/src/modules/react-loader/ssr-module-loader/cache/memory.js +1 -0
- package/esm/src/platform/adapters/fs/veryfront/proxy-manager.d.ts.map +1 -1
- package/esm/src/platform/adapters/fs/veryfront/proxy-manager.js +2 -1
- package/esm/src/platform/adapters/veryfront-api-client/operations.d.ts +2 -2
- package/esm/src/platform/adapters/veryfront-api-client/operations.d.ts.map +1 -1
- package/esm/src/platform/adapters/veryfront-api-client/operations.js +2 -2
- package/esm/src/platform/adapters/veryfront-api-client/schemas/api.schema.d.ts +1 -1
- package/esm/src/platform/adapters/veryfront-api-client/schemas/api.schema.js +1 -1
- package/esm/src/platform/compat/fs.d.ts.map +1 -1
- package/esm/src/platform/compat/fs.js +27 -27
- package/esm/src/provider/local/local-embedding-engine.d.ts.map +1 -1
- package/esm/src/provider/local/local-embedding-engine.js +18 -32
- package/esm/src/provider/local/local-engine.d.ts.map +1 -1
- package/esm/src/provider/local/local-engine.js +14 -26
- package/esm/src/provider/local/pipeline-cache.d.ts +27 -0
- package/esm/src/provider/local/pipeline-cache.d.ts.map +1 -0
- package/esm/src/provider/local/pipeline-cache.js +61 -0
- package/esm/src/server/handlers/dev/framework-candidates.generated.d.ts.map +1 -1
- package/esm/src/server/handlers/dev/framework-candidates.generated.js +1 -0
- package/esm/src/server/handlers/request/internal-agents-list.handler.d.ts.map +1 -1
- package/esm/src/server/handlers/request/internal-agents-list.handler.js +1 -0
- package/esm/src/server/handlers/request/project-run-execute.handler.d.ts +74 -0
- package/esm/src/server/handlers/request/project-run-execute.handler.d.ts.map +1 -0
- package/esm/src/server/handlers/request/project-run-execute.handler.js +460 -0
- package/esm/src/server/runtime-handler/index.d.ts +1 -1
- package/esm/src/server/runtime-handler/index.d.ts.map +1 -1
- package/esm/src/server/runtime-handler/index.js +3 -0
- package/esm/src/transforms/mdx/esm-module-loader/module-writer.d.ts.map +1 -1
- package/esm/src/transforms/mdx/esm-module-loader/module-writer.js +8 -2
- package/esm/src/transforms/pipeline/stages/ssr-vf-modules/transform.d.ts.map +1 -1
- package/esm/src/transforms/pipeline/stages/ssr-vf-modules/transform.js +8 -1
- package/esm/src/utils/version-constant.d.ts +1 -1
- package/esm/src/utils/version-constant.js +1 -1
- package/esm/src/workflow/worker/executors/index.d.ts +0 -2
- package/esm/src/workflow/worker/executors/index.d.ts.map +1 -1
- package/esm/src/workflow/worker/executors/index.js +0 -2
- package/esm/src/workflow/worker/executors/types.d.ts +7 -17
- package/esm/src/workflow/worker/executors/types.d.ts.map +1 -1
- package/esm/src/workflow/worker/executors/types.js +0 -1
- package/esm/src/workflow/worker/index.d.ts +3 -9
- package/esm/src/workflow/worker/index.d.ts.map +1 -1
- package/esm/src/workflow/worker/index.js +3 -9
- package/esm/src/workflow/worker/run-manager.d.ts +1 -16
- package/esm/src/workflow/worker/run-manager.d.ts.map +1 -1
- package/esm/src/workflow/worker/run-manager.js +2 -19
- package/package.json +1 -1
- package/esm/src/workflow/worker/executors/k8s.d.ts +0 -157
- package/esm/src/workflow/worker/executors/k8s.d.ts.map +0 -1
- package/esm/src/workflow/worker/executors/k8s.js +0 -198
|
@@ -10,43 +10,29 @@
|
|
|
10
10
|
import { serverLogger } from "../../utils/index.js";
|
|
11
11
|
import { resolveLocalEmbeddingModel } from "./model-catalog.js";
|
|
12
12
|
import { getTransformers } from "./local-engine.js";
|
|
13
|
+
import { createPipelineCache } from "./pipeline-cache.js";
|
|
13
14
|
const logger = serverLogger.component("local-embedding");
|
|
14
|
-
/**
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
15
|
+
/**
|
|
16
|
+
* Bounded, dedup-aware cache of feature-extraction pipelines keyed by
|
|
17
|
+
* HuggingFace model id. Only loads a model on a cold cache miss; concurrent
|
|
18
|
+
* loads of the same model share a single promise.
|
|
19
|
+
*/
|
|
20
|
+
const embeddingPipelines = createPipelineCache(async (modelInfo) => {
|
|
21
|
+
const transformers = await getTransformers();
|
|
22
|
+
logger.info(`Loading local embedding model: ${modelInfo.hfId} (${modelInfo.dtype}, ~${modelInfo.sizeMB}MB)...`);
|
|
23
|
+
const pipe = (await transformers.pipeline("feature-extraction", modelInfo.hfId, {
|
|
24
|
+
dtype: modelInfo.dtype,
|
|
25
|
+
device: "cpu",
|
|
26
|
+
}));
|
|
27
|
+
logger.info(`Embedding model loaded: ${modelInfo.hfId}`);
|
|
28
|
+
return pipe;
|
|
29
|
+
});
|
|
18
30
|
/**
|
|
19
31
|
* Load a feature-extraction pipeline for the given model.
|
|
20
32
|
* Returns a cached pipeline if already loaded.
|
|
21
33
|
*/
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
const cached = pipelineCache.get(cacheKey);
|
|
25
|
-
if (cached)
|
|
26
|
-
return cached;
|
|
27
|
-
const existingLock = loadingLocks.get(cacheKey);
|
|
28
|
-
if (existingLock)
|
|
29
|
-
return existingLock;
|
|
30
|
-
const loadPromise = (async () => {
|
|
31
|
-
const transformers = await getTransformers();
|
|
32
|
-
logger.info(`Loading local embedding model: ${modelInfo.hfId} (${modelInfo.dtype}, ~${modelInfo.sizeMB}MB)...`);
|
|
33
|
-
const pipe = (await transformers.pipeline("feature-extraction", modelInfo.hfId, {
|
|
34
|
-
dtype: modelInfo.dtype,
|
|
35
|
-
device: "cpu",
|
|
36
|
-
}));
|
|
37
|
-
logger.info(`Embedding model loaded: ${modelInfo.hfId}`);
|
|
38
|
-
pipelineCache.set(cacheKey, pipe);
|
|
39
|
-
loadingLocks.delete(cacheKey);
|
|
40
|
-
return pipe;
|
|
41
|
-
})();
|
|
42
|
-
loadingLocks.set(cacheKey, loadPromise);
|
|
43
|
-
try {
|
|
44
|
-
return await loadPromise;
|
|
45
|
-
}
|
|
46
|
-
catch (error) {
|
|
47
|
-
loadingLocks.delete(cacheKey);
|
|
48
|
-
throw error;
|
|
49
|
-
}
|
|
34
|
+
function loadPipeline(modelInfo) {
|
|
35
|
+
return embeddingPipelines.load(modelInfo.hfId, modelInfo);
|
|
50
36
|
}
|
|
51
37
|
/**
|
|
52
38
|
* Generate embeddings for an array of texts using a local model.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"local-engine.d.ts","sourceRoot":"","sources":["../../../../src/src/provider/local/local-engine.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;
|
|
1
|
+
{"version":3,"file":"local-engine.d.ts","sourceRoot":"","sources":["../../../../src/src/provider/local/local-engine.ts"],"names":[],"mappings":"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"}
|
|
@@ -15,6 +15,7 @@ import { createError, toError } from "../../errors/veryfront-error.js";
|
|
|
15
15
|
import { importTransformers } from "../../platform/compat/opaque-deps.js";
|
|
16
16
|
import { DEFAULT_LOCAL_MODEL, resolveLocalModel } from "./model-catalog.js";
|
|
17
17
|
import { throwIfLocalAIDisabled } from "./env.js";
|
|
18
|
+
import { createPipelineCache } from "./pipeline-cache.js";
|
|
18
19
|
const logger = serverLogger.component("local-llm");
|
|
19
20
|
/** Default maximum new tokens for local model generation */
|
|
20
21
|
const DEFAULT_MAX_NEW_TOKENS = 512;
|
|
@@ -82,10 +83,6 @@ export function buildPipeOptions(options, transformers, tokenizer, streamer) {
|
|
|
82
83
|
}
|
|
83
84
|
return pipeOptions;
|
|
84
85
|
}
|
|
85
|
-
/** Cached pipeline instances keyed by HuggingFace model ID */
|
|
86
|
-
const pipelineCache = new Map();
|
|
87
|
-
/** Whether a model is currently being loaded (prevents concurrent loads) */
|
|
88
|
-
const loadingLocks = new Map();
|
|
89
86
|
let transformersModule = null;
|
|
90
87
|
/**
|
|
91
88
|
* Lazily import @huggingface/transformers.
|
|
@@ -117,21 +114,12 @@ export async function getTransformers() {
|
|
|
117
114
|
return mod;
|
|
118
115
|
}
|
|
119
116
|
/**
|
|
120
|
-
*
|
|
121
|
-
*
|
|
117
|
+
* Bounded, dedup-aware cache of text-generation pipelines keyed by HuggingFace
|
|
118
|
+
* model id. Only loads a model on a cold cache miss; concurrent loads of the
|
|
119
|
+
* same model share a single promise.
|
|
122
120
|
*/
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
// Return cached pipeline
|
|
126
|
-
const cached = pipelineCache.get(cacheKey);
|
|
127
|
-
if (cached)
|
|
128
|
-
return cached;
|
|
129
|
-
// Wait for existing load if in progress
|
|
130
|
-
const existingLock = loadingLocks.get(cacheKey);
|
|
131
|
-
if (existingLock)
|
|
132
|
-
return existingLock;
|
|
133
|
-
// Start loading
|
|
134
|
-
const loadPromise = (async () => {
|
|
121
|
+
const textGenerationPipelines = createPipelineCache(async (modelInfo) => {
|
|
122
|
+
try {
|
|
135
123
|
const transformers = await getTransformers();
|
|
136
124
|
logger.info(`Loading local model: ${modelInfo.hfId} (${modelInfo.dtype}, ~${modelInfo.sizeMB}MB)...`);
|
|
137
125
|
const pipe = (await transformers.pipeline("text-generation", modelInfo.hfId, {
|
|
@@ -139,16 +127,9 @@ async function loadPipeline(modelInfo) {
|
|
|
139
127
|
device: "cpu",
|
|
140
128
|
}));
|
|
141
129
|
logger.info(`Model loaded: ${modelInfo.hfId}`);
|
|
142
|
-
pipelineCache.set(cacheKey, pipe);
|
|
143
|
-
loadingLocks.delete(cacheKey);
|
|
144
130
|
return pipe;
|
|
145
|
-
})();
|
|
146
|
-
loadingLocks.set(cacheKey, loadPromise);
|
|
147
|
-
try {
|
|
148
|
-
return await loadPromise;
|
|
149
131
|
}
|
|
150
132
|
catch (error) {
|
|
151
|
-
loadingLocks.delete(cacheKey);
|
|
152
133
|
// Convert ONNX / native-addon errors to no_ai_available so they propagate
|
|
153
134
|
// correctly through the chat handler (503) instead of being swallowed as
|
|
154
135
|
// in-band SSE errors inside a 200 response stream.
|
|
@@ -166,6 +147,13 @@ async function loadPipeline(modelInfo) {
|
|
|
166
147
|
}
|
|
167
148
|
throw error;
|
|
168
149
|
}
|
|
150
|
+
});
|
|
151
|
+
/**
|
|
152
|
+
* Load a text-generation pipeline for the given model.
|
|
153
|
+
* Returns a cached pipeline if already loaded.
|
|
154
|
+
*/
|
|
155
|
+
function loadPipeline(modelInfo) {
|
|
156
|
+
return textGenerationPipelines.load(modelInfo.hfId, modelInfo);
|
|
169
157
|
}
|
|
170
158
|
/**
|
|
171
159
|
* Eagerly verify that the local AI runtime (@huggingface/transformers + ONNX)
|
|
@@ -262,5 +250,5 @@ export async function preloadModel(modelId) {
|
|
|
262
250
|
*/
|
|
263
251
|
export function isModelLoaded(modelId) {
|
|
264
252
|
const modelInfo = resolveLocalModel(modelId);
|
|
265
|
-
return
|
|
253
|
+
return textGenerationPipelines.has(modelInfo.hfId);
|
|
266
254
|
}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shared pipeline cache for local Transformers.js engines.
|
|
3
|
+
*
|
|
4
|
+
* Both the text-generation engine (`local-engine.ts`) and the embedding engine
|
|
5
|
+
* (`local-embedding-engine.ts`) need to lazily load a pipeline per HuggingFace
|
|
6
|
+
* model id, cache it, and deduplicate concurrent loads of the same model. This
|
|
7
|
+
* helper captures that shared behavior and bounds the cache with an LRU so a
|
|
8
|
+
* long-running process that touches many models cannot grow memory without
|
|
9
|
+
* limit (loaded models are large).
|
|
10
|
+
*
|
|
11
|
+
* @module provider/local
|
|
12
|
+
*/
|
|
13
|
+
/** A loaded pipeline cache with concurrency-safe, deduplicated loading. */
|
|
14
|
+
export interface PipelineCache<P, M> {
|
|
15
|
+
/** Load (or return cached) pipeline for the given model id. */
|
|
16
|
+
load(cacheKey: string, modelInfo: M): Promise<P>;
|
|
17
|
+
/** Whether a pipeline for the given model id is currently loaded. */
|
|
18
|
+
has(cacheKey: string): boolean;
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Create a bounded, dedup-aware pipeline cache.
|
|
22
|
+
*
|
|
23
|
+
* @param loadFn Loads the underlying pipeline for a model. Only invoked on a
|
|
24
|
+
* cold cache miss; concurrent loads of the same key share a single promise.
|
|
25
|
+
*/
|
|
26
|
+
export declare function createPipelineCache<P, M>(loadFn: (modelInfo: M) => Promise<P>): PipelineCache<P, M>;
|
|
27
|
+
//# sourceMappingURL=pipeline-cache.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pipeline-cache.d.ts","sourceRoot":"","sources":["../../../../src/src/provider/local/pipeline-cache.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAUH,2EAA2E;AAC3E,MAAM,WAAW,aAAa,CAAC,CAAC,EAAE,CAAC;IACjC,+DAA+D;IAC/D,IAAI,CAAC,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;IACjD,qEAAqE;IACrE,GAAG,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC;CAChC;AAED;;;;;GAKG;AACH,wBAAgB,mBAAmB,CAAC,CAAC,EAAE,CAAC,EACtC,MAAM,EAAE,CAAC,SAAS,EAAE,CAAC,KAAK,OAAO,CAAC,CAAC,CAAC,GACnC,aAAa,CAAC,CAAC,EAAE,CAAC,CAAC,CAwCrB"}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shared pipeline cache for local Transformers.js engines.
|
|
3
|
+
*
|
|
4
|
+
* Both the text-generation engine (`local-engine.ts`) and the embedding engine
|
|
5
|
+
* (`local-embedding-engine.ts`) need to lazily load a pipeline per HuggingFace
|
|
6
|
+
* model id, cache it, and deduplicate concurrent loads of the same model. This
|
|
7
|
+
* helper captures that shared behavior and bounds the cache with an LRU so a
|
|
8
|
+
* long-running process that touches many models cannot grow memory without
|
|
9
|
+
* limit (loaded models are large).
|
|
10
|
+
*
|
|
11
|
+
* @module provider/local
|
|
12
|
+
*/
|
|
13
|
+
import { LRUCache } from "../../utils/lru-wrapper.js";
|
|
14
|
+
/**
|
|
15
|
+
* Maximum number of loaded pipelines kept in memory at once. Loaded models are
|
|
16
|
+
* large (hundreds of MB each), so the cap is intentionally small.
|
|
17
|
+
*/
|
|
18
|
+
const PIPELINE_CACHE_MAX_ENTRIES = 4;
|
|
19
|
+
/**
|
|
20
|
+
* Create a bounded, dedup-aware pipeline cache.
|
|
21
|
+
*
|
|
22
|
+
* @param loadFn Loads the underlying pipeline for a model. Only invoked on a
|
|
23
|
+
* cold cache miss; concurrent loads of the same key share a single promise.
|
|
24
|
+
*/
|
|
25
|
+
export function createPipelineCache(loadFn) {
|
|
26
|
+
const pipelineCache = new LRUCache({
|
|
27
|
+
maxEntries: PIPELINE_CACHE_MAX_ENTRIES,
|
|
28
|
+
});
|
|
29
|
+
// Whether a model is currently being loaded (prevents concurrent loads).
|
|
30
|
+
const loadingLocks = new Map();
|
|
31
|
+
return {
|
|
32
|
+
async load(cacheKey, modelInfo) {
|
|
33
|
+
// Return cached pipeline.
|
|
34
|
+
const cached = pipelineCache.get(cacheKey);
|
|
35
|
+
if (cached)
|
|
36
|
+
return cached;
|
|
37
|
+
// Wait for existing load if in progress.
|
|
38
|
+
const existingLock = loadingLocks.get(cacheKey);
|
|
39
|
+
if (existingLock)
|
|
40
|
+
return existingLock;
|
|
41
|
+
// Start loading.
|
|
42
|
+
const loadPromise = (async () => {
|
|
43
|
+
const pipe = await loadFn(modelInfo);
|
|
44
|
+
pipelineCache.set(cacheKey, pipe);
|
|
45
|
+
loadingLocks.delete(cacheKey);
|
|
46
|
+
return pipe;
|
|
47
|
+
})();
|
|
48
|
+
loadingLocks.set(cacheKey, loadPromise);
|
|
49
|
+
try {
|
|
50
|
+
return await loadPromise;
|
|
51
|
+
}
|
|
52
|
+
catch (error) {
|
|
53
|
+
loadingLocks.delete(cacheKey);
|
|
54
|
+
throw error;
|
|
55
|
+
}
|
|
56
|
+
},
|
|
57
|
+
has(cacheKey) {
|
|
58
|
+
return pipelineCache.has(cacheKey);
|
|
59
|
+
},
|
|
60
|
+
};
|
|
61
|
+
}
|
|
@@ -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,EAi/KjD,CAAC"}
|
|
@@ -5516,6 +5516,7 @@ export const FRAMEWORK_CANDIDATES = [
|
|
|
5516
5516
|
"veryfront/chat",
|
|
5517
5517
|
"veryfront/errors/error-registry.ts",
|
|
5518
5518
|
"veryfront/platform/compat/runtime.ts",
|
|
5519
|
+
"veryfront/react/primitives/index.ts",
|
|
5519
5520
|
"veryfront/schemas/_test-setup.ts",
|
|
5520
5521
|
"veryfront/security/client/html-sanitizer.ts",
|
|
5521
5522
|
"veryfront/testing/assert",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"internal-agents-list.handler.d.ts","sourceRoot":"","sources":["../../../../../src/src/server/handlers/request/internal-agents-list.handler.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAClD,OAAO,KAAK,EAAE,cAAc,EAAE,eAAe,EAAmB,aAAa,EAAE,MAAM,aAAa,CAAC;AACnG,OAAO,
|
|
1
|
+
{"version":3,"file":"internal-agents-list.handler.d.ts","sourceRoot":"","sources":["../../../../../src/src/server/handlers/request/internal-agents-list.handler.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAClD,OAAO,KAAK,EAAE,cAAc,EAAE,eAAe,EAAmB,aAAa,EAAE,MAAM,aAAa,CAAC;AACnG,OAAO,EAML,KAAK,yBAAyB,EAC/B,MAAM,oCAAoC,CAAC;AAa5C,qBAAa,yBAA0B,SAAQ,WAAW;IAS5C,OAAO,CAAC,QAAQ,CAAC,IAAI;IARjC,QAAQ,EAAE,eAAe,CAMvB;gBAE2B,IAAI,GAAE,yBAAoD;IAIjF,MAAM,CAAC,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,cAAc,GAAG,OAAO,CAAC,aAAa,CAAC;CAmExE"}
|
|
@@ -30,6 +30,7 @@ export class InternalAgentsListHandler extends BaseHandler {
|
|
|
30
30
|
const payload = ControlPlaneAgentsListRequestSchema.parse(JSON.parse(rawBody));
|
|
31
31
|
const claims = await verifyControlPlaneRequest(req, ctx, rawBody, {
|
|
32
32
|
expectedSubject: payload.requestId,
|
|
33
|
+
// Validated by `.parse()` above; narrow back to the union (object inference widens it to `string`).
|
|
33
34
|
expectedSurface: payload.surface,
|
|
34
35
|
});
|
|
35
36
|
if (payload.projectId !== claims.project_id ||
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
import type { RuntimeAdapter } from "../../../platform/index.js";
|
|
2
|
+
import type { VeryfrontConfig } from "../../../config/index.js";
|
|
3
|
+
import { type DiscoveredTask } from "../../../task/discovery.js";
|
|
4
|
+
import { type RunTaskOptions, type TaskRunResult } from "../../../task/runner.js";
|
|
5
|
+
import { type DiscoveredWorkflow } from "../../../workflow/discovery/index.js";
|
|
6
|
+
import type { HandlerContext, HandlerMetadata, HandlerResult } from "../types.js";
|
|
7
|
+
import { BaseHandler } from "../response/base.js";
|
|
8
|
+
export interface ProjectRunExecuteRequest {
|
|
9
|
+
runId: string;
|
|
10
|
+
kind: "task" | "workflow";
|
|
11
|
+
target: string;
|
|
12
|
+
projectId: string;
|
|
13
|
+
config?: Record<string, unknown>;
|
|
14
|
+
input?: Record<string, unknown>;
|
|
15
|
+
}
|
|
16
|
+
export interface ProjectRunExecuteResponse {
|
|
17
|
+
success: boolean;
|
|
18
|
+
result?: unknown;
|
|
19
|
+
logs?: string | null;
|
|
20
|
+
error?: string | null;
|
|
21
|
+
duration_ms?: number;
|
|
22
|
+
artifacts?: unknown[];
|
|
23
|
+
}
|
|
24
|
+
interface WorkflowRunView {
|
|
25
|
+
status: string;
|
|
26
|
+
output?: unknown;
|
|
27
|
+
error?: {
|
|
28
|
+
message?: string;
|
|
29
|
+
} | null;
|
|
30
|
+
}
|
|
31
|
+
interface WorkflowClientView {
|
|
32
|
+
readonly statePersistence?: "durable" | "ephemeral";
|
|
33
|
+
register(workflow: unknown): void;
|
|
34
|
+
start(workflowId: string, input: unknown, options?: {
|
|
35
|
+
runId?: string;
|
|
36
|
+
}): Promise<{
|
|
37
|
+
runId: string;
|
|
38
|
+
}>;
|
|
39
|
+
getRun(runId: string): Promise<WorkflowRunView | null>;
|
|
40
|
+
destroy(): Promise<void>;
|
|
41
|
+
}
|
|
42
|
+
export interface ProjectRunExecuteHandlerDeps {
|
|
43
|
+
findTaskById(taskId: string, options: {
|
|
44
|
+
projectDir: string;
|
|
45
|
+
adapter: RuntimeAdapter;
|
|
46
|
+
config?: VeryfrontConfig;
|
|
47
|
+
debug?: boolean;
|
|
48
|
+
}): Promise<DiscoveredTask | null>;
|
|
49
|
+
runTask(options: RunTaskOptions): Promise<TaskRunResult>;
|
|
50
|
+
findWorkflowById(workflowId: string, options: {
|
|
51
|
+
projectDir: string;
|
|
52
|
+
adapter: RuntimeAdapter;
|
|
53
|
+
config?: VeryfrontConfig;
|
|
54
|
+
debug?: boolean;
|
|
55
|
+
}): Promise<DiscoveredWorkflow | null>;
|
|
56
|
+
createWorkflowClient(config?: {
|
|
57
|
+
debug?: boolean;
|
|
58
|
+
}): WorkflowClientView | Promise<WorkflowClientView>;
|
|
59
|
+
executeKnowledgeIngest(input: {
|
|
60
|
+
request: ProjectRunExecuteRequest;
|
|
61
|
+
ctx: HandlerContext;
|
|
62
|
+
req: Request;
|
|
63
|
+
}): Promise<ProjectRunExecuteResponse>;
|
|
64
|
+
sleep(ms: number): Promise<void>;
|
|
65
|
+
now(): number;
|
|
66
|
+
}
|
|
67
|
+
export declare class ProjectRunExecuteHandler extends BaseHandler {
|
|
68
|
+
private readonly deps;
|
|
69
|
+
metadata: HandlerMetadata;
|
|
70
|
+
constructor(deps?: ProjectRunExecuteHandlerDeps);
|
|
71
|
+
handle(req: Request, ctx: HandlerContext): Promise<HandlerResult>;
|
|
72
|
+
}
|
|
73
|
+
export {};
|
|
74
|
+
//# sourceMappingURL=project-run-execute.handler.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"project-run-execute.handler.d.ts","sourceRoot":"","sources":["../../../../../src/src/server/handlers/request/project-run-execute.handler.ts"],"names":[],"mappings":"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"}
|