@symerian/symi 2.0.6 → 2.0.7
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/{agents-CypLQ-TX.js → agents-CNsMe4Dr.js} +4 -4
- package/dist/{agents.config-S5g63_Ww.js → agents.config-CdDf19dm.js} +1 -1
- package/dist/{agents.config-DWqwPV32.js → agents.config-yx78oSLx.js} +1 -1
- package/dist/{auth-choice-1csNxn5J.js → auth-choice-CXMFi9LR.js} +1 -1
- package/dist/{auth-choice-DxhF9BuU.js → auth-choice-mw9ndZQO.js} +1 -1
- package/dist/{banner-CV_YEEQe.js → banner-B-joBGLz.js} +1 -1
- package/dist/build-info.json +3 -3
- package/dist/bundled/boot-md/handler.js +1 -1
- package/dist/bundled/session-memory/handler.js +1 -1
- package/dist/canvas-host/a2ui/.bundle.hash +1 -1
- package/dist/{channel-options-NbbM348A.js → channel-options-D74Jofp4.js} +1 -1
- package/dist/{channel-options-DN7ZZEMr.js → channel-options-XPRRVrmU.js} +1 -1
- package/dist/{channel-web-BUODlmfF.js → channel-web-vRvvtf0S.js} +1 -1
- package/dist/{channels-cli-6MNbtk6T.js → channels-cli-D3lj5dXo.js} +4 -4
- package/dist/{channels-cli-DOoGJd4k.js → channels-cli-DgxPfJF7.js} +4 -4
- package/dist/{cli-DxHEDvD7.js → cli-Bg_5WQFe.js} +1 -1
- package/dist/{cli-TVchR8N9.js → cli-DQQAfUbo.js} +1 -1
- package/dist/{command-registry-S2yEeoft.js → command-registry-Cde2LqTh.js} +9 -9
- package/dist/{completion-cli-BrgaQVPk.js → completion-cli-Cx9htCOm.js} +1 -1
- package/dist/{completion-cli-u1z9O4lQ.js → completion-cli-KJUTWJP3.js} +2 -2
- package/dist/{config-cli-CUdFNGGC.js → config-cli-C5-P9Nzz.js} +1 -1
- package/dist/{config-cli-CipxRDcw.js → config-cli-ozfA6MGF.js} +1 -1
- package/dist/{configure-B2DVh1MI.js → configure-DiuQ_aTS.js} +3 -3
- package/dist/{configure-D9n_M6Ra.js → configure-ktsZw1bT.js} +3 -3
- package/dist/{doctor-completion-94bdxcgy.js → doctor-completion-CrN6Ly8x.js} +1 -1
- package/dist/{doctor-completion-Beg_3VG2.js → doctor-completion-Vwi_je1c.js} +1 -1
- package/dist/entry.js +1 -1
- package/dist/extensionAPI.js +1 -1
- package/dist/{gateway-cli-BkfAKxxR.js → gateway-cli-CwO3878F.js} +9 -9
- package/dist/{gateway-cli-CKIJn013.js → gateway-cli-DyqK4XZ1.js} +9 -9
- package/dist/{glass-ui-ws-BQ6j-PII.js → glass-ui-ws-BmqwQaCf.js} +7 -7
- package/dist/{glass-ui-ws-BrvN2A06.js → glass-ui-ws-zVNodseh.js} +7 -7
- package/dist/{health-9kUMJPU4.js → health-Q1RP1M2f.js} +1 -1
- package/dist/{health-BUaaGug2.js → health-UjXEBnzA.js} +1 -1
- package/dist/{hooks-cli-CBkjAKu_.js → hooks-cli-D4qJl6do.js} +2 -2
- package/dist/{hooks-cli-CxqrpSnT.js → hooks-cli-DOT9uGZw.js} +2 -2
- package/dist/index.js +6 -6
- package/dist/llm-slug-generator.js +1 -1
- package/dist/{models-CZSMuo5B.js → models-DKsiIvSx.js} +2 -2
- package/dist/{models-cli-Ds23awjm.js → models-cli-BS6UJ98e.js} +3 -3
- package/dist/{models-cli-MqWvGB7f.js → models-cli-ULbdeSgc.js} +2 -2
- package/dist/{onboard-D3oW4O-4.js → onboard-B387frTY.js} +2 -2
- package/dist/{onboard-G9IN6QQx.js → onboard-Bt-BwfkR.js} +2 -2
- package/dist/{onboard-channels-dfTDyb59.js → onboard-channels-COcxT5Q0.js} +1 -1
- package/dist/{onboard-channels-oFTqVfhO.js → onboard-channels-ybPEmcP8.js} +1 -1
- package/dist/{onboarding-g2bI9l8x.js → onboarding-BibGEGIS.js} +3 -3
- package/dist/{onboarding-Ckpz4QDg.js → onboarding-CdN_NU2d.js} +3 -3
- package/dist/{onboarding.finalize-C1lR3Y__.js → onboarding.finalize-CY1NjrGb.js} +6 -6
- package/dist/{onboarding.finalize-MWEKi_hL.js → onboarding.finalize-CvahVrDM.js} +5 -5
- package/dist/{pi-embedded-Cll2enMR.js → pi-embedded-BvCoZBNg.js} +159 -2
- package/dist/{pi-embedded-BJC3CNWN.js → pi-embedded-ZzUH4ioO.js} +159 -2
- package/dist/{plugin-registry-KUffgxdX.js → plugin-registry-BAbkdLQ7.js} +1 -1
- package/dist/{plugin-registry-C5KPfoPc.js → plugin-registry-CEoSVvL1.js} +1 -1
- package/dist/plugin-sdk/agents/plan-mode.d.ts +32 -0
- package/dist/plugin-sdk/{channel-web-DTV6QoJV.js → channel-web-xXTpy0N_.js} +1 -1
- package/dist/plugin-sdk/index.js +2 -2
- package/dist/plugin-sdk/{reply-CzCsghFB.js → reply-EEvLfWgt.js} +159 -2
- package/dist/plugin-sdk/{web-BLcsH45O.js → web-COWtpMAH.js} +2 -2
- package/dist/{plugins-cli-BIHhue19.js → plugins-cli-BpuQ7Y9l.js} +2 -2
- package/dist/{plugins-cli-DRDUAaBR.js → plugins-cli-C_S07pgO.js} +2 -2
- package/dist/{program-BCEnYzi8.js → program-cO9YX6wL.js} +7 -7
- package/dist/{program-context-CS1wSnZE.js → program-context-QBBvnWFX.js} +17 -17
- package/dist/{prompt-select-styled-AZW_g_xe.js → prompt-select-styled-CepuQSKg.js} +4 -4
- package/dist/{prompt-select-styled-99u32PPK.js → prompt-select-styled-D3dYbx2P.js} +4 -4
- package/dist/{provider-auth-helpers-CeJqzcdK.js → provider-auth-helpers-BMACaaEd.js} +1 -1
- package/dist/{provider-auth-helpers-DqJ69hdw.js → provider-auth-helpers-DXqvuBCi.js} +1 -1
- package/dist/{push-apns-Dwt-_Kns.js → push-apns-8YIzbTM7.js} +1 -1
- package/dist/{push-apns-C5xLtVxl.js → push-apns-DhZgao_r.js} +1 -1
- package/dist/{register.agent-Cyq17z22.js → register.agent-CSUoUVKd.js} +6 -6
- package/dist/{register.agent-nnrj8tc5.js → register.agent-CiTS9lyx.js} +5 -5
- package/dist/{register.configure-DSknC_88.js → register.configure-BbE9MAer.js} +6 -6
- package/dist/{register.configure-D1zZ3jgM.js → register.configure-CuCVLOW0.js} +6 -6
- package/dist/{register.maintenance-Dt1AUhn3.js → register.maintenance-CJG75LTu.js} +8 -8
- package/dist/{register.maintenance-ClQi_hVH.js → register.maintenance-D8bthvou.js} +7 -7
- package/dist/{register.message-x7nPJjwN.js → register.message-CyqE4E2O.js} +2 -2
- package/dist/{register.message-C0R7nCJf.js → register.message-nUpHGrEE.js} +2 -2
- package/dist/{register.onboard-Bry0wxl_.js → register.onboard-BDlne5KX.js} +4 -4
- package/dist/{register.onboard-BOXdnoFU.js → register.onboard-Dlw-TCPH.js} +4 -4
- package/dist/{register.setup-fPrs1eMy.js → register.setup-B8kiMuah.js} +4 -4
- package/dist/{register.setup-C5d8909b.js → register.setup-ByMyofSq.js} +4 -4
- package/dist/{register.status-health-sessions-Bg3bAzzg.js → register.status-health-sessions-0odRpA-p.js} +3 -3
- package/dist/{register.status-health-sessions-C6FKgGFx.js → register.status-health-sessions-Diirshgb.js} +3 -3
- package/dist/{register.subclis-BrOWQICr.js → register.subclis-CqEj9vfW.js} +9 -9
- package/dist/{reply-D_FZec1Q.js → reply-B9o45s3E.js} +159 -2
- package/dist/{run-main-BNSY40iN.js → run-main-C__lZ7VF.js} +14 -14
- package/dist/{server-methods-BBkI0oCw.js → server-methods-B_NSJmhc.js} +7 -7
- package/dist/{server-methods-CQo9n7_8.js → server-methods-Df9KsV_-.js} +7 -7
- package/dist/{server-node-events-DBIaf_Oj.js → server-node-events-C2mugatX.js} +2 -2
- package/dist/{server-node-events-DXVd5rRh.js → server-node-events-ZG0SBDkU.js} +2 -2
- package/dist/{status-B77mKduK.js → status-BTF6_aBO.js} +1 -1
- package/dist/{status-Be3sgGJN.js → status-BytVj4kU.js} +1 -1
- package/dist/{status-CqnXLNV0.js → status-PADx9rG7.js} +2 -2
- package/dist/{status-CsoUJxpm.js → status-hgm5EhwS.js} +2 -2
- package/dist/{subagent-registry-BH79W7i1.js → subagent-registry-BR2Qhqjf.js} +159 -2
- package/dist/{update-cli-Ce9xf_CT.js → update-cli-CHr8rjf-.js} +8 -8
- package/dist/{update-cli-BhPzUXNP.js → update-cli-qacplfF4.js} +7 -7
- package/dist/{update-runner-DYnn5y5L.js → update-runner-DM8zQvQB.js} +1 -1
- package/dist/{update-runner-BpQxWph5.js → update-runner-DNA7FJa2.js} +1 -1
- package/dist/{web-D3J3pm9B.js → web-0bP0TLM2.js} +1 -1
- package/dist/{web-sN6ARhg2.js → web-DkQc82PT.js} +1 -1
- package/dist/{web-07aQbQrq.js → web-G0LUda_q.js} +1 -1
- package/dist/{web-uh4O13Iu.js → web-UroM-w6c.js} +2 -2
- package/docs/reference/templates/AGENTS.md +18 -0
- package/docs/reference/templates/SYMICORE.md +2 -0
- package/package.json +1 -1
|
@@ -51483,7 +51483,7 @@ function isVoiceChannelType(type) {
|
|
|
51483
51483
|
function createDefaultDeps() {
|
|
51484
51484
|
return {
|
|
51485
51485
|
sendMessageWhatsApp: async (...args) => {
|
|
51486
|
-
const { sendMessageWhatsApp } = await import("./web-
|
|
51486
|
+
const { sendMessageWhatsApp } = await import("./web-0bP0TLM2.js");
|
|
51487
51487
|
return await sendMessageWhatsApp(...args);
|
|
51488
51488
|
},
|
|
51489
51489
|
sendMessageTelegram: async (...args) => {
|
|
@@ -66762,7 +66762,7 @@ function loadWebLoginQr() {
|
|
|
66762
66762
|
return webLoginQrPromise;
|
|
66763
66763
|
}
|
|
66764
66764
|
function loadWebChannel() {
|
|
66765
|
-
webChannelPromise ??= import("./web-
|
|
66765
|
+
webChannelPromise ??= import("./web-0bP0TLM2.js");
|
|
66766
66766
|
return webChannelPromise;
|
|
66767
66767
|
}
|
|
66768
66768
|
function loadWhatsAppActions() {
|
|
@@ -74589,6 +74589,152 @@ function subscribeEmbeddedPiSession(params) {
|
|
|
74589
74589
|
};
|
|
74590
74590
|
}
|
|
74591
74591
|
|
|
74592
|
+
//#endregion
|
|
74593
|
+
//#region src/agents/plan-mode.ts
|
|
74594
|
+
/**
|
|
74595
|
+
* Plan Mode — automatic complexity detection and structured planning.
|
|
74596
|
+
*
|
|
74597
|
+
* When a user message is complex (multi-step, multi-file, refactoring, etc.),
|
|
74598
|
+
* Symi auto-enters plan mode: read-only investigation → structured plan →
|
|
74599
|
+
* user approval → context-cleared execution.
|
|
74600
|
+
*/
|
|
74601
|
+
const PLAN_KEYWORDS = new Set([
|
|
74602
|
+
"investigate",
|
|
74603
|
+
"refactor",
|
|
74604
|
+
"migrate",
|
|
74605
|
+
"redesign",
|
|
74606
|
+
"set up",
|
|
74607
|
+
"setup",
|
|
74608
|
+
"build",
|
|
74609
|
+
"implement",
|
|
74610
|
+
"architect",
|
|
74611
|
+
"overhaul",
|
|
74612
|
+
"restructure",
|
|
74613
|
+
"rewrite"
|
|
74614
|
+
]);
|
|
74615
|
+
const ANALYSIS_KEYWORDS = new Set([
|
|
74616
|
+
"analyze",
|
|
74617
|
+
"analyse",
|
|
74618
|
+
"compare",
|
|
74619
|
+
"audit",
|
|
74620
|
+
"review",
|
|
74621
|
+
"evaluate",
|
|
74622
|
+
"assess"
|
|
74623
|
+
]);
|
|
74624
|
+
const SEQUENTIAL_MARKERS = [
|
|
74625
|
+
/\bthen\b/i,
|
|
74626
|
+
/\bafter that\b/i,
|
|
74627
|
+
/\bonce .+ is done\b/i,
|
|
74628
|
+
/\bnext,?\s/i,
|
|
74629
|
+
/\bfollowed by\b/i,
|
|
74630
|
+
/\bfinally\b/i
|
|
74631
|
+
];
|
|
74632
|
+
const NUMBERED_LIST_RE = /^\s*\d+[.)]\s/gm;
|
|
74633
|
+
const FILE_PATH_RE = /(?:\/[\w.-]+){2,}|[\w.-]+\.[a-z]{1,4}/g;
|
|
74634
|
+
/**
|
|
74635
|
+
* Score a user message for complexity.
|
|
74636
|
+
* Returns a numeric score; >= PLAN_MODE_THRESHOLD triggers plan mode.
|
|
74637
|
+
*/
|
|
74638
|
+
function scorePlanComplexity(prompt) {
|
|
74639
|
+
let score = 0;
|
|
74640
|
+
const lower = prompt.toLowerCase();
|
|
74641
|
+
if (prompt.length > 500) {
|
|
74642
|
+
if ([...PLAN_KEYWORDS, ...ANALYSIS_KEYWORDS].some((kw) => lower.includes(kw)) || FILE_PATH_RE.test(prompt)) score += 3;
|
|
74643
|
+
}
|
|
74644
|
+
const numberedItems = prompt.match(NUMBERED_LIST_RE);
|
|
74645
|
+
if (numberedItems && numberedItems.length >= 3) score += 2;
|
|
74646
|
+
for (const kw of PLAN_KEYWORDS) if (lower.includes(kw)) {
|
|
74647
|
+
score += 2;
|
|
74648
|
+
break;
|
|
74649
|
+
}
|
|
74650
|
+
for (const re of SEQUENTIAL_MARKERS) if (re.test(prompt)) {
|
|
74651
|
+
score += 2;
|
|
74652
|
+
break;
|
|
74653
|
+
}
|
|
74654
|
+
const filePaths = prompt.match(FILE_PATH_RE);
|
|
74655
|
+
if (filePaths && new Set(filePaths).size >= 2) score += 1;
|
|
74656
|
+
for (const kw of ANALYSIS_KEYWORDS) if (lower.includes(kw)) {
|
|
74657
|
+
score += 1;
|
|
74658
|
+
break;
|
|
74659
|
+
}
|
|
74660
|
+
return score;
|
|
74661
|
+
}
|
|
74662
|
+
const PLAN_MODE_THRESHOLD = 5;
|
|
74663
|
+
/**
|
|
74664
|
+
* Determine whether a prompt should trigger plan mode.
|
|
74665
|
+
*
|
|
74666
|
+
* Priority:
|
|
74667
|
+
* 1. /plan prefix → always
|
|
74668
|
+
* 2. /noplan prefix → never
|
|
74669
|
+
* 3. Subagent/cron sessions → never
|
|
74670
|
+
* 4. Heuristic scoring
|
|
74671
|
+
*/
|
|
74672
|
+
function shouldEnterPlanMode(prompt, opts = {}) {
|
|
74673
|
+
const trimmed = prompt.trim();
|
|
74674
|
+
if (/^\/plan\b/i.test(trimmed)) return {
|
|
74675
|
+
enter: true,
|
|
74676
|
+
reason: "explicit /plan directive",
|
|
74677
|
+
score: 99,
|
|
74678
|
+
stripped: trimmed.replace(/^\/plan\s*/i, "").trim()
|
|
74679
|
+
};
|
|
74680
|
+
if (/^\/noplan\b/i.test(trimmed)) return {
|
|
74681
|
+
enter: false,
|
|
74682
|
+
reason: "explicit /noplan directive",
|
|
74683
|
+
score: 0,
|
|
74684
|
+
stripped: trimmed.replace(/^\/noplan\s*/i, "").trim()
|
|
74685
|
+
};
|
|
74686
|
+
if (opts.isSubagent) return {
|
|
74687
|
+
enter: false,
|
|
74688
|
+
reason: "subagent session",
|
|
74689
|
+
score: 0
|
|
74690
|
+
};
|
|
74691
|
+
if (opts.isCron) return {
|
|
74692
|
+
enter: false,
|
|
74693
|
+
reason: "cron session",
|
|
74694
|
+
score: 0
|
|
74695
|
+
};
|
|
74696
|
+
const score = scorePlanComplexity(trimmed);
|
|
74697
|
+
if (score >= PLAN_MODE_THRESHOLD) return {
|
|
74698
|
+
enter: true,
|
|
74699
|
+
reason: `complexity score ${score} >= ${PLAN_MODE_THRESHOLD}`,
|
|
74700
|
+
score
|
|
74701
|
+
};
|
|
74702
|
+
return {
|
|
74703
|
+
enter: false,
|
|
74704
|
+
reason: `complexity score ${score} < ${PLAN_MODE_THRESHOLD}`,
|
|
74705
|
+
score
|
|
74706
|
+
};
|
|
74707
|
+
}
|
|
74708
|
+
const PLAN_MODE_SYSTEM_PROMPT = `<plan_mode>
|
|
74709
|
+
You have entered PLAN MODE because this task is complex.
|
|
74710
|
+
|
|
74711
|
+
RULES:
|
|
74712
|
+
- DO NOT write, edit, or create any files yet
|
|
74713
|
+
- DO NOT execute destructive commands (rm, mv, git reset, etc.)
|
|
74714
|
+
- DO read files, search code, check runtime state
|
|
74715
|
+
- DO use memory_search, web_search, exec (read-only commands like ls, cat, git status, git log)
|
|
74716
|
+
- Produce a detailed step-by-step implementation plan
|
|
74717
|
+
|
|
74718
|
+
OUTPUT FORMAT:
|
|
74719
|
+
1. **Summary** — what needs to be done and why
|
|
74720
|
+
2. **Investigation** — files read, code searched, state checked
|
|
74721
|
+
3. **Files to modify** — list every file that will be created, edited, or deleted
|
|
74722
|
+
4. **Implementation phases** — numbered steps with:
|
|
74723
|
+
- What changes in each phase
|
|
74724
|
+
- Which files are touched
|
|
74725
|
+
- Dependencies on prior phases
|
|
74726
|
+
5. **Risks & considerations** — things that could go wrong, edge cases, rollback strategy
|
|
74727
|
+
|
|
74728
|
+
After presenting the plan, ask the user to choose one of these options.
|
|
74729
|
+
Present these as inline buttons if the channel supports them:
|
|
74730
|
+
- **Proceed** — clear context and execute the plan
|
|
74731
|
+
- **Modify** — adjust the plan based on feedback
|
|
74732
|
+
- **Cancel** — abandon the plan
|
|
74733
|
+
|
|
74734
|
+
Use the message tool with buttons:
|
|
74735
|
+
[{"label": "✅ Proceed", "data": "/plan-proceed"}, {"label": "✏️ Modify", "data": "/plan-modify"}, {"label": "❌ Cancel", "data": "/plan-cancel"}]
|
|
74736
|
+
</plan_mode>`;
|
|
74737
|
+
|
|
74592
74738
|
//#endregion
|
|
74593
74739
|
//#region src/agents/pi-embedded-runner/abort.ts
|
|
74594
74740
|
/**
|
|
@@ -75842,6 +75988,17 @@ async function runEmbeddedAttempt(params) {
|
|
|
75842
75988
|
log$2.debug(`auto-recall: skipped (${String(recallErr)})`);
|
|
75843
75989
|
}
|
|
75844
75990
|
}
|
|
75991
|
+
{
|
|
75992
|
+
const planResult = shouldEnterPlanMode(effectivePrompt, {
|
|
75993
|
+
isSubagent: isSubagentSessionKey(params.sessionKey),
|
|
75994
|
+
isCron: isCronSessionKey(params.sessionKey)
|
|
75995
|
+
});
|
|
75996
|
+
if (planResult.enter) {
|
|
75997
|
+
if (planResult.stripped != null) effectivePrompt = planResult.stripped;
|
|
75998
|
+
effectivePrompt = `${PLAN_MODE_SYSTEM_PROMPT}\n\n${effectivePrompt}`;
|
|
75999
|
+
log$2.info(`plan-mode: activated (${planResult.reason}) for runId=${params.runId}`);
|
|
76000
|
+
} else if (planResult.stripped != null) effectivePrompt = planResult.stripped;
|
|
76001
|
+
}
|
|
75845
76002
|
log$2.debug(`embedded run prompt start: runId=${params.runId} sessionId=${params.sessionId}`);
|
|
75846
76003
|
cacheTrace?.recordStage("prompt:before", {
|
|
75847
76004
|
prompt: effectivePrompt,
|
|
@@ -2,7 +2,7 @@ import { t as __exportAll } from "./rolldown-runtime-Cbj13DAv.js";
|
|
|
2
2
|
import { M as getActivePluginRegistry, o as createSubsystemLogger } from "./entry.js";
|
|
3
3
|
import { c as resolveAgentWorkspaceDir, l as resolveDefaultAgentId } from "./agent-scope-D-jRCY0d.js";
|
|
4
4
|
import { i as loadConfig } from "./config-amjzHiWZ.js";
|
|
5
|
-
import { _ as loadSymiPlugins } from "./subagent-registry-
|
|
5
|
+
import { _ as loadSymiPlugins } from "./subagent-registry-BR2Qhqjf.js";
|
|
6
6
|
|
|
7
7
|
//#region src/cli/plugin-registry.ts
|
|
8
8
|
var plugin_registry_exports = /* @__PURE__ */ __exportAll({ ensurePluginRegistryLoaded: () => ensurePluginRegistryLoaded });
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { t as __exportAll } from "./rolldown-runtime-Cbj13DAv.js";
|
|
2
|
-
import { gt as loadSymiPlugins } from "./reply-
|
|
2
|
+
import { gt as loadSymiPlugins } from "./reply-B9o45s3E.js";
|
|
3
3
|
import { d as getActivePluginRegistry } from "./registry-Cja8eT7G.js";
|
|
4
4
|
import { t as createSubsystemLogger } from "./subsystem-D9vIQve0.js";
|
|
5
5
|
import { c as resolveAgentWorkspaceDir, l as resolveDefaultAgentId } from "./agent-scope-CgUHAtCo.js";
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Plan Mode — automatic complexity detection and structured planning.
|
|
3
|
+
*
|
|
4
|
+
* When a user message is complex (multi-step, multi-file, refactoring, etc.),
|
|
5
|
+
* Symi auto-enters plan mode: read-only investigation → structured plan →
|
|
6
|
+
* user approval → context-cleared execution.
|
|
7
|
+
*/
|
|
8
|
+
/**
|
|
9
|
+
* Score a user message for complexity.
|
|
10
|
+
* Returns a numeric score; >= PLAN_MODE_THRESHOLD triggers plan mode.
|
|
11
|
+
*/
|
|
12
|
+
export declare function scorePlanComplexity(prompt: string): number;
|
|
13
|
+
export declare const PLAN_MODE_THRESHOLD = 5;
|
|
14
|
+
/**
|
|
15
|
+
* Determine whether a prompt should trigger plan mode.
|
|
16
|
+
*
|
|
17
|
+
* Priority:
|
|
18
|
+
* 1. /plan prefix → always
|
|
19
|
+
* 2. /noplan prefix → never
|
|
20
|
+
* 3. Subagent/cron sessions → never
|
|
21
|
+
* 4. Heuristic scoring
|
|
22
|
+
*/
|
|
23
|
+
export declare function shouldEnterPlanMode(prompt: string, opts?: {
|
|
24
|
+
isSubagent?: boolean;
|
|
25
|
+
isCron?: boolean;
|
|
26
|
+
}): {
|
|
27
|
+
enter: boolean;
|
|
28
|
+
reason: string;
|
|
29
|
+
score: number;
|
|
30
|
+
stripped?: string;
|
|
31
|
+
};
|
|
32
|
+
export declare const PLAN_MODE_SYSTEM_PROMPT = "<plan_mode>\nYou have entered PLAN MODE because this task is complex.\n\nRULES:\n- DO NOT write, edit, or create any files yet\n- DO NOT execute destructive commands (rm, mv, git reset, etc.)\n- DO read files, search code, check runtime state\n- DO use memory_search, web_search, exec (read-only commands like ls, cat, git status, git log)\n- Produce a detailed step-by-step implementation plan\n\nOUTPUT FORMAT:\n1. **Summary** \u2014 what needs to be done and why\n2. **Investigation** \u2014 files read, code searched, state checked\n3. **Files to modify** \u2014 list every file that will be created, edited, or deleted\n4. **Implementation phases** \u2014 numbered steps with:\n - What changes in each phase\n - Which files are touched\n - Dependencies on prior phases\n5. **Risks & considerations** \u2014 things that could go wrong, edge cases, rollback strategy\n\nAfter presenting the plan, ask the user to choose one of these options.\nPresent these as inline buttons if the channel supports them:\n- **Proceed** \u2014 clear context and execute the plan\n- **Modify** \u2014 adjust the plan based on feedback\n- **Cancel** \u2014 abandon the plan\n\nUse the message tool with buttons:\n[{\"label\": \"\u2705 Proceed\", \"data\": \"/plan-proceed\"}, {\"label\": \"\u270F\uFE0F Modify\", \"data\": \"/plan-modify\"}, {\"label\": \"\u274C Cancel\", \"data\": \"/plan-cancel\"}]\n</plan_mode>";
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { a as buildGroupHistoryKey, n as DEFAULT_MAIN_KEY, r as buildAgentMainSessionKey, s as normalizeAgentId } from "./session-key-C_0eELjb.js";
|
|
2
2
|
import { f as readWebSelfId, o as getWebAuthAgeMs, r as resolveWhatsAppAccount } from "./accounts-D9zGZU5t.js";
|
|
3
|
-
import { E as enqueueSystemEvent, G as resolveMentionGating, W as shouldAckReactionForWhatsApp, X as buildHistoryContextFromEntries, Y as DEFAULT_GROUP_HISTORY_LIMIT, _ as resolveEnvelopeFormatOptions, c as computeBackoff, d as formatDurationPrecise, f as dispatchReplyWithBufferedBlockDispatcher, g as formatInboundEnvelope, h as resolveInboundDebounceMs, ht as createDedupeCache, l as sleepWithAbort, m as createInboundDebouncer, n as normalizeGroupActivation, nt as buildMentionRegexes, r as parseActivationCommand, rt as normalizeMentionText, t as getReplyFromConfig, tt as recordPendingHistoryEntryIfEnabled, u as buildPairingReply, v as hasControlCommand, y as shouldComputeCommandAuthorized } from "./reply-
|
|
3
|
+
import { E as enqueueSystemEvent, G as resolveMentionGating, W as shouldAckReactionForWhatsApp, X as buildHistoryContextFromEntries, Y as DEFAULT_GROUP_HISTORY_LIMIT, _ as resolveEnvelopeFormatOptions, c as computeBackoff, d as formatDurationPrecise, f as dispatchReplyWithBufferedBlockDispatcher, g as formatInboundEnvelope, h as resolveInboundDebounceMs, ht as createDedupeCache, l as sleepWithAbort, m as createInboundDebouncer, n as normalizeGroupActivation, nt as buildMentionRegexes, r as parseActivationCommand, rt as normalizeMentionText, t as getReplyFromConfig, tt as recordPendingHistoryEntryIfEnabled, u as buildPairingReply, v as hasControlCommand, y as shouldComputeCommandAuthorized } from "./reply-EEvLfWgt.js";
|
|
4
4
|
import { A as normalizeE164, B as toWhatsappJid, K as logVerbose, N as resolveJidToE164, O as isSelfChatMode, R as sleep, Y as shouldLogVerbose, k as jidToE164, s as normalizeChatChannelId, tt as getChildLogger, x as clamp } from "./registry--_pGht6S.js";
|
|
5
5
|
import { n as loadConfig } from "./config-Do1-fcaS.js";
|
|
6
6
|
import { i as defaultRuntime, t as createSubsystemLogger } from "./subsystem-Coz2AgU8.js";
|
package/dist/plugin-sdk/index.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { f as DEFAULT_ACCOUNT_ID, p as normalizeAccountId } from "./session-key-C_0eELjb.js";
|
|
2
2
|
import { _ as createAccountListHelpers, i as resolveWhatsAppAuthDir, n as resolveDefaultWhatsAppAccountId, r as resolveWhatsAppAccount, t as listWhatsAppAccountIds } from "./accounts-D9zGZU5t.js";
|
|
3
|
-
import { $ as clearHistoryEntriesIfEnabled, A as resolveDiscordUserAllowlist, B as logTypingFailure, C as stripMarkdown, Ct as unbindThreadBindingsBySessionKey, D as resolveSlackUserAllowlist, Dt as BLUEBUBBLES_ACTION_NAMES, Et as BLUEBUBBLES_ACTIONS, F as stringEnum, G as resolveMentionGating, H as removeAckReactionAfterReply, I as recordInboundSession, J as summarizeMapping, K as resolveMentionGatingWithBypass, L as resolveControlCommandGate, M as collectDiscordAuditChannelIds, N as formatDocsLink, O as resolveSlackChannelAllowlist, Ot as BLUEBUBBLES_GROUP_ACTIONS, P as optionalStringEnum, Q as clearHistoryEntries, R as logAckFailure, S as processLineMessage, St as listThreadBindingsBySessionKey, T as attachFooterText, Tt as resolveAllowlistMatchSimple, U as shouldAckReaction, V as createTypingCallbacks, W as shouldAckReactionForWhatsApp, Y as DEFAULT_GROUP_HISTORY_LIMIT, Z as buildPendingHistoryContextFromMap, _t as listDevicePairing, a as normalizeAccountId$1, at as isWSLEnv, bt as registerPluginHttpRoute, ct as DEFAULT_WEBHOOK_MAX_BODY_BYTES, dt as isRequestBodyLimitError, et as recordPendingHistoryEntry, ft as readJsonBodyWithLimit, gt as approveDevicePairing, ht as createDedupeCache, i as listLineAccountIds, it as isWSL2Sync, j as resolveDiscordChannelAllowlist, k as detectBinary, kt as CHANNEL_MESSAGE_ACTION_NAMES, lt as RequestBodyLimitError, mt as requestBodyErrorToText, o as resolveDefaultLineAccountId, ot as isWSLSync, pt as readRequestBodyWithLimit, q as mergeAllowlist, s as resolveLineAccount, st as DEFAULT_WEBHOOK_BODY_TIMEOUT_MS, tt as recordPendingHistoryEntryIfEnabled, ut as installRequestBodyLimitGuard, vt as rejectDevicePairing, w as createReceiptCard, wt as formatAllowlistMatchMeta, x as hasMarkdownToConvert, xt as autoBindSpawnedDiscordSubagent, yt as extractToolSend, z as logInboundDrop } from "./reply-
|
|
3
|
+
import { $ as clearHistoryEntriesIfEnabled, A as resolveDiscordUserAllowlist, B as logTypingFailure, C as stripMarkdown, Ct as unbindThreadBindingsBySessionKey, D as resolveSlackUserAllowlist, Dt as BLUEBUBBLES_ACTION_NAMES, Et as BLUEBUBBLES_ACTIONS, F as stringEnum, G as resolveMentionGating, H as removeAckReactionAfterReply, I as recordInboundSession, J as summarizeMapping, K as resolveMentionGatingWithBypass, L as resolveControlCommandGate, M as collectDiscordAuditChannelIds, N as formatDocsLink, O as resolveSlackChannelAllowlist, Ot as BLUEBUBBLES_GROUP_ACTIONS, P as optionalStringEnum, Q as clearHistoryEntries, R as logAckFailure, S as processLineMessage, St as listThreadBindingsBySessionKey, T as attachFooterText, Tt as resolveAllowlistMatchSimple, U as shouldAckReaction, V as createTypingCallbacks, W as shouldAckReactionForWhatsApp, Y as DEFAULT_GROUP_HISTORY_LIMIT, Z as buildPendingHistoryContextFromMap, _t as listDevicePairing, a as normalizeAccountId$1, at as isWSLEnv, bt as registerPluginHttpRoute, ct as DEFAULT_WEBHOOK_MAX_BODY_BYTES, dt as isRequestBodyLimitError, et as recordPendingHistoryEntry, ft as readJsonBodyWithLimit, gt as approveDevicePairing, ht as createDedupeCache, i as listLineAccountIds, it as isWSL2Sync, j as resolveDiscordChannelAllowlist, k as detectBinary, kt as CHANNEL_MESSAGE_ACTION_NAMES, lt as RequestBodyLimitError, mt as requestBodyErrorToText, o as resolveDefaultLineAccountId, ot as isWSLSync, pt as readRequestBodyWithLimit, q as mergeAllowlist, s as resolveLineAccount, st as DEFAULT_WEBHOOK_BODY_TIMEOUT_MS, tt as recordPendingHistoryEntryIfEnabled, ut as installRequestBodyLimitGuard, vt as rejectDevicePairing, w as createReceiptCard, wt as formatAllowlistMatchMeta, x as hasMarkdownToConvert, xt as autoBindSpawnedDiscordSubagent, yt as extractToolSend, z as logInboundDrop } from "./reply-EEvLfWgt.js";
|
|
4
4
|
import "./paths-DR2yt_mP.js";
|
|
5
5
|
import "./github-copilot-token-D9X2phUj.js";
|
|
6
6
|
import { D as resolveSlackAccount, E as resolveDefaultSlackAccountId, F as resolveDiscordAccount, M as listDiscordAccountIds, O as resolveSlackReplyToMode, P as resolveDefaultDiscordAccountId, S as resolveTelegramAccount, T as listSlackAccountIds, _ as normalizeWhatsAppTarget, a as listDiscordDirectoryPeersFromConfig, b as listTelegramAccountIds, c as listTelegramDirectoryGroupsFromConfig, d as listWhatsAppDirectoryPeersFromConfig, f as looksLikeSlackTargetId, g as isWhatsAppGroupJid, i as listDiscordDirectoryGroupsFromConfig, l as listTelegramDirectoryPeersFromConfig, o as listSlackDirectoryGroupsFromConfig, p as normalizeSlackMessagingTarget, s as listSlackDirectoryPeersFromConfig, u as listWhatsAppDirectoryGroupsFromConfig, w as listEnabledSlackAccounts, x as resolveDefaultTelegramAccountId } from "./plugins-BbAvhC25.js";
|
|
@@ -47,7 +47,7 @@ import "./paths-A0xdf3yk.js";
|
|
|
47
47
|
import { h as onDiagnosticEvent, m as isDiagnosticsEnabled, p as emitDiagnosticEvent } from "./diagnostic-mFf4i4G9.js";
|
|
48
48
|
import { n as extractOriginalFilename } from "./store-Do3t33-c.js";
|
|
49
49
|
import { t as resolveWhatsAppOutboundTarget } from "./resolve-outbound-target-BkCUbYGV.js";
|
|
50
|
-
import { r as resolveWhatsAppHeartbeatRecipients } from "./channel-web-
|
|
50
|
+
import { r as resolveWhatsAppHeartbeatRecipients } from "./channel-web-xXTpy0N_.js";
|
|
51
51
|
import "./image-k_W1USVr.js";
|
|
52
52
|
import "./pi-model-discovery-LbcEa65a.js";
|
|
53
53
|
import "./api-key-rotation-Qy7QGV8_.js";
|
|
@@ -26834,7 +26834,7 @@ async function runWithImageModelFallback(params) {
|
|
|
26834
26834
|
function createDefaultDeps() {
|
|
26835
26835
|
return {
|
|
26836
26836
|
sendMessageWhatsApp: async (...args) => {
|
|
26837
|
-
const { sendMessageWhatsApp } = await import("./web-
|
|
26837
|
+
const { sendMessageWhatsApp } = await import("./web-COWtpMAH.js");
|
|
26838
26838
|
return await sendMessageWhatsApp(...args);
|
|
26839
26839
|
},
|
|
26840
26840
|
sendMessageTelegram: async (...args) => {
|
|
@@ -44457,7 +44457,7 @@ function loadWebLoginQr() {
|
|
|
44457
44457
|
return webLoginQrPromise;
|
|
44458
44458
|
}
|
|
44459
44459
|
function loadWebChannel() {
|
|
44460
|
-
webChannelPromise ??= import("./web-
|
|
44460
|
+
webChannelPromise ??= import("./web-COWtpMAH.js");
|
|
44461
44461
|
return webChannelPromise;
|
|
44462
44462
|
}
|
|
44463
44463
|
function loadWhatsAppActions() {
|
|
@@ -66219,6 +66219,152 @@ function subscribeEmbeddedPiSession(params) {
|
|
|
66219
66219
|
};
|
|
66220
66220
|
}
|
|
66221
66221
|
|
|
66222
|
+
//#endregion
|
|
66223
|
+
//#region src/agents/plan-mode.ts
|
|
66224
|
+
/**
|
|
66225
|
+
* Plan Mode — automatic complexity detection and structured planning.
|
|
66226
|
+
*
|
|
66227
|
+
* When a user message is complex (multi-step, multi-file, refactoring, etc.),
|
|
66228
|
+
* Symi auto-enters plan mode: read-only investigation → structured plan →
|
|
66229
|
+
* user approval → context-cleared execution.
|
|
66230
|
+
*/
|
|
66231
|
+
const PLAN_KEYWORDS = new Set([
|
|
66232
|
+
"investigate",
|
|
66233
|
+
"refactor",
|
|
66234
|
+
"migrate",
|
|
66235
|
+
"redesign",
|
|
66236
|
+
"set up",
|
|
66237
|
+
"setup",
|
|
66238
|
+
"build",
|
|
66239
|
+
"implement",
|
|
66240
|
+
"architect",
|
|
66241
|
+
"overhaul",
|
|
66242
|
+
"restructure",
|
|
66243
|
+
"rewrite"
|
|
66244
|
+
]);
|
|
66245
|
+
const ANALYSIS_KEYWORDS = new Set([
|
|
66246
|
+
"analyze",
|
|
66247
|
+
"analyse",
|
|
66248
|
+
"compare",
|
|
66249
|
+
"audit",
|
|
66250
|
+
"review",
|
|
66251
|
+
"evaluate",
|
|
66252
|
+
"assess"
|
|
66253
|
+
]);
|
|
66254
|
+
const SEQUENTIAL_MARKERS = [
|
|
66255
|
+
/\bthen\b/i,
|
|
66256
|
+
/\bafter that\b/i,
|
|
66257
|
+
/\bonce .+ is done\b/i,
|
|
66258
|
+
/\bnext,?\s/i,
|
|
66259
|
+
/\bfollowed by\b/i,
|
|
66260
|
+
/\bfinally\b/i
|
|
66261
|
+
];
|
|
66262
|
+
const NUMBERED_LIST_RE = /^\s*\d+[.)]\s/gm;
|
|
66263
|
+
const FILE_PATH_RE = /(?:\/[\w.-]+){2,}|[\w.-]+\.[a-z]{1,4}/g;
|
|
66264
|
+
/**
|
|
66265
|
+
* Score a user message for complexity.
|
|
66266
|
+
* Returns a numeric score; >= PLAN_MODE_THRESHOLD triggers plan mode.
|
|
66267
|
+
*/
|
|
66268
|
+
function scorePlanComplexity(prompt) {
|
|
66269
|
+
let score = 0;
|
|
66270
|
+
const lower = prompt.toLowerCase();
|
|
66271
|
+
if (prompt.length > 500) {
|
|
66272
|
+
if ([...PLAN_KEYWORDS, ...ANALYSIS_KEYWORDS].some((kw) => lower.includes(kw)) || FILE_PATH_RE.test(prompt)) score += 3;
|
|
66273
|
+
}
|
|
66274
|
+
const numberedItems = prompt.match(NUMBERED_LIST_RE);
|
|
66275
|
+
if (numberedItems && numberedItems.length >= 3) score += 2;
|
|
66276
|
+
for (const kw of PLAN_KEYWORDS) if (lower.includes(kw)) {
|
|
66277
|
+
score += 2;
|
|
66278
|
+
break;
|
|
66279
|
+
}
|
|
66280
|
+
for (const re of SEQUENTIAL_MARKERS) if (re.test(prompt)) {
|
|
66281
|
+
score += 2;
|
|
66282
|
+
break;
|
|
66283
|
+
}
|
|
66284
|
+
const filePaths = prompt.match(FILE_PATH_RE);
|
|
66285
|
+
if (filePaths && new Set(filePaths).size >= 2) score += 1;
|
|
66286
|
+
for (const kw of ANALYSIS_KEYWORDS) if (lower.includes(kw)) {
|
|
66287
|
+
score += 1;
|
|
66288
|
+
break;
|
|
66289
|
+
}
|
|
66290
|
+
return score;
|
|
66291
|
+
}
|
|
66292
|
+
const PLAN_MODE_THRESHOLD = 5;
|
|
66293
|
+
/**
|
|
66294
|
+
* Determine whether a prompt should trigger plan mode.
|
|
66295
|
+
*
|
|
66296
|
+
* Priority:
|
|
66297
|
+
* 1. /plan prefix → always
|
|
66298
|
+
* 2. /noplan prefix → never
|
|
66299
|
+
* 3. Subagent/cron sessions → never
|
|
66300
|
+
* 4. Heuristic scoring
|
|
66301
|
+
*/
|
|
66302
|
+
function shouldEnterPlanMode(prompt, opts = {}) {
|
|
66303
|
+
const trimmed = prompt.trim();
|
|
66304
|
+
if (/^\/plan\b/i.test(trimmed)) return {
|
|
66305
|
+
enter: true,
|
|
66306
|
+
reason: "explicit /plan directive",
|
|
66307
|
+
score: 99,
|
|
66308
|
+
stripped: trimmed.replace(/^\/plan\s*/i, "").trim()
|
|
66309
|
+
};
|
|
66310
|
+
if (/^\/noplan\b/i.test(trimmed)) return {
|
|
66311
|
+
enter: false,
|
|
66312
|
+
reason: "explicit /noplan directive",
|
|
66313
|
+
score: 0,
|
|
66314
|
+
stripped: trimmed.replace(/^\/noplan\s*/i, "").trim()
|
|
66315
|
+
};
|
|
66316
|
+
if (opts.isSubagent) return {
|
|
66317
|
+
enter: false,
|
|
66318
|
+
reason: "subagent session",
|
|
66319
|
+
score: 0
|
|
66320
|
+
};
|
|
66321
|
+
if (opts.isCron) return {
|
|
66322
|
+
enter: false,
|
|
66323
|
+
reason: "cron session",
|
|
66324
|
+
score: 0
|
|
66325
|
+
};
|
|
66326
|
+
const score = scorePlanComplexity(trimmed);
|
|
66327
|
+
if (score >= PLAN_MODE_THRESHOLD) return {
|
|
66328
|
+
enter: true,
|
|
66329
|
+
reason: `complexity score ${score} >= ${PLAN_MODE_THRESHOLD}`,
|
|
66330
|
+
score
|
|
66331
|
+
};
|
|
66332
|
+
return {
|
|
66333
|
+
enter: false,
|
|
66334
|
+
reason: `complexity score ${score} < ${PLAN_MODE_THRESHOLD}`,
|
|
66335
|
+
score
|
|
66336
|
+
};
|
|
66337
|
+
}
|
|
66338
|
+
const PLAN_MODE_SYSTEM_PROMPT = `<plan_mode>
|
|
66339
|
+
You have entered PLAN MODE because this task is complex.
|
|
66340
|
+
|
|
66341
|
+
RULES:
|
|
66342
|
+
- DO NOT write, edit, or create any files yet
|
|
66343
|
+
- DO NOT execute destructive commands (rm, mv, git reset, etc.)
|
|
66344
|
+
- DO read files, search code, check runtime state
|
|
66345
|
+
- DO use memory_search, web_search, exec (read-only commands like ls, cat, git status, git log)
|
|
66346
|
+
- Produce a detailed step-by-step implementation plan
|
|
66347
|
+
|
|
66348
|
+
OUTPUT FORMAT:
|
|
66349
|
+
1. **Summary** — what needs to be done and why
|
|
66350
|
+
2. **Investigation** — files read, code searched, state checked
|
|
66351
|
+
3. **Files to modify** — list every file that will be created, edited, or deleted
|
|
66352
|
+
4. **Implementation phases** — numbered steps with:
|
|
66353
|
+
- What changes in each phase
|
|
66354
|
+
- Which files are touched
|
|
66355
|
+
- Dependencies on prior phases
|
|
66356
|
+
5. **Risks & considerations** — things that could go wrong, edge cases, rollback strategy
|
|
66357
|
+
|
|
66358
|
+
After presenting the plan, ask the user to choose one of these options.
|
|
66359
|
+
Present these as inline buttons if the channel supports them:
|
|
66360
|
+
- **Proceed** — clear context and execute the plan
|
|
66361
|
+
- **Modify** — adjust the plan based on feedback
|
|
66362
|
+
- **Cancel** — abandon the plan
|
|
66363
|
+
|
|
66364
|
+
Use the message tool with buttons:
|
|
66365
|
+
[{"label": "✅ Proceed", "data": "/plan-proceed"}, {"label": "✏️ Modify", "data": "/plan-modify"}, {"label": "❌ Cancel", "data": "/plan-cancel"}]
|
|
66366
|
+
</plan_mode>`;
|
|
66367
|
+
|
|
66222
66368
|
//#endregion
|
|
66223
66369
|
//#region src/agents/pi-embedded-runner/abort.ts
|
|
66224
66370
|
/**
|
|
@@ -67472,6 +67618,17 @@ async function runEmbeddedAttempt(params) {
|
|
|
67472
67618
|
log$2.debug(`auto-recall: skipped (${String(recallErr)})`);
|
|
67473
67619
|
}
|
|
67474
67620
|
}
|
|
67621
|
+
{
|
|
67622
|
+
const planResult = shouldEnterPlanMode(effectivePrompt, {
|
|
67623
|
+
isSubagent: isSubagentSessionKey(params.sessionKey),
|
|
67624
|
+
isCron: isCronSessionKey(params.sessionKey)
|
|
67625
|
+
});
|
|
67626
|
+
if (planResult.enter) {
|
|
67627
|
+
if (planResult.stripped != null) effectivePrompt = planResult.stripped;
|
|
67628
|
+
effectivePrompt = `${PLAN_MODE_SYSTEM_PROMPT}\n\n${effectivePrompt}`;
|
|
67629
|
+
log$2.info(`plan-mode: activated (${planResult.reason}) for runId=${params.runId}`);
|
|
67630
|
+
} else if (planResult.stripped != null) effectivePrompt = planResult.stripped;
|
|
67631
|
+
}
|
|
67475
67632
|
log$2.debug(`embedded run prompt start: runId=${params.runId} sessionId=${params.sessionId}`);
|
|
67476
67633
|
cacheTrace?.recordStage("prompt:before", {
|
|
67477
67634
|
prompt: effectivePrompt,
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { a as WA_WEB_AUTH_DIR, g as webAuthExists, s as logWebSelfId, u as pickWebChannel } from "./accounts-D9zGZU5t.js";
|
|
2
|
-
import "./reply-
|
|
2
|
+
import "./reply-EEvLfWgt.js";
|
|
3
3
|
import "./paths-DR2yt_mP.js";
|
|
4
4
|
import "./github-copilot-token-D9X2phUj.js";
|
|
5
5
|
import "./plugins-BbAvhC25.js";
|
|
@@ -45,7 +45,7 @@ import "./pi-embedded-helpers-Cs2-_EpL.js";
|
|
|
45
45
|
import "./paths-A0xdf3yk.js";
|
|
46
46
|
import "./diagnostic-mFf4i4G9.js";
|
|
47
47
|
import "./store-Do3t33-c.js";
|
|
48
|
-
import { n as monitorWebInbox, t as monitorWebChannel } from "./channel-web-
|
|
48
|
+
import { n as monitorWebInbox, t as monitorWebChannel } from "./channel-web-xXTpy0N_.js";
|
|
49
49
|
import "./image-k_W1USVr.js";
|
|
50
50
|
import "./pi-model-discovery-LbcEa65a.js";
|
|
51
51
|
import "./api-key-rotation-Qy7QGV8_.js";
|
|
@@ -13,7 +13,7 @@ import "./client-LeVQns9-.js";
|
|
|
13
13
|
import "./call-BQiCOxB6.js";
|
|
14
14
|
import "./message-channel-C9dERklz.js";
|
|
15
15
|
import "./pairing-token-Byh6drgn.js";
|
|
16
|
-
import "./subagent-registry-
|
|
16
|
+
import "./subagent-registry-BR2Qhqjf.js";
|
|
17
17
|
import "./sessions-DJAxaVI7.js";
|
|
18
18
|
import "./tokens-Csntmwwn.js";
|
|
19
19
|
import "./plugins-CwSlLxM8.js";
|
|
@@ -102,7 +102,7 @@ import "./npm-registry-spec-DkaZNHAW.js";
|
|
|
102
102
|
import "./skill-scanner-BGWOBqLY.js";
|
|
103
103
|
import { i as resolvePluginInstallDir, n as installPluginFromNpmSpec, r as installPluginFromPath, t as recordPluginInstall } from "./installs-CgQpVncj.js";
|
|
104
104
|
import { t as renderTable } from "./table-D01d2GuY.js";
|
|
105
|
-
import { t as buildPluginStatusReport } from "./status-
|
|
105
|
+
import { t as buildPluginStatusReport } from "./status-BTF6_aBO.js";
|
|
106
106
|
import { n as updateNpmInstalledPlugins } from "./update-DEMKx4eC.js";
|
|
107
107
|
import os from "node:os";
|
|
108
108
|
import path from "node:path";
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { g as resolveStateDir } from "./paths-Cqn-zk3M.js";
|
|
2
2
|
import { B as theme, S as shortenHomePath, g as resolveConfigDir, x as shortenHomeInString, y as resolveUserPath } from "./utils-B-0b9bGM.js";
|
|
3
3
|
import "./thinking-EAliFiVK.js";
|
|
4
|
-
import "./reply-
|
|
4
|
+
import "./reply-B9o45s3E.js";
|
|
5
5
|
import "./registry-Cja8eT7G.js";
|
|
6
6
|
import { f as defaultRuntime } from "./subsystem-D9vIQve0.js";
|
|
7
7
|
import "./exec-CWkblSrI.js";
|
|
@@ -106,7 +106,7 @@ import "./npm-registry-spec-C2JDdSZS.js";
|
|
|
106
106
|
import "./skill-scanner-CLs8u6vQ.js";
|
|
107
107
|
import { i as resolvePluginInstallDir, n as installPluginFromNpmSpec, r as installPluginFromPath, t as recordPluginInstall } from "./installs-C1Cebk97.js";
|
|
108
108
|
import { t as renderTable } from "./table-BTgkRafz.js";
|
|
109
|
-
import { t as buildPluginStatusReport } from "./status-
|
|
109
|
+
import { t as buildPluginStatusReport } from "./status-BytVj4kU.js";
|
|
110
110
|
import { n as updateNpmInstalledPlugins } from "./update-rw7wJwHd.js";
|
|
111
111
|
import fs from "node:fs";
|
|
112
112
|
import os from "node:os";
|
|
@@ -14,7 +14,7 @@ import "./client-LeVQns9-.js";
|
|
|
14
14
|
import "./call-BQiCOxB6.js";
|
|
15
15
|
import "./message-channel-C9dERklz.js";
|
|
16
16
|
import "./pairing-token-Byh6drgn.js";
|
|
17
|
-
import "./subagent-registry-
|
|
17
|
+
import "./subagent-registry-BR2Qhqjf.js";
|
|
18
18
|
import "./sessions-DJAxaVI7.js";
|
|
19
19
|
import "./tokens-Csntmwwn.js";
|
|
20
20
|
import "./plugins-CwSlLxM8.js";
|
|
@@ -99,13 +99,13 @@ import "./prompt-style-DwCXob2h.js";
|
|
|
99
99
|
import "./pairing-labels-sIj1ZLt-.js";
|
|
100
100
|
import "./pi-tools.policy-T6Z5F-_n.js";
|
|
101
101
|
import "./catalog-DLQFKucJ.js";
|
|
102
|
-
import "./plugin-registry-
|
|
103
|
-
import { n as resolveCliChannelOptions } from "./channel-options-
|
|
104
|
-
import { t as getSubCliCommandsWithSubcommands } from "./register.subclis-
|
|
105
|
-
import { a as registerProgramCommands, r as getCoreCliCommandsWithSubcommands } from "./command-registry-
|
|
102
|
+
import "./plugin-registry-BAbkdLQ7.js";
|
|
103
|
+
import { n as resolveCliChannelOptions } from "./channel-options-D74Jofp4.js";
|
|
104
|
+
import { t as getSubCliCommandsWithSubcommands } from "./register.subclis-CqEj9vfW.js";
|
|
105
|
+
import { a as registerProgramCommands, r as getCoreCliCommandsWithSubcommands } from "./command-registry-Cde2LqTh.js";
|
|
106
106
|
import { r as setProgramContext } from "./program-context-CqzR_m-7.js";
|
|
107
107
|
import { t as forceFreePort } from "./ports-Dn122MUd.js";
|
|
108
|
-
import { n as formatCliBannerLine, r as hasEmittedCliBanner, t as emitCliBanner } from "./banner-
|
|
108
|
+
import { n as formatCliBannerLine, r as hasEmittedCliBanner, t as emitCliBanner } from "./banner-B-joBGLz.js";
|
|
109
109
|
import { Command } from "commander";
|
|
110
110
|
|
|
111
111
|
//#region src/cli/program/context.ts
|
|
@@ -213,7 +213,7 @@ function registerPreActionHooks(program, programVersion) {
|
|
|
213
213
|
commandPath
|
|
214
214
|
});
|
|
215
215
|
if (PLUGIN_REQUIRED_COMMANDS.has(commandPath[0])) {
|
|
216
|
-
const { ensurePluginRegistryLoaded } = await import("./plugin-registry-
|
|
216
|
+
const { ensurePluginRegistryLoaded } = await import("./plugin-registry-BAbkdLQ7.js").then((n) => n.n);
|
|
217
217
|
ensurePluginRegistryLoaded();
|
|
218
218
|
}
|
|
219
219
|
});
|