instar 1.3.1305 → 1.3.1307
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/feedback-readiness-authority.js +155 -0
- package/dashboard/index.html +34 -0
- package/dist/commands/server.d.ts.map +1 -1
- package/dist/commands/server.js +1 -0
- package/dist/commands/server.js.map +1 -1
- package/dist/core/IntelligenceRouter.d.ts +19 -0
- package/dist/core/IntelligenceRouter.d.ts.map +1 -1
- package/dist/core/IntelligenceRouter.js +37 -0
- package/dist/core/IntelligenceRouter.js.map +1 -1
- package/dist/core/PostUpdateMigrator.d.ts.map +1 -1
- package/dist/core/PostUpdateMigrator.js +10 -0
- package/dist/core/PostUpdateMigrator.js.map +1 -1
- package/dist/core/SessionManager.d.ts +5 -0
- package/dist/core/SessionManager.d.ts.map +1 -1
- package/dist/core/SessionManager.js +18 -1
- package/dist/core/SessionManager.js.map +1 -1
- package/dist/data/standards-guard-index.json +1 -1
- package/dist/data/standards-guard-index.meta.json +2 -2
- package/dist/data/standards-registry.meta.json +1 -1
- package/dist/feedback-factory/drain/readinessAuthorityProposal.d.ts +70 -0
- package/dist/feedback-factory/drain/readinessAuthorityProposal.d.ts.map +1 -0
- package/dist/feedback-factory/drain/readinessAuthorityProposal.js +93 -0
- package/dist/feedback-factory/drain/readinessAuthorityProposal.js.map +1 -0
- package/dist/monitoring/ResumeQueue.d.ts +8 -0
- package/dist/monitoring/ResumeQueue.d.ts.map +1 -1
- package/dist/monitoring/ResumeQueue.js +8 -1
- package/dist/monitoring/ResumeQueue.js.map +1 -1
- package/dist/scaffold/templates.d.ts.map +1 -1
- package/dist/scaffold/templates.js +4 -0
- package/dist/scaffold/templates.js.map +1 -1
- package/dist/server/AgentServer.d.ts.map +1 -1
- package/dist/server/AgentServer.js +3 -1
- package/dist/server/AgentServer.js.map +1 -1
- package/dist/server/routes.d.ts +5 -0
- package/dist/server/routes.d.ts.map +1 -1
- package/dist/server/routes.js +44 -1
- package/dist/server/routes.js.map +1 -1
- package/package.json +1 -1
- package/src/data/builtin-manifest.json +65 -65
- package/src/data/standards-guard-index.json +1 -1
- package/src/data/standards-guard-index.meta.json +2 -2
- package/src/data/standards-registry.meta.json +1 -1
- package/src/scaffold/templates.ts +4 -0
- package/upgrades/1.3.1307.md +172 -0
- package/upgrades/side-effects/age-limit-coordinator-r3.md +201 -0
- package/upgrades/side-effects/feedback-readiness-authority-card.md +105 -0
- package/upgrades/1.3.1305.md +0 -48
|
@@ -0,0 +1,155 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Feedback Drain tab — the operator's approve/revoke card for the readiness authority
|
|
3
|
+
* (docs/specs/feedback-factory-operating-drain.md §2, "operator-rooted").
|
|
4
|
+
*
|
|
5
|
+
* The drain refuses every tick until an operator registers which model may decide
|
|
6
|
+
* which feedback reports become work items. That registration was PIN-only with no
|
|
7
|
+
* screen. This card is the screen: the server computes every technical field
|
|
8
|
+
* (GET /feedback-factory/readiness-authorities/proposal); the operator sees one plain
|
|
9
|
+
* sentence, may adjust the batch size and daily cap, and approves with the PIN.
|
|
10
|
+
* The POST sends `useProposal: true`, so the server — not this page — fills in the
|
|
11
|
+
* binding fields. Every dynamic value is written with textContent, never innerHTML.
|
|
12
|
+
*/
|
|
13
|
+
|
|
14
|
+
function el(doc, tag, cls, text) {
|
|
15
|
+
const n = doc.createElement(tag);
|
|
16
|
+
if (cls) n.className = cls;
|
|
17
|
+
if (text !== undefined && text !== null) n.textContent = String(text);
|
|
18
|
+
return n;
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
/** One line on where the authority stands, in the operator's words. */
|
|
22
|
+
export function statusLine(p) {
|
|
23
|
+
const s = (p && p.status) || 'none';
|
|
24
|
+
const cur = (p && p.current) || null;
|
|
25
|
+
if (s === 'none') return 'Not set up yet — the feedback drain is waiting for your approval before it sorts anything.';
|
|
26
|
+
if (s === 'revoked') return `Revoked (version ${cur ? cur.generation : '?'}). The drain is not sorting feedback.`;
|
|
27
|
+
if (s === 'proposal-only') {
|
|
28
|
+
return `Paused by a safety brake (version ${cur ? cur.generation : '?'}) — for example the daily cap was reached or the model answer did not check out. Approve again to resume.`;
|
|
29
|
+
}
|
|
30
|
+
if (cur && cur.matchesProposal === false) {
|
|
31
|
+
return `Active (version ${cur.generation}), but out of date for this machine — approve to update it.`;
|
|
32
|
+
}
|
|
33
|
+
return `Active (version ${cur ? cur.generation : '?'}): up to ${cur ? cur.maxBatch : '?'} reports per batch, at most $${cur ? cur.maxDailySpendUsd : '?'} per day.`;
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
/** A unique, bounded reference recorded in the authority's audit chain. */
|
|
37
|
+
export function newDecisionRef(now = new Date(), rand = Math.random) {
|
|
38
|
+
const suffix = Math.floor(rand() * 0xffffffff).toString(16).padStart(8, '0');
|
|
39
|
+
return `dashboard:${now.toISOString().replace(/[^0-9A-Za-z]/g, '')}:${suffix}`;
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
/** The POST body for an approve (create/replace/restore) or revoke. */
|
|
43
|
+
export function authorityRequest(action, envelope, pin, operatorDecisionRef) {
|
|
44
|
+
const body = { action, pin, operatorDecisionRef };
|
|
45
|
+
if (action === 'create' || action === 'replace') {
|
|
46
|
+
body.useProposal = true;
|
|
47
|
+
// An emptied field means "use the default", never 0.
|
|
48
|
+
for (const k of ['maxBatch', 'maxTokens', 'maxDailySpendUsd']) {
|
|
49
|
+
const v = String(envelope[k] ?? '').trim();
|
|
50
|
+
if (v !== '') body[k] = Number(v);
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
return body;
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
/** What to show after the server answers a mutation. */
|
|
57
|
+
export function resultNote(ok, data) {
|
|
58
|
+
if (ok) {
|
|
59
|
+
return data && data.revoked
|
|
60
|
+
? `Revoked. The drain stops sorting feedback from its next run (version ${data.generation}).`
|
|
61
|
+
: `Approved (version ${data ? data.generation : '?'}). The next drain run will start sorting feedback.`;
|
|
62
|
+
}
|
|
63
|
+
const m = String((data && data.error) || '');
|
|
64
|
+
if (/incorrect pin|pin required/i.test(m)) return 'That PIN was not accepted. Nothing has changed.';
|
|
65
|
+
if (/too many/i.test(m)) return 'Too many PIN attempts — wait a few minutes. Nothing has changed.';
|
|
66
|
+
return `Not applied: ${m || 'the server refused'}. Nothing has changed.`;
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
function numberField(doc, label, id, value, hint) {
|
|
70
|
+
const wrap = el(doc, 'label', 'spend-arm-field');
|
|
71
|
+
wrap.appendChild(el(doc, 'span', null, label));
|
|
72
|
+
const input = el(doc, 'input', 'spend-arm-input');
|
|
73
|
+
input.type = 'number';
|
|
74
|
+
input.inputMode = 'decimal';
|
|
75
|
+
input.id = id;
|
|
76
|
+
input.value = String(value);
|
|
77
|
+
wrap.appendChild(input);
|
|
78
|
+
if (hint) wrap.appendChild(el(doc, 'span', 'spend-arm-hint', hint));
|
|
79
|
+
return { wrap, input };
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
/**
|
|
83
|
+
* Render the card into `target`. `handlers.submit(action, envelope, pin)` performs the
|
|
84
|
+
* POST and resolves to a note string; `handlers.preview(envelope)` re-reads the proposal
|
|
85
|
+
* so the plain sentence follows the operator's edits.
|
|
86
|
+
*/
|
|
87
|
+
export function renderAuthorityCard(doc, target, p, handlers = {}) {
|
|
88
|
+
if (!target) return;
|
|
89
|
+
target.replaceChildren();
|
|
90
|
+
target.appendChild(el(doc, 'h3', 'ph-h', 'Who decides which feedback becomes work'));
|
|
91
|
+
target.appendChild(el(doc, 'div', 'ph-detail-body', statusLine(p)));
|
|
92
|
+
if (!p) return;
|
|
93
|
+
|
|
94
|
+
const env = (p.proposal) || { maxBatch: 50, maxTokens: 1200, maxDailySpendUsd: 5 };
|
|
95
|
+
const summary = el(doc, 'div', 'spend-arm-plan-text', p.summary || '');
|
|
96
|
+
target.appendChild(summary);
|
|
97
|
+
for (const b of p.blockers || []) target.appendChild(el(doc, 'div', 'spend-arm-note', b));
|
|
98
|
+
|
|
99
|
+
const batch = numberField(doc, 'Reports per batch', 'fraMaxBatch', env.maxBatch, '1 to 50');
|
|
100
|
+
const spend = numberField(doc, 'Daily spend cap (USD)', 'fraMaxDailySpendUsd', env.maxDailySpendUsd, 'The drain stops for the day at this amount.');
|
|
101
|
+
const tokens = numberField(doc, 'Answer length limit (tokens)', 'fraMaxTokens', env.maxTokens, 'Leave as is unless asked.');
|
|
102
|
+
const details = el(doc, 'details', 'ph-detail');
|
|
103
|
+
details.appendChild(el(doc, 'summary', 'ph-detail-summary', 'Adjust limits'));
|
|
104
|
+
for (const f of [batch, spend, tokens]) details.appendChild(f.wrap);
|
|
105
|
+
if (p.proposal) {
|
|
106
|
+
details.appendChild(el(doc, 'div', 'spend-arm-hint',
|
|
107
|
+
`Bound to: agent ${p.proposal.agentId}; machine ${p.proposal.ownerMachineId} (epoch ${p.proposal.ownerEpoch}); ` +
|
|
108
|
+
`model ${p.proposal.modelFamily} via ${p.proposal.provider}.`));
|
|
109
|
+
}
|
|
110
|
+
target.appendChild(details);
|
|
111
|
+
const envelope = () => ({ maxBatch: batch.input.value, maxTokens: tokens.input.value, maxDailySpendUsd: spend.input.value });
|
|
112
|
+
if (typeof handlers.preview === 'function') {
|
|
113
|
+
for (const f of [batch, spend, tokens]) {
|
|
114
|
+
f.input.addEventListener('change', async () => {
|
|
115
|
+
const next = await handlers.preview(envelope());
|
|
116
|
+
if (next) {
|
|
117
|
+
summary.textContent = next.summary || '';
|
|
118
|
+
}
|
|
119
|
+
});
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
const pin = el(doc, 'input', 'spend-arm-pin');
|
|
124
|
+
pin.type = 'password';
|
|
125
|
+
pin.inputMode = 'numeric';
|
|
126
|
+
pin.id = 'fraPin';
|
|
127
|
+
pin.placeholder = 'Dashboard PIN';
|
|
128
|
+
pin.autocomplete = 'off';
|
|
129
|
+
target.appendChild(pin);
|
|
130
|
+
|
|
131
|
+
const note = el(doc, 'div', 'spend-arm-status');
|
|
132
|
+
note.id = 'fraNote';
|
|
133
|
+
note.setAttribute('aria-live', 'polite');
|
|
134
|
+
const btns = el(doc, 'div', 'spend-arm-btns');
|
|
135
|
+
const add = (label, action, cls) => {
|
|
136
|
+
const b = el(doc, 'button', `spend-arm-btn ${cls || ''}`.trim(), label);
|
|
137
|
+
b.setAttribute('data-fra-action', action);
|
|
138
|
+
b.addEventListener('click', async () => {
|
|
139
|
+
if (typeof handlers.submit !== 'function') return;
|
|
140
|
+
note.textContent = 'Working…';
|
|
141
|
+
note.textContent = await handlers.submit(action, envelope(), (pin.value || '').trim());
|
|
142
|
+
});
|
|
143
|
+
btns.appendChild(b);
|
|
144
|
+
};
|
|
145
|
+
if (p.approveAction === 'restore') {
|
|
146
|
+
target.appendChild(el(doc, 'div', 'spend-arm-note', 'Restore brings back the last approved limits. To change them, restore first, then save new limits.'));
|
|
147
|
+
add('Approve (restore)', 'restore', 'spend-arm-btn-commit');
|
|
148
|
+
}
|
|
149
|
+
else if (p.approveAction) add('Approve', p.approveAction, 'spend-arm-btn-commit');
|
|
150
|
+
// Already active and current: the only thing left to approve is a change of limits.
|
|
151
|
+
else if (p.status === 'active' && (p.blockers || []).length === 0) add('Save new limits', 'replace', 'spend-arm-btn-commit');
|
|
152
|
+
if (p.status === 'active' || p.status === 'proposal-only') add('Revoke', 'revoke');
|
|
153
|
+
target.appendChild(btns);
|
|
154
|
+
target.appendChild(note);
|
|
155
|
+
}
|
package/dashboard/index.html
CHANGED
|
@@ -3670,6 +3670,7 @@
|
|
|
3670
3670
|
<section class="ph-section"><h3 class="ph-h">Backlog</h3><div id="fdBacklog" class="ph-detail-body"></div></section>
|
|
3671
3671
|
<section class="ph-section"><h3 class="ph-h">Progress</h3><div id="fdProgress" class="ph-detail-body"></div></section>
|
|
3672
3672
|
<section class="ph-section"><h3 class="ph-h">Source integrity</h3><div id="fdSource" class="ph-detail-body"></div></section>
|
|
3673
|
+
<section id="fdAuthority" class="ph-section spend-arm-root"></section>
|
|
3673
3674
|
</div>
|
|
3674
3675
|
|
|
3675
3676
|
<!-- subscriptions tab (Subscription & Auth Standard P2.2 — live quota + pending logins) -->
|
|
@@ -9985,8 +9986,41 @@
|
|
|
9985
9986
|
fdText('fdStamp', '');
|
|
9986
9987
|
}
|
|
9987
9988
|
}
|
|
9989
|
+
// Readiness authority approve/revoke card. Rendered on tab open and after each
|
|
9990
|
+
// action — NOT on the 15s poll, which would wipe a PIN mid-entry.
|
|
9991
|
+
let __fraModule = null;
|
|
9992
|
+
async function loadFeedbackAuthority() {
|
|
9993
|
+
const root = document.getElementById('fdAuthority');
|
|
9994
|
+
if (!root) return;
|
|
9995
|
+
if (!__fraModule) {
|
|
9996
|
+
try { __fraModule = await import('/dashboard/feedback-readiness-authority.js'); }
|
|
9997
|
+
catch (e) { console.error('[feedback-readiness-authority] module load failed', e); root.textContent = 'Loading the approval card failed — refresh to retry.'; return; }
|
|
9998
|
+
}
|
|
9999
|
+
const M = __fraModule;
|
|
10000
|
+
const readProposal = async (envelope) => {
|
|
10001
|
+
const qs = envelope ? '?' + new URLSearchParams(envelope).toString() : '';
|
|
10002
|
+
try { return await apiFetch('/feedback-factory/readiness-authorities/proposal' + qs); } catch { return null; }
|
|
10003
|
+
};
|
|
10004
|
+
const proposal = await readProposal();
|
|
10005
|
+
if (!proposal) { root.textContent = 'The readiness approval is unavailable while the drain is not live on this machine.'; return; }
|
|
10006
|
+
M.renderAuthorityCard(document, root, proposal, {
|
|
10007
|
+
preview: readProposal,
|
|
10008
|
+
submit: async (action, envelope, pin) => {
|
|
10009
|
+
const response = await fetch('/feedback-factory/readiness-authorities', {
|
|
10010
|
+
method: 'POST',
|
|
10011
|
+
headers: { 'Authorization': `Bearer ${token}`, 'Content-Type': 'application/json', 'X-Instar-Request': '1' },
|
|
10012
|
+
body: JSON.stringify(M.authorityRequest(action, envelope, pin, M.newDecisionRef())),
|
|
10013
|
+
});
|
|
10014
|
+
const data = await response.json().catch(() => ({}));
|
|
10015
|
+
const note = M.resultNote(response.ok, data);
|
|
10016
|
+
if (response.ok) { await loadFeedbackAuthority(); const n = document.getElementById('fraNote'); if (n) n.textContent = note; }
|
|
10017
|
+
return note;
|
|
10018
|
+
},
|
|
10019
|
+
});
|
|
10020
|
+
}
|
|
9988
10021
|
function startFeedbackDrain() {
|
|
9989
10022
|
stopFeedbackDrain();
|
|
10023
|
+
void loadFeedbackAuthority();
|
|
9990
10024
|
void loadFeedbackDrain();
|
|
9991
10025
|
__fdTimer = setInterval(() => { void loadFeedbackDrain(); }, 15000);
|
|
9992
10026
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/commands/server.ts"],"names":[],"mappings":"AAsGA,OAAO,EAAE,cAAc,EAAwD,MAAM,2BAA2B,CAAC;AAUjH,OAAO,EAAE,eAAe,EAAiC,MAAM,iCAAiC,CAAC;AA4BjG,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAGvD,OAAO,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAmI7D,OAAO,KAAK,EAAW,oBAAoB,EAAe,YAAY,EAAE,MAAM,kBAAkB,CAAC;AACjG,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAkFtD;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,yBAAyB,CACvC,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,MAAM,EACf,gBAAgB,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAC1C,OAAO,CAUT;AA0ID,UAAU,YAAY;IACpB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb;2DACuD;IACvD,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAoDD,+EAA+E;AAC/E,wBAAgB,qCAAqC,CACnD,SAAS,EAAE,IAAI,CAAC,OAAO,2BAA2B,EAAE,cAAc,EAAE,QAAQ,CAAC,GAAG,IAAI,EACpF,OAAO,EAAE,MAAM,GACd,IAAI,CAEN;AAsrDD;;;;;;;;GAQG;AACH,wBAAgB,wBAAwB,CACtC,MAAM,EAAE,YAAY,EACpB,YAAY,EAAE,oBAAoB,GAAG,IAAI,GACxC;IACD,YAAY,EAAE,oBAAoB,GAAG,IAAI,CAAC;IAC1C,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,OAAO,CAAC;IAChB,aAAa,EAAE,MAAM,CAAC;IACtB,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,MAAM,GAAG,UAAU,GAAG,SAAS,CAAC;IAC3C,QAAQ,EAAE,MAAM,CAAC;CAClB,CAqBA;AAED,wBAAgB,mBAAmB,CACjC,QAAQ,EAAE,eAAe,EACzB,cAAc,EAAE,cAAc,EAC9B,YAAY,CAAC,EAAE,YAAY,EAC3B,WAAW,CAAC,EAAE,WAAW,EACzB,WAAW,CAAC,EAAE,WAAW,EACzB,iBAAiB,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,CAAC,EAGvE,UAAU,CAAC,EAAE,MAAM,OAAO,8BAA8B,EAAE,WAAW,GAAG,IAAI,EAK5E,qBAAqB,CAAC,EAAE,MAAM,OAAO,gCAAgC,EAAE,kBAAkB,GAAG,IAAI,EAKhG,mBAAmB,CAAC,EAAE,MAAM,MAAM,GAAG,IAAI,GAAG,SAAS,EAQrD,oBAAoB,CAAC,EAAE,MAAM;IAC3B,YAAY,EAAE,OAAO,kBAAkB,EAAE,oBAAoB,GAAG,IAAI,CAAC;IACrE,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,OAAO,CAAC;IAChB,aAAa,EAAE,MAAM,CAAC;IACtB,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,MAAM,GAAG,UAAU,GAAG,SAAS,CAAC;IAC3C,QAAQ,EAAE,MAAM,CAAC;CAClB,GAAG,IAAI,GACP,IAAI,CA8yBN;AAgmBD,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":"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"}
|
package/dist/commands/server.js
CHANGED
|
@@ -10288,6 +10288,7 @@ export async function startServer(options) {
|
|
|
10288
10288
|
disposition: e.disposition ?? 'terminal',
|
|
10289
10289
|
origin: e.origin ?? 'autonomous',
|
|
10290
10290
|
workEvidence: candidateWorkEvidence,
|
|
10291
|
+
...(e.seenWorkingPastAgeLimit ? { seenWorkingPastAgeLimit: true } : {}),
|
|
10291
10292
|
});
|
|
10292
10293
|
}
|
|
10293
10294
|
}
|