instar 1.3.1601 → 1.3.1602

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 (62) hide show
  1. package/dist/commands/init.d.ts +7 -0
  2. package/dist/commands/init.d.ts.map +1 -1
  3. package/dist/commands/init.js +8 -1
  4. package/dist/commands/init.js.map +1 -1
  5. package/dist/commands/server.d.ts.map +1 -1
  6. package/dist/commands/server.js +38 -0
  7. package/dist/commands/server.js.map +1 -1
  8. package/dist/core/BrowserCareProbes.d.ts +15 -0
  9. package/dist/core/BrowserCareProbes.d.ts.map +1 -0
  10. package/dist/core/BrowserCareProbes.js +78 -0
  11. package/dist/core/BrowserCareProbes.js.map +1 -0
  12. package/dist/core/MachineLockStateReader.d.ts +34 -0
  13. package/dist/core/MachineLockStateReader.d.ts.map +1 -0
  14. package/dist/core/MachineLockStateReader.js +114 -0
  15. package/dist/core/MachineLockStateReader.js.map +1 -0
  16. package/dist/core/PostUpdateMigrator.d.ts +6 -0
  17. package/dist/core/PostUpdateMigrator.d.ts.map +1 -1
  18. package/dist/core/PostUpdateMigrator.js +25 -0
  19. package/dist/core/PostUpdateMigrator.js.map +1 -1
  20. package/dist/core/types.d.ts +10 -0
  21. package/dist/core/types.d.ts.map +1 -1
  22. package/dist/core/types.js.map +1 -1
  23. package/dist/data/standards-guard-index.json +1 -1
  24. package/dist/data/standards-guard-index.meta.json +2 -2
  25. package/dist/data/standards-registry.meta.json +1 -1
  26. package/dist/monitoring/machineMaintenance/BrowserCare.d.ts +166 -0
  27. package/dist/monitoring/machineMaintenance/BrowserCare.d.ts.map +1 -0
  28. package/dist/monitoring/machineMaintenance/BrowserCare.js +334 -0
  29. package/dist/monitoring/machineMaintenance/BrowserCare.js.map +1 -0
  30. package/dist/monitoring/machineMaintenance/lockState.d.ts +34 -0
  31. package/dist/monitoring/machineMaintenance/lockState.d.ts.map +1 -0
  32. package/dist/monitoring/machineMaintenance/lockState.js +53 -0
  33. package/dist/monitoring/machineMaintenance/lockState.js.map +1 -0
  34. package/dist/monitoring/machineMaintenance/readings.d.ts +4 -0
  35. package/dist/monitoring/machineMaintenance/readings.d.ts.map +1 -1
  36. package/dist/monitoring/machineMaintenance/readings.js +2 -1
  37. package/dist/monitoring/machineMaintenance/readings.js.map +1 -1
  38. package/dist/native/instar-desktop-host +0 -0
  39. package/dist/scaffold/templates.d.ts.map +1 -1
  40. package/dist/scaffold/templates.js +2 -1
  41. package/dist/scaffold/templates.js.map +1 -1
  42. package/dist/server/CapabilityIndex.js +2 -2
  43. package/dist/server/CapabilityIndex.js.map +1 -1
  44. package/dist/server/routes.d.ts.map +1 -1
  45. package/dist/server/routes.js +19 -1
  46. package/dist/server/routes.js.map +1 -1
  47. package/package.json +1 -1
  48. package/scripts/blocking-decision-surfaces-baseline.json +22 -2
  49. package/src/data/builtin-manifest.json +63 -63
  50. package/src/data/standards-guard-index.json +1 -1
  51. package/src/data/standards-guard-index.meta.json +2 -2
  52. package/src/data/standards-registry.meta.json +1 -1
  53. package/src/data/state-coherence-registry.json +37 -0
  54. package/src/scaffold/templates.ts +2 -1
  55. package/src/templates/scripts/browser/chrome-close.sh +97 -0
  56. package/src/templates/scripts/browser/chrome-js.sh +2 -0
  57. package/src/templates/scripts/browser/chrome-launch.sh +16 -3
  58. package/src/templates/scripts/browser/chrome-ledger.sh +49 -0
  59. package/src/templates/scripts/browser/chrome-renew.sh +38 -0
  60. package/src/templates/scripts/browser/chrome-unsaved.sh +83 -0
  61. package/upgrades/1.3.1602.md +24 -0
  62. package/upgrades/side-effects/machine-self-maintenance-browser-care-lock-reading.md +98 -0
@@ -22870,6 +22870,44 @@ export async function startServer(options) {
22870
22870
  });
22871
22871
  setActiveDrainRehearsal(rehearsal);
22872
22872
  rehearsal.start();
22873
+ // Honest lock reading (Part A): a read of the session, never the flag alone.
22874
+ const { MachineLockStateReader, setActiveMachineLockStateReader } = await import('../core/MachineLockStateReader.js');
22875
+ setActiveMachineLockStateReader(new MachineLockStateReader());
22876
+ // Browser care (Part B), watch-only: the sweep records what it WOULD close and has
22877
+ // no way to close anything. Only the macOS normal-Chrome helpers keep a ledger.
22878
+ if (process.platform === 'darwin') {
22879
+ const { BrowserCareSweep, normalizeBrowserCare, parseChromeProcesses, setActiveBrowserCare, DOWNLOAD_FRESH_MS } = await import('../monitoring/machineMaintenance/BrowserCare.js');
22880
+ const { makeTabChecker, makeDownloadCheck } = await import('../core/BrowserCareProbes.js');
22881
+ const { parseHidIdleMs } = await import('../monitoring/machineMaintenance/readings.js');
22882
+ const read = makeReadOnlyRunner(config.sessions.tmuxPath);
22883
+ const browserCare = new BrowserCareSweep({
22884
+ agentName: config.projectName,
22885
+ agentHome: projectDir,
22886
+ operatorChromeDir: path.join(os.homedir(), 'Library', 'Application Support', 'Google', 'Chrome'),
22887
+ ledgerDir: path.join(config.stateDir, 'state', 'browser-instances'),
22888
+ logPath: path.join(config.stateDir, '..', 'logs', 'browser-care.jsonl'),
22889
+ settings: () => normalizeBrowserCare(liveConfig.get('machineMaintenance.browserCare', undefined)),
22890
+ listChrome: async () => { const out = await read('chromeProcesses'); return out === null ? null : parseChromeProcesses(out); },
22891
+ tmuxSessions: async () => { const out = await read('tmuxSessions'); return out === null ? null : out.split('\n').map((l) => l.trim()).filter(Boolean); },
22892
+ inputIdleMs: async () => { const out = await read('inputIdle'); return out === null ? null : parseHidIdleMs(out); },
22893
+ signInRepairOpen: () => {
22894
+ const runtime = subscriptionReloginRuntime;
22895
+ if (!runtime)
22896
+ return false;
22897
+ try {
22898
+ return runtime.store.list({ limit: 500 }).some((e) => !['succeeded', 'refused', 'cancelled', 'failed'].includes(e.state));
22899
+ }
22900
+ catch {
22901
+ return null;
22902
+ } // @silent-fallback-ok — null reads as "repair state unknown", which keeps every browser
22903
+ },
22904
+ downloadActive: makeDownloadCheck(DOWNLOAD_FRESH_MS),
22905
+ checkTabs: makeTabChecker(projectDir),
22906
+ log: (line) => console.log(pc.yellow(` [browser-care] ${line}`)),
22907
+ });
22908
+ setActiveBrowserCare(browserCare);
22909
+ browserCare.start();
22910
+ }
22873
22911
  }
22874
22912
  }
22875
22913
  catch (err) {