@coralai/sps-cli 0.57.15 โ 0.58.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README-CN.md +100 -2
- package/README.md +100 -2
- package/dist/commands/codexProxyCommand.d.ts +2 -0
- package/dist/commands/codexProxyCommand.d.ts.map +1 -0
- package/dist/commands/codexProxyCommand.js +81 -0
- package/dist/commands/codexProxyCommand.js.map +1 -0
- package/dist/commands/graphCommand.d.ts +2 -0
- package/dist/commands/graphCommand.d.ts.map +1 -0
- package/dist/commands/graphCommand.js +97 -0
- package/dist/commands/graphCommand.js.map +1 -0
- package/dist/commands/imCommand.d.ts +2 -0
- package/dist/commands/imCommand.d.ts.map +1 -0
- package/dist/commands/imCommand.js +34 -0
- package/dist/commands/imCommand.js.map +1 -0
- package/dist/commands/pipelineTick.d.ts.map +1 -1
- package/dist/commands/pipelineTick.js +9 -0
- package/dist/commands/pipelineTick.js.map +1 -1
- package/dist/commands/setup.d.ts.map +1 -1
- package/dist/commands/setup.js +3 -0
- package/dist/commands/setup.js.map +1 -1
- package/dist/commands/tick.d.ts.map +1 -1
- package/dist/commands/tick.js +10 -0
- package/dist/commands/tick.js.map +1 -1
- package/dist/console/index.d.ts.map +1 -1
- package/dist/console/index.js +25 -13
- package/dist/console/index.js.map +1 -1
- package/dist/console/routes/channels.d.ts +3 -0
- package/dist/console/routes/channels.d.ts.map +1 -0
- package/dist/console/routes/channels.js +43 -0
- package/dist/console/routes/channels.js.map +1 -0
- package/dist/console/routes/chat.d.ts.map +1 -1
- package/dist/console/routes/chat.js +49 -7
- package/dist/console/routes/chat.js.map +1 -1
- package/dist/console/routes/codexProxy.d.ts +11 -0
- package/dist/console/routes/codexProxy.d.ts.map +1 -0
- package/dist/console/routes/codexProxy.js +58 -0
- package/dist/console/routes/codexProxy.js.map +1 -0
- package/dist/console/routes/graph.d.ts +13 -0
- package/dist/console/routes/graph.d.ts.map +1 -0
- package/dist/console/routes/graph.js +65 -0
- package/dist/console/routes/graph.js.map +1 -0
- package/dist/console/routes/providers.d.ts.map +1 -1
- package/dist/console/routes/providers.js +6 -2
- package/dist/console/routes/providers.js.map +1 -1
- package/dist/console-assets/assets/index-CKM0zA_z.js +666 -0
- package/dist/console-assets/assets/index-DVnv2TaM.css +10 -0
- package/dist/console-assets/index.html +2 -2
- package/dist/core/agents/sidecar/CodexProxyManager.d.ts +74 -0
- package/dist/core/agents/sidecar/CodexProxyManager.d.ts.map +1 -0
- package/dist/core/agents/sidecar/CodexProxyManager.js +292 -0
- package/dist/core/agents/sidecar/CodexProxyManager.js.map +1 -0
- package/dist/core/agents/workerAnthropicEnv.d.ts +23 -0
- package/dist/core/agents/workerAnthropicEnv.d.ts.map +1 -0
- package/dist/core/agents/workerAnthropicEnv.js +22 -0
- package/dist/core/agents/workerAnthropicEnv.js.map +1 -0
- package/dist/core/claudeJsonl.d.ts +2 -0
- package/dist/core/claudeJsonl.d.ts.map +1 -1
- package/dist/core/claudeJsonl.js +29 -0
- package/dist/core/claudeJsonl.js.map +1 -1
- package/dist/core/codegraph/CodeGraphService.d.ts +45 -0
- package/dist/core/codegraph/CodeGraphService.d.ts.map +1 -0
- package/dist/core/codegraph/CodeGraphService.js +141 -0
- package/dist/core/codegraph/CodeGraphService.js.map +1 -0
- package/dist/engines/StageEngine.d.ts.map +1 -1
- package/dist/engines/StageEngine.js +14 -0
- package/dist/engines/StageEngine.js.map +1 -1
- package/dist/engines/smartarrange/runner.d.ts.map +1 -1
- package/dist/engines/smartarrange/runner.js +2 -0
- package/dist/engines/smartarrange/runner.js.map +1 -1
- package/dist/im/IMAdapter.d.ts +40 -0
- package/dist/im/IMAdapter.d.ts.map +1 -0
- package/dist/im/IMAdapter.js +2 -0
- package/dist/im/IMAdapter.js.map +1 -0
- package/dist/im/IMGatewayManager.d.ts +13 -0
- package/dist/im/IMGatewayManager.d.ts.map +1 -0
- package/dist/im/IMGatewayManager.js +90 -0
- package/dist/im/IMGatewayManager.js.map +1 -0
- package/dist/im/adapters/dingtalkAdapter.d.ts +46 -0
- package/dist/im/adapters/dingtalkAdapter.d.ts.map +1 -0
- package/dist/im/adapters/dingtalkAdapter.js +157 -0
- package/dist/im/adapters/dingtalkAdapter.js.map +1 -0
- package/dist/im/adapters/discordAdapter.d.ts +43 -0
- package/dist/im/adapters/discordAdapter.d.ts.map +1 -0
- package/dist/im/adapters/discordAdapter.js +170 -0
- package/dist/im/adapters/discordAdapter.js.map +1 -0
- package/dist/im/adapters/feishuAdapter.d.ts +44 -0
- package/dist/im/adapters/feishuAdapter.d.ts.map +1 -0
- package/dist/im/adapters/feishuAdapter.js +154 -0
- package/dist/im/adapters/feishuAdapter.js.map +1 -0
- package/dist/im/adapters/matrixAdapter.d.ts +42 -0
- package/dist/im/adapters/matrixAdapter.d.ts.map +1 -0
- package/dist/im/adapters/matrixAdapter.js +106 -0
- package/dist/im/adapters/matrixAdapter.js.map +1 -0
- package/dist/im/adapters/slackAdapter.d.ts +41 -0
- package/dist/im/adapters/slackAdapter.d.ts.map +1 -0
- package/dist/im/adapters/slackAdapter.js +129 -0
- package/dist/im/adapters/slackAdapter.js.map +1 -0
- package/dist/im/adapters/telegramAdapter.d.ts +43 -0
- package/dist/im/adapters/telegramAdapter.d.ts.map +1 -0
- package/dist/im/adapters/telegramAdapter.js +147 -0
- package/dist/im/adapters/telegramAdapter.js.map +1 -0
- package/dist/im/binding.d.ts +24 -0
- package/dist/im/binding.d.ts.map +1 -0
- package/dist/im/binding.js +57 -0
- package/dist/im/binding.js.map +1 -0
- package/dist/im/chatBridge.d.ts +39 -0
- package/dist/im/chatBridge.d.ts.map +1 -0
- package/dist/im/chatBridge.js +215 -0
- package/dist/im/chatBridge.js.map +1 -0
- package/dist/im/router.d.ts +29 -0
- package/dist/im/router.d.ts.map +1 -0
- package/dist/im/router.js +120 -0
- package/dist/im/router.js.map +1 -0
- package/dist/im/types.d.ts +71 -0
- package/dist/im/types.d.ts.map +1 -0
- package/dist/im/types.js +25 -0
- package/dist/im/types.js.map +1 -0
- package/dist/main.js +29 -1
- package/dist/main.js.map +1 -1
- package/dist/manager/makeBackendFactory.d.ts.map +1 -1
- package/dist/manager/makeBackendFactory.js +4 -1
- package/dist/manager/makeBackendFactory.js.map +1 -1
- package/package.json +2 -1
- package/project-template/.claude/CLAUDE.md +81 -0
- package/project-template/.claude/hooks/start.sh +44 -0
- package/project-template/.claude/hooks/stop.sh +54 -0
- package/project-template/.claude/rules/.gitkeep +0 -0
- package/project-template/.claude/settings.json +32 -0
- package/project-template/.claude/settings.local.json.template +3 -0
- package/project-template/.claude/skills/.gitkeep +0 -0
- package/project-template/README.md +10 -0
- package/project-template/batch_scheduler.sh +8 -0
- package/project-template/conf.template +61 -0
- package/project-template/deploy.sh +3 -0
- package/project-template/pm_meta/.gitkeep +0 -0
- package/dist/console-assets/assets/index-BAA5k08F.js +0 -641
- package/dist/console-assets/assets/index-nY53xZWk.css +0 -10
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
#!/bin/bash
|
|
2
|
+
# SPS Pipeline Worker โ UserPromptSubmit hook (v0.42.0+)
|
|
3
|
+
#
|
|
4
|
+
# Triggered synchronously before Claude processes each prompt. Used by SPS
|
|
5
|
+
# to label the card with STARTED-<stage> โ this is the "ACK signal" that
|
|
6
|
+
# proves Claude received the prompt. Also injects skill hints based on the
|
|
7
|
+
# card's `skills` field (or legacy skill:* labels).
|
|
8
|
+
#
|
|
9
|
+
# Phase 2 is user-customizable: add audit logging, request rate limiting,
|
|
10
|
+
# prompt enrichment, etc. without touching Phase 1.
|
|
11
|
+
#
|
|
12
|
+
# Env vars (stable across claude process reuse):
|
|
13
|
+
# SPS_PROJECT Project name
|
|
14
|
+
# SPS_WORKER_SLOT Worker slot name
|
|
15
|
+
#
|
|
16
|
+
# Per-card info (card id, stage, title) is NOT in env โ POSIX env freezes at
|
|
17
|
+
# spawn. Hook scripts must read the marker file instead. Phase 1 does this
|
|
18
|
+
# automatically via `sps hook user-prompt-submit`.
|
|
19
|
+
|
|
20
|
+
set -e
|
|
21
|
+
|
|
22
|
+
# โโโ Phase 1: SPS official action (do NOT remove) โโโโโโโโโโโโโโโโโโโโ
|
|
23
|
+
# Reads marker file โ addLabel STARTED-<stage> + emit skill hints.
|
|
24
|
+
sps hook user-prompt-submit
|
|
25
|
+
|
|
26
|
+
# โโโ Phase 2: User-customizable actions (edit as needed) โโโโโโโโโโโโ
|
|
27
|
+
|
|
28
|
+
# Example: audit log of every prompt submission.
|
|
29
|
+
# if [ -n "$SPS_PROJECT" ] && [ -n "$SPS_WORKER_SLOT" ]; then
|
|
30
|
+
# echo "$(date): prompt submitted to $SPS_PROJECT/$SPS_WORKER_SLOT" \
|
|
31
|
+
# >> "$CLAUDE_PROJECT_DIR/.sps/user-prompts.log"
|
|
32
|
+
# fi
|
|
33
|
+
|
|
34
|
+
# Example: rate limiting (block if too many prompts in a window).
|
|
35
|
+
# count=$(find "$CLAUDE_PROJECT_DIR/.sps" -name 'last-prompt-*' -mmin -1 | wc -l)
|
|
36
|
+
# if [ "$count" -gt 30 ]; then
|
|
37
|
+
# echo '{"decision":"block","reason":"rate limit exceeded (>30 prompts/min)"}'
|
|
38
|
+
# exit 0
|
|
39
|
+
# fi
|
|
40
|
+
|
|
41
|
+
# Example: prompt-to-Slack mirror for team visibility.
|
|
42
|
+
# curl -sfX POST "$SLACK_WEBHOOK" -d "{\"text\":\"[$SPS_PROJECT] new prompt\"}"
|
|
43
|
+
|
|
44
|
+
exit 0
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
#!/bin/bash
|
|
2
|
+
# SPS Pipeline Worker โ Stop hook
|
|
3
|
+
#
|
|
4
|
+
# Triggered when Claude finishes its current turn. The pipeline depends on
|
|
5
|
+
# Phase 1 to advance card state. Phase 2+ is user-customizable.
|
|
6
|
+
#
|
|
7
|
+
# Env vars (set by SPS worker at spawn time, frozen for the process lifetime):
|
|
8
|
+
# SPS_PROJECT Project name (stable across card reuse)
|
|
9
|
+
# SPS_WORKER_SLOT Worker slot name (stable across card reuse)
|
|
10
|
+
#
|
|
11
|
+
# These two env vars form the index to locate the per-slot marker file:
|
|
12
|
+
# ~/.coral/projects/$SPS_PROJECT/runtime/worker-$SPS_WORKER_SLOT-current.json
|
|
13
|
+
#
|
|
14
|
+
# Per-card info (card id, stage name, card title) is intentionally NOT in env.
|
|
15
|
+
# POSIX freezes env at spawn; when the claude process is reused for the next
|
|
16
|
+
# card, any per-card env would go stale. Always read the marker file (or use
|
|
17
|
+
# `sps` CLI) to get current card information.
|
|
18
|
+
#
|
|
19
|
+
# Claude-native env also available:
|
|
20
|
+
# CLAUDE_PROJECT_DIR, CLAUDE_SESSION_ID
|
|
21
|
+
|
|
22
|
+
set -e
|
|
23
|
+
|
|
24
|
+
# โโโ Phase 1: SPS official action (do NOT remove) โโโโโโโโโโโโโโโโโโโโ
|
|
25
|
+
# Mark the card complete so pipeline can advance state.
|
|
26
|
+
# We call mark-complete WITHOUT a seq โ the command reads the per-slot
|
|
27
|
+
# current-card marker file (written by the worker manager on each dispatch)
|
|
28
|
+
# to get the authoritative current card. This is the only way to be correct
|
|
29
|
+
# when the same claude process handles multiple cards in sequence.
|
|
30
|
+
if [ -n "$SPS_PROJECT" ] && [ -n "$SPS_WORKER_SLOT" ]; then
|
|
31
|
+
# ็ปไธ่ฎฉ mark-complete ๅคฑ่ดฅ้ปๅก stop:Stop hook ้้ถ้ๅบไผ่ขซ claude ๅฝๆ"ๅซๅใ็ปง็ปญ",
|
|
32
|
+
# ๅฏผ่ด worker ่ขซๆ ้้ๆณ("Acknowledged." ๆญปๅพช็ฏ)ใๅคฑ่ดฅไป
่ฎฐ stderr(MonitorEngine ๆ่ถ
ๆถๅ
ๅบ)ใ
|
|
33
|
+
sps card mark-complete "$SPS_PROJECT" || echo "[stop.sh] mark-complete non-fatal failure โ allowing stop" >&2
|
|
34
|
+
fi
|
|
35
|
+
|
|
36
|
+
# โโโ Phase 2: User-customizable actions (edit as needed) โโโโโโโโโโโโ
|
|
37
|
+
|
|
38
|
+
# Example: record the session transcript location for later audit.
|
|
39
|
+
# if [ -n "$CLAUDE_SESSION_ID" ] && [ -n "$SPS_CARD_ID" ]; then
|
|
40
|
+
# echo "$CLAUDE_SESSION_ID" >> "$CLAUDE_PROJECT_DIR/.sps/session-log.txt"
|
|
41
|
+
# fi
|
|
42
|
+
|
|
43
|
+
# Example: third-party knowledge base capture.
|
|
44
|
+
# if command -v your-kb-cli &>/dev/null; then
|
|
45
|
+
# your-kb-cli capture --project "$SPS_PROJECT" --session "$CLAUDE_SESSION_ID"
|
|
46
|
+
# fi
|
|
47
|
+
|
|
48
|
+
# Example: notify on completion.
|
|
49
|
+
# sps notify matrix "[$SPS_PROJECT] seq $SPS_CARD_ID ($SPS_STAGE) done"
|
|
50
|
+
|
|
51
|
+
# Example: post-task CI trigger.
|
|
52
|
+
# curl -sfX POST "$CI_WEBHOOK" -d "{\"project\":\"$SPS_PROJECT\",\"card\":\"$SPS_CARD_ID\"}"
|
|
53
|
+
|
|
54
|
+
exit 0
|
|
File without changes
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://json.schemastore.org/claude-code-settings.json",
|
|
3
|
+
"hooks": {
|
|
4
|
+
"Stop": [
|
|
5
|
+
{
|
|
6
|
+
"hooks": [
|
|
7
|
+
{
|
|
8
|
+
"type": "command",
|
|
9
|
+
"command": "bash \"$CLAUDE_PROJECT_DIR\"/.claude/hooks/stop.sh"
|
|
10
|
+
}
|
|
11
|
+
]
|
|
12
|
+
}
|
|
13
|
+
],
|
|
14
|
+
"UserPromptSubmit": [
|
|
15
|
+
{
|
|
16
|
+
"hooks": [
|
|
17
|
+
{
|
|
18
|
+
"type": "command",
|
|
19
|
+
"command": "bash \"$CLAUDE_PROJECT_DIR\"/.claude/hooks/start.sh"
|
|
20
|
+
}
|
|
21
|
+
]
|
|
22
|
+
}
|
|
23
|
+
]
|
|
24
|
+
},
|
|
25
|
+
"attribution": {
|
|
26
|
+
"commit": "",
|
|
27
|
+
"pr": ""
|
|
28
|
+
},
|
|
29
|
+
"companyAnnouncements": [
|
|
30
|
+
"๐ง SPS Pipeline Worker โ completion is declared via Stop hook \u2192 COMPLETED-<stage> label"
|
|
31
|
+
]
|
|
32
|
+
}
|
|
File without changes
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
# Project Template
|
|
2
|
+
|
|
3
|
+
This folder is copied into `~/.coral/projects/<project-name>/` for each new pipeline-managed project.
|
|
4
|
+
|
|
5
|
+
Contents:
|
|
6
|
+
- `conf` โ project-specific configuration
|
|
7
|
+
- `deploy.sh` โ optional project-local deploy entrypoint
|
|
8
|
+
- `batch_scheduler.sh` โ project-local Planning โ Backlog scheduler
|
|
9
|
+
- `logs/` โ runtime logs
|
|
10
|
+
- `pm_meta/` โ local PM metadata store (used especially for Plane)
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
# โโ ้กน็ฎๅบ็กไฟกๆฏ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
|
|
2
|
+
export PROJECT_NAME="__PROJECT_NAME__"
|
|
3
|
+
|
|
4
|
+
# โโ ่ทฏๅพ้
็ฝฎ๏ผๅฏ้๏ผไธ่ฎพ็ฝฎๅไฝฟ็จ้ป่ฎคๅผ๏ผโโโโโโโโโโโโโโโโโโโโโโโโโโโ
|
|
5
|
+
# ไธๅกไปฃ็ ไปๅบ็ฎๅฝ๏ผ้ป่ฎค: ~/projects/<project>๏ผ
|
|
6
|
+
# export PROJECT_DIR="$HOME/projects/__PROJECT_NAME__"
|
|
7
|
+
# Worker worktree ๆ น็ฎๅฝ๏ผ้ป่ฎค: ~/.coral/worktrees/๏ผ
|
|
8
|
+
# export WORKTREE_DIR="$HOME/.coral/worktrees"
|
|
9
|
+
|
|
10
|
+
# โโ GitLab๏ผ้กน็ฎ็นๆ๏ผโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
|
|
11
|
+
# GITLAB_URL / GITLAB_TOKEN ไปๅ
จๅฑ ~/.coral/env ็ปงๆฟ๏ผๆญคๅคไธ้ๅค
|
|
12
|
+
export GITLAB_PROJECT="__GITLAB_PROJECT__"
|
|
13
|
+
# GITLAB_PROJECT_ID ๅฏ้ โ ็็ฉบๅ้่ฟ GITLAB_PROJECT ่ทฏๅพ่ชๅจๆฅ่ฏข
|
|
14
|
+
# export GITLAB_PROJECT_ID=""
|
|
15
|
+
export GITLAB_MERGE_BRANCH="develop"
|
|
16
|
+
|
|
17
|
+
# โโ PM Backend โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
|
|
18
|
+
export PM_TOOL="plane"
|
|
19
|
+
|
|
20
|
+
# โโ Trello๏ผPM_TOOL=trello ๆถๅกซๅ๏ผโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
|
|
21
|
+
# TRELLO_API_KEY / TRELLO_TOKEN ไปๅ
จๅฑ ~/.coral/env ็ปงๆฟ
|
|
22
|
+
# export TRELLO_BOARD_ID=""
|
|
23
|
+
# export TRELLO_LIST_PLANNING=""
|
|
24
|
+
# export TRELLO_LIST_BACKLOG=""
|
|
25
|
+
# export TRELLO_LIST_TODO=""
|
|
26
|
+
# export TRELLO_LIST_INPROGRESS=""
|
|
27
|
+
# export TRELLO_LIST_QA=""
|
|
28
|
+
# export TRELLO_LIST_DONE=""
|
|
29
|
+
# export TRELLO_ACCOUNT=""
|
|
30
|
+
|
|
31
|
+
# โโ Plane๏ผPM_TOOL=plane ๆถๅกซๅ๏ผโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
|
|
32
|
+
# PLANE_URL / PLANE_API_KEY / PLANE_WORKSPACE_SLUG ไปๅ
จๅฑ ~/.coral/env ็ปงๆฟ
|
|
33
|
+
export PLANE_PROJECT_ID="__PLANE_PROJECT_ID__"
|
|
34
|
+
export PLANE_STATE_PLANNING="__PLANE_STATE_PLANNING__"
|
|
35
|
+
export PLANE_STATE_BACKLOG="__PLANE_STATE_BACKLOG__"
|
|
36
|
+
export PLANE_STATE_TODO="__PLANE_STATE_TODO__"
|
|
37
|
+
export PLANE_STATE_INPROGRESS="__PLANE_STATE_INPROGRESS__"
|
|
38
|
+
export PLANE_STATE_QA="__PLANE_STATE_QA__"
|
|
39
|
+
export PLANE_STATE_DONE="__PLANE_STATE_DONE__"
|
|
40
|
+
|
|
41
|
+
# โโ Pipeline โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
|
|
42
|
+
export PIPELINE_LABEL="AI-PIPELINE"
|
|
43
|
+
export MR_MODE="none"
|
|
44
|
+
|
|
45
|
+
# โโ Worker / Agent โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
|
|
46
|
+
# claude is the only supported CLI; no selector exposed.
|
|
47
|
+
export MAX_CONCURRENT_WORKERS=3
|
|
48
|
+
# export MAX_ACTIONS_PER_TICK=1
|
|
49
|
+
# export WORKER_RESTART_LIMIT=2
|
|
50
|
+
# export DEFAULT_WORKER_SKILLS="senior"
|
|
51
|
+
|
|
52
|
+
# โโ ่ถ
ๆถไธ็ญ็ฅ๏ผๅฏ้๏ผไปฅไธไธบ้ป่ฎคๅผ๏ผโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
|
|
53
|
+
# export INPROGRESS_TIMEOUT_HOURS=8
|
|
54
|
+
# export MONITOR_AUTO_QA=false
|
|
55
|
+
# export CONFLICT_DEFAULT=serial
|
|
56
|
+
# export TICK_LOCK_TIMEOUT_MINUTES=30
|
|
57
|
+
|
|
58
|
+
# โโ ้็ฅ๏ผ้กน็ฎ็นๆ โ ไธๅ้กน็ฎๅฏๅไธๅๆฟ้ด๏ผโโโโโโโโโโโโโโโโโโโโโโ
|
|
59
|
+
# MATRIX_HOMESERVER / MATRIX_ACCESS_TOKEN ไปๅ
จๅฑ ~/.coral/env ็ปงๆฟ
|
|
60
|
+
# ๅฆๆ้กน็ฎ้่ฆๅๅฐ็นๅฎๆฟ้ด๏ผ่ฎพ็ฝฎ MATRIX_ROOM_ID๏ผ
|
|
61
|
+
# export MATRIX_ROOM_ID=""
|
|
File without changes
|