swallowkit 2.0.0-alpha.1 → 2.0.0-alpha.10

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 (224) hide show
  1. package/README.ja.md +14 -0
  2. package/README.md +14 -0
  3. package/dist/cli/commands/add-auth.js +37 -6
  4. package/dist/cli/commands/add-auth.js.map +1 -1
  5. package/dist/cli/commands/configure-mcp.d.ts +12 -0
  6. package/dist/cli/commands/configure-mcp.d.ts.map +1 -0
  7. package/dist/cli/commands/configure-mcp.js +42 -0
  8. package/dist/cli/commands/configure-mcp.js.map +1 -0
  9. package/dist/cli/commands/dev.d.ts +2 -2
  10. package/dist/cli/commands/dev.d.ts.map +1 -1
  11. package/dist/cli/commands/dev.js +39 -27
  12. package/dist/cli/commands/dev.js.map +1 -1
  13. package/dist/cli/commands/init.d.ts +8 -2
  14. package/dist/cli/commands/init.d.ts.map +1 -1
  15. package/dist/cli/commands/init.js +67 -132
  16. package/dist/cli/commands/init.js.map +1 -1
  17. package/dist/cli/commands/migrations.d.ts.map +1 -1
  18. package/dist/cli/commands/migrations.js +25 -0
  19. package/dist/cli/commands/migrations.js.map +1 -1
  20. package/dist/cli/commands/provision.d.ts +5 -0
  21. package/dist/cli/commands/provision.d.ts.map +1 -1
  22. package/dist/cli/commands/provision.js +278 -55
  23. package/dist/cli/commands/provision.js.map +1 -1
  24. package/dist/cli/commands/scaffold.d.ts +4 -0
  25. package/dist/cli/commands/scaffold.d.ts.map +1 -1
  26. package/dist/cli/commands/scaffold.js +85 -3
  27. package/dist/cli/commands/scaffold.js.map +1 -1
  28. package/dist/cli/index.d.ts +2 -0
  29. package/dist/cli/index.d.ts.map +1 -1
  30. package/dist/cli/index.js +43 -5
  31. package/dist/cli/index.js.map +1 -1
  32. package/dist/core/operations/create-model.d.ts +2 -0
  33. package/dist/core/operations/create-model.d.ts.map +1 -1
  34. package/dist/core/operations/create-model.js +60 -8
  35. package/dist/core/operations/create-model.js.map +1 -1
  36. package/dist/core/operations/migration-generator.d.ts.map +1 -1
  37. package/dist/core/operations/migration-generator.js +12 -1
  38. package/dist/core/operations/migration-generator.js.map +1 -1
  39. package/dist/core/operations/model-migration.d.ts +22 -0
  40. package/dist/core/operations/model-migration.d.ts.map +1 -0
  41. package/dist/core/operations/model-migration.js +36 -0
  42. package/dist/core/operations/model-migration.js.map +1 -0
  43. package/dist/core/operations/provision-deployment.d.ts +52 -0
  44. package/dist/core/operations/provision-deployment.d.ts.map +1 -0
  45. package/dist/core/operations/provision-deployment.js +164 -0
  46. package/dist/core/operations/provision-deployment.js.map +1 -0
  47. package/dist/core/operations/provision-operations.d.ts +62 -6
  48. package/dist/core/operations/provision-operations.d.ts.map +1 -1
  49. package/dist/core/operations/provision-operations.js +653 -115
  50. package/dist/core/operations/provision-operations.js.map +1 -1
  51. package/dist/core/operations/scaffold-apply.d.ts +1 -0
  52. package/dist/core/operations/scaffold-apply.d.ts.map +1 -1
  53. package/dist/core/operations/scaffold-apply.js +1 -0
  54. package/dist/core/operations/scaffold-apply.js.map +1 -1
  55. package/dist/core/operations/scaffold-machine.d.ts +1 -0
  56. package/dist/core/operations/scaffold-machine.d.ts.map +1 -1
  57. package/dist/core/operations/scaffold-machine.js.map +1 -1
  58. package/dist/core/operations/scaffold-plan.d.ts +2 -0
  59. package/dist/core/operations/scaffold-plan.d.ts.map +1 -1
  60. package/dist/core/operations/scaffold-plan.js +3 -1
  61. package/dist/core/operations/scaffold-plan.js.map +1 -1
  62. package/dist/core/project/agent-instructions.d.ts.map +1 -1
  63. package/dist/core/project/agent-instructions.js +4 -1
  64. package/dist/core/project/agent-instructions.js.map +1 -1
  65. package/dist/core/project/boundaries.d.ts +5 -2
  66. package/dist/core/project/boundaries.d.ts.map +1 -1
  67. package/dist/core/project/boundaries.js +51 -20
  68. package/dist/core/project/boundaries.js.map +1 -1
  69. package/dist/core/project/capabilities.d.ts +10 -0
  70. package/dist/core/project/capabilities.d.ts.map +1 -1
  71. package/dist/core/project/capabilities.js +38 -6
  72. package/dist/core/project/capabilities.js.map +1 -1
  73. package/dist/core/project/home-page.d.ts +4 -0
  74. package/dist/core/project/home-page.d.ts.map +1 -0
  75. package/dist/core/project/home-page.js +113 -0
  76. package/dist/core/project/home-page.js.map +1 -0
  77. package/dist/core/project/mcp-config.d.ts +26 -0
  78. package/dist/core/project/mcp-config.d.ts.map +1 -0
  79. package/dist/core/project/mcp-config.js +117 -0
  80. package/dist/core/project/mcp-config.js.map +1 -0
  81. package/dist/core/project/react-project.d.ts +1 -1
  82. package/dist/core/project/react-project.d.ts.map +1 -1
  83. package/dist/core/project/react-project.js +46 -25
  84. package/dist/core/project/react-project.js.map +1 -1
  85. package/dist/core/project/state.d.ts +7 -0
  86. package/dist/core/project/state.d.ts.map +1 -1
  87. package/dist/core/project/state.js +86 -0
  88. package/dist/core/project/state.js.map +1 -1
  89. package/dist/core/project/workflows.d.ts.map +1 -1
  90. package/dist/core/project/workflows.js +53 -7
  91. package/dist/core/project/workflows.js.map +1 -1
  92. package/dist/core/scaffold/auth-generator.d.ts.map +1 -1
  93. package/dist/core/scaffold/auth-generator.js +26 -27
  94. package/dist/core/scaffold/auth-generator.js.map +1 -1
  95. package/dist/core/scaffold/model-parser.d.ts +23 -0
  96. package/dist/core/scaffold/model-parser.d.ts.map +1 -1
  97. package/dist/core/scaffold/model-parser.js +407 -137
  98. package/dist/core/scaffold/model-parser.js.map +1 -1
  99. package/dist/core/scaffold/native-schema-generator.d.ts +13 -0
  100. package/dist/core/scaffold/native-schema-generator.d.ts.map +1 -1
  101. package/dist/core/scaffold/native-schema-generator.js +294 -91
  102. package/dist/core/scaffold/native-schema-generator.js.map +1 -1
  103. package/dist/core/scaffold/openapi-generator.d.ts +5 -0
  104. package/dist/core/scaffold/openapi-generator.d.ts.map +1 -1
  105. package/dist/core/scaffold/openapi-generator.js +53 -3
  106. package/dist/core/scaffold/openapi-generator.js.map +1 -1
  107. package/dist/core/scaffold/ui-generator.d.ts +0 -3
  108. package/dist/core/scaffold/ui-generator.d.ts.map +1 -1
  109. package/dist/core/scaffold/ui-generator.js +68 -7
  110. package/dist/core/scaffold/ui-generator.js.map +1 -1
  111. package/dist/core/verify/index.d.ts +4 -3
  112. package/dist/core/verify/index.d.ts.map +1 -1
  113. package/dist/core/verify/index.js +122 -5
  114. package/dist/core/verify/index.js.map +1 -1
  115. package/dist/machine/contracts.d.ts +1 -0
  116. package/dist/machine/contracts.d.ts.map +1 -1
  117. package/dist/machine/errors.d.ts +3 -2
  118. package/dist/machine/errors.d.ts.map +1 -1
  119. package/dist/machine/errors.js +2 -1
  120. package/dist/machine/errors.js.map +1 -1
  121. package/dist/machine/index.d.ts.map +1 -1
  122. package/dist/machine/index.js +59 -28
  123. package/dist/machine/index.js.map +1 -1
  124. package/dist/mcp/index.d.ts +6 -4
  125. package/dist/mcp/index.d.ts.map +1 -1
  126. package/dist/mcp/index.js +210 -25
  127. package/dist/mcp/index.js.map +1 -1
  128. package/dist/mcp/version-selection.d.ts +55 -0
  129. package/dist/mcp/version-selection.d.ts.map +1 -0
  130. package/dist/mcp/version-selection.js +152 -0
  131. package/dist/mcp/version-selection.js.map +1 -0
  132. package/dist/utils/azure-cli.d.ts +56 -0
  133. package/dist/utils/azure-cli.d.ts.map +1 -0
  134. package/dist/utils/azure-cli.js +326 -0
  135. package/dist/utils/azure-cli.js.map +1 -0
  136. package/dist/utils/azure-diagnostics.d.ts +16 -0
  137. package/dist/utils/azure-diagnostics.d.ts.map +1 -0
  138. package/dist/utils/azure-diagnostics.js +68 -0
  139. package/dist/utils/azure-diagnostics.js.map +1 -0
  140. package/dist/utils/package-manager.js +2 -2
  141. package/dist/utils/package-manager.js.map +1 -1
  142. package/dist/utils/python-uv.d.ts +5 -7
  143. package/dist/utils/python-uv.d.ts.map +1 -1
  144. package/dist/utils/python-uv.js +50 -24
  145. package/dist/utils/python-uv.js.map +1 -1
  146. package/dist/utils/react-dev.d.ts +4 -0
  147. package/dist/utils/react-dev.d.ts.map +1 -0
  148. package/dist/utils/react-dev.js +35 -0
  149. package/dist/utils/react-dev.js.map +1 -0
  150. package/dist/utils/semver.d.ts +14 -0
  151. package/dist/utils/semver.d.ts.map +1 -0
  152. package/dist/utils/semver.js +61 -0
  153. package/dist/utils/semver.js.map +1 -0
  154. package/package.json +6 -3
  155. package/src/__tests__/__snapshots__/boundaries.test.ts.snap +154 -0
  156. package/src/__tests__/agent-instructions.test.ts +5 -0
  157. package/src/__tests__/agent-loop-phase34.test.ts +143 -8
  158. package/src/__tests__/auth.test.ts +9 -0
  159. package/src/__tests__/azure-cli.test.ts +202 -0
  160. package/src/__tests__/boundaries.test.ts +42 -0
  161. package/src/__tests__/csharp-schema.test.ts +261 -0
  162. package/src/__tests__/dev.test.ts +13 -6
  163. package/src/__tests__/fixtures/az wrapper.cmd +2 -0
  164. package/src/__tests__/fixtures/azure-cli.cjs +153 -0
  165. package/src/__tests__/fixtures/provision-runner.cjs +28 -0
  166. package/src/__tests__/generated-project-matrix.test.ts +789 -0
  167. package/src/__tests__/home-page.test.ts +50 -0
  168. package/src/__tests__/init.test.ts +116 -0
  169. package/src/__tests__/mcp-version.test.ts +262 -0
  170. package/src/__tests__/mcp.test.ts +120 -3
  171. package/src/__tests__/multi-auth.test.ts +115 -4
  172. package/src/__tests__/package-manager.test.ts +17 -2
  173. package/src/__tests__/plan-apply.test.ts +179 -0
  174. package/src/__tests__/provision-runtime.test.ts +722 -0
  175. package/src/__tests__/python-uv.test.ts +50 -14
  176. package/src/__tests__/python-venv.test.ts +48 -0
  177. package/src/__tests__/react-dev.test.ts +72 -0
  178. package/src/__tests__/react.test.ts +19 -0
  179. package/src/__tests__/schema-analysis.test.ts +329 -0
  180. package/src/cli/commands/add-auth.ts +36 -6
  181. package/src/cli/commands/configure-mcp.ts +54 -0
  182. package/src/cli/commands/dev.ts +40 -31
  183. package/src/cli/commands/init.ts +73 -138
  184. package/src/cli/commands/migrations.ts +22 -0
  185. package/src/cli/commands/provision.ts +294 -56
  186. package/src/cli/commands/scaffold.ts +105 -3
  187. package/src/cli/index.ts +40 -7
  188. package/src/core/operations/create-model.ts +51 -13
  189. package/src/core/operations/migration-generator.ts +14 -1
  190. package/src/core/operations/model-migration.ts +52 -0
  191. package/src/core/operations/provision-deployment.ts +183 -0
  192. package/src/core/operations/provision-operations.ts +662 -154
  193. package/src/core/operations/scaffold-apply.ts +2 -0
  194. package/src/core/operations/scaffold-machine.ts +1 -0
  195. package/src/core/operations/scaffold-plan.ts +5 -1
  196. package/src/core/project/agent-instructions.ts +4 -1
  197. package/src/core/project/agent-templates/AGENTS.md +89 -6
  198. package/src/core/project/agent-templates/CLAUDE.md +14 -1
  199. package/src/core/project/agent-templates/copilot-instructions.md +15 -1
  200. package/src/core/project/agent-templates/shared-models.instructions.md +11 -3
  201. package/src/core/project/boundaries.ts +62 -20
  202. package/src/core/project/capabilities.ts +49 -6
  203. package/src/core/project/home-page.ts +114 -0
  204. package/src/core/project/mcp-config.ts +84 -0
  205. package/src/core/project/react-project.ts +50 -28
  206. package/src/core/project/state.ts +70 -0
  207. package/src/core/project/workflows.ts +53 -7
  208. package/src/core/scaffold/auth-generator.ts +26 -27
  209. package/src/core/scaffold/model-parser.ts +413 -129
  210. package/src/core/scaffold/native-schema-generator.ts +319 -103
  211. package/src/core/scaffold/openapi-generator.ts +63 -5
  212. package/src/core/scaffold/ui-generator.ts +70 -8
  213. package/src/core/verify/index.ts +118 -6
  214. package/src/machine/contracts.ts +1 -0
  215. package/src/machine/errors.ts +4 -2
  216. package/src/machine/index.ts +65 -34
  217. package/src/mcp/index.ts +221 -31
  218. package/src/mcp/version-selection.ts +163 -0
  219. package/src/utils/azure-cli.ts +315 -0
  220. package/src/utils/azure-diagnostics.ts +75 -0
  221. package/src/utils/package-manager.ts +2 -2
  222. package/src/utils/python-uv.ts +53 -33
  223. package/src/utils/react-dev.ts +31 -0
  224. package/src/utils/semver.ts +59 -0
@@ -0,0 +1,68 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.redactAzureText = redactAzureText;
4
+ exports.azureCliDiagnostic = azureCliDiagnostic;
5
+ exports.formatAzureDiagnostic = formatAzureDiagnostic;
6
+ const SENSITIVE_KEY = /outputs|parameters|password|secret|token|authorization|connection.?string|accountkey|api.?key|functions?.?key|client.?secret|access.?key|primary.?key|secondary.?key/i;
7
+ function redactAzureText(text, secretValues = []) {
8
+ const redactValues = (value) => {
9
+ for (const secret of secretValues) {
10
+ if (secret)
11
+ value = value.split(secret).join("[REDACTED]").split(JSON.stringify(secret).slice(1, -1)).join("[REDACTED]");
12
+ }
13
+ return value;
14
+ };
15
+ text = redactValues(text);
16
+ let value = text;
17
+ try {
18
+ const redact = (entry) => {
19
+ if (typeof entry === "string")
20
+ return redactPlainText(redactValues(entry));
21
+ if (Array.isArray(entry))
22
+ return entry.map(redact);
23
+ if (entry && typeof entry === "object") {
24
+ return Object.fromEntries(Object.entries(entry).map(([key, item]) => [key, SENSITIVE_KEY.test(key) ? "[REDACTED]" : redact(item)]));
25
+ }
26
+ return entry;
27
+ };
28
+ value = JSON.stringify(redact(JSON.parse(text)));
29
+ }
30
+ catch {
31
+ // An incomplete deployment payload cannot be safely projected/redacted.
32
+ if (/"(?:outputs|parameters)"\s*:/i.test(text))
33
+ return "[Azure payload omitted: may contain secrets]";
34
+ value = redactPlainText(text);
35
+ }
36
+ return value;
37
+ }
38
+ function redactPlainText(text) {
39
+ return text
40
+ .replace(/\bBearer\s+[^\s"',;]+/gi, "Bearer [REDACTED]")
41
+ .replace(/\beyJ[A-Za-z0-9_-]+\.[A-Za-z0-9_-]+\.[A-Za-z0-9_-]+\b/g, "[REDACTED]")
42
+ .replace(/(?:AccountEndpoint|DefaultEndpointsProtocol)=[^\r\n"']+/gi, "[connection string REDACTED]")
43
+ .replace(/((?:api[-_ ]?key|functions?[-_ ]?key|accountkey|password|client[-_ ]?secret|secret|token|access[-_ ]?key|primary[-_ ]?key|secondary[-_ ]?key|authorization)\s*["']?\s*[:=]\s*)(?:"[^"]*"|'[^']*'|[^\s,;}\]]+)/gi, "$1[REDACTED]")
44
+ .replace(/([?&](?:code|sig|token|key|secret|password)=)[^&\s"'<>]+/gi, "$1[REDACTED]");
45
+ }
46
+ function azureCliDiagnostic(result, phase, secretValues = []) {
47
+ const stdout = result.stdoutTruncated ? "[stdout omitted: capture limit reached]" : redactAzureText(result.stdout, secretValues);
48
+ const stderr = result.stderrTruncated ? "[stderr omitted: capture limit reached]" : redactAzureText(result.stderr, secretValues);
49
+ return {
50
+ phase,
51
+ exitCode: result.status,
52
+ signal: result.signal ?? null,
53
+ elapsedMs: result.elapsedMs,
54
+ ...(result.failureKind ? { failureKind: result.failureKind } : {}),
55
+ ...(result.errorCode ? { errorCode: result.errorCode } : {}),
56
+ stdout: stdout.slice(0, 4000),
57
+ stderr: stderr.slice(0, 4000),
58
+ outputTruncated: result.stdoutTruncated || result.stderrTruncated || stdout.length > 4000 || stderr.length > 4000,
59
+ };
60
+ }
61
+ function formatAzureDiagnostic(diagnostic) {
62
+ return [
63
+ `az ${diagnostic.phase}: exit=${diagnostic.exitCode ?? "unknown"}, signal=${diagnostic.signal ?? "none"}, kind=${diagnostic.failureKind ?? "none"}, elapsed=${diagnostic.elapsedMs}ms${diagnostic.errorCode ? `, error=${diagnostic.errorCode}` : ""}${diagnostic.outputTruncated ? ", output omitted/truncated" : ""}`,
64
+ ...(diagnostic.stdout ? [`stdout: ${diagnostic.stdout}`] : []),
65
+ ...(diagnostic.stderr ? [`stderr: ${diagnostic.stderr}`] : []),
66
+ ].join("\n");
67
+ }
68
+ //# sourceMappingURL=azure-diagnostics.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"azure-diagnostics.js","sourceRoot":"","sources":["../../src/utils/azure-diagnostics.ts"],"names":[],"mappings":"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"}
@@ -157,7 +157,7 @@ function getWorkspaceConfig(pm, workspaces) {
157
157
  /** pnpm uses pnpm-workspace.yaml */
158
158
  type: "file",
159
159
  filename: "pnpm-workspace.yaml",
160
- content: `packages:\n${workspaces.map((w) => ` - ${w}`).join("\n")}\nallowBuilds:\n protobufjs: false\n unrs-resolver: false\n`,
160
+ content: `packages:\n${workspaces.map((w) => ` - ${w}`).join("\n")}\nallowBuilds:\n keytar: false\n protobufjs: false\n unrs-resolver: false\n`,
161
161
  };
162
162
  }
163
163
  // npm uses "workspaces" field in package.json
@@ -238,6 +238,6 @@ function getFunctionsStartScript(pm, backendLanguage = "typescript") {
238
238
  }
239
239
  return "cd functions && npm start";
240
240
  }
241
- return "cd functions && func start";
241
+ return backendLanguage === "csharp" ? "cd functions && dotnet run" : "cd functions && func start";
242
242
  }
243
243
  //# sourceMappingURL=package-manager.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"package-manager.js","sourceRoot":"","sources":["../../src/utils/package-manager.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"package-manager.js","sourceRoot":"","sources":["../../src/utils/package-manager.ts"],"names":[],"mappings":"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"}
@@ -1,21 +1,19 @@
1
- export declare const SWALLOWKIT_PYTHON_VERSION = "3.11";
1
+ export declare const DEFAULT_AZURE_PYTHON_VERSION = "3.14";
2
2
  export interface ProjectLocalUvPaths {
3
3
  stateDir: string;
4
- cacheDir: string;
5
- pythonInstallDir: string;
6
- toolDir: string;
7
- toolBinDir: string;
8
4
  localUvInstallDir: string;
9
5
  localUvExecutable: string;
10
6
  }
11
7
  export declare function getPythonProjectRoot(functionsDir: string): string;
12
8
  export declare function getProjectLocalUvPaths(projectRoot: string): ProjectLocalUvPaths;
13
- export declare function buildProjectLocalUvEnv(baseEnv: NodeJS.ProcessEnv, projectRoot: string): NodeJS.ProcessEnv;
14
9
  export declare function buildProjectLocalUvInstallerEnv(baseEnv: NodeJS.ProcessEnv, projectRoot: string): NodeJS.ProcessEnv;
15
10
  export declare function getProjectLocalUvInstallerCommand(): {
16
11
  command: string;
17
12
  args: string[];
18
13
  };
19
- export declare function buildUvVenvArgs(venvDir: string, pythonVersion?: string): string[];
14
+ export declare function buildUvVenvArgs(venvDir: string): string[];
15
+ export declare function getVirtualEnvPythonPath(venvDir: string): string;
16
+ export declare function ensureUvVirtualEnvironment(uvCommand: string, venvDir: string, cwd: string, env: NodeJS.ProcessEnv): Promise<string>;
20
17
  export declare function buildUvPipInstallArgs(pythonExecutable: string, requirementsPath: string): string[];
18
+ export declare function buildPythonCodegenInstallEnv(env: NodeJS.ProcessEnv): NodeJS.ProcessEnv;
21
19
  //# sourceMappingURL=python-uv.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"python-uv.d.ts","sourceRoot":"","sources":["../../src/utils/python-uv.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,yBAAyB,SAAS,CAAC;AAEhD,MAAM,WAAW,mBAAmB;IAClC,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,gBAAgB,EAAE,MAAM,CAAC;IACzB,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,iBAAiB,EAAE,MAAM,CAAC;CAC3B;AAED,wBAAgB,oBAAoB,CAAC,YAAY,EAAE,MAAM,GAAG,MAAM,CAEjE;AAED,wBAAgB,sBAAsB,CAAC,WAAW,EAAE,MAAM,GAAG,mBAAmB,CAe/E;AAED,wBAAgB,sBAAsB,CACpC,OAAO,EAAE,MAAM,CAAC,UAAU,EAC1B,WAAW,EAAE,MAAM,GAClB,MAAM,CAAC,UAAU,CAgBnB;AAED,wBAAgB,+BAA+B,CAC7C,OAAO,EAAE,MAAM,CAAC,UAAU,EAC1B,WAAW,EAAE,MAAM,GAClB,MAAM,CAAC,UAAU,CAQnB;AAED,wBAAgB,iCAAiC,IAAI;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,EAAE,CAAA;CAAE,CAkBvF;AAED,wBAAgB,eAAe,CAAC,OAAO,EAAE,MAAM,EAAE,aAAa,SAA4B,GAAG,MAAM,EAAE,CAEpG;AAED,wBAAgB,qBAAqB,CAAC,gBAAgB,EAAE,MAAM,EAAE,gBAAgB,EAAE,MAAM,GAAG,MAAM,EAAE,CAElG"}
1
+ {"version":3,"file":"python-uv.d.ts","sourceRoot":"","sources":["../../src/utils/python-uv.ts"],"names":[],"mappings":"AAMA,eAAO,MAAM,4BAA4B,SAAS,CAAC;AAEnD,MAAM,WAAW,mBAAmB;IAClC,QAAQ,EAAE,MAAM,CAAC;IACjB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,iBAAiB,EAAE,MAAM,CAAC;CAC3B;AAED,wBAAgB,oBAAoB,CAAC,YAAY,EAAE,MAAM,GAAG,MAAM,CAEjE;AAED,wBAAgB,sBAAsB,CAAC,WAAW,EAAE,MAAM,GAAG,mBAAmB,CAW/E;AAED,wBAAgB,+BAA+B,CAC7C,OAAO,EAAE,MAAM,CAAC,UAAU,EAC1B,WAAW,EAAE,MAAM,GAClB,MAAM,CAAC,UAAU,CAenB;AAED,wBAAgB,iCAAiC,IAAI;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,EAAE,CAAA;CAAE,CAkBvF;AAED,wBAAgB,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE,CAEzD;AAED,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAI/D;AAED,wBAAsB,0BAA0B,CAC9C,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,MAAM,EACf,GAAG,EAAE,MAAM,EACX,GAAG,EAAE,MAAM,CAAC,UAAU,GACrB,OAAO,CAAC,MAAM,CAAC,CAoBjB;AAED,wBAAgB,qBAAqB,CAAC,gBAAgB,EAAE,MAAM,EAAE,gBAAgB,EAAE,MAAM,GAAG,MAAM,EAAE,CAElG;AAED,wBAAgB,4BAA4B,CAAC,GAAG,EAAE,MAAM,CAAC,UAAU,GAAG,MAAM,CAAC,UAAU,CAGtF"}
@@ -33,16 +33,22 @@ var __importStar = (this && this.__importStar) || (function () {
33
33
  };
34
34
  })();
35
35
  Object.defineProperty(exports, "__esModule", { value: true });
36
- exports.SWALLOWKIT_PYTHON_VERSION = void 0;
36
+ exports.DEFAULT_AZURE_PYTHON_VERSION = void 0;
37
37
  exports.getPythonProjectRoot = getPythonProjectRoot;
38
38
  exports.getProjectLocalUvPaths = getProjectLocalUvPaths;
39
- exports.buildProjectLocalUvEnv = buildProjectLocalUvEnv;
40
39
  exports.buildProjectLocalUvInstallerEnv = buildProjectLocalUvInstallerEnv;
41
40
  exports.getProjectLocalUvInstallerCommand = getProjectLocalUvInstallerCommand;
42
41
  exports.buildUvVenvArgs = buildUvVenvArgs;
42
+ exports.getVirtualEnvPythonPath = getVirtualEnvPythonPath;
43
+ exports.ensureUvVirtualEnvironment = ensureUvVirtualEnvironment;
43
44
  exports.buildUvPipInstallArgs = buildUvPipInstallArgs;
45
+ exports.buildPythonCodegenInstallEnv = buildPythonCodegenInstallEnv;
44
46
  const path = __importStar(require("path"));
45
- exports.SWALLOWKIT_PYTHON_VERSION = "3.11";
47
+ const fs = __importStar(require("fs"));
48
+ const child_process_1 = require("child_process");
49
+ const util_1 = require("util");
50
+ const execFileAsync = (0, util_1.promisify)(child_process_1.execFile);
51
+ exports.DEFAULT_AZURE_PYTHON_VERSION = "3.14";
46
52
  function getPythonProjectRoot(functionsDir) {
47
53
  return path.dirname(functionsDir);
48
54
  }
@@ -51,39 +57,28 @@ function getProjectLocalUvPaths(projectRoot) {
51
57
  const localUvInstallDir = path.join(stateDir, "bin");
52
58
  return {
53
59
  stateDir,
54
- cacheDir: path.join(stateDir, "cache"),
55
- pythonInstallDir: path.join(stateDir, "python"),
56
- toolDir: path.join(stateDir, "tools"),
57
- toolBinDir: path.join(stateDir, "tools", "bin"),
58
60
  localUvInstallDir,
59
61
  localUvExecutable: process.platform === "win32"
60
62
  ? path.join(localUvInstallDir, "uv.exe")
61
63
  : path.join(localUvInstallDir, "uv"),
62
64
  };
63
65
  }
64
- function buildProjectLocalUvEnv(baseEnv, projectRoot) {
66
+ function buildProjectLocalUvInstallerEnv(baseEnv, projectRoot) {
65
67
  const uvPaths = getProjectLocalUvPaths(projectRoot);
66
68
  const env = {
67
69
  ...baseEnv,
68
- UV_CACHE_DIR: uvPaths.cacheDir,
69
- UV_PYTHON_INSTALL_DIR: uvPaths.pythonInstallDir,
70
- UV_TOOL_DIR: uvPaths.toolDir,
71
- UV_TOOL_BIN_DIR: uvPaths.toolBinDir,
72
- UV_PYTHON_PREFERENCE: "only-managed",
70
+ UV_UNMANAGED_INSTALL: uvPaths.localUvInstallDir,
71
+ UV_NO_MODIFY_PATH: "1",
73
72
  };
73
+ // Windows PowerShell must discover its own modules, not inherit PowerShell 7's.
74
74
  if (process.platform === "win32") {
75
- env.UV_PYTHON_NO_REGISTRY = "true";
75
+ for (const key of Object.keys(env)) {
76
+ if (key.toLowerCase() === "psmodulepath")
77
+ delete env[key];
78
+ }
76
79
  }
77
80
  return env;
78
81
  }
79
- function buildProjectLocalUvInstallerEnv(baseEnv, projectRoot) {
80
- const uvPaths = getProjectLocalUvPaths(projectRoot);
81
- return {
82
- ...buildProjectLocalUvEnv(baseEnv, projectRoot),
83
- UV_UNMANAGED_INSTALL: uvPaths.localUvInstallDir,
84
- UV_NO_MODIFY_PATH: "1",
85
- };
86
- }
87
82
  function getProjectLocalUvInstallerCommand() {
88
83
  if (process.platform === "win32") {
89
84
  return {
@@ -102,10 +97,41 @@ function getProjectLocalUvInstallerCommand() {
102
97
  args: ["-c", "curl -LsSf https://astral.sh/uv/install.sh | sh"],
103
98
  };
104
99
  }
105
- function buildUvVenvArgs(venvDir, pythonVersion = exports.SWALLOWKIT_PYTHON_VERSION) {
106
- return ["venv", venvDir, "--python", pythonVersion];
100
+ function buildUvVenvArgs(venvDir) {
101
+ return ["venv", venvDir];
102
+ }
103
+ function getVirtualEnvPythonPath(venvDir) {
104
+ return process.platform === "win32"
105
+ ? path.join(venvDir, "Scripts", "python.exe")
106
+ : path.join(venvDir, "bin", "python");
107
+ }
108
+ async function ensureUvVirtualEnvironment(uvCommand, venvDir, cwd, env) {
109
+ const pythonExecutable = getVirtualEnvPythonPath(venvDir);
110
+ if (!fs.existsSync(venvDir)) {
111
+ const { stdout, stderr } = await execFileAsync(uvCommand, buildUvVenvArgs(venvDir), { cwd, env });
112
+ if (env.SWALLOWKIT_MACHINE_OUTPUT !== "1") {
113
+ if (stdout)
114
+ process.stdout.write(stdout);
115
+ if (stderr)
116
+ process.stderr.write(stderr);
117
+ }
118
+ }
119
+ try {
120
+ await execFileAsync(pythonExecutable, ["--version"], { cwd, env });
121
+ }
122
+ catch (error) {
123
+ const reason = error instanceof Error ? error.message : String(error);
124
+ throw new Error(`Cannot execute Python at ${pythonExecutable}: ${reason}\n` +
125
+ "The virtual environment was preserved. Check the interpreter and OS application-control policy. " +
126
+ "To switch Python, explicitly recreate this environment with uv and a trusted interpreter; SwallowKit will not clear it automatically.");
127
+ }
128
+ return pythonExecutable;
107
129
  }
108
130
  function buildUvPipInstallArgs(pythonExecutable, requirementsPath) {
109
131
  return ["pip", "install", "--python", pythonExecutable, "-r", requirementsPath];
110
132
  }
133
+ function buildPythonCodegenInstallEnv(env) {
134
+ // Codegen reads JSON; PyYAML's optional accelerator must not require a C compiler.
135
+ return { ...env, PYYAML_FORCE_LIBYAML: env.PYYAML_FORCE_LIBYAML ?? "0" };
136
+ }
111
137
  //# sourceMappingURL=python-uv.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"python-uv.js","sourceRoot":"","sources":["../../src/utils/python-uv.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"python-uv.js","sourceRoot":"","sources":["../../src/utils/python-uv.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAcA,oDAEC;AAED,wDAWC;AAED,0EAkBC;AAED,8EAkBC;AAED,0CAEC;AAED,0DAIC;AAED,gEAyBC;AAED,sDAEC;AAED,oEAGC;AAnHD,2CAA6B;AAC7B,uCAAyB;AACzB,iDAAyC;AACzC,+BAAiC;AAEjC,MAAM,aAAa,GAAG,IAAA,gBAAS,EAAC,wBAAQ,CAAC,CAAC;AAC7B,QAAA,4BAA4B,GAAG,MAAM,CAAC;AAQnD,SAAgB,oBAAoB,CAAC,YAAoB;IACvD,OAAO,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;AACpC,CAAC;AAED,SAAgB,sBAAsB,CAAC,WAAmB;IACxD,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC;IAC/C,MAAM,iBAAiB,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;IAErD,OAAO;QACL,QAAQ;QACR,iBAAiB;QACjB,iBAAiB,EAAE,OAAO,CAAC,QAAQ,KAAK,OAAO;YAC7C,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE,QAAQ,CAAC;YACxC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE,IAAI,CAAC;KACvC,CAAC;AACJ,CAAC;AAED,SAAgB,+BAA+B,CAC7C,OAA0B,EAC1B,WAAmB;IAEnB,MAAM,OAAO,GAAG,sBAAsB,CAAC,WAAW,CAAC,CAAC;IAEpD,MAAM,GAAG,GAAsB;QAC7B,GAAG,OAAO;QACV,oBAAoB,EAAE,OAAO,CAAC,iBAAiB;QAC/C,iBAAiB,EAAE,GAAG;KACvB,CAAC;IACF,gFAAgF;IAChF,IAAI,OAAO,CAAC,QAAQ,KAAK,OAAO,EAAE,CAAC;QACjC,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;YACnC,IAAI,GAAG,CAAC,WAAW,EAAE,KAAK,cAAc;gBAAE,OAAO,GAAG,CAAC,GAAG,CAAC,CAAC;QAC5D,CAAC;IACH,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED,SAAgB,iCAAiC;IAC/C,IAAI,OAAO,CAAC,QAAQ,KAAK,OAAO,EAAE,CAAC;QACjC,OAAO;YACL,OAAO,EAAE,YAAY;YACrB,IAAI,EAAE;gBACJ,YAAY;gBACZ,kBAAkB;gBAClB,QAAQ;gBACR,UAAU;gBACV,sFAAsF;aACvF;SACF,CAAC;IACJ,CAAC;IAED,OAAO;QACL,OAAO,EAAE,IAAI;QACb,IAAI,EAAE,CAAC,IAAI,EAAE,iDAAiD,CAAC;KAChE,CAAC;AACJ,CAAC;AAED,SAAgB,eAAe,CAAC,OAAe;IAC7C,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAC3B,CAAC;AAED,SAAgB,uBAAuB,CAAC,OAAe;IACrD,OAAO,OAAO,CAAC,QAAQ,KAAK,OAAO;QACjC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,SAAS,EAAE,YAAY,CAAC;QAC7C,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC;AAC1C,CAAC;AAEM,KAAK,UAAU,0BAA0B,CAC9C,SAAiB,EACjB,OAAe,EACf,GAAW,EACX,GAAsB;IAEtB,MAAM,gBAAgB,GAAG,uBAAuB,CAAC,OAAO,CAAC,CAAC;IAC1D,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;QAC5B,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,aAAa,CAAC,SAAS,EAAE,eAAe,CAAC,OAAO,CAAC,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC;QAClG,IAAI,GAAG,CAAC,yBAAyB,KAAK,GAAG,EAAE,CAAC;YAC1C,IAAI,MAAM;gBAAE,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;YACzC,IAAI,MAAM;gBAAE,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QAC3C,CAAC;IACH,CAAC;IACD,IAAI,CAAC;QACH,MAAM,aAAa,CAAC,gBAAgB,EAAE,CAAC,WAAW,CAAC,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC;IACrE,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,MAAM,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACtE,MAAM,IAAI,KAAK,CACb,4BAA4B,gBAAgB,KAAK,MAAM,IAAI;YAC3D,kGAAkG;YAClG,uIAAuI,CACxI,CAAC;IACJ,CAAC;IACD,OAAO,gBAAgB,CAAC;AAC1B,CAAC;AAED,SAAgB,qBAAqB,CAAC,gBAAwB,EAAE,gBAAwB;IACtF,OAAO,CAAC,KAAK,EAAE,SAAS,EAAE,UAAU,EAAE,gBAAgB,EAAE,IAAI,EAAE,gBAAgB,CAAC,CAAC;AAClF,CAAC;AAED,SAAgB,4BAA4B,CAAC,GAAsB;IACjE,mFAAmF;IACnF,OAAO,EAAE,GAAG,GAAG,EAAE,oBAAoB,EAAE,GAAG,CAAC,oBAAoB,IAAI,GAAG,EAAE,CAAC;AAC3E,CAAC"}
@@ -0,0 +1,4 @@
1
+ export declare const REACT_DEV_WATCH_DIRECTORIES: string[];
2
+ export declare function buildReactDevWatchIgnoredSource(rootExpression: string): string;
3
+ export declare function buildReactDevConfigSource(): string;
4
+ //# sourceMappingURL=react-dev.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"react-dev.d.ts","sourceRoot":"","sources":["../../src/utils/react-dev.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,2BAA2B,UAMvC,CAAC;AAEF,wBAAgB,+BAA+B,CAAC,cAAc,EAAE,MAAM,GAAG,MAAM,CAE9E;AAED,wBAAgB,yBAAyB,IAAI,MAAM,CAkBlD"}
@@ -0,0 +1,35 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.REACT_DEV_WATCH_DIRECTORIES = void 0;
4
+ exports.buildReactDevWatchIgnoredSource = buildReactDevWatchIgnoredSource;
5
+ exports.buildReactDevConfigSource = buildReactDevConfigSource;
6
+ exports.REACT_DEV_WATCH_DIRECTORIES = [
7
+ "functions",
8
+ "bff",
9
+ ".uv",
10
+ ".swallowkit",
11
+ "shared/dist",
12
+ ];
13
+ function buildReactDevWatchIgnoredSource(rootExpression) {
14
+ return `${JSON.stringify(exports.REACT_DEV_WATCH_DIRECTORIES)}.map(directory => \`\${${rootExpression}.replace(/\\\\/g, '/').replace(/\\/$/, '')}/\${directory}/**\`)`;
15
+ }
16
+ function buildReactDevConfigSource() {
17
+ return `import { defineConfig, loadConfigFromFile, mergeConfig } from 'vite';
18
+
19
+ export default defineConfig(async env => {
20
+ const loaded = await loadConfigFromFile(env, undefined, process.cwd());
21
+ const config = loaded?.config ?? {};
22
+ if (config.server?.watch === null) return config;
23
+ return mergeConfig(config, {
24
+ plugins: [{
25
+ name: 'swallowkit-dev-watch-boundaries',
26
+ configResolved(resolved) {
27
+ resolved.configFileDependencies.push(...(loaded?.dependencies ?? []));
28
+ },
29
+ }],
30
+ server: { watch: { ignored: ${buildReactDevWatchIgnoredSource("process.cwd()")} } },
31
+ });
32
+ });
33
+ `;
34
+ }
35
+ //# sourceMappingURL=react-dev.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"react-dev.js","sourceRoot":"","sources":["../../src/utils/react-dev.ts"],"names":[],"mappings":";;;AAQA,0EAEC;AAED,8DAkBC;AA9BY,QAAA,2BAA2B,GAAG;IACzC,WAAW;IACX,KAAK;IACL,KAAK;IACL,aAAa;IACb,aAAa;CACd,CAAC;AAEF,SAAgB,+BAA+B,CAAC,cAAsB;IACpE,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,mCAA2B,CAAC,0BAA0B,cAAc,iEAAiE,CAAC;AACjK,CAAC;AAED,SAAgB,yBAAyB;IACvC,OAAO;;;;;;;;;;;;;kCAayB,+BAA+B,CAAC,eAAe,CAAC;;;CAGjF,CAAC;AACF,CAAC"}
@@ -0,0 +1,14 @@
1
+ export interface ParsedSemver {
2
+ major: number;
3
+ minor: number;
4
+ patch: number;
5
+ prerelease: Array<string | number>;
6
+ }
7
+ export declare function parseSemver(value: string | null | undefined): ParsedSemver | null;
8
+ export declare function isPrerelease(value: string): boolean;
9
+ /**
10
+ * Compares versions by SemVer 2.0 precedence. Build metadata is ignored.
11
+ * Returns null when either value is not a valid version.
12
+ */
13
+ export declare function compareSemver(left: string, right: string): number | null;
14
+ //# sourceMappingURL=semver.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"semver.d.ts","sourceRoot":"","sources":["../../src/utils/semver.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,YAAY;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC,CAAC;CACpC;AAKD,wBAAgB,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,YAAY,GAAG,IAAI,CAWjF;AAED,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAEnD;AAED;;;GAGG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CA2BxE"}
@@ -0,0 +1,61 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.parseSemver = parseSemver;
4
+ exports.isPrerelease = isPrerelease;
5
+ exports.compareSemver = compareSemver;
6
+ const SEMVER_PATTERN = /^v?(0|[1-9]\d*)\.(0|[1-9]\d*)\.(0|[1-9]\d*)(?:-((?:0|[1-9]\d*|\d*[A-Za-z-][0-9A-Za-z-]*)(?:\.(?:0|[1-9]\d*|\d*[A-Za-z-][0-9A-Za-z-]*))*))?(?:\+[0-9A-Za-z-]+(?:\.[0-9A-Za-z-]+)*)?$/;
7
+ function parseSemver(value) {
8
+ const match = typeof value === "string" ? SEMVER_PATTERN.exec(value.trim()) : null;
9
+ if (!match)
10
+ return null;
11
+ return {
12
+ major: Number(match[1]),
13
+ minor: Number(match[2]),
14
+ patch: Number(match[3]),
15
+ prerelease: match[4]
16
+ ? match[4].split(".").map((identifier) => (/^\d+$/.test(identifier) ? Number(identifier) : identifier))
17
+ : [],
18
+ };
19
+ }
20
+ function isPrerelease(value) {
21
+ return (parseSemver(value)?.prerelease.length ?? 0) > 0;
22
+ }
23
+ /**
24
+ * Compares versions by SemVer 2.0 precedence. Build metadata is ignored.
25
+ * Returns null when either value is not a valid version.
26
+ */
27
+ function compareSemver(left, right) {
28
+ const a = parseSemver(left);
29
+ const b = parseSemver(right);
30
+ if (!a || !b)
31
+ return null;
32
+ for (const key of ["major", "minor", "patch"]) {
33
+ if (a[key] !== b[key])
34
+ return a[key] < b[key] ? -1 : 1;
35
+ }
36
+ if (a.prerelease.length === 0 || b.prerelease.length === 0) {
37
+ if (a.prerelease.length === b.prerelease.length)
38
+ return 0;
39
+ return a.prerelease.length === 0 ? 1 : -1;
40
+ }
41
+ const length = Math.max(a.prerelease.length, b.prerelease.length);
42
+ for (let index = 0; index < length; index++) {
43
+ const leftId = a.prerelease[index];
44
+ const rightId = b.prerelease[index];
45
+ if (leftId === undefined)
46
+ return -1;
47
+ if (rightId === undefined)
48
+ return 1;
49
+ if (leftId === rightId)
50
+ continue;
51
+ if (typeof leftId === "number" && typeof rightId === "number")
52
+ return leftId < rightId ? -1 : 1;
53
+ if (typeof leftId === "number")
54
+ return -1;
55
+ if (typeof rightId === "number")
56
+ return 1;
57
+ return leftId < rightId ? -1 : 1;
58
+ }
59
+ return 0;
60
+ }
61
+ //# sourceMappingURL=semver.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"semver.js","sourceRoot":"","sources":["../../src/utils/semver.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "swallowkit",
3
- "version": "2.0.0-alpha.1",
3
+ "version": "2.0.0-alpha.10",
4
4
  "description": "Type-safe schema-driven development toolkit for Next.js and React applications on Azure",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
@@ -46,21 +46,24 @@
46
46
  "zod": "^3.25.76"
47
47
  },
48
48
  "devDependencies": {
49
+ "@azure/functions": "~4.5.0",
49
50
  "@types/jest": "^29.0.0",
50
51
  "@types/jsonwebtoken": "^9.0.0",
51
52
  "@types/node": "^20.0.0",
52
53
  "@types/prompts": "^2.4.9",
53
54
  "@types/react": "^18.0.0",
55
+ "@types/react-dom": "^18.3.7",
54
56
  "@typescript-eslint/eslint-plugin": "^6.0.0",
55
57
  "@typescript-eslint/parser": "^6.0.0",
58
+ "azure-functions-v3": "npm:@azure/functions@^3.6.0",
56
59
  "eslint": "^8.0.0",
57
60
  "jest": "^29.0.0",
61
+ "next": "^16.2.6",
58
62
  "prettier": "^3.0.0",
59
63
  "react": "^18.3.1",
60
64
  "react-dom": "^18.3.1",
61
65
  "ts-jest": "^29.0.0",
62
- "vitepress": "^1.6.4",
63
- "next": "^16.2.6"
66
+ "vitepress": "^1.6.4"
64
67
  },
65
68
  "engines": {
66
69
  "node": ">=22.14.0"
@@ -0,0 +1,154 @@
1
+ // Jest Snapshot v1, https://goo.gl/fbAQLP
2
+
3
+ exports[`inspect boundaries convention rules matches the csharp backend 1`] = `
4
+ [
5
+ {
6
+ "description": "SwallowKit metadata (manifest, artifact ledger, plan state). Managed by tooling only.",
7
+ "editPolicy": "never-hand-edit",
8
+ "pattern": ".swallowkit/",
9
+ "zone": "deterministic",
10
+ },
11
+ {
12
+ "description": "Zod model schemas — the single source of truth. AI/developers author these freely; deterministic generation derives everything else from them.",
13
+ "editPolicy": "free-edit",
14
+ "pattern": "shared/models/",
15
+ "zone": "ai-authored",
16
+ },
17
+ {
18
+ "description": "Infrastructure migration ledger with baseline checksums. Updated by scaffold, \`swallowkit migrations add-model\`, and \`swallowkit create-migration\`.",
19
+ "editPolicy": "never-hand-edit",
20
+ "pattern": "infra/migrations/manifest.json",
21
+ "zone": "deterministic",
22
+ },
23
+ {
24
+ "description": "Versioned Bicep migrations. Edit a migration only before it is provisioned; never change an applied migration — add a new one with \`swallowkit create-migration <slug>\`.",
25
+ "editPolicy": "free-edit",
26
+ "pattern": "infra/migrations/",
27
+ "zone": "ai-authored",
28
+ },
29
+ {
30
+ "description": "Baseline infrastructure (main.bicep and modules) whose checksums are recorded in infra/migrations/manifest.json. Hand edits block scaffold with baseline-drift; add resources through a new migration instead.",
31
+ "editPolicy": "never-hand-edit",
32
+ "pattern": "infra/",
33
+ "zone": "deterministic",
34
+ },
35
+ {
36
+ "description": "create-model and scaffold append missing model exports while preserving existing content. No managed markers; manual exports are allowed. Keep exports needed by generated code.",
37
+ "editPolicy": "free-edit",
38
+ "pattern": "shared/index.ts",
39
+ "zone": "shared",
40
+ },
41
+ {
42
+ "description": "Any path not recorded in the artifact ledger is AI/developer-authored. Business logic, custom pages, custom Functions, and tests belong here.",
43
+ "editPolicy": "free-edit",
44
+ "pattern": "*",
45
+ "zone": "ai-authored",
46
+ },
47
+ ]
48
+ `;
49
+
50
+ exports[`inspect boundaries convention rules matches the python backend 1`] = `
51
+ [
52
+ {
53
+ "description": "SwallowKit metadata (manifest, artifact ledger, plan state). Managed by tooling only.",
54
+ "editPolicy": "never-hand-edit",
55
+ "pattern": ".swallowkit/",
56
+ "zone": "deterministic",
57
+ },
58
+ {
59
+ "description": "Zod model schemas — the single source of truth. AI/developers author these freely; deterministic generation derives everything else from them.",
60
+ "editPolicy": "free-edit",
61
+ "pattern": "shared/models/",
62
+ "zone": "ai-authored",
63
+ },
64
+ {
65
+ "description": "Infrastructure migration ledger with baseline checksums. Updated by scaffold, \`swallowkit migrations add-model\`, and \`swallowkit create-migration\`.",
66
+ "editPolicy": "never-hand-edit",
67
+ "pattern": "infra/migrations/manifest.json",
68
+ "zone": "deterministic",
69
+ },
70
+ {
71
+ "description": "Versioned Bicep migrations. Edit a migration only before it is provisioned; never change an applied migration — add a new one with \`swallowkit create-migration <slug>\`.",
72
+ "editPolicy": "free-edit",
73
+ "pattern": "infra/migrations/",
74
+ "zone": "ai-authored",
75
+ },
76
+ {
77
+ "description": "Baseline infrastructure (main.bicep and modules) whose checksums are recorded in infra/migrations/manifest.json. Hand edits block scaffold with baseline-drift; add resources through a new migration instead.",
78
+ "editPolicy": "never-hand-edit",
79
+ "pattern": "infra/",
80
+ "zone": "deterministic",
81
+ },
82
+ {
83
+ "description": "create-model and scaffold append missing model exports while preserving existing content. No managed markers; manual exports are allowed. Keep exports needed by generated code.",
84
+ "editPolicy": "free-edit",
85
+ "pattern": "shared/index.ts",
86
+ "zone": "shared",
87
+ },
88
+ {
89
+ "description": "SwallowKit appends blueprint registrations under its marker; other edits are free.",
90
+ "editPolicy": "edit-outside-markers",
91
+ "pattern": "functions/function_app.py",
92
+ "zone": "shared",
93
+ },
94
+ {
95
+ "description": "SwallowKit appends connector driver requirements when connector models are scaffolded; keep those lines and edit other requirements freely.",
96
+ "editPolicy": "free-edit",
97
+ "pattern": "functions/requirements.txt",
98
+ "zone": "shared",
99
+ },
100
+ {
101
+ "description": "Any path not recorded in the artifact ledger is AI/developer-authored. Business logic, custom pages, custom Functions, and tests belong here.",
102
+ "editPolicy": "free-edit",
103
+ "pattern": "*",
104
+ "zone": "ai-authored",
105
+ },
106
+ ]
107
+ `;
108
+
109
+ exports[`inspect boundaries convention rules matches the typescript backend 1`] = `
110
+ [
111
+ {
112
+ "description": "SwallowKit metadata (manifest, artifact ledger, plan state). Managed by tooling only.",
113
+ "editPolicy": "never-hand-edit",
114
+ "pattern": ".swallowkit/",
115
+ "zone": "deterministic",
116
+ },
117
+ {
118
+ "description": "Zod model schemas — the single source of truth. AI/developers author these freely; deterministic generation derives everything else from them.",
119
+ "editPolicy": "free-edit",
120
+ "pattern": "shared/models/",
121
+ "zone": "ai-authored",
122
+ },
123
+ {
124
+ "description": "Infrastructure migration ledger with baseline checksums. Updated by scaffold, \`swallowkit migrations add-model\`, and \`swallowkit create-migration\`.",
125
+ "editPolicy": "never-hand-edit",
126
+ "pattern": "infra/migrations/manifest.json",
127
+ "zone": "deterministic",
128
+ },
129
+ {
130
+ "description": "Versioned Bicep migrations. Edit a migration only before it is provisioned; never change an applied migration — add a new one with \`swallowkit create-migration <slug>\`.",
131
+ "editPolicy": "free-edit",
132
+ "pattern": "infra/migrations/",
133
+ "zone": "ai-authored",
134
+ },
135
+ {
136
+ "description": "Baseline infrastructure (main.bicep and modules) whose checksums are recorded in infra/migrations/manifest.json. Hand edits block scaffold with baseline-drift; add resources through a new migration instead.",
137
+ "editPolicy": "never-hand-edit",
138
+ "pattern": "infra/",
139
+ "zone": "deterministic",
140
+ },
141
+ {
142
+ "description": "create-model and scaffold append missing model exports while preserving existing content. No managed markers; manual exports are allowed. Keep exports needed by generated code.",
143
+ "editPolicy": "free-edit",
144
+ "pattern": "shared/index.ts",
145
+ "zone": "shared",
146
+ },
147
+ {
148
+ "description": "Any path not recorded in the artifact ledger is AI/developer-authored. Business logic, custom pages, custom Functions, and tests belong here.",
149
+ "editPolicy": "free-edit",
150
+ "pattern": "*",
151
+ "zone": "ai-authored",
152
+ },
153
+ ]
154
+ `;
@@ -57,6 +57,10 @@ describe("coding-agent instruction contract", () => {
57
57
  expect(agentsMd).toContain("Verification Is a Completion Gate");
58
58
  expect(agentsMd).toContain("semantic code review answers different questions");
59
59
  expect(agentsMd).toContain("When the status is `requires-human`, stop");
60
+ expect(agentsMd).toContain("machine inspect provision --plan <runId> --wait-seconds 300");
61
+ expect(agentsMd).toContain("outcome: \"succeeded\"");
62
+ expect(agentsMd).toContain("Never re-submit Bicep");
63
+ expect(agentsMd).toContain("must not switch to normal CLI to bypass it");
60
64
  expect(agentsMd).toContain("never bypass its\napproval gate");
61
65
  });
62
66
 
@@ -88,6 +92,7 @@ describe("coding-agent instruction contract", () => {
88
92
  expect(adapter).toContain("planning");
89
93
  expect(adapter).toContain("Never hand-edit deterministic SwallowKit-managed artifacts");
90
94
  expect(adapter).toContain("SwallowKit verification");
95
+ expect(adapter).toContain("approval");
91
96
  }
92
97
  });
93
98