@frontmcp/sdk 0.11.2 → 0.12.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/adapter/adapter.registry.d.ts.map +1 -1
- package/agent/flows/call-agent.flow.d.ts.map +1 -1
- package/app/app.registry.d.ts +1 -0
- package/app/app.registry.d.ts.map +1 -1
- package/app/instances/app.local.instance.d.ts +1 -0
- package/app/instances/app.local.instance.d.ts.map +1 -1
- package/app/instances/app.remote.instance.d.ts.map +1 -1
- package/auth/flows/session.verify.flow.d.ts +2 -0
- package/auth/flows/session.verify.flow.d.ts.map +1 -1
- package/common/decorators/index.d.ts +2 -0
- package/common/decorators/index.d.ts.map +1 -1
- package/common/decorators/job.decorator.d.ts +20 -0
- package/common/decorators/job.decorator.d.ts.map +1 -0
- package/common/decorators/skill.decorator.d.ts +13 -1
- package/common/decorators/skill.decorator.d.ts.map +1 -1
- package/common/decorators/workflow.decorator.d.ts +12 -0
- package/common/decorators/workflow.decorator.d.ts.map +1 -0
- package/common/entries/index.d.ts +2 -0
- package/common/entries/index.d.ts.map +1 -1
- package/common/entries/job.entry.d.ts +40 -0
- package/common/entries/job.entry.d.ts.map +1 -0
- package/common/entries/skill.entry.d.ts +21 -1
- package/common/entries/skill.entry.d.ts.map +1 -1
- package/common/entries/workflow.entry.d.ts +15 -0
- package/common/entries/workflow.entry.d.ts.map +1 -0
- package/common/interfaces/index.d.ts +2 -0
- package/common/interfaces/index.d.ts.map +1 -1
- package/common/interfaces/internal/registry.interface.d.ts +6 -1
- package/common/interfaces/internal/registry.interface.d.ts.map +1 -1
- package/common/interfaces/job.interface.d.ts +40 -0
- package/common/interfaces/job.interface.d.ts.map +1 -0
- package/common/interfaces/skill.interface.d.ts +21 -1
- package/common/interfaces/skill.interface.d.ts.map +1 -1
- package/common/interfaces/workflow.interface.d.ts +27 -0
- package/common/interfaces/workflow.interface.d.ts.map +1 -0
- package/common/metadata/app.metadata.d.ts +13 -1
- package/common/metadata/app.metadata.d.ts.map +1 -1
- package/common/metadata/front-mcp.metadata.d.ts +385 -0
- package/common/metadata/front-mcp.metadata.d.ts.map +1 -1
- package/common/metadata/index.d.ts +2 -0
- package/common/metadata/index.d.ts.map +1 -1
- package/common/metadata/job.metadata.d.ts +109 -0
- package/common/metadata/job.metadata.d.ts.map +1 -0
- package/common/metadata/skill.metadata.d.ts +56 -0
- package/common/metadata/skill.metadata.d.ts.map +1 -1
- package/common/metadata/workflow.metadata.d.ts +161 -0
- package/common/metadata/workflow.metadata.d.ts.map +1 -0
- package/common/records/index.d.ts +2 -0
- package/common/records/index.d.ts.map +1 -1
- package/common/records/job.record.d.ts +28 -0
- package/common/records/job.record.d.ts.map +1 -0
- package/common/records/workflow.record.d.ts +26 -0
- package/common/records/workflow.record.d.ts.map +1 -0
- package/common/schemas/annotated-class.schema.d.ts +2 -0
- package/common/schemas/annotated-class.schema.d.ts.map +1 -1
- package/common/tokens/app.tokens.d.ts.map +1 -1
- package/common/tokens/front-mcp.tokens.d.ts.map +1 -1
- package/common/tokens/index.d.ts +2 -0
- package/common/tokens/index.d.ts.map +1 -1
- package/common/tokens/job.tokens.d.ts +17 -0
- package/common/tokens/job.tokens.d.ts.map +1 -0
- package/common/tokens/skill.tokens.d.ts +5 -0
- package/common/tokens/skill.tokens.d.ts.map +1 -1
- package/common/tokens/workflow.tokens.d.ts +20 -0
- package/common/tokens/workflow.tokens.d.ts.map +1 -0
- package/direct/client.types.d.ts +127 -0
- package/direct/client.types.d.ts.map +1 -1
- package/direct/create.d.ts.map +1 -1
- package/direct/create.types.d.ts +13 -1
- package/direct/create.types.d.ts.map +1 -1
- package/direct/direct-server.d.ts +10 -0
- package/direct/direct-server.d.ts.map +1 -1
- package/direct/direct.types.d.ts +52 -0
- package/direct/direct.types.d.ts.map +1 -1
- package/direct/index.d.ts +1 -1
- package/direct/index.d.ts.map +1 -1
- package/errors/index.d.ts +2 -1
- package/errors/index.d.ts.map +1 -1
- package/errors/sdk.errors.d.ts +13 -0
- package/errors/sdk.errors.d.ts.map +1 -1
- package/errors/workflow.errors.d.ts +14 -0
- package/errors/workflow.errors.d.ts.map +1 -0
- package/esm/index.mjs +4454 -1278
- package/esm/package.json +10 -6
- package/flows/flow.instance.d.ts +1 -0
- package/flows/flow.instance.d.ts.map +1 -1
- package/front-mcp/front-mcp.d.ts +1 -0
- package/front-mcp/front-mcp.d.ts.map +1 -1
- package/front-mcp/front-mcp.providers.d.ts +124 -0
- package/front-mcp/front-mcp.providers.d.ts.map +1 -1
- package/index.d.ts +6 -0
- package/index.d.ts.map +1 -1
- package/index.js +4664 -1445
- package/job/enclave/index.d.ts +4 -0
- package/job/enclave/index.d.ts.map +1 -0
- package/job/enclave/job-dynamic.executor.d.ts +16 -0
- package/job/enclave/job-dynamic.executor.d.ts.map +1 -0
- package/job/enclave/job-enclave.bridge.d.ts +28 -0
- package/job/enclave/job-enclave.bridge.d.ts.map +1 -0
- package/job/execution/index.d.ts +2 -0
- package/job/execution/index.d.ts.map +1 -0
- package/job/execution/job-execution.manager.d.ts +62 -0
- package/job/execution/job-execution.manager.d.ts.map +1 -0
- package/job/index.d.ts +11 -0
- package/job/index.d.ts.map +1 -0
- package/job/job-permission.guard.d.ts +14 -0
- package/job/job-permission.guard.d.ts.map +1 -0
- package/job/job-scope.helper.d.ts +46 -0
- package/job/job-scope.helper.d.ts.map +1 -0
- package/job/job.events.d.ts +18 -0
- package/job/job.events.d.ts.map +1 -0
- package/job/job.instance.d.ts +38 -0
- package/job/job.instance.d.ts.map +1 -0
- package/job/job.registry.d.ts +66 -0
- package/job/job.registry.d.ts.map +1 -0
- package/job/job.utils.d.ts +11 -0
- package/job/job.utils.d.ts.map +1 -0
- package/job/store/index.d.ts +11 -0
- package/job/store/index.d.ts.map +1 -0
- package/job/store/job-definition-store.factory.d.ts +21 -0
- package/job/store/job-definition-store.factory.d.ts.map +1 -0
- package/job/store/job-definition.interface.d.ts +14 -0
- package/job/store/job-definition.interface.d.ts.map +1 -0
- package/job/store/job-state-store.factory.d.ts +23 -0
- package/job/store/job-state-store.factory.d.ts.map +1 -0
- package/job/store/job-state.interface.d.ts +48 -0
- package/job/store/job-state.interface.d.ts.map +1 -0
- package/job/store/memory-job-definition.store.d.ts +21 -0
- package/job/store/memory-job-definition.store.d.ts.map +1 -0
- package/job/store/memory-job-state.store.d.ts +20 -0
- package/job/store/memory-job-state.store.d.ts.map +1 -0
- package/job/store/redis-job-definition.store.d.ts +35 -0
- package/job/store/redis-job-definition.store.d.ts.map +1 -0
- package/job/store/redis-job-state.store.d.ts +37 -0
- package/job/store/redis-job-state.store.d.ts.map +1 -0
- package/job/tools/execute-job.tool.d.ts +9 -0
- package/job/tools/execute-job.tool.d.ts.map +1 -0
- package/job/tools/get-job-status.tool.d.ts +21 -0
- package/job/tools/get-job-status.tool.d.ts.map +1 -0
- package/job/tools/index.d.ts +6 -0
- package/job/tools/index.d.ts.map +1 -0
- package/job/tools/list-jobs.tool.d.ts +17 -0
- package/job/tools/list-jobs.tool.d.ts.map +1 -0
- package/job/tools/register-job.tool.d.ts +15 -0
- package/job/tools/register-job.tool.d.ts.map +1 -0
- package/job/tools/remove-job.tool.d.ts +10 -0
- package/job/tools/remove-job.tool.d.ts.map +1 -0
- package/package.json +10 -6
- package/plugin/plugin.registry.d.ts +7 -0
- package/plugin/plugin.registry.d.ts.map +1 -1
- package/scope/scope.instance.d.ts +11 -0
- package/scope/scope.instance.d.ts.map +1 -1
- package/scope/scope.registry.d.ts +1 -0
- package/scope/scope.registry.d.ts.map +1 -1
- package/skill/index.d.ts +16 -0
- package/skill/index.d.ts.map +1 -1
- package/skill/skill-directory-loader.d.ts +51 -0
- package/skill/skill-directory-loader.d.ts.map +1 -0
- package/skill/skill-http.utils.d.ts +6 -1
- package/skill/skill-http.utils.d.ts.map +1 -1
- package/skill/skill-md-parser.d.ts +60 -0
- package/skill/skill-md-parser.d.ts.map +1 -0
- package/skill/skill.instance.d.ts.map +1 -1
- package/skill/skill.utils.d.ts.map +1 -1
- package/tool/flows/call-tool.flow.d.ts.map +1 -1
- package/transport/flows/handle.stateless-http.flow.d.ts.map +1 -1
- package/transport/flows/handle.streamable-http.flow.d.ts.map +1 -1
- package/transport/mcp-handlers/call-tool-request.handler.d.ts.map +1 -1
- package/transport/mcp-handlers/complete-request.handler.d.ts.map +1 -1
- package/transport/mcp-handlers/get-prompt-request.handler.d.ts.map +1 -1
- package/transport/mcp-handlers/list-prompts-request.handler.d.ts.map +1 -1
- package/transport/mcp-handlers/list-resource-templates-request.handler.d.ts.map +1 -1
- package/transport/mcp-handlers/list-resources-request.handler.d.ts.map +1 -1
- package/transport/mcp-handlers/list-tools-request.handler.d.ts.map +1 -1
- package/transport/mcp-handlers/read-resource-request.handler.d.ts.map +1 -1
- package/transport/mcp-handlers/unsubscribe-request.handler.d.ts.map +1 -1
- package/workflow/engine/index.d.ts +3 -0
- package/workflow/engine/index.d.ts.map +1 -0
- package/workflow/engine/workflow-step.executor.d.ts +18 -0
- package/workflow/engine/workflow-step.executor.d.ts.map +1 -0
- package/workflow/engine/workflow.engine.d.ts +34 -0
- package/workflow/engine/workflow.engine.d.ts.map +1 -0
- package/workflow/index.d.ts +7 -0
- package/workflow/index.d.ts.map +1 -0
- package/workflow/tools/execute-workflow.tool.d.ts +9 -0
- package/workflow/tools/execute-workflow.tool.d.ts.map +1 -0
- package/workflow/tools/get-workflow-status.tool.d.ts +23 -0
- package/workflow/tools/get-workflow-status.tool.d.ts.map +1 -0
- package/workflow/tools/index.d.ts +6 -0
- package/workflow/tools/index.d.ts.map +1 -0
- package/workflow/tools/list-workflows.tool.d.ts +18 -0
- package/workflow/tools/list-workflows.tool.d.ts.map +1 -0
- package/workflow/tools/register-workflow.tool.d.ts +21 -0
- package/workflow/tools/register-workflow.tool.d.ts.map +1 -0
- package/workflow/tools/remove-workflow.tool.d.ts +10 -0
- package/workflow/tools/remove-workflow.tool.d.ts.map +1 -0
- package/workflow/workflow.events.d.ts +18 -0
- package/workflow/workflow.events.d.ts.map +1 -0
- package/workflow/workflow.instance.d.ts +20 -0
- package/workflow/workflow.instance.d.ts.map +1 -0
- package/workflow/workflow.registry.d.ts +66 -0
- package/workflow/workflow.registry.d.ts.map +1 -0
- package/workflow/workflow.utils.d.ts +6 -0
- package/workflow/workflow.utils.d.ts.map +1 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/job/enclave/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AACxD,YAAY,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAC3D,OAAO,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { JobDynamicRecord } from '../../common/records/job.record';
|
|
2
|
+
import { FrontMcpLogger } from '../../common/interfaces/logger.interface';
|
|
3
|
+
/**
|
|
4
|
+
* Executor for DYNAMIC jobs that run scripts in the enclave sandbox.
|
|
5
|
+
*/
|
|
6
|
+
export declare class JobDynamicExecutor {
|
|
7
|
+
private readonly bridge;
|
|
8
|
+
private readonly logger;
|
|
9
|
+
constructor(logger: FrontMcpLogger);
|
|
10
|
+
execute(record: JobDynamicRecord, input: unknown, context?: {
|
|
11
|
+
callTool?: (name: string, args: unknown) => Promise<unknown>;
|
|
12
|
+
getTool?: (name: string) => unknown;
|
|
13
|
+
mcpLog?: (level: string, message: string) => void;
|
|
14
|
+
}): Promise<unknown>;
|
|
15
|
+
}
|
|
16
|
+
//# sourceMappingURL=job-dynamic.executor.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"job-dynamic.executor.d.ts","sourceRoot":"","sources":["../../../src/job/enclave/job-dynamic.executor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,iCAAiC,CAAC;AAEnE,OAAO,EAAE,cAAc,EAAE,MAAM,0CAA0C,CAAC;AAE1E;;GAEG;AACH,qBAAa,kBAAkB;IAC7B,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAmB;IAC1C,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAiB;gBAE5B,MAAM,EAAE,cAAc;IAK5B,OAAO,CACX,MAAM,EAAE,gBAAgB,EACxB,KAAK,EAAE,OAAO,EACd,OAAO,CAAC,EAAE;QACR,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;QAC7D,OAAO,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC;QACpC,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;KACnD,GACA,OAAO,CAAC,OAAO,CAAC;CAMpB"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { FrontMcpLogger } from '../../common/interfaces/logger.interface';
|
|
2
|
+
export interface EnclaveOptions {
|
|
3
|
+
timeout?: number;
|
|
4
|
+
maxIterations?: number;
|
|
5
|
+
}
|
|
6
|
+
/**
|
|
7
|
+
* Bridge to @enclave-vm/core for executing dynamic job scripts in a sandbox.
|
|
8
|
+
* Lazy-requires the enclave package (peerDependency).
|
|
9
|
+
*/
|
|
10
|
+
export declare class JobEnclaveBridge {
|
|
11
|
+
private readonly logger;
|
|
12
|
+
private readonly options;
|
|
13
|
+
private enclaveCore;
|
|
14
|
+
constructor(logger: FrontMcpLogger, options?: EnclaveOptions);
|
|
15
|
+
/**
|
|
16
|
+
* Lazy-load @enclave-vm/core.
|
|
17
|
+
*/
|
|
18
|
+
private getEnclaveCore;
|
|
19
|
+
/**
|
|
20
|
+
* Execute a script in a sandboxed environment.
|
|
21
|
+
*/
|
|
22
|
+
execute(script: string, input: unknown, context: {
|
|
23
|
+
callTool?: (name: string, args: unknown) => Promise<unknown>;
|
|
24
|
+
getTool?: (name: string) => unknown;
|
|
25
|
+
mcpLog?: (level: string, message: string) => void;
|
|
26
|
+
}): Promise<unknown>;
|
|
27
|
+
}
|
|
28
|
+
//# sourceMappingURL=job-enclave.bridge.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"job-enclave.bridge.d.ts","sourceRoot":"","sources":["../../../src/job/enclave/job-enclave.bridge.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,0CAA0C,CAAC;AAG1E,MAAM,WAAW,cAAc;IAC7B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAUD;;;GAGG;AACH,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAiB;IACxC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAiB;IACzC,OAAO,CAAC,WAAW,CAA0B;gBAEjC,MAAM,EAAE,cAAc,EAAE,OAAO,GAAE,cAAmB;IAQhE;;OAEG;IACH,OAAO,CAAC,cAAc;IActB;;OAEG;IACG,OAAO,CACX,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,OAAO,EACd,OAAO,EAAE;QACP,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;QAC7D,OAAO,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC;QACpC,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;KACnD,GACA,OAAO,CAAC,OAAO,CAAC;CAiDpB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/job/execution/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,mBAAmB,EACnB,iBAAiB,EACjB,sBAAsB,EACtB,eAAe,EACf,mBAAmB,GACpB,MAAM,yBAAyB,CAAC"}
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
import { JobStateStore, JobRunRecord, WorkflowRunRecord, JobExecutionState } from '../store/job-state.interface';
|
|
2
|
+
import { JobEntry } from '../../common/entries/job.entry';
|
|
3
|
+
import { WorkflowEntry } from '../../common/entries/workflow.entry';
|
|
4
|
+
import { JobRegistryInterface } from '../job.registry';
|
|
5
|
+
import { FrontMcpLogger } from '../../common/interfaces/logger.interface';
|
|
6
|
+
export interface ExecuteJobOptions {
|
|
7
|
+
background?: boolean;
|
|
8
|
+
sessionId?: string;
|
|
9
|
+
authInfo?: Partial<Record<string, unknown>>;
|
|
10
|
+
contextProviders?: unknown;
|
|
11
|
+
}
|
|
12
|
+
export interface ExecuteWorkflowOptions extends ExecuteJobOptions {
|
|
13
|
+
workflowInput?: Record<string, unknown>;
|
|
14
|
+
}
|
|
15
|
+
export interface InlineJobResult {
|
|
16
|
+
runId: string;
|
|
17
|
+
result: unknown;
|
|
18
|
+
state: JobExecutionState;
|
|
19
|
+
logs: string[];
|
|
20
|
+
}
|
|
21
|
+
export interface BackgroundJobResult {
|
|
22
|
+
runId: string;
|
|
23
|
+
state: 'pending';
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Manages job and workflow executions, both inline (synchronous)
|
|
27
|
+
* and background (async with status tracking).
|
|
28
|
+
*/
|
|
29
|
+
export declare class JobExecutionManager {
|
|
30
|
+
private readonly stateStore;
|
|
31
|
+
private readonly logger;
|
|
32
|
+
private readonly notifyFn?;
|
|
33
|
+
constructor(stateStore: JobStateStore, logger: FrontMcpLogger, notifyFn?: (data: Record<string, unknown>) => Promise<void>);
|
|
34
|
+
/**
|
|
35
|
+
* Execute a job inline (synchronous) or in background.
|
|
36
|
+
*/
|
|
37
|
+
executeJob(job: JobEntry, input: unknown, opts?: ExecuteJobOptions): Promise<InlineJobResult | BackgroundJobResult>;
|
|
38
|
+
/**
|
|
39
|
+
* Execute a workflow inline or in background.
|
|
40
|
+
*/
|
|
41
|
+
executeWorkflow(workflow: WorkflowEntry, jobRegistry: JobRegistryInterface, opts?: ExecuteWorkflowOptions): Promise<InlineJobResult | BackgroundJobResult>;
|
|
42
|
+
/**
|
|
43
|
+
* Get execution status.
|
|
44
|
+
*/
|
|
45
|
+
getStatus(runId: string): Promise<JobRunRecord | WorkflowRunRecord | null>;
|
|
46
|
+
/**
|
|
47
|
+
* List runs with optional filters.
|
|
48
|
+
*/
|
|
49
|
+
listRuns(opts?: {
|
|
50
|
+
jobId?: string;
|
|
51
|
+
sessionId?: string;
|
|
52
|
+
state?: JobExecutionState;
|
|
53
|
+
limit?: number;
|
|
54
|
+
}): Promise<(JobRunRecord | WorkflowRunRecord)[]>;
|
|
55
|
+
private executeJobInline;
|
|
56
|
+
private executeJobBackground;
|
|
57
|
+
private executeWorkflowInline;
|
|
58
|
+
private executeWorkflowBackground;
|
|
59
|
+
private updateState;
|
|
60
|
+
private notify;
|
|
61
|
+
}
|
|
62
|
+
//# sourceMappingURL=job-execution.manager.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"job-execution.manager.d.ts","sourceRoot":"","sources":["../../../src/job/execution/job-execution.manager.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAC;AACjH,OAAO,EAAE,QAAQ,EAAE,MAAM,gCAAgC,CAAC;AAC1D,OAAO,EAAE,aAAa,EAAE,MAAM,qCAAqC,CAAC;AAEpE,OAAO,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAC;AACvD,OAAO,EAAE,cAAc,EAAE,MAAM,0CAA0C,CAAC;AAE1E,MAAM,WAAW,iBAAiB;IAChC,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;IAC5C,gBAAgB,CAAC,EAAE,OAAO,CAAC;CAC5B;AAED,MAAM,WAAW,sBAAuB,SAAQ,iBAAiB;IAC/D,aAAa,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACzC;AAED,MAAM,WAAW,eAAe;IAC9B,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,OAAO,CAAC;IAChB,KAAK,EAAE,iBAAiB,CAAC;IACzB,IAAI,EAAE,MAAM,EAAE,CAAC;CAChB;AAED,MAAM,WAAW,mBAAmB;IAClC,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,SAAS,CAAC;CAClB;AAED;;;GAGG;AACH,qBAAa,mBAAmB;IAC9B,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAgB;IAC3C,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAiB;IACxC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAmD;gBAG3E,UAAU,EAAE,aAAa,EACzB,MAAM,EAAE,cAAc,EACtB,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,OAAO,CAAC,IAAI,CAAC;IAO7D;;OAEG;IACG,UAAU,CACd,GAAG,EAAE,QAAQ,EACb,KAAK,EAAE,OAAO,EACd,IAAI,GAAE,iBAAsB,GAC3B,OAAO,CAAC,eAAe,GAAG,mBAAmB,CAAC;IA0CjD;;OAEG;IACG,eAAe,CACnB,QAAQ,EAAE,aAAa,EACvB,WAAW,EAAE,oBAAoB,EACjC,IAAI,GAAE,sBAA2B,GAChC,OAAO,CAAC,eAAe,GAAG,mBAAmB,CAAC;IAwCjD;;OAEG;IACG,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,GAAG,iBAAiB,GAAG,IAAI,CAAC;IAIhF;;OAEG;IACG,QAAQ,CAAC,IAAI,CAAC,EAAE;QACpB,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,KAAK,CAAC,EAAE,iBAAiB,CAAC;QAC1B,KAAK,CAAC,EAAE,MAAM,CAAC;KAChB,GAAG,OAAO,CAAC,CAAC,YAAY,GAAG,iBAAiB,CAAC,EAAE,CAAC;YAMnC,gBAAgB;YA+DhB,oBAAoB;YAapB,qBAAqB;YA2CrB,yBAAyB;YAezB,WAAW;YAIX,MAAM;CASrB"}
|
package/job/index.d.ts
ADDED
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
export { default as JobRegistry } from './job.registry';
|
|
2
|
+
export type { JobRegistryInterface, IndexedJob } from './job.registry';
|
|
3
|
+
export { JobInstance } from './job.instance';
|
|
4
|
+
export * from './job.events';
|
|
5
|
+
export * from './job.utils';
|
|
6
|
+
export * from './job-permission.guard';
|
|
7
|
+
export * from './job-scope.helper';
|
|
8
|
+
export * from './store';
|
|
9
|
+
export * from './execution';
|
|
10
|
+
export * from './enclave';
|
|
11
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/job/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,gBAAgB,CAAC;AACxD,YAAY,EAAE,oBAAoB,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AACvE,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC7C,cAAc,cAAc,CAAC;AAC7B,cAAc,aAAa,CAAC;AAC5B,cAAc,wBAAwB,CAAC;AACvC,cAAc,oBAAoB,CAAC;AACnC,cAAc,SAAS,CAAC;AACxB,cAAc,aAAa,CAAC;AAC5B,cAAc,WAAW,CAAC"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { JobPermission, JobPermissionAction } from '../common/metadata/job.metadata';
|
|
2
|
+
/**
|
|
3
|
+
* Permission guard for jobs and workflows.
|
|
4
|
+
* Checks JobPermission[] against authInfo for each action.
|
|
5
|
+
*/
|
|
6
|
+
export declare class JobPermissionGuard {
|
|
7
|
+
/**
|
|
8
|
+
* Check if the given auth info is allowed to perform the action.
|
|
9
|
+
* Returns true if no permissions are defined (permissive by default).
|
|
10
|
+
*/
|
|
11
|
+
static check(permissions: JobPermission[] | undefined, action: JobPermissionAction, authInfo: Partial<Record<string, unknown>>): Promise<boolean>;
|
|
12
|
+
private static checkSingle;
|
|
13
|
+
}
|
|
14
|
+
//# sourceMappingURL=job-permission.guard.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"job-permission.guard.d.ts","sourceRoot":"","sources":["../../src/job/job-permission.guard.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,mBAAmB,EAAE,MAAM,iCAAiC,CAAC;AAErF;;;GAGG;AACH,qBAAa,kBAAkB;IAC7B;;;OAGG;WACU,KAAK,CAChB,WAAW,EAAE,aAAa,EAAE,GAAG,SAAS,EACxC,MAAM,EAAE,mBAAmB,EAC3B,QAAQ,EAAE,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,GACzC,OAAO,CAAC,OAAO,CAAC;mBAoBE,WAAW;CA0BjC"}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import { FrontMcpLogger } from '../common/interfaces/logger.interface';
|
|
2
|
+
import { EntryOwnerRef } from '../common';
|
|
3
|
+
import { JobType } from '../common/interfaces/job.interface';
|
|
4
|
+
import { WorkflowType } from '../common/interfaces/workflow.interface';
|
|
5
|
+
import ProviderRegistry from '../provider/provider.registry';
|
|
6
|
+
import { JobRegistryInterface } from './job.registry';
|
|
7
|
+
import { WorkflowRegistryInterface } from '../workflow/workflow.registry';
|
|
8
|
+
import { JobExecutionManager } from './execution/job-execution.manager';
|
|
9
|
+
import { JobStateStore } from './store/job-state.interface';
|
|
10
|
+
import { JobDefinitionStore } from './store/job-definition.interface';
|
|
11
|
+
export interface JobsConfig {
|
|
12
|
+
enabled: boolean;
|
|
13
|
+
store?: {
|
|
14
|
+
redis?: {
|
|
15
|
+
provider: string;
|
|
16
|
+
host?: string;
|
|
17
|
+
port?: number;
|
|
18
|
+
url?: string;
|
|
19
|
+
[key: string]: unknown;
|
|
20
|
+
};
|
|
21
|
+
keyPrefix?: string;
|
|
22
|
+
};
|
|
23
|
+
}
|
|
24
|
+
export interface RegisterJobCapabilitiesArgs {
|
|
25
|
+
providers: ProviderRegistry;
|
|
26
|
+
owner: EntryOwnerRef;
|
|
27
|
+
jobsList: JobType[];
|
|
28
|
+
workflowsList: WorkflowType[];
|
|
29
|
+
jobsConfig: JobsConfig;
|
|
30
|
+
logger: FrontMcpLogger;
|
|
31
|
+
notifyFn?: (data: Record<string, unknown>) => Promise<void>;
|
|
32
|
+
}
|
|
33
|
+
export interface JobCapabilitiesResult {
|
|
34
|
+
jobRegistry: JobRegistryInterface;
|
|
35
|
+
workflowRegistry: WorkflowRegistryInterface;
|
|
36
|
+
executionManager: JobExecutionManager;
|
|
37
|
+
stateStore: JobStateStore;
|
|
38
|
+
definitionStore: JobDefinitionStore;
|
|
39
|
+
managementTools: any[];
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* Helper function for registering job/workflow capabilities in scope.
|
|
43
|
+
* Follows the skill-scope.helper.ts pattern.
|
|
44
|
+
*/
|
|
45
|
+
export declare function registerJobCapabilities(args: RegisterJobCapabilitiesArgs): Promise<JobCapabilitiesResult>;
|
|
46
|
+
//# sourceMappingURL=job-scope.helper.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"job-scope.helper.d.ts","sourceRoot":"","sources":["../../src/job/job-scope.helper.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,uCAAuC,CAAC;AACvE,OAAO,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,OAAO,EAAE,MAAM,oCAAoC,CAAC;AAC7D,OAAO,EAAE,YAAY,EAAE,MAAM,yCAAyC,CAAC;AACvE,OAAO,gBAAgB,MAAM,+BAA+B,CAAC;AAC7D,OAAoB,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAC;AACnE,OAAyB,EAAE,yBAAyB,EAAE,MAAM,+BAA+B,CAAC;AAC5F,OAAO,EAAE,mBAAmB,EAAE,MAAM,mCAAmC,CAAC;AAGxE,OAAO,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAC5D,OAAO,EAAE,kBAAkB,EAAE,MAAM,kCAAkC,CAAC;AActE,MAAM,WAAW,UAAU;IACzB,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE;QACN,KAAK,CAAC,EAAE;YACN,QAAQ,EAAE,MAAM,CAAC;YACjB,IAAI,CAAC,EAAE,MAAM,CAAC;YACd,IAAI,CAAC,EAAE,MAAM,CAAC;YACd,GAAG,CAAC,EAAE,MAAM,CAAC;YACb,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;SACxB,CAAC;QACF,SAAS,CAAC,EAAE,MAAM,CAAC;KACpB,CAAC;CACH;AAED,MAAM,WAAW,2BAA2B;IAC1C,SAAS,EAAE,gBAAgB,CAAC;IAC5B,KAAK,EAAE,aAAa,CAAC;IACrB,QAAQ,EAAE,OAAO,EAAE,CAAC;IACpB,aAAa,EAAE,YAAY,EAAE,CAAC;IAC9B,UAAU,EAAE,UAAU,CAAC;IACvB,MAAM,EAAE,cAAc,CAAC;IACvB,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CAC7D;AAED,MAAM,WAAW,qBAAqB;IACpC,WAAW,EAAE,oBAAoB,CAAC;IAClC,gBAAgB,EAAE,yBAAyB,CAAC;IAC5C,gBAAgB,EAAE,mBAAmB,CAAC;IACtC,UAAU,EAAE,aAAa,CAAC;IAC1B,eAAe,EAAE,kBAAkB,CAAC;IACpC,eAAe,EAAE,GAAG,EAAE,CAAC;CACxB;AAED;;;GAGG;AACH,wBAAsB,uBAAuB,CAAC,IAAI,EAAE,2BAA2B,GAAG,OAAO,CAAC,qBAAqB,CAAC,CAsE/G"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { JobEntry } from '../common/entries/job.entry';
|
|
2
|
+
export type JobChangeKind = 'added' | 'updated' | 'removed' | 'reset';
|
|
3
|
+
export type JobChangeScope = 'global' | 'session';
|
|
4
|
+
export type JobChangeEvent = {
|
|
5
|
+
kind: JobChangeKind;
|
|
6
|
+
changeScope: JobChangeScope;
|
|
7
|
+
sessionId?: string;
|
|
8
|
+
version: number;
|
|
9
|
+
snapshot: readonly JobEntry[];
|
|
10
|
+
};
|
|
11
|
+
type Listener = (e: JobChangeEvent) => void;
|
|
12
|
+
export declare class JobEmitter {
|
|
13
|
+
private listeners;
|
|
14
|
+
on(l: Listener): () => void;
|
|
15
|
+
emit(e: JobChangeEvent): void;
|
|
16
|
+
}
|
|
17
|
+
export {};
|
|
18
|
+
//# sourceMappingURL=job.events.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"job.events.d.ts","sourceRoot":"","sources":["../../src/job/job.events.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,6BAA6B,CAAC;AAEvD,MAAM,MAAM,aAAa,GAAG,OAAO,GAAG,SAAS,GAAG,SAAS,GAAG,OAAO,CAAC;AAEtE,MAAM,MAAM,cAAc,GAAG,QAAQ,GAAG,SAAS,CAAC;AAElD,MAAM,MAAM,cAAc,GAAG;IAC3B,IAAI,EAAE,aAAa,CAAC;IACpB,WAAW,EAAE,cAAc,CAAC;IAC5B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,SAAS,QAAQ,EAAE,CAAC;CAC/B,CAAC;AAEF,KAAK,QAAQ,GAAG,CAAC,CAAC,EAAE,cAAc,KAAK,IAAI,CAAC;AAE5C,qBAAa,UAAU;IACrB,OAAO,CAAC,SAAS,CAAuB;IAExC,EAAE,CAAC,CAAC,EAAE,QAAQ,GAAG,MAAM,IAAI;IAK3B,IAAI,CAAC,CAAC,EAAE,cAAc;CAGvB"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import { EntryOwnerRef, ToolInputType, ToolOutputType } from '../common';
|
|
2
|
+
import { JobEntry } from '../common/entries/job.entry';
|
|
3
|
+
import { JobRecord } from '../common/records/job.record';
|
|
4
|
+
import { JobContext } from '../common/interfaces/job.interface';
|
|
5
|
+
import { ToolInputOf, ToolOutputOf } from '../common/decorators';
|
|
6
|
+
import ProviderRegistry from '../provider/provider.registry';
|
|
7
|
+
import HookRegistry from '../hooks/hook.registry';
|
|
8
|
+
import { Scope } from '../scope';
|
|
9
|
+
/**
|
|
10
|
+
* Concrete implementation of a job that can be executed.
|
|
11
|
+
*/
|
|
12
|
+
export declare class JobInstance<InSchema extends ToolInputType = ToolInputType, OutSchema extends ToolOutputType = ToolOutputType, In = ToolInputOf<{
|
|
13
|
+
inputSchema: InSchema;
|
|
14
|
+
}>, Out = ToolOutputOf<{
|
|
15
|
+
outputSchema: OutSchema;
|
|
16
|
+
}>> extends JobEntry<InSchema, OutSchema, In, Out> {
|
|
17
|
+
private readonly _providers;
|
|
18
|
+
readonly scope: Scope;
|
|
19
|
+
readonly hooks: HookRegistry;
|
|
20
|
+
constructor(record: JobRecord, providers: ProviderRegistry, owner: EntryOwnerRef);
|
|
21
|
+
protected initialize(): Promise<void>;
|
|
22
|
+
getMetadata(): import("../common").JobMetadata<ToolInputType, ToolOutputType>;
|
|
23
|
+
get providers(): ProviderRegistry;
|
|
24
|
+
create(input: In, extra: {
|
|
25
|
+
authInfo: Partial<Record<string, unknown>>;
|
|
26
|
+
contextProviders?: unknown;
|
|
27
|
+
}): JobContext<InSchema, OutSchema, In, Out>;
|
|
28
|
+
parseInput(input: unknown): In;
|
|
29
|
+
parseOutput(raw: Out | Partial<Out>): unknown;
|
|
30
|
+
safeParseOutput(raw: Out | Partial<Out>): {
|
|
31
|
+
success: true;
|
|
32
|
+
data: unknown;
|
|
33
|
+
} | {
|
|
34
|
+
success: false;
|
|
35
|
+
error: Error;
|
|
36
|
+
};
|
|
37
|
+
}
|
|
38
|
+
//# sourceMappingURL=job.instance.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"job.instance.d.ts","sourceRoot":"","sources":["../../src/job/job.instance.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AACzE,OAAO,EAAE,QAAQ,EAAE,MAAM,6BAA6B,CAAC;AACvD,OAAO,EAAE,SAAS,EAAmC,MAAM,8BAA8B,CAAC;AAC1F,OAAO,EAAE,UAAU,EAAe,MAAM,oCAAoC,CAAC;AAC7E,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACjE,OAAO,gBAAgB,MAAM,+BAA+B,CAAC;AAE7D,OAAO,YAAY,MAAM,wBAAwB,CAAC;AAClD,OAAO,EAAE,KAAK,EAAE,MAAM,UAAU,CAAC;AAKjC;;GAEG;AACH,qBAAa,WAAW,CACtB,QAAQ,SAAS,aAAa,GAAG,aAAa,EAC9C,SAAS,SAAS,cAAc,GAAG,cAAc,EACjD,EAAE,GAAG,WAAW,CAAC;IAAE,WAAW,EAAE,QAAQ,CAAA;CAAE,CAAC,EAC3C,GAAG,GAAG,YAAY,CAAC;IAAE,YAAY,EAAE,SAAS,CAAA;CAAE,CAAC,CAC/C,SAAQ,QAAQ,CAAC,QAAQ,EAAE,SAAS,EAAE,EAAE,EAAE,GAAG,CAAC;IAC9C,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAmB;IAC9C,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC;IACtB,QAAQ,CAAC,KAAK,EAAE,YAAY,CAAC;gBAEjB,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,gBAAgB,EAAE,KAAK,EAAE,aAAa;cAkBhE,UAAU;IA0B1B,WAAW;IAIX,IAAI,SAAS,IAAI,gBAAgB,CAEhC;IAEQ,MAAM,CACb,KAAK,EAAE,EAAE,EACT,KAAK,EAAE;QAAE,QAAQ,EAAE,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;QAAC,gBAAgB,CAAC,EAAE,OAAO,CAAA;KAAE,GAChF,UAAU,CAAC,QAAQ,EAAE,SAAS,EAAE,EAAE,EAAE,GAAG,CAAC;IA4BlC,UAAU,CAAC,KAAK,EAAE,OAAO,GAAG,EAAE;IAK9B,WAAW,CAAC,GAAG,EAAE,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,GAAG,OAAO;IAa7C,eAAe,CACtB,GAAG,EAAE,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,GACtB;QAAE,OAAO,EAAE,IAAI,CAAC;QAAC,IAAI,EAAE,OAAO,CAAA;KAAE,GAAG;QAAE,OAAO,EAAE,KAAK,CAAC;QAAC,KAAK,EAAE,KAAK,CAAA;KAAE;CAOvE"}
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
import { Token } from '@frontmcp/di';
|
|
2
|
+
import { EntryLineage, EntryOwnerRef } from '../common';
|
|
3
|
+
import { JobEntry } from '../common/entries/job.entry';
|
|
4
|
+
import { JobRecord, JobDynamicRecord } from '../common/records/job.record';
|
|
5
|
+
import { JobType } from '../common/interfaces/job.interface';
|
|
6
|
+
import { JobChangeEvent } from './job.events';
|
|
7
|
+
import ProviderRegistry from '../provider/provider.registry';
|
|
8
|
+
import { RegistryAbstract, RegistryBuildMapResult } from '../regsitry';
|
|
9
|
+
import { JobInstance } from './job.instance';
|
|
10
|
+
export interface IndexedJob {
|
|
11
|
+
token: Token;
|
|
12
|
+
instance: JobEntry;
|
|
13
|
+
baseName: string;
|
|
14
|
+
lineage: EntryLineage;
|
|
15
|
+
ownerKey: string;
|
|
16
|
+
qualifiedName: string;
|
|
17
|
+
qualifiedId: string;
|
|
18
|
+
source: JobRegistry;
|
|
19
|
+
}
|
|
20
|
+
export interface JobRegistryInterface {
|
|
21
|
+
readonly owner: EntryOwnerRef;
|
|
22
|
+
getJobs(includeHidden?: boolean): JobEntry[];
|
|
23
|
+
findByName(name: string): JobEntry | undefined;
|
|
24
|
+
findById(id: string): JobEntry | undefined;
|
|
25
|
+
search(query?: string, opts?: {
|
|
26
|
+
tags?: string[];
|
|
27
|
+
labels?: Record<string, string>;
|
|
28
|
+
}): JobEntry[];
|
|
29
|
+
hasAny(): boolean;
|
|
30
|
+
registerDynamic(record: JobDynamicRecord): void;
|
|
31
|
+
removeDynamic(jobId: string): boolean;
|
|
32
|
+
subscribe(opts: {
|
|
33
|
+
immediate?: boolean;
|
|
34
|
+
}, cb: (evt: JobChangeEvent) => void): () => void;
|
|
35
|
+
}
|
|
36
|
+
export default class JobRegistry extends RegistryAbstract<JobInstance, JobRecord, JobType[]> implements JobRegistryInterface {
|
|
37
|
+
readonly owner: EntryOwnerRef;
|
|
38
|
+
private localRows;
|
|
39
|
+
private dynamicRows;
|
|
40
|
+
private byName;
|
|
41
|
+
private byId;
|
|
42
|
+
private version;
|
|
43
|
+
private emitter;
|
|
44
|
+
private logger?;
|
|
45
|
+
constructor(providers: ProviderRegistry, list: JobType[], owner: EntryOwnerRef);
|
|
46
|
+
protected buildMap(list: JobType[]): RegistryBuildMapResult<JobRecord>;
|
|
47
|
+
protected buildGraph(): void;
|
|
48
|
+
protected initialize(): Promise<void>;
|
|
49
|
+
getJobs(includeHidden?: boolean): JobEntry[];
|
|
50
|
+
findByName(name: string): JobEntry | undefined;
|
|
51
|
+
findById(id: string): JobEntry | undefined;
|
|
52
|
+
search(query?: string, opts?: {
|
|
53
|
+
tags?: string[];
|
|
54
|
+
labels?: Record<string, string>;
|
|
55
|
+
}): JobEntry[];
|
|
56
|
+
registerDynamic(record: JobDynamicRecord): void;
|
|
57
|
+
removeDynamic(jobId: string): boolean;
|
|
58
|
+
subscribe(opts: {
|
|
59
|
+
immediate?: boolean;
|
|
60
|
+
}, cb: (evt: JobChangeEvent) => void): () => void;
|
|
61
|
+
hasAny(): boolean;
|
|
62
|
+
private reindex;
|
|
63
|
+
private bump;
|
|
64
|
+
private makeRow;
|
|
65
|
+
}
|
|
66
|
+
//# sourceMappingURL=job.registry.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"job.registry.d.ts","sourceRoot":"","sources":["../../src/job/job.registry.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { Token } from '@frontmcp/di';
|
|
2
|
+
import { JobMetadata } from '../common/metadata/job.metadata';
|
|
3
|
+
import { JobRecord } from '../common/records/job.record';
|
|
4
|
+
import { JobType } from '../common/interfaces/job.interface';
|
|
5
|
+
export declare function collectJobMetadata(cls: JobType): JobMetadata;
|
|
6
|
+
export declare function normalizeJob(item: unknown): JobRecord;
|
|
7
|
+
/**
|
|
8
|
+
* For graph/cycle detection. Returns dependency tokens.
|
|
9
|
+
*/
|
|
10
|
+
export declare function jobDiscoveryDeps(rec: JobRecord): Token[];
|
|
11
|
+
//# sourceMappingURL=job.utils.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"job.utils.d.ts","sourceRoot":"","sources":["../../src/job/job.utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAuD,MAAM,cAAc,CAAC;AAE1F,OAAO,EAAE,WAAW,EAAE,MAAM,iCAAiC,CAAC;AAE9D,OAAO,EAAE,SAAS,EAAmC,MAAM,8BAA8B,CAAC;AAC1F,OAAO,EAAc,OAAO,EAAE,MAAM,oCAAoC,CAAC;AAEzE,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,OAAO,GAAG,WAAW,CAa5D;AAED,wBAAgB,YAAY,CAAC,IAAI,EAAE,OAAO,GAAG,SAAS,CA0BrD;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,SAAS,GAAG,KAAK,EAAE,CASxD"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
export * from './job-state.interface';
|
|
2
|
+
export { MemoryJobStateStore } from './memory-job-state.store';
|
|
3
|
+
export { RedisJobStateStore } from './redis-job-state.store';
|
|
4
|
+
export { createJobStateStore } from './job-state-store.factory';
|
|
5
|
+
export type { JobStateStoreOptions, JobStateStoreResult } from './job-state-store.factory';
|
|
6
|
+
export * from './job-definition.interface';
|
|
7
|
+
export { MemoryJobDefinitionStore } from './memory-job-definition.store';
|
|
8
|
+
export { RedisJobDefinitionStore } from './redis-job-definition.store';
|
|
9
|
+
export { createJobDefinitionStore } from './job-definition-store.factory';
|
|
10
|
+
export type { JobDefinitionStoreOptions, JobDefinitionStoreResult } from './job-definition-store.factory';
|
|
11
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/job/store/index.ts"],"names":[],"mappings":"AAAA,cAAc,uBAAuB,CAAC;AACtC,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAC/D,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAC7D,OAAO,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AAChE,YAAY,EAAE,oBAAoB,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AAE3F,cAAc,4BAA4B,CAAC;AAC3C,OAAO,EAAE,wBAAwB,EAAE,MAAM,+BAA+B,CAAC;AACzE,OAAO,EAAE,uBAAuB,EAAE,MAAM,8BAA8B,CAAC;AACvE,OAAO,EAAE,wBAAwB,EAAE,MAAM,gCAAgC,CAAC;AAC1E,YAAY,EAAE,yBAAyB,EAAE,wBAAwB,EAAE,MAAM,gCAAgC,CAAC"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { JobDefinitionStore } from './job-definition.interface';
|
|
2
|
+
import { FrontMcpLogger } from '../../common/interfaces/logger.interface';
|
|
3
|
+
export interface JobDefinitionStoreOptions {
|
|
4
|
+
redis?: {
|
|
5
|
+
host?: string;
|
|
6
|
+
port?: number;
|
|
7
|
+
url?: string;
|
|
8
|
+
[key: string]: unknown;
|
|
9
|
+
};
|
|
10
|
+
keyPrefix?: string;
|
|
11
|
+
}
|
|
12
|
+
export interface JobDefinitionStoreResult {
|
|
13
|
+
store: JobDefinitionStore;
|
|
14
|
+
type: 'redis' | 'memory';
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Factory function to create a JobDefinitionStore.
|
|
18
|
+
* Auto-detects provider type and falls back to memory store.
|
|
19
|
+
*/
|
|
20
|
+
export declare function createJobDefinitionStore(options?: JobDefinitionStoreOptions, logger?: FrontMcpLogger): JobDefinitionStoreResult;
|
|
21
|
+
//# sourceMappingURL=job-definition-store.factory.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"job-definition-store.factory.d.ts","sourceRoot":"","sources":["../../../src/job/store/job-definition-store.factory.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AAEhE,OAAO,EAAE,cAAc,EAAE,MAAM,0CAA0C,CAAC;AAuB1E,MAAM,WAAW,yBAAyB;IACxC,KAAK,CAAC,EAAE;QACN,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,GAAG,CAAC,EAAE,MAAM,CAAC;QACb,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;KACxB,CAAC;IACF,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,wBAAwB;IACvC,KAAK,EAAE,kBAAkB,CAAC;IAC1B,IAAI,EAAE,OAAO,GAAG,QAAQ,CAAC;CAC1B;AAED;;;GAGG;AACH,wBAAgB,wBAAwB,CACtC,OAAO,CAAC,EAAE,yBAAyB,EACnC,MAAM,CAAC,EAAE,cAAc,GACtB,wBAAwB,CA2B1B"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { JobDynamicRecord } from '../../common/records/job.record';
|
|
2
|
+
import { WorkflowDynamicRecord } from '../../common/records/workflow.record';
|
|
3
|
+
export interface JobDefinitionStore {
|
|
4
|
+
saveDefinition(record: JobDynamicRecord): Promise<void>;
|
|
5
|
+
getDefinition(jobId: string): Promise<JobDynamicRecord | null>;
|
|
6
|
+
listDefinitions(): Promise<JobDynamicRecord[]>;
|
|
7
|
+
removeDefinition(jobId: string): Promise<boolean>;
|
|
8
|
+
saveWorkflowDefinition(record: WorkflowDynamicRecord): Promise<void>;
|
|
9
|
+
getWorkflowDefinition(wfId: string): Promise<WorkflowDynamicRecord | null>;
|
|
10
|
+
listWorkflowDefinitions(): Promise<WorkflowDynamicRecord[]>;
|
|
11
|
+
removeWorkflowDefinition(wfId: string): Promise<boolean>;
|
|
12
|
+
dispose(): Promise<void>;
|
|
13
|
+
}
|
|
14
|
+
//# sourceMappingURL=job-definition.interface.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"job-definition.interface.d.ts","sourceRoot":"","sources":["../../../src/job/store/job-definition.interface.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,iCAAiC,CAAC;AACnE,OAAO,EAAE,qBAAqB,EAAE,MAAM,sCAAsC,CAAC;AAE7E,MAAM,WAAW,kBAAkB;IACjC,cAAc,CAAC,MAAM,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACxD,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,GAAG,IAAI,CAAC,CAAC;IAC/D,eAAe,IAAI,OAAO,CAAC,gBAAgB,EAAE,CAAC,CAAC;IAC/C,gBAAgB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAElD,sBAAsB,CAAC,MAAM,EAAE,qBAAqB,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACrE,qBAAqB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,qBAAqB,GAAG,IAAI,CAAC,CAAC;IAC3E,uBAAuB,IAAI,OAAO,CAAC,qBAAqB,EAAE,CAAC,CAAC;IAC5D,wBAAwB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAEzD,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CAC1B"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { JobStateStore } from './job-state.interface';
|
|
2
|
+
import { FrontMcpLogger } from '../../common/interfaces/logger.interface';
|
|
3
|
+
export interface JobStateStoreOptions {
|
|
4
|
+
redis?: {
|
|
5
|
+
provider: string;
|
|
6
|
+
host?: string;
|
|
7
|
+
port?: number;
|
|
8
|
+
url?: string;
|
|
9
|
+
[key: string]: unknown;
|
|
10
|
+
};
|
|
11
|
+
keyPrefix?: string;
|
|
12
|
+
ttlSeconds?: number;
|
|
13
|
+
}
|
|
14
|
+
export interface JobStateStoreResult {
|
|
15
|
+
store: JobStateStore;
|
|
16
|
+
type: 'redis' | 'memory';
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Factory function to create a JobStateStore.
|
|
20
|
+
* Auto-detects provider type and falls back to memory store.
|
|
21
|
+
*/
|
|
22
|
+
export declare function createJobStateStore(options?: JobStateStoreOptions, logger?: FrontMcpLogger): JobStateStoreResult;
|
|
23
|
+
//# sourceMappingURL=job-state-store.factory.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"job-state-store.factory.d.ts","sourceRoot":"","sources":["../../../src/job/store/job-state-store.factory.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAEtD,OAAO,EAAE,cAAc,EAAE,MAAM,0CAA0C,CAAC;AAE1E,MAAM,WAAW,oBAAoB;IACnC,KAAK,CAAC,EAAE;QACN,QAAQ,EAAE,MAAM,CAAC;QACjB,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,GAAG,CAAC,EAAE,MAAM,CAAC;QACb,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;KACxB,CAAC;IACF,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,mBAAmB;IAClC,KAAK,EAAE,aAAa,CAAC;IACrB,IAAI,EAAE,OAAO,GAAG,QAAQ,CAAC;CAC1B;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,CAAC,EAAE,oBAAoB,EAAE,MAAM,CAAC,EAAE,cAAc,GAAG,mBAAmB,CA2BhH"}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
export type JobExecutionState = 'pending' | 'running' | 'completed' | 'failed' | 'cancelled' | 'retrying';
|
|
2
|
+
export interface JobRunRecord {
|
|
3
|
+
runId: string;
|
|
4
|
+
jobId: string;
|
|
5
|
+
jobName: string;
|
|
6
|
+
sessionId?: string;
|
|
7
|
+
state: JobExecutionState;
|
|
8
|
+
input: unknown;
|
|
9
|
+
result?: unknown;
|
|
10
|
+
error?: {
|
|
11
|
+
message: string;
|
|
12
|
+
name: string;
|
|
13
|
+
stack?: string;
|
|
14
|
+
};
|
|
15
|
+
startedAt: number;
|
|
16
|
+
completedAt?: number;
|
|
17
|
+
attempt: number;
|
|
18
|
+
maxAttempts: number;
|
|
19
|
+
logs: string[];
|
|
20
|
+
background: boolean;
|
|
21
|
+
}
|
|
22
|
+
export interface WorkflowRunRecord extends JobRunRecord {
|
|
23
|
+
workflowName: string;
|
|
24
|
+
stepResults: Record<string, {
|
|
25
|
+
jobName: string;
|
|
26
|
+
state: JobExecutionState;
|
|
27
|
+
outputs?: Record<string, unknown>;
|
|
28
|
+
error?: {
|
|
29
|
+
message: string;
|
|
30
|
+
};
|
|
31
|
+
startedAt: number;
|
|
32
|
+
completedAt?: number;
|
|
33
|
+
}>;
|
|
34
|
+
}
|
|
35
|
+
export interface JobStateStore {
|
|
36
|
+
createRun(record: JobRunRecord | WorkflowRunRecord): Promise<void>;
|
|
37
|
+
updateRun(runId: string, updates: Partial<JobRunRecord | WorkflowRunRecord>): Promise<void>;
|
|
38
|
+
getRun(runId: string): Promise<JobRunRecord | WorkflowRunRecord | null>;
|
|
39
|
+
listRuns(opts?: {
|
|
40
|
+
jobId?: string;
|
|
41
|
+
sessionId?: string;
|
|
42
|
+
state?: JobExecutionState;
|
|
43
|
+
limit?: number;
|
|
44
|
+
}): Promise<(JobRunRecord | WorkflowRunRecord)[]>;
|
|
45
|
+
cleanup(olderThanMs: number): Promise<number>;
|
|
46
|
+
dispose(): Promise<void>;
|
|
47
|
+
}
|
|
48
|
+
//# sourceMappingURL=job-state.interface.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"job-state.interface.d.ts","sourceRoot":"","sources":["../../../src/job/store/job-state.interface.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,iBAAiB,GAAG,SAAS,GAAG,SAAS,GAAG,WAAW,GAAG,QAAQ,GAAG,WAAW,GAAG,UAAU,CAAC;AAE1G,MAAM,WAAW,YAAY;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,iBAAiB,CAAC;IACzB,KAAK,EAAE,OAAO,CAAC;IACf,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAC1D,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,UAAU,EAAE,OAAO,CAAC;CACrB;AAED,MAAM,WAAW,iBAAkB,SAAQ,YAAY;IACrD,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,MAAM,CACjB,MAAM,EACN;QACE,OAAO,EAAE,MAAM,CAAC;QAChB,KAAK,EAAE,iBAAiB,CAAC;QACzB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QAClC,KAAK,CAAC,EAAE;YAAE,OAAO,EAAE,MAAM,CAAA;SAAE,CAAC;QAC5B,SAAS,EAAE,MAAM,CAAC;QAClB,WAAW,CAAC,EAAE,MAAM,CAAC;KACtB,CACF,CAAC;CACH;AAED,MAAM,WAAW,aAAa;IAC5B,SAAS,CAAC,MAAM,EAAE,YAAY,GAAG,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACnE,SAAS,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC,YAAY,GAAG,iBAAiB,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC5F,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,GAAG,iBAAiB,GAAG,IAAI,CAAC,CAAC;IACxE,QAAQ,CAAC,IAAI,CAAC,EAAE;QACd,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,KAAK,CAAC,EAAE,iBAAiB,CAAC;QAC1B,KAAK,CAAC,EAAE,MAAM,CAAC;KAChB,GAAG,OAAO,CAAC,CAAC,YAAY,GAAG,iBAAiB,CAAC,EAAE,CAAC,CAAC;IAClD,OAAO,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IAC9C,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CAC1B"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { JobDefinitionStore } from './job-definition.interface';
|
|
2
|
+
import { JobDynamicRecord } from '../../common/records/job.record';
|
|
3
|
+
import { WorkflowDynamicRecord } from '../../common/records/workflow.record';
|
|
4
|
+
/**
|
|
5
|
+
* In-memory implementation of JobDefinitionStore.
|
|
6
|
+
* Definitions are lost on restart. Suitable for development.
|
|
7
|
+
*/
|
|
8
|
+
export declare class MemoryJobDefinitionStore implements JobDefinitionStore {
|
|
9
|
+
private readonly jobs;
|
|
10
|
+
private readonly workflows;
|
|
11
|
+
saveDefinition(record: JobDynamicRecord): Promise<void>;
|
|
12
|
+
getDefinition(jobId: string): Promise<JobDynamicRecord | null>;
|
|
13
|
+
listDefinitions(): Promise<JobDynamicRecord[]>;
|
|
14
|
+
removeDefinition(jobId: string): Promise<boolean>;
|
|
15
|
+
saveWorkflowDefinition(record: WorkflowDynamicRecord): Promise<void>;
|
|
16
|
+
getWorkflowDefinition(wfId: string): Promise<WorkflowDynamicRecord | null>;
|
|
17
|
+
listWorkflowDefinitions(): Promise<WorkflowDynamicRecord[]>;
|
|
18
|
+
removeWorkflowDefinition(wfId: string): Promise<boolean>;
|
|
19
|
+
dispose(): Promise<void>;
|
|
20
|
+
}
|
|
21
|
+
//# sourceMappingURL=memory-job-definition.store.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"memory-job-definition.store.d.ts","sourceRoot":"","sources":["../../../src/job/store/memory-job-definition.store.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AAChE,OAAO,EAAE,gBAAgB,EAAE,MAAM,iCAAiC,CAAC;AACnE,OAAO,EAAE,qBAAqB,EAAE,MAAM,sCAAsC,CAAC;AAE7E;;;GAGG;AACH,qBAAa,wBAAyB,YAAW,kBAAkB;IACjE,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAuC;IAC5D,OAAO,CAAC,QAAQ,CAAC,SAAS,CAA4C;IAEhE,cAAc,CAAC,MAAM,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC;IAIvD,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,GAAG,IAAI,CAAC;IAI9D,eAAe,IAAI,OAAO,CAAC,gBAAgB,EAAE,CAAC;IAI9C,gBAAgB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAIjD,sBAAsB,CAAC,MAAM,EAAE,qBAAqB,GAAG,OAAO,CAAC,IAAI,CAAC;IAIpE,qBAAqB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,qBAAqB,GAAG,IAAI,CAAC;IAI1E,uBAAuB,IAAI,OAAO,CAAC,qBAAqB,EAAE,CAAC;IAI3D,wBAAwB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAIxD,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;CAI/B"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { JobStateStore, JobRunRecord, WorkflowRunRecord, JobExecutionState } from './job-state.interface';
|
|
2
|
+
/**
|
|
3
|
+
* In-memory implementation of JobStateStore.
|
|
4
|
+
* Suitable for development and testing.
|
|
5
|
+
*/
|
|
6
|
+
export declare class MemoryJobStateStore implements JobStateStore {
|
|
7
|
+
private readonly runs;
|
|
8
|
+
createRun(record: JobRunRecord | WorkflowRunRecord): Promise<void>;
|
|
9
|
+
updateRun(runId: string, updates: Partial<JobRunRecord | WorkflowRunRecord>): Promise<void>;
|
|
10
|
+
getRun(runId: string): Promise<JobRunRecord | WorkflowRunRecord | null>;
|
|
11
|
+
listRuns(opts?: {
|
|
12
|
+
jobId?: string;
|
|
13
|
+
sessionId?: string;
|
|
14
|
+
state?: JobExecutionState;
|
|
15
|
+
limit?: number;
|
|
16
|
+
}): Promise<(JobRunRecord | WorkflowRunRecord)[]>;
|
|
17
|
+
cleanup(olderThanMs: number): Promise<number>;
|
|
18
|
+
dispose(): Promise<void>;
|
|
19
|
+
}
|
|
20
|
+
//# sourceMappingURL=memory-job-state.store.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"memory-job-state.store.d.ts","sourceRoot":"","sources":["../../../src/job/store/memory-job-state.store.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAE1G;;;GAGG;AACH,qBAAa,mBAAoB,YAAW,aAAa;IACvD,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAuD;IAEtE,SAAS,CAAC,MAAM,EAAE,YAAY,GAAG,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC;IAIlE,SAAS,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC,YAAY,GAAG,iBAAiB,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAO3F,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,GAAG,iBAAiB,GAAG,IAAI,CAAC;IAKvE,QAAQ,CAAC,IAAI,CAAC,EAAE;QACpB,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,KAAK,CAAC,EAAE,iBAAiB,CAAC;QAC1B,KAAK,CAAC,EAAE,MAAM,CAAC;KAChB,GAAG,OAAO,CAAC,CAAC,YAAY,GAAG,iBAAiB,CAAC,EAAE,CAAC;IAuB3C,OAAO,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAY7C,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;CAG/B"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import { JobDefinitionStore } from './job-definition.interface';
|
|
2
|
+
import { JobDynamicRecord } from '../../common/records/job.record';
|
|
3
|
+
import { WorkflowDynamicRecord } from '../../common/records/workflow.record';
|
|
4
|
+
import { FrontMcpLogger } from '../../common/interfaces/logger.interface';
|
|
5
|
+
/** Minimal Redis client interface covering operations used by this store. */
|
|
6
|
+
export interface RedisDefinitionStoreLike {
|
|
7
|
+
get(key: string): Promise<string | null>;
|
|
8
|
+
set(key: string, value: string): Promise<unknown>;
|
|
9
|
+
del(key: string): Promise<number>;
|
|
10
|
+
sadd(key: string, ...members: string[]): Promise<number>;
|
|
11
|
+
srem(key: string, ...members: string[]): Promise<number>;
|
|
12
|
+
smembers(key: string): Promise<string[]>;
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* Redis implementation of JobDefinitionStore.
|
|
16
|
+
* Persists dynamic job/workflow definitions across restarts.
|
|
17
|
+
*/
|
|
18
|
+
export declare class RedisJobDefinitionStore implements JobDefinitionStore {
|
|
19
|
+
private readonly client;
|
|
20
|
+
private readonly keyPrefix;
|
|
21
|
+
private readonly logger;
|
|
22
|
+
constructor(client: RedisDefinitionStoreLike, logger: FrontMcpLogger, keyPrefix?: string);
|
|
23
|
+
private jobKey;
|
|
24
|
+
private workflowKey;
|
|
25
|
+
saveDefinition(record: JobDynamicRecord): Promise<void>;
|
|
26
|
+
getDefinition(jobId: string): Promise<JobDynamicRecord | null>;
|
|
27
|
+
listDefinitions(): Promise<JobDynamicRecord[]>;
|
|
28
|
+
removeDefinition(jobId: string): Promise<boolean>;
|
|
29
|
+
saveWorkflowDefinition(record: WorkflowDynamicRecord): Promise<void>;
|
|
30
|
+
getWorkflowDefinition(wfId: string): Promise<WorkflowDynamicRecord | null>;
|
|
31
|
+
listWorkflowDefinitions(): Promise<WorkflowDynamicRecord[]>;
|
|
32
|
+
removeWorkflowDefinition(wfId: string): Promise<boolean>;
|
|
33
|
+
dispose(): Promise<void>;
|
|
34
|
+
}
|
|
35
|
+
//# sourceMappingURL=redis-job-definition.store.d.ts.map
|