hanoman 0.1.9 → 0.1.10
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/dist/build-info.json +3 -3
- package/dist/cli.js +73 -1
- package/dist/server.js +784 -64
- package/package.json +1 -1
- package/prisma/migrations/20260801170000_github_issue/migration.sql +31 -0
- package/prisma/schema.prisma +33 -0
- package/web/assets/{index-D5MU9hT6.js → index-CXJBr-3-.js} +1523 -1523
- package/web/index.html +1 -1
package/package.json
CHANGED
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
-- SPEC-471 · ADR-0095 · cermin issue GitHub sebagai record lokal (pola Ticket, ADR-0062).
|
|
2
|
+
--
|
|
3
|
+
-- Tabel baru → `CREATE TABLE` polos; tak ada redefinisi tabel.
|
|
4
|
+
-- `id` deterministik "<projectId>:<owner>/<repo>#<number>" ditulis aplikasi, bukan default DB —
|
|
5
|
+
-- itulah yang mencegah dua mesin melahirkan dua baris untuk issue yang sama.
|
|
6
|
+
-- `specId` sengaja TANPA FOREIGN KEY, cermin Ticket.specId: changefeed bisa memancarkan
|
|
7
|
+
-- GithubIssue sebelum Spec-nya mendarat (kelas SPEC-382), dan FK akan menolaknya.
|
|
8
|
+
CREATE TABLE "GithubIssue" (
|
|
9
|
+
"id" TEXT NOT NULL PRIMARY KEY,
|
|
10
|
+
"projectId" TEXT NOT NULL,
|
|
11
|
+
"repoSlug" TEXT NOT NULL,
|
|
12
|
+
"number" INTEGER NOT NULL,
|
|
13
|
+
"title" TEXT NOT NULL,
|
|
14
|
+
"body" TEXT NOT NULL,
|
|
15
|
+
"authorLogin" TEXT NOT NULL,
|
|
16
|
+
"labels" JSONB NOT NULL,
|
|
17
|
+
"url" TEXT NOT NULL,
|
|
18
|
+
"issueState" TEXT NOT NULL,
|
|
19
|
+
"status" TEXT NOT NULL DEFAULT 'new',
|
|
20
|
+
"specId" TEXT,
|
|
21
|
+
"issueCreatedAt" DATETIME NOT NULL,
|
|
22
|
+
"issueUpdatedAt" DATETIME NOT NULL,
|
|
23
|
+
"pulledAt" DATETIME NOT NULL,
|
|
24
|
+
"version" INTEGER NOT NULL DEFAULT 0,
|
|
25
|
+
"createdAt" DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
26
|
+
"updatedAt" DATETIME NOT NULL,
|
|
27
|
+
CONSTRAINT "GithubIssue_projectId_fkey" FOREIGN KEY ("projectId")
|
|
28
|
+
REFERENCES "Project" ("id") ON DELETE CASCADE ON UPDATE CASCADE
|
|
29
|
+
);
|
|
30
|
+
|
|
31
|
+
CREATE INDEX "GithubIssue_projectId_status_idx" ON "GithubIssue" ("projectId", "status");
|
package/prisma/schema.prisma
CHANGED
|
@@ -24,6 +24,7 @@ model Project {
|
|
|
24
24
|
specs Spec[]
|
|
25
25
|
tickets Ticket[]
|
|
26
26
|
customAgents CustomAgent[] // SPEC-450 · ADR-0094 · custom agent milik project ini
|
|
27
|
+
githubIssues GithubIssue[] // SPEC-471 · ADR-0095 · cermin issue repo GitHub project ini
|
|
27
28
|
}
|
|
28
29
|
|
|
29
30
|
model Spec {
|
|
@@ -91,6 +92,38 @@ model CustomAgent {
|
|
|
91
92
|
@@index([projectId])
|
|
92
93
|
}
|
|
93
94
|
|
|
95
|
+
// SPEC-471 · ADR-0095 · cermin issue GitHub sebagai record lokal, pola Ticket (ADR-0062).
|
|
96
|
+
// `id` DETERMINISTIK "<projectId>:<owner>/<repo>#<number>" ditulis aplikasi, bukan default DB —
|
|
97
|
+
// alasan yang sama dengan CustomAgent (ADR-0094): dua mesin yang menarik repo yang sama harus
|
|
98
|
+
// bertemu sebagai SATU baris di changefeed, bukan dua yang saling menelan. `projectId` ikut di
|
|
99
|
+
// dalam id karena dua project hanoman boleh menunjuk repo yang sama.
|
|
100
|
+
//
|
|
101
|
+
// `specId` sengaja TANPA FK (cermin Ticket.specId): changefeed bisa memancarkan GithubIssue
|
|
102
|
+
// sebelum Spec-nya mendarat (kelas SPEC-382) dan FK akan menolaknya.
|
|
103
|
+
model GithubIssue {
|
|
104
|
+
id String @id
|
|
105
|
+
projectId String
|
|
106
|
+
repoSlug String // "owner/repo"
|
|
107
|
+
number Int
|
|
108
|
+
title String
|
|
109
|
+
body String
|
|
110
|
+
authorLogin String
|
|
111
|
+
labels Json // string[]
|
|
112
|
+
url String
|
|
113
|
+
issueState String // open | closed — keadaan DI GITHUB saat ditarik
|
|
114
|
+
status String @default("new") // new | accepted | rejected (zGithubIssueStatus)
|
|
115
|
+
specId String? // soft-link Spec hasil promosi
|
|
116
|
+
issueCreatedAt DateTime
|
|
117
|
+
issueUpdatedAt DateTime
|
|
118
|
+
pulledAt DateTime
|
|
119
|
+
version Int @default(0) // SPEC-471 · version-stamp sync (ADR-0045)
|
|
120
|
+
createdAt DateTime @default(now())
|
|
121
|
+
updatedAt DateTime @updatedAt
|
|
122
|
+
project Project @relation(fields: [projectId], references: [id], onDelete: Cascade)
|
|
123
|
+
|
|
124
|
+
@@index([projectId, status])
|
|
125
|
+
}
|
|
126
|
+
|
|
94
127
|
model Setting {
|
|
95
128
|
id Int @id @default(1)
|
|
96
129
|
data Json
|