swallowkit 2.0.0-alpha.5 → 2.0.0-alpha.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (64) hide show
  1. package/dist/cli/commands/provision.d.ts +4 -1
  2. package/dist/cli/commands/provision.d.ts.map +1 -1
  3. package/dist/cli/commands/provision.js +233 -69
  4. package/dist/cli/commands/provision.js.map +1 -1
  5. package/dist/cli/index.d.ts.map +1 -1
  6. package/dist/cli/index.js +14 -1
  7. package/dist/cli/index.js.map +1 -1
  8. package/dist/core/operations/provision-deployment.d.ts +45 -0
  9. package/dist/core/operations/provision-deployment.d.ts.map +1 -0
  10. package/dist/core/operations/provision-deployment.js +151 -0
  11. package/dist/core/operations/provision-deployment.js.map +1 -0
  12. package/dist/core/operations/provision-operations.d.ts +39 -5
  13. package/dist/core/operations/provision-operations.d.ts.map +1 -1
  14. package/dist/core/operations/provision-operations.js +609 -103
  15. package/dist/core/operations/provision-operations.js.map +1 -1
  16. package/dist/core/project/capabilities.d.ts +8 -0
  17. package/dist/core/project/capabilities.d.ts.map +1 -1
  18. package/dist/core/project/capabilities.js +11 -3
  19. package/dist/core/project/capabilities.js.map +1 -1
  20. package/dist/core/project/state.d.ts +7 -0
  21. package/dist/core/project/state.d.ts.map +1 -1
  22. package/dist/core/project/state.js +86 -0
  23. package/dist/core/project/state.js.map +1 -1
  24. package/dist/core/project/workflows.d.ts.map +1 -1
  25. package/dist/core/project/workflows.js +30 -2
  26. package/dist/core/project/workflows.js.map +1 -1
  27. package/dist/machine/index.d.ts.map +1 -1
  28. package/dist/machine/index.js +17 -11
  29. package/dist/machine/index.js.map +1 -1
  30. package/dist/mcp/index.d.ts +2 -2
  31. package/dist/mcp/index.d.ts.map +1 -1
  32. package/dist/mcp/index.js +58 -12
  33. package/dist/mcp/index.js.map +1 -1
  34. package/dist/utils/azure-cli.d.ts +16 -4
  35. package/dist/utils/azure-cli.d.ts.map +1 -1
  36. package/dist/utils/azure-cli.js +166 -4
  37. package/dist/utils/azure-cli.js.map +1 -1
  38. package/dist/utils/azure-diagnostics.d.ts +16 -0
  39. package/dist/utils/azure-diagnostics.d.ts.map +1 -0
  40. package/dist/utils/azure-diagnostics.js +68 -0
  41. package/dist/utils/azure-diagnostics.js.map +1 -0
  42. package/package.json +1 -1
  43. package/src/__tests__/agent-instructions.test.ts +5 -0
  44. package/src/__tests__/agent-loop-phase34.test.ts +19 -8
  45. package/src/__tests__/azure-cli.test.ts +5 -2
  46. package/src/__tests__/fixtures/az wrapper.cmd +2 -0
  47. package/src/__tests__/fixtures/azure-cli.cjs +138 -0
  48. package/src/__tests__/fixtures/provision-runner.cjs +28 -0
  49. package/src/__tests__/mcp.test.ts +56 -0
  50. package/src/__tests__/provision-runtime.test.ts +636 -0
  51. package/src/cli/commands/provision.ts +243 -70
  52. package/src/cli/index.ts +12 -2
  53. package/src/core/operations/provision-deployment.ts +167 -0
  54. package/src/core/operations/provision-operations.ts +597 -145
  55. package/src/core/project/agent-templates/AGENTS.md +22 -0
  56. package/src/core/project/agent-templates/CLAUDE.md +7 -0
  57. package/src/core/project/agent-templates/copilot-instructions.md +8 -0
  58. package/src/core/project/capabilities.ts +19 -3
  59. package/src/core/project/state.ts +70 -0
  60. package/src/core/project/workflows.ts +30 -2
  61. package/src/machine/index.ts +20 -14
  62. package/src/mcp/index.ts +50 -15
  63. package/src/utils/azure-cli.ts +167 -6
  64. package/src/utils/azure-diagnostics.ts +75 -0
@@ -0,0 +1,151 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.MAX_PROVISION_WAIT_SECONDS = exports.DEFAULT_PROVISION_WAIT_SECONDS = exports.DEPLOYMENT_QUERY = void 0;
4
+ exports.extractAzureErrors = extractAzureErrors;
5
+ exports.deploymentId = deploymentId;
6
+ exports.queryAzureDeployment = queryAzureDeployment;
7
+ exports.waitForAzureDeployment = waitForAzureDeployment;
8
+ exports.queryDeploymentOperationErrors = queryDeploymentOperationErrors;
9
+ const azure_cli_1 = require("../../utils/azure-cli");
10
+ const azure_diagnostics_1 = require("../../utils/azure-diagnostics");
11
+ exports.DEPLOYMENT_QUERY = "{id:id,name:name,state:properties.provisioningState,correlationId:properties.correlationId,templateHash:properties.templateHash,timestamp:properties.timestamp,error:properties.error}";
12
+ exports.DEFAULT_PROVISION_WAIT_SECONDS = 300;
13
+ exports.MAX_PROVISION_WAIT_SECONDS = 3600;
14
+ function record(value) {
15
+ return value !== null && typeof value === "object" && !Array.isArray(value) ? value : null;
16
+ }
17
+ function extractAzureErrors(value, secretValues = []) {
18
+ const result = [];
19
+ const visit = (entry, depth) => {
20
+ if (depth > 8 || result.length >= 20)
21
+ return;
22
+ if (typeof entry === "string") {
23
+ try {
24
+ visit(JSON.parse(entry), depth + 1);
25
+ }
26
+ catch { /* Only structured Azure errors are projected. */ }
27
+ return;
28
+ }
29
+ const item = record(entry);
30
+ if (!item)
31
+ return;
32
+ if (typeof item.code === "string" && typeof item.message === "string") {
33
+ result.push({ code: (0, azure_diagnostics_1.redactAzureText)(item.code, secretValues).slice(0, 200), message: (0, azure_diagnostics_1.redactAzureText)(item.message, secretValues).slice(0, 2000) });
34
+ }
35
+ if (item.error)
36
+ visit(item.error, depth + 1);
37
+ if (Array.isArray(item.details))
38
+ item.details.forEach((detail) => visit(detail, depth + 1));
39
+ };
40
+ visit(value, 0);
41
+ return result;
42
+ }
43
+ function deploymentId(reference) {
44
+ return reference.id ?? `/subscriptions/${reference.subscription}/resourceGroups/${reference.resourceGroup}/providers/Microsoft.Resources/deployments/${reference.name}`;
45
+ }
46
+ async function queryAzureDeployment(reference, options = {}) {
47
+ const result = await (0, azure_cli_1.runAzCliAsync)([
48
+ "deployment", "group", "show", "--name", reference.name,
49
+ "--resource-group", reference.resourceGroup, "--subscription", reference.subscription,
50
+ "--query", exports.DEPLOYMENT_QUERY, "-o", "json",
51
+ ], { timeout: options.timeoutMs ?? 30000, signal: options.signal });
52
+ const diagnostic = (0, azure_diagnostics_1.azureCliDiagnostic)(result, "deployment-state", options.secretValues);
53
+ const unknown = (reason) => ({
54
+ state: "unknown", reference, reason, errors: [], diagnostic,
55
+ });
56
+ if (result.status !== 0 || result.failureKind) {
57
+ if (result.failureKind === "cancelled")
58
+ return unknown("cancelled");
59
+ return unknown(/DeploymentNotFound|ResourceGroupNotFound/i.test(`${result.stderr}\n${result.stdout}`) ? "not-found" : "query-failed");
60
+ }
61
+ if (result.stdoutTruncated)
62
+ return unknown("invalid-response");
63
+ let parsed;
64
+ try {
65
+ parsed = record(JSON.parse(result.stdout));
66
+ }
67
+ catch {
68
+ return unknown("invalid-response");
69
+ }
70
+ if (!parsed || typeof parsed.id !== "string" || typeof parsed.state !== "string" || typeof parsed.correlationId !== "string") {
71
+ return unknown("invalid-response");
72
+ }
73
+ if (parsed.id.toLowerCase() !== deploymentId(reference).toLowerCase()
74
+ || (reference.correlationId && parsed.correlationId !== reference.correlationId)
75
+ || (reference.templateHash && parsed.templateHash !== reference.templateHash)) {
76
+ return unknown("identity-changed");
77
+ }
78
+ if (reference.previousCorrelationId && parsed.correlationId === reference.previousCorrelationId) {
79
+ return unknown("not-yet-observed");
80
+ }
81
+ const states = {
82
+ accepted: "Accepted", running: "Running", creating: "Running", updating: "Running",
83
+ succeeded: "Succeeded", failed: "Failed", canceled: "Canceled", cancelled: "Canceled",
84
+ };
85
+ const state = states[parsed.state.toLowerCase()];
86
+ if (!state)
87
+ return unknown("invalid-response");
88
+ return {
89
+ state,
90
+ reference: {
91
+ ...reference,
92
+ id: parsed.id,
93
+ correlationId: parsed.correlationId,
94
+ ...(typeof parsed.templateHash === "string" ? { templateHash: parsed.templateHash } : {}),
95
+ },
96
+ errors: extractAzureErrors(parsed.error, options.secretValues),
97
+ diagnostic,
98
+ };
99
+ }
100
+ async function waitForAzureDeployment(reference, options) {
101
+ let observation;
102
+ do {
103
+ const remaining = options.deadline - Date.now();
104
+ // Even when the wait budget is exhausted, one bounded read can identify an accepted submission.
105
+ observation = await queryAzureDeployment(reference, {
106
+ timeoutMs: remaining > 0 ? Math.min(options.queryTimeoutMs ?? 30000, remaining) : options.queryTimeoutMs ?? 30000,
107
+ signal: options.signal,
108
+ secretValues: options.secretValues,
109
+ });
110
+ if (observation.state !== "unknown")
111
+ reference = observation.reference;
112
+ options.onObservation?.(observation);
113
+ if (observation.state === "Succeeded" || observation.state === "Failed" || observation.state === "Canceled")
114
+ return observation;
115
+ if (observation.state === "unknown" && observation.reason !== "not-yet-observed" && observation.reason !== "not-found")
116
+ return observation;
117
+ if (Date.now() >= options.deadline || options.signal?.aborted)
118
+ return observation;
119
+ await new Promise((resolve) => {
120
+ const done = () => {
121
+ clearTimeout(timer);
122
+ options.signal?.removeEventListener("abort", done);
123
+ resolve();
124
+ };
125
+ const timer = setTimeout(done, Math.min(options.pollIntervalMs ?? 5000, Math.max(options.deadline - Date.now(), 0)));
126
+ options.signal?.addEventListener("abort", done, { once: true });
127
+ if (options.signal?.aborted)
128
+ done();
129
+ });
130
+ } while (!options.signal?.aborted);
131
+ return observation;
132
+ }
133
+ async function queryDeploymentOperationErrors(reference, secretValues = [], signal) {
134
+ const result = await (0, azure_cli_1.runAzCliAsync)([
135
+ "deployment", "operation", "group", "list",
136
+ "--resource-group", reference.resourceGroup, "--name", reference.name, "--subscription", reference.subscription,
137
+ "--query", "[?properties.provisioningState=='Failed' || properties.provisioningState=='Canceled'].{error:properties.statusMessage}",
138
+ "-o", "json",
139
+ ], { timeout: 30000, signal });
140
+ const errors = [];
141
+ if (result.status === 0 && !result.failureKind && !result.stdoutTruncated) {
142
+ try {
143
+ const parsed = JSON.parse(result.stdout);
144
+ if (Array.isArray(parsed))
145
+ parsed.slice(0, 20).forEach((item) => errors.push(...extractAzureErrors(item, secretValues)));
146
+ }
147
+ catch { /* The separate diagnostic explicitly records an unreadable operations response. */ }
148
+ }
149
+ return { errors: errors.slice(0, 20), diagnostic: (0, azure_diagnostics_1.azureCliDiagnostic)(result, "deployment-operations", secretValues) };
150
+ }
151
+ //# sourceMappingURL=provision-deployment.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"provision-deployment.js","sourceRoot":"","sources":["../../../src/core/operations/provision-deployment.ts"],"names":[],"mappings":"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"}
@@ -1,14 +1,15 @@
1
1
  /**
2
2
  * Plan / Apply Provision — Azure プロビジョニングの事前計画と承認付き実行。
3
3
  *
4
- * - plan provision: ローカルの決定論的プリフライト(Bicep 解析・az CLI 有無)のみ。
5
- * ネットワークアクセスや az login を必要とする操作は行わない。
6
- * --what-if を明示した場合のみ az deployment group what-if を実行する。
4
+ * - plan provision: Bicep と Azure の現在の状態を確認する。リソースは変更しない。
7
5
  * - apply provision: 常に承認(--approve)必須。承認なしでは requires-human で停止する。
8
6
  * - 対話的な `swallowkit provision` は同じ計画をメモリ上で作成・表示し、確認後に
9
7
  * executeProvisionPlan で同じ安全確認を経て実行する(計画ファイルは保存しない)。
10
8
  */
9
+ import { AzureCliDiagnostic } from "../../utils/azure-diagnostics";
10
+ import type { MachineNextAction, MachineOperationStatus } from "../../machine/contracts";
11
11
  import { InfraInspection } from "../project/infra";
12
+ import { DeploymentObservation, DeploymentReference } from "./provision-deployment";
12
13
  import { MigrationManifest, MigrationState, ResolvedMigration } from "../project/migrations";
13
14
  export interface PlanProvisionOptions {
14
15
  resourceGroup: string;
@@ -20,8 +21,10 @@ export interface PlanProvisionOptions {
20
21
  adoptExisting?: boolean;
21
22
  baseline?: number;
22
23
  reconcile?: boolean;
24
+ /** Attach an existing, matching baseline deployment without submitting Bicep again. */
25
+ resumeDeployment?: string;
23
26
  }
24
- export type ProvisionMode = "offline" | "bootstrap" | "adoption-required" | "adopt" | "migrate" | "noop" | "reconcile";
27
+ export type ProvisionMode = "offline" | "bootstrap" | "adoption-required" | "adopt" | "migrate" | "noop" | "reconcile" | "recover";
25
28
  interface ProvisionCommand {
26
29
  file: "az";
27
30
  args: string[];
@@ -53,6 +56,7 @@ export interface ProvisionPlanData {
53
56
  requiresApproval: true;
54
57
  fingerprints: Record<string, string | null>;
55
58
  baselineSnapshotChecksum?: string;
59
+ recoveryDeployment?: DeploymentReference;
56
60
  }
57
61
  /**
58
62
  * Builds the provision plan. Machine/MCP callers persist it for a later `apply provision --plan`;
@@ -64,17 +68,44 @@ export declare function planProvisionOperation(options: PlanProvisionOptions, pl
64
68
  export interface ApplyProvisionOptions {
65
69
  planId: string;
66
70
  approve?: boolean;
71
+ waitSeconds?: number;
67
72
  }
68
73
  export interface ApplyProvisionResult {
74
+ status: MachineOperationStatus;
75
+ outcome: "succeeded" | "in-progress" | "unknown" | "partial" | "failed";
76
+ runId: string;
69
77
  planId: string;
70
78
  resourceGroup: string;
71
79
  location: string;
72
80
  swaLocation: string;
73
81
  executedCommands: string[];
74
- deploymentOutputs?: Record<string, unknown>;
75
82
  warnings: string[];
83
+ diagnostics: AzureCliDiagnostic[];
84
+ deployment?: DeploymentObservation;
85
+ nextActions: MachineNextAction[];
86
+ interrupted?: NodeJS.Signals;
87
+ }
88
+ export interface ProvisionRun {
89
+ schemaVersion: 1;
90
+ runId: string;
91
+ projectRoot: string;
92
+ plan: ProvisionPlanData;
93
+ cursor: number;
94
+ attemptedIndex?: number;
95
+ deployment?: DeploymentReference;
96
+ observation?: DeploymentObservation;
97
+ outcome: ApplyProvisionResult["outcome"];
98
+ executedCommands: string[];
99
+ warnings: string[];
100
+ diagnostics: AzureCliDiagnostic[];
101
+ updatedAt: string;
76
102
  }
77
103
  export declare const INTERACTIVE_PROVISION_RETRY_HINT = "Run \"swallowkit provision\" again to review the current state.";
104
+ export declare function provisionNextActions(runId: string): MachineNextAction[];
105
+ export declare function inspectProvisionOperation(options: {
106
+ planId: string;
107
+ waitSeconds?: number;
108
+ }): Promise<ApplyProvisionResult>;
78
109
  export declare function applyProvisionOperation(options: ApplyProvisionOptions): Promise<ApplyProvisionResult>;
79
110
  /**
80
111
  * Runs an approved provision plan with every safety check: local files and Azure state must still
@@ -84,6 +115,9 @@ export declare function executeProvisionPlan(plan: ProvisionPlanData, options?:
84
115
  approve?: boolean;
85
116
  retryHint?: string;
86
117
  projectRoot?: string;
118
+ waitSeconds?: number;
119
+ signal?: AbortSignal;
120
+ pollIntervalMs?: number;
87
121
  }): Promise<ApplyProvisionResult>;
88
122
  export {};
89
123
  //# sourceMappingURL=provision-operations.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"provision-operations.d.ts","sourceRoot":"","sources":["../../../src/core/operations/provision-operations.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"provision-operations.d.ts","sourceRoot":"","sources":["../../../src/core/operations/provision-operations.ts"],"names":[],"mappings":"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"}