blun-king-cli 9.1.602 → 9.1.603
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/CHANGELOG.md +103 -97
- package/LIESMICH.txt +57 -57
- package/README.md +90 -90
- package/bin/agentspine-king-goal-inbox.mjs +127 -127
- package/bin/agentspine-king-goal-intake.mjs +106 -106
- package/bin/agentspine-king-host-runner.mjs +109 -109
- package/bin/agentspine-king-snapshot-policy.cjs +80 -80
- package/bin/agentspine-king-status-policy.mjs +226 -226
- package/bin/agentspine-king-worker-host.mjs +160 -160
- package/bin/core-bootstrap.js +77 -77
- package/bin/launcher-mode.js +93 -93
- package/bin/launcher-restart-policy.cjs +131 -131
- package/bin/launcher-runtime.js +491 -491
- package/bin/managed-node.js +186 -186
- package/bin/managed-plugin-selection.cjs +115 -115
- package/bin/native-module-repair.js +201 -201
- package/bin/node-runtime.js +34 -34
- package/bin/node-version.js +49 -49
- package/bin/plugin-bootstrap.js +162 -162
- package/bin/private-paths.js +1606 -1606
- package/bin/runtime-exit-ledger.cjs +144 -144
- package/bin/runtime-exit-ledger.d.cts +23 -23
- package/bin/standard-tools-bootstrap.js +272 -272
- package/bin/turn-thinking-policy.cjs +82 -82
- package/bin/update-copy.js +200 -200
- package/bin/update-lease.js +597 -597
- package/bin/update-notice.js +1568 -1568
- package/bin/verify-agent-behavior.cjs +122 -122
- package/bin/verify-agent-components.cjs +104 -104
- package/bin/verify-bundled-agent-sources.cjs +83 -83
- package/bin/windows-node-crash-dump.cjs +289 -289
- package/blun.mjs +115 -7
- package/codebase-index/codebase_index.py +470 -470
- package/dist-web/assets/{CodeBlockNode-CXnTLMNr.js → CodeBlockNode-TKKkJX8L.js} +1 -1
- package/dist-web/assets/{CodeBlockShell.vue_vue_type_style_index_0_lang-CCF8Ntnq.js → CodeBlockShell.vue_vue_type_style_index_0_lang-CUj2Ds5x.js} +1 -1
- package/dist-web/assets/DesignSystemView-DwK1aQMo.js +12 -0
- package/dist-web/assets/DesignSystemView-szjTj7ns.css +1 -0
- package/dist-web/assets/{Tooltip-CFQEzqC-.js → Tooltip-CTWv7WCU.js} +1 -1
- package/dist-web/assets/{abnfDiagram-N423BO3Z-Z1APZG5m.js → abnfDiagram-N423BO3Z-DA8V8Zjh.js} +1 -1
- package/dist-web/assets/{arc-C4VyWloT.js → arc-YtddKbdY.js} +1 -1
- package/dist-web/assets/{architectureDiagram-T3A2C74G-DpddbUcM.js → architectureDiagram-T3A2C74G-CGEiObmo.js} +1 -1
- package/dist-web/assets/{blockDiagram-VBNYF7ZC-BqccOSMr.js → blockDiagram-VBNYF7ZC-Bd5Vt50e.js} +1 -1
- package/dist-web/assets/{c4Diagram-5PPSVZJV-OHAcJrTy.js → c4Diagram-5PPSVZJV-D2ApPM54.js} +1 -1
- package/dist-web/assets/channel-BnluexuN.js +1 -0
- package/dist-web/assets/{chunk-2GRJ4B5K-DqJHs8Fw.js → chunk-2GRJ4B5K-BDcIEZSl.js} +1 -1
- package/dist-web/assets/{chunk-2Q5K7J3B-B1nCd91o.js → chunk-2Q5K7J3B-6aSabCX7.js} +1 -1
- package/dist-web/assets/{chunk-5RXB4S5H-neG70kZx.js → chunk-5RXB4S5H-BFRQvIJS.js} +1 -1
- package/dist-web/assets/{chunk-5VM5RSS4-l7biGqeH.js → chunk-5VM5RSS4-ChAa-DNY.js} +1 -1
- package/dist-web/assets/{chunk-6Q2QTUOP-BO-F11Gs.js → chunk-6Q2QTUOP-BIfrb2Jc.js} +1 -1
- package/dist-web/assets/{chunk-GF5L2VYU-BtC69fw0.js → chunk-GF5L2VYU-BR0gvtWI.js} +1 -1
- package/dist-web/assets/{chunk-JWPE2WC7-DIOubEqr.js → chunk-JWPE2WC7-BgXKsx5E.js} +1 -1
- package/dist-web/assets/{chunk-KBJHAD2P-DDUeH_Ba.js → chunk-KBJHAD2P-I8mrZhpz.js} +1 -1
- package/dist-web/assets/{chunk-RYQCIY6F-B9gFMVbS.js → chunk-RYQCIY6F-BMPaem92.js} +1 -1
- package/dist-web/assets/{chunk-XXDRQBXY-Bn1Xz6TQ.js → chunk-XXDRQBXY-COy0J-0j.js} +1 -1
- package/dist-web/assets/classDiagram-JCYQIIEL-BliFdSD9.js +1 -0
- package/dist-web/assets/classDiagram-v2-OCEON4UE-BliFdSD9.js +1 -0
- package/dist-web/assets/{cose-bilkent-JH36ORCC-DqigO3T4.js → cose-bilkent-JH36ORCC-MosTTRdo.js} +1 -1
- package/dist-web/assets/{cynefin-VYW2F7L2-rpD93tQ-.js → cynefin-VYW2F7L2-5tjPgrkP.js} +1 -1
- package/dist-web/assets/{cynefinDiagram-MW4NZA55-DbTqnkVJ.js → cynefinDiagram-MW4NZA55-CbDcdInR.js} +1 -1
- package/dist-web/assets/{dagre-VZM6K2ZE-DcM8aEVY.js → dagre-VZM6K2ZE-YaBom1ZH.js} +1 -1
- package/dist-web/assets/{diagram-7IWD3JNH-UymgsBNa.js → diagram-7IWD3JNH-Da4m-Hgz.js} +1 -1
- package/dist-web/assets/{diagram-B4RE2ZJO-BiYu5WPF.js → diagram-B4RE2ZJO-CAUUegxg.js} +1 -1
- package/dist-web/assets/{diagram-LBJQPF4R-BD3kkgOO.js → diagram-LBJQPF4R-o21mWKG4.js} +1 -1
- package/dist-web/assets/{diagram-Q27KOJAE-D1mYQ_cI.js → diagram-Q27KOJAE-BA3z3sXf.js} +1 -1
- package/dist-web/assets/{diagram-UB23O5K3-BtX8u6HG.js → diagram-UB23O5K3-CGRdSSDK.js} +1 -1
- package/dist-web/assets/{ebnfDiagram-BXEA7PRR-CBAnFkRF.js → ebnfDiagram-BXEA7PRR-Bw-iU9FP.js} +1 -1
- package/dist-web/assets/{erDiagram-JOGREHBK-3vKcWsxm.js → erDiagram-JOGREHBK-BwM1yiR0.js} +1 -1
- package/dist-web/assets/{flowDiagram-UKHOOZJN-D9wBbHm2.js → flowDiagram-UKHOOZJN-z05eOR1Q.js} +1 -1
- package/dist-web/assets/{ganttDiagram-PKOTCBZU-Cd_dViF-.js → ganttDiagram-PKOTCBZU-BMUubNTl.js} +1 -1
- package/dist-web/assets/{gitGraphDiagram-DS77QQ5N-BiEEtTo7.js → gitGraphDiagram-DS77QQ5N-Dccbi1wU.js} +1 -1
- package/dist-web/assets/{index-DdEakFJM.js → index-BBbC5LRF.js} +1 -1
- package/dist-web/assets/{index-BmKj7CB1.css → index-C9eDH3u-.css} +1 -1
- package/dist-web/assets/{index-Ba1OvLjf.js → index-D48p0M2S.js} +2 -2
- package/dist-web/assets/{index-CiPA8Kex.js → index-h0KEOmkU.js} +14 -14
- package/dist-web/assets/{index10-CNr4U-Nw.js → index10-Qbuw1N6u.js} +1 -1
- package/dist-web/assets/{index11-Dto_yZNz.js → index11-g8v025wN.js} +1 -1
- package/dist-web/assets/{index5-B2PldaO2.js → index5-BYNcV8BY.js} +1 -1
- package/dist-web/assets/{index6-CBdZmmyx.js → index6-BetANtnV.js} +1 -1
- package/dist-web/assets/{index7-Dz9oCsUF.js → index7-BcPbgCKN.js} +1 -1
- package/dist-web/assets/{index8-B6k25jtU.js → index8-B1lp-RvF.js} +2 -2
- package/dist-web/assets/{infoDiagram-6WML65LV-D4ph2sIH.js → infoDiagram-6WML65LV-BF_pbUnN.js} +1 -1
- package/dist-web/assets/{ishikawaDiagram-WSZJBQD7-DjKjbMm9.js → ishikawaDiagram-WSZJBQD7-Dedv4urS.js} +1 -1
- package/dist-web/assets/{journeyDiagram-NVQOT4AX-DttHDfPQ.js → journeyDiagram-NVQOT4AX-B1Ex3b6o.js} +1 -1
- package/dist-web/assets/{kanban-definition-27J2QSJJ-C5gB-W0d.js → kanban-definition-27J2QSJJ-BtCGliBH.js} +1 -1
- package/dist-web/assets/{linear-BRGe4-d6.js → linear-ByItc8Qr.js} +1 -1
- package/dist-web/assets/{mermaid.core-D-9Sx1No.js → mermaid.core-B1M2O7nN.js} +4 -4
- package/dist-web/assets/{mindmap-definition-FAOFIHXS-Cg_hoVIq.js → mindmap-definition-FAOFIHXS-D0UHKUyj.js} +1 -1
- package/dist-web/assets/{pegDiagram-VL7TDLO6-CSX9hitD.js → pegDiagram-VL7TDLO6-D7zYCVmG.js} +1 -1
- package/dist-web/assets/{pieDiagram-7S7Q4E2Y-0L0mxahZ.js → pieDiagram-7S7Q4E2Y-Bd0i9CHa.js} +1 -1
- package/dist-web/assets/{quadrantDiagram-CIZ2JOQS-U483z0er.js → quadrantDiagram-CIZ2JOQS-MG-Ug47d.js} +1 -1
- package/dist-web/assets/{railroadDiagram-AXF67PYL-D80a2_DJ.js → railroadDiagram-AXF67PYL-AZdl90Gj.js} +1 -1
- package/dist-web/assets/{requirementDiagram-LRYGKXZP-CeyHfq8t.js → requirementDiagram-LRYGKXZP-DjplF9kt.js} +1 -1
- package/dist-web/assets/{sankeyDiagram-W5VNT64P-CCISkkrR.js → sankeyDiagram-W5VNT64P-Bi9Zgfjs.js} +1 -1
- package/dist-web/assets/{sequenceDiagram-SI44F4Z6-jQfm2XS7.js → sequenceDiagram-SI44F4Z6-ChEpdCvb.js} +1 -1
- package/dist-web/assets/{sizeCapture-X5ZJPWSS-lRZsmCoS.js → sizeCapture-X5ZJPWSS-B5RFUdaa.js} +1 -1
- package/dist-web/assets/{stateDiagram-OKZ733FA-ClCgTdUm.js → stateDiagram-OKZ733FA-BkRblSKp.js} +1 -1
- package/dist-web/assets/stateDiagram-v2-UEYNNEHI-fVkQcACW.js +1 -0
- package/dist-web/assets/{swimlanes-SLNWSIFB-BCdOUN05.js → swimlanes-SLNWSIFB-DLXH6Zhc.js} +2 -2
- package/dist-web/assets/swimlanesDiagram-ULZ7WXOC-Bg-BiZJQ.js +8 -0
- package/dist-web/assets/{timeline-definition-Z64GVDOM-DpWutSKa.js → timeline-definition-Z64GVDOM-C_N88siO.js} +1 -1
- package/dist-web/assets/{vennDiagram-T6HMQDX7-DVC5JVsc.js → vennDiagram-T6HMQDX7-DMsnvDt0.js} +1 -1
- package/dist-web/assets/{vue.runtime.esm-bundler-BwwRtQwQ.js → vue.runtime.esm-bundler-B-3uIy85.js} +1 -1
- package/dist-web/assets/{wardleyDiagram-T6FBY63Y-BK2mrq7L.js → wardleyDiagram-T6FBY63Y-C9SJIPzq.js} +1 -1
- package/dist-web/assets/{xychartDiagram-ELKLHX3M-DUJu9F7-.js → xychartDiagram-ELKLHX3M-DZLWA6Go.js} +1 -1
- package/dist-web/index.html +32 -32
- package/dist-web/vis/index.html.gz +0 -0
- package/package.json +1 -1
- package/scripts/fix-node-pty-perms.js +53 -53
- package/standard-skills/blun-app-design-system/SKILL.md +30 -30
- package/standard-skills/blun-app-design-system/provenance.json +17 -17
- package/standard-skills/blun-app-design-system/references/tokens.md +48 -48
- package/standard-skills/blun-app-design-system/scripts/check-blun-design.mjs +49 -49
- package/telegram-plugin/blun.plugin.json +20 -20
- package/telegram-plugin/commands/access.md +37 -37
- package/worker-host.mjs +5 -5
- package/dist-web/assets/DesignSystemView-6HgAUEmC.css +0 -1
- package/dist-web/assets/DesignSystemView-BbMOu-XO.js +0 -12
- package/dist-web/assets/channel-B2VOQOI-.js +0 -1
- package/dist-web/assets/classDiagram-JCYQIIEL-BA1TjAxj.js +0 -1
- package/dist-web/assets/classDiagram-v2-OCEON4UE-BA1TjAxj.js +0 -1
- package/dist-web/assets/stateDiagram-v2-UEYNNEHI-fi_lrTAx.js +0 -1
- package/dist-web/assets/swimlanesDiagram-ULZ7WXOC-BUd_uYK3.js +0 -8
package/blun.mjs
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
// BLUN_BUILD_INPUT_SHA256:
|
|
2
|
+
// BLUN_BUILD_INPUT_SHA256:229c4eb365991e68b7e51ace7b55e5f8669cac5e6924bc54c9e1157b7a94f7e6
|
|
3
3
|
import { fileURLToPath as __cjsShimFileURLToPath } from 'node:url';
|
|
4
4
|
import { dirname as __cjsShimDirname } from 'node:path';
|
|
5
5
|
const __filename = __cjsShimFileURLToPath(import.meta.url);
|
|
@@ -28596,19 +28596,19 @@ var init_load = __esmMin((() => {
|
|
|
28596
28596
|
//#region ../../packages/agent-core/src/profile/default/agent.yaml?raw
|
|
28597
28597
|
var agent_default$1;
|
|
28598
28598
|
var init_agent$3 = __esmMin((() => {
|
|
28599
|
-
agent_default$1 = "name: agent\ndescription: Default BLUN King agent\n\nsystemPromptPath: ./system.md\npromptVars:\n roleAdditional: ''\n\ntools:\n - Read\n - ReadBatch\n - ProgrammaticTool\n - Write\n - Edit\n - Grep\n - Glob\n - Bash\n - TaskList\n - TaskOutput\n - TaskStop\n - TaskUpdate\n - TaskResume\n - CronCreate\n - CronList\n - CronRunList\n - CronRunOutput\n - CronDelete\n - ReadMediaFile\n - TodoList\n - CompactConversation\n - Skill\n - WebSearch\n - Agent\n - AgentSwarm\n - FetchURL\n - GenerateImage\n - GenerateVideo\n - GenerateSpeech\n - GetMedia\n - AskUserQuestion\n - MistakeRecord\n - CodebaseSearch\n - EnterPlanMode\n - ExitPlanMode\n - CreateGoal\n - GetGoal\n - SetGoalBudget\n - UpdateGoal\n - mcp__*\n\nsubagents:\n coder:\n description: General software engineering agent — the only subagent type with file-editing tools; use it for any delegated task that must modify code.\n explore:\n description: Fast codebase exploration with prompt-enforced read-only behavior.\n plan:\n description: Read-only implementation planning and architecture design.\n";
|
|
28599
|
+
agent_default$1 = "name: agent\r\ndescription: Default BLUN King agent\r\n\r\nsystemPromptPath: ./system.md\r\npromptVars:\r\n roleAdditional: ''\r\n\r\ntools:\r\n - Read\r\n - ReadBatch\r\n - ProgrammaticTool\r\n - Write\r\n - Edit\r\n - Grep\r\n - Glob\r\n - Bash\r\n - TaskList\r\n - TaskOutput\r\n - TaskStop\r\n - TaskUpdate\r\n - TaskResume\r\n - CronCreate\r\n - CronList\r\n - CronRunList\r\n - CronRunOutput\r\n - CronDelete\r\n - ReadMediaFile\r\n - TodoList\r\n - CompactConversation\r\n - Skill\r\n - WebSearch\r\n - Agent\r\n - AgentSwarm\r\n - FetchURL\r\n - GenerateImage\r\n - GenerateVideo\r\n - GenerateSpeech\r\n - GetMedia\r\n - AskUserQuestion\r\n - MistakeRecord\r\n - CodebaseSearch\r\n - EnterPlanMode\r\n - ExitPlanMode\r\n - CreateGoal\r\n - GetGoal\r\n - SetGoalBudget\r\n - UpdateGoal\r\n - mcp__*\r\n\r\nsubagents:\r\n coder:\r\n description: General software engineering agent — the only subagent type with file-editing tools; use it for any delegated task that must modify code.\r\n explore:\r\n description: Fast codebase exploration with prompt-enforced read-only behavior.\r\n plan:\r\n description: Read-only implementation planning and architecture design.\r\n";
|
|
28600
28600
|
}));
|
|
28601
28601
|
//#endregion
|
|
28602
28602
|
//#region ../../packages/agent-core/src/profile/default/coder.yaml?raw
|
|
28603
28603
|
var coder_default;
|
|
28604
28604
|
var init_coder = __esmMin((() => {
|
|
28605
|
-
coder_default = "extends: agent\nname: coder\npromptVars:\n roleAdditional: |\n You are now running as a subagent. All the `user` messages are sent by the main agent. The main agent cannot see your context, it can only see your last message when you finish the task. You must treat the parent agent as your caller. Do not directly ask the end user questions. If something is unclear, explain the ambiguity in your final summary to the parent agent.\n\n Your final message is the entire handoff — the parent sees nothing else from your run. Make it technically complete: what you changed and why, the path of every file you touched, how you verified the change (tests or commands run, with results), and anything left undone or worth follow-up. A final message of only a sentence or two is treated as too brief and sent back to you for expansion, costing an extra turn.\nwhenToUse: |\n Use this agent for non-trivial software engineering work that may require reading files, editing code, running commands, and returning a compact but technically complete summary to the parent agent.\ntools:\n - Bash\n - Read\n - ReadBatch\n - ProgrammaticTool\n - ReadMediaFile\n - Glob\n - Grep\n - Write\n - Edit\n - MistakeRecord\n - WebSearch\n - FetchURL\n - mcp__*\n";
|
|
28605
|
+
coder_default = "extends: agent\r\nname: coder\r\npromptVars:\r\n roleAdditional: |\r\n You are now running as a subagent. All the `user` messages are sent by the main agent. The main agent cannot see your context, it can only see your last message when you finish the task. You must treat the parent agent as your caller. Do not directly ask the end user questions. If something is unclear, explain the ambiguity in your final summary to the parent agent.\r\n\r\n Your final message is the entire handoff — the parent sees nothing else from your run. Make it technically complete: what you changed and why, the path of every file you touched, how you verified the change (tests or commands run, with results), and anything left undone or worth follow-up. A final message of only a sentence or two is treated as too brief and sent back to you for expansion, costing an extra turn.\r\nwhenToUse: |\r\n Use this agent for non-trivial software engineering work that may require reading files, editing code, running commands, and returning a compact but technically complete summary to the parent agent.\r\ntools:\r\n - Bash\r\n - Read\r\n - ReadBatch\r\n - ProgrammaticTool\r\n - ReadMediaFile\r\n - Glob\r\n - Grep\r\n - Write\r\n - Edit\r\n - MistakeRecord\r\n - WebSearch\r\n - FetchURL\r\n - mcp__*\r\n";
|
|
28606
28606
|
}));
|
|
28607
28607
|
//#endregion
|
|
28608
28608
|
//#region ../../packages/agent-core/src/profile/default/explore.yaml?raw
|
|
28609
28609
|
var explore_default;
|
|
28610
28610
|
var init_explore = __esmMin((() => {
|
|
28611
|
-
explore_default = "extends: agent\nname: explore\npromptVars:\n roleAdditional: |\n You are now running as a subagent. All the `user` messages are sent by the main agent. The main agent cannot see your context, it can only see your last message when you finish the task. You must treat the parent agent as your caller. Do not directly ask the end user questions. If something is unclear, explain the ambiguity in your final summary to the parent agent.\n\n You are a codebase exploration specialist. Your role is EXCLUSIVELY to search, read, and analyze existing code and resources. You do NOT have access to project file editing tools. MistakeRecord is the sole write-capable exception: it may record a concrete refutation in shared BLUN learning memory, never modify project files.\n\n Your strengths:\n - Rapidly finding files using glob patterns\n - Searching code and text with powerful regex patterns\n - Reading and analyzing file contents\n - Running read-only shell commands (git log, git diff, ls, find, etc.)\n\n Guidelines:\n - Use Glob for broad file pattern matching. Prefer patterns with a literal anchor (extension or subdirectory); pure wildcards like `*` or `**/*` are allowed but usually truncate at the match cap.\n - Use Grep for searching file contents with regex\n - Use Read when you know the specific file path\n - Use Bash ONLY for read-only operations (ls, git status, git log, git diff, find)\n - NEVER use Bash for any file creation or modification commands\n - Use WebSearch or FetchURL when a question needs external context (library documentation, error messages, upstream APIs); the local codebase remains your primary domain\n - Adapt your search depth based on the thoroughness level specified by the caller\n - Wherever possible, spawn multiple parallel tool calls for grepping and reading files to maximize speed\n\n If the prompt includes a <git-context> block, use it to orient yourself about the repository state before starting your investigation.\n\n You are meant to be a fast agent. Complete the search request efficiently and report your findings clearly in a structured format.\nwhenToUse: |\n Fast agent specialized for exploring codebases. Use this when you need to quickly find files by patterns (e.g. \"src/**/*.yaml\"), search code for keywords (e.g. \"database connection\"), or answer questions about the codebase (e.g. \"how does the auth module work?\"). When calling this agent, specify the desired thoroughness level: \"quick\" for basic searches, \"medium\" for moderate exploration, or \"thorough\" for comprehensive analysis across multiple locations and naming conventions. Use this agent for any read-only exploration that will clearly require more than 3 search queries. Prefer launching multiple explore agents concurrently when investigating independent questions.\ntools:\n - Bash\n - Read\n - ReadBatch\n - ProgrammaticTool\n - ReadMediaFile\n - Glob\n - Grep\n - MistakeRecord\n - WebSearch\n - FetchURL\n";
|
|
28611
|
+
explore_default = "extends: agent\r\nname: explore\r\npromptVars:\r\n roleAdditional: |\r\n You are now running as a subagent. All the `user` messages are sent by the main agent. The main agent cannot see your context, it can only see your last message when you finish the task. You must treat the parent agent as your caller. Do not directly ask the end user questions. If something is unclear, explain the ambiguity in your final summary to the parent agent.\r\n\r\n You are a codebase exploration specialist. Your role is EXCLUSIVELY to search, read, and analyze existing code and resources. You do NOT have access to project file editing tools. MistakeRecord is the sole write-capable exception: it may record a concrete refutation in shared BLUN learning memory, never modify project files.\r\n\r\n Your strengths:\r\n - Rapidly finding files using glob patterns\r\n - Searching code and text with powerful regex patterns\r\n - Reading and analyzing file contents\r\n - Running read-only shell commands (git log, git diff, ls, find, etc.)\r\n\r\n Guidelines:\r\n - Use Glob for broad file pattern matching. Prefer patterns with a literal anchor (extension or subdirectory); pure wildcards like `*` or `**/*` are allowed but usually truncate at the match cap.\r\n - Use Grep for searching file contents with regex\r\n - Use Read when you know the specific file path\r\n - Use Bash ONLY for read-only operations (ls, git status, git log, git diff, find)\r\n - NEVER use Bash for any file creation or modification commands\r\n - Use WebSearch or FetchURL when a question needs external context (library documentation, error messages, upstream APIs); the local codebase remains your primary domain\r\n - Adapt your search depth based on the thoroughness level specified by the caller\r\n - Wherever possible, spawn multiple parallel tool calls for grepping and reading files to maximize speed\r\n\r\n If the prompt includes a <git-context> block, use it to orient yourself about the repository state before starting your investigation.\r\n\r\n You are meant to be a fast agent. Complete the search request efficiently and report your findings clearly in a structured format.\r\nwhenToUse: |\r\n Fast agent specialized for exploring codebases. Use this when you need to quickly find files by patterns (e.g. \"src/**/*.yaml\"), search code for keywords (e.g. \"database connection\"), or answer questions about the codebase (e.g. \"how does the auth module work?\"). When calling this agent, specify the desired thoroughness level: \"quick\" for basic searches, \"medium\" for moderate exploration, or \"thorough\" for comprehensive analysis across multiple locations and naming conventions. Use this agent for any read-only exploration that will clearly require more than 3 search queries. Prefer launching multiple explore agents concurrently when investigating independent questions.\r\ntools:\r\n - Bash\r\n - Read\r\n - ReadBatch\r\n - ProgrammaticTool\r\n - ReadMediaFile\r\n - Glob\r\n - Grep\r\n - MistakeRecord\r\n - WebSearch\r\n - FetchURL\r\n";
|
|
28612
28612
|
}));
|
|
28613
28613
|
//#endregion
|
|
28614
28614
|
//#region ../../packages/agent-core/src/profile/default/init.md?raw
|
|
@@ -28620,7 +28620,7 @@ var init_init = __esmMin((() => {
|
|
|
28620
28620
|
//#region ../../packages/agent-core/src/profile/default/plan.yaml?raw
|
|
28621
28621
|
var plan_default;
|
|
28622
28622
|
var init_plan$1 = __esmMin((() => {
|
|
28623
|
-
plan_default = "extends: agent\nname: plan\npromptVars:\n roleAdditional: |\n You are now running as a subagent. All the `user` messages are sent by the main agent. The main agent cannot see your context, it can only see your last message when you finish the task. You must treat the parent agent as your caller. Do not directly ask the end user questions. If something is unclear, explain the ambiguity in your final summary to the parent agent.\n\n Before designing your implementation plan, consider whether you fully understand the codebase areas relevant to the task. If not, recommend the parent agent to use the explore agent (subagent_type=\"explore\") to investigate key questions first. In your response, clearly state:\n 1. What you already know from the information provided\n 2. What questions remain unanswered that would benefit from explore agent investigation\n 3. Your implementation plan (either preliminary if questions remain, or final if sufficient context exists)\n\n You are a read-only planning agent: you can read and search files (Read, Glob, Grep, ReadMediaFile) and consult the web (WebSearch, FetchURL), but you have no shell and no project file-editing tools. MistakeRecord is the sole write-capable exception: it may record a concrete refutation in shared BLUN learning memory, never modify project files. Where the general instructions tell you to make changes with tools, that does not apply to you — do not attempt to run commands or modify project files. Your deliverable is the plan itself, returned as your final message.\nwhenToUse: |\n Use this agent when the parent agent needs a step-by-step implementation plan, key file identification, and architectural trade-off analysis before code changes are made.\ntools:\n - Read\n - ReadBatch\n - ProgrammaticTool\n - ReadMediaFile\n - Glob\n - Grep\n - MistakeRecord\n - WebSearch\n - FetchURL\n";
|
|
28623
|
+
plan_default = "extends: agent\r\nname: plan\r\npromptVars:\r\n roleAdditional: |\r\n You are now running as a subagent. All the `user` messages are sent by the main agent. The main agent cannot see your context, it can only see your last message when you finish the task. You must treat the parent agent as your caller. Do not directly ask the end user questions. If something is unclear, explain the ambiguity in your final summary to the parent agent.\r\n\r\n Before designing your implementation plan, consider whether you fully understand the codebase areas relevant to the task. If not, recommend the parent agent to use the explore agent (subagent_type=\"explore\") to investigate key questions first. In your response, clearly state:\r\n 1. What you already know from the information provided\r\n 2. What questions remain unanswered that would benefit from explore agent investigation\r\n 3. Your implementation plan (either preliminary if questions remain, or final if sufficient context exists)\r\n\r\n You are a read-only planning agent: you can read and search files (Read, Glob, Grep, ReadMediaFile) and consult the web (WebSearch, FetchURL), but you have no shell and no project file-editing tools. MistakeRecord is the sole write-capable exception: it may record a concrete refutation in shared BLUN learning memory, never modify project files. Where the general instructions tell you to make changes with tools, that does not apply to you — do not attempt to run commands or modify project files. Your deliverable is the plan itself, returned as your final message.\r\nwhenToUse: |\r\n Use this agent when the parent agent needs a step-by-step implementation plan, key file identification, and architectural trade-off analysis before code changes are made.\r\ntools:\r\n - Read\r\n - ReadBatch\r\n - ProgrammaticTool\r\n - ReadMediaFile\r\n - Glob\r\n - Grep\r\n - MistakeRecord\r\n - WebSearch\r\n - FetchURL\r\n";
|
|
28624
28624
|
}));
|
|
28625
28625
|
//#endregion
|
|
28626
28626
|
//#region ../../packages/agent-core/src/profile/default/system.md?raw
|
|
@@ -538229,6 +538229,100 @@ registerUiCatalogFragment({
|
|
|
538229
538229
|
}
|
|
538230
538230
|
});
|
|
538231
538231
|
//#endregion
|
|
538232
|
+
//#region src/tui/startup/native-folder-picker.ts
|
|
538233
|
+
const WINDOWS_PICKER = String.raw`
|
|
538234
|
+
$ErrorActionPreference = 'Stop'
|
|
538235
|
+
[Console]::OutputEncoding = New-Object System.Text.UTF8Encoding($false)
|
|
538236
|
+
Add-Type -AssemblyName System.Windows.Forms
|
|
538237
|
+
if (-not [Environment]::UserInteractive) { throw 'No interactive desktop' }
|
|
538238
|
+
[System.Windows.Forms.Application]::EnableVisualStyles()
|
|
538239
|
+
$dialog = New-Object System.Windows.Forms.FolderBrowserDialog
|
|
538240
|
+
$owner = New-Object System.Windows.Forms.Form
|
|
538241
|
+
try {
|
|
538242
|
+
$dialog.Description = $env:BLUN_PICKER_TITLE
|
|
538243
|
+
$dialog.ShowNewFolderButton = $true
|
|
538244
|
+
$dialog.RootFolder = [Environment+SpecialFolder]::Desktop
|
|
538245
|
+
if ([System.IO.Directory]::Exists($env:BLUN_PICKER_INITIAL_PATH)) {
|
|
538246
|
+
$dialog.SelectedPath = $env:BLUN_PICKER_INITIAL_PATH
|
|
538247
|
+
}
|
|
538248
|
+
$owner.ShowInTaskbar = $false
|
|
538249
|
+
$owner.TopMost = $true
|
|
538250
|
+
$owner.Opacity = 0
|
|
538251
|
+
$owner.Width = 1
|
|
538252
|
+
$owner.Height = 1
|
|
538253
|
+
$owner.Show()
|
|
538254
|
+
$owner.Activate()
|
|
538255
|
+
if ($dialog.ShowDialog($owner) -eq [System.Windows.Forms.DialogResult]::OK) {
|
|
538256
|
+
@{ kind = 'selected'; path = $dialog.SelectedPath } | ConvertTo-Json -Compress
|
|
538257
|
+
} else {
|
|
538258
|
+
@{ kind = 'cancelled' } | ConvertTo-Json -Compress
|
|
538259
|
+
}
|
|
538260
|
+
} finally {
|
|
538261
|
+
$dialog.Dispose()
|
|
538262
|
+
$owner.Dispose()
|
|
538263
|
+
}
|
|
538264
|
+
`;
|
|
538265
|
+
const runPicker = (file, args, env) => new Promise((resolve, reject) => {
|
|
538266
|
+
const child = execFile(file, args, {
|
|
538267
|
+
env,
|
|
538268
|
+
windowsHide: true,
|
|
538269
|
+
timeout: 10 * 6e4,
|
|
538270
|
+
maxBuffer: 64 * 1024,
|
|
538271
|
+
encoding: "utf8"
|
|
538272
|
+
}, (error, stdout) => {
|
|
538273
|
+
process.removeListener("exit", closePicker);
|
|
538274
|
+
if (error) reject(error);
|
|
538275
|
+
else resolve(stdout);
|
|
538276
|
+
});
|
|
538277
|
+
const closePicker = () => {
|
|
538278
|
+
child.kill();
|
|
538279
|
+
};
|
|
538280
|
+
process.once("exit", closePicker);
|
|
538281
|
+
});
|
|
538282
|
+
function safeStartupWorkspacePath(value, options = {}) {
|
|
538283
|
+
if ((options.platform ?? process.platform) !== "win32") return value;
|
|
538284
|
+
const canonical = (path) => win32.resolve(path.replace(/^\\\\\?\\/, "")).toLowerCase();
|
|
538285
|
+
const root = canonical(options.windowsRoot ?? process.env["SystemRoot"] ?? "C:\\Windows");
|
|
538286
|
+
const isSystem = (path) => {
|
|
538287
|
+
const normalized = canonical(path);
|
|
538288
|
+
return normalized === root || normalized.startsWith(root + "\\");
|
|
538289
|
+
};
|
|
538290
|
+
if (!isSystem(value)) return value;
|
|
538291
|
+
const home = options.home ?? homedir();
|
|
538292
|
+
return isSystem(home) ? win32.parse(home).root : home;
|
|
538293
|
+
}
|
|
538294
|
+
async function pickNativeFolder(initialPath, title, options = {}) {
|
|
538295
|
+
const platform = options.platform ?? process.platform;
|
|
538296
|
+
const env = options.env ?? process.env;
|
|
538297
|
+
if (platform !== "win32" || env["SSH_CONNECTION"] || env["SSH_TTY"]) return { kind: "unavailable" };
|
|
538298
|
+
const file = win32.join(env["SystemRoot"] ?? "C:\\Windows", "System32", "WindowsPowerShell", "v1.0", "powershell.exe");
|
|
538299
|
+
try {
|
|
538300
|
+
const output = await (options.run ?? runPicker)(file, [
|
|
538301
|
+
"-NoLogo",
|
|
538302
|
+
"-NoProfile",
|
|
538303
|
+
"-NonInteractive",
|
|
538304
|
+
"-STA",
|
|
538305
|
+
"-EncodedCommand",
|
|
538306
|
+
Buffer.from(WINDOWS_PICKER, "utf16le").toString("base64")
|
|
538307
|
+
], {
|
|
538308
|
+
...env,
|
|
538309
|
+
BLUN_PICKER_INITIAL_PATH: safeStartupWorkspacePath(initialPath, {
|
|
538310
|
+
platform,
|
|
538311
|
+
windowsRoot: env["SystemRoot"]
|
|
538312
|
+
}),
|
|
538313
|
+
BLUN_PICKER_TITLE: title
|
|
538314
|
+
});
|
|
538315
|
+
const result = JSON.parse(output.trim().replace(/^\uFEFF/, ""));
|
|
538316
|
+
if (typeof result !== "object" || result === null || !("kind" in result)) return { kind: "unavailable" };
|
|
538317
|
+
if (result.kind === "cancelled") return { kind: "cancelled" };
|
|
538318
|
+
if (result.kind === "selected" && "path" in result && typeof result.path === "string" && win32.isAbsolute(result.path) && !result.path.includes("\0")) return {
|
|
538319
|
+
kind: "selected",
|
|
538320
|
+
path: result.path
|
|
538321
|
+
};
|
|
538322
|
+
} catch {}
|
|
538323
|
+
return { kind: "unavailable" };
|
|
538324
|
+
}
|
|
538325
|
+
//#endregion
|
|
538232
538326
|
//#region src/tui/startup/workspace-prompts.ts
|
|
538233
538327
|
function startupWorkspacePromptCopy() {
|
|
538234
538328
|
return {
|
|
@@ -538262,6 +538356,10 @@ function promptStartupWorkspaceChoice(host, currentPath, copy) {
|
|
|
538262
538356
|
value: "change",
|
|
538263
538357
|
label: copy.chooseOther
|
|
538264
538358
|
},
|
|
538359
|
+
{
|
|
538360
|
+
value: "enter",
|
|
538361
|
+
label: copy.input.title
|
|
538362
|
+
},
|
|
538265
538363
|
{
|
|
538266
538364
|
value: "exit",
|
|
538267
538365
|
label: copy.exit,
|
|
@@ -538299,10 +538397,19 @@ function promptStartupWorkspacePath(host, initialPath, copy) {
|
|
|
538299
538397
|
}));
|
|
538300
538398
|
});
|
|
538301
538399
|
}
|
|
538400
|
+
async function promptStartupWorkspaceFolder(host, initialPath, copy, picker = pickNativeFolder) {
|
|
538401
|
+
const result = await picker(initialPath, copy.choiceTitle);
|
|
538402
|
+
if (result.kind === "selected") return {
|
|
538403
|
+
kind: "entered",
|
|
538404
|
+
path: result.path
|
|
538405
|
+
};
|
|
538406
|
+
if (result.kind === "cancelled") return { kind: "back" };
|
|
538407
|
+
return promptStartupWorkspacePath(host, initialPath, copy);
|
|
538408
|
+
}
|
|
538302
538409
|
//#endregion
|
|
538303
538410
|
//#region src/tui/startup/workspace-selection.ts
|
|
538304
538411
|
async function selectStartupWorkspace(initialWorkDir, persistedWorkDir, port) {
|
|
538305
|
-
let currentPath = persistedWorkDir ?? initialWorkDir;
|
|
538412
|
+
let currentPath = safeStartupWorkspacePath(persistedWorkDir ?? initialWorkDir);
|
|
538306
538413
|
while (true) {
|
|
538307
538414
|
const choice = await port.choose(currentPath);
|
|
538308
538415
|
if (choice === "exit") return { kind: "cancelled" };
|
|
@@ -538316,7 +538423,7 @@ async function selectStartupWorkspace(initialWorkDir, persistedWorkDir, port) {
|
|
|
538316
538423
|
}
|
|
538317
538424
|
let inputPath = currentPath;
|
|
538318
538425
|
while (true) {
|
|
538319
|
-
const entered = await port.enter(inputPath);
|
|
538426
|
+
const entered = await (choice === "change" ? port.browse ?? port.enter : port.enter)(inputPath);
|
|
538320
538427
|
if (entered.kind === "back") break;
|
|
538321
538428
|
if (entered.kind === "exit") return { kind: "cancelled" };
|
|
538322
538429
|
const validated = await port.validate(entered.path);
|
|
@@ -539193,6 +539300,7 @@ var BlunTUI = class {
|
|
|
539193
539300
|
const result = await selectStartupWorkspace(this.state.appState.workDir, persisted?.lastWorkDir ?? null, {
|
|
539194
539301
|
choose: (currentPath) => promptStartupWorkspaceChoice(this, currentPath, copy),
|
|
539195
539302
|
enter: (currentPath) => promptStartupWorkspacePath(this, currentPath, copy),
|
|
539303
|
+
browse: (currentPath) => promptStartupWorkspaceFolder(this, currentPath, copy),
|
|
539196
539304
|
validate: validateWorkspacePath,
|
|
539197
539305
|
persist: writeStartupWorkspaceState,
|
|
539198
539306
|
invalid: (path) => {
|