choavis-agent 1.4.0 → 1.4.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.
Files changed (131) hide show
  1. package/.env.example +3 -2
  2. package/README.md +120 -205
  3. package/dist/agent/adapters/claude.d.ts +13 -0
  4. package/dist/agent/adapters/claude.d.ts.map +1 -0
  5. package/dist/agent/adapters/claude.js +199 -0
  6. package/dist/agent/adapters/claude.js.map +1 -0
  7. package/dist/agent/protocol.d.ts +56 -0
  8. package/dist/agent/protocol.d.ts.map +1 -0
  9. package/dist/agent/protocol.js +9 -0
  10. package/dist/agent/protocol.js.map +1 -0
  11. package/dist/agent/queue.d.ts.map +1 -1
  12. package/dist/agent/queue.js +4 -2
  13. package/dist/agent/queue.js.map +1 -1
  14. package/dist/agent/runner.d.ts +8 -0
  15. package/dist/agent/runner.d.ts.map +1 -1
  16. package/dist/agent/runner.js +13 -39
  17. package/dist/agent/runner.js.map +1 -1
  18. package/dist/agent/session.d.ts +27 -1
  19. package/dist/agent/session.d.ts.map +1 -1
  20. package/dist/agent/session.js +79 -3
  21. package/dist/agent/session.js.map +1 -1
  22. package/dist/agent/usage.d.ts +8 -5
  23. package/dist/agent/usage.d.ts.map +1 -1
  24. package/dist/agent/usage.js +21 -0
  25. package/dist/agent/usage.js.map +1 -1
  26. package/dist/approval/server.d.ts +11 -1
  27. package/dist/approval/server.d.ts.map +1 -1
  28. package/dist/approval/server.js +46 -4
  29. package/dist/approval/server.js.map +1 -1
  30. package/dist/approval/setup.d.ts +5 -0
  31. package/dist/approval/setup.d.ts.map +1 -1
  32. package/dist/approval/setup.js +31 -0
  33. package/dist/approval/setup.js.map +1 -1
  34. package/dist/cli/config.d.ts.map +1 -1
  35. package/dist/cli/config.js +18 -8
  36. package/dist/cli/config.js.map +1 -1
  37. package/dist/cli/onboard.d.ts.map +1 -1
  38. package/dist/cli/onboard.js +299 -51
  39. package/dist/cli/onboard.js.map +1 -1
  40. package/dist/cli.js +10 -5
  41. package/dist/cli.js.map +1 -1
  42. package/dist/config.d.ts +5 -0
  43. package/dist/config.d.ts.map +1 -1
  44. package/dist/config.js +9 -1
  45. package/dist/config.js.map +1 -1
  46. package/dist/index.js +2 -2
  47. package/dist/index.js.map +1 -1
  48. package/dist/slack/commands/compact.js +2 -2
  49. package/dist/slack/commands/compact.js.map +1 -1
  50. package/dist/slack/commands/help.d.ts.map +1 -1
  51. package/dist/slack/commands/help.js +16 -11
  52. package/dist/slack/commands/help.js.map +1 -1
  53. package/dist/slack/commands/index.d.ts.map +1 -1
  54. package/dist/slack/commands/index.js +26 -0
  55. package/dist/slack/commands/index.js.map +1 -1
  56. package/dist/slack/commands/inject.d.ts +3 -0
  57. package/dist/slack/commands/inject.d.ts.map +1 -0
  58. package/dist/slack/commands/inject.js +44 -0
  59. package/dist/slack/commands/inject.js.map +1 -0
  60. package/dist/slack/commands/memory.js +7 -7
  61. package/dist/slack/commands/memory.js.map +1 -1
  62. package/dist/slack/commands/model.d.ts +3 -0
  63. package/dist/slack/commands/model.d.ts.map +1 -0
  64. package/dist/slack/commands/model.js +43 -0
  65. package/dist/slack/commands/model.js.map +1 -0
  66. package/dist/slack/commands/new.js +1 -1
  67. package/dist/slack/commands/new.js.map +1 -1
  68. package/dist/slack/commands/permission.d.ts +3 -0
  69. package/dist/slack/commands/permission.d.ts.map +1 -0
  70. package/dist/slack/commands/permission.js +51 -0
  71. package/dist/slack/commands/permission.js.map +1 -0
  72. package/dist/slack/commands/project.js +2 -2
  73. package/dist/slack/commands/project.js.map +1 -1
  74. package/dist/slack/commands/resume.d.ts +3 -0
  75. package/dist/slack/commands/resume.d.ts.map +1 -0
  76. package/dist/slack/commands/resume.js +93 -0
  77. package/dist/slack/commands/resume.js.map +1 -0
  78. package/dist/slack/commands/session-info.d.ts +3 -0
  79. package/dist/slack/commands/session-info.d.ts.map +1 -0
  80. package/dist/slack/commands/session-info.js +33 -0
  81. package/dist/slack/commands/session-info.js.map +1 -0
  82. package/dist/slack/commands/sessions.d.ts +3 -0
  83. package/dist/slack/commands/sessions.d.ts.map +1 -0
  84. package/dist/slack/commands/sessions.js +54 -0
  85. package/dist/slack/commands/sessions.js.map +1 -0
  86. package/dist/slack/commands/status.d.ts.map +1 -1
  87. package/dist/slack/commands/status.js +7 -2
  88. package/dist/slack/commands/status.js.map +1 -1
  89. package/dist/slack/commands/usage.d.ts +5 -0
  90. package/dist/slack/commands/usage.d.ts.map +1 -1
  91. package/dist/slack/commands/usage.js +93 -12
  92. package/dist/slack/commands/usage.js.map +1 -1
  93. package/dist/slack/context.d.ts +11 -8
  94. package/dist/slack/context.d.ts.map +1 -1
  95. package/dist/slack/context.js +36 -14
  96. package/dist/slack/context.js.map +1 -1
  97. package/dist/slack/file-downloader.d.ts +18 -0
  98. package/dist/slack/file-downloader.d.ts.map +1 -0
  99. package/dist/slack/file-downloader.js +196 -0
  100. package/dist/slack/file-downloader.js.map +1 -0
  101. package/dist/slack/formatter.d.ts +0 -4
  102. package/dist/slack/formatter.d.ts.map +1 -1
  103. package/dist/slack/formatter.js +0 -8
  104. package/dist/slack/formatter.js.map +1 -1
  105. package/dist/slack/handlers.d.ts +3 -4
  106. package/dist/slack/handlers.d.ts.map +1 -1
  107. package/dist/slack/handlers.js +372 -259
  108. package/dist/slack/handlers.js.map +1 -1
  109. package/dist/slack/link-resolver.d.ts +24 -0
  110. package/dist/slack/link-resolver.d.ts.map +1 -0
  111. package/dist/slack/link-resolver.js +52 -0
  112. package/dist/slack/link-resolver.js.map +1 -0
  113. package/dist/slack/middleware.d.ts +17 -0
  114. package/dist/slack/middleware.d.ts.map +1 -0
  115. package/dist/slack/middleware.js +73 -0
  116. package/dist/slack/middleware.js.map +1 -0
  117. package/dist/slack/slack-retry.d.ts +18 -0
  118. package/dist/slack/slack-retry.d.ts.map +1 -0
  119. package/dist/slack/slack-retry.js +71 -0
  120. package/dist/slack/slack-retry.js.map +1 -0
  121. package/dist/slack/tool-formatter.d.ts +18 -0
  122. package/dist/slack/tool-formatter.d.ts.map +1 -0
  123. package/dist/slack/tool-formatter.js +154 -0
  124. package/dist/slack/tool-formatter.js.map +1 -0
  125. package/dist/slack/types.d.ts +22 -0
  126. package/dist/slack/types.d.ts.map +1 -0
  127. package/dist/slack/types.js +2 -0
  128. package/dist/slack/types.js.map +1 -0
  129. package/package.json +10 -10
  130. package/scripts/pretool-hook.mjs +0 -0
  131. package/slack-app-manifest.json +12 -1
@@ -1,6 +1,6 @@
1
1
  import { getWorkDir } from '../../agent/session.js';
2
2
  import { config } from '../../config.js';
3
- const TRIGGERS = ['$help', '$도움말', '$안녕'];
3
+ const TRIGGERS = ['$help', '$도움말', '/help'];
4
4
  export const helpCommand = {
5
5
  name: 'help',
6
6
  match(text) {
@@ -29,16 +29,21 @@ export const helpCommand = {
29
29
  ' - 아무 메시지나 보내면 작업을 수행합니다',
30
30
  ' - 같은 스레드 내 대화는 맥락이 유지됩니다',
31
31
  '',
32
- '*명령어:* (`$`로 시작)',
33
- ' - `$프로젝트 이름` — 작업 디렉토리 전환',
34
- ' - `$상태` — 현재 설정 및 상태 확인',
35
- ' - `$사용량` — 사용량 조회 (`$사용량 me`, `$사용량 week`)',
36
- ' - `$초기화` — 세션 초기화 (대화 리셋)',
37
- ' - `$압축`컨텍스트 압축',
38
- ' - `$중지`현재 처리 중단',
39
- ' - `$기억 내용` 기억 저장 (모든 대화에 반영)',
40
- ' - `$기억목록`저장된 기억 조회',
41
- ' - `$도움말` 메시지',
32
+ '*명령어:*',
33
+ ' - `프로젝트: 이름` — 작업 디렉토리 전환',
34
+ ' - `$status` — 현재 설정 및 상태 확인',
35
+ ' - `$usage` / `사용량` — 사용량 조회 (`$usage me`, `$usage week`, `$usage month`)',
36
+ ' - `$sessions` / `$세션` 활성 세션 목록 조회',
37
+ ' - `$resume <ID>` / `$이어서` 기존 세션에 연결',
38
+ ' - `$inject <ID> <명령>` 특정 세션에 명령 주입',
39
+ ' - `$new`세션 초기화 (대화 리셋)',
40
+ ' - `$compact`컨텍스트 압축',
41
+ ' - `$stop` / `$중지` 현재 처리 중단',
42
+ ' - `$model <이름>` — 모델 변경 (sonnet/opus/haiku)',
43
+ ' - `$permission <모드>` — 권한 모드 변경 (bypass/plan/accept)',
44
+ ' - `기억해: 내용` — 기억 저장 (모든 대화에 반영)',
45
+ ' - `기억 목록` — 저장된 기억 조회',
46
+ ' - `$help` — 이 메시지',
42
47
  '',
43
48
  `:file_folder: *현재 작업 디렉토리*: \`${getWorkDir(ctx.threadTs) || config.agent.workDir}\``,
44
49
  ].join('\n');
@@ -1 +1 @@
1
- {"version":3,"file":"help.js","sourceRoot":"","sources":["../../../src/slack/commands/help.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AACpD,OAAO,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AAGzC,MAAM,QAAQ,GAAG,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC;AAE1C,MAAM,CAAC,MAAM,WAAW,GAAY;IAClC,IAAI,EAAE,MAAM;IAEZ,KAAK,CAAC,IAAY;QAChB,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;QACjC,IAAI,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;YAC7B,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC;QACpC,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,GAAmB;QAC/B,MAAM,QAAQ,GAAG;YACf,sCAAsC;YACtC,EAAE;YACF,4CAA4C;YAC5C,iCAAiC;YACjC,EAAE;YACF,aAAa;YACb,yBAAyB;YACzB,6BAA6B;YAC7B,yBAAyB;YACzB,qBAAqB;YACrB,6BAA6B;YAC7B,uBAAuB;YACvB,EAAE;YACF,QAAQ;YACR,2BAA2B;YAC3B,4BAA4B;YAC5B,EAAE;YACF,kBAAkB;YAClB,6BAA6B;YAC7B,2BAA2B;YAC3B,8CAA8C;YAC9C,6BAA6B;YAC7B,qBAAqB;YACrB,sBAAsB;YACtB,kCAAkC;YAClC,yBAAyB;YACzB,oBAAoB;YACpB,EAAE;YACF,iCAAiC,UAAU,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,MAAM,CAAC,KAAK,CAAC,OAAO,IAAI;SACtF,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAEb,MAAM,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC;YAChC,OAAO,EAAE,GAAG,CAAC,OAAO;YACpB,SAAS,EAAE,GAAG,CAAC,QAAQ;YACvB,IAAI,EAAE,QAAQ;SACf,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;IACrB,CAAC;CACF,CAAC"}
1
+ {"version":3,"file":"help.js","sourceRoot":"","sources":["../../../src/slack/commands/help.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AACpD,OAAO,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AAGzC,MAAM,QAAQ,GAAG,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;AAE5C,MAAM,CAAC,MAAM,WAAW,GAAY;IAClC,IAAI,EAAE,MAAM;IAEZ,KAAK,CAAC,IAAY;QAChB,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;QACjC,IAAI,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;YAC7B,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC;QACpC,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,GAAmB;QAC/B,MAAM,QAAQ,GAAG;YACf,sCAAsC;YACtC,EAAE;YACF,4CAA4C;YAC5C,iCAAiC;YACjC,EAAE;YACF,aAAa;YACb,yBAAyB;YACzB,6BAA6B;YAC7B,yBAAyB;YACzB,qBAAqB;YACrB,6BAA6B;YAC7B,uBAAuB;YACvB,EAAE;YACF,QAAQ;YACR,2BAA2B;YAC3B,4BAA4B;YAC5B,EAAE;YACF,QAAQ;YACR,6BAA6B;YAC7B,+BAA+B;YAC/B,4EAA4E;YAC5E,uCAAuC;YACvC,yCAAyC;YACzC,wCAAwC;YACxC,6BAA6B;YAC7B,0BAA0B;YAC1B,gCAAgC;YAChC,+CAA+C;YAC/C,wDAAwD;YACxD,mCAAmC;YACnC,yBAAyB;YACzB,qBAAqB;YACrB,EAAE;YACF,iCAAiC,UAAU,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,MAAM,CAAC,KAAK,CAAC,OAAO,IAAI;SACtF,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAEb,MAAM,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC;YAChC,OAAO,EAAE,GAAG,CAAC,OAAO;YACpB,SAAS,EAAE,GAAG,CAAC,QAAQ;YACvB,IAAI,EAAE,QAAQ;SACf,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;IACrB,CAAC;CACF,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/slack/commands/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAKxE,wBAAgB,eAAe,CAAC,GAAG,EAAE,OAAO,GAAG,IAAI,CAElD;AAED,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,YAAY,GAAG,IAAI,CAO9D;AAED,wBAAsB,cAAc,CAAC,KAAK,EAAE,YAAY,EAAE,GAAG,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC,CAK5F;AAED,wBAAgB,mBAAmB,IAAI,IAAI,CAG1C;AAED,OAAO,EAAE,KAAK,OAAO,EAAE,KAAK,YAAY,EAAE,KAAK,cAAc,EAAE,MAAM,YAAY,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/slack/commands/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAkBxE,wBAAgB,eAAe,CAAC,GAAG,EAAE,OAAO,GAAG,IAAI,CAElD;AAED,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,YAAY,GAAG,IAAI,CAO9D;AAED,wBAAsB,cAAc,CAAC,KAAK,EAAE,YAAY,EAAE,GAAG,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC,CAK5F;AAED,wBAAgB,mBAAmB,IAAI,IAAI,CAgB1C;AAED,OAAO,EAAE,KAAK,OAAO,EAAE,KAAK,YAAY,EAAE,KAAK,cAAc,EAAE,MAAM,YAAY,CAAC"}
@@ -1,4 +1,17 @@
1
1
  import { stopCommand } from './stop.js';
2
+ import { modelCommand } from './model.js';
3
+ import { permissionCommand } from './permission.js';
4
+ import { helpCommand } from './help.js';
5
+ import { statusCommand } from './status.js';
6
+ import { newCommand } from './new.js';
7
+ import { compactCommand } from './compact.js';
8
+ import { projectCommand } from './project.js';
9
+ import { usageCommand } from './usage.js';
10
+ import { memoryCommand } from './memory.js';
11
+ import { sessionsCommand } from './sessions.js';
12
+ import { sessionInfoCommand } from './session-info.js';
13
+ import { resumeCommand } from './resume.js';
14
+ import { injectCommand } from './inject.js';
2
15
  const commands = [];
3
16
  export function registerCommand(cmd) {
4
17
  commands.push(cmd);
@@ -21,5 +34,18 @@ export async function executeCommand(match, ctx) {
21
34
  export function registerAllCommands() {
22
35
  commands.length = 0;
23
36
  registerCommand(stopCommand);
37
+ registerCommand(modelCommand);
38
+ registerCommand(permissionCommand);
39
+ registerCommand(helpCommand);
40
+ registerCommand(statusCommand);
41
+ registerCommand(newCommand);
42
+ registerCommand(compactCommand);
43
+ registerCommand(projectCommand);
44
+ registerCommand(usageCommand);
45
+ registerCommand(memoryCommand);
46
+ registerCommand(sessionsCommand);
47
+ registerCommand(sessionInfoCommand);
48
+ registerCommand(resumeCommand);
49
+ registerCommand(injectCommand);
24
50
  }
25
51
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/slack/commands/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAExC,MAAM,QAAQ,GAAc,EAAE,CAAC;AAE/B,MAAM,UAAU,eAAe,CAAC,GAAY;IAC1C,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACrB,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,IAAY;IACvC,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;IAC5B,KAAK,MAAM,GAAG,IAAI,QAAQ,EAAE,CAAC;QAC3B,MAAM,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QACjC,IAAI,KAAK;YAAE,OAAO,KAAK,CAAC;IAC1B,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,KAAmB,EAAE,GAAmB;IAC3E,MAAM,GAAG,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,KAAK,CAAC,IAAI,CAAC,CAAC;IACxD,IAAI,GAAG,EAAE,CAAC;QACR,MAAM,GAAG,CAAC,OAAO,CAAC,EAAE,GAAG,GAAG,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,IAAI,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC;IAC9D,CAAC;AACH,CAAC;AAED,MAAM,UAAU,mBAAmB;IACjC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC;IACpB,eAAe,CAAC,WAAW,CAAC,CAAC;AAC/B,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/slack/commands/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AACxC,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAC1C,OAAO,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AACpD,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AACxC,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AACtC,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAC1C,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAChD,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AACvD,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAE5C,MAAM,QAAQ,GAAc,EAAE,CAAC;AAE/B,MAAM,UAAU,eAAe,CAAC,GAAY;IAC1C,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACrB,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,IAAY;IACvC,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;IAC5B,KAAK,MAAM,GAAG,IAAI,QAAQ,EAAE,CAAC;QAC3B,MAAM,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QACjC,IAAI,KAAK;YAAE,OAAO,KAAK,CAAC;IAC1B,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,KAAmB,EAAE,GAAmB;IAC3E,MAAM,GAAG,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,KAAK,CAAC,IAAI,CAAC,CAAC;IACxD,IAAI,GAAG,EAAE,CAAC;QACR,MAAM,GAAG,CAAC,OAAO,CAAC,EAAE,GAAG,GAAG,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,IAAI,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC;IAC9D,CAAC;AACH,CAAC;AAED,MAAM,UAAU,mBAAmB;IACjC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC;IACpB,eAAe,CAAC,WAAW,CAAC,CAAC;IAC7B,eAAe,CAAC,YAAY,CAAC,CAAC;IAC9B,eAAe,CAAC,iBAAiB,CAAC,CAAC;IACnC,eAAe,CAAC,WAAW,CAAC,CAAC;IAC7B,eAAe,CAAC,aAAa,CAAC,CAAC;IAC/B,eAAe,CAAC,UAAU,CAAC,CAAC;IAC5B,eAAe,CAAC,cAAc,CAAC,CAAC;IAChC,eAAe,CAAC,cAAc,CAAC,CAAC;IAChC,eAAe,CAAC,YAAY,CAAC,CAAC;IAC9B,eAAe,CAAC,aAAa,CAAC,CAAC;IAC/B,eAAe,CAAC,eAAe,CAAC,CAAC;IACjC,eAAe,CAAC,kBAAkB,CAAC,CAAC;IACpC,eAAe,CAAC,aAAa,CAAC,CAAC;IAC/B,eAAe,CAAC,aAAa,CAAC,CAAC;AACjC,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { Command } from './types.js';
2
+ export declare const injectCommand: Command;
3
+ //# sourceMappingURL=inject.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"inject.d.ts","sourceRoot":"","sources":["../../../src/slack/commands/inject.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAgC,MAAM,YAAY,CAAC;AAKxE,eAAO,MAAM,aAAa,EAAE,OA8C3B,CAAC"}
@@ -0,0 +1,44 @@
1
+ import { getAllSessions, setSession } from '../../agent/session.js';
2
+ const INJECT_RE = /^\$inject\s+(\S+)\s+(.+)/is;
3
+ export const injectCommand = {
4
+ name: 'inject',
5
+ match(text) {
6
+ const m = INJECT_RE.exec(text);
7
+ if (!m)
8
+ return null;
9
+ return { name: 'inject', args: `${m[1]} ${m[2]}` };
10
+ },
11
+ async execute(ctx) {
12
+ const m = INJECT_RE.exec(ctx.text);
13
+ if (!m)
14
+ return;
15
+ const partialId = m[1];
16
+ const command = m[2];
17
+ // 세션 ID 부분 매칭
18
+ const allSessions = getAllSessions();
19
+ const found = allSessions.find((s) => s.sessionId.startsWith(partialId));
20
+ if (!found) {
21
+ await ctx.client.chat.postMessage({
22
+ channel: ctx.channel,
23
+ thread_ts: ctx.threadTs,
24
+ text: `:x: 세션 \`${partialId}\`을(를) 찾을 수 없습니다.`,
25
+ }).catch(() => { });
26
+ return;
27
+ }
28
+ // 현재 스레드에 세션 연결
29
+ setSession(ctx.threadTs, found.sessionId, {
30
+ userId: ctx.userId,
31
+ channel: ctx.channel,
32
+ });
33
+ // 안내 메시지
34
+ await ctx.client.chat.postMessage({
35
+ channel: ctx.channel,
36
+ thread_ts: ctx.threadTs,
37
+ text: `:syringe: 세션 \`${found.sessionId}\`에 명령 주입 중...\n> ${command}`,
38
+ }).catch(() => { });
39
+ // 명령 전달 (순환 의존성 방지를 위해 dynamic import)
40
+ const { handleIncomingDirect } = await import('../handlers.js');
41
+ await handleIncomingDirect(command, ctx.channel, ctx.threadTs, ctx.messageTs, ctx.client, ctx.userId);
42
+ },
43
+ };
44
+ //# sourceMappingURL=inject.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"inject.js","sourceRoot":"","sources":["../../../src/slack/commands/inject.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAEpE,MAAM,SAAS,GAAG,4BAA4B,CAAC;AAE/C,MAAM,CAAC,MAAM,aAAa,GAAY;IACpC,IAAI,EAAE,QAAQ;IAEd,KAAK,CAAC,IAAY;QAChB,MAAM,CAAC,GAAG,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC/B,IAAI,CAAC,CAAC;YAAE,OAAO,IAAI,CAAC;QACpB,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;IACrD,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,GAAmB;QAC/B,MAAM,CAAC,GAAG,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QACnC,IAAI,CAAC,CAAC;YAAE,OAAO;QAEf,MAAM,SAAS,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QACvB,MAAM,OAAO,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QAErB,cAAc;QACd,MAAM,WAAW,GAAG,cAAc,EAAE,CAAC;QACrC,MAAM,KAAK,GAAG,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC;QAEzE,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,MAAM,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC;gBAChC,OAAO,EAAE,GAAG,CAAC,OAAO;gBACpB,SAAS,EAAE,GAAG,CAAC,QAAQ;gBACvB,IAAI,EAAE,YAAY,SAAS,mBAAmB;aAC/C,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;YACnB,OAAO;QACT,CAAC;QAED,gBAAgB;QAChB,UAAU,CAAC,GAAG,CAAC,QAAQ,EAAE,KAAK,CAAC,SAAS,EAAE;YACxC,MAAM,EAAE,GAAG,CAAC,MAAM;YAClB,OAAO,EAAE,GAAG,CAAC,OAAO;SACrB,CAAC,CAAC;QAEH,SAAS;QACT,MAAM,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC;YAChC,OAAO,EAAE,GAAG,CAAC,OAAO;YACpB,SAAS,EAAE,GAAG,CAAC,QAAQ;YACvB,IAAI,EAAE,kBAAkB,KAAK,CAAC,SAAS,qBAAqB,OAAO,EAAE;SACtE,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;QAEnB,uCAAuC;QACvC,MAAM,EAAE,oBAAoB,EAAE,GAAG,MAAM,MAAM,CAAC,gBAAgB,CAAC,CAAC;QAChE,MAAM,oBAAoB,CAAC,OAAO,EAAE,GAAG,CAAC,OAAO,EAAE,GAAG,CAAC,QAAQ,EAAE,GAAG,CAAC,SAAS,EAAE,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IACxG,CAAC;CACF,CAAC"}
@@ -3,16 +3,16 @@ import { config } from '../../config.js';
3
3
  export const memoryCommand = {
4
4
  name: 'memory',
5
5
  match(text) {
6
- // $기억 content
7
- let m = text.match(/^(\$기억|\$remember)\s+(.+)$/is);
6
+ // 기억해: content
7
+ let m = text.match(/^(기억해|\$remember|\/remember)\s*[::]\s*(.+)$/is);
8
8
  if (m)
9
9
  return { name: 'memory', args: `add:${m[2].trim()}` };
10
- // $기억삭제 id
11
- m = text.match(/^(\$기억삭제|\$forget)\s+(\S+)$/i);
10
+ // 기억 삭제: id
11
+ m = text.match(/^(기억\s*삭제|\$forget|\/forget)\s*[::]\s*(\S+)$/i);
12
12
  if (m)
13
13
  return { name: 'memory', args: `delete:${m[2].trim()}` };
14
- // $기억목록
15
- if (/^(\$기억목록|\$memories)$/i.test(text)) {
14
+ // 기억 목록
15
+ if (/^(기억\s*목록|\$memories|\/memories)$/i.test(text)) {
16
16
  return { name: 'memory', args: 'list' };
17
17
  }
18
18
  return null;
@@ -69,7 +69,7 @@ export const memoryCommand = {
69
69
  const date = new Date(e.createdAt).toLocaleDateString('ko-KR');
70
70
  text += `\`${e.id}\` ${e.content} _${date}_\n`;
71
71
  }
72
- text += '\n_삭제: `$기억삭제 <ID>`_';
72
+ text += '\n_삭제: `기억 삭제: <ID>`_';
73
73
  await ctx.client.chat.postMessage({
74
74
  channel: ctx.channel,
75
75
  thread_ts: ctx.threadTs,
@@ -1 +1 @@
1
- {"version":3,"file":"memory.js","sourceRoot":"","sources":["../../../src/slack/commands/memory.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"memory.js","sourceRoot":"","sources":["../../../src/slack/commands/memory.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import type { Command } from './types.js';
2
+ export declare const modelCommand: Command;
3
+ //# sourceMappingURL=model.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"model.d.ts","sourceRoot":"","sources":["../../../src/slack/commands/model.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAgC,MAAM,YAAY,CAAC;AASxE,eAAO,MAAM,YAAY,EAAE,OAuC1B,CAAC"}
@@ -0,0 +1,43 @@
1
+ import { config, setRuntimeConfig } from '../../config.js';
2
+ // 모델 별칭 → 실제 모델 ID
3
+ const MODEL_ALIASES = {
4
+ sonnet: 'claude-sonnet-4-20250514',
5
+ opus: 'claude-opus-4-20250514',
6
+ haiku: 'claude-haiku-4-5-20251001',
7
+ };
8
+ export const modelCommand = {
9
+ name: 'model',
10
+ match(text) {
11
+ const lower = text.toLowerCase();
12
+ if (lower === '$model' || lower === '$모델') {
13
+ return { name: 'model', args: '' };
14
+ }
15
+ if (lower.startsWith('$model ') || lower.startsWith('$모델 ')) {
16
+ const args = text.slice(text.indexOf(' ') + 1).trim();
17
+ return { name: 'model', args };
18
+ }
19
+ return null;
20
+ },
21
+ async execute(ctx) {
22
+ const arg = ctx.text.trim();
23
+ // 인자 없으면 현재 모델 표시
24
+ if (!arg) {
25
+ const current = config.agent.model || '(기본값)';
26
+ await ctx.client.chat.postMessage({
27
+ channel: ctx.channel,
28
+ thread_ts: ctx.threadTs,
29
+ text: `:brain: 현재 모델: \`${current}\``,
30
+ }).catch(() => { });
31
+ return;
32
+ }
33
+ // 별칭 또는 직접 지정
34
+ const resolved = MODEL_ALIASES[arg.toLowerCase()] ?? arg;
35
+ setRuntimeConfig('model', resolved);
36
+ await ctx.client.chat.postMessage({
37
+ channel: ctx.channel,
38
+ thread_ts: ctx.threadTs,
39
+ text: `:brain: 모델 변경: \`${resolved}\``,
40
+ }).catch(() => { });
41
+ },
42
+ };
43
+ //# sourceMappingURL=model.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"model.js","sourceRoot":"","sources":["../../../src/slack/commands/model.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAG3D,mBAAmB;AACnB,MAAM,aAAa,GAA2B;IAC5C,MAAM,EAAE,0BAA0B;IAClC,IAAI,EAAE,wBAAwB;IAC9B,KAAK,EAAE,2BAA2B;CACnC,CAAC;AAEF,MAAM,CAAC,MAAM,YAAY,GAAY;IACnC,IAAI,EAAE,OAAO;IAEb,KAAK,CAAC,IAAY;QAChB,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;QACjC,IAAI,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,KAAK,EAAE,CAAC;YAC1C,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC;QACrC,CAAC;QACD,IAAI,KAAK,CAAC,UAAU,CAAC,SAAS,CAAC,IAAI,KAAK,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC;YAC5D,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;YACtD,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;QACjC,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,GAAmB;QAC/B,MAAM,GAAG,GAAG,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;QAE5B,kBAAkB;QAClB,IAAI,CAAC,GAAG,EAAE,CAAC;YACT,MAAM,OAAO,GAAG,MAAM,CAAC,KAAK,CAAC,KAAK,IAAI,OAAO,CAAC;YAC9C,MAAM,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC;gBAChC,OAAO,EAAE,GAAG,CAAC,OAAO;gBACpB,SAAS,EAAE,GAAG,CAAC,QAAQ;gBACvB,IAAI,EAAE,oBAAoB,OAAO,IAAI;aACtC,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;YACnB,OAAO;QACT,CAAC;QAED,cAAc;QACd,MAAM,QAAQ,GAAG,aAAa,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC,IAAI,GAAG,CAAC;QACzD,gBAAgB,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;QAEpC,MAAM,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC;YAChC,OAAO,EAAE,GAAG,CAAC,OAAO;YACpB,SAAS,EAAE,GAAG,CAAC,QAAQ;YACvB,IAAI,EAAE,oBAAoB,QAAQ,IAAI;SACvC,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;IACrB,CAAC;CACF,CAAC"}
@@ -1,5 +1,5 @@
1
1
  import { clearSession } from '../../agent/session.js';
2
- const TRIGGERS = ['$new', '$초기화', '$리셋'];
2
+ const TRIGGERS = ['$new', '$reset', '$새대화', '/new', '/reset'];
3
3
  export const newCommand = {
4
4
  name: 'new',
5
5
  match(text) {
@@ -1 +1 @@
1
- {"version":3,"file":"new.js","sourceRoot":"","sources":["../../../src/slack/commands/new.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAGtD,MAAM,QAAQ,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC;AAEzC,MAAM,CAAC,MAAM,UAAU,GAAY;IACjC,IAAI,EAAE,KAAK;IAEX,KAAK,CAAC,IAAY;QAChB,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;QACjC,IAAI,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;YAC7B,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC;QACnC,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,GAAmB;QAC/B,MAAM,YAAY,GAAG,YAAY,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QAChD,MAAM,GAAG,GAAG,YAAY;YACtB,CAAC,CAAC,iDAAiD,YAAY,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,QAAQ;YACnF,CAAC,CAAC,yCAAyC,CAAC;QAE9C,MAAM,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC;YAChC,OAAO,EAAE,GAAG,CAAC,OAAO;YACpB,SAAS,EAAE,GAAG,CAAC,QAAQ;YACvB,IAAI,EAAE,GAAG;SACV,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;IACrB,CAAC;CACF,CAAC"}
1
+ {"version":3,"file":"new.js","sourceRoot":"","sources":["../../../src/slack/commands/new.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAGtD,MAAM,QAAQ,GAAG,CAAC,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC;AAE9D,MAAM,CAAC,MAAM,UAAU,GAAY;IACjC,IAAI,EAAE,KAAK;IAEX,KAAK,CAAC,IAAY;QAChB,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;QACjC,IAAI,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;YAC7B,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC;QACnC,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,GAAmB;QAC/B,MAAM,YAAY,GAAG,YAAY,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QAChD,MAAM,GAAG,GAAG,YAAY;YACtB,CAAC,CAAC,iDAAiD,YAAY,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,QAAQ;YACnF,CAAC,CAAC,yCAAyC,CAAC;QAE9C,MAAM,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC;YAChC,OAAO,EAAE,GAAG,CAAC,OAAO;YACpB,SAAS,EAAE,GAAG,CAAC,QAAQ;YACvB,IAAI,EAAE,GAAG;SACV,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;IACrB,CAAC;CACF,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { Command } from './types.js';
2
+ export declare const permissionCommand: Command;
3
+ //# sourceMappingURL=permission.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"permission.d.ts","sourceRoot":"","sources":["../../../src/slack/commands/permission.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAgC,MAAM,YAAY,CAAC;AAUxE,eAAO,MAAM,iBAAiB,EAAE,OA+C/B,CAAC"}
@@ -0,0 +1,51 @@
1
+ import { config, setRuntimeConfig } from '../../config.js';
2
+ // 허용되는 권한 모드
3
+ const VALID_MODES = {
4
+ bypass: 'bypassPermissions',
5
+ plan: 'plan',
6
+ accept: 'acceptEdits',
7
+ acceptedits: 'acceptEdits',
8
+ };
9
+ export const permissionCommand = {
10
+ name: 'permission',
11
+ match(text) {
12
+ const lower = text.toLowerCase();
13
+ if (lower === '$permission' || lower === '$권한') {
14
+ return { name: 'permission', args: '' };
15
+ }
16
+ if (lower.startsWith('$permission ') || lower.startsWith('$권한 ')) {
17
+ const args = text.slice(text.indexOf(' ') + 1).trim();
18
+ return { name: 'permission', args };
19
+ }
20
+ return null;
21
+ },
22
+ async execute(ctx) {
23
+ const arg = ctx.text.trim();
24
+ // 인자 없으면 현재 모드 표시
25
+ if (!arg) {
26
+ await ctx.client.chat.postMessage({
27
+ channel: ctx.channel,
28
+ thread_ts: ctx.threadTs,
29
+ text: `:lock: 현재 권한 모드: \`${config.agent.permissionMode}\``,
30
+ }).catch(() => { });
31
+ return;
32
+ }
33
+ const resolved = VALID_MODES[arg.toLowerCase()];
34
+ if (!resolved) {
35
+ const validKeys = Object.keys(VALID_MODES).join(', ');
36
+ await ctx.client.chat.postMessage({
37
+ channel: ctx.channel,
38
+ thread_ts: ctx.threadTs,
39
+ text: `:warning: 알 수 없는 모드: \`${arg}\`\n사용 가능: ${validKeys}`,
40
+ }).catch(() => { });
41
+ return;
42
+ }
43
+ setRuntimeConfig('permissionMode', resolved);
44
+ await ctx.client.chat.postMessage({
45
+ channel: ctx.channel,
46
+ thread_ts: ctx.threadTs,
47
+ text: `:lock: 권한 모드 변경: \`${resolved}\``,
48
+ }).catch(() => { });
49
+ },
50
+ };
51
+ //# sourceMappingURL=permission.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"permission.js","sourceRoot":"","sources":["../../../src/slack/commands/permission.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAG3D,aAAa;AACb,MAAM,WAAW,GAA2B;IAC1C,MAAM,EAAE,mBAAmB;IAC3B,IAAI,EAAE,MAAM;IACZ,MAAM,EAAE,aAAa;IACrB,WAAW,EAAE,aAAa;CAC3B,CAAC;AAEF,MAAM,CAAC,MAAM,iBAAiB,GAAY;IACxC,IAAI,EAAE,YAAY;IAElB,KAAK,CAAC,IAAY;QAChB,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;QACjC,IAAI,KAAK,KAAK,aAAa,IAAI,KAAK,KAAK,KAAK,EAAE,CAAC;YAC/C,OAAO,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC;QAC1C,CAAC;QACD,IAAI,KAAK,CAAC,UAAU,CAAC,cAAc,CAAC,IAAI,KAAK,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC;YACjE,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;YACtD,OAAO,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC;QACtC,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,GAAmB;QAC/B,MAAM,GAAG,GAAG,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;QAE5B,kBAAkB;QAClB,IAAI,CAAC,GAAG,EAAE,CAAC;YACT,MAAM,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC;gBAChC,OAAO,EAAE,GAAG,CAAC,OAAO;gBACpB,SAAS,EAAE,GAAG,CAAC,QAAQ;gBACvB,IAAI,EAAE,sBAAsB,MAAM,CAAC,KAAK,CAAC,cAAc,IAAI;aAC5D,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;YACnB,OAAO;QACT,CAAC;QAED,MAAM,QAAQ,GAAG,WAAW,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC,CAAC;QAChD,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,MAAM,SAAS,GAAG,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACtD,MAAM,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC;gBAChC,OAAO,EAAE,GAAG,CAAC,OAAO;gBACpB,SAAS,EAAE,GAAG,CAAC,QAAQ;gBACvB,IAAI,EAAE,0BAA0B,GAAG,cAAc,SAAS,EAAE;aAC7D,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;YACnB,OAAO;QACT,CAAC;QAED,gBAAgB,CAAC,gBAAgB,EAAE,QAAQ,CAAC,CAAC;QAE7C,MAAM,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC;YAChC,OAAO,EAAE,GAAG,CAAC,OAAO;YACpB,SAAS,EAAE,GAAG,CAAC,QAAQ;YACvB,IAAI,EAAE,sBAAsB,QAAQ,IAAI;SACzC,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;IACrB,CAAC;CACF,CAAC"}
@@ -3,9 +3,9 @@ import { config } from '../../config.js';
3
3
  export const projectCommand = {
4
4
  name: 'project',
5
5
  match(text) {
6
- const m = text.match(/^(\$프로젝트|\$project)\s+(\S+)$/i);
6
+ const m = text.match(/^프로젝트[:\s]+(\S+)$/);
7
7
  if (m) {
8
- return { name: 'project', args: m[2] };
8
+ return { name: 'project', args: m[1] };
9
9
  }
10
10
  return null;
11
11
  },
@@ -1 +1 @@
1
- {"version":3,"file":"project.js","sourceRoot":"","sources":["../../../src/slack/commands/project.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AACpD,OAAO,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AAGzC,MAAM,CAAC,MAAM,cAAc,GAAY;IACrC,IAAI,EAAE,SAAS;IAEf,KAAK,CAAC,IAAY;QAChB,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,+BAA+B,CAAC,CAAC;QACtD,IAAI,CAAC,EAAE,CAAC;YACN,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QACzC,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,GAAmB;QAC/B,MAAM,WAAW,GAAG,GAAG,CAAC,IAAI,CAAC,CAAC,kBAAkB;QAChD,MAAM,QAAQ,GAAG,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC;QACvC,MAAM,WAAW,GAAG,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAE1C,IAAI,QAAQ,CAAC,WAAW,CAAC,EAAE,CAAC;YAC1B,UAAU,CAAC,GAAG,CAAC,QAAQ,EAAE,QAAQ,CAAC,WAAW,CAAC,CAAC,CAAC;YAChD,MAAM,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC;gBAChC,OAAO,EAAE,GAAG,CAAC,OAAO;gBACpB,SAAS,EAAE,GAAG,CAAC,QAAQ;gBACvB,IAAI,EAAE,wBAAwB,WAAW,mBAAmB,QAAQ,CAAC,WAAW,CAAC,IAAI;aACtF,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;QACrB,CAAC;aAAM,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAClC,MAAM,IAAI,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,SAAS,IAAI,QAAQ,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACzF,MAAM,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC;gBAChC,OAAO,EAAE,GAAG,CAAC,OAAO;gBACpB,SAAS,EAAE,GAAG,CAAC,QAAQ;gBACvB,IAAI,EAAE,eAAe,WAAW,qCAAqC,IAAI,EAAE;aAC5E,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;QACrB,CAAC;aAAM,CAAC;YACN,MAAM,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC;gBAChC,OAAO,EAAE,GAAG,CAAC,OAAO;gBACpB,SAAS,EAAE,GAAG,CAAC,QAAQ;gBACvB,IAAI,EAAE,yDAAyD;aAChE,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;QACrB,CAAC;IACH,CAAC;CACF,CAAC"}
1
+ {"version":3,"file":"project.js","sourceRoot":"","sources":["../../../src/slack/commands/project.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AACpD,OAAO,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AAGzC,MAAM,CAAC,MAAM,cAAc,GAAY;IACrC,IAAI,EAAE,SAAS;IAEf,KAAK,CAAC,IAAY;QAChB,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,mBAAmB,CAAC,CAAC;QAC1C,IAAI,CAAC,EAAE,CAAC;YACN,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QACzC,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,GAAmB;QAC/B,MAAM,WAAW,GAAG,GAAG,CAAC,IAAI,CAAC,CAAC,kBAAkB;QAChD,MAAM,QAAQ,GAAG,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC;QACvC,MAAM,WAAW,GAAG,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAE1C,IAAI,QAAQ,CAAC,WAAW,CAAC,EAAE,CAAC;YAC1B,UAAU,CAAC,GAAG,CAAC,QAAQ,EAAE,QAAQ,CAAC,WAAW,CAAC,CAAC,CAAC;YAChD,MAAM,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC;gBAChC,OAAO,EAAE,GAAG,CAAC,OAAO;gBACpB,SAAS,EAAE,GAAG,CAAC,QAAQ;gBACvB,IAAI,EAAE,wBAAwB,WAAW,mBAAmB,QAAQ,CAAC,WAAW,CAAC,IAAI;aACtF,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;QACrB,CAAC;aAAM,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAClC,MAAM,IAAI,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,SAAS,IAAI,QAAQ,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACzF,MAAM,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC;gBAChC,OAAO,EAAE,GAAG,CAAC,OAAO;gBACpB,SAAS,EAAE,GAAG,CAAC,QAAQ;gBACvB,IAAI,EAAE,eAAe,WAAW,qCAAqC,IAAI,EAAE;aAC5E,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;QACrB,CAAC;aAAM,CAAC;YACN,MAAM,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC;gBAChC,OAAO,EAAE,GAAG,CAAC,OAAO;gBACpB,SAAS,EAAE,GAAG,CAAC,QAAQ;gBACvB,IAAI,EAAE,yDAAyD;aAChE,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;QACrB,CAAC;IACH,CAAC;CACF,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { Command } from './types.js';
2
+ export declare const resumeCommand: Command;
3
+ //# sourceMappingURL=resume.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resume.d.ts","sourceRoot":"","sources":["../../../src/slack/commands/resume.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAgC,MAAM,YAAY,CAAC;AAExE,eAAO,MAAM,aAAa,EAAE,OAiG3B,CAAC"}
@@ -0,0 +1,93 @@
1
+ import { getAllSessions, findSessionById, findBySessionId, getSession, setSession, setWorkDir } from '../../agent/session.js';
2
+ export const resumeCommand = {
3
+ name: 'resume',
4
+ match(text) {
5
+ const lower = text.toLowerCase();
6
+ if (lower === '$resume' || lower === '$이어서') {
7
+ return { name: 'resume', args: '' };
8
+ }
9
+ const patterns = [/^\$resume\s+(.+)$/i, /^\$이어서\s+(.+)$/i];
10
+ for (const pattern of patterns) {
11
+ const m = text.match(pattern);
12
+ if (m)
13
+ return { name: 'resume', args: m[1].trim() };
14
+ }
15
+ return null;
16
+ },
17
+ async execute(ctx) {
18
+ const partialId = ctx.text.trim();
19
+ // 인자 없으면 활성 세션 목록 표시
20
+ if (!partialId) {
21
+ const sessions = getAllSessions();
22
+ let text = ':mag: *사용법:* `$resume <세션ID>` (8자리 이상 부분 매칭)\n';
23
+ if (sessions.length > 0) {
24
+ text += '\n*최근 세션:*\n';
25
+ for (const s of sessions.slice(0, 5)) {
26
+ const short = s.sessionId.slice(0, 8);
27
+ const user = s.userId ? `<@${s.userId}>` : '(알 수 없음)';
28
+ const prompt = s.lastPrompt ? `_${s.lastPrompt}_` : '(없음)';
29
+ text += ` \`${short}\` ${user} - ${prompt}\n`;
30
+ }
31
+ }
32
+ else {
33
+ text += '\n활성 세션이 없습니다.';
34
+ }
35
+ await ctx.client.chat.postMessage({
36
+ channel: ctx.channel,
37
+ thread_ts: ctx.threadTs,
38
+ text,
39
+ }).catch(() => { });
40
+ return;
41
+ }
42
+ // 이미 같은 세션이 연결되어 있는지 확인
43
+ const current = getSession(ctx.threadTs);
44
+ if (current && current.startsWith(partialId)) {
45
+ await ctx.client.chat.postMessage({
46
+ channel: ctx.channel,
47
+ thread_ts: ctx.threadTs,
48
+ text: ':information_source: 이미 이 세션이 연결되어 있습니다.',
49
+ }).catch(() => { });
50
+ return;
51
+ }
52
+ // 부분 매칭으로 세션 검색
53
+ const found = findSessionById(partialId);
54
+ if (!found) {
55
+ await ctx.client.chat.postMessage({
56
+ channel: ctx.channel,
57
+ thread_ts: ctx.threadTs,
58
+ text: `:x: 세션 \`${partialId}\`을(를) 찾을 수 없습니다.\n\`$resume\`으로 활성 세션 목록을 확인하세요.`,
59
+ }).catch(() => { });
60
+ return;
61
+ }
62
+ // workDir 복사 (정확한 세션 ID로 조회)
63
+ const source = findBySessionId(found.sessionId);
64
+ setSession(ctx.threadTs, found.sessionId, {
65
+ userId: ctx.userId,
66
+ channel: ctx.channel,
67
+ });
68
+ if (source?.workDir) {
69
+ setWorkDir(ctx.threadTs, source.workDir);
70
+ // setWorkDir이 세션을 초기화하므로 다시 설정
71
+ setSession(ctx.threadTs, found.sessionId, {
72
+ userId: ctx.userId,
73
+ channel: ctx.channel,
74
+ });
75
+ }
76
+ const shortId = found.sessionId.slice(0, 8);
77
+ const origUser = found.userId ? `<@${found.userId}>` : '(알 수 없음)';
78
+ const lastPrompt = found.lastPrompt ? `_${found.lastPrompt}_` : '(없음)';
79
+ await ctx.client.chat.postMessage({
80
+ channel: ctx.channel,
81
+ thread_ts: ctx.threadTs,
82
+ text: [
83
+ `:link: 세션 \`${shortId}\` 연결됨`,
84
+ `*원래 사용자:* ${origUser}`,
85
+ `*마지막 작업:* ${lastPrompt}`,
86
+ source?.workDir ? `*작업 디렉토리:* \`${source.workDir}\`` : '',
87
+ '',
88
+ '이제 이 스레드에서 해당 세션으로 이어서 대화할 수 있습니다.',
89
+ ].filter(Boolean).join('\n'),
90
+ }).catch(() => { });
91
+ },
92
+ };
93
+ //# sourceMappingURL=resume.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resume.js","sourceRoot":"","sources":["../../../src/slack/commands/resume.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import type { Command } from './types.js';
2
+ export declare const sessionInfoCommand: Command;
3
+ //# sourceMappingURL=session-info.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"session-info.d.ts","sourceRoot":"","sources":["../../../src/slack/commands/session-info.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAgC,MAAM,YAAY,CAAC;AAExE,eAAO,MAAM,kBAAkB,EAAE,OAgChC,CAAC"}
@@ -0,0 +1,33 @@
1
+ import { getSession, getWorkDir } from '../../agent/session.js';
2
+ export const sessionInfoCommand = {
3
+ name: 'session-info',
4
+ match(text) {
5
+ const lower = text.toLowerCase();
6
+ if (['$session', '$세션'].includes(lower)) {
7
+ return { name: 'session-info', args: '' };
8
+ }
9
+ return null;
10
+ },
11
+ async execute(ctx) {
12
+ const sessionId = getSession(ctx.threadTs);
13
+ const workDir = getWorkDir(ctx.threadTs);
14
+ let msg;
15
+ if (sessionId) {
16
+ const parts = [`:brain: *세션 정보*`];
17
+ parts.push(`• ID: \`${sessionId}\``);
18
+ if (workDir)
19
+ parts.push(`• 작업 디렉토리: \`${workDir}\``);
20
+ parts.push(`\n다른 스레드에서 이어서 사용하려면:\n\`$resume ${sessionId}\``);
21
+ msg = parts.join('\n');
22
+ }
23
+ else {
24
+ msg = ':information_source: 이 스레드에 활성 세션이 없습니다.';
25
+ }
26
+ await ctx.client.chat.postMessage({
27
+ channel: ctx.channel,
28
+ thread_ts: ctx.threadTs,
29
+ text: msg,
30
+ }).catch(() => { });
31
+ },
32
+ };
33
+ //# sourceMappingURL=session-info.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"session-info.js","sourceRoot":"","sources":["../../../src/slack/commands/session-info.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAGhE,MAAM,CAAC,MAAM,kBAAkB,GAAY;IACzC,IAAI,EAAE,cAAc;IAEpB,KAAK,CAAC,IAAY;QAChB,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;QACjC,IAAI,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;YACxC,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC;QAC5C,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,GAAmB;QAC/B,MAAM,SAAS,GAAG,UAAU,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QAC3C,MAAM,OAAO,GAAG,UAAU,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QAEzC,IAAI,GAAW,CAAC;QAChB,IAAI,SAAS,EAAE,CAAC;YACd,MAAM,KAAK,GAAG,CAAC,iBAAiB,CAAC,CAAC;YAClC,KAAK,CAAC,IAAI,CAAC,WAAW,SAAS,IAAI,CAAC,CAAC;YACrC,IAAI,OAAO;gBAAE,KAAK,CAAC,IAAI,CAAC,gBAAgB,OAAO,IAAI,CAAC,CAAC;YACrD,KAAK,CAAC,IAAI,CAAC,oCAAoC,SAAS,IAAI,CAAC,CAAC;YAC9D,GAAG,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACzB,CAAC;aAAM,CAAC;YACN,GAAG,GAAG,0CAA0C,CAAC;QACnD,CAAC;QAED,MAAM,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC;YAChC,OAAO,EAAE,GAAG,CAAC,OAAO;YACpB,SAAS,EAAE,GAAG,CAAC,QAAQ;YACvB,IAAI,EAAE,GAAG;SACV,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;IACrB,CAAC;CACF,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { Command } from './types.js';
2
+ export declare const sessionsCommand: Command;
3
+ //# sourceMappingURL=sessions.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sessions.d.ts","sourceRoot":"","sources":["../../../src/slack/commands/sessions.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,OAAO,EAAgC,MAAM,YAAY,CAAC;AAaxE,eAAO,MAAM,eAAe,EAAE,OA6C7B,CAAC"}
@@ -0,0 +1,54 @@
1
+ import { getAllSessions } from '../../agent/session.js';
2
+ import { getActiveAgentCount, getMaxConcurrent } from '../middleware.js';
3
+ const TRIGGERS = ['$sessions', '$세션', '$세션목록'];
4
+ function formatTimeAgo(ms) {
5
+ const seconds = Math.floor(ms / 1000);
6
+ if (seconds < 60)
7
+ return `${seconds}초 전`;
8
+ const minutes = Math.floor(seconds / 60);
9
+ if (minutes < 60)
10
+ return `${minutes}분 전`;
11
+ const hours = Math.floor(minutes / 60);
12
+ return `${hours}시간 전`;
13
+ }
14
+ export const sessionsCommand = {
15
+ name: 'sessions',
16
+ match(text) {
17
+ const lower = text.toLowerCase();
18
+ if (TRIGGERS.includes(lower)) {
19
+ return { name: 'sessions', args: '' };
20
+ }
21
+ return null;
22
+ },
23
+ async execute(ctx) {
24
+ const sessions = getAllSessions();
25
+ const activeCount = getActiveAgentCount();
26
+ const maxCount = getMaxConcurrent();
27
+ const now = Date.now();
28
+ let output = `:desktop_computer: *활성 세션 ${sessions.length}개* (처리 중 ${activeCount}/${maxCount})\n`;
29
+ if (sessions.length === 0) {
30
+ output += '\n_활성 세션이 없습니다._\n';
31
+ }
32
+ else {
33
+ output += '\n';
34
+ for (let i = 0; i < sessions.length; i++) {
35
+ const s = sessions[i];
36
+ const shortId = s.sessionId.slice(0, 8);
37
+ const timeAgo = formatTimeAgo(now - s.lastAccessedAt);
38
+ const userMention = s.userId ? `<@${s.userId}>` : '(알 수 없음)';
39
+ // 자신의 세션만 프롬프트 공개, 타인 세션은 보호
40
+ const isOwn = ctx.userId && s.userId === ctx.userId;
41
+ const prompt = isOwn && s.lastPrompt ? s.lastPrompt : '(비공개)';
42
+ output += `*${i + 1}.* \`${shortId}\` · ${userMention} · ${timeAgo}\n`;
43
+ output += ` _${prompt}_\n`;
44
+ }
45
+ }
46
+ output += '\n_`$resume <세션ID>` 로 세션에 연결, `$inject <세션ID> <명령>` 으로 명령 주입_';
47
+ await ctx.client.chat.postMessage({
48
+ channel: ctx.channel,
49
+ thread_ts: ctx.threadTs,
50
+ text: output,
51
+ }).catch(() => { });
52
+ },
53
+ };
54
+ //# sourceMappingURL=sessions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sessions.js","sourceRoot":"","sources":["../../../src/slack/commands/sessions.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"status.d.ts","sourceRoot":"","sources":["../../../src/slack/commands/status.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,OAAO,EAAgC,MAAM,YAAY,CAAC;AAIxE,eAAO,MAAM,aAAa,EAAE,OA2D3B,CAAC"}
1
+ {"version":3,"file":"status.d.ts","sourceRoot":"","sources":["../../../src/slack/commands/status.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,OAAO,EAAgC,MAAM,YAAY,CAAC;AAIxE,eAAO,MAAM,aAAa,EAAE,OA+D3B,CAAC"}