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.
Files changed (150) hide show
  1. package/dashboard/feedback-triage.js +75 -2
  2. package/dashboard/index.html +11 -3
  3. package/dist/commands/server.d.ts.map +1 -1
  4. package/dist/commands/server.js +8 -0
  5. package/dist/commands/server.js.map +1 -1
  6. package/dist/config/ConfigDefaults.d.ts.map +1 -1
  7. package/dist/config/ConfigDefaults.js +8 -0
  8. package/dist/config/ConfigDefaults.js.map +1 -1
  9. package/dist/core/PostUpdateMigrator.d.ts.map +1 -1
  10. package/dist/core/PostUpdateMigrator.js +33 -1
  11. package/dist/core/PostUpdateMigrator.js.map +1 -1
  12. package/dist/core/SafeGitExecutor.d.ts +11 -0
  13. package/dist/core/SafeGitExecutor.d.ts.map +1 -1
  14. package/dist/core/SafeGitExecutor.js +29 -5
  15. package/dist/core/SafeGitExecutor.js.map +1 -1
  16. package/dist/core/SessionManager.d.ts +26 -0
  17. package/dist/core/SessionManager.d.ts.map +1 -1
  18. package/dist/core/SessionManager.js +74 -10
  19. package/dist/core/SessionManager.js.map +1 -1
  20. package/dist/core/WriteDomainRegistry.d.ts.map +1 -1
  21. package/dist/core/WriteDomainRegistry.js +3 -0
  22. package/dist/core/WriteDomainRegistry.js.map +1 -1
  23. package/dist/core/canonicalPipelineRegistry.d.ts +13 -0
  24. package/dist/core/canonicalPipelineRegistry.d.ts.map +1 -1
  25. package/dist/core/canonicalPipelineRegistry.js +15 -0
  26. package/dist/core/canonicalPipelineRegistry.js.map +1 -1
  27. package/dist/core/credentialEnvNames.d.ts +18 -0
  28. package/dist/core/credentialEnvNames.d.ts.map +1 -0
  29. package/dist/core/credentialEnvNames.js +25 -0
  30. package/dist/core/credentialEnvNames.js.map +1 -0
  31. package/dist/core/devGatedFeatures.d.ts.map +1 -1
  32. package/dist/core/devGatedFeatures.js +12 -0
  33. package/dist/core/devGatedFeatures.js.map +1 -1
  34. package/dist/core/frameworkSessionLaunch.d.ts +3 -0
  35. package/dist/core/frameworkSessionLaunch.d.ts.map +1 -1
  36. package/dist/core/frameworkSessionLaunch.js +3 -0
  37. package/dist/core/frameworkSessionLaunch.js.map +1 -1
  38. package/dist/core/types.d.ts +33 -2
  39. package/dist/core/types.d.ts.map +1 -1
  40. package/dist/core/types.js.map +1 -1
  41. package/dist/data/standards-guard-index.json +1 -1
  42. package/dist/data/standards-guard-index.meta.json +2 -2
  43. package/dist/data/standards-registry.meta.json +1 -1
  44. package/dist/feedback-factory/execute/ConfinedRunner.d.ts +57 -0
  45. package/dist/feedback-factory/execute/ConfinedRunner.d.ts.map +1 -0
  46. package/dist/feedback-factory/execute/ConfinedRunner.js +152 -0
  47. package/dist/feedback-factory/execute/ConfinedRunner.js.map +1 -0
  48. package/dist/feedback-factory/execute/FeedbackExecuteStore.d.ts +99 -0
  49. package/dist/feedback-factory/execute/FeedbackExecuteStore.d.ts.map +1 -0
  50. package/dist/feedback-factory/execute/FeedbackExecuteStore.js +173 -0
  51. package/dist/feedback-factory/execute/FeedbackExecuteStore.js.map +1 -0
  52. package/dist/feedback-factory/execute/FeedbackExecutorService.d.ts +333 -0
  53. package/dist/feedback-factory/execute/FeedbackExecutorService.d.ts.map +1 -0
  54. package/dist/feedback-factory/execute/FeedbackExecutorService.js +1644 -0
  55. package/dist/feedback-factory/execute/FeedbackExecutorService.js.map +1 -0
  56. package/dist/feedback-factory/execute/attemptFs.d.ts +5 -0
  57. package/dist/feedback-factory/execute/attemptFs.d.ts.map +1 -0
  58. package/dist/feedback-factory/execute/attemptFs.js +50 -0
  59. package/dist/feedback-factory/execute/attemptFs.js.map +1 -0
  60. package/dist/feedback-factory/execute/buildFeedbackExecutor.d.ts +86 -0
  61. package/dist/feedback-factory/execute/buildFeedbackExecutor.d.ts.map +1 -0
  62. package/dist/feedback-factory/execute/buildFeedbackExecutor.js +262 -0
  63. package/dist/feedback-factory/execute/buildFeedbackExecutor.js.map +1 -0
  64. package/dist/feedback-factory/execute/changeSet.d.ts +59 -0
  65. package/dist/feedback-factory/execute/changeSet.d.ts.map +1 -0
  66. package/dist/feedback-factory/execute/changeSet.js +251 -0
  67. package/dist/feedback-factory/execute/changeSet.js.map +1 -0
  68. package/dist/feedback-factory/execute/confinementCanary.d.ts +103 -0
  69. package/dist/feedback-factory/execute/confinementCanary.d.ts.map +1 -0
  70. package/dist/feedback-factory/execute/confinementCanary.js +327 -0
  71. package/dist/feedback-factory/execute/confinementCanary.js.map +1 -0
  72. package/dist/feedback-factory/execute/depsCache.d.ts +50 -0
  73. package/dist/feedback-factory/execute/depsCache.d.ts.map +1 -0
  74. package/dist/feedback-factory/execute/depsCache.js +211 -0
  75. package/dist/feedback-factory/execute/depsCache.js.map +1 -0
  76. package/dist/feedback-factory/execute/executePolicy.d.ts +167 -0
  77. package/dist/feedback-factory/execute/executePolicy.d.ts.map +1 -0
  78. package/dist/feedback-factory/execute/executePolicy.js +295 -0
  79. package/dist/feedback-factory/execute/executePolicy.js.map +1 -0
  80. package/dist/feedback-factory/execute/executorPorts.d.ts +126 -0
  81. package/dist/feedback-factory/execute/executorPorts.d.ts.map +1 -0
  82. package/dist/feedback-factory/execute/executorPorts.js +252 -0
  83. package/dist/feedback-factory/execute/executorPorts.js.map +1 -0
  84. package/dist/feedback-factory/execute/executorSession.d.ts +53 -0
  85. package/dist/feedback-factory/execute/executorSession.d.ts.map +1 -0
  86. package/dist/feedback-factory/execute/executorSession.js +167 -0
  87. package/dist/feedback-factory/execute/executorSession.js.map +1 -0
  88. package/dist/feedback-factory/execute/reviewGate.d.ts +85 -0
  89. package/dist/feedback-factory/execute/reviewGate.d.ts.map +1 -0
  90. package/dist/feedback-factory/execute/reviewGate.js +128 -0
  91. package/dist/feedback-factory/execute/reviewGate.js.map +1 -0
  92. package/dist/feedback-factory/triage/FeedbackTriageService.d.ts +23 -1
  93. package/dist/feedback-factory/triage/FeedbackTriageService.d.ts.map +1 -1
  94. package/dist/feedback-factory/triage/FeedbackTriageService.js +20 -5
  95. package/dist/feedback-factory/triage/FeedbackTriageService.js.map +1 -1
  96. package/dist/feedback-factory/triage/FeedbackTriageStore.d.ts +12 -0
  97. package/dist/feedback-factory/triage/FeedbackTriageStore.d.ts.map +1 -1
  98. package/dist/feedback-factory/triage/FeedbackTriageStore.js +27 -0
  99. package/dist/feedback-factory/triage/FeedbackTriageStore.js.map +1 -1
  100. package/dist/feedback-factory/triage/buildFeedbackTriage.d.ts +3 -0
  101. package/dist/feedback-factory/triage/buildFeedbackTriage.d.ts.map +1 -1
  102. package/dist/feedback-factory/triage/buildFeedbackTriage.js +1 -1
  103. package/dist/feedback-factory/triage/buildFeedbackTriage.js.map +1 -1
  104. package/dist/monitoring/selfaction/policies.d.ts.map +1 -1
  105. package/dist/monitoring/selfaction/policies.js +14 -0
  106. package/dist/monitoring/selfaction/policies.js.map +1 -1
  107. package/dist/scaffold/templates.d.ts.map +1 -1
  108. package/dist/scaffold/templates.js +10 -1
  109. package/dist/scaffold/templates.js.map +1 -1
  110. package/dist/server/AgentServer.d.ts +8 -0
  111. package/dist/server/AgentServer.d.ts.map +1 -1
  112. package/dist/server/AgentServer.js +91 -0
  113. package/dist/server/AgentServer.js.map +1 -1
  114. package/dist/server/CapabilityIndex.d.ts.map +1 -1
  115. package/dist/server/CapabilityIndex.js +17 -2
  116. package/dist/server/CapabilityIndex.js.map +1 -1
  117. package/dist/server/routes.d.ts +2 -0
  118. package/dist/server/routes.d.ts.map +1 -1
  119. package/dist/server/routes.js +194 -13
  120. package/dist/server/routes.js.map +1 -1
  121. package/dist/testing/selfActionRegistry.d.ts.map +1 -1
  122. package/dist/testing/selfActionRegistry.js +51 -0
  123. package/dist/testing/selfActionRegistry.js.map +1 -1
  124. package/dist/threadline/AgentTrustManager.d.ts +40 -3
  125. package/dist/threadline/AgentTrustManager.d.ts.map +1 -1
  126. package/dist/threadline/AgentTrustManager.js +55 -7
  127. package/dist/threadline/AgentTrustManager.js.map +1 -1
  128. package/dist/threadline/ThreadlineBootstrap.d.ts +7 -0
  129. package/dist/threadline/ThreadlineBootstrap.d.ts.map +1 -1
  130. package/dist/threadline/ThreadlineBootstrap.js +34 -15
  131. package/dist/threadline/ThreadlineBootstrap.js.map +1 -1
  132. package/dist/threadline/inboundIdLedgerWiring.d.ts +2 -2
  133. package/dist/threadline/relayUnknownSenderTrust.d.ts +136 -0
  134. package/dist/threadline/relayUnknownSenderTrust.d.ts.map +1 -0
  135. package/dist/threadline/relayUnknownSenderTrust.js +208 -0
  136. package/dist/threadline/relayUnknownSenderTrust.js.map +1 -0
  137. package/package.json +2 -1
  138. package/src/data/builtin-manifest.json +65 -65
  139. package/src/data/standards-guard-index.json +1 -1
  140. package/src/data/standards-guard-index.meta.json +2 -2
  141. package/src/data/standards-registry.meta.json +1 -1
  142. package/src/data/state-coherence-registry.json +19 -0
  143. package/src/scaffold/templates/jobs/instar/feedback-factory-execute.md +83 -0
  144. package/src/scaffold/templates.ts +10 -1
  145. package/upgrades/1.3.1337.md +31 -0
  146. package/upgrades/1.3.1338.md +30 -0
  147. package/upgrades/a2a-relay-unknown-sender-trust.eli16.md +21 -0
  148. package/upgrades/feedback-execute-phase2.eli16.md +9 -0
  149. package/upgrades/side-effects/a2a-relay-unknown-sender-trust.md +129 -0
  150. 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
- return `${item.rank}. [${sev}] ${title}${item.summary ? ` — ${String(item.summary).slice(0, 200)}` : ''}`;
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; commitPlan(plan, pin) → note.
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');
@@ -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 ? (r.data.ignoreLive ? 'Done: ignores are live.' : 'Done: ignores are back in practice mode.') : M.triageResultNote(false, r.data);
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":"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"}
1
+ {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/commands/server.ts"],"names":[],"mappings":"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"}
@@ -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;