@miosa/cli 1.1.4 → 1.1.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -86,6 +86,55 @@ Use `m7i.2xlarge` for the supported baseline tier.
86
86
 
87
87
  ## Deploy — 60 seconds to first deploy
88
88
 
89
+ ### Safe application release workflow
90
+
91
+ Use the application workflow for normal preview, production, and recovery operations.
92
+ It keeps the source directory linked to one exact MIOSA deployment and refuses to report production success until the immutable release, artifact digest, route contract, App Engine placement, database attachment, and required configuration are proven.
93
+
94
+ ```bash
95
+ miosa app link . --app <deployment-id> --environment production
96
+ miosa app pull .
97
+ miosa app preview . --json
98
+ miosa app verify <release-id> . --json
99
+ miosa app promote <release-id> . --yes --json
100
+ ```
101
+
102
+ Promotion and rollback always target an exact release ID.
103
+ They persist an operation record and idempotency key under `.miosa/operations`, so a request timeout can be inspected or resumed without creating duplicate deployment work.
104
+
105
+ ```bash
106
+ miosa app recover <operation-id> . --json
107
+ miosa app recover <operation-id> . --resume --json
108
+ miosa app rollback <release-id> . --yes --json
109
+ ```
110
+
111
+ Declare application-specific acceptance requirements in `.miosa/acceptance.json`.
112
+ The default contract requires HTTP 200 from `/`.
113
+
114
+ ```json
115
+ {
116
+ "schema_version": 1,
117
+ "routes": [
118
+ {
119
+ "id": "access",
120
+ "path": "/access",
121
+ "expected_status": [200],
122
+ "body_contains": ["Open the working brief"],
123
+ "content_type": "text/html",
124
+ "required": true
125
+ }
126
+ ],
127
+ "required_env": ["DATABASE_URL", "BRIEF_AUTH_SECRET"],
128
+ "database": {
129
+ "required": true,
130
+ "health_path": "/api/health"
131
+ }
132
+ }
133
+ ```
134
+
135
+ Each verification writes a durable, machine-readable receipt under `.miosa/receipts`.
136
+ That receipt is the acceptance evidence for the release.
137
+
89
138
  Point the CLI at any repo and it handles the rest: framework detection, build wiring, GitHub webhook setup, and live log streaming.
90
139
 
91
140
  For production app hosting, MIOSA recommends App Engine. It runs apps on the
@@ -0,0 +1,23 @@
1
+ export type ApplicationOperationState = "pending" | "succeeded" | "failed" | "blocked";
2
+ export interface ApplicationOperation {
3
+ schema_version: 1;
4
+ operation_id: string;
5
+ server_operation_id?: string;
6
+ idempotency_key: string;
7
+ action: "promote" | "rollback";
8
+ deployment_id: string;
9
+ release_id: string;
10
+ previous_version_id: string | null;
11
+ target_version_id: string;
12
+ state: ApplicationOperationState;
13
+ receipt_id?: string;
14
+ error?: string;
15
+ created_at: string;
16
+ updated_at: string;
17
+ }
18
+ export declare function applicationIdempotencyKey(action: ApplicationOperation["action"], deploymentId: string, releaseId: string, targetVersionId: string): string;
19
+ export declare function createApplicationOperation(appDir: string, input: Omit<ApplicationOperation, "schema_version" | "operation_id" | "created_at" | "updated_at">): ApplicationOperation;
20
+ export declare function saveApplicationOperation(appDir: string, operation: ApplicationOperation): string;
21
+ export declare function loadApplicationOperation(appDir: string, operationId: string): ApplicationOperation | null;
22
+ export declare function updateApplicationOperation(appDir: string, operation: ApplicationOperation, update: Partial<ApplicationOperation>): ApplicationOperation;
23
+ //# sourceMappingURL=app-operation.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"app-operation.d.ts","sourceRoot":"","sources":["../src/app-operation.ts"],"names":[],"mappings":"AAIA,MAAM,MAAM,yBAAyB,GACnC,SAAS,GAAG,WAAW,GAAG,QAAQ,GAAG,SAAS,CAAC;AAEjD,MAAM,WAAW,oBAAoB;IACnC,cAAc,EAAE,CAAC,CAAC;IAClB,YAAY,EAAE,MAAM,CAAC;IACrB,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,eAAe,EAAE,MAAM,CAAC;IACxB,MAAM,EAAE,SAAS,GAAG,UAAU,CAAC;IAC/B,aAAa,EAAE,MAAM,CAAC;IACtB,UAAU,EAAE,MAAM,CAAC;IACnB,mBAAmB,EAAE,MAAM,GAAG,IAAI,CAAC;IACnC,iBAAiB,EAAE,MAAM,CAAC;IAC1B,KAAK,EAAE,yBAAyB,CAAC;IACjC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,wBAAgB,yBAAyB,CACvC,MAAM,EAAE,oBAAoB,CAAC,QAAQ,CAAC,EACtC,YAAY,EAAE,MAAM,EACpB,SAAS,EAAE,MAAM,EACjB,eAAe,EAAE,MAAM,GACtB,MAAM,CAKR;AAMD,wBAAgB,0BAA0B,CACxC,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,IAAI,CACT,oBAAoB,EACpB,gBAAgB,GAAG,cAAc,GAAG,YAAY,GAAG,YAAY,CAChE,GACA,oBAAoB,CAWtB;AAED,wBAAgB,wBAAwB,CACtC,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,oBAAoB,GAC9B,MAAM,CAQR;AAED,wBAAgB,wBAAwB,CACtC,MAAM,EAAE,MAAM,EACd,WAAW,EAAE,MAAM,GAClB,oBAAoB,GAAG,IAAI,CAI7B;AAED,wBAAgB,0BAA0B,CACxC,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,oBAAoB,EAC/B,MAAM,EAAE,OAAO,CAAC,oBAAoB,CAAC,GACpC,oBAAoB,CAQtB"}
@@ -0,0 +1,49 @@
1
+ import { createHash, randomUUID } from "node:crypto";
2
+ import fs from "node:fs";
3
+ import path from "node:path";
4
+ export function applicationIdempotencyKey(action, deploymentId, releaseId, targetVersionId) {
5
+ return `app_${createHash("sha256")
6
+ .update([action, deploymentId, releaseId, targetVersionId].join(":"))
7
+ .digest("hex")
8
+ .slice(0, 40)}`;
9
+ }
10
+ function operationDir(appDir) {
11
+ return path.join(appDir, ".miosa", "operations");
12
+ }
13
+ export function createApplicationOperation(appDir, input) {
14
+ const now = new Date().toISOString();
15
+ const operation = {
16
+ schema_version: 1,
17
+ operation_id: `op_${randomUUID()}`,
18
+ ...input,
19
+ created_at: now,
20
+ updated_at: now,
21
+ };
22
+ saveApplicationOperation(appDir, operation);
23
+ return operation;
24
+ }
25
+ export function saveApplicationOperation(appDir, operation) {
26
+ const dir = operationDir(appDir);
27
+ fs.mkdirSync(dir, { recursive: true, mode: 0o700 });
28
+ const file = path.join(dir, `${operation.operation_id}.json`);
29
+ fs.writeFileSync(file, `${JSON.stringify(operation, null, 2)}\n`, {
30
+ mode: 0o600,
31
+ });
32
+ return file;
33
+ }
34
+ export function loadApplicationOperation(appDir, operationId) {
35
+ const file = path.join(operationDir(appDir), `${operationId}.json`);
36
+ if (!fs.existsSync(file))
37
+ return null;
38
+ return JSON.parse(fs.readFileSync(file, "utf8"));
39
+ }
40
+ export function updateApplicationOperation(appDir, operation, update) {
41
+ const next = {
42
+ ...operation,
43
+ ...update,
44
+ updated_at: new Date().toISOString(),
45
+ };
46
+ saveApplicationOperation(appDir, next);
47
+ return next;
48
+ }
49
+ //# sourceMappingURL=app-operation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"app-operation.js","sourceRoot":"","sources":["../src/app-operation.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACrD,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAsB7B,MAAM,UAAU,yBAAyB,CACvC,MAAsC,EACtC,YAAoB,EACpB,SAAiB,EACjB,eAAuB;IAEvB,OAAO,OAAO,UAAU,CAAC,QAAQ,CAAC;SAC/B,MAAM,CAAC,CAAC,MAAM,EAAE,YAAY,EAAE,SAAS,EAAE,eAAe,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;SACpE,MAAM,CAAC,KAAK,CAAC;SACb,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC;AACpB,CAAC;AAED,SAAS,YAAY,CAAC,MAAc;IAClC,OAAO,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,QAAQ,EAAE,YAAY,CAAC,CAAC;AACnD,CAAC;AAED,MAAM,UAAU,0BAA0B,CACxC,MAAc,EACd,KAGC;IAED,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IACrC,MAAM,SAAS,GAAyB;QACtC,cAAc,EAAE,CAAC;QACjB,YAAY,EAAE,MAAM,UAAU,EAAE,EAAE;QAClC,GAAG,KAAK;QACR,UAAU,EAAE,GAAG;QACf,UAAU,EAAE,GAAG;KAChB,CAAC;IACF,wBAAwB,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;IAC5C,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,MAAM,UAAU,wBAAwB,CACtC,MAAc,EACd,SAA+B;IAE/B,MAAM,GAAG,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC;IACjC,EAAE,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;IACpD,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC,YAAY,OAAO,CAAC,CAAC;IAC9D,EAAE,CAAC,aAAa,CAAC,IAAI,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE;QAChE,IAAI,EAAE,KAAK;KACZ,CAAC,CAAC;IACH,OAAO,IAAI,CAAC;AACd,CAAC;AAED,MAAM,UAAU,wBAAwB,CACtC,MAAc,EACd,WAAmB;IAEnB,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,EAAE,GAAG,WAAW,OAAO,CAAC,CAAC;IACpE,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC;QAAE,OAAO,IAAI,CAAC;IACtC,OAAO,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,IAAI,EAAE,MAAM,CAAC,CAAyB,CAAC;AAC3E,CAAC;AAED,MAAM,UAAU,0BAA0B,CACxC,MAAc,EACd,SAA+B,EAC/B,MAAqC;IAErC,MAAM,IAAI,GAAG;QACX,GAAG,SAAS;QACZ,GAAG,MAAM;QACT,UAAU,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;KACrC,CAAC;IACF,wBAAwB,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IACvC,OAAO,IAAI,CAAC;AACd,CAAC"}
@@ -0,0 +1,99 @@
1
+ export interface RouteRequirement {
2
+ id: string;
3
+ path: string;
4
+ expected_status: number[];
5
+ body_contains?: string[];
6
+ content_type?: string;
7
+ required?: boolean;
8
+ }
9
+ export interface AcceptanceContract {
10
+ schema_version: 1;
11
+ routes: RouteRequirement[];
12
+ required_env?: string[];
13
+ database?: {
14
+ required: boolean;
15
+ health_path?: string;
16
+ };
17
+ connectors?: Array<{
18
+ id: string;
19
+ required?: boolean;
20
+ }>;
21
+ scheduled_jobs?: Array<{
22
+ id: string;
23
+ required?: boolean;
24
+ }>;
25
+ }
26
+ export interface ReleaseInspection {
27
+ deployment_id: string;
28
+ deployment_name: string;
29
+ tenant_id: string | null;
30
+ workspace_id: string | null;
31
+ deployment_state: string;
32
+ deployment_product: string;
33
+ public_url: string | null;
34
+ active_version_id: string | null;
35
+ active_release_id: string | null;
36
+ running_artifact_sha256: string | null;
37
+ expected_artifact_sha256: string | null;
38
+ host_id: string | null;
39
+ host_status: string | null;
40
+ appliance_status: string | null;
41
+ database_attached: boolean;
42
+ effective_env_names: string[];
43
+ healthy_connector_ids: string[];
44
+ healthy_scheduled_job_ids: string[];
45
+ }
46
+ export interface ProbeResponse {
47
+ status: number;
48
+ body: string;
49
+ content_type: string | null;
50
+ latency_ms?: number;
51
+ }
52
+ export interface ReleaseVerificationAdapter {
53
+ inspect(): Promise<ReleaseInspection>;
54
+ probe(url: string, path: string): Promise<ProbeResponse>;
55
+ }
56
+ export interface VerificationCheck {
57
+ id: string;
58
+ status: "pass" | "fail" | "warning" | "not_required";
59
+ message: string;
60
+ details?: Record<string, unknown>;
61
+ recovery?: string[];
62
+ }
63
+ export interface ReleaseReceipt {
64
+ schema_version: 1;
65
+ receipt_id: string;
66
+ application: string;
67
+ environment: string;
68
+ result: "verified" | "blocked";
69
+ promotion_allowed: boolean;
70
+ deployment: {
71
+ id: string;
72
+ name: string;
73
+ product: string;
74
+ url: string | null;
75
+ host_id: string | null;
76
+ tenant_id: string | null;
77
+ workspace_id: string | null;
78
+ };
79
+ release: {
80
+ id: string;
81
+ version_id: string;
82
+ artifact_sha256: string | null;
83
+ };
84
+ checks: VerificationCheck[];
85
+ next_actions: string[];
86
+ verified_at: string;
87
+ }
88
+ export interface VerifyApplicationReleaseInput {
89
+ application: string;
90
+ environment: string;
91
+ expected_release_id: string;
92
+ expected_version_id: string;
93
+ expected_workspace_id?: string;
94
+ contract: AcceptanceContract;
95
+ }
96
+ export declare function loadAcceptanceContract(appDir: string, explicitPath?: string): AcceptanceContract;
97
+ export declare function saveReleaseReceipt(appDir: string, receipt: ReleaseReceipt): string;
98
+ export declare function verifyApplicationRelease(input: VerifyApplicationReleaseInput, adapter: ReleaseVerificationAdapter): Promise<ReleaseReceipt>;
99
+ //# sourceMappingURL=app-release.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"app-release.d.ts","sourceRoot":"","sources":["../src/app-release.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,229 @@
1
+ import { createHash } from "node:crypto";
2
+ import fs from "node:fs";
3
+ import path from "node:path";
4
+ import { UserError } from "./errors.js";
5
+ const DEFAULT_CONTRACT = {
6
+ schema_version: 1,
7
+ routes: [
8
+ {
9
+ id: "root",
10
+ path: "/",
11
+ expected_status: [200],
12
+ required: true,
13
+ },
14
+ ],
15
+ };
16
+ export function loadAcceptanceContract(appDir, explicitPath) {
17
+ const candidates = explicitPath
18
+ ? [path.resolve(appDir, explicitPath)]
19
+ : [
20
+ path.join(appDir, ".miosa", "acceptance.json"),
21
+ path.join(appDir, "miosa.app.json"),
22
+ ];
23
+ const found = candidates.find((candidate) => fs.existsSync(candidate));
24
+ if (!found)
25
+ return DEFAULT_CONTRACT;
26
+ let parsed;
27
+ try {
28
+ parsed = JSON.parse(fs.readFileSync(found, "utf8"));
29
+ }
30
+ catch (error) {
31
+ throw new UserError(`Invalid acceptance contract ${found}: ${error instanceof Error ? error.message : String(error)}`);
32
+ }
33
+ const outer = parsed;
34
+ const contract = (outer.acceptance ?? parsed);
35
+ if (contract.schema_version !== 1 ||
36
+ !Array.isArray(contract.routes) ||
37
+ contract.routes.length === 0) {
38
+ throw new UserError(`Acceptance contract ${found} must use schema_version 1 and declare at least one route.`);
39
+ }
40
+ for (const route of contract.routes) {
41
+ if (!route ||
42
+ typeof route.id !== "string" ||
43
+ typeof route.path !== "string" ||
44
+ !Array.isArray(route.expected_status) ||
45
+ route.expected_status.length === 0) {
46
+ throw new UserError(`Acceptance contract ${found} has an invalid route.`);
47
+ }
48
+ }
49
+ return contract;
50
+ }
51
+ export function saveReleaseReceipt(appDir, receipt) {
52
+ const receiptDir = path.join(appDir, ".miosa", "receipts");
53
+ fs.mkdirSync(receiptDir, { recursive: true, mode: 0o700 });
54
+ const receiptPath = path.join(receiptDir, `${receipt.receipt_id}.json`);
55
+ fs.writeFileSync(receiptPath, `${JSON.stringify(receipt, null, 2)}\n`, {
56
+ mode: 0o600,
57
+ });
58
+ return receiptPath;
59
+ }
60
+ function check(checks, id, ok, pass, fail, details, recovery) {
61
+ checks.push({
62
+ id,
63
+ status: ok ? "pass" : "fail",
64
+ message: ok ? pass : fail,
65
+ ...(details ? { details } : {}),
66
+ ...(!ok && recovery ? { recovery } : {}),
67
+ });
68
+ }
69
+ function receiptId(input, inspection) {
70
+ return `rcpt_${createHash("sha256")
71
+ .update([
72
+ input.application,
73
+ input.environment,
74
+ input.expected_release_id,
75
+ input.expected_version_id,
76
+ inspection.deployment_id,
77
+ inspection.running_artifact_sha256 ?? "",
78
+ ].join(":"))
79
+ .digest("hex")
80
+ .slice(0, 24)}`;
81
+ }
82
+ export async function verifyApplicationRelease(input, adapter) {
83
+ const inspection = await adapter.inspect();
84
+ const checks = [];
85
+ check(checks, "deployment_running", inspection.deployment_state === "running", "Deployment is running.", `Deployment state is ${inspection.deployment_state}, expected running.`);
86
+ if (input.expected_workspace_id) {
87
+ check(checks, "workspace_scope", inspection.workspace_id === input.expected_workspace_id, "The deployment is attached to the intended workspace.", "The deployment workspace does not match the linked application.", {
88
+ expected_workspace_id: input.expected_workspace_id,
89
+ actual_workspace_id: inspection.workspace_id,
90
+ });
91
+ }
92
+ check(checks, "exact_release", inspection.active_release_id === input.expected_release_id &&
93
+ inspection.active_version_id === input.expected_version_id, "The exact requested immutable release is active.", "The active release or version does not match the requested release.", {
94
+ expected_release_id: input.expected_release_id,
95
+ active_release_id: inspection.active_release_id,
96
+ expected_version_id: input.expected_version_id,
97
+ active_version_id: inspection.active_version_id,
98
+ });
99
+ const digestComparable = Boolean(inspection.expected_artifact_sha256 && inspection.running_artifact_sha256);
100
+ check(checks, "artifact_integrity", digestComparable &&
101
+ inspection.expected_artifact_sha256 ===
102
+ inspection.running_artifact_sha256, "The running artifact digest matches the immutable release.", digestComparable
103
+ ? "The running artifact digest does not match the immutable release."
104
+ : "Artifact identity is incomplete and cannot be proven.", {
105
+ expected: inspection.expected_artifact_sha256,
106
+ running: inspection.running_artifact_sha256,
107
+ });
108
+ if (inspection.deployment_product === "docker_deploy") {
109
+ check(checks, "placement", Boolean(inspection.host_id &&
110
+ inspection.host_status === "active" &&
111
+ inspection.appliance_status === "healthy"), "App Engine placement is active and healthy.", "App Engine placement is missing, inactive, or unhealthy.", {
112
+ host_id: inspection.host_id,
113
+ host_status: inspection.host_status,
114
+ appliance_status: inspection.appliance_status,
115
+ });
116
+ }
117
+ const requiredEnv = input.contract.required_env ?? [];
118
+ const missingEnv = requiredEnv.filter((name) => !inspection.effective_env_names.includes(name));
119
+ check(checks, "required_configuration", missingEnv.length === 0, `All ${requiredEnv.length} required configuration names are present.`, `Missing required configuration: ${missingEnv.join(", ")}.`, { required: requiredEnv, missing: missingEnv }, missingEnv.map((name) => `miosa secrets set ${name} --app ${input.application}`));
120
+ if (input.contract.database?.required) {
121
+ check(checks, "database_attachment", inspection.database_attached, "A durable database is attached.", "The application does not have a durable database attachment.");
122
+ }
123
+ for (const connector of input.contract.connectors ?? []) {
124
+ const healthy = inspection.healthy_connector_ids.includes(connector.id);
125
+ checks.push({
126
+ id: `connector:${connector.id}`,
127
+ status: healthy
128
+ ? "pass"
129
+ : connector.required === false
130
+ ? "warning"
131
+ : "fail",
132
+ message: healthy
133
+ ? `Connector ${connector.id} is bound and healthy.`
134
+ : `Connector ${connector.id} is not bound and healthy.`,
135
+ });
136
+ }
137
+ for (const job of input.contract.scheduled_jobs ?? []) {
138
+ const healthy = inspection.healthy_scheduled_job_ids.includes(job.id);
139
+ checks.push({
140
+ id: `scheduled_job:${job.id}`,
141
+ status: healthy ? "pass" : job.required === false ? "warning" : "fail",
142
+ message: healthy
143
+ ? `Scheduled job ${job.id} is registered and healthy.`
144
+ : `Scheduled job ${job.id} is not registered and healthy.`,
145
+ });
146
+ }
147
+ if (!inspection.public_url) {
148
+ check(checks, "public_url", false, "", "The deployment has no public URL.");
149
+ }
150
+ else {
151
+ for (const requirement of input.contract.routes) {
152
+ const required = requirement.required !== false;
153
+ try {
154
+ const response = await adapter.probe(inspection.public_url, requirement.path);
155
+ const statusOk = requirement.expected_status.includes(response.status);
156
+ const bodyMissing = (requirement.body_contains ?? []).filter((marker) => !response.body.includes(marker));
157
+ const typeOk = !requirement.content_type ||
158
+ response.content_type
159
+ ?.toLowerCase()
160
+ .includes(requirement.content_type.toLowerCase());
161
+ const ok = statusOk && bodyMissing.length === 0 && Boolean(typeOk);
162
+ checks.push({
163
+ id: `route:${requirement.id}`,
164
+ status: ok ? "pass" : required ? "fail" : "warning",
165
+ message: ok
166
+ ? `${requirement.path} satisfied its declared contract.`
167
+ : `${requirement.path} did not satisfy its declared contract.`,
168
+ details: {
169
+ status: response.status,
170
+ expected_status: requirement.expected_status,
171
+ missing_body_markers: bodyMissing,
172
+ content_type: response.content_type,
173
+ expected_content_type: requirement.content_type ?? null,
174
+ latency_ms: response.latency_ms ?? null,
175
+ },
176
+ });
177
+ }
178
+ catch (error) {
179
+ checks.push({
180
+ id: `route:${requirement.id}`,
181
+ status: required ? "fail" : "warning",
182
+ message: `${requirement.path} probe failed: ${error instanceof Error ? error.message : String(error)}`,
183
+ });
184
+ }
185
+ }
186
+ const healthPath = input.contract.database?.health_path;
187
+ if (input.contract.database?.required && healthPath) {
188
+ try {
189
+ const response = await adapter.probe(inspection.public_url, healthPath);
190
+ const bodyHealthy = /"status"\s*:\s*"ok"/.test(response.body) &&
191
+ /"database"\s*:\s*"ok"/.test(response.body);
192
+ check(checks, "database_health", response.status === 200 && bodyHealthy, "Database health and application schema checks passed.", "Database health or application schema checks failed.", { status: response.status, path: healthPath });
193
+ }
194
+ catch (error) {
195
+ check(checks, "database_health", false, "", `Database health probe failed: ${error instanceof Error ? error.message : String(error)}`);
196
+ }
197
+ }
198
+ }
199
+ const blocked = checks.some((item) => item.status === "fail");
200
+ const nextActions = checks
201
+ .flatMap((item) => item.recovery ?? [])
202
+ .filter((value, index, all) => all.indexOf(value) === index);
203
+ return {
204
+ schema_version: 1,
205
+ receipt_id: receiptId(input, inspection),
206
+ application: input.application,
207
+ environment: input.environment,
208
+ result: blocked ? "blocked" : "verified",
209
+ promotion_allowed: !blocked,
210
+ deployment: {
211
+ id: inspection.deployment_id,
212
+ name: inspection.deployment_name,
213
+ product: inspection.deployment_product,
214
+ url: inspection.public_url,
215
+ host_id: inspection.host_id,
216
+ tenant_id: inspection.tenant_id,
217
+ workspace_id: inspection.workspace_id,
218
+ },
219
+ release: {
220
+ id: input.expected_release_id,
221
+ version_id: input.expected_version_id,
222
+ artifact_sha256: inspection.expected_artifact_sha256,
223
+ },
224
+ checks,
225
+ next_actions: nextActions,
226
+ verified_at: new Date().toISOString(),
227
+ };
228
+ }
229
+ //# sourceMappingURL=app-release.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"app-release.js","sourceRoot":"","sources":["../src/app-release.ts"],"names":[],"mappings":"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"}
package/dist/bin/miosa.js CHANGED
@@ -66,6 +66,11 @@ Examples:
66
66
  miosa capabilities --json Print agent-readable workflows and command recipes
67
67
  miosa app inspect . --json Detect framework, commands, ports, env, and risks
68
68
  miosa app plan . --goal deploy --json Generate the exact agent-safe deploy sequence
69
+ miosa app link . --app <deployment-id> Bind source to one exact application
70
+ miosa app pull . --json Pull linked application configuration
71
+ miosa app preview . --json Create and verify a safe preview
72
+ miosa app promote <release-id> . --yes Promote and prove one exact release
73
+ miosa app rollback <release-id> . --yes Roll back and prove one exact release
69
74
  miosa computers list List all Computers
70
75
  miosa computers vnc <id> Open a Computer's VNC viewer
71
76
  miosa sandbox list List all Sandboxes
@@ -1 +1 @@
1
- {"version":3,"file":"miosa.js","sourceRoot":"","sources":["../../src/bin/miosa.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"miosa.js","sourceRoot":"","sources":["../../src/bin/miosa.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"app.d.ts","sourceRoot":"","sources":["../../src/commands/app.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AA+EzC,wBAAgB,QAAQ,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CA8D/C"}
1
+ {"version":3,"file":"app.d.ts","sourceRoot":"","sources":["../../src/commands/app.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AA6iBzC,wBAAgB,QAAQ,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAmoB/C"}