snipara-companion 4.2.3 → 4.2.4
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 +4 -0
- package/dist/index.js +4 -21
- package/docs/TASK_CONTEXT.md +64 -14
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -2,6 +2,10 @@
|
|
|
2
2
|
|
|
3
3
|
Release notes for `snipara-companion`, newest first.
|
|
4
4
|
|
|
5
|
+
## 4.2.4
|
|
6
|
+
|
|
7
|
+
- Keep routine Team Sync handoffs and status reads continuity-only, preventing repeated handoffs from adding durable pending memories. Preserve explicit durable Why Capture and phase/final decisions.
|
|
8
|
+
|
|
5
9
|
## 4.2.3
|
|
6
10
|
|
|
7
11
|
- Skip hosted routing-policy discovery for ordinary LITE workflows; preserve explicit routing, active local policy and Orchestrator handoff requests.
|
package/dist/index.js
CHANGED
|
@@ -19675,25 +19675,6 @@ function readStandaloneCommitEvidence(cwd, commitSha, additionalFiles = []) {
|
|
|
19675
19675
|
);
|
|
19676
19676
|
return { commitSha, summary, files };
|
|
19677
19677
|
}
|
|
19678
|
-
function readLatestWorkflowCommands(cwd) {
|
|
19679
|
-
try {
|
|
19680
|
-
const state = JSON.parse(
|
|
19681
|
-
fs22.readFileSync(path21.join(cwd, ".snipara", "workflow", "current.json"), "utf8")
|
|
19682
|
-
);
|
|
19683
|
-
const bindings = state.runtime?.sandbox?.bindings ?? [];
|
|
19684
|
-
for (let index = bindings.length - 1; index >= 0; index -= 1) {
|
|
19685
|
-
const commands = bindings[index]?.lastCheckpoint?.commands;
|
|
19686
|
-
if (Array.isArray(commands)) {
|
|
19687
|
-
return boundedUnique(
|
|
19688
|
-
commands.filter((command2) => typeof command2 === "string"),
|
|
19689
|
-
20
|
|
19690
|
-
);
|
|
19691
|
-
}
|
|
19692
|
-
}
|
|
19693
|
-
} catch {
|
|
19694
|
-
}
|
|
19695
|
-
return [];
|
|
19696
|
-
}
|
|
19697
19678
|
async function captureStandaloneCommitWhy(input) {
|
|
19698
19679
|
const baseReceipt = {
|
|
19699
19680
|
sourceKind: "commit",
|
|
@@ -19780,6 +19761,9 @@ async function captureCompanionWhy(input) {
|
|
|
19780
19761
|
failed: [],
|
|
19781
19762
|
...commitSha ? { commitSha } : {}
|
|
19782
19763
|
};
|
|
19764
|
+
if (input.sourceKind === "handoff" && !input.why?.trim()) {
|
|
19765
|
+
return { ...baseReceipt, status: "skipped", error: "continuity_only" };
|
|
19766
|
+
}
|
|
19783
19767
|
if (!loadConfig({ cwd }).apiKey) {
|
|
19784
19768
|
return { ...baseReceipt, status: "skipped" };
|
|
19785
19769
|
}
|
|
@@ -26430,8 +26414,7 @@ async function createTeamSyncHandoffPayload(rootDir, options) {
|
|
|
26430
26414
|
sourceSessionId: record9.id,
|
|
26431
26415
|
task: summary.latestActiveWork?.summary ?? record9.summary,
|
|
26432
26416
|
summary: [record9.summary, record9.next ? `Next: ${record9.next}` : void 0].filter(Boolean).join("\n"),
|
|
26433
|
-
files: record9.files
|
|
26434
|
-
commands: readLatestWorkflowCommands(rootDir)
|
|
26417
|
+
files: record9.files
|
|
26435
26418
|
});
|
|
26436
26419
|
appendActivityEvent({
|
|
26437
26420
|
cwd: rootDir,
|
package/docs/TASK_CONTEXT.md
CHANGED
|
@@ -7,20 +7,24 @@ behavior and make no mandatory context calls.
|
|
|
7
7
|
```json
|
|
8
8
|
{
|
|
9
9
|
"goal": "Implement a bounded change",
|
|
10
|
-
"steps": [
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
"
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
10
|
+
"steps": [
|
|
11
|
+
{
|
|
12
|
+
"id": "implementation",
|
|
13
|
+
"tasks": [
|
|
14
|
+
{
|
|
15
|
+
"id": "update-service",
|
|
16
|
+
"query": "Implement the reviewed service contract",
|
|
17
|
+
"files": ["src/service.ts"],
|
|
18
|
+
"contextRequest": {
|
|
19
|
+
"queries": ["service contract error behavior"],
|
|
20
|
+
"maxTokens": 4000,
|
|
21
|
+
"maxChunks": 8,
|
|
22
|
+
"timeoutMs": 30000
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
]
|
|
26
|
+
}
|
|
27
|
+
]
|
|
24
28
|
}
|
|
25
29
|
```
|
|
26
30
|
|
|
@@ -93,3 +97,49 @@ This is not a cross-process lock or an atomic compare-and-swap guarantee.
|
|
|
93
97
|
Controller/native-runtime injection, independently authenticated reviewers,
|
|
94
98
|
complete objective acceptance and the consolidated evidence dossier remain
|
|
95
99
|
separate contracts and qualification steps.
|
|
100
|
+
|
|
101
|
+
## English procedural questions and bounded recovery
|
|
102
|
+
|
|
103
|
+
Use the original task plus two to four concrete English facets for maintained
|
|
104
|
+
English documentation. Preserve exact client names, identifiers, paths and
|
|
105
|
+
versions. The existing `context_query` operation carries those facets within one
|
|
106
|
+
context budget; it does not require a new planner or translation service:
|
|
107
|
+
|
|
108
|
+
```json
|
|
109
|
+
{
|
|
110
|
+
"contextRequest": {
|
|
111
|
+
"maxTokens": 4000,
|
|
112
|
+
"maxChunks": 8,
|
|
113
|
+
"timeoutMs": 30000,
|
|
114
|
+
"operation": {
|
|
115
|
+
"action": "context_query",
|
|
116
|
+
"params": {
|
|
117
|
+
"query": "What current backup procedure applies to this project?",
|
|
118
|
+
"retrieval_queries": [
|
|
119
|
+
"current backup destinations reviewed owner decision",
|
|
120
|
+
"backup prerequisites retention restore verification constraints"
|
|
121
|
+
],
|
|
122
|
+
"auto_decompose": false,
|
|
123
|
+
"include_all_tiers": false
|
|
124
|
+
},
|
|
125
|
+
"bindings": {}
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
```
|
|
130
|
+
|
|
131
|
+
The task loader already fetches exact cited chunks and rejects missing,
|
|
132
|
+
truncated, mismatched or over-budget material. It does not secretly retry or
|
|
133
|
+
weaken that contract. An assistant can perform one narrow keyword recovery
|
|
134
|
+
before freezing a request, or explicitly revise a failed request for a fresh
|
|
135
|
+
attempt. Use three to eight terms, `max_tokens=800`, references enabled,
|
|
136
|
+
`search_mode="keyword"`, `auto_decompose=false` and `include_all_tiers=false`.
|
|
137
|
+
No repeated fanout until a favorable answer appears.
|
|
138
|
+
|
|
139
|
+
Retirement banners, canonical replacements, negative constraints and missing
|
|
140
|
+
prerequisites remain relevant even when a child section looks complete. Source
|
|
141
|
+
quality is not evidence that a procedure applies to an unknown client. Preserve
|
|
142
|
+
insufficient-evidence results rather than assigning generic project hosting to
|
|
143
|
+
that client. Journal storage is continuity; task-summary proposals await review.
|
|
144
|
+
A previously saved PASS describes its original source and receipt identity,
|
|
145
|
+
not the current checkout. State which checks actually ran and which are planned.
|