instar 1.3.1607 → 1.3.1609
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/console/console.js +10 -1
- package/dashboard/console/home-model.js +18 -1
- package/dist/commands/server.d.ts.map +1 -1
- package/dist/commands/server.js +4 -1
- package/dist/commands/server.js.map +1 -1
- package/dist/core/resolveMeshPeerUrl.d.ts +7 -0
- package/dist/core/resolveMeshPeerUrl.d.ts.map +1 -1
- package/dist/core/resolveMeshPeerUrl.js +23 -13
- package/dist/core/resolveMeshPeerUrl.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/native/instar-desktop-host +0 -0
- package/dist/server/AgentServer.d.ts +5 -0
- package/dist/server/AgentServer.d.ts.map +1 -1
- package/dist/server/AgentServer.js +20 -11
- package/dist/server/AgentServer.js.map +1 -1
- package/dist/server/DesktopMeshBroker.d.ts +8 -0
- package/dist/server/DesktopMeshBroker.d.ts.map +1 -1
- package/dist/server/DesktopMeshBroker.js +27 -17
- package/dist/server/DesktopMeshBroker.js.map +1 -1
- package/dist/server/desktopPeerRopeFetch.d.ts +56 -0
- package/dist/server/desktopPeerRopeFetch.d.ts.map +1 -0
- package/dist/server/desktopPeerRopeFetch.js +141 -0
- package/dist/server/desktopPeerRopeFetch.js.map +1 -0
- package/dist/server/poolPeerFetch.d.ts +1 -1
- package/dist/server/poolPeerFetch.d.ts.map +1 -1
- package/dist/server/poolPeerFetch.js +2 -2
- package/dist/server/poolPeerFetch.js.map +1 -1
- package/package.json +1 -1
- package/src/data/builtin-manifest.json +3 -3
- 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/upgrades/1.3.1608.md +23 -0
- package/upgrades/1.3.1609.md +20 -0
- package/upgrades/side-effects/console-needs-you-links.eli16.md +7 -0
- package/upgrades/side-effects/console-needs-you-links.md +33 -0
- package/upgrades/side-effects/desktop-peer-rope-fallback.eli16.md +30 -0
- package/upgrades/side-effects/desktop-peer-rope-fallback.md +79 -0
|
@@ -47,6 +47,8 @@ const expanded = new Set(); // cards the operator expanded; kept acr
|
|
|
47
47
|
const openRows = new Set(); // rows the operator opened; kept across refreshes
|
|
48
48
|
let rowSeq = 0;
|
|
49
49
|
let homeChatId = null;
|
|
50
|
+
// The agent-wide Attention topic, where every attention item is posted.
|
|
51
|
+
let attentionTopicId = null;
|
|
50
52
|
let homeRun = null;
|
|
51
53
|
|
|
52
54
|
// ── tiny DOM helpers ──────────────────────────────────────────────────────
|
|
@@ -257,6 +259,8 @@ function actionHref(action) {
|
|
|
257
259
|
return `#/work/promises?${params}`;
|
|
258
260
|
}
|
|
259
261
|
if (action.kind === 'topic') return topicLink(homeChatId, action.topicId);
|
|
262
|
+
if (action.kind === 'href') return action.href || null;
|
|
263
|
+
if (action.kind === 'attention') return attentionTopicId ? topicLink(homeChatId, attentionTopicId) : null;
|
|
260
264
|
return null;
|
|
261
265
|
}
|
|
262
266
|
|
|
@@ -449,7 +453,7 @@ function loadHome() {
|
|
|
449
453
|
? { ...model, retrying: true, line: [model.line, 'Checking again automatically.'].filter(Boolean).join(' ') } : model;
|
|
450
454
|
const refresh = (key) => {
|
|
451
455
|
const names = results.pool ? machineNames(results.pool) : {};
|
|
452
|
-
if ((key === 'attention' || key === 'pool') && results.attention) set('needs', annotate(buildNeeds(results.attention, Date.now(), names), results.attention));
|
|
456
|
+
if ((key === 'attention' || key === 'pool' || key === 'systemTopics') && results.attention) set('needs', annotate(buildNeeds(results.attention, Date.now(), names), results.attention));
|
|
453
457
|
if ((key === 'sessions' || key === 'pool' || key === 'topics') && results.sessions) set('doing', annotate(buildDoing(results.sessions, Date.now(), names, topicNameMap(results.topics)), results.sessions));
|
|
454
458
|
if (key === 'pool' && results.pool) set('running', annotate(buildRunning(results.pool), results.pool));
|
|
455
459
|
if ((key === 'commitments' || key === 'pool') && results.commitments) {
|
|
@@ -472,6 +476,10 @@ function loadHome() {
|
|
|
472
476
|
|| key === 'topics' && ((result.data?.pool?.failed?.length || 0) > 0 || (result.data?.pool?.unresolved?.length || 0) > 0));
|
|
473
477
|
const retryable = partial || (!result.ok && !['not signed in', 'switched off on this agent'].includes(result.reason));
|
|
474
478
|
results[key] = partial ? { ...result, retrying: true } : result;
|
|
479
|
+
if (key === 'systemTopics' && result.ok) {
|
|
480
|
+
const t = Number(result.data?.topics?.attention);
|
|
481
|
+
attentionTopicId = Number.isFinite(t) && t > 1 ? t : null;
|
|
482
|
+
}
|
|
475
483
|
if (key === 'pool' && result.ok) {
|
|
476
484
|
const self = (result.data?.machines || []).find((m) => m.isSelf || m.machineId === result.data.selfMachineId);
|
|
477
485
|
homeChatId = self?.servesChannels?.telegram?.chatIds?.[0] || null;
|
|
@@ -489,6 +497,7 @@ function loadHome() {
|
|
|
489
497
|
// A slow source cannot block another card or start overlapping refreshes.
|
|
490
498
|
read('pool', '/pool', POOL_TIMEOUT_MS);
|
|
491
499
|
read('attention', '/attention?scope=pool', POOL_TIMEOUT_MS);
|
|
500
|
+
read('systemTopics', '/telegram/system-topics');
|
|
492
501
|
read('sessions', '/sessions?scope=pool', POOL_TIMEOUT_MS);
|
|
493
502
|
read('topics', '/telegram/topics?scope=pool', POOL_TIMEOUT_MS);
|
|
494
503
|
read('commitments', '/commitments?scope=mesh', COMMITMENTS_TIMEOUT_MS);
|
|
@@ -115,6 +115,23 @@ export function needsOperator(item) {
|
|
|
115
115
|
return /decision|approval|review|sign-?in|relogin/i.test(cat);
|
|
116
116
|
}
|
|
117
117
|
|
|
118
|
+
/**
|
|
119
|
+
* Where the operator acts on an item. Every row in "needs you" gets one: its
|
|
120
|
+
* own conversation; the Desktop page for that machine; the Accounts page for a
|
|
121
|
+
* sign-in; otherwise the Attention topic, where the item was posted and can be
|
|
122
|
+
* answered.
|
|
123
|
+
*/
|
|
124
|
+
export function needAction(item) {
|
|
125
|
+
if (item && item.topicId != null && Number.isFinite(Number(item.topicId))) return { kind: 'topic', topicId: Number(item.topicId) };
|
|
126
|
+
const cat = String((item && item.category) || '');
|
|
127
|
+
if (/^desktop$/i.test(cat)) {
|
|
128
|
+
const q = item.machineId ? `?machineId=${encodeURIComponent(item.machineId)}` : '';
|
|
129
|
+
return { kind: 'href', href: `/dashboard/desktop.html${q}` };
|
|
130
|
+
}
|
|
131
|
+
if (/sign-?in|relogin/i.test(cat)) return { kind: 'href', href: '#/capacity/accounts' };
|
|
132
|
+
return { kind: 'attention' };
|
|
133
|
+
}
|
|
134
|
+
|
|
118
135
|
export const STALE_DAYS = 14;
|
|
119
136
|
const DAY = 86400000;
|
|
120
137
|
|
|
@@ -154,7 +171,7 @@ export function buildNeeds(res, now = Date.now(), names = {}) {
|
|
|
154
171
|
tone: stale ? 'unknown' : (top.priority === 'URGENT' ? 'bad' : 'attn'),
|
|
155
172
|
detail: top.description || top.body || '',
|
|
156
173
|
expandable: true,
|
|
157
|
-
action:
|
|
174
|
+
action: needAction(top),
|
|
158
175
|
};
|
|
159
176
|
}).sort((a, b) => Number(a.stale) - Number(b.stale) || a.prio - b.prio || b.last - a.last);
|
|
160
177
|
const current = all.filter((g) => !g.stale);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/commands/server.ts"],"names":[],"mappings":"AAuHA,OAAO,EAAE,cAAc,EAAwD,MAAM,2BAA2B,CAAC;AAgBjH,OAAO,EAAE,eAAe,EAAiC,MAAM,iCAAiC,CAAC;AA6BjG,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAGvD,OAAO,EAAE,YAAY,EAAE,MAAM,+BAA+B,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
|
@@ -178,7 +178,7 @@ import { isSlackSessionKey, reconstructSlackMessage } from '../core/SlackForward
|
|
|
178
178
|
import { formatForwardedTopicContext } from '../core/ForwardedTopicContext.js';
|
|
179
179
|
import { resolveAdvertisedMeshUrl, advertiseSelfMeshUrl, detectTailscaleIp, pickPrimaryLanIp, computeSelfMeshEndpoints, advertiseSelfMeshEndpoints, resolveMeshBindHost } from '../core/MeshUrlAdvertiser.js';
|
|
180
180
|
import { PeerEndpointResolver } from '../core/PeerEndpointResolver.js';
|
|
181
|
-
import { resolveMeshPeerUrl, resolveMeshPeerPreferredSelection, } from '../core/resolveMeshPeerUrl.js';
|
|
181
|
+
import { resolveMeshPeerUrl, resolveMeshPeerPreferredSelection, resolveMeshPeerCandidates, } from '../core/resolveMeshPeerUrl.js';
|
|
182
182
|
import { RelayRefusedError, isRelayRefusal, relayOutbound } from '../core/TelegramRelay.js';
|
|
183
183
|
import { GitSyncManager } from '../core/GitSync.js';
|
|
184
184
|
import { RegistrySyncDebouncer } from '../core/RegistrySyncDebouncer.js';
|
|
@@ -25790,6 +25790,9 @@ export async function startServer(options) {
|
|
|
25790
25790
|
// Which ropes the guard skipped on the way to this one — so a
|
|
25791
25791
|
// caller can report them instead of them vanishing.
|
|
25792
25792
|
ropeRefusals: selection?.refusals ?? [],
|
|
25793
|
+
// Every rope, in order: remote-desktop calls apply their own
|
|
25794
|
+
// gate and fall back to the next rope that carries traffic.
|
|
25795
|
+
ropes: resolveMeshPeerCandidates(meshResolver, m.machineId, entry?.endpoints, entry?.lastKnownUrl),
|
|
25793
25796
|
};
|
|
25794
25797
|
})
|
|
25795
25798
|
.filter((m) => m.url != null && m.kind != null);
|