instar 1.3.1619 → 1.3.1621
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/dist/commands/server.d.ts +6 -0
- package/dist/commands/server.d.ts.map +1 -1
- package/dist/commands/server.js +115 -9
- package/dist/commands/server.js.map +1 -1
- package/dist/core/PostUpdateMigrator.d.ts +6 -0
- package/dist/core/PostUpdateMigrator.d.ts.map +1 -1
- package/dist/core/PostUpdateMigrator.js +24 -0
- package/dist/core/PostUpdateMigrator.js.map +1 -1
- package/dist/core/TopicProfileOrchestrator.d.ts +4 -0
- package/dist/core/TopicProfileOrchestrator.d.ts.map +1 -1
- package/dist/core/TopicProfileOrchestrator.js +14 -1
- package/dist/core/TopicProfileOrchestrator.js.map +1 -1
- package/dist/core/TopicSpawnBriefStore.d.ts +48 -0
- package/dist/core/TopicSpawnBriefStore.d.ts.map +1 -0
- package/dist/core/TopicSpawnBriefStore.js +107 -0
- package/dist/core/TopicSpawnBriefStore.js.map +1 -0
- package/dist/core/componentCategories.d.ts.map +1 -1
- package/dist/core/componentCategories.js +1 -0
- package/dist/core/componentCategories.js.map +1 -1
- package/dist/core/devGatedFeatures.js +1 -1
- package/dist/core/devGatedFeatures.js.map +1 -1
- package/dist/data/llmBenchCoverage.d.ts.map +1 -1
- package/dist/data/llmBenchCoverage.js +5 -0
- package/dist/data/llmBenchCoverage.js.map +1 -1
- package/dist/data/provenanceCoverage.d.ts +2 -0
- package/dist/data/provenanceCoverage.d.ts.map +1 -1
- package/dist/data/provenanceCoverage.js +15 -0
- package/dist/data/provenanceCoverage.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/monitoring/MachineWedgeJudge.d.ts +28 -0
- package/dist/monitoring/MachineWedgeJudge.d.ts.map +1 -0
- package/dist/monitoring/MachineWedgeJudge.js +114 -0
- package/dist/monitoring/MachineWedgeJudge.js.map +1 -0
- package/dist/monitoring/MachineWedgeNotice.d.ts +38 -0
- package/dist/monitoring/MachineWedgeNotice.d.ts.map +1 -0
- package/dist/monitoring/MachineWedgeNotice.js +71 -0
- package/dist/monitoring/MachineWedgeNotice.js.map +1 -0
- package/dist/monitoring/guardManifest.d.ts.map +1 -1
- package/dist/monitoring/guardManifest.js +1 -0
- package/dist/monitoring/guardManifest.js.map +1 -1
- package/dist/monitoring/machineMaintenance/DrainRehearsal.d.ts +6 -0
- package/dist/monitoring/machineMaintenance/DrainRehearsal.d.ts.map +1 -1
- package/dist/monitoring/machineMaintenance/DrainRehearsal.js +7 -2
- package/dist/monitoring/machineMaintenance/DrainRehearsal.js.map +1 -1
- package/dist/monitoring/machineMaintenance/HostMaintenanceStore.d.ts +36 -0
- package/dist/monitoring/machineMaintenance/HostMaintenanceStore.d.ts.map +1 -1
- package/dist/monitoring/machineMaintenance/HostMaintenanceStore.js +54 -0
- package/dist/monitoring/machineMaintenance/HostMaintenanceStore.js.map +1 -1
- package/dist/monitoring/machineMaintenance/WedgeMonitor.d.ts +191 -0
- package/dist/monitoring/machineMaintenance/WedgeMonitor.d.ts.map +1 -0
- package/dist/monitoring/machineMaintenance/WedgeMonitor.js +489 -0
- package/dist/monitoring/machineMaintenance/WedgeMonitor.js.map +1 -0
- package/dist/monitoring/machineMaintenance/readings.d.ts +46 -0
- package/dist/monitoring/machineMaintenance/readings.d.ts.map +1 -1
- package/dist/monitoring/machineMaintenance/readings.js +71 -8
- package/dist/monitoring/machineMaintenance/readings.js.map +1 -1
- package/dist/monitoring/machineMaintenance/wedgeEvidence.d.ts +73 -0
- package/dist/monitoring/machineMaintenance/wedgeEvidence.d.ts.map +1 -0
- package/dist/monitoring/machineMaintenance/wedgeEvidence.js +111 -0
- package/dist/monitoring/machineMaintenance/wedgeEvidence.js.map +1 -0
- package/dist/monitoring/machineMaintenance/wedgeWindow.d.ts +94 -0
- package/dist/monitoring/machineMaintenance/wedgeWindow.d.ts.map +1 -0
- package/dist/monitoring/machineMaintenance/wedgeWindow.js +126 -0
- package/dist/monitoring/machineMaintenance/wedgeWindow.js.map +1 -0
- package/dist/monitoring/selfaction/policies.d.ts.map +1 -1
- package/dist/monitoring/selfaction/policies.js +15 -0
- package/dist/monitoring/selfaction/policies.js.map +1 -1
- package/dist/native/instar-desktop-host +0 -0
- package/dist/scaffold/templates.d.ts.map +1 -1
- package/dist/scaffold/templates.js +2 -1
- package/dist/scaffold/templates.js.map +1 -1
- package/dist/server/CapabilityIndex.js +1 -1
- package/dist/server/CapabilityIndex.js.map +1 -1
- package/dist/server/routes.d.ts +3 -0
- package/dist/server/routes.d.ts.map +1 -1
- package/dist/server/routes.js +56 -12
- package/dist/server/routes.js.map +1 -1
- package/dist/server/sessionSpawnTopicBinding.d.ts +26 -0
- package/dist/server/sessionSpawnTopicBinding.d.ts.map +1 -1
- package/dist/server/sessionSpawnTopicBinding.js +50 -0
- package/dist/server/sessionSpawnTopicBinding.js.map +1 -1
- package/dist/testing/selfActionRegistry.d.ts.map +1 -1
- package/dist/testing/selfActionRegistry.js +63 -0
- package/dist/testing/selfActionRegistry.js.map +1 -1
- package/package.json +1 -1
- package/src/data/builtin-manifest.json +63 -63
- package/src/data/llmBenchCoverage.ts +7 -0
- package/src/data/provenanceCoverage.ts +18 -0
- 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 +2 -1
- package/upgrades/1.3.1620.md +26 -0
- package/upgrades/1.3.1621.md +27 -0
- package/upgrades/eli16/profile-restart-keeps-spawn-brief.md +24 -0
- package/upgrades/side-effects/machine-wedge-dryrun.eli16.md +15 -0
- package/upgrades/side-effects/machine-wedge-dryrun.md +146 -0
- package/upgrades/side-effects/profile-restart-keeps-spawn-brief.md +91 -0
package/dist/server/routes.js
CHANGED
|
@@ -7,6 +7,7 @@ import { getActiveWorkAdmission } from '../core/workAdmission.js';
|
|
|
7
7
|
import { getActiveOverloadShedPlanner } from '../core/OverloadShedPlanner.js';
|
|
8
8
|
import { getActiveDrainRehearsal } from '../monitoring/machineMaintenance/DrainRehearsal.js';
|
|
9
9
|
import { getActiveBrowserCare } from '../monitoring/machineMaintenance/BrowserCare.js';
|
|
10
|
+
import { getActiveWedgeMonitor } from '../monitoring/machineMaintenance/WedgeMonitor.js';
|
|
10
11
|
import { getActiveMachineLockStateReader } from '../core/MachineLockStateReader.js';
|
|
11
12
|
import { fetchMaintenancePool, mergeMaintenancePool, } from './machineMaintenancePool.js';
|
|
12
13
|
import { getActiveSessionPriorityLowerer } from '../core/sessionPriority.js';
|
|
@@ -194,7 +195,7 @@ import { GUARD_MANIFEST } from '../monitoring/guardManifest.js';
|
|
|
194
195
|
import { GuardRegistry } from '../monitoring/GuardRegistry.js';
|
|
195
196
|
import { isPeerUrlAllowedForCredentials } from './peerUrlGuard.js';
|
|
196
197
|
import { poolPeerFetch } from './poolPeerFetch.js';
|
|
197
|
-
import { persistDiskTopicSessionBinding, resolveSessionSpawnTopicBinding } from './sessionSpawnTopicBinding.js';
|
|
198
|
+
import { persistDiskTopicSessionBinding, resolveSessionSpawnTopicBinding, resolveTopicSpawnProfile } from './sessionSpawnTopicBinding.js';
|
|
198
199
|
import { classifyMachineEmptyState } from './poolEmptyState.js';
|
|
199
200
|
import { formatLivenessLine } from '../core/machineLiveness.js';
|
|
200
201
|
import { decorateWithRopeCondition } from './poolRopeCondition.js';
|
|
@@ -10859,10 +10860,30 @@ export function createRoutes(ctx) {
|
|
|
10859
10860
|
res.status(400).json({ error: '"ultracode" must be a boolean' });
|
|
10860
10861
|
return;
|
|
10861
10862
|
}
|
|
10863
|
+
const topicBindingResult = resolveSessionSpawnTopicBinding({ name, topicId, topicName, requireTopicBinding, spawnRole });
|
|
10864
|
+
if (!topicBindingResult.ok) {
|
|
10865
|
+
res.status(400).json({ error: topicBindingResult.error });
|
|
10866
|
+
return;
|
|
10867
|
+
}
|
|
10868
|
+
const parsedTopicId = topicBindingResult.binding.topicId;
|
|
10869
|
+
const cleanTopicName = topicBindingResult.binding.topicName;
|
|
10870
|
+
// A topic-bound spawn honours the topic's profile AT SPAWN TIME (the same
|
|
10871
|
+
// single resolution point spawnSessionForTopic uses) for every axis the
|
|
10872
|
+
// request leaves unset, then records what it launched with. Before this,
|
|
10873
|
+
// the route ignored the profile and recorded nothing, so the profile
|
|
10874
|
+
// orchestrator later restarted the fresh session to "apply" the pin — and
|
|
10875
|
+
// the restart rebuilt context from chat history, which never held this
|
|
10876
|
+
// prompt, so the task was lost.
|
|
10877
|
+
const topicSpawnProfile = resolveTopicSpawnProfile({
|
|
10878
|
+
resolver: parsedTopicId !== undefined ? ctx.topicProfile?.resolver : undefined,
|
|
10879
|
+
topicId: parsedTopicId,
|
|
10880
|
+
requestedFramework: framework,
|
|
10881
|
+
requestedModel: model,
|
|
10882
|
+
});
|
|
10862
10883
|
// Match SessionManager's omitted-framework resolution. A Codex-default
|
|
10863
10884
|
// agent must not pass this guard merely because the request omitted the
|
|
10864
10885
|
// explicit framework and then receive a cosmetic keyword on a Codex turn.
|
|
10865
|
-
const effectiveSpawnFramework = framework
|
|
10886
|
+
const effectiveSpawnFramework = topicSpawnProfile.framework
|
|
10866
10887
|
?? ctx.config.sessions?.framework
|
|
10867
10888
|
?? ctx.config.enabledFrameworks?.[0]
|
|
10868
10889
|
?? 'claude-code';
|
|
@@ -10870,13 +10891,6 @@ export function createRoutes(ctx) {
|
|
|
10870
10891
|
res.status(400).json({ error: '"ultracode" is supported only for framework "claude-code"' });
|
|
10871
10892
|
return;
|
|
10872
10893
|
}
|
|
10873
|
-
const topicBindingResult = resolveSessionSpawnTopicBinding({ name, topicId, topicName, requireTopicBinding, spawnRole });
|
|
10874
|
-
if (!topicBindingResult.ok) {
|
|
10875
|
-
res.status(400).json({ error: topicBindingResult.error });
|
|
10876
|
-
return;
|
|
10877
|
-
}
|
|
10878
|
-
const parsedTopicId = topicBindingResult.binding.topicId;
|
|
10879
|
-
const cleanTopicName = topicBindingResult.binding.topicName;
|
|
10880
10894
|
const persistTopicBinding = (boundTopicId, tmuxSession) => {
|
|
10881
10895
|
if (ctx.telegram?.registerTopicSession) {
|
|
10882
10896
|
ctx.telegram.registerTopicSession(boundTopicId, tmuxSession, cleanTopicName);
|
|
@@ -10890,9 +10904,38 @@ export function createRoutes(ctx) {
|
|
|
10890
10904
|
});
|
|
10891
10905
|
};
|
|
10892
10906
|
try {
|
|
10893
|
-
const session = await ctx.sessionManager.spawnSession({
|
|
10907
|
+
const session = await ctx.sessionManager.spawnSession({
|
|
10908
|
+
name,
|
|
10909
|
+
prompt,
|
|
10910
|
+
model: topicSpawnProfile.model,
|
|
10911
|
+
jobSlug,
|
|
10912
|
+
framework: topicSpawnProfile.framework,
|
|
10913
|
+
ultracode,
|
|
10914
|
+
topicId: parsedTopicId,
|
|
10915
|
+
});
|
|
10894
10916
|
if (parsedTopicId !== undefined) {
|
|
10895
10917
|
persistTopicBinding(parsedTopicId, session.tmuxSession);
|
|
10918
|
+
try {
|
|
10919
|
+
ctx.topicProfile?.spawnBriefs?.record(parsedTopicId, session.tmuxSession, prompt);
|
|
10920
|
+
}
|
|
10921
|
+
catch (err) {
|
|
10922
|
+
// @silent-fallback-ok: the brief only feeds a later profile respawn's
|
|
10923
|
+
// continuation; the spawn itself already succeeded.
|
|
10924
|
+
console.warn(`[sessions/spawn] could not record spawn brief for topic ${parsedTopicId}: ${err instanceof Error ? err.message : String(err)}`);
|
|
10925
|
+
}
|
|
10926
|
+
if (topicSpawnProfile.applied) {
|
|
10927
|
+
try {
|
|
10928
|
+
ctx.topicProfile?.orchestrator?.recordSpawnSuccess(parsedTopicId, {
|
|
10929
|
+
...topicSpawnProfile.applied,
|
|
10930
|
+
framework: (session.framework ?? topicSpawnProfile.applied.framework),
|
|
10931
|
+
});
|
|
10932
|
+
}
|
|
10933
|
+
catch (err) {
|
|
10934
|
+
// @silent-fallback-ok: without the record the boot sweep leaves the
|
|
10935
|
+
// session alone (unknown launch profile is not divergence).
|
|
10936
|
+
console.warn(`[sessions/spawn] could not record launched profile for topic ${parsedTopicId}: ${err instanceof Error ? err.message : String(err)}`);
|
|
10937
|
+
}
|
|
10938
|
+
}
|
|
10896
10939
|
}
|
|
10897
10940
|
res.status(201).json({
|
|
10898
10941
|
...session,
|
|
@@ -12924,7 +12967,7 @@ export function createRoutes(ctx) {
|
|
|
12924
12967
|
res.json(await maintenancePoolView('status', async () => {
|
|
12925
12968
|
const local = getActiveDrainRehearsal();
|
|
12926
12969
|
return local
|
|
12927
|
-
? { body: { ...local.status(), browserCare: getActiveBrowserCare()?.status() ?? null } }
|
|
12970
|
+
? { body: { ...local.status(), browserCare: getActiveBrowserCare()?.status() ?? null, wedge: getActiveWedgeMonitor()?.status() ?? null } }
|
|
12928
12971
|
: { reason: 'not-enabled' };
|
|
12929
12972
|
}));
|
|
12930
12973
|
return;
|
|
@@ -12935,7 +12978,8 @@ export function createRoutes(ctx) {
|
|
|
12935
12978
|
return;
|
|
12936
12979
|
}
|
|
12937
12980
|
// Browser care (Part B) rides the same status, watch-only: null where it does not run (off macOS).
|
|
12938
|
-
|
|
12981
|
+
// Wedge detection (Part E) rides it too, dry-run: null where the sampler is not wired, never a guessed value.
|
|
12982
|
+
res.json({ ...r.status(), browserCare: getActiveBrowserCare()?.status() ?? null, wedge: getActiveWedgeMonitor()?.status() ?? null });
|
|
12939
12983
|
});
|
|
12940
12984
|
// Honest lock reading (Part A): the verdict from the spec's table with every input beside
|
|
12941
12985
|
// it. `unknown` means unknown, never locked. Reads the session on demand (cached 5 s).
|