@symerian/symi 3.4.7 → 3.4.9
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.
- package/dist/build-info.json +3 -3
- package/dist/canvas-host/a2ui/.bundle.hash +1 -1
- package/dist/{command-registry-ByBvyNis.js → command-registry-D8fj6th4.js} +4 -4
- package/dist/{completion-cli-BFBbL-u4.js → completion-cli-BxspmuYm.js} +2 -2
- package/dist/{completion-cli-rzEsCzmE.js → completion-cli-C-85b5b8.js} +1 -1
- package/dist/control-ui/css/style.css +14 -12
- package/dist/control-ui/js/metrics.js +0 -10
- package/dist/{doctor-completion-B8cqL1A0.js → doctor-completion-BwHbIZjF.js} +1 -1
- package/dist/{doctor-completion-BqbhVdbe.js → doctor-completion-CX7LjkOD.js} +1 -1
- package/dist/entry.js +1 -1
- package/dist/{gateway-cli-DYJxZ5dh.js → gateway-cli-CTcK1Az2.js} +1 -1
- package/dist/{gateway-cli-DfRlFuH-.js → gateway-cli-CW-Z71cE.js} +1 -1
- package/dist/index.js +1 -1
- package/dist/{onboard-kDOde8WJ.js → onboard-C8IQnigm.js} +1 -1
- package/dist/{onboard-_3W1qIFk.js → onboard-CAIujkV7.js} +1 -1
- package/dist/{onboarding-CXaQnqxR.js → onboarding-4v9LJueP.js} +1 -1
- package/dist/{onboarding-BJ27gXxY.js → onboarding-BIq5BxG0.js} +1 -1
- package/dist/{onboarding.finalize-CSgYg74M.js → onboarding.finalize-Bkcwe5RS.js} +4 -4
- package/dist/{onboarding.finalize-CsyhJcuq.js → onboarding.finalize-CXAQzVXM.js} +5 -5
- package/dist/plugin-sdk/index.js +6 -6
- package/dist/{program-BPcy7UBj.js → program-C19G7o-Q.js} +2 -2
- package/dist/{program-context-DYS38Clb.js → program-context-BSUkEz3n.js} +7 -7
- package/dist/{prompt-select-styled-Kgvc0-w2.js → prompt-select-styled-B5wlPYN5.js} +1 -1
- package/dist/{prompt-select-styled-uUOSg6Qq.js → prompt-select-styled-CnYM7W0j.js} +1 -1
- package/dist/{register.maintenance-CNcd1-Vv.js → register.maintenance-CKsv0lok.js} +5 -5
- package/dist/{register.maintenance-BMswbbSL.js → register.maintenance-DDzKUGYJ.js} +4 -4
- package/dist/{register.onboard-DR2Wu59i.js → register.onboard-BHtTh0b_.js} +2 -2
- package/dist/{register.onboard-CRNjEhnQ.js → register.onboard-CkIM3hU7.js} +2 -2
- package/dist/{register.setup-Crrj2t2B.js → register.setup-CLhdFQHW.js} +2 -2
- package/dist/{register.setup-Dbe-Z2xu.js → register.setup-CYtYDKMU.js} +2 -2
- package/dist/{register.subclis-BRPnstmu.js → register.subclis-CnDo2jzv.js} +4 -4
- package/dist/{run-main-CMQVjdht.js → run-main-BIRbWKyA.js} +3 -3
- package/dist/{tui-B4Pd0T9l.js → tui-D0j61PXx.js} +1 -1
- package/dist/{tui-DBrpAw57.js → tui-DFuScHlA.js} +1 -1
- package/dist/{tui-cli-B-obcHoZ.js → tui-cli-25xTveHh.js} +1 -1
- package/dist/{tui-cli-tbUaY-Pu.js → tui-cli-C3dXNtPo.js} +1 -1
- package/dist/{update-cli-Mpq0iwGk.js → update-cli-CWufRpkr.js} +4 -4
- package/dist/{update-cli-CUgElk5d.js → update-cli-Dl_QbjXc.js} +5 -5
- package/docs/reference/templates/AGENTS.dev.md +0 -4
- package/docs/reference/templates/AGENTS.md +7 -68
- package/docs/reference/templates/CONFIG-SCHEMA.md +0 -7
- package/extensions/shared/resolve-target-test-helpers.ts +1 -1
- package/package.json +1 -1
- package/skills/coding-agent/SKILL.md +2 -2
- package/docs/reference/templates/SYMIPULSE.md +0 -103
package/dist/build-info.json
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
|
|
1
|
+
ab90dcba302f3fb841f1dce8e6509a9c1163126a7606f79c821c75db2f3898a9
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { t as __exportAll } from "./rolldown-runtime-Cbj13DAv.js";
|
|
2
2
|
import { Zt as getPrimaryCommand, en as hasHelpOrVersion } from "./entry.js";
|
|
3
|
-
import { i as registerSubCliCommands, o as reparseProgramFromActionArgs } from "./register.subclis-
|
|
3
|
+
import { i as registerSubCliCommands, o as reparseProgramFromActionArgs } from "./register.subclis-CnDo2jzv.js";
|
|
4
4
|
|
|
5
5
|
//#region src/cli/program/command-registry.ts
|
|
6
6
|
var command_registry_exports = /* @__PURE__ */ __exportAll({
|
|
@@ -22,7 +22,7 @@ const coreEntries = [
|
|
|
22
22
|
hasSubcommands: false
|
|
23
23
|
}],
|
|
24
24
|
register: async ({ program }) => {
|
|
25
|
-
(await import("./register.setup-
|
|
25
|
+
(await import("./register.setup-CYtYDKMU.js")).registerSetupCommand(program);
|
|
26
26
|
}
|
|
27
27
|
},
|
|
28
28
|
{
|
|
@@ -32,7 +32,7 @@ const coreEntries = [
|
|
|
32
32
|
hasSubcommands: false
|
|
33
33
|
}],
|
|
34
34
|
register: async ({ program }) => {
|
|
35
|
-
(await import("./register.onboard-
|
|
35
|
+
(await import("./register.onboard-CkIM3hU7.js")).registerOnboardCommand(program);
|
|
36
36
|
}
|
|
37
37
|
},
|
|
38
38
|
{
|
|
@@ -79,7 +79,7 @@ const coreEntries = [
|
|
|
79
79
|
}
|
|
80
80
|
],
|
|
81
81
|
register: async ({ program }) => {
|
|
82
|
-
(await import("./register.maintenance-
|
|
82
|
+
(await import("./register.maintenance-CKsv0lok.js")).registerMaintenanceCommands(program);
|
|
83
83
|
}
|
|
84
84
|
},
|
|
85
85
|
{
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { t as __exportAll } from "./rolldown-runtime-Cbj13DAv.js";
|
|
2
2
|
import { jt as pathExists, l as routeLogsToStderr, vt as resolveStateDir } from "./entry.js";
|
|
3
|
-
import { n as getSubCliEntries, r as registerSubCliByName } from "./register.subclis-
|
|
4
|
-
import { i as registerCoreCliByName, n as getCoreCliCommandNames } from "./command-registry-
|
|
3
|
+
import { n as getSubCliEntries, r as registerSubCliByName } from "./register.subclis-CnDo2jzv.js";
|
|
4
|
+
import { i as registerCoreCliByName, n as getCoreCliCommandNames } from "./command-registry-D8fj6th4.js";
|
|
5
5
|
import { t as getProgramContext } from "./program-context-BFKw4l9I.js";
|
|
6
6
|
import os from "node:os";
|
|
7
7
|
import path from "node:path";
|
|
@@ -2,7 +2,7 @@ import { t as __exportAll } from "./rolldown-runtime-Cbj13DAv.js";
|
|
|
2
2
|
import { g as resolveStateDir } from "./paths-BSzKwaxE.js";
|
|
3
3
|
import { f as pathExists } from "./utils-BU8jVQFM.js";
|
|
4
4
|
import { i as routeLogsToStderr } from "./subsystem-CtH6J8AV.js";
|
|
5
|
-
import { a as registerCoreCliByName, c as getSubCliEntries, l as registerSubCliByName, r as getCoreCliCommandNames, t as getProgramContext } from "./program-context-
|
|
5
|
+
import { a as registerCoreCliByName, c as getSubCliEntries, l as registerSubCliByName, r as getCoreCliCommandNames, t as getProgramContext } from "./program-context-BSUkEz3n.js";
|
|
6
6
|
import path from "node:path";
|
|
7
7
|
import os from "node:os";
|
|
8
8
|
import fs from "node:fs/promises";
|
|
@@ -167,22 +167,24 @@ body {
|
|
|
167
167
|
display: flex;
|
|
168
168
|
align-items: center;
|
|
169
169
|
gap: 14px;
|
|
170
|
-
padding: 18px
|
|
170
|
+
padding: 18px 4px;
|
|
171
171
|
overflow: visible;
|
|
172
|
+
/* Override .glass-panel so the brand floats without a card background. */
|
|
173
|
+
background: transparent;
|
|
174
|
+
backdrop-filter: none;
|
|
175
|
+
-webkit-backdrop-filter: none;
|
|
176
|
+
border: none;
|
|
177
|
+
box-shadow: none;
|
|
178
|
+
}
|
|
179
|
+
|
|
180
|
+
.brand-panel:hover {
|
|
181
|
+
border: none;
|
|
182
|
+
box-shadow: none;
|
|
172
183
|
}
|
|
173
184
|
|
|
185
|
+
.brand-panel::before,
|
|
174
186
|
.brand-panel::after {
|
|
175
|
-
|
|
176
|
-
position: absolute;
|
|
177
|
-
inset: 0;
|
|
178
|
-
border-radius: 14px;
|
|
179
|
-
background: linear-gradient(
|
|
180
|
-
120deg,
|
|
181
|
-
rgba(0, 212, 255, 0.06) 0%,
|
|
182
|
-
rgba(139, 92, 246, 0.06) 50%,
|
|
183
|
-
rgba(0, 212, 255, 0.03) 100%
|
|
184
|
-
);
|
|
185
|
-
pointer-events: none;
|
|
187
|
+
display: none;
|
|
186
188
|
}
|
|
187
189
|
|
|
188
190
|
.brand-mark {
|
|
@@ -45,19 +45,9 @@ function updateSubagents() {
|
|
|
45
45
|
}
|
|
46
46
|
}
|
|
47
47
|
|
|
48
|
-
function updateHeartbeat() {
|
|
49
|
-
const el = document.getElementById("last-hb");
|
|
50
|
-
if (el) {
|
|
51
|
-
const now = new Date();
|
|
52
|
-
el.textContent = now.toLocaleTimeString("en-US", { hour: "2-digit", minute: "2-digit" });
|
|
53
|
-
}
|
|
54
|
-
}
|
|
55
|
-
|
|
56
48
|
// Initial + interval updates
|
|
57
49
|
void updateMetrics();
|
|
58
50
|
updateUptime();
|
|
59
51
|
updateSubagents();
|
|
60
|
-
updateHeartbeat();
|
|
61
52
|
|
|
62
53
|
setInterval(updateMetrics, 2000);
|
|
63
|
-
setInterval(updateHeartbeat, 30000);
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { r as resolveCliName } from "./command-format-BvAkTjTI.js";
|
|
2
2
|
import { t as resolveSymiPackageRoot } from "./symi-root-DueRHNOE.js";
|
|
3
3
|
import { t as note } from "./note-CHrtEumO.js";
|
|
4
|
-
import { a as resolveCompletionCachePath, i as isCompletionInstalled, o as resolveShellFromEnv, r as installCompletion, s as usesSlowDynamicCompletion, t as completionCacheExists } from "./completion-cli-
|
|
4
|
+
import { a as resolveCompletionCachePath, i as isCompletionInstalled, o as resolveShellFromEnv, r as installCompletion, s as usesSlowDynamicCompletion, t as completionCacheExists } from "./completion-cli-C-85b5b8.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 { r as resolveCliName } from "./command-format-Xm6vX3qJ.js";
|
|
2
2
|
import { t as resolveSymiPackageRoot } from "./symi-root-CK6iELVh.js";
|
|
3
3
|
import { t as note } from "./note-DKRm9hYC.js";
|
|
4
|
-
import { a as resolveCompletionCachePath, i as isCompletionInstalled, o as resolveShellFromEnv, r as installCompletion, s as usesSlowDynamicCompletion, t as completionCacheExists } from "./completion-cli-
|
|
4
|
+
import { a as resolveCompletionCachePath, i as isCompletionInstalled, o as resolveShellFromEnv, r as installCompletion, s as usesSlowDynamicCompletion, t as completionCacheExists } from "./completion-cli-BxspmuYm.js";
|
|
5
5
|
import { spawnSync } from "node:child_process";
|
|
6
6
|
import path from "node:path";
|
|
7
7
|
|
package/dist/entry.js
CHANGED
|
@@ -2312,7 +2312,7 @@ if (!ensureExperimentalWarningSuppressed()) {
|
|
|
2312
2312
|
applyCliProfileEnv({ profile: parsed.profile });
|
|
2313
2313
|
process$1.argv = parsed.argv;
|
|
2314
2314
|
}
|
|
2315
|
-
import("./run-main-
|
|
2315
|
+
import("./run-main-BIRbWKyA.js").then(({ runCli }) => runCli(process$1.argv)).catch((error) => {
|
|
2316
2316
|
console.error("[symi] Failed to start CLI:", error instanceof Error ? error.stack ?? error.message : error);
|
|
2317
2317
|
process$1.exitCode = 1;
|
|
2318
2318
|
});
|
|
@@ -120,7 +120,7 @@ import { r as pickGatewaySelfPresence } from "./status-DEXnB1sw.js";
|
|
|
120
120
|
import { i as styleHealthChannelLine, n as getHealthSnapshot, t as formatHealthChannelLines } from "./health-D8cKia4i.js";
|
|
121
121
|
import { a as resolveControlUiRootSync, i as resolveControlUiRootOverrideSync, t as ensureControlUiAssetsBuilt } from "./control-ui-assets-DUhvOLUL.js";
|
|
122
122
|
import { a as resolveNpmChannelTag, c as DEFAULT_PACKAGE_CHANNEL, m as normalizeUpdateChannel, n as compareSemverStrings, t as checkUpdateStatus } from "./update-check-CZxZhEXr.js";
|
|
123
|
-
import { t as runOnboardingWizard } from "./onboarding-
|
|
123
|
+
import { t as runOnboardingWizard } from "./onboarding-4v9LJueP.js";
|
|
124
124
|
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-vp5zi6v5.js";
|
|
125
125
|
import { d as shouldLogWs, f as summarizeAgentEventForWsLog, l as formatForLog, p as setGatewayWsLogStyle, u as logWs } from "./push-apns-Bm39oOO9.js";
|
|
126
126
|
import { T as resolveGmailHookRuntimeConfig, _ as buildGogWatchServeArgs, i as ensureTailscaleEndpoint, v as buildGogWatchStartArgs } from "./gmail-setup-utils-fA1VaWLv.js";
|
|
@@ -115,7 +115,7 @@ import { n as createDefaultDeps, t as createOutboundSendDeps } from "./outbound-
|
|
|
115
115
|
import { a as resolveControlUiRootSync, i as resolveControlUiRootOverrideSync, t as ensureControlUiAssetsBuilt } from "./control-ui-assets-B5BrwGRs.js";
|
|
116
116
|
import { t as ensureSymiCliOnPath } from "./path-env-DmaMvYrK.js";
|
|
117
117
|
import { a as resolveNpmChannelTag, c as DEFAULT_PACKAGE_CHANNEL, m as normalizeUpdateChannel, n as compareSemverStrings, t as checkUpdateStatus } from "./update-check-C1JNxsic.js";
|
|
118
|
-
import { t as runOnboardingWizard } from "./onboarding-
|
|
118
|
+
import { t as runOnboardingWizard } from "./onboarding-BIq5BxG0.js";
|
|
119
119
|
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-Dz6NGEg3.js";
|
|
120
120
|
import { d as shouldLogWs, f as summarizeAgentEventForWsLog, l as formatForLog, p as setGatewayWsLogStyle, u as logWs } from "./push-apns-DqmFEcqh.js";
|
|
121
121
|
import { T as resolveGmailHookRuntimeConfig, _ as buildGogWatchServeArgs, i as ensureTailscaleEndpoint, v as buildGogWatchStartArgs } from "./gmail-setup-utils-B1BYpISg.js";
|
package/dist/index.js
CHANGED
|
@@ -88,7 +88,7 @@ import { t as ensureSymiCliOnPath } from "./path-env-DuQralyy.js";
|
|
|
88
88
|
import { t as assertSupportedRuntime } from "./runtime-guard-BZ3_1QqS.js";
|
|
89
89
|
import "./ports-DRHSHvqY.js";
|
|
90
90
|
import { a as hasFlag, i as getVerboseFlag, n as getCommandPath, o as hasHelpOrVersion, s as hasRootVersionAlias } from "./argv-Bt9A9Gfj.js";
|
|
91
|
-
import { i as getCoreCliCommandsWithSubcommands, n as setProgramContext, o as registerProgramCommands, s as getSubCliCommandsWithSubcommands } from "./program-context-
|
|
91
|
+
import { i as getCoreCliCommandsWithSubcommands, n as setProgramContext, o as registerProgramCommands, s as getSubCliCommandsWithSubcommands } from "./program-context-BSUkEz3n.js";
|
|
92
92
|
import "./catalog-CSgSg5Gp.js";
|
|
93
93
|
import "./plugin-registry-d4hMhLLZ.js";
|
|
94
94
|
import { n as resolveCliChannelOptions } from "./channel-options-COanIUoQ.js";
|
|
@@ -12,7 +12,7 @@ import { a as ensureWorkspaceAndSessions, b as waitForGatewayReachable, c as han
|
|
|
12
12
|
import { r as isSystemdUserServiceAvailable } from "./systemd-9LEEqibe.js";
|
|
13
13
|
import { t as resolveGatewayService } from "./service-AP9pR9R5.js";
|
|
14
14
|
import { r as healthCommand } from "./health-D8cKia4i.js";
|
|
15
|
-
import { t as runOnboardingWizard } from "./onboarding-
|
|
15
|
+
import { t as runOnboardingWizard } from "./onboarding-4v9LJueP.js";
|
|
16
16
|
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-SebYuqfR.js";
|
|
17
17
|
import { n as logConfigUpdated } from "./logging-B96FQvnn.js";
|
|
18
18
|
import { n as isDeprecatedAuthChoice, r as normalizeLegacyOnboardAuthChoice } from "./auth-choice-legacy-CsjluQCN.js";
|
|
@@ -10,7 +10,7 @@ import { a as ensureWorkspaceAndSessions, b as waitForGatewayReachable, c as han
|
|
|
10
10
|
import { r as isSystemdUserServiceAvailable } from "./systemd-p_nEAkHC.js";
|
|
11
11
|
import { t as resolveGatewayService } from "./service-BIixwO-v.js";
|
|
12
12
|
import { r as healthCommand } from "./health-DdzNc1yA.js";
|
|
13
|
-
import { t as runOnboardingWizard } from "./onboarding-
|
|
13
|
+
import { t as runOnboardingWizard } from "./onboarding-BIq5BxG0.js";
|
|
14
14
|
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-Brb1Askz.js";
|
|
15
15
|
import { n as logConfigUpdated } from "./logging-BeA4q4J_.js";
|
|
16
16
|
import { n as isDeprecatedAuthChoice, r as normalizeLegacyOnboardAuthChoice } from "./auth-choice-legacy-D9WcUI_J.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-
|
|
307
|
+
const { finalizeOnboardingWizard } = await import("./onboarding.finalize-Bkcwe5RS.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-
|
|
305
|
+
const { finalizeOnboardingWizard } = await import("./onboarding.finalize-CXAQzVXM.js");
|
|
306
306
|
const { launchedTui } = await finalizeOnboardingWizard({
|
|
307
307
|
flow,
|
|
308
308
|
opts,
|
|
@@ -43,10 +43,10 @@ import "./tool-display-Dr6VaTg5.js";
|
|
|
43
43
|
import "./bindings-9LSA3Jr1.js";
|
|
44
44
|
import "./progress-CyPyGCDn.js";
|
|
45
45
|
import "./runtime-guard-BZ3_1QqS.js";
|
|
46
|
-
import "./program-context-
|
|
46
|
+
import "./program-context-BSUkEz3n.js";
|
|
47
47
|
import "./prompt-style-Cad0BDRS.js";
|
|
48
48
|
import "./note-CHrtEumO.js";
|
|
49
|
-
import { r as installCompletion } from "./completion-cli-
|
|
49
|
+
import { r as installCompletion } from "./completion-cli-C-85b5b8.js";
|
|
50
50
|
import { a as gatewayInstallErrorHint, i as buildGatewayInstallPlan, n as GATEWAY_DAEMON_RUNTIME_OPTIONS, t as DEFAULT_GATEWAY_DAEMON_RUNTIME } from "./daemon-runtime-BpfA4d6Q.js";
|
|
51
51
|
import { b as waitForGatewayReachable, f as openUrl, g as resolveControlUiLinks, i as detectBrowserOpenSupport, m as probeGatewayReachable, o as formatControlUiSshHint } from "./onboard-helpers-CHfdRdZR.js";
|
|
52
52
|
import { r as isSystemdUserServiceAvailable } from "./systemd-9LEEqibe.js";
|
|
@@ -54,8 +54,8 @@ import { t as resolveGatewayService } from "./service-AP9pR9R5.js";
|
|
|
54
54
|
import { r as healthCommand } from "./health-D8cKia4i.js";
|
|
55
55
|
import { t as ensureControlUiAssetsBuilt } from "./control-ui-assets-DUhvOLUL.js";
|
|
56
56
|
import { t as formatHealthCheckFailure } from "./health-format-39e76m9p.js";
|
|
57
|
-
import { r as ensureCompletionCacheExists, t as checkShellCompletionStatus } from "./doctor-completion-
|
|
58
|
-
import { t as runTui } from "./tui-
|
|
57
|
+
import { r as ensureCompletionCacheExists, t as checkShellCompletionStatus } from "./doctor-completion-BwHbIZjF.js";
|
|
58
|
+
import { t as runTui } from "./tui-DFuScHlA.js";
|
|
59
59
|
import path from "node:path";
|
|
60
60
|
import os from "node:os";
|
|
61
61
|
import fs from "node:fs/promises";
|
|
@@ -39,10 +39,10 @@ import "./bindings-D3NmzRPM.js";
|
|
|
39
39
|
import "./progress-C4ck6JXh.js";
|
|
40
40
|
import "./prompt-style-Z2ZizQap.js";
|
|
41
41
|
import "./note-DKRm9hYC.js";
|
|
42
|
-
import "./register.subclis-
|
|
43
|
-
import "./command-registry-
|
|
42
|
+
import "./register.subclis-CnDo2jzv.js";
|
|
43
|
+
import "./command-registry-D8fj6th4.js";
|
|
44
44
|
import "./program-context-BFKw4l9I.js";
|
|
45
|
-
import { r as installCompletion } from "./completion-cli-
|
|
45
|
+
import { r as installCompletion } from "./completion-cli-BxspmuYm.js";
|
|
46
46
|
import { a as gatewayInstallErrorHint, i as buildGatewayInstallPlan, n as GATEWAY_DAEMON_RUNTIME_OPTIONS, t as DEFAULT_GATEWAY_DAEMON_RUNTIME } from "./daemon-runtime-2Y9RfgcP.js";
|
|
47
47
|
import "./runtime-guard-p4-FMx0l.js";
|
|
48
48
|
import { b as waitForGatewayReachable, f as openUrl, g as resolveControlUiLinks, i as detectBrowserOpenSupport, m as probeGatewayReachable, o as formatControlUiSshHint } from "./onboard-helpers-Bm-oyLWy.js";
|
|
@@ -51,8 +51,8 @@ import { t as resolveGatewayService } from "./service-BIixwO-v.js";
|
|
|
51
51
|
import { r as healthCommand } from "./health-DdzNc1yA.js";
|
|
52
52
|
import { t as ensureControlUiAssetsBuilt } from "./control-ui-assets-B5BrwGRs.js";
|
|
53
53
|
import { t as formatHealthCheckFailure } from "./health-format-DaP03FBk.js";
|
|
54
|
-
import { r as ensureCompletionCacheExists, t as checkShellCompletionStatus } from "./doctor-completion-
|
|
55
|
-
import { t as runTui } from "./tui-
|
|
54
|
+
import { r as ensureCompletionCacheExists, t as checkShellCompletionStatus } from "./doctor-completion-CX7LjkOD.js";
|
|
55
|
+
import { t as runTui } from "./tui-D0j61PXx.js";
|
|
56
56
|
import os from "node:os";
|
|
57
57
|
import path from "node:path";
|
|
58
58
|
import fs from "node:fs/promises";
|
package/dist/plugin-sdk/index.js
CHANGED
|
@@ -3,7 +3,7 @@ import path from "node:path";
|
|
|
3
3
|
import fs, { constants, readFileSync } from "node:fs";
|
|
4
4
|
import os from "node:os";
|
|
5
5
|
import { Logger } from "tslog";
|
|
6
|
-
import
|
|
6
|
+
import json5 from "json5";
|
|
7
7
|
import chalk, { Chalk } from "chalk";
|
|
8
8
|
import fs$1, { mkdtemp, rm } from "node:fs/promises";
|
|
9
9
|
import { z } from "zod";
|
|
@@ -473,7 +473,7 @@ function readLoggingConfig() {
|
|
|
473
473
|
try {
|
|
474
474
|
if (!fs.existsSync(configPath)) return;
|
|
475
475
|
const raw = fs.readFileSync(configPath, "utf-8");
|
|
476
|
-
const logging =
|
|
476
|
+
const logging = json5.parse(raw)?.logging;
|
|
477
477
|
if (!logging || typeof logging !== "object" || Array.isArray(logging)) return;
|
|
478
478
|
return logging;
|
|
479
479
|
} catch {
|
|
@@ -7320,7 +7320,7 @@ function safeRealpath(target) {
|
|
|
7320
7320
|
}
|
|
7321
7321
|
const defaultResolver = {
|
|
7322
7322
|
readFile: (p) => fs.readFileSync(p, "utf-8"),
|
|
7323
|
-
parseJson: (raw) =>
|
|
7323
|
+
parseJson: (raw) => json5.parse(raw)
|
|
7324
7324
|
};
|
|
7325
7325
|
/**
|
|
7326
7326
|
* Resolves all $include directives in a parsed config object.
|
|
@@ -10551,7 +10551,7 @@ function resolveConfigPathForDeps(deps) {
|
|
|
10551
10551
|
function normalizeDeps(overrides = {}) {
|
|
10552
10552
|
return {
|
|
10553
10553
|
fs: overrides.fs ?? fs,
|
|
10554
|
-
json5: overrides.json5 ??
|
|
10554
|
+
json5: overrides.json5 ?? json5,
|
|
10555
10555
|
env: overrides.env ?? process.env,
|
|
10556
10556
|
homedir: overrides.homedir ?? (() => resolveRequiredHomeDir(overrides.env ?? process.env, os.homedir)),
|
|
10557
10557
|
configPath: overrides.configPath ?? "",
|
|
@@ -10562,11 +10562,11 @@ function maybeLoadDotEnvForConfig(env) {
|
|
|
10562
10562
|
if (env !== process.env) return;
|
|
10563
10563
|
loadDotEnv({ quiet: true });
|
|
10564
10564
|
}
|
|
10565
|
-
function parseConfigJson5(raw, json5 =
|
|
10565
|
+
function parseConfigJson5(raw, json5$1 = json5) {
|
|
10566
10566
|
try {
|
|
10567
10567
|
return {
|
|
10568
10568
|
ok: true,
|
|
10569
|
-
parsed: json5.parse(raw)
|
|
10569
|
+
parsed: json5$1.parse(raw)
|
|
10570
10570
|
};
|
|
10571
10571
|
} catch (err) {
|
|
10572
10572
|
return {
|
|
@@ -81,8 +81,8 @@ import "./pi-tools.policy-BaRznBvu.js";
|
|
|
81
81
|
import "./catalog-CJzUbDcX.js";
|
|
82
82
|
import "./plugin-registry-D7ACpV2Y.js";
|
|
83
83
|
import { n as resolveCliChannelOptions } from "./channel-options-DGUqfnbP.js";
|
|
84
|
-
import { t as getSubCliCommandsWithSubcommands } from "./register.subclis-
|
|
85
|
-
import { a as registerProgramCommands, r as getCoreCliCommandsWithSubcommands } from "./command-registry-
|
|
84
|
+
import { t as getSubCliCommandsWithSubcommands } from "./register.subclis-CnDo2jzv.js";
|
|
85
|
+
import { a as registerProgramCommands, r as getCoreCliCommandsWithSubcommands } from "./command-registry-D8fj6th4.js";
|
|
86
86
|
import { r as setProgramContext } from "./program-context-BFKw4l9I.js";
|
|
87
87
|
import { t as forceFreePort } from "./ports-BAzQoIw0.js";
|
|
88
88
|
import { n as formatCliBannerLine, r as hasEmittedCliBanner, t as emitCliBanner } from "./banner-l9GjW5Rm.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-
|
|
38
|
+
(await import("./gateway-cli-CTcK1Az2.js")).registerGatewayCli(program);
|
|
39
39
|
}
|
|
40
40
|
},
|
|
41
41
|
{
|
|
@@ -115,7 +115,7 @@ const entries = [
|
|
|
115
115
|
description: "Open a terminal UI connected to the Gateway",
|
|
116
116
|
hasSubcommands: false,
|
|
117
117
|
register: async (program) => {
|
|
118
|
-
(await import("./tui-cli-
|
|
118
|
+
(await import("./tui-cli-C3dXNtPo.js")).registerTuiCli(program);
|
|
119
119
|
}
|
|
120
120
|
},
|
|
121
121
|
{
|
|
@@ -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-
|
|
226
|
+
(await import("./update-cli-CWufRpkr.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-
|
|
234
|
+
(await import("./completion-cli-C-85b5b8.js").then((n) => n.n)).registerCompletionCli(program);
|
|
235
235
|
}
|
|
236
236
|
}
|
|
237
237
|
];
|
|
@@ -294,7 +294,7 @@ const coreEntries = [
|
|
|
294
294
|
hasSubcommands: false
|
|
295
295
|
}],
|
|
296
296
|
register: async ({ program }) => {
|
|
297
|
-
(await import("./register.setup-
|
|
297
|
+
(await import("./register.setup-CLhdFQHW.js")).registerSetupCommand(program);
|
|
298
298
|
}
|
|
299
299
|
},
|
|
300
300
|
{
|
|
@@ -304,7 +304,7 @@ const coreEntries = [
|
|
|
304
304
|
hasSubcommands: false
|
|
305
305
|
}],
|
|
306
306
|
register: async ({ program }) => {
|
|
307
|
-
(await import("./register.onboard-
|
|
307
|
+
(await import("./register.onboard-BHtTh0b_.js")).registerOnboardCommand(program);
|
|
308
308
|
}
|
|
309
309
|
},
|
|
310
310
|
{
|
|
@@ -351,7 +351,7 @@ const coreEntries = [
|
|
|
351
351
|
}
|
|
352
352
|
],
|
|
353
353
|
register: async ({ program }) => {
|
|
354
|
-
(await import("./register.maintenance-
|
|
354
|
+
(await import("./register.maintenance-DDzKUGYJ.js")).registerMaintenanceCommands(program);
|
|
355
355
|
}
|
|
356
356
|
},
|
|
357
357
|
{
|
|
@@ -44,7 +44,7 @@ import { n as logConfigUpdated } from "./logging-B96FQvnn.js";
|
|
|
44
44
|
import { n as detectLegacyStateMigrations, r as runLegacyStateMigrations, t as loadAndMaybeMigrateDoctorConfig } from "./doctor-config-flow-CYDx1U0Z.js";
|
|
45
45
|
import { t as ensureSystemdUserLingerInteractive } from "./systemd-linger-PqG8iGCt.js";
|
|
46
46
|
import { t as formatHealthCheckFailure } from "./health-format-39e76m9p.js";
|
|
47
|
-
import { n as doctorShellCompletion } from "./doctor-completion-
|
|
47
|
+
import { n as doctorShellCompletion } from "./doctor-completion-BwHbIZjF.js";
|
|
48
48
|
import path from "node:path";
|
|
49
49
|
import fs from "node:fs";
|
|
50
50
|
import os from "node:os";
|
|
@@ -40,7 +40,7 @@ import { n as logConfigUpdated } from "./logging-BeA4q4J_.js";
|
|
|
40
40
|
import { n as detectLegacyStateMigrations, r as runLegacyStateMigrations, t as loadAndMaybeMigrateDoctorConfig } from "./doctor-config-flow-wvoEFNeZ.js";
|
|
41
41
|
import { t as ensureSystemdUserLingerInteractive } from "./systemd-linger-BM4qvprK.js";
|
|
42
42
|
import { t as formatHealthCheckFailure } from "./health-format-DaP03FBk.js";
|
|
43
|
-
import { n as doctorShellCompletion } from "./doctor-completion-
|
|
43
|
+
import { n as doctorShellCompletion } from "./doctor-completion-CX7LjkOD.js";
|
|
44
44
|
import { execFile } from "node:child_process";
|
|
45
45
|
import os from "node:os";
|
|
46
46
|
import path from "node:path";
|
|
@@ -85,10 +85,10 @@ import { n as stylePromptMessage, r as stylePromptTitle, t as stylePromptHint }
|
|
|
85
85
|
import "./note-DKRm9hYC.js";
|
|
86
86
|
import "./plugin-auto-enable-DSliW8o4.js";
|
|
87
87
|
import "./channels-status-issues-GSsGZvfn.js";
|
|
88
|
-
import "./register.subclis-
|
|
89
|
-
import "./command-registry-
|
|
88
|
+
import "./register.subclis-CnDo2jzv.js";
|
|
89
|
+
import "./command-registry-D8fj6th4.js";
|
|
90
90
|
import "./program-context-BFKw4l9I.js";
|
|
91
|
-
import "./completion-cli-
|
|
91
|
+
import "./completion-cli-BxspmuYm.js";
|
|
92
92
|
import "./daemon-runtime-2Y9RfgcP.js";
|
|
93
93
|
import "./runtime-guard-p4-FMx0l.js";
|
|
94
94
|
import { f as openUrl, g as resolveControlUiLinks, i as detectBrowserOpenSupport, o as formatControlUiSshHint } from "./onboard-helpers-Bm-oyLWy.js";
|
|
@@ -105,8 +105,8 @@ import "./logging-BeA4q4J_.js";
|
|
|
105
105
|
import "./doctor-config-flow-wvoEFNeZ.js";
|
|
106
106
|
import "./systemd-linger-BM4qvprK.js";
|
|
107
107
|
import "./health-format-DaP03FBk.js";
|
|
108
|
-
import { n as doctorCommand, t as selectStyled } from "./prompt-select-styled-
|
|
109
|
-
import "./doctor-completion-
|
|
108
|
+
import { n as doctorCommand, t as selectStyled } from "./prompt-select-styled-CnYM7W0j.js";
|
|
109
|
+
import "./doctor-completion-CX7LjkOD.js";
|
|
110
110
|
import path from "node:path";
|
|
111
111
|
import fs from "node:fs/promises";
|
|
112
112
|
import { cancel, confirm, isCancel, multiselect } from "@clack/prompts";
|
|
@@ -83,7 +83,7 @@ import "./replies-B2O2eRh6.js";
|
|
|
83
83
|
import "./pi-tools.policy-Dyx3nBmp.js";
|
|
84
84
|
import "./model-BRcKPW49.js";
|
|
85
85
|
import "./runtime-guard-BZ3_1QqS.js";
|
|
86
|
-
import "./program-context-
|
|
86
|
+
import "./program-context-BSUkEz3n.js";
|
|
87
87
|
import "./catalog-CSgSg5Gp.js";
|
|
88
88
|
import "./skills-status-BNDqwHkP.js";
|
|
89
89
|
import { t as copyToClipboard } from "./clipboard-McRwF3r0.js";
|
|
@@ -91,7 +91,7 @@ import { n as stylePromptMessage, r as stylePromptTitle, t as stylePromptHint }
|
|
|
91
91
|
import "./note-CHrtEumO.js";
|
|
92
92
|
import "./plugin-auto-enable-D2TNEv3x.js";
|
|
93
93
|
import "./channels-status-issues-DC8vgOMo.js";
|
|
94
|
-
import "./completion-cli-
|
|
94
|
+
import "./completion-cli-C-85b5b8.js";
|
|
95
95
|
import "./daemon-runtime-BpfA4d6Q.js";
|
|
96
96
|
import { f as openUrl, g as resolveControlUiLinks, i as detectBrowserOpenSupport, o as formatControlUiSshHint } from "./onboard-helpers-CHfdRdZR.js";
|
|
97
97
|
import "./systemd-9LEEqibe.js";
|
|
@@ -107,8 +107,8 @@ import "./logging-B96FQvnn.js";
|
|
|
107
107
|
import "./doctor-config-flow-CYDx1U0Z.js";
|
|
108
108
|
import "./systemd-linger-PqG8iGCt.js";
|
|
109
109
|
import "./health-format-39e76m9p.js";
|
|
110
|
-
import { n as doctorCommand, t as selectStyled } from "./prompt-select-styled-
|
|
111
|
-
import "./doctor-completion-
|
|
110
|
+
import { n as doctorCommand, t as selectStyled } from "./prompt-select-styled-B5wlPYN5.js";
|
|
111
|
+
import "./doctor-completion-BwHbIZjF.js";
|
|
112
112
|
import path from "node:path";
|
|
113
113
|
import fs from "node:fs/promises";
|
|
114
114
|
import { cancel, confirm, isCancel, multiselect } from "@clack/prompts";
|
|
@@ -35,7 +35,7 @@ import "./onboard-helpers-CHfdRdZR.js";
|
|
|
35
35
|
import "./systemd-9LEEqibe.js";
|
|
36
36
|
import "./service-AP9pR9R5.js";
|
|
37
37
|
import "./health-D8cKia4i.js";
|
|
38
|
-
import "./onboarding-
|
|
38
|
+
import "./onboarding-4v9LJueP.js";
|
|
39
39
|
import "./shared-_wwqvx84.js";
|
|
40
40
|
import "./auth-token-SebYuqfR.js";
|
|
41
41
|
import "./logging-B96FQvnn.js";
|
|
@@ -44,7 +44,7 @@ import "./openai-model-default-CDDFpxUr.js";
|
|
|
44
44
|
import "./model-picker-CV56GE8A.js";
|
|
45
45
|
import "./systemd-linger-PqG8iGCt.js";
|
|
46
46
|
import "./onboard-custom-B2fJvyxt.js";
|
|
47
|
-
import { n as ONBOARD_PROVIDER_AUTH_FLAGS, t as onboardCommand } from "./onboard-
|
|
47
|
+
import { n as ONBOARD_PROVIDER_AUTH_FLAGS, t as onboardCommand } from "./onboard-C8IQnigm.js";
|
|
48
48
|
|
|
49
49
|
//#region src/cli/program/register.onboard.ts
|
|
50
50
|
function resolveInstallDaemonFlag(command, opts) {
|
|
@@ -30,7 +30,7 @@ import "./onboard-helpers-Bm-oyLWy.js";
|
|
|
30
30
|
import "./systemd-p_nEAkHC.js";
|
|
31
31
|
import "./service-BIixwO-v.js";
|
|
32
32
|
import "./health-DdzNc1yA.js";
|
|
33
|
-
import "./onboarding-
|
|
33
|
+
import "./onboarding-BIq5BxG0.js";
|
|
34
34
|
import "./shared-CIeW3aWF.js";
|
|
35
35
|
import "./auth-token-Brb1Askz.js";
|
|
36
36
|
import "./logging-BeA4q4J_.js";
|
|
@@ -39,7 +39,7 @@ import "./openai-model-default-BVPmAuXK.js";
|
|
|
39
39
|
import "./model-picker-4NUXHy8M.js";
|
|
40
40
|
import "./systemd-linger-BM4qvprK.js";
|
|
41
41
|
import "./onboard-custom-DcZ2SEUv.js";
|
|
42
|
-
import { n as ONBOARD_PROVIDER_AUTH_FLAGS, t as onboardCommand } from "./onboard-
|
|
42
|
+
import { n as ONBOARD_PROVIDER_AUTH_FLAGS, t as onboardCommand } from "./onboard-CAIujkV7.js";
|
|
43
43
|
|
|
44
44
|
//#region src/cli/program/register.onboard.ts
|
|
45
45
|
function resolveInstallDaemonFlag(command, opts) {
|
|
@@ -36,7 +36,7 @@ import "./onboard-helpers-CHfdRdZR.js";
|
|
|
36
36
|
import "./systemd-9LEEqibe.js";
|
|
37
37
|
import "./service-AP9pR9R5.js";
|
|
38
38
|
import "./health-D8cKia4i.js";
|
|
39
|
-
import "./onboarding-
|
|
39
|
+
import "./onboarding-4v9LJueP.js";
|
|
40
40
|
import "./shared-_wwqvx84.js";
|
|
41
41
|
import "./auth-token-SebYuqfR.js";
|
|
42
42
|
import { n as logConfigUpdated, t as formatConfigPath } from "./logging-B96FQvnn.js";
|
|
@@ -44,7 +44,7 @@ import "./openai-model-default-CDDFpxUr.js";
|
|
|
44
44
|
import "./model-picker-CV56GE8A.js";
|
|
45
45
|
import "./systemd-linger-PqG8iGCt.js";
|
|
46
46
|
import "./onboard-custom-B2fJvyxt.js";
|
|
47
|
-
import { t as onboardCommand } from "./onboard-
|
|
47
|
+
import { t as onboardCommand } from "./onboard-C8IQnigm.js";
|
|
48
48
|
import JSON5 from "json5";
|
|
49
49
|
import fs from "node:fs/promises";
|
|
50
50
|
|
|
@@ -31,7 +31,7 @@ import "./onboard-helpers-Bm-oyLWy.js";
|
|
|
31
31
|
import "./systemd-p_nEAkHC.js";
|
|
32
32
|
import "./service-BIixwO-v.js";
|
|
33
33
|
import "./health-DdzNc1yA.js";
|
|
34
|
-
import "./onboarding-
|
|
34
|
+
import "./onboarding-BIq5BxG0.js";
|
|
35
35
|
import "./shared-CIeW3aWF.js";
|
|
36
36
|
import "./auth-token-Brb1Askz.js";
|
|
37
37
|
import { n as logConfigUpdated, t as formatConfigPath } from "./logging-BeA4q4J_.js";
|
|
@@ -39,7 +39,7 @@ import "./openai-model-default-BVPmAuXK.js";
|
|
|
39
39
|
import "./model-picker-4NUXHy8M.js";
|
|
40
40
|
import "./systemd-linger-BM4qvprK.js";
|
|
41
41
|
import "./onboard-custom-DcZ2SEUv.js";
|
|
42
|
-
import { t as onboardCommand } from "./onboard-
|
|
42
|
+
import { t as onboardCommand } from "./onboard-CAIujkV7.js";
|
|
43
43
|
import JSON5 from "json5";
|
|
44
44
|
import fs from "node:fs/promises";
|
|
45
45
|
|
|
@@ -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-
|
|
44
|
+
(await import("./gateway-cli-CW-Z71cE.js")).registerGatewayCli(program);
|
|
45
45
|
}
|
|
46
46
|
},
|
|
47
47
|
{
|
|
@@ -121,7 +121,7 @@ const entries = [
|
|
|
121
121
|
description: "Open a terminal UI connected to the Gateway",
|
|
122
122
|
hasSubcommands: false,
|
|
123
123
|
register: async (program) => {
|
|
124
|
-
(await import("./tui-cli-
|
|
124
|
+
(await import("./tui-cli-25xTveHh.js")).registerTuiCli(program);
|
|
125
125
|
}
|
|
126
126
|
},
|
|
127
127
|
{
|
|
@@ -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-
|
|
232
|
+
(await import("./update-cli-Dl_QbjXc.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-
|
|
240
|
+
(await import("./completion-cli-BxspmuYm.js").then((n) => n.n)).registerCompletionCli(program);
|
|
241
241
|
}
|
|
242
242
|
}
|
|
243
243
|
];
|
|
@@ -360,7 +360,7 @@ async function runCli(argv = process$1.argv) {
|
|
|
360
360
|
assertSupportedRuntime();
|
|
361
361
|
if (await tryRouteCli(normalizedArgv)) return;
|
|
362
362
|
enableConsoleCapture();
|
|
363
|
-
const { buildProgram } = await import("./program-
|
|
363
|
+
const { buildProgram } = await import("./program-C19G7o-Q.js");
|
|
364
364
|
const program = buildProgram();
|
|
365
365
|
installUnhandledRejectionHandler();
|
|
366
366
|
process$1.on("uncaughtException", (error) => {
|
|
@@ -392,10 +392,10 @@ async function runCli(argv = process$1.argv) {
|
|
|
392
392
|
const { getProgramContext } = await import("./program-context-BFKw4l9I.js").then((n) => n.n);
|
|
393
393
|
const ctx = getProgramContext(program);
|
|
394
394
|
if (ctx) {
|
|
395
|
-
const { registerCoreCliByName } = await import("./command-registry-
|
|
395
|
+
const { registerCoreCliByName } = await import("./command-registry-D8fj6th4.js").then((n) => n.t);
|
|
396
396
|
await registerCoreCliByName(program, ctx, primary, parseArgv);
|
|
397
397
|
}
|
|
398
|
-
const { registerSubCliByName } = await import("./register.subclis-
|
|
398
|
+
const { registerSubCliByName } = await import("./register.subclis-CnDo2jzv.js").then((n) => n.a);
|
|
399
399
|
await registerSubCliByName(program, primary);
|
|
400
400
|
}
|
|
401
401
|
const hasBuiltinPrimary = primary !== null && program.commands.some((command) => command.name() === primary);
|
|
@@ -2381,7 +2381,7 @@ function createSessionActions(context) {
|
|
|
2381
2381
|
if (message.role === "user") {
|
|
2382
2382
|
const text = extractTextFromMessage(message);
|
|
2383
2383
|
if (text) {
|
|
2384
|
-
if (text.startsWith("
|
|
2384
|
+
if (text.startsWith("Review your response against the original") || /^\[.+\]\s+(Not connected|Connected as)\b/i.test(text)) {
|
|
2385
2385
|
if (showTools) chatLog.addSystem(text);
|
|
2386
2386
|
continue;
|
|
2387
2387
|
}
|
|
@@ -2381,7 +2381,7 @@ function createSessionActions(context) {
|
|
|
2381
2381
|
if (message.role === "user") {
|
|
2382
2382
|
const text = extractTextFromMessage(message);
|
|
2383
2383
|
if (text) {
|
|
2384
|
-
if (text.startsWith("
|
|
2384
|
+
if (text.startsWith("Review your response against the original") || /^\[.+\]\s+(Not connected|Connected as)\b/i.test(text)) {
|
|
2385
2385
|
if (showTools) chatLog.addSystem(text);
|
|
2386
2386
|
continue;
|
|
2387
2387
|
}
|
|
@@ -36,7 +36,7 @@ import "./commands-registry-Bccp0eH5.js";
|
|
|
36
36
|
import "./tool-display-wSdT0Ynz.js";
|
|
37
37
|
import { t as parseTimeoutMs } from "./parse-timeout-CMozMfzr.js";
|
|
38
38
|
import { t as formatDocsLink } from "./links-Db3Rw0Tg.js";
|
|
39
|
-
import { t as runTui } from "./tui-
|
|
39
|
+
import { t as runTui } from "./tui-D0j61PXx.js";
|
|
40
40
|
|
|
41
41
|
//#region src/cli/tui-cli.ts
|
|
42
42
|
function registerTuiCli(program) {
|
|
@@ -41,7 +41,7 @@ import "./pairing-token-CURbSHdi.js";
|
|
|
41
41
|
import "./tool-display-Dr6VaTg5.js";
|
|
42
42
|
import { t as parseTimeoutMs } from "./parse-timeout-CpgyC-LD.js";
|
|
43
43
|
import { t as formatDocsLink } from "./links-CSaUKNKm.js";
|
|
44
|
-
import { t as runTui } from "./tui-
|
|
44
|
+
import { t as runTui } from "./tui-DFuScHlA.js";
|
|
45
45
|
|
|
46
46
|
//#region src/cli/tui-cli.ts
|
|
47
47
|
function registerTuiCli(program) {
|
|
@@ -86,7 +86,7 @@ import "./replies-B2O2eRh6.js";
|
|
|
86
86
|
import "./pi-tools.policy-Dyx3nBmp.js";
|
|
87
87
|
import "./model-BRcKPW49.js";
|
|
88
88
|
import { r as parseSemver } from "./runtime-guard-BZ3_1QqS.js";
|
|
89
|
-
import "./program-context-
|
|
89
|
+
import "./program-context-BSUkEz3n.js";
|
|
90
90
|
import "./catalog-CSgSg5Gp.js";
|
|
91
91
|
import "./skills-status-BNDqwHkP.js";
|
|
92
92
|
import { n as inheritOptionFromParent } from "./command-options-ChiIn6Na.js";
|
|
@@ -98,7 +98,7 @@ import "./npm-registry-spec-BXw_6vF6.js";
|
|
|
98
98
|
import "./skill-scanner-YF2jR4RY.js";
|
|
99
99
|
import "./installs-DhSLZRT7.js";
|
|
100
100
|
import "./channels-status-issues-DC8vgOMo.js";
|
|
101
|
-
import { r as installCompletion } from "./completion-cli-
|
|
101
|
+
import { r as installCompletion } from "./completion-cli-C-85b5b8.js";
|
|
102
102
|
import "./daemon-runtime-BpfA4d6Q.js";
|
|
103
103
|
import "./onboard-helpers-CHfdRdZR.js";
|
|
104
104
|
import "./systemd-9LEEqibe.js";
|
|
@@ -119,8 +119,8 @@ import { n as updateNpmInstalledPlugins, t as syncPluginsForUpdateChannel } from
|
|
|
119
119
|
import "./doctor-config-flow-CYDx1U0Z.js";
|
|
120
120
|
import "./systemd-linger-PqG8iGCt.js";
|
|
121
121
|
import "./health-format-39e76m9p.js";
|
|
122
|
-
import { n as doctorCommand, t as selectStyled } from "./prompt-select-styled-
|
|
123
|
-
import { r as ensureCompletionCacheExists, t as checkShellCompletionStatus } from "./doctor-completion-
|
|
122
|
+
import { n as doctorCommand, t as selectStyled } from "./prompt-select-styled-B5wlPYN5.js";
|
|
123
|
+
import { r as ensureCompletionCacheExists, t as checkShellCompletionStatus } from "./doctor-completion-BwHbIZjF.js";
|
|
124
124
|
import path from "node:path";
|
|
125
125
|
import os from "node:os";
|
|
126
126
|
import fs from "node:fs/promises";
|
|
@@ -92,10 +92,10 @@ import "./npm-registry-spec-NLo2PCol.js";
|
|
|
92
92
|
import "./skill-scanner-CuoStu03.js";
|
|
93
93
|
import "./installs-cPraL4Dg.js";
|
|
94
94
|
import "./channels-status-issues-GSsGZvfn.js";
|
|
95
|
-
import "./register.subclis-
|
|
96
|
-
import "./command-registry-
|
|
95
|
+
import "./register.subclis-CnDo2jzv.js";
|
|
96
|
+
import "./command-registry-D8fj6th4.js";
|
|
97
97
|
import "./program-context-BFKw4l9I.js";
|
|
98
|
-
import { r as installCompletion } from "./completion-cli-
|
|
98
|
+
import { r as installCompletion } from "./completion-cli-BxspmuYm.js";
|
|
99
99
|
import "./daemon-runtime-2Y9RfgcP.js";
|
|
100
100
|
import { r as parseSemver } from "./runtime-guard-p4-FMx0l.js";
|
|
101
101
|
import "./onboard-helpers-Bm-oyLWy.js";
|
|
@@ -117,8 +117,8 @@ import { n as updateNpmInstalledPlugins, t as syncPluginsForUpdateChannel } from
|
|
|
117
117
|
import "./doctor-config-flow-wvoEFNeZ.js";
|
|
118
118
|
import "./systemd-linger-BM4qvprK.js";
|
|
119
119
|
import "./health-format-DaP03FBk.js";
|
|
120
|
-
import { n as doctorCommand, t as selectStyled } from "./prompt-select-styled-
|
|
121
|
-
import { r as ensureCompletionCacheExists, t as checkShellCompletionStatus } from "./doctor-completion-
|
|
120
|
+
import { n as doctorCommand, t as selectStyled } from "./prompt-select-styled-CnYM7W0j.js";
|
|
121
|
+
import { r as ensureCompletionCacheExists, t as checkShellCompletionStatus } from "./doctor-completion-CX7LjkOD.js";
|
|
122
122
|
import { spawn, spawnSync } from "node:child_process";
|
|
123
123
|
import os from "node:os";
|
|
124
124
|
import path from "node:path";
|
|
@@ -38,10 +38,6 @@ git commit -m "Add agent workspace"
|
|
|
38
38
|
- On session start, read today + yesterday if present.
|
|
39
39
|
- Capture durable facts, preferences, and decisions; avoid secrets.
|
|
40
40
|
|
|
41
|
-
## Heartbeats (optional)
|
|
42
|
-
|
|
43
|
-
- SYMIPULSE.md can hold a tiny checklist for heartbeat runs; keep it small.
|
|
44
|
-
|
|
45
41
|
## Customize
|
|
46
42
|
|
|
47
43
|
- Add your preferred style, rules, and "memory" here.
|
|
@@ -190,88 +190,27 @@ Skills provide your tools. When you need one, check its `SKILL.md`. Keep local n
|
|
|
190
190
|
|
|
191
191
|
- **WhatsApp:** No headers — use **bold** or CAPS for emphasis
|
|
192
192
|
|
|
193
|
-
##
|
|
193
|
+
## ⏰ Periodic Work — Use Cron
|
|
194
194
|
|
|
195
|
-
|
|
195
|
+
For scheduled or periodic tasks, use the cron tool. Examples:
|
|
196
196
|
|
|
197
|
-
|
|
198
|
-
`Read SYMIPULSE.md if it exists (workspace context). Follow it strictly. Do not infer or repeat old tasks from prior chats. If nothing needs attention, reply SYMIPULSE_OK.`
|
|
199
|
-
|
|
200
|
-
You are free to edit `SYMIPULSE.md` with a short checklist or reminders. Keep it small to limit token burn.
|
|
201
|
-
|
|
202
|
-
### Heartbeat vs Cron: When to Use Each
|
|
203
|
-
|
|
204
|
-
**Use heartbeat when:**
|
|
205
|
-
|
|
206
|
-
- Multiple checks can batch together (inbox + calendar + notifications in one turn)
|
|
207
|
-
- You need conversational context from recent messages
|
|
208
|
-
- Timing can drift slightly (every ~30 min is fine, not exact)
|
|
209
|
-
- You want to reduce API calls by combining periodic checks
|
|
210
|
-
|
|
211
|
-
**Use cron when:**
|
|
212
|
-
|
|
213
|
-
- Exact timing matters ("9:00 AM sharp every Monday")
|
|
197
|
+
- Exact timing ("9:00 AM sharp every Monday")
|
|
214
198
|
- Task needs isolation from main session history
|
|
215
|
-
-
|
|
199
|
+
- A different model or thinking level for the task
|
|
216
200
|
- One-shot reminders ("remind me in 20 minutes")
|
|
217
201
|
- Output should deliver directly to a channel without main session involvement
|
|
218
202
|
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
**Things to check (rotate through these, 2-4 times per day):**
|
|
222
|
-
|
|
223
|
-
- **Emails** - Any urgent unread messages?
|
|
224
|
-
- **Calendar** - Upcoming events in next 24-48h?
|
|
225
|
-
- **Mentions** - Twitter/social notifications?
|
|
226
|
-
- **Weather** - Relevant if your human might go out?
|
|
227
|
-
|
|
228
|
-
**Track your checks** in `memory/heartbeat-state.json`:
|
|
203
|
+
## 🔄 Memory Maintenance
|
|
229
204
|
|
|
230
|
-
|
|
231
|
-
{
|
|
232
|
-
"lastChecks": {
|
|
233
|
-
"email": 1703275200,
|
|
234
|
-
"calendar": 1703260800,
|
|
235
|
-
"weather": null
|
|
236
|
-
}
|
|
237
|
-
}
|
|
238
|
-
```
|
|
205
|
+
L3 consolidation runs automatically after each memory-flush. You don't hand-roll it. What you _can_ do:
|
|
239
206
|
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
- Important email arrived
|
|
243
|
-
- Calendar event coming up (<2h)
|
|
244
|
-
- Something interesting you found
|
|
245
|
-
- It's been >8h since you said anything
|
|
246
|
-
|
|
247
|
-
**When to stay quiet (SYMIPULSE_OK):**
|
|
248
|
-
|
|
249
|
-
- Late night (23:00-08:00) unless urgent
|
|
250
|
-
- Human is clearly busy
|
|
251
|
-
- Nothing new since last check
|
|
252
|
-
- You just checked <30 minutes ago
|
|
253
|
-
|
|
254
|
-
**Proactive work you can do without asking:**
|
|
255
|
-
|
|
256
|
-
- Read and organize memory files
|
|
257
|
-
- Check on projects (git status, etc.)
|
|
258
|
-
- Update documentation
|
|
259
|
-
- Commit and push your own changes
|
|
260
|
-
- **Review recent daily memory** (see below)
|
|
261
|
-
|
|
262
|
-
### 🔄 Memory Maintenance (During Heartbeats)
|
|
263
|
-
|
|
264
|
-
L3 consolidation runs automatically after each memory-flush. You don't hand-roll it. What you _can_ do on a heartbeat:
|
|
265
|
-
|
|
266
|
-
1. Read through recent `memory/YYYY-MM-DD.md` files for context.
|
|
207
|
+
1. Read recent `memory/YYYY-MM-DD.md` files for context.
|
|
267
208
|
2. Read `memory/symi-core.md` + `memory/symi-beliefs.md` to see what has stabilized about you and the user.
|
|
268
209
|
3. Notice when a recurring pattern hasn't been pinned yet — if the human has said the same preference three times over different days, call `memory_pin` on it.
|
|
269
210
|
4. If `symi-core.md` contains a stale belief contradicted by recent events, write the correction into today's `memory/YYYY-MM-DD.md` and (if the human is present) mention you've updated. The next L3 cycle will reconcile.
|
|
270
211
|
|
|
271
212
|
Daily files are raw observations. `symi-core.md` is your curated evolving self, rewritten by L3 each cycle. `MEMORY.md` is the human's own notes — read it, don't rewrite it.
|
|
272
213
|
|
|
273
|
-
The goal: Be helpful without being annoying. Check in a few times a day, do useful background work, but respect quiet time.
|
|
274
|
-
|
|
275
214
|
## Make It Yours
|
|
276
215
|
|
|
277
216
|
This is a starting point. Add your own conventions, style, and rules as you figure out what works.
|
|
@@ -76,13 +76,6 @@ Use `symi config get` (no args) to see all top-level keys.
|
|
|
76
76
|
| `memory.backend` | string | `"builtin"`, `"qmd"` |
|
|
77
77
|
| `memory.citations` | string | `"auto"`, `"on"`, `"off"` |
|
|
78
78
|
|
|
79
|
-
## Symipulse (Heartbeat)
|
|
80
|
-
|
|
81
|
-
| Path | Type | Example |
|
|
82
|
-
| ------------------------------------------- | ------- | ------- |
|
|
83
|
-
| `agents.defaults.heartbeat.enabled` | boolean | `true` |
|
|
84
|
-
| `agents.defaults.heartbeat.intervalMinutes` | number | `30` |
|
|
85
|
-
|
|
86
79
|
## Tool Access Control
|
|
87
80
|
|
|
88
81
|
| Path | Type | Example |
|
package/package.json
CHANGED
|
@@ -253,13 +253,13 @@ This prevents the user from seeing only "Agent failed before reply" and having n
|
|
|
253
253
|
|
|
254
254
|
## Auto-Notify on Completion
|
|
255
255
|
|
|
256
|
-
For long-running background tasks, append a wake trigger to your prompt so Symi gets notified immediately when the agent finishes
|
|
256
|
+
For long-running background tasks, append a wake trigger to your prompt so Symi gets notified immediately when the agent finishes:
|
|
257
257
|
|
|
258
258
|
```
|
|
259
259
|
... your task here.
|
|
260
260
|
|
|
261
261
|
When completely finished, run this command to notify me:
|
|
262
|
-
symi system event --text "Done: [brief summary of what was built]"
|
|
262
|
+
symi system event --text "Done: [brief summary of what was built]"
|
|
263
263
|
```
|
|
264
264
|
|
|
265
265
|
**Example:**
|
|
@@ -1,103 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
title: "SYMIPULSE.md Template"
|
|
3
|
-
summary: "Workspace template for SYMIPULSE.md"
|
|
4
|
-
read_when:
|
|
5
|
-
- Bootstrapping a workspace manually
|
|
6
|
-
---
|
|
7
|
-
|
|
8
|
-
# SYMIPULSE.md - Periodic Tasks
|
|
9
|
-
|
|
10
|
-
## Daily Journaling (Every Heartbeat — Priority 1)
|
|
11
|
-
|
|
12
|
-
Before anything else, write to today's daily log (`memory/YYYY-MM-DD.md`; create `memory/` if needed).
|
|
13
|
-
|
|
14
|
-
### What to journal
|
|
15
|
-
|
|
16
|
-
Review the current session transcript since the last heartbeat. If there were any user interactions, tool uses, decisions, errors, or notable events — append a brief entry:
|
|
17
|
-
|
|
18
|
-
```markdown
|
|
19
|
-
## Session: [short label] (HH:MM TZ)
|
|
20
|
-
|
|
21
|
-
- [1-3 bullet points: what happened, what was decided, what was learned]
|
|
22
|
-
```
|
|
23
|
-
|
|
24
|
-
### Rules
|
|
25
|
-
|
|
26
|
-
- **APPEND only** — never overwrite existing entries in the file
|
|
27
|
-
- Skip if the only activity since last heartbeat was another heartbeat (no user interaction)
|
|
28
|
-
- Keep entries concise: 2-5 lines per session block
|
|
29
|
-
- Include timestamps so entries are traceable
|
|
30
|
-
- If truly nothing happened (no user messages, no tool calls), skip journaling and move to consolidation
|
|
31
|
-
|
|
32
|
-
## Memory Consolidation (Priority 2)
|
|
33
|
-
|
|
34
|
-
Every heartbeat, check if consolidation is needed. Run consolidation when:
|
|
35
|
-
|
|
36
|
-
- It's been more than 24 hours since the last consolidation (check `memory/heartbeat-state.json` → `lastChecks.memoryConsolidation`)
|
|
37
|
-
- There are 3+ daily log files that haven't been distilled into MEMORY.md
|
|
38
|
-
|
|
39
|
-
### Consolidation Steps
|
|
40
|
-
|
|
41
|
-
1. **Read all recent daily logs** (`memory/YYYY-MM-DD*.md` from last 7 days)
|
|
42
|
-
2. **Distill into structured MEMORY.md sections:**
|
|
43
|
-
- `## User` — name, timezone, preferences, working style, communication patterns
|
|
44
|
-
- `## Projects` — active projects, status, key decisions, blockers
|
|
45
|
-
- `## Preferences` — technical choices, tool preferences, response style
|
|
46
|
-
- `## Lessons Learned` — what worked, what didn't, mistakes to avoid
|
|
47
|
-
- `## People & Contacts` — names, roles, relationships mentioned
|
|
48
|
-
- `## Open Items` — pending tasks, follow-ups, things to remember
|
|
49
|
-
3. **Keep MEMORY.md under 2000 tokens** — be ruthlessly concise. Use bullet points, not prose. Every line should be a retrievable fact.
|
|
50
|
-
4. **Remove stale entries** — delete items from MEMORY.md that are resolved, outdated, or superseded
|
|
51
|
-
5. **Archive old daily logs** — files older than 14 days: extract any unrecorded insights, then move to `memory/archive/` (create if needed)
|
|
52
|
-
6. **Update heartbeat state** — set `lastChecks.memoryConsolidation` to current timestamp
|
|
53
|
-
|
|
54
|
-
### MEMORY.md Format (Target)
|
|
55
|
-
|
|
56
|
-
```markdown
|
|
57
|
-
## User
|
|
58
|
-
|
|
59
|
-
- Name: [name], TZ: [timezone]
|
|
60
|
-
- Prefers: [concise/detailed], [practical/theoretical]
|
|
61
|
-
- Working on: [current focus]
|
|
62
|
-
|
|
63
|
-
## Projects
|
|
64
|
-
|
|
65
|
-
- [project]: [status] — [key decision or note]
|
|
66
|
-
|
|
67
|
-
## Preferences
|
|
68
|
-
|
|
69
|
-
- [preference]: [detail]
|
|
70
|
-
|
|
71
|
-
## Lessons Learned
|
|
72
|
-
|
|
73
|
-
- [lesson]: [context]
|
|
74
|
-
|
|
75
|
-
## Open Items
|
|
76
|
-
|
|
77
|
-
- [ ] [task or follow-up]
|
|
78
|
-
```
|
|
79
|
-
|
|
80
|
-
### Why This Matters
|
|
81
|
-
|
|
82
|
-
MEMORY.md is injected into every system prompt. A bloated or disorganized MEMORY.md wastes tokens and degrades recall quality. A tight, structured one makes the model contextually aware on every turn.
|
|
83
|
-
|
|
84
|
-
## Pattern Detection (Every 5th Heartbeat)
|
|
85
|
-
|
|
86
|
-
- Search recent conversations for repeated themes: "always", "never", "prefer", "don't like"
|
|
87
|
-
- Identify new communication or technical preferences
|
|
88
|
-
- Update MEMORY.md Preferences section
|
|
89
|
-
- Look for: time patterns, recurring tasks, common frustrations
|
|
90
|
-
|
|
91
|
-
## Self-Assessment (Every 10th Heartbeat)
|
|
92
|
-
|
|
93
|
-
- Verify MEMORY.md preferences are being followed in recent interactions
|
|
94
|
-
- Check if past mistakes are being repeated
|
|
95
|
-
- Remove any MEMORY.md entries that are no longer accurate
|
|
96
|
-
|
|
97
|
-
## Execution Rules
|
|
98
|
-
|
|
99
|
-
- Only run consolidation in main session (not group chats)
|
|
100
|
-
- If nothing needs consolidation, reply SYMIPULSE_OK
|
|
101
|
-
- Keep all updates concise — quality over quantity
|
|
102
|
-
- Archive, don't delete — raw logs may be useful later
|
|
103
|
-
- After consolidation, briefly note what was updated in the daily log
|