hanoman 0.9.2 → 0.9.3
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 +50 -38
- package/dist/server.js +415 -151
- package/package.json +1 -1
- package/web/assets/{ChangelogScreen-CqdDSvcM.js → ChangelogScreen-DV7czksP.js} +1 -1
- package/web/assets/{DalangHanomanScreen-BVl47PiI.js → DalangHanomanScreen-gKHFySwO.js} +1 -1
- package/web/assets/{DocPreviewModal-DQ3XMay1.js → DocPreviewModal-DCal7m9E.js} +1 -1
- package/web/assets/{DocsWorkspace-DVOUvpB5.js → DocsWorkspace-BMAVKbqw.js} +2 -2
- package/web/assets/{IdeScreen-rug2LVDr.js → IdeScreen-ZmtKIwRL.js} +1 -1
- package/web/assets/{LeadScreen-DssA9M8m.js → LeadScreen-BGP15mjr.js} +1 -1
- package/web/assets/{ReviewScreen-C1IA0OXe.js → ReviewScreen-BB-yKNIm.js} +1 -1
- package/web/assets/SchedulerScreen-C1T7kZ5F.js +1 -0
- package/web/assets/SettingsScreen-JT8uQrhn.js +62 -0
- package/web/assets/{TeamScreen-CnLpgpL4.js → TeamScreen-CJ-AeCGM.js} +1 -1
- package/web/assets/TerminalScreen-BTPwK0A4.js +2 -0
- package/web/assets/{TriageScreen-QT5nAssi.js → TriageScreen-HE-JKaXl.js} +1 -1
- package/web/assets/{VpsScreen-C4Aw0EJB.js → VpsScreen-CiRV0mMK.js} +1 -1
- package/web/assets/index-B_pRoVeM.js +1005 -0
- package/web/assets/{live-DSfDhu0-.js → live-B0yZ2azt.js} +1 -1
- package/web/index.html +1 -1
- package/web/assets/SchedulerScreen-C3dr6FMf.js +0 -1
- package/web/assets/SettingsScreen-C39ctLm1.js +0 -62
- package/web/assets/TerminalScreen-lw3pei-W.js +0 -2
- package/web/assets/index-Cl9u81Cr.js +0 -1005
package/dist/build-info.json
CHANGED
package/dist/cli.js
CHANGED
|
@@ -4286,7 +4286,7 @@ var init_agent_engine = __esm({
|
|
|
4286
4286
|
zAgentEngine = external_exports.object({
|
|
4287
4287
|
enabled: external_exports.boolean().default(false),
|
|
4288
4288
|
agent: zAgent.default("claude"),
|
|
4289
|
-
model: external_exports.string().default("
|
|
4289
|
+
model: external_exports.string().default("opus"),
|
|
4290
4290
|
effort: external_exports.string().default("xhigh")
|
|
4291
4291
|
});
|
|
4292
4292
|
}
|
|
@@ -4621,7 +4621,7 @@ var init_runtime_defaults = __esm({
|
|
|
4621
4621
|
"use strict";
|
|
4622
4622
|
init_orchestration();
|
|
4623
4623
|
init_zod();
|
|
4624
|
-
RUNTIME_DEFAULTS_VERSION = "2026-09-
|
|
4624
|
+
RUNTIME_DEFAULTS_VERSION = "2026-09-23-v1";
|
|
4625
4625
|
zRuntimeDefaultState = external_exports.enum(["seeded", "user"]);
|
|
4626
4626
|
zBuiltinRuntimeDefaults = external_exports.object({
|
|
4627
4627
|
version: external_exports.string().default(RUNTIME_DEFAULTS_VERSION),
|
|
@@ -4640,11 +4640,11 @@ var init_runtime_defaults = __esm({
|
|
|
4640
4640
|
BUILTIN_ORCHESTRATION_DEFAULTS = {
|
|
4641
4641
|
feature: flow(
|
|
4642
4642
|
{
|
|
4643
|
-
Brainstorm: cell("
|
|
4644
|
-
Objective: cell("
|
|
4645
|
-
Spec: cell("
|
|
4646
|
-
Plan: cell("
|
|
4647
|
-
Execute: cell("
|
|
4643
|
+
Brainstorm: cell("sonnet", "medium"),
|
|
4644
|
+
Objective: cell("sonnet", "medium"),
|
|
4645
|
+
Spec: cell("opus", "medium"),
|
|
4646
|
+
Plan: cell("sonnet", "medium"),
|
|
4647
|
+
Execute: cell("sonnet", "medium")
|
|
4648
4648
|
},
|
|
4649
4649
|
{
|
|
4650
4650
|
Brainstorm: cell("gpt-5.6-terra", "medium"),
|
|
@@ -4656,10 +4656,10 @@ var init_runtime_defaults = __esm({
|
|
|
4656
4656
|
),
|
|
4657
4657
|
qa: flow(
|
|
4658
4658
|
{
|
|
4659
|
-
Audit: cell("
|
|
4660
|
-
Spec: cell("
|
|
4661
|
-
Plan: cell("
|
|
4662
|
-
Execute: cell("
|
|
4659
|
+
Audit: cell("sonnet", "medium"),
|
|
4660
|
+
Spec: cell("opus", "medium"),
|
|
4661
|
+
Plan: cell("sonnet", "medium"),
|
|
4662
|
+
Execute: cell("sonnet", "medium")
|
|
4663
4663
|
},
|
|
4664
4664
|
{
|
|
4665
4665
|
Audit: cell("gpt-5.6-terra", "medium"),
|
|
@@ -4670,9 +4670,9 @@ var init_runtime_defaults = __esm({
|
|
|
4670
4670
|
),
|
|
4671
4671
|
scaffold: flow(
|
|
4672
4672
|
{
|
|
4673
|
-
Brainstorm: cell("
|
|
4674
|
-
Objective: cell("
|
|
4675
|
-
"Doc index": cell("
|
|
4673
|
+
Brainstorm: cell("sonnet", "medium"),
|
|
4674
|
+
Objective: cell("sonnet", "medium"),
|
|
4675
|
+
"Doc index": cell("opus", "medium")
|
|
4676
4676
|
},
|
|
4677
4677
|
{
|
|
4678
4678
|
Brainstorm: cell("gpt-5.6-terra", "medium"),
|
|
@@ -4682,11 +4682,11 @@ var init_runtime_defaults = __esm({
|
|
|
4682
4682
|
),
|
|
4683
4683
|
reverse: flow(
|
|
4684
4684
|
{
|
|
4685
|
-
Scan: cell("
|
|
4686
|
-
"Docs teknis": cell("
|
|
4687
|
-
Wawancara: cell("
|
|
4688
|
-
"Konvensi & index": cell("
|
|
4689
|
-
"Serah terima": cell("
|
|
4685
|
+
Scan: cell("sonnet", "medium"),
|
|
4686
|
+
"Docs teknis": cell("sonnet", "medium"),
|
|
4687
|
+
Wawancara: cell("sonnet", "medium"),
|
|
4688
|
+
"Konvensi & index": cell("sonnet", "medium"),
|
|
4689
|
+
"Serah terima": cell("sonnet", "medium")
|
|
4690
4690
|
},
|
|
4691
4691
|
{
|
|
4692
4692
|
Scan: cell("gpt-5.6-terra", "medium"),
|
|
@@ -4698,8 +4698,8 @@ var init_runtime_defaults = __esm({
|
|
|
4698
4698
|
),
|
|
4699
4699
|
prd: flow(
|
|
4700
4700
|
{
|
|
4701
|
-
Brainstorm: cell("
|
|
4702
|
-
PRD: cell("
|
|
4701
|
+
Brainstorm: cell("sonnet", "medium"),
|
|
4702
|
+
PRD: cell("opus", "medium")
|
|
4703
4703
|
},
|
|
4704
4704
|
{
|
|
4705
4705
|
Brainstorm: cell("gpt-5.6-terra", "medium"),
|
|
@@ -4708,8 +4708,8 @@ var init_runtime_defaults = __esm({
|
|
|
4708
4708
|
),
|
|
4709
4709
|
audit: flow(
|
|
4710
4710
|
{
|
|
4711
|
-
Audit: cell("
|
|
4712
|
-
Laporan: cell("
|
|
4711
|
+
Audit: cell("sonnet", "medium"),
|
|
4712
|
+
Laporan: cell("sonnet", "medium")
|
|
4713
4713
|
},
|
|
4714
4714
|
{
|
|
4715
4715
|
Audit: cell("gpt-5.6-terra", "medium"),
|
|
@@ -4718,8 +4718,8 @@ var init_runtime_defaults = __esm({
|
|
|
4718
4718
|
),
|
|
4719
4719
|
breakdown: flow(
|
|
4720
4720
|
{
|
|
4721
|
-
Analisis: cell("
|
|
4722
|
-
Breakdown: cell("
|
|
4721
|
+
Analisis: cell("opus", "medium"),
|
|
4722
|
+
Breakdown: cell("opus", "medium")
|
|
4723
4723
|
},
|
|
4724
4724
|
{
|
|
4725
4725
|
Analisis: cell("gpt-5.6-sol", "medium"),
|
|
@@ -4728,8 +4728,8 @@ var init_runtime_defaults = __esm({
|
|
|
4728
4728
|
),
|
|
4729
4729
|
goal: flow(
|
|
4730
4730
|
{
|
|
4731
|
-
Goal: cell("
|
|
4732
|
-
Verifikasi: cell("
|
|
4731
|
+
Goal: cell("sonnet", "medium"),
|
|
4732
|
+
Verifikasi: cell("sonnet", "medium")
|
|
4733
4733
|
},
|
|
4734
4734
|
{
|
|
4735
4735
|
Goal: cell("gpt-5.6-terra", "medium"),
|
|
@@ -4737,7 +4737,7 @@ var init_runtime_defaults = __esm({
|
|
|
4737
4737
|
}
|
|
4738
4738
|
),
|
|
4739
4739
|
no_effort: flow(
|
|
4740
|
-
{ Kerjakan: cell("
|
|
4740
|
+
{ Kerjakan: cell("haiku", "low") },
|
|
4741
4741
|
{ Kerjakan: cell("gpt-5.6-terra", "low") },
|
|
4742
4742
|
false
|
|
4743
4743
|
)
|
|
@@ -4768,7 +4768,7 @@ function cmpVersion(a, b) {
|
|
|
4768
4768
|
}
|
|
4769
4769
|
return 0;
|
|
4770
4770
|
}
|
|
4771
|
-
var zProject, zBriefPayload, zQaPayload, zGoalPayload, zSpecBlocker, zSourceChange, zManualDone, zSpec, zSpecListItem, zSpecSlim, NOTIFY_SOUNDS, zCodex, CODEX_DEFAULTS, zSourceCommon, zScheduler, SCHEDULER_DEFAULTS, zGoal, GOAL_DEFAULTS, zConflict, CONFLICT_DEFAULTS, CHANGELOG_ENGINE_DEFAULTS, zLeadEngine, zLead, LEAD_DEFAULTS, zPortalChat, PORTAL_CHAT_DEFAULTS, zPhaseCell, zPhaseOverride, zPhaseOverrides, zFlowOrchestration, zOrchestration, ORCHESTRATION_DEFAULTS, zSetting, zNotification, zDocFile, zDeviceTokenView;
|
|
4771
|
+
var zProject, zBriefPayload, zQaPayload, zGoalPayload, zSpecBlocker, zSourceChange, zManualDone, zSpec, zSpecListItem, zSpecSlim, NOTIFY_SOUNDS, zCodex, CODEX_DEFAULTS, zSourceCommon, zScheduler, SCHEDULER_DEFAULTS, zGoal, GOAL_DEFAULTS, zConflict, CONFLICT_DEFAULTS, CHANGELOG_ENGINE_DEFAULTS, zLeadEngine, zLead, LEAD_DEFAULTS, zPortalChat, PORTAL_CHAT_DEFAULTS, zPhaseCell, PHASE_OVERRIDE_LIMITS, zPhaseOverride, zPhaseOverrides, zFlowOrchestration, zOrchestration, ORCHESTRATION_DEFAULTS, zSetting, zNotification, zDocFile, zDeviceTokenView;
|
|
4772
4772
|
var init_entities = __esm({
|
|
4773
4773
|
"../shared/src/entities.ts"() {
|
|
4774
4774
|
"use strict";
|
|
@@ -4929,7 +4929,7 @@ var init_entities = __esm({
|
|
|
4929
4929
|
enabled: external_exports.boolean().default(false),
|
|
4930
4930
|
agent: zAgent.default("claude"),
|
|
4931
4931
|
// Lenient z.string() seperti `model`/`effort` di akar: katalog ditegakkan UI, bukan server.
|
|
4932
|
-
model: external_exports.string().default("
|
|
4932
|
+
model: external_exports.string().default("opus"),
|
|
4933
4933
|
effort: external_exports.string().default("xhigh")
|
|
4934
4934
|
});
|
|
4935
4935
|
CONFLICT_DEFAULTS = zConflict.parse({});
|
|
@@ -4979,7 +4979,7 @@ var init_entities = __esm({
|
|
|
4979
4979
|
enabled: external_exports.boolean().default(false),
|
|
4980
4980
|
brainstormPerMonth: external_exports.number().int().min(0).max(1e3).default(2),
|
|
4981
4981
|
askPerMonth: external_exports.number().int().min(0).max(1e4).default(30),
|
|
4982
|
-
model: external_exports.string().default("
|
|
4982
|
+
model: external_exports.string().default("opus"),
|
|
4983
4983
|
effort: external_exports.string().default("high"),
|
|
4984
4984
|
timeoutSec: external_exports.number().int().min(10).max(900).default(180)
|
|
4985
4985
|
});
|
|
@@ -4988,11 +4988,15 @@ var init_entities = __esm({
|
|
|
4988
4988
|
model: external_exports.string().nullable().default(null),
|
|
4989
4989
|
effort: external_exports.string().nullable().default(null)
|
|
4990
4990
|
});
|
|
4991
|
+
PHASE_OVERRIDE_LIMITS = { model: 200, effort: 64, phase: 64, phases: 32 };
|
|
4991
4992
|
zPhaseOverride = external_exports.object({
|
|
4992
|
-
model: external_exports.string().optional(),
|
|
4993
|
-
effort: external_exports.string().optional()
|
|
4993
|
+
model: external_exports.string().min(1).max(PHASE_OVERRIDE_LIMITS.model).optional(),
|
|
4994
|
+
effort: external_exports.string().min(1).max(PHASE_OVERRIDE_LIMITS.effort).optional()
|
|
4994
4995
|
});
|
|
4995
|
-
zPhaseOverrides = external_exports.record(external_exports.string(), zPhaseOverride)
|
|
4996
|
+
zPhaseOverrides = external_exports.record(external_exports.string().min(1).max(PHASE_OVERRIDE_LIMITS.phase), zPhaseOverride).refine(
|
|
4997
|
+
(o) => Object.keys(o).length <= PHASE_OVERRIDE_LIMITS.phases,
|
|
4998
|
+
{ message: `phaseOverrides maksimal ${PHASE_OVERRIDE_LIMITS.phases} fase` }
|
|
4999
|
+
);
|
|
4996
5000
|
zFlowOrchestration = external_exports.object({
|
|
4997
5001
|
enabled: external_exports.boolean().default(true),
|
|
4998
5002
|
claude: external_exports.record(external_exports.string(), zPhaseCell).default({}),
|
|
@@ -5011,7 +5015,7 @@ var init_entities = __esm({
|
|
|
5011
5015
|
});
|
|
5012
5016
|
ORCHESTRATION_DEFAULTS = zOrchestration.parse(BUILTIN_ORCHESTRATION_DEFAULTS);
|
|
5013
5017
|
zSetting = external_exports.object({
|
|
5014
|
-
model: external_exports.string().default("
|
|
5018
|
+
model: external_exports.string().default("sonnet"),
|
|
5015
5019
|
effort: external_exports.string().default("medium"),
|
|
5016
5020
|
autoDefault: external_exports.boolean(),
|
|
5017
5021
|
autoScaffold: external_exports.boolean(),
|
|
@@ -9683,7 +9687,7 @@ var init_settings = __esm({
|
|
|
9683
9687
|
{
|
|
9684
9688
|
name: "hanoman_settings_set",
|
|
9685
9689
|
title: "Simpan setelan instance",
|
|
9686
|
-
description: "Menyimpan setelan instance. MENGGANTI blok penuh \u2014 kirim hasil hanoman_settings_get yang sudah diubah, bukan potongan. Setelan ini berlaku untuk SETIAP sesi baru di seluruh workspace. Menyentuh blok Telegram akan memuat ulang gateway.",
|
|
9690
|
+
description: "Menyimpan setelan instance. MENGGANTI blok penuh \u2014 kirim hasil hanoman_settings_get yang sudah diubah, bukan potongan. Panggil hanoman_settings_get TEPAT sebelum tool ini (jangan memakai hasil lama) dan ubah HANYA field yang dimaksud: setiap model/effort/sel orkestrasi yang berbeda dari nilai tersimpan ditandai milik operator dan tak lagi diperbarui default bawaan saat update. Setelan ini berlaku untuk SETIAP sesi baru di seluruh workspace. Menyentuh blok Telegram akan memuat ulang gateway.",
|
|
9687
9691
|
inputSchema: obj({ properties: { settings: WHOLE_BLOCK("setelan") }, required: ["settings"] }),
|
|
9688
9692
|
mode: "write",
|
|
9689
9693
|
capability: "settings:write",
|
|
@@ -12018,7 +12022,7 @@ var init_git = __esm({
|
|
|
12018
12022
|
});
|
|
12019
12023
|
|
|
12020
12024
|
// ../runner/src/settings.ts
|
|
12021
|
-
var EVENT_SPOOL_SCRIPT, EVENT_HOOK_COMMAND;
|
|
12025
|
+
var EVENT_SPOOL_SCRIPT, EVENT_HOOK_COMMAND, BUSY_SNAPSHOT_SCRIPT;
|
|
12022
12026
|
var init_settings2 = __esm({
|
|
12023
12027
|
"../runner/src/settings.ts"() {
|
|
12024
12028
|
"use strict";
|
|
@@ -12040,6 +12044,10 @@ var init_settings2 = __esm({
|
|
|
12040
12044
|
'${HANOMAN_EVENT_HOST:+-H "host: $HANOMAN_EVENT_HOST"}',
|
|
12041
12045
|
"--data-binary @- >/dev/null 2>&1; fi; exit 0"
|
|
12042
12046
|
].join(" ");
|
|
12047
|
+
BUSY_SNAPSHOT_SCRIPT = [
|
|
12048
|
+
'let d=""',
|
|
12049
|
+
'process.stdin.on("data",c=>d+=c).on("end",()=>{let n=0;try{n=(JSON.parse(d).background_tasks||[]).filter(t=>t&&t.type==="subagent"&&t.status==="running").length}catch{}require("fs").writeFileSync(process.argv[1],"1\\n".repeat(n))})'
|
|
12050
|
+
].join(";");
|
|
12043
12051
|
}
|
|
12044
12052
|
});
|
|
12045
12053
|
|
|
@@ -12158,7 +12166,11 @@ var init_phase_agents = __esm({
|
|
|
12158
12166
|
"- JANGAN menulis `$HANOMAN_PHASE_FILE` \u2014 orchestrator satu-satunya penulis marker fase.",
|
|
12159
12167
|
"- JANGAN `git push` \u2014 push milik orchestrator. Commit artefak fasemu sendiri sebelum melapor.",
|
|
12160
12168
|
`- JANGAN memanggil agen berawalan \`${PHASE_AGENT_PREFIX}\`. Custom agent lain boleh dipanggil bila relevan.`,
|
|
12161
|
-
"- Kerjakan HANYA fase ini; fase lain dikerjakan agen fasenya sendiri."
|
|
12169
|
+
"- Kerjakan HANYA fase ini; fase lain dikerjakan agen fasenya sendiri.",
|
|
12170
|
+
// T1 · ADR-0164 amandemen 2026-09-23 · 22 laporan tanpa `Status:` di audit: agen fase mengakhiri
|
|
12171
|
+
// gilirannya sambil menunggu proses latarnya sendiri, dan teks "menunggu" itu dibaca orchestrator
|
|
12172
|
+
// sebagai laporan final. Giliranmu yang berakhir = laporanmu, jadi menunggu harus terjadi DI DALAM giliran.
|
|
12173
|
+
'- JANGAN mengakhiri giliran atau melapor selama masih menunggu proses/tugas latar milikmu sendiri (test/build/server yang kamu jalankan di latar, subagent yang kamu panggil): tunggu sampai selesai dan baca hasilnya, lalu tulis laporan lengkap berawalan `Status:`. Akhir giliranmu dibaca orchestrator sebagai laporan final \u2014 teks "menunggu proses latar" bukan laporan.'
|
|
12162
12174
|
].join("\n");
|
|
12163
12175
|
PHASE_AGENT_REPORT = [
|
|
12164
12176
|
"Kontrak laporan (wajib, di akhir):",
|