@songsid/agend 2.3.2-beta.3 → 2.3.2-beta.5

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 (223) hide show
  1. package/THIRD_PARTY_NOTICES.md +40 -0
  2. package/dist/agent-cli.js +21 -2
  3. package/dist/agent-cli.js.map +1 -1
  4. package/dist/agent-endpoint.js +5 -0
  5. package/dist/agent-endpoint.js.map +1 -1
  6. package/dist/antigravity-usage-scan.d.ts +58 -0
  7. package/dist/antigravity-usage-scan.js +257 -0
  8. package/dist/antigravity-usage-scan.js.map +1 -0
  9. package/dist/antigravity-usage-worker.d.ts +1 -0
  10. package/dist/antigravity-usage-worker.js +10 -0
  11. package/dist/antigravity-usage-worker.js.map +1 -0
  12. package/dist/auth-api.js +2 -0
  13. package/dist/auth-api.js.map +1 -1
  14. package/dist/backend/kiro-identity.d.ts +45 -0
  15. package/dist/backend/kiro-identity.js +74 -0
  16. package/dist/backend/kiro-identity.js.map +1 -1
  17. package/dist/backend/kiro.d.ts +36 -1
  18. package/dist/backend/kiro.js +131 -6
  19. package/dist/backend/kiro.js.map +1 -1
  20. package/dist/backend/types.d.ts +6 -0
  21. package/dist/backend/types.js.map +1 -1
  22. package/dist/backend-signin-guide.d.ts +1 -0
  23. package/dist/backend-signin-guide.js +9 -0
  24. package/dist/backend-signin-guide.js.map +1 -0
  25. package/dist/backend-signin-pending.d.ts +10 -0
  26. package/dist/backend-signin-pending.js +44 -0
  27. package/dist/backend-signin-pending.js.map +1 -0
  28. package/dist/browser-backend-signins.d.ts +56 -0
  29. package/dist/browser-backend-signins.js +189 -0
  30. package/dist/browser-backend-signins.js.map +1 -0
  31. package/dist/cache-ledger.d.ts +38 -2
  32. package/dist/cache-ledger.js +133 -8
  33. package/dist/cache-ledger.js.map +1 -1
  34. package/dist/cache-prices.d.ts +2 -1
  35. package/dist/cache-prices.js +5 -2
  36. package/dist/cache-prices.js.map +1 -1
  37. package/dist/cache-service.d.ts +68 -0
  38. package/dist/cache-service.js +355 -13
  39. package/dist/cache-service.js.map +1 -1
  40. package/dist/channel/adapters/discord.js +7 -4
  41. package/dist/channel/adapters/discord.js.map +1 -1
  42. package/dist/channel/mcp-tools.js +7 -1
  43. package/dist/channel/mcp-tools.js.map +1 -1
  44. package/dist/classic-channel-manager.d.ts +5 -0
  45. package/dist/classic-channel-manager.js +14 -1
  46. package/dist/classic-channel-manager.js.map +1 -1
  47. package/dist/cli.js +21 -2
  48. package/dist/cli.js.map +1 -1
  49. package/dist/config-validator.js +22 -5
  50. package/dist/config-validator.js.map +1 -1
  51. package/dist/config.d.ts +19 -0
  52. package/dist/config.js +31 -1
  53. package/dist/config.js.map +1 -1
  54. package/dist/cpu-quota.d.ts +23 -0
  55. package/dist/cpu-quota.js +86 -0
  56. package/dist/cpu-quota.js.map +1 -0
  57. package/dist/daemon.js +22 -7
  58. package/dist/daemon.js.map +1 -1
  59. package/dist/dashboard-permissions.d.ts +20 -6
  60. package/dist/dashboard-permissions.js +58 -9
  61. package/dist/dashboard-permissions.js.map +1 -1
  62. package/dist/fleet-manager.d.ts +51 -1
  63. package/dist/fleet-manager.js +416 -32
  64. package/dist/fleet-manager.js.map +1 -1
  65. package/dist/general-knowledge/skills/credential-profiles/SKILL.md +5 -2
  66. package/dist/general-knowledge/skills/kiro-engine-migration/SKILL.md +14 -1
  67. package/dist/general-knowledge/skills/web-appearance/SKILL.canvas-worker-off.md +24 -1
  68. package/dist/general-knowledge/skills/web-appearance/SKILL.md +24 -1
  69. package/dist/general-knowledge/skills/web-dashboard/SKILL.canvas-worker-off.md +6 -3
  70. package/dist/general-knowledge/skills/web-dashboard/SKILL.md +12 -5
  71. package/dist/instance-config-impact.js +10 -5
  72. package/dist/instance-config-impact.js.map +1 -1
  73. package/dist/instance-lifecycle.d.ts +17 -0
  74. package/dist/instance-lifecycle.js +32 -4
  75. package/dist/instance-lifecycle.js.map +1 -1
  76. package/dist/kiro-db-reader.d.ts +5 -0
  77. package/dist/kiro-db-reader.js +18 -0
  78. package/dist/kiro-db-reader.js.map +1 -1
  79. package/dist/kiro-engine-status.d.ts +2 -0
  80. package/dist/kiro-engine-status.js +9 -0
  81. package/dist/kiro-engine-status.js.map +1 -1
  82. package/dist/kiro-migrate.d.ts +49 -0
  83. package/dist/kiro-migrate.js +105 -0
  84. package/dist/kiro-migrate.js.map +1 -0
  85. package/dist/kiro-transcript-lane.d.ts +2 -0
  86. package/dist/kiro-transcript-lane.js.map +1 -1
  87. package/dist/kiro-transcript-worker.js +1 -0
  88. package/dist/kiro-transcript-worker.js.map +1 -1
  89. package/dist/kiro-usage-run.d.ts +7 -0
  90. package/dist/kiro-usage-run.js +39 -0
  91. package/dist/kiro-usage-run.js.map +1 -0
  92. package/dist/kiro-usage-scan.d.ts +49 -0
  93. package/dist/kiro-usage-scan.js +223 -0
  94. package/dist/kiro-usage-scan.js.map +1 -0
  95. package/dist/kiro-usage-worker.d.ts +1 -0
  96. package/dist/kiro-usage-worker.js +10 -0
  97. package/dist/kiro-usage-worker.js.map +1 -0
  98. package/dist/kiro-usage.d.ts +58 -0
  99. package/dist/kiro-usage.js +310 -0
  100. package/dist/kiro-usage.js.map +1 -0
  101. package/dist/locale.js +72 -8
  102. package/dist/locale.js.map +1 -1
  103. package/dist/log-service.js +1 -1
  104. package/dist/log-service.js.map +1 -1
  105. package/dist/login-url.d.ts +4 -0
  106. package/dist/login-url.js +22 -0
  107. package/dist/login-url.js.map +1 -0
  108. package/dist/needs-you-hub.d.ts +2 -1
  109. package/dist/needs-you-hub.js +1 -1
  110. package/dist/needs-you-hub.js.map +1 -1
  111. package/dist/needs-you.d.ts +8 -2
  112. package/dist/needs-you.js +6 -0
  113. package/dist/needs-you.js.map +1 -1
  114. package/dist/notice-delivery.d.ts +15 -0
  115. package/dist/notice-delivery.js +37 -0
  116. package/dist/notice-delivery.js.map +1 -0
  117. package/dist/opencode-usage-scan.d.ts +28 -0
  118. package/dist/opencode-usage-scan.js +92 -0
  119. package/dist/opencode-usage-scan.js.map +1 -0
  120. package/dist/opencode-usage-worker.d.ts +1 -0
  121. package/dist/opencode-usage-worker.js +10 -0
  122. package/dist/opencode-usage-worker.js.map +1 -0
  123. package/dist/outbound-handlers.js +22 -2
  124. package/dist/outbound-handlers.js.map +1 -1
  125. package/dist/outbound-schemas.d.ts +24 -0
  126. package/dist/outbound-schemas.js +21 -0
  127. package/dist/outbound-schemas.js.map +1 -1
  128. package/dist/public-web-gateway.js +1 -1
  129. package/dist/public-web-gateway.js.map +1 -1
  130. package/dist/quickstart-api.js +13 -2
  131. package/dist/quickstart-api.js.map +1 -1
  132. package/dist/quickstart.js +4 -1
  133. package/dist/quickstart.js.map +1 -1
  134. package/dist/reply-triggers.d.ts +2 -0
  135. package/dist/reply-triggers.js +3 -0
  136. package/dist/reply-triggers.js.map +1 -0
  137. package/dist/settings-api.js +27 -4
  138. package/dist/settings-api.js.map +1 -1
  139. package/dist/settings-change.js +17 -14
  140. package/dist/settings-change.js.map +1 -1
  141. package/dist/settings-effect.js +7 -1
  142. package/dist/settings-effect.js.map +1 -1
  143. package/dist/settings-instance-patch.js +4 -1
  144. package/dist/settings-instance-patch.js.map +1 -1
  145. package/dist/setup-form.d.ts +1 -1
  146. package/dist/setup-form.js +7 -1
  147. package/dist/setup-form.js.map +1 -1
  148. package/dist/setup-host.d.ts +9 -0
  149. package/dist/setup-host.js +126 -6
  150. package/dist/setup-host.js.map +1 -1
  151. package/dist/setup-signin-assets.d.ts +2 -0
  152. package/dist/setup-signin-assets.js +6 -0
  153. package/dist/setup-signin-assets.js.map +1 -0
  154. package/dist/setup-wizard.js +4 -0
  155. package/dist/setup-wizard.js.map +1 -1
  156. package/dist/structured-signin-transport.d.ts +8 -0
  157. package/dist/structured-signin-transport.js +79 -0
  158. package/dist/structured-signin-transport.js.map +1 -0
  159. package/dist/structured-signin.d.ts +131 -0
  160. package/dist/structured-signin.js +388 -0
  161. package/dist/structured-signin.js.map +1 -0
  162. package/dist/tool-permissions.js +12 -0
  163. package/dist/tool-permissions.js.map +1 -1
  164. package/dist/topic-commands.js +6 -2
  165. package/dist/topic-commands.js.map +1 -1
  166. package/dist/transcript-sources.d.ts +26 -2
  167. package/dist/transcript-sources.js +87 -40
  168. package/dist/transcript-sources.js.map +1 -1
  169. package/dist/turn-reply-guard.d.ts +1 -1
  170. package/dist/turn-reply-guard.js +1 -1
  171. package/dist/turn-reply-guard.js.map +1 -1
  172. package/dist/types.d.ts +19 -8
  173. package/dist/ui/backend-signin.js +63 -10
  174. package/dist/ui/fleet-office-editor.js +10 -6
  175. package/dist/ui/fleet-office-layout.js +34 -28
  176. package/dist/ui/fleet-office-model.js +6 -3
  177. package/dist/ui/fleet-office-overview.js +2 -2
  178. package/dist/ui/fleet-office-pack.d.ts +3 -1
  179. package/dist/ui/fleet-office-pack.js +58 -7
  180. package/dist/ui/fleet-office-skin.js +13 -4
  181. package/dist/ui/fleet-office-store.js +27 -1
  182. package/dist/ui/fleet-office-view.js +5 -4
  183. package/dist/ui/fleet-office-zones.js +155 -6
  184. package/dist/ui/fleet-office.js +169 -41
  185. package/dist/ui/fleet-usage.js +19 -15
  186. package/dist/ui/panel-log.js +2 -2
  187. package/dist/ui/panel-needs.js +4 -4
  188. package/dist/ui/panel-settings.js +32 -10
  189. package/dist/ui/settings-dialogs.js +8 -1
  190. package/dist/ui/settings-model.js +14 -6
  191. package/dist/ui/settings-registry.js +4 -0
  192. package/dist/ui/settings-strings.js +14 -0
  193. package/dist/ui/shared/app-i18n.js +4 -2
  194. package/dist/ui/shared/app-shell.js +14 -6
  195. package/dist/ui/shared/app-stream.js +2 -1
  196. package/dist/ui/shared/app.css +18 -2
  197. package/dist/ui/shared/side-panel.js +95 -0
  198. package/dist/ui/structured-signin.js +115 -0
  199. package/dist/usage-report.d.ts +20 -0
  200. package/dist/usage-report.js +54 -17
  201. package/dist/usage-report.js.map +1 -1
  202. package/dist/usage-rollup.d.ts +9 -1
  203. package/dist/usage-rollup.js +20 -4
  204. package/dist/usage-rollup.js.map +1 -1
  205. package/dist/web-api.d.ts +4 -0
  206. package/dist/web-api.js +110 -0
  207. package/dist/web-api.js.map +1 -1
  208. package/dist/web-auth.js +1 -1
  209. package/dist/web-auth.js.map +1 -1
  210. package/dist/web-backend-login.d.ts +1 -7
  211. package/dist/web-backend-login.js +2 -24
  212. package/dist/web-backend-login.js.map +1 -1
  213. package/dist/web-office-acts.d.ts +173 -0
  214. package/dist/web-office-acts.js +285 -0
  215. package/dist/web-office-acts.js.map +1 -0
  216. package/dist/web-office-skins.d.ts +1 -1
  217. package/dist/web-office-skins.js +1 -1
  218. package/dist/web-office-skins.js.map +1 -1
  219. package/dist/web-settings-patch.d.ts +2 -1
  220. package/dist/web-settings-patch.js +4 -1
  221. package/dist/web-settings-patch.js.map +1 -1
  222. package/package.json +2 -1
  223. package/templates/windows-shortcuts.ps1 +18 -7
@@ -6,17 +6,23 @@
6
6
  *
7
7
  * - `appearance`: its own look on the dashboard — theme, pictures, widgets, ambient, effects, mods it proposes;
8
8
  * - `task_board`: the task board (`task`, and `agend task …`);
9
- * - `web_settings`: Settings → Web appearance for the person (`get_web_settings`, `set_web_settings`).
9
+ * - `web_settings`: Settings → Web appearance for the person (`get_web_settings`, `set_web_settings`);
10
+ * - `office` (#2578), stored separately as `office_access`: its own character in Fleet → Org chart → Office — walking, a speech bubble, a pose
11
+ * (`office_view`, `office_set`).
10
12
  *
11
13
  * Unset is allowed: a fleet that switches nothing off works as before, and the profile still decides what an agent
12
- * has. `false` takes the feature's tools away whatever the profile carries: refused at the fleet's checks
14
+ * has — except for a feature in OFF_UNLESS_ON (`office`), which is off until a person sets it true. `false` takes the feature's tools away whatever the profile carries: refused at the fleet's checks
13
15
  * (tool-permissions.ts's sinks, read at each call — no restart) and left out of the agent's tool menu from its next
14
16
  * start (AGEND_DASHBOARD_OFF, read by mcp-server). Like a profile, policy protection for the resolved identity, not
15
17
  * isolation between same-uid agents with a shell.
16
18
  */
17
- export declare const DASHBOARD_FEATURES: readonly ["appearance", "task_board", "web_settings"];
19
+ export declare const DASHBOARD_FEATURES: readonly ["appearance", "task_board", "web_settings", "office"];
18
20
  export type DashboardFeature = typeof DASHBOARD_FEATURES[number];
19
- /** As written in fleet.yaml: each feature true (allowed), false (switched off) or absent (allowed). */
21
+ /** The features a person switches on (#2578): absent (or null) is off for these, never allowed. */
22
+ export declare const OFF_UNLESS_ON: ReadonlySet<DashboardFeature>;
23
+ /** What a feature is when nothing (not the instance, not the defaults) says: allowed, or off for OFF_UNLESS_ON. */
24
+ export declare const dashboardFeatureDefault: (feature: string) => boolean;
25
+ /** As written in fleet.yaml: each feature true (allowed), false (switched off) or absent (allowed; off for OFF_UNLESS_ON). */
20
26
  export type DashboardAccess = Partial<Record<DashboardFeature, boolean>>;
21
27
  /**
22
28
  * What a NEW fleet.yaml says about the features (the user's decision, 2026-10-22): the task board is off until the
@@ -29,7 +35,7 @@ export declare const NEW_FLEET_DASHBOARD: Readonly<DashboardAccess>;
29
35
  export declare const DASHBOARD_FEATURE_TOOLS: Readonly<Record<DashboardFeature, readonly string[]>>;
30
36
  /** The feature a tool belongs to, or null for a tool no switch governs. */
31
37
  export declare function dashboardFeatureOf(tool: string): DashboardFeature | null;
32
- /** The features switched off (`false`) in an instance's `dashboard` as resolved; anything else allows. */
38
+ /** The features switched off in an instance's `dashboard` as resolved: `false`, and an OFF_UNLESS_ON one not `true`. */
33
39
  export declare function dashboardFeaturesOff(access: unknown): DashboardFeature[];
34
40
  /** The refusal for `tool` when its feature is switched off in this resolved `dashboard` mapping, else null. */
35
41
  export declare function dashboardRefusal(access: unknown, tool: string): string | null;
@@ -52,9 +58,17 @@ export declare function dashboardAccessProblem(value: unknown): string | null;
52
58
  * the default — the same as absent (#2391 review: a literal `task_board: null` must not hide the default's `false`).
53
59
  */
54
60
  export declare function dashboardSwitches(value: unknown): DashboardAccess;
61
+ /** Office lives beside dashboard so published rollback validators never see a new feature in that closed map. */
62
+ export declare function officeAccessValue(config: any): unknown;
63
+ export declare function dashboardAccessOf(config: any): DashboardAccess;
64
+ /** Transitional dashboard.office input is accepted, but never written by a managed save. Canonical values win. */
65
+ export declare function normalizeOfficeStorage(fleet: any): void;
66
+ /** Accept an older Settings client, but project/save its Office edit using the canonical field. */
67
+ export declare function officeInputPatch(value: Record<string, any>): Record<string, any>;
68
+ export declare function hasLegacyOffice(fleet: any): boolean;
55
69
  /**
56
70
  * The features switched off in a fleet config for `name`: each feature's own switch where the instance has one, else
57
- * the default's, else allowed. `name` with no own `instances` entry (a ClassicBot identity) gets the defaults'.
71
+ * the default's, else allowed (off for OFF_UNLESS_ON). `name` with no own `instances` entry (a ClassicBot identity) gets the defaults'.
58
72
  */
59
73
  export declare function dashboardFeaturesOffIn(fleet: unknown, name: string): DashboardFeature[];
60
74
  /**
@@ -6,15 +6,21 @@
6
6
  *
7
7
  * - `appearance`: its own look on the dashboard — theme, pictures, widgets, ambient, effects, mods it proposes;
8
8
  * - `task_board`: the task board (`task`, and `agend task …`);
9
- * - `web_settings`: Settings → Web appearance for the person (`get_web_settings`, `set_web_settings`).
9
+ * - `web_settings`: Settings → Web appearance for the person (`get_web_settings`, `set_web_settings`);
10
+ * - `office` (#2578), stored separately as `office_access`: its own character in Fleet → Org chart → Office — walking, a speech bubble, a pose
11
+ * (`office_view`, `office_set`).
10
12
  *
11
13
  * Unset is allowed: a fleet that switches nothing off works as before, and the profile still decides what an agent
12
- * has. `false` takes the feature's tools away whatever the profile carries: refused at the fleet's checks
14
+ * has — except for a feature in OFF_UNLESS_ON (`office`), which is off until a person sets it true. `false` takes the feature's tools away whatever the profile carries: refused at the fleet's checks
13
15
  * (tool-permissions.ts's sinks, read at each call — no restart) and left out of the agent's tool menu from its next
14
16
  * start (AGEND_DASHBOARD_OFF, read by mcp-server). Like a profile, policy protection for the resolved identity, not
15
17
  * isolation between same-uid agents with a shell.
16
18
  */
17
- export const DASHBOARD_FEATURES = ["appearance", "task_board", "web_settings"];
19
+ export const DASHBOARD_FEATURES = ["appearance", "task_board", "web_settings", "office"];
20
+ /** The features a person switches on (#2578): absent (or null) is off for these, never allowed. */
21
+ export const OFF_UNLESS_ON = new Set(["office"]);
22
+ /** What a feature is when nothing (not the instance, not the defaults) says: allowed, or off for OFF_UNLESS_ON. */
23
+ export const dashboardFeatureDefault = (feature) => !OFF_UNLESS_ON.has(feature);
18
24
  /**
19
25
  * What a NEW fleet.yaml says about the features (the user's decision, 2026-10-22): the task board is off until the
20
26
  * person switches it on (Settings → defaults, or per agent). Written, visibly, by every path that creates the file —
@@ -34,6 +40,7 @@ export const DASHBOARD_FEATURE_TOOLS = {
34
40
  ],
35
41
  task_board: ["task"],
36
42
  web_settings: ["get_web_settings", "set_web_settings"],
43
+ office: ["office_view", "office_set"],
37
44
  };
38
45
  const FEATURE_OF = new Map(DASHBOARD_FEATURES.flatMap((f) => DASHBOARD_FEATURE_TOOLS[f].map((tool) => [tool, f])));
39
46
  /** The feature a tool belongs to, or null for a tool no switch governs. */
@@ -41,17 +48,20 @@ export function dashboardFeatureOf(tool) {
41
48
  return FEATURE_OF.get(tool) ?? null;
42
49
  }
43
50
  const isFeature = (k) => DASHBOARD_FEATURES.includes(k);
44
- /** The features switched off (`false`) in an instance's `dashboard` as resolved; anything else allows. */
51
+ /** The features switched off in an instance's `dashboard` as resolved: `false`, and an OFF_UNLESS_ON one not `true`. */
45
52
  export function dashboardFeaturesOff(access) {
46
- if (!access || typeof access !== "object" || Array.isArray(access))
47
- return [];
48
- return DASHBOARD_FEATURES.filter((f) => access[f] === false);
53
+ const a = access && typeof access === "object" && !Array.isArray(access) ? access : {};
54
+ return DASHBOARD_FEATURES.filter((f) => (OFF_UNLESS_ON.has(f) ? a[f] !== true : a[f] === false));
49
55
  }
50
56
  /** The refusal for `tool` when its feature is in `off`, else null. */
51
57
  function refusalFor(off, tool) {
52
58
  const feature = dashboardFeatureOf(tool);
53
59
  if (!feature || !off.includes(feature))
54
60
  return null;
61
+ if (OFF_UNLESS_ON.has(feature)) {
62
+ return `${tool} is not available to this instance: its dashboard feature "${feature}" is off until the person switches it on (${feature === "office" ? "office_access" : `dashboard.${feature}`}: true). `
63
+ + "Do not retry it; tell the person if you need it.";
64
+ }
55
65
  return `${tool} is not available to this instance: the person switched its dashboard feature "${feature}" off (dashboard.${feature}: false). `
56
66
  + "Do not retry it; tell the person if you need it.";
57
67
  }
@@ -106,15 +116,54 @@ export function dashboardSwitches(value) {
106
116
  }
107
117
  return out;
108
118
  }
119
+ /** Office lives beside dashboard so published rollback validators never see a new feature in that closed map. */
120
+ export function officeAccessValue(config) {
121
+ return config && Object.hasOwn(config, "office_access") ? config.office_access : config?.dashboard?.office;
122
+ }
123
+ export function dashboardAccessOf(config) {
124
+ const access = dashboardSwitches(config?.dashboard), office = officeAccessValue(config);
125
+ delete access.office;
126
+ if (typeof office === "boolean")
127
+ access.office = office;
128
+ return access;
129
+ }
130
+ /** Transitional dashboard.office input is accepted, but never written by a managed save. Canonical values win. */
131
+ export function normalizeOfficeStorage(fleet) {
132
+ for (const config of [fleet?.defaults, ...Object.values(fleet?.instances ?? {})]) {
133
+ if (!config || typeof config !== "object" || Array.isArray(config))
134
+ continue;
135
+ const item = config;
136
+ if (!item.dashboard || typeof item.dashboard !== "object" || !Object.hasOwn(item.dashboard, "office"))
137
+ continue;
138
+ if (!Object.hasOwn(item, "office_access") && typeof item.dashboard.office === "boolean")
139
+ item.office_access = item.dashboard.office;
140
+ const { office: _office, ...dashboard } = item.dashboard;
141
+ item.dashboard = dashboard;
142
+ }
143
+ }
144
+ /** Accept an older Settings client, but project/save its Office edit using the canonical field. */
145
+ export function officeInputPatch(value) {
146
+ const result = { ...value };
147
+ if (value.dashboard && typeof value.dashboard === "object" && !Array.isArray(value.dashboard) && Object.hasOwn(value.dashboard, "office")) {
148
+ const { office, ...dashboard } = value.dashboard;
149
+ result.dashboard = dashboard;
150
+ if (!Object.hasOwn(value, "office_access"))
151
+ result.office_access = office;
152
+ }
153
+ return result;
154
+ }
155
+ export function hasLegacyOffice(fleet) {
156
+ return [fleet?.defaults, ...Object.values(fleet?.instances ?? {})].some((item) => item?.dashboard && Object.hasOwn(item.dashboard, "office"));
157
+ }
109
158
  /**
110
159
  * The features switched off in a fleet config for `name`: each feature's own switch where the instance has one, else
111
- * the default's, else allowed. `name` with no own `instances` entry (a ClassicBot identity) gets the defaults'.
160
+ * the default's, else allowed (off for OFF_UNLESS_ON). `name` with no own `instances` entry (a ClassicBot identity) gets the defaults'.
112
161
  */
113
162
  export function dashboardFeaturesOffIn(fleet, name) {
114
163
  const f = fleet && typeof fleet === "object" ? fleet : {};
115
164
  const instances = f.instances && typeof f.instances === "object" ? f.instances : {};
116
165
  const inst = Object.hasOwn(instances, name) ? instances[name] : undefined; // a name is a key of its own, never an inherited one
117
- return dashboardFeaturesOff({ ...dashboardSwitches(f.defaults?.dashboard), ...dashboardSwitches(inst?.dashboard) });
166
+ return dashboardFeaturesOff({ ...dashboardAccessOf(f.defaults), ...dashboardAccessOf(inst) });
118
167
  }
119
168
  /**
120
169
  * (a) An agent without the task board is not told to use it: the built-in workflow's task board section ("## Progress
@@ -1 +1 @@
1
- {"version":3,"file":"dashboard-permissions.js","sourceRoot":"","sources":["../src/dashboard-permissions.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"dashboard-permissions.js","sourceRoot":"","sources":["../src/dashboard-permissions.ts"],"names":[],"mappings":"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"}
@@ -65,6 +65,7 @@ import { OwnerCssStore } from "./web-owner-css-store.js";
65
65
  import { ThemeStore } from "./web-theme-store.js";
66
66
  import { OfficeStore, OfficeWriteLimiter } from "./web-office-store.js";
67
67
  import { OfficeSkinStore } from "./web-office-skins.js";
68
+ import { OfficeActs } from "./web-office-acts.js";
68
69
  import { WebAppearance } from "./web-appearance.js";
69
70
  import { WebEffectLibrary } from "./web-effect-library.js";
70
71
  import { WebEffectTrials } from "./web-effect-trials.js";
@@ -84,6 +85,7 @@ import { type CrossInstanceRecord, type XmsgVisibility } from "./search/search-d
84
85
  import { WebSettingsTools } from "./web-settings-tools.js";
85
86
  import { type Delegation, type TrafficItem } from "./fleet-traffic.js";
86
87
  import { WebBackendLogins, type SignInTarget } from "./web-backend-login.js";
88
+ import { BrowserBackendSignIns } from "./browser-backend-signins.js";
87
89
  import { type RawConfigPatch } from "./settings-api.js";
88
90
  import { type AgentEndpointContext } from "./agent-endpoint.js";
89
91
  import { ClassicChannelManager } from "./classic-channel-manager.js";
@@ -245,6 +247,7 @@ export declare const CLI_ENV_PROBE_DEADLINE_MS = 16000;
245
247
  * started ten CLIs together, saturated the CPU, and healthy starts then missed
246
248
  * their startup budget — which used to cost the user their conversation. Cores
247
249
  * bound how many can actually make progress; memory bounds how many fit.
250
+ * `cores` is what this process may use (cpuset and cgroup quota, #749), not the host's count.
248
251
  */
249
252
  export declare function deriveSpawnConcurrency(freeMemMB: number, cores: number): number;
250
253
  /** #2499 review: one line of Settings → Guests' Recent changes (guestOverview), from the event log. */
@@ -453,6 +456,8 @@ export declare class FleetManager implements FleetContext, LifecycleContext, Arc
453
456
  private pendingBackendSelects;
454
457
  /** nonce → pending button prompt (hang restart, interactive assist, clean-exit restart). */
455
458
  private pendingNonceButtons;
459
+ /** #2598 B2: the kiro moves waiting on a fleet admin's Confirm in General, by prompt nonce. */
460
+ private pendingKiroMigrations;
456
461
  /** #1386 "Needs you": the list, its live chat messages and Acknowledge. Started with the fleet (finishStartup). */
457
462
  private needsYou;
458
463
  /** When the fleet first saw an instance crashed, for its "Needs you" age; cleared when it is not. */
@@ -658,6 +663,14 @@ export declare class FleetManager implements FleetContext, LifecycleContext, Arc
658
663
  readonly officeSkinWrites: OfficeWriteLimiter;
659
664
  /** How often a person may save the offices (PUT /ui/offices); memory only, as the appearance limiter. */
660
665
  readonly officeWrites: OfficeWriteLimiter;
666
+ private officeActsInstance?;
667
+ /** #2578: the agents' acts in the Office view (office_view / office_set), memory only; every change is `office_acts`. */
668
+ get officeActs(): OfficeActs;
669
+ /**
670
+ * #2578: each instance's state as the org chart shows it (fleet-org.js orgState, from the same fields the status
671
+ * frame and the Needs-you list carry) and its display name (resolveInstanceIdentity, as getUiStatus) — read once.
672
+ */
673
+ private officePeople;
661
674
  /** #1629: the theme tools, a person's reset and lock, and the one appearance rate limiter (shared with effects). */
662
675
  get webAppearance(): WebAppearance;
663
676
  private effectLibraryInstance?;
@@ -755,6 +768,21 @@ export declare class FleetManager implements FleetContext, LifecycleContext, Arc
755
768
  /** Exact configured effect owners; this does not depend on prompt location. */
756
769
  private settingsChatAuthority;
757
770
  private promptSettingsChange;
771
+ private kiroMigrateDeps;
772
+ /**
773
+ * #2598 B2, migrate_kiro_instance: judge the move, then ask in General for a fleet admin's Confirm. Nothing changes
774
+ * here; the move runs on the Confirm (handleKiroMigrateCallback), judged again then.
775
+ */
776
+ requestKiroMigration(name: string, startFresh: boolean): Promise<{
777
+ ok: true;
778
+ text: string;
779
+ classic_conversation: string | null;
780
+ } | {
781
+ ok: false;
782
+ error: string;
783
+ }>;
784
+ /** A fleet admin's Confirm or Cancel on a kiro move. Any fleet admin (the default nonce authorization), in General. */
785
+ private handleKiroMigrateCallback;
758
786
  private handleSettingsChangeCallback;
759
787
  startSettingsConfirmationControl(): Promise<void>;
760
788
  private get webToken();
@@ -1633,6 +1661,10 @@ export declare class FleetManager implements FleetContext, LifecycleContext, Arc
1633
1661
  remainingSeconds?: number;
1634
1662
  noExpiry?: true;
1635
1663
  };
1664
+ /** Notices use the first explicit admin of the owning connection; never a guest/paired account. */
1665
+ private noticeAdmin;
1666
+ /** Best-effort private delivery. The caller retains its existing topic fallback and authority fences. */
1667
+ private tryNoticeDm;
1636
1668
  confirmPublicWebLogin(info: {
1637
1669
  label: string;
1638
1670
  handle: string;
@@ -2397,6 +2429,8 @@ export declare class FleetManager implements FleetContext, LifecycleContext, Arc
2397
2429
  * non-identity instance leaves are canonicalized to inheritance afterward.
2398
2430
  */
2399
2431
  saveFleetConfig(explicitPatches?: RawConfigPatch[]): void;
2432
+ /** A permission tightening is effective when its save returns, independently of the later apply job or IPC. */
2433
+ private refreshSavedDashboardPermissions;
2400
2434
  /** Why the config written to `candidate` must not replace fleet.yaml, or null: it does not load, or it adds errors. */
2401
2435
  private savedFleetConfigProblem;
2402
2436
  /**
@@ -2405,6 +2439,8 @@ export declare class FleetManager implements FleetContext, LifecycleContext, Arc
2405
2439
  */
2406
2440
  private logConfigWarningsAtStartup;
2407
2441
  /** One-time upgrade migration; invalid YAML is never rewritten. */
2442
+ private migrateNoticeDeliveryStorage;
2443
+ private migrateOfficeStorage;
2408
2444
  private slimFleetConfigAtStartup;
2409
2445
  private writeFleetConfigBackup;
2410
2446
  private patchFleetDocument;
@@ -2875,6 +2911,8 @@ export declare class FleetManager implements FleetContext, LifecycleContext, Arc
2875
2911
  * without one); codex "unrecorded" (its rollouts don't say which login wrote them).
2876
2912
  */
2877
2913
  private usageProfileOf;
2914
+ /** #2122 §10: a Kiro instance with a credential profile writes its classic store in that profile's home. */
2915
+ private kiroDbPathOf;
2878
2916
  /** #2122: the fleet's day boundary zone — defaults.scheduler.default_timezone, else this host's. */
2879
2917
  usageZone(): string;
2880
2918
  /**
@@ -2994,7 +3032,7 @@ export declare class FleetManager implements FleetContext, LifecycleContext, Arc
2994
3032
  /** Persistently enable advanced tips through the admin-only slash command. */
2995
3033
  unlockAdvancedTips(userId: string): boolean;
2996
3034
  /** Post one fresh nonce-armed tip in a known General channel. */
2997
- promptTip(generalName: string, adapter: ChannelAdapter, chatId: string, threadId?: string): Promise<"posted" | "empty" | "unavailable">;
3035
+ promptTip(generalName: string, adapter: ChannelAdapter, chatId: string, threadId?: string, directUserId?: string): Promise<"posted" | "empty" | "unavailable">;
2998
3036
  private promptAdvancedTipUnlock;
2999
3037
  private sendTipToGeneral;
3000
3038
  private handleTipDismiss;
@@ -3355,6 +3393,13 @@ export declare class FleetManager implements FleetContext, LifecycleContext, Arc
3355
3393
  */
3356
3394
  private readonly loginWindow;
3357
3395
  private get webLogin();
3396
+ private browserBackendSignInsInstance;
3397
+ private structuredLoginCleanupFailed;
3398
+ private readonly pendingBackendSince;
3399
+ private browserSignInOwnerCurrent;
3400
+ /** #2599: default-account controls share the exact writer reservation with chat/profile/install. */
3401
+ get browserBackendSignIns(): BrowserBackendSignIns;
3402
+ private needsYouBackendSignIns;
3358
3403
  /** #2233: sign-ins started from the web dashboard (local admin sessions), on the same controller as chat's. */
3359
3404
  private webBackendLoginsInstance;
3360
3405
  get webBackendLogins(): WebBackendLogins;
@@ -3648,6 +3693,11 @@ export declare class FleetManager implements FleetContext, LifecycleContext, Arc
3648
3693
  private cliEnvPath;
3649
3694
  /** Read the cached CLI env for a backend (a credential profile's own, when given), or null if missing/stale/unparseable. */
3650
3695
  private readCliEnv;
3696
+ /**
3697
+ * #2122 §10: the version the CLI probe last recorded for a backend — its cache file read whatever its age (the usage
3698
+ * reader's version gate needs the last known version, not a fresh one); null when none was recorded. Never a probe.
3699
+ */
3700
+ private lastRecordedCliVersion;
3651
3701
  /** Return cached CLI versions immediately. Refresh is started after /sysinfo is sent. */
3652
3702
  getBackendCliVersionSnapshot(): BackendCliVersionSnapshot;
3653
3703
  /** Called only after the user-visible sysinfo send/respond has settled. */