@powerhousedao/reactor-mcp 4.1.0-dev.4 → 4.1.0-dev.7
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/dist/src/cli.js +4 -1
- package/dist/src/cli.js.map +1 -1
- package/dist/src/index.d.ts +6 -1
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +73 -5
- package/dist/src/index.js.map +1 -1
- package/dist/src/loader.d.ts +18 -0
- package/dist/src/loader.d.ts.map +1 -0
- package/dist/src/loader.js +86 -0
- package/dist/src/loader.js.map +1 -0
- package/dist/src/mcp/reactor.d.ts +461 -244
- package/dist/src/mcp/reactor.d.ts.map +1 -1
- package/dist/src/mcp/reactor.js +198 -146
- package/dist/src/mcp/reactor.js.map +1 -1
- package/dist/src/mcp/utils.d.ts +8 -21
- package/dist/src/mcp/utils.d.ts.map +1 -1
- package/dist/src/mcp/utils.js +59 -21
- package/dist/src/mcp/utils.js.map +1 -1
- package/dist/src/sdk/chat.d.ts +19 -0
- package/dist/src/sdk/chat.d.ts.map +1 -0
- package/dist/src/sdk/chat.js +59 -0
- package/dist/src/sdk/chat.js.map +1 -0
- package/dist/src/server.d.ts +3 -2
- package/dist/src/server.d.ts.map +1 -1
- package/dist/src/server.js +38 -759
- package/dist/src/server.js.map +1 -1
- package/dist/tsconfig.lib.tsbuildinfo +1 -1
- package/package.json +8 -5
- package/dist/src/reactor.d.ts +0 -43
- package/dist/src/reactor.d.ts.map +0 -1
- package/dist/src/reactor.js +0 -142
- package/dist/src/reactor.js.map +0 -1
- package/dist/src/utils.d.ts +0 -10
- package/dist/src/utils.d.ts.map +0 -1
- package/dist/src/utils.js +0 -57
- package/dist/src/utils.js.map +0 -1
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@powerhousedao/reactor-mcp",
|
|
3
|
-
"version": "4.1.0-dev.
|
|
3
|
+
"version": "4.1.0-dev.7",
|
|
4
4
|
"description": "MCP server for document model operations in the Powerhouse ecosystem. For document model creation tasks, consider using the document-model-creator agent which provides a more guided experience.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"types": "./dist/index.d.ts",
|
|
@@ -32,13 +32,16 @@
|
|
|
32
32
|
"vitest": "^3.1.2"
|
|
33
33
|
},
|
|
34
34
|
"dependencies": {
|
|
35
|
+
"@ai-sdk/openai": "^2.0.0",
|
|
35
36
|
"@modelcontextprotocol/sdk": "^1.17.0",
|
|
37
|
+
"ai": "^5.0.0",
|
|
36
38
|
"change-case": "^5.4.4",
|
|
39
|
+
"vite": "^6.3.5",
|
|
37
40
|
"zod": "^3.24.3",
|
|
38
|
-
"@powerhousedao/codegen": "4.1.0-dev.
|
|
39
|
-
"@powerhousedao/config": "4.1.0-dev.
|
|
40
|
-
"document-drive": "4.1.0-dev.
|
|
41
|
-
"document-model": "4.1.0-dev.
|
|
41
|
+
"@powerhousedao/codegen": "4.1.0-dev.7",
|
|
42
|
+
"@powerhousedao/config": "4.1.0-dev.7",
|
|
43
|
+
"document-drive": "4.1.0-dev.7",
|
|
44
|
+
"document-model": "4.1.0-dev.7"
|
|
42
45
|
},
|
|
43
46
|
"scripts": {
|
|
44
47
|
"build": "tsc --build",
|
package/dist/src/reactor.d.ts
DELETED
|
@@ -1,43 +0,0 @@
|
|
|
1
|
-
import { type IDocumentDriveServer } from "document-drive";
|
|
2
|
-
import { type IOperationResult } from "document-drive/server/types";
|
|
3
|
-
import { type Action, type DocumentModelAction, type DocumentModelDocument, type DocumentModelModule, type DocumentModelState, type PHDocument } from "document-model";
|
|
4
|
-
export interface IReactorMcp {
|
|
5
|
-
getDocument(id: string): Promise<PHDocument>;
|
|
6
|
-
getDocuments(): Promise<string[]>;
|
|
7
|
-
createDocument(documentType: string, name: string): Promise<{
|
|
8
|
-
id: string;
|
|
9
|
-
document: PHDocument;
|
|
10
|
-
}>;
|
|
11
|
-
addAction(documentId: string, action: Action): Promise<IOperationResult>;
|
|
12
|
-
}
|
|
13
|
-
export interface IDocumentModelMcp {
|
|
14
|
-
getDocumentModel(name: string): Promise<DocumentModelState>;
|
|
15
|
-
getDocumentModels(): Promise<Record<string, DocumentModelState>>;
|
|
16
|
-
createDocumentModel(name: string): Promise<DocumentModelDocument>;
|
|
17
|
-
addDocumentModelAction(name: string, action: DocumentModelAction): Promise<IOperationResult<DocumentModelDocument>>;
|
|
18
|
-
}
|
|
19
|
-
declare class ReactorMcp implements IReactorMcp {
|
|
20
|
-
protected reactor: IDocumentDriveServer;
|
|
21
|
-
protected driveSlug: string;
|
|
22
|
-
constructor(reactor: IDocumentDriveServer, driveSlug?: string);
|
|
23
|
-
init(): Promise<void>;
|
|
24
|
-
protected getDocumentModelModule(documentType: string): DocumentModelModule;
|
|
25
|
-
createDocument(documentType: string, name: string): Promise<{
|
|
26
|
-
id: string;
|
|
27
|
-
document: PHDocument;
|
|
28
|
-
}>;
|
|
29
|
-
getDocument(id: string): Promise<PHDocument>;
|
|
30
|
-
getDocuments(): Promise<string[]>;
|
|
31
|
-
addAction(documentId: string, action: Action): Promise<IOperationResult>;
|
|
32
|
-
protected getDocumentModelByName(name: string): Promise<DocumentModelDocument>;
|
|
33
|
-
}
|
|
34
|
-
export declare class DocumentModelMcp extends ReactorMcp implements IDocumentModelMcp {
|
|
35
|
-
getDocumentModel(name: string): Promise<DocumentModelState>;
|
|
36
|
-
getDocumentModels(): Promise<Record<string, DocumentModelState>>;
|
|
37
|
-
createDocumentModel(name: string): Promise<DocumentModelDocument>;
|
|
38
|
-
addDocumentModelAction(name: string, action: DocumentModelAction): Promise<IOperationResult<DocumentModelDocument>>;
|
|
39
|
-
}
|
|
40
|
-
export declare function initReactorMcp(): Promise<ReactorMcp>;
|
|
41
|
-
export declare function initDocumentModelMcp(): Promise<DocumentModelMcp>;
|
|
42
|
-
export {};
|
|
43
|
-
//# sourceMappingURL=reactor.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"reactor.d.ts","sourceRoot":"","sources":["../../src/reactor.ts"],"names":[],"mappings":"AAAA,OAAO,EAKL,KAAK,oBAAoB,EAC1B,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,KAAK,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AAEpE,OAAO,EAEL,KAAK,MAAM,EACX,KAAK,mBAAmB,EACxB,KAAK,qBAAqB,EAC1B,KAAK,mBAAmB,EACxB,KAAK,kBAAkB,EACvB,KAAK,UAAU,EAChB,MAAM,gBAAgB,CAAC;AAMxB,MAAM,WAAW,WAAW;IAC1B,WAAW,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;IAC7C,YAAY,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;IAClC,cAAc,CACZ,YAAY,EAAE,MAAM,EACpB,IAAI,EAAE,MAAM,GACX,OAAO,CAAC;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,UAAU,CAAA;KAAE,CAAC,CAAC;IACjD,SAAS,CAAC,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAAC;CAC1E;AAED,MAAM,WAAW,iBAAiB;IAChC,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAAC;IAC5D,iBAAiB,IAAI,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,kBAAkB,CAAC,CAAC,CAAC;IACjE,mBAAmB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,qBAAqB,CAAC,CAAC;IAClE,sBAAsB,CACpB,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,mBAAmB,GAC1B,OAAO,CAAC,gBAAgB,CAAC,qBAAqB,CAAC,CAAC,CAAC;CACrD;AAED,cAAM,UAAW,YAAW,WAAW;IAEnC,SAAS,CAAC,OAAO,EAAE,oBAAoB;IAEvC,SAAS,CAAC,SAAS,EAAE,MAAM;gBAFjB,OAAO,EAAE,oBAAoB,EAE7B,SAAS,GAAE,MAAuB;IAGxC,IAAI;IAkBV,SAAS,CAAC,sBAAsB,CAAC,YAAY,EAAE,MAAM,GAAG,mBAAmB;IAWrE,cAAc,CAClB,YAAY,EAAE,MAAM,EACpB,IAAI,EAAE,MAAM,GACX,OAAO,CAAC;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,UAAU,CAAA;KAAE,CAAC;IA6BhD,WAAW,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC;IAItC,YAAY,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;IAKjC,SAAS,CACb,UAAU,EAAE,MAAM,EAClB,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,gBAAgB,CAAC;cAYZ,sBAAsB,CACpC,IAAI,EAAE,MAAM,GACX,OAAO,CAAC,qBAAqB,CAAC;CAgBlC;AAED,qBAAa,gBAAiB,SAAQ,UAAW,YAAW,iBAAiB;IACrE,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,kBAAkB,CAAC;IAK3D,iBAAiB,IAAI,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,kBAAkB,CAAC,CAAC;IAsBhE,mBAAmB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,qBAAqB,CAAC;IAQjE,sBAAsB,CAC1B,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,mBAAmB,GAC1B,OAAO,CAAC,gBAAgB,CAAC,qBAAqB,CAAC,CAAC;CAOpD;AAeD,wBAAsB,cAAc,wBAKnC;AAED,wBAAsB,oBAAoB,8BAKzC"}
|
package/dist/src/reactor.js
DELETED
|
@@ -1,142 +0,0 @@
|
|
|
1
|
-
import { addFile, driveDocumentModelModule, isFileNode, ReactorBuilder, } from "document-drive";
|
|
2
|
-
import { FilesystemStorage } from "document-drive/storage/filesystem";
|
|
3
|
-
import { documentModelDocumentModelModule, } from "document-model";
|
|
4
|
-
import * as z from "document-model/document-model/gen/schema/zod";
|
|
5
|
-
import { validateDocumentModelAction } from "./utils.js";
|
|
6
|
-
const MCP_DRIVE_SLUG = "mcp";
|
|
7
|
-
class ReactorMcp {
|
|
8
|
-
reactor;
|
|
9
|
-
driveSlug;
|
|
10
|
-
constructor(reactor,
|
|
11
|
-
// slug of the drive to store document models
|
|
12
|
-
driveSlug = MCP_DRIVE_SLUG) {
|
|
13
|
-
this.reactor = reactor;
|
|
14
|
-
this.driveSlug = driveSlug;
|
|
15
|
-
}
|
|
16
|
-
async init() {
|
|
17
|
-
try {
|
|
18
|
-
const driveId = await this.reactor.getDriveIdBySlug(this.driveSlug);
|
|
19
|
-
if (driveId) {
|
|
20
|
-
return;
|
|
21
|
-
}
|
|
22
|
-
}
|
|
23
|
-
catch {
|
|
24
|
-
/* create drive */
|
|
25
|
-
}
|
|
26
|
-
await this.reactor.addDrive({
|
|
27
|
-
slug: this.driveSlug,
|
|
28
|
-
global: {
|
|
29
|
-
name: "MCP",
|
|
30
|
-
},
|
|
31
|
-
});
|
|
32
|
-
}
|
|
33
|
-
getDocumentModelModule(documentType) {
|
|
34
|
-
const documentModels = this.reactor.getDocumentModelModules();
|
|
35
|
-
const documentModelModule = documentModels.find((m) => m.documentModel.id === documentType);
|
|
36
|
-
if (!documentModelModule) {
|
|
37
|
-
throw new Error(`Document model '${documentType}' not found`);
|
|
38
|
-
}
|
|
39
|
-
return documentModelModule;
|
|
40
|
-
}
|
|
41
|
-
async createDocument(documentType, name) {
|
|
42
|
-
const documentModelModule = this.getDocumentModelModule(documentType);
|
|
43
|
-
const document = documentModelModule.utils.createDocument();
|
|
44
|
-
document.header.name = name;
|
|
45
|
-
const result = await this.reactor.addDocument(document);
|
|
46
|
-
const driveId = await this.reactor.getDriveIdBySlug(this.driveSlug);
|
|
47
|
-
const addResult = await this.reactor.addAction(driveId, addFile({
|
|
48
|
-
id: result.header.id,
|
|
49
|
-
documentType: document.header.documentType,
|
|
50
|
-
name,
|
|
51
|
-
}));
|
|
52
|
-
const opError = addResult.operations.at(-1)?.error;
|
|
53
|
-
if (addResult.status !== "SUCCESS") {
|
|
54
|
-
throw new Error(addResult.error?.message);
|
|
55
|
-
}
|
|
56
|
-
else if (opError) {
|
|
57
|
-
throw new Error(opError);
|
|
58
|
-
}
|
|
59
|
-
return {
|
|
60
|
-
id: result.header.id,
|
|
61
|
-
document,
|
|
62
|
-
};
|
|
63
|
-
}
|
|
64
|
-
getDocument(id) {
|
|
65
|
-
return this.reactor.getDocument(id);
|
|
66
|
-
}
|
|
67
|
-
async getDocuments() {
|
|
68
|
-
const driveId = await this.reactor.getDriveIdBySlug(this.driveSlug);
|
|
69
|
-
return this.reactor.getDocuments(driveId);
|
|
70
|
-
}
|
|
71
|
-
async addAction(documentId, action) {
|
|
72
|
-
const document = await this.getDocument(documentId);
|
|
73
|
-
const documentModelModule = this.getDocumentModelModule(document.header.documentType);
|
|
74
|
-
const result = validateDocumentModelAction(documentModelModule, action);
|
|
75
|
-
if (!result.isValid) {
|
|
76
|
-
throw new Error(result.errors.join(", "));
|
|
77
|
-
}
|
|
78
|
-
return this.reactor.addAction(documentId, action);
|
|
79
|
-
}
|
|
80
|
-
async getDocumentModelByName(name) {
|
|
81
|
-
const drive = await this.reactor.getDriveBySlug(this.driveSlug);
|
|
82
|
-
const id = drive.state.global.nodes.find((n) => n.name === name &&
|
|
83
|
-
isFileNode(n) &&
|
|
84
|
-
n.documentType === documentModelDocumentModelModule.documentModel.id)?.id;
|
|
85
|
-
if (!id) {
|
|
86
|
-
throw new Error(`Document model ${name} not found`);
|
|
87
|
-
}
|
|
88
|
-
const document = await this.reactor.getDocument(id);
|
|
89
|
-
z.DocumentModelStateSchema().parse(document.state.global);
|
|
90
|
-
return document;
|
|
91
|
-
}
|
|
92
|
-
}
|
|
93
|
-
export class DocumentModelMcp extends ReactorMcp {
|
|
94
|
-
async getDocumentModel(name) {
|
|
95
|
-
const document = await this.getDocumentModelByName(name);
|
|
96
|
-
return document.state.global;
|
|
97
|
-
}
|
|
98
|
-
async getDocumentModels() {
|
|
99
|
-
const drive = await this.reactor.getDriveBySlug(this.driveSlug);
|
|
100
|
-
const documents = drive.state.global.nodes.filter((n) => isFileNode(n) &&
|
|
101
|
-
n.documentType === documentModelDocumentModelModule.documentModel.id);
|
|
102
|
-
const documentModels = await Promise.allSettled(documents.map((d) => this.getDocumentModelByName(d.name)));
|
|
103
|
-
return documentModels
|
|
104
|
-
.filter((d) => d.status === "fulfilled")
|
|
105
|
-
.map((d) => d.value)
|
|
106
|
-
.reduce((acc, documentModel) => {
|
|
107
|
-
acc[documentModel.header.name] = documentModel.state.global;
|
|
108
|
-
return acc;
|
|
109
|
-
}, {});
|
|
110
|
-
}
|
|
111
|
-
async createDocumentModel(name) {
|
|
112
|
-
const result = await this.createDocument(documentModelDocumentModelModule.documentModel.id, name);
|
|
113
|
-
return result.document;
|
|
114
|
-
}
|
|
115
|
-
async addDocumentModelAction(name, action) {
|
|
116
|
-
const document = await this.getDocumentModelByName(name);
|
|
117
|
-
return (await this.addAction(document.header.id, action));
|
|
118
|
-
}
|
|
119
|
-
}
|
|
120
|
-
async function createReactor() {
|
|
121
|
-
const storage = new FilesystemStorage("./.ph/mcp/storage");
|
|
122
|
-
const builder = new ReactorBuilder([
|
|
123
|
-
documentModelDocumentModelModule,
|
|
124
|
-
driveDocumentModelModule,
|
|
125
|
-
]).withStorage(storage);
|
|
126
|
-
const reactor = builder.build();
|
|
127
|
-
await reactor.initialize();
|
|
128
|
-
return reactor;
|
|
129
|
-
}
|
|
130
|
-
export async function initReactorMcp() {
|
|
131
|
-
const reactor = await createReactor();
|
|
132
|
-
const reactorMcp = new ReactorMcp(reactor);
|
|
133
|
-
await reactorMcp.init();
|
|
134
|
-
return reactorMcp;
|
|
135
|
-
}
|
|
136
|
-
export async function initDocumentModelMcp() {
|
|
137
|
-
const reactor = await createReactor();
|
|
138
|
-
const documentModelMcp = new DocumentModelMcp(reactor);
|
|
139
|
-
await documentModelMcp.init();
|
|
140
|
-
return documentModelMcp;
|
|
141
|
-
}
|
|
142
|
-
//# sourceMappingURL=reactor.js.map
|
package/dist/src/reactor.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"reactor.js","sourceRoot":"","sources":["../../src/reactor.ts"],"names":[],"mappings":"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"}
|
package/dist/src/utils.d.ts
DELETED
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
import { type Action, type DocumentModelModule } from "document-model";
|
|
2
|
-
/**
|
|
3
|
-
* Validates a document model action against the document model state.
|
|
4
|
-
* Checks if the action type is valid and the input structure is correct.
|
|
5
|
-
*/
|
|
6
|
-
export declare function validateDocumentModelAction(documentModelModule: DocumentModelModule, action: Action): {
|
|
7
|
-
isValid: boolean;
|
|
8
|
-
errors: string[];
|
|
9
|
-
};
|
|
10
|
-
//# sourceMappingURL=utils.d.ts.map
|
package/dist/src/utils.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/utils.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,MAAM,EAAE,KAAK,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AAGvE;;;GAGG;AACH,wBAAgB,2BAA2B,CACzC,mBAAmB,EAAE,mBAAmB,EACxC,MAAM,EAAE,MAAM,GACb;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,MAAM,EAAE,MAAM,EAAE,CAAA;CAAE,CAyExC"}
|
package/dist/src/utils.js
DELETED
|
@@ -1,57 +0,0 @@
|
|
|
1
|
-
import { camelCase } from "change-case";
|
|
2
|
-
/**
|
|
3
|
-
* Validates a document model action against the document model state.
|
|
4
|
-
* Checks if the action type is valid and the input structure is correct.
|
|
5
|
-
*/
|
|
6
|
-
export function validateDocumentModelAction(documentModelModule, action) {
|
|
7
|
-
const errors = [];
|
|
8
|
-
const documentModelState = documentModelModule.documentModel;
|
|
9
|
-
// Get the latest specification
|
|
10
|
-
if (!documentModelState.specifications ||
|
|
11
|
-
documentModelState.specifications.length === 0) {
|
|
12
|
-
errors.push("Document model has no specifications");
|
|
13
|
-
return { isValid: false, errors };
|
|
14
|
-
}
|
|
15
|
-
const latestSpec = documentModelState.specifications[documentModelState.specifications.length - 1];
|
|
16
|
-
// Search through modules to find the operation that matches the action type (in SCREAMING_SNAKE_CASE)
|
|
17
|
-
let operation = null;
|
|
18
|
-
for (const module of latestSpec.modules) {
|
|
19
|
-
const foundOp = module.operations.find((op) => op.name === action.type);
|
|
20
|
-
if (foundOp) {
|
|
21
|
-
operation = foundOp;
|
|
22
|
-
break;
|
|
23
|
-
}
|
|
24
|
-
}
|
|
25
|
-
if (!operation) {
|
|
26
|
-
errors.push(`Operation "${action.type}" is not defined in any module of the document model`);
|
|
27
|
-
return { isValid: false, errors };
|
|
28
|
-
}
|
|
29
|
-
// Convert action type from SCREAMING_SNAKE_CASE to camelCase to match action creators
|
|
30
|
-
const camelCaseActionType = camelCase(action.type);
|
|
31
|
-
// Check if action creator exists in documentModelModule.actions
|
|
32
|
-
const actionCreator = documentModelModule.actions[camelCaseActionType];
|
|
33
|
-
if (!actionCreator) {
|
|
34
|
-
errors.push(`Action creator "${camelCaseActionType}" for action type "${action.type}" is not defined in documentModelDocumentModelModule.actions`);
|
|
35
|
-
return { isValid: false, errors };
|
|
36
|
-
}
|
|
37
|
-
// Validate the operation using the action creator
|
|
38
|
-
let inputError = null;
|
|
39
|
-
try {
|
|
40
|
-
actionCreator(action.input);
|
|
41
|
-
}
|
|
42
|
-
catch (e) {
|
|
43
|
-
inputError = e instanceof Error ? e : new Error(JSON.stringify(e));
|
|
44
|
-
}
|
|
45
|
-
if (inputError) {
|
|
46
|
-
errors.push(`Input validation error: ${inputError.message}`);
|
|
47
|
-
}
|
|
48
|
-
// Validate scope if operation defines one
|
|
49
|
-
if (operation.scope && action.scope !== operation.scope) {
|
|
50
|
-
errors.push(`Action scope "${action.scope}" does not match operation scope "${operation.scope}"`);
|
|
51
|
-
}
|
|
52
|
-
return {
|
|
53
|
-
isValid: errors.length === 0,
|
|
54
|
-
errors,
|
|
55
|
-
};
|
|
56
|
-
}
|
|
57
|
-
//# sourceMappingURL=utils.js.map
|
package/dist/src/utils.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAIxC;;;GAGG;AACH,MAAM,UAAU,2BAA2B,CACzC,mBAAwC,EACxC,MAAc;IAEd,MAAM,MAAM,GAAa,EAAE,CAAC;IAE5B,MAAM,kBAAkB,GAAG,mBAAmB,CAAC,aAAa,CAAC;IAE7D,+BAA+B;IAC/B,IACE,CAAC,kBAAkB,CAAC,cAAc;QAClC,kBAAkB,CAAC,cAAc,CAAC,MAAM,KAAK,CAAC,EAC9C,CAAC;QACD,MAAM,CAAC,IAAI,CAAC,sCAAsC,CAAC,CAAC;QACpD,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC;IACpC,CAAC;IAED,MAAM,UAAU,GACd,kBAAkB,CAAC,cAAc,CAC/B,kBAAkB,CAAC,cAAc,CAAC,MAAM,GAAG,CAAC,CAC7C,CAAC;IAEJ,sGAAsG;IACtG,IAAI,SAAS,GAAqB,IAAI,CAAC;IAEvC,KAAK,MAAM,MAAM,IAAI,UAAU,CAAC,OAAO,EAAE,CAAC;QACxC,MAAM,OAAO,GAAG,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,IAAI,KAAK,MAAM,CAAC,IAAI,CAAC,CAAC;QACxE,IAAI,OAAO,EAAE,CAAC;YACZ,SAAS,GAAG,OAAO,CAAC;YACpB,MAAM;QACR,CAAC;IACH,CAAC;IAED,IAAI,CAAC,SAAS,EAAE,CAAC;QACf,MAAM,CAAC,IAAI,CACT,cAAc,MAAM,CAAC,IAAI,sDAAsD,CAChF,CAAC;QACF,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC;IACpC,CAAC;IAED,sFAAsF;IACtF,MAAM,mBAAmB,GAAG,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IAEnD,gEAAgE;IAChE,MAAM,aAAa,GAAG,mBAAmB,CAAC,OAAO,CAAC,mBAAmB,CAAC,CAAC;IAEvE,IAAI,CAAC,aAAa,EAAE,CAAC;QACnB,MAAM,CAAC,IAAI,CACT,mBAAmB,mBAAmB,sBAAsB,MAAM,CAAC,IAAI,8DAA8D,CACtI,CAAC;QACF,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC;IACpC,CAAC;IAED,kDAAkD;IAClD,IAAI,UAAU,GAAiB,IAAI,CAAC;IACpC,IAAI,CAAC;QACH,aAAa,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IAC9B,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,UAAU,GAAG,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;IACrE,CAAC;IAED,IAAI,UAAU,EAAE,CAAC;QACf,MAAM,CAAC,IAAI,CAAC,2BAA2B,UAAU,CAAC,OAAO,EAAE,CAAC,CAAC;IAC/D,CAAC;IAED,0CAA0C;IAC1C,IAAI,SAAS,CAAC,KAAK,IAAI,MAAM,CAAC,KAAK,KAAK,SAAS,CAAC,KAAK,EAAE,CAAC;QACxD,MAAM,CAAC,IAAI,CACT,iBAAiB,MAAM,CAAC,KAAK,qCAAqC,SAAS,CAAC,KAAK,GAAG,CACrF,CAAC;IACJ,CAAC;IAED,OAAO;QACL,OAAO,EAAE,MAAM,CAAC,MAAM,KAAK,CAAC;QAC5B,MAAM;KACP,CAAC;AACJ,CAAC"}
|