@pennixrv/trellis 0.6.24 → 0.6.25
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.24",
|
|
3
|
+
"description": "Publishes the bounded semantic RecoveryBrief and formal handoff workflow contract.",
|
|
4
|
+
"breaking": false,
|
|
5
|
+
"recommendMigrate": false,
|
|
6
|
+
"changelog": "**Enhancements:**\n- Adds the bounded semantic RecoveryBrief and formal handoff contract to the Pennix Marketplace `codex-subnode-channel` workflow.\n- Aligns the published Trellis workflow source with the Pennix Marketplace v0.6.24 release.\n\n**Internal:**\n- Restores the missing release manifest so adjacent-version `trellis update` paths remain complete.",
|
|
7
|
+
"migrations": [],
|
|
8
|
+
"notes": "No project migration is required. Existing projects can run the normal `trellis update` flow."
|
|
9
|
+
}
|
|
@@ -372,10 +372,11 @@ export class TrellisContext {
|
|
|
372
372
|
* Get active task from session runtime context.
|
|
373
373
|
*
|
|
374
374
|
* Resolution order (mirrors Python `active_task.resolve_active_task`):
|
|
375
|
-
* 1. Lookup the runtime file for the input-derived context key.
|
|
376
|
-
*
|
|
377
|
-
*
|
|
378
|
-
*
|
|
375
|
+
* 1. Lookup the runtime file for the input-derived context key. A known
|
|
376
|
+
* key is authoritative, so a missing or empty context returns no task.
|
|
377
|
+
* 2. If no context key is available and exactly one session runtime file
|
|
378
|
+
* exists locally, use it (`_resolveSingleSessionFallback`). Refuses to
|
|
379
|
+
* guess when 0 or ≥2 files exist so multi-window isolation holds.
|
|
379
380
|
*/
|
|
380
381
|
getActiveTask(platformInput = null) {
|
|
381
382
|
const contextKey = this.getContextKey(platformInput)
|
|
@@ -390,6 +391,7 @@ export class TrellisContext {
|
|
|
390
391
|
stale: !taskDir || !existsSync(taskDir),
|
|
391
392
|
}
|
|
392
393
|
}
|
|
394
|
+
return { taskPath: null, source: "none", stale: false }
|
|
393
395
|
}
|
|
394
396
|
|
|
395
397
|
const fallback = this._resolveSingleSessionFallback()
|
|
@@ -471,10 +471,9 @@ export default async ({ directory, platform: hostPlatform = process.platform, en
|
|
|
471
471
|
// run when earlier ones miss):
|
|
472
472
|
// 1. Exact session runtime context lookup for input.sessionID
|
|
473
473
|
// 2. `Active task: <path>` hint in the dispatch prompt
|
|
474
|
-
// (explicit per-dispatch override
|
|
475
|
-
//
|
|
476
|
-
//
|
|
477
|
-
// runtime file exists locally
|
|
474
|
+
// (explicit per-dispatch override)
|
|
475
|
+
// 3. Single-session fallback only when the input has no session
|
|
476
|
+
// identity and exactly 1 runtime file exists locally
|
|
478
477
|
let taskDir = null
|
|
479
478
|
let taskSource = null
|
|
480
479
|
|
|
@@ -503,7 +502,7 @@ export default async ({ directory, platform: hostPlatform = process.platform, en
|
|
|
503
502
|
}
|
|
504
503
|
}
|
|
505
504
|
|
|
506
|
-
if (!taskDir) {
|
|
505
|
+
if (!taskDir && !contextKey) {
|
|
507
506
|
const fallback = ctx._resolveSingleSessionFallback()
|
|
508
507
|
if (fallback?.taskPath) {
|
|
509
508
|
const fallbackDir = ctx.resolveTaskDir(fallback.taskPath)
|
|
@@ -653,12 +653,12 @@ def resolve_active_task(
|
|
|
653
653
|
) -> ActiveTask:
|
|
654
654
|
"""Resolve the active task from session runtime state only.
|
|
655
655
|
|
|
656
|
-
A stale session task is returned as stale.
|
|
657
|
-
missing
|
|
658
|
-
|
|
659
|
-
|
|
660
|
-
|
|
661
|
-
|
|
656
|
+
A stale session task is returned as stale. A known context identity is
|
|
657
|
+
authoritative: a missing or empty context for that identity returns no
|
|
658
|
+
task. When context identity is unavailable, single-session inference may
|
|
659
|
+
cover pull-based platform sub-agents (copilot, gemini, qoder) that don't
|
|
660
|
+
inherit the parent's session id. ≥2 files or 0 files yield
|
|
661
|
+
ActiveTask(None) — refuses to guess across windows.
|
|
662
662
|
"""
|
|
663
663
|
context_key = resolve_context_key(
|
|
664
664
|
platform_input,
|
|
@@ -671,6 +671,7 @@ def resolve_active_task(
|
|
|
671
671
|
active = _active_from_ref(task_ref, repo_root, "session", context_key)
|
|
672
672
|
if active:
|
|
673
673
|
return active
|
|
674
|
+
return ActiveTask(None, "none", context_key)
|
|
674
675
|
|
|
675
676
|
if allow_single_session_fallback:
|
|
676
677
|
fallback = _resolve_single_session_fallback(repo_root)
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@pennixrv/trellis",
|
|
3
|
-
"version": "0.6.
|
|
3
|
+
"version": "0.6.25",
|
|
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.25"
|
|
38
38
|
},
|
|
39
39
|
"devDependencies": {
|
|
40
40
|
"@eslint/js": "^9.18.0",
|