@damian87/omp 0.6.0 → 0.8.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.
Files changed (60) hide show
  1. package/.github/skills/team/SKILL.md +82 -57
  2. package/.github/skills/team/scripts/team-launch.sh +140 -42
  3. package/README.md +31 -0
  4. package/catalog/skills-general.json +2 -2
  5. package/dist/src/cli.d.ts +1 -7
  6. package/dist/src/cli.js +355 -1
  7. package/dist/src/cli.js.map +1 -1
  8. package/dist/src/commands/registry.d.ts +3 -0
  9. package/dist/src/commands/registry.js +11 -0
  10. package/dist/src/commands/registry.js.map +1 -0
  11. package/dist/src/commands/suggest.d.ts +19 -0
  12. package/dist/src/commands/suggest.js +158 -0
  13. package/dist/src/commands/suggest.js.map +1 -0
  14. package/dist/src/commands/types.d.ts +16 -0
  15. package/dist/src/commands/types.js +2 -0
  16. package/dist/src/commands/types.js.map +1 -0
  17. package/dist/src/env/dotenv.d.ts +41 -0
  18. package/dist/src/env/dotenv.js +112 -0
  19. package/dist/src/env/dotenv.js.map +1 -0
  20. package/dist/src/env/init.d.ts +50 -0
  21. package/dist/src/env/init.js +276 -0
  22. package/dist/src/env/init.js.map +1 -0
  23. package/dist/src/gateway/connector.d.ts +37 -0
  24. package/dist/src/gateway/connector.js +12 -0
  25. package/dist/src/gateway/connector.js.map +1 -0
  26. package/dist/src/gateway/connectors/slack.d.ts +69 -0
  27. package/dist/src/gateway/connectors/slack.js +159 -0
  28. package/dist/src/gateway/connectors/slack.js.map +1 -0
  29. package/dist/src/gateway/registry.d.ts +29 -0
  30. package/dist/src/gateway/registry.js +37 -0
  31. package/dist/src/gateway/registry.js.map +1 -0
  32. package/dist/src/gateway/runtime.d.ts +58 -0
  33. package/dist/src/gateway/runtime.js +105 -0
  34. package/dist/src/gateway/runtime.js.map +1 -0
  35. package/dist/src/instructions-memory.js +8 -15
  36. package/dist/src/instructions-memory.js.map +1 -1
  37. package/dist/src/jira.js +2 -14
  38. package/dist/src/jira.js.map +1 -1
  39. package/dist/src/slack/config.d.ts +32 -0
  40. package/dist/src/slack/config.js +52 -0
  41. package/dist/src/slack/config.js.map +1 -0
  42. package/dist/src/slack/handler.d.ts +48 -0
  43. package/dist/src/slack/handler.js +68 -0
  44. package/dist/src/slack/handler.js.map +1 -0
  45. package/dist/src/slack/serve.d.ts +8 -0
  46. package/dist/src/slack/serve.js +7 -0
  47. package/dist/src/slack/serve.js.map +1 -0
  48. package/dist/src/team/index.d.ts +1 -0
  49. package/dist/src/team/index.js +1 -0
  50. package/dist/src/team/index.js.map +1 -1
  51. package/dist/src/team/pane-monitor.d.ts +39 -0
  52. package/dist/src/team/pane-monitor.js +128 -0
  53. package/dist/src/team/pane-monitor.js.map +1 -0
  54. package/dist/src/team/runtime.js +12 -1
  55. package/dist/src/team/runtime.js.map +1 -1
  56. package/dist/src/team/tmux.d.ts +13 -0
  57. package/dist/src/team/tmux.js +47 -0
  58. package/dist/src/team/tmux.js.map +1 -1
  59. package/docs/slack-setup.md +144 -0
  60. package/package.json +4 -2
@@ -1 +1 @@
1
- {"version":3,"file":"tmux.js","sourceRoot":"","sources":["../../../src/team/tmux.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"tmux.js","sourceRoot":"","sources":["../../../src/team/tmux.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,144 @@
1
+ # Slack → Copilot bridge (`omp gateway`)
2
+
3
+ Drive a running GitHub Copilot CLI session from Slack: DM the bot (or @mention it in a
4
+ channel) and it forwards your message to Copilot over the `comms`/tmux bridge, then posts
5
+ Copilot's reply back **in-thread**.
6
+
7
+ It uses **Socket Mode**, so it needs **no public URL** — it runs from your laptop behind NAT.
8
+
9
+ Slack is the first connector that runs under the generic `omp gateway` runtime. Future
10
+ connectors (Telegram, Discord, webhooks) plug into the same `gateway serve` command.
11
+
12
+ ## 1. Create the Slack app (from manifest)
13
+
14
+ Go to <https://api.slack.com/apps> → **Create New App** → **From an app manifest** → pick your
15
+ workspace → paste this YAML:
16
+
17
+ ```yaml
18
+ display_information:
19
+ name: omp-copilot
20
+ description: Bridge to a local GitHub Copilot CLI session
21
+ features:
22
+ bot_user:
23
+ display_name: omp-copilot
24
+ always_online: true
25
+ app_home:
26
+ messages_tab_enabled: true
27
+ messages_tab_read_only_enabled: false
28
+ oauth_config:
29
+ scopes:
30
+ bot:
31
+ - app_mentions:read
32
+ - chat:write
33
+ - im:history
34
+ - im:read
35
+ - im:write
36
+ # add channels:history only if you also want channel @mentions in public channels
37
+ settings:
38
+ event_subscriptions:
39
+ bot_events:
40
+ - app_mention
41
+ - message.im
42
+ interactivity:
43
+ is_enabled: false
44
+ org_deploy_enabled: false
45
+ socket_mode_enabled: true
46
+ ```
47
+
48
+ ## 2. Get the two tokens
49
+
50
+ - **App-level token (xapp-…)** — *Basic Information → App-Level Tokens → Generate* with scope
51
+ **`connections:write`**. This is `SLACK_APP_TOKEN` (Socket Mode).
52
+ - **Bot token (xoxb-…)** — *Install App* to your workspace, then *OAuth & Permissions →
53
+ Bot User OAuth Token*. This is `SLACK_BOT_TOKEN`.
54
+
55
+ (Optional) find your own Slack user ID (profile → ⋯ → Copy member ID, `U…`) to lock the bot to
56
+ just you via `SLACK_ALLOWED_USERS`.
57
+
58
+ ## 3. Run the bridge
59
+
60
+ The bridge talks to Copilot through the `comms` layer, so a Copilot tmux session must be
61
+ running first.
62
+
63
+ ```bash
64
+ # Terminal A — a running Copilot session (or `omp` to launch one)
65
+ tmux new-session -d -s omp-9999 # any omp-<digits> name; or run: omp
66
+
67
+ # Terminal B — write ~/.omp/.env once, then run the gateway.
68
+ #
69
+ # `omp env init` is interactive: it prints the exact Slack-admin pages to
70
+ # pull each token from, prompts you, and writes ~/.omp/.env (chmod 600).
71
+ # `omp` then auto-loads that file on every invocation — no `source` step.
72
+ # Shell exports always win, so a one-off override like
73
+ # `SLACK_BOT_TOKEN=other omp gateway serve` still works.
74
+ omp env init
75
+
76
+ # Re-running shows masked existing values and asks before overwriting.
77
+ #
78
+ # Scripted form (CI, automation) — PREFER env vars over flags so tokens
79
+ # never land in shell history, `ps`, or CI logs:
80
+ # OMP_INIT_BOT_TOKEN=xoxb-… OMP_INIT_APP_TOKEN=xapp-… \
81
+ # OMP_INIT_SESSION=omp-9999 OMP_INIT_USERS=U1,U2 \
82
+ # omp env init --force
83
+ # (--bot-token / --app-token still work but emit a stderr warning;
84
+ # silence it with OMP_INIT_NO_WARN=1 only when you know it's safe.)
85
+
86
+ omp gateway serve # auto-loads ~/.omp/.env first
87
+ ```
88
+
89
+ Alternative: shell exports still work for CI or one-off sessions:
90
+ ```bash
91
+ export SLACK_BOT_TOKEN=xoxb-...
92
+ export SLACK_APP_TOKEN=xapp-...
93
+ omp gateway serve
94
+ ```
95
+
96
+ To restrict the gateway to a subset of connectors (useful when more connectors land):
97
+ ```bash
98
+ omp gateway serve --only slack
99
+ ```
100
+
101
+ Preflight without connecting:
102
+ ```bash
103
+ omp gateway status # per-connector readiness: tokens present + copilot session resolvable
104
+ omp gateway status --json # machine-readable; exit 0 when ready
105
+ ```
106
+
107
+ `omp slack serve` and `omp slack doctor` still work as **deprecated aliases** that forward
108
+ to `omp gateway serve --only slack` and `omp gateway status --only slack` — so any existing
109
+ scripts keep running.
110
+
111
+ ## 4. Use it
112
+
113
+ - **DM** the bot: `what files changed in the last commit?` → Copilot's answer threads back.
114
+ - **@mention** in a channel the bot is in: `@omp-copilot summarize this repo`.
115
+
116
+ ## Behavior
117
+
118
+ - DMs always respond; channels respond only on @mention (set `SLACK_REQUIRE_MENTION=false` to
119
+ respond to every channel message the bot can see).
120
+ - Non-allowlisted users are silently ignored (when `SLACK_ALLOWED_USERS` is set and not `*`).
121
+ - Errors come back as friendly replies: no running Copilot session, offline, Copilot busy, or
122
+ a timeout note if Copilot is still working.
123
+ - Replies post in the message's thread (`thread_ts`).
124
+
125
+ ## Config reference
126
+
127
+ | Env var | Required | Meaning |
128
+ |---|---|---|
129
+ | `SLACK_BOT_TOKEN` | yes | Bot token `xoxb-…` |
130
+ | `SLACK_APP_TOKEN` | yes | App-level token `xapp-…` (scope `connections:write`) |
131
+ | `SLACK_ALLOWED_USERS` | no | CSV of user IDs; `*` or unset = everyone |
132
+ | `SLACK_REQUIRE_MENTION` | no | `true` (default) / `false` — require @mention in channels |
133
+ | `COPILOT_TMUX_SESSION` | no | Pin the Copilot session; otherwise auto-discovered |
134
+
135
+ ## Notes / limits (v1)
136
+
137
+ - Inbound chat only (Slack → Copilot → reply). Outbound notifications are a future addition.
138
+ - `SLACK_REQUIRE_MENTION=false` currently has no effect in **channels**: v1 only subscribes to
139
+ DMs (`message.im`) and `app_mention`, so non-mention channel messages are never delivered to the
140
+ bot. (Responding to every channel message would need the `channels:history` scope and a
141
+ `message.channels` subscription — a future addition.) It works as expected in DMs.
142
+ - One Copilot session at a time (multiple `omp-<digits>` sessions → the bridge reports the
143
+ ambiguity and asks you to pin `COPILOT_TMUX_SESSION`).
144
+ - `omp gateway serve` is a long-running foreground process — run it under tmux/systemd to keep it up.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@damian87/omp",
3
- "version": "0.6.0",
3
+ "version": "0.8.0",
4
4
  "description": "GitHub Copilot project skills catalog and Jira handoff tools.",
5
5
  "type": "module",
6
6
  "publishConfig": {
@@ -50,11 +50,13 @@
50
50
  },
51
51
  "devDependencies": {
52
52
  "@types/node": "^22.15.29",
53
+ "@vitest/coverage-v8": "^3.2.4",
53
54
  "tsx": "^4.19.4",
54
55
  "typescript": "^5.8.3",
55
56
  "vitest": "^3.1.4"
56
57
  },
57
58
  "dependencies": {
58
- "@modelcontextprotocol/sdk": "^1.29.0"
59
+ "@modelcontextprotocol/sdk": "^1.29.0",
60
+ "@slack/bolt": "^4.4.0"
59
61
  }
60
62
  }