instar 0.28.45 → 0.28.46
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 +179 -0
- package/dist/cli.js +43 -4
- package/dist/cli.js.map +1 -1
- package/dist/commands/ledgerCleanup.d.ts +25 -0
- package/dist/commands/ledgerCleanup.d.ts.map +1 -0
- package/dist/commands/ledgerCleanup.js +71 -0
- package/dist/commands/ledgerCleanup.js.map +1 -0
- package/dist/commands/migrate.d.ts +33 -0
- package/dist/commands/migrate.d.ts.map +1 -0
- package/dist/commands/migrate.js +63 -0
- package/dist/commands/migrate.js.map +1 -0
- package/dist/commands/server.d.ts.map +1 -1
- package/dist/commands/server.js +50 -1
- package/dist/commands/server.js.map +1 -1
- package/dist/core/BackupManager.d.ts +9 -1
- package/dist/core/BackupManager.d.ts.map +1 -1
- package/dist/core/BackupManager.js +57 -2
- package/dist/core/BackupManager.js.map +1 -1
- package/dist/core/CoherenceGate.d.ts +20 -0
- package/dist/core/CoherenceGate.d.ts.map +1 -1
- package/dist/core/CoherenceGate.js +29 -1
- package/dist/core/CoherenceGate.js.map +1 -1
- package/dist/core/DispatchExecutor.d.ts +19 -0
- package/dist/core/DispatchExecutor.d.ts.map +1 -1
- package/dist/core/DispatchExecutor.js +24 -1
- package/dist/core/DispatchExecutor.js.map +1 -1
- package/dist/core/FileClassifier.d.ts.map +1 -1
- package/dist/core/FileClassifier.js +5 -0
- package/dist/core/FileClassifier.js.map +1 -1
- package/dist/core/LedgerParaphraseDetector.d.ts +54 -0
- package/dist/core/LedgerParaphraseDetector.d.ts.map +1 -0
- package/dist/core/LedgerParaphraseDetector.js +103 -0
- package/dist/core/LedgerParaphraseDetector.js.map +1 -0
- package/dist/core/MessagingToneGate.d.ts +24 -0
- package/dist/core/MessagingToneGate.d.ts.map +1 -1
- package/dist/core/MessagingToneGate.js +12 -1
- package/dist/core/MessagingToneGate.js.map +1 -1
- package/dist/core/MultiMachineCoordinator.d.ts +9 -0
- package/dist/core/MultiMachineCoordinator.d.ts.map +1 -1
- package/dist/core/MultiMachineCoordinator.js +29 -0
- package/dist/core/MultiMachineCoordinator.js.map +1 -1
- package/dist/core/PostUpdateMigrator.d.ts.map +1 -1
- package/dist/core/PostUpdateMigrator.js +19 -0
- package/dist/core/PostUpdateMigrator.js.map +1 -1
- package/dist/core/SharedStateLedger.d.ts +121 -0
- package/dist/core/SharedStateLedger.d.ts.map +1 -0
- package/dist/core/SharedStateLedger.js +601 -0
- package/dist/core/SharedStateLedger.js.map +1 -0
- package/dist/core/registerLedgerEmitters.d.ts +26 -0
- package/dist/core/registerLedgerEmitters.d.ts.map +1 -0
- package/dist/core/registerLedgerEmitters.js +121 -0
- package/dist/core/registerLedgerEmitters.js.map +1 -0
- package/dist/core/types.d.ts +74 -0
- package/dist/core/types.d.ts.map +1 -1
- package/dist/messaging/MessageRouter.d.ts.map +1 -1
- package/dist/messaging/MessageRouter.js +5 -2
- package/dist/messaging/MessageRouter.js.map +1 -1
- package/dist/messaging/SessionSummarySentinel.d.ts +7 -1
- package/dist/messaging/SessionSummarySentinel.d.ts.map +1 -1
- package/dist/messaging/SessionSummarySentinel.js +11 -3
- package/dist/messaging/SessionSummarySentinel.js.map +1 -1
- package/dist/server/AgentServer.d.ts +2 -0
- package/dist/server/AgentServer.d.ts.map +1 -1
- package/dist/server/AgentServer.js +1 -0
- package/dist/server/AgentServer.js.map +1 -1
- package/dist/server/routes.d.ts +2 -0
- package/dist/server/routes.d.ts.map +1 -1
- package/dist/server/routes.js +76 -0
- package/dist/server/routes.js.map +1 -1
- package/dist/threadline/ThreadlineRouter.d.ts +30 -1
- package/dist/threadline/ThreadlineRouter.d.ts.map +1 -1
- package/dist/threadline/ThreadlineRouter.js +68 -2
- package/dist/threadline/ThreadlineRouter.js.map +1 -1
- package/package.json +1 -1
- package/src/data/builtin-manifest.json +97 -97
- package/upgrades/0.28.46.md +27 -0
- package/upgrades/NEXT.md +53 -0
- package/upgrades/side-effects/0.28.45.md +138 -0
- package/upgrades/side-effects/echo-prevention-self-session-exclusion.md +176 -0
- package/upgrades/side-effects/integrated-being-ledger-v1.md +138 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ledgerCleanup.d.ts","sourceRoot":"","sources":["../../src/commands/ledgerCleanup.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAOH,MAAM,WAAW,oBAAoB;IACnC,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,gCAAgC;IAChC,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,iEAAiE;IACjE,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,0BAA0B;IAC1B,eAAe,CAAC,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,OAAO,CAAA;KAAE,CAAC;CAC1D;AAED,wBAAsB,aAAa,CACjC,IAAI,GAAE,oBAAyB,GAC9B,OAAO,CAAC;IAAE,OAAO,EAAE,MAAM,EAAE,CAAC;IAAC,OAAO,EAAE,MAAM,EAAE,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CAiEpE"}
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `instar ledger cleanup` — deletes orphaned Integrated-Being ledger files
|
|
3
|
+
* when the feature is disabled. Safe to run when enabled — it refuses to
|
|
4
|
+
* delete active ledger data unless --force is passed.
|
|
5
|
+
*
|
|
6
|
+
* Spec: docs/specs/integrated-being-ledger-v1.md §"Rollback plan".
|
|
7
|
+
*/
|
|
8
|
+
import fs from 'node:fs';
|
|
9
|
+
import path from 'node:path';
|
|
10
|
+
import pc from 'picocolors';
|
|
11
|
+
import { loadConfig } from '../core/Config.js';
|
|
12
|
+
export async function ledgerCleanup(opts = {}) {
|
|
13
|
+
const cfg = opts._configOverride ?? (() => {
|
|
14
|
+
const c = loadConfig(opts.dir);
|
|
15
|
+
const enabled = c.integratedBeing?.enabled;
|
|
16
|
+
return {
|
|
17
|
+
stateDir: c.stateDir,
|
|
18
|
+
// Default: enabled when undefined
|
|
19
|
+
enabled: enabled === undefined ? true : enabled !== false,
|
|
20
|
+
};
|
|
21
|
+
})();
|
|
22
|
+
// Refuse to run when feature is enabled unless --force
|
|
23
|
+
if (cfg.enabled && !opts.force) {
|
|
24
|
+
console.log(pc.yellow('Integrated-Being ledger is ENABLED. Refusing to delete active ledger data.'));
|
|
25
|
+
console.log(pc.yellow('Either disable it in config (integratedBeing.enabled=false) and re-run, or pass --force.'));
|
|
26
|
+
return { deleted: [], skipped: [], reason: 'feature still enabled' };
|
|
27
|
+
}
|
|
28
|
+
const patterns = [
|
|
29
|
+
'shared-state.jsonl',
|
|
30
|
+
'shared-state.jsonl.stats.json',
|
|
31
|
+
'shared-state.jsonl.prune-lastrun',
|
|
32
|
+
];
|
|
33
|
+
const stateDir = cfg.stateDir;
|
|
34
|
+
const toDelete = [];
|
|
35
|
+
try {
|
|
36
|
+
const entries = fs.readdirSync(stateDir);
|
|
37
|
+
for (const name of entries) {
|
|
38
|
+
if (patterns.includes(name) || /^shared-state\.jsonl\.\d+$/.test(name)) {
|
|
39
|
+
toDelete.push(name);
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
catch {
|
|
44
|
+
return { deleted: [], skipped: [], reason: 'stateDir unreadable' };
|
|
45
|
+
}
|
|
46
|
+
if (toDelete.length === 0) {
|
|
47
|
+
console.log(pc.green('No Integrated-Being ledger files to clean up.'));
|
|
48
|
+
return { deleted: [], skipped: [] };
|
|
49
|
+
}
|
|
50
|
+
if (!opts.yes) {
|
|
51
|
+
console.log(pc.yellow(`Would delete ${toDelete.length} file(s):`));
|
|
52
|
+
for (const f of toDelete)
|
|
53
|
+
console.log(` ${f}`);
|
|
54
|
+
console.log(pc.yellow('Re-run with --yes to actually delete.'));
|
|
55
|
+
return { deleted: [], skipped: toDelete, reason: 'dry-run — use --yes' };
|
|
56
|
+
}
|
|
57
|
+
const deleted = [];
|
|
58
|
+
const skipped = [];
|
|
59
|
+
for (const name of toDelete) {
|
|
60
|
+
try {
|
|
61
|
+
fs.unlinkSync(path.join(stateDir, name));
|
|
62
|
+
deleted.push(name);
|
|
63
|
+
}
|
|
64
|
+
catch {
|
|
65
|
+
skipped.push(name);
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
console.log(pc.green(`Deleted ${deleted.length} ledger file(s).`));
|
|
69
|
+
return { deleted, skipped };
|
|
70
|
+
}
|
|
71
|
+
//# sourceMappingURL=ledgerCleanup.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ledgerCleanup.js","sourceRoot":"","sources":["../../src/commands/ledgerCleanup.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Migration CLI commands for Integrated-Being v1.
|
|
3
|
+
*
|
|
4
|
+
* `instar migrate sync-session-hook` — overwrites .claude/hooks/instar/session-start.sh
|
|
5
|
+
* with the latest `PostUpdateMigrator.getSessionStartHook()` output. Used by
|
|
6
|
+
* divergent-local-hook agents (e.g., Echo) to pick up the new /shared-state/render
|
|
7
|
+
* injection after an update.
|
|
8
|
+
*
|
|
9
|
+
* Spec: docs/specs/integrated-being-ledger-v1.md §"Session-start injection".
|
|
10
|
+
*/
|
|
11
|
+
export interface SyncSessionHookOptions {
|
|
12
|
+
dir?: string;
|
|
13
|
+
/** Overwrite without prompting. */
|
|
14
|
+
force?: boolean;
|
|
15
|
+
/** Test-only override — supplies config instead of reading from disk. */
|
|
16
|
+
_configOverride?: {
|
|
17
|
+
projectDir: string;
|
|
18
|
+
stateDir: string;
|
|
19
|
+
port: number;
|
|
20
|
+
projectName: string;
|
|
21
|
+
hasTelegram?: boolean;
|
|
22
|
+
};
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Entry point for `instar migrate sync-session-hook`.
|
|
26
|
+
* Returns { changed, path, reason } for tests / scripting.
|
|
27
|
+
*/
|
|
28
|
+
export declare function syncSessionHook(opts?: SyncSessionHookOptions): Promise<{
|
|
29
|
+
changed: boolean;
|
|
30
|
+
path: string;
|
|
31
|
+
reason?: string;
|
|
32
|
+
}>;
|
|
33
|
+
//# sourceMappingURL=migrate.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"migrate.d.ts","sourceRoot":"","sources":["../../src/commands/migrate.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAQH,MAAM,WAAW,sBAAsB;IACrC,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,mCAAmC;IACnC,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,yEAAyE;IACzE,eAAe,CAAC,EAAE;QAAE,UAAU,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAC;QAAC,WAAW,CAAC,EAAE,OAAO,CAAA;KAAE,CAAC;CACtH;AAED;;;GAGG;AACH,wBAAsB,eAAe,CACnC,IAAI,GAAE,sBAA2B,GAChC,OAAO,CAAC;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CAkD9D"}
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Migration CLI commands for Integrated-Being v1.
|
|
3
|
+
*
|
|
4
|
+
* `instar migrate sync-session-hook` — overwrites .claude/hooks/instar/session-start.sh
|
|
5
|
+
* with the latest `PostUpdateMigrator.getSessionStartHook()` output. Used by
|
|
6
|
+
* divergent-local-hook agents (e.g., Echo) to pick up the new /shared-state/render
|
|
7
|
+
* injection after an update.
|
|
8
|
+
*
|
|
9
|
+
* Spec: docs/specs/integrated-being-ledger-v1.md §"Session-start injection".
|
|
10
|
+
*/
|
|
11
|
+
import fs from 'node:fs';
|
|
12
|
+
import path from 'node:path';
|
|
13
|
+
import pc from 'picocolors';
|
|
14
|
+
import { loadConfig } from '../core/Config.js';
|
|
15
|
+
import { PostUpdateMigrator } from '../core/PostUpdateMigrator.js';
|
|
16
|
+
/**
|
|
17
|
+
* Entry point for `instar migrate sync-session-hook`.
|
|
18
|
+
* Returns { changed, path, reason } for tests / scripting.
|
|
19
|
+
*/
|
|
20
|
+
export async function syncSessionHook(opts = {}) {
|
|
21
|
+
const cfg = opts._configOverride ?? (() => {
|
|
22
|
+
const c = loadConfig(opts.dir);
|
|
23
|
+
return {
|
|
24
|
+
projectDir: c.projectDir,
|
|
25
|
+
stateDir: c.stateDir,
|
|
26
|
+
port: c.port,
|
|
27
|
+
projectName: c.projectName,
|
|
28
|
+
hasTelegram: c.messaging?.some((m) => m.type === 'telegram') ?? false,
|
|
29
|
+
};
|
|
30
|
+
})();
|
|
31
|
+
const migrator = new PostUpdateMigrator({
|
|
32
|
+
projectDir: cfg.projectDir,
|
|
33
|
+
stateDir: cfg.stateDir,
|
|
34
|
+
port: cfg.port,
|
|
35
|
+
hasTelegram: cfg.hasTelegram ?? false,
|
|
36
|
+
projectName: cfg.projectName,
|
|
37
|
+
});
|
|
38
|
+
const hookContent = migrator.getSessionStartHook();
|
|
39
|
+
const hookDir = path.join(cfg.projectDir, '.claude', 'hooks', 'instar');
|
|
40
|
+
const hookPath = path.join(hookDir, 'session-start.sh');
|
|
41
|
+
fs.mkdirSync(hookDir, { recursive: true });
|
|
42
|
+
let existing = null;
|
|
43
|
+
try {
|
|
44
|
+
existing = fs.readFileSync(hookPath, 'utf-8');
|
|
45
|
+
}
|
|
46
|
+
catch { /* first install */ }
|
|
47
|
+
if (existing === hookContent) {
|
|
48
|
+
return { changed: false, path: hookPath, reason: 'already up to date' };
|
|
49
|
+
}
|
|
50
|
+
if (existing !== null && !opts.force) {
|
|
51
|
+
// Divergent hook detected — require --force to overwrite
|
|
52
|
+
const divergent = existing.length > 0;
|
|
53
|
+
if (divergent) {
|
|
54
|
+
console.log(pc.yellow(`Existing hook at ${hookPath} differs from the default template.`));
|
|
55
|
+
console.log(pc.yellow(`Re-run with --force to overwrite (your custom changes will be replaced).`));
|
|
56
|
+
return { changed: false, path: hookPath, reason: 'divergent — use --force' };
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
fs.writeFileSync(hookPath, hookContent, { mode: 0o755 });
|
|
60
|
+
console.log(pc.green(`Wrote ${hookPath}`));
|
|
61
|
+
return { changed: true, path: hookPath };
|
|
62
|
+
}
|
|
63
|
+
//# sourceMappingURL=migrate.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"migrate.js","sourceRoot":"","sources":["../../src/commands/migrate.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/commands/server.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AA2PH,UAAU,YAAY;IACpB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb;2DACuD;IACvD,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AA81CD,wBAAsB,WAAW,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,
|
|
1
|
+
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/commands/server.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AA2PH,UAAU,YAAY;IACpB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb;2DACuD;IACvD,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AA81CD,wBAAsB,WAAW,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,CA+yItE;AAED,wBAAsB,UAAU,CAAC,OAAO,EAAE;IAAE,GAAG,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAsDzE;AAED;;;;;;;;;;;GAWG;AACH,wBAAsB,aAAa,CAAC,OAAO,EAAE;IAAE,GAAG,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAuD5E"}
|
package/dist/commands/server.js
CHANGED
|
@@ -5209,7 +5209,51 @@ export async function startServer(options) {
|
|
|
5209
5209
|
return { content: lines.join('\n'), truncated: false, elapsedMs: Date.now() - start };
|
|
5210
5210
|
}, { description: 'Feature discovery state and behavioral contract summary' });
|
|
5211
5211
|
}
|
|
5212
|
-
|
|
5212
|
+
// ── Integrated-Being ledger (v1) ──────────────────────────────────
|
|
5213
|
+
// Spec: docs/specs/integrated-being-ledger-v1.md
|
|
5214
|
+
let sharedStateLedger;
|
|
5215
|
+
{
|
|
5216
|
+
const ibConfig = config.integratedBeing ?? {};
|
|
5217
|
+
const ibEnabled = ibConfig.enabled === undefined ? true : ibConfig.enabled !== false;
|
|
5218
|
+
if (ibEnabled) {
|
|
5219
|
+
const { SharedStateLedger } = await import('../core/SharedStateLedger.js');
|
|
5220
|
+
const { randomBytes } = await import('node:crypto');
|
|
5221
|
+
// Generate salt on first use — persisted via LiveConfig.
|
|
5222
|
+
let salt = ibConfig.counterpartyHashSalt ?? '';
|
|
5223
|
+
if (!salt) {
|
|
5224
|
+
salt = randomBytes(32).toString('hex');
|
|
5225
|
+
try {
|
|
5226
|
+
if (liveConfig)
|
|
5227
|
+
liveConfig.set('integratedBeing.counterpartyHashSalt', salt);
|
|
5228
|
+
}
|
|
5229
|
+
catch { /* best effort */ }
|
|
5230
|
+
}
|
|
5231
|
+
sharedStateLedger = new SharedStateLedger({
|
|
5232
|
+
stateDir: config.stateDir,
|
|
5233
|
+
config: ibConfig,
|
|
5234
|
+
salt,
|
|
5235
|
+
degradationReporter,
|
|
5236
|
+
});
|
|
5237
|
+
// Wire emitters (single call-site; revert = delete this block).
|
|
5238
|
+
const { registerLedgerEmitters } = await import('../core/registerLedgerEmitters.js');
|
|
5239
|
+
// Note: dispatchExecutor is scoped inside the dispatches.enabled block.
|
|
5240
|
+
// AutoDispatcher wraps it; the emitter sink is set via
|
|
5241
|
+
// autoDispatcher.executor.setLedgerEventSink(). We access it through
|
|
5242
|
+
// autoDispatcher — if dispatches are disabled, no emitter is installed.
|
|
5243
|
+
const dispatchExec = autoDispatcher
|
|
5244
|
+
? autoDispatcher.executor
|
|
5245
|
+
: undefined;
|
|
5246
|
+
registerLedgerEmitters(sharedStateLedger, {
|
|
5247
|
+
threadlineRouter: threadlineRouter ?? undefined,
|
|
5248
|
+
dispatchExecutor: dispatchExec ?? undefined,
|
|
5249
|
+
coherenceGate: responseReviewGate ?? undefined,
|
|
5250
|
+
config: ibConfig,
|
|
5251
|
+
instance: config.projectName ?? 'server',
|
|
5252
|
+
});
|
|
5253
|
+
console.log(pc.green(' Integrated-Being ledger: enabled'));
|
|
5254
|
+
}
|
|
5255
|
+
}
|
|
5256
|
+
const server = new AgentServer({ config, sessionManager, state, scheduler, telegram, relationships, feedback, feedbackAnomalyDetector, dispatches, updateChecker, autoUpdater, autoDispatcher, quotaTracker, quotaManager, publisher, viewer, tunnel, evolution, watchdog, topicMemory, triageNurse, projectMapper, coherenceGate: scopeVerifier, contextHierarchy, canonicalState, operationGate, sentinel, adaptiveTrust, memoryMonitor, orphanReaper, coherenceMonitor, commitmentTracker, semanticMemory, activitySentinel, messageRouter, summarySentinel, spawnManager, systemReviewer, capabilityMapper, selfKnowledgeTree, coverageAuditor, topicResumeMap: _topicResumeMap ?? undefined, autonomyManager, trustElevationTracker, autonomousEvolution, coordinator: coordinator.enabled ? coordinator : undefined, localSigningKeyPem, whatsapp: whatsappAdapter, slack: slackAdapter, imessage: imessageAdapter, whatsappBusinessBackend, messageBridge, hookEventReceiver, worktreeMonitor, subagentTracker, instructionsVerifier, handshakeManager: threadlineHandshake, threadlineRouter, threadlineRelayClient, threadlineReplyWaiters, listenerManager: listenerManager ?? undefined, responseReviewGate, messagingToneGate, outboundDedupGate, telemetryHeartbeat, pasteManager, featureRegistry, discoveryEvaluator, unifiedTrust, liveConfig, sharedStateLedger });
|
|
5213
5257
|
await server.start();
|
|
5214
5258
|
// Connect DegradationReporter downstream systems now that everything is initialized.
|
|
5215
5259
|
// Any degradation events queued during startup will drain to feedback + telegram.
|
|
@@ -5513,6 +5557,11 @@ export async function startServer(options) {
|
|
|
5513
5557
|
// when better-sqlite3 destructors fire during process teardown.
|
|
5514
5558
|
topicMemory?.close();
|
|
5515
5559
|
semanticMemory?.close();
|
|
5560
|
+
// Integrated-Being v1 — flush stats sidecar (coalesces pending writes).
|
|
5561
|
+
try {
|
|
5562
|
+
sharedStateLedger?.shutdown();
|
|
5563
|
+
}
|
|
5564
|
+
catch { /* best effort */ }
|
|
5516
5565
|
await server.stop();
|
|
5517
5566
|
process.exit(0);
|
|
5518
5567
|
};
|