@damian87/omp 0.7.0 → 0.9.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 (95) hide show
  1. package/.github/skills/slack/SKILL.md +82 -0
  2. package/README.md +61 -34
  3. package/catalog/capabilities.json +46 -0
  4. package/catalog/skills-general.json +26 -0
  5. package/dist/src/cli.js +365 -3
  6. package/dist/src/cli.js.map +1 -1
  7. package/dist/src/copilot/version.js +10 -0
  8. package/dist/src/copilot/version.js.map +1 -1
  9. package/dist/src/env/dotenv.d.ts +41 -0
  10. package/dist/src/env/dotenv.js +112 -0
  11. package/dist/src/env/dotenv.js.map +1 -0
  12. package/dist/src/env/init.d.ts +56 -0
  13. package/dist/src/env/init.js +294 -0
  14. package/dist/src/env/init.js.map +1 -0
  15. package/dist/src/gateway/connector.d.ts +37 -0
  16. package/dist/src/gateway/connector.js +12 -0
  17. package/dist/src/gateway/connector.js.map +1 -0
  18. package/dist/src/gateway/connectors/slack.d.ts +69 -0
  19. package/dist/src/gateway/connectors/slack.js +159 -0
  20. package/dist/src/gateway/connectors/slack.js.map +1 -0
  21. package/dist/src/gateway/notify.d.ts +35 -0
  22. package/dist/src/gateway/notify.js +261 -0
  23. package/dist/src/gateway/notify.js.map +1 -0
  24. package/dist/src/gateway/registry.d.ts +29 -0
  25. package/dist/src/gateway/registry.js +37 -0
  26. package/dist/src/gateway/registry.js.map +1 -0
  27. package/dist/src/gateway/runtime.d.ts +58 -0
  28. package/dist/src/gateway/runtime.js +105 -0
  29. package/dist/src/gateway/runtime.js.map +1 -0
  30. package/dist/src/gateway/target-parser.d.ts +76 -0
  31. package/dist/src/gateway/target-parser.js +105 -0
  32. package/dist/src/gateway/target-parser.js.map +1 -0
  33. package/dist/src/jira.js +2 -14
  34. package/dist/src/jira.js.map +1 -1
  35. package/dist/src/schedule/commands.js +1 -0
  36. package/dist/src/schedule/commands.js.map +1 -1
  37. package/dist/src/schedule/runner.d.ts +9 -0
  38. package/dist/src/schedule/runner.js +31 -1
  39. package/dist/src/schedule/runner.js.map +1 -1
  40. package/dist/src/schedule/types.d.ts +9 -0
  41. package/dist/src/slack/config.d.ts +32 -0
  42. package/dist/src/slack/config.js +52 -0
  43. package/dist/src/slack/config.js.map +1 -0
  44. package/dist/src/slack/handler.d.ts +48 -0
  45. package/dist/src/slack/handler.js +68 -0
  46. package/dist/src/slack/handler.js.map +1 -0
  47. package/dist/src/slack/serve.d.ts +8 -0
  48. package/dist/src/slack/serve.js +7 -0
  49. package/dist/src/slack/serve.js.map +1 -0
  50. package/dist/src/team/tmux.d.ts +1 -0
  51. package/dist/src/team/tmux.js +9 -0
  52. package/dist/src/team/tmux.js.map +1 -1
  53. package/docs/slack-setup.md +177 -0
  54. package/package.json +13 -4
  55. package/plugin.json +12 -4
  56. package/scripts/lib/version-check.mjs +3 -0
  57. package/dist/src/mcp/server.d.ts +0 -10
  58. package/dist/src/mcp/server.js +0 -44
  59. package/dist/src/mcp/server.js.map +0 -1
  60. package/dist/src/mcp/tools/daily-log.d.ts +0 -2
  61. package/dist/src/mcp/tools/daily-log.js +0 -148
  62. package/dist/src/mcp/tools/daily-log.js.map +0 -1
  63. package/dist/src/mcp/tools/index.d.ts +0 -9
  64. package/dist/src/mcp/tools/index.js +0 -15
  65. package/dist/src/mcp/tools/index.js.map +0 -1
  66. package/dist/src/mcp/tools/notepad.d.ts +0 -2
  67. package/dist/src/mcp/tools/notepad.js +0 -135
  68. package/dist/src/mcp/tools/notepad.js.map +0 -1
  69. package/dist/src/mcp/tools/project-memory.d.ts +0 -2
  70. package/dist/src/mcp/tools/project-memory.js +0 -91
  71. package/dist/src/mcp/tools/project-memory.js.map +0 -1
  72. package/dist/src/mcp/tools/shared-memory.d.ts +0 -2
  73. package/dist/src/mcp/tools/shared-memory.js +0 -148
  74. package/dist/src/mcp/tools/shared-memory.js.map +0 -1
  75. package/dist/src/mcp/tools/state.d.ts +0 -2
  76. package/dist/src/mcp/tools/state.js +0 -107
  77. package/dist/src/mcp/tools/state.js.map +0 -1
  78. package/dist/src/mcp/tools/trace.d.ts +0 -10
  79. package/dist/src/mcp/tools/trace.js +0 -102
  80. package/dist/src/mcp/tools/trace.js.map +0 -1
  81. package/dist/src/mcp/types.d.ts +0 -29
  82. package/dist/src/mcp/types.js +0 -7
  83. package/dist/src/mcp/types.js.map +0 -1
  84. package/dist/test/catalog.test.d.ts +0 -1
  85. package/dist/test/catalog.test.js +0 -21
  86. package/dist/test/catalog.test.js.map +0 -1
  87. package/dist/test/jira.test.d.ts +0 -1
  88. package/dist/test/jira.test.js +0 -26
  89. package/dist/test/jira.test.js.map +0 -1
  90. package/dist/test/lint.test.d.ts +0 -1
  91. package/dist/test/lint.test.js +0 -9
  92. package/dist/test/lint.test.js.map +0 -1
  93. package/dist/test/sync.test.d.ts +0 -1
  94. package/dist/test/sync.test.js +0 -15
  95. package/dist/test/sync.test.js.map +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"serve.js","sourceRoot":"","sources":["../../../src/slack/serve.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,oBAAoB,EAAE,MAAM,gCAAgC,CAAC;AACtE,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAEnD,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,MAAmB;IACnD,MAAM,SAAS,GAAG,oBAAoB,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC;IACnD,MAAM,UAAU,CAAC,EAAE,UAAU,EAAE,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;AAChD,CAAC"}
@@ -18,6 +18,7 @@ export interface TmuxApi {
18
18
  killSession(session: string): TmuxResult;
19
19
  paneDead(target: string): boolean;
20
20
  sessionExists(session: string): boolean;
21
+ listSessions(): string[];
21
22
  }
22
23
  export declare function makeTmux(runner?: TmuxRunner): TmuxApi;
23
24
  export interface WaitForReadyOptions {
@@ -68,6 +68,15 @@ export function makeTmux(runner = tmuxExec) {
68
68
  const r = runner(["has-session", "-t", session]);
69
69
  return r.status === 0;
70
70
  },
71
+ listSessions() {
72
+ const r = runner(["list-sessions", "-F", "#{session_name}"]);
73
+ if (r.status !== 0)
74
+ return [];
75
+ return r.stdout
76
+ .split("\n")
77
+ .map((l) => l.trim())
78
+ .filter((l) => l.length > 0);
79
+ },
71
80
  };
72
81
  }
73
82
  function sleep(ms) {
@@ -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,177 @@
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.
145
+
146
+ ## Outbound notifications (`omp gateway notify` + `/slack`)
147
+
148
+ The v0.8.0 inbound bridge above handles bidirectional chat (DM the bot → reply). For *outbound*
149
+ notifications (cron job results, ad-hoc "ping me when done", `/slack` in-session), you don't
150
+ need the gateway daemon running — outbound is a stateless REST call to `chat.postMessage`.
151
+
152
+ ```bash
153
+ # Default target lives in ~/.omp/.env (set during `omp env init`):
154
+ SLACK_HOME_CHANNEL=C0BOQV5434G # channel ID, or a user ID like U0123ABCD
155
+
156
+ # One-shot send (uses SLACK_HOME_CHANNEL):
157
+ omp gateway notify --text "deploy finished"
158
+
159
+ # Explicit target overrides:
160
+ omp gateway notify --text "hi #releases" --target slack:C0RELEASE9
161
+ omp gateway notify --text "PR review please" --target slack:U0123ABCD # auto-DMs the user
162
+
163
+ # Inside Copilot — same thing via skill:
164
+ /slack the migration just finished cleanly
165
+
166
+ # Cron job posts its result at end-of-run:
167
+ omp schedule add --id pr-watch --cron "*/15 * * * *" --prompt "..." \
168
+ --notify-target slack:U0123ABCD
169
+ ```
170
+
171
+ Accepted target prefixes: `C` (public channel), `G` (private channel), `D` (DM channel),
172
+ `U` (user — we auto-call `conversations.open` to convert to a DM). Append `:<thread_ts>` to
173
+ pin to a thread (or pass `--thread-ts`).
174
+
175
+ Failure codes (`omp gateway notify --json` returns them):
176
+ `MISSING_TOKEN`, `MISSING_TARGET`, `BAD_TARGET`, `BAD_HOME_CHANNEL`, `OPEN_FAILED`,
177
+ `POST_FAILED`, `RATE_LIMITED`, `TIMEOUT`, `NETWORK_ERROR`.
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@damian87/omp",
3
- "version": "0.7.0",
4
- "description": "GitHub Copilot project skills catalog and Jira handoff tools.",
3
+ "version": "0.9.2",
4
+ "description": "Multi-agent orchestration for GitHub Copilot CLI autonomous loops (Autopilot, Ralph, UltraQA, Ultrawork), parallel tmux agent teams, a weighted-consensus model council, a Slack chat bridge, durable scheduled jobs, and in-session skills + custom agents. Zero learning curve.",
5
5
  "type": "module",
6
6
  "publishConfig": {
7
7
  "access": "public"
@@ -42,7 +42,15 @@
42
42
  "copilot",
43
43
  "skills",
44
44
  "agents",
45
- "slash-commands"
45
+ "slash-commands",
46
+ "orchestration",
47
+ "multi-agent",
48
+ "ai-agents",
49
+ "tmux",
50
+ "automation",
51
+ "autopilot",
52
+ "slack",
53
+ "cli"
46
54
  ],
47
55
  "license": "MIT",
48
56
  "engines": {
@@ -56,6 +64,7 @@
56
64
  "vitest": "^3.1.4"
57
65
  },
58
66
  "dependencies": {
59
- "@modelcontextprotocol/sdk": "^1.29.0"
67
+ "@modelcontextprotocol/sdk": "^1.29.0",
68
+ "@slack/bolt": "^4.4.0"
60
69
  }
61
70
  }
package/plugin.json CHANGED
@@ -1,11 +1,19 @@
1
1
  {
2
2
  "name": "oh-my-copilot",
3
- "description": "Lite slash-skill workflows for GitHub Copilot.",
4
- "version": "0.1.0",
5
- "author": { "name": "Damian Borek", "email": "borekdamian@yahoo.pl" },
3
+ "description": "Multi-agent orchestration skills for GitHub Copilot CLI — autopilot, ralph, ultrawork, ultraqa, team, council, code-review and more as in-session slash skills + custom agents.",
4
+ "version": "0.9.2",
5
+ "author": {
6
+ "name": "Damian Borek",
7
+ "email": "borekdamian@yahoo.pl"
8
+ },
6
9
  "license": "MIT",
7
10
  "repository": "https://github.com/damian87x/oh-my-copilot",
8
- "keywords": ["copilot", "skills", "agents", "slash-commands"],
11
+ "keywords": [
12
+ "copilot",
13
+ "skills",
14
+ "agents",
15
+ "slash-commands"
16
+ ],
9
17
  "skills": ".github/skills/",
10
18
  "agents": ".github/agents/",
11
19
  "instructions": ".github/copilot-instructions.md",
@@ -5,6 +5,7 @@ import { fileURLToPath } from "node:url";
5
5
  const CACHE_TTL_MS = 6 * 60 * 60 * 1000;
6
6
  const FETCH_TIMEOUT_MS = 2000;
7
7
  const PACKAGE_NAME = "@damian87/omp";
8
+ const VERSION_OVERRIDE_ENV = "OMP_VERSION_OVERRIDE";
8
9
 
9
10
  export function isNewer(latest, current) {
10
11
  if (!latest || !current) return false;
@@ -21,6 +22,8 @@ export function formatUpdateNotice(current, latest) {
21
22
  }
22
23
 
23
24
  export function readCurrentVersion() {
25
+ const overriddenVersion = process.env[VERSION_OVERRIDE_ENV]?.trim();
26
+ if (overriddenVersion) return overriddenVersion;
24
27
  try {
25
28
  const here = dirname(fileURLToPath(import.meta.url));
26
29
  const pkgPath = join(here, "..", "..", "package.json");
@@ -1,10 +0,0 @@
1
- import { Server } from "@modelcontextprotocol/sdk/server/index.js";
2
- import type { ToolDefinition } from "./types.js";
3
- export interface ServerOptions {
4
- name?: string;
5
- version?: string;
6
- tools: ToolDefinition[];
7
- }
8
- export declare function filterToolsByEnv(tools: ToolDefinition[], envValue?: string | undefined): ToolDefinition[];
9
- export declare function buildMcpServer(options: ServerOptions): Server;
10
- export declare function runMcpServer(options: ServerOptions): Promise<void>;
@@ -1,44 +0,0 @@
1
- import { Server } from "@modelcontextprotocol/sdk/server/index.js";
2
- import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
3
- import { CallToolRequestSchema, ListToolsRequestSchema, } from "@modelcontextprotocol/sdk/types.js";
4
- import { textResult } from "./types.js";
5
- export function filterToolsByEnv(tools, envValue = process.env.OMP_DISABLE_TOOLS ?? process.env.OMC_DISABLE_TOOLS) {
6
- if (!envValue)
7
- return tools;
8
- const disabled = new Set(envValue.split(",").map((s) => s.trim()).filter(Boolean));
9
- if (disabled.size === 0)
10
- return tools;
11
- return tools.filter((t) => !disabled.has(t.category));
12
- }
13
- export function buildMcpServer(options) {
14
- const server = new Server({ name: options.name ?? "oh-my-copilot", version: options.version ?? "0.1.0" }, { capabilities: { tools: {} } });
15
- server.setRequestHandler(ListToolsRequestSchema, async () => ({
16
- tools: options.tools.map((t) => ({
17
- name: t.name,
18
- description: t.description,
19
- inputSchema: t.inputSchema,
20
- })),
21
- }));
22
- server.setRequestHandler(CallToolRequestSchema, async (request) => {
23
- const tool = options.tools.find((t) => t.name === request.params.name);
24
- if (!tool)
25
- return textResult(`Unknown tool: ${request.params.name}`, true);
26
- try {
27
- const args = (request.params.arguments ?? {});
28
- const result = await tool.handler(args);
29
- return result;
30
- }
31
- catch (error) {
32
- const message = error instanceof Error ? error.message : String(error);
33
- return textResult(`Error: ${message}`, true);
34
- }
35
- });
36
- return server;
37
- }
38
- export async function runMcpServer(options) {
39
- const server = buildMcpServer(options);
40
- const transport = new StdioServerTransport();
41
- await server.connect(transport);
42
- console.error(`MCP server running (${options.tools.length} tools)`);
43
- }
44
- //# sourceMappingURL=server.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"server.js","sourceRoot":"","sources":["../../../src/mcp/server.ts"],"names":[],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- import { type ToolDefinition } from "../types.js";
2
- export declare const dailyLogTools: ToolDefinition[];
@@ -1,148 +0,0 @@
1
- import { existsSync, mkdirSync, readdirSync, readFileSync, renameSync, writeFileSync } from "node:fs";
2
- import { dirname, join, resolve } from "node:path";
3
- import { jsonResult, textResult } from "../types.js";
4
- const DAY_FILE_RE = /^\d{4}-\d{2}-\d{2}\.md$/;
5
- const READ_CHAR_BUDGET = 4000;
6
- function pad(n) {
7
- return String(n).padStart(2, "0");
8
- }
9
- function todayStr(d = new Date()) {
10
- return `${d.getFullYear()}-${pad(d.getMonth() + 1)}-${pad(d.getDate())}`;
11
- }
12
- function timeStr(d = new Date()) {
13
- return `${pad(d.getHours())}:${pad(d.getMinutes())}`;
14
- }
15
- function dailyDir(cwd) {
16
- return join(resolve(cwd), ".omp", "memory", "daily");
17
- }
18
- function dayFile(cwd, date = todayStr()) {
19
- return join(dailyDir(cwd), `${date}.md`);
20
- }
21
- function parseDay(text) {
22
- let section = null;
23
- const goalLines = [];
24
- const log = [];
25
- for (const line of text.split("\n")) {
26
- if (/^#\s+/.test(line))
27
- continue;
28
- if (/^##\s+Goal\s*$/i.test(line)) {
29
- section = "goal";
30
- continue;
31
- }
32
- if (/^##\s+Log\s*$/i.test(line)) {
33
- section = "log";
34
- continue;
35
- }
36
- if (section === "goal")
37
- goalLines.push(line);
38
- // Preserve any non-empty line a user may have hand-written, verbatim (bullets,
39
- // prose, indented sub-notes). Only blank spacer lines are dropped on round-trip.
40
- else if (section === "log" && line.trim() !== "")
41
- log.push(line);
42
- }
43
- return { goal: goalLines.join("\n").trim(), log };
44
- }
45
- function serializeDay(date, doc) {
46
- const parts = [`# ${date}`, "", "## Goal", doc.goal.trim(), "", "## Log", ...doc.log];
47
- return `${parts.join("\n").replace(/\n+$/, "")}\n`;
48
- }
49
- function readDay(cwd, date = todayStr()) {
50
- const p = dayFile(cwd, date);
51
- if (!existsSync(p))
52
- return { goal: "", log: [] };
53
- try {
54
- return parseDay(readFileSync(p, "utf8"));
55
- }
56
- catch {
57
- return { goal: "", log: [] };
58
- }
59
- }
60
- function writeDay(cwd, doc, date = todayStr()) {
61
- const p = dayFile(cwd, date);
62
- mkdirSync(dirname(p), { recursive: true });
63
- const tmp = `${p}.tmp.${process.pid}.${Date.now()}`;
64
- writeFileSync(tmp, serializeDay(date, doc), "utf8");
65
- renameSync(tmp, p);
66
- }
67
- function readRecent(cwd, days) {
68
- const dir = dailyDir(cwd);
69
- if (!existsSync(dir))
70
- return "";
71
- const files = readdirSync(dir)
72
- .filter((f) => DAY_FILE_RE.test(f))
73
- .sort()
74
- .reverse()
75
- .slice(0, Math.max(0, days) + 1);
76
- let out = "";
77
- for (const f of files) {
78
- try {
79
- out += `${readFileSync(join(dir, f), "utf8").trim()}\n\n`;
80
- }
81
- catch {
82
- // skip unreadable day file
83
- }
84
- if (out.length > READ_CHAR_BUDGET) {
85
- out = `${out.slice(0, READ_CHAR_BUDGET)}\n…(truncated)`;
86
- break;
87
- }
88
- }
89
- return out.trim();
90
- }
91
- export const dailyLogTools = [
92
- {
93
- name: "daily_log_set_goal",
94
- category: "daily_log",
95
- description: "Set/replace today's Goal in .omp/memory/daily/<today>.md.",
96
- inputSchema: {
97
- type: "object",
98
- properties: { goal: { type: "string" }, cwd: { type: "string" } },
99
- required: ["goal"],
100
- },
101
- handler: (args) => {
102
- const cwd = args.cwd ?? process.cwd();
103
- const doc = readDay(cwd);
104
- doc.goal = String(args.goal ?? "");
105
- writeDay(cwd, doc);
106
- return jsonResult({ ok: true, date: todayStr(), goal: doc.goal });
107
- },
108
- },
109
- {
110
- name: "daily_log_add",
111
- category: "daily_log",
112
- description: "Append a timestamped entry to today's Log in .omp/memory/daily/<today>.md.",
113
- inputSchema: {
114
- type: "object",
115
- properties: { text: { type: "string" }, cwd: { type: "string" } },
116
- required: ["text"],
117
- },
118
- handler: (args) => {
119
- const cwd = args.cwd ?? process.cwd();
120
- // Collapse to a single line so an entry can never contain a `## Goal`/`## Log`
121
- // marker that parseDay would later misread as a section boundary.
122
- const text = String(args.text ?? "")
123
- .replace(/\s*\n\s*/g, " ")
124
- .trim();
125
- if (!text)
126
- return jsonResult({ ok: false, error: "text is required" });
127
- const doc = readDay(cwd);
128
- doc.log.push(`- ${timeStr()} — ${text}`);
129
- writeDay(cwd, doc);
130
- return jsonResult({ ok: true, date: todayStr(), count: doc.log.length });
131
- },
132
- },
133
- {
134
- name: "daily_log_read",
135
- category: "daily_log",
136
- description: "Read the daily log for today plus the previous `days` days (default 1). Char-capped to ~4KB.",
137
- inputSchema: {
138
- type: "object",
139
- properties: { days: { type: "number" }, cwd: { type: "string" } },
140
- },
141
- handler: (args) => {
142
- const cwd = args.cwd ?? process.cwd();
143
- const days = typeof args.days === "number" ? args.days : 1;
144
- return textResult(readRecent(cwd, days) || "(no daily log entries)");
145
- },
146
- },
147
- ];
148
- //# sourceMappingURL=daily-log.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"daily-log.js","sourceRoot":"","sources":["../../../../src/mcp/tools/daily-log.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,WAAW,EAAE,YAAY,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AACtG,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACnD,OAAO,EAAE,UAAU,EAAE,UAAU,EAAuB,MAAM,aAAa,CAAC;AAO1E,MAAM,WAAW,GAAG,yBAAyB,CAAC;AAC9C,MAAM,gBAAgB,GAAG,IAAI,CAAC;AAE9B,SAAS,GAAG,CAAC,CAAS;IACpB,OAAO,MAAM,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;AACpC,CAAC;AAED,SAAS,QAAQ,CAAC,CAAC,GAAG,IAAI,IAAI,EAAE;IAC9B,OAAO,GAAG,CAAC,CAAC,WAAW,EAAE,IAAI,GAAG,CAAC,CAAC,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC;AAC3E,CAAC;AAED,SAAS,OAAO,CAAC,CAAC,GAAG,IAAI,IAAI,EAAE;IAC7B,OAAO,GAAG,GAAG,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC,EAAE,CAAC;AACvD,CAAC;AAED,SAAS,QAAQ,CAAC,GAAW;IAC3B,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC;AACvD,CAAC;AAED,SAAS,OAAO,CAAC,GAAW,EAAE,IAAI,GAAG,QAAQ,EAAE;IAC7C,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,GAAG,IAAI,KAAK,CAAC,CAAC;AAC3C,CAAC;AAED,SAAS,QAAQ,CAAC,IAAY;IAC5B,IAAI,OAAO,GAA0B,IAAI,CAAC;IAC1C,MAAM,SAAS,GAAa,EAAE,CAAC;IAC/B,MAAM,GAAG,GAAa,EAAE,CAAC;IACzB,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;QACpC,IAAI,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC;YAAE,SAAS;QACjC,IAAI,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;YACjC,OAAO,GAAG,MAAM,CAAC;YACjB,SAAS;QACX,CAAC;QACD,IAAI,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;YAChC,OAAO,GAAG,KAAK,CAAC;YAChB,SAAS;QACX,CAAC;QACD,IAAI,OAAO,KAAK,MAAM;YAAE,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC7C,+EAA+E;QAC/E,iFAAiF;aAC5E,IAAI,OAAO,KAAK,KAAK,IAAI,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE;YAAE,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACnE,CAAC;IACD,OAAO,EAAE,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,GAAG,EAAE,CAAC;AACpD,CAAC;AAED,SAAS,YAAY,CAAC,IAAY,EAAE,GAAW;IAC7C,MAAM,KAAK,GAAG,CAAC,KAAK,IAAI,EAAE,EAAE,EAAE,EAAE,SAAS,EAAE,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,EAAE,EAAE,QAAQ,EAAE,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC;IACtF,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,IAAI,CAAC;AACrD,CAAC;AAED,SAAS,OAAO,CAAC,GAAW,EAAE,IAAI,GAAG,QAAQ,EAAE;IAC7C,MAAM,CAAC,GAAG,OAAO,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;IAC7B,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;QAAE,OAAO,EAAE,IAAI,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC;IACjD,IAAI,CAAC;QACH,OAAO,QAAQ,CAAC,YAAY,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC;IAC3C,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,IAAI,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC;IAC/B,CAAC;AACH,CAAC;AAED,SAAS,QAAQ,CAAC,GAAW,EAAE,GAAW,EAAE,IAAI,GAAG,QAAQ,EAAE;IAC3D,MAAM,CAAC,GAAG,OAAO,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;IAC7B,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC3C,MAAM,GAAG,GAAG,GAAG,CAAC,QAAQ,OAAO,CAAC,GAAG,IAAI,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC;IACpD,aAAa,CAAC,GAAG,EAAE,YAAY,CAAC,IAAI,EAAE,GAAG,CAAC,EAAE,MAAM,CAAC,CAAC;IACpD,UAAU,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;AACrB,CAAC;AAED,SAAS,UAAU,CAAC,GAAW,EAAE,IAAY;IAC3C,MAAM,GAAG,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC;IAC1B,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC;QAAE,OAAO,EAAE,CAAC;IAChC,MAAM,KAAK,GAAG,WAAW,CAAC,GAAG,CAAC;SAC3B,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;SAClC,IAAI,EAAE;SACN,OAAO,EAAE;SACT,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;IACnC,IAAI,GAAG,GAAG,EAAE,CAAC;IACb,KAAK,MAAM,CAAC,IAAI,KAAK,EAAE,CAAC;QACtB,IAAI,CAAC;YACH,GAAG,IAAI,GAAG,YAAY,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,IAAI,EAAE,MAAM,CAAC;QAC5D,CAAC;QAAC,MAAM,CAAC;YACP,2BAA2B;QAC7B,CAAC;QACD,IAAI,GAAG,CAAC,MAAM,GAAG,gBAAgB,EAAE,CAAC;YAClC,GAAG,GAAG,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,gBAAgB,CAAC,gBAAgB,CAAC;YACxD,MAAM;QACR,CAAC;IACH,CAAC;IACD,OAAO,GAAG,CAAC,IAAI,EAAE,CAAC;AACpB,CAAC;AAED,MAAM,CAAC,MAAM,aAAa,GAAqB;IAC7C;QACE,IAAI,EAAE,oBAAoB;QAC1B,QAAQ,EAAE,WAAW;QACrB,WAAW,EAAE,2DAA2D;QACxE,WAAW,EAAE;YACX,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,GAAG,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE;YACjE,QAAQ,EAAE,CAAC,MAAM,CAAC;SACnB;QACD,OAAO,EAAE,CAAC,IAAI,EAAE,EAAE;YAChB,MAAM,GAAG,GAAI,IAAI,CAAC,GAAc,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;YAClD,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC;YACzB,GAAG,CAAC,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC;YACnC,QAAQ,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;YACnB,OAAO,UAAU,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,IAAI,EAAE,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC;QACpE,CAAC;KACF;IACD;QACE,IAAI,EAAE,eAAe;QACrB,QAAQ,EAAE,WAAW;QACrB,WAAW,EAAE,4EAA4E;QACzF,WAAW,EAAE;YACX,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,GAAG,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE;YACjE,QAAQ,EAAE,CAAC,MAAM,CAAC;SACnB;QACD,OAAO,EAAE,CAAC,IAAI,EAAE,EAAE;YAChB,MAAM,GAAG,GAAI,IAAI,CAAC,GAAc,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;YAClD,+EAA+E;YAC/E,kEAAkE;YAClE,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,IAAI,EAAE,CAAC;iBACjC,OAAO,CAAC,WAAW,EAAE,GAAG,CAAC;iBACzB,IAAI,EAAE,CAAC;YACV,IAAI,CAAC,IAAI;gBAAE,OAAO,UAAU,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,kBAAkB,EAAE,CAAC,CAAC;YACvE,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC;YACzB,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,OAAO,EAAE,MAAM,IAAI,EAAE,CAAC,CAAC;YACzC,QAAQ,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;YACnB,OAAO,UAAU,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,KAAK,EAAE,GAAG,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC;QAC3E,CAAC;KACF;IACD;QACE,IAAI,EAAE,gBAAgB;QACtB,QAAQ,EAAE,WAAW;QACrB,WAAW,EACT,8FAA8F;QAChG,WAAW,EAAE;YACX,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,GAAG,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE;SAClE;QACD,OAAO,EAAE,CAAC,IAAI,EAAE,EAAE;YAChB,MAAM,GAAG,GAAI,IAAI,CAAC,GAAc,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;YAClD,MAAM,IAAI,GAAG,OAAO,IAAI,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAE,IAAI,CAAC,IAAe,CAAC,CAAC,CAAC,CAAC,CAAC;YACvE,OAAO,UAAU,CAAC,UAAU,CAAC,GAAG,EAAE,IAAI,CAAC,IAAI,wBAAwB,CAAC,CAAC;QACvE,CAAC;KACF;CACF,CAAC"}
@@ -1,9 +0,0 @@
1
- import type { ToolDefinition } from "../types.js";
2
- import { stateTools } from "./state.js";
3
- import { notepadTools } from "./notepad.js";
4
- import { projectMemoryTools } from "./project-memory.js";
5
- import { sharedMemoryTools } from "./shared-memory.js";
6
- import { traceTools } from "./trace.js";
7
- export declare const allTools: ToolDefinition[];
8
- export { stateTools, notepadTools, projectMemoryTools, sharedMemoryTools, traceTools };
9
- export { appendTraceEntry } from "./trace.js";
@@ -1,15 +0,0 @@
1
- import { stateTools } from "./state.js";
2
- import { notepadTools } from "./notepad.js";
3
- import { projectMemoryTools } from "./project-memory.js";
4
- import { sharedMemoryTools } from "./shared-memory.js";
5
- import { traceTools } from "./trace.js";
6
- export const allTools = [
7
- ...stateTools,
8
- ...notepadTools,
9
- ...projectMemoryTools,
10
- ...sharedMemoryTools,
11
- ...traceTools,
12
- ];
13
- export { stateTools, notepadTools, projectMemoryTools, sharedMemoryTools, traceTools };
14
- export { appendTraceEntry } from "./trace.js";
15
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/mcp/tools/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AACxC,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAC5C,OAAO,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AACzD,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AACvD,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAExC,MAAM,CAAC,MAAM,QAAQ,GAAqB;IACxC,GAAG,UAAU;IACb,GAAG,YAAY;IACf,GAAG,kBAAkB;IACrB,GAAG,iBAAiB;IACpB,GAAG,UAAU;CACd,CAAC;AAEF,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,UAAU,EAAE,CAAC;AACvF,OAAO,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC"}
@@ -1,2 +0,0 @@
1
- import { type ToolDefinition } from "../types.js";
2
- export declare const notepadTools: ToolDefinition[];