instar 1.3.1656 → 1.3.1658
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 +71 -8
- package/dist/commands/server.js.map +1 -1
- package/dist/core/DeliverMessageHandler.d.ts +20 -0
- package/dist/core/DeliverMessageHandler.d.ts.map +1 -1
- package/dist/core/DeliverMessageHandler.js +13 -0
- package/dist/core/DeliverMessageHandler.js.map +1 -1
- package/dist/core/PendingInboundStore.d.ts +2 -0
- package/dist/core/PendingInboundStore.d.ts.map +1 -1
- package/dist/core/PendingInboundStore.js +6 -0
- package/dist/core/PendingInboundStore.js.map +1 -1
- package/dist/core/PostUpdateMigrator.d.ts.map +1 -1
- package/dist/core/PostUpdateMigrator.js +18 -0
- package/dist/core/PostUpdateMigrator.js.map +1 -1
- package/dist/core/QueueDrainLoop.d.ts +1 -0
- package/dist/core/QueueDrainLoop.d.ts.map +1 -1
- package/dist/core/QueueDrainLoop.js +3 -0
- package/dist/core/QueueDrainLoop.js.map +1 -1
- package/dist/core/SessionManager.d.ts +6 -0
- package/dist/core/SessionManager.d.ts.map +1 -1
- package/dist/core/SessionManager.js +21 -1
- package/dist/core/SessionManager.js.map +1 -1
- package/dist/core/baselineProcessPatterns.d.ts +8 -0
- package/dist/core/baselineProcessPatterns.d.ts.map +1 -1
- package/dist/core/baselineProcessPatterns.js +14 -0
- package/dist/core/baselineProcessPatterns.js.map +1 -1
- package/dist/core/rebalanceProof.d.ts +15 -0
- package/dist/core/rebalanceProof.d.ts.map +1 -1
- package/dist/core/rebalanceProof.js +39 -3
- package/dist/core/rebalanceProof.js.map +1 -1
- package/dist/core/roleFollowRestart.d.ts +27 -0
- package/dist/core/roleFollowRestart.d.ts.map +1 -0
- package/dist/core/roleFollowRestart.js +53 -0
- package/dist/core/roleFollowRestart.js.map +1 -0
- package/dist/core/standDownDrain.d.ts.map +1 -1
- package/dist/core/standDownDrain.js +3 -1
- package/dist/core/standDownDrain.js.map +1 -1
- package/dist/core/types.d.ts +2 -0
- package/dist/core/types.d.ts.map +1 -1
- package/dist/core/types.js.map +1 -1
- package/dist/data/standards-guard-index.json +1 -1
- package/dist/data/standards-guard-index.meta.json +2 -2
- package/dist/data/standards-registry.meta.json +1 -1
- package/dist/native/InstarWedgeCanary.app/Contents/MacOS/InstarWedgeCanary +0 -0
- package/dist/native/instar-desktop-host +0 -0
- package/dist/scaffold/templates.d.ts.map +1 -1
- package/dist/scaffold/templates.js +1 -0
- package/dist/scaffold/templates.js.map +1 -1
- package/dist/users/wireMemoryPrivacy.d.ts.map +1 -1
- package/dist/users/wireMemoryPrivacy.js +9 -2
- package/dist/users/wireMemoryPrivacy.js.map +1 -1
- package/package.json +1 -1
- package/src/data/builtin-manifest.json +20 -20
- package/src/data/standards-guard-index.json +1 -1
- package/src/data/standards-guard-index.meta.json +2 -2
- package/src/data/standards-registry.meta.json +1 -1
- package/src/scaffold/templates.ts +1 -0
- package/upgrades/1.3.1657.md +38 -0
- package/upgrades/1.3.1658.md +19 -0
- package/upgrades/side-effects/lease-takeover-role-restart.md +49 -0
- package/upgrades/side-effects/memory-privacy-opt-in-existing-agents.md +78 -0
- package/upgrades/side-effects/rebalance-proof-settled-idle.md +50 -0
- package/upgrades/side-effects/session-pool-no-silent-drop.md +48 -0
- package/upgrades/side-effects/test-lsfiles-buffer.md +54 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/commands/server.ts"],"names":[],"mappings":"AAkIA,OAAO,EAAE,cAAc,EAAwD,MAAM,2BAA2B,CAAC;AAgBjH,OAAO,EAAE,eAAe,EAAiC,MAAM,iCAAiC,CAAC;AA6BjG,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAGvD,OAAO,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;
|
|
1
|
+
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/commands/server.ts"],"names":[],"mappings":"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"}
|
package/dist/commands/server.js
CHANGED
|
@@ -60,7 +60,7 @@ import { verifiedEntityName } from '../messaging/shared/channelIdentity.js';
|
|
|
60
60
|
import { StandDownRegistry } from '../core/StandDownRegistry.js';
|
|
61
61
|
import { getActiveOverloadShedPlanner, getMoveAftercare } from '../core/OverloadShedPlanner.js';
|
|
62
62
|
import { QuietTopicScanner } from '../core/quietTopicScanner.js';
|
|
63
|
-
import { RebalanceProofRunner, getActiveRebalanceProof, proofSpawnBrief, setActiveRebalanceProof, setActiveRebalanceProofStore } from '../core/rebalanceProof.js';
|
|
63
|
+
import { RebalanceProofRunner, getActiveRebalanceProof, waitForSettledIdle, proofSpawnBrief, setActiveRebalanceProof, setActiveRebalanceProofStore } from '../core/rebalanceProof.js';
|
|
64
64
|
import { rebalanceProofState } from '../core/StageAdvancer.js';
|
|
65
65
|
import { buildHandoffContinuationInstruction } from '../core/handoffContinuation.js';
|
|
66
66
|
import { BASELINE_PROCESS_PATTERNS } from '../core/baselineProcessPatterns.js';
|
|
@@ -240,6 +240,7 @@ import { DispatchScopeEnforcer } from '../core/DispatchScopeEnforcer.js';
|
|
|
240
240
|
import { TrustRecovery } from '../core/TrustRecovery.js';
|
|
241
241
|
import { DegradationReporter } from '../monitoring/DegradationReporter.js';
|
|
242
242
|
import { gitLeaseHasNoRemote, reportLeaseMediumSelection, selectLeaseMedium } from '../core/leaseMediumSelection.js';
|
|
243
|
+
import { decideRoleRestart, readLastRoleRestart, requestRoleRestart } from '../core/roleFollowRestart.js';
|
|
243
244
|
import { HumanAsDetectorLog, observeInboundMessage } from '../monitoring/HumanAsDetectorLog.js';
|
|
244
245
|
import { creditUsherOnMiss } from '../core/UsherActedCorrelator.js';
|
|
245
246
|
import { resolveStableNodeBinary } from '../utils/resolveNodeBinary.js';
|
|
@@ -6527,6 +6528,10 @@ export async function startServer(options) {
|
|
|
6527
6528
|
};
|
|
6528
6529
|
sessionManager.on('sessionComplete', (session) => sessionManager.releaseMemorySession(session));
|
|
6529
6530
|
await _memoryWiring.ready.catch((err) => console.error('[memory-privacy] boot probe failed; scoped conversations stay refused:', err));
|
|
6531
|
+
await sessionManager.retireBoundedSessionsWhenPrivacyOff()
|
|
6532
|
+
.then((names) => { if (names.length)
|
|
6533
|
+
console.log(`[memory-privacy] off: ended ${names.length} bounded session(s)`); })
|
|
6534
|
+
.catch((err) => console.error('[memory-privacy] could not end bounded sessions:', err));
|
|
6530
6535
|
// Native hook events (docs/specs/native-hook-events.md D4): reconcile the
|
|
6531
6536
|
// reporter entries in .claude/settings.json to this machine's decision at
|
|
6532
6537
|
// boot (a flag flip takes effect at the next restart, not the next
|
|
@@ -7750,6 +7755,44 @@ export async function startServer(options) {
|
|
|
7750
7755
|
console.log(pc.green(' Permission-Prompt Auto-Resolver: enabled (always-on safety floor)'));
|
|
7751
7756
|
}
|
|
7752
7757
|
let scheduler;
|
|
7758
|
+
// lease-takeover-role-restart: the scheduler below exists only on a machine awake at boot,
|
|
7759
|
+
// so a role change restarts once and this same path builds what the new role needs.
|
|
7760
|
+
// Losing authority stops jobs NOW, whatever a restart is waiting on: a throttled restart
|
|
7761
|
+
// must never mean jobs running in two places.
|
|
7762
|
+
const bootAwake = coordinator.isAwake;
|
|
7763
|
+
const reconcileRole = () => {
|
|
7764
|
+
try {
|
|
7765
|
+
const nowAwake = coordinator.isAwake;
|
|
7766
|
+
if (nowAwake === bootAwake)
|
|
7767
|
+
return;
|
|
7768
|
+
const lease = config.multiMachine?.leaseSelfHeal;
|
|
7769
|
+
const peer = Object.entries(coordinator.managers.identityManager.loadRegistry().machines ?? {})
|
|
7770
|
+
.some(([id, entry]) => id !== coordinator.identity?.machineId && !entry.revokedAt);
|
|
7771
|
+
const decision = decideRoleRestart({
|
|
7772
|
+
applies: !!lease?.soloCaptainHold?.enabled && !lease?.preferredAwakeMachineId && peer,
|
|
7773
|
+
bootAwake, nowAwake, lastRestartAtMs: readLastRoleRestart(config.stateDir), nowMs: Date.now(),
|
|
7774
|
+
});
|
|
7775
|
+
if (decision === 'restart') {
|
|
7776
|
+
console.log(pc.yellow(` [lease] role is now ${coordinator.role}: restarting once so boot builds what it needs`));
|
|
7777
|
+
requestRoleRestart({ stateDir: config.stateDir }, nowAwake);
|
|
7778
|
+
}
|
|
7779
|
+
}
|
|
7780
|
+
catch (err) {
|
|
7781
|
+
console.warn(` [lease] role restart check failed: ${err instanceof Error ? err.message : String(err)}`); // @silent-fallback-ok: logged, and the timer below retries
|
|
7782
|
+
}
|
|
7783
|
+
};
|
|
7784
|
+
coordinator.on('roleChange', (_from, to) => {
|
|
7785
|
+
const lease = config.multiMachine?.leaseSelfHeal;
|
|
7786
|
+
if (lease?.soloCaptainHold?.enabled && !lease?.preferredAwakeMachineId) {
|
|
7787
|
+
if (to === 'awake')
|
|
7788
|
+
scheduler?.resume();
|
|
7789
|
+
else
|
|
7790
|
+
scheduler?.pause();
|
|
7791
|
+
}
|
|
7792
|
+
reconcileRole();
|
|
7793
|
+
});
|
|
7794
|
+
// A change inside the restart window, or a failed request, is retried until the role matches.
|
|
7795
|
+
setInterval(reconcileRole, 60_000).unref?.();
|
|
7753
7796
|
if (config.scheduler.enabled && coordinator.isAwake) {
|
|
7754
7797
|
scheduler = new JobScheduler(config.scheduler, sessionManager, state, config.stateDir);
|
|
7755
7798
|
scheduler.notifyDestinationHasOtherReaders = (job) => {
|
|
@@ -24785,14 +24828,10 @@ export async function startServer(options) {
|
|
|
24785
24828
|
const name = await spawnSessionForTopic(sessionManager, telegram, `proof-${t}`, t, proofSpawnBrief());
|
|
24786
24829
|
telegram.registerTopicSession(t, name, `proof-${t}`);
|
|
24787
24830
|
}
|
|
24788
|
-
|
|
24789
|
-
while (Date.now() < deadline) {
|
|
24831
|
+
return waitForSettledIdle(async () => {
|
|
24790
24832
|
const tmux = live();
|
|
24791
|
-
|
|
24792
|
-
|
|
24793
|
-
await new Promise((r) => setTimeout(r, 5_000));
|
|
24794
|
-
}
|
|
24795
|
-
return false;
|
|
24833
|
+
return tmux && (await sessionManager.checkSessionWorkState(tmux)) === 'idle' ? tmux : null;
|
|
24834
|
+
}, timeoutMs, { now: () => Date.now(), sleep: (ms) => new Promise((r) => setTimeout(r, ms)) });
|
|
24796
24835
|
},
|
|
24797
24836
|
move: (t, to) => planner.proofMove(String(t), to),
|
|
24798
24837
|
probeViaHolder: async (t, nonce) => {
|
|
@@ -25395,6 +25434,30 @@ export async function startServer(options) {
|
|
|
25395
25434
|
deliverSeenFallback.add(messageId);
|
|
25396
25435
|
return true;
|
|
25397
25436
|
},
|
|
25437
|
+
// session-pool-no-silent-drop: mirrors every silent return in onAccepted below.
|
|
25438
|
+
// A dashboard start needs no channel. Anything else needs the pool on and the
|
|
25439
|
+
// channel it belongs to, or it would be acked here and lost.
|
|
25440
|
+
refusal: {
|
|
25441
|
+
canServe: (cmd) => {
|
|
25442
|
+
if (parseDashboardCreatePayload(cmd.payload) && typeof cmd.messageId === 'string'
|
|
25443
|
+
&& cmd.messageId.startsWith(`dashboard-create:${cmd.session}:`))
|
|
25444
|
+
return true;
|
|
25445
|
+
if (_sessionPoolStage() === 'dark')
|
|
25446
|
+
return false;
|
|
25447
|
+
return isSlackSessionKey(cmd.session) ? !!_slackInboundDispatch : !!telegram;
|
|
25448
|
+
},
|
|
25449
|
+
alreadyReceived: (messageId, session) => {
|
|
25450
|
+
try {
|
|
25451
|
+
if (_inboundQueue)
|
|
25452
|
+
return _inboundQueue.hasRemoteReceipt(session, messageId);
|
|
25453
|
+
}
|
|
25454
|
+
catch { /* @silent-fallback-ok — unreadable receipts fall through to the next tier */ }
|
|
25455
|
+
if (messageLedger)
|
|
25456
|
+
return messageLedger.get(messageId) !== null;
|
|
25457
|
+
return deliverSeenFallback.has(messageId);
|
|
25458
|
+
},
|
|
25459
|
+
onCannotServe: (cmd) => console.warn(` [session-pool] refused forwarded message for ${cmd.session}: this machine cannot serve it (stage ${_sessionPoolStage()})`),
|
|
25460
|
+
},
|
|
25398
25461
|
// §3.4 sender re-validation, hardened by the §2.D wiring gate: a carried
|
|
25399
25462
|
// envelope whose userId no longer resolves on THIS machine NACKs
|
|
25400
25463
|
// `sender-rejected` — BUT the gate never arms against a degenerate /
|