comitia 0.2.0 → 0.3.0
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/index.js +15 -0
- package/package.json +1 -1
- package/plugin/skills/slack/SKILL.md +14 -2
package/index.js
CHANGED
|
@@ -361,6 +361,7 @@ const BLOCK = `${MARK_START}
|
|
|
361
361
|
사용자가 고쳐 두었을 수 있으므로, 이 블록의 기억에 의존하지 않는다.**
|
|
362
362
|
|
|
363
363
|
⚠️ **슬랙에 올리는 것(\`comitia slack\`)은 팀 전체가 보는 일이다** — 채널과 문구를 먼저 보여 주고 허락받은 뒤에만 올린다.
|
|
364
|
+
**고치기·지우기(\`--edit\` · \`--delete\`)도 마찬가지다** — 봇이 올린 글만 되고, 무엇을 고치거나 지우는지 보여 주고 허락받는다. 지우기는 되돌릴 수 없다.
|
|
364
365
|
|
|
365
366
|
Claude Code 에서는 스킬 \`/comitia:read\` · \`/comitia:ingest\` · \`/comitia:slack\` · \`/comitia:sync\` 이 순서를 담고 있다.
|
|
366
367
|
자세한 명령은 \`comitia --help\`.
|
|
@@ -419,6 +420,8 @@ function parseArgs(argv) {
|
|
|
419
420
|
else if (a === '--thread-of') flags.threadOf = argv[++i];
|
|
420
421
|
else if (a === '--edit') flags.edit = argv[++i];
|
|
421
422
|
else if (a === '--edit-of') flags.editOf = argv[++i];
|
|
423
|
+
else if (a === '--delete') flags.delete = argv[++i];
|
|
424
|
+
else if (a === '--delete-of') flags.deleteOf = argv[++i];
|
|
422
425
|
else if (a === '-g' || a === '--global') flags.global = true;
|
|
423
426
|
else if (a === '--paste') flags.paste = true;
|
|
424
427
|
else if (a === '-h' || a === '--help') flags.help = true;
|
|
@@ -453,6 +456,7 @@ const HELP = `comitia — 회사 온톨로지를 내가 쓰는 AI에서 꺼내
|
|
|
453
456
|
comitia forget <id> <낱말...> 원본에서 낱말 지우기 — 다시 수집돼도 안 돌아옴 (쓰기 토큰)
|
|
454
457
|
comitia sync [slack|tiro|...] 지금 당겨오기 — 매시 자동 수집을 기다리지 않고 (쓰기 토큰)
|
|
455
458
|
comitia slack <채널> <파일|-> 연결된 봇으로 슬랙에 올리기 (쓰기 토큰 · 봇에 chat:write 필요)
|
|
459
|
+
comitia slack <채널> --delete <ts> 봇이 올린 그 글 지우기 (되돌릴 수 없음)
|
|
456
460
|
--thread <ts> 그 글의 스레드에 답글로 (부모 ts)
|
|
457
461
|
--thread-of "<검색어>" 부모 글을 본문으로 찾아 그 스레드에 (최근 100건 중 최신)
|
|
458
462
|
--edit <ts> 새 글 대신 봇이 올린 그 글을 통째로 바꾸기 (봇 글만)
|
|
@@ -762,6 +766,17 @@ const COMMANDS = {
|
|
|
762
766
|
|
|
763
767
|
/** 슬랙에 올린다 — 연결된 봇으로. ⚠️ 팀에게 보이는 일이라 AI 는 올리기 전에 사람에게 허락받는다. */
|
|
764
768
|
async slack([channel, file], flags) {
|
|
769
|
+
// 🗑️ 지우기는 올릴 글이 없다 — 채널과 ts(또는 검색어)만 받는다. 되돌릴 수 없어 스킬이 먼저 허락받는다.
|
|
770
|
+
if (flags.delete || flags.deleteOf) {
|
|
771
|
+
if (!channel) die('지울 글이 있는 채널을 적어 주세요.\n comitia slack project_0to1 --delete 1757769600.123456\n comitia slack project_0to1 --delete-of "z2o → Comitia 이름 변경"');
|
|
772
|
+
if (flags.delete && !/^\d{10}\.\d{6}$/.test(flags.delete)) die(`--delete 는 슬랙 ts 모양이어야 해요 (예: 1757769600.123456). 검색어로 찾으려면 --delete-of "<글의 일부>"`);
|
|
773
|
+
if (flags.edit || flags.editOf || flags.thread || flags.threadOf) die('--delete 는 --edit·--thread 와 같이 못 써요.');
|
|
774
|
+
const args = { company_id: needCompany(flags), channel };
|
|
775
|
+
if (flags.delete) args.ts = flags.delete;
|
|
776
|
+
else args.of = flags.deleteOf;
|
|
777
|
+
console.log(await callTool('delete_slack', args));
|
|
778
|
+
return;
|
|
779
|
+
}
|
|
765
780
|
if (!channel || !file) die('채널과 파일을 적어 주세요.\n comitia slack project_0to1 글.txt\n ... | comitia slack project_0to1 -\n comitia slack weekly-meeting 글.txt --thread-of "0913 위클리" # 그 글의 스레드에 답글로');
|
|
766
781
|
const text = file === '-' ? readFileSync(0, 'utf8') : readFileSync(file, 'utf8');
|
|
767
782
|
if (!text.trim()) die('올릴 글이 비었어요.');
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: slack
|
|
3
|
-
description: 슬랙에 글을
|
|
3
|
+
description: 슬랙에 글을 올리거나, 봇이 올린 글을 고치거나 지울 때 쓴다 — "슬랙에 보내", "슬랙에 올려", "#채널에 공유해", "팀에 알려", "아까 올린 거 지워줘", "그 글 고쳐줘". Comitia 에 연결된 봇으로 한다. 올리기·고치기·지우기 전에 반드시 채널과 대상을 사람에게 보여 주고 허락받는다.
|
|
4
4
|
allowed-tools:
|
|
5
5
|
- Bash(comitia *)
|
|
6
6
|
- Bash(z2o *)
|
|
@@ -50,6 +50,8 @@ comitia slack <채널> <임시파일> --thread-of "<검색어>" 그 글의 스
|
|
|
50
50
|
comitia slack <채널> <임시파일> --thread <ts> 부모 ts 를 알 때
|
|
51
51
|
comitia slack <채널> <임시파일> --edit-of "<검색어>" 봇이 올린 그 글을 통째로 바꾸기 (체크리스트 갱신 등)
|
|
52
52
|
comitia slack <채널> <임시파일> --edit <ts> 고칠 글의 ts 를 알 때
|
|
53
|
+
comitia slack <채널> --delete-of "<검색어>" 봇이 올린 그 글 지우기 (파일 없음 · 되돌릴 수 없음)
|
|
54
|
+
comitia slack <채널> --delete <ts> 지울 글의 ts 를 알 때
|
|
53
55
|
```
|
|
54
56
|
|
|
55
57
|
채널은 `project_0to1` 처럼 이름으로(`#` 는 있어도 없어도 된다). 올린 기록은 Comitia 연대기에 남는다.
|
|
@@ -59,6 +61,15 @@ comitia slack <채널> <임시파일> --edit <ts> 고칠 글의 ts
|
|
|
59
61
|
채널 최근 100건에서 가장 최근 매치를 부모로 잡는다 — 부모가 사람 글이어도 된다. 못 찾으면 그렇다고 돌아오니
|
|
60
62
|
검색어를 바꾸거나 사람에게 ts 를 받는다. 허락받을 때 **어느 글 아래에 달리는지**도 같이 보여 준다.
|
|
61
63
|
|
|
64
|
+
## 5. 🗑️ 지우기 — 되돌릴 수 없다
|
|
65
|
+
|
|
66
|
+
잘못 올린 글을 걷을 때. **봇이 올린 글만** 지운다.
|
|
67
|
+
|
|
68
|
+
- 지우기 전에 **어느 채널의 어떤 글인지**(첫 줄이라도) 보여 주고 *"이 글을 지울까요? 되돌릴 수 없어요"* 라고 묻는다.
|
|
69
|
+
- `--delete-of` 는 봇이 올린 글 중 최근 100건에서 찾는다 — 못 찾으면 그렇다고 돌아오니 검색어를 바꾸거나 ts 를 받는다.
|
|
70
|
+
- ⚠️ **스레드 부모를 지우면 답글까지 사라진다.** 답글이 달린 글이면 그 사실을 먼저 알린다.
|
|
71
|
+
- 지운 기록은 연대기에 남는다(채널·ts·첫 줄).
|
|
72
|
+
|
|
62
73
|
## 막히면
|
|
63
74
|
|
|
64
75
|
| 나온 말 | 할 일 |
|
|
@@ -67,10 +78,11 @@ comitia slack <채널> <임시파일> --edit <ts> 고칠 글의 ts
|
|
|
67
78
|
| 봇이 채널에 없다 | 사람에게 그 채널에서 `/invite @봇이름` 을 부탁한다 |
|
|
68
79
|
| 쓰기 권한이 없다 | *자료·정리까지* 토큰이 필요하다. 토큰은 사람이 직접 다시 연결한다 — **대화로 받지 않는다** |
|
|
69
80
|
| 글이 너무 길다 | 나눠 올릴지 사람에게 묻는다 |
|
|
81
|
+
| 봇이 올린 글만 지울 수 있다 | 사람이 올린 글이다 — 슬랙에서 직접 지우시라고 안내한다 |
|
|
70
82
|
|
|
71
83
|
## 못 하는 것
|
|
72
84
|
|
|
73
|
-
새 글 · 스레드 답글 · **봇이 올린 글
|
|
85
|
+
새 글 · 스레드 답글 · **봇이 올린 글 고치기·지우기**까지 된다. **DM · 사람이 올린 글 고치기·지우기는 안 된다** —
|
|
74
86
|
부탁받으면 안 된다고 말하고, 슬랙에서 직접 하시라고 안내한다.
|
|
75
87
|
|
|
76
88
|
**고치기**는 본문을 **통째로 덮어쓴다.** 부분만 바꾸더라도 전체 새 본문을 파일에 쓰고, 허락받을 때는
|