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.
Files changed (75) hide show
  1. package/README.ja.md +36 -4
  2. package/README.md +36 -4
  3. package/dist/cli/commands/add-auth.d.ts.map +1 -1
  4. package/dist/cli/commands/add-auth.js +2 -0
  5. package/dist/cli/commands/add-auth.js.map +1 -1
  6. package/dist/cli/commands/add-connector.d.ts.map +1 -1
  7. package/dist/cli/commands/add-connector.js +2 -0
  8. package/dist/cli/commands/add-connector.js.map +1 -1
  9. package/dist/cli/commands/create-model.d.ts +0 -4
  10. package/dist/cli/commands/create-model.d.ts.map +1 -1
  11. package/dist/cli/commands/create-model.js +19 -145
  12. package/dist/cli/commands/create-model.js.map +1 -1
  13. package/dist/cli/commands/init.d.ts.map +1 -1
  14. package/dist/cli/commands/init.js +2 -0
  15. package/dist/cli/commands/init.js.map +1 -1
  16. package/dist/cli/commands/scaffold.d.ts.map +1 -1
  17. package/dist/cli/commands/scaffold.js +22 -10
  18. package/dist/cli/commands/scaffold.js.map +1 -1
  19. package/dist/cli/index.d.ts.map +1 -1
  20. package/dist/cli/index.js +5 -0
  21. package/dist/cli/index.js.map +1 -1
  22. package/dist/core/operations/create-model.d.ts +15 -0
  23. package/dist/core/operations/create-model.d.ts.map +1 -0
  24. package/dist/core/operations/create-model.js +171 -0
  25. package/dist/core/operations/create-model.js.map +1 -0
  26. package/dist/core/operations/runtime.d.ts +32 -0
  27. package/dist/core/operations/runtime.d.ts.map +1 -0
  28. package/dist/core/operations/runtime.js +225 -0
  29. package/dist/core/operations/runtime.js.map +1 -0
  30. package/dist/core/operations/scaffold-machine.d.ts +16 -0
  31. package/dist/core/operations/scaffold-machine.d.ts.map +1 -0
  32. package/dist/core/operations/scaffold-machine.js +63 -0
  33. package/dist/core/operations/scaffold-machine.js.map +1 -0
  34. package/dist/core/project/manifest.d.ts +92 -0
  35. package/dist/core/project/manifest.d.ts.map +1 -0
  36. package/dist/core/project/manifest.js +321 -0
  37. package/dist/core/project/manifest.js.map +1 -0
  38. package/dist/core/project/validation.d.ts +20 -0
  39. package/dist/core/project/validation.d.ts.map +1 -0
  40. package/dist/core/project/validation.js +204 -0
  41. package/dist/core/project/validation.js.map +1 -0
  42. package/dist/machine/contracts.d.ts +16 -0
  43. package/dist/machine/contracts.d.ts.map +1 -0
  44. package/dist/machine/contracts.js +3 -0
  45. package/dist/machine/contracts.js.map +1 -0
  46. package/dist/machine/errors.d.ts +11 -0
  47. package/dist/machine/errors.d.ts.map +1 -0
  48. package/dist/machine/errors.js +34 -0
  49. package/dist/machine/errors.js.map +1 -0
  50. package/dist/machine/index.d.ts +3 -0
  51. package/dist/machine/index.d.ts.map +1 -0
  52. package/dist/machine/index.js +156 -0
  53. package/dist/machine/index.js.map +1 -0
  54. package/dist/mcp/index.d.ts +25 -0
  55. package/dist/mcp/index.d.ts.map +1 -0
  56. package/dist/mcp/index.js +184 -0
  57. package/dist/mcp/index.js.map +1 -0
  58. package/package.json +6 -4
  59. package/src/__tests__/machine.test.ts +212 -0
  60. package/src/__tests__/mcp.test.ts +56 -0
  61. package/src/cli/commands/add-auth.ts +2 -0
  62. package/src/cli/commands/add-connector.ts +2 -0
  63. package/src/cli/commands/create-model.ts +19 -168
  64. package/src/cli/commands/init.ts +3 -0
  65. package/src/cli/commands/scaffold.ts +27 -10
  66. package/src/cli/index.ts +6 -0
  67. package/src/core/operations/create-model.ts +174 -0
  68. package/src/core/operations/runtime.ts +235 -0
  69. package/src/core/operations/scaffold-machine.ts +91 -0
  70. package/src/core/project/manifest.ts +402 -0
  71. package/src/core/project/validation.ts +221 -0
  72. package/src/machine/contracts.ts +17 -0
  73. package/src/machine/errors.ts +34 -0
  74. package/src/machine/index.ts +173 -0
  75. package/src/mcp/index.ts +185 -0
@@ -0,0 +1,171 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.createModelOperation = createModelOperation;
37
+ const fs = __importStar(require("fs"));
38
+ const path = __importStar(require("path"));
39
+ const config_1 = require("../config");
40
+ const model_parser_1 = require("../scaffold/model-parser");
41
+ const manifest_1 = require("../project/manifest");
42
+ function generateModelTemplate(modelName) {
43
+ const pascalName = (0, model_parser_1.toPascalCase)(modelName);
44
+ return `import { z } from 'zod/v4';
45
+
46
+ // ${pascalName} model (Zod official pattern: same name for value and type)
47
+ export const ${pascalName} = z.object({
48
+ id: z.string(),
49
+ name: z.string().min(1),
50
+ createdAt: z.string().optional(),
51
+ updatedAt: z.string().optional(),
52
+ });
53
+
54
+ export type ${pascalName} = z.infer<typeof ${pascalName}>;
55
+
56
+ // Display name for UI
57
+ export const displayName = '${pascalName}';
58
+ `;
59
+ }
60
+ function generateConnectorModelTemplate(modelName, connectorName, connectorType) {
61
+ const pascalName = (0, model_parser_1.toPascalCase)(modelName);
62
+ const kebabName = modelName.toLowerCase().replace(/[^a-z0-9]+/g, "-");
63
+ const pluralName = kebabName.endsWith("s") ? kebabName : `${kebabName}s`;
64
+ const schema = `import { z } from 'zod/v4';
65
+
66
+ // ${pascalName} model (Zod official pattern: same name for value and type)
67
+ export const ${pascalName} = z.object({
68
+ id: z.string(),
69
+ name: z.string().min(1),
70
+ createdAt: z.string().optional(),
71
+ updatedAt: z.string().optional(),
72
+ });
73
+
74
+ export type ${pascalName} = z.infer<typeof ${pascalName}>;
75
+
76
+ // Display name for UI
77
+ export const displayName = '${pascalName}';
78
+ `;
79
+ if (connectorType === "rdb") {
80
+ return `${schema}
81
+ // SwallowKit Connector Metadata
82
+ export const connectorConfig = {
83
+ connector: '${connectorName}',
84
+ operations: ['getAll', 'getById'] as const,
85
+ table: '${pluralName}',
86
+ idColumn: 'id',
87
+ };
88
+ `;
89
+ }
90
+ return `${schema}
91
+ // SwallowKit Connector Metadata
92
+ export const connectorConfig = {
93
+ connector: '${connectorName}',
94
+ operations: ['getAll', 'getById', 'create', 'update'] as const,
95
+ endpoints: {
96
+ getAll: 'GET /${pluralName}',
97
+ getById: 'GET /${pluralName}/{id}',
98
+ create: 'POST /${pluralName}',
99
+ update: 'PATCH /${pluralName}/{id}',
100
+ },
101
+ };
102
+ `;
103
+ }
104
+ function updateSharedIndex(kebabName, pascalName) {
105
+ const indexPath = path.join("shared", "index.ts");
106
+ if (!fs.existsSync(indexPath)) {
107
+ return false;
108
+ }
109
+ const content = fs.readFileSync(indexPath, "utf-8");
110
+ const exportLine = `export { ${pascalName} } from './models/${kebabName}';`;
111
+ if (content.includes(exportLine)) {
112
+ return false;
113
+ }
114
+ fs.appendFileSync(indexPath, `${exportLine}\n`);
115
+ return true;
116
+ }
117
+ async function createModelOperation(options) {
118
+ (0, config_1.ensureSwallowKitProject)("create-model");
119
+ let connectorType;
120
+ if (options.connector) {
121
+ const config = (0, config_1.loadConfig)();
122
+ const connectorDefinition = config.connectors?.[options.connector];
123
+ if (!connectorDefinition) {
124
+ throw new Error(`Connector '${options.connector}' not found in swallowkit.config.js. ` +
125
+ `Run 'swallowkit add-connector ${options.connector} --type=<rdb|api>' first.`);
126
+ }
127
+ connectorType = connectorDefinition.type;
128
+ }
129
+ const modelsDir = options.modelsDir || "shared/models";
130
+ if (!fs.existsSync(modelsDir)) {
131
+ fs.mkdirSync(modelsDir, { recursive: true });
132
+ }
133
+ const createdFiles = [];
134
+ const skippedFiles = [];
135
+ let updatedIndex = false;
136
+ for (const name of options.names) {
137
+ const kebabName = name.toLowerCase().replace(/[^a-z0-9]+/g, "-");
138
+ const filePath = path.join(modelsDir, `${kebabName}.ts`);
139
+ const pascalName = (0, model_parser_1.toPascalCase)(name);
140
+ if (fs.existsSync(filePath)) {
141
+ const overwriteMode = options.overwriteMode || "prompt";
142
+ const shouldOverwrite = overwriteMode === "always"
143
+ ? true
144
+ : overwriteMode === "never"
145
+ ? false
146
+ : options.confirmOverwrite
147
+ ? await options.confirmOverwrite(filePath)
148
+ : false;
149
+ if (!shouldOverwrite) {
150
+ skippedFiles.push(filePath.replace(/\\/g, "/"));
151
+ continue;
152
+ }
153
+ }
154
+ const content = options.connector && connectorType
155
+ ? generateConnectorModelTemplate(name, options.connector, connectorType)
156
+ : generateModelTemplate(name);
157
+ fs.writeFileSync(filePath, content, "utf-8");
158
+ createdFiles.push(filePath.replace(/\\/g, "/"));
159
+ if (updateSharedIndex(kebabName, pascalName)) {
160
+ updatedIndex = true;
161
+ }
162
+ }
163
+ await (0, manifest_1.syncProjectManifest)();
164
+ return {
165
+ createdFiles,
166
+ skippedFiles,
167
+ updatedIndex,
168
+ ...(connectorType ? { connectorType } : {}),
169
+ };
170
+ }
171
+ //# sourceMappingURL=create-model.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"create-model.js","sourceRoot":"","sources":["../../../src/core/operations/create-model.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,32 @@
1
+ export interface CapturedConsoleMessages {
2
+ logs: string[];
3
+ warnings: string[];
4
+ errors: string[];
5
+ }
6
+ export interface FileMutationSummary {
7
+ createdFiles: string[];
8
+ updatedFiles: string[];
9
+ appendedFiles: string[];
10
+ deletedFiles: string[];
11
+ createdDirectories: string[];
12
+ }
13
+ export declare class ProcessExitInterceptError extends Error {
14
+ readonly exitCode: number;
15
+ constructor(exitCode: number);
16
+ }
17
+ export declare function withWorkingDirectory<T>(directory: string, action: () => Promise<T>): Promise<T>;
18
+ export declare function captureConsoleMessages<T>(action: () => Promise<T>): Promise<{
19
+ result: T;
20
+ messages: CapturedConsoleMessages;
21
+ }>;
22
+ export declare function captureConsoleMessagesWithError<T>(action: () => Promise<T>): Promise<{
23
+ result?: T;
24
+ messages: CapturedConsoleMessages;
25
+ error?: unknown;
26
+ }>;
27
+ export declare function interceptProcessExit<T>(action: () => Promise<T>): Promise<T>;
28
+ export declare function trackFileMutations<T>(action: () => Promise<T>): Promise<{
29
+ result: T;
30
+ mutations: FileMutationSummary;
31
+ }>;
32
+ //# sourceMappingURL=runtime.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"runtime.d.ts","sourceRoot":"","sources":["../../../src/core/operations/runtime.ts"],"names":[],"mappings":"AAGA,MAAM,WAAW,uBAAuB;IACtC,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,MAAM,EAAE,MAAM,EAAE,CAAC;CAClB;AAED,MAAM,WAAW,mBAAmB;IAClC,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,aAAa,EAAE,MAAM,EAAE,CAAC;IACxB,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,kBAAkB,EAAE,MAAM,EAAE,CAAC;CAC9B;AAED,qBAAa,yBAA0B,SAAQ,KAAK;IAClD,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;gBAEd,QAAQ,EAAE,MAAM;CAK7B;AAgED,wBAAsB,oBAAoB,CAAC,CAAC,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CASrG;AAED,wBAAsB,sBAAsB,CAAC,CAAC,EAC5C,MAAM,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,GACvB,OAAO,CAAC;IAAE,MAAM,EAAE,CAAC,CAAC;IAAC,QAAQ,EAAE,uBAAuB,CAAA;CAAE,CAAC,CA6B3D;AAED,wBAAsB,+BAA+B,CAAC,CAAC,EACrD,MAAM,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,GACvB,OAAO,CAAC;IAAE,MAAM,CAAC,EAAE,CAAC,CAAC;IAAC,QAAQ,EAAE,uBAAuB,CAAC;IAAC,KAAK,CAAC,EAAE,OAAO,CAAA;CAAE,CAAC,CA8B7E;AAED,wBAAsB,oBAAoB,CAAC,CAAC,EAAE,MAAM,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAiBlF;AAED,wBAAsB,kBAAkB,CAAC,CAAC,EACxC,MAAM,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,GACvB,OAAO,CAAC;IAAE,MAAM,EAAE,CAAC,CAAC;IAAC,SAAS,EAAE,mBAAmB,CAAA;CAAE,CAAC,CA8CxD"}
@@ -0,0 +1,225 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.ProcessExitInterceptError = void 0;
37
+ exports.withWorkingDirectory = withWorkingDirectory;
38
+ exports.captureConsoleMessages = captureConsoleMessages;
39
+ exports.captureConsoleMessagesWithError = captureConsoleMessagesWithError;
40
+ exports.interceptProcessExit = interceptProcessExit;
41
+ exports.trackFileMutations = trackFileMutations;
42
+ const fs = __importStar(require("fs"));
43
+ const path = __importStar(require("path"));
44
+ class ProcessExitInterceptError extends Error {
45
+ constructor(exitCode) {
46
+ super(`Process exited with code ${exitCode}`);
47
+ this.name = "ProcessExitInterceptError";
48
+ this.exitCode = exitCode;
49
+ }
50
+ }
51
+ exports.ProcessExitInterceptError = ProcessExitInterceptError;
52
+ function formatConsoleArgs(args) {
53
+ return args
54
+ .map((arg) => {
55
+ if (typeof arg === "string") {
56
+ return arg;
57
+ }
58
+ if (arg instanceof Error) {
59
+ return arg.stack || arg.message;
60
+ }
61
+ try {
62
+ return JSON.stringify(arg);
63
+ }
64
+ catch {
65
+ return String(arg);
66
+ }
67
+ })
68
+ .join(" ");
69
+ }
70
+ function normalizePathForSummary(targetPath) {
71
+ const relative = path.relative(process.cwd(), targetPath);
72
+ return relative && !relative.startsWith("..") ? relative.replace(/\\/g, "/") : targetPath.replace(/\\/g, "/");
73
+ }
74
+ function snapshotFileSystem(rootDirectory) {
75
+ const snapshot = new Map();
76
+ const excludedDirectoryNames = new Set([".git", "node_modules"]);
77
+ function walk(currentDirectory) {
78
+ for (const entry of fs.readdirSync(currentDirectory, { withFileTypes: true })) {
79
+ if (entry.isDirectory() && excludedDirectoryNames.has(entry.name)) {
80
+ continue;
81
+ }
82
+ const entryPath = path.join(currentDirectory, entry.name);
83
+ const stats = fs.statSync(entryPath);
84
+ snapshot.set(entryPath, {
85
+ type: entry.isDirectory() ? "directory" : "file",
86
+ mtimeMs: stats.mtimeMs,
87
+ size: stats.size,
88
+ });
89
+ if (entry.isDirectory()) {
90
+ walk(entryPath);
91
+ }
92
+ }
93
+ }
94
+ if (fs.existsSync(rootDirectory)) {
95
+ walk(rootDirectory);
96
+ }
97
+ return snapshot;
98
+ }
99
+ async function withWorkingDirectory(directory, action) {
100
+ const originalDirectory = process.cwd();
101
+ process.chdir(directory);
102
+ try {
103
+ return await action();
104
+ }
105
+ finally {
106
+ process.chdir(originalDirectory);
107
+ }
108
+ }
109
+ async function captureConsoleMessages(action) {
110
+ const messages = {
111
+ logs: [],
112
+ warnings: [],
113
+ errors: [],
114
+ };
115
+ const originalLog = console.log;
116
+ const originalWarn = console.warn;
117
+ const originalError = console.error;
118
+ console.log = (...args) => {
119
+ messages.logs.push(formatConsoleArgs(args));
120
+ };
121
+ console.warn = (...args) => {
122
+ messages.warnings.push(formatConsoleArgs(args));
123
+ };
124
+ console.error = (...args) => {
125
+ messages.errors.push(formatConsoleArgs(args));
126
+ };
127
+ try {
128
+ const result = await action();
129
+ return { result, messages };
130
+ }
131
+ finally {
132
+ console.log = originalLog;
133
+ console.warn = originalWarn;
134
+ console.error = originalError;
135
+ }
136
+ }
137
+ async function captureConsoleMessagesWithError(action) {
138
+ const messages = {
139
+ logs: [],
140
+ warnings: [],
141
+ errors: [],
142
+ };
143
+ const originalLog = console.log;
144
+ const originalWarn = console.warn;
145
+ const originalError = console.error;
146
+ console.log = (...args) => {
147
+ messages.logs.push(formatConsoleArgs(args));
148
+ };
149
+ console.warn = (...args) => {
150
+ messages.warnings.push(formatConsoleArgs(args));
151
+ };
152
+ console.error = (...args) => {
153
+ messages.errors.push(formatConsoleArgs(args));
154
+ };
155
+ try {
156
+ return { result: await action(), messages };
157
+ }
158
+ catch (error) {
159
+ return { messages, error };
160
+ }
161
+ finally {
162
+ console.log = originalLog;
163
+ console.warn = originalWarn;
164
+ console.error = originalError;
165
+ }
166
+ }
167
+ async function interceptProcessExit(action) {
168
+ const originalExit = process.exit;
169
+ process.exit = ((code) => {
170
+ const normalizedCode = typeof code === "number"
171
+ ? code
172
+ : typeof process.exitCode === "number"
173
+ ? process.exitCode
174
+ : 1;
175
+ throw new ProcessExitInterceptError(normalizedCode);
176
+ });
177
+ try {
178
+ return await action();
179
+ }
180
+ finally {
181
+ process.exit = originalExit;
182
+ }
183
+ }
184
+ async function trackFileMutations(action) {
185
+ const rootDirectory = process.cwd();
186
+ const before = snapshotFileSystem(rootDirectory);
187
+ const result = await action();
188
+ const after = snapshotFileSystem(rootDirectory);
189
+ const createdFiles = new Set();
190
+ const updatedFiles = new Set();
191
+ const deletedFiles = new Set();
192
+ const createdDirectories = new Set();
193
+ for (const [entryPath, afterEntry] of after.entries()) {
194
+ const beforeEntry = before.get(entryPath);
195
+ if (!beforeEntry) {
196
+ if (afterEntry.type === "directory") {
197
+ createdDirectories.add(normalizePathForSummary(entryPath));
198
+ }
199
+ else {
200
+ createdFiles.add(normalizePathForSummary(entryPath));
201
+ }
202
+ continue;
203
+ }
204
+ if (afterEntry.type === "file" &&
205
+ (beforeEntry.mtimeMs !== afterEntry.mtimeMs || beforeEntry.size !== afterEntry.size)) {
206
+ updatedFiles.add(normalizePathForSummary(entryPath));
207
+ }
208
+ }
209
+ for (const [entryPath, beforeEntry] of before.entries()) {
210
+ if (!after.has(entryPath) && beforeEntry.type === "file") {
211
+ deletedFiles.add(normalizePathForSummary(entryPath));
212
+ }
213
+ }
214
+ return {
215
+ result,
216
+ mutations: {
217
+ createdFiles: Array.from(createdFiles).sort(),
218
+ updatedFiles: Array.from(updatedFiles).sort(),
219
+ appendedFiles: [],
220
+ deletedFiles: Array.from(deletedFiles).sort(),
221
+ createdDirectories: Array.from(createdDirectories).sort(),
222
+ },
223
+ };
224
+ }
225
+ //# sourceMappingURL=runtime.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"runtime.js","sourceRoot":"","sources":["../../../src/core/operations/runtime.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,16 @@
1
+ export interface MachineScaffoldOperationOptions {
2
+ model: string;
3
+ functionsDir?: string;
4
+ apiDir?: string;
5
+ apiOnly?: boolean;
6
+ }
7
+ export interface MachineScaffoldOperationResult {
8
+ createdFiles: string[];
9
+ updatedFiles: string[];
10
+ appendedFiles: string[];
11
+ deletedFiles: string[];
12
+ createdDirectories: string[];
13
+ diagnostics: string[];
14
+ }
15
+ export declare function runMachineScaffoldOperation(options: MachineScaffoldOperationOptions): Promise<MachineScaffoldOperationResult>;
16
+ //# sourceMappingURL=scaffold-machine.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scaffold-machine.d.ts","sourceRoot":"","sources":["../../../src/core/operations/scaffold-machine.ts"],"names":[],"mappings":"AAQA,MAAM,WAAW,+BAA+B;IAC9C,KAAK,EAAE,MAAM,CAAC;IACd,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,MAAM,WAAW,8BAA8B;IAC7C,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,aAAa,EAAE,MAAM,EAAE,CAAC;IACxB,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,kBAAkB,EAAE,MAAM,EAAE,CAAC;IAC7B,WAAW,EAAE,MAAM,EAAE,CAAC;CACvB;AAqBD,wBAAsB,2BAA2B,CAC/C,OAAO,EAAE,+BAA+B,GACvC,OAAO,CAAC,8BAA8B,CAAC,CA6CzC"}
@@ -0,0 +1,63 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.runMachineScaffoldOperation = runMachineScaffoldOperation;
4
+ const scaffold_1 = require("../../cli/commands/scaffold");
5
+ const runtime_1 = require("./runtime");
6
+ function deriveErrorMessage(messages) {
7
+ const errorText = messages.errors[messages.errors.length - 1];
8
+ if (errorText) {
9
+ return errorText.replace(/^\s*❌\s*/, "").trim();
10
+ }
11
+ const warningText = messages.warnings[messages.warnings.length - 1];
12
+ if (warningText) {
13
+ return warningText.trim();
14
+ }
15
+ const logText = messages.logs[messages.logs.length - 1];
16
+ if (logText) {
17
+ return logText.trim();
18
+ }
19
+ return "Scaffold failed.";
20
+ }
21
+ async function runMachineScaffoldOperation(options) {
22
+ const originalMachineOutput = process.env.SWALLOWKIT_MACHINE_OUTPUT;
23
+ process.env.SWALLOWKIT_MACHINE_OUTPUT = "1";
24
+ try {
25
+ const tracked = await (0, runtime_1.trackFileMutations)(async () => {
26
+ const captured = await (0, runtime_1.captureConsoleMessagesWithError)(async () => {
27
+ await (0, runtime_1.interceptProcessExit)(async () => {
28
+ await (0, scaffold_1.scaffoldCommand)(options);
29
+ });
30
+ });
31
+ if (captured.error) {
32
+ if (captured.error instanceof runtime_1.ProcessExitInterceptError) {
33
+ throw new Error(deriveErrorMessage(captured.messages));
34
+ }
35
+ if (captured.error instanceof Error) {
36
+ throw captured.error;
37
+ }
38
+ throw new Error(deriveErrorMessage(captured.messages));
39
+ }
40
+ return captured.messages;
41
+ });
42
+ return {
43
+ createdFiles: tracked.mutations.createdFiles,
44
+ updatedFiles: tracked.mutations.updatedFiles,
45
+ appendedFiles: tracked.mutations.appendedFiles,
46
+ deletedFiles: tracked.mutations.deletedFiles,
47
+ createdDirectories: tracked.mutations.createdDirectories,
48
+ diagnostics: [
49
+ ...tracked.result.warnings.map((warning) => `warning:${warning}`),
50
+ ...tracked.result.errors.map((error) => `error:${error}`),
51
+ ],
52
+ };
53
+ }
54
+ finally {
55
+ if (originalMachineOutput === undefined) {
56
+ delete process.env.SWALLOWKIT_MACHINE_OUTPUT;
57
+ }
58
+ else {
59
+ process.env.SWALLOWKIT_MACHINE_OUTPUT = originalMachineOutput;
60
+ }
61
+ }
62
+ }
63
+ //# sourceMappingURL=scaffold-machine.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scaffold-machine.js","sourceRoot":"","sources":["../../../src/core/operations/scaffold-machine.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,92 @@
1
+ import { AuthConfig, BackendLanguage, ConnectorDefinition, ModelAuthPolicy, ModelConnectorConfig } from "../../types";
2
+ export declare const SWALLOWKIT_MANIFEST_PATH: string;
3
+ export declare const SWALLOWKIT_MANIFEST_VERSION = 1;
4
+ export interface ProjectManifestField {
5
+ name: string;
6
+ type: string;
7
+ isOptional: boolean;
8
+ isArray: boolean;
9
+ }
10
+ export interface ProjectManifestEntity {
11
+ name: string;
12
+ displayName: string;
13
+ schemaName: string;
14
+ filePath: string;
15
+ partitionKey: string;
16
+ hasId: boolean;
17
+ hasCreatedAt: boolean;
18
+ hasUpdatedAt: boolean;
19
+ connectorConfig?: ModelConnectorConfig;
20
+ authPolicy?: ModelAuthPolicy;
21
+ nestedModels: string[];
22
+ fields: ProjectManifestField[];
23
+ }
24
+ export interface ProjectManifestRoute {
25
+ name: string;
26
+ kind: "entity" | "system";
27
+ surface: "bff" | "functions";
28
+ entityName?: string;
29
+ methods: string[];
30
+ publicPath: string;
31
+ filePath: string;
32
+ exists: boolean;
33
+ }
34
+ export interface ProjectManifestModule {
35
+ name: string;
36
+ kind: "shared-models" | "bff" | "functions" | "ui" | "infrastructure" | "auth";
37
+ rootPath: string;
38
+ exists: boolean;
39
+ }
40
+ export interface ProjectManifestArtifacts {
41
+ callFunctionHelperPath: string;
42
+ callFunctionHelperExists: boolean;
43
+ openApiSpecs: string[];
44
+ generatedSchemaDirectories: string[];
45
+ proxyPath: string;
46
+ proxyExists: boolean;
47
+ loginPagePath: string;
48
+ loginPageExists: boolean;
49
+ authContextPath: string;
50
+ authContextExists: boolean;
51
+ }
52
+ export interface ProjectManifestArchitecture {
53
+ pattern: string;
54
+ backendLanguage: BackendLanguage;
55
+ layerBoundaries: string[];
56
+ hasSharedWorkspace: boolean;
57
+ hasConnectors: boolean;
58
+ hasAuth: boolean;
59
+ }
60
+ export interface ProjectManifest {
61
+ version: number;
62
+ generatedAt: string;
63
+ configPath: string | null;
64
+ backendLanguage: BackendLanguage;
65
+ configValidation: {
66
+ valid: boolean;
67
+ errors: string[];
68
+ };
69
+ connectors: Array<{
70
+ name: string;
71
+ definition: ConnectorDefinition;
72
+ }>;
73
+ auth: AuthConfig | null;
74
+ entities: ProjectManifestEntity[];
75
+ routes: ProjectManifestRoute[];
76
+ modules: ProjectManifestModule[];
77
+ artifacts: ProjectManifestArtifacts;
78
+ architecture: ProjectManifestArchitecture;
79
+ }
80
+ export interface LoadedProjectManifest {
81
+ manifest: ProjectManifest;
82
+ source: "file" | "reconstructed";
83
+ diagnostics: string[];
84
+ }
85
+ export declare function buildProjectManifest(projectRoot?: string): Promise<{
86
+ manifest: ProjectManifest;
87
+ diagnostics: string[];
88
+ }>;
89
+ export declare function readProjectManifest(projectRoot?: string): ProjectManifest | null;
90
+ export declare function loadProjectManifest(projectRoot?: string): Promise<LoadedProjectManifest>;
91
+ export declare function syncProjectManifest(projectRoot?: string): Promise<ProjectManifest>;
92
+ //# sourceMappingURL=manifest.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"manifest.d.ts","sourceRoot":"","sources":["../../../src/core/project/manifest.ts"],"names":[],"mappings":"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"}