instar 1.3.1632 → 1.3.1634

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 (39) hide show
  1. package/dashboard/index.html +3 -1
  2. package/dist/commands/server.d.ts.map +1 -1
  3. package/dist/commands/server.js +21 -0
  4. package/dist/commands/server.js.map +1 -1
  5. package/dist/core/PostUpdateMigrator.d.ts +2 -0
  6. package/dist/core/PostUpdateMigrator.d.ts.map +1 -1
  7. package/dist/core/PostUpdateMigrator.js +14 -0
  8. package/dist/core/PostUpdateMigrator.js.map +1 -1
  9. package/dist/data/standards-guard-index.json +1 -1
  10. package/dist/data/standards-guard-index.meta.json +2 -2
  11. package/dist/data/standards-registry.meta.json +1 -1
  12. package/dist/monitoring/PresenceProxy.d.ts +23 -0
  13. package/dist/monitoring/PresenceProxy.d.ts.map +1 -1
  14. package/dist/monitoring/PresenceProxy.js +110 -11
  15. package/dist/monitoring/PresenceProxy.js.map +1 -1
  16. package/dist/native/InstarWedgeCanary.app/Contents/MacOS/InstarWedgeCanary +0 -0
  17. package/dist/native/instar-desktop-host +0 -0
  18. package/dist/server/AgentServer.d.ts.map +1 -1
  19. package/dist/server/AgentServer.js +41 -0
  20. package/dist/server/AgentServer.js.map +1 -1
  21. package/dist/server/CapabilityIndex.js +1 -1
  22. package/dist/server/CapabilityIndex.js.map +1 -1
  23. package/dist/server/mobilePairingRoutes.d.ts.map +1 -1
  24. package/dist/server/mobilePairingRoutes.js +2 -0
  25. package/dist/server/mobilePairingRoutes.js.map +1 -1
  26. package/dist/server/mobileSessionRoutes.d.ts +79 -0
  27. package/dist/server/mobileSessionRoutes.d.ts.map +1 -0
  28. package/dist/server/mobileSessionRoutes.js +192 -0
  29. package/dist/server/mobileSessionRoutes.js.map +1 -0
  30. package/package.json +1 -1
  31. package/src/data/builtin-manifest.json +20 -20
  32. package/src/data/standards-guard-index.json +1 -1
  33. package/src/data/standards-guard-index.meta.json +2 -2
  34. package/src/data/standards-registry.meta.json +1 -1
  35. package/upgrades/1.3.1633.md +21 -0
  36. package/upgrades/1.3.1634.md +21 -0
  37. package/upgrades/side-effects/mobile-open-session.eli16.md +32 -0
  38. package/upgrades/side-effects/mobile-open-session.md +86 -0
  39. package/upgrades/side-effects/presence-follows-replacement-session.md +92 -0
@@ -8095,7 +8095,9 @@
8095
8095
  const qs = p.toString();
8096
8096
  history.replaceState(null, '', window.location.pathname + (qs ? '?' + qs : ''));
8097
8097
  }
8098
- } else if (++attempts < 15) {
8098
+ } else if (++attempts < 50) {
8099
+ // ~10 s: a phone opening an "Open session" link over a tunnel can take a few
8100
+ // seconds to receive the first session list after the PIN.
8099
8101
  setTimeout(waitForSessions, 200);
8100
8102
  }
8101
8103
  };
@@ -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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"}
@@ -562,6 +562,10 @@ let _agentServerRef = null;
562
562
  // TopicReachabilityVerifier (constructed in the outer scope) can probe whether a topic
563
563
  // is stuck-spawning. Assigned inside wireTelegramRouting; null until routing is wired.
564
564
  let _spawningTopicsRegistryRef = null;
565
+ // Slack channels with a session spawn in flight (channelId -> count). Read by
566
+ // PresenceProxy.isSessionStarting so a session still starting for a message is
567
+ // never reported as "stopped".
568
+ const _slackSpawningChannels = new Map();
565
569
  // Module-level reference for session resume mapping.
566
570
  // Set once in startServer() and used by spawnSessionForTopic/respawnSessionForTopic.
567
571
  let _topicResumeMap = null;
@@ -9428,6 +9432,9 @@ export async function startServer(options) {
9428
9432
  console.warn(`[spawn-admission] slack admit error (fail-open): ${err instanceof Error ? err.message : String(err)}`);
9429
9433
  }
9430
9434
  }
9435
+ // The unanswered-message watcher reads this: a session starting for
9436
+ // this channel is not "stopped" (false-alarm fix, 2026-11-03).
9437
+ _slackSpawningChannels.set(channelId, (_slackSpawningChannels.get(channelId) ?? 0) + 1);
9431
9438
  try {
9432
9439
  const newSessionName = await sessionManager.spawnInteractiveSession(bootstrapMessage, targetSession, {
9433
9440
  resumeSessionId,
@@ -9455,6 +9462,13 @@ export async function startServer(options) {
9455
9462
  console.error(`[slack] Session spawn failed: ${err instanceof Error ? err.message : err}`);
9456
9463
  return 'refused';
9457
9464
  }
9465
+ finally {
9466
+ const left = (_slackSpawningChannels.get(channelId) ?? 1) - 1;
9467
+ if (left > 0)
9468
+ _slackSpawningChannels.set(channelId, left);
9469
+ else
9470
+ _slackSpawningChannels.delete(channelId);
9471
+ }
9458
9472
  };
9459
9473
  // Expose to the owner-side mesh bridge (a forwarded Slack message replays
9460
9474
  // through the same dispatch on the machine that owns the conversation).
@@ -15587,6 +15601,13 @@ export async function startServer(options) {
15587
15601
  return telegram?.getSessionForTopic(topicId) ?? null;
15588
15602
  },
15589
15603
  isSessionAlive: (name) => sessionManager.isSessionAlive(name),
15604
+ // A spawn in flight for this conversation is not a stopped session.
15605
+ isSessionStarting: (topicId) => {
15606
+ const slackChId = slackProxyChannelMap.get(topicId);
15607
+ if (slackChId)
15608
+ return (_slackSpawningChannels.get(slackChId) ?? 0) > 0;
15609
+ return _spawningTopicsRegistryRef?.has(topicId) ?? false;
15610
+ },
15590
15611
  sendMessage: async (topicId, text, metadata) => {
15591
15612
  // Check if this is a Slack synthetic ID (negative = Slack channel)
15592
15613
  const slackChannelId = slackProxyChannelMap.get(topicId);