@symerian/symi 3.4.7 → 3.4.8
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/{chrome-CPSDqbK6.js → chrome-CQn8fDIy.js} +7 -7
- 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/js/metrics.js +0 -10
- package/dist/{deliver-Mqq3tgqB.js → deliver-DvW5xHHr.js} +4 -4
- 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/extensionAPI.js +4 -4
- 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/{manager-MbrGCH4o.js → manager-D0NIHMuQ.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/{pi-embedded-8Zh_Y5ur.js → pi-embedded-CGebiST2.js} +10 -10
- 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/{pw-ai-w6Qalz1W.js → pw-ai-BB1pJj9_.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/{synthesis-iB7TWRW4.js → synthesis-CQdzrLFL.js} +4 -4
- 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
|
@@ -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";
|
|
@@ -6,7 +6,7 @@ import { Q as formatCliCommand } from "./model-selection-DUQlsUfk.js";
|
|
|
6
6
|
import "./github-copilot-token-BbsJ0Qbo.js";
|
|
7
7
|
import "./ssrf-CBajKNWO.js";
|
|
8
8
|
import "./manifest-registry-CAWGTwb5.js";
|
|
9
|
-
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-
|
|
9
|
+
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-CQn8fDIy.js";
|
|
10
10
|
import "./redact-ojHFHOAb.js";
|
|
11
11
|
import { n as formatErrorMessage } from "./errors-C6sHIFo_.js";
|
|
12
12
|
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);
|
|
@@ -7,21 +7,21 @@ import "./reply-prefix-i-FPYcoQ.js";
|
|
|
7
7
|
import "./github-copilot-token-BbsJ0Qbo.js";
|
|
8
8
|
import "./plugins-Cp39v6b_.js";
|
|
9
9
|
import "./replies-DU-fXkSk.js";
|
|
10
|
-
import { n as runAgentTurn } from "./pi-embedded-
|
|
11
|
-
import "./deliver-
|
|
10
|
+
import { n as runAgentTurn } from "./pi-embedded-CGebiST2.js";
|
|
11
|
+
import "./deliver-DvW5xHHr.js";
|
|
12
12
|
import "./diagnostic-BvZmqxYI.js";
|
|
13
13
|
import "./diagnostic-session-state-CWtaDOiK.js";
|
|
14
14
|
import "./chunk-BjnT3w_x.js";
|
|
15
15
|
import "./ssrf-CBajKNWO.js";
|
|
16
16
|
import "./manifest-registry-CAWGTwb5.js";
|
|
17
|
-
import "./chrome-
|
|
17
|
+
import "./chrome-CQn8fDIy.js";
|
|
18
18
|
import "./skills-Bn0f9KTL.js";
|
|
19
19
|
import "./redact-ojHFHOAb.js";
|
|
20
20
|
import "./errors-C6sHIFo_.js";
|
|
21
21
|
import "./tokens-Dm_xa-oz.js";
|
|
22
22
|
import "./thinking-BKsvyjWX.js";
|
|
23
23
|
import "./paths-N698mtPE.js";
|
|
24
|
-
import "./manager-
|
|
24
|
+
import "./manager-D0NIHMuQ.js";
|
|
25
25
|
import "./sqlite-jFnvSfLz.js";
|
|
26
26
|
import "./markdown-tables-BtWlyyt1.js";
|
|
27
27
|
import "./commands-registry-BRWqR35Z.js";
|
|
@@ -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
|