instar 1.3.887 → 1.3.889
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/dashboard/index.html +12 -0
- package/dashboard/preferences-learning.js +87 -5
- package/dist/cli.js +8 -0
- package/dist/cli.js.map +1 -1
- package/dist/commands/gate.d.ts +3 -0
- package/dist/commands/gate.d.ts.map +1 -1
- package/dist/commands/gate.js +17 -0
- package/dist/commands/gate.js.map +1 -1
- package/dist/commands/init.js +3 -0
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/server.d.ts.map +1 -1
- package/dist/commands/server.js +129 -0
- package/dist/commands/server.js.map +1 -1
- package/dist/config/ConfigDefaults.d.ts.map +1 -1
- package/dist/config/ConfigDefaults.js +20 -0
- package/dist/config/ConfigDefaults.js.map +1 -1
- package/dist/core/BackupManager.d.ts.map +1 -1
- package/dist/core/BackupManager.js +9 -0
- package/dist/core/BackupManager.js.map +1 -1
- package/dist/core/ClassReviewReplicatedStore.d.ts +27 -0
- package/dist/core/ClassReviewReplicatedStore.d.ts.map +1 -0
- package/dist/core/ClassReviewReplicatedStore.js +153 -0
- package/dist/core/ClassReviewReplicatedStore.js.map +1 -0
- package/dist/core/CoherenceJournal.d.ts +1 -1
- package/dist/core/CoherenceJournal.d.ts.map +1 -1
- package/dist/core/CoherenceJournal.js +9 -2
- package/dist/core/CoherenceJournal.js.map +1 -1
- package/dist/core/PostUpdateMigrator.d.ts +2 -1
- package/dist/core/PostUpdateMigrator.d.ts.map +1 -1
- package/dist/core/PostUpdateMigrator.js +153 -0
- package/dist/core/PostUpdateMigrator.js.map +1 -1
- package/dist/core/StopGateBreakerState.d.ts +45 -0
- package/dist/core/StopGateBreakerState.d.ts.map +1 -0
- package/dist/core/StopGateBreakerState.js +49 -0
- package/dist/core/StopGateBreakerState.js.map +1 -0
- package/dist/core/StopGateDb.d.ts +25 -1
- package/dist/core/StopGateDb.d.ts.map +1 -1
- package/dist/core/StopGateDb.js +125 -0
- package/dist/core/StopGateDb.js.map +1 -1
- package/dist/core/UnjustifiedStopGate.d.ts +22 -1
- package/dist/core/UnjustifiedStopGate.d.ts.map +1 -1
- package/dist/core/UnjustifiedStopGate.js +165 -8
- package/dist/core/UnjustifiedStopGate.js.map +1 -1
- package/dist/core/WriteDomainRegistry.d.ts.map +1 -1
- package/dist/core/WriteDomainRegistry.js +32 -0
- package/dist/core/WriteDomainRegistry.js.map +1 -1
- package/dist/core/componentCategories.d.ts.map +1 -1
- package/dist/core/componentCategories.js +2 -0
- package/dist/core/componentCategories.js.map +1 -1
- package/dist/core/devGatedFeatures.d.ts.map +1 -1
- package/dist/core/devGatedFeatures.js +18 -0
- package/dist/core/devGatedFeatures.js.map +1 -1
- package/dist/core/machineCoherenceManifest.d.ts +2 -2
- package/dist/core/machineCoherenceManifest.d.ts.map +1 -1
- package/dist/core/machineCoherenceManifest.js +2 -1
- package/dist/core/machineCoherenceManifest.js.map +1 -1
- package/dist/core/types.d.ts +17 -0
- package/dist/core/types.d.ts.map +1 -1
- package/dist/core/types.js.map +1 -1
- package/dist/data/llmBenchCoverage.d.ts.map +1 -1
- package/dist/data/llmBenchCoverage.js +14 -0
- package/dist/data/llmBenchCoverage.js.map +1 -1
- package/dist/data/provenanceCoverage.d.ts +4 -0
- package/dist/data/provenanceCoverage.d.ts.map +1 -1
- package/dist/data/provenanceCoverage.js +20 -0
- package/dist/data/provenanceCoverage.js.map +1 -1
- package/dist/monitoring/ClaimClauseArbiter.d.ts +54 -0
- package/dist/monitoring/ClaimClauseArbiter.d.ts.map +1 -0
- package/dist/monitoring/ClaimClauseArbiter.js +163 -0
- package/dist/monitoring/ClaimClauseArbiter.js.map +1 -0
- package/dist/monitoring/ClassReviewStore.d.ts +152 -0
- package/dist/monitoring/ClassReviewStore.d.ts.map +1 -0
- package/dist/monitoring/ClassReviewStore.js +431 -0
- package/dist/monitoring/ClassReviewStore.js.map +1 -0
- package/dist/monitoring/CommitmentTracker.d.ts +5 -0
- package/dist/monitoring/CommitmentTracker.d.ts.map +1 -1
- package/dist/monitoring/CommitmentTracker.js +2 -0
- package/dist/monitoring/CommitmentTracker.js.map +1 -1
- package/dist/monitoring/CompletionClaimVerifier.d.ts +79 -0
- package/dist/monitoring/CompletionClaimVerifier.d.ts.map +1 -0
- package/dist/monitoring/CompletionClaimVerifier.js +281 -0
- package/dist/monitoring/CompletionClaimVerifier.js.map +1 -0
- package/dist/monitoring/CorrectionCaptureLoop.d.ts +6 -1
- package/dist/monitoring/CorrectionCaptureLoop.d.ts.map +1 -1
- package/dist/monitoring/CorrectionCaptureLoop.js +10 -0
- package/dist/monitoring/CorrectionCaptureLoop.js.map +1 -1
- package/dist/monitoring/CorrectionClassReview.d.ts +93 -0
- package/dist/monitoring/CorrectionClassReview.d.ts.map +1 -0
- package/dist/monitoring/CorrectionClassReview.js +280 -0
- package/dist/monitoring/CorrectionClassReview.js.map +1 -0
- package/dist/monitoring/CorrectionInstanceFixGate.d.ts +20 -0
- package/dist/monitoring/CorrectionInstanceFixGate.d.ts.map +1 -0
- package/dist/monitoring/CorrectionInstanceFixGate.js +30 -0
- package/dist/monitoring/CorrectionInstanceFixGate.js.map +1 -0
- package/dist/monitoring/TurnEvidence.d.ts +38 -0
- package/dist/monitoring/TurnEvidence.d.ts.map +1 -0
- package/dist/monitoring/TurnEvidence.js +208 -0
- package/dist/monitoring/TurnEvidence.js.map +1 -0
- package/dist/monitoring/guardManifest.d.ts.map +1 -1
- package/dist/monitoring/guardManifest.js +26 -0
- package/dist/monitoring/guardManifest.js.map +1 -1
- package/dist/scaffold/templates.d.ts.map +1 -1
- package/dist/scaffold/templates.js +2 -0
- package/dist/scaffold/templates.js.map +1 -1
- package/dist/server/AgentServer.d.ts +6 -0
- package/dist/server/AgentServer.d.ts.map +1 -1
- package/dist/server/AgentServer.js +116 -1
- package/dist/server/AgentServer.js.map +1 -1
- package/dist/server/CapabilityIndex.d.ts.map +1 -1
- package/dist/server/CapabilityIndex.js +16 -0
- package/dist/server/CapabilityIndex.js.map +1 -1
- package/dist/server/routes.d.ts +3 -0
- package/dist/server/routes.d.ts.map +1 -1
- package/dist/server/routes.js +346 -9
- package/dist/server/routes.js.map +1 -1
- package/dist/testing/selfActionRegistry.d.ts +12 -0
- package/dist/testing/selfActionRegistry.d.ts.map +1 -1
- package/dist/testing/selfActionRegistry.js +87 -0
- package/dist/testing/selfActionRegistry.js.map +1 -1
- package/package.json +1 -1
- package/src/data/builtin-manifest.json +98 -98
- package/src/data/llmBenchCoverage.ts +14 -0
- package/src/data/provenanceCoverage.ts +24 -0
- package/src/scaffold/templates/jobs/instar/correction-class-review-backstop.md +23 -0
- package/src/scaffold/templates.ts +2 -0
- package/src/templates/hooks/settings-template.json +10 -0
- package/upgrades/1.3.888.md +26 -0
- package/upgrades/1.3.889.md +26 -0
- package/upgrades/eli16/durable-stop-gate-breaker.eli16.md +30 -0
- package/upgrades/side-effects/NEXT.md +57 -68
- package/upgrades/side-effects/durable-stop-gate-breaker.md +141 -0
package/dist/commands/server.js
CHANGED
|
@@ -4139,6 +4139,8 @@ export async function startServer(options) {
|
|
|
4139
4139
|
// `multiMachine.stateSync.preferences.enabled` (default false ⇒ strict no-op).
|
|
4140
4140
|
const { PREF_KIND_REGISTRATION } = await import('../core/PreferencesReplicatedStore.js');
|
|
4141
4141
|
replicatedKindRegistry.register(PREF_KIND_REGISTRATION);
|
|
4142
|
+
const { CLASS_REVIEW_KIND_REGISTRATION } = await import('../core/ClassReviewReplicatedStore.js');
|
|
4143
|
+
replicatedKindRegistry.register(CLASS_REVIEW_KIND_REGISTRATION);
|
|
4142
4144
|
// WS2.3 (ws23-relationships-userregistry-security) — register the SECOND concrete
|
|
4143
4145
|
// replicated kind, `relationship-record`, onto the registry: the FIRST PII kind.
|
|
4144
4146
|
// Dual-registry's dynamic half (the static half is CoherenceJournal.JOURNAL_KINDS,
|
|
@@ -12456,6 +12458,10 @@ export async function startServer(options) {
|
|
|
12456
12458
|
// Census #8 (the E4a liar): when re-pointing is enabled and the ledger knows the `~/.claude`
|
|
12457
12459
|
// tenant, the badge resolves from the ledger — NOT a stale `claude auth status` re-probe.
|
|
12458
12460
|
const inUseAccountResolver = new InUseAccountResolver({ locationGate: credentialLocationGate });
|
|
12461
|
+
// Late-bound across messaging-capture setup and the post-evolution
|
|
12462
|
+
// class-review outcome wiring below.
|
|
12463
|
+
let recordCorrectionClassReview;
|
|
12464
|
+
let correctionLedgerForClassReview;
|
|
12459
12465
|
// EnrollmentWizard — mobile-first new-account login (P2.1 of the Subscription
|
|
12460
12466
|
// & Auth Standard). Dark with the pool: the /subscription-pool/enroll routes
|
|
12461
12467
|
// do nothing until an operator starts an enrollment. The login driver reuses
|
|
@@ -13152,6 +13158,7 @@ export async function startServer(options) {
|
|
|
13152
13158
|
const correctionLedger = new CorrectionLedger({
|
|
13153
13159
|
dbPath: path.join(config.stateDir, 'correction-ledger.db'),
|
|
13154
13160
|
});
|
|
13161
|
+
correctionLedgerForClassReview = correctionLedger;
|
|
13155
13162
|
// Per-sentinel LlmQueue — object opts (do NOT pass a bare number; that
|
|
13156
13163
|
// is the latent PresenceProxy bug §2). Dedicated daily cap.
|
|
13157
13164
|
const correctionLlmQueue = new LlmQueue({
|
|
@@ -13230,6 +13237,7 @@ export async function startServer(options) {
|
|
|
13230
13237
|
llmAvailable: () => llmCircuitAvailable(),
|
|
13231
13238
|
ttlMs: backlogTtlMs,
|
|
13232
13239
|
audit: (e) => correctionAudit({ decision: e.decision, topicId: e.topicId, detail: e.detail }),
|
|
13240
|
+
onRecorded: (record) => recordCorrectionClassReview?.(record),
|
|
13233
13241
|
}, backlogDrainPerTick);
|
|
13234
13242
|
}
|
|
13235
13243
|
finally {
|
|
@@ -13259,6 +13267,7 @@ export async function startServer(options) {
|
|
|
13259
13267
|
rateCeiling: { maxPerWindow: cl.distillPerTopicRatePerMinute ?? 8, windowMs: 60_000 },
|
|
13260
13268
|
backlog: captureBacklog,
|
|
13261
13269
|
audit: correctionAudit,
|
|
13270
|
+
onRecorded: (record) => recordCorrectionClassReview?.(record),
|
|
13262
13271
|
}, {
|
|
13263
13272
|
topicId: entry.topicId ?? null,
|
|
13264
13273
|
text: entry.text ?? '',
|
|
@@ -15696,6 +15705,7 @@ export async function startServer(options) {
|
|
|
15696
15705
|
if (sharedIntelligence && stopGateDb) {
|
|
15697
15706
|
try {
|
|
15698
15707
|
const { UnjustifiedStopGate } = await import('../core/UnjustifiedStopGate.js');
|
|
15708
|
+
const { stopGateBreakerKey } = await import('../core/StopGateBreakerState.js');
|
|
15699
15709
|
const { resolveDevAgentGate } = await import('../core/devAgentGate.js');
|
|
15700
15710
|
// Turn-End Self-Deferral Guard (Phase A / shadow) — dev-gated dark:
|
|
15701
15711
|
// `monitoring.selfDeferralGuard` OMITS `enabled` so resolveDevAgentGate
|
|
@@ -15705,6 +15715,22 @@ export async function startServer(options) {
|
|
|
15705
15715
|
unjustifiedStopGate = new UnjustifiedStopGate({
|
|
15706
15716
|
intelligence: sharedIntelligence,
|
|
15707
15717
|
selfDeferralGuardEnabled,
|
|
15718
|
+
breakerStateStore: stopGateDb,
|
|
15719
|
+
breakerKey: stopGateBreakerKey({
|
|
15720
|
+
defaultFramework: config.sessions?.framework,
|
|
15721
|
+
gateCategoryFramework: config.sessions?.componentFrameworks?.categories?.gate,
|
|
15722
|
+
stopGateOverride: config.sessions?.componentFrameworks?.overrides?.UnjustifiedStopGate,
|
|
15723
|
+
failureSwap: config.sessions?.componentFrameworks?.failureSwap,
|
|
15724
|
+
}),
|
|
15725
|
+
onBreakerPersistenceError: (err) => {
|
|
15726
|
+
DegradationReporter.getInstance().report({
|
|
15727
|
+
feature: 'unjustifiedStopGate.breakerPersistence',
|
|
15728
|
+
primary: 'Durable Stop-gate authority breaker state',
|
|
15729
|
+
fallback: 'memory-only breaker + fail-open allow',
|
|
15730
|
+
reason: err instanceof Error ? err.message : String(err),
|
|
15731
|
+
impact: 'Restart-survival may be temporarily unavailable; Stop events remain fail-open.',
|
|
15732
|
+
});
|
|
15733
|
+
},
|
|
15708
15734
|
});
|
|
15709
15735
|
}
|
|
15710
15736
|
catch (err) {
|
|
@@ -16245,6 +16271,100 @@ export async function startServer(options) {
|
|
|
16245
16271
|
}
|
|
16246
16272
|
const { InitiativeTracker } = await import('../core/InitiativeTracker.js');
|
|
16247
16273
|
const initiativeTracker = new InitiativeTracker(config.stateDir);
|
|
16274
|
+
// Drive 7 WS1 — bind the automated operator-attributed capture path to the
|
|
16275
|
+
// same record-time class-review store used by the HTTP surface. This seam is
|
|
16276
|
+
// independent of recurrence: every successful durable CorrectionLedger
|
|
16277
|
+
// write invokes it, including backlog-drain writes.
|
|
16278
|
+
if (sharedIntelligence && resolveDevAgentGate(config.monitoring?.correctionClassReview?.enabled, config)) {
|
|
16279
|
+
try {
|
|
16280
|
+
const [{ ClassReviewStore }, { CorrectionClassReview }] = await Promise.all([
|
|
16281
|
+
import('../monitoring/ClassReviewStore.js'),
|
|
16282
|
+
import('../monitoring/CorrectionClassReview.js'),
|
|
16283
|
+
]);
|
|
16284
|
+
const { evaluateCorrectionInstanceFix } = await import('../monitoring/CorrectionInstanceFixGate.js');
|
|
16285
|
+
const classReviewCfg = config.monitoring?.correctionClassReview ?? {};
|
|
16286
|
+
const classReviewStore = new ClassReviewStore({
|
|
16287
|
+
dbPath: path.join(config.stateDir, 'class-reviews.db'),
|
|
16288
|
+
machineId: coordinator.identity?.machineId ?? os.hostname(),
|
|
16289
|
+
});
|
|
16290
|
+
if (replicatedRecordEmitter) {
|
|
16291
|
+
const { CLASS_REVIEW_STORE_KEY, buildClassReviewRecordData } = await import('../core/ClassReviewReplicatedStore.js');
|
|
16292
|
+
classReviewStore.setReplicationEmitter({
|
|
16293
|
+
emitPut: (record) => replicatedRecordEmitter.emit(CLASS_REVIEW_STORE_KEY, record.dedupeKey, (hlc, origin, observed) => buildClassReviewRecordData({ record, hlc, op: 'put', origin, observed })),
|
|
16294
|
+
});
|
|
16295
|
+
}
|
|
16296
|
+
if (_stateSyncStoresResolved?.classReview?.enabled && replicatedPeerStreamReader) {
|
|
16297
|
+
const { CLASS_REVIEW_STORE_KEY, classReviewFromOriginRecord } = await import('../core/ClassReviewReplicatedStore.js');
|
|
16298
|
+
classReviewStore.setRemoteReader({
|
|
16299
|
+
get: (dedupeKey) => replicatedPeerStreamReader.loadOriginRecords(CLASS_REVIEW_STORE_KEY, dedupeKey)
|
|
16300
|
+
.flatMap((record) => { const parsed = classReviewFromOriginRecord(record); return parsed ? [parsed] : []; }),
|
|
16301
|
+
keys: () => replicatedPeerStreamReader.listRecordKeys(CLASS_REVIEW_STORE_KEY),
|
|
16302
|
+
});
|
|
16303
|
+
}
|
|
16304
|
+
const classReviewAuditPath = path.join(config.stateDir, 'logs', 'correction-class-review.jsonl');
|
|
16305
|
+
const classReview = new CorrectionClassReview({
|
|
16306
|
+
store: classReviewStore,
|
|
16307
|
+
intelligence: sharedIntelligence,
|
|
16308
|
+
dryRun: classReviewCfg.dryRun !== false,
|
|
16309
|
+
maxAttempts: classReviewCfg.maxAttempts,
|
|
16310
|
+
maxReviewsPerTick: classReviewCfg.maxReviewsPerTick,
|
|
16311
|
+
maxOpenArtifacts: classReviewCfg.maxOpenArtifacts,
|
|
16312
|
+
admitCorrectionAction: ({ correctionId, classReviewRef }) => evaluateCorrectionInstanceFix({
|
|
16313
|
+
originCorrection: true, correctionId, claimedClassReviewRef: classReviewRef,
|
|
16314
|
+
dryRun: classReviewCfg.dryRun !== false,
|
|
16315
|
+
correctionLedger: correctionLedgerForClassReview ?? null,
|
|
16316
|
+
classReviewStore,
|
|
16317
|
+
}),
|
|
16318
|
+
standardTitles: () => {
|
|
16319
|
+
try {
|
|
16320
|
+
const registry = fs.readFileSync(path.join(config.projectDir, 'docs', 'STANDARDS-REGISTRY.md'), 'utf8');
|
|
16321
|
+
return [...registry.matchAll(/^###\s+(.+)$/gm)].map((match) => match[1].trim()).slice(0, 100);
|
|
16322
|
+
}
|
|
16323
|
+
catch {
|
|
16324
|
+
return [];
|
|
16325
|
+
}
|
|
16326
|
+
},
|
|
16327
|
+
createInitiative: async (input) => {
|
|
16328
|
+
const created = await initiativeTracker.create({
|
|
16329
|
+
id: String(input.id), title: String(input.title), description: String(input.description),
|
|
16330
|
+
phases: [{ id: 'operator-ratification', name: 'Operator ratification' }],
|
|
16331
|
+
needsUser: true,
|
|
16332
|
+
needsUserReason: 'Standards amendments require explicit operator ratification.',
|
|
16333
|
+
});
|
|
16334
|
+
return { id: created.id };
|
|
16335
|
+
},
|
|
16336
|
+
addAction: (input) => {
|
|
16337
|
+
const recovery = input.origin === 'correction-class-review-recovery';
|
|
16338
|
+
const action = evolution.addAction({
|
|
16339
|
+
title: String(input.title),
|
|
16340
|
+
description: `Correction-derived process improvement. classReviewRef=${String(input.classReviewRef)}; autonomous execution is forbidden.`,
|
|
16341
|
+
priority: 'medium',
|
|
16342
|
+
source: { platform: 'correction-class-review', context: 'process-gap' },
|
|
16343
|
+
tags: [recovery ? 'origin:class-review-recovery' : 'origin:correction', `class-review:${String(input.classReviewRef)}`],
|
|
16344
|
+
});
|
|
16345
|
+
return { id: action.id };
|
|
16346
|
+
},
|
|
16347
|
+
attentionRoute: async (input) => {
|
|
16348
|
+
await telegram?.createAttentionItem({
|
|
16349
|
+
id: `correction-class-review:${input.title.toLowerCase().replace(/[^a-z0-9]+/g, '-').slice(0, 48)}`,
|
|
16350
|
+
title: input.title, summary: input.body, priority: input.priority === 'high' ? 'HIGH' : 'NORMAL',
|
|
16351
|
+
category: 'general', sourceContext: 'correction-class-review',
|
|
16352
|
+
});
|
|
16353
|
+
},
|
|
16354
|
+
audit: (event) => {
|
|
16355
|
+
try {
|
|
16356
|
+
fs.mkdirSync(path.dirname(classReviewAuditPath), { recursive: true });
|
|
16357
|
+
fs.appendFileSync(classReviewAuditPath, `${JSON.stringify({ ts: new Date().toISOString(), ...event })}\n`, { mode: 0o600 });
|
|
16358
|
+
}
|
|
16359
|
+
catch { /* @silent-fallback-ok — audit is best-effort */ }
|
|
16360
|
+
},
|
|
16361
|
+
});
|
|
16362
|
+
recordCorrectionClassReview = (record) => { classReview.record(record, 'operator-attributed'); };
|
|
16363
|
+
}
|
|
16364
|
+
catch (error) {
|
|
16365
|
+
console.warn('[CorrectionClassReview] automated capture wiring unavailable:', error.message);
|
|
16366
|
+
}
|
|
16367
|
+
}
|
|
16248
16368
|
// Project-scope Phase 1.9 — wire the digest cache writer so every
|
|
16249
16369
|
// project mutation re-renders `.instar/projects-digest.cache`. The
|
|
16250
16370
|
// session-start + compaction-recovery hooks read this file directly
|
|
@@ -22476,6 +22596,15 @@ export async function startServer(options) {
|
|
|
22476
22596
|
peers = (_listPoolMachines?.() ?? []).filter((m) => m.machineId !== _meshSelfId && !!m.lastKnownUrl).map((m) => ({ machineId: m.machineId, nickname: m.nickname ?? m.machineId, url: m.lastKnownUrl }));
|
|
22477
22597
|
} if (peers.length === 0)
|
|
22478
22598
|
return []; const { fetchPeerSubscriptionViews } = await import('../core/fetchPeerSubscriptionViews.js'); return fetchPeerSubscriptionViews({ peers: () => peers, fetchImpl: fetch, authToken: config.authToken ?? '' }); }, quotaPoller, quotaAwareScheduler: _quotaAwareScheduler ?? undefined, proactiveSwapMonitor: _proactiveSwapMonitor ?? undefined, inUseAccountResolver, enrollmentWizard, accountFollowMeRevocation, credentialRepointing, semanticMemory, activitySentinel, rateLimitSentinel, releaseReadinessSentinel: releaseReadinessSentinel ?? undefined, greenPrAutoMerger: greenPrAutoMerger ?? undefined, guardLatchStore: guardLatchStore ?? undefined, messageRouter, summarySentinel, spawnManager, systemReviewer, capabilityMapper, selfKnowledgeTree, coverageAuditor, topicResumeMap: _topicResumeMap ?? undefined, topicProfile: _topicProfileCtx ?? undefined, sessionRefresh: _sessionRefresh ?? undefined, autonomyManager, trustElevationTracker, autonomousEvolution, coordinator: coordinator.enabled ? coordinator : undefined, meshBindActive: coordinator.managers.identityManager.hasIdentity() && config.multiMachine?.meshTransport?.enabled !== false, localSigningKeyPem, leaseTransport, peerEndpointRecorder, getSelfMeshEndpoints, onLeasePullRequest: () => leaseCoordinatorRef?.currentLease() ?? null, liveTailReceiver, handoffWireTransport, onHandoffBegin, onHandoffInitiate: handoffInitiate, handoffInProgress: handoffSentinelInProgress, messageLedger, currentInboundByTopic, replyMarkerTransport, onReplyMarker: messageLedger ? (marker) => { const m = marker; messageLedger.applyRemoteReplyMarker(m.dedupeKey, { platform: m.platform, replyIdempotencyKey: m.replyIdempotencyKey, epoch: m.epoch, topic: m.topic ?? null }); } : undefined, whatsapp: whatsappAdapter, slack: slackAdapter, imessage: imessageAdapter, conversationRegistry, conversationBindAuth, conversationFollowThrough, whatsappBusinessBackend, messageBridge, hookEventReceiver, worktreeMonitor, subagentTracker, instructionsVerifier, handshakeManager: threadlineHandshake, threadlineRouter, conversationStore, threadLog, threadMessageRecorder, warrantsReplyGate, collaborationSurfacer, threadResumeMap, topicLinkageHandler: topicLinkageHandler ?? undefined, threadlineRelayClient, threadlineReplyWaiters, listenerManager: listenerManager ?? undefined, a2aDeliveryTracker: a2aDeliveryTracker ?? undefined, responseReviewGate, reviewCanaryBattery, messagingToneGate, outboundDedupGate, telemetryHeartbeat, pasteManager, featureRegistry, discoveryEvaluator, completionEvaluator, unifiedTrust, liveConfig, sharedStateLedger, ledgerSessionRegistry, worktreeManager, oidcEnrolledRepos: parallelDevConfig?.oidcEnrolledRepos, initiativeTracker, projectRoundRunner, projectDriftChecker, machineHeartbeat, machinePoolRegistry, ropeHealthMonitor, writeAdmission: writeAdmission ?? undefined, getInboundQueue: () => _inboundQueue, getMachineCoherence: () => _machineCoherenceSentinel, meshRpcDispatcher, deliverA2aToMachine: _deliverA2aToMachine ?? undefined, workingSetPullCoordinator, workingSetArtifactManager, orchestratorPoller, commitmentReplicaStore, preferenceReplicaStore, replicatedRecordEmitter, conflictStore, rollbackUnmerge, droppedOriginRegistry, preferencesUnionReader, forwardCommitmentMutate, sessionOwnershipRegistry, sendDrain: _sendDrain ?? undefined, topicPinStore: _topicPinStore ?? undefined, topicPinSkewQuarantine: _topicPinSkewQuarantine ?? undefined, topicPinFoldView: _topicPinFoldView ?? undefined, ownershipReconciler: _ownershipReconciler ?? undefined, staleOwnerEngine: _staleOwnerEngine ?? undefined, duplicateReconciler: _duplicateReconciler ?? undefined, ownerDarkLadder: _ownerDarkLadder ?? undefined, spawnAdmission: _spawnAdmission ?? undefined, judgmentProvenance: _judgmentProvenance ?? undefined, leaseHandback: _leaseHandbackCtx ?? undefined, streamTicketStore: _streamTicketStore ?? undefined, poolStreamAllowRemoteInput: config.dashboard?.poolStream?.allowRemoteInput ?? false, poolStreamConnector: _poolStreamConnector ?? undefined, secretSync: _secretSyncHandle ?? undefined, meshSelfId: _meshSelfId ?? undefined, resolveRouterUrl: _resolveRouterUrl ?? undefined, resolvePeerUrls: _resolvePeerUrls ?? undefined, guardRegistry, listPoolMachines: _listPoolMachines ?? undefined, deliverMandateToMachine: _deliverMandateToMachine ?? undefined, poolLink: _poolLink ?? undefined, poolPollCache: _poolPollCache ?? undefined, sessionPoolE2EResultStore, proxyCoordinator, topicIntentStore, topicIntentArcCheck, usherSignalStore, intelligence: sharedIntelligence ?? undefined, telegramBridgeConfig, telegramBridge: telegramBridge ?? undefined, threadlineObservability, briefDeps, workingMemory, taskFlowRegistry, threadlineFlowBridge, sessionReaper, agentWorktreeReaper, externalHogSentinel, orphanedWorkSentinel, mcpProcessReaper, geminiLoopRunner, sleepController, agentActivityState, reapLog, resumeQueue, resumeDrainer, autonomousLivenessReconciler, enforcedTerminationStatus: () => enforcedTerminationWatchdog?.guardStatus() ?? null, prHandLease: prHandLease ?? undefined, operatorStopRecorder: recordOperatorStop, sleepWakeDetector, unjustifiedStopGate, stopGateDb, stopNotifier, liveTestGate, liveTestGateMode, liveTestRunnerCtx }); // Resolve the late-bound topic-operator getter (increment 2e): routing was
|
|
22599
|
+
if (_stateSyncStoresResolved?.classReview?.enabled && replicatedPeerStreamReader) {
|
|
22600
|
+
const { CLASS_REVIEW_STORE_KEY, classReviewFromOriginRecord } = await import('../core/ClassReviewReplicatedStore.js');
|
|
22601
|
+
const reader = replicatedPeerStreamReader;
|
|
22602
|
+
server.setClassReviewRemoteReader({
|
|
22603
|
+
get: (dedupeKey) => reader.loadOriginRecords(CLASS_REVIEW_STORE_KEY, dedupeKey)
|
|
22604
|
+
.flatMap((record) => { const parsed = classReviewFromOriginRecord(record); return parsed ? [parsed] : []; }),
|
|
22605
|
+
keys: () => reader.listRecordKeys(CLASS_REVIEW_STORE_KEY),
|
|
22606
|
+
});
|
|
22607
|
+
}
|
|
22479
22608
|
// wired before the server existed; from here on inbound binds use the
|
|
22480
22609
|
// server's own store instance.
|
|
22481
22610
|
_agentServerRef = server;
|