@amalgm/channels 0.1.4 → 0.1.5-main.34175701070

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 (3) hide show
  1. package/PURPOSE.md +27 -0
  2. package/README.md +34 -0
  3. package/package.json +44 -3
package/PURPOSE.md CHANGED
@@ -27,6 +27,26 @@ remain authoritative when multiple hosts share data.
27
27
 
28
28
  ## Axioms
29
29
 
30
+ Consumer assembly derives exact same-branch dependency pins from the declared
31
+ package manifests and registry candidate records. One pending composition per
32
+ branch preserves human edits; complete consumer checks for the exact merge tree govern its
33
+ merge, and publication never implies installed adoption.
34
+
35
+ Managed package delivery starts from a clean, exact main or preview source
36
+ commit. The workflow occurrence supplies only its generated version and source
37
+ record; tests run against those candidate inputs before packing. Every native
38
+ gate and publication use that same tarball and integrity. A candidate tag makes
39
+ bytes available to release assembly; it never promotes an installed runtime.
40
+ Release tooling remains available inside each owner repository so a developer
41
+ or CI job never needs access to another private product repository.
42
+ Registry credentials are available only to the final protected publication job,
43
+ after every native examination proves the exact candidate bytes.
44
+ Native consumers install the archive as a dependency, so SDK development
45
+ dependencies never become an end-user installation requirement.
46
+ The repository token creates only its own dependency proposals and explicitly
47
+ dispatches checks and delivery; every admitted gate proves the actual checkout,
48
+ including the exact two-parent merge commit that becomes managed source.
49
+
30
50
  Managed releases bind to one exact published Core version and build from the
31
51
  locked dependency graph on the supported Node toolchain.
32
52
 
@@ -96,3 +116,10 @@ host/ Supabase, auth, provider, server, and Fly composition
96
116
  supabase/migrations/ durable schema and atomic RPCs
97
117
  skills/channels/ agent usage guidance
98
118
  ```
119
+
120
+ Hosted delivery examines the final immutable image under both declared managed
121
+ bindings before deploying that exact digest to its source branch's Fly app.
122
+ The host's own pipeline owns replacement, health and provider verification;
123
+ no hosted process updates its package tree in place. A local image examination
124
+ proves image behavior, while Fly networking and durable product journeys retain
125
+ their separate provider proof.
package/README.md CHANGED
@@ -73,3 +73,37 @@ purpose and invariants.
73
73
  ```bash
74
74
  npm run verify
75
75
  ```
76
+
77
+ ## Managed package delivery
78
+
79
+ Managed npm delivery uses `.github/workflows/publish-package.yml` after the
80
+ exact main/preview owner checks pass. The occurrence generates a unique
81
+ prerelease version and records its source SHA; it reruns the owner suite, packs
82
+ once, and installs that tarball on Linux, macOS and Windows before publication.
83
+ The `candidate-main`/`candidate-preview` tags are release-assembly inputs and
84
+ never select installed runtimes. `package.json` declares this owner's gates,
85
+ CLI probes, peer-only exports and lifecycle permissions. The standalone runner
86
+ under `scripts/release/` is intentionally copied across owners to preserve
87
+ private repository access boundaries. The final publish step uses the `NPM_TOKEN`
88
+ secret in the `npm-release` environment. Where npm trusted publishing is
89
+ configured for this repository's `publish-package.yml` and that environment,
90
+ the token can be omitted. Authentication does not replace native certification,
91
+ exact source records or artifact integrity; private source repositories do not
92
+ receive npm's public-source provenance.
93
+
94
+ Hosted delivery is separately wired in `release-hosted.yml`: it builds the exact
95
+ source image, tests both declared bindings without network access, deploys the
96
+ same digest to the selected Fly app, then verifies machine identity and public
97
+ readiness. `package.json` owns the host declaration. The Python effect runner is
98
+ an intentional standalone copy from UI; no other private repository is required.
99
+ Live provider and durable product-flow proof remain separate release obligations.
100
+
101
+ Managed dependency reconciliation reads this owner’s declared manifests and
102
+ updates exact same-branch registry candidates in one pending composition PR per
103
+ branch. The repository token explicitly dispatches the owner checks. Every declared gate must
104
+ pass for the exact merge tree; an atomic expected-base update prevents merging
105
+ with untested concurrent source. Human additions or amendments are preserved.
106
+ The half-hour CI reconciliation recovers missed dispatch hints. Assembly runs
107
+ no dependency code or lifecycle hooks, and repeated owner checks do not publish
108
+ another candidate for unchanged source. Repository policy must allow GitHub Actions to create pull requests; no
109
+ cross-repository credential or paid auto-merge feature is required.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@amalgm/channels",
3
- "version": "0.1.4",
3
+ "version": "0.1.5-main.34175701070",
4
4
  "description": "Amalgm's SDK and hosted service for durable bidirectional user channels.",
5
5
  "type": "module",
6
6
  "license": "UNLICENSED",
@@ -46,13 +46,19 @@
46
46
  "test": "tsx --test test/*.test.ts",
47
47
  "verify": "npm run check && npm test && npm run build && tsx scripts/check-cli-artifact.ts",
48
48
  "prepack": "npm run build",
49
- "start": "node dist/host/main.js"
49
+ "start": "node dist/host/main.js",
50
+ "release:admit": "node scripts/release/package.mjs admit",
51
+ "release:prepare": "node scripts/release/package.mjs prepare",
52
+ "release:examine": "node scripts/release/package.mjs examine",
53
+ "release:publish": "node scripts/release/package.mjs publish",
54
+ "release:compose": "node scripts/release/compose.mjs",
55
+ "test:release": "node --test scripts/release/*.test.mjs"
50
56
  },
51
57
  "engines": {
52
58
  "node": ">=24"
53
59
  },
54
60
  "dependencies": {
55
- "@amalgm/core": "0.4.7",
61
+ "@amalgm/core": "0.4.8-main.34168902443",
56
62
  "@modelcontextprotocol/sdk": "^1.30.0",
57
63
  "@supabase/supabase-js": "2.57.4",
58
64
  "jose": "^6.1.0",
@@ -62,5 +68,40 @@
62
68
  "@types/node": "^26.1.2",
63
69
  "tsx": "^4.23.1",
64
70
  "typescript": "5.9.3"
71
+ },
72
+ "amalgmRelease": {
73
+ "schema": 1,
74
+ "workflow": "verify.yml",
75
+ "jobs": [
76
+ "verify"
77
+ ],
78
+ "verify": "verify",
79
+ "cli": [
80
+ "amalgm-channels"
81
+ ]
82
+ },
83
+ "allowScripts": {
84
+ "esbuild@0.28.2": true,
85
+ "fsevents@2.3.3": false
86
+ },
87
+ "amalgmHosts": {
88
+ "channels": {
89
+ "directory": ".",
90
+ "context": ".",
91
+ "dockerfile": "Dockerfile"
92
+ }
93
+ },
94
+ "amalgmComposition": {
95
+ "schema": 1,
96
+ "manifests": [
97
+ "package.json"
98
+ ]
99
+ },
100
+ "gitHead": "5d92512a097e56a91ead84f4fd0ffccce478b5f5",
101
+ "amalgmSource": {
102
+ "repository": "amalgm-inc/amalgm-channels",
103
+ "branch": "main",
104
+ "commit": "5d92512a097e56a91ead84f4fd0ffccce478b5f5",
105
+ "occurrence": "34175701070"
65
106
  }
66
107
  }