@animalabs/connectome-host 0.7.4 → 0.8.0
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/.env.example +12 -5
- package/.github/PULL_REQUEST_TEMPLATE.md +3 -2
- package/.github/workflows/changelog.yml +9 -4
- package/.github/workflows/ci.yml +5 -3
- package/.github/workflows/publish.yml +12 -6
- package/CHANGELOG.md +245 -0
- package/CONTRIBUTING.md +47 -19
- package/README.md +27 -0
- package/bun.lock +27 -31
- package/changelog.d/README.md +28 -0
- package/package.json +5 -5
- package/recipes/SETUP.md +11 -5
- package/recipes/TRIUMVIRATE-SETUP.md +68 -14
- package/recipes/knowledge-miner.json +0 -30
- package/recipes/mock-test.json +19 -0
- package/recipes/triumvirate.json +6 -1
- package/scripts/release-changelog.ts +210 -21
- package/src/cache-keepalive-log.ts +41 -0
- package/src/commands.ts +96 -0
- package/src/framework-strategy.ts +37 -0
- package/src/gate-telemetry.ts +106 -0
- package/src/headless.ts +10 -0
- package/src/index.ts +167 -55
- package/src/mcpl-config.ts +99 -1
- package/src/modules/identity-module.ts +310 -2
- package/src/modules/instructions-module.ts +265 -0
- package/src/modules/mcpl-admin-module.ts +58 -11
- package/src/modules/subagent-module.ts +18 -0
- package/src/recipe.ts +732 -25
- package/src/web/panel-data.ts +19 -0
- package/src/workspace-mounts.ts +73 -0
- package/test/audit-module-optins.test.ts +10 -3
- package/test/cache-keepalive-log.test.ts +83 -0
- package/test/conversations-recipe.test.ts +142 -0
- package/test/framework-fkm-composition.test.ts +35 -3
- package/test/framework-strategy-defaults.test.ts +19 -0
- package/test/gate-telemetry-adapter.test.ts +84 -0
- package/test/gate-telemetry.test.ts +91 -0
- package/test/identity-and-surfaces.test.ts +212 -1
- package/test/instructions-module.test.ts +258 -0
- package/test/mcpl-admin-module.test.ts +41 -0
- package/test/mcpl-agent-overlay.test.ts +51 -3
- package/test/mcpl-child-env.test.ts +64 -0
- package/test/nudge-command.test.ts +47 -0
- package/test/recipe-cache-keepalive.test.ts +59 -0
- package/test/recipe-compression-fallback.test.ts +19 -0
- package/test/recipe-hybrid-prose-routing.test.ts +12 -0
- package/test/recipe-instructions.test.ts +176 -0
- package/test/recipe-kv-unified.test.ts +87 -0
- package/test/recipe-mcp-source.test.ts +54 -0
- package/test/recipe-openai-compatible.test.ts +54 -0
- package/test/recipe-path-resolution.test.ts +19 -8
- package/test/recipe-provider.test.ts +14 -0
- package/test/recipe-save-unresolved.test.ts +244 -0
- package/test/recipe-source-only.test.ts +38 -0
- package/test/release-changelog.test.ts +202 -0
- package/test/subagent-prose-routing.test.ts +109 -0
- package/test/workspace-mounts.test.ts +68 -0
- package/web/src/App.tsx +1 -0
- package/web/src/Health.tsx +61 -1
package/web/src/Health.tsx
CHANGED
|
@@ -72,6 +72,36 @@ export interface HealthSnapshot {
|
|
|
72
72
|
} | null;
|
|
73
73
|
}>;
|
|
74
74
|
compressionQuarantine?: Record<string, { count?: number; keys?: string[] }>;
|
|
75
|
+
|
|
76
|
+
/** cm's single-authority debt reduction (getCompressionDebt) — the QUEUE
|
|
77
|
+
|
|
78
|
+
* of closed-but-uncompressed chunks. Distinct from contextComposition:
|
|
79
|
+
|
|
80
|
+
* composition says what the last compile RENDERED (summaries L1 = 0 there
|
|
81
|
+
|
|
82
|
+
* means "no L1 tokens in the window", often healthy consolidation);
|
|
83
|
+
|
|
84
|
+
* this block says what the memory organ still OWES. Absent per-agent
|
|
85
|
+
|
|
86
|
+
* entry = the stack predates the reduction — render that as
|
|
87
|
+
|
|
88
|
+
* "not reported", never as zero (misread twice on 2026-08-29). */
|
|
89
|
+
|
|
90
|
+
compressionDebt?: Record<string, {
|
|
91
|
+
|
|
92
|
+
state?: 'healthy' | 'degraded' | 'critical';
|
|
93
|
+
|
|
94
|
+
pendingChunks?: number;
|
|
95
|
+
|
|
96
|
+
oldestPendingAgeMs?: number | null;
|
|
97
|
+
|
|
98
|
+
mergeQueueDepth?: number;
|
|
99
|
+
|
|
100
|
+
mergeQuarantineCount?: number;
|
|
101
|
+
|
|
102
|
+
compressionQuarantineCount?: number;
|
|
103
|
+
|
|
104
|
+
}>;
|
|
75
105
|
runtimeSettings?: Record<string, {
|
|
76
106
|
contextBudgetTokens?: number;
|
|
77
107
|
tailTokens?: number;
|
|
@@ -301,6 +331,7 @@ export function HealthPanel(props: {
|
|
|
301
331
|
}) {
|
|
302
332
|
const agents = () => props.health?.agents ?? [];
|
|
303
333
|
const quarantine = (name: string) => props.health?.compressionQuarantine?.[name];
|
|
334
|
+
const debt = (name: string) => props.health?.compressionDebt?.[name];
|
|
304
335
|
const settings = (name: string) => props.health?.runtimeSettings?.[name];
|
|
305
336
|
const composition = (name: string) => props.health?.contextComposition?.[name];
|
|
306
337
|
|
|
@@ -343,7 +374,10 @@ export function HealthPanel(props: {
|
|
|
343
374
|
<span>up {fmtUptime(props.health!.uptimeSec!)}</span>
|
|
344
375
|
</Show>
|
|
345
376
|
<Show when={props.health!.pendingRequests !== undefined}>
|
|
346
|
-
|
|
377
|
+
{/* the INFERENCE queue (requests waiting to run) — not compression
|
|
378
|
+
debt; that lives per-agent below. A bare "queued" invited the
|
|
379
|
+
misread, hence the explicit label. */}
|
|
380
|
+
<span>{props.health!.pendingRequests} inference queued</span>
|
|
347
381
|
</Show>
|
|
348
382
|
<Show when={props.health!.activeStreams !== undefined}>
|
|
349
383
|
<span>{props.health!.activeStreams!.length} streaming</span>
|
|
@@ -388,6 +422,32 @@ export function HealthPanel(props: {
|
|
|
388
422
|
</div>
|
|
389
423
|
</Show>
|
|
390
424
|
|
|
425
|
+
{/* Compression debt: the organ's QUEUE, not the render composition.
|
|
426
|
+
An old stack that reports nothing must say so — absence
|
|
427
|
+
rendered as zero invites misreads. */}
|
|
428
|
+
<Show when={debt(a.name)} fallback={
|
|
429
|
+
<div class="text-neutral-600">compression debt: not reported by this stack</div>
|
|
430
|
+
}>
|
|
431
|
+
<div class={
|
|
432
|
+
debt(a.name)!.state === 'critical' ? 'text-rose-300'
|
|
433
|
+
: debt(a.name)!.state === 'degraded' ? 'text-amber-300/90'
|
|
434
|
+
: 'text-neutral-500'
|
|
435
|
+
}>
|
|
436
|
+
compression debt: {debt(a.name)!.state ?? '?'}
|
|
437
|
+
{' · '}{debt(a.name)!.pendingChunks ?? 0} chunk(s) pending
|
|
438
|
+
<Show when={(debt(a.name)!.pendingChunks ?? 0) > 0}>
|
|
439
|
+
<span>
|
|
440
|
+
{debt(a.name)!.oldestPendingAgeMs != null
|
|
441
|
+
? ` · oldest ${Math.round(debt(a.name)!.oldestPendingAgeMs! / 60000)}m`
|
|
442
|
+
: ' · age unknown'}
|
|
443
|
+
</span>
|
|
444
|
+
</Show>
|
|
445
|
+
<Show when={(debt(a.name)!.mergeQueueDepth ?? 0) > 0}>
|
|
446
|
+
<span> · merge queue {debt(a.name)!.mergeQueueDepth}</span>
|
|
447
|
+
</Show>
|
|
448
|
+
</div>
|
|
449
|
+
</Show>
|
|
450
|
+
|
|
391
451
|
<Show when={a.refusalStats && (a.refusalStats.total ?? 0) > 0}>
|
|
392
452
|
<div class="text-amber-300/90">
|
|
393
453
|
refusals: {a.refusalStats!.total}
|