@gotcos/glasses-server 6.99.16 → 6.99.25
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 +137 -0
- package/docs/work-orchestrator.md +20 -0
- package/package.json +1 -1
- package/server/index.ts +23 -1
- package/server/lib/ask-work-plan.ts +116 -0
- package/server/lib/batch-transcript-quality.ts +2 -0
- package/server/lib/drop-store.ts +16 -2
- package/server/lib/meeting-ask-runtime.ts +1 -1
- package/server/lib/meeting-batch-transcribe.ts +40 -1
- package/server/lib/ping-sources.ts +6 -2
- package/server/lib/prep-runtime.ts +915 -0
- package/server/lib/prep-store.ts +226 -0
- package/server/lib/stt-resolver.ts +26 -2
- package/server/lib/transcript-cleanup.ts +11 -2
- package/server/lib/web-control-static.ts +226 -0
- package/server/lib/web-memories-bridge.ts +9 -8
- package/server/lib/web-pet-choice.ts +225 -0
- package/server/lib/web-pet.ts +226 -0
- package/server/lib/work-lens-rounds.ts +29 -4
- package/server/lib/work-orchestrator/runtime.ts +8 -2
- package/server/routes/ask-work-plan.ts +114 -0
- package/server/routes/health.ts +8 -0
- package/server/routes/prep.ts +81 -0
- package/server/routes/web-control.ts +110 -7
- package/server/routes/welcome-context.ts +29 -1
- package/server/routes/work-lens-rounds.ts +19 -5
- package/server/routes/work-orchestrator.ts +57 -0
- package/server/web-control/app.css +24 -5
- package/server/web-control/app.js +646 -108
- package/server/web-control/control.css +1 -1
- package/server/web-control/index.html +27 -13
- package/server/web-control/memories/memory-workspace.js +1 -1
- package/server/web-control/panes/cos-chat.css +26 -0
- package/server/web-control/panes/cos-chat.js +641 -6
- package/server/web-control/panes/meetings.css +45 -2
- package/server/web-control/panes/meetings.js +230 -7
- package/server/web-control/panes/memories.css +291 -0
- package/server/web-control/panes/memories.js +2208 -0
- package/server/web-control/panes/questions.js +59 -21
- package/server/web-control/panes/settings.js +102 -4
- package/server/web-control/panes/today-actions.css +109 -0
- package/server/web-control/panes/today-actions.js +972 -0
- package/server/web-control/panes/work.css +54 -0
- package/server/web-control/panes/work.js +1037 -18
- package/server/web-control/shell.js +6 -2
- package/server/web-control/theme.js +0 -2
- package/shared/meeting-ask.ts +6 -2
- package/shared/prep.ts +317 -0
- package/server/web-control/memories/memories-app.js +0 -1561
- package/server/web-control/memories/memories-theme.css +0 -73
- package/server/web-control/memories/memories.html +0 -72
- package/server/web-control/memories/memory-stewardship.js +0 -63
|
@@ -1,63 +0,0 @@
|
|
|
1
|
-
/* Owner review, source refresh and outcome evidence use the same versioned RPC. */
|
|
2
|
-
(function(){
|
|
3
|
-
'use strict';
|
|
4
|
-
window.createMemoryStewardship=function(api){
|
|
5
|
-
var state={tab:'rules',rows:[],cursor:null,busy:false,error:null,intent:null,serial:0,open:false,draft:{}};
|
|
6
|
-
var esc=api.esc;
|
|
7
|
-
function request(body){return api.call('workspace.request',body);}
|
|
8
|
-
function field(id){var e=document.getElementById(id);return e?e.value.trim():'';}
|
|
9
|
-
function button(label,action,id){return '<button '+(state.busy||(state.intent&&action!=='retry')?'disabled':'')+' data-steward-action="'+action+'" data-steward-id="'+esc(id||'')+'">'+label+'</button>';}
|
|
10
|
-
function saveDraft(){['stewardText','stewardTrigger','stewardExclusions','stewardEvidence','stewardEvaluation'].forEach(function(id){var e=document.getElementById(id);if(e)state.draft[id]=e.value;});}
|
|
11
|
-
function render(){
|
|
12
|
-
if(!state.open)return;saveDraft();
|
|
13
|
-
var body='<p>Evidence and owner decisions govern changes. A saved rule stays in shadow until reviewed and independently checked.</p><div class="actions">'+['rules','sources','outcomes'].map(function(t){return button(t==='rules'?'Standing rules':t==='sources'?'Current sources':'Outcome evidence','tab',t);}).join('')+'</div>';
|
|
14
|
-
if(state.error)body+='<p class="bad">'+esc(state.error)+'</p>'+(state.intent?button('Retry same action','retry'):button('Reload','reload'));
|
|
15
|
-
if(state.busy)body+='<p>Working…</p>';
|
|
16
|
-
if(state.tab==='rules'){
|
|
17
|
-
body+=state.rows.map(function(r){var p=r.payload||{};
|
|
18
|
-
return '<section class="logrow"><h3>'+esc(p.text)+'</h3><p>'+esc(r.state)+' · revision '+esc(r.revision)+' · '+esc(p.review)+'</p><p>Applies when: '+esc(p.trigger||'not specified')+'</p><p>Exclusions: '+esc((p.exclusions||[]).join('; ')||'none recorded')+'</p><small>Evidence: '+esc((p.evidence_refs||[]).join(', '))+'</small><div class="actions">'+(r.state==='candidate'&&p.review!=='approved_by_owner'?button('Review this version','review',r.id):'')+(r.state==='candidate'&&p.review==='approved_by_owner'?button('Check evaluation and activate','activate',r.id):'')+(r.state==='active'?button('Roll back this rule','rollback',r.id):'')+'</div></section>';
|
|
19
|
-
}).join('')||'<p>No standing-rule versions recorded.</p>';
|
|
20
|
-
if(state.cursor)body+=button('Load more','more');
|
|
21
|
-
body+='<div class="settings-block"><h3>Propose a rule</h3><textarea class="editor" id="stewardText" placeholder="The proposed behavior"></textarea><input id="stewardTrigger" placeholder="When this rule applies"><input id="stewardExclusions" placeholder="Exclusions, one per line"><input id="stewardEvidence" placeholder="Source or memory IDs, separated by commas">'+button('Save shadow proposal','propose')+'</div><div class="settings-block"><label>Independent evaluation ID <input id="stewardEvaluation" placeholder="Evaluation artifact ID"></label><p class="muted">Checks must cover this exact revision, trigger, exclusions, counterexamples and regressions. An unverified artifact cannot activate a rule.</p></div>';
|
|
22
|
-
}else if(state.tab==='sources'){
|
|
23
|
-
body+=state.rows.map(function(r){return '<section class="logrow"><h3>'+esc(r.title||r.id)+'</h3><p>Revision '+esc(r.revision)+' · '+esc(r.captured_at)+' · '+esc(r.projection)+'</p><small>'+esc(r.content_hash)+'</small>'+button('Refresh granted document','refresh',r.id)+'</section>';}).join('')||'<p>No current granted source snapshots. Source grants are configured by the instance owner.</p>';
|
|
24
|
-
}else{
|
|
25
|
-
var d=state.outcomes||{};body+='<p>'+esc(d.unique_runs||0)+' observed runs. Evidence threshold '+(d.evidence_gate_met?'met':'not yet met')+'.</p><pre>'+esc(JSON.stringify(d,null,2))+'</pre><p>Retrieval, context inclusion, model-reported application and independently checked outcomes are distinct. Insufficient evidence does not imply improvement.</p>';
|
|
26
|
-
}
|
|
27
|
-
api.modal('Memory stewardship',body);
|
|
28
|
-
Object.keys(state.draft).forEach(function(id){var e=document.getElementById(id);if(e)e.value=state.draft[id];});
|
|
29
|
-
document.querySelectorAll('[data-steward-action]').forEach(function(el){el.addEventListener('click',function(){act(el.dataset.stewardAction,el.dataset.stewardId);});});
|
|
30
|
-
}
|
|
31
|
-
function load(more){
|
|
32
|
-
if(state.busy)return;state.busy=true;state.error=null;var serial=++state.serial;
|
|
33
|
-
var action=state.tab==='rules'?'rule_page':state.tab==='sources'?'source_status':'trace_summary';var body={action:action};
|
|
34
|
-
if(action==='rule_page'){body.limit=25;body.cursor=more?state.cursor:null;}
|
|
35
|
-
render();request(body).then(function(d){if(serial!==state.serial||!state.open)return;state.busy=false;
|
|
36
|
-
if(action==='trace_summary')state.outcomes=d;else{state.rows=more?state.rows.concat(d.items||[]):d.items||[];state.cursor=d.next_cursor||null;}
|
|
37
|
-
render();},function(e){if(serial!==state.serial||!state.open)return;state.busy=false;state.error=e.message;render();});
|
|
38
|
-
}
|
|
39
|
-
function mutate(body){
|
|
40
|
-
if(state.busy||!state.open)return;if(state.intent&&body!==state.intent)return;if(!state.intent)state.intent=JSON.parse(JSON.stringify(body));
|
|
41
|
-
state.busy=true;state.error=null;render();request(state.intent).then(function(d){
|
|
42
|
-
state.busy=false;state.intent=null;if(state.open){api.toast(d.status||'Saved');load(false);}
|
|
43
|
-
},function(e){state.busy=false;state.error=/evaluation_not_found/.test(e.message)?'No passing evaluation was found for this ID. The rule is still in shadow. Check the evaluation result and enter a valid ID.':/evaluation_unreadable/.test(e.message)?'This evaluation could not be verified. The rule is still in shadow. Regenerate the evaluation before retrying.':e.message;
|
|
44
|
-
if(/revision_conflict|idempotency_conflict|invalid_|rule_not_|evaluation_|owner_review_required|not_memory_authority/.test(e.message))state.intent=null;
|
|
45
|
-
render();});
|
|
46
|
-
}
|
|
47
|
-
function act(action,id){
|
|
48
|
-
if(state.busy||!state.open)return;
|
|
49
|
-
if(state.intent&&action!=='retry'){state.error='Retry the pending action before starting another.';render();return;}
|
|
50
|
-
if(action==='retry'){mutate(state.intent);return;}
|
|
51
|
-
if(action==='tab'){if(state.intent){state.error='Resolve the pending action before changing sections.';render();return;}state.tab=id;state.rows=[];state.cursor=null;load(false);return;}
|
|
52
|
-
if(action==='reload'){load(false);return;}if(action==='more'){load(true);return;}
|
|
53
|
-
if(action==='propose'){
|
|
54
|
-
mutate({action:'propose_rule',payload:{lesson_id:'owner_proposal',text:field('stewardText'),trigger:field('stewardTrigger'),exclusions:field('stewardExclusions').split('\n').filter(Boolean),evidence_refs:field('stewardEvidence').split(',').map(function(x){return x.trim();}).filter(Boolean)}});return;
|
|
55
|
-
}
|
|
56
|
-
var row=state.rows.find(function(r){return r.id===id;});if(!row)return;
|
|
57
|
-
var body={action:action==='refresh'?'refresh_source':action==='review'?'review_rule':action==='rollback'?'rollback_rule':'activate_rule',id:id,expected_revision:row.revision,idempotency_key:'steward_'+crypto.randomUUID()};
|
|
58
|
-
if(action==='activate'){body.evaluation_id=field('stewardEvaluation');if(!body.evaluation_id){state.error='Enter the independent evaluation ID for this reviewed revision.';render();return;}}
|
|
59
|
-
mutate(body);
|
|
60
|
-
}
|
|
61
|
-
return {open:function(){state.open=true;if(state.intent){render();return;}load(false);},close:function(){saveDraft();state.open=false;++state.serial;if(!state.intent)state.busy=false;}};
|
|
62
|
-
};
|
|
63
|
-
})();
|