hanoman 0.1.8 → 0.1.9
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 +138 -84
- package/dist/server.js +589 -33
- package/package.json +1 -1
- package/prisma/migrations/20260801120000_custom_agent/migration.sql +27 -0
- package/prisma/schema.prisma +37 -2
- package/web/assets/{index-D6AOUdRy.js → index-D5MU9hT6.js} +1527 -1527
- package/web/index.html +1 -1
package/package.json
CHANGED
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
-- SPEC-450 · ADR-0094 · katalog custom agent (global & per project), ikut changefeed sync.
|
|
2
|
+
--
|
|
3
|
+
-- Tabel baru → `CREATE TABLE` polos; tak ada redefinisi tabel seperti migration SPEC-408.
|
|
4
|
+
-- `id` deterministik "<projectId|global>:<name>" ditulis aplikasi, bukan default DB.
|
|
5
|
+
--
|
|
6
|
+
-- CATATAN indeks unik: pada SQLite, NULL saling BERBEDA di indeks unik, jadi baris ini TIDAK
|
|
7
|
+
-- mencegah dua agen global bernama sama. Yang mencegahnya adalah PK deterministik. Indeks tetap
|
|
8
|
+
-- dipasang sebagai jaring kedua untuk baris ber-project.
|
|
9
|
+
CREATE TABLE "CustomAgent" (
|
|
10
|
+
"id" TEXT NOT NULL PRIMARY KEY,
|
|
11
|
+
"projectId" TEXT,
|
|
12
|
+
"name" TEXT NOT NULL,
|
|
13
|
+
"description" TEXT NOT NULL,
|
|
14
|
+
"instructions" TEXT NOT NULL,
|
|
15
|
+
"tools" JSONB,
|
|
16
|
+
"model" TEXT,
|
|
17
|
+
"mentions" JSONB,
|
|
18
|
+
"enabled" BOOLEAN NOT NULL DEFAULT true,
|
|
19
|
+
"version" INTEGER NOT NULL DEFAULT 0,
|
|
20
|
+
"createdAt" DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
21
|
+
"updatedAt" DATETIME NOT NULL,
|
|
22
|
+
CONSTRAINT "CustomAgent_projectId_fkey" FOREIGN KEY ("projectId")
|
|
23
|
+
REFERENCES "Project" ("id") ON DELETE CASCADE ON UPDATE CASCADE
|
|
24
|
+
);
|
|
25
|
+
|
|
26
|
+
CREATE UNIQUE INDEX "CustomAgent_projectId_name_key" ON "CustomAgent" ("projectId", "name");
|
|
27
|
+
CREATE INDEX "CustomAgent_projectId_idx" ON "CustomAgent" ("projectId");
|
package/prisma/schema.prisma
CHANGED
|
@@ -21,8 +21,9 @@ model Project {
|
|
|
21
21
|
helpEnabled Boolean @default(false) // SPEC-253 · opt-in Help Center publik
|
|
22
22
|
schedulerOptIn Boolean @default(false) // SPEC-294 · ADR-0072 · opt-in scheduler otonom (LOCAL — tak masuk FIELDS sync)
|
|
23
23
|
leadOptIn Boolean @default(false) // SPEC-409 · ADR-0091 · opt-in hanoman-lead (LOCAL — cermin schedulerOptIn)
|
|
24
|
-
specs
|
|
25
|
-
tickets
|
|
24
|
+
specs Spec[]
|
|
25
|
+
tickets Ticket[]
|
|
26
|
+
customAgents CustomAgent[] // SPEC-450 · ADR-0094 · custom agent milik project ini
|
|
26
27
|
}
|
|
27
28
|
|
|
28
29
|
model Spec {
|
|
@@ -56,6 +57,40 @@ model Spec {
|
|
|
56
57
|
project Project @relation(fields: [projectId], references: [id], onDelete: Cascade)
|
|
57
58
|
}
|
|
58
59
|
|
|
60
|
+
// SPEC-450 · ADR-0094 · custom agent: persona yang bisa dipilih ulang & dibagi.
|
|
61
|
+
// `projectId` null = GLOBAL (semua project); terisi = milik satu project, dan agen project
|
|
62
|
+
// MENIMPA agen global bernama sama.
|
|
63
|
+
//
|
|
64
|
+
// `id` DETERMINISTIK "<projectId|global>:<name>" — bukan cuid. Baris ini disync, dan dengan id
|
|
65
|
+
// acak dua mesin yang sama-sama membuat agen global `reviewer` melahirkan DUA baris yang keduanya
|
|
66
|
+
// menyeberang lalu bertemu di satu objek JSON `--agents` yang BERKUNCI NAMA; salah satunya hilang
|
|
67
|
+
// tanpa jejak. Dengan id deterministik keduanya baris yang SAMA → rekonsiliasi LWW (ADR-0067).
|
|
68
|
+
//
|
|
69
|
+
// `name` IMMUTABLE: changefeed tak punya operasi hapus, jadi rename yang mengubah id meninggalkan
|
|
70
|
+
// baris yatim di setiap mesin lain. Ganti nama = hapus + buat baru.
|
|
71
|
+
//
|
|
72
|
+
// GOTCHA: `@@unique([projectId, name])` TIDAK mencegah dua agen global bernama sama — pada indeks
|
|
73
|
+
// unik SQLite NULL saling BERBEDA. Yang mencegahnya adalah PK deterministik di atas; indeks ini
|
|
74
|
+
// jaring kedua untuk baris ber-project.
|
|
75
|
+
model CustomAgent {
|
|
76
|
+
id String @id
|
|
77
|
+
projectId String?
|
|
78
|
+
name String
|
|
79
|
+
description String
|
|
80
|
+
instructions String
|
|
81
|
+
tools Json?
|
|
82
|
+
model String?
|
|
83
|
+
mentions Json?
|
|
84
|
+
enabled Boolean @default(true)
|
|
85
|
+
version Int @default(0) // SPEC-213 · version-stamp sync (ADR-0045)
|
|
86
|
+
createdAt DateTime @default(now())
|
|
87
|
+
updatedAt DateTime @updatedAt
|
|
88
|
+
project Project? @relation(fields: [projectId], references: [id], onDelete: Cascade)
|
|
89
|
+
|
|
90
|
+
@@unique([projectId, name])
|
|
91
|
+
@@index([projectId])
|
|
92
|
+
}
|
|
93
|
+
|
|
59
94
|
model Setting {
|
|
60
95
|
id Int @id @default(1)
|
|
61
96
|
data Json
|