@markusylisiurunen/tau 0.2.112 → 0.2.114

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.
@@ -203,7 +203,7 @@ const PERSONA_SPECS = [
203
203
  description: "GPT-5.5",
204
204
  provider: "openai",
205
205
  modelId: "gpt-5.5",
206
- allowedReasoningLevels: ["medium", "high", "xhigh"],
206
+ allowedReasoningLevels: ["low", "medium", "high", "xhigh"],
207
207
  settings: { reasoning: "medium" },
208
208
  skills: "*",
209
209
  },
@@ -230,7 +230,7 @@ const PERSONA_SPECS = [
230
230
  description: "GPT-5.5 (ChatGPT)",
231
231
  provider: "openai-codex",
232
232
  modelId: "gpt-5.5",
233
- allowedReasoningLevels: ["medium", "high", "xhigh"],
233
+ allowedReasoningLevels: ["low", "medium", "high", "xhigh"],
234
234
  settings: { reasoning: "medium" },
235
235
  skills: "*",
236
236
  },
@@ -257,7 +257,7 @@ const PERSONA_SPECS = [
257
257
  description: "GPT-5.5 Fast (ChatGPT)",
258
258
  provider: "openai-codex",
259
259
  modelId: "gpt-5.5",
260
- allowedReasoningLevels: ["medium", "high", "xhigh"],
260
+ allowedReasoningLevels: ["low", "medium", "high", "xhigh"],
261
261
  settings: { reasoning: "medium", serviceTier: "priority" },
262
262
  skills: "*",
263
263
  },
@@ -1 +1 @@
1
- {"version":3,"file":"personas.js","sourceRoot":"","sources":["../../src/core/personas.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"personas.js","sourceRoot":"","sources":["../../src/core/personas.ts"],"names":[],"mappings":"AAAA,OAAO,EAAsB,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACvE,OAAO,EAAE,qBAAqB,EAA0B,MAAM,sBAAsB,CAAC;AACrF,OAAO,EACL,cAAc,EACd,qBAAqB,EACrB,cAAc,EACd,6BAA6B,EAC7B,qBAAqB,EACrB,yBAAyB,EACzB,oBAAoB,EACpB,wBAAwB,EACxB,eAAe,GAChB,MAAM,uBAAuB,CAAC;AAG/B,MAAM,8BAA8B,GAAG;;;;;;CAMtC,CAAC,IAAI,EAAE,CAAC;AAET,MAAM,oBAAoB,GAAG;;;;;;CAM5B,CAAC,IAAI,EAAE,CAAC;AAET,MAAM,6BAA6B,GAAG;;;;;;;;;;;;;;CAcrC,CAAC,IAAI,EAAE,CAAC;AAET,MAAM,yBAAyB,GAAG;;;;;;;;;;CAUjC,CAAC,IAAI,EAAE,CAAC;AAET,MAAM,+BAA+B,GAAG;;;;;;;;;;CAUvC,CAAC,IAAI,EAAE,CAAC;AAET,MAAM,mBAAmB,GAAG;;;;;;;;CAQ3B,CAAC,IAAI,EAAE,CAAC;AAET,MAAM,0BAA0B,GAAG;;;;;;;;;;;;;CAalC,CAAC,IAAI,EAAE,CAAC;AAET,MAAM,oBAAoB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;CAwB5B,CAAC,IAAI,EAAE,CAAC;AAET,MAAM,sBAAsB,GAAG;;;;;;;;;;;;;;CAc9B,CAAC,IAAI,EAAE,CAAC;AAET,MAAM,yBAAyB,GAAG;;;;;;;;CAQjC,CAAC,IAAI,EAAE,CAAC;AAET,MAAM,qBAAqB,GAAG;;;;CAI7B,CAAC,IAAI,EAAE,CAAC;AAET,MAAM,iBAAiB,GAAG;;;;;;;;;CASzB,CAAC,IAAI,EAAE,CAAC;AAET,MAAM,mBAAmB,GAAG;IAC1B,8BAA8B;IAC9B,6BAA6B;IAC7B,yBAAyB;IACzB,iBAAiB;IACjB,mBAAmB;IACnB,0BAA0B;IAC1B,yBAAyB;IACzB,qBAAqB;CACtB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AAEf,MAAM,mBAAmB,GAAG;IAC1B,oBAAoB;IACpB,6BAA6B;IAC7B,+BAA+B;IAC/B,iBAAiB;IACjB,mBAAmB;IACnB,0BAA0B;IAC1B,oBAAoB;IACpB,sBAAsB;IACtB,yBAAyB;IACzB,qBAAqB;CACtB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AAYf,MAAM,aAAa,GAAkB;IACnC;QACE,EAAE,EAAE,UAAU;QACd,WAAW,EAAE,iBAAiB;QAC9B,QAAQ,EAAE,WAAW;QACrB,OAAO,EAAE,iBAAiB;QAC1B,sBAAsB,EAAE,CAAC,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,CAAC;QAC1D,QAAQ,EAAE,EAAE,SAAS,EAAE,QAAQ,EAAE;QACjC,MAAM,EAAE,GAAG;KACZ;IACD;QACE,EAAE,EAAE,UAAU;QACd,WAAW,EAAE,iBAAiB;QAC9B,QAAQ,EAAE,WAAW;QACrB,OAAO,EAAE,iBAAiB;QAC1B,sBAAsB,EAAE,CAAC,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,CAAC;QAC1D,QAAQ,EAAE,EAAE,SAAS,EAAE,QAAQ,EAAE;QACjC,MAAM,EAAE,GAAG;KACZ;IACD;QACE,EAAE,EAAE,eAAe;QACnB,WAAW,EAAE,eAAe;QAC5B,QAAQ,EAAE,QAAQ;QAClB,OAAO,EAAE,eAAe;QACxB,sBAAsB,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,CAAC;QACnD,QAAQ,EAAE,EAAE,SAAS,EAAE,QAAQ,EAAE;QACjC,MAAM,EAAE,GAAG;KACZ;IACD;QACE,EAAE,EAAE,SAAS;QACb,WAAW,EAAE,SAAS;QACtB,QAAQ,EAAE,QAAQ;QAClB,OAAO,EAAE,SAAS;QAClB,sBAAsB,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,CAAC;QACnD,QAAQ,EAAE,EAAE,SAAS,EAAE,QAAQ,EAAE;QACjC,MAAM,EAAE,GAAG;KACZ;IACD;QACE,EAAE,EAAE,SAAS;QACb,WAAW,EAAE,SAAS;QACtB,QAAQ,EAAE,QAAQ;QAClB,OAAO,EAAE,SAAS;QAClB,sBAAsB,EAAE,CAAC,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,CAAC;QAC1D,QAAQ,EAAE,EAAE,SAAS,EAAE,QAAQ,EAAE;QACjC,MAAM,EAAE,GAAG;KACZ;IACD;QACE,EAAE,EAAE,uBAAuB;QAC3B,WAAW,EAAE,yBAAyB;QACtC,QAAQ,EAAE,cAAc;QACxB,OAAO,EAAE,eAAe;QACxB,sBAAsB,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,CAAC;QACnD,QAAQ,EAAE,EAAE,SAAS,EAAE,QAAQ,EAAE;QACjC,MAAM,EAAE,GAAG;KACZ;IACD;QACE,EAAE,EAAE,iBAAiB;QACrB,WAAW,EAAE,mBAAmB;QAChC,QAAQ,EAAE,cAAc;QACxB,OAAO,EAAE,SAAS;QAClB,sBAAsB,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,CAAC;QACnD,QAAQ,EAAE,EAAE,SAAS,EAAE,QAAQ,EAAE;QACjC,MAAM,EAAE,GAAG;KACZ;IACD;QACE,EAAE,EAAE,iBAAiB;QACrB,WAAW,EAAE,mBAAmB;QAChC,QAAQ,EAAE,cAAc;QACxB,OAAO,EAAE,SAAS;QAClB,sBAAsB,EAAE,CAAC,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,CAAC;QAC1D,QAAQ,EAAE,EAAE,SAAS,EAAE,QAAQ,EAAE;QACjC,MAAM,EAAE,GAAG;KACZ;IACD;QACE,EAAE,EAAE,4BAA4B;QAChC,WAAW,EAAE,8BAA8B;QAC3C,QAAQ,EAAE,cAAc;QACxB,OAAO,EAAE,eAAe;QACxB,sBAAsB,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,CAAC;QACnD,QAAQ,EAAE,EAAE,SAAS,EAAE,QAAQ,EAAE,WAAW,EAAE,UAAU,EAAE;QAC1D,MAAM,EAAE,GAAG;KACZ;IACD;QACE,EAAE,EAAE,sBAAsB;QAC1B,WAAW,EAAE,wBAAwB;QACrC,QAAQ,EAAE,cAAc;QACxB,OAAO,EAAE,SAAS;QAClB,sBAAsB,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,CAAC;QACnD,QAAQ,EAAE,EAAE,SAAS,EAAE,QAAQ,EAAE,WAAW,EAAE,UAAU,EAAE;QAC1D,MAAM,EAAE,GAAG;KACZ;IACD;QACE,EAAE,EAAE,sBAAsB;QAC1B,WAAW,EAAE,wBAAwB;QACrC,QAAQ,EAAE,cAAc;QACxB,OAAO,EAAE,SAAS;QAClB,sBAAsB,EAAE,CAAC,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,CAAC;QAC1D,QAAQ,EAAE,EAAE,SAAS,EAAE,QAAQ,EAAE,WAAW,EAAE,UAAU,EAAE;QAC1D,MAAM,EAAE,GAAG;KACZ;IACD;QACE,EAAE,EAAE,gBAAgB;QACpB,WAAW,EAAE,gBAAgB;QAC7B,QAAQ,EAAE,QAAQ;QAClB,OAAO,EAAE,wBAAwB;QACjC,sBAAsB,EAAE,CAAC,KAAK,EAAE,QAAQ,EAAE,MAAM,CAAC;QACjD,QAAQ,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE;QAC9B,MAAM,EAAE,GAAG;KACZ;IACD;QACE,EAAE,EAAE,gBAAgB;QACpB,WAAW,EAAE,gBAAgB;QAC7B,QAAQ,EAAE,QAAQ;QAClB,OAAO,EAAE,wBAAwB;QACjC,sBAAsB,EAAE,CAAC,KAAK,EAAE,QAAQ,EAAE,MAAM,CAAC;QACjD,QAAQ,EAAE,EAAE,SAAS,EAAE,QAAQ,EAAE;QACjC,MAAM,EAAE,GAAG;KACZ;CACF,CAAC;AAEF,MAAM,CAAC,MAAM,0BAA0B,GAAG,eAAe,CAAC;AAI1D,MAAM,cAAc,GAA8D;IAChF,IAAI,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,YAAY,EAAE,mBAAmB,EAAE;IAC5D,KAAK,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,YAAY,EAAE,mBAAmB,EAAE;CAC/D,CAAC;AAEF,MAAM,UAAU,GAAkC;IAChD,cAAc;IACd,eAAe;IACf,cAAc;IACd,oBAAoB;IACpB,qBAAqB;CACtB,CAAC;AACF,MAAM,cAAc,GAAkC;IACpD,qBAAqB;IACrB,6BAA6B;IAC7B,wBAAwB;IACxB,yBAAyB;CAC1B,CAAC;AAEF,SAAS,YAAY,CAAC,IAAiB,EAAE,OAAgB,EAAE,aAA4B;IACrF,MAAM,KAAK,GAAG,aAAa,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;IACzD,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,MAAM,IAAI,KAAK,CAAC,4BAA4B,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,OAAO,GAAG,CAAC,CAAC;IAChF,CAAC;IAED,MAAM,MAAM,GAAG,cAAc,CAAC,OAAO,CAAC,CAAC;IACvC,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;IAC3B,MAAM,QAAQ,GAAG,eAAe,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAChD,MAAM,SAAS,GAAsB;QACnC,CAAC,qBAAqB,CAAC,EAAE,EAAE;KAC5B,CAAC;IAEF,MAAM,KAAK,GAAG,CAAC,GAAG,UAAU,EAAE,GAAG,cAAc,CAAC,CAAC;IAEjD,OAAO;QACL,EAAE,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,MAAM,CAAC,MAAM,EAAE;QAChC,KAAK,EAAE,GAAG,IAAI,CAAC,EAAE,IAAI,OAAO,EAAE;QAC9B,WAAW,EAAE,GAAG,IAAI,CAAC,WAAW,IAAI,OAAO,EAAE;QAC7C,KAAK;QACL,YAAY,EAAE,MAAM,CAAC,YAAY;QACjC,sBAAsB,EAAE,IAAI,CAAC,sBAAsB;QACnD,QAAQ;QACR,MAAM;QACN,SAAS;QACT,KAAK;QACL,MAAM,EAAE,SAAS;KAClB,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,qBAAqB,CAAC,gBAA+B,YAAY;IAC/E,OAAO,aAAa,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE;QACpC,IAAI,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC;YAChC,MAAM,YAAY,GAAG,YAAY,CAAC,IAAI,EAAE,OAAO,EAAE,aAAa,CAAC,CAAC;YAChE,OAAO;gBACL;oBACE,GAAG,YAAY;oBACf,EAAE,EAAE,IAAI,CAAC,EAAE;oBACX,KAAK,EAAE,IAAI,CAAC,EAAE;oBACd,WAAW,EAAE,IAAI,CAAC,WAAW;iBAC9B;aACF,CAAC;QACJ,CAAC;QAED,IAAI,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;YAClC,OAAO,CAAC,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,aAAa,CAAC,CAAC,CAAC;QACrD,CAAC;QAED,OAAO,CAAC,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,aAAa,CAAC,EAAE,YAAY,CAAC,IAAI,EAAE,OAAO,EAAE,aAAa,CAAC,CAAC,CAAC;IACjG,CAAC,CAAC,CAAC;AACL,CAAC;AAED,MAAM,CAAC,MAAM,QAAQ,GAAc,qBAAqB,EAAE,CAAC;AAE3D,MAAM,UAAU,cAAc,CAAC,EAAU;IACvC,OAAO,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;AAC3C,CAAC"}
@@ -1,5 +1,5 @@
1
1
  import { isContextOverflow } from "@earendil-works/pi-ai";
2
- const RETRYABLE_ERROR_REGEX = /overloaded|provider.?returned.?error|high.?demand|peak.?load|maximum.?usage.?size|provisioned.?throughput|rate.?limit|too many requests|429|500|502|503|504|service.?unavailable|server.?error|internal.?error|network.?error|connection.?error|connection.?refused|connection.?lost|websocket.?error|other side closed|fetch failed|upstream.?connect|reset before headers|socket hang up|ended without|http2 request did not get a response|timed? out|timeout|terminated|retry delay/i;
2
+ const RETRYABLE_ERROR_REGEX = /overloaded|provider.?returned.?error|high.?demand|peak.?load|maximum.?usage.?size|provisioned.?throughput|rate.?limit|too many requests|429|500|502|503|504|service.?unavailable|server.?error|internal.?error|network.?error|connection.?error|connection.?refused|connection.?lost|websocket.?closed|websocket.?error|other side closed|fetch failed|upstream.?connect|reset before headers|socket hang up|ended without|http2 request did not get a response|timed? out|timeout|terminated|retry delay/i;
3
3
  function asAssistantMessage(error) {
4
4
  if (!error || typeof error !== "object") {
5
5
  return undefined;
@@ -1 +1 @@
1
- {"version":3,"file":"auto_retry.js","sourceRoot":"","sources":["../../../src/core/utils/auto_retry.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAO1D,MAAM,qBAAqB,GACzB,0dAA0d,CAAC;AAE7d,SAAS,kBAAkB,CAAC,KAAc;IACxC,IAAI,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QACxC,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,MAAM,OAAO,GAAG,KAAkC,CAAC;IACnD,IAAI,OAAO,CAAC,IAAI,KAAK,WAAW,IAAI,OAAO,CAAC,UAAU,KAAK,OAAO,EAAE,CAAC;QACnE,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,IAAI,OAAO,OAAO,CAAC,UAAU,KAAK,QAAQ,EAAE,CAAC;QAC3C,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,OAAO,OAA2B,CAAC;AACrC,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,EAAE,KAAK,EAAE,KAAK,EAAoB;IAChE,MAAM,OAAO,GAAG,kBAAkB,CAAC,KAAK,CAAC,CAAC;IAC1C,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,OAAO,KAAK,CAAC;IACf,CAAC;IAED,IAAI,OAAO,CAAC,UAAU,KAAK,OAAO,IAAI,CAAC,OAAO,CAAC,YAAY,EAAE,CAAC;QAC5D,OAAO,KAAK,CAAC;IACf,CAAC;IAED,IAAI,iBAAiB,CAAC,OAAO,EAAE,KAAK,CAAC,aAAa,CAAC,EAAE,CAAC;QACpD,OAAO,KAAK,CAAC;IACf,CAAC;IAED,OAAO,qBAAqB,CAAC,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;AAC1D,CAAC"}
1
+ {"version":3,"file":"auto_retry.js","sourceRoot":"","sources":["../../../src/core/utils/auto_retry.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAO1D,MAAM,qBAAqB,GACzB,4eAA4e,CAAC;AAE/e,SAAS,kBAAkB,CAAC,KAAc;IACxC,IAAI,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QACxC,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,MAAM,OAAO,GAAG,KAAkC,CAAC;IACnD,IAAI,OAAO,CAAC,IAAI,KAAK,WAAW,IAAI,OAAO,CAAC,UAAU,KAAK,OAAO,EAAE,CAAC;QACnE,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,IAAI,OAAO,OAAO,CAAC,UAAU,KAAK,QAAQ,EAAE,CAAC;QAC3C,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,OAAO,OAA2B,CAAC;AACrC,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,EAAE,KAAK,EAAE,KAAK,EAAoB;IAChE,MAAM,OAAO,GAAG,kBAAkB,CAAC,KAAK,CAAC,CAAC;IAC1C,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,OAAO,KAAK,CAAC;IACf,CAAC;IAED,IAAI,OAAO,CAAC,UAAU,KAAK,OAAO,IAAI,CAAC,OAAO,CAAC,YAAY,EAAE,CAAC;QAC5D,OAAO,KAAK,CAAC;IACf,CAAC;IAED,IAAI,iBAAiB,CAAC,OAAO,EAAE,KAAK,CAAC,aAAa,CAAC,EAAE,CAAC;QACpD,OAAO,KAAK,CAAC;IACf,CAAC;IAED,OAAO,qBAAqB,CAAC,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;AAC1D,CAAC"}
@@ -1,2 +1,2 @@
1
- export const APP_VERSION = "0.2.112";
1
+ export const APP_VERSION = "0.2.114";
2
2
  //# sourceMappingURL=version.js.map
@@ -1 +1 @@
1
- *,:after,:before{box-sizing:border-box}html{font-family:system-ui,Segoe UI,Roboto,Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji";line-height:1.15;-webkit-text-size-adjust:100%;tab-size:4}body{margin:0}b,strong{font-weight:bolder}code,kbd,pre,samp{font-family:ui-monospace,SFMono-Regular,Consolas,Liberation Mono,Menlo,monospace;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{border-color:currentcolor}button,input,optgroup,select,textarea{font-family:inherit;font-size:100%;line-height:1.15;margin:0}[type=button],[type=reset],[type=submit],button{-webkit-appearance:button}legend{padding:0}progress{vertical-align:baseline}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}.btn{display:inline-flex;align-items:center;gap:5px;border:1px solid var(--border);background:var(--surface);color:var(--text);border-radius:0;padding:4px 10px;font-size:var(--font-size-ui);cursor:pointer;white-space:nowrap}.btn:hover{background:var(--surface-hover)}.btn:disabled{opacity:.35;cursor:not-allowed}.btn.primary{background:var(--accent-primary);color:var(--text-inverse);border-color:transparent;font-weight:500}.btn.primary:hover{background:var(--accent-primary-hover)}.btn.ghost{background:transparent;border-color:transparent;color:var(--text-muted)}.btn.ghost:hover{background:var(--surface-hover);color:var(--text)}.btn-group{display:inline-flex;align-items:center;gap:2px}.icon-btn{align-items:center;aspect-ratio:1;background:transparent;border-radius:0;border:1px solid transparent;color:var(--text-muted);cursor:pointer;display:inline-flex;height:28px;justify-content:center;width:28px}.icon-btn:hover{background:var(--surface-hover);color:var(--text)}.icon-btn.active{background:var(--surface-hover);border-color:var(--border);color:var(--text)}.icon-btn.ghost{color:var(--text-muted)}.icon-btn.ghost:hover{color:var(--text)}.text-input-area{display:block;width:100%;border:1px solid var(--border);border-radius:0;background:var(--bg);color:var(--text);font:inherit;padding:6px 8px}.text-input-area:focus{outline:none;border-color:var(--border-focus)}@font-face{font-family:JetBrains Mono;font-weight:400;font-style:normal;font-display:swap;src:url(/fonts/JetBrainsMono-Regular.woff2) format("woff2")}@font-face{font-family:JetBrains Mono;font-weight:500;font-style:normal;font-display:swap;src:url(/fonts/JetBrainsMono-Medium.woff2) format("woff2")}@font-face{font-family:JetBrains Mono;font-weight:600;font-style:normal;font-display:swap;src:url(/fonts/JetBrainsMono-SemiBold.woff2) format("woff2")}@font-face{font-family:JetBrains Mono;font-weight:700;font-style:normal;font-display:swap;src:url(/fonts/JetBrainsMono-Bold.woff2) format("woff2")}@font-face{font-family:JetBrains Mono;font-weight:400;font-style:italic;font-display:swap;src:url(/fonts/JetBrainsMono-Italic.woff2) format("woff2")}:root{color-scheme:dark;--bg: hsl(0 0% 5.2%);--surface: hsl(0 0% 6.8%);--surface-hover: hsl(0 0% 9.6%);--border: hsl(0 0% 14%);--border-focus: hsl(0 0% 24%);--text: hsl(0 0% 86%);--text-muted: hsl(0 0% 48%);--accent-add: hsl(142 70% 62%);--accent-del: hsl(0 91% 68%);--accent-del-muted: hsl(0 91% 71% / .72);--accent-del-subtle: hsl(0 91% 71% / .08);--accent-del-subtle-hover: hsl(0 91% 71% / .14);--accent-primary: hsl(0 0% 88%);--text-inverse: hsl(0 0% 3.6%);--accent-primary-hover: hsl(0 0% 94%);--thread-border-muted: hsl(0 0% 84% / .15);--thread-border-strong: hsl(0 0% 84% / .2);--thread-border-subtle: hsl(0 0% 84% / .08);--thread-surface-subtle: hsl(0 0% 100% / .02);--code-inline-bg: hsl(142 68% 56% / .07);--code-inline-text: hsl(142 74% 68%);--bar-height: 48px;--sidebar-width-narrow: 300px;--sidebar-width-wide: 480px;--sidebar-width: var(--sidebar-width-narrow);--content-padding-x: 12px;--file-gap: 1rem;--font-size-ui: 1rem;--font-size-lg: 1.071429rem;--font-size-sm: .928571rem;--font-size-xs: .857143rem;--font-size-code: .928571rem;--font-weight-ui: 400;--font-weight-code: 400;--letter-spacing-ui: 0;--letter-spacing-code: 0;--font-family-ui: system-ui, sans-serif;--font-family-code: "JetBrains Mono", monospace;--diffs-font-family: var(--font-family-code);--diffs-line-height: 1.75;font-family:var(--font-family-ui);font-size:14px;font-weight:var(--font-weight-ui);letter-spacing:var(--letter-spacing-ui);line-height:1.5}*,*:before,*:after{box-sizing:border-box;margin:0}body{background:var(--bg);color:var(--text);min-height:100vh}button,input,textarea{color:inherit;font:inherit}.app{min-height:100vh}.app.sidebar-wide{--sidebar-width: var(--sidebar-width-wide)}.content{min-height:calc(100vh - var(--bar-height));padding:var(--content-padding-x)}.app.sidebar-open .content{margin-left:var(--sidebar-width)}.empty{color:var(--text-muted);padding:32px 16px}.diff-stats{display:inline-flex;align-items:center;gap:6px}.stat-add{color:var(--accent-add)}.stat-del{color:var(--accent-del)}.brief-dialog-body-wrap{display:block;flex:1 1 auto;min-height:0;overflow:auto}.brief-dialog-empty{color:var(--text-muted);font-size:16px;padding:1rem}.brief-dialog-body{font-size:16px;padding:1rem}.dialog-backdrop{align-items:flex-start;background:#000c;display:flex;inset:0;justify-content:center;padding-block:40px 20px;padding-inline:20px;position:fixed;z-index:40}.dialog{background:var(--surface);border:1px solid var(--border);display:flex;flex-direction:column;max-height:calc(100vh - 60px);min-height:0;overflow:hidden;width:min(760px,100%)}.dialog-header{align-items:center;background:var(--bg);border-bottom:1px solid var(--border);display:flex;gap:8px;justify-content:space-between;padding:1rem;position:sticky;top:0;z-index:1}.dialog-heading{min-width:0}.dialog-title{color:var(--text);font-size:16px}.dialog-actions{flex-shrink:0}.dialog-close{height:24px;padding:0;width:24px}.dialog-body-wrap{display:flex;flex-direction:column;flex:1 1 auto;min-height:0;overflow:auto}.markdown-content{--markdown-code-block-border-color: hsl(0 0% 12%);--markdown-code-block-font-size: calc(14 / 15 * 1rem);--markdown-code-block-margin-block: 1em;--markdown-code-block-padding: 8px 10px;--markdown-heading-letter-spacing: -.01em;--markdown-heading-margin-block: 1em .75em;--markdown-heading-size: 1.2em;--markdown-heading-weight: 650;--markdown-inline-code-font-size: .9375em;--markdown-inline-code-padding-x: 5px;--markdown-inline-code-padding-y: 1px;--markdown-list-item-gap: .125em;--markdown-list-margin-block: 1em;--markdown-list-nested-gap: .25em;--markdown-list-padding: 1.5em;--markdown-paragraph-margin-block: 1em;--markdown-prose-color: hsl(0 0% 76%);--markdown-blockquote-color: hsl(0 0% 66%);max-width:100%;min-width:0;overflow-wrap:anywhere;white-space:normal;width:100%}.markdown-content>:first-child{margin-block-start:0!important}.markdown-content>:last-child{margin-block-end:0!important}.markdown-content :where(h1,h2,h3,h4,h5,h6){color:var(--text);font-size:var(--markdown-heading-size);font-weight:var(--markdown-heading-weight);letter-spacing:var(--markdown-heading-letter-spacing);line-height:1.2;margin-block:var(--markdown-heading-margin-block)}.markdown-content p{margin-block:var(--markdown-paragraph-margin-block)}.markdown-content p,.markdown-content li{color:var(--markdown-prose-color)}.markdown-content code{background:var(--code-inline-bg);color:var(--code-inline-text);font-family:var(--font-family-code);font-size:var(--markdown-inline-code-font-size);font-weight:var(--font-weight-code);letter-spacing:var(--letter-spacing-code);padding-block:var(--markdown-inline-code-padding-y);padding-inline:var(--markdown-inline-code-padding-x)}.markdown-content pre{background:var(--bg)!important;border:1px solid var(--markdown-code-block-border-color);box-sizing:border-box;contain:inline-size;margin-block:var(--markdown-code-block-margin-block);max-width:100%;min-width:0;overflow-x:auto;padding:var(--markdown-code-block-padding);white-space:pre}.markdown-content pre code{background:none;color:var(--text-muted);display:block;font-size:var(--markdown-code-block-font-size);max-width:100%;min-width:0;padding:0;white-space:inherit}.markdown-content ul,.markdown-content ol{margin-block:var(--markdown-list-margin-block);padding-left:var(--markdown-list-padding)}.markdown-content :where(h1,h2,h3,h4,h5,h6)+ul,.markdown-content :where(h1,h2,h3,h4,h5,h6)+ol{margin-block-start:0}.markdown-content ul{list-style:disc}.markdown-content ol{list-style:decimal}.markdown-content li+li{margin-top:var(--markdown-list-item-gap)}.markdown-content li::marker{color:var(--text-muted)}.markdown-content li>p{margin:0}.markdown-content li>p+p{margin-top:var(--markdown-list-nested-gap)}.markdown-content li>ul,.markdown-content li>ol{margin-block:var(--markdown-list-nested-gap) 0}.markdown-content blockquote{border-inline-start:2px solid var(--text-muted);color:var(--markdown-blockquote-color);padding-inline-start:.75em}.markdown-content strong{color:var(--text);font-weight:600}.markdown-content hr{border-bottom:0;border-inline:0;border-top:1px solid var(--thread-border-subtle);margin:1.5em 0}.markdown-content a{color:var(--text);text-decoration:underline;text-underline-offset:2px}.checkbox-btn{align-items:center;color:var(--text-muted);cursor:pointer;display:inline-flex;font-size:var(--font-size-xs);gap:6px;padding:4px 0;position:relative;white-space:nowrap}.checkbox-btn:hover{color:var(--text)}.checkbox-input{inset:0;opacity:0;position:absolute}.checkbox-box{align-items:center;background:transparent;border-radius:0;border:1px solid var(--text-muted);color:var(--text-inverse);display:inline-flex;flex:0 0 14px;height:14px;justify-content:center;width:14px}.checkbox-btn:hover .checkbox-box{border-color:var(--text)}.checkbox-input:focus-visible+.checkbox-box{border-color:var(--border-focus)}.checkbox-input:checked+.checkbox-box{background:var(--accent-add);border-color:var(--accent-add);color:var(--text-inverse)}.detached-thread-dialog-body-wrap{display:flex;flex:1 1 auto;font-size:15px;min-height:0;overflow:hidden}.detached-thread-dialog-layout{display:flex;flex:1 1 auto;min-height:0;flex-direction:column}.detached-thread-dialog-messages{flex:1 1 auto;min-height:0;overflow:auto}.detached-thread-dialog-message{padding:1rem}.detached-thread-dialog-message+.detached-thread-dialog-message{border-top:1px solid var(--border)}.detached-thread-dialog-message-assistant{background:#84ebaa05}.detached-thread-dialog-role{color:var(--text);display:inline-block;font-weight:600;margin-bottom:.5rem}.detached-thread-dialog-thinking{color:var(--text-muted);display:block}.detached-thread-dialog-composer{background:var(--bg);border-top:1px solid var(--border);flex:0 0 auto;padding:1rem}.detached-thread-dialog-composer .btn,.detached-thread-dialog-composer .checkbox-btn{font-size:15px}.detached-thread-dialog-input{min-height:96px;resize:vertical}.detached-thread-dialog-actions{align-items:center;display:flex;gap:8px;justify-content:flex-end;margin-top:.5rem}.detached-thread-dialog-secondary{border-color:var(--thread-border-subtle);background:transparent;color:var(--text-muted)}.detached-thread-dialog-secondary:hover{border-color:var(--border);background:var(--surface-hover);color:var(--text)}.comment-editor{margin:6px 10px 8px;padding:8px 10px 8px 12px;border-radius:0;border:1px solid var(--border);border-left:2px solid var(--thread-border-muted);background:var(--surface);box-sizing:border-box;font-size:var(--font-size-ui);max-width:800px}.comment-input{min-height:56px;font-size:var(--font-size-ui);resize:vertical}.comment-actions{display:flex;gap:4px;justify-content:flex-end;margin-top:6px}.thread-card{background:var(--surface);border:1px solid var(--border);font-size:var(--font-size-lg);margin:.5rem;max-width:800px}.thread-card.resolved{border-color:var(--thread-border-strong)}.thread-header-row,.thread-collapsed-row{font-size:var(--font-size-sm);padding-block:.5rem;padding-inline:1rem}.thread-toggle{align-items:center;appearance:none;background:transparent;border:none;color:var(--text-muted);cursor:pointer;display:inline-flex;gap:.25rem;margin-block:0;margin-inline:-.5rem;padding-block:.25rem;padding-inline:.5rem;text-align:left}.thread-toggle:hover{color:var(--text)}.thread-msg{padding-block:1rem;padding-inline:1rem}.thread-messages>:first-child{padding-block-start:0;padding-inline:1rem}.thread-msg+.thread-msg{border-top:1px solid var(--border)}.thread-msg-assistant{background:#84ebaa05}.thread-msg-role{color:var(--text);display:inline-block;font-weight:600;margin-block-end:.5rem}.thread-msg-thinking{color:var(--text-muted);display:block}.thread-msg-actions{margin-block-start:.75rem}.thread-footer{background:var(--bg);border-block-start:1px solid var(--border);padding-block:.75rem;padding-inline:1rem}.thread-reply-input{min-height:calc(4.5em + 1.5rem);padding:.75rem;resize:vertical}.thread-actions{align-items:center;display:flex;flex-wrap:wrap;gap:.25rem;justify-content:flex-end}.thread-reply-input+.thread-actions{margin-block-start:.75rem}.file-section{border:1px solid var(--border);border-radius:0;background:var(--surface);scroll-margin-top:calc(var(--bar-height) + var(--file-gap))}.file-section+.file-section{margin-top:var(--file-gap)}.file-header{position:sticky;top:var(--bar-height);z-index:10;display:flex;align-items:center;justify-content:space-between;gap:12px;padding:0 var(--content-padding-x);height:36px;background:var(--surface);border-bottom:1px solid var(--border)}.file-header:hover{background:var(--surface-hover)}.file-section.collapsed .file-header{border-bottom:none}.file-toggle{display:flex;align-items:center;gap:4px;border:none;background:transparent;color:var(--text-muted);cursor:pointer;min-width:0;padding:0}.file-toggle:hover{color:var(--text)}.file-path{font-size:var(--font-size-ui);color:var(--text);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.file-thread-count{align-items:center;color:var(--text-muted);display:inline-flex;flex-shrink:0;font-size:var(--font-size-xs);gap:4px;margin-left:4px}.file-meta{display:flex;align-items:center;gap:10px;flex-shrink:0;font-size:var(--font-size-ui)}.viewed-checkbox{font-size:var(--font-size-xs)}.file-body{background:var(--bg);border-bottom-left-radius:8px;border-bottom-right-radius:8px}.diff-view{display:block;width:100%;font-size:var(--font-size-code);font-weight:var(--font-weight-code);letter-spacing:var(--letter-spacing-code)}.sidebar{background:var(--surface);border-right:1px solid var(--border);bottom:0;display:flex;flex-direction:column;gap:12px;left:0;overflow-y:auto;padding-block:12px;position:fixed;top:var(--bar-height);transform:translate(-100%);width:var(--sidebar-width);z-index:15}.sidebar.open{transform:translate(0)}.sidebar-width-toggle{background:transparent;border:none;bottom:0;cursor:pointer;padding:0;position:absolute;right:-3px;top:0;width:5px}.sidebar-width-toggle:before{background:transparent;bottom:0;content:"";left:2px;position:absolute;top:0;transition:background-color .12s ease,box-shadow .12s ease;width:1px}.sidebar-width-toggle:hover:before,.sidebar-width-toggle:focus-visible:before{background:var(--border-focus);box-shadow:0 0 0 1px #ffffff05}.sidebar-width-toggle:focus-visible{outline:none}.sidebar-section{display:flex;flex-direction:column;gap:8px}.sidebar-section-header{align-items:center;display:flex;gap:8px;justify-content:space-between;padding-inline:12px}.sidebar-section-title{color:var(--text);font-size:var(--font-size-sm);font-weight:500}.sidebar-action{min-height:28px;padding:0 8px}.sidebar-conversations,.sidebar-file-list{display:flex;flex-direction:column;gap:4px}.sidebar-divider{background:var(--border);height:1px}.sidebar-empty{color:var(--text-muted);font-size:var(--font-size-sm);padding-inline:12px}.sidebar-thread-item{background:transparent;border:none;color:var(--text);cursor:pointer;display:block;padding-block:6px;padding-inline:12px;text-align:left;width:100%}.sidebar-thread-item:hover,.sidebar-thread-item.selected{background:var(--surface-hover)}.sidebar-thread-item.resolved{opacity:.4}.sidebar-thread-row{align-items:center;display:flex;gap:8px;justify-content:space-between;width:100%}.sidebar-thread-name{color:var(--text);display:block;flex:1 1 auto;font-size:var(--font-size-ui);min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.sidebar-thread-status-dot{background:var(--text-muted);border-radius:999px;flex:0 0 6px;height:6px;width:6px}.sidebar-thread-status-dot.active{background:var(--accent-add)}.sidebar-item{background:transparent;border:none;color:var(--text);cursor:pointer;display:block;font-size:var(--font-size-ui);padding-block:6px;padding-inline:12px;text-align:left;width:100%}.sidebar-row{align-items:center;display:flex;gap:8px;justify-content:space-between;width:100%}.sidebar-item:hover{background:var(--surface-hover)}.sidebar-item.viewed{opacity:.4}.sidebar-path{display:block;flex:1 1 auto;min-width:0;overflow:hidden;white-space:nowrap}.sidebar-stats{display:flex;flex-shrink:0;font-size:var(--font-size-xs);gap:4px}.top-bar{position:sticky;top:0;z-index:20;display:flex;align-items:center;justify-content:space-between;height:var(--bar-height);padding:0 12px;background:var(--surface);border-bottom:1px solid var(--border)}.top-bar-left,.top-bar-right{display:flex;align-items:center;gap:10px;min-width:0}.top-bar-left{flex:1 1 auto;gap:12px;overflow:hidden}.top-bar-meta{color:var(--text-muted);font-size:var(--font-size-sm)}.top-bar-meta-dim{opacity:.5}.top-bar-status{font-size:var(--font-size-xs)}.top-bar-brief-action{min-height:26px;padding:0 8px;border-color:var(--thread-border-subtle);background:transparent;color:var(--text)}.top-bar-brief-action:hover{background:var(--surface-hover)}.top-bar-diff-meta{display:inline-flex;align-items:center;gap:8px;min-width:0;overflow:hidden;font-size:var(--font-size-sm)}.top-bar-diff-command{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;opacity:.4}.top-bar-viewed{display:inline-flex;align-items:center;gap:8px;color:var(--text-muted);font-size:var(--font-size-sm);white-space:nowrap;margin-right:2px}.top-bar-viewed-ring{display:inline-flex;align-items:center;justify-content:center;width:16px;height:16px;border-radius:999px;flex:0 0 16px}.top-bar-viewed-ring-inner{display:block;width:10px;height:10px;border-radius:999px;background:var(--surface)}.top-bar-viewed-text{color:var(--text-muted)}.top-bar-toggle{display:inline-flex;align-items:center;gap:7px;border:none;background:transparent;color:var(--text-muted);font-size:var(--font-size-xs);cursor:pointer;padding:2px 0;white-space:nowrap}.top-bar-toggle:hover{color:var(--text)}.top-bar-toggle-switch{display:inline-flex;align-items:center;width:24px;height:14px;padding:1px;border:1px solid var(--border);border-radius:0;background:var(--surface-hover)}.top-bar-toggle-thumb{display:block;width:10px;height:10px;border-radius:0;background:var(--text-muted)}.top-bar-toggle.active{color:var(--text)}.top-bar-toggle.active .top-bar-toggle-switch{background:var(--accent-add);border-color:var(--accent-add)}.top-bar-toggle.active .top-bar-toggle-thumb{transform:translate(10px);background:var(--text-inverse)}.top-bar-action{gap:6px;min-height:28px;padding:0 10px;border:1px solid var(--border);background:var(--surface);font-size:var(--font-size-ui)}.top-bar-action:hover{background:var(--surface-hover)}.top-bar-action-primary{color:var(--text-inverse);border-color:var(--accent-primary);background:var(--accent-primary);font-weight:500}.top-bar-action-primary:hover{color:var(--text-inverse);background:var(--accent-primary-hover)}.top-bar-action-cancel{justify-content:center;min-width:28px;padding:0;color:var(--accent-del-muted);border-color:transparent;background:var(--accent-del-subtle)}.top-bar-action-cancel:hover{color:var(--accent-del);border-color:transparent;background:var(--accent-del-subtle-hover)}.toggle-group{display:inline-flex;border:1px solid var(--border);border-radius:0;overflow:hidden}.toggle-group-item{border:none;background:transparent;color:var(--text-muted);padding:4px 10px;font-size:var(--font-size-ui);cursor:pointer}.toggle-group-item.active{background:var(--surface-hover);color:var(--text)}.toggle-group-item:hover:not(.active){color:var(--text)}
1
+ *,:after,:before{box-sizing:border-box}html{font-family:system-ui,Segoe UI,Roboto,Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji";line-height:1.15;-webkit-text-size-adjust:100%;tab-size:4}body{margin:0}b,strong{font-weight:bolder}code,kbd,pre,samp{font-family:ui-monospace,SFMono-Regular,Consolas,Liberation Mono,Menlo,monospace;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{border-color:currentcolor}button,input,optgroup,select,textarea{font-family:inherit;font-size:100%;line-height:1.15;margin:0}[type=button],[type=reset],[type=submit],button{-webkit-appearance:button}legend{padding:0}progress{vertical-align:baseline}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}.btn{display:inline-flex;align-items:center;gap:5px;border:1px solid var(--border);background:var(--surface);color:var(--text);border-radius:0;padding:4px 10px;font-size:var(--font-size-ui);cursor:pointer;white-space:nowrap}.btn:hover{background:var(--surface-hover)}.btn:disabled{opacity:.35;cursor:not-allowed}.btn.primary{background:var(--accent-primary);color:var(--text-inverse);border-color:transparent;font-weight:500}.btn.primary:hover{background:var(--accent-primary-hover)}.btn.ghost{background:transparent;border-color:transparent;color:var(--text-muted)}.btn.ghost:hover{background:var(--surface-hover);color:var(--text)}.btn-group{display:inline-flex;align-items:center;gap:2px}.icon-btn{align-items:center;aspect-ratio:1;background:transparent;border-radius:0;border:1px solid transparent;color:var(--text-muted);cursor:pointer;display:inline-flex;height:28px;justify-content:center;width:28px}.icon-btn:hover{background:var(--surface-hover);color:var(--text)}.icon-btn.active{background:var(--surface-hover);border-color:var(--border);color:var(--text)}.icon-btn.ghost{color:var(--text-muted)}.icon-btn.ghost:hover{color:var(--text)}.text-input-area{display:block;width:100%;border:1px solid var(--border);border-radius:0;background:var(--bg);color:var(--text);font:inherit;padding:6px 8px}.text-input-area:focus{outline:none;border-color:var(--border-focus)}@font-face{font-family:JetBrains Mono;font-weight:400;font-style:normal;font-display:swap;src:url(/fonts/JetBrainsMono-Regular.woff2) format("woff2")}@font-face{font-family:JetBrains Mono;font-weight:500;font-style:normal;font-display:swap;src:url(/fonts/JetBrainsMono-Medium.woff2) format("woff2")}@font-face{font-family:JetBrains Mono;font-weight:600;font-style:normal;font-display:swap;src:url(/fonts/JetBrainsMono-SemiBold.woff2) format("woff2")}@font-face{font-family:JetBrains Mono;font-weight:700;font-style:normal;font-display:swap;src:url(/fonts/JetBrainsMono-Bold.woff2) format("woff2")}@font-face{font-family:JetBrains Mono;font-weight:400;font-style:italic;font-display:swap;src:url(/fonts/JetBrainsMono-Italic.woff2) format("woff2")}:root{color-scheme:dark;--bg: hsl(0 0% 5.2%);--surface: hsl(0 0% 6.8%);--surface-hover: hsl(0 0% 9.6%);--border: hsl(0 0% 14%);--border-focus: hsl(0 0% 24%);--text: hsl(0 0% 86%);--text-muted: hsl(0 0% 48%);--accent-add: hsl(142 70% 62%);--accent-del: hsl(0 91% 68%);--accent-del-muted: hsl(0 91% 71% / .72);--accent-del-subtle: hsl(0 91% 71% / .08);--accent-del-subtle-hover: hsl(0 91% 71% / .14);--accent-primary: hsl(0 0% 88%);--text-inverse: hsl(0 0% 3.6%);--accent-primary-hover: hsl(0 0% 94%);--thread-border-muted: hsl(0 0% 84% / .15);--thread-border-strong: hsl(0 0% 84% / .2);--thread-border-subtle: hsl(0 0% 84% / .08);--thread-surface-subtle: hsl(0 0% 100% / .02);--code-inline-bg: hsl(142 68% 56% / .07);--code-inline-text: hsl(142 74% 68%);--bar-height: 48px;--sidebar-width-narrow: 300px;--sidebar-width-wide: 480px;--sidebar-width: var(--sidebar-width-narrow);--content-padding-x: 12px;--file-gap: 1rem;--font-size-ui: 1rem;--font-size-lg: 1.071429rem;--font-size-sm: .928571rem;--font-size-xs: .857143rem;--font-size-code: .928571rem;--font-weight-ui: 400;--font-weight-code: 400;--letter-spacing-ui: 0;--letter-spacing-code: 0;--font-family-ui: system-ui, sans-serif;--font-family-code: "JetBrains Mono", monospace;--diffs-font-family: var(--font-family-code);--diffs-line-height: 1.75;font-family:var(--font-family-ui);font-size:14px;font-weight:var(--font-weight-ui);letter-spacing:var(--letter-spacing-ui);line-height:1.5}*,*:before,*:after{box-sizing:border-box;margin:0}body{background:var(--bg);color:var(--text);min-height:100vh}button,input,textarea{color:inherit;font:inherit}.app{min-height:100vh}.app.sidebar-wide{--sidebar-width: var(--sidebar-width-wide)}.content{min-height:calc(100vh - var(--bar-height));padding:var(--content-padding-x)}.app.sidebar-open .content{margin-left:var(--sidebar-width)}.empty{color:var(--text-muted);padding:32px 16px}.diff-stats{display:inline-flex;align-items:center;gap:6px}.stat-add{color:var(--accent-add)}.stat-del{color:var(--accent-del)}.brief-dialog-body-wrap{display:block;flex:1 1 auto;min-height:0;overflow:auto}.brief-dialog-empty{color:var(--text-muted);font-size:16px;padding:1rem}.brief-dialog-body{font-size:16px;padding:1rem}.dialog-backdrop{align-items:flex-start;background:#000c;display:flex;inset:0;justify-content:center;padding-block:40px 20px;padding-inline:20px;position:fixed;z-index:40}.dialog{background:var(--surface);border:1px solid var(--border);display:flex;flex-direction:column;max-height:calc(100vh - 60px);min-height:0;overflow:hidden;width:min(760px,100%)}.dialog-header{align-items:center;background:var(--bg);border-bottom:1px solid var(--border);display:flex;gap:8px;justify-content:space-between;padding:1rem;position:sticky;top:0;z-index:1}.dialog-heading{min-width:0}.dialog-title{color:var(--text);font-size:16px}.dialog-actions{flex-shrink:0}.dialog-close{height:24px;padding:0;width:24px}.dialog-body-wrap{display:flex;flex-direction:column;flex:1 1 auto;min-height:0;overflow:auto}.markdown-content{--markdown-code-block-border-color: hsl(0 0% 12%);--markdown-code-block-font-size: calc(14 / 15 * 1rem);--markdown-code-block-margin-block: 1em;--markdown-code-block-padding: 8px 10px;--markdown-heading-letter-spacing: -.01em;--markdown-heading-margin-block: 1em .75em;--markdown-heading-size: 1.2em;--markdown-heading-weight: 650;--markdown-inline-code-font-size: .9375em;--markdown-inline-code-padding-x: 5px;--markdown-inline-code-padding-y: 1px;--markdown-list-item-gap: .125em;--markdown-list-margin-block: 1em;--markdown-list-nested-gap: .25em;--markdown-list-padding: 1.5em;--markdown-paragraph-margin-block: 1em;--markdown-prose-color: hsl(0 0% 76%);--markdown-blockquote-color: hsl(0 0% 66%);max-width:100%;min-width:0;overflow-wrap:anywhere;white-space:normal;width:100%}.markdown-content>:first-child{margin-block-start:0!important}.markdown-content>:last-child{margin-block-end:0!important}.markdown-content :where(h1,h2,h3,h4,h5,h6){color:var(--text);font-size:var(--markdown-heading-size);font-weight:var(--markdown-heading-weight);letter-spacing:var(--markdown-heading-letter-spacing);line-height:1.2;margin-block:var(--markdown-heading-margin-block)}.markdown-content p{margin-block:var(--markdown-paragraph-margin-block)}.markdown-content p,.markdown-content li{color:var(--markdown-prose-color)}.markdown-content code{background:var(--code-inline-bg);color:var(--code-inline-text);font-family:var(--font-family-code);font-size:var(--markdown-inline-code-font-size);font-weight:var(--font-weight-code);letter-spacing:var(--letter-spacing-code);padding-block:var(--markdown-inline-code-padding-y);padding-inline:var(--markdown-inline-code-padding-x)}.markdown-content pre{background:var(--bg)!important;border:1px solid var(--markdown-code-block-border-color);box-sizing:border-box;contain:inline-size;margin-block:var(--markdown-code-block-margin-block);max-width:100%;min-width:0;overflow-x:auto;padding:var(--markdown-code-block-padding);white-space:pre}.markdown-content pre code{background:none;color:var(--text-muted);display:block;font-size:var(--markdown-code-block-font-size);max-width:100%;min-width:0;padding:0;white-space:inherit}.markdown-content ul,.markdown-content ol{margin-block:var(--markdown-list-margin-block);padding-left:var(--markdown-list-padding)}.markdown-content :where(h1,h2,h3,h4,h5,h6)+ul,.markdown-content :where(h1,h2,h3,h4,h5,h6)+ol{margin-block-start:0}.markdown-content ul{list-style:disc}.markdown-content ol{list-style:decimal}.markdown-content li+li{margin-top:var(--markdown-list-item-gap)}.markdown-content li::marker{color:var(--text-muted)}.markdown-content li>p{margin:0}.markdown-content li>p+p{margin-top:var(--markdown-list-nested-gap)}.markdown-content li>ul,.markdown-content li>ol{margin-block:var(--markdown-list-nested-gap) 0}.markdown-content blockquote{border-inline-start:2px solid var(--text-muted);color:var(--markdown-blockquote-color);padding-inline-start:.75em}.markdown-content strong{color:var(--text);font-weight:600}.markdown-content hr{border-bottom:0;border-inline:0;border-top:1px solid var(--thread-border-subtle);margin:1.5em 0}.markdown-content a{color:var(--text);text-decoration:underline;text-underline-offset:2px}.checkbox-btn{align-items:center;color:var(--text-muted);cursor:pointer;display:inline-flex;font-size:var(--font-size-xs);gap:6px;padding:4px 0;position:relative;white-space:nowrap}.checkbox-btn:hover{color:var(--text)}.checkbox-input{inset:0;opacity:0;position:absolute}.checkbox-box{align-items:center;background:transparent;border-radius:0;border:1px solid var(--text-muted);color:var(--text-inverse);display:inline-flex;flex:0 0 14px;height:14px;justify-content:center;width:14px}.checkbox-btn:hover .checkbox-box{border-color:var(--text)}.checkbox-input:focus-visible+.checkbox-box{border-color:var(--border-focus)}.checkbox-input:checked+.checkbox-box{background:var(--accent-add);border-color:var(--accent-add);color:var(--text-inverse)}.detached-thread-dialog-body-wrap{display:flex;flex:1 1 auto;font-size:15px;min-height:0;overflow:hidden}.detached-thread-dialog-layout{display:flex;flex:1 1 auto;min-height:0;flex-direction:column}.detached-thread-dialog-messages{flex:1 1 auto;min-height:0;overflow:auto}.detached-thread-dialog-message{padding:1rem}.detached-thread-dialog-message+.detached-thread-dialog-message{border-top:1px solid var(--border)}.detached-thread-dialog-message-assistant{background:#84ebaa05}.detached-thread-dialog-role{color:var(--text);display:inline-block;font-weight:600;margin-bottom:.5rem}.detached-thread-dialog-thinking{color:var(--text-muted);display:block}.detached-thread-dialog-composer{background:var(--bg);border-top:1px solid var(--border);flex:0 0 auto;padding:1rem}.detached-thread-dialog-composer .btn,.detached-thread-dialog-composer .checkbox-btn{font-size:15px}.detached-thread-dialog-input{min-height:96px;resize:vertical}.detached-thread-dialog-actions{align-items:center;display:flex;gap:8px;justify-content:flex-end;margin-top:.5rem}.detached-thread-dialog-secondary{border-color:var(--thread-border-subtle);background:transparent;color:var(--text-muted)}.detached-thread-dialog-secondary:hover{border-color:var(--border);background:var(--surface-hover);color:var(--text)}.comment-editor{margin:6px 10px 8px;padding:8px 10px 8px 12px;border-radius:0;border:1px solid var(--border);border-left:2px solid var(--thread-border-muted);background:var(--surface);box-sizing:border-box;font-size:var(--font-size-ui);max-width:800px}.comment-input{min-height:56px;font-size:var(--font-size-ui);resize:vertical}.comment-actions{display:flex;gap:4px;justify-content:flex-end;margin-top:6px}.thread-card{background:var(--surface);border:1px solid var(--border);font-size:var(--font-size-lg);margin:.5rem;max-width:800px}.thread-card.resolved{border-color:var(--thread-border-strong)}.thread-header-row,.thread-collapsed-row{font-size:var(--font-size-sm);padding-block:.5rem;padding-inline:1rem}.thread-toggle{align-items:center;appearance:none;background:transparent;border:none;color:var(--text-muted);cursor:pointer;display:inline-flex;gap:.25rem;margin-block:0;margin-inline:-.5rem;padding-block:.25rem;padding-inline:.5rem;text-align:left}.thread-toggle:hover{color:var(--text)}.thread-msg{padding-block:1rem;padding-inline:1rem}.thread-messages>:first-child{padding-block-start:0;padding-inline:1rem}.thread-msg+.thread-msg{border-top:1px solid var(--border)}.thread-msg-assistant{background:#84ebaa05}.thread-msg-role{color:var(--text);display:inline-block;font-weight:600;margin-block-end:.5rem}.thread-msg-thinking{color:var(--text-muted);display:block}.thread-msg-actions{margin-block-start:.75rem}.thread-footer{background:var(--bg);border-block-start:1px solid var(--border);padding-block:.75rem;padding-inline:1rem}.thread-reply-input{min-height:calc(4.5em + 1.5rem);padding:.75rem;resize:vertical}.thread-actions{align-items:center;display:flex;flex-wrap:wrap;gap:.25rem;justify-content:flex-end}.thread-reply-input+.thread-actions{margin-block-start:.75rem}.file-section{border:1px solid var(--border);border-radius:0;background:var(--surface);scroll-margin-top:calc(var(--bar-height) + var(--file-gap))}.file-section+.file-section{margin-top:var(--file-gap)}.file-header{position:sticky;top:var(--bar-height);z-index:10;display:flex;align-items:center;justify-content:space-between;gap:12px;padding:0 var(--content-padding-x);height:36px;background:var(--surface);border-bottom:1px solid var(--border)}.file-header:hover{background:var(--surface-hover)}.file-section.collapsed .file-header{border-bottom:none}.file-toggle{display:flex;align-items:center;gap:4px;border:none;background:transparent;color:var(--text-muted);cursor:pointer;min-width:0;padding:0}.file-toggle:hover{color:var(--text)}.file-path{font-size:var(--font-size-ui);color:var(--text);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.file-thread-count{align-items:center;color:var(--text-muted);display:inline-flex;flex-shrink:0;font-size:var(--font-size-xs);gap:4px;margin-left:4px}.file-meta{display:flex;align-items:center;gap:10px;flex-shrink:0;font-size:var(--font-size-ui)}.viewed-checkbox{font-size:var(--font-size-xs)}.file-body{background:var(--bg);border-bottom-left-radius:8px;border-bottom-right-radius:8px}.diff-view{display:block;width:100%;font-size:var(--font-size-code);font-weight:var(--font-weight-code);letter-spacing:var(--letter-spacing-code)}.sidebar{background:var(--surface);border-right:1px solid var(--border);bottom:0;display:flex;flex-direction:column;gap:12px;left:0;overflow-y:auto;padding-block:12px;position:fixed;top:var(--bar-height);transform:translate(-100%);width:var(--sidebar-width);z-index:15}.sidebar.open{transform:translate(0)}.sidebar-width-toggle{background:transparent;border:none;bottom:0;cursor:pointer;padding:0;position:absolute;right:-3px;top:0;width:5px}.sidebar-width-toggle:before{background:transparent;bottom:0;content:"";left:2px;position:absolute;top:0;transition:background-color .12s ease,box-shadow .12s ease;width:1px}.sidebar-width-toggle:hover:before,.sidebar-width-toggle:focus-visible:before{background:var(--border-focus);box-shadow:0 0 0 1px #ffffff05}.sidebar-width-toggle:focus-visible{outline:none}.sidebar-section{display:flex;flex-direction:column;gap:8px}.sidebar-section-header{align-items:center;display:flex;gap:8px;justify-content:space-between;padding-inline:12px}.sidebar-section-title{color:var(--text);font-size:var(--font-size-sm);font-weight:500}.sidebar-action{min-height:28px;padding:0 8px}.sidebar-conversations,.sidebar-file-list{display:flex;flex-direction:column;gap:4px}.sidebar-divider{background:var(--border);height:1px}.sidebar-empty{color:var(--text-muted);font-size:var(--font-size-sm);padding-inline:12px}.sidebar-thread-item{background:transparent;border:none;color:var(--text);cursor:pointer;display:block;padding-block:6px;padding-inline:12px;text-align:left;width:100%}.sidebar-thread-item:hover,.sidebar-thread-item.selected{background:var(--surface-hover)}.sidebar-thread-item.resolved{opacity:.4}.sidebar-thread-row{align-items:center;display:flex;gap:8px;justify-content:space-between;width:100%}.sidebar-thread-name{color:var(--text);display:block;flex:1 1 auto;font-size:var(--font-size-ui);min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.sidebar-thread-status-dot{background:var(--text-muted);border-radius:999px;flex:0 0 6px;height:6px;width:6px}.sidebar-thread-status-dot.active{background:var(--accent-add)}.sidebar-item{background:transparent;border:none;color:var(--text);cursor:pointer;display:block;font-size:var(--font-size-ui);padding-block:6px;padding-inline:12px;text-align:left;width:100%}.sidebar-row{align-items:center;display:flex;gap:8px;justify-content:space-between;width:100%}.sidebar-item:hover{background:var(--surface-hover)}.sidebar-item.viewed{opacity:.4}.sidebar-path{display:block;flex:1 1 auto;min-width:0;overflow:hidden;white-space:nowrap}.sidebar-stats{display:flex;flex-shrink:0;font-size:var(--font-size-xs);gap:4px}.top-bar{position:sticky;top:0;z-index:20;display:flex;align-items:center;justify-content:space-between;width:100%;max-width:100vw;height:var(--bar-height);padding:0 12px;overflow:hidden;background:var(--surface);border-bottom:1px solid var(--border)}.top-bar-left,.top-bar-right{display:flex;align-items:center;gap:10px;min-width:0}.top-bar-left{flex:1 1 0;gap:12px;overflow:hidden}.top-bar-right{flex:0 0 auto}.top-bar-meta{color:var(--text-muted);font-size:var(--font-size-sm)}.top-bar-meta-dim{opacity:.5}.top-bar-status{font-size:var(--font-size-xs)}.top-bar-brief-action{min-height:26px;padding:0 8px;border-color:var(--thread-border-subtle);background:transparent;color:var(--text)}.top-bar-brief-action:hover{background:var(--surface-hover)}.top-bar-diff-meta{display:inline-flex;align-items:center;flex:1 1 0;gap:8px;min-width:0;overflow:hidden;font-size:var(--font-size-sm)}.top-bar-diff-meta .diff-stats{flex:0 0 auto}.top-bar-diff-command{flex:1 1 auto;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;opacity:.4}.top-bar-viewed{display:inline-flex;align-items:center;gap:8px;color:var(--text-muted);font-size:var(--font-size-sm);white-space:nowrap;margin-right:2px}.top-bar-viewed-ring{display:inline-flex;align-items:center;justify-content:center;width:16px;height:16px;border-radius:999px;flex:0 0 16px}.top-bar-viewed-ring-inner{display:block;width:10px;height:10px;border-radius:999px;background:var(--surface)}.top-bar-viewed-text{color:var(--text-muted)}.top-bar-toggle{display:inline-flex;align-items:center;gap:7px;border:none;background:transparent;color:var(--text-muted);font-size:var(--font-size-xs);cursor:pointer;padding:2px 0;white-space:nowrap}.top-bar-toggle:hover{color:var(--text)}.top-bar-toggle-switch{display:inline-flex;align-items:center;width:24px;height:14px;padding:1px;border:1px solid var(--border);border-radius:0;background:var(--surface-hover)}.top-bar-toggle-thumb{display:block;width:10px;height:10px;border-radius:0;background:var(--text-muted)}.top-bar-toggle.active{color:var(--text)}.top-bar-toggle.active .top-bar-toggle-switch{background:var(--accent-add);border-color:var(--accent-add)}.top-bar-toggle.active .top-bar-toggle-thumb{transform:translate(10px);background:var(--text-inverse)}.top-bar-action{gap:6px;min-height:28px;padding:0 10px;border:1px solid var(--border);background:var(--surface);font-size:var(--font-size-ui)}.top-bar-action:hover{background:var(--surface-hover)}.top-bar-action-primary{color:var(--text-inverse);border-color:var(--accent-primary);background:var(--accent-primary);font-weight:500}.top-bar-action-primary:hover{color:var(--text-inverse);background:var(--accent-primary-hover)}.top-bar-action-cancel{justify-content:center;min-width:28px;padding:0;color:var(--accent-del-muted);border-color:transparent;background:var(--accent-del-subtle)}.top-bar-action-cancel:hover{color:var(--accent-del);border-color:transparent;background:var(--accent-del-subtle-hover)}.toggle-group{display:inline-flex;border:1px solid var(--border);border-radius:0;overflow:hidden}.toggle-group-item{border:none;background:transparent;color:var(--text-muted);padding:4px 10px;font-size:var(--font-size-ui);cursor:pointer}.toggle-group-item.active{background:var(--surface-hover);color:var(--text)}.toggle-group-item:hover:not(.active){color:var(--text)}
@@ -4,8 +4,8 @@
4
4
  <meta charset="utf-8" />
5
5
  <meta name="viewport" content="width=device-width, initial-scale=1" />
6
6
  <title>Tau diff tool</title>
7
- <script type="module" crossorigin src="/assets/index-DBqjfsvW.js"></script>
8
- <link rel="stylesheet" crossorigin href="/assets/index-Czg-eJwd.css">
7
+ <script type="module" crossorigin src="/assets/index-Cpuc6JJD.js"></script>
8
+ <link rel="stylesheet" crossorigin href="/assets/index-BuEYkrDR.css">
9
9
  </head>
10
10
  <body>
11
11
  <div id="root"></div>
@@ -4,4 +4,4 @@ label: "guided review of current branch"
4
4
  description: "split the current branch diff into natural chunks and guide focused diff reviews"
5
5
  ---
6
6
 
7
- Use @@skill:guided-review. Split the current branch diff against main into natural review chunks and guide me through them. Start with a concise chunk plan, then begin the first chunk. Before each `diff_review` call, write a short preamble explaining what I'm about to review and where to focus.
7
+ Use @@skill:guided-review. Split the current branch diff against main into natural review chunks and guide me through it. First produce the phase 1 orientation brief: write a concise narrative reviewer briefing that explains the change intent, important behavior or contract changes, risk areas, and planned chunks without turning it into a checklist. Do not open the first diff review yet. Ask me whether to start phase 2 in `collect-only` mode or `apply-as-you-go` mode unless I already specified a mode.
@@ -4,4 +4,4 @@ label: "guided review of current changes"
4
4
  description: "split current changes into natural chunks and guide focused diff reviews"
5
5
  ---
6
6
 
7
- Use @@skill:guided-review. Split the current changes into natural review chunks and guide me through them. Start with a concise chunk plan, then begin the first chunk. Before each `diff_review` call, write a short preamble explaining what I'm about to review and where to focus.
7
+ Use @@skill:guided-review. Split the current changes into natural review chunks and guide me through them. First produce the phase 1 orientation brief: write a concise narrative reviewer briefing that explains the change intent, important behavior or contract changes, risk areas, and planned chunks without turning it into a checklist. Do not open the first diff review yet. Ask me whether to start phase 2 in `collect-only` mode or `apply-as-you-go` mode unless I already specified a mode.
@@ -4,4 +4,4 @@ label: "guided review of most recent commit"
4
4
  description: "split the most recent commit into natural chunks and guide focused diff reviews"
5
5
  ---
6
6
 
7
- Use @@skill:guided-review. Split the most recent commit into natural review chunks and guide me through them. Start with a concise chunk plan, then begin the first chunk. Before each `diff_review` call, write a short preamble explaining what I'm about to review and where to focus.
7
+ Use @@skill:guided-review. Split the most recent commit into natural review chunks and guide me through it. First produce the phase 1 orientation brief: write a concise narrative reviewer briefing that explains the change intent, important behavior or contract changes, risk areas, and planned chunks without turning it into a checklist. Do not open the first diff review yet. Ask me whether to start phase 2 in `collect-only` mode or `apply-as-you-go` mode unless I already specified a mode.
@@ -5,7 +5,12 @@ description: "Split large diffs or change sets into natural review chunks, then
5
5
 
6
6
  ## Goal
7
7
 
8
- Turn an overwhelming review scope into a short sequence of coherent review chunks. Each chunk should be small enough to understand in one sitting and large enough to preserve the relevant context.
8
+ Turn an overwhelming review scope into a two-phase guided review:
9
+
10
+ 1. An orientation brief that explains the change and prepares the reviewer.
11
+ 2. A sequence of focused diff reviews, run in the review mode the user chooses.
12
+
13
+ Each review chunk should be small enough to understand in one sitting and large enough to preserve the relevant context.
9
14
 
10
15
  Use this skill only when the user explicitly asks for guided review, to split a diff into reviewable pieces, or to walk through changes step by step.
11
16
 
@@ -22,13 +27,48 @@ Use these defaults:
22
27
 
23
28
  If the request contains conflicting scope signals, ask one clarifying question before doing review work.
24
29
 
25
- ## Understand intent before chunking
30
+ ## Determine the review mode
31
+
32
+ Phase 2 must run in one explicit mode. Honor the mode if the user already specified it. If the mode is not specified, ask the user to choose at the end of phase 1, before opening the first diff review.
33
+
34
+ Supported modes:
35
+
36
+ - `collect-only`: collect the user's review comments without editing files. Keep a running record of findings, open questions, and follow-up items for a final synthesis after all chunks are reviewed. Do not implement anything unless the user later asks.
37
+ - `apply-as-you-go`: address review comments immediately after each chunk, then have the user review the resulting net changes before moving to the next chunk.
38
+
39
+ Treat natural-language equivalents like "regular review," "collect comments," or "don't make changes" as `collect-only`. Treat requests like "make the changes right away" or "address comments as we go" as `apply-as-you-go`.
26
40
 
27
- Do not start by mechanically grouping files. Build enough understanding of what the change is trying to accomplish so the chunks reflect the author's intent.
41
+ Do not infer `apply-as-you-go` just because feedback is actionable. If the user's intent is ambiguous, default to asking rather than editing.
42
+
43
+ ## Understand intent before phase 1
44
+
45
+ Do not start by mechanically grouping files. Build enough understanding of what the change is trying to accomplish so the orientation and chunks reflect the author's intent.
28
46
 
29
47
  Start with the full diff or change summary, then read surrounding code, relevant tests, types, call sites, and related patterns as needed. Identify the main behavior changes, supporting refactors, dependency order, and risk areas. Trace how changed files interact so each chunk preserves the context a reviewer needs.
30
48
 
31
- Only create the chunk plan once you can explain the overall purpose of the change and the role each major file group plays. If the intent is still unclear after exploration, say what is unclear and ask a focused question before launching reviews.
49
+ Only create the orientation brief and chunk plan once you can explain the overall purpose of the change and the role each major file group plays. If the intent is still unclear after exploration, say what is unclear and ask a focused question before launching reviews.
50
+
51
+ ## Phase 1: write the orientation brief
52
+
53
+ Phase 1 prepares the reviewer. Do not call `diff_review` during phase 1.
54
+
55
+ Write a concise reviewer briefing that tells the story of the change and gives the reviewer the mental model they need before looking at code. It should read like a well-written narrative, not a checklist or a file-by-file inventory. Use headings to make it skimmable. Do not paste large diffs or long file lists.
56
+
57
+ Choose the right medium for each piece of information. Use prose for intent, motivation, reasoning, and narrative flow. Use small code blocks (pseudo-code, type signatures, JSON shapes, and the like) to show concrete changes: a before/after of a response type, a stripped-down snippet of new control flow, how a lifecycle was reordered. Showing is often faster to absorb than the equivalent explanation in prose. Use bullets for compact enumerations like chunk names, risk items, or field additions. Mix these freely; the goal is that every piece of information appears in the form that makes it fastest to understand.
58
+
59
+ A useful structure is: start with the problem or intent, then show the main mechanics and how contracts or shapes change, then call out review focus areas and the chunk map. The chunk map can be a compact list when that is the clearest format.
60
+
61
+ The brief should cover:
62
+
63
+ - The overall intent and story of the change.
64
+ - Important changes in mechanics, such as data flow, state transitions, or lifecycle behavior.
65
+ - Any contract or shape changes, such as APIs, response types, schemas, or config formats.
66
+ - The most important behavior changes and user-visible effects.
67
+ - The riskiest areas or assumptions the reviewer should keep in mind.
68
+ - The chunk plan: each chunk's label, scope, relative importance, and why it belongs together.
69
+ - Any low-value noise you plan to skip or only summarize, such as generated output, mechanical formatting, lockfile churn, or repetitive renames.
70
+
71
+ End phase 1 by pausing. If the review mode is unknown, ask the user to choose `collect-only` or `apply-as-you-go`. If the mode is known, ask whether to start phase 2 in that mode. Do not open the first chunk unless the user explicitly tells you to start phase 2.
32
72
 
33
73
  ## Build a chunk plan
34
74
 
@@ -43,7 +83,7 @@ Good chunk boundaries include:
43
83
  - Documentation or configuration changes that explain or enable the same behavior.
44
84
  - A risky cross-cutting change isolated from low-risk mechanical edits.
45
85
 
46
- Not every changed line deserves the same review attention. Rank chunks by review value and call out which ones are highest-risk or most important. You can skip or briefly summarize low-value noise, such as generated output, mechanical formatting, lockfile churn, or repetitive renames, as long as doing so does not hide meaningful net behavior changes.
86
+ Not every changed line deserves the same review attention. Rank chunks by review value and call out which ones are highest-risk or most important. You can skip or briefly summarize low-value noise as long as doing so does not hide meaningful net behavior changes.
47
87
 
48
88
  Avoid these mistakes:
49
89
 
@@ -53,9 +93,7 @@ Avoid these mistakes:
53
93
  - Do not hide risky files inside a large miscellaneous chunk.
54
94
  - Do not force the user through noisy or low-value chunks when a summary is enough.
55
95
 
56
- Present a concise chunk plan with each chunk's label, scope, relative importance, and why it belongs together. Explicitly note any low-value noise you plan to skip or only summarize. If there are many chunks, start with the highest-risk or most foundational one.
57
-
58
- ## Launch focused diff reviews
96
+ ## Phase 2: launch focused diff reviews
59
97
 
60
98
  Use the `diff_review` tool for each chunk when it is available.
61
99
 
@@ -82,10 +120,26 @@ Then call `diff_review` for exactly that chunk.
82
120
 
83
121
  ## Between chunks
84
122
 
85
- After each review returns, inspect the feedback before moving on. If the review surfaces issues and the user expects implementation help, address them immediately, update the code, and re-check the affected net changes before launching the next chunk. Do not start the next chunk while feedback from the current chunk remains unresolved, unless the user explicitly defers it.
123
+ After each review returns, inspect the feedback before moving on. Keep the review mode explicit and do not start the next chunk until the current chunk is complete, deferred, or explicitly skipped by the user.
124
+
125
+ In `collect-only` mode:
126
+
127
+ - Do not edit files.
128
+ - Record the comments, findings, and open questions for a final synthesis after all chunks are reviewed.
129
+ - Do not echo or summarize the user's feedback chunk-by-chunk unless an ambiguity blocks the next review.
130
+ - Between chunks, use only a terse transition and continue according to the agreed flow. Ask before continuing only when the user requested pauses or the feedback raises a blocking question.
131
+
132
+ At the end of `collect-only` mode, write a final review overview that draws the comments together across all chunks. Group related comments by theme, subsystem, or severity; call out duplicates, contradictions, open questions, and likely next actions. Do not just concatenate per-chunk notes.
133
+
134
+ In `apply-as-you-go` mode:
86
135
 
87
- This keeps the review sequence honest: by the end, the user should have reviewed the final net changes, not an earlier version that was later modified by fixes from prior chunks.
136
+ - Address clear review comments immediately.
137
+ - Ask a focused question before editing when feedback is ambiguous or sounds like discussion rather than a requested change.
138
+ - Run the smallest useful checks for the affected code when practical.
139
+ - Re-check the affected net diff after editing.
140
+ - Present the fix summary and have the user review the updated changes before moving on. Prefer a follow-up `diff_review` for the current chunk or a focused patch containing the fix.
141
+ - Repeat this loop until the user says the chunk is complete, explicitly defers remaining feedback, or asks to skip the follow-up review.
88
142
 
89
- If the user only wants guided review without implementation, summarize the returned feedback, mark the chunk as reviewed, and ask whether to continue.
143
+ Never leave code changes unreviewed. Any file you edit while addressing feedback must be included in a follow-up review or explicitly deferred by the user before you launch the next chunk. If a fix touches files planned for a later chunk, update the chunk plan and tell the user how the scope changed.
90
144
 
91
- Keep the sequence explicit. Tell the user which chunks are complete, which were skipped or summarized as low-value noise, which feedback was addressed, and which chunks remain.
145
+ Keep the sequence explicit. Tell the user which chunks are complete, which were skipped or summarized as low-value noise, and which chunks remain. In `apply-as-you-go` mode, also state which feedback was addressed before asking for the required follow-up review.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@markusylisiurunen/tau",
3
- "version": "0.2.112",
3
+ "version": "0.2.114",
4
4
  "type": "module",
5
5
  "bin": {
6
6
  "tau": "./dist/main.js"
@@ -27,8 +27,8 @@
27
27
  "access": "public"
28
28
  },
29
29
  "dependencies": {
30
- "@earendil-works/pi-ai": "^0.74.1",
31
- "@earendil-works/pi-tui": "^0.74.1",
30
+ "@earendil-works/pi-ai": "^0.75.4",
31
+ "@earendil-works/pi-tui": "^0.75.4",
32
32
  "chalk": "^5.6.2",
33
33
  "file-type": "^21.3.4",
34
34
  "sharp": "^0.34.5",
@@ -39,11 +39,11 @@
39
39
  },
40
40
  "devDependencies": {
41
41
  "@biomejs/biome": "2.4.15",
42
- "@types/node": "^25.8.0",
42
+ "@types/node": "^25.9.1",
43
43
  "colorjs.io": "^0.6.1",
44
44
  "prettier": "^3.8.3",
45
45
  "typescript": "^5.9.3",
46
- "vitest": "^4.1.6"
46
+ "vitest": "^4.1.7"
47
47
  },
48
48
  "engines": {
49
49
  "node": ">=24.0.0"