@hasna/loops 0.4.3 → 0.4.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/CHANGELOG.md CHANGED
@@ -5,6 +5,94 @@ documented in this file. Version entries are generated from the
5
5
  conventional-commit git history; one commit maps to one released patch version
6
6
  unless noted.
7
7
 
8
+ ## 0.4.5 (2026-07-03)
9
+
10
+ Upgrade-path fix for existing `0.4.1`-era local stores.
11
+
12
+ ### Fixed
13
+
14
+ - Opening a version-6 store now applies the `0007_run_claim_tokens` migration
15
+ before creating the `claim_token` index. This fixes upgrades where
16
+ `loops doctor`, `loops daemon status`, or daemon restart failed with
17
+ `no such column: claim_token` on machines that already had active OpenLoops
18
+ state.
19
+
20
+ ## 0.4.4 (2026-07-03)
21
+
22
+ Self-hosted runtime MVP release for operator-owned OpenLoops control planes.
23
+
24
+ ### Added
25
+
26
+ - Postgres storage contract with checksum-ledgered migrations for loops, runs,
27
+ workflows, goals, runner machines, runner leases, and audit events.
28
+ - Storage-backed `loops-api` `/v1` foundation for loop CRUD, run reads, runner
29
+ registration, claim, heartbeat, finalize, and bounded evidence upload.
30
+ - `loops-runner` foundation with self-hosted status checks and one-shot
31
+ claim/execute/finalize support for non-workflow loop targets.
32
+ - Operator-safe migration bundle helpers and CLI/SDK previews:
33
+ `loops export`, `loops import`, `loops self-hosted migrate --dry-run`,
34
+ `loops self-hosted push --dry-run`, `loops self-hosted pull --dry-run`, and
35
+ preview-first `loops self-hosted runner-register`.
36
+ - Documentation for self-hosted API/runner boundaries, local cache/spool
37
+ semantics, id-preserving import blockers, rollback evidence, and
38
+ cross-machine rollout evidence.
39
+
40
+ ### Safety
41
+
42
+ - Remote self-hosted push/pull/migrate remain preview-only until the control
43
+ plane exposes table-preserving import/sync coverage for every supported
44
+ durable table, or a reviewed restricted rollout proves unsupported rows are
45
+ absent.
46
+ - Non-local API and runner paths fail closed without bearer tokens, run output
47
+ remains redacted by default, and migration/import planning blocks live
48
+ destination state, tampered bundles, and redacted environment imports unless
49
+ explicitly allowed.
50
+ - The npm `prepublishOnly` gate now runs build, typecheck, full tests, and the
51
+ private-boundary scan before publishing.
52
+
53
+ ## 0.4.3 (2026-07-03)
54
+
55
+ Registry-visible self-hosted API and runner protocol patch. The local Git tag
56
+ set currently has no `v0.4.3` tag, so this entry backfills the release evidence
57
+ from the branch history and npm registry.
58
+
59
+ ### Added
60
+
61
+ - Storage-backed `loops-api` routes for loop CRUD and run listing using the
62
+ public storage contract, with storage-backed routes failing closed when no
63
+ storage adapter is injected.
64
+ - Runner registration, claim, heartbeat, finalize, and bounded evidence upload
65
+ protocol endpoints for self-hosted control planes.
66
+ - `loops-runner run-once` execution path for claimed non-workflow loop runs,
67
+ including claim-token fencing and heartbeat coverage while a run executes.
68
+
69
+ ### Safety
70
+
71
+ - Non-local API serving requires a bearer token.
72
+ - Runner claims skip workflow loops until remote workflow execution is fully
73
+ supported.
74
+ - Run listing redacts stdout/stderr unless explicitly requested.
75
+
76
+ ## 0.4.2 (2026-07-03)
77
+
78
+ Registry-visible self-hosted storage contract patch. The local Git tag set
79
+ currently has no `v0.4.2` tag, so this entry backfills the release evidence
80
+ from the branch history and npm registry.
81
+
82
+ ### Added
83
+
84
+ - Async storage contract for local and self-hosted runtime adapters.
85
+ - SQLite storage wrapper over the existing local `Store`.
86
+ - Postgres storage migration contract with checksum ledger, core loop/run
87
+ tables, workflow/goal tables, runner machine/lease tables, and audit events.
88
+ - Public package exports for storage contract, SQLite adapter, Postgres adapter,
89
+ and Postgres schema helpers.
90
+
91
+ ### Safety
92
+
93
+ - `loops-runner` self-hosted status fails closed when a remote runner is
94
+ configured without the required API URL and token.
95
+
8
96
  ## 0.4.1 (2026-07-03)
9
97
 
10
98
  Contract-foundation release for the Mailery-style local/self-hosted/cloud
package/README.md CHANGED
@@ -22,7 +22,7 @@ It supports deterministic command loops, JSON-defined workflows, and guarded CLI
22
22
  OpenLoops has three deployment modes:
23
23
 
24
24
  - `local`: SQLite in `LOOPS_DATA_DIR` is authoritative and `loops-daemon` executes scheduled work.
25
- - `self_hosted`: a user-operated `loops-api` control plane contract. This release exposes status, storage-backed `/v1` loop CRUD and run listing, runner claim/heartbeat/finalize protocol endpoints, and a one-shot `loops-runner run-once` execution path for embedded control-plane hosts; full fleet rollout and migration tooling are follow-up work.
25
+ - `self_hosted`: a user-operated `loops-api` control plane contract. This release exposes status, storage-backed `/v1` loop CRUD and run listing, runner claim/heartbeat/finalize protocol endpoints, a one-shot `loops-runner run-once` execution path for embedded control-plane hosts, id-preserving local export/import, and preview-only self-hosted migration/sync commands; full fleet rollout and remote apply are follow-up work.
26
26
  - `cloud`: a hosted control-plane contract. This release exposes client/runner status only; hosted tenant auth and infrastructure live outside this package.
27
27
 
28
28
  `local` is the default and requires no network, token, Postgres, or hosted
@@ -44,6 +44,11 @@ Useful status commands:
44
44
  loops mode
45
45
  loops --json mode
46
46
  loops self-hosted status
47
+ loops self-hosted migrate --dry-run
48
+ loops self-hosted runner-register --runner-id <id> --machine-id <machine> --apply
49
+ loops export --file ./loops-export.json --dry-run
50
+ loops export --file ./loops-export.json
51
+ loops import ./loops-export.json
47
52
  loops cloud status
48
53
  loops-api status
49
54
  loops-runner status
package/dist/api/index.js CHANGED
@@ -3,7 +3,7 @@
3
3
  // package.json
4
4
  var package_default = {
5
5
  name: "@hasna/loops",
6
- version: "0.4.3",
6
+ version: "0.4.5",
7
7
  description: "Persistent local loop and workflow runner for deterministic commands and headless AI coding agents",
8
8
  type: "module",
9
9
  main: "dist/index.js",
@@ -77,7 +77,7 @@ var package_default = {
77
77
  prepare: "test -d dist || bun run build",
78
78
  "dev:cli": "bun run src/cli/index.ts",
79
79
  "dev:daemon": "bun run src/daemon/index.ts",
80
- prepublishOnly: "bun run build && bun run test:boundary"
80
+ prepublishOnly: "bun run build && bun run typecheck && bun test && bun run test:boundary"
81
81
  },
82
82
  keywords: [
83
83
  "loops",