Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
349 commits
Select commit Hold shift + click to select a range
bda4c84
feat(discord): multi-bot collaboration mode (/collab)
changhansung May 11, 2026
aeb96e0
chore: remove dev2 steering file
changhansung May 11, 2026
4e126ab
feat: pre_task_command + General steering tips
changhansung May 11, 2026
5f5c301
fix(ctx): support kiro-cli prompt with lambda symbol (X% λ !>)
changhansung May 12, 2026
744a967
fix(ctx): remove $ anchor — kiro prompt has hint text after !>
changhansung May 12, 2026
2b5203f
feat: bundle general-knowledge/ for auto-sync to General steering
changhansung May 13, 2026
73c860e
fix(knowledge): fork instance use tmux send-keys instead of /raw
changhansung May 13, 2026
6226af2
docs(knowledge): note skills are kiro-cli backend only
changhansung May 13, 2026
9297c93
fix(knowledge): fork uses tmux for both save+load, wait for idle
changhansung May 13, 2026
c5005a2
fix(resume): don't skip resume on instructions change — notify instead
changhansung May 14, 2026
e534526
feat(telegram): add ClassicBot mode for private chats and groups
changhansung May 14, 2026
36ba6ff
fix(telegram): bypass fleet ACL for classic mode candidates
changhansung May 14, 2026
5fbb092
feat: multi-adapter support — fleet.yaml channels array
changhansung May 14, 2026
20867ad
fix: multi-adapter review issues — general binding, double-stop, inbo…
changhansung May 14, 2026
e8f646d
feat(quickstart): multi-platform UX — Both option + Add another platform
changhansung May 14, 2026
0acc141
fix: reviewer findings — additional adapter completeness + .env token…
changhansung May 14, 2026
566ba91
feat(knowledge): add batch backup + fleet health check skills
changhansung May 15, 2026
e601e79
fix(knowledge): skip own instance in batch backup to avoid collision
changhansung May 15, 2026
d67c0a5
fix: wrap startSharedAdapter + registerBotCommands in try-catch
changhansung May 15, 2026
a6b087a
feat: auto-create per-platform general instances for multi-channel
changhansung May 15, 2026
5b552df
feat: multi-adapter general instance routing
changhansung May 15, 2026
5f79ac9
fix: support channels[] array for topicMode detection and adapter sta…
changhansung May 15, 2026
3516e35
fix: channels[] mode — always set channel fallback + per-adapter grou…
changhansung May 15, 2026
f54c119
feat(cli): add Source column (TG/DC/—) to agend ls
changhansung May 15, 2026
9182f94
Merge branch 'fix/ls-source-column' into discord-ux
changhansung May 15, 2026
ebddb7e
chore: remove dev2 steering file
changhansung May 15, 2026
19f8bb1
fix: per-adapter access control in handleInboundMessage
changhansung May 15, 2026
fb6e44e
fix: channels[] array support — saveFleetConfig, notifications, bot c…
changhansung May 15, 2026
fbe48b7
fix: general-telegram replies to correct platform
changhansung May 15, 2026
e3982c3
fix: handleGeneralCommand replies to correct adapter
changhansung May 15, 2026
8cdc856
fix: per-adapter routing for all 10 P0+P1 issues
changhansung May 15, 2026
d4c13f4
fix: per-instance groupId routing
changhansung May 15, 2026
65121fc
refactor: introduce AdapterWorld class
changhansung May 18, 2026
a018428
refactor: fleet-manager fully uses AdapterWorld for per-instance routing
changhansung May 18, 2026
a995125
fix: strip @BotUsername from Telegram classic commands
changhansung May 18, 2026
b4f0dac
fix: pass stripped text to group classic handler + @mention as /chat …
changhansung May 18, 2026
77d2cdc
fix: create_instance creates topic on caller's world (not always prim…
changhansung May 18, 2026
e7cbe61
fix: /status /restart /sysinfo work in TG general topic, remove /upda…
changhansung May 18, 2026
51ac615
feat: /ctx text command works in any Telegram/Discord topic
changhansung May 18, 2026
2d09cee
fix: bind classic instance adapter on every message (not just /start)
changhansung May 18, 2026
663a165
fix: agend ls classic instance names match runtime (apply sanitizeIns…
changhansung May 18, 2026
adc2c99
fix: scheduler runCatchUp parses SQLite datetime as UTC (prevents dup…
changhansung May 18, 2026
8ee2479
feat: auto-detect new groups/servers and notify admin for approval
changhansung May 19, 2026
e95512a
feat: Discord adapter reads forwarded messages and embeds
changhansung May 19, 2026
9e6513e
feat: forward attachments (images) from Discord message snapshots
changhansung May 19, 2026
405d712
fix: support multiple photo attachments (not just first)
changhansung May 19, 2026
f02e45e
fix: collab mode align with /chat — no double download, /raw block, e…
changhansung May 19, 2026
c8029b7
chore: remove accidentally committed files
changhansung May 20, 2026
895dea5
feat: add Antigravity CLI backend (agy)
changhansung May 20, 2026
56dac51
fix: antigravity backend — namespaced MCP keys, cleanup, remove dead …
changhansung May 20, 2026
5d792a5
fix: add antigravity to backend schema enums (MCP + web-api)
changhansung May 20, 2026
f5f8f1a
perf: increase startup concurrency to 10, reduce stagger to 500ms
changhansung May 20, 2026
95e0fec
fix: Telegram polling auto-reconnect on transient errors (network/tim…
changhansung May 20, 2026
a49b370
fix: force IPv4 DNS resolution (fixes IPv6 timeout in corporate/WSL)
changhansung May 20, 2026
fbbde2e
fix: TG classic — only trigger on own bot @mention + photo-only messa…
changhansung May 20, 2026
e081558
fix: restore 📸 react for /chat with photo attachment
changhansung May 20, 2026
4583f85
fix: Discord classic bot 📸 react uses channelId (threadId) not guildId
changhansung May 20, 2026
800ecce
fix: use Telegram-compatible emoji for reactions (👌 for photo, 👍 for …
changhansung May 20, 2026
6ad62c3
fix: agend ls Source column detects TG/DC for classic instances + fle…
changhansung May 20, 2026
b02809f
feat: fleet.log rotation + staggered restart notifications
changhansung May 21, 2026
71ad7d5
fix: multiple attachments support + classic instance hot-reload prote…
changhansung May 22, 2026
fb5a6d6
docs: fleet knowledge — image subagent rule, startup steering, instan…
changhansung May 22, 2026
16a6aab
docs: update install instructions to @songsid/agend
changhansung May 22, 2026
37d6cd3
chore: add install.sh to repo root for GitHub Pages
changhansung May 22, 2026
583984f
chore: add .nojekyll for GitHub Pages static serving
changhansung May 22, 2026
4565ea8
feat: install.sh includes discord plugin
changhansung May 22, 2026
6b9d143
fix: ensure nvm loads in login shells + hint for new terminals
changhansung May 22, 2026
844b645
fix: plugin lookup tries @songsid scope first, then @suzuke fallback
changhansung May 22, 2026
32b0ad8
fix: unique filenames in downloadAttachment to prevent race condition
changhansung May 22, 2026
f8b9cf4
fix: install.sh auto-detect sudo for system-level npm
changhansung May 22, 2026
ffc0842
fix: install.sh removes old @suzuke/agend before installing @songsid
changhansung May 22, 2026
05ecb53
fix: replace remaining @suzuke references with @songsid in source code
changhansung May 22, 2026
c567c45
fix: revert discord plugin imports to @suzuke for local dev (publish …
changhansung May 22, 2026
13ccdde
feat: add publish.sh script (auto build + swap + publish + revert)
changhansung May 23, 2026
6a10085
feat: add GitHub Actions CI/CD — ci, publish, gitleaks workflows
changhansung May 23, 2026
4599f70
chore: remove session files (should not be in repo)
changhansung May 23, 2026
5af9edc
chore: add session file patterns to .gitignore
changhansung May 23, 2026
2d65d84
chore: remove .kiro/steering from repo + add to .gitignore
changhansung May 23, 2026
590f15c
docs: fix Kiro CLI install command (brew → official install script)
changhansung May 23, 2026
59d5c6c
fix: publish workflow — correct peerDependencies version for discord …
changhansung May 23, 2026
790e27d
fix: install.sh auto-install build-essential for native modules
changhansung May 23, 2026
31f8eca
fix: collab mode chat log includes attachment filenames
changhansung May 23, 2026
54a89a0
feat: complete agend update command — handles sudo, nvm, service, res…
changhansung May 23, 2026
e8dac61
fix(update): nvm-aware verify path, remove dead code, plugin version …
changhansung May 23, 2026
c9b2be5
docs: add general knowledge — update/restart, model names, config val…
changhansung May 23, 2026
7518830
fix(discord): stop treating stickers as photo attachments
changhansung May 23, 2026
483dd49
refactor: unify daemon.log to use rotation (same as fleet.log)
changhansung May 23, 2026
1f09063
fix: publish workflow — use npm install (not ci) for discord plugin (…
changhansung May 23, 2026
4b162b5
fix: install.sh shows discord plugin version in log
changhansung May 23, 2026
74348c1
feat: add access mode 'open' — allows all users without allowlist
changhansung May 25, 2026
47ab0ac
docs: add access mode reference to general knowledge
changhansung May 25, 2026
15342a5
fix: run daemon-reload before systemctl restart/start after update
changhansung May 25, 2026
9fa642f
fix: remove stale context rotation references from agent prompts
changhansung May 27, 2026
d72f332
feat: add model support to classicBot.yaml
changhansung May 28, 2026
8dd370d
perf: parallel instance stop with concurrency 5 + increase systemd ti…
changhansung May 29, 2026
ecc8283
feat: configurable context_lines per classic channel
changhansung May 29, 2026
3b828bf
fix: use new binary for service install during update
changhansung May 29, 2026
d268bfc
fix: allow context_lines=0 to disable chat log injection
changhansung May 29, 2026
a2b8865
fix: symlink agend/node to /usr/local/bin after nvm install
changhansung Jun 1, 2026
340f2b4
fix: initialize SUDO variable early to prevent unbound error
changhansung Jun 1, 2026
b122e16
feat: IPC + adapter auto-reconnect with infinite retry
changhansung Jun 2, 2026
58af349
Revert "feat: IPC + adapter auto-reconnect with infinite retry"
changhansung Jun 2, 2026
5f2b360
Revert "Revert "feat: IPC + adapter auto-reconnect with infinite retry""
changhansung Jun 2, 2026
a0e69ac
fix: kill old fleet process before restart in agend update
changhansung Jun 2, 2026
7fdbca0
fix: use PSS instead of RSS for memory reporting in agend ls
changhansung Jun 2, 2026
6bcf4d8
feat: show instance count and fleet memory total in agend ls footer
changhansung Jun 2, 2026
e3c829f
fix: only create /usr/local/bin symlinks when running as root
changhansung Jun 2, 2026
909d5ca
feat: workspace git init + /agent endpoint auth bypass
changhansung Jun 3, 2026
a2aaa79
feat: beta update channel support
changhansung Jun 3, 2026
a3d9f7d
feat: agy backend improvements — non-hidden symlink, .agents/ MCP con…
changhansung Jun 3, 2026
6d7f0b1
feat: antigravity backend defaults to CLI mode, drops MCP config
changhansung Jun 3, 2026
4e3e96b
fix: agy reads .agents/agents.md (lowercase)
changhansung Jun 3, 2026
ea8edfd
refactor: use real directory instead of symlink for agy workspace
changhansung Jun 3, 2026
18aad3f
docs: P0+P1 documentation update (antigravity, beta channel, reconnec…
changhansung Jun 5, 2026
b976bff
docs: P2 — sync zh-TW translations + fix CHANGELOG date
changhansung Jun 5, 2026
cddc1bc
chore: change default context_lines from 10 to 5
changhansung Jun 5, 2026
a93581d
fix: allow silence for cross-instance messages (silence = agreement)
changhansung Jun 5, 2026
e606dfd
feat: agy --model flag + gemini-cli deprecated warning
changhansung Jun 8, 2026
377c933
Merge remote-tracking branch 'origin/main'
changhansung Jun 8, 2026
3d273b1
fix: move 👀 auto-react before processAttachments for instant feedback
changhansung Jun 9, 2026
f828249
fix: react before setTopicIcon/archive to avoid Discord queue delay
changhansung Jun 9, 2026
c018d14
perf(discord): react() uses single REST PUT instead of 3 API calls
changhansung Jun 9, 2026
f473342
fix: add reset-failed before start in agend update restart
changhansung Jun 10, 2026
04a7058
fix: use threadId for Discord react (chatId is guild ID, not channel)
changhansung Jun 10, 2026
21c6289
fix: use thread_id for Discord message_queued/delivered react
changhansung Jun 10, 2026
9133cd5
docs: update model skills — use CLI commands to discover models, add agy
changhansung Jun 10, 2026
a8377fe
docs: kiro-cli model discovery via /model in tmux
changhansung Jun 10, 2026
2c274a2
refactor: split general-knowledge into steering + skills
changhansung Jun 10, 2026
0279137
docs: update CHANGELOG with v0.0.17 beta changes
changhansung Jun 11, 2026
9eec0e7
release: v0.0.17
changhansung Jun 11, 2026
a00991b
feat: skip incompatible model when backend doesn't recognize it
changhansung Jun 11, 2026
df1d482
release: v0.0.18
changhansung Jun 11, 2026
2a6c16e
docs: agy model names don't include effort suffix (Medium/High/Low)
changhansung Jun 11, 2026
90a4ee5
release: v0.0.19
changhansung Jun 11, 2026
b3741de
fix: classic instance reply tool resolves channelId via fallback
changhansung Jun 12, 2026
333d0d4
feat: expose user_id in inbound message format for mention support
changhansung Jun 12, 2026
ade2534
release: v0.0.20
changhansung Jun 12, 2026
94498ee
feat: add mention rules to fleet instructions
changhansung Jun 12, 2026
c73d3f0
release: v0.0.21
changhansung Jun 12, 2026
61356f7
fix: allow reply tool to reach fleet-manager even without lastChatId
changhansung Jun 12, 2026
78fdf6d
release: v0.0.22
changhansung Jun 12, 2026
7e89b4d
fix: handle non-array allowed_guilds/groups/users in classicBot.yaml
changhansung Jun 12, 2026
9359c60
fix: TG classicBot commands targeted at other bots are now ignored
changhansung Jun 12, 2026
aae6e89
debug: add TG classic mention check log
changhansung Jun 12, 2026
6cf1ccc
debug: change mention check log to info level
changhansung Jun 12, 2026
b39ad34
debug: add entry + access control logs for TG classic troubleshooting
changhansung Jun 12, 2026
7b0b834
fix: primary adapter started event must set botUsername + register be…
changhansung Jun 12, 2026
5ea2cd1
fix: TG classic mode — restrict /start, /stop, /raw to admin_users
changhansung Jun 12, 2026
956ff7c
docs: add permissions matrix (Discord + Telegram × fleet + classicBot)
changhansung Jun 12, 2026
e3bb49a
docs: complete permissions matrix with all commands and access flow
changhansung Jun 12, 2026
a8f3ff1
docs: TG private /stop requires admin (align doc with code)
changhansung Jun 12, 2026
b98da79
chore: remove debug logs from TG classic troubleshooting
changhansung Jun 12, 2026
be3a76a
release: v0.0.23
changhansung Jun 12, 2026
ef1f0e0
feat: crash recovery + startup priority (Issue #1 Phase 1)
changhansung Jun 12, 2026
1fcac96
feat: add [Fleet] / [ClassicBot] prefix to slash command descriptions
changhansung Jun 13, 2026
d740f0f
ci: auto-create GitHub Release with generated notes on stable tag
changhansung Jun 13, 2026
72fcaaf
feat: daily update check, /update detached restart, doctor expansion
changhansung Jun 13, 2026
e0c4074
Merge pull request #3 from songsid/feat/service-robustness
changhansung Jun 13, 2026
9f2fdb5
feat: doctor checks for service Restart policy and daemon-reload
changhansung Jun 13, 2026
bc4c8ac
Merge pull request #4 from songsid/feat/doctor-service-check
changhansung Jun 13, 2026
5cf1bb3
feat: systemd watchdog + general startup failure notification
changhansung Jun 13, 2026
dc72dec
Merge pull request #5 from songsid/feat/watchdog-and-failure-notify
changhansung Jun 13, 2026
5caa8e5
fix: update message uses 'agend start' + skip empty bot messages in c…
changhansung Jun 15, 2026
4d05621
Merge pull request #9 from songsid/fix/update-msg-and-collab-empty-log
changhansung Jun 15, 2026
78491f5
feat: Telegram Rich Messages support (Bot API 10.1)
changhansung Jun 15, 2026
237c3fe
Merge pull request #10 from songsid/feat/telegram-rich-messages
changhansung Jun 15, 2026
a7daa80
docs: add tmux Ctrl+C unstick procedure to fleet-health skill
changhansung Jun 15, 2026
19295d6
Merge pull request #11 from songsid/docs/tmux-unstick
changhansung Jun 15, 2026
cb9c800
feat: add /update and /doctor to TG bot menu + /doctor handler
changhansung Jun 15, 2026
abf3d24
Merge pull request #12 from songsid/feat/tg-update-doctor-commands
changhansung Jun 15, 2026
6850ea4
feat: add /update and /doctor Discord slash commands (admin only)
changhansung Jun 15, 2026
f545995
Merge pull request #13 from songsid/feat/discord-update-doctor
changhansung Jun 15, 2026
ecfa046
fix: /doctor uses agend backend doctor with fleet default
changhansung Jun 15, 2026
7c86826
Merge pull request #14 from songsid/fix/doctor-command-path
changhansung Jun 15, 2026
e135e22
feat: notify General when non-admin user is rejected from /start or /…
changhansung Jun 15, 2026
ad8cdbc
Merge pull request #15 from songsid/feat/notify-general-on-admin-reject
changhansung Jun 15, 2026
0f539fe
docs: add kiro-cli session storage path to session-management skill
changhansung Jun 15, 2026
93b0c04
Merge pull request #16 from songsid/docs/kiro-session-path
changhansung Jun 15, 2026
0e10789
fix: agend update detects and removes stale npm link before install
changhansung Jun 15, 2026
183831e
Merge pull request #17 from songsid/fix/update-detect-link
changhansung Jun 15, 2026
f862bee
fix: NotifyAccess=all + TimeoutStartSec=0 for 50+ instance fleets
changhansung Jun 15, 2026
7000afc
Merge pull request #18 from songsid/fix/notify-access-all
changhansung Jun 15, 2026
b71bfd0
feat: /status and /sysinfo use markdown tables for rich formatting
changhansung Jun 15, 2026
3b4f492
Merge pull request #19 from songsid/feat/status-sysinfo-rich-table
changhansung Jun 15, 2026
f7324ba
fix: install.sh removes npm-linked @suzuke/agend via readlink fallbac…
changhansung Jun 15, 2026
ee9039e
Merge pull request #21 from songsid/fix/install-remove-npm-link
changhansung Jun 15, 2026
d466458
fix: kiro 'having trouble responding' error detection
changhansung Jun 15, 2026
26cd5c8
Merge pull request #22 from songsid/fix/sysinfo-format-and-kiro-error
changhansung Jun 15, 2026
46f34ff
fix: workspace path guard + suppress unbound topic msg in classic groups
changhansung Jun 15, 2026
4581896
Merge pull request #23 from songsid/fix/workspace-guard-and-unbound-msg
changhansung Jun 15, 2026
b98ec35
ci: add contents:write permission for GitHub Release creation
changhansung Jun 15, 2026
cd6d2f7
Merge pull request #24 from songsid/fix/ci-release-permissions
changhansung Jun 15, 2026
dce7a63
docs: add v2.0.0 + v2.0.1 CHANGELOG
changhansung Jun 15, 2026
6cf049d
Merge pull request #25 from songsid/docs/v2-changelog
changhansung Jun 15, 2026
f796601
feat: add memory & knowledge management best practice to steering
changhansung Jun 15, 2026
a5ffbeb
Merge pull request #26 from songsid/feat/memory-best-practice
changhansung Jun 15, 2026
6165bc5
fix: memory best practice prompt guards (reviewer feedback)
changhansung Jun 16, 2026
7a225c4
Merge pull request #27 from songsid/fix/memory-prompt-guards
changhansung Jun 16, 2026
8c69486
fix: auto-create general for each adapter missing one
changhansung Jun 16, 2026
74fcfb9
Merge pull request #28 from songsid/fix/multi-channel-general-autodetect
changhansung Jun 16, 2026
dfe9aef
docs: add multi-channel skill for general knowledge
changhansung Jun 16, 2026
fa265e6
Merge pull request #29 from songsid/docs/multi-channel-skill
changhansung Jun 16, 2026
d2e4e7e
feat: quickstart supports adding platform while fleet is running
changhansung Jun 16, 2026
9f9c195
Merge pull request #30 from songsid/feat/quickstart-live-add-channel
changhansung Jun 16, 2026
c7d6c11
fix: quickstart uses systemd restart + assignTopicIds uses channel_id…
changhansung Jun 16, 2026
ad0d8bb
Merge pull request #31 from songsid/fix/quickstart-restart-and-topic-…
changhansung Jun 16, 2026
4974e49
fix: adopt unbound general for new adapter instead of creating duplic…
changhansung Jun 16, 2026
9fb0156
Merge pull request #32 from songsid/fix/general-adopt-unbound
changhansung Jun 16, 2026
ba6572d
fix: Discord general_channel_id is now required in quickstart
changhansung Jun 16, 2026
1e17dae
Merge pull request #33 from songsid/fix/dc-general-channel-required
changhansung Jun 16, 2026
919d615
fix: agend stop falls back to PID kill when systemd unavailable
changhansung Jun 16, 2026
ea44dc9
Merge pull request #34 from songsid/fix/stop-fallback-pid
changhansung Jun 16, 2026
a1837c3
fix: agend start falls back to direct fleet start when systemd unavai…
changhansung Jun 16, 2026
ea6403d
Merge pull request #35 from songsid/fix/start-fallback-direct
changhansung Jun 16, 2026
d7989c4
docs: complete configuration and commands reference
changhansung Jun 16, 2026
21c2136
Merge pull request #36 from songsid/docs/config-and-commands-reference
changhansung Jun 16, 2026
f08f79f
fix: add admin check to /restart + correct docs permissions
changhansung Jun 16, 2026
3c89a2c
Merge pull request #37 from songsid/fix/restart-admin-check
changhansung Jun 16, 2026
52e57de
fix: add version to /sysinfo + improve kiro-cli context parser
changhansung Jun 16, 2026
1be008b
Merge pull request #38 from songsid/fix/sysinfo-version-and-ctx-parser
changhansung Jun 16, 2026
cecc32b
fix: /status adds tmux capture fallback for context percentage
changhansung Jun 16, 2026
b281383
Merge pull request #39 from songsid/fix/status-ctx-tmux-fallback
changhansung Jun 16, 2026
fc53b2f
fix: remove /chat from TG ClassicBot menu (not implemented, use @ment…
changhansung Jun 16, 2026
b5d8389
Merge pull request #40 from songsid/fix/remove-tg-chat-command
changhansung Jun 16, 2026
9f908c1
fix: TG ClassicBot chat-log saves message text + error notifications …
changhansung Jun 17, 2026
869a5ee
Merge pull request #41 from songsid/fix/tg-classic-log-and-notify
changhansung Jun 17, 2026
1f10aaa
fix: non-@mention /commands don't accidentally trigger agent
changhansung Jun 17, 2026
6c60e86
Merge pull request #42 from songsid/fix/classic-log-no-command-forward
changhansung Jun 17, 2026
8163ef8
fix: log bot replies + allow bot-to-bot @mention in TG classic
changhansung Jun 17, 2026
70196ce
Merge pull request #43 from songsid/fix/classic-log-bot-reply
changhansung Jun 17, 2026
c7cb316
debug: trace TG bot message flow + add missing isBotMessage to TG ada…
changhansung Jun 17, 2026
4a37625
Merge pull request #46 from songsid/debug/tg-bot-message-trace
changhansung Jun 17, 2026
13d2f58
fix: extract text from TG Rich Message for bot-to-bot + remove debug …
changhansung Jun 17, 2026
ff13e2f
Merge pull request #48 from songsid/fix/tg-rich-message-receive
changhansung Jun 17, 2026
e7adec5
debug: dump raw msg object when bot text is empty
changhansung Jun 17, 2026
c21f679
Merge pull request #49 from songsid/debug/tg-raw-msg-dump
changhansung Jun 17, 2026
00443bf
fix: instruct all instances to produce final text after reply tool
changhansung Jun 17, 2026
26fe43f
Merge pull request #50 from songsid/fix/reply-tool-final-output
changhansung Jun 17, 2026
630c1e0
debug: unconditional bot msg dump (remove !text condition)
changhansung Jun 17, 2026
505f73a
Merge pull request #51 from songsid/debug/tg-raw-unconditional
changhansung Jun 17, 2026
e2f6582
fix: remove unclosed code fences before paste to CLI
changhansung Jun 17, 2026
3534dd7
Merge pull request #52 from songsid/fix/unclosed-code-fence
changhansung Jun 17, 2026
cfdcb4f
fix: correctly extract text from TG Rich Message (Bot API 10.1)
changhansung Jun 17, 2026
669836a
Merge pull request #53 from songsid/fix/tg-rich-message-extract-v2
changhansung Jun 17, 2026
d354c3f
chore: upgrade grammy 1.41.1 → 1.44.0 (Bot API 10.1 rich_message supp…
changhansung Jun 17, 2026
de8a84b
Merge pull request #54 from songsid/fix/upgrade-grammy-1.44
changhansung Jun 17, 2026
49a61e0
debug: log bot msg + revert to (msg as any).rich_message (type not in…
changhansung Jun 17, 2026
07ab481
Merge pull request #55 from songsid/debug/tg-bot-msg-log-v3
changhansung Jun 17, 2026
6fbb62b
fix: intercept Rich Message via grammy middleware (grammy skips bot.o…
changhansung Jun 17, 2026
c0988a9
Merge pull request #56 from songsid/fix/tg-rich-message-middleware
changhansung Jun 17, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
30 changes: 5 additions & 25 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
@@ -1,38 +1,18 @@
name: CI

on:
pull_request:
push:
tags:
- 'v*'

env:
FORCE_JAVASCRIPT_ACTIONS_TO_NODE24: true
branches: [main]
pull_request:
branches: [main]

jobs:
test:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: 24
node-version: 22
- run: npm ci
- run: npx tsc --noEmit
- run: npm test

publish:
needs: test
if: startsWith(github.ref, 'refs/tags/v')
runs-on: ubuntu-latest
permissions:
contents: read
id-token: write
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: 24
registry-url: https://registry.npmjs.org
- run: npm ci
- run: npm publish --provenance --access public
16 changes: 16 additions & 0 deletions .github/workflows/gitleaks.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
name: Gitleaks

on:
pull_request:
branches: [main]

jobs:
scan:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0
- uses: gitleaks/gitleaks-action@v2
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
66 changes: 66 additions & 0 deletions .github/workflows/publish.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,66 @@
name: Publish

on:
push:
tags: ['v*']

jobs:
publish:
runs-on: ubuntu-latest
permissions:
contents: write
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: 22
registry-url: https://registry.npmjs.org
- run: npm ci
- run: npx tsc --noEmit
- run: npm run build

# Publish main package as @songsid/agend
- name: Set version from tag
run: echo "VERSION=${GITHUB_REF#refs/tags/v}" >> $GITHUB_ENV
- name: Determine npm tag
run: |
if [[ "$VERSION" == *-beta* ]]; then
echo "NPM_TAG=beta" >> $GITHUB_ENV
else
echo "NPM_TAG=latest" >> $GITHUB_ENV
fi
- name: Swap package name and version
run: |
sed -i 's/"name": "@suzuke\/agend"/"name": "@songsid\/agend"/' package.json
sed -i "s/\"version\": \".*\"/\"version\": \"$VERSION\"/" package.json
- run: npm publish --access public --tag ${{ env.NPM_TAG }}
env:
NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}

# Publish Discord plugin as @songsid/agend-plugin-discord
- name: Build Discord plugin
working-directory: plugins/agend-plugin-discord
run: |
npm install
npm run build
- name: Swap Discord plugin names
working-directory: plugins/agend-plugin-discord
run: |
sed -i 's/"name": "@suzuke\/agend-plugin-discord"/"name": "@songsid\/agend-plugin-discord"/' package.json
sed -i "s/\"version\": \".*\"/\"version\": \"$VERSION\"/" package.json
sed -i 's/@suzuke\/agend/@songsid\/agend/g' package.json
sed -i 's/">=1.13.0"/">='$VERSION'"/' package.json
find dist -name '*.js' -exec sed -i 's/@suzuke\/agend/@songsid\/agend/g' {} +
find dist -name '*.d.ts' -exec sed -i 's/@suzuke\/agend/@songsid\/agend/g' {} +
- name: Publish Discord plugin
working-directory: plugins/agend-plugin-discord
run: npm publish --access public --tag ${{ env.NPM_TAG }}
env:
NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}

# Create GitHub Release with auto-generated notes from merged PRs
- name: Create GitHub Release
if: "!contains(env.VERSION, 'beta')"
run: gh release create "v$VERSION" --generate-notes --title "v$VERSION"
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
11 changes: 11 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -21,3 +21,14 @@ website/.astro/
# E2E test results (generated by vitest in VM, rsynced back)
e2e/results/
.kiro/settings/mcp.json
plugins/agend-plugin-discord/package-lock.json

# NPM auth (generated during publish, auto-cleaned)
.npmrc

# Session files (Claude Code / OpenCode)
*.session.json
20[0-9][0-9][01][0-9][0-3][0-9].json
opencode.json
.kiro/settings/lsp.json
.kiro/steering/
198 changes: 198 additions & 0 deletions .kiro/settings/lsp.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,198 @@
{
"languages": {
"typescript": {
"name": "typescript-language-server",
"command": "typescript-language-server",
"args": [
"--stdio"
],
"file_extensions": [
"ts",
"js",
"tsx",
"jsx"
],
"project_patterns": [
"package.json",
"tsconfig.json"
],
"exclude_patterns": [
"**/node_modules/**",
"**/dist/**"
],
"multi_workspace": false,
"initialization_options": {
"preferences": {
"disableSuggestions": false
}
},
"request_timeout_secs": 60
},
"ruby": {
"name": "solargraph",
"command": "solargraph",
"args": [
"stdio"
],
"file_extensions": [
"rb"
],
"project_patterns": [
"Gemfile",
"Rakefile"
],
"exclude_patterns": [
"**/vendor/**",
"**/tmp/**"
],
"multi_workspace": false,
"initialization_options": {},
"request_timeout_secs": 60
},
"rust": {
"name": "rust-analyzer",
"command": "rust-analyzer",
"args": [],
"file_extensions": [
"rs"
],
"project_patterns": [
"Cargo.toml"
],
"exclude_patterns": [
"**/target/**"
],
"multi_workspace": false,
"initialization_options": {
"cargo": {
"buildScripts": {
"enable": true
}
},
"diagnostics": {
"enable": true,
"enableExperimental": true
},
"workspace": {
"symbol": {
"search": {
"scope": "workspace"
}
}
}
},
"request_timeout_secs": 60
},
"java": {
"name": "jdtls",
"command": "jdtls",
"args": [],
"file_extensions": [
"java"
],
"project_patterns": [
"pom.xml",
"build.gradle",
"build.gradle.kts",
".project"
],
"exclude_patterns": [
"**/target/**",
"**/build/**",
"**/.gradle/**"
],
"multi_workspace": false,
"initialization_options": {
"settings": {
"java": {
"compile": {
"nullAnalysis": {
"mode": "automatic"
}
},
"configuration": {
"annotationProcessing": {
"enabled": true
}
}
}
}
},
"request_timeout_secs": 60
},
"python": {
"name": "pyright",
"command": "pyright-langserver",
"args": [
"--stdio"
],
"file_extensions": [
"py"
],
"project_patterns": [
"pyproject.toml",
"setup.py",
"requirements.txt",
"pyrightconfig.json"
],
"exclude_patterns": [
"**/__pycache__/**",
"**/venv/**",
"**/.venv/**",
"**/.pytest_cache/**"
],
"multi_workspace": false,
"initialization_options": {},
"request_timeout_secs": 60
},
"go": {
"name": "gopls",
"command": "gopls",
"args": [],
"file_extensions": [
"go"
],
"project_patterns": [
"go.mod",
"go.sum"
],
"exclude_patterns": [
"**/vendor/**"
],
"multi_workspace": false,
"initialization_options": {
"usePlaceholders": true,
"completeUnimported": true
},
"request_timeout_secs": 60
},
"cpp": {
"name": "clangd",
"command": "clangd",
"args": [
"--background-index"
],
"file_extensions": [
"cpp",
"cc",
"cxx",
"c",
"h",
"hpp",
"hxx"
],
"project_patterns": [
"CMakeLists.txt",
"compile_commands.json",
"Makefile"
],
"exclude_patterns": [
"**/build/**",
"**/cmake-build-**/**"
],
"multi_workspace": false,
"initialization_options": {},
"request_timeout_secs": 60
}
}
}
8 changes: 0 additions & 8 deletions .kiro/settings/mcp.json

This file was deleted.

Loading