instar 1.3.313 → 1.3.315
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/index.html +44 -12
- package/dashboard/mandates.js +104 -16
- package/dist/core/localhost-link.d.ts +31 -0
- package/dist/core/localhost-link.d.ts.map +1 -0
- package/dist/core/localhost-link.js +36 -0
- package/dist/core/localhost-link.js.map +1 -0
- package/dist/server/routes.d.ts.map +1 -1
- package/dist/server/routes.js +24 -0
- package/dist/server/routes.js.map +1 -1
- package/package.json +1 -1
- package/src/data/builtin-manifest.json +46 -46
- package/upgrades/1.3.314.md +89 -0
- package/upgrades/1.3.315.md +41 -0
- package/upgrades/localhost-link-guard.eli16.md +32 -0
- package/upgrades/side-effects/localhost-link-guard.md +58 -0
- package/upgrades/side-effects/tunnelmanager-suite-rearm.md +53 -0
package/dashboard/index.html
CHANGED
|
@@ -808,11 +808,16 @@
|
|
|
808
808
|
.mnd-btn-danger { color: #f85149; }
|
|
809
809
|
.mnd-dead-note { font-size: 13px; color: var(--text-dim); font-style: italic; }
|
|
810
810
|
.mnd-notice { min-height: 20px; font-size: 14px; color: #3fb950; }
|
|
811
|
-
.mnd-
|
|
812
|
-
.mnd-issue-form { display: flex; flex-direction: column; gap:
|
|
813
|
-
.mnd-issue-form
|
|
814
|
-
.mnd-issue-form
|
|
815
|
-
.mnd-
|
|
811
|
+
.mnd-issue-form { display: flex; flex-direction: column; gap: 14px; max-width: 640px; padding: 12px 0; }
|
|
812
|
+
.mnd-issue-form label { display: flex; flex-direction: column; gap: 4px; font-size: 15px; color: var(--text-bright); }
|
|
813
|
+
.mnd-issue-form input, .mnd-issue-form textarea { font: inherit; padding: 8px 10px; border-radius: 6px; }
|
|
814
|
+
.mnd-issue-form textarea { font-family: ui-monospace, monospace; font-size: 13px; }
|
|
815
|
+
.mnd-hint { font-size: 13px; color: var(--text-dim); font-weight: 400; line-height: 1.45; }
|
|
816
|
+
.mnd-prefilled { font-size: 12px; color: var(--ph-accent, #4ade80); }
|
|
817
|
+
/* Issue-form feedback: PERSISTENT, not a transient toast. A failed issuance
|
|
818
|
+
the operator never sees (the 2026-06-05 incident) is worse than no form. */
|
|
819
|
+
.mnd-notice-err { border: 1px solid #b91c1c; background: rgba(185, 28, 28, 0.12); color: #fca5a5; padding: 12px 14px; border-radius: 8px; font-size: 15px; line-height: 1.5; white-space: pre-line; }
|
|
820
|
+
.mnd-notice-ok { border: 1px solid #15803d; background: rgba(21, 128, 61, 0.12); color: #86efac; padding: 12px 14px; border-radius: 8px; font-size: 17px; font-weight: 600; line-height: 1.5; }
|
|
816
821
|
.mnd-table { width: 100%; border-collapse: collapse; font-size: 13px; }
|
|
817
822
|
.mnd-table th, .mnd-table td { text-align: left; padding: 6px 8px; border-bottom: 1px solid var(--border); vertical-align: top; }
|
|
818
823
|
.mnd-reason-cell { color: var(--text-dim); max-width: 420px; }
|
|
@@ -826,7 +831,13 @@
|
|
|
826
831
|
maturation "you're here" marker. */
|
|
827
832
|
.ph-root {
|
|
828
833
|
--ph-accent: #4ade80;
|
|
834
|
+
/* These panels are declared after </main>, making them direct .app grid
|
|
835
|
+
children. switchTab() hides the sidebar too, so without explicit
|
|
836
|
+
placement the lone visible panel auto-places into the 280px sidebar
|
|
837
|
+
COLUMN — the "squashed to the side" bug. Span the full grid. */
|
|
838
|
+
grid-column: 1 / -1;
|
|
829
839
|
max-width: 760px;
|
|
840
|
+
width: 100%;
|
|
830
841
|
font-size: 18px;
|
|
831
842
|
line-height: 1.55;
|
|
832
843
|
color: var(--text-bright);
|
|
@@ -3242,15 +3253,34 @@
|
|
|
3242
3253
|
<h3 class="ph-h">Issued mandates</h3>
|
|
3243
3254
|
<div id="mndList"></div>
|
|
3244
3255
|
</section>
|
|
3245
|
-
<details class="ph-detail">
|
|
3256
|
+
<details class="ph-detail" id="mndIssueDetails">
|
|
3246
3257
|
<summary class="ph-detail-summary">Issue a new mandate (PIN required)</summary>
|
|
3247
3258
|
<div class="mnd-issue-form">
|
|
3248
|
-
<label>
|
|
3249
|
-
|
|
3250
|
-
|
|
3251
|
-
|
|
3252
|
-
<label>
|
|
3253
|
-
|
|
3259
|
+
<label>What is this permission slip for?
|
|
3260
|
+
<span class="mnd-hint">A short name for the project the two agents may work on together, e.g. feedback-migration.</span>
|
|
3261
|
+
<input type="text" id="mndIssueScope" value="feedback-migration" />
|
|
3262
|
+
</label>
|
|
3263
|
+
<label>This agent (Agent A)
|
|
3264
|
+
<span class="mnd-hint">Pre-filled with this agent's own routing fingerprint — you normally don't need to touch it.</span>
|
|
3265
|
+
<input type="text" id="mndIssueAgentA" placeholder="filling in automatically…" />
|
|
3266
|
+
<span class="mnd-prefilled" id="mndAgentAPrefillNote"></span>
|
|
3267
|
+
</label>
|
|
3268
|
+
<label>The other agent (Agent B)
|
|
3269
|
+
<span class="mnd-hint">The peer agent's routing fingerprint — find it on that agent's Threadline tab, or ask the agent "what's your routing fingerprint?".</span>
|
|
3270
|
+
<input type="text" id="mndIssueAgentB" placeholder="e.g. 8c7928aa9f04fbda947172a2f9b2d81a" />
|
|
3271
|
+
</label>
|
|
3272
|
+
<label>What exactly may they do? (the authorities)
|
|
3273
|
+
<span class="mnd-hint">Each entry is one delegated action with its bounds. The template below covers the standard credential-handoff + code-review pair — edit only if you know you need different bounds.</span>
|
|
3274
|
+
<textarea id="mndIssueAuthorities" rows="9" spellcheck="false"></textarea>
|
|
3275
|
+
</label>
|
|
3276
|
+
<label>When does it expire?
|
|
3277
|
+
<span class="mnd-hint">Pre-filled to one week from now. Every mandate expires; expired means denied.</span>
|
|
3278
|
+
<input type="datetime-local" id="mndIssueExpires" />
|
|
3279
|
+
</label>
|
|
3280
|
+
<label>Your dashboard PIN
|
|
3281
|
+
<span class="mnd-hint">Issuing is a human action — only your PIN can do it. Sent once, never stored.</span>
|
|
3282
|
+
<input type="password" id="mndIssuePin" autocomplete="off" placeholder="typed at issuance, never stored" />
|
|
3283
|
+
</label>
|
|
3254
3284
|
<button id="mndIssueBtn" class="mnd-btn">Issue mandate</button>
|
|
3255
3285
|
</div>
|
|
3256
3286
|
</details>
|
|
@@ -8565,6 +8595,8 @@
|
|
|
8565
8595
|
issueExpires: document.getElementById('mndIssueExpires'),
|
|
8566
8596
|
issuePin: document.getElementById('mndIssuePin'),
|
|
8567
8597
|
issueBtn: document.getElementById('mndIssueBtn'),
|
|
8598
|
+
issueDetails: document.getElementById('mndIssueDetails'),
|
|
8599
|
+
agentAPrefillNote: document.getElementById('mndAgentAPrefillNote'),
|
|
8568
8600
|
};
|
|
8569
8601
|
const fetchImpl = (url, opts = {}) => fetch(url, {
|
|
8570
8602
|
...opts,
|
package/dashboard/mandates.js
CHANGED
|
@@ -106,13 +106,30 @@ export function createController({ doc, els, fetchImpl }) {
|
|
|
106
106
|
return { status: res.status, body };
|
|
107
107
|
}
|
|
108
108
|
|
|
109
|
-
|
|
109
|
+
// kind: 'error' | 'success' are PERSISTENT (cleared only by the next note or
|
|
110
|
+
// an explicit clearNote) — a transient toast the operator never sees is how
|
|
111
|
+
// the 2026-06-05 silent-issuance-failure happened. 'info' stays transient.
|
|
112
|
+
function note(msg, kind) {
|
|
110
113
|
if (!els.notice) return;
|
|
114
|
+
const isError = kind === true || kind === 'error'; // boolean kept for back-compat
|
|
111
115
|
els.notice.textContent = msg;
|
|
112
|
-
els.notice.className = isError ? 'mnd-notice mnd-notice-err'
|
|
113
|
-
|
|
116
|
+
els.notice.className = isError ? 'mnd-notice mnd-notice-err'
|
|
117
|
+
: kind === 'success' ? 'mnd-notice mnd-notice-ok'
|
|
118
|
+
: 'mnd-notice';
|
|
119
|
+
if (msg && !isError && kind !== 'success') {
|
|
120
|
+
setTimeout(() => { if (els.notice.textContent === msg) els.notice.textContent = ''; }, 8000);
|
|
121
|
+
}
|
|
114
122
|
}
|
|
115
123
|
|
|
124
|
+
function clearNote() {
|
|
125
|
+
if (!els.notice) return;
|
|
126
|
+
els.notice.textContent = '';
|
|
127
|
+
els.notice.className = 'mnd-notice';
|
|
128
|
+
}
|
|
129
|
+
|
|
130
|
+
let refreshErrorShown = false;
|
|
131
|
+
let autoOpenedIssueForm = false;
|
|
132
|
+
|
|
116
133
|
async function refresh() {
|
|
117
134
|
try {
|
|
118
135
|
const [mand, audit] = await Promise.all([
|
|
@@ -125,12 +142,22 @@ export function createController({ doc, els, fetchImpl }) {
|
|
|
125
142
|
if (els.stamp) els.stamp.textContent = '';
|
|
126
143
|
return;
|
|
127
144
|
}
|
|
128
|
-
|
|
145
|
+
const mandates = mand.body?.mandates;
|
|
146
|
+
els.list.innerHTML = renderMandates(mandates);
|
|
129
147
|
els.audit.innerHTML = renderAudit(audit.body);
|
|
130
148
|
if (els.stamp) els.stamp.textContent = 'updated ' + new Date().toLocaleTimeString();
|
|
149
|
+
// Nothing issued yet → the issue form IS the page's call to action;
|
|
150
|
+
// open it once rather than hiding it behind a collapsed <details>.
|
|
151
|
+
if (!autoOpenedIssueForm && els.issueDetails && (!Array.isArray(mandates) || mandates.length === 0)) {
|
|
152
|
+
els.issueDetails.open = true;
|
|
153
|
+
autoOpenedIssueForm = true;
|
|
154
|
+
}
|
|
155
|
+
// A persistent refresh error from a server restart-gap heals itself.
|
|
156
|
+
if (refreshErrorShown) { clearNote(); refreshErrorShown = false; }
|
|
131
157
|
wireRevokeButtons();
|
|
132
158
|
} catch (e) {
|
|
133
|
-
|
|
159
|
+
refreshErrorShown = true;
|
|
160
|
+
note('refresh failed: ' + (e?.message ?? e) + ' — retrying automatically.', 'error');
|
|
134
161
|
}
|
|
135
162
|
}
|
|
136
163
|
|
|
@@ -150,25 +177,54 @@ export function createController({ doc, els, fetchImpl }) {
|
|
|
150
177
|
body: JSON.stringify({ pin, reason: reasonEl?.value || 'operator revocation (dashboard)' }),
|
|
151
178
|
});
|
|
152
179
|
if (pinEl) pinEl.value = ''; // never retain the PIN
|
|
153
|
-
if (status === 200) { note(
|
|
154
|
-
else note(body?.error ?? `
|
|
180
|
+
if (status === 200) { note(`✓ Mandate ${id} revoked — the gate now denies its actions.`, 'success'); await refresh(); }
|
|
181
|
+
else note(`Not revoked — the server refused: ${body?.error ?? `HTTP ${status}`}`, 'error');
|
|
155
182
|
} finally { btn.disabled = false; }
|
|
156
183
|
};
|
|
157
184
|
});
|
|
158
185
|
}
|
|
159
186
|
|
|
187
|
+
// Validate EVERYTHING client-side and report every problem at once —
|
|
188
|
+
// never POST a request we know the server will refuse, and never let the
|
|
189
|
+
// operator discover a missing field one transient error at a time.
|
|
190
|
+
function validateIssueForm() {
|
|
191
|
+
const problems = [];
|
|
192
|
+
if (!els.issueScope?.value?.trim()) problems.push('• Scope is empty — give the permission slip a short name.');
|
|
193
|
+
if (!els.issueAgentA?.value?.trim()) problems.push('• Agent A is empty — this agent’s own fingerprint (normally pre-filled).');
|
|
194
|
+
if (!els.issueAgentB?.value?.trim()) problems.push('• Agent B is empty — paste the other agent’s routing fingerprint.');
|
|
195
|
+
let authorities = null;
|
|
196
|
+
const rawAuth = els.issueAuthorities?.value ?? '';
|
|
197
|
+
try {
|
|
198
|
+
authorities = JSON.parse(rawAuth || '[]');
|
|
199
|
+
if (!Array.isArray(authorities) || authorities.length === 0) {
|
|
200
|
+
problems.push('• Authorities is empty — the mandate must delegate at least one action.');
|
|
201
|
+
authorities = null;
|
|
202
|
+
}
|
|
203
|
+
} catch {
|
|
204
|
+
problems.push('• Authorities is not valid JSON — it must be an array of { action, bounds }.');
|
|
205
|
+
}
|
|
206
|
+
const expiresRaw = els.issueExpires?.value ?? '';
|
|
207
|
+
if (!expiresRaw) {
|
|
208
|
+
problems.push('• Expiry is empty — every mandate must expire (normally pre-filled to a week out).');
|
|
209
|
+
} else if (!(Date.parse(expiresRaw) > Date.now())) {
|
|
210
|
+
problems.push('• Expiry is in the past — pick a future date.');
|
|
211
|
+
}
|
|
212
|
+
if (!els.issuePin?.value) problems.push('• Your dashboard PIN is missing — issuing is a human action; agent credentials are refused.');
|
|
213
|
+
return { problems, authorities };
|
|
214
|
+
}
|
|
215
|
+
|
|
160
216
|
async function issue() {
|
|
161
|
-
const
|
|
162
|
-
if (
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
217
|
+
const { problems, authorities } = validateIssueForm();
|
|
218
|
+
if (problems.length > 0) {
|
|
219
|
+
note('Not issued — fix the following first:\n' + problems.join('\n'), 'error');
|
|
220
|
+
return;
|
|
221
|
+
}
|
|
166
222
|
const payload = {
|
|
167
|
-
pin,
|
|
223
|
+
pin: els.issuePin.value,
|
|
168
224
|
scope: els.issueScope?.value?.trim(),
|
|
169
225
|
agents: [els.issueAgentA?.value?.trim(), els.issueAgentB?.value?.trim()],
|
|
170
226
|
authorities,
|
|
171
|
-
expiresAt:
|
|
227
|
+
expiresAt: new Date(els.issueExpires.value).toISOString(),
|
|
172
228
|
};
|
|
173
229
|
els.issueBtn.disabled = true;
|
|
174
230
|
try {
|
|
@@ -179,19 +235,51 @@ export function createController({ doc, els, fetchImpl }) {
|
|
|
179
235
|
});
|
|
180
236
|
if (els.issuePin) els.issuePin.value = ''; // never retain the PIN
|
|
181
237
|
if (status === 201) {
|
|
182
|
-
note(
|
|
238
|
+
note(`✓ Mandate ${body?.mandate?.id ?? ''} issued — it is active and listed above. The agents can now act within its bounds.`, 'success');
|
|
239
|
+
if (els.issueDetails) els.issueDetails.open = false;
|
|
183
240
|
await refresh();
|
|
184
241
|
} else {
|
|
185
|
-
note(body?.error ?? `
|
|
242
|
+
note(`Not issued — the server refused: ${body?.error ?? `HTTP ${status}`}`, 'error');
|
|
186
243
|
}
|
|
187
244
|
} finally { els.issueBtn.disabled = false; }
|
|
188
245
|
}
|
|
189
246
|
|
|
247
|
+
// datetime-local wants local "YYYY-MM-DDTHH:MM" — toISOString() (UTC, with
|
|
248
|
+
// seconds + Z) renders as blank in the picker.
|
|
249
|
+
function defaultExpiryLocal() {
|
|
250
|
+
const d = new Date(Date.now() + 7 * 24 * 60 * 60 * 1000);
|
|
251
|
+
const pad = (n) => String(n).padStart(2, '0');
|
|
252
|
+
return `${d.getFullYear()}-${pad(d.getMonth() + 1)}-${pad(d.getDate())}T${pad(d.getHours())}:${pad(d.getMinutes())}`;
|
|
253
|
+
}
|
|
254
|
+
|
|
255
|
+
// The system KNOWS this agent's fingerprint — asking the operator to paste a
|
|
256
|
+
// 32-hex string the dashboard can fetch itself is exactly the UX failure
|
|
257
|
+
// Justin flagged. /threadline/health reads the canonical identity.json (works
|
|
258
|
+
// even when the relay is disconnected); /threadline/status is the fallback.
|
|
259
|
+
async function prefillAgentA() {
|
|
260
|
+
if (!els.issueAgentA || els.issueAgentA.value) return;
|
|
261
|
+
try {
|
|
262
|
+
let fp = null;
|
|
263
|
+
const health = await fetchJson('/threadline/health');
|
|
264
|
+
if (health.status === 200) fp = health.body?.fingerprint ?? null;
|
|
265
|
+
if (!fp) {
|
|
266
|
+
const status = await fetchJson('/threadline/status');
|
|
267
|
+
fp = status.body?.relay?.fingerprint ?? null;
|
|
268
|
+
}
|
|
269
|
+
if (fp && els.issueAgentA && !els.issueAgentA.value) {
|
|
270
|
+
els.issueAgentA.value = fp;
|
|
271
|
+
if (els.agentAPrefillNote) els.agentAPrefillNote.textContent = '✓ pre-filled — this agent’s own fingerprint';
|
|
272
|
+
}
|
|
273
|
+
} catch { /* leave blank; validation reports it plainly */ }
|
|
274
|
+
}
|
|
275
|
+
|
|
190
276
|
function start() {
|
|
191
277
|
if (running) return;
|
|
192
278
|
running = true;
|
|
193
279
|
if (els.issueAuthorities && !els.issueAuthorities.value) els.issueAuthorities.value = AUTHORITIES_TEMPLATE;
|
|
280
|
+
if (els.issueExpires && !els.issueExpires.value) els.issueExpires.value = defaultExpiryLocal();
|
|
194
281
|
if (els.issueBtn) els.issueBtn.onclick = issue;
|
|
282
|
+
prefillAgentA();
|
|
195
283
|
refresh();
|
|
196
284
|
timer = setInterval(refresh, REFRESH_MS);
|
|
197
285
|
}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* localhost-link — deterministic detector for machine-local URLs in
|
|
3
|
+
* user-facing messages.
|
|
4
|
+
*
|
|
5
|
+
* Operator-mandated STRONG RULE (Justin, 2026-06-05): never send a
|
|
6
|
+
* localhost / loopback link to a user. The user is almost never on the
|
|
7
|
+
* machine the agent's server runs on — a `http://localhost:4042/...`
|
|
8
|
+
* link is brittle and confusing. User-facing links must be the public
|
|
9
|
+
* tunnel URL (`GET /tunnel`), or the message should honestly say the
|
|
10
|
+
* link will follow.
|
|
11
|
+
*
|
|
12
|
+
* This is deliberately a HARD deterministic rule, not a signal for the
|
|
13
|
+
* LLM tone authority: per docs/signal-vs-authority.md, detectors whose
|
|
14
|
+
* verdict requires conversational judgment emit signals — but a
|
|
15
|
+
* loopback link in a user-bound message has no legitimate reading, so
|
|
16
|
+
* it blocks like the 4096-length check does. The narrow escape hatch
|
|
17
|
+
* (`allowLocalhostLink`) exists for the rare case where the operator
|
|
18
|
+
* explicitly asks to see the raw local URL.
|
|
19
|
+
*
|
|
20
|
+
* Scope: only SCHEME-BEARING clickable links (`http://` / `https://`)
|
|
21
|
+
* are matched. Prose mentions like "port 4042" or "localhost config"
|
|
22
|
+
* stay legal — the rule is about links a user might tap, not about
|
|
23
|
+
* discussing local machinery.
|
|
24
|
+
*/
|
|
25
|
+
export interface LocalhostLinkResult {
|
|
26
|
+
detected: boolean;
|
|
27
|
+
/** The first offending link, for the rejection message. */
|
|
28
|
+
match?: string;
|
|
29
|
+
}
|
|
30
|
+
export declare function detectLocalhostLink(text: string): LocalhostLinkResult;
|
|
31
|
+
//# sourceMappingURL=localhost-link.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"localhost-link.d.ts","sourceRoot":"","sources":["../../src/core/localhost-link.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAQH,MAAM,WAAW,mBAAmB;IAClC,QAAQ,EAAE,OAAO,CAAC;IAClB,2DAA2D;IAC3D,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,GAAG,mBAAmB,CAMrE"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* localhost-link — deterministic detector for machine-local URLs in
|
|
3
|
+
* user-facing messages.
|
|
4
|
+
*
|
|
5
|
+
* Operator-mandated STRONG RULE (Justin, 2026-06-05): never send a
|
|
6
|
+
* localhost / loopback link to a user. The user is almost never on the
|
|
7
|
+
* machine the agent's server runs on — a `http://localhost:4042/...`
|
|
8
|
+
* link is brittle and confusing. User-facing links must be the public
|
|
9
|
+
* tunnel URL (`GET /tunnel`), or the message should honestly say the
|
|
10
|
+
* link will follow.
|
|
11
|
+
*
|
|
12
|
+
* This is deliberately a HARD deterministic rule, not a signal for the
|
|
13
|
+
* LLM tone authority: per docs/signal-vs-authority.md, detectors whose
|
|
14
|
+
* verdict requires conversational judgment emit signals — but a
|
|
15
|
+
* loopback link in a user-bound message has no legitimate reading, so
|
|
16
|
+
* it blocks like the 4096-length check does. The narrow escape hatch
|
|
17
|
+
* (`allowLocalhostLink`) exists for the rare case where the operator
|
|
18
|
+
* explicitly asks to see the raw local URL.
|
|
19
|
+
*
|
|
20
|
+
* Scope: only SCHEME-BEARING clickable links (`http://` / `https://`)
|
|
21
|
+
* are matched. Prose mentions like "port 4042" or "localhost config"
|
|
22
|
+
* stay legal — the rule is about links a user might tap, not about
|
|
23
|
+
* discussing local machinery.
|
|
24
|
+
*/
|
|
25
|
+
// Host boundary lookahead (?![\w.-]) prevents matching loopback-looking
|
|
26
|
+
// PREFIXES of public hostnames (e.g. localhost.example.com). All of 127/8
|
|
27
|
+
// is loopback, so any 127.x.y.z matches.
|
|
28
|
+
const LOCALHOST_LINK_RE = /https?:\/\/(?:localhost|127(?:\.\d{1,3}){3}|0\.0\.0\.0|\[::1?\])(?![\w.-])(?::\d+)?(?:\/[^\s)\]>'"]*)?/i;
|
|
29
|
+
export function detectLocalhostLink(text) {
|
|
30
|
+
const m = LOCALHOST_LINK_RE.exec(text);
|
|
31
|
+
if (m) {
|
|
32
|
+
return { detected: true, match: m[0] };
|
|
33
|
+
}
|
|
34
|
+
return { detected: false };
|
|
35
|
+
}
|
|
36
|
+
//# sourceMappingURL=localhost-link.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"localhost-link.js","sourceRoot":"","sources":["../../src/core/localhost-link.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAEH,wEAAwE;AACxE,0EAA0E;AAC1E,yCAAyC;AACzC,MAAM,iBAAiB,GACrB,yGAAyG,CAAC;AAQ5G,MAAM,UAAU,mBAAmB,CAAC,IAAY;IAC9C,MAAM,CAAC,GAAG,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACvC,IAAI,CAAC,EAAE,CAAC;QACN,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IACzC,CAAC;IACD,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC;AAC7B,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"routes.d.ts","sourceRoot":"","sources":["../../src/server/routes.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"routes.d.ts","sourceRoot":"","sources":["../../src/server/routes.ts"],"names":[],"mappings":"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"}
|
package/dist/server/routes.js
CHANGED
|
@@ -114,6 +114,7 @@ import { DEFAULT_RELAY_URL } from '../threadline/constants.js';
|
|
|
114
114
|
import { ThreadlineNicknames } from '../threadline/ThreadlineNicknames.js';
|
|
115
115
|
import { ScopeCoherenceTracker } from '../core/ScopeCoherenceTracker.js';
|
|
116
116
|
import { isJunkPayload } from '../core/junk-payload.js';
|
|
117
|
+
import { detectLocalhostLink } from '../core/localhost-link.js';
|
|
117
118
|
import { detectJargon } from '../core/JargonDetector.js';
|
|
118
119
|
import { TruncationDetector } from '../paste/TruncationDetector.js';
|
|
119
120
|
import { SecretDrop } from './SecretDrop.js';
|
|
@@ -693,6 +694,27 @@ export function createRoutes(ctx) {
|
|
|
693
694
|
void observeSelfViolation(text, options.topicId).catch(() => {
|
|
694
695
|
/* @silent-fallback-ok — observe-only; a detector error never affects delivery */
|
|
695
696
|
});
|
|
697
|
+
// ── Localhost-link guard (operator-mandated HARD rule, 2026-06-05) ──
|
|
698
|
+
// A clickable localhost/loopback link must never reach a user — the user
|
|
699
|
+
// is almost never on the machine this server runs on. This is a
|
|
700
|
+
// deterministic block (like the 4096-length check), NOT a signal for the
|
|
701
|
+
// LLM authority: a loopback link in a user-bound message has no
|
|
702
|
+
// legitimate reading. Runs BEFORE the tone-gate availability check so the
|
|
703
|
+
// rule holds even on installs with no gate configured. Escape hatch:
|
|
704
|
+
// metadata.allowLocalhostLink for the rare operator-requested raw URL.
|
|
705
|
+
if (!options.allowLocalhostLink) {
|
|
706
|
+
const localLink = detectLocalhostLink(text);
|
|
707
|
+
if (localLink.detected) {
|
|
708
|
+
res.status(422).json({
|
|
709
|
+
error: `Message blocked: contains a machine-local link (${localLink.match}) that the user cannot open from their device. ` +
|
|
710
|
+
`Replace it with the public tunnel URL (GET /tunnel → url + path), or omit the link and say it will follow. ` +
|
|
711
|
+
`If the operator explicitly asked for the raw local URL, resend with metadata.allowLocalhostLink: true.`,
|
|
712
|
+
blockedBy: 'localhost-link-guard',
|
|
713
|
+
match: localLink.match,
|
|
714
|
+
});
|
|
715
|
+
return true;
|
|
716
|
+
}
|
|
717
|
+
}
|
|
696
718
|
if (!ctx.messagingToneGate)
|
|
697
719
|
return false; // No authority configured — pass through
|
|
698
720
|
try {
|
|
@@ -5961,6 +5983,7 @@ export function createRoutes(ctx) {
|
|
|
5961
5983
|
const isProxy = metadata?.isProxy === true;
|
|
5962
5984
|
const allowDebugText = metadata?.allowDebugText === true;
|
|
5963
5985
|
const allowDuplicate = metadata?.allowDuplicate === true;
|
|
5986
|
+
const allowLocalhostLink = metadata?.allowLocalhostLink === true;
|
|
5964
5987
|
// Skip the LOCAL tone gate when this server will RELAY the reply through the
|
|
5965
5988
|
// lease holder (a tokenless pool standby). The holder runs ITS OWN tone gate
|
|
5966
5989
|
// on receipt, so the standby gating too is redundant — and worse, it adds a
|
|
@@ -5977,6 +6000,7 @@ export function createRoutes(ctx) {
|
|
|
5977
6000
|
topicId,
|
|
5978
6001
|
allowDebugText,
|
|
5979
6002
|
allowDuplicate,
|
|
6003
|
+
allowLocalhostLink,
|
|
5980
6004
|
})))
|
|
5981
6005
|
return;
|
|
5982
6006
|
try {
|