@qotaq/lalphgram 0.1.0 → 0.1.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.
- package/README.md +80 -1
- package/dist/cjs/Main.js +5 -5
- package/dist/cjs/Main.js.map +1 -1
- package/dist/cjs/services/AutoMerge.js +1 -1
- package/dist/dts/Main.d.ts +1 -0
- package/dist/dts/services/AutoMerge.d.ts +1 -1
- package/dist/dts/services/EventLoop.d.ts +2 -2
- package/dist/esm/Main.js +1 -0
- package/dist/esm/Main.js.map +1 -1
- package/dist/esm/services/AutoMerge.js +1 -1
- package/package.json +4 -1
- package/src/Main.ts +1 -0
- package/src/services/AutoMerge.ts +1 -1
package/README.md
CHANGED
|
@@ -1 +1,80 @@
|
|
|
1
|
-
#
|
|
1
|
+
# @qotaq/lalphgram
|
|
2
|
+
|
|
3
|
+
Event-driven notification service that bridges GitHub, Linear, and Telegram. Polls for PR and task changes, sends real-time Telegram alerts, auto-merges PRs, and manages interactive Claude plan sessions — all from a single CLI command.
|
|
4
|
+
|
|
5
|
+
## Install
|
|
6
|
+
|
|
7
|
+
```bash
|
|
8
|
+
npm i -g @qotaq/lalphgram
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
Or run directly:
|
|
12
|
+
|
|
13
|
+
```bash
|
|
14
|
+
npx @qotaq/lalphgram
|
|
15
|
+
```
|
|
16
|
+
|
|
17
|
+
## Prerequisites
|
|
18
|
+
|
|
19
|
+
- A [Telegram bot token](https://core.telegram.org/bots#how-do-i-create-a-bot) (you'll be prompted on first run)
|
|
20
|
+
- A GitHub personal access token stored in `~/.lalph/config/`
|
|
21
|
+
- (Optional) A Linear API token for issue tracking
|
|
22
|
+
- A `.lalph/` directory in your project root (lalph project config)
|
|
23
|
+
|
|
24
|
+
## Usage
|
|
25
|
+
|
|
26
|
+
```bash
|
|
27
|
+
lalphgram [options]
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
### Options
|
|
31
|
+
|
|
32
|
+
| Flag | Default | Description |
|
|
33
|
+
|---|---|---|
|
|
34
|
+
| `--interval <seconds>` | `30` | Poll interval for GitHub/Linear |
|
|
35
|
+
| `--keyword <word>` | `"urgent"` | Trigger keyword for comment timer |
|
|
36
|
+
| `--timer <seconds>` | `300` | Comment timer delay |
|
|
37
|
+
|
|
38
|
+
### First Run
|
|
39
|
+
|
|
40
|
+
On first launch, the CLI will:
|
|
41
|
+
|
|
42
|
+
1. Prompt for your **Telegram bot token** (stored in `~/.lalph/config/notify.telegram`)
|
|
43
|
+
2. Ask whether to enable **auto-merge** and configure wait time
|
|
44
|
+
3. Ask you to send a message to your bot to confirm the chat ID
|
|
45
|
+
|
|
46
|
+
After setup, the event loop starts automatically.
|
|
47
|
+
|
|
48
|
+
## What It Does
|
|
49
|
+
|
|
50
|
+
### Notifications
|
|
51
|
+
|
|
52
|
+
- **New PRs** — alerts when PRs are opened
|
|
53
|
+
- **Merge conflicts** — detects conflicts and posts a GitHub comment + Telegram alert
|
|
54
|
+
- **CI failures** — reports failed checks with names
|
|
55
|
+
- **New tasks** — notifies on Linear/GitHub issue creation and state changes
|
|
56
|
+
- **PR comments** — routes to configurable comment timer for issue triage
|
|
57
|
+
|
|
58
|
+
### Auto-Merge
|
|
59
|
+
|
|
60
|
+
When enabled, monitors PRs and merges them automatically once:
|
|
61
|
+
- All CI checks pass
|
|
62
|
+
- A configurable cooldown period has elapsed since the last push
|
|
63
|
+
|
|
64
|
+
### Interactive Plan Sessions
|
|
65
|
+
|
|
66
|
+
Manage Claude coding plans directly from Telegram:
|
|
67
|
+
|
|
68
|
+
1. Tap **Plan** → select project → choose plan type (Feature/Bug/Refactor/Other)
|
|
69
|
+
2. Describe the work → tap **Done**
|
|
70
|
+
3. Claude analyzes and produces spec files (architecture diagrams, test plans)
|
|
71
|
+
4. Review specs via Telegraph link → **Approve** or **Abort**
|
|
72
|
+
5. Ask follow-up questions or interrupt at any point
|
|
73
|
+
|
|
74
|
+
## Architecture
|
|
75
|
+
|
|
76
|
+
Built with [Effect-TS](https://effect.website) — services use `Context.Tag` for dependency injection, `Stream` for event processing, and `Layer` for composition. The entire system runs as a single long-lived process with concurrent polling fibers.
|
|
77
|
+
|
|
78
|
+
## License
|
|
79
|
+
|
|
80
|
+
MIT
|
package/dist/cjs/Main.js
CHANGED
|
@@ -1,3 +1,8 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
/**
|
|
3
|
+
* lalph-notify CLI entry point — zero-config notification service using lalph project config
|
|
4
|
+
* @since 1.0.0
|
|
5
|
+
*/
|
|
1
6
|
"use strict";
|
|
2
7
|
|
|
3
8
|
var _cli = require("@effect/cli");
|
|
@@ -12,11 +17,6 @@ var _LalphConfig = require("./services/LalphConfig.js");
|
|
|
12
17
|
var _MessengerAdapter = require("./services/MessengerAdapter/MessengerAdapter.js");
|
|
13
18
|
var _PlanSession = require("./services/PlanSession.js");
|
|
14
19
|
var _TelegramConfig = require("./services/TelegramConfig.js");
|
|
15
|
-
/**
|
|
16
|
-
* lalph-notify CLI entry point — zero-config notification service using lalph project config
|
|
17
|
-
* @since 1.0.0
|
|
18
|
-
*/
|
|
19
|
-
|
|
20
20
|
const lalphNotifyCommand = /*#__PURE__*/_cli.Command.make("lalph-notify", {
|
|
21
21
|
interval: _cli.Options.integer("interval").pipe(_cli.Options.withDefault(30), _cli.Options.withDescription("Poll interval in seconds")),
|
|
22
22
|
keyword: _cli.Options.text("keyword").pipe(_cli.Options.withDefault("urgent"), _cli.Options.withDescription("Trigger keyword for comment timer")),
|
package/dist/cjs/Main.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Main.js","names":["_cli","require","_platform","_platformNode","_effect","_nodeUrl","_AppContext","_AppRuntimeConfig","_EventLoop","_LalphConfig","_MessengerAdapter","_PlanSession","_TelegramConfig","lalphNotifyCommand","CliCommand","make","interval","Options","integer","pipe","withDefault","withDescription","keyword","text","timer","Effect","gen","store","TelegramConfig","existingTelegram","get","botToken","Option","isSome","value","Prompt","message","storedChatId","chatId","isNone","set","TelegramConfigSchema","autoMergeEnabled","confirm","initial","autoMergeWaitMinutes","min","runtimeConfig","RuntimeConfig","pollIntervalSeconds","triggerKeyword","timerDelaySeconds","planCommandLayer","Layer","effect","PlanCommandBuilder","appContext","AppContext","fs","FileSystem","pathService","Path","realClaudePath","PlatformCommand","string","map","s","trim","tsxPath","shimMainTs","join","dirname","fileURLToPath","import","meta","url","log","annotateLogs","shimDir","configDir","makeDirectory","recursive","shimPath","shimScript","JSON","stringify","writeFileString","chmod","originalPath","process","env","shimmedPath","tempFile","workingDirectory","projectRoot","PATH","stdout","stderr","stdin","appLayer","mergeAll","succeed","AppRuntimeConfig","creds","LalphConfig","Console","issueSource","repoFullName","messenger","MessengerAdapter","messages","incomingMessages","Stream","take","runCollect","firstMsg","runEventLoop","provide","MainLayer","cli","run","name","version","logLevelLayer","unwrapEffect","Config","logLevel","LogLevel","Info","Logger","minimumLogLevel","suspend","argv","TelegramConfigLive","AppContextLive","FetchHttpClient","layer","NodeContext","NodeRuntime","runMain"],"sources":["../../src/Main.ts"],"sourcesContent":[null],"mappings":";;AAIA,IAAAA,IAAA,GAAAC,OAAA;AACA,IAAAC,SAAA,GAAAD,OAAA;AACA,IAAAE,aAAA,GAAAF,OAAA;AACA,IAAAG,OAAA,GAAAH,OAAA;AACA,IAAAI,QAAA,GAAAJ,OAAA;AACA,IAAAK,WAAA,GAAAL,OAAA;AACA,IAAAM,iBAAA,GAAAN,OAAA;AACA,IAAAO,UAAA,GAAAP,OAAA;AACA,IAAAQ,YAAA,GAAAR,OAAA;AACA,IAAAS,iBAAA,GAAAT,OAAA;AACA,IAAAU,YAAA,GAAAV,OAAA;AACA,IAAAW,eAAA,GAAAX,OAAA;
|
|
1
|
+
{"version":3,"file":"Main.js","names":["_cli","require","_platform","_platformNode","_effect","_nodeUrl","_AppContext","_AppRuntimeConfig","_EventLoop","_LalphConfig","_MessengerAdapter","_PlanSession","_TelegramConfig","lalphNotifyCommand","CliCommand","make","interval","Options","integer","pipe","withDefault","withDescription","keyword","text","timer","Effect","gen","store","TelegramConfig","existingTelegram","get","botToken","Option","isSome","value","Prompt","message","storedChatId","chatId","isNone","set","TelegramConfigSchema","autoMergeEnabled","confirm","initial","autoMergeWaitMinutes","min","runtimeConfig","RuntimeConfig","pollIntervalSeconds","triggerKeyword","timerDelaySeconds","planCommandLayer","Layer","effect","PlanCommandBuilder","appContext","AppContext","fs","FileSystem","pathService","Path","realClaudePath","PlatformCommand","string","map","s","trim","tsxPath","shimMainTs","join","dirname","fileURLToPath","import","meta","url","log","annotateLogs","shimDir","configDir","makeDirectory","recursive","shimPath","shimScript","JSON","stringify","writeFileString","chmod","originalPath","process","env","shimmedPath","tempFile","workingDirectory","projectRoot","PATH","stdout","stderr","stdin","appLayer","mergeAll","succeed","AppRuntimeConfig","creds","LalphConfig","Console","issueSource","repoFullName","messenger","MessengerAdapter","messages","incomingMessages","Stream","take","runCollect","firstMsg","runEventLoop","provide","MainLayer","cli","run","name","version","logLevelLayer","unwrapEffect","Config","logLevel","LogLevel","Info","Logger","minimumLogLevel","suspend","argv","TelegramConfigLive","AppContextLive","FetchHttpClient","layer","NodeContext","NodeRuntime","runMain"],"sources":["../../src/Main.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
|
|
@@ -37,7 +37,7 @@ const makeRepoFromFullName = fullName => new _GitHubSchemas.GitHubRepo({
|
|
|
37
37
|
html_url: ""
|
|
38
38
|
});
|
|
39
39
|
const isCISuccess = (state, checkRuns) => {
|
|
40
|
-
if (checkRuns.length === 0) return state
|
|
40
|
+
if (checkRuns.length === 0) return state !== "failure";
|
|
41
41
|
const allChecksCompleted = _effect.Array.every(checkRuns, cr => cr.conclusion !== null);
|
|
42
42
|
const allChecksPassed = _effect.Array.every(checkRuns, cr => cr.conclusion === "success" || cr.conclusion === "skipped");
|
|
43
43
|
return allChecksCompleted && allChecksPassed && state !== "failure";
|
package/dist/dts/Main.d.ts
CHANGED
|
@@ -37,6 +37,6 @@ export declare class AutoMerge extends AutoMerge_base {
|
|
|
37
37
|
* @since 1.0.0
|
|
38
38
|
* @category layers
|
|
39
39
|
*/
|
|
40
|
-
export declare const AutoMergeLive: Layer.Layer<AutoMerge, never,
|
|
40
|
+
export declare const AutoMergeLive: Layer.Layer<AutoMerge, never, GitHubClient | LalphConfig | AppRuntimeConfig>;
|
|
41
41
|
export {};
|
|
42
42
|
//# sourceMappingURL=AutoMerge.d.ts.map
|
|
@@ -15,12 +15,12 @@ export { ABORT_BUTTON_LABEL, APPROVE_BUTTON_LABEL, BUFFER_BUTTON_LABEL, BUG_BUTT
|
|
|
15
15
|
* @since 1.0.0
|
|
16
16
|
* @category layers
|
|
17
17
|
*/
|
|
18
|
-
export declare const MainLayer: Layer.Layer<
|
|
18
|
+
export declare const MainLayer: Layer.Layer<AutoMerge | GitHubClient | LalphConfig | import("./OctokitClient.js").OctokitClient | MessengerAdapter | TaskTracker | PullRequestTracker | BranchParser | CommentTimer | PlanSession | import("./ProjectStore.js").ProjectStore | import("./PlanOverviewUploader.js").PlanOverviewUploader, import("./LalphConfig.js").LalphConfigError | import("./OctokitClient.js").OctokitClientError | import("./MessengerAdapter/MessengerAdapter.js").MessengerAdapterError | import("./LinearSdkClient.js").LinearSdkClientError | import("./PullRequestTracker.js").PullRequestTrackerError | import("./PlanOverviewUploader.js").PlanOverviewUploaderError, import("./AppRuntimeConfig.js").AppRuntimeConfig | import("@effect/platform/FileSystem").FileSystem | import("@effect/platform/Path").Path | import("./AppContext.js").AppContext | import("@effect/platform/CommandExecutor").CommandExecutor | import("./TelegramConfig.js").TelegramConfig | import("./PlanSession.js").PlanCommandBuilder | import("@effect/platform/HttpClient").HttpClient>;
|
|
19
19
|
/**
|
|
20
20
|
* The main event loop that boots the chat state machine, bridges streams,
|
|
21
21
|
* and dispatches external events (PR/task notifications).
|
|
22
22
|
* @since 1.0.0
|
|
23
23
|
* @category event-loop
|
|
24
24
|
*/
|
|
25
|
-
export declare const runEventLoop: Effect.Effect<void, import("./MessengerAdapter/MessengerAdapter.js").MessengerAdapterError,
|
|
25
|
+
export declare const runEventLoop: Effect.Effect<void, import("./MessengerAdapter/MessengerAdapter.js").MessengerAdapterError, AutoMerge | GitHubClient | MessengerAdapter | TaskTracker | PullRequestTracker | BranchParser | CommentTimer | PlanSession | import("./ProjectStore.js").ProjectStore | import("./PlanOverviewUploader.js").PlanOverviewUploader>;
|
|
26
26
|
//# sourceMappingURL=EventLoop.d.ts.map
|
package/dist/esm/Main.js
CHANGED
package/dist/esm/Main.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Main.js","names":["Command","CliCommand","Options","Prompt","PlatformCommand","FetchHttpClient","FileSystem","Path","NodeContext","NodeRuntime","Config","Console","Effect","Layer","Logger","LogLevel","Option","Stream","fileURLToPath","AppContext","AppContextLive","AppRuntimeConfig","RuntimeConfig","MainLayer","runEventLoop","LalphConfig","MessengerAdapter","PlanCommandBuilder","TelegramConfig","TelegramConfigLive","TelegramConfigSchema","lalphNotifyCommand","make","interval","integer","pipe","withDefault","withDescription","keyword","text","timer","gen","store","existingTelegram","get","botToken","isSome","value","message","storedChatId","chatId","isNone","set","autoMergeEnabled","confirm","initial","autoMergeWaitMinutes","min","runtimeConfig","pollIntervalSeconds","triggerKeyword","timerDelaySeconds","planCommandLayer","effect","appContext","fs","pathService","realClaudePath","string","map","s","trim","tsxPath","shimMainTs","join","dirname","import","meta","url","log","annotateLogs","shimDir","configDir","makeDirectory","recursive","shimPath","shimScript","JSON","stringify","writeFileString","chmod","originalPath","process","env","shimmedPath","tempFile","workingDirectory","projectRoot","PATH","stdout","stderr","stdin","appLayer","mergeAll","succeed","creds","issueSource","repoFullName","messenger","messages","incomingMessages","take","runCollect","firstMsg","provide","cli","run","name","version","logLevelLayer","unwrapEffect","logLevel","Info","minimumLogLevel","suspend","argv","layer","runMain"],"sources":["../../src/Main.ts"],"sourcesContent":[null],"mappings":"
|
|
1
|
+
{"version":3,"file":"Main.js","names":["Command","CliCommand","Options","Prompt","PlatformCommand","FetchHttpClient","FileSystem","Path","NodeContext","NodeRuntime","Config","Console","Effect","Layer","Logger","LogLevel","Option","Stream","fileURLToPath","AppContext","AppContextLive","AppRuntimeConfig","RuntimeConfig","MainLayer","runEventLoop","LalphConfig","MessengerAdapter","PlanCommandBuilder","TelegramConfig","TelegramConfigLive","TelegramConfigSchema","lalphNotifyCommand","make","interval","integer","pipe","withDefault","withDescription","keyword","text","timer","gen","store","existingTelegram","get","botToken","isSome","value","message","storedChatId","chatId","isNone","set","autoMergeEnabled","confirm","initial","autoMergeWaitMinutes","min","runtimeConfig","pollIntervalSeconds","triggerKeyword","timerDelaySeconds","planCommandLayer","effect","appContext","fs","pathService","realClaudePath","string","map","s","trim","tsxPath","shimMainTs","join","dirname","import","meta","url","log","annotateLogs","shimDir","configDir","makeDirectory","recursive","shimPath","shimScript","JSON","stringify","writeFileString","chmod","originalPath","process","env","shimmedPath","tempFile","workingDirectory","projectRoot","PATH","stdout","stderr","stdin","appLayer","mergeAll","succeed","creds","issueSource","repoFullName","messenger","messages","incomingMessages","take","runCollect","firstMsg","provide","cli","run","name","version","logLevelLayer","unwrapEffect","logLevel","Info","minimumLogLevel","suspend","argv","layer","runMain"],"sources":["../../src/Main.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
|
|
@@ -28,7 +28,7 @@ const makeRepoFromFullName = fullName => new GitHubRepo({
|
|
|
28
28
|
html_url: ""
|
|
29
29
|
});
|
|
30
30
|
const isCISuccess = (state, checkRuns) => {
|
|
31
|
-
if (checkRuns.length === 0) return state
|
|
31
|
+
if (checkRuns.length === 0) return state !== "failure";
|
|
32
32
|
const allChecksCompleted = Array.every(checkRuns, cr => cr.conclusion !== null);
|
|
33
33
|
const allChecksPassed = Array.every(checkRuns, cr => cr.conclusion === "success" || cr.conclusion === "skipped");
|
|
34
34
|
return allChecksCompleted && allChecksPassed && state !== "failure";
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@qotaq/lalphgram",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.2",
|
|
4
4
|
"description": "Notification service for task tracker and GitHub events",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"repository": {
|
|
@@ -22,6 +22,9 @@
|
|
|
22
22
|
"telegraf": "latest",
|
|
23
23
|
"zod": "latest"
|
|
24
24
|
},
|
|
25
|
+
"bin": {
|
|
26
|
+
"lalphgram": "./dist/esm/Main.js"
|
|
27
|
+
},
|
|
25
28
|
"main": "./dist/cjs/index.js",
|
|
26
29
|
"module": "./dist/esm/index.js",
|
|
27
30
|
"types": "./dist/dts/index.d.ts",
|
package/src/Main.ts
CHANGED
|
@@ -44,7 +44,7 @@ const makeRepoFromFullName = (fullName: string) =>
|
|
|
44
44
|
})
|
|
45
45
|
|
|
46
46
|
const isCISuccess = (state: string, checkRuns: ReadonlyArray<{ readonly conclusion: string | null }>) => {
|
|
47
|
-
if (checkRuns.length === 0) return state
|
|
47
|
+
if (checkRuns.length === 0) return state !== "failure"
|
|
48
48
|
const allChecksCompleted = Array.every(checkRuns, (cr) => cr.conclusion !== null)
|
|
49
49
|
const allChecksPassed = Array.every(checkRuns, (cr) => cr.conclusion === "success" || cr.conclusion === "skipped")
|
|
50
50
|
return allChecksCompleted && allChecksPassed && state !== "failure"
|