instar 1.3.455 → 1.3.457
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.map +1 -1
- package/dist/commands/server.js +9 -8
- package/dist/commands/server.js.map +1 -1
- package/dist/core/devAgentGate.d.ts +39 -0
- package/dist/core/devAgentGate.d.ts.map +1 -0
- package/dist/core/devAgentGate.js +37 -0
- package/dist/core/devAgentGate.js.map +1 -0
- package/dist/core/devGatedFeatures.d.ts +41 -0
- package/dist/core/devGatedFeatures.d.ts.map +1 -0
- package/dist/core/devGatedFeatures.js +76 -0
- package/dist/core/devGatedFeatures.js.map +1 -0
- package/dist/server/AgentServer.d.ts.map +1 -1
- package/dist/server/AgentServer.js +3 -2
- package/dist/server/AgentServer.js.map +1 -1
- package/dist/server/routes.d.ts.map +1 -1
- package/dist/server/routes.js +2 -1
- package/dist/server/routes.js.map +1 -1
- package/package.json +4 -2
- package/scripts/lint-dev-agent-dark-gate.js +196 -0
- package/scripts/lint-no-direct-destructive.js +4 -0
- package/src/data/builtin-manifest.json +47 -47
- package/upgrades/1.3.456.md +33 -0
- package/upgrades/1.3.457.md +45 -0
- package/upgrades/side-effects/dev-agent-dark-gate-lint.md +104 -0
- package/upgrades/side-effects/dev-gated-features-registry.md +70 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/commands/server.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;
|
|
1
|
+
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/commands/server.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAcH,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAS3D,OAAO,EAAE,eAAe,EAAiC,MAAM,iCAAiC,CAAC;AAuBjG,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAGvD,OAAO,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAiG7D,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAsBtD;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,yBAAyB,CACvC,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,MAAM,EACf,gBAAgB,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAC1C,OAAO,CAUT;AAyID,UAAU,YAAY;IACpB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb;2DACuD;IACvD,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AA05BD,wBAAgB,mBAAmB,CACjC,QAAQ,EAAE,eAAe,EACzB,cAAc,EAAE,cAAc,EAC9B,YAAY,CAAC,EAAE,YAAY,EAC3B,WAAW,CAAC,EAAE,WAAW,EACzB,WAAW,CAAC,EAAE,WAAW,EACzB,iBAAiB,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,CAAC,EAGvE,UAAU,CAAC,EAAE,MAAM,OAAO,8BAA8B,EAAE,WAAW,GAAG,IAAI,EAK5E,qBAAqB,CAAC,EAAE,MAAM,OAAO,gCAAgC,EAAE,kBAAkB,GAAG,IAAI,EAKhG,mBAAmB,CAAC,EAAE,MAAM,MAAM,GAAG,IAAI,GAAG,SAAS,GACpD,IAAI,CA0UN;AA2lBD,wBAAsB,WAAW,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,CAg3UtE;AAED,wBAAsB,UAAU,CAAC,OAAO,EAAE;IAAE,GAAG,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAsDzE;AAED;;;;;;;;;;;GAWG;AACH,wBAAsB,aAAa,CAAC,OAAO,EAAE;IAAE,GAAG,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAuD5E"}
|
package/dist/commands/server.js
CHANGED
|
@@ -16,6 +16,7 @@ import pc from 'picocolors';
|
|
|
16
16
|
const __dirname = path.dirname(fileURLToPath(import.meta.url));
|
|
17
17
|
import { loadConfig, ensureStateDir, detectTmuxPath, detectGeminiPath } from '../core/Config.js';
|
|
18
18
|
import { isNonFatalUncaught, shouldLogStackForUncaught } from '../core/uncaughtExceptionPolicy.js';
|
|
19
|
+
import { resolveDevAgentGate } from '../core/devAgentGate.js';
|
|
19
20
|
import { closeAllSqlite } from '../core/SqliteRegistry.js';
|
|
20
21
|
import { SessionManager } from '../core/SessionManager.js';
|
|
21
22
|
import { StateManager } from '../core/StateManager.js';
|
|
@@ -2487,7 +2488,7 @@ export async function startServer(options) {
|
|
|
2487
2488
|
let forwardCommitmentMutate;
|
|
2488
2489
|
{
|
|
2489
2490
|
const cjCfg = config.multiMachine?.coherenceJournal;
|
|
2490
|
-
const cjEnabled = cjCfg?.enabled
|
|
2491
|
+
const cjEnabled = resolveDevAgentGate(cjCfg?.enabled, config);
|
|
2491
2492
|
if (cjEnabled) {
|
|
2492
2493
|
try {
|
|
2493
2494
|
const cjMod = await import('../core/CoherenceJournal.js');
|
|
@@ -2953,7 +2954,7 @@ export async function startServer(options) {
|
|
|
2953
2954
|
...(codexThreadlineMcp ? { codexThreadlineMcp } : {}),
|
|
2954
2955
|
respawnBuildContext: {
|
|
2955
2956
|
...(config.sessions.respawnBuildContext ?? {}),
|
|
2956
|
-
enabled: config.sessions.respawnBuildContext?.enabled
|
|
2957
|
+
enabled: resolveDevAgentGate(config.sessions.respawnBuildContext?.enabled, config),
|
|
2957
2958
|
},
|
|
2958
2959
|
subscriptionPathMode: subscriptionPathCfg?.mode ?? 'off',
|
|
2959
2960
|
...(subscriptionPathCfg?.maxRerouted != null ? { subscriptionMaxRerouted: subscriptionPathCfg.maxRerouted } : {}),
|
|
@@ -8242,7 +8243,7 @@ export async function startServer(options) {
|
|
|
8242
8243
|
// LIVE on Echo, DARK on the fleet. The pool is null when disabled, so the
|
|
8243
8244
|
// ThreadlineRouter falls back to the proven cold-spawn path byte-for-byte.
|
|
8244
8245
|
const warmCfg = config.threadline?.warmSessionA2A;
|
|
8245
|
-
const warmEnabled = warmCfg?.enabled
|
|
8246
|
+
const warmEnabled = resolveDevAgentGate(warmCfg?.enabled, config);
|
|
8246
8247
|
const warmSessionPool = warmEnabled
|
|
8247
8248
|
? new WarmSessionPool({
|
|
8248
8249
|
globalCap: warmCfg?.globalCap ?? 3,
|
|
@@ -9824,10 +9825,10 @@ export async function startServer(options) {
|
|
|
9824
9825
|
return rcfg; // reaper config absent ⇒ reaper disabled ⇒ flag moot
|
|
9825
9826
|
return {
|
|
9826
9827
|
...rcfg,
|
|
9827
|
-
cpuAwareActiveProcessKeep: rcfg.cpuAwareActiveProcessKeep
|
|
9828
|
+
cpuAwareActiveProcessKeep: resolveDevAgentGate(rcfg.cpuAwareActiveProcessKeep, config),
|
|
9828
9829
|
// Observe-only busy-orphan detection rides the same dev-gate (dark fleet,
|
|
9829
9830
|
// live on dev agents). Zero risk — it never changes a keep/kill verdict.
|
|
9830
|
-
busyOrphanDetection: rcfg.busyOrphanDetection
|
|
9831
|
+
busyOrphanDetection: resolveDevAgentGate(rcfg.busyOrphanDetection, config),
|
|
9831
9832
|
};
|
|
9832
9833
|
})());
|
|
9833
9834
|
sessionReaper.start();
|
|
@@ -9860,7 +9861,7 @@ export async function startServer(options) {
|
|
|
9860
9861
|
// developmentAgent gate: `enabled` defaults ON for dev agents (dark fleet-
|
|
9861
9862
|
// wide); an explicit config value always wins. `dryRun` is untouched (stays
|
|
9862
9863
|
// true by default) so a dev agent only observes — never kills.
|
|
9863
|
-
return { ...(mcfg ?? {}), enabled: mcfg?.enabled
|
|
9864
|
+
return { ...(mcfg ?? {}), enabled: resolveDevAgentGate(mcfg?.enabled, config) };
|
|
9864
9865
|
})();
|
|
9865
9866
|
const mcpProcessReaper = new McpProcessReaper(makeMcpProcessReaperDeps({
|
|
9866
9867
|
sessionManager,
|
|
@@ -9883,7 +9884,7 @@ export async function startServer(options) {
|
|
|
9883
9884
|
let geminiLoopRunner = null;
|
|
9884
9885
|
{
|
|
9885
9886
|
const gcfg = config.autonomousSessions?.geminiLoopDriver;
|
|
9886
|
-
const enabled = gcfg?.enabled
|
|
9887
|
+
const enabled = resolveDevAgentGate(gcfg?.enabled, config); // dark fleet-wide; live on dev agents
|
|
9887
9888
|
if (enabled) {
|
|
9888
9889
|
const { GeminiLoopRunner } = await import('../monitoring/GeminiLoopRunner.js');
|
|
9889
9890
|
const { createGeminiLoopSpawn, createGeminiHandleCapture, createQuotaBudgetGate } = await import('../monitoring/geminiLoopProduction.js');
|
|
@@ -10488,7 +10489,7 @@ export async function startServer(options) {
|
|
|
10488
10489
|
// decryption (a payload not sealed to our key fails). The OUTBOUND provisioner is wired
|
|
10489
10490
|
// after the MeshRpcClient is constructed (below).
|
|
10490
10491
|
const _secretSyncCfg = config.multiMachine?.secretSync;
|
|
10491
|
-
const _secretSyncEnabled = _secretSyncCfg?.enabled
|
|
10492
|
+
const _secretSyncEnabled = resolveDevAgentGate(_secretSyncCfg?.enabled, config);
|
|
10492
10493
|
// SAFETY: pushing is opt-in SEPARATELY from receiving and DEFAULTS OFF. A machine
|
|
10493
10494
|
// whose local secret store is stale/divergent (e.g. recovered from a key drift) would
|
|
10494
10495
|
// otherwise auto-push its stale set to peers on boot and CLOBBER their good secrets —
|