@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.
Files changed (205) hide show
  1. package/README.md +1 -1
  2. package/adapter/adapter.registry.d.ts.map +1 -1
  3. package/agent/flows/call-agent.flow.d.ts.map +1 -1
  4. package/app/app.registry.d.ts +1 -0
  5. package/app/app.registry.d.ts.map +1 -1
  6. package/app/instances/app.local.instance.d.ts +1 -0
  7. package/app/instances/app.local.instance.d.ts.map +1 -1
  8. package/app/instances/app.remote.instance.d.ts.map +1 -1
  9. package/auth/flows/session.verify.flow.d.ts +2 -0
  10. package/auth/flows/session.verify.flow.d.ts.map +1 -1
  11. package/common/decorators/index.d.ts +2 -0
  12. package/common/decorators/index.d.ts.map +1 -1
  13. package/common/decorators/job.decorator.d.ts +20 -0
  14. package/common/decorators/job.decorator.d.ts.map +1 -0
  15. package/common/decorators/skill.decorator.d.ts +13 -1
  16. package/common/decorators/skill.decorator.d.ts.map +1 -1
  17. package/common/decorators/workflow.decorator.d.ts +12 -0
  18. package/common/decorators/workflow.decorator.d.ts.map +1 -0
  19. package/common/entries/index.d.ts +2 -0
  20. package/common/entries/index.d.ts.map +1 -1
  21. package/common/entries/job.entry.d.ts +40 -0
  22. package/common/entries/job.entry.d.ts.map +1 -0
  23. package/common/entries/skill.entry.d.ts +21 -1
  24. package/common/entries/skill.entry.d.ts.map +1 -1
  25. package/common/entries/workflow.entry.d.ts +15 -0
  26. package/common/entries/workflow.entry.d.ts.map +1 -0
  27. package/common/interfaces/index.d.ts +2 -0
  28. package/common/interfaces/index.d.ts.map +1 -1
  29. package/common/interfaces/internal/registry.interface.d.ts +6 -1
  30. package/common/interfaces/internal/registry.interface.d.ts.map +1 -1
  31. package/common/interfaces/job.interface.d.ts +40 -0
  32. package/common/interfaces/job.interface.d.ts.map +1 -0
  33. package/common/interfaces/skill.interface.d.ts +21 -1
  34. package/common/interfaces/skill.interface.d.ts.map +1 -1
  35. package/common/interfaces/workflow.interface.d.ts +27 -0
  36. package/common/interfaces/workflow.interface.d.ts.map +1 -0
  37. package/common/metadata/app.metadata.d.ts +13 -1
  38. package/common/metadata/app.metadata.d.ts.map +1 -1
  39. package/common/metadata/front-mcp.metadata.d.ts +385 -0
  40. package/common/metadata/front-mcp.metadata.d.ts.map +1 -1
  41. package/common/metadata/index.d.ts +2 -0
  42. package/common/metadata/index.d.ts.map +1 -1
  43. package/common/metadata/job.metadata.d.ts +109 -0
  44. package/common/metadata/job.metadata.d.ts.map +1 -0
  45. package/common/metadata/skill.metadata.d.ts +56 -0
  46. package/common/metadata/skill.metadata.d.ts.map +1 -1
  47. package/common/metadata/workflow.metadata.d.ts +161 -0
  48. package/common/metadata/workflow.metadata.d.ts.map +1 -0
  49. package/common/records/index.d.ts +2 -0
  50. package/common/records/index.d.ts.map +1 -1
  51. package/common/records/job.record.d.ts +28 -0
  52. package/common/records/job.record.d.ts.map +1 -0
  53. package/common/records/workflow.record.d.ts +26 -0
  54. package/common/records/workflow.record.d.ts.map +1 -0
  55. package/common/schemas/annotated-class.schema.d.ts +2 -0
  56. package/common/schemas/annotated-class.schema.d.ts.map +1 -1
  57. package/common/tokens/app.tokens.d.ts.map +1 -1
  58. package/common/tokens/front-mcp.tokens.d.ts.map +1 -1
  59. package/common/tokens/index.d.ts +2 -0
  60. package/common/tokens/index.d.ts.map +1 -1
  61. package/common/tokens/job.tokens.d.ts +17 -0
  62. package/common/tokens/job.tokens.d.ts.map +1 -0
  63. package/common/tokens/skill.tokens.d.ts +5 -0
  64. package/common/tokens/skill.tokens.d.ts.map +1 -1
  65. package/common/tokens/workflow.tokens.d.ts +20 -0
  66. package/common/tokens/workflow.tokens.d.ts.map +1 -0
  67. package/direct/client.types.d.ts +127 -0
  68. package/direct/client.types.d.ts.map +1 -1
  69. package/direct/create.d.ts.map +1 -1
  70. package/direct/create.types.d.ts +13 -1
  71. package/direct/create.types.d.ts.map +1 -1
  72. package/direct/direct-server.d.ts +10 -0
  73. package/direct/direct-server.d.ts.map +1 -1
  74. package/direct/direct.types.d.ts +52 -0
  75. package/direct/direct.types.d.ts.map +1 -1
  76. package/direct/index.d.ts +1 -1
  77. package/direct/index.d.ts.map +1 -1
  78. package/errors/index.d.ts +2 -1
  79. package/errors/index.d.ts.map +1 -1
  80. package/errors/sdk.errors.d.ts +13 -0
  81. package/errors/sdk.errors.d.ts.map +1 -1
  82. package/errors/workflow.errors.d.ts +14 -0
  83. package/errors/workflow.errors.d.ts.map +1 -0
  84. package/esm/index.mjs +4454 -1278
  85. package/esm/package.json +10 -6
  86. package/flows/flow.instance.d.ts +1 -0
  87. package/flows/flow.instance.d.ts.map +1 -1
  88. package/front-mcp/front-mcp.d.ts +1 -0
  89. package/front-mcp/front-mcp.d.ts.map +1 -1
  90. package/front-mcp/front-mcp.providers.d.ts +124 -0
  91. package/front-mcp/front-mcp.providers.d.ts.map +1 -1
  92. package/index.d.ts +6 -0
  93. package/index.d.ts.map +1 -1
  94. package/index.js +4664 -1445
  95. package/job/enclave/index.d.ts +4 -0
  96. package/job/enclave/index.d.ts.map +1 -0
  97. package/job/enclave/job-dynamic.executor.d.ts +16 -0
  98. package/job/enclave/job-dynamic.executor.d.ts.map +1 -0
  99. package/job/enclave/job-enclave.bridge.d.ts +28 -0
  100. package/job/enclave/job-enclave.bridge.d.ts.map +1 -0
  101. package/job/execution/index.d.ts +2 -0
  102. package/job/execution/index.d.ts.map +1 -0
  103. package/job/execution/job-execution.manager.d.ts +62 -0
  104. package/job/execution/job-execution.manager.d.ts.map +1 -0
  105. package/job/index.d.ts +11 -0
  106. package/job/index.d.ts.map +1 -0
  107. package/job/job-permission.guard.d.ts +14 -0
  108. package/job/job-permission.guard.d.ts.map +1 -0
  109. package/job/job-scope.helper.d.ts +46 -0
  110. package/job/job-scope.helper.d.ts.map +1 -0
  111. package/job/job.events.d.ts +18 -0
  112. package/job/job.events.d.ts.map +1 -0
  113. package/job/job.instance.d.ts +38 -0
  114. package/job/job.instance.d.ts.map +1 -0
  115. package/job/job.registry.d.ts +66 -0
  116. package/job/job.registry.d.ts.map +1 -0
  117. package/job/job.utils.d.ts +11 -0
  118. package/job/job.utils.d.ts.map +1 -0
  119. package/job/store/index.d.ts +11 -0
  120. package/job/store/index.d.ts.map +1 -0
  121. package/job/store/job-definition-store.factory.d.ts +21 -0
  122. package/job/store/job-definition-store.factory.d.ts.map +1 -0
  123. package/job/store/job-definition.interface.d.ts +14 -0
  124. package/job/store/job-definition.interface.d.ts.map +1 -0
  125. package/job/store/job-state-store.factory.d.ts +23 -0
  126. package/job/store/job-state-store.factory.d.ts.map +1 -0
  127. package/job/store/job-state.interface.d.ts +48 -0
  128. package/job/store/job-state.interface.d.ts.map +1 -0
  129. package/job/store/memory-job-definition.store.d.ts +21 -0
  130. package/job/store/memory-job-definition.store.d.ts.map +1 -0
  131. package/job/store/memory-job-state.store.d.ts +20 -0
  132. package/job/store/memory-job-state.store.d.ts.map +1 -0
  133. package/job/store/redis-job-definition.store.d.ts +35 -0
  134. package/job/store/redis-job-definition.store.d.ts.map +1 -0
  135. package/job/store/redis-job-state.store.d.ts +37 -0
  136. package/job/store/redis-job-state.store.d.ts.map +1 -0
  137. package/job/tools/execute-job.tool.d.ts +9 -0
  138. package/job/tools/execute-job.tool.d.ts.map +1 -0
  139. package/job/tools/get-job-status.tool.d.ts +21 -0
  140. package/job/tools/get-job-status.tool.d.ts.map +1 -0
  141. package/job/tools/index.d.ts +6 -0
  142. package/job/tools/index.d.ts.map +1 -0
  143. package/job/tools/list-jobs.tool.d.ts +17 -0
  144. package/job/tools/list-jobs.tool.d.ts.map +1 -0
  145. package/job/tools/register-job.tool.d.ts +15 -0
  146. package/job/tools/register-job.tool.d.ts.map +1 -0
  147. package/job/tools/remove-job.tool.d.ts +10 -0
  148. package/job/tools/remove-job.tool.d.ts.map +1 -0
  149. package/package.json +10 -6
  150. package/plugin/plugin.registry.d.ts +7 -0
  151. package/plugin/plugin.registry.d.ts.map +1 -1
  152. package/scope/scope.instance.d.ts +11 -0
  153. package/scope/scope.instance.d.ts.map +1 -1
  154. package/scope/scope.registry.d.ts +1 -0
  155. package/scope/scope.registry.d.ts.map +1 -1
  156. package/skill/index.d.ts +16 -0
  157. package/skill/index.d.ts.map +1 -1
  158. package/skill/skill-directory-loader.d.ts +51 -0
  159. package/skill/skill-directory-loader.d.ts.map +1 -0
  160. package/skill/skill-http.utils.d.ts +6 -1
  161. package/skill/skill-http.utils.d.ts.map +1 -1
  162. package/skill/skill-md-parser.d.ts +60 -0
  163. package/skill/skill-md-parser.d.ts.map +1 -0
  164. package/skill/skill.instance.d.ts.map +1 -1
  165. package/skill/skill.utils.d.ts.map +1 -1
  166. package/tool/flows/call-tool.flow.d.ts.map +1 -1
  167. package/transport/flows/handle.stateless-http.flow.d.ts.map +1 -1
  168. package/transport/flows/handle.streamable-http.flow.d.ts.map +1 -1
  169. package/transport/mcp-handlers/call-tool-request.handler.d.ts.map +1 -1
  170. package/transport/mcp-handlers/complete-request.handler.d.ts.map +1 -1
  171. package/transport/mcp-handlers/get-prompt-request.handler.d.ts.map +1 -1
  172. package/transport/mcp-handlers/list-prompts-request.handler.d.ts.map +1 -1
  173. package/transport/mcp-handlers/list-resource-templates-request.handler.d.ts.map +1 -1
  174. package/transport/mcp-handlers/list-resources-request.handler.d.ts.map +1 -1
  175. package/transport/mcp-handlers/list-tools-request.handler.d.ts.map +1 -1
  176. package/transport/mcp-handlers/read-resource-request.handler.d.ts.map +1 -1
  177. package/transport/mcp-handlers/unsubscribe-request.handler.d.ts.map +1 -1
  178. package/workflow/engine/index.d.ts +3 -0
  179. package/workflow/engine/index.d.ts.map +1 -0
  180. package/workflow/engine/workflow-step.executor.d.ts +18 -0
  181. package/workflow/engine/workflow-step.executor.d.ts.map +1 -0
  182. package/workflow/engine/workflow.engine.d.ts +34 -0
  183. package/workflow/engine/workflow.engine.d.ts.map +1 -0
  184. package/workflow/index.d.ts +7 -0
  185. package/workflow/index.d.ts.map +1 -0
  186. package/workflow/tools/execute-workflow.tool.d.ts +9 -0
  187. package/workflow/tools/execute-workflow.tool.d.ts.map +1 -0
  188. package/workflow/tools/get-workflow-status.tool.d.ts +23 -0
  189. package/workflow/tools/get-workflow-status.tool.d.ts.map +1 -0
  190. package/workflow/tools/index.d.ts +6 -0
  191. package/workflow/tools/index.d.ts.map +1 -0
  192. package/workflow/tools/list-workflows.tool.d.ts +18 -0
  193. package/workflow/tools/list-workflows.tool.d.ts.map +1 -0
  194. package/workflow/tools/register-workflow.tool.d.ts +21 -0
  195. package/workflow/tools/register-workflow.tool.d.ts.map +1 -0
  196. package/workflow/tools/remove-workflow.tool.d.ts +10 -0
  197. package/workflow/tools/remove-workflow.tool.d.ts.map +1 -0
  198. package/workflow/workflow.events.d.ts +18 -0
  199. package/workflow/workflow.events.d.ts.map +1 -0
  200. package/workflow/workflow.instance.d.ts +20 -0
  201. package/workflow/workflow.instance.d.ts.map +1 -0
  202. package/workflow/workflow.registry.d.ts +66 -0
  203. package/workflow/workflow.registry.d.ts.map +1 -0
  204. package/workflow/workflow.utils.d.ts +6 -0
  205. package/workflow/workflow.utils.d.ts.map +1 -0
@@ -0,0 +1,4 @@
1
+ export { JobEnclaveBridge } from './job-enclave.bridge';
2
+ export type { EnclaveOptions } from './job-enclave.bridge';
3
+ export { JobDynamicExecutor } from './job-dynamic.executor';
4
+ //# sourceMappingURL=index.d.ts.map
@@ -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,2 @@
1
+ export { JobExecutionManager, ExecuteJobOptions, ExecuteWorkflowOptions, InlineJobResult, BackgroundJobResult, } from './job-execution.manager';
2
+ //# sourceMappingURL=index.d.ts.map
@@ -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