thinkpool-pair 0.7.364 → 0.7.366
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/LICENSE +18 -0
- package/README.md +20 -0
- package/abort-turn-barrier.mjs +1 -23
- package/account.mjs +1 -1437
- package/acp-client.mjs +1 -140
- package/agent-detect.mjs +1 -28
- package/agent-notify.mjs +1 -142
- package/agent-visibility.mjs +1 -67
- package/auth-store.mjs +1 -120
- package/bridge.mjs +1 -6266
- package/byok-detect.mjs +1 -126
- package/claude-command-catalog.mjs +1 -91
- package/claude-session.mjs +1 -1519
- package/code-event-contract.mjs +1 -118
- package/codex-app-server.mjs +1 -340
- package/codex-commands.mjs +1 -83
- package/codex-event-mapper.mjs +1 -232
- package/codex-images.mjs +1 -69
- package/codex-mcp-http.mjs +1 -131
- package/codex-session.mjs +1 -1295
- package/command-catalog.mjs +1 -118
- package/command-guidance.mjs +1 -8
- package/context-contract.mjs +1 -95
- package/context-windows.mjs +1 -107
- package/cross-terminal.mjs +1 -789
- package/cumulative-event-relay.mjs +1 -53
- package/design-edit.mjs +1 -424
- package/design-source-contract.mjs +1 -4
- package/direct-pair-room.mjs +1 -57
- package/dispatch-lease.mjs +1 -37
- package/dispatch-permission-cleanup.mjs +1 -86
- package/edit-diff.mjs +1 -136
- package/error-recovery.mjs +1 -50
- package/event-bounds.mjs +1 -121
- package/event-delivery-queue.mjs +1 -60
- package/event-id.mjs +1 -549
- package/evidence-citations.mjs +1 -50
- package/evidence-compact.mjs +1 -11
- package/flow-assembly.mjs +1 -196
- package/flow-budget.mjs +1 -84
- package/flow-conductor.mjs +1 -259
- package/flow-context-store.mjs +1 -387
- package/flow-host-revert.mjs +1 -42
- package/flow-models.mjs +1 -139
- package/flow-preview.mjs +1 -148
- package/flow-receipt.mjs +1 -122
- package/flow-redispatch.mjs +1 -72
- package/flow-review-gate.mjs +1 -402
- package/flow-review-reflect.mjs +1 -115
- package/flow-review.mjs +1 -152
- package/flow-scope-evidence.mjs +1 -117
- package/flow-skill-registry.mjs +1 -140
- package/flow-task-graph.mjs +1 -562
- package/flow-worktree.mjs +1 -71
- package/git-diff-report.mjs +1 -121
- package/hermes-delegation-guard.mjs +1 -14
- package/hermes-event-mapper.mjs +1 -194
- package/hermes-isolation.mjs +1 -61
- package/hermes-model-cache.mjs +1 -54
- package/hermes-policy.mjs +1 -92
- package/hermes-probe.mjs +1 -57
- package/hermes-session.mjs +1 -683
- package/hermes-setup.mjs +1 -167
- package/host-memory.mjs +1 -116
- package/interrupted-resume.mjs +1 -95
- package/keep-awake.mjs +1 -148
- package/key-shape.mjs +1 -49
- package/lane-continuation.mjs +1 -83
- package/lane-lifecycle.mjs +1 -189
- package/lane-worktree.mjs +1 -77
- package/launcher.mjs +1 -354
- package/mcp-flight-recorder.mjs +1 -79
- package/mockup-delivery.mjs +1 -57
- package/model-prices.mjs +1 -113
- package/package.json +13 -4
- package/pair-bus.mjs +1 -98
- package/pair-control-authority.mjs +1 -89
- package/past-work-search.mjs +1 -105
- package/plan-meters.mjs +1 -144
- package/presence.mjs +1 -191
- package/privacy-report.mjs +1 -108
- package/provider-resilience.mjs +1 -356
- package/provider.mjs +1 -133
- package/providers.mjs +1 -491
- package/publish-guard.mjs +2 -0
- package/publish-manifest.json +129 -0
- package/question-response.mjs +1 -58
- package/reap-terminal.mjs +1 -68
- package/recap.mjs +1 -297
- package/replay-transport.mjs +1 -64
- package/repo-search.mjs +1 -190
- package/review-check.mjs +1 -182
- package/runtime-contract.mjs +1 -93
- package/runtime-registry.mjs +1 -64
- package/runtime-session.mjs +1 -20
- package/scheduled-run-admission.mjs +1 -364
- package/scheduled-runs.mjs +1 -268
- package/sdk-admission.mjs +1 -9
- package/sdk-smoke.mjs +1 -61
- package/serve-consent.mjs +1 -118
- package/serve-dir.mjs +1 -40
- package/service.mjs +1 -877
- package/session-store.mjs +1 -484
- package/side-lane.mjs +1 -63
- package/supabase-key.mjs +1 -176
- package/supervisor-ready.mjs +1 -57
- package/switch-provider.mjs +1 -84
- package/terminal-name.mjs +1 -359
- package/terminal-row-reconcile.mjs +1 -70
- package/thinkpool-prompt-contracts.mjs +1 -85
- package/thinkpool-room-prompt.mjs +1 -187
- package/transcript-sanitize.mjs +1 -332
- package/turn-stall.mjs +1 -61
- package/update-gate.mjs +1 -53
- package/viewport.mjs +1 -810
- package/worker-completion.mjs +1 -57
package/worker-completion.mjs
CHANGED
|
@@ -1,57 +1 @@
|
|
|
1
|
-
|
|
2
|
-
// must retain a completion from every one of them while the owner is busy.
|
|
3
|
-
export const WORKER_COMPLETION_CAP = 6
|
|
4
|
-
|
|
5
|
-
const clean = (value, cap = 160) => String(value || '').replace(/\s+/g, ' ').trim().slice(0, cap)
|
|
6
|
-
|
|
7
|
-
export function workerCompletionRecord({
|
|
8
|
-
workerId,
|
|
9
|
-
workerName,
|
|
10
|
-
turnRev,
|
|
11
|
-
subtype,
|
|
12
|
-
} = {}) {
|
|
13
|
-
const id = clean(workerId, 80)
|
|
14
|
-
const rev = Math.max(0, Number(turnRev) || 0)
|
|
15
|
-
if (!id || !rev) return null
|
|
16
|
-
return {
|
|
17
|
-
workerId: id,
|
|
18
|
-
workerRef: id.slice(0, 8),
|
|
19
|
-
workerName: clean(workerName, 80) || null,
|
|
20
|
-
turnRev: rev,
|
|
21
|
-
outcome: subtype && subtype !== 'success' ? clean(subtype, 40) : 'completed',
|
|
22
|
-
}
|
|
23
|
-
}
|
|
24
|
-
|
|
25
|
-
export function enqueueWorkerCompletion(pending, completion, cap = WORKER_COMPLETION_CAP) {
|
|
26
|
-
const queue = (Array.isArray(pending) ? pending : [])
|
|
27
|
-
.filter((item) => item?.workerId && Number(item?.turnRev) > 0)
|
|
28
|
-
if (!completion?.workerId || Number(completion?.turnRev) <= 0) return queue.slice(-cap)
|
|
29
|
-
const key = `${completion.workerId}:${completion.turnRev}`
|
|
30
|
-
const deduped = queue.filter((item) => `${item.workerId}:${item.turnRev}` !== key)
|
|
31
|
-
return [...deduped, completion].slice(-cap)
|
|
32
|
-
}
|
|
33
|
-
|
|
34
|
-
export function acknowledgeWorkerCompletions(pending, inFlight) {
|
|
35
|
-
const acknowledged = new Set((Array.isArray(inFlight) ? inFlight : [])
|
|
36
|
-
.filter((item) => item?.workerId && Number(item?.turnRev) > 0)
|
|
37
|
-
.map((item) => `${item.workerId}:${item.turnRev}`))
|
|
38
|
-
return (Array.isArray(pending) ? pending : [])
|
|
39
|
-
.filter((item) => item?.workerId && Number(item?.turnRev) > 0)
|
|
40
|
-
.filter((item) => !acknowledged.has(`${item.workerId}:${item.turnRev}`))
|
|
41
|
-
}
|
|
42
|
-
|
|
43
|
-
export function workerCompletionPrompt(pending) {
|
|
44
|
-
const queue = (Array.isArray(pending) ? pending : [])
|
|
45
|
-
.filter((item) => item?.workerId && Number(item?.turnRev) > 0)
|
|
46
|
-
.slice(-WORKER_COMPLETION_CAP)
|
|
47
|
-
if (!queue.length) return ''
|
|
48
|
-
const lanes = queue.map((item) => {
|
|
49
|
-
const label = item.workerName ? `${item.workerName} (${item.workerRef || String(item.workerId).slice(0, 8)})` : (item.workerRef || String(item.workerId).slice(0, 8))
|
|
50
|
-
return `- ${label}: ${item.outcome || 'completed'}`
|
|
51
|
-
}).join('\n')
|
|
52
|
-
return `[ThinkPool worker completion signal]
|
|
53
|
-
Your owned worker lane${queue.length === 1 ? ' has finished and is' : 's have finished and are'} idle:
|
|
54
|
-
${lanes}
|
|
55
|
-
|
|
56
|
-
Continue the current task now. Call read_terminal exactly once for each finished worker, verify and integrate its result, then call close_terminal for that worker. Do not wait for a person to prompt you.`
|
|
57
|
-
}
|
|
1
|
+
export const WORKER_COMPLETION_CAP=6;const r=(r,e=160)=>String(r||"").replace(/\s+/g," ").trim().slice(0,e);export function workerCompletionRecord({workerId:e,workerName:o,turnRev:t,subtype:n}={}){const i=r(e,80),l=Math.max(0,Number(t)||0);return i&&l?{workerId:i,workerRef:i.slice(0,8),workerName:r(o,80)||null,turnRev:l,outcome:n&&"success"!==n?r(n,40):"completed"}:null}export function enqueueWorkerCompletion(r,e,o=6){const t=(Array.isArray(r)?r:[]).filter(r=>r?.workerId&&Number(r?.turnRev)>0);if(!e?.workerId||Number(e?.turnRev)<=0)return t.slice(-o);const n=`${e.workerId}:${e.turnRev}`;return[...t.filter(r=>`${r.workerId}:${r.turnRev}`!==n),e].slice(-o)}export function acknowledgeWorkerCompletions(r,e){const o=new Set((Array.isArray(e)?e:[]).filter(r=>r?.workerId&&Number(r?.turnRev)>0).map(r=>`${r.workerId}:${r.turnRev}`));return(Array.isArray(r)?r:[]).filter(r=>r?.workerId&&Number(r?.turnRev)>0).filter(r=>!o.has(`${r.workerId}:${r.turnRev}`))}export function workerCompletionPrompt(r){const e=(Array.isArray(r)?r:[]).filter(r=>r?.workerId&&Number(r?.turnRev)>0).slice(-6);if(!e.length)return"";const o=e.map(r=>`- ${r.workerName?`${r.workerName} (${r.workerRef||String(r.workerId).slice(0,8)})`:r.workerRef||String(r.workerId).slice(0,8)}: ${r.outcome||"completed"}`).join("\n");return`[ThinkPool worker completion signal]\nYour owned worker lane${1===e.length?" has finished and is":"s have finished and are"} idle:\n${o}\n\nContinue the current task now. Call read_terminal exactly once for each finished worker, verify and integrate its result, then call close_terminal for that worker. Do not wait for a person to prompt you.`}
|