oh-my-opencode 2.4.5 → 2.4.6
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/README.ja.md +4 -4
- package/README.ko.md +4 -4
- package/README.md +4 -4
- package/README.zh-cn.md +4 -4
- package/dist/hooks/non-interactive-env/constants.d.ts +32 -0
- package/dist/hooks/non-interactive-env/index.d.ts +1 -0
- package/dist/index.js +95 -7
- package/package.json +1 -1
package/README.ja.md
CHANGED
|
@@ -317,12 +317,12 @@ opencode auth login
|
|
|
317
317
|
"agents": {
|
|
318
318
|
"frontend-ui-ux-engineer": { "model": "google/gemini-3-pro-high" },
|
|
319
319
|
"document-writer": { "model": "google/gemini-3-flash" },
|
|
320
|
-
"multimodal-looker": { "model": "google/gemini-
|
|
320
|
+
"multimodal-looker": { "model": "google/gemini-3-flash" }
|
|
321
321
|
}
|
|
322
322
|
}
|
|
323
323
|
```
|
|
324
324
|
|
|
325
|
-
**利用可能なモデル名**: `google/gemini-3-pro-high`, `google/gemini-3-pro-medium`, `google/gemini-3-pro-low`, `google/gemini-3-flash`, `google/gemini-
|
|
325
|
+
**利用可能なモデル名**: `google/gemini-3-pro-high`, `google/gemini-3-pro-medium`, `google/gemini-3-pro-low`, `google/gemini-3-flash`, `google/gemini-3-flash`, `google/gemini-3-flash-lite`, `google/claude-sonnet-4-5`, `google/claude-sonnet-4-5-thinking`, `google/claude-opus-4-5-thinking`, `google/gpt-oss-120b-medium`
|
|
326
326
|
|
|
327
327
|
その後、認証を行います:
|
|
328
328
|
|
|
@@ -432,7 +432,7 @@ gh repo star code-yeongyu/oh-my-opencode
|
|
|
432
432
|
- **explore** (`opencode/grok-code`): 高速なコードベース探索、ファイルパターンマッチング。Claude Code は Haiku を使用しますが、私たちは Grok を使います。現在無料であり、極めて高速で、ファイル探索タスクには十分な知能を備えているからです。Claude Code からインスピレーションを得ました。
|
|
433
433
|
- **frontend-ui-ux-engineer** (`google/gemini-3-pro-preview`): 開発者に転身したデザイナーという設定です。素晴らしい UI を作ります。美しく独創的な UI コードを生成することに長けた Gemini を使用します。
|
|
434
434
|
- **document-writer** (`google/gemini-3-pro-preview`): テクニカルライティングの専門家という設定です。Gemini は文筆家であり、流れるような文章を書きます。
|
|
435
|
-
- **multimodal-looker** (`google/gemini-
|
|
435
|
+
- **multimodal-looker** (`google/gemini-3-flash`): 視覚コンテンツ解釈のための専門エージェント。PDF、画像、図表を分析して情報を抽出します。
|
|
436
436
|
|
|
437
437
|
メインエージェントはこれらを自動的に呼び出しますが、明示的に呼び出すことも可能です:
|
|
438
438
|
|
|
@@ -675,7 +675,7 @@ Oh My OpenCode は以下の場所からフックを読み込んで実行しま
|
|
|
675
675
|
"agents": {
|
|
676
676
|
"frontend-ui-ux-engineer": { "model": "google/gemini-3-pro-high" },
|
|
677
677
|
"document-writer": { "model": "google/gemini-3-flash" },
|
|
678
|
-
"multimodal-looker": { "model": "google/gemini-
|
|
678
|
+
"multimodal-looker": { "model": "google/gemini-3-flash" }
|
|
679
679
|
}
|
|
680
680
|
}
|
|
681
681
|
```
|
package/README.ko.md
CHANGED
|
@@ -314,12 +314,12 @@ opencode auth login
|
|
|
314
314
|
"agents": {
|
|
315
315
|
"frontend-ui-ux-engineer": { "model": "google/gemini-3-pro-high" },
|
|
316
316
|
"document-writer": { "model": "google/gemini-3-flash" },
|
|
317
|
-
"multimodal-looker": { "model": "google/gemini-
|
|
317
|
+
"multimodal-looker": { "model": "google/gemini-3-flash" }
|
|
318
318
|
}
|
|
319
319
|
}
|
|
320
320
|
```
|
|
321
321
|
|
|
322
|
-
**사용 가능한 모델 이름**: `google/gemini-3-pro-high`, `google/gemini-3-pro-medium`, `google/gemini-3-pro-low`, `google/gemini-3-flash`, `google/gemini-
|
|
322
|
+
**사용 가능한 모델 이름**: `google/gemini-3-pro-high`, `google/gemini-3-pro-medium`, `google/gemini-3-pro-low`, `google/gemini-3-flash`, `google/gemini-3-flash`, `google/gemini-3-flash-lite`, `google/claude-sonnet-4-5`, `google/claude-sonnet-4-5-thinking`, `google/claude-opus-4-5-thinking`, `google/gpt-oss-120b-medium`
|
|
323
323
|
|
|
324
324
|
그 후 인증:
|
|
325
325
|
|
|
@@ -429,7 +429,7 @@ gh repo star code-yeongyu/oh-my-opencode
|
|
|
429
429
|
- **explore** (`opencode/grok-code`): 빠른 코드베이스 탐색, 파일 패턴 매칭. Claude Code는 Haiku를 쓰지만, 우리는 Grok을 씁니다. 현재 무료이고, 극도로 빠르며, 파일 탐색 작업에 충분한 지능을 갖췄기 때문입니다. Claude Code 에서 영감을 받았습니다.
|
|
430
430
|
- **frontend-ui-ux-engineer** (`google/gemini-3-pro-preview`): 개발자로 전향한 디자이너라는 설정을 갖고 있습니다. 멋진 UI를 만듭니다. 아름답고 창의적인 UI 코드를 생성하는 데 탁월한 Gemini를 사용합니다.
|
|
431
431
|
- **document-writer** (`google/gemini-3-pro-preview`): 기술 문서 전문가라는 설정을 갖고 있습니다. Gemini 는 문학가입니다. 글을 기가막히게 씁니다.
|
|
432
|
-
- **multimodal-looker** (`google/gemini-
|
|
432
|
+
- **multimodal-looker** (`google/gemini-3-flash`): 시각적 콘텐츠 해석을 위한 전문 에이전트. PDF, 이미지, 다이어그램을 분석하여 정보를 추출합니다.
|
|
433
433
|
|
|
434
434
|
각 에이전트는 메인 에이전트가 알아서 호출하지만, 명시적으로 요청할 수도 있습니다:
|
|
435
435
|
|
|
@@ -669,7 +669,7 @@ Schema 자동 완성이 지원됩니다:
|
|
|
669
669
|
"agents": {
|
|
670
670
|
"frontend-ui-ux-engineer": { "model": "google/gemini-3-pro-high" },
|
|
671
671
|
"document-writer": { "model": "google/gemini-3-flash" },
|
|
672
|
-
"multimodal-looker": { "model": "google/gemini-
|
|
672
|
+
"multimodal-looker": { "model": "google/gemini-3-flash" }
|
|
673
673
|
}
|
|
674
674
|
}
|
|
675
675
|
```
|
package/README.md
CHANGED
|
@@ -346,12 +346,12 @@ The `opencode-antigravity-auth` plugin uses different model names than the built
|
|
|
346
346
|
"agents": {
|
|
347
347
|
"frontend-ui-ux-engineer": { "model": "google/gemini-3-pro-high" },
|
|
348
348
|
"document-writer": { "model": "google/gemini-3-flash" },
|
|
349
|
-
"multimodal-looker": { "model": "google/gemini-
|
|
349
|
+
"multimodal-looker": { "model": "google/gemini-3-flash" }
|
|
350
350
|
}
|
|
351
351
|
}
|
|
352
352
|
```
|
|
353
353
|
|
|
354
|
-
**Available model names**: `google/gemini-3-pro-high`, `google/gemini-3-pro-medium`, `google/gemini-3-pro-low`, `google/gemini-3-flash`, `google/gemini-
|
|
354
|
+
**Available model names**: `google/gemini-3-pro-high`, `google/gemini-3-pro-medium`, `google/gemini-3-pro-low`, `google/gemini-3-flash`, `google/gemini-3-flash`, `google/gemini-3-flash-lite`, `google/claude-sonnet-4-5`, `google/claude-sonnet-4-5-thinking`, `google/claude-opus-4-5-thinking`, `google/gpt-oss-120b-medium`
|
|
355
355
|
|
|
356
356
|
Then authenticate:
|
|
357
357
|
|
|
@@ -493,7 +493,7 @@ To remove oh-my-opencode:
|
|
|
493
493
|
- **explore** (`opencode/grok-code`): Fast codebase exploration and pattern matching. Claude Code uses Haiku; we use Grok—it's free, blazing fast, and plenty smart for file traversal. Inspired by Claude Code.
|
|
494
494
|
- **frontend-ui-ux-engineer** (`google/gemini-3-pro-preview`): A designer turned developer. Builds gorgeous UIs. Gemini excels at creative, beautiful UI code.
|
|
495
495
|
- **document-writer** (`google/gemini-3-pro-preview`): Technical writing expert. Gemini is a wordsmith—writes prose that flows.
|
|
496
|
-
- **multimodal-looker** (`google/gemini-
|
|
496
|
+
- **multimodal-looker** (`google/gemini-3-flash`): Visual content specialist. Analyzes PDFs, images, diagrams to extract information.
|
|
497
497
|
|
|
498
498
|
The main agent invokes these automatically, but you can call them explicitly:
|
|
499
499
|
|
|
@@ -733,7 +733,7 @@ When using `opencode-antigravity-auth`, disable the built-in auth and override a
|
|
|
733
733
|
"agents": {
|
|
734
734
|
"frontend-ui-ux-engineer": { "model": "google/gemini-3-pro-high" },
|
|
735
735
|
"document-writer": { "model": "google/gemini-3-flash" },
|
|
736
|
-
"multimodal-looker": { "model": "google/gemini-
|
|
736
|
+
"multimodal-looker": { "model": "google/gemini-3-flash" }
|
|
737
737
|
}
|
|
738
738
|
}
|
|
739
739
|
```
|
package/README.zh-cn.md
CHANGED
|
@@ -325,12 +325,12 @@ opencode auth login
|
|
|
325
325
|
"agents": {
|
|
326
326
|
"frontend-ui-ux-engineer": { "model": "google/gemini-3-pro-high" },
|
|
327
327
|
"document-writer": { "model": "google/gemini-3-flash" },
|
|
328
|
-
"multimodal-looker": { "model": "google/gemini-
|
|
328
|
+
"multimodal-looker": { "model": "google/gemini-3-flash" }
|
|
329
329
|
}
|
|
330
330
|
}
|
|
331
331
|
```
|
|
332
332
|
|
|
333
|
-
**可用模型名**:`google/gemini-3-pro-high`, `google/gemini-3-pro-medium`, `google/gemini-3-pro-low`, `google/gemini-3-flash`, `google/gemini-
|
|
333
|
+
**可用模型名**:`google/gemini-3-pro-high`, `google/gemini-3-pro-medium`, `google/gemini-3-pro-low`, `google/gemini-3-flash`, `google/gemini-3-flash`, `google/gemini-3-flash-lite`, `google/claude-sonnet-4-5`, `google/claude-sonnet-4-5-thinking`, `google/claude-opus-4-5-thinking`, `google/gpt-oss-120b-medium`
|
|
334
334
|
|
|
335
335
|
然后认证:
|
|
336
336
|
|
|
@@ -440,7 +440,7 @@ gh repo star code-yeongyu/oh-my-opencode
|
|
|
440
440
|
- **explore** (`opencode/grok-code`):极速代码库扫描、模式匹配。Claude Code 用 Haiku,我们用 Grok——免费、飞快、扫文件够用了。致敬 Claude Code。
|
|
441
441
|
- **frontend-ui-ux-engineer** (`google/gemini-3-pro-preview`):设计师出身的程序员。UI 做得那是真漂亮。Gemini 写这种创意美观的代码是一绝。
|
|
442
442
|
- **document-writer** (`google/gemini-3-pro-preview`):技术写作专家。Gemini 文笔好,写出来的东西读着顺畅。
|
|
443
|
-
- **multimodal-looker** (`google/gemini-
|
|
443
|
+
- **multimodal-looker** (`google/gemini-3-flash`):视觉内容专家。PDF、图片、图表,看一眼就知道里头有啥。
|
|
444
444
|
|
|
445
445
|
主 Agent 会自动调遣它们,你也可以亲自点名:
|
|
446
446
|
|
|
@@ -675,7 +675,7 @@ Agent 爽了,你自然也爽。但我还想直接让你爽。
|
|
|
675
675
|
"agents": {
|
|
676
676
|
"frontend-ui-ux-engineer": { "model": "google/gemini-3-pro-high" },
|
|
677
677
|
"document-writer": { "model": "google/gemini-3-flash" },
|
|
678
|
-
"multimodal-looker": { "model": "google/gemini-
|
|
678
|
+
"multimodal-looker": { "model": "google/gemini-3-flash" }
|
|
679
679
|
}
|
|
680
680
|
}
|
|
681
681
|
```
|
|
@@ -1,2 +1,34 @@
|
|
|
1
1
|
export declare const HOOK_NAME = "non-interactive-env";
|
|
2
2
|
export declare const NON_INTERACTIVE_ENV: Record<string, string>;
|
|
3
|
+
/**
|
|
4
|
+
* Shell command guidance for non-interactive environments.
|
|
5
|
+
* These patterns should be followed to avoid hanging on user input.
|
|
6
|
+
*/
|
|
7
|
+
export declare const SHELL_COMMAND_PATTERNS: {
|
|
8
|
+
readonly npm: {
|
|
9
|
+
readonly bad: readonly ["npm init", "npm install (prompts)"];
|
|
10
|
+
readonly good: readonly ["npm init -y", "npm install --yes"];
|
|
11
|
+
};
|
|
12
|
+
readonly apt: {
|
|
13
|
+
readonly bad: readonly ["apt-get install pkg"];
|
|
14
|
+
readonly good: readonly ["apt-get install -y pkg", "DEBIAN_FRONTEND=noninteractive apt-get install pkg"];
|
|
15
|
+
};
|
|
16
|
+
readonly pip: {
|
|
17
|
+
readonly bad: readonly ["pip install pkg (with prompts)"];
|
|
18
|
+
readonly good: readonly ["pip install --no-input pkg", "PIP_NO_INPUT=1 pip install pkg"];
|
|
19
|
+
};
|
|
20
|
+
readonly git: {
|
|
21
|
+
readonly bad: readonly ["git commit", "git merge branch", "git add -p", "git rebase -i"];
|
|
22
|
+
readonly good: readonly ["git commit -m 'msg'", "git merge --no-edit branch", "git add .", "git rebase --no-edit"];
|
|
23
|
+
};
|
|
24
|
+
readonly system: {
|
|
25
|
+
readonly bad: readonly ["rm file (prompts)", "cp a b (prompts)", "ssh host"];
|
|
26
|
+
readonly good: readonly ["rm -f file", "cp -f a b", "ssh -o BatchMode=yes host", "unzip -o file.zip"];
|
|
27
|
+
};
|
|
28
|
+
readonly banned: readonly ["vim", "nano", "vi", "emacs", "less", "more", "man", "python (REPL)", "node (REPL)", "git add -p", "git rebase -i"];
|
|
29
|
+
readonly workarounds: {
|
|
30
|
+
readonly yesPipe: "yes | ./script.sh";
|
|
31
|
+
readonly heredoc: "./script.sh <<EOF\noption1\noption2\nEOF";
|
|
32
|
+
readonly expectAlternative: "Use environment variables or config files instead of expect";
|
|
33
|
+
};
|
|
34
|
+
};
|
package/dist/index.js
CHANGED
|
@@ -2674,7 +2674,7 @@ You are a technical writer who creates documentation that developers actually wa
|
|
|
2674
2674
|
var multimodalLookerAgent = {
|
|
2675
2675
|
description: "Analyze media files (PDFs, images, diagrams) that require interpretation beyond raw text. Extracts specific information or summaries from documents, describes visual content. Use when you need analyzed/extracted data rather than literal file contents.",
|
|
2676
2676
|
mode: "subagent",
|
|
2677
|
-
model: "google/gemini-
|
|
2677
|
+
model: "google/gemini-3-flash",
|
|
2678
2678
|
temperature: 0.1,
|
|
2679
2679
|
tools: { write: false, edit: false, bash: false, background_task: false },
|
|
2680
2680
|
prompt: `You interpret media files that cannot be read as plain text.
|
|
@@ -8673,10 +8673,65 @@ var NON_INTERACTIVE_ENV = {
|
|
|
8673
8673
|
VISUAL: "true",
|
|
8674
8674
|
GIT_SEQUENCE_EDITOR: "true",
|
|
8675
8675
|
GIT_PAGER: "cat",
|
|
8676
|
-
PAGER: "cat"
|
|
8676
|
+
PAGER: "cat",
|
|
8677
|
+
npm_config_yes: "true",
|
|
8678
|
+
PIP_NO_INPUT: "1",
|
|
8679
|
+
YARN_ENABLE_IMMUTABLE_INSTALLS: "false"
|
|
8680
|
+
};
|
|
8681
|
+
var SHELL_COMMAND_PATTERNS = {
|
|
8682
|
+
npm: {
|
|
8683
|
+
bad: ["npm init", "npm install (prompts)"],
|
|
8684
|
+
good: ["npm init -y", "npm install --yes"]
|
|
8685
|
+
},
|
|
8686
|
+
apt: {
|
|
8687
|
+
bad: ["apt-get install pkg"],
|
|
8688
|
+
good: ["apt-get install -y pkg", "DEBIAN_FRONTEND=noninteractive apt-get install pkg"]
|
|
8689
|
+
},
|
|
8690
|
+
pip: {
|
|
8691
|
+
bad: ["pip install pkg (with prompts)"],
|
|
8692
|
+
good: ["pip install --no-input pkg", "PIP_NO_INPUT=1 pip install pkg"]
|
|
8693
|
+
},
|
|
8694
|
+
git: {
|
|
8695
|
+
bad: ["git commit", "git merge branch", "git add -p", "git rebase -i"],
|
|
8696
|
+
good: ["git commit -m 'msg'", "git merge --no-edit branch", "git add .", "git rebase --no-edit"]
|
|
8697
|
+
},
|
|
8698
|
+
system: {
|
|
8699
|
+
bad: ["rm file (prompts)", "cp a b (prompts)", "ssh host"],
|
|
8700
|
+
good: ["rm -f file", "cp -f a b", "ssh -o BatchMode=yes host", "unzip -o file.zip"]
|
|
8701
|
+
},
|
|
8702
|
+
banned: [
|
|
8703
|
+
"vim",
|
|
8704
|
+
"nano",
|
|
8705
|
+
"vi",
|
|
8706
|
+
"emacs",
|
|
8707
|
+
"less",
|
|
8708
|
+
"more",
|
|
8709
|
+
"man",
|
|
8710
|
+
"python (REPL)",
|
|
8711
|
+
"node (REPL)",
|
|
8712
|
+
"git add -p",
|
|
8713
|
+
"git rebase -i"
|
|
8714
|
+
],
|
|
8715
|
+
workarounds: {
|
|
8716
|
+
yesPipe: "yes | ./script.sh",
|
|
8717
|
+
heredoc: `./script.sh <<EOF
|
|
8718
|
+
option1
|
|
8719
|
+
option2
|
|
8720
|
+
EOF`,
|
|
8721
|
+
expectAlternative: "Use environment variables or config files instead of expect"
|
|
8722
|
+
}
|
|
8677
8723
|
};
|
|
8678
8724
|
|
|
8679
8725
|
// src/hooks/non-interactive-env/index.ts
|
|
8726
|
+
var BANNED_COMMAND_PATTERNS = SHELL_COMMAND_PATTERNS.banned.filter((cmd) => !cmd.includes("(")).map((cmd) => new RegExp(`\\b${cmd}\\b`));
|
|
8727
|
+
function detectBannedCommand(command) {
|
|
8728
|
+
for (let i = 0;i < BANNED_COMMAND_PATTERNS.length; i++) {
|
|
8729
|
+
if (BANNED_COMMAND_PATTERNS[i].test(command)) {
|
|
8730
|
+
return SHELL_COMMAND_PATTERNS.banned[i];
|
|
8731
|
+
}
|
|
8732
|
+
}
|
|
8733
|
+
return;
|
|
8734
|
+
}
|
|
8680
8735
|
function createNonInteractiveEnvHook(_ctx) {
|
|
8681
8736
|
return {
|
|
8682
8737
|
"tool.execute.before": async (input, output) => {
|
|
@@ -8691,6 +8746,10 @@ function createNonInteractiveEnvHook(_ctx) {
|
|
|
8691
8746
|
...output.args.env,
|
|
8692
8747
|
...NON_INTERACTIVE_ENV
|
|
8693
8748
|
};
|
|
8749
|
+
const bannedCmd = detectBannedCommand(command);
|
|
8750
|
+
if (bannedCmd) {
|
|
8751
|
+
output.message = `\u26A0\uFE0F Warning: '${bannedCmd}' is an interactive command that may hang in non-interactive environments.`;
|
|
8752
|
+
}
|
|
8694
8753
|
log(`[${HOOK_NAME2}] Set non-interactive environment variables`, {
|
|
8695
8754
|
sessionID: input.sessionID,
|
|
8696
8755
|
env: NON_INTERACTIVE_ENV
|
|
@@ -26710,6 +26769,30 @@ session_id: ${sessionID}
|
|
|
26710
26769
|
var MULTIMODAL_LOOKER_AGENT = "multimodal-looker";
|
|
26711
26770
|
var LOOK_AT_DESCRIPTION = `Analyze media files (PDFs, images, diagrams) via Gemini 2.5 Flash in separate context. Saves main context tokens.`;
|
|
26712
26771
|
// src/tools/look-at/tools.ts
|
|
26772
|
+
import { extname as extname3, basename as basename4 } from "path";
|
|
26773
|
+
function inferMimeType(filePath) {
|
|
26774
|
+
const ext = extname3(filePath).toLowerCase();
|
|
26775
|
+
const mimeTypes = {
|
|
26776
|
+
".jpg": "image/jpeg",
|
|
26777
|
+
".jpeg": "image/jpeg",
|
|
26778
|
+
".png": "image/png",
|
|
26779
|
+
".gif": "image/gif",
|
|
26780
|
+
".webp": "image/webp",
|
|
26781
|
+
".svg": "image/svg+xml",
|
|
26782
|
+
".bmp": "image/bmp",
|
|
26783
|
+
".ico": "image/x-icon",
|
|
26784
|
+
".pdf": "application/pdf",
|
|
26785
|
+
".txt": "text/plain",
|
|
26786
|
+
".md": "text/markdown",
|
|
26787
|
+
".json": "application/json",
|
|
26788
|
+
".xml": "application/xml",
|
|
26789
|
+
".html": "text/html",
|
|
26790
|
+
".css": "text/css",
|
|
26791
|
+
".js": "text/javascript",
|
|
26792
|
+
".ts": "text/typescript"
|
|
26793
|
+
};
|
|
26794
|
+
return mimeTypes[ext] || "application/octet-stream";
|
|
26795
|
+
}
|
|
26713
26796
|
function createLookAt(ctx) {
|
|
26714
26797
|
return tool({
|
|
26715
26798
|
description: LOOK_AT_DESCRIPTION,
|
|
@@ -26719,12 +26802,13 @@ function createLookAt(ctx) {
|
|
|
26719
26802
|
},
|
|
26720
26803
|
async execute(args, toolContext) {
|
|
26721
26804
|
log(`[look_at] Analyzing file: ${args.file_path}, goal: ${args.goal}`);
|
|
26805
|
+
const mimeType = inferMimeType(args.file_path);
|
|
26806
|
+
const filename = basename4(args.file_path);
|
|
26722
26807
|
const prompt = `Analyze this file and extract the requested information.
|
|
26723
26808
|
|
|
26724
|
-
File path: ${args.file_path}
|
|
26725
26809
|
Goal: ${args.goal}
|
|
26726
26810
|
|
|
26727
|
-
|
|
26811
|
+
Provide ONLY the extracted information that matches the goal.
|
|
26728
26812
|
Be thorough on what was requested, concise on everything else.
|
|
26729
26813
|
If the requested information is not found, clearly state what is missing.`;
|
|
26730
26814
|
log(`[look_at] Creating session with parent: ${toolContext.sessionID}`);
|
|
@@ -26740,7 +26824,7 @@ If the requested information is not found, clearly state what is missing.`;
|
|
|
26740
26824
|
}
|
|
26741
26825
|
const sessionID = createResult.data.id;
|
|
26742
26826
|
log(`[look_at] Created session: ${sessionID}`);
|
|
26743
|
-
log(`[look_at] Sending prompt to session ${sessionID}`);
|
|
26827
|
+
log(`[look_at] Sending prompt with file passthrough to session ${sessionID}`);
|
|
26744
26828
|
await ctx.client.session.prompt({
|
|
26745
26829
|
path: { id: sessionID },
|
|
26746
26830
|
body: {
|
|
@@ -26748,9 +26832,13 @@ If the requested information is not found, clearly state what is missing.`;
|
|
|
26748
26832
|
tools: {
|
|
26749
26833
|
task: false,
|
|
26750
26834
|
call_omo_agent: false,
|
|
26751
|
-
look_at: false
|
|
26835
|
+
look_at: false,
|
|
26836
|
+
read: false
|
|
26752
26837
|
},
|
|
26753
|
-
parts: [
|
|
26838
|
+
parts: [
|
|
26839
|
+
{ type: "text", text: prompt },
|
|
26840
|
+
{ type: "file", mime: mimeType, url: `file://${args.file_path}`, filename }
|
|
26841
|
+
]
|
|
26754
26842
|
}
|
|
26755
26843
|
});
|
|
26756
26844
|
log(`[look_at] Prompt sent, fetching messages...`);
|