hanoman 0.1.18 → 0.1.20

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.1.18",
3
- "sha": "01acd81",
4
- "builtAt": "2026-08-03T16:15:47.912Z"
2
+ "version": "0.1.20",
3
+ "sha": "76f8304",
4
+ "builtAt": "2026-08-06T02:10:06.880Z"
5
5
  }
package/dist/cli.js CHANGED
@@ -63,6 +63,25 @@ var init_verify_scope = __esm({
63
63
  }
64
64
  });
65
65
 
66
+ // ../runner/src/code-style.ts
67
+ var CODE_STYLE_CLAUSE;
68
+ var init_code_style = __esm({
69
+ "../runner/src/code-style.ts"() {
70
+ "use strict";
71
+ CODE_STYLE_CLAUSE = [
72
+ "Gaya kode \u2014 berlaku setiap kali kamu menulis atau mengubah kode:",
73
+ "- Tulis kode yang rapi dan mengikuti idiom, penamaan, serta struktur kode di sekitarnya.",
74
+ " Kodemu harus terbaca seperti kode yang sudah ada di berkas itu, bukan seperti tempelan.",
75
+ "- Jangan menulis komentar yang cuma mengulang apa yang sudah dinyatakan kode.",
76
+ "- Komentar hanya untuk hal yang TIDAK terbaca dari kode: alasan/why sebuah keputusan,",
77
+ " trade-off yang diambil, workaround beserta rujukan SPEC/ADR-nya, atau invariant yang tak",
78
+ " kelihatan. Komentar semacam itu justru berharga \u2014 jangan ikut dibuang.",
79
+ "- Jangan menambahkan komentar pembatas seksi, header berhiasan, atau narasi langkah demi langkah.",
80
+ "- Jangan meninggalkan kode mati atau kode yang dikomentari. Hapus saja; riwayat git yang menyimpannya."
81
+ ].join("\n");
82
+ }
83
+ });
84
+
66
85
  // ../runner/src/goal-spec.ts
67
86
  var init_goal_spec = __esm({
68
87
  "../runner/src/goal-spec.ts"() {
@@ -77,6 +96,7 @@ var init_prompt = __esm({
77
96
  "use strict";
78
97
  init_reverse_standard();
79
98
  init_verify_scope();
99
+ init_code_style();
80
100
  init_goal_spec();
81
101
  ESCALATION_CONTRACT = [
82
102
  "REKOMENDASI ESKALASI (wajib, terbaca mesin). Di bagian akhir dokumen audit, tulis bagian",
@@ -4418,7 +4438,7 @@ var init_auto_merge = __esm({
4418
4438
  });
4419
4439
 
4420
4440
  // ../shared/src/entities.ts
4421
- var zProject, zBriefPayload, zQaPayload, zGoalPayload, zSpecBlocker, zSpec, NOTIFY_SOUNDS, zCodex, CODEX_DEFAULTS, zSourceCommon, zScheduler, SCHEDULER_DEFAULTS, zGoal, GOAL_DEFAULTS, zConflict, CONFLICT_DEFAULTS, zLeadEngine, zLead, LEAD_DEFAULTS, zSetting, zNotification, zDocFile, zDeviceTokenView;
4441
+ var zProject, zBriefPayload, zQaPayload, zGoalPayload, zSpecBlocker, zSpec, NOTIFY_SOUNDS, zCodex, CODEX_DEFAULTS, zSourceCommon, zScheduler, SCHEDULER_DEFAULTS, zGoal, GOAL_DEFAULTS, zConflict, CONFLICT_DEFAULTS, CHANGELOG_ENGINE_DEFAULTS, zLeadEngine, zLead, LEAD_DEFAULTS, zSetting, zNotification, zDocFile, zDeviceTokenView;
4422
4442
  var init_entities = __esm({
4423
4443
  "../shared/src/entities.ts"() {
4424
4444
  "use strict";
@@ -4547,6 +4567,7 @@ var init_entities = __esm({
4547
4567
  effort: external_exports.string().default("xhigh")
4548
4568
  });
4549
4569
  CONFLICT_DEFAULTS = zConflict.parse({});
4570
+ CHANGELOG_ENGINE_DEFAULTS = zAgentEngine.parse({});
4550
4571
  zLeadEngine = zAgentEngine;
4551
4572
  zLead = external_exports.object({
4552
4573
  enabled: external_exports.boolean().default(false),
@@ -4618,8 +4639,10 @@ var init_entities = __esm({
4618
4639
  // SPEC-383 · ADR-0081 · default sesi konflik rebase/merge
4619
4640
  lead: zLead.default(LEAD_DEFAULTS),
4620
4641
  // SPEC-409 · ADR-0091 · hanoman-lead (default mati)
4621
- telegram: zTelegramSettings.default(TELEGRAM_DEFAULTS)
4642
+ telegram: zTelegramSettings.default(TELEGRAM_DEFAULTS),
4622
4643
  // SPEC-476 · ADR-0096 · gateway Telegram (default mati)
4644
+ changelog: zAgentEngine.default(CHANGELOG_ENGINE_DEFAULTS)
4645
+ // SPEC-518 · agen pembuat changelog (opt-in, mati)
4623
4646
  });
4624
4647
  zNotification = external_exports.object({
4625
4648
  id: external_exports.string(),
@@ -4922,8 +4945,19 @@ var init_lead = __esm({
4922
4945
  }
4923
4946
  });
4924
4947
 
4948
+ // ../shared/src/prd-status.ts
4949
+ var PRD_STATUSES, zPrdStatus;
4950
+ var init_prd_status = __esm({
4951
+ "../shared/src/prd-status.ts"() {
4952
+ "use strict";
4953
+ init_zod();
4954
+ PRD_STATUSES = ["draft", "dieskalasi", "terwujud"];
4955
+ zPrdStatus = external_exports.enum(PRD_STATUSES);
4956
+ }
4957
+ });
4958
+
4925
4959
  // ../shared/src/dto.ts
4926
- var zIssueDeviceToken, zSessionResult, zSessionHistory, zCreateProject, zProjectId, zRenameProject, zUpdateProject, zCreateSpec, zPatchSpec, zIntegrate, zSessionSummary, zProjectView, zSchedulerQueueItem, zSchedulerSourceView, zSchedulerSessionView, zSchedulerState, zLeadDecisionView, zLeadFlowView, zLeadAnswer, zLeadProjectStatus, zLeadStatusView, zFlow, zPrdBrief, zPrdDoc, zBreakdownItem, zBreakdownDoc, zBatchCreateSpec, zEscalationTarget, zEscalationPrefill, zAuditEscalation, zAuditEscalationView, zTerminalSession, zDocFileContent, zDocIndexCat, zDocIndex, HOST_RE, USER_RE, zCreateVps, zPatchVps, zLogin, zSignup, zChangePassword, zVpsCheck, zMarkNa, zMarkNaBulk, zAttest, zRemediate, UPDATE_RESTART_EXIT, zUpdateApplyBody, zTicketView, zTicketAttachmentView, zTicketDetail, zTicketEditInput, zHelpInfo, zPublicTicketStatus;
4960
+ var zIssueDeviceToken, zSessionResult, zSessionHistory, zCreateProject, zProjectId, zRenameProject, zUpdateProject, zCreateSpec, zPatchSpec, zIntegrate, zSessionSummary, zProjectView, zSchedulerQueueItem, zSchedulerSourceView, zSchedulerSessionView, zSchedulerQueueCounts, zSchedulerState, zLeadDecisionView, zLeadFlowView, zLeadAnswer, zLeadProjectStatus, zLeadStatusView, zFlow, zPrdBrief, zPrdDoc, zBreakdownItem, zBreakdownDoc, zBatchCreateSpec, zEscalationTarget, zEscalationPrefill, zAuditEscalation, zAuditEscalationView, zTerminalSession, zDocFileContent, zDocIndexCat, zDocIndex, HOST_RE, USER_RE, zCreateVps, zPatchVps, zLogin, zSignup, zChangePassword, zVpsCheck, zMarkNa, zMarkNaBulk, zAttest, zRemediate, UPDATE_RESTART_EXIT, zUpdateApplyBody, zTicketView, zTicketAttachmentView, zTicketDetail, zTicketEditInput, zHelpInfo, zPublicTicketStatus;
4927
4961
  var init_dto = __esm({
4928
4962
  "../shared/src/dto.ts"() {
4929
4963
  "use strict";
@@ -4931,6 +4965,7 @@ var init_dto = __esm({
4931
4965
  init_entities();
4932
4966
  init_lead();
4933
4967
  init_auto_merge();
4968
+ init_prd_status();
4934
4969
  init_enums();
4935
4970
  zIssueDeviceToken = external_exports.object({ name: external_exports.string().min(1) });
4936
4971
  zSessionResult = external_exports.object({
@@ -5075,12 +5110,21 @@ var init_dto = __esm({
5075
5110
  decision: external_exports.boolean(),
5076
5111
  exited: external_exports.boolean()
5077
5112
  });
5113
+ zSchedulerQueueCounts = external_exports.object({
5114
+ queued: external_exports.number().int(),
5115
+ launched: external_exports.number().int(),
5116
+ done: external_exports.number().int(),
5117
+ failed: external_exports.number().int(),
5118
+ // SPEC-522 · `canceled` adalah nilai kelima `status`; hitungannya ikut supaya panel bisa
5119
+ // menampilkan seksi "Dibatalkan" tanpa memuat daftarnya.
5120
+ canceled: external_exports.number().int()
5121
+ });
5078
5122
  zSchedulerState = external_exports.object({
5079
5123
  config: zScheduler,
5080
5124
  cap: external_exports.number(),
5081
5125
  liveCount: external_exports.number(),
5082
5126
  sources: external_exports.array(zSchedulerSourceView),
5083
- queue: external_exports.array(zSchedulerQueueItem),
5127
+ queueCounts: zSchedulerQueueCounts,
5084
5128
  sessions: external_exports.array(zSchedulerSessionView)
5085
5129
  });
5086
5130
  zLeadDecisionView = external_exports.object({
@@ -5188,7 +5232,13 @@ var init_dto = __esm({
5188
5232
  title: external_exports.string(),
5189
5233
  live: external_exports.boolean(),
5190
5234
  projectId: external_exports.string(),
5191
- projectName: external_exports.string()
5235
+ projectName: external_exports.string(),
5236
+ // SPEC-520 · status TURUNAN dari backlog yang lahir dari PRD ini (ADR-0018/0019) — bukan
5237
+ // kolom, bukan prosa di dalam dokumennya. `live` di atas menjawab pertanyaan LAIN
5238
+ // (freshest-wins dari worktree sesi prd hidup) dan sengaja tetap ortogonal.
5239
+ status: zPrdStatus,
5240
+ specCount: external_exports.number().int().nonnegative(),
5241
+ doneCount: external_exports.number().int().nonnegative()
5192
5242
  });
5193
5243
  zBreakdownItem = external_exports.object({
5194
5244
  title: external_exports.string().min(1),
@@ -5233,9 +5283,10 @@ var init_dto = __esm({
5233
5283
  // pipeline claude). DIDAHULUKAN: z.object non-strict membuang key asing, jadi bila varian
5234
5284
  // longgar {project,flow?} lebih dulu, {project,shell:true} akan lolos sbg plain (shell dibuang).
5235
5285
  external_exports.object({ project: external_exports.string(), shell: external_exports.literal(true) }),
5236
- // flow opsional (SPEC-166): "reverse" = sesi project-level di worktree-nya sendiri,
5237
- // menyusun Source of Truth dari kode. Tanpa flow = terminal biasa (claude) di repoDir.
5238
- external_exports.object({ project: external_exports.string(), flow: external_exports.literal("reverse").optional() }),
5286
+ // SPEC-166 · "reverse" = sesi project-level di worktree-nya sendiri, menyusun Source of Truth
5287
+ // dari kode. TANPA override runtime: sesi project-level mengikuti Setting.agent (ADR-0074).
5288
+ // Terminal biasa (tanpa flow) kini punya variannya SENDIRI di bawah — lihat SPEC-517.
5289
+ external_exports.object({ project: external_exports.string(), flow: external_exports.literal("reverse") }),
5239
5290
  // SPEC-210 · sesi prd project-level di worktree sendiri; menghasilkan dokumen PRD dari brief.
5240
5291
  // SPEC-340 · ADR-0076 · eskalasi audit → PRD: branchFrom = branch audit (worktree lahir dari sana,
5241
5292
  // resolveCommit + fallback origin/<rev>), fromAudit = id spec audit (isi dokumennya disematkan ke
@@ -5252,6 +5303,18 @@ var init_dto = __esm({
5252
5303
  // SPEC-222 · scaffold: sesi project-level from-scratch, menyusun SoT dari ide. Tanpa brief
5253
5304
  // (diseed dari Project.desc), tanpa Spec — cermin reverse.
5254
5305
  external_exports.object({ project: external_exports.string(), flow: external_exports.literal("scaffold") }),
5306
+ // SPEC-517 · terminal agen biasa: agen (claude|codex) + model + effort boleh dipilih PER SESI,
5307
+ // seperti picker Start backlog (ADR-0061/0074). Kosong → default global (Setting).
5308
+ // `flow: z.undefined()` BUKAN hiasan: varian ini permisif dan diletakkan SESUDAH semua varian
5309
+ // ber-flow, jadi tanpa gerbang itu body flow yang CACAT ({project, flow:"prd"} tanpa brief)
5310
+ // akan lolos ke sini dan melahirkan terminal biasa secara senyap alih-alih dijawab 400.
5311
+ external_exports.object({
5312
+ project: external_exports.string(),
5313
+ flow: external_exports.undefined(),
5314
+ agent: zAgent.optional(),
5315
+ model: external_exports.string().optional(),
5316
+ effort: external_exports.string().optional()
5317
+ }),
5255
5318
  // SPEC-252 · ADR-0061 — model & effort per SESI: override opsional saat Start; kosong → global.
5256
5319
  // SPEC-332 · ADR-0073 — mode goal per SESI: `goal` undefined → ikut Setting.goal.enabled,
5257
5320
  // false → mati walau global nyala; `goalCondition` kosong → template global → default bawaan.
@@ -5501,6 +5564,12 @@ var init_api = __esm({
5501
5564
  // SPEC-299 · panel scheduler (daun #6) — konsumen read-only fondasi SPEC-294/ADR-0072.
5502
5565
  schedulerConfig: `${API}/scheduler/config`,
5503
5566
  schedulerState: `${API}/scheduler/state`,
5567
+ // SPEC-522 · ADR-0106 · batalkan / antre lagi SATU baris antrean. Di bawah prefix `scheduler`
5568
+ // supaya capability-nya turunan peta yang sudah ada (settings, MENURUT METHOD) — tanpa baris peta baru.
5569
+ schedulerQueueCancel: (id) => `${API}/scheduler/queue/${encodeURIComponent(id)}/cancel`,
5570
+ schedulerQueueRequeue: (id) => `${API}/scheduler/queue/${encodeURIComponent(id)}/requeue`,
5571
+ // SPEC-523 · antrean sebagai daftar berhalaman (page/limit + status), lepas dari `state`.
5572
+ schedulerQueue: `${API}/scheduler/queue`,
5504
5573
  // SPEC-409 · ADR-0091 · hanoman-lead. Semua HTTP (polling) — tak ada kanal WS baru (AC-26).
5505
5574
  leadConfig: `${API}/lead/config`,
5506
5575
  leadStatus: `${API}/lead/status`,
@@ -6907,6 +6976,7 @@ var init_src = __esm({
6907
6976
  init_api();
6908
6977
  init_coverage();
6909
6978
  init_ticket_status();
6979
+ init_prd_status();
6910
6980
  init_session_kind();
6911
6981
  init_config();
6912
6982
  init_config_registry();
@@ -6924,6 +6994,7 @@ var init_custom_agents = __esm({
6924
6994
  "../runner/src/custom-agents.ts"() {
6925
6995
  "use strict";
6926
6996
  init_src();
6997
+ init_code_style();
6927
6998
  }
6928
6999
  });
6929
7000
 
@@ -7006,6 +7077,7 @@ var init_src2 = __esm({
7006
7077
  init_agent_cli();
7007
7078
  init_custom_agents();
7008
7079
  init_verify_scope();
7080
+ init_code_style();
7009
7081
  init_paths();
7010
7082
  init_telegram_operator();
7011
7083
  }