instar 1.3.1651 → 1.3.1653

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 (179) hide show
  1. package/dashboard/console/allowed.js +13 -2
  2. package/dashboard/console/console.css +1 -1
  3. package/dashboard/console/services-model.js +44 -0
  4. package/dist/commands/init.d.ts.map +1 -1
  5. package/dist/commands/init.js +10 -0
  6. package/dist/commands/init.js.map +1 -1
  7. package/dist/commands/install/engine.d.ts +2 -14
  8. package/dist/commands/install/engine.d.ts.map +1 -1
  9. package/dist/commands/install/engine.js.map +1 -1
  10. package/dist/commands/install.d.ts +2 -10
  11. package/dist/commands/install.d.ts.map +1 -1
  12. package/dist/commands/install.js +15 -147
  13. package/dist/commands/install.js.map +1 -1
  14. package/dist/commands/server.d.ts.map +1 -1
  15. package/dist/commands/server.js +151 -7
  16. package/dist/commands/server.js.map +1 -1
  17. package/dist/commands/setup.d.ts.map +1 -1
  18. package/dist/commands/setup.js +3 -0
  19. package/dist/commands/setup.js.map +1 -1
  20. package/dist/commands/slack-cli.d.ts.map +1 -1
  21. package/dist/commands/slack-cli.js +2 -1
  22. package/dist/commands/slack-cli.js.map +1 -1
  23. package/dist/core/BackupManager.d.ts.map +1 -1
  24. package/dist/core/BackupManager.js +1 -0
  25. package/dist/core/BackupManager.js.map +1 -1
  26. package/dist/core/CodexLifecycleProductionComposition.d.ts +1 -1
  27. package/dist/core/CodexLifecycleProductionComposition.d.ts.map +1 -1
  28. package/dist/core/PostUpdateMigrator.d.ts +14 -0
  29. package/dist/core/PostUpdateMigrator.d.ts.map +1 -1
  30. package/dist/core/PostUpdateMigrator.js +85 -3
  31. package/dist/core/PostUpdateMigrator.js.map +1 -1
  32. package/dist/core/SessionManager.d.ts +53 -0
  33. package/dist/core/SessionManager.d.ts.map +1 -1
  34. package/dist/core/SessionManager.js +217 -6
  35. package/dist/core/SessionManager.js.map +1 -1
  36. package/dist/core/appInboundDispatch.d.ts +5 -0
  37. package/dist/core/appInboundDispatch.d.ts.map +1 -1
  38. package/dist/core/appInboundDispatch.js +5 -1
  39. package/dist/core/appInboundDispatch.js.map +1 -1
  40. package/dist/core/memorySandboxProbe.d.ts +19 -0
  41. package/dist/core/memorySandboxProbe.d.ts.map +1 -0
  42. package/dist/core/memorySandboxProbe.js +73 -0
  43. package/dist/core/memorySandboxProbe.js.map +1 -0
  44. package/dist/core/memorySessionPolicy.d.ts +44 -0
  45. package/dist/core/memorySessionPolicy.d.ts.map +1 -0
  46. package/dist/core/memorySessionPolicy.js +122 -0
  47. package/dist/core/memorySessionPolicy.js.map +1 -0
  48. package/dist/core/types.d.ts +10 -0
  49. package/dist/core/types.d.ts.map +1 -1
  50. package/dist/core/types.js.map +1 -1
  51. package/dist/data/stageBCertifiedSet.d.ts +12 -0
  52. package/dist/data/stageBCertifiedSet.d.ts.map +1 -1
  53. package/dist/data/stageBCertifiedSet.js +16 -0
  54. package/dist/data/stageBCertifiedSet.js.map +1 -1
  55. package/dist/data/standards-guard-index.json +1 -1
  56. package/dist/data/standards-guard-index.meta.json +2 -2
  57. package/dist/data/standards-registry.meta.json +1 -1
  58. package/dist/install/doorSteps.d.ts +72 -0
  59. package/dist/install/doorSteps.d.ts.map +1 -0
  60. package/dist/install/doorSteps.js +162 -0
  61. package/dist/install/doorSteps.js.map +1 -0
  62. package/dist/{commands/install → install}/doors.d.ts +4 -4
  63. package/dist/install/doors.d.ts.map +1 -0
  64. package/dist/{commands/install → install}/doors.js +6 -6
  65. package/dist/install/doors.js.map +1 -0
  66. package/dist/messaging/SpawnRequestManager.d.ts +2 -0
  67. package/dist/messaging/SpawnRequestManager.d.ts.map +1 -1
  68. package/dist/messaging/SpawnRequestManager.js +3 -0
  69. package/dist/messaging/SpawnRequestManager.js.map +1 -1
  70. package/dist/messaging/TelegramAdapter.d.ts +20 -0
  71. package/dist/messaging/TelegramAdapter.d.ts.map +1 -1
  72. package/dist/messaging/TelegramAdapter.js +69 -7
  73. package/dist/messaging/TelegramAdapter.js.map +1 -1
  74. package/dist/messaging/slack/ChannelManager.d.ts +3 -1
  75. package/dist/messaging/slack/ChannelManager.d.ts.map +1 -1
  76. package/dist/messaging/slack/ChannelManager.js +5 -2
  77. package/dist/messaging/slack/ChannelManager.js.map +1 -1
  78. package/dist/messaging/slack/SlackAdapter.d.ts +14 -0
  79. package/dist/messaging/slack/SlackAdapter.d.ts.map +1 -1
  80. package/dist/messaging/slack/SlackAdapter.js +26 -0
  81. package/dist/messaging/slack/SlackAdapter.js.map +1 -1
  82. package/dist/monitoring/TriageOrchestrator.d.ts +1 -0
  83. package/dist/monitoring/TriageOrchestrator.d.ts.map +1 -1
  84. package/dist/monitoring/TriageOrchestrator.js +5 -0
  85. package/dist/monitoring/TriageOrchestrator.js.map +1 -1
  86. package/dist/native/InstarWedgeCanary.app/Contents/MacOS/InstarWedgeCanary +0 -0
  87. package/dist/native/instar-desktop-host +0 -0
  88. package/dist/recommended/catalog.d.ts +35 -0
  89. package/dist/recommended/catalog.d.ts.map +1 -0
  90. package/dist/recommended/catalog.js +131 -0
  91. package/dist/recommended/catalog.js.map +1 -0
  92. package/dist/recommended/offerPrerequisites.d.ts +16 -0
  93. package/dist/recommended/offerPrerequisites.d.ts.map +1 -0
  94. package/dist/recommended/offerPrerequisites.js +84 -0
  95. package/dist/recommended/offerPrerequisites.js.map +1 -0
  96. package/dist/recommended/serviceIds.d.ts.map +1 -1
  97. package/dist/recommended/serviceIds.js +2 -4
  98. package/dist/recommended/serviceIds.js.map +1 -1
  99. package/dist/scaffold/templates.d.ts.map +1 -1
  100. package/dist/scaffold/templates.js +7 -0
  101. package/dist/scaffold/templates.js.map +1 -1
  102. package/dist/scheduler/JobScheduler.d.ts +2 -0
  103. package/dist/scheduler/JobScheduler.d.ts.map +1 -1
  104. package/dist/scheduler/JobScheduler.js +8 -1
  105. package/dist/scheduler/JobScheduler.js.map +1 -1
  106. package/dist/server/AgentServer.d.ts +2 -0
  107. package/dist/server/AgentServer.d.ts.map +1 -1
  108. package/dist/server/AgentServer.js +1 -1
  109. package/dist/server/AgentServer.js.map +1 -1
  110. package/dist/server/CapabilityIndex.d.ts.map +1 -1
  111. package/dist/server/CapabilityIndex.js +20 -3
  112. package/dist/server/CapabilityIndex.js.map +1 -1
  113. package/dist/server/memorySessionGuard.d.ts +29 -0
  114. package/dist/server/memorySessionGuard.d.ts.map +1 -0
  115. package/dist/server/memorySessionGuard.js +57 -0
  116. package/dist/server/memorySessionGuard.js.map +1 -0
  117. package/dist/server/middleware.d.ts +8 -1
  118. package/dist/server/middleware.d.ts.map +1 -1
  119. package/dist/server/middleware.js +22 -1
  120. package/dist/server/middleware.js.map +1 -1
  121. package/dist/server/mobileCapacityRoutes.d.ts +258 -0
  122. package/dist/server/mobileCapacityRoutes.d.ts.map +1 -0
  123. package/dist/server/mobileCapacityRoutes.js +710 -0
  124. package/dist/server/mobileCapacityRoutes.js.map +1 -0
  125. package/dist/server/mobileConversationRoutes.js +1 -1
  126. package/dist/server/mobileConversationRoutes.js.map +1 -1
  127. package/dist/server/mobileOpsRoutes.d.ts +120 -0
  128. package/dist/server/mobileOpsRoutes.d.ts.map +1 -0
  129. package/dist/server/mobileOpsRoutes.js +432 -0
  130. package/dist/server/mobileOpsRoutes.js.map +1 -0
  131. package/dist/server/mobilePairingRoutes.d.ts.map +1 -1
  132. package/dist/server/mobilePairingRoutes.js +11 -0
  133. package/dist/server/mobilePairingRoutes.js.map +1 -1
  134. package/dist/server/recommendedServiceRoutes.d.ts +1 -0
  135. package/dist/server/recommendedServiceRoutes.d.ts.map +1 -1
  136. package/dist/server/recommendedServiceRoutes.js +7 -1
  137. package/dist/server/recommendedServiceRoutes.js.map +1 -1
  138. package/dist/server/routes.d.ts.map +1 -1
  139. package/dist/server/routes.js +333 -136
  140. package/dist/server/routes.js.map +1 -1
  141. package/dist/threadline/PairingInviteTelegram.d.ts.map +1 -1
  142. package/dist/threadline/PairingInviteTelegram.js +5 -2
  143. package/dist/threadline/PairingInviteTelegram.js.map +1 -1
  144. package/dist/users/MemoryAudience.d.ts +131 -0
  145. package/dist/users/MemoryAudience.d.ts.map +1 -0
  146. package/dist/users/MemoryAudience.js +198 -0
  147. package/dist/users/MemoryAudience.js.map +1 -0
  148. package/dist/users/MemoryInboundTracker.d.ts +40 -0
  149. package/dist/users/MemoryInboundTracker.d.ts.map +1 -0
  150. package/dist/users/MemoryInboundTracker.js +62 -0
  151. package/dist/users/MemoryInboundTracker.js.map +1 -0
  152. package/dist/users/MemoryPrivacy.d.ts +132 -0
  153. package/dist/users/MemoryPrivacy.d.ts.map +1 -0
  154. package/dist/users/MemoryPrivacy.js +347 -0
  155. package/dist/users/MemoryPrivacy.js.map +1 -0
  156. package/dist/users/wireMemoryPrivacy.d.ts +38 -0
  157. package/dist/users/wireMemoryPrivacy.d.ts.map +1 -0
  158. package/dist/users/wireMemoryPrivacy.js +94 -0
  159. package/dist/users/wireMemoryPrivacy.js.map +1 -0
  160. package/package.json +1 -1
  161. package/src/data/builtin-manifest.json +68 -68
  162. package/src/data/stageBCertifiedSet.ts +16 -0
  163. package/src/data/standards-guard-index.json +1 -1
  164. package/src/data/standards-guard-index.meta.json +2 -2
  165. package/src/data/standards-registry.meta.json +1 -1
  166. package/src/data/state-coherence-registry.json +15 -0
  167. package/src/scaffold/templates.ts +7 -0
  168. package/src/templates/scripts/slack-reply.sh +3 -1
  169. package/upgrades/1.3.1652.md +74 -0
  170. package/upgrades/1.3.1653.md +20 -0
  171. package/upgrades/side-effects/memory-privacy-sandbox-setup.md +66 -0
  172. package/upgrades/side-effects/memory-privacy.md +79 -0
  173. package/upgrades/side-effects/mobile-native-capacity-screens.md +108 -0
  174. package/upgrades/side-effects/mobile-native-ops-screens.md +96 -0
  175. package/upgrades/side-effects/owner-checks-fail-closed.md +57 -0
  176. package/upgrades/side-effects/recommended-services-catalog.md +72 -0
  177. package/upgrades/side-effects/recommended-services-prereqs.md +69 -0
  178. package/dist/commands/install/doors.d.ts.map +0 -1
  179. package/dist/commands/install/doors.js.map +0 -1
@@ -8,6 +8,7 @@ import {
8
8
  buildProfile, buildHistory, buildGuards, buildSuggestions, buildFeatures, flattenFeature, profileChanges,
9
9
  walkToEnabled, canTurnOff, canUndoOff, needsConsent, facts, applyText, refusalText, PROFILE_LABEL, PROFILE_SENTENCE, STATE_WORD,
10
10
  } from './allowed-model.js';
11
+ import { buildServices } from './services-model.js';
11
12
  import { el, setKids, pageHead, section, sheet, closeSheet, story, details, note, cantTell, actionButton, askPin, operatorSession, forgetOperatorSession, firstPaint, arrivalScroll } from './ui.js';
12
13
  import { legacyHref } from './nav-model.js';
13
14
 
@@ -41,9 +42,10 @@ const errWords = (r) => {
41
42
  export async function renderAllowed(main, ctx) {
42
43
  const { get, post } = ctx;
43
44
  firstPaint(main, el('section', { class: 'hero page-hero' }, el('div', { class: 'eyebrow', text: 'Settings · What I’m allowed to do' }), el('h1', { class: 'page-title skeleton', text: 'Loading' })));
44
- const [auto, hist, elev, guardsRes, featRes] = await Promise.all([
45
- get('/autonomy'), get('/autonomy/history'), get('/autonomy/elevation'), get('/guards?scope=pool', 8000), get('/features'),
45
+ const [auto, hist, elev, guardsRes, featRes, servicesRes] = await Promise.all([
46
+ get('/autonomy'), get('/autonomy/history'), get('/autonomy/elevation'), get('/guards?scope=pool', 8000), get('/features'), get('/recommended-services'),
46
47
  ]);
48
+ const services = buildServices(servicesRes);
47
49
  const profile = buildProfile(auto);
48
50
  const history = buildHistory(hist);
49
51
  const suggestions = buildSuggestions(elev);
@@ -59,6 +61,7 @@ export async function renderAllowed(main, ctx) {
59
61
  guardsBlock(guards, refresh),
60
62
  suggestionsBlock(suggestions, post, refresh),
61
63
  featuresBlock(features, refresh),
64
+ servicesBlock(services),
62
65
  history.ok ? section({ id: 'history', title: 'History', rows: history.rows, collapsed: true, empty: 'The profile has never been changed.' })
63
66
  : el('section', { class: 'list-section', id: 'sec-history' }, note(history.reason)),
64
67
  ),
@@ -177,6 +180,14 @@ function suggestionsBlock(sg, post, refresh) {
177
180
  }
178
181
 
179
182
  // ── Features ──────────────────────────────────────────────────────────────
183
+ // ── Outside services ──────────────────────────────────────────────────────
184
+ function servicesBlock(services) {
185
+ if (!services.ok) return el('section', { class: 'list-section', id: 'sec-services' }, el('div', { class: 'list-head' }, el('h2', { class: 'eyebrow', text: 'Outside services' })), cantTell(services.reason));
186
+ const wrap = section({ id: 'services', title: 'Outside services', rows: services.rows, onRow: (r) => sheet({ title: r.main }, story(r.lines)) });
187
+ if (services.note) wrap.querySelector('.list-head').after(note(services.note));
188
+ return wrap;
189
+ }
190
+
180
191
  function featuresBlock(features, refresh) {
181
192
  const wrap = el('section', { class: 'list-section', id: 'sec-features' });
182
193
  if (!features.ok) { wrap.append(el('div', { class: 'list-head' }, el('h2', { class: 'eyebrow', text: 'Features' })), cantTell(features.reason)); return wrap; }
@@ -480,7 +480,7 @@ a.fact:hover { border-color: var(--accent); color: var(--text); }
480
480
  .fact.attn { border-color: rgb(251 191 36 / .35); } .fact.attn .fact-n { color: var(--attn); }
481
481
  .fact.bad { border-color: var(--bad-line); } .fact.bad .fact-n { color: var(--bad); }
482
482
  .page-sections { display: flex; flex-direction: column; gap: var(--s-4); margin-top: var(--s-4); }
483
- .list-section { border: 1px solid var(--hairline); border-radius: var(--r-lg); background: var(--surface); padding: var(--s-3) var(--s-4) var(--s-2); }
483
+ .list-section { scroll-margin-top: 64px; border: 1px solid var(--hairline); border-radius: var(--r-lg); background: var(--surface); padding: var(--s-3) var(--s-4) var(--s-2); }
484
484
  .list-head { display: flex; align-items: center; gap: var(--s-2); width: 100%; min-height: 40px; background: none; border: 0; padding: 0; text-align: left; color: inherit; }
485
485
  button.list-head { cursor: pointer; }
486
486
  .list-head .eyebrow { margin: 0; }
@@ -0,0 +1,44 @@
1
+ // Outside services, on "What I'm allowed to do" — pure view-model
2
+ // (docs/specs/recommended-services.md, Surfaces). Read only: every word about a service comes
3
+ // from the server's catalog, and a backup is never described as stronger than its status.
4
+
5
+ const BACKUP_WORDS = {
6
+ exercised: 'Proven: a drill switched this service off and the backup worked.',
7
+ specified: 'Built, but not yet proven by switching this service off.',
8
+ gap: 'Not complete yet.',
9
+ };
10
+
11
+ function choiceWord(s) {
12
+ if (s.choice === 'yes') return 'You said yes';
13
+ if (s.choice === 'no' || s.legacyDeclined) return 'You said no';
14
+ return s.available ? 'Not decided' : 'Not available yet';
15
+ }
16
+
17
+ function backupText(s) {
18
+ const status = BACKUP_WORDS[s.backupStatus] || 'Unknown.';
19
+ const what = s.backup || 'None yet.';
20
+ return `${what} ${status}${s.gapWhen ? ` ${s.gapWhen}` : ''}`;
21
+ }
22
+
23
+ /** GET /recommended-services → the rows, or the reason there are none. */
24
+ export function buildServices(res) {
25
+ if (!res || !res.ok) return { ok: false, reason: `Can’t tell which outside services are set up: ${(res && res.reason) || 'the server did not answer'}.` };
26
+ const list = res.data && Array.isArray(res.data.services) ? res.data.services : null;
27
+ if (!list) return { ok: false, reason: 'Can’t tell which outside services are set up: the answer had no list.' };
28
+ const rows = list.map((s) => ({
29
+ key: s.service,
30
+ main: s.name || s.service,
31
+ sub: s.benefit || '',
32
+ end: choiceWord(s),
33
+ lines: [
34
+ { label: 'What you get', text: s.benefit },
35
+ { label: 'What leaves this machine', text: s.dataLeaves },
36
+ { label: 'Cost', text: s.cost },
37
+ { label: 'Account', text: s.account },
38
+ { label: 'If you say no', text: backupText(s) },
39
+ ].filter((l) => l.text),
40
+ }));
41
+ const available = list.filter((s) => s.available).length;
42
+ const note = available ? null : 'I can’t set any of these up for you yet. Each one becomes available once I’ve proven its setup works. You don’t need to do anything.';
43
+ return { ok: true, rows, available, note };
44
+ }
@@ -1 +1 @@
1
- {"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"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"}
@@ -28,6 +28,7 @@
28
28
  *
29
29
  * Existing project adds .instar/ and appends to CLAUDE.md.
30
30
  */
31
+ import { isBlankAgentHome, markNewAgent } from '../recommended/offerPrerequisites.js';
31
32
  import { applyInitPosture, decideInitPosture, parseTtl } from '../core/ThrowawayAgentGuard.js';
32
33
  import fs from 'node:fs';
33
34
  import os from 'node:os';
@@ -297,6 +298,9 @@ async function initFreshProject(projectName, options) {
297
298
  const identity = defaultIdentity(projectName);
298
299
  // Create .instar/ state directory
299
300
  const stateDir = path.join(projectDir, '.instar');
301
+ // An existing agent stays out of offers until its first list, so only a blank home counts as new.
302
+ if (isBlankAgentHome(stateDir))
303
+ markNewAgent(stateDir);
300
304
  ensureStateDir(stateDir);
301
305
  console.log(` ${pc.green('✓')} Created .instar/`);
302
306
  // Write identity files
@@ -653,6 +657,9 @@ async function initExistingProject(options) {
653
657
  }
654
658
  // Create state directory
655
659
  const stateDir = path.join(projectDir, '.instar');
660
+ // An existing agent stays out of offers until its first list, so only a blank home counts as new.
661
+ if (isBlankAgentHome(stateDir))
662
+ markNewAgent(stateDir);
656
663
  ensureStateDir(stateDir);
657
664
  console.log(pc.green(' Created:') + ' .instar/');
658
665
  // Write config. A reviewed package carrying valid Echo-signed Stage-B
@@ -994,6 +1001,9 @@ async function initStandaloneAgent(agentName, options) {
994
1001
  }
995
1002
  // Create directory structure
996
1003
  fs.mkdirSync(projectDir, { recursive: true });
1004
+ // An existing agent stays out of offers until its first list, so only a blank home counts as new.
1005
+ if (isBlankAgentHome(stateDir))
1006
+ markNewAgent(stateDir);
997
1007
  ensureStateDir(stateDir);
998
1008
  console.log(` ${pc.green('✓')} Created ${projectDir}`);
999
1009
  // Generate identity