Skip to content

fix: Atom フィード(YouTube等)の link 要素をオブジェクト形式で正しくパースする#2190

Closed
openclaw-shi wants to merge 346 commits intoqwibitai:mainfrom
shin902:fix/rss-atom-feed-link
Closed

fix: Atom フィード(YouTube等)の link 要素をオブジェクト形式で正しくパースする#2190
openclaw-shi wants to merge 346 commits intoqwibitai:mainfrom
shin902:fix/rss-atom-feed-link

Conversation

@openclaw-shi
Copy link
Copy Markdown

Summary

  • fast-xml-parser<link rel="alternate" href="..."/> を文字列でなくオブジェクト/配列として返すため、link?.trim()TypeError になりポーラーが即クラッシュしていた
  • extractLink() ヘルパーを追加し、string / { '@_href' } / Array<{ '@_href', '@_rel' }> の各形式を統一処理
  • RssItem に Atom フィード用の published / updated フィールドを追加し、日付ソートに使用
  • extractGuid() でも extractLink() を利用するよう修正

Test plan

  • YouTube RSS フィード(Atom 形式)を購読し、新着動画が Discord チャンネルに投稿されることを確認
  • 通常の RSS 2.0 フィード(link が文字列)でも引き続き動作することを確認
  • npm run build が通ること

🤖 Generated with Claude Code

shin902 and others added 30 commits April 5, 2026 02:19
…ntegration

- Created a new document detailing the conversation history saving mechanism in AnimaWorks, including storage locations, lifecycle, and compression details.
- Added a new document introducing ByteRover, highlighting its features, installation process, and benefits for memory management in OpenClaw.
- Summarized key points from a video about ByteRover, outlining existing challenges with OpenClaw and how ByteRover addresses them.
- `GroupType = 'override' | 'main' | 'chat' | 'thread'` を追加
- `RegisteredGroup.isMain` を `RegisteredGroup.type` に置き換え
- DB マイグレーション: `group_type TEXT` カラム追加、`is_main` からの自動変換
- `src/group-type.ts` 新規追加: `resolveGroupType`, `hasPrivilege`, `getDefaultAllowedTools`
- IPC 拡張: `register_group` に `group_type` フィールド、`update_group` 新規追加
- override は IPC 経由で設定不可(セキュリティ防御)
- type ごとのデフォルト allowedTools: override/main は制限なし、chat/thread は `['Read']`
- コンテナ・スケジューラ・マウントセキュリティ全体を `type` ベースに移行

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- ipc.ts: register_groupコメントをmain/overrideに修正
- ipc.ts: 不正group_typeを警告ログ+拒否に変更(サイレントフォールバック廃止)
- group-type.ts/ipc.ts/db.ts: VALID_GROUP_TYPESを共通化
- index.ts: isMainGroup変数名をisPrivilegedに変更
- mount-security.ts: 引数名isMainをisPrivilegedに変更

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
setRegisteredGroupがgroup.typeのみ参照するため、旧registered_groups.jsonの
isMain:trueエントリがtype未設定のまま'chat'として保存されてしまうバグを修正。
group.typeが未設定かつisMain===trueの場合は'main'にフォールバックする。

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
@deprecatedだったisMainフィールドを完全削除。
index.tsのisMain変数もisPrivilegedにリネーム。
コンテナ側のisMainフォールバックロジックも削除。

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
- container-runner.ts: JSON.parse結果がnull/配列/プリミティブの場合にTypeErrorで
  コンテナが落ちるバグを修正。オブジェクト検証を追加し非オブジェクトは{}扱いに
- group-type.ts: console.warnをlogger.warnに変更しログ経路を統一

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- ipc.ts: group_type の空文字を不正扱いにするため hasOwnProperty で存在判定を分離
- agent-runner/index.ts: containerInput.groupType を allowedGroupTypes で検証しフォールバック
- container-runner.ts: existingEnv のマージ前に文字列値のみフィルタして型安全性を確保

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
groupType から導出した特権フラグの変数名を実態に合わせて統一。
IPC ファイルへの書き出しフィールド名も isPrivileged に変更。

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- db.ts parseGroupType: NULLのみis_mainフォールバック、不正文字列は警告+'chat'
- ipc-mcp-stdio.ts: ホスト側未使用のisPrivilegedフィールドをIPCペイロードから削除
- container-runner.ts: settings.jsonパース失敗時に警告ログを追加

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
shin902 and others added 23 commits April 27, 2026 00:44
docs: ソースコードの英語コメントを日本語に翻訳
nanoclaw.yaml にチャンネル別RSSフィード設定を追加し、15分ポーリングで新着記事URLを自動配信する。

- rss-config.ts: nanoclaw.yaml の rss.channels 読み込み
- db.ts: rss_seen_items テーブルと既読管理関数を追加
- rss-poller.ts: 15分間隔ポーリング、fast-xml-parser でRSS/Atomパース
- index.ts: startRssPoller を main() に統合
- setup-rss スキル: RSS設定手順を追加
- rss.test.ts: 設定読み込み・既読管理・ポーラーのテストを追加
Co-authored-by: Copilot <copilot@github.com>
fix: pollOnce関数で未登録のチャンネルをスキップするロジックを修正
test: getSeenItemIdsのユニットテストを追加
refactor: sortByPubDate関数のコードスタイルを改善し、可読性を向上させた
feat: RSSフィードの自動配信機能を追加
fast-xml-parser が <link rel="alternate" href="..."/> を文字列でなく
オブジェクトまたは配列として返すため、link?.trim() が TypeError になっていた。
extractLink() ヘルパーで string / object / array の各形式を統一処理する。
Atom フィードの pubDate 相当フィールド(published / updated)も日付ソートに使用する。

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
@openclaw-shi
Copy link
Copy Markdown
Author

誤って upstream に出してしまったため閉じます。

Copy link
Copy Markdown

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: d374c57d15

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread src/provider-config.ts
Comment on lines +95 to +97
return envPath.startsWith('~')
? path.join(os.homedir(), envPath.slice(1))
: envPath;
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P1 Badge Expand ~/ auth paths relative to home directory

When OAS_CODEX_AUTH_PATH is set to a common ~/... value, envPath.slice(1) leaves a leading slash (for example "/.codex/auth.json"), so path.join(os.homedir(), envPath.slice(1)) resolves to the filesystem root path instead of the user’s home directory. In that case the code reads /.codex/auth.json, fails to find valid credentials, and incorrectly treats Codex as unconfigured even though ~/.codex/auth.json exists.

Useful? React with 👍 / 👎.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants