@pennixrv/trellis 0.6.26 → 0.6.27
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.
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": "0.6.26",
|
|
3
|
+
"description": "Adds a task-bound continuation record for safe cross-session handoff state.",
|
|
4
|
+
"breaking": false,
|
|
5
|
+
"recommendMigrate": false,
|
|
6
|
+
"changelog": "**Features:**\n- Adds a bounded Continuation Record projection bound to the direct current Trellis session and task.\n- Fails closed when task identity changes while a continuation record operation is acquiring its lock.\n\n**Internal:**\n- Keeps continuation runtime state outside version-controlled project files.",
|
|
7
|
+
"migrations": [],
|
|
8
|
+
"notes": "No project migration is required. Existing projects can run the normal `trellis update` flow."
|
|
9
|
+
}
|
|
@@ -362,10 +362,15 @@ def status(root: Path | None = None) -> dict[str, Any]:
|
|
|
362
362
|
def seal(root: Path, request_path: Path, expected: str) -> dict[str, Any]:
|
|
363
363
|
expected = _expected_digest(expected)
|
|
364
364
|
request_path = _request_path(root, request_path)
|
|
365
|
-
|
|
366
|
-
path = _record_path(root,
|
|
365
|
+
initial_task = _task_source(root)
|
|
366
|
+
path = _record_path(root, initial_task["id"])
|
|
367
367
|
with _record_lock(path):
|
|
368
368
|
task = _task_source(root)
|
|
369
|
+
if (
|
|
370
|
+
(task["id"], task["path"], task["context_key"])
|
|
371
|
+
!= (initial_task["id"], initial_task["path"], initial_task["context_key"])
|
|
372
|
+
):
|
|
373
|
+
raise ContinuationError("current task changed while acquiring record lock")
|
|
369
374
|
current_digest: str | None = None
|
|
370
375
|
current: dict[str, Any] | None = None
|
|
371
376
|
if path.exists():
|
|
@@ -419,9 +424,15 @@ def seal(root: Path, request_path: Path, expected: str) -> dict[str, Any]:
|
|
|
419
424
|
|
|
420
425
|
def clear(root: Path, expected: str) -> dict[str, Any]:
|
|
421
426
|
expected = _expected_digest(expected)
|
|
422
|
-
|
|
423
|
-
path = _record_path(root,
|
|
427
|
+
initial_task = _task_source(root)
|
|
428
|
+
path = _record_path(root, initial_task["id"])
|
|
424
429
|
with _record_lock(path):
|
|
430
|
+
task = _task_source(root)
|
|
431
|
+
if (
|
|
432
|
+
(task["id"], task["path"], task["context_key"])
|
|
433
|
+
!= (initial_task["id"], initial_task["path"], initial_task["context_key"])
|
|
434
|
+
):
|
|
435
|
+
raise ContinuationError("current task changed while acquiring record lock")
|
|
425
436
|
if not path.exists():
|
|
426
437
|
if expected == "absent":
|
|
427
438
|
return {"status": STATUS_ABSENT}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@pennixrv/trellis",
|
|
3
|
-
"version": "0.6.
|
|
3
|
+
"version": "0.6.27",
|
|
4
4
|
"description": "AI capabilities grow like ivy — Trellis provides the structure to guide them along a disciplined path",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/index.js",
|
|
@@ -34,7 +34,7 @@
|
|
|
34
34
|
"inquirer": "^9.3.7",
|
|
35
35
|
"undici": "^6.21.0",
|
|
36
36
|
"zod": "^4.4.2",
|
|
37
|
-
"@pennixrv/trellis-core": "0.6.
|
|
37
|
+
"@pennixrv/trellis-core": "0.6.27"
|
|
38
38
|
},
|
|
39
39
|
"devDependencies": {
|
|
40
40
|
"@eslint/js": "^9.18.0",
|