instar 1.3.1336 → 1.3.1338
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-triage.js +75 -2
- package/dashboard/index.html +11 -3
- package/dist/commands/server.d.ts.map +1 -1
- package/dist/commands/server.js +8 -0
- package/dist/commands/server.js.map +1 -1
- package/dist/config/ConfigDefaults.d.ts.map +1 -1
- package/dist/config/ConfigDefaults.js +8 -0
- package/dist/config/ConfigDefaults.js.map +1 -1
- package/dist/core/PostUpdateMigrator.d.ts.map +1 -1
- package/dist/core/PostUpdateMigrator.js +33 -1
- package/dist/core/PostUpdateMigrator.js.map +1 -1
- package/dist/core/SafeGitExecutor.d.ts +11 -0
- package/dist/core/SafeGitExecutor.d.ts.map +1 -1
- package/dist/core/SafeGitExecutor.js +29 -5
- package/dist/core/SafeGitExecutor.js.map +1 -1
- package/dist/core/SessionManager.d.ts +26 -0
- package/dist/core/SessionManager.d.ts.map +1 -1
- package/dist/core/SessionManager.js +74 -10
- package/dist/core/SessionManager.js.map +1 -1
- package/dist/core/WriteDomainRegistry.d.ts.map +1 -1
- package/dist/core/WriteDomainRegistry.js +3 -0
- package/dist/core/WriteDomainRegistry.js.map +1 -1
- package/dist/core/canonicalPipelineRegistry.d.ts +13 -0
- package/dist/core/canonicalPipelineRegistry.d.ts.map +1 -1
- package/dist/core/canonicalPipelineRegistry.js +15 -0
- package/dist/core/canonicalPipelineRegistry.js.map +1 -1
- package/dist/core/credentialEnvNames.d.ts +18 -0
- package/dist/core/credentialEnvNames.d.ts.map +1 -0
- package/dist/core/credentialEnvNames.js +25 -0
- package/dist/core/credentialEnvNames.js.map +1 -0
- package/dist/core/devGatedFeatures.d.ts.map +1 -1
- package/dist/core/devGatedFeatures.js +12 -0
- package/dist/core/devGatedFeatures.js.map +1 -1
- package/dist/core/frameworkSessionLaunch.d.ts +3 -0
- package/dist/core/frameworkSessionLaunch.d.ts.map +1 -1
- package/dist/core/frameworkSessionLaunch.js +3 -0
- package/dist/core/frameworkSessionLaunch.js.map +1 -1
- package/dist/core/types.d.ts +33 -2
- package/dist/core/types.d.ts.map +1 -1
- package/dist/core/types.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/execute/ConfinedRunner.d.ts +57 -0
- package/dist/feedback-factory/execute/ConfinedRunner.d.ts.map +1 -0
- package/dist/feedback-factory/execute/ConfinedRunner.js +152 -0
- package/dist/feedback-factory/execute/ConfinedRunner.js.map +1 -0
- package/dist/feedback-factory/execute/FeedbackExecuteStore.d.ts +99 -0
- package/dist/feedback-factory/execute/FeedbackExecuteStore.d.ts.map +1 -0
- package/dist/feedback-factory/execute/FeedbackExecuteStore.js +173 -0
- package/dist/feedback-factory/execute/FeedbackExecuteStore.js.map +1 -0
- package/dist/feedback-factory/execute/FeedbackExecutorService.d.ts +333 -0
- package/dist/feedback-factory/execute/FeedbackExecutorService.d.ts.map +1 -0
- package/dist/feedback-factory/execute/FeedbackExecutorService.js +1644 -0
- package/dist/feedback-factory/execute/FeedbackExecutorService.js.map +1 -0
- package/dist/feedback-factory/execute/attemptFs.d.ts +5 -0
- package/dist/feedback-factory/execute/attemptFs.d.ts.map +1 -0
- package/dist/feedback-factory/execute/attemptFs.js +50 -0
- package/dist/feedback-factory/execute/attemptFs.js.map +1 -0
- package/dist/feedback-factory/execute/buildFeedbackExecutor.d.ts +86 -0
- package/dist/feedback-factory/execute/buildFeedbackExecutor.d.ts.map +1 -0
- package/dist/feedback-factory/execute/buildFeedbackExecutor.js +262 -0
- package/dist/feedback-factory/execute/buildFeedbackExecutor.js.map +1 -0
- package/dist/feedback-factory/execute/changeSet.d.ts +59 -0
- package/dist/feedback-factory/execute/changeSet.d.ts.map +1 -0
- package/dist/feedback-factory/execute/changeSet.js +251 -0
- package/dist/feedback-factory/execute/changeSet.js.map +1 -0
- package/dist/feedback-factory/execute/confinementCanary.d.ts +103 -0
- package/dist/feedback-factory/execute/confinementCanary.d.ts.map +1 -0
- package/dist/feedback-factory/execute/confinementCanary.js +327 -0
- package/dist/feedback-factory/execute/confinementCanary.js.map +1 -0
- package/dist/feedback-factory/execute/depsCache.d.ts +50 -0
- package/dist/feedback-factory/execute/depsCache.d.ts.map +1 -0
- package/dist/feedback-factory/execute/depsCache.js +211 -0
- package/dist/feedback-factory/execute/depsCache.js.map +1 -0
- package/dist/feedback-factory/execute/executePolicy.d.ts +167 -0
- package/dist/feedback-factory/execute/executePolicy.d.ts.map +1 -0
- package/dist/feedback-factory/execute/executePolicy.js +295 -0
- package/dist/feedback-factory/execute/executePolicy.js.map +1 -0
- package/dist/feedback-factory/execute/executorPorts.d.ts +126 -0
- package/dist/feedback-factory/execute/executorPorts.d.ts.map +1 -0
- package/dist/feedback-factory/execute/executorPorts.js +252 -0
- package/dist/feedback-factory/execute/executorPorts.js.map +1 -0
- package/dist/feedback-factory/execute/executorSession.d.ts +53 -0
- package/dist/feedback-factory/execute/executorSession.d.ts.map +1 -0
- package/dist/feedback-factory/execute/executorSession.js +167 -0
- package/dist/feedback-factory/execute/executorSession.js.map +1 -0
- package/dist/feedback-factory/execute/reviewGate.d.ts +85 -0
- package/dist/feedback-factory/execute/reviewGate.d.ts.map +1 -0
- package/dist/feedback-factory/execute/reviewGate.js +128 -0
- package/dist/feedback-factory/execute/reviewGate.js.map +1 -0
- package/dist/feedback-factory/triage/FeedbackTriageService.d.ts +23 -1
- package/dist/feedback-factory/triage/FeedbackTriageService.d.ts.map +1 -1
- package/dist/feedback-factory/triage/FeedbackTriageService.js +20 -5
- package/dist/feedback-factory/triage/FeedbackTriageService.js.map +1 -1
- package/dist/feedback-factory/triage/FeedbackTriageStore.d.ts +12 -0
- package/dist/feedback-factory/triage/FeedbackTriageStore.d.ts.map +1 -1
- package/dist/feedback-factory/triage/FeedbackTriageStore.js +27 -0
- package/dist/feedback-factory/triage/FeedbackTriageStore.js.map +1 -1
- package/dist/feedback-factory/triage/buildFeedbackTriage.d.ts +3 -0
- package/dist/feedback-factory/triage/buildFeedbackTriage.d.ts.map +1 -1
- package/dist/feedback-factory/triage/buildFeedbackTriage.js +1 -1
- package/dist/feedback-factory/triage/buildFeedbackTriage.js.map +1 -1
- package/dist/monitoring/selfaction/policies.d.ts.map +1 -1
- package/dist/monitoring/selfaction/policies.js +14 -0
- package/dist/monitoring/selfaction/policies.js.map +1 -1
- package/dist/scaffold/templates.d.ts.map +1 -1
- package/dist/scaffold/templates.js +10 -1
- package/dist/scaffold/templates.js.map +1 -1
- package/dist/server/AgentServer.d.ts +8 -0
- package/dist/server/AgentServer.d.ts.map +1 -1
- package/dist/server/AgentServer.js +91 -0
- package/dist/server/AgentServer.js.map +1 -1
- package/dist/server/CapabilityIndex.d.ts.map +1 -1
- package/dist/server/CapabilityIndex.js +17 -2
- package/dist/server/CapabilityIndex.js.map +1 -1
- package/dist/server/routes.d.ts +2 -0
- package/dist/server/routes.d.ts.map +1 -1
- package/dist/server/routes.js +194 -13
- package/dist/server/routes.js.map +1 -1
- package/dist/testing/selfActionRegistry.d.ts.map +1 -1
- package/dist/testing/selfActionRegistry.js +51 -0
- package/dist/testing/selfActionRegistry.js.map +1 -1
- package/dist/threadline/AgentTrustManager.d.ts +40 -3
- package/dist/threadline/AgentTrustManager.d.ts.map +1 -1
- package/dist/threadline/AgentTrustManager.js +55 -7
- package/dist/threadline/AgentTrustManager.js.map +1 -1
- package/dist/threadline/ThreadlineBootstrap.d.ts +7 -0
- package/dist/threadline/ThreadlineBootstrap.d.ts.map +1 -1
- package/dist/threadline/ThreadlineBootstrap.js +34 -15
- package/dist/threadline/ThreadlineBootstrap.js.map +1 -1
- package/dist/threadline/inboundIdLedgerWiring.d.ts +2 -2
- package/dist/threadline/relayUnknownSenderTrust.d.ts +136 -0
- package/dist/threadline/relayUnknownSenderTrust.d.ts.map +1 -0
- package/dist/threadline/relayUnknownSenderTrust.js +208 -0
- package/dist/threadline/relayUnknownSenderTrust.js.map +1 -0
- package/package.json +2 -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/data/state-coherence-registry.json +19 -0
- package/src/scaffold/templates/jobs/instar/feedback-factory-execute.md +83 -0
- package/src/scaffold/templates.ts +10 -1
- package/upgrades/1.3.1337.md +31 -0
- package/upgrades/1.3.1338.md +30 -0
- package/upgrades/a2a-relay-unknown-sender-trust.eli16.md +21 -0
- package/upgrades/feedback-execute-phase2.eli16.md +9 -0
- package/upgrades/side-effects/a2a-relay-unknown-sender-trust.md +129 -0
- package/upgrades/side-effects/feedback-execute-phase2.md +182 -0
|
@@ -70,15 +70,52 @@ export function summaryText(summary) {
|
|
|
70
70
|
return parts.join(' ');
|
|
71
71
|
}
|
|
72
72
|
|
|
73
|
+
const EXECUTION_WORDS = {
|
|
74
|
+
queued: '', running: ' (being worked on)', 'pr-open': ' (fix waiting for your approval)', 'spec-pr-open': ' (design draft waiting for your approval)',
|
|
75
|
+
merged: ' (fixed — checking it stays fixed)', failed: ' (the last attempt did not work)',
|
|
76
|
+
};
|
|
77
|
+
|
|
73
78
|
export function queueRowText(item) {
|
|
74
79
|
const sev = item.severity || 'unrated';
|
|
75
80
|
const title = String(item.title || item.clusterId || 'A feedback item').slice(0, 140);
|
|
76
|
-
|
|
81
|
+
const state = EXECUTION_WORDS[item.executionState] || '';
|
|
82
|
+
return `${item.rank}. [${sev}] ${title}${state}${item.summary ? ` — ${String(item.summary).slice(0, 200)}` : ''}`;
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
const EXECUTOR_REASON_WORDS = {
|
|
86
|
+
ok: 'ready to work on the top items',
|
|
87
|
+
'dry-run': 'in practice mode: it picks what it would work on but starts nothing',
|
|
88
|
+
disabled: 'turned off',
|
|
89
|
+
'no-source-repo': 'not available here (no copy of the source code on this machine)',
|
|
90
|
+
'github-unavailable': 'waiting: GitHub could not be reached',
|
|
91
|
+
'auto-merge-disabled': 'waiting: the repository does not allow auto-merge',
|
|
92
|
+
'approver-unset': 'waiting: no approver is set for this organization repository',
|
|
93
|
+
'approver-not-independent': 'waiting for you: this agent could approve its own fixes as the repository owner, so it needs your one-time PIN acceptance (or leave it off)',
|
|
94
|
+
'profile-unenforceable': 'stopped: the sandbox check did not hold, so no attempts start (retried daily)',
|
|
95
|
+
'deps-unavailable': 'waiting: installing the code dependencies failed (retrying)',
|
|
96
|
+
'publish-fork-unset': 'waiting: no fork is set to publish fixes from (feedbackFactory.execute.publishRepo), so no new attempts start',
|
|
97
|
+
'not-canonical-owner': 'runs on another machine',
|
|
98
|
+
'not-checked-yet': 'not checked yet',
|
|
99
|
+
};
|
|
100
|
+
|
|
101
|
+
/** One plain paragraph for the executor status. */
|
|
102
|
+
export function executorText(status) {
|
|
103
|
+
if (!status) return 'The fix worker is not available on this machine.';
|
|
104
|
+
const words = EXECUTOR_REASON_WORDS[status.reason] || status.reason || 'unknown';
|
|
105
|
+
const parts = [`The fix worker is ${words}.`];
|
|
106
|
+
if (typeof status.live === 'number') parts.push(`${status.live} attempt(s) running, ${status.openPrs || 0} fix(es) waiting for review, ${status.startsToday || 0} started today.`);
|
|
107
|
+
return parts.join(' ');
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
/** Attempts parked because some files look like they contain a secret (names only). */
|
|
111
|
+
export function heldSecretAttempts(status) {
|
|
112
|
+
return ((status && status.attempts) || []).filter((a) => a.state === 'held' && a.reason === 'needs-review-secret-shape');
|
|
77
113
|
}
|
|
78
114
|
|
|
79
115
|
/**
|
|
80
116
|
* Render the Triage section into `target`.
|
|
81
|
-
* handlers: submitAuthority(action, pin) → note; planIgnoreLive(enabled) → plan|null;
|
|
117
|
+
* handlers: submitAuthority(action, pin) → note; planIgnoreLive(enabled) → plan|null; planExecutorAction(request) → plan|null;
|
|
118
|
+
* commitPlan(plan, pin) → note.
|
|
82
119
|
*/
|
|
83
120
|
export function renderTriageSection(doc, target, data, handlers = {}) {
|
|
84
121
|
if (!target) return;
|
|
@@ -133,6 +170,42 @@ export function renderTriageSection(doc, target, data, handlers = {}) {
|
|
|
133
170
|
card.appendChild(note);
|
|
134
171
|
target.appendChild(card);
|
|
135
172
|
|
|
173
|
+
// Executor card: its state in plain words, and the two PIN-only executor actions.
|
|
174
|
+
if (data.execute !== undefined) {
|
|
175
|
+
const ex = el(doc, 'div', 'spend-arm-plan');
|
|
176
|
+
ex.appendChild(el(doc, 'div', 'spend-arm-plan-label', 'Fixing the top items'));
|
|
177
|
+
ex.appendChild(el(doc, 'div', 'ph-detail-body', executorText(data.execute)));
|
|
178
|
+
const exBtns = el(doc, 'div', 'spend-arm-btns');
|
|
179
|
+
const exPlan = el(doc, 'div', 'spend-arm-plan-text');
|
|
180
|
+
const offer = (label, actionKey, request) => {
|
|
181
|
+
if (typeof handlers.planExecutorAction !== 'function' || typeof handlers.commitPlan !== 'function') return;
|
|
182
|
+
const b = el(doc, 'button', 'spend-arm-btn', label);
|
|
183
|
+
b.setAttribute('data-ft-action', `plan-${actionKey}`);
|
|
184
|
+
b.addEventListener('click', async () => {
|
|
185
|
+
note.textContent = 'Working…';
|
|
186
|
+
const plan = await handlers.planExecutorAction(request);
|
|
187
|
+
if (!plan || !plan.planId) { note.textContent = 'Could not prepare that change. Nothing has changed.'; return; }
|
|
188
|
+
exPlan.textContent = plan.renderedText;
|
|
189
|
+
ex.insertBefore(exPlan, exBtns);
|
|
190
|
+
const confirm = el(doc, 'button', 'spend-arm-btn spend-arm-btn-commit', 'Confirm with PIN');
|
|
191
|
+
confirm.setAttribute('data-ft-action', `commit-${actionKey}`);
|
|
192
|
+
confirm.addEventListener('click', async () => { note.textContent = 'Working…'; note.textContent = await handlers.commitPlan(plan, (pin.value || '').trim()); });
|
|
193
|
+
exBtns.appendChild(confirm);
|
|
194
|
+
note.textContent = 'Read the change above, enter your PIN in the box above, then confirm.';
|
|
195
|
+
});
|
|
196
|
+
exBtns.appendChild(b);
|
|
197
|
+
};
|
|
198
|
+
if (data.execute && data.execute.reason === 'approver-not-independent') {
|
|
199
|
+
offer('Let it run anyway…', 'accept-approver-dependence', { action: 'accept-approver-dependence' });
|
|
200
|
+
}
|
|
201
|
+
for (const attempt of heldSecretAttempts(data.execute).slice(0, 5)) {
|
|
202
|
+
ex.appendChild(el(doc, 'div', 'spend-arm-note', `Held: a fix touched files that look like they hold a secret (${(attempt.secretFiles || []).slice(0, 5).join(', ')}).`));
|
|
203
|
+
offer('Review and publish…', 'publish-secret-shape', { action: 'publish-secret-shape', attemptId: attempt.attemptId });
|
|
204
|
+
}
|
|
205
|
+
ex.appendChild(exBtns);
|
|
206
|
+
target.appendChild(ex);
|
|
207
|
+
}
|
|
208
|
+
|
|
136
209
|
// Ranked queue.
|
|
137
210
|
const items = (data.queue && Array.isArray(data.queue.items)) ? data.queue.items : [];
|
|
138
211
|
const list = el(doc, 'div', 'ph-detail-body');
|
package/dashboard/index.html
CHANGED
|
@@ -10557,8 +10557,9 @@
|
|
|
10557
10557
|
}
|
|
10558
10558
|
const M = __ftModule;
|
|
10559
10559
|
const get = async (url) => { try { return await apiFetch(url); } catch { return null; } };
|
|
10560
|
-
const [summary, queue, proposal] = await Promise.all([
|
|
10560
|
+
const [summary, queue, proposal, execute] = await Promise.all([
|
|
10561
10561
|
get('/feedback-factory/triage/summary'), get('/feedback-factory/triage/queue'), get('/feedback-factory/triage/authority/proposal'),
|
|
10562
|
+
get('/feedback-factory/execute/status'),
|
|
10562
10563
|
]);
|
|
10563
10564
|
const post = async (url, body) => {
|
|
10564
10565
|
const response = await fetch(url, {
|
|
@@ -10568,7 +10569,7 @@
|
|
|
10568
10569
|
});
|
|
10569
10570
|
return { ok: response.ok, data: await response.json().catch(() => ({})) };
|
|
10570
10571
|
};
|
|
10571
|
-
M.renderTriageSection(document, root, { summary, queue, proposal }, {
|
|
10572
|
+
M.renderTriageSection(document, root, { summary, queue, proposal, execute }, {
|
|
10572
10573
|
submitAuthority: async (action, pin) => {
|
|
10573
10574
|
const r = await post('/feedback-factory/triage/authority', M.triageAuthorityRequest(action, pin, M.newTriageDecisionRef()));
|
|
10574
10575
|
const note = M.triageResultNote(r.ok, r.data);
|
|
@@ -10579,9 +10580,16 @@
|
|
|
10579
10580
|
const r = await post('/feedback-factory/triage/plan', { action: 'ignore-live', enabled });
|
|
10580
10581
|
return r.ok ? r.data : null;
|
|
10581
10582
|
},
|
|
10583
|
+
planExecutorAction: async (request) => {
|
|
10584
|
+
const r = await post('/feedback-factory/triage/plan', request);
|
|
10585
|
+
return r.ok ? r.data : null;
|
|
10586
|
+
},
|
|
10582
10587
|
commitPlan: async (plan, pin) => {
|
|
10583
10588
|
const r = await post('/feedback-factory/triage/commit', { pin, planId: plan.planId, nonce: plan.nonce });
|
|
10584
|
-
const note = r.ok ?
|
|
10589
|
+
const note = !r.ok ? M.triageResultNote(false, r.data)
|
|
10590
|
+
: r.data.action === 'accept-approver-dependence' ? 'Done: the fix worker may run. Every fix still needs your GitHub approval to merge.'
|
|
10591
|
+
: r.data.action === 'publish-secret-shape' ? `Done: published as pull request #${r.data.prNumber}.`
|
|
10592
|
+
: (r.data.ignoreLive ? 'Done: ignores are live.' : 'Done: ignores are back in practice mode.');
|
|
10585
10593
|
if (r.ok) await loadFeedbackTriage(note);
|
|
10586
10594
|
return note;
|
|
10587
10595
|
},
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/commands/server.ts"],"names":[],"mappings":"
|
|
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
|
@@ -59,6 +59,7 @@ import { TopicReachabilityVerifier } from '../monitoring/TopicReachabilityVerifi
|
|
|
59
59
|
import { probeTranscript } from '../monitoring/transcriptProber.js';
|
|
60
60
|
import { SingleInstanceLock, installReleaseHandlers } from '../core/SingleInstanceLock.js';
|
|
61
61
|
import { resolveDevAgentGate, resolveStateSyncStores } from '../core/devAgentGate.js';
|
|
62
|
+
import { resolveRelayUnknownSenderTrustMode } from '../threadline/relayUnknownSenderTrust.js';
|
|
62
63
|
import { resolveAntiThrashKnobs, readingValidity } from '../core/SwapAntiThrash.js';
|
|
63
64
|
import { shouldReleaseOnComplete, planClaimOnSpawn, ownershipNonce } from '../core/ownershipFollowsLiveWork.js';
|
|
64
65
|
import { PrHandLease } from '../core/PrHandLease.js';
|
|
@@ -17130,6 +17131,13 @@ export async function startServer(options) {
|
|
|
17130
17131
|
credentialShareEnforced: vp?.credentialShareEnforced ?? false,
|
|
17131
17132
|
};
|
|
17132
17133
|
},
|
|
17134
|
+
// Relay unknown-sender trust (docs/specs/a2a-relay-unknown-sender-trust.md).
|
|
17135
|
+
// Read live per message: `enabled` omitted rides the developmentAgent gate,
|
|
17136
|
+
// `dryRun` defaults true (observe + count, deliver as today).
|
|
17137
|
+
getRelayUnknownSenderTrustMode: () => resolveRelayUnknownSenderTrustMode({
|
|
17138
|
+
enabled: liveConfig.get('threadline.relayUnknownSenderTrust.enabled', undefined),
|
|
17139
|
+
dryRun: liveConfig.get('threadline.relayUnknownSenderTrust.dryRun', undefined),
|
|
17140
|
+
}, config),
|
|
17133
17141
|
});
|
|
17134
17142
|
threadlineHandshake = threadline.handshakeManager;
|
|
17135
17143
|
threadlineShutdown = threadline.shutdown;
|