@symerian/symi 3.5.16 → 3.5.17

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 (46) hide show
  1. package/dist/build-info.json +3 -3
  2. package/dist/bundled/boot-md/handler.js +4 -4
  3. package/dist/bundled/session-memory/handler.js +4 -4
  4. package/dist/canvas-host/a2ui/.bundle.hash +1 -1
  5. package/dist/{chrome-OTJg3QKn.js → chrome-CmQwGAuL.js} +7 -7
  6. package/dist/{command-registry-2hfSOaGL.js → command-registry-Bmzf59Qv.js} +4 -4
  7. package/dist/{completion-cli-TYU7Y_XZ.js → completion-cli-BM4kZs0m.js} +2 -2
  8. package/dist/{completion-cli-BEO2AB41.js → completion-cli-CtUZzw-P.js} +1 -1
  9. package/dist/control-ui/css/style.css +166 -0
  10. package/dist/control-ui/js/symframe.js +246 -20
  11. package/dist/{deliver-BiWlR84Y.js → deliver-B04yNX82.js} +4 -4
  12. package/dist/{doctor-completion-CvaSyxyp.js → doctor-completion-Df7Hv_IA.js} +1 -1
  13. package/dist/{doctor-completion-DgNgQFQQ.js → doctor-completion-Do20Q4ZM.js} +1 -1
  14. package/dist/entry.js +1 -1
  15. package/dist/{gateway-cli-DCTPCoQx.js → gateway-cli-CKlpsjYJ.js} +1 -1
  16. package/dist/{gateway-cli-BNhURE6O.js → gateway-cli-CwuURJSh.js} +1 -1
  17. package/dist/index.js +1 -1
  18. package/dist/llm-slug-generator.js +4 -4
  19. package/dist/{manager-DjhE8yLr.js → manager-B-wPs7cb.js} +1 -1
  20. package/dist/{onboard-DRn6pFfO.js → onboard-3FdfkbGm.js} +1 -1
  21. package/dist/{onboard-fBxK2Bky.js → onboard-DFbgAa-t.js} +1 -1
  22. package/dist/{onboarding-CLOZkMhc.js → onboarding-BigIUHoh.js} +1 -1
  23. package/dist/{onboarding-i1rA1XGe.js → onboarding-fq_-89Jc.js} +1 -1
  24. package/dist/{onboarding.finalize-BV76YUaD.js → onboarding.finalize-BGDBP9G7.js} +4 -4
  25. package/dist/{onboarding.finalize-gk9ot6lb.js → onboarding.finalize-C2Dt95Rn.js} +3 -3
  26. package/dist/plugin-sdk/index.js +6 -6
  27. package/dist/{program-Qug3oi2C.js → program-FBDhJLrg.js} +2 -2
  28. package/dist/{program-context-CCIGjsQL.js → program-context-CZYb4zB2.js} +7 -7
  29. package/dist/{prompt-select-styled-ARnCLf3Q.js → prompt-select-styled-C3LUG3Be.js} +1 -1
  30. package/dist/{prompt-select-styled-BdNTADj2.js → prompt-select-styled-DQyZ6VHH.js} +1 -1
  31. package/dist/{pw-ai-DY_6l11g.js → pw-ai-DLsdzdgc.js} +1 -1
  32. package/dist/{register.maintenance-CTF70v5h.js → register.maintenance-81d4KKmA.js} +5 -5
  33. package/dist/{register.maintenance-BncnnneX.js → register.maintenance-FWHasNw7.js} +4 -4
  34. package/dist/{register.onboard-O0P6rCuX.js → register.onboard-BjPPudfS.js} +2 -2
  35. package/dist/{register.onboard-DhcpKFgU.js → register.onboard-COyX1xSR.js} +2 -2
  36. package/dist/{register.setup-CZfWa9-Z.js → register.setup-C_ds_5fl.js} +2 -2
  37. package/dist/{register.setup-D3XQyELS.js → register.setup-DDMtRxcF.js} +2 -2
  38. package/dist/{register.subclis-Dv8bf2ox.js → register.subclis-B16w8wxz.js} +4 -4
  39. package/dist/{run-main-BsVhPYM4.js → run-main-CUMiBvgm.js} +3 -3
  40. package/dist/{symframe-cli-CsA_x7U9.js → symframe-cli-DLbhzXNU.js} +16 -2
  41. package/dist/{symframe-cli-BKrtoG8H.js → symframe-cli-OqTUw6Mt.js} +16 -2
  42. package/dist/{synthesis-Dv6bJWYX.js → synthesis-CG0rRaLA.js} +4 -4
  43. package/dist/{unified-runner-ByJSAveb.js → unified-runner-ChkYfsxy.js} +10 -10
  44. package/dist/{update-cli-y4Q__h4E.js → update-cli-BhI88CVk.js} +5 -5
  45. package/dist/{update-cli-CrP5Kvo4.js → update-cli-jxM3sFLP.js} +4 -4
  46. package/package.json +1 -1
@@ -9,7 +9,7 @@ import { t as formatCliCommand } from "./command-format-BrrHNE8r.js";
9
9
  import { n as isPidAlive, t as resolveProcessScopedMap } from "./process-scoped-map-B-dHc_9I.js";
10
10
  import { c as loadConfig, d as writeConfigFile, m as parseByteSize, p as parseDurationMs, s as createConfigIO, t as SsrFBlockedError } from "./ssrf-DNhyFMRW.js";
11
11
  import { t as parseBooleanValue } from "./boolean-BsqeuxE6.js";
12
- import { A as DEFAULT_BROWSER_EVALUATE_ENABLED, D as DEFAULT_AI_SNAPSHOT_EFFICIENT_MAX_CHARS, E as DEFAULT_AI_SNAPSHOT_EFFICIENT_DEPTH, M as DEFAULT_SYMI_BROWSER_ENABLED, N as DEFAULT_SYMI_BROWSER_PROFILE_NAME, O as DEFAULT_AI_SNAPSHOT_MAX_CHARS, S as stopChromeExtensionRelayServer, _ as fetchJson, a as resolveSymiUserDataDir, c as captureScreenshot, d as normalizeCdpWsUrl, f as snapshotAria, g as appendCdpPath, h as withBrowserNavigationPolicy, i as launchSymiChrome, j as DEFAULT_SYMI_BROWSER_COLOR, k as DEFAULT_BROWSER_DEFAULT_PROFILE_NAME, l as createTargetViaCdp, m as assertBrowserNavigationAllowed, n as isChromeCdpReady, o as stopSymiChrome, p as InvalidBrowserNavigationUrlError, r as isChromeReachable, s as resolveBrowserExecutableForPlatform, v as fetchOk, w as isLoopbackHost, x as ensureChromeExtensionRelayServer } from "./chrome-OTJg3QKn.js";
12
+ import { A as DEFAULT_BROWSER_EVALUATE_ENABLED, D as DEFAULT_AI_SNAPSHOT_EFFICIENT_MAX_CHARS, E as DEFAULT_AI_SNAPSHOT_EFFICIENT_DEPTH, M as DEFAULT_SYMI_BROWSER_ENABLED, N as DEFAULT_SYMI_BROWSER_PROFILE_NAME, O as DEFAULT_AI_SNAPSHOT_MAX_CHARS, S as stopChromeExtensionRelayServer, _ as fetchJson, a as resolveSymiUserDataDir, c as captureScreenshot, d as normalizeCdpWsUrl, f as snapshotAria, g as appendCdpPath, h as withBrowserNavigationPolicy, i as launchSymiChrome, j as DEFAULT_SYMI_BROWSER_COLOR, k as DEFAULT_BROWSER_DEFAULT_PROFILE_NAME, l as createTargetViaCdp, m as assertBrowserNavigationAllowed, n as isChromeCdpReady, o as stopSymiChrome, p as InvalidBrowserNavigationUrlError, r as isChromeReachable, s as resolveBrowserExecutableForPlatform, v as fetchOk, w as isLoopbackHost, x as ensureChromeExtensionRelayServer } from "./chrome-CmQwGAuL.js";
13
13
  import { a as syncSkillsToWorkspace, l as resolveSandboxInputPath, m as sanitizeEnvVars, u as resolveSandboxPath } from "./skills-Dm4gX4Tl.js";
14
14
  import { n as formatErrorMessage, t as extractErrorCode } from "./errors-C89ppfp9.js";
15
15
  import { b as SafeOpenError, d as extensionForMime, i as buildImageResizeSideGrid, l as resizeToJpeg, o as getImageMetadata, r as IMAGE_REDUCE_QUALITY_STEPS, t as getAgentScopedMediaLocalRoots, u as detectMime, x as openFileWithinRoot } from "./local-roots-C7fBKoOI.js";
@@ -939,7 +939,7 @@ function isModuleNotFoundError(err) {
939
939
  }
940
940
  async function loadPwAiModule(mode) {
941
941
  try {
942
- return await import("./pw-ai-DY_6l11g.js");
942
+ return await import("./pw-ai-DLsdzdgc.js");
943
943
  } catch (err) {
944
944
  if (mode === "soft") return null;
945
945
  if (isModuleNotFoundError(err)) return null;
@@ -3536,11 +3536,11 @@ function createProfileContext(opts, profile) {
3536
3536
  const userDataDir = resolveSymiUserDataDir(profile.name);
3537
3537
  const profileState = getProfileState();
3538
3538
  if (await isHttpReachable(300) && !profileState.running) try {
3539
- await (await import("./pw-ai-DY_6l11g.js")).closePlaywrightBrowserConnection();
3539
+ await (await import("./pw-ai-DLsdzdgc.js")).closePlaywrightBrowserConnection();
3540
3540
  } catch {}
3541
3541
  if (profileState.running) await stopRunningBrowser();
3542
3542
  try {
3543
- await (await import("./pw-ai-DY_6l11g.js")).closePlaywrightBrowserConnection();
3543
+ await (await import("./pw-ai-DLsdzdgc.js")).closePlaywrightBrowserConnection();
3544
3544
  } catch {}
3545
3545
  if (!fs.existsSync(userDataDir)) return {
3546
3546
  moved: false,
@@ -1,7 +1,7 @@
1
1
  import { n as resolveCliName } from "./cli-name-CzMV-gJF.js";
2
2
  import { t as resolveSymiPackageRoot } from "./symi-root-BQ0IpoW2.js";
3
3
  import { t as note } from "./note-ytwb4wwn.js";
4
- import { a as resolveCompletionCachePath, i as isCompletionInstalled, o as resolveShellFromEnv, r as installCompletion, s as usesSlowDynamicCompletion, t as completionCacheExists } from "./completion-cli-BEO2AB41.js";
4
+ import { a as resolveCompletionCachePath, i as isCompletionInstalled, o as resolveShellFromEnv, r as installCompletion, s as usesSlowDynamicCompletion, t as completionCacheExists } from "./completion-cli-CtUZzw-P.js";
5
5
  import path from "node:path";
6
6
  import { spawnSync } from "node:child_process";
7
7
 
@@ -1,7 +1,7 @@
1
1
  import { n as resolveCliName } from "./cli-name-DY75UA5M.js";
2
2
  import { t as resolveSymiPackageRoot } from "./symi-root-Ctw1Rb_n.js";
3
3
  import { t as note } from "./note-Cltpxj6i.js";
4
- import { a as resolveCompletionCachePath, i as isCompletionInstalled, o as resolveShellFromEnv, r as installCompletion, s as usesSlowDynamicCompletion, t as completionCacheExists } from "./completion-cli-TYU7Y_XZ.js";
4
+ import { a as resolveCompletionCachePath, i as isCompletionInstalled, o as resolveShellFromEnv, r as installCompletion, s as usesSlowDynamicCompletion, t as completionCacheExists } from "./completion-cli-BM4kZs0m.js";
5
5
  import { spawnSync } from "node:child_process";
6
6
  import path from "node:path";
7
7
 
package/dist/entry.js CHANGED
@@ -2315,7 +2315,7 @@ if (!ensureExperimentalWarningSuppressed()) {
2315
2315
  applyCliProfileEnv({ profile: parsed.profile });
2316
2316
  process$1.argv = parsed.argv;
2317
2317
  }
2318
- import("./run-main-BsVhPYM4.js").then(({ runCli }) => runCli(process$1.argv)).catch((error) => {
2318
+ import("./run-main-CUMiBvgm.js").then(({ runCli }) => runCli(process$1.argv)).catch((error) => {
2319
2319
  console.error("[symi] Failed to start CLI:", error instanceof Error ? error.stack ?? error.message : error);
2320
2320
  process$1.exitCode = 1;
2321
2321
  });
@@ -122,7 +122,7 @@ import { n as createDefaultDeps, t as createOutboundSendDeps } from "./outbound-
122
122
  import { a as resolveControlUiRootSync, i as resolveControlUiRootOverrideSync, t as ensureControlUiAssetsBuilt } from "./control-ui-assets-DfBRXG5y.js";
123
123
  import { t as ensureSymiCliOnPath } from "./path-env-C1hgM8gP.js";
124
124
  import { a as resolveNpmChannelTag, c as DEFAULT_PACKAGE_CHANNEL, m as normalizeUpdateChannel, n as compareSemverStrings, t as checkUpdateStatus } from "./update-check-A86nJKtZ.js";
125
- import { t as runOnboardingWizard } from "./onboarding-i1rA1XGe.js";
125
+ import { t as runOnboardingWizard } from "./onboarding-fq_-89Jc.js";
126
126
  import { C as startGatewayConfigReloader, S as resolveCronRunLogPath, _ as MAX_PAYLOAD_BYTES, a as loadFavoritesSet, b as abortChatRunById, c as resolveAssistantIdentity, d as formatError, f as loadVoiceWakeConfig, g as MAX_BUFFERED_BYTES, h as HEALTH_REFRESH_INTERVAL_MS, i as safeParseJson, l as listSystemPresence, m as DEDUPE_TTL_MS, n as handleGatewayRequest, o as reconcileFavorites, p as DEDUPE_MAX, r as broadcastPresenceSnapshot, s as DEFAULT_ASSISTANT_IDENTITY, t as coreGatewayHandlers, u as upsertPresence, v as TICK_INTERVAL_MS, x as appendCronRunLog, y as getHandshakeTimeoutMs } from "./server-methods-C3_JU-DI.js";
127
127
  import { d as shouldLogWs, f as summarizeAgentEventForWsLog, l as formatForLog, p as setGatewayWsLogStyle, u as logWs } from "./push-apns-BWeNJb15.js";
128
128
  import { T as resolveGmailHookRuntimeConfig, _ as buildGogWatchServeArgs, i as ensureTailscaleEndpoint, v as buildGogWatchStartArgs } from "./gmail-setup-utils-_TEJA4pL.js";
@@ -127,7 +127,7 @@ import { r as pickGatewaySelfPresence } from "./status-DbIBRkrV.js";
127
127
  import { i as styleHealthChannelLine, n as getHealthSnapshot, t as formatHealthChannelLines } from "./health--v-C6lSf.js";
128
128
  import { a as resolveControlUiRootSync, i as resolveControlUiRootOverrideSync, t as ensureControlUiAssetsBuilt } from "./control-ui-assets-CnX0W3vy.js";
129
129
  import { a as resolveNpmChannelTag, c as DEFAULT_PACKAGE_CHANNEL, m as normalizeUpdateChannel, n as compareSemverStrings, t as checkUpdateStatus } from "./update-check-oEbS0voJ.js";
130
- import { t as runOnboardingWizard } from "./onboarding-CLOZkMhc.js";
130
+ import { t as runOnboardingWizard } from "./onboarding-BigIUHoh.js";
131
131
  import { C as startGatewayConfigReloader, S as resolveCronRunLogPath, _ as MAX_PAYLOAD_BYTES, a as loadFavoritesSet, b as abortChatRunById, c as resolveAssistantIdentity, d as formatError, f as loadVoiceWakeConfig, g as MAX_BUFFERED_BYTES, h as HEALTH_REFRESH_INTERVAL_MS, i as safeParseJson, l as listSystemPresence, m as DEDUPE_TTL_MS, n as handleGatewayRequest, o as reconcileFavorites, p as DEDUPE_MAX, r as broadcastPresenceSnapshot, s as DEFAULT_ASSISTANT_IDENTITY, t as coreGatewayHandlers, u as upsertPresence, v as TICK_INTERVAL_MS, x as appendCronRunLog, y as getHandshakeTimeoutMs } from "./server-methods-D_zGEWNK.js";
132
132
  import { d as shouldLogWs, f as summarizeAgentEventForWsLog, l as formatForLog, p as setGatewayWsLogStyle, u as logWs } from "./push-apns-CLngpXwL.js";
133
133
  import { T as resolveGmailHookRuntimeConfig, _ as buildGogWatchServeArgs, i as ensureTailscaleEndpoint, v as buildGogWatchStartArgs } from "./gmail-setup-utils-DJgxyDTX.js";
package/dist/index.js CHANGED
@@ -94,7 +94,7 @@ import { t as ensureSymiCliOnPath } from "./path-env-BAyW1s3c.js";
94
94
  import { t as assertSupportedRuntime } from "./runtime-guard-Bgv3O9s4.js";
95
95
  import "./ports-BE4iY9ho.js";
96
96
  import { a as hasFlag, i as getVerboseFlag, n as getCommandPath, o as hasHelpOrVersion, s as hasRootVersionAlias } from "./argv-Bl0th4dq.js";
97
- import { i as getCoreCliCommandsWithSubcommands, n as setProgramContext, o as registerProgramCommands, s as getSubCliCommandsWithSubcommands } from "./program-context-CCIGjsQL.js";
97
+ import { i as getCoreCliCommandsWithSubcommands, n as setProgramContext, o as registerProgramCommands, s as getSubCliCommandsWithSubcommands } from "./program-context-CZYb4zB2.js";
98
98
  import "./catalog-BnLcGVie.js";
99
99
  import "./plugin-registry-2DU3g0AT.js";
100
100
  import { n as resolveCliChannelOptions } from "./channel-options-1G5HGFpn.js";
@@ -3,15 +3,15 @@ import "./registry-C-JddWwo.js";
3
3
  import { o as resolveAgentWorkspaceDir, s as resolveDefaultAgentId } from "./agent-scope-B1Ina6jV.js";
4
4
  import "./subsystem-DzRUKS9f.js";
5
5
  import "./workspace-CsaDUuDn.js";
6
- import { t as runAgentTurn } from "./unified-runner-ByJSAveb.js";
6
+ import { t as runAgentTurn } from "./unified-runner-ChkYfsxy.js";
7
7
  import "./auth-profiles-BSw0aQND.js";
8
8
  import "./model-selection-BqshlIZc.js";
9
- import "./deliver-BiWlR84Y.js";
9
+ import "./deliver-B04yNX82.js";
10
10
  import "./ssrf-DNhyFMRW.js";
11
11
  import "./boolean-BsqeuxE6.js";
12
12
  import "./shell-env-B1lDWz4t.js";
13
13
  import "./manifest-registry-BGJu2aC-.js";
14
- import "./chrome-OTJg3QKn.js";
14
+ import "./chrome-CmQwGAuL.js";
15
15
  import "./frontmatter-CJEX1BrH.js";
16
16
  import "./skills-Dm4gX4Tl.js";
17
17
  import "./redact-CSGZUFxa.js";
@@ -25,7 +25,7 @@ import "./paths-BsT3BvfH.js";
25
25
  import "./tokens-D_vCJSzF.js";
26
26
  import "./diagnostic-BALvP9wI.js";
27
27
  import "./diagnostic-session-state-BDfanaOY.js";
28
- import "./manager-DjhE8yLr.js";
28
+ import "./manager-B-wPs7cb.js";
29
29
  import "./github-copilot-token-uhEBNQfj.js";
30
30
  import "./pi-auth-json-DCGR3yfh.js";
31
31
  import "./reply-prefix-D0NzzC4I.js";
@@ -4449,7 +4449,7 @@ var MemoryIndexManager = class MemoryIndexManager extends MemoryManagerEmbedding
4449
4449
  * to bypass the min-interval guard (CLI use).
4450
4450
  */
4451
4451
  async runL3CycleIfDue(params) {
4452
- const [{ runL3Cycle, runL3CycleIfDue }, { createSynthesizer }] = await Promise.all([import("./consolidate-Dyh_aESo.js"), import("./synthesis-Dv6bJWYX.js")]);
4452
+ const [{ runL3Cycle, runL3CycleIfDue }, { createSynthesizer }] = await Promise.all([import("./consolidate-Dyh_aESo.js"), import("./synthesis-CG0rRaLA.js")]);
4453
4453
  const synthesize = createSynthesizer({
4454
4454
  cfg: this.cfg,
4455
4455
  agentId: this.agentId,
@@ -15,7 +15,7 @@ import { a as ensureWorkspaceAndSessions, b as waitForGatewayReachable, c as han
15
15
  import { r as isSystemdUserServiceAvailable } from "./systemd-Dic80Qni.js";
16
16
  import { t as resolveGatewayService } from "./service-BF50XyKr.js";
17
17
  import { r as healthCommand } from "./health--v-C6lSf.js";
18
- import { t as runOnboardingWizard } from "./onboarding-CLOZkMhc.js";
18
+ import { t as runOnboardingWizard } from "./onboarding-BigIUHoh.js";
19
19
  import { $ as setHuggingfaceApiKey, A as applyXaiConfig, B as applyVercelAiGatewayConfig, E as applyTogetherConfig, I as applyLitellmConfig, M as applyXiaomiConfig, O as applyVeniceConfig, P as applyZaiConfig, Q as setGeminiApiKey, R as applyCloudflareAiGatewayConfig, S as applyQianfanConfig, X as setAnthropicApiKey, Z as setCloudflareAiGatewayConfig, _ as applyMoonshotConfigCn, a as applyMinimaxApiConfig, at as setOpenrouterApiKey, b as applyOpenrouterConfig, ct as setTogetherApiKey, d as applyAuthProfileConfig, dt as setXaiApiKey, et as setKimiCodingApiKey, f as applyHuggingfaceConfig, ft as setXiaomiApiKey, g as applyMoonshotConfig, it as setOpencodeZenApiKey, l as applyMinimaxConfig, lt as setVeniceApiKey, m as applyKimiCodeConfig, n as validateAnthropicSetupToken, nt as setMinimaxApiKey, o as applyMinimaxApiConfigCn, ot as setQianfanApiKey, pt as setZaiApiKey, r as applyOpencodeZenConfig, rt as setMoonshotApiKey, st as setSyntheticApiKey, t as buildTokenProfileId, tt as setLitellmApiKey, ut as setVercelAiGatewayApiKey, w as applySyntheticConfig } from "./auth-token-DyhvQgv4.js";
20
20
  import { n as logConfigUpdated } from "./logging-BmJ5ky59.js";
21
21
  import { n as isDeprecatedAuthChoice, r as normalizeLegacyOnboardAuthChoice } from "./auth-choice-legacy-BZWIpO92.js";
@@ -13,7 +13,7 @@ import { a as ensureWorkspaceAndSessions, b as waitForGatewayReachable, c as han
13
13
  import { r as isSystemdUserServiceAvailable } from "./systemd-Dtydk5-z.js";
14
14
  import { t as resolveGatewayService } from "./service-Ccv3Zi5_.js";
15
15
  import { r as healthCommand } from "./health-D0jGdk53.js";
16
- import { t as runOnboardingWizard } from "./onboarding-i1rA1XGe.js";
16
+ import { t as runOnboardingWizard } from "./onboarding-fq_-89Jc.js";
17
17
  import { $ as setHuggingfaceApiKey, A as applyXaiConfig, B as applyVercelAiGatewayConfig, E as applyTogetherConfig, I as applyLitellmConfig, M as applyXiaomiConfig, O as applyVeniceConfig, P as applyZaiConfig, Q as setGeminiApiKey, R as applyCloudflareAiGatewayConfig, S as applyQianfanConfig, X as setAnthropicApiKey, Z as setCloudflareAiGatewayConfig, _ as applyMoonshotConfigCn, a as applyMinimaxApiConfig, at as setOpenrouterApiKey, b as applyOpenrouterConfig, ct as setTogetherApiKey, d as applyAuthProfileConfig, dt as setXaiApiKey, et as setKimiCodingApiKey, f as applyHuggingfaceConfig, ft as setXiaomiApiKey, g as applyMoonshotConfig, it as setOpencodeZenApiKey, l as applyMinimaxConfig, lt as setVeniceApiKey, m as applyKimiCodeConfig, n as validateAnthropicSetupToken, nt as setMinimaxApiKey, o as applyMinimaxApiConfigCn, ot as setQianfanApiKey, pt as setZaiApiKey, r as applyOpencodeZenConfig, rt as setMoonshotApiKey, st as setSyntheticApiKey, t as buildTokenProfileId, tt as setLitellmApiKey, ut as setVercelAiGatewayApiKey, w as applySyntheticConfig } from "./auth-token-lPWiklDD.js";
18
18
  import { n as logConfigUpdated } from "./logging-BRejMykf.js";
19
19
  import { n as isDeprecatedAuthChoice, r as normalizeLegacyOnboardAuthChoice } from "./auth-choice-legacy-iEyARXI2.js";
@@ -304,7 +304,7 @@ async function runOnboardingWizard(opts, runtime = defaultRuntime, prompter) {
304
304
  mode
305
305
  });
306
306
  await writeConfigFile(nextConfig);
307
- const { finalizeOnboardingWizard } = await import("./onboarding.finalize-gk9ot6lb.js");
307
+ const { finalizeOnboardingWizard } = await import("./onboarding.finalize-C2Dt95Rn.js");
308
308
  const { launchedTui } = await finalizeOnboardingWizard({
309
309
  flow,
310
310
  opts,
@@ -302,7 +302,7 @@ async function runOnboardingWizard(opts, runtime = defaultRuntime, prompter) {
302
302
  mode
303
303
  });
304
304
  await writeConfigFile(nextConfig);
305
- const { finalizeOnboardingWizard } = await import("./onboarding.finalize-BV76YUaD.js");
305
+ const { finalizeOnboardingWizard } = await import("./onboarding.finalize-BGDBP9G7.js");
306
306
  const { launchedTui } = await finalizeOnboardingWizard({
307
307
  flow,
308
308
  opts,
@@ -40,10 +40,10 @@ import "./bindings-c7qLJdIA.js";
40
40
  import "./progress-BOQ0hkeM.js";
41
41
  import "./prompt-style-CzRuIYtp.js";
42
42
  import "./note-Cltpxj6i.js";
43
- import "./register.subclis-Dv8bf2ox.js";
44
- import "./command-registry-2hfSOaGL.js";
43
+ import "./register.subclis-B16w8wxz.js";
44
+ import "./command-registry-Bmzf59Qv.js";
45
45
  import "./program-context-CGKRxOBU.js";
46
- import { r as installCompletion } from "./completion-cli-TYU7Y_XZ.js";
46
+ import { r as installCompletion } from "./completion-cli-BM4kZs0m.js";
47
47
  import { a as gatewayInstallErrorHint, i as buildGatewayInstallPlan, n as GATEWAY_DAEMON_RUNTIME_OPTIONS, t as DEFAULT_GATEWAY_DAEMON_RUNTIME } from "./daemon-runtime-DaJ4Tf2a.js";
48
48
  import "./runtime-guard-ofQGcCUc.js";
49
49
  import { b as waitForGatewayReachable, f as openUrl, g as resolveControlUiLinks, i as detectBrowserOpenSupport, m as probeGatewayReachable, o as formatControlUiSshHint } from "./onboard-helpers-CAAZ0RDq.js";
@@ -52,7 +52,7 @@ import { t as resolveGatewayService } from "./service-Ccv3Zi5_.js";
52
52
  import { r as healthCommand } from "./health-D0jGdk53.js";
53
53
  import { t as ensureControlUiAssetsBuilt } from "./control-ui-assets-DfBRXG5y.js";
54
54
  import { t as formatHealthCheckFailure } from "./health-format-Li703vy6.js";
55
- import { r as ensureCompletionCacheExists, t as checkShellCompletionStatus } from "./doctor-completion-DgNgQFQQ.js";
55
+ import { r as ensureCompletionCacheExists, t as checkShellCompletionStatus } from "./doctor-completion-Do20Q4ZM.js";
56
56
  import { t as runTui } from "./tui-BdtfeKft.js";
57
57
  import os from "node:os";
58
58
  import path from "node:path";
@@ -44,10 +44,10 @@ import "./tool-display-DFOL6UQ9.js";
44
44
  import "./bindings-BAOPW5eK.js";
45
45
  import "./progress-DQTvTiEg.js";
46
46
  import "./runtime-guard-Bgv3O9s4.js";
47
- import "./program-context-CCIGjsQL.js";
47
+ import "./program-context-CZYb4zB2.js";
48
48
  import "./prompt-style-pphr4yLK.js";
49
49
  import "./note-ytwb4wwn.js";
50
- import { r as installCompletion } from "./completion-cli-BEO2AB41.js";
50
+ import { r as installCompletion } from "./completion-cli-CtUZzw-P.js";
51
51
  import { a as gatewayInstallErrorHint, i as buildGatewayInstallPlan, n as GATEWAY_DAEMON_RUNTIME_OPTIONS, t as DEFAULT_GATEWAY_DAEMON_RUNTIME } from "./daemon-runtime-7YBz5otm.js";
52
52
  import { b as waitForGatewayReachable, f as openUrl, g as resolveControlUiLinks, i as detectBrowserOpenSupport, m as probeGatewayReachable, o as formatControlUiSshHint } from "./onboard-helpers-Cv6fL8Vq.js";
53
53
  import { r as isSystemdUserServiceAvailable } from "./systemd-Dic80Qni.js";
@@ -55,7 +55,7 @@ import { t as resolveGatewayService } from "./service-BF50XyKr.js";
55
55
  import { r as healthCommand } from "./health--v-C6lSf.js";
56
56
  import { t as ensureControlUiAssetsBuilt } from "./control-ui-assets-CnX0W3vy.js";
57
57
  import { t as formatHealthCheckFailure } from "./health-format-Dp4xmTKn.js";
58
- import { r as ensureCompletionCacheExists, t as checkShellCompletionStatus } from "./doctor-completion-CvaSyxyp.js";
58
+ import { r as ensureCompletionCacheExists, t as checkShellCompletionStatus } from "./doctor-completion-Df7Hv_IA.js";
59
59
  import { t as runTui } from "./tui-CO7OA9ZO.js";
60
60
  import path from "node:path";
61
61
  import os from "node:os";
@@ -4,7 +4,7 @@ import path from "node:path";
4
4
  import fs, { constants, readFileSync } from "node:fs";
5
5
  import os from "node:os";
6
6
  import { Logger } from "tslog";
7
- import json5 from "json5";
7
+ import JSON5 from "json5";
8
8
  import chalk, { Chalk } from "chalk";
9
9
  import fs$1, { mkdtemp, rm } from "node:fs/promises";
10
10
  import { z } from "zod";
@@ -294,7 +294,7 @@ function readLoggingConfig() {
294
294
  try {
295
295
  if (!fs.existsSync(configPath)) return;
296
296
  const raw = fs.readFileSync(configPath, "utf-8");
297
- const logging = json5.parse(raw)?.logging;
297
+ const logging = JSON5.parse(raw)?.logging;
298
298
  if (!logging || typeof logging !== "object" || Array.isArray(logging)) return;
299
299
  return logging;
300
300
  } catch {
@@ -7392,7 +7392,7 @@ function safeRealpath(target) {
7392
7392
  }
7393
7393
  const defaultResolver = {
7394
7394
  readFile: (p) => fs.readFileSync(p, "utf-8"),
7395
- parseJson: (raw) => json5.parse(raw)
7395
+ parseJson: (raw) => JSON5.parse(raw)
7396
7396
  };
7397
7397
  /**
7398
7398
  * Resolves all $include directives in a parsed config object.
@@ -10623,7 +10623,7 @@ function resolveConfigPathForDeps(deps) {
10623
10623
  function normalizeDeps(overrides = {}) {
10624
10624
  return {
10625
10625
  fs: overrides.fs ?? fs,
10626
- json5: overrides.json5 ?? json5,
10626
+ json5: overrides.json5 ?? JSON5,
10627
10627
  env: overrides.env ?? process.env,
10628
10628
  homedir: overrides.homedir ?? (() => resolveRequiredHomeDir(overrides.env ?? process.env, os.homedir)),
10629
10629
  configPath: overrides.configPath ?? "",
@@ -10634,11 +10634,11 @@ function maybeLoadDotEnvForConfig(env) {
10634
10634
  if (env !== process.env) return;
10635
10635
  loadDotEnv({ quiet: true });
10636
10636
  }
10637
- function parseConfigJson5(raw, json5$1 = json5) {
10637
+ function parseConfigJson5(raw, json5 = JSON5) {
10638
10638
  try {
10639
10639
  return {
10640
10640
  ok: true,
10641
- parsed: json5$1.parse(raw)
10641
+ parsed: json5.parse(raw)
10642
10642
  };
10643
10643
  } catch (err) {
10644
10644
  return {
@@ -87,8 +87,8 @@ import "./pi-tools.policy-CU8U7--z.js";
87
87
  import "./catalog-BaM8d1-T.js";
88
88
  import "./plugin-registry-CubHLj0v.js";
89
89
  import { n as resolveCliChannelOptions } from "./channel-options-CsyyC4uc.js";
90
- import { t as getSubCliCommandsWithSubcommands } from "./register.subclis-Dv8bf2ox.js";
91
- import { a as registerProgramCommands, r as getCoreCliCommandsWithSubcommands } from "./command-registry-2hfSOaGL.js";
90
+ import { t as getSubCliCommandsWithSubcommands } from "./register.subclis-B16w8wxz.js";
91
+ import { a as registerProgramCommands, r as getCoreCliCommandsWithSubcommands } from "./command-registry-Bmzf59Qv.js";
92
92
  import { r as setProgramContext } from "./program-context-CGKRxOBU.js";
93
93
  import { t as forceFreePort } from "./ports-C2swmreL.js";
94
94
  import { n as formatCliBannerLine, r as hasEmittedCliBanner, t as emitCliBanner } from "./banner-B91SPus6.js";
@@ -35,7 +35,7 @@ const entries = [
35
35
  description: "Run, inspect, and query the WebSocket Gateway",
36
36
  hasSubcommands: true,
37
37
  register: async (program) => {
38
- (await import("./gateway-cli-BNhURE6O.js")).registerGatewayCli(program);
38
+ (await import("./gateway-cli-CwuURJSh.js")).registerGatewayCli(program);
39
39
  }
40
40
  },
41
41
  {
@@ -223,7 +223,7 @@ const entries = [
223
223
  description: "Update Symi and inspect update channel status",
224
224
  hasSubcommands: true,
225
225
  register: async (program) => {
226
- (await import("./update-cli-CrP5Kvo4.js")).registerUpdateCli(program);
226
+ (await import("./update-cli-jxM3sFLP.js")).registerUpdateCli(program);
227
227
  }
228
228
  },
229
229
  {
@@ -231,7 +231,7 @@ const entries = [
231
231
  description: "Generate shell completion script",
232
232
  hasSubcommands: false,
233
233
  register: async (program) => {
234
- (await import("./completion-cli-BEO2AB41.js").then((n) => n.n)).registerCompletionCli(program);
234
+ (await import("./completion-cli-CtUZzw-P.js").then((n) => n.n)).registerCompletionCli(program);
235
235
  }
236
236
  },
237
237
  {
@@ -247,7 +247,7 @@ const entries = [
247
247
  description: "Push cards to the Glass UI symframe (right-column dynamic display)",
248
248
  hasSubcommands: true,
249
249
  register: async (program) => {
250
- (await import("./symframe-cli-CsA_x7U9.js")).registerSymframeCli(program);
250
+ (await import("./symframe-cli-DLbhzXNU.js")).registerSymframeCli(program);
251
251
  }
252
252
  }
253
253
  ];
@@ -310,7 +310,7 @@ const coreEntries = [
310
310
  hasSubcommands: false
311
311
  }],
312
312
  register: async ({ program }) => {
313
- (await import("./register.setup-CZfWa9-Z.js")).registerSetupCommand(program);
313
+ (await import("./register.setup-C_ds_5fl.js")).registerSetupCommand(program);
314
314
  }
315
315
  },
316
316
  {
@@ -320,7 +320,7 @@ const coreEntries = [
320
320
  hasSubcommands: false
321
321
  }],
322
322
  register: async ({ program }) => {
323
- (await import("./register.onboard-DhcpKFgU.js")).registerOnboardCommand(program);
323
+ (await import("./register.onboard-COyX1xSR.js")).registerOnboardCommand(program);
324
324
  }
325
325
  },
326
326
  {
@@ -367,7 +367,7 @@ const coreEntries = [
367
367
  }
368
368
  ],
369
369
  register: async ({ program }) => {
370
- (await import("./register.maintenance-BncnnneX.js")).registerMaintenanceCommands(program);
370
+ (await import("./register.maintenance-FWHasNw7.js")).registerMaintenanceCommands(program);
371
371
  }
372
372
  },
373
373
  {
@@ -42,7 +42,7 @@ import { n as logConfigUpdated } from "./logging-BRejMykf.js";
42
42
  import { n as detectLegacyStateMigrations, r as runLegacyStateMigrations, t as loadAndMaybeMigrateDoctorConfig } from "./doctor-config-flow-CKJlpwtv.js";
43
43
  import { t as ensureSystemdUserLingerInteractive } from "./systemd-linger-DjoQVcOq.js";
44
44
  import { t as formatHealthCheckFailure } from "./health-format-Li703vy6.js";
45
- import { n as doctorShellCompletion } from "./doctor-completion-DgNgQFQQ.js";
45
+ import { n as doctorShellCompletion } from "./doctor-completion-Do20Q4ZM.js";
46
46
  import { execFile } from "node:child_process";
47
47
  import os from "node:os";
48
48
  import path from "node:path";
@@ -46,7 +46,7 @@ import { n as logConfigUpdated } from "./logging-BmJ5ky59.js";
46
46
  import { n as detectLegacyStateMigrations, r as runLegacyStateMigrations, t as loadAndMaybeMigrateDoctorConfig } from "./doctor-config-flow-CcwEh3WQ.js";
47
47
  import { t as ensureSystemdUserLingerInteractive } from "./systemd-linger-BBxRNFXz.js";
48
48
  import { t as formatHealthCheckFailure } from "./health-format-Dp4xmTKn.js";
49
- import { n as doctorShellCompletion } from "./doctor-completion-CvaSyxyp.js";
49
+ import { n as doctorShellCompletion } from "./doctor-completion-Df7Hv_IA.js";
50
50
  import path from "node:path";
51
51
  import fs from "node:fs";
52
52
  import os from "node:os";
@@ -9,7 +9,7 @@ import "./ssrf-DNhyFMRW.js";
9
9
  import "./boolean-BsqeuxE6.js";
10
10
  import "./shell-env-B1lDWz4t.js";
11
11
  import "./manifest-registry-BGJu2aC-.js";
12
- import { _ as fetchJson, b as withCdpSocket, d as normalizeCdpWsUrl, g as appendCdpPath, h as withBrowserNavigationPolicy, m as assertBrowserNavigationAllowed, t as getChromeWebSocketUrl, u as formatAriaSnapshot, y as getHeadersWithAuth } from "./chrome-OTJg3QKn.js";
12
+ import { _ as fetchJson, b as withCdpSocket, d as normalizeCdpWsUrl, g as appendCdpPath, h as withBrowserNavigationPolicy, m as assertBrowserNavigationAllowed, t as getChromeWebSocketUrl, u as formatAriaSnapshot, y as getHeadersWithAuth } from "./chrome-CmQwGAuL.js";
13
13
  import "./redact-CSGZUFxa.js";
14
14
  import { n as formatErrorMessage } from "./errors-C89ppfp9.js";
15
15
  import path from "node:path";
@@ -91,10 +91,10 @@ import { n as stylePromptMessage, r as stylePromptTitle, t as stylePromptHint }
91
91
  import "./note-Cltpxj6i.js";
92
92
  import "./plugin-auto-enable-PBDcVF_-.js";
93
93
  import "./channels-status-issues-BwbA2OBt.js";
94
- import "./register.subclis-Dv8bf2ox.js";
95
- import "./command-registry-2hfSOaGL.js";
94
+ import "./register.subclis-B16w8wxz.js";
95
+ import "./command-registry-Bmzf59Qv.js";
96
96
  import "./program-context-CGKRxOBU.js";
97
- import "./completion-cli-TYU7Y_XZ.js";
97
+ import "./completion-cli-BM4kZs0m.js";
98
98
  import "./daemon-runtime-DaJ4Tf2a.js";
99
99
  import "./runtime-guard-ofQGcCUc.js";
100
100
  import { f as openUrl, g as resolveControlUiLinks, i as detectBrowserOpenSupport, o as formatControlUiSshHint } from "./onboard-helpers-CAAZ0RDq.js";
@@ -111,8 +111,8 @@ import "./logging-BRejMykf.js";
111
111
  import "./doctor-config-flow-CKJlpwtv.js";
112
112
  import "./systemd-linger-DjoQVcOq.js";
113
113
  import "./health-format-Li703vy6.js";
114
- import { n as doctorCommand, t as selectStyled } from "./prompt-select-styled-ARnCLf3Q.js";
115
- import "./doctor-completion-DgNgQFQQ.js";
114
+ import { n as doctorCommand, t as selectStyled } from "./prompt-select-styled-C3LUG3Be.js";
115
+ import "./doctor-completion-Do20Q4ZM.js";
116
116
  import path from "node:path";
117
117
  import fs from "node:fs/promises";
118
118
  import { cancel, confirm, isCancel, multiselect } from "@clack/prompts";
@@ -89,7 +89,7 @@ import "./replies-C5CBlnFS.js";
89
89
  import "./pi-tools.policy-WaLKhqJQ.js";
90
90
  import "./model-BMFj7NXy.js";
91
91
  import "./runtime-guard-Bgv3O9s4.js";
92
- import "./program-context-CCIGjsQL.js";
92
+ import "./program-context-CZYb4zB2.js";
93
93
  import "./catalog-BnLcGVie.js";
94
94
  import "./skills-status-6LVKpabC.js";
95
95
  import { t as copyToClipboard } from "./clipboard-BSTxQ2tO.js";
@@ -97,7 +97,7 @@ import { n as stylePromptMessage, r as stylePromptTitle, t as stylePromptHint }
97
97
  import "./note-ytwb4wwn.js";
98
98
  import "./plugin-auto-enable-Bt2sVz8w.js";
99
99
  import "./channels-status-issues-iWQDGUQe.js";
100
- import "./completion-cli-BEO2AB41.js";
100
+ import "./completion-cli-CtUZzw-P.js";
101
101
  import "./daemon-runtime-7YBz5otm.js";
102
102
  import { f as openUrl, g as resolveControlUiLinks, i as detectBrowserOpenSupport, o as formatControlUiSshHint } from "./onboard-helpers-Cv6fL8Vq.js";
103
103
  import "./systemd-Dic80Qni.js";
@@ -113,8 +113,8 @@ import "./logging-BmJ5ky59.js";
113
113
  import "./doctor-config-flow-CcwEh3WQ.js";
114
114
  import "./systemd-linger-BBxRNFXz.js";
115
115
  import "./health-format-Dp4xmTKn.js";
116
- import { n as doctorCommand, t as selectStyled } from "./prompt-select-styled-BdNTADj2.js";
117
- import "./doctor-completion-CvaSyxyp.js";
116
+ import { n as doctorCommand, t as selectStyled } from "./prompt-select-styled-DQyZ6VHH.js";
117
+ import "./doctor-completion-Df7Hv_IA.js";
118
118
  import path from "node:path";
119
119
  import fs from "node:fs/promises";
120
120
  import { cancel, confirm, isCancel, multiselect } from "@clack/prompts";
@@ -35,7 +35,7 @@ import "./onboard-helpers-CAAZ0RDq.js";
35
35
  import "./systemd-Dtydk5-z.js";
36
36
  import "./service-Ccv3Zi5_.js";
37
37
  import "./health-D0jGdk53.js";
38
- import "./onboarding-i1rA1XGe.js";
38
+ import "./onboarding-fq_-89Jc.js";
39
39
  import "./shared-Crfo8y70.js";
40
40
  import "./auth-token-lPWiklDD.js";
41
41
  import "./logging-BRejMykf.js";
@@ -44,7 +44,7 @@ import "./openai-model-default-ChdgeMqX.js";
44
44
  import "./model-picker-CS_h9RHv.js";
45
45
  import "./systemd-linger-DjoQVcOq.js";
46
46
  import "./onboard-custom-C-wfNtOM.js";
47
- import { n as ONBOARD_PROVIDER_AUTH_FLAGS, t as onboardCommand } from "./onboard-fBxK2Bky.js";
47
+ import { n as ONBOARD_PROVIDER_AUTH_FLAGS, t as onboardCommand } from "./onboard-DFbgAa-t.js";
48
48
 
49
49
  //#region src/cli/program/register.onboard.ts
50
50
  function resolveInstallDaemonFlag(command, opts) {
@@ -40,7 +40,7 @@ import "./onboard-helpers-Cv6fL8Vq.js";
40
40
  import "./systemd-Dic80Qni.js";
41
41
  import "./service-BF50XyKr.js";
42
42
  import "./health--v-C6lSf.js";
43
- import "./onboarding-CLOZkMhc.js";
43
+ import "./onboarding-BigIUHoh.js";
44
44
  import "./shared-Ck6cf10x.js";
45
45
  import "./auth-token-DyhvQgv4.js";
46
46
  import "./logging-BmJ5ky59.js";
@@ -49,7 +49,7 @@ import "./openai-model-default-CKfNKTZD.js";
49
49
  import "./model-picker-DN-co6Oy.js";
50
50
  import "./systemd-linger-BBxRNFXz.js";
51
51
  import "./onboard-custom-BCcuL4Uq.js";
52
- import { n as ONBOARD_PROVIDER_AUTH_FLAGS, t as onboardCommand } from "./onboard-DRn6pFfO.js";
52
+ import { n as ONBOARD_PROVIDER_AUTH_FLAGS, t as onboardCommand } from "./onboard-3FdfkbGm.js";
53
53
 
54
54
  //#region src/cli/program/register.onboard.ts
55
55
  function resolveInstallDaemonFlag(command, opts) {
@@ -41,7 +41,7 @@ import "./onboard-helpers-Cv6fL8Vq.js";
41
41
  import "./systemd-Dic80Qni.js";
42
42
  import "./service-BF50XyKr.js";
43
43
  import "./health--v-C6lSf.js";
44
- import "./onboarding-CLOZkMhc.js";
44
+ import "./onboarding-BigIUHoh.js";
45
45
  import "./shared-Ck6cf10x.js";
46
46
  import "./auth-token-DyhvQgv4.js";
47
47
  import { n as logConfigUpdated, t as formatConfigPath } from "./logging-BmJ5ky59.js";
@@ -49,7 +49,7 @@ import "./openai-model-default-CKfNKTZD.js";
49
49
  import "./model-picker-DN-co6Oy.js";
50
50
  import "./systemd-linger-BBxRNFXz.js";
51
51
  import "./onboard-custom-BCcuL4Uq.js";
52
- import { t as onboardCommand } from "./onboard-DRn6pFfO.js";
52
+ import { t as onboardCommand } from "./onboard-3FdfkbGm.js";
53
53
  import JSON5 from "json5";
54
54
  import fs from "node:fs/promises";
55
55
 
@@ -36,7 +36,7 @@ import "./onboard-helpers-CAAZ0RDq.js";
36
36
  import "./systemd-Dtydk5-z.js";
37
37
  import "./service-Ccv3Zi5_.js";
38
38
  import "./health-D0jGdk53.js";
39
- import "./onboarding-i1rA1XGe.js";
39
+ import "./onboarding-fq_-89Jc.js";
40
40
  import "./shared-Crfo8y70.js";
41
41
  import "./auth-token-lPWiklDD.js";
42
42
  import { n as logConfigUpdated, t as formatConfigPath } from "./logging-BRejMykf.js";
@@ -44,7 +44,7 @@ import "./openai-model-default-ChdgeMqX.js";
44
44
  import "./model-picker-CS_h9RHv.js";
45
45
  import "./systemd-linger-DjoQVcOq.js";
46
46
  import "./onboard-custom-C-wfNtOM.js";
47
- import { t as onboardCommand } from "./onboard-fBxK2Bky.js";
47
+ import { t as onboardCommand } from "./onboard-DFbgAa-t.js";
48
48
  import JSON5 from "json5";
49
49
  import fs from "node:fs/promises";
50
50
 
@@ -41,7 +41,7 @@ const entries = [
41
41
  description: "Run, inspect, and query the WebSocket Gateway",
42
42
  hasSubcommands: true,
43
43
  register: async (program) => {
44
- (await import("./gateway-cli-DCTPCoQx.js")).registerGatewayCli(program);
44
+ (await import("./gateway-cli-CKlpsjYJ.js")).registerGatewayCli(program);
45
45
  }
46
46
  },
47
47
  {
@@ -229,7 +229,7 @@ const entries = [
229
229
  description: "Update Symi and inspect update channel status",
230
230
  hasSubcommands: true,
231
231
  register: async (program) => {
232
- (await import("./update-cli-y4Q__h4E.js")).registerUpdateCli(program);
232
+ (await import("./update-cli-BhI88CVk.js")).registerUpdateCli(program);
233
233
  }
234
234
  },
235
235
  {
@@ -237,7 +237,7 @@ const entries = [
237
237
  description: "Generate shell completion script",
238
238
  hasSubcommands: false,
239
239
  register: async (program) => {
240
- (await import("./completion-cli-TYU7Y_XZ.js").then((n) => n.n)).registerCompletionCli(program);
240
+ (await import("./completion-cli-BM4kZs0m.js").then((n) => n.n)).registerCompletionCli(program);
241
241
  }
242
242
  },
243
243
  {
@@ -253,7 +253,7 @@ const entries = [
253
253
  description: "Push cards to the Glass UI symframe (right-column dynamic display)",
254
254
  hasSubcommands: true,
255
255
  register: async (program) => {
256
- (await import("./symframe-cli-BKrtoG8H.js")).registerSymframeCli(program);
256
+ (await import("./symframe-cli-OqTUw6Mt.js")).registerSymframeCli(program);
257
257
  }
258
258
  }
259
259
  ];
@@ -366,7 +366,7 @@ async function runCli(argv = process$1.argv) {
366
366
  assertSupportedRuntime();
367
367
  if (await tryRouteCli(normalizedArgv)) return;
368
368
  enableConsoleCapture();
369
- const { buildProgram } = await import("./program-Qug3oi2C.js");
369
+ const { buildProgram } = await import("./program-FBDhJLrg.js");
370
370
  const program = buildProgram();
371
371
  installUnhandledRejectionHandler();
372
372
  process$1.on("uncaughtException", (error) => {
@@ -398,10 +398,10 @@ async function runCli(argv = process$1.argv) {
398
398
  const { getProgramContext } = await import("./program-context-CGKRxOBU.js").then((n) => n.n);
399
399
  const ctx = getProgramContext(program);
400
400
  if (ctx) {
401
- const { registerCoreCliByName } = await import("./command-registry-2hfSOaGL.js").then((n) => n.t);
401
+ const { registerCoreCliByName } = await import("./command-registry-Bmzf59Qv.js").then((n) => n.t);
402
402
  await registerCoreCliByName(program, ctx, primary, parseArgv);
403
403
  }
404
- const { registerSubCliByName } = await import("./register.subclis-Dv8bf2ox.js").then((n) => n.a);
404
+ const { registerSubCliByName } = await import("./register.subclis-B16w8wxz.js").then((n) => n.a);
405
405
  await registerSubCliByName(program, primary);
406
406
  }
407
407
  const hasBuiltinPrimary = primary !== null && program.commands.some((command) => command.name() === primary);
@@ -21,7 +21,7 @@ import fs from "node:fs/promises";
21
21
 
22
22
  //#region src/cli/symframe-cli.ts
23
23
  function registerSymframeCli(program) {
24
- addGatewayClientOptions(program.command("symframe").description("Push cards to the Glass UI symframe (right-column dynamic display)").addHelpText("after", () => `\n${theme.muted("Docs:")} ${formatDocsLink("/cli/symframe", "docs.symi.ai/cli/symframe")}\n`).command("push").description("Push (add/update/remove) a card to the symframe").option("--action <add|update|remove>", "Action (default: add)", "add").option("--id <id>", "Card id (required for update/remove; auto-generated for add)").option("--type <type>", "Renderer type — text | markdown (more in future phases)", "text").option("--title <title>", "Card title (header text)").option("--body <body>", "Card body text (markdown source if --type=markdown)").option("--file <path>", "Read body from file (overrides --body)").option("--sticky", "Anchor at the bottom of the stack (no dismiss button)", false).option("--json", "Output JSON", false)).action(async (opts) => {
24
+ addGatewayClientOptions(program.command("symframe").description("Push cards to the Glass UI symframe (right-column dynamic display)").addHelpText("after", () => `\n${theme.muted("Docs:")} ${formatDocsLink("/cli/symframe", "docs.symi.ai/cli/symframe")}\n`).command("push").description("Push (add/update/remove) a card to the symframe").option("--action <add|update|remove>", "Action (default: add)", "add").option("--id <id>", "Card id (required for update/remove; auto-generated for add)").option("--type <type>", "Renderer type — text | markdown | code | email-draft | pdf | audio | video", "text").option("--title <title>", "Card title (header text)").option("--body <body>", "Card body text (code source if --type=code)").option("--file <path>", "Read body from file (overrides --body)").option("--language <lang>", "Language hint for --type=code (e.g. ts, py, sh)").option("--url <url>", "Media URL for --type=pdf|audio|video").option("--mime <type>", "MIME type for --type=audio|video (e.g. audio/mpeg)").option("--data <json>", "Extra structured fields merged into the card (e.g. email-draft uses { email: { from, to, subject, body } })").option("--sticky", "Anchor at the bottom of the stack (no dismiss button)", false).option("--json", "Output JSON", false)).action(async (opts) => {
25
25
  try {
26
26
  const action = (opts.action ?? "add").trim();
27
27
  if (action !== "add" && action !== "update" && action !== "remove") throw new Error(`--action must be one of: add | update | remove (got '${action}')`);
@@ -37,8 +37,22 @@ function registerSymframeCli(program) {
37
37
  if (opts.type) card.type = opts.type;
38
38
  if (opts.title) card.title = opts.title;
39
39
  if (bodyText !== void 0) card.body = bodyText;
40
+ if (opts.language) card.language = opts.language;
41
+ if (opts.url) card.url = opts.url;
42
+ if (opts.mime) card.mimeType = opts.mime;
43
+ if (opts.data) {
44
+ let parsed;
45
+ try {
46
+ parsed = JSON.parse(opts.data);
47
+ } catch (err) {
48
+ throw new Error(`--data must be valid JSON: ${String(err)}`, { cause: err });
49
+ }
50
+ if (parsed && typeof parsed === "object" && !Array.isArray(parsed)) Object.assign(card, parsed);
51
+ else throw new Error("--data must be a JSON object");
52
+ }
40
53
  if (opts.sticky) card.sticky = true;
41
- if (action === "add" && !opts.title && bodyText === void 0) throw new Error("add requires at least --title or --body/--file");
54
+ const hasContent = opts.title || bodyText !== void 0 || opts.url || opts.data && card.email;
55
+ if (action === "add" && !hasContent) throw new Error("add requires at least --title, --body/--file, --url, or --data with structured content");
42
56
  if (action === "update" && !opts.id) throw new Error("--id is required for update");
43
57
  if (Object.keys(card).length > 0) params.card = card;
44
58
  }