instar 1.3.561 → 1.3.563
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 +33 -4
- package/dist/commands/server.js.map +1 -1
- package/dist/core/inboundQueueConfig.d.ts +17 -0
- package/dist/core/inboundQueueConfig.d.ts.map +1 -1
- package/dist/core/inboundQueueConfig.js +16 -0
- package/dist/core/inboundQueueConfig.js.map +1 -1
- package/dist/messaging/slack/sanitize.d.ts +17 -0
- package/dist/messaging/slack/sanitize.d.ts.map +1 -1
- package/dist/messaging/slack/sanitize.js +23 -0
- package/dist/messaging/slack/sanitize.js.map +1 -1
- package/package.json +1 -1
- package/src/data/builtin-manifest.json +2 -2
- package/upgrades/1.3.562.md +46 -0
- package/upgrades/1.3.563.md +32 -0
- package/upgrades/eli16/slack-updates-channel-slug.md +16 -0
- package/upgrades/side-effects/inbound-queue-boot-order-fix.md +72 -0
- package/upgrades/side-effects/slack-updates-channel-slug.md +46 -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;AAkCH,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;AAiH7D,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;AAy3CD,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,CA8eN;AA2lBD,wBAAsB,WAAW,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,CA26btE;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
|
@@ -18,6 +18,7 @@ import { loadConfig, ensureStateDir, detectTmuxPath, detectGeminiPath } from '..
|
|
|
18
18
|
import { isNonFatalUncaught, shouldLogStackForUncaught } from '../core/uncaughtExceptionPolicy.js';
|
|
19
19
|
import { resolveDevAgentGate, resolveStateSyncStores } from '../core/devAgentGate.js';
|
|
20
20
|
import { parseProfileTrigger, platformMessageIdFrom } from '../core/topicProfileIngress.js';
|
|
21
|
+
import { slugifyChannelName } from '../messaging/slack/sanitize.js';
|
|
21
22
|
import { TopicProfileOrchestrator, resolvedToApplied, } from '../core/TopicProfileOrchestrator.js';
|
|
22
23
|
import { CodexResumeMap } from '../core/CodexResumeMap.js';
|
|
23
24
|
import { paneIdleWithEmptyInput } from '../core/ModelSwapService.js';
|
|
@@ -2357,7 +2358,7 @@ async function ensureSlackAttentionChannel(slack, state) {
|
|
|
2357
2358
|
}
|
|
2358
2359
|
try {
|
|
2359
2360
|
const agentName = slack.config?.workspaceName?.replace(/-agent$/, '') || 'agent';
|
|
2360
|
-
const channelId = await slack.createChannel(`${agentName}-sys-attention`);
|
|
2361
|
+
const channelId = await slack.createChannel(slugifyChannelName(`${agentName}-sys-attention`));
|
|
2361
2362
|
state.set('slack-attention-channel', channelId);
|
|
2362
2363
|
await slack.sendToChannel(channelId, `Attention channel active. Blocked tasks, critical errors, quota alerts, and anything that needs your attention will appear here.`);
|
|
2363
2364
|
console.log(pc.green(` Created Slack Attention channel: ${channelId}`));
|
|
@@ -2375,7 +2376,7 @@ async function ensureSlackUpdatesChannel(slack, state) {
|
|
|
2375
2376
|
return;
|
|
2376
2377
|
try {
|
|
2377
2378
|
const agentName = slack.config?.workspaceName?.replace(/-agent$/, '') || 'agent';
|
|
2378
|
-
const channelId = await slack.createChannel(`${agentName}-sys-updates`);
|
|
2379
|
+
const channelId = await slack.createChannel(slugifyChannelName(`${agentName}-sys-updates`));
|
|
2379
2380
|
state.set('slack-updates-channel', channelId);
|
|
2380
2381
|
await slack.sendToChannel(channelId, `Updates channel active. Version updates, new features, and system announcements will appear here.`);
|
|
2381
2382
|
console.log(` Created Slack Updates channel: ${channelId}`);
|
|
@@ -15031,7 +15032,34 @@ export async function startServer(options) {
|
|
|
15031
15032
|
// wouldEnqueue/wouldHold/wouldRefuse counters ARE the promotion
|
|
15032
15033
|
// evidence and /pool/queue must serve them. The boot sweep already
|
|
15033
15034
|
// gate-expired any live→dry-run residual rows.
|
|
15034
|
-
|
|
15035
|
+
//
|
|
15036
|
+
// BOOT-ORDER FIX: do NOT consult `_sessionPoolStage()` here — at this
|
|
15037
|
+
// point in the synchronous boot flow it is still the line-~443 stub
|
|
15038
|
+
// (`() => 'dark'`); the real impl is only assigned ~350 lines BELOW
|
|
15039
|
+
// (the `_sessionPoolStage = () => { ... }` reassignment after the
|
|
15040
|
+
// peer-presence puller is wired). Reading the stub made the gate
|
|
15041
|
+
// ALWAYS false, so the inbound-queue engine never constructed even
|
|
15042
|
+
// when correctly configured, and `/pool/queue` 503'd forever. Resolve
|
|
15043
|
+
// the stage INLINE from config here — mirroring the line-~16045 impl
|
|
15044
|
+
// exactly (liveConfig override with the static config block as the
|
|
15045
|
+
// fallback) — instead of depending on the not-yet-wired ref.
|
|
15046
|
+
const _sessionPoolStageNow = (() => {
|
|
15047
|
+
try {
|
|
15048
|
+
const fallback = (config.multiMachine?.sessionPool ?? {});
|
|
15049
|
+
const live = liveConfig.get('multiMachine.sessionPool', fallback);
|
|
15050
|
+
return iqcMod.resolveSessionPoolStage(live);
|
|
15051
|
+
}
|
|
15052
|
+
catch {
|
|
15053
|
+
// @silent-fallback-ok: a config-read failure resolves the stage
|
|
15054
|
+
// to 'dark' (the inert default) → the queue simply does not
|
|
15055
|
+
// construct this boot, byte-identical to the ships-dark default.
|
|
15056
|
+
// This is the SAFE direction (fail-closed: no queue), not a
|
|
15057
|
+
// degraded capability worth a DegradationReporter event. Mirrors
|
|
15058
|
+
// the live _sessionPoolStage getter's identical guard below.
|
|
15059
|
+
return 'dark';
|
|
15060
|
+
}
|
|
15061
|
+
})();
|
|
15062
|
+
if (qcfg.enabled && _sessionPoolStageNow !== 'dark') {
|
|
15035
15063
|
const inv = iqcMod.validateInboundQueueInvariants(qcfg, hcfg);
|
|
15036
15064
|
if (!inv.ok) {
|
|
15037
15065
|
for (const v of inv.violations) {
|
|
@@ -15364,11 +15392,12 @@ export async function startServer(options) {
|
|
|
15364
15392
|
const peerPresenceTimer = setInterval(() => { void peerPresencePuller.pullOnce(); }, 30_000);
|
|
15365
15393
|
if (typeof peerPresenceTimer.unref === 'function')
|
|
15366
15394
|
peerPresenceTimer.unref();
|
|
15395
|
+
const { resolveSessionPoolStage: _resolveSessionPoolStage } = await import('../core/inboundQueueConfig.js');
|
|
15367
15396
|
_sessionPoolStage = () => {
|
|
15368
15397
|
try {
|
|
15369
15398
|
const fallback = (config.multiMachine?.sessionPool ?? {});
|
|
15370
15399
|
const live = liveConfig.get('multiMachine.sessionPool', fallback);
|
|
15371
|
-
return
|
|
15400
|
+
return _resolveSessionPoolStage(live);
|
|
15372
15401
|
}
|
|
15373
15402
|
catch {
|
|
15374
15403
|
return 'dark';
|