huddle60 0.1.0 → 0.1.1
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 +50 -67
- package/dist/action.js +87 -49
- package/dist/action.js.map +2 -2
- package/dist/cli.js +220 -80
- package/dist/cli.js.map +4 -4
- package/package.json +6 -6
- package/templates/.github/ISSUE_TEMPLATE/request.yml +4 -4
- package/templates/.github/PULL_REQUEST_TEMPLATE.md +1 -1
- package/templates/.github/{ai-dlc → huddle60}/policy.yml +2 -2
- package/templates/.github/workflows/{ai-dlc.yml → huddle60.yml} +5 -6
- package/templates/AGENTS.md +2 -2
- package/ui/app.js +1 -1
- package/dist/planner-server.js +0 -1912
- package/dist/planner-server.js.map +0 -7
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "huddle60",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.1",
|
|
4
4
|
"description": "huddle60: a 60-second huddle between PO, DEV and AI on GitHub. Gemini planning, hash-locked requirements and PR gates (AI-DLC).",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"engines": {
|
|
@@ -23,12 +23,9 @@
|
|
|
23
23
|
"format": "prettier --write .",
|
|
24
24
|
"format:check": "prettier --check .",
|
|
25
25
|
"check": "npm run typecheck && npm test && npm run format:check",
|
|
26
|
-
"huddle60": "node dist/cli.js"
|
|
27
|
-
"planner:start": "node dist/planner-server.js"
|
|
26
|
+
"huddle60": "node dist/cli.js"
|
|
28
27
|
},
|
|
29
28
|
"dependencies": {
|
|
30
|
-
"@google-cloud/firestore": "^9.4.0",
|
|
31
|
-
"@google-cloud/tasks": "^7.3.1",
|
|
32
29
|
"@google/genai": "^2.32.0",
|
|
33
30
|
"@octokit/auth-app": "^8.3.1",
|
|
34
31
|
"@octokit/plugin-retry": "^8.1.1",
|
|
@@ -42,5 +39,8 @@
|
|
|
42
39
|
"prettier": "^3.9.10",
|
|
43
40
|
"typescript": "^5.9.3",
|
|
44
41
|
"vitest": "^5.0.5"
|
|
42
|
+
},
|
|
43
|
+
"optionalDependencies": {
|
|
44
|
+
"@rolldown/binding-darwin-arm64": "^1.2.16"
|
|
45
45
|
}
|
|
46
|
-
}
|
|
46
|
+
}
|
|
@@ -1,18 +1,18 @@
|
|
|
1
|
-
name:
|
|
1
|
+
name: huddle60 Request
|
|
2
2
|
description: Mô tả nhu cầu bằng một câu; AI đề xuất Epic/Story/Task để PO xác nhận.
|
|
3
3
|
title: "[Request] "
|
|
4
|
-
labels: ["
|
|
4
|
+
labels: ["huddle60:request"]
|
|
5
5
|
body:
|
|
6
6
|
- type: markdown
|
|
7
7
|
attributes:
|
|
8
8
|
value: |
|
|
9
|
-
Chỉ PO được cấu hình trong `.github/
|
|
9
|
+
Chỉ PO được cấu hình trong `.github/huddle60/policy.yml` mới kích hoạt AI planner.
|
|
10
10
|
AI chỉ đề xuất; chưa có Issue nào được tạo cho đến khi PO xác nhận.
|
|
11
11
|
- type: textarea
|
|
12
12
|
id: request
|
|
13
13
|
attributes:
|
|
14
14
|
label: Yêu cầu
|
|
15
15
|
description: Mô tả kết quả mong muốn bằng ngôn ngữ tự nhiên.
|
|
16
|
-
placeholder:
|
|
16
|
+
placeholder: Xây dựng tính năng đăng nhập Google OAuth
|
|
17
17
|
validations:
|
|
18
18
|
required: true
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Refs #
|
|
2
2
|
|
|
3
|
-
<!-- Dán khối từ reply của `/
|
|
3
|
+
<!-- Dán khối từ reply của `/huddle60 ready` hoặc `npx huddle60 context --issue <n>`. -->
|
|
4
4
|
<!-- Dùng "Refs #n", không dùng Closes/Fixes/Resolves cho Story/Epic. -->
|
|
5
5
|
|
|
6
6
|
## Đã thay đổi / AC liên quan
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
# AI-DLC
|
|
1
|
+
# huddle60 policy (AI-DLC protocol). Changes must be reviewed by CODEOWNERS.
|
|
2
2
|
# Roles use numeric GitHub user ids (https://api.github.com/users/<login>), which never change.
|
|
3
3
|
# Accounts used only as AI tools must not hold a role.
|
|
4
4
|
version: 1
|
|
@@ -29,7 +29,7 @@ sensitive_paths:
|
|
|
29
29
|
- "migrations/**"
|
|
30
30
|
- "src/auth/**"
|
|
31
31
|
evidence:
|
|
32
|
-
branch:
|
|
32
|
+
branch: huddle60-evidence
|
|
33
33
|
acceptance:
|
|
34
34
|
build_workflows:
|
|
35
35
|
- .github/workflows/build.yml
|
|
@@ -1,7 +1,6 @@
|
|
|
1
|
-
# Deterministic AI-DLC
|
|
1
|
+
# Deterministic huddle60 gates (AI-DLC protocol). Planning (Gemini) runs in `huddle60 ui` on the PO's machine
|
|
2
2
|
# (or the optional planner service), never here.
|
|
3
|
-
|
|
4
|
-
name: ai-dlc
|
|
3
|
+
name: huddle60
|
|
5
4
|
on:
|
|
6
5
|
issue_comment:
|
|
7
6
|
types: [created, edited, deleted]
|
|
@@ -9,9 +8,9 @@ on:
|
|
|
9
8
|
types: [opened, edited, synchronize, reopened, ready_for_review]
|
|
10
9
|
permissions: {}
|
|
11
10
|
jobs:
|
|
12
|
-
|
|
11
|
+
huddle60:
|
|
13
12
|
# Never check out or run pull request code in this job: it holds a write token.
|
|
14
|
-
if: github.event_name == 'pull_request_target' || (github.event.issue.pull_request == null && github.event.sender.type != 'Bot' && (startsWith(github.event.comment.body, '/ai-dlc') || github.event.action != 'created'))
|
|
13
|
+
if: github.event_name == 'pull_request_target' || (github.event.issue.pull_request == null && github.event.sender.type != 'Bot' && (startsWith(github.event.comment.body, '/huddle60') || startsWith(github.event.comment.body, '/ai-dlc') || github.event.action != 'created'))
|
|
15
14
|
runs-on: ubuntu-latest
|
|
16
15
|
permissions:
|
|
17
16
|
contents: read
|
|
@@ -21,7 +20,7 @@ jobs:
|
|
|
21
20
|
with:
|
|
22
21
|
app-id: ${{ vars.AI_DLC_APP_ID }}
|
|
23
22
|
private-key: ${{ secrets.AI_DLC_APP_PRIVATE_KEY }}
|
|
24
|
-
- uses:
|
|
23
|
+
- uses: tadev999/huddle60@main
|
|
25
24
|
with:
|
|
26
25
|
token: ${{ steps.app-token.outputs.token }}
|
|
27
26
|
enabled: ${{ vars.AI_DLC_ENABLED || 'true' }}
|
package/templates/AGENTS.md
CHANGED
|
@@ -5,8 +5,8 @@
|
|
|
5
5
|
Chỉ làm theo nội dung trong đầu ra. Nếu lệnh báo chưa ready hoặc có cảnh báo WARNING, dừng lại và hỏi DEV.
|
|
6
6
|
2. Chỉ sửa file trong phạm vi Task. Không sửa `.github/`, `AGENTS.md` hoặc policy trừ khi Task yêu cầu rõ.
|
|
7
7
|
3. Gắn mã AC vào tên test, ví dụ `[AC-01] từ chối mật khẩu sai`.
|
|
8
|
-
4. Mô tả PR phải chứa khối `<!--
|
|
8
|
+
4. Mô tả PR phải chứa khối `<!-- huddle60:begin -->` do lệnh trên sinh ra. Dùng `Refs #<số>`,
|
|
9
9
|
không dùng `Closes`, `Fixes`, `Resolves`.
|
|
10
10
|
5. Ghi rõ phần chưa kiểm tra và giả định. Không viết rằng CI đã pass khi chưa có kết quả CI.
|
|
11
|
-
6. Không chạy `/
|
|
11
|
+
6. Không chạy `/huddle60 approve`, `ready`, `accept`, `create-plan` và không bấm các nút tương ứng trong `huddle60 ui`;
|
|
12
12
|
đó là quyết định của con người.
|
package/ui/app.js
CHANGED
|
@@ -439,7 +439,7 @@ async function pollReply(issueNumber, commentId, action, update) {
|
|
|
439
439
|
state.pending.delete(issueNumber);
|
|
440
440
|
renderItems();
|
|
441
441
|
update("fail", `#${issueNumber} ${action}: chưa thấy phản hồi từ GitHub Actions`, {
|
|
442
|
-
text: "Kiểm tra workflow
|
|
442
|
+
text: "Kiểm tra workflow huddle60 trong GitHub Actions, sau đó tải lại.",
|
|
443
443
|
});
|
|
444
444
|
}
|
|
445
445
|
|