@sleepy-hollow/framework 0.3.0 → 0.3.1

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/CHANGELOG.md CHANGED
@@ -2,6 +2,21 @@
2
2
 
3
3
  All notable changes to Sleepy Hollow are documented in this file.
4
4
 
5
+ ## 0.3.1 - 2026-08-20
6
+
7
+ ### Changed: local Fly deployment preparation
8
+
9
+ `hollow deploy` no longer attempts to authenticate with Fly, upload an image,
10
+ or run live health and smoke checks. Use `hollow deploy prepare` to create or
11
+ validate a managed `Dockerfile`, `.dockerignore`, and `fly.toml` locally, then
12
+ review them and run Fly's own commands yourself.
13
+
14
+ The SQLite profile prepares one `data` volume mounted at `/data`; the PostgreSQL
15
+ profile names `DATABASE_URL` as an operator-provided secret without writing its
16
+ value. This keeps Fly-specific scaling, Machines, regions, release behavior,
17
+ and account actions in Fly's tools while preserving a portable container and
18
+ database boundary for future hosts.
19
+
5
20
  ## 0.3.0 - 2026-08-19
6
21
 
7
22
  ### Breaking: Node and Bun platform migration
package/README.md CHANGED
@@ -65,14 +65,14 @@ explicit file path in production; the Todo example demonstrates that profile.
65
65
  For multi-instance or externally managed storage, configure the optional
66
66
  PostgreSQL profile through `DATABASE_URL`.
67
67
 
68
- `hollow deploy` is provider-oriented. Fly.io is the first adapter and uses a
69
- Docker image plus `flyctl`; its persistent volume is suitable for SQLite. The
70
- application/server boundary and OCI image are portable, so future adapters can
71
- target other hosts without changing route or database code.
68
+ `hollow deploy prepare` creates local, reviewable deployment artifacts for
69
+ Fly.io; it never reads a Fly token, calls Fly, or deploys. The generated
70
+ Dockerfile keeps the application boundary portable, so future preparation
71
+ targets can support other hosts without changing route or database code.
72
72
 
73
73
  ```bash
74
- export FLY_API_TOKEN=your-app-scoped-token
75
- hollow deploy --target fly:my-api
74
+ hollow deploy prepare --target fly:my-api --database sqlite --region iad
75
+ # Review Dockerfile, .dockerignore, and fly.toml, then run the printed Fly commands.
76
76
  ```
77
77
 
78
78
  ## Documentation
package/dist/cli.d.ts CHANGED
@@ -44,7 +44,6 @@ interface GenerationResult {
44
44
  readonly wrote: boolean;
45
45
  }
46
46
 
47
- type CheckPhase = "governance" | "runner" | "traceability" | "routes" | "schemas" | "security" | "data" | "configuration" | "generated" | "changes" | "eligibility";
48
47
  type RequestedCheckScope = {
49
48
  readonly kind: "full";
50
49
  } | {
@@ -55,30 +54,6 @@ type RequestedCheckScope = {
55
54
  readonly method: string;
56
55
  readonly path: string;
57
56
  };
58
- interface CheckLocation {
59
- readonly path?: string;
60
- readonly route?: string;
61
- readonly requirementId?: string;
62
- readonly criterionId?: string;
63
- readonly field?: string;
64
- readonly operation?: string;
65
- readonly configKey?: string;
66
- }
67
- interface CheckDiagnostic {
68
- readonly code: string;
69
- readonly severity: "error" | "warning";
70
- readonly phase: CheckPhase;
71
- readonly summary: string;
72
- readonly location: CheckLocation;
73
- readonly evidence: Readonly<Record<string, unknown>>;
74
- readonly correction: string;
75
- }
76
- interface VerificationCheck {
77
- readonly id: string;
78
- readonly phase: CheckPhase;
79
- readonly status: "passed" | "failed" | "skipped";
80
- readonly evidence: readonly string[];
81
- }
82
57
  interface CheckRequirement extends RequirementEvidence {
83
58
  readonly path: string;
84
59
  readonly routePath?: string;
@@ -171,78 +146,6 @@ interface VerificationInventory {
171
146
  readonly hasUnownedSharedChange?: boolean;
172
147
  readonly sourceClaims?: Readonly<Record<string, unknown>>;
173
148
  }
174
- interface CheckResult {
175
- readonly schema: "sleepy-hollow-check-result/v1";
176
- readonly ok: boolean;
177
- readonly command: "check";
178
- readonly projectRoot: string;
179
- readonly requestedScope: RequestedCheckScope;
180
- readonly effectiveScope: "full" | "targeted";
181
- readonly selectedRequirements: readonly string[];
182
- readonly selectedTests: readonly string[];
183
- readonly checks: readonly VerificationCheck[];
184
- readonly diagnostics: readonly CheckDiagnostic[];
185
- readonly summary: {
186
- readonly passed: number;
187
- readonly failed: number;
188
- readonly skipped: number;
189
- readonly errors: number;
190
- readonly warnings: number;
191
- };
192
- }
193
-
194
- declare const DEPLOY_TARGET_KINDS: readonly ["fly"];
195
- type DeployTargetKind = (typeof DEPLOY_TARGET_KINDS)[number];
196
- interface DeployTarget {
197
- readonly kind: DeployTargetKind;
198
- readonly project: string;
199
- }
200
- interface SmokeTestDefinition {
201
- readonly id: string;
202
- readonly description: string;
203
- readonly method: string;
204
- readonly path: string;
205
- readonly expectedStatus: number;
206
- readonly required: boolean;
207
- }
208
- interface SmokeTestOutcome {
209
- readonly id: string;
210
- readonly status: "passed" | "failed";
211
- readonly observedStatus?: number;
212
- readonly evidence: string;
213
- }
214
- interface DeployInventory {
215
- readonly projectRootDisplay: string;
216
- readonly target: DeployTarget;
217
- readonly revision: string;
218
- readonly deployedRevision?: string;
219
- readonly verification: CheckResult;
220
- readonly environmentKeys: readonly string[];
221
- readonly deployedEnvironmentKeys: readonly string[];
222
- readonly contractChanges: readonly ContractChange[];
223
- readonly openApiPath: string;
224
- readonly documentationPath: string;
225
- readonly smokeTests: readonly SmokeTestDefinition[];
226
- readonly firstExternalDeployment: boolean;
227
- }
228
- interface DeployUpload {
229
- readonly url: string;
230
- readonly revision: string;
231
- }
232
- interface DeployAdapter {
233
- upload(options: {
234
- readonly target: DeployTarget;
235
- readonly revision: string;
236
- readonly token: string;
237
- }): DeployUpload | Promise<DeployUpload>;
238
- health(options: {
239
- readonly url: string;
240
- }): SmokeTestOutcome | Promise<SmokeTestOutcome>;
241
- smoke(options: {
242
- readonly url: string;
243
- readonly test: SmokeTestDefinition;
244
- }): SmokeTestOutcome | Promise<SmokeTestOutcome>;
245
- }
246
149
 
247
150
  type RequestedTestScope = {
248
151
  readonly kind: "full";
@@ -384,11 +287,6 @@ interface CliDependencies {
384
287
  readonly scope: VerificationInventory["requestedScope"];
385
288
  }) => VerificationInventory | Promise<VerificationInventory>;
386
289
  readonly testInventoryLoader?: TestInventoryLoader;
387
- readonly deployInventoryLoader?: (options: {
388
- readonly projectRoot: string;
389
- }) => DeployInventory | Promise<DeployInventory>;
390
- readonly deployAdapter?: DeployAdapter;
391
- readonly deployToken?: () => string;
392
290
  readonly testRunner?: TestRunner;
393
291
  readonly commands?: Partial<Record<CliCommandName, CliCommandHandler>>;
394
292
  }
@@ -409,7 +307,7 @@ interface CliDependencies {
409
307
  */
410
308
 
411
309
  /** Version of the CLI, reported by `hollow --version`. */
412
- declare const VERSION = "0.3.0";
310
+ declare const VERSION = "0.3.1";
413
311
  /**
414
312
  * Runs one CLI invocation against caller-supplied I/O.
415
313
  *