@sellable/mcp 0.1.733 → 0.1.735
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.
|
@@ -454,7 +454,7 @@ function buildRefillSendsCommand(input) {
|
|
|
454
454
|
workflowAsset: {
|
|
455
455
|
subskillName: "refill-sends-workflow",
|
|
456
456
|
assetPath: "core/flow.v1.json",
|
|
457
|
-
expectedVersion: "v1.
|
|
457
|
+
expectedVersion: "v1.8",
|
|
458
458
|
},
|
|
459
459
|
yolo,
|
|
460
460
|
executionMode,
|
|
@@ -502,7 +502,7 @@ function buildRefillSendsCommand(input) {
|
|
|
502
502
|
},
|
|
503
503
|
firstOperationalSteps: [
|
|
504
504
|
'Load get_subskill_prompt({ subskillName: "refill-sends-workflow" }) before any product operation.',
|
|
505
|
-
'Load get_subskill_asset({ subskillName: "refill-sends-workflow", assetPath: "core/flow.v1.json" }) before any product operation; continue chunks until hasMore is false, parse JSON, and require exactly workflow:"refill-sends-workflow" and version:"v1.
|
|
505
|
+
'Load get_subskill_asset({ subskillName: "refill-sends-workflow", assetPath: "core/flow.v1.json" }) before any product operation; continue chunks until hasMore is false, parse JSON, and require exactly workflow:"refill-sends-workflow" and version:"v1.8". Report the verified version before D1. Any other or unverified version is workflow_version_mismatch and must stop before get_refill_target_plan or mutation.',
|
|
506
506
|
"A skill cannot create or invoke /goal by itself. If this refill is already running inside an active Codex goal, keep that goal open until every selected sender lane is horizon-filled by projected coverage (sent + scheduled), Christian explicitly stops/statuses the run, or a concrete non-scheduler blocker appears.",
|
|
507
507
|
`Call get_refill_target_plan({ intent: "${intent}"${workspaceId ? `, workspaceId: "${workspaceId}"` : ""}${input.campaignId ? `, campaignId: "${input.campaignId}"` : ""}${input.tableId ? `, tableId: "${input.tableId}"` : ""}${senderIds.length > 0 ? `, senderIds: ${JSON.stringify(senderIds)}` : ""}${senderNames.length > 0
|
|
508
508
|
? `, senderNames: ${JSON.stringify(senderNames)}`
|
|
@@ -1876,6 +1876,25 @@ export function sanitizeRefillTargetPlanResult(result) {
|
|
|
1876
1876
|
const paidRefreshNeededSenderIdSet = paidRefreshNeededSenderIds(senderRefillPlans);
|
|
1877
1877
|
const blockers = sanitizeBlockers(result.blockers, selectedKeys, paidRefreshNeededSenderIdSet);
|
|
1878
1878
|
const request = isRecord(result.request) ? result.request : {};
|
|
1879
|
+
// fix(112ak-s2): this is the CLIENT mirror of the server's dated-sweep gate,
|
|
1880
|
+
// and it silently discarded the server's valid sweep. sanitizeTargetSchedulerSweep
|
|
1881
|
+
// derives its expected senders/actions from this map and returns null when the
|
|
1882
|
+
// map is empty, so a stricter rule here vetoes the server outright: Dotwork
|
|
1883
|
+
// 2026-07-29 (five lanes, remainingProjectedGap 10, readyBuffer 4, rrpg 6) had
|
|
1884
|
+
// the server emit a 20-placement sweep across all five senders, this loop
|
|
1885
|
+
// marked zero lanes eligible, and every served plan came back with
|
|
1886
|
+
// approve_messages at globalActionQueue[0] and no sweep at any rank. Because
|
|
1887
|
+
// the coordinator consumes the sanitized plan, that blocked execution, not just
|
|
1888
|
+
// display. 112ak-s relaxed the same predicate server-side
|
|
1889
|
+
// (refill-target-plan.ts buildExactDateSchedulerSweepAction): a lane earns a
|
|
1890
|
+
// sweep by HOLDING ready rows against an open dated slot, not by its ready
|
|
1891
|
+
// buffer fully covering its gap. No target-date condition is needed to mirror
|
|
1892
|
+
// the server's scoping — sanitizeTargetSchedulerSweep already refuses to run
|
|
1893
|
+
// without an expectedTargetDate matching ^\d{4}-\d{2}-\d{2}$, so this path is
|
|
1894
|
+
// explicit-date-only by construction. Deliberately the ONLY relaxed occurrence:
|
|
1895
|
+
// the wait_for_scheduler append and the status derivation below both keep
|
|
1896
|
+
// `remainingReadyOrProjectedGap === 0`, where full ready coverage is the
|
|
1897
|
+
// correct and intended meaning.
|
|
1879
1898
|
const sweepEligibleBySender = new Map();
|
|
1880
1899
|
for (const plan of senderPlans) {
|
|
1881
1900
|
const senderId = stringValue(plan.senderId);
|
|
@@ -1883,7 +1902,6 @@ export function sanitizeRefillTargetPlanResult(result) {
|
|
|
1883
1902
|
if (senderId &&
|
|
1884
1903
|
actionType &&
|
|
1885
1904
|
numberValue(plan.remainingProjectedGap) > 0 &&
|
|
1886
|
-
numberValue(plan.remainingReadyOrProjectedGap) === 0 &&
|
|
1887
1905
|
numberValue(plan.readyBuffer) > 0) {
|
|
1888
1906
|
const lanes = sweepEligibleBySender.get(senderId) ?? new Set();
|
|
1889
1907
|
lanes.add(actionType);
|
package/package.json
CHANGED
|
@@ -75,7 +75,7 @@ get_subskill_asset({ subskillName: "refill-sends-workflow", assetPath: "core/flo
|
|
|
75
75
|
```
|
|
76
76
|
|
|
77
77
|
Continue chunks until `hasMore:false`; require
|
|
78
|
-
exactly `workflow:"refill-sends-workflow"` and `version:"v1.
|
|
78
|
+
exactly `workflow:"refill-sends-workflow"` and `version:"v1.8"`, then report
|
|
79
79
|
that verified version before D1. Any other or unverified version is
|
|
80
80
|
`workflow_version_mismatch`: stop before `get_refill_target_plan` or mutation.
|
|
81
81
|
Route intent is immutable:
|
|
@@ -24,7 +24,7 @@ In `--yolo`, the coordinator may
|
|
|
24
24
|
perform every fresh planner-ranked safe transition among existing campaigns,
|
|
25
25
|
lanes, and source families. It may not create a new campaign.
|
|
26
26
|
|
|
27
|
-
The host must load the entire asset and verify exactly `version:"v1.
|
|
27
|
+
The host must load the entire asset and verify exactly `version:"v1.8"` before
|
|
28
28
|
D1. It reports that verified version explicitly. A different or unverified
|
|
29
29
|
version is `workflow_version_mismatch` and stops before planner or mutation.
|
|
30
30
|
|
|
@@ -32,7 +32,7 @@ version is `workflow_version_mismatch` and stops before planner or mutation.
|
|
|
32
32
|
|
|
33
33
|
```mermaid
|
|
34
34
|
flowchart TD
|
|
35
|
-
A["Receive exact workspace, sender/action selectors, and date envelope"] --> ASSET["Verify complete flow.v1.json, workflow refill-sends-workflow, exact version v1.
|
|
35
|
+
A["Receive exact workspace, sender/action selectors, and date envelope"] --> ASSET["Verify complete flow.v1.json, workflow refill-sends-workflow, exact version v1.8"]
|
|
36
36
|
ASSET --> D1["Call get_refill_target_plan read-only with immutable route intent"]
|
|
37
37
|
D1 --> RENDER["Render sender/campaign waterfall, coverage ledger, bounded side effects, forbidden actions, and stop condition"]
|
|
38
38
|
RENDER --> D2["Call refill_sends with workspaceCoordinator true and displayed revision/action pins"]
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
{
|
|
2
|
-
"version": "v1.
|
|
2
|
+
"version": "v1.8",
|
|
3
3
|
"workflow": "refill-sends-workflow",
|
|
4
4
|
"principle": "The planner chooses one exact next action and refill_sends alone executes it. Every bounded action is receipted and followed by a canonical replan. Yolo may traverse every planner-ranked existing campaign, lane, and source family; only new campaign creation requires the user.",
|
|
5
5
|
"requiredBootstrap": [
|
|
@@ -17,7 +17,7 @@
|
|
|
17
17
|
"mustReadUntil": { "hasMore": false },
|
|
18
18
|
"validation": {
|
|
19
19
|
"workflow": "refill-sends-workflow",
|
|
20
|
-
"exactVersion": "v1.
|
|
20
|
+
"exactVersion": "v1.8",
|
|
21
21
|
"requiredTopLevelKeys": [
|
|
22
22
|
"states",
|
|
23
23
|
"gateOrder",
|