@theihtisham/agent-shadow-brain 7.1.4 → 7.22.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/CHANGELOG.md +478 -462
- package/README.md +97 -24
- package/dist/brain/auto-update.js +1 -1
- package/dist/brain/auto-update.js.map +1 -1
- package/dist/brain/brain-portability.js +1 -1
- package/dist/brain/brain-portability.js.map +1 -1
- package/dist/brain/client-integrations.js +1 -1
- package/dist/brain/client-integrations.js.map +1 -1
- package/dist/brain/context-assembly.d.ts +10 -0
- package/dist/brain/context-assembly.d.ts.map +1 -1
- package/dist/brain/context-assembly.js +15 -6
- package/dist/brain/context-assembly.js.map +1 -1
- package/dist/brain/context-efficiency.d.ts +48 -0
- package/dist/brain/context-efficiency.d.ts.map +1 -0
- package/dist/brain/context-efficiency.js +34 -0
- package/dist/brain/context-efficiency.js.map +1 -0
- package/dist/brain/context-request.d.ts +1 -1
- package/dist/brain/context-request.d.ts.map +1 -1
- package/dist/brain/context-request.js +4 -2
- package/dist/brain/context-request.js.map +1 -1
- package/dist/brain/context-retrieval.d.ts +1 -1
- package/dist/brain/context-retrieval.d.ts.map +1 -1
- package/dist/brain/context-retrieval.js +2 -1
- package/dist/brain/context-retrieval.js.map +1 -1
- package/dist/brain/feature-settings.d.ts +5 -0
- package/dist/brain/feature-settings.d.ts.map +1 -1
- package/dist/brain/feature-settings.js +8 -2
- package/dist/brain/feature-settings.js.map +1 -1
- package/dist/brain/global-brain.d.ts +1 -1
- package/dist/brain/global-brain.d.ts.map +1 -1
- package/dist/brain/global-brain.js +1 -0
- package/dist/brain/global-brain.js.map +1 -1
- package/dist/brain/managed-project-skills.d.ts +48 -0
- package/dist/brain/managed-project-skills.d.ts.map +1 -0
- package/dist/brain/managed-project-skills.js +230 -0
- package/dist/brain/managed-project-skills.js.map +1 -0
- package/dist/brain/mcp-presence.d.ts +50 -0
- package/dist/brain/mcp-presence.d.ts.map +1 -0
- package/dist/brain/mcp-presence.js +214 -0
- package/dist/brain/mcp-presence.js.map +1 -0
- package/dist/brain/mcp-server.d.ts +12 -0
- package/dist/brain/mcp-server.d.ts.map +1 -1
- package/dist/brain/mcp-server.js +177 -31
- package/dist/brain/mcp-server.js.map +1 -1
- package/dist/brain/mcp-stdio.d.ts +1 -1
- package/dist/brain/mcp-stdio.d.ts.map +1 -1
- package/dist/brain/mcp-stdio.js +19 -1
- package/dist/brain/mcp-stdio.js.map +1 -1
- package/dist/brain/memory-annotations.d.ts +2 -0
- package/dist/brain/memory-annotations.d.ts.map +1 -1
- package/dist/brain/memory-annotations.js +13 -0
- package/dist/brain/memory-annotations.js.map +1 -1
- package/dist/brain/memory-inspection.d.ts +1 -0
- package/dist/brain/memory-inspection.d.ts.map +1 -1
- package/dist/brain/memory-inspection.js +1 -1
- package/dist/brain/memory-inspection.js.map +1 -1
- package/dist/brain/memory-mcp-content.d.ts +4 -2
- package/dist/brain/memory-mcp-content.d.ts.map +1 -1
- package/dist/brain/memory-mcp-content.js +20 -16
- package/dist/brain/memory-mcp-content.js.map +1 -1
- package/dist/brain/model-registry.d.ts +4 -5
- package/dist/brain/model-registry.d.ts.map +1 -1
- package/dist/brain/model-registry.js +22 -207
- package/dist/brain/model-registry.js.map +1 -1
- package/dist/brain/model-usage.d.ts +66 -0
- package/dist/brain/model-usage.d.ts.map +1 -0
- package/dist/brain/model-usage.js +246 -0
- package/dist/brain/model-usage.js.map +1 -0
- package/dist/brain/native-codex.d.ts +105 -0
- package/dist/brain/native-codex.d.ts.map +1 -0
- package/dist/brain/native-codex.js +292 -0
- package/dist/brain/native-codex.js.map +1 -0
- package/dist/brain/native-session-import.d.ts +56 -0
- package/dist/brain/native-session-import.d.ts.map +1 -0
- package/dist/brain/native-session-import.js +307 -0
- package/dist/brain/native-session-import.js.map +1 -0
- package/dist/brain/orchestrator.js +1 -1
- package/dist/brain/orchestrator.js.map +1 -1
- package/dist/brain/project-feedback.d.ts +1 -1
- package/dist/brain/project-feedback.d.ts.map +1 -1
- package/dist/brain/project-feedback.js +19 -8
- package/dist/brain/project-feedback.js.map +1 -1
- package/dist/brain/project-hub-contract.d.ts +6 -0
- package/dist/brain/project-hub-contract.d.ts.map +1 -1
- package/dist/brain/project-hub-contract.js +2 -1
- package/dist/brain/project-hub-contract.js.map +1 -1
- package/dist/brain/project-hub-mcp.d.ts +14 -0
- package/dist/brain/project-hub-mcp.d.ts.map +1 -1
- package/dist/brain/project-hub-mcp.js +6 -1
- package/dist/brain/project-hub-mcp.js.map +1 -1
- package/dist/brain/project-hub-store.d.ts +14 -2
- package/dist/brain/project-hub-store.d.ts.map +1 -1
- package/dist/brain/project-hub-store.js +70 -2
- package/dist/brain/project-hub-store.js.map +1 -1
- package/dist/brain/project-hub.d.ts +5 -0
- package/dist/brain/project-hub.d.ts.map +1 -1
- package/dist/brain/project-hub.js +23 -1
- package/dist/brain/project-hub.js.map +1 -1
- package/dist/brain/project-kit.d.ts +10 -0
- package/dist/brain/project-kit.d.ts.map +1 -1
- package/dist/brain/project-kit.js +80 -16
- package/dist/brain/project-kit.js.map +1 -1
- package/dist/brain/project-policy-delivery.d.ts +8 -0
- package/dist/brain/project-policy-delivery.d.ts.map +1 -0
- package/dist/brain/project-policy-delivery.js +38 -0
- package/dist/brain/project-policy-delivery.js.map +1 -0
- package/dist/brain/project-policy.d.ts +88 -0
- package/dist/brain/project-policy.d.ts.map +1 -0
- package/dist/brain/project-policy.js +267 -0
- package/dist/brain/project-policy.js.map +1 -0
- package/dist/brain/project-session-contract.d.ts +180 -0
- package/dist/brain/project-session-contract.d.ts.map +1 -0
- package/dist/brain/project-session-contract.js +50 -0
- package/dist/brain/project-session-contract.js.map +1 -0
- package/dist/brain/project-session-mcp.d.ts +145 -0
- package/dist/brain/project-session-mcp.d.ts.map +1 -0
- package/dist/brain/project-session-mcp.js +58 -0
- package/dist/brain/project-session-mcp.js.map +1 -0
- package/dist/brain/project-sessions.d.ts +97 -0
- package/dist/brain/project-sessions.d.ts.map +1 -0
- package/dist/brain/project-sessions.js +223 -0
- package/dist/brain/project-sessions.js.map +1 -0
- package/dist/brain/project-source-contract.d.ts +109 -0
- package/dist/brain/project-source-contract.d.ts.map +1 -0
- package/dist/brain/project-source-contract.js +2 -0
- package/dist/brain/project-source-contract.js.map +1 -0
- package/dist/brain/project-source-intake.d.ts +26 -0
- package/dist/brain/project-source-intake.d.ts.map +1 -0
- package/dist/brain/project-source-intake.js +457 -0
- package/dist/brain/project-source-intake.js.map +1 -0
- package/dist/cli.js +1 -1
- package/dist/cli.js.map +1 -1
- package/dist/context-cli.d.ts.map +1 -1
- package/dist/context-cli.js +9 -3
- package/dist/context-cli.js.map +1 -1
- package/dist/dashboard/brain-hub-actions.d.ts.map +1 -1
- package/dist/dashboard/brain-hub-actions.js +232 -135
- package/dist/dashboard/brain-hub-actions.js.map +1 -1
- package/dist/dashboard/brain-hub-agent-dock.d.ts +2 -0
- package/dist/dashboard/brain-hub-agent-dock.d.ts.map +1 -0
- package/dist/dashboard/brain-hub-agent-dock.js +255 -0
- package/dist/dashboard/brain-hub-agent-dock.js.map +1 -0
- package/dist/dashboard/brain-hub-brand-icons.d.ts +2 -0
- package/dist/dashboard/brain-hub-brand-icons.d.ts.map +1 -0
- package/dist/dashboard/brain-hub-brand-icons.js +9 -0
- package/dist/dashboard/brain-hub-brand-icons.js.map +1 -0
- package/dist/dashboard/brain-hub-client.d.ts.map +1 -1
- package/dist/dashboard/brain-hub-client.js +433 -333
- package/dist/dashboard/brain-hub-client.js.map +1 -1
- package/dist/dashboard/brain-hub-context.d.ts +2 -0
- package/dist/dashboard/brain-hub-context.d.ts.map +1 -0
- package/dist/dashboard/brain-hub-context.js +37 -0
- package/dist/dashboard/brain-hub-context.js.map +1 -0
- package/dist/dashboard/brain-hub-controls.d.ts +2 -0
- package/dist/dashboard/brain-hub-controls.d.ts.map +1 -0
- package/dist/dashboard/brain-hub-controls.js +63 -0
- package/dist/dashboard/brain-hub-controls.js.map +1 -0
- package/dist/dashboard/brain-hub-exchanges.d.ts +2 -0
- package/dist/dashboard/brain-hub-exchanges.d.ts.map +1 -0
- package/dist/dashboard/brain-hub-exchanges.js +82 -0
- package/dist/dashboard/brain-hub-exchanges.js.map +1 -0
- package/dist/dashboard/brain-hub-graph.d.ts.map +1 -1
- package/dist/dashboard/brain-hub-graph.js +236 -74
- package/dist/dashboard/brain-hub-graph.js.map +1 -1
- package/dist/dashboard/brain-hub-html.d.ts.map +1 -1
- package/dist/dashboard/brain-hub-html.js +56 -1
- package/dist/dashboard/brain-hub-html.js.map +1 -1
- package/dist/dashboard/brain-hub-knowledge.d.ts +2 -0
- package/dist/dashboard/brain-hub-knowledge.d.ts.map +1 -0
- package/dist/dashboard/brain-hub-knowledge.js +33 -0
- package/dist/dashboard/brain-hub-knowledge.js.map +1 -0
- package/dist/dashboard/brain-hub-live.d.ts +2 -0
- package/dist/dashboard/brain-hub-live.d.ts.map +1 -0
- package/dist/dashboard/brain-hub-live.js +151 -0
- package/dist/dashboard/brain-hub-live.js.map +1 -0
- package/dist/dashboard/brain-hub-managed-skills.d.ts +2 -0
- package/dist/dashboard/brain-hub-managed-skills.d.ts.map +1 -0
- package/dist/dashboard/brain-hub-managed-skills.js +20 -0
- package/dist/dashboard/brain-hub-managed-skills.js.map +1 -0
- package/dist/dashboard/brain-hub-native.d.ts +2 -0
- package/dist/dashboard/brain-hub-native.d.ts.map +1 -0
- package/dist/dashboard/brain-hub-native.js +44 -0
- package/dist/dashboard/brain-hub-native.js.map +1 -0
- package/dist/dashboard/brain-hub-project-views.d.ts.map +1 -1
- package/dist/dashboard/brain-hub-project-views.js +78 -77
- package/dist/dashboard/brain-hub-project-views.js.map +1 -1
- package/dist/dashboard/brain-hub-sessions.d.ts +2 -0
- package/dist/dashboard/brain-hub-sessions.d.ts.map +1 -0
- package/dist/dashboard/brain-hub-sessions.js +40 -0
- package/dist/dashboard/brain-hub-sessions.js.map +1 -0
- package/dist/dashboard/brain-hub-usage.d.ts +2 -0
- package/dist/dashboard/brain-hub-usage.d.ts.map +1 -0
- package/dist/dashboard/brain-hub-usage.js +28 -0
- package/dist/dashboard/brain-hub-usage.js.map +1 -0
- package/dist/dashboard/brain-hub-views.d.ts.map +1 -1
- package/dist/dashboard/brain-hub-views.js +151 -146
- package/dist/dashboard/brain-hub-views.js.map +1 -1
- package/dist/dashboard/live-workspace-html.js +1039 -1039
- package/dist/dashboard/managed-project-skills-api.d.ts +29 -0
- package/dist/dashboard/managed-project-skills-api.d.ts.map +1 -0
- package/dist/dashboard/managed-project-skills-api.js +28 -0
- package/dist/dashboard/managed-project-skills-api.js.map +1 -0
- package/dist/dashboard/native-codex-api.d.ts +83 -0
- package/dist/dashboard/native-codex-api.d.ts.map +1 -0
- package/dist/dashboard/native-codex-api.js +91 -0
- package/dist/dashboard/native-codex-api.js.map +1 -0
- package/dist/dashboard/project-file-watch.d.ts +46 -0
- package/dist/dashboard/project-file-watch.d.ts.map +1 -0
- package/dist/dashboard/project-file-watch.js +221 -0
- package/dist/dashboard/project-file-watch.js.map +1 -0
- package/dist/dashboard/project-live-stream.d.ts +33 -0
- package/dist/dashboard/project-live-stream.d.ts.map +1 -0
- package/dist/dashboard/project-live-stream.js +233 -0
- package/dist/dashboard/project-live-stream.js.map +1 -0
- package/dist/dashboard/project-policy-api.d.ts +37 -0
- package/dist/dashboard/project-policy-api.d.ts.map +1 -0
- package/dist/dashboard/project-policy-api.js +31 -0
- package/dist/dashboard/project-policy-api.js.map +1 -0
- package/dist/dashboard/project-session-api.d.ts +28 -0
- package/dist/dashboard/project-session-api.d.ts.map +1 -0
- package/dist/dashboard/project-session-api.js +84 -0
- package/dist/dashboard/project-session-api.js.map +1 -0
- package/dist/dashboard/project-source-api.d.ts +11 -0
- package/dist/dashboard/project-source-api.d.ts.map +1 -0
- package/dist/dashboard/project-source-api.js +67 -0
- package/dist/dashboard/project-source-api.js.map +1 -0
- package/dist/dashboard/project-workspace.d.ts.map +1 -1
- package/dist/dashboard/project-workspace.js +18 -0
- package/dist/dashboard/project-workspace.js.map +1 -1
- package/dist/dashboard/server.d.ts.map +1 -1
- package/dist/dashboard/server.js +64 -25
- package/dist/dashboard/server.js.map +1 -1
- package/dist/dashboard/v6-dashboard-html.d.ts +1 -1
- package/dist/dashboard/v6-dashboard-html.d.ts.map +1 -1
- package/dist/dashboard/v6-dashboard-html.js +4261 -4309
- package/dist/dashboard/v6-dashboard-html.js.map +1 -1
- package/dist/dashboard/workspace-api.d.ts.map +1 -1
- package/dist/dashboard/workspace-api.js +105 -23
- package/dist/dashboard/workspace-api.js.map +1 -1
- package/dist/dashboard/workspace-status.d.ts +3 -0
- package/dist/dashboard/workspace-status.d.ts.map +1 -1
- package/dist/dashboard/workspace-status.js +4 -3
- package/dist/dashboard/workspace-status.js.map +1 -1
- package/dist/project-cli.js +1 -1
- package/dist/project-cli.js.map +1 -1
- package/docs/BRAND_ASSETS.md +36 -0
- package/docs/FEATURES_AND_LIMITS.md +29 -24
- package/docs/INTEGRATIONS.md +4 -2
- package/docs/LEARNING.md +1 -1
- package/docs/PROJECT_KIT.md +6 -1
- package/docs/QUICKSTART.md +62 -44
- package/docs/README.md +36 -33
- package/docs/SESSIONS.md +77 -0
- package/docs/SOURCE_INTAKE.md +33 -0
- package/docs/STATS.md +21 -21
- package/docs/VISUAL_GUIDE_v7.22.0.md +73 -0
- package/docs/WORKFLOW_INTEGRATION.md +3 -1
- package/docs/WORKSPACE.md +63 -37
- package/docs/assets/7.22.0-agent-dock-mobile.png +0 -0
- package/docs/assets/7.22.0-agent-dock.gif +0 -0
- package/docs/assets/7.22.0-agent-dock.png +0 -0
- package/docs/assets/7.22.0-hub-exchange.png +0 -0
- package/docs/assets/7.22.0-hub-exchanges.gif +0 -0
- package/docs/assets/7.22.0-hub-graph.png +0 -0
- package/docs/assets/7.22.0-hub-mobile-empty.png +0 -0
- package/docs/assets/7.22.0-managed-skills.png +0 -0
- package/docs/assets/7.22.0-plain-evidence.png +0 -0
- package/docs/assets/7.22.0-project-controls.png +0 -0
- package/docs/assets/7.22.0-sessions.png +0 -0
- package/docs/assets/7.22.0-teach-brain.png +0 -0
- package/docs/launch/RELEASE_ACCEPTANCE_v7.22.0.md +48 -0
- package/docs/launch/RELEASE_NOTES_v7.22.0.md +53 -0
- package/docs/launch/RESEARCH_AND_PLAN_v7.22.0.md +672 -0
- package/package.json +135 -130
- package/skills/shadow-workflow/SKILL.md +2 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"brain-hub-client.js","sourceRoot":"","sources":["../../src/dashboard/brain-hub-client.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,gBAAgB,GAAG,MAAM,CAAC,GAAG,CAAA
|
|
1
|
+
{"version":3,"file":"brain-hub-client.js","sourceRoot":"","sources":["../../src/dashboard/brain-hub-client.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,gBAAgB,GAAG,MAAM,CAAC,GAAG,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAibzC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"brain-hub-context.d.ts","sourceRoot":"","sources":["../../src/dashboard/brain-hub-context.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,iBAAiB,QAmC7B,CAAC"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
export const BRAIN_HUB_CONTEXT = String.raw `
|
|
2
|
+
function memoryActions(id){return '<div class="actions">'+action('open-memory','Inspect memory','','data-memory="'+esc(id)+'"')+(local?action('source-evidence','Original source','','data-memory="'+esc(id)+'"'):'')+'</div>';}
|
|
3
|
+
function contextDiagnostics(pack){
|
|
4
|
+
const retrieval=pack.retrieval;
|
|
5
|
+
const stages=retrieval?'<dl class="facts">'+arr(retrieval.stages).map(stage=>fact(stage.label,stage.count)).join('')+fact('Task classification',retrieval.taskType)+fact('Candidate limit',retrieval.candidateLimit)+fact('Scan truncated',retrieval.truncated?'Yes':'No')+'</dl>':'';
|
|
6
|
+
const candidates=retrieval?list(arr(retrieval.candidates).map(candidate=>'<li class="item"><div class="row"><strong>'+esc(candidate.title)+'</strong>'+chip(candidate.decision==='selected'?'Selected':candidate.reason,candidate.decision==='selected'?'green':'amber')+'</div><p class="small muted">Rank '+esc(candidate.rank)+' · matched '+esc(arr(candidate.matchedTerms).join(', ')||'no terms')+' in '+esc(arr(candidate.matchedFields).join(', ')||'no fields')+'</p><details><summary>Why this rank?</summary><dl class="facts">'+arr(candidate.signals).map(signal=>fact(signal.label,Number(signal.value).toFixed(3))).join('')+(candidate.feedback?fact('Feedback adjustment',candidate.feedback.adjustment):'')+'</dl>'+arr(candidate.paths).map(path=>'<p class="small mono">'+esc(path.relationType+' from '+path.seedId+' via '+path.relationId)+'</p>').join('')+'</details>'+memoryActions(candidate.id)+'</li>').join('')):'';
|
|
7
|
+
const omitted=arr(pack.excluded);
|
|
8
|
+
const reasons={budget:'Would exceed the context budget',limit:'Outside the selected memory count',duplicate:'Duplicate of another memory',empty:'No usable text',lookback:'Outside the time window',archived:'Archived',contested:'Marked contested',superseded:'Replaced by a newer memory'};
|
|
9
|
+
return panel('How the pack was chosen','<div class="panel-body stack">'+stages+'<p class="small muted">Ranks are retrieval signals, not factual confidence or an accuracy score. Exact characters: '+fmt(pack.budget.usedChars)+'. '+(Number.isFinite(pack.budget.usedBytes)?'UTF-8 bytes: '+fmt(pack.budget.usedBytes)+'. ':'')+'Token estimator: '+esc(pack.budget.estimator??'character heuristic')+'.</p></div>'+candidates+(omitted.length?'<details class="panel-body"><summary>'+omitted.length+' omitted records</summary>'+list(omitted.map(entry=>'<li class="item"><strong>'+esc(entry.title??entry.id)+'</strong><p class="small muted">'+esc(reasons[entry.reason]??entry.reason)+'</p>'+memoryActions(entry.id)+'</li>').join(''))+'</details>':''));
|
|
10
|
+
}
|
|
11
|
+
function contextComparison(){
|
|
12
|
+
const compare=state.comparison;if(!compare)return '';
|
|
13
|
+
const titles=new Map([...arr(compare.legacy.entries),...arr(compare.adaptive.entries)].map(entry=>[entry.id,entry.excerpt]));
|
|
14
|
+
return panel('What changed between retrieval profiles','<div class="panel-body stack"><dl class="facts">'+fact('Legacy estimate',compare.legacy.budget.estimatedTokens+' tokens')+fact('Adaptive estimate',compare.adaptive.budget.estimatedTokens+' tokens')+'</dl>'+arr(compare.warnings).map(warning=>'<p class="small muted">'+esc(warning)+'</p>').join('')+[['addedIds','Added by adaptive'],['removedIds','Only in legacy'],['sharedIds','Selected by both']].map(([key,label])=>'<h3>'+label+' · '+arr(compare.delta?.[key]).length+'</h3>'+list(arr(compare.delta?.[key]).map(id=>'<li class="item"><p>'+esc(titles.get(id)??id)+'</p>'+memoryActions(id)+'</li>').join(''))).join('')+'</div>');
|
|
15
|
+
}
|
|
16
|
+
function contextEfficiencyPanel(pack){
|
|
17
|
+
const result=pack?.efficiency;if(!result)return '';
|
|
18
|
+
const difference=result.signedTokenDifference;
|
|
19
|
+
const label=difference<0?fmt(-difference)+' more estimated context tokens':fmt(difference)+' estimated context tokens avoided';
|
|
20
|
+
const percent=result.referenceEstimatedTokens?Math.abs(difference)/result.referenceEstimatedTokens*100:null;
|
|
21
|
+
const change=percent===null?'No reference context':difference===0?'Same estimated size':percent.toFixed(1)+(difference<0?'% larger':'% smaller');
|
|
22
|
+
return panel('Context efficiency','<div class="panel-body stack"><div class="row"><strong>'+label+'</strong>'+chip(change,difference<0?'amber':'cyan')+'</div><dl class="facts">'+fact('Bounded reference pack',fmt(result.referenceEstimatedTokens)+' estimated tokens')+fact('Focused pack',fmt(result.focusedEstimatedTokens)+' estimated tokens')+fact('Reference / selected memories',result.referenceMemoryCount+' / '+result.focusedMemoryCount)+fact('Measured assembly time',result.assemblyMs+' ms')+fact('Comparison overhead',result.referenceComparisonMs+' ms')+'</dl><p class="small muted">'+esc(result.baseline)+'. Reference cap: '+result.referenceTokenBudget+' tokens / '+result.referenceEntryLimit+' entries.'+(result.referenceLimited?' The reference also reached a scan or pack limit.':'')+'</p><p class="small muted">'+esc(result.note)+'</p></div>',chip('Estimate'));
|
|
23
|
+
}
|
|
24
|
+
function contextPage(){
|
|
25
|
+
const input=state.contextInput??{};
|
|
26
|
+
const enabled=state.features?.features?.contextAssembly!==false;
|
|
27
|
+
const controls=state.policy?.policy;
|
|
28
|
+
const form='<div class="panel-body"><form class="form" data-form="context"><label>What are you working on?<textarea name="query" rows="4" maxlength="4096" placeholder="Describe your next task in your own words">'+esc(input.query)+'</textarea></label><p class="small muted">The brain searches approved project memory for this task. The connected agent uses the returned context to reason about your work.</p><div class="form-grid"><label>Context size · estimated tokens<input name="tokenBudget" type="number" min="0" max="12000" value="'+esc(input.tokenBudget??2000)+'" required></label><label>Retrieval method<select name="profile"><option value="adaptive">Adaptive</option><option value="legacy" '+(input.profile==='legacy'?'selected':'')+'>Legacy</option></select></label></div><label class="check"><input name="expandRelated" type="checkbox" '+(input.expandRelated?'checked':'')+'> Include recorded related memories</label><div class="actions">'+(state.project&&enabled?submit('Find useful context')+'<button class="btn" type="submit" name="compare" value="yes">Compare methods</button>':chip(state.project?'Context packs disabled':'Select a project','amber'))+'</div></form></div>';
|
|
29
|
+
const pack=state.context;
|
|
30
|
+
const output=pack?'<div class="panel-body stack"><div class="row"><strong>'+fmt(arr(pack.entries).length)+' selected memories</strong>'+chip(fmt(pack.budget.estimatedTokens)+' estimated tokens','pink')+'</div>'+arr(pack.warnings).map(warning=>'<p class="small amber">'+esc(warning)+'</p>').join('')+(arr(pack.entries).length?list(pack.entries.map(entry=>'<li class="item"><p class="preserve">'+esc(entry.excerpt)+'</p><small class="muted">'+esc(arr(entry.reasons).join(' · '))+'</small><small class="mono cyan">'+esc(arr(entry.sources).join(' · '))+'</small>'+memoryActions(entry.id)+'</li>').join('')):empty('No matching memories fit this pack','Add relevant notes, change the task description, or increase the budget.'))+'<div class="actions">'+action('copy-pack','Copy context','primary')+view('learning','Review usefulness')+'</div><details><summary>Exact context available to copy</summary><pre>'+esc(pack.markdown)+'</pre></details></div>':empty('Try your next task','See exactly which memories are selected and where each one came from.');
|
|
31
|
+
const preview=pack?.policy??controls?.context;
|
|
32
|
+
const ceiling=preview?'<p class="panel-body small muted">Project ceilings · '+fmt(preview.maxTokens)+' estimated tokens · '+fmt(preview.maxEntries)+' entries'+
|
|
33
|
+
(pack?.policy?' · policy revision '+fmt(pack.policy.revision):'')+'. '+(pack?.policy?.hiddenMemories?fmt(pack.policy.hiddenMemories)+' linked memories withheld from delivery.':'')+'</p>':'';
|
|
34
|
+
return heading('Context for your next task','Find relevant project knowledge and inspect the delivery preview.',view('knowledge','Add knowledge'))+'<div class="two">'+panel('Your task',form+ceiling,chip(scopeName()))+panel('Selected context',output)+'</div>'+contextEfficiencyPanel(pack)+contextComparison()+(pack?contextDiagnostics(pack):'');
|
|
35
|
+
}
|
|
36
|
+
`;
|
|
37
|
+
//# sourceMappingURL=brain-hub-context.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"brain-hub-context.js","sourceRoot":"","sources":["../../src/dashboard/brain-hub-context.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,iBAAiB,GAAG,MAAM,CAAC,GAAG,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAmC1C,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"brain-hub-controls.d.ts","sourceRoot":"","sources":["../../src/dashboard/brain-hub-controls.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,kBAAkB,QA6D9B,CAAC"}
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
export const BRAIN_HUB_CONTROLS = String.raw `
|
|
2
|
+
function projectControls(){
|
|
3
|
+
if(!local)return '';
|
|
4
|
+
if(state.errors.policy)return panel('Project sharing',error('policy','project controls'));
|
|
5
|
+
const view=state.policy;
|
|
6
|
+
if(!view)return panel('Project sharing',empty('Loading project controls','Reading sharing and context preferences.'));
|
|
7
|
+
const snapshot=view.policy;
|
|
8
|
+
const disabled=state.pending?' disabled':'';
|
|
9
|
+
const slider=(name,label,min,max,value,suffix)=>'<label><span class="row">'+esc(label)+' <output class="mono cyan" for="policy-'+name+'" data-policy-output="'+name+'">'+fmt(value)+'</output></span>'+
|
|
10
|
+
'<input id="policy-'+name+'" name="'+name+'" type="range" min="'+min+'" max="'+max+'" value="'+value+'" aria-label="'+esc(label)+'" aria-valuetext="'+fmt(value)+' '+suffix+'"'+disabled+'></label>';
|
|
11
|
+
const ceilings='<form class="form" data-form="policy-context">'+slider('maxTokens','Maximum estimated context tokens',200,12000,snapshot.context.maxTokens,'estimated tokens')+
|
|
12
|
+
slider('maxEntries','Maximum context entries',1,30,snapshot.context.maxEntries,'entries')+submit('Save context limits')+'</form>';
|
|
13
|
+
const tools=list(arr(view.tools).map(tool=>{
|
|
14
|
+
const on=arr(snapshot.tools).find(entry=>entry.tool===tool)?.enabled!==false;
|
|
15
|
+
return '<li class="item"><div class="row"><strong>'+esc(hostName(tool))+'</strong>'+btn(on?'Enabled':'Disabled','role="switch" aria-checked="'+on+'" aria-label="Allow '+esc(hostName(tool))+
|
|
16
|
+
' to use project tools" data-policy-tool="'+esc(tool)+'" data-enabled="'+!on+'"'+disabled)+'</div></li>';
|
|
17
|
+
}).join(''),'aria-label="Project tools"');
|
|
18
|
+
const candidates=arr(view.chats);
|
|
19
|
+
const selected=candidates.find(chat=>chat.id===state.policySelection)??candidates[0];
|
|
20
|
+
const chats=selected?'<div class="stack"><label class="form">Conversation<select id="policy-chat"><option value="" disabled>Select a conversation</option>'+
|
|
21
|
+
candidates.map(chat=>'<option value="'+esc(chat.id)+'" '+(chat.id===selected.id?'selected':'')+'>'+esc(chat.title)+' · '+esc(hostName(chat.tool))+'</option>').join('')+
|
|
22
|
+
'</select></label><div class="row"><span>Share context from this chat</span>'+btn(selected.shareContext?'Sharing':'Private to operator',
|
|
23
|
+
'role="switch" aria-label="Share context from the selected chat" aria-checked="'+!!selected.shareContext+'" data-policy-chat="'+esc(selected.id)+'" data-enabled="'+!selected.shareContext+'"'+disabled)+
|
|
24
|
+
'</div>'+(selected.inheritedBlocked?'<p class="small amber">An earlier handoff in this conversation is unavailable to agents.</p>':'')+
|
|
25
|
+
'<form class="form" data-form="policy-role" data-id="'+esc(selected.id)+'"><label>Coordination role<select name="role">'+
|
|
26
|
+
[['','Unassigned'],['lead','Lead'],['worker','Worker'],['observer','Observer']].map(([value,label])=>'<option value="'+value+'" '+((selected.role??'')===value?'selected':'')+'>'+label+'</option>').join('')+
|
|
27
|
+
'</select></label>'+submit('Save role','')+'</form></div>':empty('No shared conversations yet','Open or import a conversation to set its sharing and role.');
|
|
28
|
+
return panel('Project sharing','<div class="panel-body stack"><div class="two"><section class="stack"><h3>Context limits</h3>'+ceilings+'</section>'+
|
|
29
|
+
'<section class="stack"><h3>Conversation access</h3>'+chats+'</section></div><details id="policy-tools"><summary>Tool participation</summary>'+tools+
|
|
30
|
+
'<p class="small muted">Applies to client labels connected to this project’s Shadow Brain. Role assignments are coordination labels.</p></details></div>',chip('Revision '+snapshot.revision));
|
|
31
|
+
}
|
|
32
|
+
function installPolicy(value){
|
|
33
|
+
if(state.policy?.policy.revision>value.policy.revision)return false;
|
|
34
|
+
const changed=JSON.stringify(state.policy)!==JSON.stringify(value);
|
|
35
|
+
const prior=state.context?.policy?.revision;
|
|
36
|
+
state.policy=value;
|
|
37
|
+
if(prior!==undefined&&prior!==value.policy.revision){
|
|
38
|
+
state.context=null;state.comparison=null;
|
|
39
|
+
if(state.view==='context')status('Project controls changed. Build a fresh context pack.');
|
|
40
|
+
}
|
|
41
|
+
return changed;
|
|
42
|
+
}
|
|
43
|
+
async function saveProjectPolicy(command){
|
|
44
|
+
if(!state.policy)return;
|
|
45
|
+
try {
|
|
46
|
+
const result=await api('project-policy',json({...command,expectedRevision:state.policy.policy.revision}));
|
|
47
|
+
installPolicy(result);delete state.errors.policy;
|
|
48
|
+
}catch(failure){
|
|
49
|
+
if(failure.status===409){
|
|
50
|
+
try{installPolicy(await api('project-policy'));render(true);}catch{}
|
|
51
|
+
}
|
|
52
|
+
throw failure;
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
function reflectPolicySlider(target){
|
|
56
|
+
if(!target.id?.startsWith('policy-')||target.type!=='range')return;
|
|
57
|
+
const output=target.parentElement.querySelector('output');
|
|
58
|
+
const text=fmt(Number(target.value));
|
|
59
|
+
if(output)output.textContent=text;
|
|
60
|
+
target.setAttribute('aria-valuetext',text+(target.name==='maxTokens'?' estimated tokens':' entries'));
|
|
61
|
+
}
|
|
62
|
+
`;
|
|
63
|
+
//# sourceMappingURL=brain-hub-controls.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"brain-hub-controls.js","sourceRoot":"","sources":["../../src/dashboard/brain-hub-controls.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,kBAAkB,GAAG,MAAM,CAAC,GAAG,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA6D3C,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"brain-hub-exchanges.d.ts","sourceRoot":"","sources":["../../src/dashboard/brain-hub-exchanges.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,mBAAmB,QAgF/B,CAAC"}
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
export const BRAIN_HUB_EXCHANGES = String.raw `
|
|
2
|
+
function exchangeKey(event){
|
|
3
|
+
if(event?.source!=='measured'||event.transport!=='mcp'||!['tool-start','tool-end'].includes(event.kind)||
|
|
4
|
+
!event.projectId||!event.sessionId||!event.agent||!event.tool||!event.correlationId)return null;
|
|
5
|
+
return JSON.stringify([event.projectId,event.sessionId,event.agent,event.tool,event.correlationId]);
|
|
6
|
+
}
|
|
7
|
+
function exchangeClientKey(event){return JSON.stringify([event.projectId,event.agent,event.sessionId]);}
|
|
8
|
+
let exchangeCache={events:null,pairs:new Map(),clients:[]};
|
|
9
|
+
function observedExchanges(){
|
|
10
|
+
if(exchangeCache.events===state.events)return exchangeCache;
|
|
11
|
+
const exchanges=new Map(),clients=new Map(),pairs=new Map();
|
|
12
|
+
for(const event of state.events){
|
|
13
|
+
const key=exchangeKey(event);
|
|
14
|
+
if(!key)continue;
|
|
15
|
+
const pair=exchanges.get(key)??{requests:[],results:[]};
|
|
16
|
+
if(event.kind==='tool-start')pair.requests.push(event);
|
|
17
|
+
else pair.results.push(event);
|
|
18
|
+
exchanges.set(key,pair);
|
|
19
|
+
const client=exchangeClientKey(event);
|
|
20
|
+
clients.delete(client);
|
|
21
|
+
clients.set(client,event);
|
|
22
|
+
}
|
|
23
|
+
for(const pair of exchanges.values()){
|
|
24
|
+
const request=pair.requests[0],result=pair.results[0];
|
|
25
|
+
if(pair.requests.length!==1||pair.results.length!==1||request.sequence>=result.sequence)continue;
|
|
26
|
+
pairs.set(request.id,result);
|
|
27
|
+
pairs.set(result.id,request);
|
|
28
|
+
}
|
|
29
|
+
exchangeCache={events:state.events,pairs,clients:[...clients.values()].reverse()};
|
|
30
|
+
return exchangeCache;
|
|
31
|
+
}
|
|
32
|
+
function exchangeLabel(event){
|
|
33
|
+
return event.kind==='tool-start'?'Request observed':event.outcome==='success'?'Result ready':
|
|
34
|
+
event.outcome==='cancelled'?'Tool cancelled':'Tool error';
|
|
35
|
+
}
|
|
36
|
+
function exchangeDirection(event){
|
|
37
|
+
return event.kind==='tool-start'?'Client → Workspace':'Workspace → Client';
|
|
38
|
+
}
|
|
39
|
+
function exchangeProject(event){
|
|
40
|
+
return arr(state.overview?.projects).find(project=>project.id===event.projectId)?.name??event.projectId;
|
|
41
|
+
}
|
|
42
|
+
function exchangeMarkup(){
|
|
43
|
+
const {clients}=observedExchanges();
|
|
44
|
+
const selected=state.replayId?displayEvent():null;
|
|
45
|
+
const events=state.replayId?(exchangeKey(selected)?[selected]:[]):clients.slice(0,3);
|
|
46
|
+
const mode=state.replayId?'Replay':state.errors.telemetry||state.connection==='offline'?'Last loaded':'Latest';
|
|
47
|
+
const label=state.replayId?mode:mode+(clients.length?' · '+(clients.length>3?'3 of ':'')+clients.length+' client sessions':'');
|
|
48
|
+
const rows=events.map(event=>{
|
|
49
|
+
const incoming=event.kind==='tool-start';
|
|
50
|
+
const isError=!incoming&&event.outcome!=='success';
|
|
51
|
+
const host=hostName(event.agent),project=exchangeProject(event);
|
|
52
|
+
const client='<span>'+esc(host)+' <small class="muted mono" aria-label="Session suffix '+esc(event.sessionId.slice(-6))+'">'+esc(event.sessionId.slice(-6))+'</small></span>';
|
|
53
|
+
const workspace='<span class="exchange-workspace">Workspace</span>',arrow='<span class="exchange-arrow" aria-hidden="true"></span><span class="sr-only"> to </span>';
|
|
54
|
+
const route='<span class="exchange-route" title="'+esc(exchangeDirection(event)+' · '+project)+'">'+(incoming?client+arrow+workspace:workspace+arrow+client)+'</span>';
|
|
55
|
+
return '<li><button class="exchange-row" type="button" data-event="'+esc(event.id)+'" aria-pressed="'+(state.replayId===event.id)+'" title="'+esc(project+' · '+event.sessionId)+'">'+route+
|
|
56
|
+
'<span class="exchange-summary"><strong>'+esc(event.tool)+'</strong><span class="'+(isError?'red':incoming?'blue':'cyan')+'">'+exchangeLabel(event)+'</span></span><time class="mono muted" datetime="'+esc(event.timestamp)+'">'+esc(time(event.timestamp))+'</time></button></li>';
|
|
57
|
+
}).join('');
|
|
58
|
+
const message=state.replayExpired?'The selected replay record is outside the loaded history.':selected?'This event does not have a measured MCP request or result direction.':state.errors.telemetry?'The activity journal is unavailable.':
|
|
59
|
+
state.connection==='offline'?'The workspace is offline.':!state.live?'Live activity is off.':'Awaiting a measured MCP tool exchange.';
|
|
60
|
+
return '<div class="exchange-head"><h3>MCP exchanges</h3><span class="small muted">'+esc(label)+'</span></div>'+
|
|
61
|
+
(rows?list(rows,'aria-label="Observed MCP client sessions"','exchange-list'):'<p class="exchange-empty small muted">'+esc(message)+'</p>');
|
|
62
|
+
}
|
|
63
|
+
function updateExchanges(){
|
|
64
|
+
const container=$('graph-exchanges');
|
|
65
|
+
if(!container)return;
|
|
66
|
+
const markup=exchangeMarkup();
|
|
67
|
+
if(container.dataset.markup===markup)return;
|
|
68
|
+
const active=container.querySelector('[data-event]:focus')?.dataset.event;
|
|
69
|
+
container.innerHTML=markup;container.dataset.markup=markup;
|
|
70
|
+
if(active)[...container.querySelectorAll('[data-event]')].find(row=>row.dataset.event===active)?.focus({preventScroll:true});
|
|
71
|
+
}
|
|
72
|
+
function pairedExchangeMarkup(event){
|
|
73
|
+
if(!exchangeKey(event))return '';
|
|
74
|
+
const other=observedExchanges().pairs.get(event.id);
|
|
75
|
+
const isRequest=event.kind==='tool-start';
|
|
76
|
+
return '<dl class="facts">'+fact('Boundary',exchangeDirection(event))+fact('Observation',exchangeLabel(event))+fact('Project',exchangeProject(event))+'</dl>'+
|
|
77
|
+
(other?'<button class="btn quiet" type="button" data-event="'+esc(other.id)+'">'+(isRequest?'Inspect paired result':'Inspect paired request')+'</button>':
|
|
78
|
+
'<p class="small muted">'+(isRequest?'A matching result is absent from loaded records.':'A matching request is absent from loaded records.')+'</p>')+
|
|
79
|
+
'<p class="small muted">The journal records the tool boundary. Model consumption is unobserved.</p>';
|
|
80
|
+
}
|
|
81
|
+
`;
|
|
82
|
+
//# sourceMappingURL=brain-hub-exchanges.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"brain-hub-exchanges.js","sourceRoot":"","sources":["../../src/dashboard/brain-hub-exchanges.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,mBAAmB,GAAG,MAAM,CAAC,GAAG,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAgF5C,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"brain-hub-graph.d.ts","sourceRoot":"","sources":["../../src/dashboard/brain-hub-graph.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,eAAe,
|
|
1
|
+
{"version":3,"file":"brain-hub-graph.d.ts","sourceRoot":"","sources":["../../src/dashboard/brain-hub-graph.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,eAAe,QAgV3B,CAAC"}
|