swallowkit 1.0.0-beta.19 → 1.0.0-beta.20
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.ja.md +36 -4
- package/README.md +36 -4
- package/dist/cli/commands/add-auth.d.ts.map +1 -1
- package/dist/cli/commands/add-auth.js +2 -0
- package/dist/cli/commands/add-auth.js.map +1 -1
- package/dist/cli/commands/add-connector.d.ts.map +1 -1
- package/dist/cli/commands/add-connector.js +2 -0
- package/dist/cli/commands/add-connector.js.map +1 -1
- package/dist/cli/commands/create-model.d.ts +0 -4
- package/dist/cli/commands/create-model.d.ts.map +1 -1
- package/dist/cli/commands/create-model.js +19 -145
- package/dist/cli/commands/create-model.js.map +1 -1
- package/dist/cli/commands/init.d.ts.map +1 -1
- package/dist/cli/commands/init.js +2 -0
- package/dist/cli/commands/init.js.map +1 -1
- package/dist/cli/commands/scaffold.d.ts.map +1 -1
- package/dist/cli/commands/scaffold.js +22 -10
- package/dist/cli/commands/scaffold.js.map +1 -1
- package/dist/cli/index.d.ts.map +1 -1
- package/dist/cli/index.js +5 -0
- package/dist/cli/index.js.map +1 -1
- package/dist/core/operations/create-model.d.ts +15 -0
- package/dist/core/operations/create-model.d.ts.map +1 -0
- package/dist/core/operations/create-model.js +171 -0
- package/dist/core/operations/create-model.js.map +1 -0
- package/dist/core/operations/runtime.d.ts +32 -0
- package/dist/core/operations/runtime.d.ts.map +1 -0
- package/dist/core/operations/runtime.js +225 -0
- package/dist/core/operations/runtime.js.map +1 -0
- package/dist/core/operations/scaffold-machine.d.ts +16 -0
- package/dist/core/operations/scaffold-machine.d.ts.map +1 -0
- package/dist/core/operations/scaffold-machine.js +63 -0
- package/dist/core/operations/scaffold-machine.js.map +1 -0
- package/dist/core/project/manifest.d.ts +92 -0
- package/dist/core/project/manifest.d.ts.map +1 -0
- package/dist/core/project/manifest.js +321 -0
- package/dist/core/project/manifest.js.map +1 -0
- package/dist/core/project/validation.d.ts +20 -0
- package/dist/core/project/validation.d.ts.map +1 -0
- package/dist/core/project/validation.js +204 -0
- package/dist/core/project/validation.js.map +1 -0
- package/dist/machine/contracts.d.ts +16 -0
- package/dist/machine/contracts.d.ts.map +1 -0
- package/dist/machine/contracts.js +3 -0
- package/dist/machine/contracts.js.map +1 -0
- package/dist/machine/errors.d.ts +11 -0
- package/dist/machine/errors.d.ts.map +1 -0
- package/dist/machine/errors.js +34 -0
- package/dist/machine/errors.js.map +1 -0
- package/dist/machine/index.d.ts +3 -0
- package/dist/machine/index.d.ts.map +1 -0
- package/dist/machine/index.js +156 -0
- package/dist/machine/index.js.map +1 -0
- package/dist/mcp/index.d.ts +25 -0
- package/dist/mcp/index.d.ts.map +1 -0
- package/dist/mcp/index.js +184 -0
- package/dist/mcp/index.js.map +1 -0
- package/package.json +6 -4
- package/src/__tests__/machine.test.ts +212 -0
- package/src/__tests__/mcp.test.ts +56 -0
- package/src/cli/commands/add-auth.ts +2 -0
- package/src/cli/commands/add-connector.ts +2 -0
- package/src/cli/commands/create-model.ts +19 -168
- package/src/cli/commands/init.ts +3 -0
- package/src/cli/commands/scaffold.ts +27 -10
- package/src/cli/index.ts +6 -0
- package/src/core/operations/create-model.ts +174 -0
- package/src/core/operations/runtime.ts +235 -0
- package/src/core/operations/scaffold-machine.ts +91 -0
- package/src/core/project/manifest.ts +402 -0
- package/src/core/project/validation.ts +221 -0
- package/src/machine/contracts.ts +17 -0
- package/src/machine/errors.ts +34 -0
- package/src/machine/index.ts +173 -0
- package/src/mcp/index.ts +185 -0
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.MachineCommandError = void 0;
|
|
4
|
+
exports.toMachineError = toMachineError;
|
|
5
|
+
class MachineCommandError extends Error {
|
|
6
|
+
constructor(code, message, details) {
|
|
7
|
+
super(message);
|
|
8
|
+
this.name = "MachineCommandError";
|
|
9
|
+
this.code = code;
|
|
10
|
+
this.details = details;
|
|
11
|
+
}
|
|
12
|
+
}
|
|
13
|
+
exports.MachineCommandError = MachineCommandError;
|
|
14
|
+
function toMachineError(error) {
|
|
15
|
+
if (error instanceof MachineCommandError) {
|
|
16
|
+
return {
|
|
17
|
+
code: error.code,
|
|
18
|
+
message: error.message,
|
|
19
|
+
...(error.details === undefined ? {} : { details: error.details }),
|
|
20
|
+
};
|
|
21
|
+
}
|
|
22
|
+
if (error instanceof Error) {
|
|
23
|
+
return {
|
|
24
|
+
code: "internal-error",
|
|
25
|
+
message: error.message,
|
|
26
|
+
};
|
|
27
|
+
}
|
|
28
|
+
return {
|
|
29
|
+
code: "internal-error",
|
|
30
|
+
message: "Unknown error",
|
|
31
|
+
details: error,
|
|
32
|
+
};
|
|
33
|
+
}
|
|
34
|
+
//# sourceMappingURL=errors.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/machine/errors.ts"],"names":[],"mappings":";;;AAYA,wCAqBC;AAjCD,MAAa,mBAAoB,SAAQ,KAAK;IAI5C,YAAY,IAAY,EAAE,OAAe,EAAE,OAAiB;QAC1D,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,qBAAqB,CAAC;QAClC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;IACzB,CAAC;CACF;AAVD,kDAUC;AAED,SAAgB,cAAc,CAAC,KAAc;IAC3C,IAAI,KAAK,YAAY,mBAAmB,EAAE,CAAC;QACzC,OAAO;YACL,IAAI,EAAE,KAAK,CAAC,IAAI;YAChB,OAAO,EAAE,KAAK,CAAC,OAAO;YACtB,GAAG,CAAC,KAAK,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,CAAC;SACnE,CAAC;IACJ,CAAC;IAED,IAAI,KAAK,YAAY,KAAK,EAAE,CAAC;QAC3B,OAAO;YACL,IAAI,EAAE,gBAAgB;YACtB,OAAO,EAAE,KAAK,CAAC,OAAO;SACvB,CAAC;IACJ,CAAC;IAED,OAAO;QACL,IAAI,EAAE,gBAAgB;QACtB,OAAO,EAAE,eAAe;QACxB,OAAO,EAAE,KAAK;KACf,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/machine/index.ts"],"names":[],"mappings":"AAwJA,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAExD;AAED,wBAAsB,aAAa,CAAC,IAAI,GAAE,MAAM,EAAiB,GAAG,OAAO,CAAC,IAAI,CAAC,CAgBhF"}
|
|
@@ -0,0 +1,156 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.isMachineCommand = isMachineCommand;
|
|
4
|
+
exports.runMachineCli = runMachineCli;
|
|
5
|
+
const commander_1 = require("commander");
|
|
6
|
+
const create_model_1 = require("../core/operations/create-model");
|
|
7
|
+
const scaffold_machine_1 = require("../core/operations/scaffold-machine");
|
|
8
|
+
const manifest_1 = require("../core/project/manifest");
|
|
9
|
+
const validation_1 = require("../core/project/validation");
|
|
10
|
+
const errors_1 = require("./errors");
|
|
11
|
+
function writeMachineResponse(response) {
|
|
12
|
+
process.stdout.write(`${JSON.stringify(response, null, 2)}\n`);
|
|
13
|
+
}
|
|
14
|
+
function writeMachineSuccess(command, data) {
|
|
15
|
+
const response = {
|
|
16
|
+
ok: true,
|
|
17
|
+
command,
|
|
18
|
+
data,
|
|
19
|
+
};
|
|
20
|
+
writeMachineResponse(response);
|
|
21
|
+
}
|
|
22
|
+
function writeMachineError(command, error) {
|
|
23
|
+
const response = {
|
|
24
|
+
ok: false,
|
|
25
|
+
command,
|
|
26
|
+
error: (0, errors_1.toMachineError)(error),
|
|
27
|
+
};
|
|
28
|
+
writeMachineResponse(response);
|
|
29
|
+
}
|
|
30
|
+
async function handleMachineAction(command, action) {
|
|
31
|
+
try {
|
|
32
|
+
writeMachineSuccess(command, await action());
|
|
33
|
+
}
|
|
34
|
+
catch (error) {
|
|
35
|
+
writeMachineError(command, error);
|
|
36
|
+
process.exitCode = 1;
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
function createMachineProgram() {
|
|
40
|
+
const program = new commander_1.Command();
|
|
41
|
+
program
|
|
42
|
+
.name("swallowkit machine")
|
|
43
|
+
.description("SwallowKit machine-readable CLI for AI and MCP integrations")
|
|
44
|
+
.showHelpAfterError(false)
|
|
45
|
+
.configureOutput({
|
|
46
|
+
writeErr: () => undefined,
|
|
47
|
+
writeOut: () => undefined,
|
|
48
|
+
});
|
|
49
|
+
const inspect = new commander_1.Command("inspect");
|
|
50
|
+
inspect
|
|
51
|
+
.command("project")
|
|
52
|
+
.description("Inspect SwallowKit project metadata")
|
|
53
|
+
.action(async () => {
|
|
54
|
+
await handleMachineAction("inspect-project", async () => {
|
|
55
|
+
const loaded = await (0, manifest_1.loadProjectManifest)();
|
|
56
|
+
return {
|
|
57
|
+
manifestSource: loaded.source,
|
|
58
|
+
diagnostics: loaded.diagnostics,
|
|
59
|
+
manifest: loaded.manifest,
|
|
60
|
+
};
|
|
61
|
+
});
|
|
62
|
+
});
|
|
63
|
+
inspect
|
|
64
|
+
.command("entities")
|
|
65
|
+
.description("Inspect SwallowKit entities")
|
|
66
|
+
.action(async () => {
|
|
67
|
+
await handleMachineAction("inspect-entities", async () => {
|
|
68
|
+
const loaded = await (0, manifest_1.loadProjectManifest)();
|
|
69
|
+
return {
|
|
70
|
+
manifestSource: loaded.source,
|
|
71
|
+
diagnostics: loaded.diagnostics,
|
|
72
|
+
entities: loaded.manifest.entities,
|
|
73
|
+
};
|
|
74
|
+
});
|
|
75
|
+
});
|
|
76
|
+
inspect
|
|
77
|
+
.command("routes")
|
|
78
|
+
.description("Inspect SwallowKit routes")
|
|
79
|
+
.action(async () => {
|
|
80
|
+
await handleMachineAction("inspect-routes", async () => {
|
|
81
|
+
const loaded = await (0, manifest_1.loadProjectManifest)();
|
|
82
|
+
return {
|
|
83
|
+
manifestSource: loaded.source,
|
|
84
|
+
diagnostics: loaded.diagnostics,
|
|
85
|
+
routes: loaded.manifest.routes,
|
|
86
|
+
};
|
|
87
|
+
});
|
|
88
|
+
});
|
|
89
|
+
const validate = new commander_1.Command("validate");
|
|
90
|
+
validate
|
|
91
|
+
.command("project")
|
|
92
|
+
.description("Validate SwallowKit project metadata and conventions")
|
|
93
|
+
.action(async () => {
|
|
94
|
+
await handleMachineAction("validate-project", async () => (0, validation_1.validateProject)());
|
|
95
|
+
});
|
|
96
|
+
const generate = new commander_1.Command("generate");
|
|
97
|
+
generate
|
|
98
|
+
.command("model")
|
|
99
|
+
.description("Generate model templates with deterministic JSON output")
|
|
100
|
+
.argument("<names...>", "Model names to generate")
|
|
101
|
+
.option("--models-dir <dir>", "Models directory", "shared/models")
|
|
102
|
+
.option("--connector <name>", "Associate the models with a configured connector")
|
|
103
|
+
.option("--overwrite <mode>", "Overwrite policy: always | never", "never")
|
|
104
|
+
.action(async (names, options) => {
|
|
105
|
+
await handleMachineAction("generate-model", async () => {
|
|
106
|
+
if (options.overwrite !== "always" && options.overwrite !== "never") {
|
|
107
|
+
throw new errors_1.MachineCommandError("invalid-overwrite-mode", `Unsupported overwrite mode: ${options.overwrite}. Use "always" or "never".`);
|
|
108
|
+
}
|
|
109
|
+
return (0, create_model_1.createModelOperation)({
|
|
110
|
+
names,
|
|
111
|
+
modelsDir: options.modelsDir,
|
|
112
|
+
connector: options.connector,
|
|
113
|
+
overwriteMode: options.overwrite,
|
|
114
|
+
});
|
|
115
|
+
});
|
|
116
|
+
});
|
|
117
|
+
generate
|
|
118
|
+
.command("scaffold")
|
|
119
|
+
.description("Generate scaffold artifacts with deterministic JSON output")
|
|
120
|
+
.argument("<model>", "Model file or model name")
|
|
121
|
+
.option("--functions-dir <dir>", "Functions directory", "functions")
|
|
122
|
+
.option("--api-dir <dir>", "API routes directory", "app/api")
|
|
123
|
+
.option("--api-only", "Generate only API artifacts", false)
|
|
124
|
+
.action(async (model, options) => {
|
|
125
|
+
await handleMachineAction("generate-scaffold", async () => (0, scaffold_machine_1.runMachineScaffoldOperation)({
|
|
126
|
+
model,
|
|
127
|
+
functionsDir: options.functionsDir,
|
|
128
|
+
apiDir: options.apiDir,
|
|
129
|
+
apiOnly: options.apiOnly,
|
|
130
|
+
}));
|
|
131
|
+
});
|
|
132
|
+
program.addCommand(inspect);
|
|
133
|
+
program.addCommand(validate);
|
|
134
|
+
program.addCommand(generate);
|
|
135
|
+
return program;
|
|
136
|
+
}
|
|
137
|
+
function isMachineCommand(argv) {
|
|
138
|
+
return argv[2] === "machine";
|
|
139
|
+
}
|
|
140
|
+
async function runMachineCli(argv = process.argv) {
|
|
141
|
+
const program = createMachineProgram();
|
|
142
|
+
program.exitOverride();
|
|
143
|
+
try {
|
|
144
|
+
await program.parseAsync(argv.slice(3), { from: "user" });
|
|
145
|
+
}
|
|
146
|
+
catch (error) {
|
|
147
|
+
if (error instanceof commander_1.CommanderError) {
|
|
148
|
+
writeMachineError("machine-parse", new errors_1.MachineCommandError("invalid-command", error.message));
|
|
149
|
+
process.exitCode = Number.isFinite(error.exitCode) ? error.exitCode : 1;
|
|
150
|
+
return;
|
|
151
|
+
}
|
|
152
|
+
writeMachineError("machine-parse", error);
|
|
153
|
+
process.exitCode = 1;
|
|
154
|
+
}
|
|
155
|
+
}
|
|
156
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/machine/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
import { McpServer } from "@modelcontextprotocol/sdk/server/mcp";
|
|
3
|
+
import * as z from "zod/v4";
|
|
4
|
+
type MachineCliRunner = (args: string[]) => Promise<{
|
|
5
|
+
stdout: string;
|
|
6
|
+
stderr: string;
|
|
7
|
+
exitCode: number;
|
|
8
|
+
}>;
|
|
9
|
+
type ToolContentResult = {
|
|
10
|
+
content: Array<{
|
|
11
|
+
type: "text";
|
|
12
|
+
text: string;
|
|
13
|
+
}>;
|
|
14
|
+
};
|
|
15
|
+
type ToolDefinition = {
|
|
16
|
+
name: string;
|
|
17
|
+
description: string;
|
|
18
|
+
inputSchema: z.ZodTypeAny;
|
|
19
|
+
handler: (input: any) => Promise<ToolContentResult>;
|
|
20
|
+
};
|
|
21
|
+
export declare function buildSwallowKitToolDefinitions(runMachineCli?: MachineCliRunner): ToolDefinition[];
|
|
22
|
+
export declare function createSwallowKitMcpServer(runMachineCli?: MachineCliRunner): McpServer;
|
|
23
|
+
export declare function runMcpServer(): Promise<void>;
|
|
24
|
+
export {};
|
|
25
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/mcp/index.ts"],"names":[],"mappings":";AAGA,OAAO,EAAE,SAAS,EAAE,MAAM,sCAAsC,CAAC;AAEjE,OAAO,KAAK,CAAC,MAAM,QAAQ,CAAC;AAS5B,KAAK,gBAAgB,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,OAAO,CAAC;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,CAAC,CAAC;AAC1G,KAAK,iBAAiB,GAAG;IAAE,OAAO,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;CAAE,CAAC;AAC5E,KAAK,cAAc,GAAG;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,CAAC,CAAC,UAAU,CAAC;IAC1B,OAAO,EAAE,CAAC,KAAK,EAAE,GAAG,KAAK,OAAO,CAAC,iBAAiB,CAAC,CAAC;CACrD,CAAC;AAkDF,wBAAgB,8BAA8B,CAC5C,aAAa,GAAE,gBAA0C,GACxD,cAAc,EAAE,CA8ElB;AAED,wBAAgB,yBAAyB,CAAC,aAAa,GAAE,gBAA0C,GAAG,SAAS,CAkB9G;AAED,wBAAsB,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC,CAIlD"}
|
|
@@ -0,0 +1,184 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
"use strict";
|
|
3
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
4
|
+
if (k2 === undefined) k2 = k;
|
|
5
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
6
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
7
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
8
|
+
}
|
|
9
|
+
Object.defineProperty(o, k2, desc);
|
|
10
|
+
}) : (function(o, m, k, k2) {
|
|
11
|
+
if (k2 === undefined) k2 = k;
|
|
12
|
+
o[k2] = m[k];
|
|
13
|
+
}));
|
|
14
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
15
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
16
|
+
}) : function(o, v) {
|
|
17
|
+
o["default"] = v;
|
|
18
|
+
});
|
|
19
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
20
|
+
var ownKeys = function(o) {
|
|
21
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
22
|
+
var ar = [];
|
|
23
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
24
|
+
return ar;
|
|
25
|
+
};
|
|
26
|
+
return ownKeys(o);
|
|
27
|
+
};
|
|
28
|
+
return function (mod) {
|
|
29
|
+
if (mod && mod.__esModule) return mod;
|
|
30
|
+
var result = {};
|
|
31
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
32
|
+
__setModuleDefault(result, mod);
|
|
33
|
+
return result;
|
|
34
|
+
};
|
|
35
|
+
})();
|
|
36
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
37
|
+
exports.buildSwallowKitToolDefinitions = buildSwallowKitToolDefinitions;
|
|
38
|
+
exports.createSwallowKitMcpServer = createSwallowKitMcpServer;
|
|
39
|
+
exports.runMcpServer = runMcpServer;
|
|
40
|
+
const path = __importStar(require("path"));
|
|
41
|
+
const mcp_1 = require("@modelcontextprotocol/sdk/server/mcp");
|
|
42
|
+
const stdio_1 = require("@modelcontextprotocol/sdk/server/stdio");
|
|
43
|
+
const z = __importStar(require("zod/v4"));
|
|
44
|
+
function resolveMachineCliEntrypoint() {
|
|
45
|
+
return path.resolve(__dirname, "..", "cli", "index.js");
|
|
46
|
+
}
|
|
47
|
+
async function defaultMachineCliRunner(args) {
|
|
48
|
+
const { execa } = await Promise.resolve().then(() => __importStar(require("execa")));
|
|
49
|
+
const result = await execa(process.execPath, [resolveMachineCliEntrypoint(), "machine", ...args], {
|
|
50
|
+
reject: false,
|
|
51
|
+
});
|
|
52
|
+
return {
|
|
53
|
+
stdout: result.stdout,
|
|
54
|
+
stderr: result.stderr,
|
|
55
|
+
exitCode: result.exitCode ?? 0,
|
|
56
|
+
};
|
|
57
|
+
}
|
|
58
|
+
async function executeMachineCommand(args, runMachineCli) {
|
|
59
|
+
const result = await runMachineCli(args);
|
|
60
|
+
let parsed;
|
|
61
|
+
try {
|
|
62
|
+
parsed = JSON.parse(result.stdout);
|
|
63
|
+
}
|
|
64
|
+
catch {
|
|
65
|
+
throw new Error(result.stderr || result.stdout || "Machine CLI returned invalid JSON.");
|
|
66
|
+
}
|
|
67
|
+
if (!parsed.ok) {
|
|
68
|
+
throw new Error(parsed.error.message);
|
|
69
|
+
}
|
|
70
|
+
return parsed;
|
|
71
|
+
}
|
|
72
|
+
function jsonTextContent(value) {
|
|
73
|
+
return {
|
|
74
|
+
content: [
|
|
75
|
+
{
|
|
76
|
+
type: "text",
|
|
77
|
+
text: JSON.stringify(value, null, 2),
|
|
78
|
+
},
|
|
79
|
+
],
|
|
80
|
+
};
|
|
81
|
+
}
|
|
82
|
+
function buildSwallowKitToolDefinitions(runMachineCli = defaultMachineCliRunner) {
|
|
83
|
+
return [
|
|
84
|
+
{
|
|
85
|
+
name: "swallowkit_inspect_project",
|
|
86
|
+
description: "Return framework-owned SwallowKit project metadata.",
|
|
87
|
+
inputSchema: z.object({}),
|
|
88
|
+
handler: async () => {
|
|
89
|
+
const response = await executeMachineCommand(["inspect", "project"], runMachineCli);
|
|
90
|
+
return jsonTextContent(response.data);
|
|
91
|
+
},
|
|
92
|
+
},
|
|
93
|
+
{
|
|
94
|
+
name: "swallowkit_inspect_entities",
|
|
95
|
+
description: "Return SwallowKit entities, schema metadata, and connector/auth annotations.",
|
|
96
|
+
inputSchema: z.object({}),
|
|
97
|
+
handler: async () => {
|
|
98
|
+
const response = await executeMachineCommand(["inspect", "entities"], runMachineCli);
|
|
99
|
+
return jsonTextContent(response.data);
|
|
100
|
+
},
|
|
101
|
+
},
|
|
102
|
+
{
|
|
103
|
+
name: "swallowkit_inspect_routes",
|
|
104
|
+
description: "Return BFF and Functions route metadata understood by SwallowKit.",
|
|
105
|
+
inputSchema: z.object({}),
|
|
106
|
+
handler: async () => {
|
|
107
|
+
const response = await executeMachineCommand(["inspect", "routes"], runMachineCli);
|
|
108
|
+
return jsonTextContent(response.data);
|
|
109
|
+
},
|
|
110
|
+
},
|
|
111
|
+
{
|
|
112
|
+
name: "swallowkit_validate_project",
|
|
113
|
+
description: "Validate project metadata, generated artifacts, and framework conventions.",
|
|
114
|
+
inputSchema: z.object({}),
|
|
115
|
+
handler: async () => {
|
|
116
|
+
const response = await executeMachineCommand(["validate", "project"], runMachineCli);
|
|
117
|
+
return jsonTextContent(response.data);
|
|
118
|
+
},
|
|
119
|
+
},
|
|
120
|
+
{
|
|
121
|
+
name: "swallowkit_generate_model",
|
|
122
|
+
description: "Generate SwallowKit model templates through the official generator.",
|
|
123
|
+
inputSchema: z.object({
|
|
124
|
+
names: z.array(z.string()).min(1),
|
|
125
|
+
modelsDir: z.string().optional(),
|
|
126
|
+
connector: z.string().optional(),
|
|
127
|
+
overwrite: z.enum(["always", "never"]).optional(),
|
|
128
|
+
}),
|
|
129
|
+
handler: async ({ names, modelsDir, connector, overwrite }) => {
|
|
130
|
+
const response = await executeMachineCommand(["generate", "model", ...names, ...(modelsDir ? ["--models-dir", modelsDir] : []), ...(connector ? ["--connector", connector] : []), "--overwrite", overwrite || "never"], runMachineCli);
|
|
131
|
+
return jsonTextContent(response.data);
|
|
132
|
+
},
|
|
133
|
+
},
|
|
134
|
+
{
|
|
135
|
+
name: "swallowkit_scaffold_model",
|
|
136
|
+
description: "Generate SwallowKit scaffold artifacts through the official generator.",
|
|
137
|
+
inputSchema: z.object({
|
|
138
|
+
model: z.string(),
|
|
139
|
+
functionsDir: z.string().optional(),
|
|
140
|
+
apiDir: z.string().optional(),
|
|
141
|
+
apiOnly: z.boolean().optional(),
|
|
142
|
+
}),
|
|
143
|
+
handler: async ({ model, functionsDir, apiDir, apiOnly }) => {
|
|
144
|
+
const args = ["generate", "scaffold", model];
|
|
145
|
+
if (functionsDir) {
|
|
146
|
+
args.push("--functions-dir", functionsDir);
|
|
147
|
+
}
|
|
148
|
+
if (apiDir) {
|
|
149
|
+
args.push("--api-dir", apiDir);
|
|
150
|
+
}
|
|
151
|
+
if (apiOnly) {
|
|
152
|
+
args.push("--api-only");
|
|
153
|
+
}
|
|
154
|
+
const response = await executeMachineCommand(args, runMachineCli);
|
|
155
|
+
return jsonTextContent(response.data);
|
|
156
|
+
},
|
|
157
|
+
},
|
|
158
|
+
];
|
|
159
|
+
}
|
|
160
|
+
function createSwallowKitMcpServer(runMachineCli = defaultMachineCliRunner) {
|
|
161
|
+
const server = new mcp_1.McpServer({
|
|
162
|
+
name: "swallowkit-mcp",
|
|
163
|
+
version: process.env.npm_package_version || "0.0.0",
|
|
164
|
+
});
|
|
165
|
+
for (const tool of buildSwallowKitToolDefinitions(runMachineCli)) {
|
|
166
|
+
server.registerTool(tool.name, {
|
|
167
|
+
description: tool.description,
|
|
168
|
+
inputSchema: tool.inputSchema,
|
|
169
|
+
}, tool.handler);
|
|
170
|
+
}
|
|
171
|
+
return server;
|
|
172
|
+
}
|
|
173
|
+
async function runMcpServer() {
|
|
174
|
+
const server = createSwallowKitMcpServer();
|
|
175
|
+
const transport = new stdio_1.StdioServerTransport();
|
|
176
|
+
await server.connect(transport);
|
|
177
|
+
}
|
|
178
|
+
if (require.main === module) {
|
|
179
|
+
void runMcpServer().catch((error) => {
|
|
180
|
+
console.error(error);
|
|
181
|
+
process.exitCode = 1;
|
|
182
|
+
});
|
|
183
|
+
}
|
|
184
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/mcp/index.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,11 +1,12 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "swallowkit",
|
|
3
|
-
"version": "1.0.0-beta.
|
|
3
|
+
"version": "1.0.0-beta.20",
|
|
4
4
|
"description": "Type-safe schema-driven development toolkit for Next.js applications on Azure",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"types": "dist/index.d.ts",
|
|
7
7
|
"bin": {
|
|
8
|
-
"swallowkit": "dist/cli/index.js"
|
|
8
|
+
"swallowkit": "dist/cli/index.js",
|
|
9
|
+
"swallowkit-mcp": "dist/mcp/index.js"
|
|
9
10
|
},
|
|
10
11
|
"files": [
|
|
11
12
|
"dist",
|
|
@@ -35,14 +36,15 @@
|
|
|
35
36
|
"license": "MIT",
|
|
36
37
|
"dependencies": {
|
|
37
38
|
"@azure/cosmos": "^4.9.2",
|
|
39
|
+
"@modelcontextprotocol/sdk": "^1.29.0",
|
|
38
40
|
"commander": "^11.0.0",
|
|
39
41
|
"cors": "^2.8.5",
|
|
40
42
|
"execa": "^8.0.1",
|
|
41
43
|
"express": "^4.18.0",
|
|
44
|
+
"jsonwebtoken": "^9.0.0",
|
|
42
45
|
"prompts": "^2.4.2",
|
|
43
46
|
"tsx": "^4.7.0",
|
|
44
|
-
"zod": "^3.25.76"
|
|
45
|
-
"jsonwebtoken": "^9.0.0"
|
|
47
|
+
"zod": "^3.25.76"
|
|
46
48
|
},
|
|
47
49
|
"devDependencies": {
|
|
48
50
|
"@types/cors": "^2.8.0",
|