@ozzylabs/feedradar 0.2.1 → 0.2.2
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 +51 -13
- package/README.md +51 -13
- package/dist/agents/_boundary.d.ts +21 -0
- package/dist/agents/_boundary.d.ts.map +1 -1
- package/dist/agents/_boundary.js +34 -0
- package/dist/agents/_boundary.js.map +1 -1
- package/dist/agents/claude-code.d.ts.map +1 -1
- package/dist/agents/claude-code.js +14 -6
- package/dist/agents/claude-code.js.map +1 -1
- package/dist/agents/codex-cli.d.ts.map +1 -1
- package/dist/agents/codex-cli.js +13 -7
- package/dist/agents/codex-cli.js.map +1 -1
- package/dist/agents/copilot.d.ts.map +1 -1
- package/dist/agents/copilot.js +13 -6
- package/dist/agents/copilot.js.map +1 -1
- package/dist/agents/gemini-cli.d.ts.map +1 -1
- package/dist/agents/gemini-cli.js +13 -6
- package/dist/agents/gemini-cli.js.map +1 -1
- package/dist/agents/types.d.ts +26 -0
- package/dist/agents/types.d.ts.map +1 -1
- package/dist/claude-skills/dismiss/SKILL.md +4 -4
- package/dist/claude-skills/research/SKILL.md +2 -3
- package/dist/claude-skills/review/SKILL.md +2 -2
- package/dist/claude-skills/update/SKILL.md +7 -7
- package/dist/cli/_locale.d.ts +96 -0
- package/dist/cli/_locale.d.ts.map +1 -0
- package/dist/cli/_locale.js +130 -0
- package/dist/cli/_locale.js.map +1 -0
- package/dist/cli/_progress.d.ts +30 -1
- package/dist/cli/_progress.d.ts.map +1 -1
- package/dist/cli/_progress.js +9 -1
- package/dist/cli/_progress.js.map +1 -1
- package/dist/cli/dismiss.d.ts.map +1 -1
- package/dist/cli/dismiss.js +61 -54
- package/dist/cli/dismiss.js.map +1 -1
- package/dist/cli/doctor.d.ts +8 -0
- package/dist/cli/doctor.d.ts.map +1 -1
- package/dist/cli/doctor.js +91 -60
- package/dist/cli/doctor.js.map +1 -1
- package/dist/cli/index.d.ts +36 -1
- package/dist/cli/index.d.ts.map +1 -1
- package/dist/cli/index.js +79 -18
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/init.d.ts +15 -0
- package/dist/cli/init.d.ts.map +1 -1
- package/dist/cli/init.js +149 -51
- package/dist/cli/init.js.map +1 -1
- package/dist/cli/items.d.ts.map +1 -1
- package/dist/cli/items.js +51 -30
- package/dist/cli/items.js.map +1 -1
- package/dist/cli/research.d.ts.map +1 -1
- package/dist/cli/research.js +138 -109
- package/dist/cli/research.js.map +1 -1
- package/dist/cli/review.d.ts.map +1 -1
- package/dist/cli/review.js +114 -92
- package/dist/cli/review.js.map +1 -1
- package/dist/cli/routine/fire.d.ts +3 -2
- package/dist/cli/routine/fire.d.ts.map +1 -1
- package/dist/cli/routine/fire.js +30 -25
- package/dist/cli/routine/fire.js.map +1 -1
- package/dist/cli/routine/generate-pipeline.d.ts +11 -4
- package/dist/cli/routine/generate-pipeline.d.ts.map +1 -1
- package/dist/cli/routine/generate-pipeline.js +137 -77
- package/dist/cli/routine/generate-pipeline.js.map +1 -1
- package/dist/cli/routine/generate-watch.d.ts +10 -1
- package/dist/cli/routine/generate-watch.d.ts.map +1 -1
- package/dist/cli/routine/generate-watch.js +49 -42
- package/dist/cli/routine/generate-watch.js.map +1 -1
- package/dist/cli/routine.d.ts.map +1 -1
- package/dist/cli/routine.js +28 -24
- package/dist/cli/routine.js.map +1 -1
- package/dist/cli/source.d.ts.map +1 -1
- package/dist/cli/source.js +206 -182
- package/dist/cli/source.js.map +1 -1
- package/dist/cli/triage.d.ts.map +1 -1
- package/dist/cli/triage.js +146 -130
- package/dist/cli/triage.js.map +1 -1
- package/dist/cli/undismiss.d.ts.map +1 -1
- package/dist/cli/undismiss.js +32 -25
- package/dist/cli/undismiss.js.map +1 -1
- package/dist/cli/update.d.ts.map +1 -1
- package/dist/cli/update.js +77 -61
- package/dist/cli/update.js.map +1 -1
- package/dist/cli/watch.d.ts.map +1 -1
- package/dist/cli/watch.js +71 -31
- package/dist/cli/watch.js.map +1 -1
- package/dist/cli/workflow/generate-combined-with-triage.d.ts +9 -2
- package/dist/cli/workflow/generate-combined-with-triage.d.ts.map +1 -1
- package/dist/cli/workflow/generate-combined-with-triage.js +120 -71
- package/dist/cli/workflow/generate-combined-with-triage.js.map +1 -1
- package/dist/cli/workflow/generate-combined.d.ts +8 -1
- package/dist/cli/workflow/generate-combined.d.ts.map +1 -1
- package/dist/cli/workflow/generate-combined.js +39 -33
- package/dist/cli/workflow/generate-combined.js.map +1 -1
- package/dist/cli/workflow/generate-watch.d.ts +10 -1
- package/dist/cli/workflow/generate-watch.d.ts.map +1 -1
- package/dist/cli/workflow/generate-watch.js +37 -30
- package/dist/cli/workflow/generate-watch.js.map +1 -1
- package/dist/cli/workflow.d.ts.map +1 -1
- package/dist/cli/workflow.js +28 -23
- package/dist/cli/workflow.js.map +1 -1
- package/dist/core/config.d.ts +2 -1
- package/dist/core/config.d.ts.map +1 -1
- package/dist/core/config.js +14 -4
- package/dist/core/config.js.map +1 -1
- package/dist/core/feeds/html-js.d.ts.map +1 -1
- package/dist/core/feeds/html-js.js +16 -9
- package/dist/core/feeds/html-js.js.map +1 -1
- package/dist/core/feeds/types.d.ts +9 -0
- package/dist/core/feeds/types.d.ts.map +1 -1
- package/dist/core/locale.d.ts +69 -0
- package/dist/core/locale.d.ts.map +1 -0
- package/dist/core/locale.js +74 -0
- package/dist/core/locale.js.map +1 -0
- package/dist/core/watcher.d.ts +11 -0
- package/dist/core/watcher.d.ts.map +1 -1
- package/dist/core/watcher.js +21 -5
- package/dist/core/watcher.js.map +1 -1
- package/dist/i18n/index.d.ts +57 -0
- package/dist/i18n/index.d.ts.map +1 -0
- package/dist/i18n/index.js +49 -0
- package/dist/i18n/index.js.map +1 -0
- package/dist/i18n/messages/en.d.ts +993 -0
- package/dist/i18n/messages/en.d.ts.map +1 -0
- package/dist/i18n/messages/en.js +1096 -0
- package/dist/i18n/messages/en.js.map +1 -0
- package/dist/i18n/messages/ja.d.ts +13 -0
- package/dist/i18n/messages/ja.d.ts.map +1 -0
- package/dist/i18n/messages/ja.js +970 -0
- package/dist/i18n/messages/ja.js.map +1 -0
- package/dist/schemas/config.d.ts +7 -0
- package/dist/schemas/config.d.ts.map +1 -1
- package/dist/schemas/config.js +5 -0
- package/dist/schemas/config.js.map +1 -1
- package/dist/schemas/recipe.d.ts +1 -1
- package/dist/schemas/source.d.ts +3 -3
- package/dist/skills/research/SKILL.md +13 -12
- package/dist/skills/review/SKILL.md +13 -12
- package/dist/skills/update/SKILL.md +19 -19
- package/dist/templates/en/agents/AGENTS.md +284 -0
- package/dist/templates/en/claude/CLAUDE.md +5 -0
- package/dist/templates/en/default.md +16 -0
- package/dist/templates/en/digest.md +66 -0
- package/dist/templates/en/feedradar.md +235 -0
- package/dist/templates/{routines → en/routines}/pipeline.yaml.tmpl +18 -20
- package/dist/templates/{routines → en/routines}/watch-daily.yaml +12 -15
- package/dist/templates/{routines → en/routines}/watch.yaml.tmpl +11 -14
- package/dist/templates/{workflows → en/workflows}/combined-with-triage.template.yaml.tmpl +3 -3
- package/dist/templates/{workflows → en/workflows}/combined.template.yaml.tmpl +6 -6
- package/dist/templates/{workflows → en/workflows}/watch.template.yaml.tmpl +8 -8
- package/dist/templates/{workflows → en/workflows}/watch.yaml +3 -3
- package/dist/templates/{agents → ja/agents}/AGENTS.md +16 -16
- package/dist/templates/{digest.md → ja/digest.md} +5 -6
- package/dist/templates/{feedradar.md → ja/feedradar.md} +12 -12
- package/dist/templates/ja/routines/pipeline.yaml.tmpl +211 -0
- package/dist/templates/ja/routines/watch-daily.yaml +151 -0
- package/dist/templates/ja/routines/watch.yaml.tmpl +145 -0
- package/dist/templates/ja/workflows/combined-with-triage.template.yaml.tmpl +123 -0
- package/dist/templates/ja/workflows/combined.template.yaml.tmpl +109 -0
- package/dist/templates/ja/workflows/watch.template.yaml.tmpl +100 -0
- package/dist/templates/ja/workflows/watch.yaml +73 -0
- package/package.json +1 -1
- /package/dist/templates/{claude → ja/claude}/CLAUDE.md +0 -0
- /package/dist/templates/{default.md → ja/default.md} +0 -0
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
# `radar workflow generate combined` テンプレート。
|
|
2
|
+
#
|
|
3
|
+
# `radar watch run` -> 「新規アイテムがなければスキップ」ガード -> `radar research
|
|
4
|
+
# --batch` -> `git commit/push --rebase` リトライを単一ジョブ内で連結し、検出から
|
|
5
|
+
# リサーチまでの遅延を 2 つに分かれたワークフローではなく cron 1 ティックに収める。
|
|
6
|
+
#
|
|
7
|
+
# `src/cli/workflow/generate-combined.ts` が差し込むプレースホルダ:
|
|
8
|
+
# {{cron}} — スケジュールの cron 式(デフォルト "0 0 * * *")
|
|
9
|
+
# {{maxItems}} — `--max-items` のハードキャップ(デフォルト 10)
|
|
10
|
+
# {{filterTags}} — `--filter-tags` 引数を単一の CLI リテラルとして(フィルタが
|
|
11
|
+
# 無効なときは空になり、行は素の `--batch` に縮む)
|
|
12
|
+
# {{agent}} — エージェント ID リテラル(claude-code|codex-cli|gemini-cli|copilot)
|
|
13
|
+
# {{secretsBlock}} — エージェント固有の `env:` 本体(共通デフォルトはなく、CLI
|
|
14
|
+
# ジェネレータが 4 種のプリビルト断片から 1 つを選ぶ。OAuth
|
|
15
|
+
# トークンは決して注入しない)
|
|
16
|
+
#
|
|
17
|
+
# ハードキャップの根拠: この YAML は `--max-items {{maxItems}}` をリテラルで埋め込み、
|
|
18
|
+
# ワークフローを監査すれば CLI ソースを読み直さずともキャップが分かるようにしている。
|
|
19
|
+
# CLI 側もキャップを再強制する(`src/cli/research.ts` の
|
|
20
|
+
# `RESEARCH_BATCH_DEFAULT_MAX_ITEMS`)ため、手で編集した YAML でも 1 回の呼び出し内で
|
|
21
|
+
# 超過できない(多層防御: YAML リテラル + CLI デフォルト)。
|
|
22
|
+
|
|
23
|
+
name: feedradar-combined
|
|
24
|
+
|
|
25
|
+
on:
|
|
26
|
+
schedule:
|
|
27
|
+
- cron: "{{cron}}"
|
|
28
|
+
workflow_dispatch: {}
|
|
29
|
+
|
|
30
|
+
permissions:
|
|
31
|
+
contents: write
|
|
32
|
+
|
|
33
|
+
concurrency:
|
|
34
|
+
# 種別スコープの concurrency グループ。watch のみと combined のワークフローは
|
|
35
|
+
# 互いを直列化してはならない(cadence もスコープも異なる)ため、種別ごとに
|
|
36
|
+
# 独自の `feedradar-<type>-${{ github.ref }}` グループを持つ。
|
|
37
|
+
group: feedradar-combined-${{ github.ref }}
|
|
38
|
+
cancel-in-progress: false
|
|
39
|
+
|
|
40
|
+
jobs:
|
|
41
|
+
combined:
|
|
42
|
+
runs-on: ubuntu-latest
|
|
43
|
+
timeout-minutes: 30
|
|
44
|
+
steps:
|
|
45
|
+
- name: ワークスペースをチェックアウト
|
|
46
|
+
uses: actions/checkout@v4
|
|
47
|
+
with:
|
|
48
|
+
fetch-depth: 0
|
|
49
|
+
persist-credentials: true
|
|
50
|
+
|
|
51
|
+
- name: Node.js をセットアップ
|
|
52
|
+
uses: actions/setup-node@v4
|
|
53
|
+
with:
|
|
54
|
+
node-version: "22.21"
|
|
55
|
+
|
|
56
|
+
- name: FeedRadar をインストール
|
|
57
|
+
run: npm install -g @ozzylabs/feedradar
|
|
58
|
+
|
|
59
|
+
- name: watch を実行
|
|
60
|
+
env:
|
|
61
|
+
{{secretsBlock}}
|
|
62
|
+
run: radar watch run
|
|
63
|
+
|
|
64
|
+
- name: 新規アイテムがなければ research をスキップ
|
|
65
|
+
id: detect_changes
|
|
66
|
+
# `watch run` が新規アイテムを生まなかったときは research ステップを
|
|
67
|
+
# まるごとスキップする。さもないと、暴走検出キャップがあっても空のキューに対して
|
|
68
|
+
# 丸ごと 1 回の `radar research --batch` 呼び出し(テンプレ読み込み・アイテム走査)を
|
|
69
|
+
# 消費してしまう。
|
|
70
|
+
run: |
|
|
71
|
+
if [ -z "$(git status --porcelain items/)" ]; then
|
|
72
|
+
echo "no new items in items/; skipping research step"
|
|
73
|
+
echo "has_changes=false" >> "$GITHUB_OUTPUT"
|
|
74
|
+
else
|
|
75
|
+
echo "has_changes=true" >> "$GITHUB_OUTPUT"
|
|
76
|
+
fi
|
|
77
|
+
|
|
78
|
+
- name: 検出したアイテムを research(最大 {{maxItems}} 件, agent={{agent}})
|
|
79
|
+
if: steps.detect_changes.outputs.has_changes == 'true'
|
|
80
|
+
env:
|
|
81
|
+
{{secretsBlock}}
|
|
82
|
+
# `--batch` は items/ を status=detected で走査し、filter-tags の許可リストを
|
|
83
|
+
# 適用し、`--max-items` 件のレポートを書き終えたら停止する。CLI 側もキャップを
|
|
84
|
+
# 再強制するため、手で編集した YAML でも超過できない。
|
|
85
|
+
run: radar research --batch --status detected --max-items {{maxItems}}{{filterTags}} --agent {{agent}}
|
|
86
|
+
|
|
87
|
+
- name: リトライ付きでコミットして push
|
|
88
|
+
if: steps.detect_changes.outputs.has_changes == 'true'
|
|
89
|
+
# 失敗のあいだに `git pull --rebase --autostash` を挟む 3 回試行 push。
|
|
90
|
+
# items/ / state/ / research/ を奪い合う 2 つの並行 feedradar ワークフロー
|
|
91
|
+
# (例: watch-hourly + combined-weekly)向けに調整している。
|
|
92
|
+
run: |
|
|
93
|
+
git config user.name "feedradar-bot"
|
|
94
|
+
git config user.email "feedradar-bot@users.noreply.github.com"
|
|
95
|
+
git add items/ state/ research/
|
|
96
|
+
if git diff --cached --quiet; then
|
|
97
|
+
echo "nothing staged; exiting cleanly"
|
|
98
|
+
exit 0
|
|
99
|
+
fi
|
|
100
|
+
git commit -m "chore(feedradar): combined watch + research $(date -u +%Y-%m-%d)"
|
|
101
|
+
for attempt in 1 2 3; do
|
|
102
|
+
if git push origin "${GITHUB_REF_NAME}"; then
|
|
103
|
+
exit 0
|
|
104
|
+
fi
|
|
105
|
+
echo "push failed (attempt ${attempt}/3), rebasing..."
|
|
106
|
+
git pull --rebase --autostash origin "${GITHUB_REF_NAME}"
|
|
107
|
+
done
|
|
108
|
+
echo "push failed after 3 attempts" >&2
|
|
109
|
+
exit 1
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
# `radar workflow generate watch` が生成する GitHub Actions の雛形。
|
|
2
|
+
# cron スケジュール・sources・コミットメッセージは自分のワークフローに合わせて編集する。
|
|
3
|
+
# 認証ポリシー: API キーのみ。Claude Code の OAuth トークンは
|
|
4
|
+
# Anthropic の利用規約により無人ワークフローでは禁止。
|
|
5
|
+
#
|
|
6
|
+
# このテンプレートはプレースホルダ駆動で、init 後に再生成するための変種。
|
|
7
|
+
# `src/templates/en/workflows/watch.yaml`(init --with-actions が初回ブートストラップで
|
|
8
|
+
# 出力するもの)は後方互換のため別に保持している。違いは次のとおり:
|
|
9
|
+
#
|
|
10
|
+
# - cron スケジュール・出力先・エージェントの secret 名は、書き込み前に
|
|
11
|
+
# `generate-watch.ts` が CLI フラグから差し込む。
|
|
12
|
+
# - `concurrency.group` を `feedradar-watch-` にスコープし、複数のワークフロー種別
|
|
13
|
+
# (watch / combined)が互いをキャンセルせず並走できるようにしている。下記の
|
|
14
|
+
# rebase リトライと組み合わせて push 衝突を緩和する。
|
|
15
|
+
# - `Commit and push with retry` ステップは、並行 cron による push を吸収するため
|
|
16
|
+
# 最大 3 回まで `git pull --rebase` をリトライする。
|
|
17
|
+
|
|
18
|
+
name: feedradar-watch
|
|
19
|
+
|
|
20
|
+
on:
|
|
21
|
+
schedule:
|
|
22
|
+
- cron: "{{cron}}"
|
|
23
|
+
workflow_dispatch: {}
|
|
24
|
+
|
|
25
|
+
permissions:
|
|
26
|
+
# 検出したアイテム / state をワークスペースのブランチへコミットするのに必要。
|
|
27
|
+
contents: write
|
|
28
|
+
|
|
29
|
+
concurrency:
|
|
30
|
+
# 種別ごとのグループ。`watch` と `combined` のワークフローが互いをキャンセルしない。
|
|
31
|
+
# 同一種別の並行実行はこのグループで直列化される。
|
|
32
|
+
group: feedradar-watch-${{ github.ref }}
|
|
33
|
+
cancel-in-progress: false
|
|
34
|
+
|
|
35
|
+
jobs:
|
|
36
|
+
watch:
|
|
37
|
+
runs-on: ubuntu-latest
|
|
38
|
+
timeout-minutes: 15
|
|
39
|
+
steps:
|
|
40
|
+
- name: ワークスペースをチェックアウト
|
|
41
|
+
uses: actions/checkout@v4
|
|
42
|
+
with:
|
|
43
|
+
# 並行 push の上に rebase できるよう履歴が必要。
|
|
44
|
+
fetch-depth: 0
|
|
45
|
+
persist-credentials: true
|
|
46
|
+
|
|
47
|
+
- name: Node.js をセットアップ
|
|
48
|
+
uses: actions/setup-node@v4
|
|
49
|
+
with:
|
|
50
|
+
# radar が HTTPS_PROXY / HTTP_PROXY を自動検出して --use-env-proxy で
|
|
51
|
+
# 再起動するには Node 22.21+(または 24.5+)が必要。
|
|
52
|
+
node-version: "22.21"
|
|
53
|
+
|
|
54
|
+
- name: FeedRadar をインストール
|
|
55
|
+
# バージョンを決めたらリリースに固定する。この雛形では
|
|
56
|
+
# 最新の公開ビルドをインストールする。
|
|
57
|
+
run: npm install -g @ozzylabs/feedradar
|
|
58
|
+
|
|
59
|
+
- name: watch を実行
|
|
60
|
+
env:
|
|
61
|
+
# エージェント API に対して認証する(API キーのみ、OAuth は使わない)。
|
|
62
|
+
# 下記の secret 名はエージェント別の規約に従う。追加すべき正確な
|
|
63
|
+
# secret 名は生成後の標準出力を参照。
|
|
64
|
+
{{agentEnvKey}}: ${{ secrets.{{agentEnvKey}} }}
|
|
65
|
+
# github-releases アダプタの GitHub REST API レート上限を
|
|
66
|
+
# 60 → 5000 req/h に引き上げる。
|
|
67
|
+
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
68
|
+
run: radar watch run
|
|
69
|
+
|
|
70
|
+
- name: リトライ付きでコミットして push
|
|
71
|
+
# items/ と state/ の更新を永続化し、次回の定期実行が前回の
|
|
72
|
+
# lastSeenIds と差分を取れるようにする。Routines / Actions はどちらも
|
|
73
|
+
# 毎回クリーンに clone するため、state は git に置く必要がある。
|
|
74
|
+
#
|
|
75
|
+
# push 衝突の緩和: 別のワークフロー(例: combined.yaml)が並行して
|
|
76
|
+
# push すると `git push` が non-fast-forward で失敗する。各試行で
|
|
77
|
+
# rebase しながら最大 3 回リトライする。autostash により index 外の
|
|
78
|
+
# bot 側変更も rebase をまたいで保全される。4 回以上は構造的な問題
|
|
79
|
+
# (branch protection・トークン障害・本当のマージ衝突)を示すため、
|
|
80
|
+
# それ以上リトライせず即座に失敗させる。
|
|
81
|
+
run: |
|
|
82
|
+
set -euo pipefail
|
|
83
|
+
git config user.name "github-actions[bot]"
|
|
84
|
+
git config user.email "41898282+github-actions[bot]@users.noreply.github.com"
|
|
85
|
+
if git diff --quiet items/ state/; then
|
|
86
|
+
echo "no changes detected; skipping commit"
|
|
87
|
+
exit 0
|
|
88
|
+
fi
|
|
89
|
+
git add items/ state/
|
|
90
|
+
git commit -m "chore(watch): detected items $(date -u +%Y-%m-%d)"
|
|
91
|
+
for attempt in 1 2 3; do
|
|
92
|
+
if git push origin "${GITHUB_REF_NAME}"; then
|
|
93
|
+
echo "push succeeded on attempt ${attempt}"
|
|
94
|
+
exit 0
|
|
95
|
+
fi
|
|
96
|
+
echo "push failed (attempt ${attempt}/3), rebasing..."
|
|
97
|
+
git pull --rebase --autostash origin "${GITHUB_REF_NAME}"
|
|
98
|
+
done
|
|
99
|
+
echo "push failed after 3 attempts" >&2
|
|
100
|
+
exit 1
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
# `radar init --with-actions` が生成する GitHub Actions の雛形。
|
|
2
|
+
# cron スケジュール・sources・コミットメッセージは自分のワークフローに合わせて編集する。
|
|
3
|
+
# 認証ポリシー: API キーのみ。Claude Code の OAuth トークンは
|
|
4
|
+
# Anthropic の利用規約により無人ワークフローでは禁止。
|
|
5
|
+
|
|
6
|
+
name: feedradar
|
|
7
|
+
|
|
8
|
+
on:
|
|
9
|
+
schedule:
|
|
10
|
+
# 毎日 00:00 UTC。自分のペースに合わせて調整する。
|
|
11
|
+
- cron: "0 0 * * *"
|
|
12
|
+
workflow_dispatch: {}
|
|
13
|
+
|
|
14
|
+
permissions:
|
|
15
|
+
# 検出したアイテム / state をワークスペースのブランチへコミットするのに必要。
|
|
16
|
+
contents: write
|
|
17
|
+
|
|
18
|
+
concurrency:
|
|
19
|
+
group: feedradar-${{ github.ref }}
|
|
20
|
+
cancel-in-progress: false
|
|
21
|
+
|
|
22
|
+
jobs:
|
|
23
|
+
watch:
|
|
24
|
+
runs-on: ubuntu-latest
|
|
25
|
+
timeout-minutes: 15
|
|
26
|
+
steps:
|
|
27
|
+
- name: ワークスペースをチェックアウト
|
|
28
|
+
uses: actions/checkout@v4
|
|
29
|
+
with:
|
|
30
|
+
# 同じブランチへコミットを push し戻せるよう履歴が必要。
|
|
31
|
+
fetch-depth: 0
|
|
32
|
+
# push 時に GITHUB_TOKEN の identity を使う — 下記の
|
|
33
|
+
# "Commit state" ステップを参照。
|
|
34
|
+
persist-credentials: true
|
|
35
|
+
|
|
36
|
+
- name: Node.js をセットアップ
|
|
37
|
+
uses: actions/setup-node@v4
|
|
38
|
+
with:
|
|
39
|
+
# radar が HTTPS_PROXY / HTTP_PROXY を自動検出して --use-env-proxy で
|
|
40
|
+
# 再起動するには Node 22.21+(または 24.5+)が必要。
|
|
41
|
+
# 古い 22.x はこのフラグを欠くため、HTTPS_PROXY を設定しても
|
|
42
|
+
# `radar` は proxy サポートなしで動作してしまう。
|
|
43
|
+
node-version: "22.21"
|
|
44
|
+
|
|
45
|
+
- name: FeedRadar をインストール
|
|
46
|
+
# バージョンを決めたらリリースに固定する。この雛形では
|
|
47
|
+
# 最新の公開ビルドをインストールする。
|
|
48
|
+
run: npm install -g @ozzylabs/feedradar
|
|
49
|
+
|
|
50
|
+
- name: watch を実行
|
|
51
|
+
env:
|
|
52
|
+
# Anthropic API に対して認証する。このワークフローは `watch run` しか
|
|
53
|
+
# 呼ばないが、後続の `research`/`review`/`update` コマンドに必要。
|
|
54
|
+
ANTHROPIC_API_KEY: ${{ secrets.ANTHROPIC_API_KEY }}
|
|
55
|
+
# github-releases アダプタの GitHub REST API レート上限を
|
|
56
|
+
# 60 → 5000 req/h に引き上げる。
|
|
57
|
+
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
58
|
+
run: radar watch run
|
|
59
|
+
|
|
60
|
+
- name: state をコミット
|
|
61
|
+
# items/ と state/ の更新を永続化し、次回の定期実行が前回の
|
|
62
|
+
# lastSeenIds と差分を取れるようにする。Routines / Actions はどちらも
|
|
63
|
+
# 毎回クリーンに clone するため、state は git に置く必要がある。
|
|
64
|
+
run: |
|
|
65
|
+
if git diff --quiet items/ state/; then
|
|
66
|
+
echo "no changes detected; skipping commit"
|
|
67
|
+
exit 0
|
|
68
|
+
fi
|
|
69
|
+
git config user.name "github-actions[bot]"
|
|
70
|
+
git config user.email "41898282+github-actions[bot]@users.noreply.github.com"
|
|
71
|
+
git add items/ state/
|
|
72
|
+
git commit -m "chore(watch): detected items $(date -u +%Y-%m-%d)"
|
|
73
|
+
git push
|
package/package.json
CHANGED
|
File without changes
|
|
File without changes
|