hanoman 0.9.1 → 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.
@@ -1,5 +1,5 @@
1
1
  {
2
- "version": "0.9.1",
3
- "sha": "1aab2255",
4
- "builtAt": "2026-09-20T08:38:48.880Z"
2
+ "version": "0.9.3",
3
+ "sha": "ff65a479",
4
+ "builtAt": "2026-09-23T04:16:27.982Z"
5
5
  }
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("claude-opus-5"),
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-17-v1";
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("claude-sonnet-5", "medium"),
4644
- Objective: cell("claude-sonnet-5", "medium"),
4645
- Spec: cell("claude-opus-5", "medium"),
4646
- Plan: cell("claude-sonnet-5", "medium"),
4647
- Execute: cell("claude-sonnet-5", "medium")
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("claude-sonnet-5", "medium"),
4660
- Spec: cell("claude-opus-5", "medium"),
4661
- Plan: cell("claude-sonnet-5", "medium"),
4662
- Execute: cell("claude-sonnet-5", "medium")
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("claude-sonnet-5", "medium"),
4674
- Objective: cell("claude-sonnet-5", "medium"),
4675
- "Doc index": cell("claude-opus-5", "medium")
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("claude-sonnet-5", "medium"),
4686
- "Docs teknis": cell("claude-sonnet-5", "medium"),
4687
- Wawancara: cell("claude-sonnet-5", "medium"),
4688
- "Konvensi & index": cell("claude-sonnet-5", "medium"),
4689
- "Serah terima": cell("claude-sonnet-5", "medium")
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("claude-sonnet-5", "medium"),
4702
- PRD: cell("claude-opus-5", "medium")
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("claude-sonnet-5", "medium"),
4712
- Laporan: cell("claude-sonnet-5", "medium")
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("claude-opus-5", "medium"),
4722
- Breakdown: cell("claude-opus-5", "medium")
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("claude-sonnet-5", "medium"),
4732
- Verifikasi: cell("claude-sonnet-5", "medium")
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("claude-haiku-4-5", "low") },
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("claude-opus-5"),
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("claude-opus-5"),
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("claude-sonnet-5"),
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):",