instar 1.3.1637 → 1.3.1639

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 (66) hide show
  1. package/dist/commands/server.d.ts.map +1 -1
  2. package/dist/commands/server.js +22 -8
  3. package/dist/commands/server.js.map +1 -1
  4. package/dist/core/DesktopHost.d.ts +4 -2
  5. package/dist/core/DesktopHost.d.ts.map +1 -1
  6. package/dist/core/DesktopHost.js.map +1 -1
  7. package/dist/core/DesktopProbeReadiness.d.ts +1 -0
  8. package/dist/core/DesktopProbeReadiness.d.ts.map +1 -1
  9. package/dist/core/DesktopProbeReadiness.js +11 -2
  10. package/dist/core/DesktopProbeReadiness.js.map +1 -1
  11. package/dist/core/HyprlandDesktopHost.d.ts +150 -0
  12. package/dist/core/HyprlandDesktopHost.d.ts.map +1 -0
  13. package/dist/core/HyprlandDesktopHost.js +569 -0
  14. package/dist/core/HyprlandDesktopHost.js.map +1 -0
  15. package/dist/core/LinuxDesktopHost.d.ts +1 -0
  16. package/dist/core/LinuxDesktopHost.d.ts.map +1 -1
  17. package/dist/core/LinuxDesktopHost.js +7 -4
  18. package/dist/core/LinuxDesktopHost.js.map +1 -1
  19. package/dist/core/SessionDrainRunner.d.ts +4 -2
  20. package/dist/core/SessionDrainRunner.d.ts.map +1 -1
  21. package/dist/core/SessionDrainRunner.js +2 -2
  22. package/dist/core/SessionDrainRunner.js.map +1 -1
  23. package/dist/core/TopicProfileOrchestrator.d.ts.map +1 -1
  24. package/dist/core/TopicProfileOrchestrator.js +2 -1
  25. package/dist/core/TopicProfileOrchestrator.js.map +1 -1
  26. package/dist/core/WaylandVirtualPointer.d.ts +31 -0
  27. package/dist/core/WaylandVirtualPointer.d.ts.map +1 -0
  28. package/dist/core/WaylandVirtualPointer.js +171 -0
  29. package/dist/core/WaylandVirtualPointer.js.map +1 -0
  30. package/dist/data/standards-guard-index.json +1 -1
  31. package/dist/data/standards-guard-index.meta.json +2 -2
  32. package/dist/data/standards-registry.meta.json +1 -1
  33. package/dist/messaging/plainNoticeCheck.d.ts +9 -0
  34. package/dist/messaging/plainNoticeCheck.d.ts.map +1 -0
  35. package/dist/messaging/plainNoticeCheck.js +68 -0
  36. package/dist/messaging/plainNoticeCheck.js.map +1 -0
  37. package/dist/messaging/shared/isSystemOrProxyMessage.d.ts +0 -24
  38. package/dist/messaging/shared/isSystemOrProxyMessage.d.ts.map +1 -1
  39. package/dist/messaging/shared/isSystemOrProxyMessage.js +6 -3
  40. package/dist/messaging/shared/isSystemOrProxyMessage.js.map +1 -1
  41. package/dist/messaging/userNotices.d.ts +47 -0
  42. package/dist/messaging/userNotices.d.ts.map +1 -0
  43. package/dist/messaging/userNotices.js +79 -0
  44. package/dist/messaging/userNotices.js.map +1 -0
  45. package/dist/native/InstarWedgeCanary.app/Contents/MacOS/InstarWedgeCanary +0 -0
  46. package/dist/native/instar-desktop-host +0 -0
  47. package/dist/scaffold/templates.d.ts.map +1 -1
  48. package/dist/scaffold/templates.js +2 -1
  49. package/dist/scaffold/templates.js.map +1 -1
  50. package/dist/server/AgentServer.js +4 -4
  51. package/dist/server/AgentServer.js.map +1 -1
  52. package/package.json +4 -3
  53. package/scripts/lint-plain-user-notices.mjs +191 -0
  54. package/scripts/plain-user-notices-baseline.json +6 -0
  55. package/src/data/builtin-manifest.json +3 -3
  56. package/src/data/plain-notice-terms.json +38 -0
  57. package/src/data/standards-guard-index.json +1 -1
  58. package/src/data/standards-guard-index.meta.json +2 -2
  59. package/src/data/standards-registry.meta.json +1 -1
  60. package/src/scaffold/templates.ts +2 -1
  61. package/upgrades/1.3.1638.md +21 -0
  62. package/upgrades/1.3.1639.md +24 -0
  63. package/upgrades/side-effects/hyprland-remote-desktop.eli16.md +39 -0
  64. package/upgrades/side-effects/hyprland-remote-desktop.md +91 -0
  65. package/upgrades/side-effects/plain-user-notices.eli16.md +15 -0
  66. package/upgrades/side-effects/plain-user-notices.md +76 -0
@@ -1 +1 @@
1
- {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/commands/server.ts"],"names":[],"mappings":"AAwHA,OAAO,EAAE,cAAc,EAAwD,MAAM,2BAA2B,CAAC;AAgBjH,OAAO,EAAE,eAAe,EAAiC,MAAM,iCAAiC,CAAC;AA6BjG,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAGvD,OAAO,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AA8J7D,OAAO,KAAK,EAAW,oBAAoB,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AACjG,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AA4GtD,wBAAgB,yBAAyB,CACvC,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,MAAM,EACf,gBAAgB,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAC1C,OAAO,CAUT;AA0ID,UAAU,YAAY;IACpB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb;2DACuD;IACvD,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AA+DD,+EAA+E;AAC/E,wBAAgB,qCAAqC,CACnD,SAAS,EAAE,IAAI,CAAC,OAAO,2BAA2B,EAAE,cAAc,EAAE,QAAQ,CAAC,GAAG,IAAI,EACpF,OAAO,EAAE,MAAM,GACd,IAAI,CAEN;AAglBD,wBAAsB,oBAAoB,CACxC,cAAc,EAAE,cAAc,EAC9B,QAAQ,EAAE,eAAe,EACzB,WAAW,EAAE,MAAM,EACnB,OAAO,EAAE,MAAM,EACf,aAAa,CAAC,EAAE,MAAM,EACtB,WAAW,CAAC,EAAE,WAAW,EACzB,WAAW,CAAC,EAAE,WAAW,EACzB,kBAAkB,CAAC,EAAE,MAAM;AAC3B;;qCAEqC;AACrC,WAAW,CAAC,EAAE;IAAE,UAAU,CAAC,EAAE,MAAM,CAAC;IAAC,SAAS,CAAC,EAAE,MAAM,CAAA;CAAE;AACzD;;wEAEwE;AACxE,SAAS,CAAC,EAAE;IACV,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,qBAAqB,CAAC,EAAE,OAAO,CAAC;IAChC;;;sEAGkE;IAClE,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB;;;;4BAIwB;IACxB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB,GACA,OAAO,CAAC,MAAM,CAAC,CA6ZjB;AA0xBD;;;;;;;;GAQG;AACH,wBAAgB,wBAAwB,CACtC,MAAM,EAAE,YAAY,EACpB,YAAY,EAAE,oBAAoB,GAAG,IAAI,GACxC;IACD,YAAY,EAAE,oBAAoB,GAAG,IAAI,CAAC;IAC1C,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,OAAO,CAAC;IAChB,aAAa,EAAE,MAAM,CAAC;IACtB,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,MAAM,GAAG,UAAU,GAAG,SAAS,CAAC;IAC3C,QAAQ,EAAE,MAAM,CAAC;CAClB,CAqBA;AAED,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,EAQrD,oBAAoB,CAAC,EAAE,MAAM;IAC3B,YAAY,EAAE,OAAO,kBAAkB,EAAE,oBAAoB,GAAG,IAAI,CAAC;IACrE,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,OAAO,CAAC;IAChB,aAAa,EAAE,MAAM,CAAC;IACtB,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,MAAM,GAAG,UAAU,GAAG,SAAS,CAAC;IAC3C,QAAQ,EAAE,MAAM,CAAC;CAClB,GAAG,IAAI,GACP,IAAI,CAo4BN;AA+pBD,wBAAsB,WAAW,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,CAok2BtE;AAED,wBAAsB,UAAU,CAAC,OAAO,EAAE;IAAE,GAAG,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAuDzE;AA+BD,wBAAsB,aAAa,CAAC,OAAO,EAAE;IAAE,GAAG,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAkE5E"}
1
+ {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/commands/server.ts"],"names":[],"mappings":"AAyHA,OAAO,EAAE,cAAc,EAAwD,MAAM,2BAA2B,CAAC;AAgBjH,OAAO,EAAE,eAAe,EAAiC,MAAM,iCAAiC,CAAC;AA6BjG,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAGvD,OAAO,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AA8J7D,OAAO,KAAK,EAAW,oBAAoB,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AACjG,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AA4GtD,wBAAgB,yBAAyB,CACvC,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,MAAM,EACf,gBAAgB,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAC1C,OAAO,CAUT;AA0ID,UAAU,YAAY;IACpB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb;2DACuD;IACvD,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AA+DD,+EAA+E;AAC/E,wBAAgB,qCAAqC,CACnD,SAAS,EAAE,IAAI,CAAC,OAAO,2BAA2B,EAAE,cAAc,EAAE,QAAQ,CAAC,GAAG,IAAI,EACpF,OAAO,EAAE,MAAM,GACd,IAAI,CAEN;AAglBD,wBAAsB,oBAAoB,CACxC,cAAc,EAAE,cAAc,EAC9B,QAAQ,EAAE,eAAe,EACzB,WAAW,EAAE,MAAM,EACnB,OAAO,EAAE,MAAM,EACf,aAAa,CAAC,EAAE,MAAM,EACtB,WAAW,CAAC,EAAE,WAAW,EACzB,WAAW,CAAC,EAAE,WAAW,EACzB,kBAAkB,CAAC,EAAE,MAAM;AAC3B;;qCAEqC;AACrC,WAAW,CAAC,EAAE;IAAE,UAAU,CAAC,EAAE,MAAM,CAAC;IAAC,SAAS,CAAC,EAAE,MAAM,CAAA;CAAE;AACzD;;wEAEwE;AACxE,SAAS,CAAC,EAAE;IACV,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,qBAAqB,CAAC,EAAE,OAAO,CAAC;IAChC;;;sEAGkE;IAClE,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB;;;;4BAIwB;IACxB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB,GACA,OAAO,CAAC,MAAM,CAAC,CA6ZjB;AA8xBD;;;;;;;;GAQG;AACH,wBAAgB,wBAAwB,CACtC,MAAM,EAAE,YAAY,EACpB,YAAY,EAAE,oBAAoB,GAAG,IAAI,GACxC;IACD,YAAY,EAAE,oBAAoB,GAAG,IAAI,CAAC;IAC1C,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,OAAO,CAAC;IAChB,aAAa,EAAE,MAAM,CAAC;IACtB,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,MAAM,GAAG,UAAU,GAAG,SAAS,CAAC;IAC3C,QAAQ,EAAE,MAAM,CAAC;CAClB,CAqBA;AAED,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,EAQrD,oBAAoB,CAAC,EAAE,MAAM;IAC3B,YAAY,EAAE,OAAO,kBAAkB,EAAE,oBAAoB,GAAG,IAAI,CAAC;IACrE,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,OAAO,CAAC;IAChB,aAAa,EAAE,MAAM,CAAC;IACtB,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,MAAM,GAAG,UAAU,GAAG,SAAS,CAAC;IAC3C,QAAQ,EAAE,MAAM,CAAC;CAClB,GAAG,IAAI,GACP,IAAI,CAo4BN;AA+pBD,wBAAsB,WAAW,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,CA4k2BtE;AAED,wBAAsB,UAAU,CAAC,OAAO,EAAE;IAAE,GAAG,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAuDzE;AA+BD,wBAAsB,aAAa,CAAC,OAAO,EAAE;IAAE,GAAG,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAkE5E"}
@@ -85,6 +85,7 @@ import { slackReplyRelayReadiness } from '../core/SlackReplyRelayInstaller.js';
85
85
  import { claimSuspensionExcludesPin } from '../core/TopicClaimAnnotationStore.js';
86
86
  import { parseProfileTrigger, platformMessageIdFrom } from '../core/topicProfileIngress.js';
87
87
  import { NewTopicDefaultStore, evaluateSessionPoolLocalClaim, createSpawnForTopic, createDashboardPoolClaimOps, seedTopicProfileAtCreation } from '../core/dashboardTopicProfile.js';
88
+ import { movedMachinesMidStepNotice, SESSION_RESTARTING_NOTICE, SESSION_BACK_NOTICE } from '../messaging/userNotices.js';
88
89
  import { parseDashboardCreatePayload, safeMachineLabel, createDashboardCreateStartRunner } from '../core/dashboardMachineChoice.js';
89
90
  import { slugifyChannelName } from '../messaging/slack/sanitize.js';
90
91
  import { TopicProfileOrchestrator, resolvedToApplied, } from '../core/TopicProfileOrchestrator.js';
@@ -1563,14 +1564,18 @@ async function respawnSessionForTopic(sessionManager, telegram, targetSession, t
1563
1564
  : latestMessage;
1564
1565
  const newSessionName = await spawnSessionForTopic(sessionManager, telegram, topicName, topicId, effectiveMessage, topicMemory, userProfile, undefined, (options?.configHome || options?.accountId) ? { configHome: options?.configHome, accountId: options?.accountId } : undefined, options?.awaitInitialInjection ? { awaitInitialInjection: true } : undefined);
1565
1566
  telegram.registerTopicSession(topicId, newSessionName, topicName);
1566
- if (!options?.silent) {
1567
+ // `quietAfterRespawn`: the caller already told the person a restart is under way
1568
+ // for their message (the dead-session and too-long paths), and the reply itself
1569
+ // confirms it — a second "back" note is lifecycle narration (Near-Silent
1570
+ // Notifications; UX standard Rule 8). Every other caller confirms once.
1571
+ if (!options?.silent && !options?.quietAfterRespawn) {
1567
1572
  // The respawn already succeeded. A held or failed notice must not turn it
1568
1573
  // into a reported failure (the caller would respawn again: a duplicate session).
1569
1574
  try {
1570
- await telegram.sendToTopic(topicId, `Session respawned.`);
1575
+ await telegram.sendToTopic(topicId, SESSION_BACK_NOTICE);
1571
1576
  }
1572
1577
  catch (err) {
1573
- console.warn(`[telegram→session] Respawned for topic ${topicId}, but the "Session respawned." notice was not sent: ${err instanceof Error ? err.message : String(err)}`);
1578
+ console.warn(`[telegram→session] Respawned for topic ${topicId}, but the back-up notice was not sent: ${err instanceof Error ? err.message : String(err)}`);
1574
1579
  }
1575
1580
  }
1576
1581
  console.log(`[telegram→session] Respawned "${newSessionName}" for topic ${topicId}`);
@@ -2834,7 +2839,7 @@ getHubClassifierDeps) {
2834
2839
  if (_topicResumeMap) {
2835
2840
  _topicResumeMap.remove(topicId);
2836
2841
  }
2837
- respawnSessionForTopic(sessionManager, telegram, targetSession, topicId, text, topicMemory, resolvedUser ?? undefined)
2842
+ respawnSessionForTopic(sessionManager, telegram, targetSession, topicId, text, topicMemory, resolvedUser ?? undefined, undefined, { quietAfterRespawn: true })
2838
2843
  .then(() => confirmLocalSessionPoolClaim())
2839
2844
  .catch(err => {
2840
2845
  console.error(`[telegram→session] Context exhaustion respawn failed:`, err);
@@ -2858,7 +2863,7 @@ getHubClassifierDeps) {
2858
2863
  return;
2859
2864
  }
2860
2865
  const _spawnTokB = spawningTopics.add(topicId);
2861
- sendDeterministicTelegramNotice(telegram, 'session-lifecycle', topicId, `🔄 Session restarting — message queued.`).catch(() => {
2866
+ sendDeterministicTelegramNotice(telegram, 'session-lifecycle', topicId, SESSION_RESTARTING_NOTICE).catch(() => {
2862
2867
  DegradationReporter.getInstance().report({
2863
2868
  feature: 'telegram-session-lifecycle-notice',
2864
2869
  primary: 'Confirm delivery of the recorded session lifecycle notice',
@@ -2867,7 +2872,7 @@ getHubClassifierDeps) {
2867
2872
  impact: 'The notice may be held or uncertain; no replacement send is authorized',
2868
2873
  });
2869
2874
  });
2870
- respawnSessionForTopic(sessionManager, telegram, targetSession, topicId, text, topicMemory, resolvedUser ?? undefined)
2875
+ respawnSessionForTopic(sessionManager, telegram, targetSession, topicId, text, topicMemory, resolvedUser ?? undefined, undefined, { quietAfterRespawn: true })
2871
2876
  .then(() => confirmLocalSessionPoolClaim())
2872
2877
  .catch(err => {
2873
2878
  console.error(`[telegram→session] Respawn failed:`, err);
@@ -24987,12 +24992,21 @@ export async function startServer(options) {
24987
24992
  });
24988
24993
  },
24989
24994
  markInterrupted: (topic) => { autoMod.markAutonomousInterruptedMidTask(config.stateDir, topic); },
24990
- notifyInterrupted: (topic, target, detail) => {
24995
+ notifyInterrupted: (topic, target) => {
24991
24996
  const topicNum = Number(topic);
24992
24997
  if (!telegram || !Number.isFinite(topicNum))
24993
24998
  return;
24999
+ // Sent even when the session announced the move itself: that note is
25000
+ // optional and written BEFORE the cut, so this is the only record that
25001
+ // the last step was cut off. The person sees the machine's nickname
25002
+ // (never its id — Rule 7); the bound and timings stay in the audit row.
25003
+ let targetName = null;
25004
+ try {
25005
+ targetName = meshIdMgr.getActiveMachines().find((m) => m.machineId === target)?.entry.nickname ?? null;
25006
+ }
25007
+ catch { /* @silent-fallback-ok — unresolved name is stated plainly ("another machine"), per Rule 7 */ }
24994
25008
  void telegram
24995
- .sendToTopic(topicNum, `This conversation moved machines mid-task (${detail}). Work resumes on the new machine — the final turn before the move may be partial.`)
25009
+ .sendToTopic(topicNum, movedMachinesMidStepNotice(targetName))
24996
25010
  .catch(() => { });
24997
25011
  },
24998
25012
  transferDeliveryLedger: createInboundDeliveryTransferStep({