hanoman 0.1.43 → 0.1.45

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.43",
3
- "sha": "1190b8b",
4
- "builtAt": "2026-08-17T03:00:04.111Z"
2
+ "version": "0.1.45",
3
+ "sha": "8badf76",
4
+ "builtAt": "2026-08-18T01:35:38.039Z"
5
5
  }
package/dist/cli.js CHANGED
@@ -4129,7 +4129,7 @@ var init_enums = __esm({
4129
4129
  "use strict";
4130
4130
  init_zod();
4131
4131
  zStage = external_exports.enum(["brainstorming", "objective", "spec-ready", "planned", "executing", "done"]);
4132
- zSpecSource = external_exports.enum(["brief", "qa", "audit", "help", "goal"]);
4132
+ zSpecSource = external_exports.enum(["brief", "qa", "audit", "help", "goal", "no_effort"]);
4133
4133
  zDocStatus = external_exports.enum(["ok", "drift", "broken"]);
4134
4134
  zPriority = external_exports.enum(["tinggi", "sedang", "rendah"]);
4135
4135
  zProjectKind = external_exports.enum(["from-scratch", "existing"]);
@@ -4144,7 +4144,7 @@ var init_enums = __esm({
4144
4144
 
4145
4145
  // ../shared/src/spec-source.ts
4146
4146
  function payloadShapeFor(source) {
4147
- return source === "qa" ? "qa" : source === "goal" ? "goal" : "brief";
4147
+ return source === "qa" ? "qa" : GOAL_SHAPED_SOURCES.has(source) ? "goal" : "brief";
4148
4148
  }
4149
4149
  function shapeOfPayload(payload) {
4150
4150
  const p = payload ?? {};
@@ -4153,10 +4153,12 @@ function shapeOfPayload(payload) {
4153
4153
  function payloadMatchesSource(source, payload) {
4154
4154
  return shapeOfPayload(payload) === payloadShapeFor(source);
4155
4155
  }
4156
+ var GOAL_SHAPED_SOURCES;
4156
4157
  var init_spec_source = __esm({
4157
4158
  "../shared/src/spec-source.ts"() {
4158
4159
  "use strict";
4159
4160
  init_enums();
4161
+ GOAL_SHAPED_SOURCES = /* @__PURE__ */ new Set(["goal", "no_effort"]);
4160
4162
  }
4161
4163
  });
4162
4164
 
@@ -4450,6 +4452,10 @@ var init_entities = __esm({
4450
4452
  expected: external_exports.string(),
4451
4453
  actual: external_exports.string(),
4452
4454
  env: external_exports.string(),
4455
+ // SPEC-826 · bentuk ketiga yang ikut punya batasan pengerjaan. `.default("")` bukan gaya:
4456
+ // payload qa yang SUDAH tersimpan tak punya field ini, dan `z.string()` polos membuat setiap
4457
+ // baris lama gagal validasi begitu ia lewat zSpec/zCreateSpec/zPatchSpec/zChangeSpecSource.
4458
+ constraints: external_exports.string().default(""),
4453
4459
  fromAudit: external_exports.string().optional()
4454
4460
  });
4455
4461
  zGoalPayload = external_exports.object({
@@ -5288,7 +5294,7 @@ var init_dto = __esm({
5288
5294
  capacity: external_exports.number()
5289
5295
  }).default({ inFlight: 0, queued: 0, capacity: 1 })
5290
5296
  });
5291
- zFlow = external_exports.enum(["feature", "qa", "scaffold", "reverse", "prd", "audit", "breakdown", "goal"]);
5297
+ zFlow = external_exports.enum(["feature", "qa", "scaffold", "reverse", "prd", "audit", "breakdown", "goal", "no_effort"]);
5292
5298
  zPrdBrief = external_exports.object({
5293
5299
  title: external_exports.string().min(1),
5294
5300
  context: external_exports.string(),
@@ -5650,6 +5656,9 @@ var init_api = __esm({
5650
5656
  ideCompare: (id, from, to) => `${API}/projects/${id}/compare?from=${encodeURIComponent(from)}&to=${encodeURIComponent(to)}`,
5651
5657
  ideCompareFile: (id, from, to, path) => `${API}/projects/${id}/compare/file?from=${encodeURIComponent(from)}&to=${encodeURIComponent(to)}&path=${encodeURIComponent(path)}`,
5652
5658
  ideGit: (id) => `${API}/projects/${id}/git`,
5659
+ // ADR-0121 · operasi berkas Explorer: satu path untuk buat/rename/hapus, satu untuk unggah.
5660
+ ideEntry: (id, path) => `${API}/projects/${id}/entry${path ? `?path=${encodeURIComponent(path)}` : ""}`,
5661
+ ideUpload: (id) => `${API}/projects/${id}/upload`,
5653
5662
  ideGitMerge: (id) => `${API}/projects/${id}/git/merge`,
5654
5663
  // SPEC-229 · merge git graph isolasi
5655
5664
  // SPEC-234 · status working tree (staged/unstaged) + diff satu file working tree
@@ -6545,12 +6554,13 @@ var init_mcp_schema = __esm({
6545
6554
  expected: str("Yang seharusnya terjadi."),
6546
6555
  actual: str("Yang sebenarnya terjadi. Dari sinilah `objective` backlog diturunkan server."),
6547
6556
  env: str("Lingkungan tempat temuan muncul: versi, browser, OS, instance."),
6557
+ constraints: str("Batasan yang mengikat pengerjaan: yang tak boleh berubah, yang wajib dipertahankan. Boleh string kosong \u2014 SENGAJA tak wajib (SPEC-826)."),
6548
6558
  fromAudit: str("Opsional. Id backlog audit asal (mis. `SPEC-371`).")
6549
6559
  },
6550
6560
  required: ["severity", "steps", "expected", "actual", "env"]
6551
6561
  });
6552
6562
  GOAL_PAYLOAD = obj({
6553
- description: "Bentuk payload untuk source `goal`. Sesi goal mengejar satu tujuan tanpa fase perencanaan (ADR-0089).",
6563
+ description: "Bentuk payload untuk source `goal` dan `no_effort`. Sesi goal mengejar satu tujuan tanpa fase perencanaan (ADR-0089); sesi no_effort mengerjakan satu task remeh dalam SATU fase lalu berhenti (ADR-0123).",
6554
6564
  properties: {
6555
6565
  goal: str("Satu tujuan yang dikejar sesi. Dari sinilah `objective` backlog diturunkan server."),
6556
6566
  done: str("Bukti berhenti yang dituntut. Kosong berarti goal itu sendiri buktinya."),
@@ -6560,12 +6570,12 @@ var init_mcp_schema = __esm({
6560
6570
  required: ["goal", "done", "constraints", "priority"]
6561
6571
  });
6562
6572
  SPEC_PAYLOAD_ONEOF = {
6563
- description: "Isi backlog. BENTUKNYA DITENTUKAN `source`: `qa` \u2192 {severity, steps, expected, actual, env}; `goal` \u2192 {goal, done, constraints, priority}; `brief`/`audit`/`help` \u2192 {context, outcome, constraints, priority}. Bentuk yang tak cocok ditolak sebelum dikirim.",
6573
+ description: "Isi backlog. BENTUKNYA DITENTUKAN `source`: `qa` \u2192 {severity, steps, expected, actual, env, constraints}; `goal`/`no_effort` \u2192 {goal, done, constraints, priority}; `brief`/`audit`/`help` \u2192 {context, outcome, constraints, priority}. `constraints` qa opsional (default string kosong); bentuk yang tak cocok ditolak sebelum dikirim.",
6564
6574
  oneOf: [BRIEF_PAYLOAD, QA_PAYLOAD, GOAL_PAYLOAD]
6565
6575
  };
6566
6576
  SOURCE_PAYLOAD_ALLOF = [
6567
6577
  { if: { properties: { source: { const: "qa" } }, required: ["source"] }, then: { properties: { payload: QA_PAYLOAD } } },
6568
- { if: { properties: { source: { const: "goal" } }, required: ["source"] }, then: { properties: { payload: GOAL_PAYLOAD } } },
6578
+ { if: { properties: { source: { enum: ["goal", "no_effort"] } }, required: ["source"] }, then: { properties: { payload: GOAL_PAYLOAD } } },
6569
6579
  { if: { properties: { source: { enum: ["brief", "audit", "help"] } }, required: ["source"] }, then: { properties: { payload: BRIEF_PAYLOAD } } }
6570
6580
  ];
6571
6581
  PAGE_PARAMS = {