instar 1.3.506 → 1.3.508
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/dist/commands/server.d.ts.map +1 -1
- package/dist/commands/server.js +6 -12
- package/dist/commands/server.js.map +1 -1
- package/dist/config/ConfigDefaults.d.ts.map +1 -1
- package/dist/config/ConfigDefaults.js +16 -0
- package/dist/config/ConfigDefaults.js.map +1 -1
- package/dist/coordination/AnchoredAuthorization.d.ts +66 -0
- package/dist/coordination/AnchoredAuthorization.d.ts.map +1 -0
- package/dist/coordination/AnchoredAuthorization.js +71 -0
- package/dist/coordination/AnchoredAuthorization.js.map +1 -0
- package/dist/core/ExternalOperationGate.d.ts +12 -0
- package/dist/core/ExternalOperationGate.d.ts.map +1 -1
- package/dist/core/ExternalOperationGate.js +6 -0
- package/dist/core/ExternalOperationGate.js.map +1 -1
- package/dist/core/PostUpdateMigrator.d.ts.map +1 -1
- package/dist/core/PostUpdateMigrator.js +27 -0
- package/dist/core/PostUpdateMigrator.js.map +1 -1
- package/dist/core/devGatedFeatures.d.ts.map +1 -1
- package/dist/core/devGatedFeatures.js +5 -0
- package/dist/core/devGatedFeatures.js.map +1 -1
- package/dist/messaging/TelegramAdapter.d.ts +7 -0
- package/dist/messaging/TelegramAdapter.d.ts.map +1 -1
- package/dist/messaging/TelegramAdapter.js.map +1 -1
- package/dist/scaffold/templates.d.ts.map +1 -1
- package/dist/scaffold/templates.js +9 -0
- package/dist/scaffold/templates.js.map +1 -1
- package/dist/server/routes.d.ts.map +1 -1
- package/dist/server/routes.js +278 -19
- package/dist/server/routes.js.map +1 -1
- package/dist/threadline/ContentClassifier.d.ts +15 -0
- package/dist/threadline/ContentClassifier.d.ts.map +1 -1
- package/dist/threadline/ContentClassifier.js +39 -0
- package/dist/threadline/ContentClassifier.js.map +1 -1
- package/dist/threadline/ConversationStore.d.ts +32 -0
- package/dist/threadline/ConversationStore.d.ts.map +1 -1
- package/dist/threadline/ConversationStore.js +74 -0
- package/dist/threadline/ConversationStore.js.map +1 -1
- package/dist/threadline/NegotiatorGate.d.ts +88 -0
- package/dist/threadline/NegotiatorGate.d.ts.map +1 -0
- package/dist/threadline/NegotiatorGate.js +148 -0
- package/dist/threadline/NegotiatorGate.js.map +1 -0
- package/dist/threadline/NegotiatorLease.d.ts +156 -0
- package/dist/threadline/NegotiatorLease.d.ts.map +1 -0
- package/dist/threadline/NegotiatorLease.js +202 -0
- package/dist/threadline/NegotiatorLease.js.map +1 -0
- package/dist/threadline/ThreadlineEndpoints.d.ts +2 -1
- package/dist/threadline/ThreadlineEndpoints.d.ts.map +1 -1
- package/dist/threadline/ThreadlineEndpoints.js +21 -1
- package/dist/threadline/ThreadlineEndpoints.js.map +1 -1
- package/dist/threadline/ThreadlineMCPServer.d.ts +8 -0
- package/dist/threadline/ThreadlineMCPServer.d.ts.map +1 -1
- package/dist/threadline/ThreadlineMCPServer.js +14 -1
- package/dist/threadline/ThreadlineMCPServer.js.map +1 -1
- package/dist/threadline/mcp-http-client.d.ts.map +1 -1
- package/dist/threadline/mcp-http-client.js +6 -0
- package/dist/threadline/mcp-http-client.js.map +1 -1
- package/dist/threadline/recordInboundAck.d.ts +48 -0
- package/dist/threadline/recordInboundAck.d.ts.map +1 -0
- package/dist/threadline/recordInboundAck.js +46 -0
- package/dist/threadline/recordInboundAck.js.map +1 -0
- package/package.json +1 -1
- package/src/data/builtin-manifest.json +63 -63
- package/src/scaffold/templates.ts +9 -0
- package/upgrades/1.3.507.md +46 -0
- package/upgrades/1.3.508.md +83 -0
- package/upgrades/side-effects/multi-machine-seamlessness-ws41-attention-pool-read.md +83 -0
- package/upgrades/side-effects/threadline-single-negotiator.md +106 -0
|
@@ -0,0 +1,156 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* NegotiatorLease — types + pure helpers for the Threadline single-negotiator
|
|
3
|
+
* lock (Robustness Phase 1, THREADLINE-SINGLE-NEGOTIATOR-SPEC.md, CMT-1362).
|
|
4
|
+
*
|
|
5
|
+
* The lease names exactly ONE session as the owner of a conversation's outbound
|
|
6
|
+
* voice (G1 — "one voice"). It is stored as optional fields on the existing
|
|
7
|
+
* `Conversation` record so it inherits the ConversationStore's single-writer CAS
|
|
8
|
+
* + atomic-write guarantees; the acquire/renew transaction lives on
|
|
9
|
+
* ConversationStore (`acquireOrRenewLease`). This module holds only the durable
|
|
10
|
+
* SHAPE, the config resolver, and the pure decision helpers — no I/O, no
|
|
11
|
+
* authority. The send-gate orchestration lives in {@link ./NegotiatorGate}.
|
|
12
|
+
*
|
|
13
|
+
* SIGNAL-vs-AUTHORITY: the lease is the ONLY blocking authority in Phase 1, and
|
|
14
|
+
* it blocks on a STRUCTURAL ownership check (who holds the voice), never on what
|
|
15
|
+
* a message MEANS. The commitment-class lexicon in ContentClassifier is a
|
|
16
|
+
* signal-only nudge with no authority (FD-4/FD-10).
|
|
17
|
+
*/
|
|
18
|
+
/**
|
|
19
|
+
* Per-conversation negotiator lease. `epoch` is monotonic — every (re)acquire
|
|
20
|
+
* increments it, which fences a stale holder: a session that held epoch N,
|
|
21
|
+
* stalled past TTL, and was taken over (epoch N+1) re-reads the live lease at
|
|
22
|
+
* the send chokepoint, finds N+1 ≠ N, and yields rather than speaking as owner.
|
|
23
|
+
*/
|
|
24
|
+
export interface NegotiatorLease {
|
|
25
|
+
/** Server-authoritative live session identity at the chokepoint. */
|
|
26
|
+
ownerSessionName: string;
|
|
27
|
+
/** This machine's id (the lease is a per-machine, intra-machine voice guard). */
|
|
28
|
+
ownerMachineId: string;
|
|
29
|
+
/** Monotonic; every (re)acquire increments — fences stale holders. */
|
|
30
|
+
epoch: number;
|
|
31
|
+
acquiredAt: string;
|
|
32
|
+
renewedAt: string;
|
|
33
|
+
expiresAt: string;
|
|
34
|
+
}
|
|
35
|
+
/** The (session, machine) identity that wants to own / renew the voice. */
|
|
36
|
+
export interface LeaseOwner {
|
|
37
|
+
ownerSessionName: string;
|
|
38
|
+
ownerMachineId: string;
|
|
39
|
+
}
|
|
40
|
+
/** Disposition of an acquire-or-renew transaction. */
|
|
41
|
+
export type LeaseDisposition = 'acquired' | 'renewed' | 'held';
|
|
42
|
+
export interface LeaseResult {
|
|
43
|
+
disposition: LeaseDisposition;
|
|
44
|
+
/** The live lease after the transaction (the owner's lease when `held`). */
|
|
45
|
+
lease: NegotiatorLease;
|
|
46
|
+
/** True for acquired/renewed (the caller owns the voice); false for held. */
|
|
47
|
+
ownedByCaller: boolean;
|
|
48
|
+
}
|
|
49
|
+
export interface SingleNegotiatorConfig {
|
|
50
|
+
/** Master switch. Default false ⇒ gate is pure pass-through (ships dark). */
|
|
51
|
+
enabled: boolean;
|
|
52
|
+
/** When enabled, dry-run logs the verdict it WOULD reach but still sends. */
|
|
53
|
+
dryRun: boolean;
|
|
54
|
+
/** Lease TTL — renew-on-send, no background timers (FD-1). */
|
|
55
|
+
leaseTtlMs: number;
|
|
56
|
+
/** Global per-thread min interval between holding notices (FD-3). */
|
|
57
|
+
holdingNoticeMinIntervalMs: number;
|
|
58
|
+
/** Dry-run JSONL rotation window (FD-9). */
|
|
59
|
+
dryRunRetentionDays: number;
|
|
60
|
+
}
|
|
61
|
+
export declare const SINGLE_NEGOTIATOR_DEFAULTS: SingleNegotiatorConfig;
|
|
62
|
+
/**
|
|
63
|
+
* Resolve the `threadline.singleNegotiator` config block defensively. Unknown /
|
|
64
|
+
* missing fields fall back to the safe (dark, dry-run) defaults. `dryRun`
|
|
65
|
+
* defaults TRUE when enabled (FD-7) — enforce (withholding a real send) is only
|
|
66
|
+
* ever reached by an explicit `dryRun: false`.
|
|
67
|
+
*/
|
|
68
|
+
export declare function resolveSingleNegotiatorConfig(raw: unknown): SingleNegotiatorConfig;
|
|
69
|
+
/**
|
|
70
|
+
* The holding-notice envelope. ADDITIVE wire kind: an upgraded peer recognizes
|
|
71
|
+
* `kind`; an un-upgraded peer simply renders `text` as a harmless one-liner. On
|
|
72
|
+
* OUR side it is NEVER ack/content/message-count-bearing and NEVER carries
|
|
73
|
+
* model-authored text — only owner/agent/epoch are interpolated into a fixed
|
|
74
|
+
* template — and it creates NO sender-side awaiting-ack record (FD-11).
|
|
75
|
+
*/
|
|
76
|
+
export interface HoldingNotice {
|
|
77
|
+
kind: 'holding-notice';
|
|
78
|
+
owner: {
|
|
79
|
+
sessionName: string;
|
|
80
|
+
machineId: string;
|
|
81
|
+
};
|
|
82
|
+
epoch: number;
|
|
83
|
+
text: string;
|
|
84
|
+
}
|
|
85
|
+
/** Build the fixed-template holding notice. No model-authored text (FD-11). */
|
|
86
|
+
export declare function buildHoldingNotice(agentName: string, lease: NegotiatorLease): HoldingNotice;
|
|
87
|
+
/**
|
|
88
|
+
* Pure decision: may a holding notice be emitted now for (thread, epoch)? Honors
|
|
89
|
+
* BOTH the durable per-epoch limit AND the global min-interval floor (FD-3),
|
|
90
|
+
* which together bound an epoch-cycling flood.
|
|
91
|
+
*/
|
|
92
|
+
export declare function shouldEmitHoldingNotice(opts: {
|
|
93
|
+
epoch: number;
|
|
94
|
+
lastHoldingNoticeEpoch?: number;
|
|
95
|
+
lastHoldingNoticeAt?: string;
|
|
96
|
+
minIntervalMs: number;
|
|
97
|
+
now: number;
|
|
98
|
+
}): boolean;
|
|
99
|
+
/** A reported live holder of a conversation, as observed across the mesh. */
|
|
100
|
+
export interface HolderObservation {
|
|
101
|
+
conversationId: string;
|
|
102
|
+
machineId: string;
|
|
103
|
+
}
|
|
104
|
+
/**
|
|
105
|
+
* Pure detector: given holder observations (one per machine that believes it is
|
|
106
|
+
* the live holder of a conversation), return the conversationIds observed on
|
|
107
|
+
* MORE THAN ONE machine. Under the single-holder invariant (FD-2) this is always
|
|
108
|
+
* empty; a non-empty result is a split-brain / routing-bug / clock-skew signal
|
|
109
|
+
* that must raise a HIGH-priority alert rather than silently re-opening the
|
|
110
|
+
* cross-machine incident path. Fed by the existing holder-election observations;
|
|
111
|
+
* genuinely-concurrent multi-machine processing of one conversation is the F2
|
|
112
|
+
* surface, explicitly Phase 3.
|
|
113
|
+
*/
|
|
114
|
+
export declare function detectDuplicateLiveHolders(observations: HolderObservation[]): Array<{
|
|
115
|
+
conversationId: string;
|
|
116
|
+
machineIds: string[];
|
|
117
|
+
}>;
|
|
118
|
+
/** One observability record appended to logs/threadline-negotiator.jsonl. */
|
|
119
|
+
export interface NegotiatorLogEntry {
|
|
120
|
+
ts: string;
|
|
121
|
+
threadId: string;
|
|
122
|
+
/** What the gate did or WOULD do. */
|
|
123
|
+
action: 'allow-own' | 'would-hold' | 'hold' | 'fail-open' | 'cas-exhausted';
|
|
124
|
+
sessionName: string;
|
|
125
|
+
ownerSessionName?: string;
|
|
126
|
+
epoch?: number;
|
|
127
|
+
dryRun: boolean;
|
|
128
|
+
attemptCount?: number;
|
|
129
|
+
detail?: string;
|
|
130
|
+
}
|
|
131
|
+
/**
|
|
132
|
+
* Append a negotiator observability record. Daily-rotated by filename so the
|
|
133
|
+
* retention sweep (dryRunRetentionDays) can prune by date. Best-effort — logging
|
|
134
|
+
* never endangers the send.
|
|
135
|
+
*/
|
|
136
|
+
export declare function appendNegotiatorLog(logDir: string, entry: NegotiatorLogEntry): void;
|
|
137
|
+
/** Aggregate counts read from the negotiator observability JSONL (for the route). */
|
|
138
|
+
export interface NegotiatorCounts {
|
|
139
|
+
allowOwn: number;
|
|
140
|
+
wouldHold: number;
|
|
141
|
+
hold: number;
|
|
142
|
+
failOpen: number;
|
|
143
|
+
casExhausted: number;
|
|
144
|
+
}
|
|
145
|
+
/**
|
|
146
|
+
* Tally the negotiator observability log over the most recent `days` files.
|
|
147
|
+
* Bounded by reading at most `days` day-files (default 7). Best-effort — a
|
|
148
|
+
* missing/corrupt line is skipped, never thrown.
|
|
149
|
+
*/
|
|
150
|
+
export declare function readNegotiatorCounts(logDir: string, days?: number): NegotiatorCounts;
|
|
151
|
+
/**
|
|
152
|
+
* Prune negotiator dry-run logs older than `retentionDays`. Idempotent;
|
|
153
|
+
* best-effort. Returns the number of files removed (for tests/observability).
|
|
154
|
+
*/
|
|
155
|
+
export declare function pruneNegotiatorLogs(logDir: string, retentionDays: number, now?: number): number;
|
|
156
|
+
//# sourceMappingURL=NegotiatorLease.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"NegotiatorLease.d.ts","sourceRoot":"","sources":["../../src/threadline/NegotiatorLease.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,202 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* NegotiatorLease — types + pure helpers for the Threadline single-negotiator
|
|
3
|
+
* lock (Robustness Phase 1, THREADLINE-SINGLE-NEGOTIATOR-SPEC.md, CMT-1362).
|
|
4
|
+
*
|
|
5
|
+
* The lease names exactly ONE session as the owner of a conversation's outbound
|
|
6
|
+
* voice (G1 — "one voice"). It is stored as optional fields on the existing
|
|
7
|
+
* `Conversation` record so it inherits the ConversationStore's single-writer CAS
|
|
8
|
+
* + atomic-write guarantees; the acquire/renew transaction lives on
|
|
9
|
+
* ConversationStore (`acquireOrRenewLease`). This module holds only the durable
|
|
10
|
+
* SHAPE, the config resolver, and the pure decision helpers — no I/O, no
|
|
11
|
+
* authority. The send-gate orchestration lives in {@link ./NegotiatorGate}.
|
|
12
|
+
*
|
|
13
|
+
* SIGNAL-vs-AUTHORITY: the lease is the ONLY blocking authority in Phase 1, and
|
|
14
|
+
* it blocks on a STRUCTURAL ownership check (who holds the voice), never on what
|
|
15
|
+
* a message MEANS. The commitment-class lexicon in ContentClassifier is a
|
|
16
|
+
* signal-only nudge with no authority (FD-4/FD-10).
|
|
17
|
+
*/
|
|
18
|
+
import fs from 'node:fs';
|
|
19
|
+
import path from 'node:path';
|
|
20
|
+
import { SafeFsExecutor } from '../core/SafeFsExecutor.js';
|
|
21
|
+
export const SINGLE_NEGOTIATOR_DEFAULTS = {
|
|
22
|
+
enabled: false,
|
|
23
|
+
dryRun: true,
|
|
24
|
+
leaseTtlMs: 90_000,
|
|
25
|
+
holdingNoticeMinIntervalMs: 300_000,
|
|
26
|
+
dryRunRetentionDays: 7,
|
|
27
|
+
};
|
|
28
|
+
/**
|
|
29
|
+
* Resolve the `threadline.singleNegotiator` config block defensively. Unknown /
|
|
30
|
+
* missing fields fall back to the safe (dark, dry-run) defaults. `dryRun`
|
|
31
|
+
* defaults TRUE when enabled (FD-7) — enforce (withholding a real send) is only
|
|
32
|
+
* ever reached by an explicit `dryRun: false`.
|
|
33
|
+
*/
|
|
34
|
+
export function resolveSingleNegotiatorConfig(raw) {
|
|
35
|
+
const r = (raw ?? {});
|
|
36
|
+
const posNum = (v, d) => typeof v === 'number' && Number.isFinite(v) && v > 0 ? v : d;
|
|
37
|
+
return {
|
|
38
|
+
enabled: r.enabled === true,
|
|
39
|
+
// Default true when the key is absent; only an explicit `false` disarms it.
|
|
40
|
+
dryRun: r.dryRun === undefined ? true : r.dryRun !== false,
|
|
41
|
+
leaseTtlMs: posNum(r.leaseTtlMs, SINGLE_NEGOTIATOR_DEFAULTS.leaseTtlMs),
|
|
42
|
+
holdingNoticeMinIntervalMs: posNum(r.holdingNoticeMinIntervalMs, SINGLE_NEGOTIATOR_DEFAULTS.holdingNoticeMinIntervalMs),
|
|
43
|
+
dryRunRetentionDays: posNum(r.dryRunRetentionDays, SINGLE_NEGOTIATOR_DEFAULTS.dryRunRetentionDays),
|
|
44
|
+
};
|
|
45
|
+
}
|
|
46
|
+
/** Build the fixed-template holding notice. No model-authored text (FD-11). */
|
|
47
|
+
export function buildHoldingNotice(agentName, lease) {
|
|
48
|
+
const text = `[threadline] ${agentName} is already handling this conversation in another ` +
|
|
49
|
+
`session (owner ${lease.ownerSessionName}, epoch ${lease.epoch}); that session ` +
|
|
50
|
+
`will respond. This is an automated holding notice — it carries no commitment.`;
|
|
51
|
+
return {
|
|
52
|
+
kind: 'holding-notice',
|
|
53
|
+
owner: { sessionName: lease.ownerSessionName, machineId: lease.ownerMachineId },
|
|
54
|
+
epoch: lease.epoch,
|
|
55
|
+
text,
|
|
56
|
+
};
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* Pure decision: may a holding notice be emitted now for (thread, epoch)? Honors
|
|
60
|
+
* BOTH the durable per-epoch limit AND the global min-interval floor (FD-3),
|
|
61
|
+
* which together bound an epoch-cycling flood.
|
|
62
|
+
*/
|
|
63
|
+
export function shouldEmitHoldingNotice(opts) {
|
|
64
|
+
const { epoch, lastHoldingNoticeEpoch, lastHoldingNoticeAt, minIntervalMs, now } = opts;
|
|
65
|
+
// Per-epoch limit: at most one notice per (thread, epoch).
|
|
66
|
+
if (lastHoldingNoticeEpoch === epoch)
|
|
67
|
+
return false;
|
|
68
|
+
// Global min-interval floor: at most one notice per thread per window.
|
|
69
|
+
if (lastHoldingNoticeAt) {
|
|
70
|
+
const last = new Date(lastHoldingNoticeAt).getTime();
|
|
71
|
+
if (Number.isFinite(last) && now - last < minIntervalMs)
|
|
72
|
+
return false;
|
|
73
|
+
}
|
|
74
|
+
return true;
|
|
75
|
+
}
|
|
76
|
+
/**
|
|
77
|
+
* Pure detector: given holder observations (one per machine that believes it is
|
|
78
|
+
* the live holder of a conversation), return the conversationIds observed on
|
|
79
|
+
* MORE THAN ONE machine. Under the single-holder invariant (FD-2) this is always
|
|
80
|
+
* empty; a non-empty result is a split-brain / routing-bug / clock-skew signal
|
|
81
|
+
* that must raise a HIGH-priority alert rather than silently re-opening the
|
|
82
|
+
* cross-machine incident path. Fed by the existing holder-election observations;
|
|
83
|
+
* genuinely-concurrent multi-machine processing of one conversation is the F2
|
|
84
|
+
* surface, explicitly Phase 3.
|
|
85
|
+
*/
|
|
86
|
+
export function detectDuplicateLiveHolders(observations) {
|
|
87
|
+
const byConversation = new Map();
|
|
88
|
+
for (const o of observations) {
|
|
89
|
+
if (!o || !o.conversationId || !o.machineId)
|
|
90
|
+
continue;
|
|
91
|
+
let set = byConversation.get(o.conversationId);
|
|
92
|
+
if (!set) {
|
|
93
|
+
set = new Set();
|
|
94
|
+
byConversation.set(o.conversationId, set);
|
|
95
|
+
}
|
|
96
|
+
set.add(o.machineId);
|
|
97
|
+
}
|
|
98
|
+
const dupes = [];
|
|
99
|
+
for (const [conversationId, machineIds] of byConversation) {
|
|
100
|
+
if (machineIds.size > 1)
|
|
101
|
+
dupes.push({ conversationId, machineIds: [...machineIds].sort() });
|
|
102
|
+
}
|
|
103
|
+
return dupes;
|
|
104
|
+
}
|
|
105
|
+
/**
|
|
106
|
+
* Append a negotiator observability record. Daily-rotated by filename so the
|
|
107
|
+
* retention sweep (dryRunRetentionDays) can prune by date. Best-effort — logging
|
|
108
|
+
* never endangers the send.
|
|
109
|
+
*/
|
|
110
|
+
export function appendNegotiatorLog(logDir, entry) {
|
|
111
|
+
try {
|
|
112
|
+
fs.mkdirSync(logDir, { recursive: true });
|
|
113
|
+
// YYYY-MM-DD suffix → trivially prunable by the retention sweep.
|
|
114
|
+
const day = entry.ts.slice(0, 10);
|
|
115
|
+
const file = path.join(logDir, `threadline-negotiator-${day}.jsonl`);
|
|
116
|
+
fs.appendFileSync(file, JSON.stringify(entry) + '\n');
|
|
117
|
+
}
|
|
118
|
+
catch {
|
|
119
|
+
// @silent-fallback-ok: observability log is best-effort; never break the send.
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
/**
|
|
123
|
+
* Tally the negotiator observability log over the most recent `days` files.
|
|
124
|
+
* Bounded by reading at most `days` day-files (default 7). Best-effort — a
|
|
125
|
+
* missing/corrupt line is skipped, never thrown.
|
|
126
|
+
*/
|
|
127
|
+
export function readNegotiatorCounts(logDir, days = 7) {
|
|
128
|
+
const counts = { allowOwn: 0, wouldHold: 0, hold: 0, failOpen: 0, casExhausted: 0 };
|
|
129
|
+
try {
|
|
130
|
+
if (!fs.existsSync(logDir))
|
|
131
|
+
return counts;
|
|
132
|
+
const files = fs
|
|
133
|
+
.readdirSync(logDir)
|
|
134
|
+
.filter((n) => /^threadline-negotiator-\d{4}-\d{2}-\d{2}\.jsonl$/.test(n))
|
|
135
|
+
.sort()
|
|
136
|
+
.slice(-Math.max(1, days));
|
|
137
|
+
for (const name of files) {
|
|
138
|
+
let raw;
|
|
139
|
+
try {
|
|
140
|
+
raw = fs.readFileSync(path.join(logDir, name), 'utf-8');
|
|
141
|
+
}
|
|
142
|
+
catch {
|
|
143
|
+
continue;
|
|
144
|
+
}
|
|
145
|
+
for (const line of raw.split('\n')) {
|
|
146
|
+
if (!line.trim())
|
|
147
|
+
continue;
|
|
148
|
+
try {
|
|
149
|
+
const e = JSON.parse(line);
|
|
150
|
+
switch (e.action) {
|
|
151
|
+
case 'allow-own':
|
|
152
|
+
counts.allowOwn++;
|
|
153
|
+
break;
|
|
154
|
+
case 'would-hold':
|
|
155
|
+
counts.wouldHold++;
|
|
156
|
+
break;
|
|
157
|
+
case 'hold':
|
|
158
|
+
counts.hold++;
|
|
159
|
+
break;
|
|
160
|
+
case 'fail-open':
|
|
161
|
+
counts.failOpen++;
|
|
162
|
+
break;
|
|
163
|
+
case 'cas-exhausted':
|
|
164
|
+
counts.casExhausted++;
|
|
165
|
+
break;
|
|
166
|
+
}
|
|
167
|
+
}
|
|
168
|
+
catch { /* skip corrupt line */ }
|
|
169
|
+
}
|
|
170
|
+
}
|
|
171
|
+
}
|
|
172
|
+
catch { /* best-effort */ }
|
|
173
|
+
return counts;
|
|
174
|
+
}
|
|
175
|
+
/**
|
|
176
|
+
* Prune negotiator dry-run logs older than `retentionDays`. Idempotent;
|
|
177
|
+
* best-effort. Returns the number of files removed (for tests/observability).
|
|
178
|
+
*/
|
|
179
|
+
export function pruneNegotiatorLogs(logDir, retentionDays, now = Date.now()) {
|
|
180
|
+
let removed = 0;
|
|
181
|
+
try {
|
|
182
|
+
if (!fs.existsSync(logDir))
|
|
183
|
+
return 0;
|
|
184
|
+
const cutoff = now - retentionDays * 24 * 60 * 60 * 1000;
|
|
185
|
+
for (const name of fs.readdirSync(logDir)) {
|
|
186
|
+
const m = name.match(/^threadline-negotiator-(\d{4}-\d{2}-\d{2})\.jsonl$/);
|
|
187
|
+
if (!m)
|
|
188
|
+
continue;
|
|
189
|
+
const day = new Date(`${m[1]}T00:00:00Z`).getTime();
|
|
190
|
+
if (Number.isFinite(day) && day < cutoff) {
|
|
191
|
+
try {
|
|
192
|
+
SafeFsExecutor.safeUnlinkSync(path.join(logDir, name), { operation: 'NegotiatorLease.pruneNegotiatorLogs' });
|
|
193
|
+
removed++;
|
|
194
|
+
}
|
|
195
|
+
catch { /* best-effort */ }
|
|
196
|
+
}
|
|
197
|
+
}
|
|
198
|
+
}
|
|
199
|
+
catch { /* best-effort */ }
|
|
200
|
+
return removed;
|
|
201
|
+
}
|
|
202
|
+
//# sourceMappingURL=NegotiatorLease.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"NegotiatorLease.js","sourceRoot":"","sources":["../../src/threadline/NegotiatorLease.ts"],"names":[],"mappings":"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"}
|
|
@@ -17,6 +17,7 @@
|
|
|
17
17
|
import { Router } from 'express';
|
|
18
18
|
import type { HandshakeManager } from './HandshakeManager.js';
|
|
19
19
|
import type { ThreadlineRouter } from './ThreadlineRouter.js';
|
|
20
|
+
import { type InboundAckDeps } from './recordInboundAck.js';
|
|
20
21
|
export interface ThreadlineError {
|
|
21
22
|
error: {
|
|
22
23
|
code: string;
|
|
@@ -33,5 +34,5 @@ export interface ThreadlineEndpointsConfig {
|
|
|
33
34
|
/** Agent state directory — used to resolve the canonical routing identity for /threadline/health */
|
|
34
35
|
stateDir: string;
|
|
35
36
|
}
|
|
36
|
-
export declare function createThreadlineRoutes(handshakeManager: HandshakeManager, threadlineRouter: ThreadlineRouter | null, config: ThreadlineEndpointsConfig): Router;
|
|
37
|
+
export declare function createThreadlineRoutes(handshakeManager: HandshakeManager, threadlineRouter: ThreadlineRouter | null, config: ThreadlineEndpointsConfig, inboundAckDeps?: InboundAckDeps): Router;
|
|
37
38
|
//# sourceMappingURL=ThreadlineEndpoints.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ThreadlineEndpoints.d.ts","sourceRoot":"","sources":["../../src/threadline/ThreadlineEndpoints.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AAGjC,OAAO,KAAK,EAAE,gBAAgB,EAAgC,MAAM,uBAAuB,CAAC;AAC5F,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"ThreadlineEndpoints.d.ts","sourceRoot":"","sources":["../../src/threadline/ThreadlineEndpoints.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AAGjC,OAAO,KAAK,EAAE,gBAAgB,EAAgC,MAAM,uBAAuB,CAAC;AAC5F,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAG9D,OAAO,EAAoB,KAAK,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAI9E,MAAM,WAAW,eAAe;IAC9B,KAAK,EAAE;QACL,IAAI,EAAE,MAAM,CAAC;QACb,OAAO,EAAE,MAAM,CAAC;QAChB,SAAS,EAAE,OAAO,CAAC;QACnB,iBAAiB,CAAC,EAAE,MAAM,CAAC;KAC5B,CAAC;CACH;AAED,MAAM,WAAW,yBAAyB;IACxC,yBAAyB;IACzB,UAAU,EAAE,MAAM,CAAC;IACnB,kCAAkC;IAClC,OAAO,EAAE,MAAM,CAAC;IAChB,oGAAoG;IACpG,QAAQ,EAAE,MAAM,CAAC;CAClB;AA8CD,wBAAgB,sBAAsB,CACpC,gBAAgB,EAAE,gBAAgB,EAClC,gBAAgB,EAAE,gBAAgB,GAAG,IAAI,EACzC,MAAM,EAAE,yBAAyB,EAIjC,cAAc,CAAC,EAAE,cAAc,GAC9B,MAAM,CAiZR"}
|
|
@@ -18,6 +18,7 @@ import { Router } from 'express';
|
|
|
18
18
|
import crypto from 'node:crypto';
|
|
19
19
|
import { verify } from './ThreadlineCrypto.js';
|
|
20
20
|
import { IdentityManager } from './client/IdentityManager.js';
|
|
21
|
+
import { recordInboundAck } from './recordInboundAck.js';
|
|
21
22
|
// ── Error Codes ──────────────────────────────────────────────────────
|
|
22
23
|
const ERROR_CODES = {
|
|
23
24
|
TL_AUTH_FAILED: 'TL_AUTH_FAILED',
|
|
@@ -55,7 +56,11 @@ class ThreadlineNonceStore {
|
|
|
55
56
|
}
|
|
56
57
|
}
|
|
57
58
|
// ── Route Factory ────────────────────────────────────────────────────
|
|
58
|
-
export function createThreadlineRoutes(handshakeManager, threadlineRouter, config
|
|
59
|
+
export function createThreadlineRoutes(handshakeManager, threadlineRouter, config,
|
|
60
|
+
// Robustness Phase 1 (D-E / F4): the delivery tracker + thread-owner lookup so
|
|
61
|
+
// the verified E2E relay inbound path records the implicit ack through the
|
|
62
|
+
// shared recordInboundAck funnel. Optional — absent in tests that don't need it.
|
|
63
|
+
inboundAckDeps) {
|
|
59
64
|
const router = Router();
|
|
60
65
|
const nonceStore = new ThreadlineNonceStore();
|
|
61
66
|
// ── Content-Type middleware for all threadline routes ───────────
|
|
@@ -273,6 +278,21 @@ export function createThreadlineRoutes(handshakeManager, threadlineRouter, confi
|
|
|
273
278
|
// returned). The former 422-retryable path was already unreachable — the
|
|
274
279
|
// sender aborts at ~10s, long before the 9-30s spawn produced it.
|
|
275
280
|
res.json({ accepted: true, async: true, threadId: body.message?.threadId });
|
|
281
|
+
// Robustness Phase 1 (D-E / closes F4): record the implicit delivery ack on
|
|
282
|
+
// the VERIFIED E2E relay inbound path — the path that previously lacked it,
|
|
283
|
+
// producing the permanent false `stale: true` noise. threadlineAuth has
|
|
284
|
+
// already validated the relay token + Ed25519 signature for the agent named
|
|
285
|
+
// in x-threadline-agent, so it is the authenticated sender. Funnelled through
|
|
286
|
+
// the shared recordInboundAck so the wiring-integrity test can enforce it.
|
|
287
|
+
try {
|
|
288
|
+
const verifiedSender = req.headers['x-threadline-agent'];
|
|
289
|
+
recordInboundAck(inboundAckDeps ?? {}, {
|
|
290
|
+
threadId: body.message?.threadId,
|
|
291
|
+
senderFingerprint: verifiedSender,
|
|
292
|
+
senderName: verifiedSender ?? null,
|
|
293
|
+
});
|
|
294
|
+
}
|
|
295
|
+
catch { /* @silent-fallback-ok: recording-only — never block inbound routing */ }
|
|
276
296
|
void threadlineRouter.handleInboundMessage(envelope)
|
|
277
297
|
.then((result) => {
|
|
278
298
|
if (result?.error) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ThreadlineEndpoints.js","sourceRoot":"","sources":["../../src/threadline/ThreadlineEndpoints.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ThreadlineEndpoints.js","sourceRoot":"","sources":["../../src/threadline/ThreadlineEndpoints.ts"],"names":[],"mappings":"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"}
|
|
@@ -128,6 +128,14 @@ export interface SendMessageResult {
|
|
|
128
128
|
deliveryOutcome?: string;
|
|
129
129
|
/** How the message was delivered (local, relay) */
|
|
130
130
|
deliveryPath?: string;
|
|
131
|
+
/** Whether the content was actually delivered (false when withheld by the negotiator lease). */
|
|
132
|
+
delivered?: boolean;
|
|
133
|
+
/** True when the single-negotiator lease withheld this content send (G1 holding). */
|
|
134
|
+
held?: boolean;
|
|
135
|
+
/** Human-readable note (e.g. why content was withheld by the lease). */
|
|
136
|
+
note?: string;
|
|
137
|
+
/** Signal-only advisory nudge (e.g. commitment-class prose → anchor via mandate). */
|
|
138
|
+
advisory?: string;
|
|
131
139
|
}
|
|
132
140
|
export interface RequestSecretParams {
|
|
133
141
|
/** What's being requested — shown as the Secret Drop form title. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ThreadlineMCPServer.d.ts","sourceRoot":"","sources":["../../src/threadline/ThreadlineMCPServer.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"ThreadlineMCPServer.d.ts","sourceRoot":"","sources":["../../src/threadline/ThreadlineMCPServer.ts"],"names":[],"mappings":"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"}
|
|
@@ -375,12 +375,25 @@ export class ThreadlineMCPServer {
|
|
|
375
375
|
// the message. It's true unless the recipient reported an
|
|
376
376
|
// error outcome. When no outcome info is available we default
|
|
377
377
|
// to true (success path) — result.success is already checked above.
|
|
378
|
-
delivered:
|
|
378
|
+
// The single-negotiator lease can explicitly set delivered:false when
|
|
379
|
+
// it WITHHELD this non-owner content send (G1 holding) — honor it.
|
|
380
|
+
delivered: result.delivered !== undefined
|
|
381
|
+
? result.delivered
|
|
382
|
+
: !(result.deliveryOutcome?.startsWith('error')),
|
|
379
383
|
outcome: result.deliveryOutcome ?? 'accepted',
|
|
380
384
|
deliveryPath: result.deliveryPath,
|
|
381
385
|
threadId: result.threadId,
|
|
382
386
|
messageId: result.messageId,
|
|
383
387
|
};
|
|
388
|
+
// Surface the negotiator lease's holding note + the commitment-class
|
|
389
|
+
// advisory nudge so the sending session learns it is not the voice /
|
|
390
|
+
// is pointed at the anchored binding path (Robustness Phase 1).
|
|
391
|
+
if (result.held)
|
|
392
|
+
response.held = true;
|
|
393
|
+
if (result.note)
|
|
394
|
+
response.note = result.note;
|
|
395
|
+
if (result.advisory)
|
|
396
|
+
response.advisory = result.advisory;
|
|
384
397
|
if (args.waitForReply && result.reply) {
|
|
385
398
|
response.reply = result.reply;
|
|
386
399
|
response.replyFrom = result.replyFrom;
|