swallowkit 1.0.0-beta.8 → 1.0.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 (272) hide show
  1. package/README.ja.md +87 -181
  2. package/README.md +87 -238
  3. package/dist/__tests__/fixtures.d.ts +12 -0
  4. package/dist/__tests__/fixtures.d.ts.map +1 -1
  5. package/dist/__tests__/fixtures.js +101 -0
  6. package/dist/__tests__/fixtures.js.map +1 -1
  7. package/dist/cli/commands/add-auth.d.ts +15 -0
  8. package/dist/cli/commands/add-auth.d.ts.map +1 -0
  9. package/dist/cli/commands/add-auth.js +790 -0
  10. package/dist/cli/commands/add-auth.js.map +1 -0
  11. package/dist/cli/commands/add-connector.d.ts +20 -0
  12. package/dist/cli/commands/add-connector.d.ts.map +1 -0
  13. package/dist/cli/commands/add-connector.js +164 -0
  14. package/dist/cli/commands/add-connector.js.map +1 -0
  15. package/dist/cli/commands/cosmos-worktree-isolation.d.ts +25 -0
  16. package/dist/cli/commands/cosmos-worktree-isolation.d.ts.map +1 -0
  17. package/dist/cli/commands/cosmos-worktree-isolation.js +124 -0
  18. package/dist/cli/commands/cosmos-worktree-isolation.js.map +1 -0
  19. package/dist/cli/commands/create-model.d.ts +1 -4
  20. package/dist/cli/commands/create-model.d.ts.map +1 -1
  21. package/dist/cli/commands/create-model.js +20 -82
  22. package/dist/cli/commands/create-model.js.map +1 -1
  23. package/dist/cli/commands/dev-seeds.d.ts +27 -0
  24. package/dist/cli/commands/dev-seeds.d.ts.map +1 -1
  25. package/dist/cli/commands/dev-seeds.js +188 -6
  26. package/dist/cli/commands/dev-seeds.js.map +1 -1
  27. package/dist/cli/commands/dev.d.ts +30 -0
  28. package/dist/cli/commands/dev.d.ts.map +1 -1
  29. package/dist/cli/commands/dev.js +495 -129
  30. package/dist/cli/commands/dev.js.map +1 -1
  31. package/dist/cli/commands/init.d.ts +70 -0
  32. package/dist/cli/commands/init.d.ts.map +1 -1
  33. package/dist/cli/commands/init.js +797 -768
  34. package/dist/cli/commands/init.js.map +1 -1
  35. package/dist/cli/commands/scaffold.d.ts +24 -3
  36. package/dist/cli/commands/scaffold.d.ts.map +1 -1
  37. package/dist/cli/commands/scaffold.js +408 -189
  38. package/dist/cli/commands/scaffold.js.map +1 -1
  39. package/dist/cli/index.d.ts +5 -1
  40. package/dist/cli/index.d.ts.map +1 -1
  41. package/dist/cli/index.js +335 -58
  42. package/dist/cli/index.js.map +1 -1
  43. package/dist/core/config.d.ts +13 -3
  44. package/dist/core/config.d.ts.map +1 -1
  45. package/dist/core/config.js +151 -8
  46. package/dist/core/config.js.map +1 -1
  47. package/dist/core/mock/connector-mock-server.d.ts +101 -0
  48. package/dist/core/mock/connector-mock-server.d.ts.map +1 -0
  49. package/dist/core/mock/connector-mock-server.js +480 -0
  50. package/dist/core/mock/connector-mock-server.js.map +1 -0
  51. package/dist/core/mock/zod-mock-generator.d.ts +14 -0
  52. package/dist/core/mock/zod-mock-generator.d.ts.map +1 -0
  53. package/dist/core/mock/zod-mock-generator.js +163 -0
  54. package/dist/core/mock/zod-mock-generator.js.map +1 -0
  55. package/dist/core/operations/auth-operations.d.ts +61 -0
  56. package/dist/core/operations/auth-operations.d.ts.map +1 -0
  57. package/dist/core/operations/auth-operations.js +272 -0
  58. package/dist/core/operations/auth-operations.js.map +1 -0
  59. package/dist/core/operations/create-model.d.ts +15 -0
  60. package/dist/core/operations/create-model.d.ts.map +1 -0
  61. package/dist/core/operations/create-model.js +185 -0
  62. package/dist/core/operations/create-model.js.map +1 -0
  63. package/dist/core/operations/file-session.d.ts +56 -0
  64. package/dist/core/operations/file-session.d.ts.map +1 -0
  65. package/dist/core/operations/file-session.js +203 -0
  66. package/dist/core/operations/file-session.js.map +1 -0
  67. package/dist/core/operations/provision-operations.d.ts +52 -0
  68. package/dist/core/operations/provision-operations.d.ts.map +1 -0
  69. package/dist/core/operations/provision-operations.js +211 -0
  70. package/dist/core/operations/provision-operations.js.map +1 -0
  71. package/dist/core/operations/runtime.d.ts +37 -0
  72. package/dist/core/operations/runtime.d.ts.map +1 -0
  73. package/dist/core/operations/runtime.js +248 -0
  74. package/dist/core/operations/runtime.js.map +1 -0
  75. package/dist/core/operations/scaffold-apply.d.ts +21 -0
  76. package/dist/core/operations/scaffold-apply.d.ts.map +1 -0
  77. package/dist/core/operations/scaffold-apply.js +57 -0
  78. package/dist/core/operations/scaffold-apply.js.map +1 -0
  79. package/dist/core/operations/scaffold-machine.d.ts +16 -0
  80. package/dist/core/operations/scaffold-machine.d.ts.map +1 -0
  81. package/dist/core/operations/scaffold-machine.js +51 -0
  82. package/dist/core/operations/scaffold-machine.js.map +1 -0
  83. package/dist/core/operations/scaffold-plan.d.ts +43 -0
  84. package/dist/core/operations/scaffold-plan.d.ts.map +1 -0
  85. package/dist/core/operations/scaffold-plan.js +187 -0
  86. package/dist/core/operations/scaffold-plan.js.map +1 -0
  87. package/dist/core/project/agent-instructions.d.ts +29 -0
  88. package/dist/core/project/agent-instructions.d.ts.map +1 -0
  89. package/dist/core/project/agent-instructions.js +160 -0
  90. package/dist/core/project/agent-instructions.js.map +1 -0
  91. package/dist/core/project/artifacts.d.ts +58 -0
  92. package/dist/core/project/artifacts.d.ts.map +1 -0
  93. package/dist/core/project/artifacts.js +179 -0
  94. package/dist/core/project/artifacts.js.map +1 -0
  95. package/dist/core/project/boundaries.d.ts +50 -0
  96. package/dist/core/project/boundaries.d.ts.map +1 -0
  97. package/dist/core/project/boundaries.js +117 -0
  98. package/dist/core/project/boundaries.js.map +1 -0
  99. package/dist/core/project/capabilities.d.ts +58 -0
  100. package/dist/core/project/capabilities.d.ts.map +1 -0
  101. package/dist/core/project/capabilities.js +135 -0
  102. package/dist/core/project/capabilities.js.map +1 -0
  103. package/dist/core/project/drift.d.ts +29 -0
  104. package/dist/core/project/drift.d.ts.map +1 -0
  105. package/dist/core/project/drift.js +188 -0
  106. package/dist/core/project/drift.js.map +1 -0
  107. package/dist/core/project/infra.d.ts +49 -0
  108. package/dist/core/project/infra.d.ts.map +1 -0
  109. package/dist/core/project/infra.js +167 -0
  110. package/dist/core/project/infra.js.map +1 -0
  111. package/dist/core/project/manifest.d.ts +92 -0
  112. package/dist/core/project/manifest.d.ts.map +1 -0
  113. package/dist/core/project/manifest.js +321 -0
  114. package/dist/core/project/manifest.js.map +1 -0
  115. package/dist/core/project/state.d.ts +15 -0
  116. package/dist/core/project/state.d.ts.map +1 -0
  117. package/dist/core/project/state.js +106 -0
  118. package/dist/core/project/state.js.map +1 -0
  119. package/dist/core/project/validation.d.ts +20 -0
  120. package/dist/core/project/validation.d.ts.map +1 -0
  121. package/dist/core/project/validation.js +274 -0
  122. package/dist/core/project/validation.js.map +1 -0
  123. package/dist/core/project/workflows.d.ts +43 -0
  124. package/dist/core/project/workflows.d.ts.map +1 -0
  125. package/dist/core/project/workflows.js +299 -0
  126. package/dist/core/project/workflows.js.map +1 -0
  127. package/dist/core/scaffold/auth-generator.d.ts +63 -0
  128. package/dist/core/scaffold/auth-generator.d.ts.map +1 -0
  129. package/dist/core/scaffold/auth-generator.js +1774 -0
  130. package/dist/core/scaffold/auth-generator.js.map +1 -0
  131. package/dist/core/scaffold/connector-functions-generator.d.ts +41 -0
  132. package/dist/core/scaffold/connector-functions-generator.d.ts.map +1 -0
  133. package/dist/core/scaffold/connector-functions-generator.js +1029 -0
  134. package/dist/core/scaffold/connector-functions-generator.js.map +1 -0
  135. package/dist/core/scaffold/functions-generator.d.ts +4 -3
  136. package/dist/core/scaffold/functions-generator.d.ts.map +1 -1
  137. package/dist/core/scaffold/functions-generator.js +405 -134
  138. package/dist/core/scaffold/functions-generator.js.map +1 -1
  139. package/dist/core/scaffold/model-parser.d.ts +20 -0
  140. package/dist/core/scaffold/model-parser.d.ts.map +1 -1
  141. package/dist/core/scaffold/model-parser.js +229 -78
  142. package/dist/core/scaffold/model-parser.js.map +1 -1
  143. package/dist/core/scaffold/native-schema-generator.d.ts +19 -0
  144. package/dist/core/scaffold/native-schema-generator.d.ts.map +1 -0
  145. package/dist/core/scaffold/native-schema-generator.js +753 -0
  146. package/dist/core/scaffold/native-schema-generator.js.map +1 -0
  147. package/dist/core/scaffold/nextjs-generator.d.ts +8 -0
  148. package/dist/core/scaffold/nextjs-generator.d.ts.map +1 -1
  149. package/dist/core/scaffold/nextjs-generator.js +152 -8
  150. package/dist/core/scaffold/nextjs-generator.js.map +1 -1
  151. package/dist/core/scaffold/ui-generator.d.ts +17 -4
  152. package/dist/core/scaffold/ui-generator.d.ts.map +1 -1
  153. package/dist/core/scaffold/ui-generator.js +174 -34
  154. package/dist/core/scaffold/ui-generator.js.map +1 -1
  155. package/dist/core/verify/index.d.ts +69 -0
  156. package/dist/core/verify/index.d.ts.map +1 -0
  157. package/dist/core/verify/index.js +412 -0
  158. package/dist/core/verify/index.js.map +1 -0
  159. package/dist/machine/contracts.d.ts +24 -0
  160. package/dist/machine/contracts.d.ts.map +1 -0
  161. package/dist/machine/contracts.js +3 -0
  162. package/dist/machine/contracts.js.map +1 -0
  163. package/dist/machine/errors.d.ts +14 -0
  164. package/dist/machine/errors.d.ts.map +1 -0
  165. package/dist/machine/errors.js +42 -0
  166. package/dist/machine/errors.js.map +1 -0
  167. package/dist/machine/index.d.ts +3 -0
  168. package/dist/machine/index.d.ts.map +1 -0
  169. package/dist/machine/index.js +566 -0
  170. package/dist/machine/index.js.map +1 -0
  171. package/dist/mcp/index.d.ts +25 -0
  172. package/dist/mcp/index.d.ts.map +1 -0
  173. package/dist/mcp/index.js +425 -0
  174. package/dist/mcp/index.js.map +1 -0
  175. package/dist/types/index.d.ts +105 -0
  176. package/dist/types/index.d.ts.map +1 -1
  177. package/dist/utils/package-manager.d.ts +7 -11
  178. package/dist/utils/package-manager.d.ts.map +1 -1
  179. package/dist/utils/package-manager.js +42 -17
  180. package/dist/utils/package-manager.js.map +1 -1
  181. package/dist/utils/python-uv.d.ts +21 -0
  182. package/dist/utils/python-uv.d.ts.map +1 -0
  183. package/dist/utils/python-uv.js +111 -0
  184. package/dist/utils/python-uv.js.map +1 -0
  185. package/dist/version.d.ts +2 -0
  186. package/dist/version.d.ts.map +1 -0
  187. package/dist/version.js +49 -0
  188. package/dist/version.js.map +1 -0
  189. package/package.json +15 -17
  190. package/src/__tests__/__snapshots__/functions-generator.test.ts.snap +716 -22
  191. package/src/__tests__/__snapshots__/nextjs-generator.test.ts.snap +19 -7
  192. package/src/__tests__/__snapshots__/ui-generator.test.ts.snap +20 -12
  193. package/src/__tests__/agent-instructions.test.ts +237 -0
  194. package/src/__tests__/agent-loop-phase34.test.ts +513 -0
  195. package/src/__tests__/auth.test.ts +770 -0
  196. package/src/__tests__/bff-swa-auth.test.ts +275 -0
  197. package/src/__tests__/config.test.ts +176 -3
  198. package/src/__tests__/connector-functions-generator.test.ts +288 -0
  199. package/src/__tests__/connector-mock-server.test.ts +459 -0
  200. package/src/__tests__/connector-model-bff.test.ts +162 -0
  201. package/src/__tests__/cosmos-worktree-isolation.test.ts +149 -0
  202. package/src/__tests__/dev-seeds.test.ts +124 -0
  203. package/src/__tests__/dev.test.ts +254 -0
  204. package/src/__tests__/file-session.test.ts +98 -0
  205. package/src/__tests__/fixtures.ts +101 -0
  206. package/src/__tests__/functions-generator.test.ts +137 -1
  207. package/src/__tests__/init.test.ts +386 -1
  208. package/src/__tests__/jest-globals.d.ts +8 -0
  209. package/src/__tests__/machine.test.ts +371 -0
  210. package/src/__tests__/mcp.test.ts +253 -0
  211. package/src/__tests__/model-parser.test.ts +142 -0
  212. package/src/__tests__/multi-auth.test.ts +160 -0
  213. package/src/__tests__/nextjs-generator.test.ts +8 -0
  214. package/src/__tests__/package-manager.test.ts +59 -4
  215. package/src/__tests__/plan-apply.test.ts +499 -0
  216. package/src/__tests__/python-uv.test.ts +48 -0
  217. package/src/__tests__/scaffold.test.ts +287 -24
  218. package/src/__tests__/tsconfig.json +15 -0
  219. package/src/__tests__/ui-generator.test.ts +104 -0
  220. package/src/__tests__/zod-mock-generator.test.ts +132 -0
  221. package/src/cli/commands/add-auth.ts +853 -0
  222. package/src/cli/commands/add-connector.ts +159 -0
  223. package/src/cli/commands/cosmos-worktree-isolation.ts +130 -0
  224. package/src/cli/commands/create-model.ts +21 -100
  225. package/src/cli/commands/dev-seeds.ts +278 -7
  226. package/src/cli/commands/dev.ts +607 -160
  227. package/src/cli/commands/init.ts +880 -808
  228. package/src/cli/commands/scaffold.ts +531 -236
  229. package/src/cli/index.ts +338 -60
  230. package/src/core/config.ts +145 -9
  231. package/src/core/mock/connector-mock-server.ts +555 -0
  232. package/src/core/mock/zod-mock-generator.ts +205 -0
  233. package/src/core/operations/auth-operations.ts +360 -0
  234. package/src/core/operations/create-model.ts +191 -0
  235. package/src/core/operations/file-session.ts +222 -0
  236. package/src/core/operations/provision-operations.ts +297 -0
  237. package/src/core/operations/runtime.ts +258 -0
  238. package/src/core/operations/scaffold-apply.ts +106 -0
  239. package/src/core/operations/scaffold-machine.ts +77 -0
  240. package/src/core/operations/scaffold-plan.ts +215 -0
  241. package/src/core/project/agent-instructions.ts +167 -0
  242. package/src/core/project/agent-templates/AGENTS.md +504 -0
  243. package/src/core/project/agent-templates/CLAUDE.md +31 -0
  244. package/src/core/project/agent-templates/azure-functions.instructions.md +22 -0
  245. package/src/core/project/agent-templates/bff-routes.instructions.md +18 -0
  246. package/src/core/project/agent-templates/copilot-instructions.md +27 -0
  247. package/src/core/project/agent-templates/shared-models.instructions.md +72 -0
  248. package/src/core/project/artifacts.ts +205 -0
  249. package/src/core/project/boundaries.ts +170 -0
  250. package/src/core/project/capabilities.ts +193 -0
  251. package/src/core/project/drift.ts +202 -0
  252. package/src/core/project/infra.ts +196 -0
  253. package/src/core/project/manifest.ts +402 -0
  254. package/src/core/project/state.ts +77 -0
  255. package/src/core/project/validation.ts +295 -0
  256. package/src/core/project/workflows.ts +295 -0
  257. package/src/core/scaffold/auth-generator.ts +1824 -0
  258. package/src/core/scaffold/connector-functions-generator.ts +1133 -0
  259. package/src/core/scaffold/functions-generator.ts +432 -134
  260. package/src/core/scaffold/model-parser.ts +244 -90
  261. package/src/core/scaffold/native-schema-generator.ts +904 -0
  262. package/src/core/scaffold/nextjs-generator.ts +174 -9
  263. package/src/core/scaffold/ui-generator.ts +191 -36
  264. package/src/core/verify/index.ts +468 -0
  265. package/src/machine/contracts.ts +33 -0
  266. package/src/machine/errors.ts +45 -0
  267. package/src/machine/index.ts +690 -0
  268. package/src/mcp/index.ts +423 -0
  269. package/src/types/index.ts +137 -0
  270. package/src/utils/package-manager.ts +41 -19
  271. package/src/utils/python-uv.ts +96 -0
  272. package/src/version.ts +13 -0
@@ -0,0 +1,566 @@
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 config_1 = require("../core/config");
7
+ const create_model_1 = require("../core/operations/create-model");
8
+ const scaffold_apply_1 = require("../core/operations/scaffold-apply");
9
+ const auth_operations_1 = require("../core/operations/auth-operations");
10
+ const provision_operations_1 = require("../core/operations/provision-operations");
11
+ const runtime_1 = require("../core/operations/runtime");
12
+ const infra_1 = require("../core/project/infra");
13
+ const scaffold_machine_1 = require("../core/operations/scaffold-machine");
14
+ const scaffold_plan_1 = require("../core/operations/scaffold-plan");
15
+ const artifacts_1 = require("../core/project/artifacts");
16
+ const boundaries_1 = require("../core/project/boundaries");
17
+ const capabilities_1 = require("../core/project/capabilities");
18
+ const drift_1 = require("../core/project/drift");
19
+ const manifest_1 = require("../core/project/manifest");
20
+ const state_1 = require("../core/project/state");
21
+ const validation_1 = require("../core/project/validation");
22
+ const verify_1 = require("../core/verify");
23
+ const errors_1 = require("./errors");
24
+ /** 最終 JSON envelope 専用の stdout writer。runMachineCli 実行中はこれ以外の stdout 書き込みを stderr へ逃がす。 */
25
+ let machineEnvelopeWrite = null;
26
+ function writeMachineResponse(response) {
27
+ const payload = `${JSON.stringify(response, null, 2)}\n`;
28
+ if (machineEnvelopeWrite) {
29
+ machineEnvelopeWrite(payload);
30
+ }
31
+ else {
32
+ process.stdout.write(payload);
33
+ }
34
+ }
35
+ function writeMachineSuccess(command, data, meta) {
36
+ const response = {
37
+ ok: true,
38
+ command,
39
+ status: meta?.status ?? "complete",
40
+ ...(meta?.nextActions && meta.nextActions.length > 0 ? { nextActions: meta.nextActions } : {}),
41
+ data,
42
+ };
43
+ writeMachineResponse(response);
44
+ }
45
+ function writeMachineError(command, error) {
46
+ const response = {
47
+ ok: false,
48
+ command,
49
+ status: (0, errors_1.resolveMachineErrorStatus)(error),
50
+ error: (0, errors_1.toMachineError)(error),
51
+ };
52
+ writeMachineResponse(response);
53
+ }
54
+ /** 書き込み系操作の前提チェック。プロジェクト外なら明確な blocked エラーを返す。 */
55
+ function ensureProjectForMachine() {
56
+ if (!(0, config_1.isSwallowKitProject)()) {
57
+ throw new errors_1.MachineCommandError("not-a-swallowkit-project", `No SwallowKit project found in ${process.cwd()}. Expected swallowkit.config.js, swallowkit.config.json, or .swallowkitrc.json in the current directory. Run this command from the project root, or create a project with "swallowkit init".`, { cwd: process.cwd() }, "blocked");
58
+ }
59
+ }
60
+ /**
61
+ * レガシーな人間向けコードパスが process.exit を直接呼んでも、
62
+ * JSON envelope なしにプロセスが死なないようにする安全網。
63
+ * console.error の出力を集めてエラーメッセージとして返す。
64
+ */
65
+ async function runActionWithExitGuard(action) {
66
+ const capturedErrors = [];
67
+ const originalError = console.error;
68
+ console.error = (...args) => {
69
+ const text = args
70
+ .map((arg) => (typeof arg === "string" ? arg : arg instanceof Error ? arg.stack || arg.message : JSON.stringify(arg)))
71
+ .join(" ");
72
+ capturedErrors.push(text);
73
+ process.stderr.write(`${text}\n`);
74
+ };
75
+ const originalExit = process.exit;
76
+ process.exit = ((code) => {
77
+ const normalized = typeof code === "number" ? code : typeof process.exitCode === "number" ? process.exitCode : 1;
78
+ throw new runtime_1.ProcessExitInterceptError(normalized);
79
+ });
80
+ try {
81
+ return await action();
82
+ }
83
+ catch (error) {
84
+ if (error instanceof runtime_1.ProcessExitInterceptError) {
85
+ const message = capturedErrors
86
+ .map((entry) => entry.replace(/[❌💡]\s*/gu, "").trim())
87
+ .filter((entry) => entry.length > 0)
88
+ .join("\n");
89
+ throw new errors_1.MachineCommandError("operation-aborted", message || `Operation aborted with exit code ${error.exitCode}.`, undefined, "failed");
90
+ }
91
+ throw error;
92
+ }
93
+ finally {
94
+ console.error = originalError;
95
+ process.exit = originalExit;
96
+ }
97
+ }
98
+ async function handleMachineAction(command, action, meta) {
99
+ try {
100
+ const data = await runActionWithExitGuard(action);
101
+ writeMachineSuccess(command, data, meta?.(data));
102
+ }
103
+ catch (error) {
104
+ writeMachineError(command, error);
105
+ process.exitCode = 1;
106
+ }
107
+ }
108
+ function createMachineProgram() {
109
+ const program = new commander_1.Command();
110
+ program
111
+ .name("swallowkit machine")
112
+ .description("SwallowKit machine-readable CLI for AI and MCP integrations")
113
+ .showHelpAfterError(false);
114
+ const inspect = new commander_1.Command("inspect");
115
+ inspect
116
+ .command("project")
117
+ .description("Inspect SwallowKit project metadata")
118
+ .action(async () => {
119
+ await handleMachineAction("inspect-project", async () => {
120
+ const loaded = await (0, manifest_1.loadProjectManifest)();
121
+ return {
122
+ manifestSource: loaded.source,
123
+ diagnostics: loaded.diagnostics,
124
+ manifest: loaded.manifest,
125
+ };
126
+ });
127
+ });
128
+ inspect
129
+ .command("entities")
130
+ .description("Inspect SwallowKit entities")
131
+ .action(async () => {
132
+ await handleMachineAction("inspect-entities", async () => {
133
+ const loaded = await (0, manifest_1.loadProjectManifest)();
134
+ return {
135
+ manifestSource: loaded.source,
136
+ diagnostics: loaded.diagnostics,
137
+ entities: loaded.manifest.entities,
138
+ };
139
+ });
140
+ });
141
+ inspect
142
+ .command("routes")
143
+ .description("Inspect SwallowKit routes")
144
+ .action(async () => {
145
+ await handleMachineAction("inspect-routes", async () => {
146
+ const loaded = await (0, manifest_1.loadProjectManifest)();
147
+ return {
148
+ manifestSource: loaded.source,
149
+ diagnostics: loaded.diagnostics,
150
+ routes: loaded.manifest.routes,
151
+ };
152
+ });
153
+ });
154
+ inspect
155
+ .command("artifacts")
156
+ .description("Inspect generated artifacts and their ownership from the artifact ledger")
157
+ .action(async () => {
158
+ await handleMachineAction("inspect-artifacts", async () => (0, artifacts_1.inspectArtifacts)());
159
+ });
160
+ inspect
161
+ .command("boundaries")
162
+ .description("Return the responsibility boundary contract between AI free-form authoring and deterministic generation")
163
+ .action(async () => {
164
+ await handleMachineAction("inspect-boundaries", async () => (0, boundaries_1.inspectBoundaries)());
165
+ });
166
+ inspect
167
+ .command("capabilities")
168
+ .description("Return SwallowKit's machine-readable capability contract: model declarations, auth workflow, generated-CRUD scope, seeding, and available commands")
169
+ .action(async () => {
170
+ await handleMachineAction("inspect-capabilities", async () => (0, capabilities_1.inspectCapabilities)());
171
+ });
172
+ inspect
173
+ .command("infra")
174
+ .description("Inspect Bicep infrastructure assets (params, modules, outputs, container wiring) without calling Azure")
175
+ .action(async () => {
176
+ await handleMachineAction("inspect-infra", async () => (0, infra_1.inspectInfra)());
177
+ });
178
+ inspect
179
+ .command("drift")
180
+ .description("Detect drift between generated artifacts and the current project state")
181
+ .action(async () => {
182
+ await handleMachineAction("inspect-drift", async () => (0, drift_1.detectDrift)(), (result) => ({
183
+ status: "complete",
184
+ nextActions: result.findings.length > 0
185
+ ? [
186
+ {
187
+ command: "swallowkit machine verify project",
188
+ description: "Run full verification to confirm the project is in a consistent state.",
189
+ },
190
+ ]
191
+ : [],
192
+ }));
193
+ });
194
+ const validate = new commander_1.Command("validate");
195
+ validate
196
+ .command("project")
197
+ .description("Validate SwallowKit project metadata and conventions")
198
+ .action(async () => {
199
+ await handleMachineAction("validate-project", async () => (0, validation_1.validateProject)());
200
+ });
201
+ const generate = new commander_1.Command("generate");
202
+ generate
203
+ .command("model")
204
+ .description("Generate model templates with deterministic JSON output")
205
+ .argument("<names...>", "Model names to generate")
206
+ .option("--models-dir <dir>", "Models directory", "shared/models")
207
+ .option("--connector <name>", "Associate the models with a configured connector")
208
+ .option("--overwrite <mode>", "Overwrite policy: always | never", "never")
209
+ .action(async (names, options) => {
210
+ await handleMachineAction("generate-model", async () => {
211
+ ensureProjectForMachine();
212
+ if (options.overwrite !== "always" && options.overwrite !== "never") {
213
+ throw new errors_1.MachineCommandError("invalid-overwrite-mode", `Unsupported overwrite mode: ${options.overwrite}. Use "always" or "never".`);
214
+ }
215
+ return (0, create_model_1.createModelOperation)({
216
+ names,
217
+ modelsDir: options.modelsDir,
218
+ connector: options.connector,
219
+ overwriteMode: options.overwrite,
220
+ });
221
+ });
222
+ });
223
+ generate
224
+ .command("scaffold")
225
+ .description("Generate scaffold artifacts with deterministic JSON output")
226
+ .argument("<model>", "Model file or model name")
227
+ .option("--functions-dir <dir>", "Functions directory", "functions")
228
+ .option("--api-dir <dir>", "API routes directory", "app/api")
229
+ .option("--api-only", "Skip UI components; still update Functions, BFF routes, OpenAPI, and native schema assets", false)
230
+ .action(async (model, options) => {
231
+ await handleMachineAction("generate-scaffold", async () => {
232
+ ensureProjectForMachine();
233
+ return (0, scaffold_machine_1.runMachineScaffoldOperation)({
234
+ model,
235
+ functionsDir: options.functionsDir,
236
+ apiDir: options.apiDir,
237
+ apiOnly: options.apiOnly,
238
+ });
239
+ });
240
+ });
241
+ const plan = new commander_1.Command("plan");
242
+ plan
243
+ .command("scaffold")
244
+ .description("Compute the scaffold change plan without writing any files (accepts multiple models)")
245
+ .argument("<models...>", "Model files or model names")
246
+ .option("--functions-dir <dir>", "Functions directory", "functions")
247
+ .option("--api-dir <dir>", "API routes directory", "app/api")
248
+ .option("--api-only", "Skip UI components in the plan", false)
249
+ .action(async (models, options) => {
250
+ await handleMachineAction("plan-scaffold", async () => {
251
+ ensureProjectForMachine();
252
+ const plans = [];
253
+ for (const model of models) {
254
+ plans.push(await (0, scaffold_plan_1.planScaffoldOperation)({
255
+ model,
256
+ functionsDir: options.functionsDir,
257
+ apiDir: options.apiDir,
258
+ apiOnly: options.apiOnly,
259
+ }));
260
+ }
261
+ return plans.length === 1 ? plans[0] : { planType: "scaffold-batch", plans };
262
+ }, (data) => {
263
+ const plans = "plans" in data ? data.plans : [data];
264
+ return {
265
+ status: plans.some((planData) => planData.requiresApproval) ? "requires-human" : "complete",
266
+ nextActions: plans.map((planData) => ({
267
+ command: `swallowkit machine apply scaffold --plan ${planData.planId}${planData.requiresApproval ? " --approve" : ""}`,
268
+ description: planData.requiresApproval
269
+ ? `Apply the plan for ${planData.model} after reviewing the listed conflicts (requires --approve).`
270
+ : `Apply the plan for ${planData.model}.`,
271
+ })),
272
+ };
273
+ });
274
+ });
275
+ plan
276
+ .command("auth")
277
+ .description("Compute the add-auth change plan without writing any files")
278
+ .requiredOption("--provider <provider>", "Auth provider: custom-jwt | swa | external-token | none")
279
+ .option("--scheme <name>", "Add as a named authentication scheme")
280
+ .option("--allowed-providers <list>", "Comma-separated SWA identity providers to allow (e.g. github,aad); defaults to aad")
281
+ .action(async (options) => {
282
+ await handleMachineAction("plan-auth", async () => {
283
+ ensureProjectForMachine();
284
+ return (0, auth_operations_1.planAuthOperation)({
285
+ provider: options.provider,
286
+ scheme: options.scheme,
287
+ allowedProviders: options.allowedProviders ? options.allowedProviders.split(",") : undefined,
288
+ });
289
+ }, (planData) => ({
290
+ status: planData.requiresApproval ? "requires-human" : "complete",
291
+ nextActions: [
292
+ {
293
+ command: `swallowkit machine apply auth --plan ${planData.planId}${planData.requiresApproval ? " --approve" : ""}`,
294
+ description: planData.requiresApproval
295
+ ? "Apply the plan after reviewing the listed conflicts (requires --approve)."
296
+ : "Apply the plan.",
297
+ },
298
+ ],
299
+ }));
300
+ });
301
+ plan
302
+ .command("provision")
303
+ .description("Preflight Azure provisioning locally; use --what-if for an az what-if analysis (requires az login)")
304
+ .requiredOption("-g, --resource-group <name>", "Resource group name")
305
+ .requiredOption("--location <region>", "Primary location for Functions and Cosmos DB")
306
+ .requiredOption("--swa-location <region>", "Static Web App location")
307
+ .option("--subscription <id>", "Azure subscription GUID")
308
+ .option("--what-if", "Run az deployment group what-if (requires az login)", false)
309
+ .action(async (options) => {
310
+ await handleMachineAction("plan-provision", async () => {
311
+ ensureProjectForMachine();
312
+ return (0, provision_operations_1.planProvisionOperation)({
313
+ resourceGroup: options.resourceGroup,
314
+ location: options.location,
315
+ swaLocation: options.swaLocation,
316
+ subscription: options.subscription,
317
+ whatIf: options.whatIf,
318
+ });
319
+ }, (planData) => ({
320
+ status: "requires-human",
321
+ nextActions: [
322
+ {
323
+ command: `swallowkit machine apply provision --plan ${planData.planId} --approve`,
324
+ description: "Provisioning creates billable Azure resources. A human must review plan.commands and approve before applying.",
325
+ },
326
+ ],
327
+ }));
328
+ });
329
+ const apply = new commander_1.Command("apply");
330
+ apply
331
+ .command("scaffold")
332
+ .description("Apply scaffold changes, verifying plan freshness and overwrite approval (accepts multiple models)")
333
+ .argument("[models...]", "Model files or model names (optional when --plan is given)")
334
+ .option("--plan <planId>", "Apply a previously computed plan")
335
+ .option("--approve", "Approve overwriting files that were modified after generation", false)
336
+ .option("--functions-dir <dir>", "Functions directory")
337
+ .option("--api-dir <dir>", "API routes directory")
338
+ .option("--api-only", "Skip UI components; still update Functions, BFF routes, OpenAPI, and native schema assets")
339
+ .action(async (models, options) => {
340
+ await handleMachineAction("apply-scaffold", async () => {
341
+ ensureProjectForMachine();
342
+ if (models.length > 1 && options.plan) {
343
+ throw new errors_1.MachineCommandError("invalid-arguments", "--plan applies to a single model. Pass multiple models without --plan (each apply re-plans internally), or apply each plan separately.", undefined, "failed");
344
+ }
345
+ if (models.length <= 1) {
346
+ return (0, scaffold_apply_1.applyScaffoldOperation)({
347
+ model: models[0],
348
+ planId: options.plan,
349
+ approve: options.approve,
350
+ functionsDir: options.functionsDir,
351
+ apiDir: options.apiDir,
352
+ apiOnly: options.apiOnly,
353
+ });
354
+ }
355
+ const results = [];
356
+ for (const model of models) {
357
+ results.push(await (0, scaffold_apply_1.applyScaffoldOperation)({
358
+ model,
359
+ approve: options.approve,
360
+ functionsDir: options.functionsDir,
361
+ apiDir: options.apiDir,
362
+ apiOnly: options.apiOnly,
363
+ }));
364
+ }
365
+ return { applyType: "scaffold-batch", results };
366
+ }, () => ({
367
+ status: "complete",
368
+ nextActions: [
369
+ {
370
+ command: "swallowkit machine verify project",
371
+ description: "Verify the project after applying scaffold changes.",
372
+ },
373
+ ],
374
+ }));
375
+ });
376
+ apply
377
+ .command("auth")
378
+ .description("Apply add-auth changes, verifying plan freshness and overwrite approval")
379
+ .option("--plan <planId>", "Apply a previously computed plan")
380
+ .option("--provider <provider>", "Auth provider (optional when --plan is given)")
381
+ .option("--scheme <name>", "Add as a named authentication scheme")
382
+ .option("--allowed-providers <list>", "Comma-separated SWA identity providers to allow (e.g. github,aad); defaults to aad")
383
+ .option("--approve", "Approve overwriting files that were modified after generation", false)
384
+ .action(async (options) => {
385
+ await handleMachineAction("apply-auth", async () => {
386
+ ensureProjectForMachine();
387
+ return (0, auth_operations_1.applyAuthOperation)({
388
+ provider: options.provider,
389
+ scheme: options.scheme,
390
+ allowedProviders: options.allowedProviders ? options.allowedProviders.split(",") : undefined,
391
+ planId: options.plan,
392
+ approve: options.approve,
393
+ });
394
+ }, (result) => {
395
+ const configTarget = result.scheme
396
+ ? `auth.authorization.policies (reference scheme "${result.scheme}")`
397
+ : "auth.authorization.policies";
398
+ const nextActions = [];
399
+ if (result.provider !== "none") {
400
+ nextActions.push({
401
+ command: "edit swallowkit.config.js",
402
+ description: `Define ${configTarget}. The config is an extension point: hand-editing policies is the expected workflow. Do NOT hand-write auth.schemes entries; only plan/apply auth may add schemes.`,
403
+ });
404
+ }
405
+ if (result.provider === "swa") {
406
+ nextActions.push({
407
+ command: "edit swallowkit.config.js",
408
+ description: `Confirm swa.allowedProviders${result.scheme ? ` for scheme "${result.scheme}"` : ""} lists the identity providers you use (e.g. ['github']). Generated login URLs and provider checks use this list; it can also be set at plan time with --allowed-providers.`,
409
+ });
410
+ }
411
+ if (result.provider === "external-token") {
412
+ nextActions.push({
413
+ command: "edit the generated external token verifier",
414
+ description: "Implement the verifier stub (it fails closed until implemented). typecheck and verify pass with the stub in place, so a passing verify does NOT mean external-token auth works.",
415
+ });
416
+ }
417
+ nextActions.push({
418
+ command: "swallowkit machine verify project",
419
+ description: "Verify the project after applying auth changes.",
420
+ });
421
+ return { status: "complete", nextActions };
422
+ });
423
+ });
424
+ apply
425
+ .command("provision")
426
+ .description("Apply an approved provisioning plan (always requires --approve; creates billable Azure resources)")
427
+ .requiredOption("--plan <planId>", "Provision plan to apply")
428
+ .option("--approve", "Confirm human approval of the provisioning plan", false)
429
+ .action(async (options) => {
430
+ await handleMachineAction("apply-provision", async () => {
431
+ ensureProjectForMachine();
432
+ return (0, provision_operations_1.applyProvisionOperation)({ planId: options.plan, approve: options.approve });
433
+ }, () => ({
434
+ status: "complete",
435
+ nextActions: [
436
+ {
437
+ command: "swallowkit machine inspect infra",
438
+ description: "Re-inspect infra assets after provisioning.",
439
+ },
440
+ ],
441
+ }));
442
+ });
443
+ const verify = new commander_1.Command("verify");
444
+ verify
445
+ .command("project")
446
+ .description("Run verification checks (structure, drift, typecheck) with machine-readable evidence")
447
+ .option("--checks <ids>", "Comma-separated check ids to run (structure,drift,typecheck,build,lint,test, plus custom ids from swallowkit.config verify.checks)")
448
+ .option("--compact", "Suppress info-severity findings/violations from evidence to keep agent-facing output small", false)
449
+ .action(async (options) => {
450
+ await handleMachineAction("verify-project", async () => {
451
+ const result = await (0, verify_1.runVerify)(options.checks ? options.checks.split(",") : undefined);
452
+ return options.compact ? (0, verify_1.compactVerifyResult)(result) : result;
453
+ }, (result) => ({
454
+ status: result.summary.done ? "complete" : "in-progress",
455
+ nextActions: result.summary.done
456
+ ? []
457
+ : [
458
+ {
459
+ command: "swallowkit machine explain failure",
460
+ description: "Get evidence and suggested actions for the failed checks.",
461
+ },
462
+ ],
463
+ }));
464
+ });
465
+ const explain = new commander_1.Command("explain");
466
+ explain
467
+ .command("failure")
468
+ .description("Explain failures from the most recent verify run")
469
+ .option("--check <id>", "Explain a specific check id")
470
+ .action(async (options) => {
471
+ await handleMachineAction("explain-failure", async () => {
472
+ const lastVerify = (0, state_1.loadLastVerifyState)();
473
+ if (!lastVerify) {
474
+ throw new errors_1.MachineCommandError("no-verification-result", 'No verify result found. Run "swallowkit machine verify project" first.', undefined, "blocked");
475
+ }
476
+ try {
477
+ return {
478
+ verifiedAt: lastVerify.verifiedAt,
479
+ failures: (0, verify_1.explainVerifyFailure)(lastVerify, options.check),
480
+ };
481
+ }
482
+ catch (error) {
483
+ throw new errors_1.MachineCommandError("unknown-check", error instanceof Error ? error.message : String(error), { check: options.check }, "failed");
484
+ }
485
+ });
486
+ });
487
+ program.addCommand(inspect);
488
+ program.addCommand(validate);
489
+ program.addCommand(generate);
490
+ program.addCommand(plan);
491
+ program.addCommand(apply);
492
+ program.addCommand(verify);
493
+ program.addCommand(explain);
494
+ return program;
495
+ }
496
+ function isMachineCommand(argv) {
497
+ return argv[2] === "machine";
498
+ }
499
+ /**
500
+ * すべてのコマンド階層に exitOverride と出力キャプチャを適用する。
501
+ * commander の addCommand は親の出力設定を継承しないため、再帰的に設定する。
502
+ */
503
+ function applyMachineOutputSettings(command, sink) {
504
+ command.exitOverride();
505
+ command.showHelpAfterError(false);
506
+ command.configureOutput({
507
+ writeErr: (str) => {
508
+ sink.text += str;
509
+ },
510
+ writeOut: (str) => {
511
+ sink.text += str;
512
+ },
513
+ });
514
+ for (const sub of command.commands) {
515
+ applyMachineOutputSettings(sub, sink);
516
+ }
517
+ }
518
+ async function runMachineCli(argv = process.argv) {
519
+ const program = createMachineProgram();
520
+ const commanderOutput = { text: "" };
521
+ applyMachineOutputSettings(program, commanderOutput);
522
+ // Keep stdout reserved for the single JSON envelope: any console output
523
+ // produced by underlying operations (e.g. config-load logs) goes to stderr.
524
+ // A hard guard on process.stdout.write catches direct writes that bypass console.
525
+ const originalLog = console.log;
526
+ const originalInfo = console.info;
527
+ const originalWarn = console.warn;
528
+ const previousStdoutWrite = process.stdout.write;
529
+ const boundStdoutWrite = previousStdoutWrite.bind(process.stdout);
530
+ machineEnvelopeWrite = (chunk) => {
531
+ boundStdoutWrite(chunk);
532
+ };
533
+ process.stdout.write = ((chunk, ...rest) => process.stderr.write(chunk, ...rest));
534
+ const toStderr = (...args) => {
535
+ process.stderr.write(`${args.map((arg) => (typeof arg === "string" ? arg : JSON.stringify(arg))).join(" ")}\n`);
536
+ };
537
+ console.log = toStderr;
538
+ console.info = toStderr;
539
+ console.warn = toStderr;
540
+ try {
541
+ await program.parseAsync(argv.slice(3), { from: "user" });
542
+ }
543
+ catch (error) {
544
+ if (error instanceof commander_1.CommanderError) {
545
+ const capturedText = commanderOutput.text.trim();
546
+ if (error.code === "commander.helpDisplayed" || error.code === "commander.help") {
547
+ // --help / help は正常応答として usage を JSON envelope で返す
548
+ writeMachineSuccess("machine-help", { help: capturedText });
549
+ return;
550
+ }
551
+ writeMachineError("machine-parse", new errors_1.MachineCommandError("invalid-command", error.message, capturedText ? { usage: capturedText } : undefined));
552
+ process.exitCode = Number.isFinite(error.exitCode) && error.exitCode !== 0 ? error.exitCode : 1;
553
+ return;
554
+ }
555
+ writeMachineError("machine-parse", error);
556
+ process.exitCode = 1;
557
+ }
558
+ finally {
559
+ console.log = originalLog;
560
+ console.info = originalInfo;
561
+ console.warn = originalWarn;
562
+ process.stdout.write = previousStdoutWrite;
563
+ machineEnvelopeWrite = null;
564
+ }
565
+ }
566
+ //# 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.js";
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,yCAAyC,CAAC;AAEpE,OAAO,KAAK,CAAC,MAAM,QAAQ,CAAC;AAY5B,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;AAqFF,wBAAgB,8BAA8B,CAC5C,aAAa,GAAE,gBAA0C,GACxD,cAAc,EAAE,CAoRlB;AAED,wBAAgB,yBAAyB,CAAC,aAAa,GAAE,gBAA0C,GAAG,SAAS,CAmB9G;AAED,wBAAsB,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC,CAKlD"}