@mhome/artifact-protocol 1.8.0 → 1.9.0

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
@@ -29,14 +29,14 @@ scope reuses that content. Existing durable content is never downgraded. Put and
29
29
  resolve responses report `temporary: true` and `expiresAtUnixMs` for temporary
30
30
  content; durable responses omit both fields.
31
31
 
32
- MeowCore retains temporary objects for ten minutes from commit or repeated put /
33
- import revalidation. Ordinary reads do not renew expiration. Small objects (up to
34
- 1 MiB) use memory, subject to 64 MiB per runtime and 16 MiB per scope. New objects
35
- over these limits use temporary disk, capped at 512 MiB per runtime and 128 MiB
36
- per scope. Object limits are 4096 per runtime / 1024 per scope. Open snapshots
37
- continue to count against capacity after deletion or expiry. Exhausted capacity
38
- returns an availability error; unrelated live objects are not silently deleted.
39
- Ingress is bounded separately. These are implementation defaults, not URI fields.
32
+ MeowCore keeps temporary content only in memory, without a total capacity or
33
+ object-count quota and without disk spill. Each successful content read resets
34
+ one hour of idle retention. Upload and repeated put / import revalidation also
35
+ reset that deadline; resolve and metadata queries do not. Objects never read
36
+ expire one hour after upload. Reads reject expired objects immediately, while
37
+ periodic maintenance reclaims idle entries. An already opened snapshot may
38
+ finish after deletion or expiry. Existing per-upload size and transport limits
39
+ still apply. The caller is responsible for peak memory use.
40
40
 
41
41
  `/artifact/persist` takes `{ "uri": "meow-artifact://…" }` and returns a put
42
42
  response after durable storage succeeds. Promotion is idempotent, preserves the
@@ -54,13 +54,15 @@ the identical content may make an unexpired old URL usable again.
54
54
 
55
55
  App Facade equivalents are `/app/artifact/persist` and `/app/artifact/delete`;
56
56
  Wasm hosts expose `artifact_persist_async` and `artifact_delete_async`. LLM inputs
57
- continue to use canonical Artifact references. Small temporary HTTP uploads and
58
- native read descriptors carry bounded inline bytes without a staging file;
59
- larger objects retain file-based streaming. Temporary delivery uses `no-store`,
60
- and host resolve grants never outlive the reported object expiration.
57
+ continue to use canonical Artifact references. Temporary HTTP uploads and native
58
+ reads transfer content from memory without staging files. Large native transfers use bounded attachments on the existing
59
+ IPC connection; the JSON control frame limit is unchanged. Temporary delivery uses
60
+ `no-store`, and resolve grants never outlive the reported object expiration.
61
61
 
62
- Temporary state is process-owned and is lost on restart, including spilled
63
- objects. The runtime removes abandoned spill directories on startup and expired
64
- entries during maintenance. This contract adds no database or migration. A
65
- cloud-owned artifact store needs its own implementation; a multi-instance cloud
66
- service must not emulate this with an uncoordinated in-process map.
62
+ Temporary state is process-owned and is lost on restart. Startup removes
63
+ abandoned spill directories left by older runtimes. This contract adds no database
64
+ or migration. Cloud forwarding preserves the local owner’s lifetime metadata and
65
+ routes persist/delete to that owner. Cloud-owned storage rejects temporary writes;
66
+ it supports idempotent persist for existing durable content and exact-key delete.
67
+ A multi-instance cloud service must not emulate temporary storage with an
68
+ uncoordinated in-process map.
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "manifest": "mhome.artifact.v1",
3
- "contractVersion": "1.8.0",
3
+ "contractVersion": "1.9.0",
4
4
  "uriPrefix": "meow-artifact://v1/",
5
5
  "kinds": [
6
6
  "image",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mhome/artifact-protocol",
3
- "version": "1.8.0",
3
+ "version": "1.9.0",
4
4
  "description": "Build-time protocol artifacts for mhome.artifact",
5
5
  "license": "MIT",
6
6
  "repository": {
package/protocol.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "protocol": "mhome.artifact",
3
- "contractVersion": "1.8.0",
3
+ "contractVersion": "1.9.0",
4
4
  "manifest": "manifest/artifact.v1.json",
5
5
  "schemas": {
6
6
  "artifactMetadata": "schema/artifact-metadata.v1.schema.json",
@@ -81,12 +81,18 @@
81
81
  ]
82
82
  },
83
83
  "then": {
84
+ "properties": {
85
+ "expiresAtUnixMs": {}
86
+ },
84
87
  "required": [
85
88
  "expiresAtUnixMs"
86
89
  ]
87
90
  },
88
91
  "else": {
89
92
  "not": {
93
+ "properties": {
94
+ "expiresAtUnixMs": {}
95
+ },
90
96
  "required": [
91
97
  "expiresAtUnixMs"
92
98
  ]
@@ -172,12 +172,18 @@
172
172
  ]
173
173
  },
174
174
  "then": {
175
+ "properties": {
176
+ "expiresAtUnixMs": {}
177
+ },
175
178
  "required": [
176
179
  "expiresAtUnixMs"
177
180
  ]
178
181
  },
179
182
  "else": {
180
183
  "not": {
184
+ "properties": {
185
+ "expiresAtUnixMs": {}
186
+ },
181
187
  "required": [
182
188
  "expiresAtUnixMs"
183
189
  ]