@things-factory/mlops 9.1.19
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 +341 -0
- package/client/bootstrap.ts +41 -0
- package/client/index.ts +2 -0
- package/client/pages/ml-deployment/ml-deployment-list-page.ts +46 -0
- package/client/pages/ml-model/ml-model-list-page.ts +46 -0
- package/client/pages/ml-pipeline/ml-pipeline-list-page.ts +46 -0
- package/client/pages/mlops-dashboard/mlops-dashboard-page.ts +90 -0
- package/client/route.ts +19 -0
- package/client/tsconfig.json +12 -0
- package/dist-client/bootstrap.d.ts +1 -0
- package/dist-client/bootstrap.js +40 -0
- package/dist-client/bootstrap.js.map +1 -0
- package/dist-client/index.d.ts +2 -0
- package/dist-client/index.js +3 -0
- package/dist-client/index.js.map +1 -0
- package/dist-client/pages/ml-deployment/ml-deployment-list-page.d.ts +5 -0
- package/dist-client/pages/ml-deployment/ml-deployment-list-page.js +49 -0
- package/dist-client/pages/ml-deployment/ml-deployment-list-page.js.map +1 -0
- package/dist-client/pages/ml-model/ml-model-list-page.d.ts +5 -0
- package/dist-client/pages/ml-model/ml-model-list-page.js +49 -0
- package/dist-client/pages/ml-model/ml-model-list-page.js.map +1 -0
- package/dist-client/pages/ml-pipeline/ml-pipeline-list-page.d.ts +5 -0
- package/dist-client/pages/ml-pipeline/ml-pipeline-list-page.js +49 -0
- package/dist-client/pages/ml-pipeline/ml-pipeline-list-page.js.map +1 -0
- package/dist-client/pages/mlops-dashboard/mlops-dashboard-page.d.ts +5 -0
- package/dist-client/pages/mlops-dashboard/mlops-dashboard-page.js +93 -0
- package/dist-client/pages/mlops-dashboard/mlops-dashboard-page.js.map +1 -0
- package/dist-client/route.d.ts +1 -0
- package/dist-client/route.js +17 -0
- package/dist-client/route.js.map +1 -0
- package/dist-client/tsconfig.tsbuildinfo +1 -0
- package/dist-server/index.d.ts +2 -0
- package/dist-server/index.js +6 -0
- package/dist-server/index.js.map +1 -0
- package/dist-server/routes.d.ts +5 -0
- package/dist-server/routes.js +12 -0
- package/dist-server/routes.js.map +1 -0
- package/dist-server/service/index.d.ts +8 -0
- package/dist-server/service/index.js +31 -0
- package/dist-server/service/index.js.map +1 -0
- package/dist-server/service/ml-deployment/index.d.ts +3 -0
- package/dist-server/service/ml-deployment/index.js +8 -0
- package/dist-server/service/ml-deployment/index.js.map +1 -0
- package/dist-server/service/ml-deployment/ml-deployment.d.ts +48 -0
- package/dist-server/service/ml-deployment/ml-deployment.js +153 -0
- package/dist-server/service/ml-deployment/ml-deployment.js.map +1 -0
- package/dist-server/service/ml-model/index.d.ts +5 -0
- package/dist-server/service/ml-model/index.js +11 -0
- package/dist-server/service/ml-model/index.js.map +1 -0
- package/dist-server/service/ml-model/ml-model-mutation.d.ts +24 -0
- package/dist-server/service/ml-model/ml-model-mutation.js +177 -0
- package/dist-server/service/ml-model/ml-model-mutation.js.map +1 -0
- package/dist-server/service/ml-model/ml-model-query.d.ts +23 -0
- package/dist-server/service/ml-model/ml-model-query.js +123 -0
- package/dist-server/service/ml-model/ml-model-query.js.map +1 -0
- package/dist-server/service/ml-model/ml-model-types.d.ts +27 -0
- package/dist-server/service/ml-model/ml-model-types.js +105 -0
- package/dist-server/service/ml-model/ml-model-types.js.map +1 -0
- package/dist-server/service/ml-model/ml-model.d.ts +52 -0
- package/dist-server/service/ml-model/ml-model.js +161 -0
- package/dist-server/service/ml-model/ml-model.js.map +1 -0
- package/dist-server/service/ml-pipeline/index.d.ts +3 -0
- package/dist-server/service/ml-pipeline/index.js +8 -0
- package/dist-server/service/ml-pipeline/index.js.map +1 -0
- package/dist-server/service/ml-pipeline/ml-pipeline.d.ts +50 -0
- package/dist-server/service/ml-pipeline/ml-pipeline.js +163 -0
- package/dist-server/service/ml-pipeline/ml-pipeline.js.map +1 -0
- package/dist-server/service/ml-pipeline-run/index.d.ts +3 -0
- package/dist-server/service/ml-pipeline-run/index.js +8 -0
- package/dist-server/service/ml-pipeline-run/index.js.map +1 -0
- package/dist-server/service/ml-pipeline-run/ml-pipeline-run.d.ts +40 -0
- package/dist-server/service/ml-pipeline-run/ml-pipeline-run.js +136 -0
- package/dist-server/service/ml-pipeline-run/ml-pipeline-run.js.map +1 -0
- package/dist-server/tsconfig.json +11 -0
- package/dist-server/tsconfig.tsbuildinfo +1 -0
- package/package.json +52 -0
- package/server/index.ts +3 -0
- package/server/routes.ts +13 -0
- package/server/service/index.ts +29 -0
- package/server/service/ml-deployment/index.ts +6 -0
- package/server/service/ml-deployment/ml-deployment.ts +136 -0
- package/server/service/ml-model/index.ts +9 -0
- package/server/service/ml-model/ml-model-mutation.ts +171 -0
- package/server/service/ml-model/ml-model-query.ts +97 -0
- package/server/service/ml-model/ml-model-types.ts +71 -0
- package/server/service/ml-model/ml-model.ts +143 -0
- package/server/service/ml-pipeline/index.ts +6 -0
- package/server/service/ml-pipeline/ml-pipeline.ts +144 -0
- package/server/service/ml-pipeline-run/index.ts +6 -0
- package/server/service/ml-pipeline-run/ml-pipeline-run.ts +118 -0
- package/server/tsconfig.json +11 -0
- package/things-factory.config.js +13 -0
- package/translations/en.json +30 -0
- package/translations/ko.json +30 -0
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import { Domain } from '@things-factory/shell';
|
|
2
|
+
import { User } from '@things-factory/auth-base';
|
|
3
|
+
import { MLPipeline } from '../ml-pipeline/ml-pipeline';
|
|
4
|
+
/**
|
|
5
|
+
* Pipeline Run Status
|
|
6
|
+
*/
|
|
7
|
+
export declare enum PipelineRunStatus {
|
|
8
|
+
PENDING = "PENDING",
|
|
9
|
+
RUNNING = "RUNNING",
|
|
10
|
+
SUCCEEDED = "SUCCEEDED",
|
|
11
|
+
FAILED = "FAILED",
|
|
12
|
+
CANCELLED = "CANCELLED"
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* ML Pipeline Run Entity
|
|
16
|
+
*
|
|
17
|
+
* Tracks individual pipeline executions
|
|
18
|
+
*/
|
|
19
|
+
export declare class MLPipelineRun {
|
|
20
|
+
id: string;
|
|
21
|
+
pipeline: MLPipeline;
|
|
22
|
+
pipelineId: string;
|
|
23
|
+
status: PipelineRunStatus;
|
|
24
|
+
startedAt?: Date;
|
|
25
|
+
completedAt?: Date;
|
|
26
|
+
duration?: number;
|
|
27
|
+
errorMessage?: string;
|
|
28
|
+
params?: string;
|
|
29
|
+
results?: string;
|
|
30
|
+
trainingDataCount?: number;
|
|
31
|
+
modelId?: string;
|
|
32
|
+
mlflowRunId?: string;
|
|
33
|
+
logs?: string;
|
|
34
|
+
domain?: Domain;
|
|
35
|
+
domainId?: string;
|
|
36
|
+
triggeredBy?: User;
|
|
37
|
+
triggeredById?: string;
|
|
38
|
+
createdAt: Date;
|
|
39
|
+
updatedAt: Date;
|
|
40
|
+
}
|
|
@@ -0,0 +1,136 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.MLPipelineRun = exports.PipelineRunStatus = void 0;
|
|
4
|
+
const tslib_1 = require("tslib");
|
|
5
|
+
const typeorm_1 = require("typeorm");
|
|
6
|
+
const type_graphql_1 = require("type-graphql");
|
|
7
|
+
const shell_1 = require("@things-factory/shell");
|
|
8
|
+
const auth_base_1 = require("@things-factory/auth-base");
|
|
9
|
+
const ml_pipeline_1 = require("../ml-pipeline/ml-pipeline");
|
|
10
|
+
/**
|
|
11
|
+
* Pipeline Run Status
|
|
12
|
+
*/
|
|
13
|
+
var PipelineRunStatus;
|
|
14
|
+
(function (PipelineRunStatus) {
|
|
15
|
+
PipelineRunStatus["PENDING"] = "PENDING";
|
|
16
|
+
PipelineRunStatus["RUNNING"] = "RUNNING";
|
|
17
|
+
PipelineRunStatus["SUCCEEDED"] = "SUCCEEDED";
|
|
18
|
+
PipelineRunStatus["FAILED"] = "FAILED";
|
|
19
|
+
PipelineRunStatus["CANCELLED"] = "CANCELLED";
|
|
20
|
+
})(PipelineRunStatus || (exports.PipelineRunStatus = PipelineRunStatus = {}));
|
|
21
|
+
(0, type_graphql_1.registerEnumType)(PipelineRunStatus, {
|
|
22
|
+
name: 'PipelineRunStatus',
|
|
23
|
+
description: 'Status of pipeline execution'
|
|
24
|
+
});
|
|
25
|
+
/**
|
|
26
|
+
* ML Pipeline Run Entity
|
|
27
|
+
*
|
|
28
|
+
* Tracks individual pipeline executions
|
|
29
|
+
*/
|
|
30
|
+
let MLPipelineRun = class MLPipelineRun {
|
|
31
|
+
};
|
|
32
|
+
exports.MLPipelineRun = MLPipelineRun;
|
|
33
|
+
tslib_1.__decorate([
|
|
34
|
+
(0, typeorm_1.PrimaryGeneratedColumn)('uuid'),
|
|
35
|
+
(0, type_graphql_1.Field)(type => type_graphql_1.ID, { description: 'Run ID' }),
|
|
36
|
+
tslib_1.__metadata("design:type", String)
|
|
37
|
+
], MLPipelineRun.prototype, "id", void 0);
|
|
38
|
+
tslib_1.__decorate([
|
|
39
|
+
(0, typeorm_1.ManyToOne)(() => ml_pipeline_1.MLPipeline),
|
|
40
|
+
(0, type_graphql_1.Field)(type => ml_pipeline_1.MLPipeline, { description: 'Parent pipeline' }),
|
|
41
|
+
tslib_1.__metadata("design:type", ml_pipeline_1.MLPipeline)
|
|
42
|
+
], MLPipelineRun.prototype, "pipeline", void 0);
|
|
43
|
+
tslib_1.__decorate([
|
|
44
|
+
(0, typeorm_1.RelationId)((run) => run.pipeline),
|
|
45
|
+
tslib_1.__metadata("design:type", String)
|
|
46
|
+
], MLPipelineRun.prototype, "pipelineId", void 0);
|
|
47
|
+
tslib_1.__decorate([
|
|
48
|
+
(0, typeorm_1.Column)({ type: 'varchar', default: PipelineRunStatus.PENDING, comment: 'Run status' }),
|
|
49
|
+
(0, type_graphql_1.Field)(type => PipelineRunStatus, { description: 'Current run status' }),
|
|
50
|
+
tslib_1.__metadata("design:type", String)
|
|
51
|
+
], MLPipelineRun.prototype, "status", void 0);
|
|
52
|
+
tslib_1.__decorate([
|
|
53
|
+
(0, typeorm_1.Column)({ type: 'timestamp', nullable: true, comment: 'Start time' }),
|
|
54
|
+
(0, type_graphql_1.Field)({ nullable: true, description: 'Started at' }),
|
|
55
|
+
tslib_1.__metadata("design:type", Date)
|
|
56
|
+
], MLPipelineRun.prototype, "startedAt", void 0);
|
|
57
|
+
tslib_1.__decorate([
|
|
58
|
+
(0, typeorm_1.Column)({ type: 'timestamp', nullable: true, comment: 'End time' }),
|
|
59
|
+
(0, type_graphql_1.Field)({ nullable: true, description: 'Completed at' }),
|
|
60
|
+
tslib_1.__metadata("design:type", Date)
|
|
61
|
+
], MLPipelineRun.prototype, "completedAt", void 0);
|
|
62
|
+
tslib_1.__decorate([
|
|
63
|
+
(0, typeorm_1.Column)({ type: 'int', nullable: true, comment: 'Duration in seconds' }),
|
|
64
|
+
(0, type_graphql_1.Field)(type => type_graphql_1.Int, { nullable: true, description: 'Duration in seconds' }),
|
|
65
|
+
tslib_1.__metadata("design:type", Number)
|
|
66
|
+
], MLPipelineRun.prototype, "duration", void 0);
|
|
67
|
+
tslib_1.__decorate([
|
|
68
|
+
(0, typeorm_1.Column)({ type: 'text', nullable: true, comment: 'Error message if failed' }),
|
|
69
|
+
(0, type_graphql_1.Field)({ nullable: true, description: 'Error message' }),
|
|
70
|
+
tslib_1.__metadata("design:type", String)
|
|
71
|
+
], MLPipelineRun.prototype, "errorMessage", void 0);
|
|
72
|
+
tslib_1.__decorate([
|
|
73
|
+
(0, typeorm_1.Column)({ type: 'simple-json', nullable: true, comment: 'Run parameters' }),
|
|
74
|
+
(0, type_graphql_1.Field)(type => String, { nullable: true, description: 'Parameters used as JSON' }),
|
|
75
|
+
tslib_1.__metadata("design:type", String)
|
|
76
|
+
], MLPipelineRun.prototype, "params", void 0);
|
|
77
|
+
tslib_1.__decorate([
|
|
78
|
+
(0, typeorm_1.Column)({ type: 'simple-json', nullable: true, comment: 'Run results and metrics' }),
|
|
79
|
+
(0, type_graphql_1.Field)(type => String, { nullable: true, description: 'Results as JSON' }),
|
|
80
|
+
tslib_1.__metadata("design:type", String)
|
|
81
|
+
], MLPipelineRun.prototype, "results", void 0);
|
|
82
|
+
tslib_1.__decorate([
|
|
83
|
+
(0, typeorm_1.Column)({ type: 'int', nullable: true, comment: 'Training data count' }),
|
|
84
|
+
(0, type_graphql_1.Field)(type => type_graphql_1.Int, { nullable: true, description: 'Number of training samples' }),
|
|
85
|
+
tslib_1.__metadata("design:type", Number)
|
|
86
|
+
], MLPipelineRun.prototype, "trainingDataCount", void 0);
|
|
87
|
+
tslib_1.__decorate([
|
|
88
|
+
(0, typeorm_1.Column)({ nullable: true, comment: 'Generated model ID' }),
|
|
89
|
+
(0, type_graphql_1.Field)({ nullable: true, description: 'Model ID created by this run' }),
|
|
90
|
+
tslib_1.__metadata("design:type", String)
|
|
91
|
+
], MLPipelineRun.prototype, "modelId", void 0);
|
|
92
|
+
tslib_1.__decorate([
|
|
93
|
+
(0, typeorm_1.Column)({ nullable: true, comment: 'MLflow run ID' }),
|
|
94
|
+
(0, type_graphql_1.Field)({ nullable: true, description: 'MLflow run ID' }),
|
|
95
|
+
tslib_1.__metadata("design:type", String)
|
|
96
|
+
], MLPipelineRun.prototype, "mlflowRunId", void 0);
|
|
97
|
+
tslib_1.__decorate([
|
|
98
|
+
(0, typeorm_1.Column)({ type: 'simple-json', nullable: true, comment: 'Logs or execution trace' }),
|
|
99
|
+
(0, type_graphql_1.Field)(type => String, { nullable: true, description: 'Execution logs as JSON' }),
|
|
100
|
+
tslib_1.__metadata("design:type", String)
|
|
101
|
+
], MLPipelineRun.prototype, "logs", void 0);
|
|
102
|
+
tslib_1.__decorate([
|
|
103
|
+
(0, typeorm_1.ManyToOne)(() => shell_1.Domain),
|
|
104
|
+
(0, type_graphql_1.Field)({ nullable: true, description: 'Domain' }),
|
|
105
|
+
tslib_1.__metadata("design:type", shell_1.Domain)
|
|
106
|
+
], MLPipelineRun.prototype, "domain", void 0);
|
|
107
|
+
tslib_1.__decorate([
|
|
108
|
+
(0, typeorm_1.RelationId)((run) => run.domain),
|
|
109
|
+
tslib_1.__metadata("design:type", String)
|
|
110
|
+
], MLPipelineRun.prototype, "domainId", void 0);
|
|
111
|
+
tslib_1.__decorate([
|
|
112
|
+
(0, typeorm_1.ManyToOne)(() => auth_base_1.User, { nullable: true }),
|
|
113
|
+
(0, type_graphql_1.Field)(type => auth_base_1.User, { nullable: true, description: 'Triggered by' }),
|
|
114
|
+
tslib_1.__metadata("design:type", auth_base_1.User)
|
|
115
|
+
], MLPipelineRun.prototype, "triggeredBy", void 0);
|
|
116
|
+
tslib_1.__decorate([
|
|
117
|
+
(0, typeorm_1.RelationId)((run) => run.triggeredBy),
|
|
118
|
+
tslib_1.__metadata("design:type", String)
|
|
119
|
+
], MLPipelineRun.prototype, "triggeredById", void 0);
|
|
120
|
+
tslib_1.__decorate([
|
|
121
|
+
(0, typeorm_1.CreateDateColumn)(),
|
|
122
|
+
(0, type_graphql_1.Field)({ description: 'Created at' }),
|
|
123
|
+
tslib_1.__metadata("design:type", Date)
|
|
124
|
+
], MLPipelineRun.prototype, "createdAt", void 0);
|
|
125
|
+
tslib_1.__decorate([
|
|
126
|
+
(0, typeorm_1.UpdateDateColumn)(),
|
|
127
|
+
(0, type_graphql_1.Field)({ description: 'Updated at' }),
|
|
128
|
+
tslib_1.__metadata("design:type", Date)
|
|
129
|
+
], MLPipelineRun.prototype, "updatedAt", void 0);
|
|
130
|
+
exports.MLPipelineRun = MLPipelineRun = tslib_1.__decorate([
|
|
131
|
+
(0, typeorm_1.Entity)('ml_pipeline_runs'),
|
|
132
|
+
(0, typeorm_1.Index)('ix_ml_pipeline_run_0', ['domain', 'pipeline']),
|
|
133
|
+
(0, typeorm_1.Index)('ix_ml_pipeline_run_1', ['status', 'startedAt']),
|
|
134
|
+
(0, type_graphql_1.ObjectType)({ description: 'Individual ML pipeline execution record' })
|
|
135
|
+
], MLPipelineRun);
|
|
136
|
+
//# sourceMappingURL=ml-pipeline-run.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ml-pipeline-run.js","sourceRoot":"","sources":["../../../server/service/ml-pipeline-run/ml-pipeline-run.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n CreateDateColumn,\n UpdateDateColumn,\n Entity,\n Index,\n Column,\n RelationId,\n ManyToOne,\n PrimaryGeneratedColumn\n} from 'typeorm'\nimport { ObjectType, Field, Int, ID, registerEnumType } from 'type-graphql'\nimport { Domain } from '@things-factory/shell'\nimport { User } from '@things-factory/auth-base'\nimport { MLPipeline } from '../ml-pipeline/ml-pipeline'\n\n/**\n * Pipeline Run Status\n */\nexport enum PipelineRunStatus {\n PENDING = 'PENDING',\n RUNNING = 'RUNNING',\n SUCCEEDED = 'SUCCEEDED',\n FAILED = 'FAILED',\n CANCELLED = 'CANCELLED'\n}\n\nregisterEnumType(PipelineRunStatus, {\n name: 'PipelineRunStatus',\n description: 'Status of pipeline execution'\n})\n\n/**\n * ML Pipeline Run Entity\n *\n * Tracks individual pipeline executions\n */\n@Entity('ml_pipeline_runs')\n@Index('ix_ml_pipeline_run_0', ['domain', 'pipeline'])\n@Index('ix_ml_pipeline_run_1', ['status', 'startedAt'])\n@ObjectType({ description: 'Individual ML pipeline execution record' })\nexport class MLPipelineRun {\n @PrimaryGeneratedColumn('uuid')\n @Field(type => ID, { description: 'Run ID' })\n id: string\n\n @ManyToOne(() => MLPipeline)\n @Field(type => MLPipeline, { description: 'Parent pipeline' })\n pipeline: MLPipeline\n\n @RelationId((run: MLPipelineRun) => run.pipeline)\n pipelineId: string\n\n @Column({ type: 'varchar', default: PipelineRunStatus.PENDING, comment: 'Run status' })\n @Field(type => PipelineRunStatus, { description: 'Current run status' })\n status: PipelineRunStatus\n\n @Column({ type: 'timestamp', nullable: true, comment: 'Start time' })\n @Field({ nullable: true, description: 'Started at' })\n startedAt?: Date\n\n @Column({ type: 'timestamp', nullable: true, comment: 'End time' })\n @Field({ nullable: true, description: 'Completed at' })\n completedAt?: Date\n\n @Column({ type: 'int', nullable: true, comment: 'Duration in seconds' })\n @Field(type => Int, { nullable: true, description: 'Duration in seconds' })\n duration?: number\n\n @Column({ type: 'text', nullable: true, comment: 'Error message if failed' })\n @Field({ nullable: true, description: 'Error message' })\n errorMessage?: string\n\n @Column({ type: 'simple-json', nullable: true, comment: 'Run parameters' })\n @Field(type => String, { nullable: true, description: 'Parameters used as JSON' })\n params?: string\n\n @Column({ type: 'simple-json', nullable: true, comment: 'Run results and metrics' })\n @Field(type => String, { nullable: true, description: 'Results as JSON' })\n results?: string\n\n @Column({ type: 'int', nullable: true, comment: 'Training data count' })\n @Field(type => Int, { nullable: true, description: 'Number of training samples' })\n trainingDataCount?: number\n\n @Column({ nullable: true, comment: 'Generated model ID' })\n @Field({ nullable: true, description: 'Model ID created by this run' })\n modelId?: string\n\n @Column({ nullable: true, comment: 'MLflow run ID' })\n @Field({ nullable: true, description: 'MLflow run ID' })\n mlflowRunId?: string\n\n @Column({ type: 'simple-json', nullable: true, comment: 'Logs or execution trace' })\n @Field(type => String, { nullable: true, description: 'Execution logs as JSON' })\n logs?: string\n\n @ManyToOne(() => Domain)\n @Field({ nullable: true, description: 'Domain' })\n domain?: Domain\n\n @RelationId((run: MLPipelineRun) => run.domain)\n domainId?: string\n\n @ManyToOne(() => User, { nullable: true })\n @Field(type => User, { nullable: true, description: 'Triggered by' })\n triggeredBy?: User\n\n @RelationId((run: MLPipelineRun) => run.triggeredBy)\n triggeredById?: string\n\n @CreateDateColumn()\n @Field({ description: 'Created at' })\n createdAt: Date\n\n @UpdateDateColumn()\n @Field({ description: 'Updated at' })\n updatedAt: Date\n}\n"]}
|