@code-yeongyu/senpi 2026.9.22-4 → 2026.9.23
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 +18 -0
- package/dist/bundle/chunks/{anthropic-messages-63LWFUHY.js → anthropic-messages-JFOD5FW2.js} +1 -1
- package/dist/bundle/chunks/{app-server-command-6WIEAKVT.js → app-server-command-DIEKGUJQ.js} +1 -1
- package/dist/bundle/chunks/{azure-openai-responses-SBCCU4KI.js → azure-openai-responses-PSESFNHN.js} +1 -1
- package/dist/bundle/chunks/{chunk-6MIPLTQG.js → chunk-3XHWW7SQ.js} +1 -1
- package/dist/bundle/chunks/{chunk-3KLWJIXM.js → chunk-7PANH3NB.js} +1 -1
- package/dist/bundle/chunks/{chunk-EKNLGI4C.js → chunk-BIB6IUXJ.js} +2 -2
- package/dist/bundle/chunks/{chunk-WSQMYWLV.js → chunk-DUV3UFKX.js} +1 -1
- package/dist/bundle/chunks/{chunk-LUR5SFCU.js → chunk-ECZMHJYM.js} +1 -1
- package/dist/bundle/chunks/{chunk-MECK7NHB.js → chunk-F5NIQHSC.js} +1 -1
- package/dist/bundle/chunks/{chunk-VEOZBZ4I.js → chunk-GXUSEWZO.js} +1 -1
- package/dist/bundle/chunks/{chunk-TAFYWUE4.js → chunk-HKE42SWX.js} +1 -1
- package/dist/bundle/chunks/{chunk-DY6FUAWH.js → chunk-IVYZMSFY.js} +1 -1
- package/dist/bundle/chunks/{chunk-6KXIFAMC.js → chunk-KLDLZHHS.js} +1 -1
- package/dist/bundle/chunks/{chunk-DTD3QN3S.js → chunk-LC6SZTVE.js} +1 -1
- package/dist/bundle/chunks/{chunk-IFSKKQGG.js → chunk-MQDPIOTW.js} +1 -1
- package/dist/bundle/chunks/{chunk-3UO3QYMZ.js → chunk-NNHFMZD5.js} +1 -1
- package/dist/bundle/chunks/{chunk-GY5DVR65.js → chunk-OXQOOPP5.js} +1 -1
- package/dist/bundle/chunks/{chunk-V5YRHJCK.js → chunk-PZ6NDD4A.js} +8 -8
- package/dist/bundle/chunks/chunk-QSPAFID6.js +8 -0
- package/dist/bundle/chunks/{chunk-M4NQKQUK.js → chunk-RG3UEFSF.js} +1 -1
- package/dist/bundle/chunks/{chunk-AJ722VIQ.js → chunk-TQDWU3ZQ.js} +1 -1
- package/dist/bundle/chunks/chunk-UYCGOK6M.js +2 -0
- package/dist/bundle/chunks/{chunk-YBFYJ7DR.js → chunk-V6YMSVQ5.js} +1 -1
- package/dist/bundle/chunks/{chunk-TU37KLCN.js → chunk-VKBY4F76.js} +1 -1
- package/dist/bundle/chunks/{chunk-KW4WB6OI.js → chunk-ZHNGR3W4.js} +1 -1
- package/dist/bundle/chunks/{cli-main-KZ74SY4A.js → cli-main-X5HOUB4M.js} +1 -1
- package/dist/bundle/chunks/{google-generative-ai-UJIX64UU.js → google-generative-ai-YJHSZAY5.js} +1 -1
- package/dist/bundle/chunks/{google-vertex-KJEY5SZY.js → google-vertex-JTFWEDNJ.js} +1 -1
- package/dist/bundle/chunks/{help-fast-path-Q3O3LFCQ.js → help-fast-path-COSC7JEE.js} +1 -1
- package/dist/bundle/chunks/{host-command-FVQ6ZXXS.js → host-command-4RK64Y45.js} +1 -1
- package/dist/bundle/chunks/{host-lifecycle-L6QPISDM.js → host-lifecycle-RHLKTQSU.js} +1 -1
- package/dist/bundle/chunks/{interactive-host-runtime-A23KBZ3L.js → interactive-host-runtime-TZXRVY6P.js} +1 -1
- package/dist/bundle/chunks/{interactive-mode-BNN7T3MV.js → interactive-mode-FZGP2T4E.js} +1 -1
- package/dist/bundle/chunks/{list-tips-2QG7ASHS.js → list-tips-VGOIMT6W.js} +1 -1
- package/dist/bundle/chunks/{mistral-conversations-PNYVN6YU.js → mistral-conversations-VJPMPQ5T.js} +1 -1
- package/dist/bundle/chunks/{multi-session-host-J3QX4EVJ.js → multi-session-host-NZQS5ZDX.js} +1 -1
- package/dist/bundle/chunks/{openai-codex-responses-TBF5EMKG.js → openai-codex-responses-IQ35QACK.js} +1 -1
- package/dist/bundle/chunks/{openai-completions-HPMSPXJ7.js → openai-completions-74OLE55U.js} +1 -1
- package/dist/bundle/chunks/{openai-responses-3XYO7ROE.js → openai-responses-7IGZSW33.js} +1 -1
- package/dist/bundle/chunks/{package-manager-cli-P54ETMPI.js → package-manager-cli-5QL2YQDU.js} +1 -1
- package/dist/bundle/chunks/{rotation-stream-6UDZL4PB.js → rotation-stream-B7EDLTS2.js} +1 -1
- package/dist/bundle/chunks/{rpc-mode-UJJZ6RDY.js → rpc-mode-QJIVT7Z7.js} +1 -1
- package/dist/bundle/chunks/{session-picker-EKW5MGZI.js → session-picker-TGIRTV7K.js} +1 -1
- package/dist/bundle/chunks/session-worker.js +7 -7
- package/dist/bundle/cli.js +1 -1
- package/dist/bundle/index.js +1 -1
- package/dist/bundle/rpc-entry.js +1 -1
- package/dist/core/extensions/builtin/prompt-preset/presets.d.ts.map +1 -1
- package/dist/core/extensions/builtin/prompt-preset/presets.js +14 -11
- package/dist/core/extensions/builtin/prompt-preset/presets.js.map +1 -1
- package/dist/core/extensions/builtin/recommended-models/index.d.ts +1 -1
- package/dist/core/extensions/builtin/recommended-models/index.d.ts.map +1 -1
- package/dist/core/extensions/builtin/recommended-models/index.js +1 -0
- package/dist/core/extensions/builtin/recommended-models/index.js.map +1 -1
- package/dist/core/high-reasoning-warning.js +2 -2
- package/dist/core/high-reasoning-warning.js.map +1 -1
- package/dist/core/model-resolver.js +2 -2
- package/dist/core/model-resolver.js.map +1 -1
- package/dist/modes/interactive/tips/catalog/ethos-tips.js +1 -1
- package/dist/modes/interactive/tips/catalog/ethos-tips.js.map +1 -1
- package/node_modules/@code-yeongyu/senpi-codemode/CHANGELOG.md +12 -0
- package/node_modules/@code-yeongyu/senpi-codemode/package.json +4 -4
- package/node_modules/@earendil-works/pi-agent-core/package.json +3 -3
- package/node_modules/@earendil-works/pi-ai/dist/models.d.ts.map +1 -1
- package/node_modules/@earendil-works/pi-ai/dist/models.js +4 -2
- package/node_modules/@earendil-works/pi-ai/dist/models.js.map +1 -1
- package/node_modules/@earendil-works/pi-ai/dist/providers/data/.manifest.json +1 -1
- package/node_modules/@earendil-works/pi-ai/dist/providers/data/azure-openai-responses.json +1 -1
- package/node_modules/@earendil-works/pi-ai/dist/providers/data/chatgpt-subscription.json +1 -1
- package/node_modules/@earendil-works/pi-ai/dist/providers/data/openai.json +1 -1
- package/node_modules/@earendil-works/pi-ai/dist/providers/data/opencode.json +1 -1
- package/node_modules/@earendil-works/pi-ai/dist/providers/data/openrouter.json +1 -1
- package/node_modules/@earendil-works/pi-ai/dist/providers/data/venice.json +1 -1
- package/node_modules/@earendil-works/pi-ai/dist/providers/data/vercel-ai-gateway.json +1 -1
- package/node_modules/@earendil-works/pi-ai/package.json +2 -2
- package/node_modules/@earendil-works/pi-pty/package.json +1 -1
- package/node_modules/@earendil-works/pi-telemetry/package.json +1 -1
- package/node_modules/@earendil-works/pi-tui/package.json +1 -1
- package/package.json +7 -7
- package/dist/bundle/chunks/chunk-47JGOPLB.js +0 -2
- package/dist/bundle/chunks/chunk-AW5ODHXB.js +0 -8
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@earendil-works/pi-ai",
|
|
3
|
-
"version": "2026.9.
|
|
3
|
+
"version": "2026.9.23",
|
|
4
4
|
"description": "Unified LLM API with automatic model discovery and provider configuration",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/index.js",
|
|
@@ -84,7 +84,7 @@
|
|
|
84
84
|
"dependencies": {
|
|
85
85
|
"@anthropic-ai/sdk": "0.127.0",
|
|
86
86
|
"@aws-sdk/client-bedrock-runtime": "3.1136.0",
|
|
87
|
-
"@earendil-works/pi-telemetry": "npm:@code-yeongyu/senpi-telemetry@2026.9.
|
|
87
|
+
"@earendil-works/pi-telemetry": "npm:@code-yeongyu/senpi-telemetry@2026.9.23",
|
|
88
88
|
"@google/genai": "2.23.0",
|
|
89
89
|
"@smithy/node-http-handler": "4.12.1",
|
|
90
90
|
"http-proxy-agent": "9.1.0",
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@code-yeongyu/senpi",
|
|
3
|
-
"version": "2026.9.
|
|
3
|
+
"version": "2026.9.23",
|
|
4
4
|
"description": "Coding agent CLI with read, bash, edit, write tools and session management",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"piConfig": {
|
|
@@ -56,9 +56,9 @@
|
|
|
56
56
|
},
|
|
57
57
|
"dependencies": {
|
|
58
58
|
"@earendil-works/chord": "0.85.1",
|
|
59
|
-
"@earendil-works/pi-agent-core": "npm:@code-yeongyu/senpi-agent-core@2026.9.
|
|
60
|
-
"@earendil-works/pi-ai": "npm:@code-yeongyu/senpi-ai@2026.9.
|
|
61
|
-
"@earendil-works/pi-tui": "npm:@code-yeongyu/senpi-tui@2026.9.
|
|
59
|
+
"@earendil-works/pi-agent-core": "npm:@code-yeongyu/senpi-agent-core@2026.9.23",
|
|
60
|
+
"@earendil-works/pi-ai": "npm:@code-yeongyu/senpi-ai@2026.9.23",
|
|
61
|
+
"@earendil-works/pi-tui": "npm:@code-yeongyu/senpi-tui@2026.9.23",
|
|
62
62
|
"@silvia-odwyer/photon-node": "0.3.4",
|
|
63
63
|
"chalk": "6.0.0",
|
|
64
64
|
"cross-spawn": "7.0.6",
|
|
@@ -80,8 +80,8 @@
|
|
|
80
80
|
"@anthropic-ai/sdk": "0.127.0",
|
|
81
81
|
"@aws-sdk/client-bedrock-runtime": "3.1136.0",
|
|
82
82
|
"@bufbuild/protobuf": "2.15.0",
|
|
83
|
-
"@code-yeongyu/senpi-codemode": "2026.9.
|
|
84
|
-
"@earendil-works/pi-pty": "npm:@code-yeongyu/senpi-pty@2026.9.
|
|
83
|
+
"@code-yeongyu/senpi-codemode": "2026.9.23",
|
|
84
|
+
"@earendil-works/pi-pty": "npm:@code-yeongyu/senpi-pty@2026.9.23",
|
|
85
85
|
"@modelcontextprotocol/sdk": "1.30.0",
|
|
86
86
|
"@mozilla/readability": "0.6.0",
|
|
87
87
|
"@opentelemetry/api": "1.9.1",
|
|
@@ -120,7 +120,7 @@
|
|
|
120
120
|
"@aws-sdk/xml-builder": "3.972.40",
|
|
121
121
|
"@aws/lambda-invoke-store": "0.3.0",
|
|
122
122
|
"@babel/runtime": "7.29.2",
|
|
123
|
-
"@earendil-works/pi-telemetry": "npm:@code-yeongyu/senpi-telemetry@2026.9.
|
|
123
|
+
"@earendil-works/pi-telemetry": "npm:@code-yeongyu/senpi-telemetry@2026.9.23",
|
|
124
124
|
"@google/genai": "2.23.0",
|
|
125
125
|
"@hono/node-server": "2.1.1",
|
|
126
126
|
"@mixmark-io/domino": "2.2.0",
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import { createRequire as __piCreateRequire } from "node:module"; const require = __piCreateRequire(import.meta.url); { const __piWorkerThreads = require("node:worker_threads"); if (typeof __piWorkerThreads.markAsUncloneable !== "function") { __piWorkerThreads.markAsUncloneable = () => {}; } }
|
|
2
|
-
import{APP_NAME,CONFIG_DIR_NAME,agentDirLabel}from"./chunk-Y65WFI5H.js";var CLI_TIPS=[{id:"print-mode",bindings:[],render:()=>`${APP_NAME} -p "question" answers without the TUI, and piped stdin is merged into the prompt.`},{id:"tool-flags",bindings:[],render:()=>"Limit a run's tools with -t read,bash, or drop a few with -xt write,edit."}];var DAG_TIPS=[{id:"dag.one-keyword-mastery",bindings:[],requiresCommand:"dag",render:()=>'One keyword makes you a master of graph engineering: say "mass-ulw" and your work becomes a dependency graph that schedules itself.'},{id:"dag.what-it-is",bindings:[],requiresCommand:"dag",render:()=>'Trigger "mass-ulw" when some tasks must wait for others - describe the work, get a graph that runs in the right order.'},{id:"dag.parallel-waves",bindings:[],requiresCommand:"dag",render:()=>"A graph run executes in waves: everything with no pending dependency starts at once, the rest starts the moment it is unblocked."},{id:"dag.depends-on",bindings:[],requiresCommand:"dag",render:()=>"Say what needs what - review after implementation, docs after both - and the ordering is enforced for you."},{id:"dag.categories",bindings:[],requiresCommand:"dag",render:()=>"Each node in the graph picks its own worker category, so cheap steps stay cheap and hard steps get the strong model."},{id:"dag.status-view",bindings:[],requiresCommand:"dag",render:()=>"Use /dag to watch a run: which nodes finished, which are running, and which one failed."},{id:"dag.resume",bindings:[],requiresCommand:"dag",render:()=>"Graph runs are journaled - if the session dies mid-run it resumes later and never redoes the nodes that already finished."},{id:"dag.vs-parallel",bindings:[],requiresCommand:"dag",render:()=>"Fully independent jobs just need parallel subagents; reach for a graph when the ordering between them is the whole point."},{id:"dag.scale",bindings:[],requiresCommand:"dag",render:()=>"Stop hand-running steps in sequence. Describe the dependencies once and let a dozen agents fan out and rejoin on their own."}];var ETHOS_TIPS=[{id:"ethos.tuning-discipline",bindings:[],render:()=>"gpt-5.6-sol used to turn a sprint into a marathon. We tuned the system prompt and killed that habit: 5-minute jobs take 5 minutes, 12-hour jobs take 12."},{id:"ethos.tools-transparent",bindings:[],render:()=>"Don't study our tools. A tool that needs studying is a tool that failed. We just ride shotgun while you keep doing your actual job."},{id:"ethos.only-harness",bindings:[],render:()=>"The only harness that actually knows how to drive gpt-5.6-sol. Same job, feels up to 30% faster. *we counted*"},{id:"ethos.spend-tokens",bindings:[],render:()=>"Stop hoarding tokens. Spend them like they buy your hours back, because they do."},{id:"ethos.deep-work",bindings:[],render:()=>"Using our tools means your work is already the deep, valuable kind. Keep your eyes on the essence of your craft. The rest is our problem now, and we're great at problems."},{id:"ethos.ulw-plan-sage",bindings:[],requiresCommand:"tasks",render:()=>"Try ulw-plan on fable-5.1 xhigh. A patient sage obsessed with the essence does the agonizing for you and fills in every blank you were pretending not to see."},{id:"ethos.ulw-loop-shallow",bindings:[],requiresCommand:"tasks",render:()=>"For days when deep thought sounds awful, run the ulw loop with gpt-5.6-sol fast/medium. Fair warning: shallow thinking sends invoices."},{id:"ethos.monitor-subscribe",bindings:[],render:()=>"Subscribe to a command's stdout and forget it. CI finishes, server boots, log line lands... you're mid-edit and the news finds *you*. No sleep loops, no polling, no re-reading context like a chump."},{id:"ethos.cache-budget",bindings:[],render:()=>"My harness knows the prompt cache's expiry to the second and never blocks past it. Cold re-read tax? *Refused on your behalf.* Other agents eat that cost, mine declines it."},{id:"ethos.cache-hit-rate",bindings:[],render:()=>"Live cache-hit rate in the footer, plus a running tab of misses, idle gaps, and model swaps. I can point at the exact moment cache broke and why. Watching tokens you never re-pay stack up? Smug doesn't cover it."},{id:"ethos.multimodal-vision",bindings:[],render:()=>`Drop a screenshot, a PDF, a crusty whiteboard photo... ${APP_NAME} actually sees it, reads it, reasons about it. Your agent has eyes now. *Yes, really.*`},{id:"ethos.oauth-multi-account",bindings:[],render:()=>`Hit a rate limit, switch accounts. Wrong org, switch again. ${APP_NAME} treats your Claude logins like a roster, not a single lifeline. *Env vars could never.*`},{id:"ethos.agent-sdk-foundation",bindings:[],render:()=>'Built on the official agent SDK, speaking the protocol natively. No reverse-engineered wrapper, no ToS gray zone, no "will I get banned for this" anxiety. *Sleep easy, ship loud.*'},{id:"ethos.tool-call-repair",bindings:[],render:()=>`${APP_NAME} catches malformed tool calls on the wire, fixes them, and salvages the turn - claude's sloppy invokes, kimi k3's leaked XTML channels, all of it. Other harnesses retry the whole thing and bill you for the privilege. *table stakes, honestly*`}];var INPUT_TIPS=[{id:"click-pending-question",bindings:[],render:()=>"Click a pending question's option to answer. Use the displayed selection-bypass modifier to select terminal text, or disable terminal.mouse in /settings."},{id:"queue-follow-up",bindings:["app.message.followUp"],render:keys=>`While the agent is working, use ${keys("app.message.followUp")} to queue a follow-up for after it finishes.`},{id:"steering-message",bindings:["tui.input.submit","app.message.followUp"],render:keys=>`Press ${keys("tui.input.submit")} while the agent works to steer it after the current tool batch; ${keys("app.message.followUp")} waits until all work is done.`},{id:"edit-queued-message",bindings:["app.message.dequeue"],render:keys=>`Use ${keys("app.message.dequeue")} to bring queued messages back for editing.`},{id:"interrupt-restores-queue",bindings:["app.interrupt"],render:keys=>`Press ${keys("app.interrupt")} to abort the current turn and restore queued messages to the editor.`},{id:"file-reference",bindings:[],render:()=>"Type @ in the editor to fuzzy-search project files and insert their paths."},{id:"path-completion",bindings:["tui.input.tab"],render:keys=>`Press ${keys("tui.input.tab")} to complete file paths while typing.`},{id:"shortcut-overlay",bindings:[],render:()=>"Type ? in an empty editor to pop up the full shortcut grid."},{id:"prompt-history",bindings:["app.history.search"],requiresCommand:"history",render:keys=>`Search prompt history across sessions with ${keys("app.history.search")}.`},{id:"external-editor",bindings:["app.editor.external"],render:keys=>`Open the current prompt in your external editor with ${keys("app.editor.external")}.`},{id:"expand-tool-output",bindings:["app.tools.expand"],render:keys=>`Collapse or expand tool output with ${keys("app.tools.expand")}.`},{id:"thinking-blocks",bindings:["app.thinking.toggle"],render:keys=>`Collapse or expand thinking blocks with ${keys("app.thinking.toggle")}.`},{id:"paste-image",bindings:["app.clipboard.pasteImage"],render:keys=>`Paste an image from the clipboard with ${keys("app.clipboard.pasteImage")}.`},{id:"copy-message",bindings:["app.message.copy"],render:keys=>`Copy the latest assistant message with ${keys("app.message.copy")}.`},{id:"input-newline",bindings:["tui.input.newLine"],render:keys=>`Insert a newline without sending with ${keys("tui.input.newLine")}.`},{id:"bash-prefixes",bindings:[],render:()=>"Prefix a prompt with ! to run bash, or !! to run bash without adding its output to model context."},{id:"drag-drop-files",bindings:[],render:()=>"Drag and drop files into the terminal to add their paths to your prompt."},{id:"answer-agent-question",bindings:[],render:()=>"When the agent asks you a question, pick options with digits or arrows, press Enter to advance, and use the final Submit tab for a comment or partial answers; anything unanswered is reported back as unanswered."},{id:"open-pending-question",bindings:["app.question.answer","app.question.next"],render:keys=>`Pending questions queue above the editor. An empty-composer digit selects an option; ${keys("app.question.answer")} opens the shown request and ${keys("app.question.next")} cycles requests. /answer lists them.`}];var MEMORY_TIPS=[{id:"memory.persistent",bindings:[],requiresCommand:"memory",render:()=>`${APP_NAME} remembers across sessions. Close the terminal, come back tomorrow, and the context is still there.`},{id:"memory.remember-command",bindings:[],requiresCommand:"remember",render:()=>"Use /remember to save something you want kept - a preference, a decision, a fact worth reusing."},{id:"memory.just-tell-it",bindings:[],requiresCommand:"remember",render:()=>'You can also just say it: "remember that we deploy on Fridays" is enough. No syntax, no file to open.'},{id:"memory.search-command",bindings:[],requiresCommand:"search",render:()=>"Use /search to look through everything remembered so far, in plain words."},{id:"memory.memory-command",bindings:[],requiresCommand:"memory",render:()=>"Use /memory to see what is currently remembered about you and this project."},{id:"memory.init-command",bindings:[],requiresCommand:"init",render:()=>"Use /init to start memory for a new project, so it learns this codebase from the first session."},{id:"memory.people-command",bindings:[],requiresCommand:"people",render:()=>"Use /people to keep notes on teammates - who owns what, who to ask, what they prefer."},{id:"memory.reflect-command",bindings:[],requiresCommand:"reflect",render:()=>"Use /reflect to have the session reviewed now and the parts worth keeping written down."},{id:"memory.dream-command",bindings:[],requiresCommand:"dream",render:()=>"Memory tidies itself in the background between turns - /dream shows that work and lets you start it yourself."},{id:"memory.sleeptime-command",bindings:[],requiresCommand:"sleeptime",render:()=>"Use /sleeptime to decide how often memory reorganizes itself while you are not looking."},{id:"memory.memfs-command",bindings:[],requiresCommand:"memfs",render:()=>"Memory is plain files you own - browse them with /memfs and edit anything that looks wrong."},{id:"memory.repository-command",bindings:[],requiresCommand:"memory-repository",render:()=>"Every memory change is a git commit - use /memory-repository to see the history and undo a bad one."},{id:"memory.doctor-command",bindings:[],requiresCommand:"doctor",render:()=>"Use /doctor when memory feels off; it checks the setup and tells you what to fix."},{id:"memory.facts-command",bindings:[],requiresCommand:"facts",render:()=>"Use /facts to see the individual things learned about you, and drop the ones that no longer hold."},{id:"memory.recompile-command",bindings:[],requiresCommand:"recompile",render:()=>"Edited memory files by hand? Run /recompile so this session picks the changes up right away."},{id:"memory.aha-moment",bindings:[],requiresCommand:"memory",render:()=>"Memory speaks up on its own: when something remembered would change the next step, an Aha moment! line surfaces it mid-task. Silence means nothing relevant was found."},{id:"memory.stop-repeating",bindings:[],requiresCommand:"memory",render:()=>"Explain your setup once. Memory means you stop re-explaining it at the start of every session."}];var MODEL_TIPS=[{id:"thinking-level",bindings:["app.thinking.cycle"],render:keys=>`Use ${keys("app.thinking.cycle")} to cycle the model's thinking level.`},{id:"favorite-model-rotation",bindings:["app.model.cycleForward","app.model.cycleBackward"],render:keys=>`Rotate through favorite models with ${keys("app.model.cycleForward")}; go backward with ${keys("app.model.cycleBackward")}.`},{id:"model-selector-favorites",bindings:["app.model.select","app.models.toggleFavorite"],render:keys=>`Open the model selector with ${keys("app.model.select")}, then use ${keys("app.models.toggleFavorite")} to toggle the highlighted favorite.`},{id:"model-command-search",bindings:[],render:()=>"Use /model to open the selector, or /model <pattern> to jump straight to a matching model."},{id:"model-cycling-scope",bindings:["app.model.cycleForward"],render:keys=>`Start ${APP_NAME} with --models "anthropic/*,gpt-5*" to limit which models ${keys("app.model.cycleForward")} cycles through.`},{id:"thinking-budgets",bindings:[],render:()=>"Set thinkingBudgets in settings.json to choose the token budget behind each thinking level."},{id:"prompt-preset",bindings:[],render:()=>"Set promptPreset in settings.json when a model does not auto-detect the system prompt you want."},{id:"provider-login",bindings:[],render:()=>"Use /login to add a subscription or API-key provider, and /logout to remove stored credentials."},{id:"fallback-chains-setting",bindings:[],render:()=>"retry.fallbackChains in settings.json maps a model to ordered fallbacks, so a failed turn retries on the next one."},{id:"fallback-command",bindings:[],requiresCommand:"fallback",render:()=>"Use /fallback to inspect and manage the retry fallback chain for the current model."}];var SESSION_TIPS=[{id:"favorite-models-command",bindings:[],render:()=>"Use /favorite-models to choose and reorder the models in your rotation."},{id:"tree-command",bindings:[],render:()=>"Use /tree to revisit earlier points and switch between session branches."},{id:"fork-command",bindings:[],render:()=>"Use /fork to create a separate session from an earlier user message."},{id:"clone-session",bindings:[],render:()=>"Use /clone to duplicate the current branch into its own session before trying something risky."},{id:"continue-session",bindings:[],render:()=>`${APP_NAME} -c continues your most recent session; ${APP_NAME} -r opens the session picker.`},{id:"session-name",bindings:[],render:()=>"Use /rename [name] to label a session so it is easy to spot in the footer and in /resume."},{id:"session-info",bindings:[],render:()=>"Use /session to see the session file, id, message count, tokens, and cost."},{id:"export-share",bindings:[],render:()=>"Use /export to write the session to HTML or JSONL, or /share to upload it as a private gist link."},{id:"compact-command",bindings:[],render:()=>"Use /compact to compact context now, or /compact <prompt> to tell the summarizer what to keep."},{id:"auto-compaction",bindings:[],render:()=>"Auto-compaction is on by default - the (auto) marker in the footer shows it; tune it with compaction.* in settings.json."}];var SETTINGS_TIPS=[{id:"settings-locations",bindings:[],render:()=>`Use /settings for common options; the rest live in settings.json, with ${CONFIG_DIR_NAME}/settings.json overriding per project.`},{id:"permission-preset",bindings:[],render:()=>'Set permissionPreset to "workspace", "read-only", or "ask" to decide which tool calls need your approval.'},{id:"packages-setting",bindings:[],render:()=>"The packages setting loads skills, extensions, prompts, and themes from an npm or git package."},{id:"custom-themes",bindings:[],render:()=>`Switch themes from /settings, and drop custom theme files in ${agentDirLabel()}/themes.`},{id:"reload-resources",bindings:[],render:()=>"Use /reload to re-read keybindings, extensions, skills, prompts, themes, and context files without restarting."},{id:"project-trust",bindings:[],render:()=>"Use /trust to save a trust decision so this project's settings, skills, and extensions load next time."},{id:"tips-toggle",bindings:[],render:()=>'Set "tips": false in settings.json to stop showing these tips.'}];var SUBAGENT_TIPS=[{id:"workflow-skills.plan",bindings:[],requiresCommand:"tasks",render:()=>'Trigger "ulw plan" to get an explored, decision-complete plan under .omo/plans/.'},{id:"workflow-skills.start-work",bindings:[],requiresCommand:"tasks",render:()=>'Trigger "$start-work <plan-name>" to execute a plan end-to-end in a fresh session.'},{id:"workflow-skills.ultrawork",bindings:[],requiresCommand:"tasks",render:()=>'Trigger "ulw" or "ulw loop" for a long, evidence-driven autonomous run in ultrawork mode.'},{id:"workflow-skills.research",bindings:[],requiresCommand:"tasks",render:()=>'Trigger "ulw-research" for a saturating, citation-backed investigation across the codebase, docs, and the web.'},{id:"workflow-skills.hyperplan",bindings:[],requiresCommand:"tasks",render:()=>'Trigger "hyperplan" to have adversarial reviewers attack a plan before you commit to it.'},{id:"workflow-skills.review",bindings:[],requiresCommand:"tasks",render:()=>'Trigger "review work" to run parallel goal, quality, security, and hands-on QA reviews.'},{id:"workflow-skills.init-deep",bindings:[],requiresCommand:"tasks",render:()=>'Trigger "/init-deep" to map a project and generate a hierarchical AGENTS.md knowledge base.'},{id:"workflow-skills.debugging",bindings:[],requiresCommand:"tasks",render:()=>'Trigger "debug this" for parallel hypotheses, a failing regression test, a minimal fix, and real-surface QA.'},{id:"workflow-skills.refactor",bindings:[],requiresCommand:"tasks",render:()=>'Trigger "refactor" for codebase-aware cleanup that pins behavior before changing structure.'},{id:"workflow-skills.remove-ai-slops",bindings:[],requiresCommand:"tasks",render:()=>'Trigger "remove AI slop" to lock behavior first, then strip generated-code smells without drive-by rewrites.'},{id:"workflow-skills.visual-qa",bindings:[],requiresCommand:"tasks",render:()=>'Trigger "visual QA" to capture browser or xterm evidence and review web or terminal interfaces.'},{id:"workflow-skills.report-bug",bindings:[],requiresCommand:"tasks",render:()=>'Hit a bug? Say "report a bug" - the report-bug skill finds the session, records the exact provider and model, routes it to the right repository, and files an evidence-backed issue only after you confirm.'},{id:"subagent-categories",bindings:[],requiresCommand:"tasks",render:()=>"Delegate by category - quick, deep, ultrabrain, architect, artistry, git, writing - each runs on its own model."},{id:"subagent-commands",bindings:[],requiresCommand:"tasks",render:()=>"Use /tasks to see this session's background subagents, and /task-kill to stop one."},{id:"subagent-config",bindings:[],requiresCommand:"tasks",render:()=>"~/.omo/omo.jsonc maps every subagent category to its model, reasoning effort, and fallback chain."},{id:"subagent-team",bindings:[],requiresCommand:"tasks",render:()=>"Ask for a team when one task needs several agents at once: members share a tasklist and report back to you."}];var WORKSPACE_TIPS=[{id:"help-command",bindings:[],requiresCommand:"help",render:()=>"Use /help to see available commands and guidance."},{id:"keybindings-command",bindings:[],render:()=>"Use /keybindings to review and customize keyboard shortcuts."},{id:"agents-md-context",bindings:[],render:()=>`${APP_NAME} loads AGENTS.md from your home directory, every parent folder, and the current folder as project instructions.`},{id:"skills-and-prompts",bindings:[],render:()=>`Skills run as /skill:name, and prompt templates in ${agentDirLabel()}/prompts expand as /templatename.`},{id:"files-command",bindings:[],requiresCommand:"files",render:()=>"Use /files to list every file this session read, wrote, or edited."},{id:"diff-command",bindings:[],requiresCommand:"diff",render:()=>"Use /diff to review this session's git changes and open them in a diff view."},{id:"todo-command",bindings:[],requiresCommand:"todo",render:()=>"Use /todo to show or edit the todo list without leaving the session."},{id:"goal-command",bindings:[],requiresCommand:"goal",render:()=>`Use /goal to set a persistent goal ${APP_NAME} keeps pursuing, then pause, resume, or clear it.`},{id:"btw-command",bindings:[],requiresCommand:"btw",render:()=>"Use /btw to ask a side question in a parallel session without disturbing this one."},{id:"lookat-command",bindings:[],requiresCommand:"lookat",render:()=>"Use /lookat to manage the vision-model chain the look_at tool uses for images and screenshots."},{id:"mcp-command",bindings:[],requiresCommand:"mcp",render:()=>"Use /mcp to inspect and manage the MCP servers wired into this session."},{id:"rules-command",bindings:[],requiresCommand:"rules",render:()=>"Use /rules to see which rules are loaded, and /reload-rules to re-read them mid-session."},{id:"hooks-command",bindings:[],requiresCommand:"hooks",render:()=>"Use /hooks to list loaded hook sources and their diagnostics."},{id:"websearch-command",bindings:[],requiresCommand:"websearch",render:()=>"Use /websearch to check which web-search provider is currently active."}];var TIP_DEFINITIONS=[...MODEL_TIPS,...INPUT_TIPS,...SESSION_TIPS,...WORKSPACE_TIPS,...SETTINGS_TIPS,...CLI_TIPS,...SUBAGENT_TIPS,...MEMORY_TIPS,...DAG_TIPS,...ETHOS_TIPS];export{TIP_DEFINITIONS};
|