@inharness-ai/claude4spec 1.0.20 → 1.0.21

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.
Files changed (106) hide show
  1. package/.claude/skills/c4s-brief-implementer/SKILL.md +6 -13
  2. package/CHANGELOG.md +13 -0
  3. package/dist/client/assets/{arc-qrIe4IVl.js → arc-Coa9fbDO.js} +1 -1
  4. package/dist/client/assets/{architectureDiagram-3BPJPVTR-CF6sgG8n.js → architectureDiagram-3BPJPVTR-VJZcRMEN.js} +1 -1
  5. package/dist/client/assets/{blockDiagram-GPEHLZMM-Cf8Tx0VN.js → blockDiagram-GPEHLZMM-C7dU2lW1.js} +1 -1
  6. package/dist/client/assets/{c4Diagram-AAUBKEIU-BDkuMEyf.js → c4Diagram-AAUBKEIU-CG_BBm_5.js} +1 -1
  7. package/dist/client/assets/channel-D5gzBvo7.js +1 -0
  8. package/dist/client/assets/{chunk-2J33WTMH-ChycTonk.js → chunk-2J33WTMH-BnS95YpK.js} +1 -1
  9. package/dist/client/assets/{chunk-4BX2VUAB-BpUgWjxx.js → chunk-4BX2VUAB-COr8w3X3.js} +1 -1
  10. package/dist/client/assets/{chunk-55IACEB6-CeHg_yjT.js → chunk-55IACEB6-CxrIbZhB.js} +1 -1
  11. package/dist/client/assets/{chunk-727SXJPM-BpxYq7ab.js → chunk-727SXJPM-DRchPPRe.js} +1 -1
  12. package/dist/client/assets/{chunk-AQP2D5EJ-bghkOtr6.js → chunk-AQP2D5EJ-_SfN7mED.js} +1 -1
  13. package/dist/client/assets/{chunk-FMBD7UC4-4sXokGgd.js → chunk-FMBD7UC4-p2tIiP1D.js} +1 -1
  14. package/dist/client/assets/{chunk-ND2GUHAM-DYQOCE5T.js → chunk-ND2GUHAM-B1mbl2hP.js} +1 -1
  15. package/dist/client/assets/{chunk-QZHKN3VN-NkVuDlFD.js → chunk-QZHKN3VN-DBUpeqvS.js} +1 -1
  16. package/dist/client/assets/classDiagram-4FO5ZUOK-CT-amIxa.js +1 -0
  17. package/dist/client/assets/classDiagram-v2-Q7XG4LA2-CT-amIxa.js +1 -0
  18. package/dist/client/assets/{cose-bilkent-S5V4N54A-1l4P4WRI.js → cose-bilkent-S5V4N54A-BBsY5aKD.js} +1 -1
  19. package/dist/client/assets/{dagre-BM42HDAG-CSQie-gR.js → dagre-BM42HDAG-b-vu4RC9.js} +1 -1
  20. package/dist/client/assets/{diagram-2AECGRRQ-DME9ULoN.js → diagram-2AECGRRQ-j-DW9qSf.js} +1 -1
  21. package/dist/client/assets/{diagram-5GNKFQAL-Dn1Rw5k5.js → diagram-5GNKFQAL-DHX_WYWQ.js} +1 -1
  22. package/dist/client/assets/{diagram-KO2AKTUF-Duh_PNWR.js → diagram-KO2AKTUF-DxdQok_M.js} +1 -1
  23. package/dist/client/assets/{diagram-LMA3HP47-B7Q5pV60.js → diagram-LMA3HP47-BbTIX5c1.js} +1 -1
  24. package/dist/client/assets/{diagram-OG6HWLK6-C0KL_RDd.js → diagram-OG6HWLK6-BQ9ODAlH.js} +1 -1
  25. package/dist/client/assets/{erDiagram-TEJ5UH35-D5elfwSC.js → erDiagram-TEJ5UH35-6lwAL1y9.js} +1 -1
  26. package/dist/client/assets/{flowDiagram-I6XJVG4X-BHmjX-WI.js → flowDiagram-I6XJVG4X-ioSHb5-t.js} +1 -1
  27. package/dist/client/assets/{ganttDiagram-6RSMTGT7-KvoGFbS2.js → ganttDiagram-6RSMTGT7-CXFQp9Nj.js} +1 -1
  28. package/dist/client/assets/{gitGraphDiagram-PVQCEYII-DsZL8BfK.js → gitGraphDiagram-PVQCEYII-C1pVD_NQ.js} +1 -1
  29. package/dist/client/assets/index-DyAnw7YN.js +798 -0
  30. package/dist/client/assets/{index-zzILqHQN.js → index-JaAxQJXh.js} +1 -1
  31. package/dist/client/assets/{index-ClaVbrEF.js → index-hz5T_W2e.js} +1 -1
  32. package/dist/client/assets/{infoDiagram-5YYISTIA-DoQ6iSpJ.js → infoDiagram-5YYISTIA-C2Guev-g.js} +1 -1
  33. package/dist/client/assets/{ishikawaDiagram-YF4QCWOH-akftyN0J.js → ishikawaDiagram-YF4QCWOH-D3v8VBb2.js} +1 -1
  34. package/dist/client/assets/{journeyDiagram-JHISSGLW-PPex4PiV.js → journeyDiagram-JHISSGLW-DX1AW_Ap.js} +1 -1
  35. package/dist/client/assets/{kanban-definition-UN3LZRKU-D114i3s1.js → kanban-definition-UN3LZRKU-CzXThvq2.js} +1 -1
  36. package/dist/client/assets/{linear-BuwQPJom.js → linear-CVw4gl5i.js} +1 -1
  37. package/dist/client/assets/{mermaid.core-CMX3GAvM.js → mermaid.core-C29eoXRj.js} +4 -4
  38. package/dist/client/assets/{mindmap-definition-RKZ34NQL-ClBxWJju.js → mindmap-definition-RKZ34NQL-DEEGVQVA.js} +1 -1
  39. package/dist/client/assets/{pieDiagram-4H26LBE5-hj5zVPj5.js → pieDiagram-4H26LBE5-Dme-VM6m.js} +1 -1
  40. package/dist/client/assets/{quadrantDiagram-W4KKPZXB-CRbR0G7M.js → quadrantDiagram-W4KKPZXB-CURFNo24.js} +1 -1
  41. package/dist/client/assets/{requirementDiagram-4Y6WPE33-Dto4B70I.js → requirementDiagram-4Y6WPE33-DxMZWXME.js} +1 -1
  42. package/dist/client/assets/{sankeyDiagram-5OEKKPKP-DyYP8rwY.js → sankeyDiagram-5OEKKPKP-BW64D4_P.js} +1 -1
  43. package/dist/client/assets/{sequenceDiagram-3UESZ5HK-C-mrSLrJ.js → sequenceDiagram-3UESZ5HK-BATRPm8Q.js} +1 -1
  44. package/dist/client/assets/{stateDiagram-AJRCARHV-IoDlhAe6.js → stateDiagram-AJRCARHV-pgHVMnO3.js} +1 -1
  45. package/dist/client/assets/stateDiagram-v2-BHNVJYJU-szm_LIuD.js +1 -0
  46. package/dist/client/assets/{timeline-definition-PNZ67QCA-DEXg3TEw.js → timeline-definition-PNZ67QCA-qBxJZPWd.js} +1 -1
  47. package/dist/client/assets/{vennDiagram-CIIHVFJN-CNu7LaT1.js → vennDiagram-CIIHVFJN-BZJK9hqJ.js} +1 -1
  48. package/dist/client/assets/{wardley-L42UT6IY-0hGvREmD.js → wardley-L42UT6IY-BobtgEXg.js} +1 -1
  49. package/dist/client/assets/{wardleyDiagram-YWT4CUSO-CVLz-xFz.js → wardleyDiagram-YWT4CUSO-DuWfX_-P.js} +1 -1
  50. package/dist/client/assets/{xychartDiagram-2RQKCTM6-CFymKAcX.js → xychartDiagram-2RQKCTM6-DCw1iURo.js} +1 -1
  51. package/dist/client/index.html +1 -1
  52. package/dist/server/core/plugin-host/entities-router.d.ts +2 -1
  53. package/dist/server/core/plugin-host/entities-router.js +16 -1
  54. package/dist/server/core/plugin-host/entities-router.js.map +1 -1
  55. package/dist/server/db/migrations/041_chat_thread_transagent.sql +22 -0
  56. package/dist/server/index.js +16 -0
  57. package/dist/server/index.js.map +1 -1
  58. package/dist/server/mcp/release-tools/index.d.ts +11 -0
  59. package/dist/server/mcp/release-tools/index.js +68 -5
  60. package/dist/server/mcp/release-tools/index.js.map +1 -1
  61. package/dist/server/mcp/release-tools/projection.d.ts +11 -2
  62. package/dist/server/mcp/release-tools/projection.js +36 -7
  63. package/dist/server/mcp/release-tools/projection.js.map +1 -1
  64. package/dist/server/mcp/release-tools/types.d.ts +39 -2
  65. package/dist/server/mcp/transagent-tools.d.ts +26 -0
  66. package/dist/server/mcp/transagent-tools.js +75 -0
  67. package/dist/server/mcp/transagent-tools.js.map +1 -0
  68. package/dist/server/routes/agent-turn.d.ts +9 -0
  69. package/dist/server/routes/agent-turn.js +58 -1
  70. package/dist/server/routes/agent-turn.js.map +1 -1
  71. package/dist/server/routes/briefs.js +12 -4
  72. package/dist/server/routes/briefs.js.map +1 -1
  73. package/dist/server/routes/chat.js +18 -0
  74. package/dist/server/routes/chat.js.map +1 -1
  75. package/dist/server/routes/plans.js +13 -0
  76. package/dist/server/routes/plans.js.map +1 -1
  77. package/dist/server/routes/threads.js +9 -2
  78. package/dist/server/routes/threads.js.map +1 -1
  79. package/dist/server/services/brief.d.ts +30 -8
  80. package/dist/server/services/brief.js +58 -28
  81. package/dist/server/services/brief.js.map +1 -1
  82. package/dist/server/services/chat-context.js +10 -6
  83. package/dist/server/services/chat-context.js.map +1 -1
  84. package/dist/server/services/chat.d.ts +12 -1
  85. package/dist/server/services/chat.js +56 -21
  86. package/dist/server/services/chat.js.map +1 -1
  87. package/dist/server/services/entity-indexer.js +21 -14
  88. package/dist/server/services/entity-indexer.js.map +1 -1
  89. package/dist/server/services/plan.d.ts +7 -1
  90. package/dist/server/services/plan.js +17 -4
  91. package/dist/server/services/plan.js.map +1 -1
  92. package/dist/server/services/transagent-dispatcher.d.ts +60 -0
  93. package/dist/server/services/transagent-dispatcher.js +147 -0
  94. package/dist/server/services/transagent-dispatcher.js.map +1 -0
  95. package/dist/server/skills/brief-author/SKILL.md +26 -17
  96. package/dist/server/workspace/project-context.js +2 -1
  97. package/dist/server/workspace/project-context.js.map +1 -1
  98. package/dist/shared/entities.d.ts +46 -3
  99. package/dist/shared/entities.js +1 -0
  100. package/dist/shared/entities.js.map +1 -1
  101. package/package.json +1 -1
  102. package/dist/client/assets/channel-CTF_J4I4.js +0 -1
  103. package/dist/client/assets/classDiagram-4FO5ZUOK-Dt9RLC8r.js +0 -1
  104. package/dist/client/assets/classDiagram-v2-Q7XG4LA2-Dt9RLC8r.js +0 -1
  105. package/dist/client/assets/index-DnLELaLA.js +0 -798
  106. package/dist/client/assets/stateDiagram-v2-BHNVJYJU-BblFLijq.js +0 -1
@@ -49,27 +49,20 @@ If the brief is unclear — a missing detail, an ambiguous wording, a decision
49
49
  you'd otherwise have to guess — you have two paths:
50
50
 
51
51
  **Synchronous (preferred when available).** Ask the specification agent in the
52
- same terminal and continue once you have an answer:
52
+ same terminal and continue once you have an answer.
53
+
54
+ **Specyfikacja CLAUDE 4 SPEC leży w `.claude/skills/specyfikacja` (symlink), nie
55
+ w katalogu głównym repo — zawsze wskazuj ją flagą `--project`; NIE rób `cd` do
56
+ tego katalogu, bo `c4s` zgłosi `PROJECT_NOT_FOUND`.**
53
57
 
54
58
  ```bash
55
- c4s ask "Brief nie precyzuje X — czy chodzi o A czy B?" --ct brief --brief <brief-slug>.md
59
+ c4s ask "Brief nie precyzuje X — czy chodzi o A czy B?" --ct brief --brief <brief-slug>.md --project .claude/skills/specyfikacja
56
60
  ```
57
61
 
58
62
  Continue the same thread with `c4s ask "..." --thread <threadId>` (the
59
63
  `threadId` is printed with the answer). This path requires `c4s` installed
60
64
  *and* a running `npx claude4spec` server. When either is unavailable, skip it.
61
65
 
62
- If `c4s ask` returns `PROJECT_NOT_FOUND` despite a running server, your cwd is
63
- probably reached through a **symlink** (common for `.claude/skills/<name>`
64
- projects): `c4s` resolves `process.cwd()` to the real path, which is NOT the one
65
- registered in `~/.claude4spec/workspaces.json`. Pass the registered (symlink) path
66
- explicitly — `--project` is run through `path.resolve`, which does NOT canonicalize
67
- symlinks, so it matches the registry:
68
-
69
- ```bash
70
- c4s ask "Brief nie precyzuje X — ..." --ct brief --brief <brief-slug>.md --project /abs/path/to/registered/skill-dir
71
- ```
72
-
73
66
  **Asynchronous (always available).** If you cannot ask synchronously, proceed
74
67
  with your best judgement and file a patch afterwards (step 4) so the
75
68
  spec-author can fold the clarification into the next brief.
package/CHANGELOG.md CHANGED
@@ -5,6 +5,18 @@ All notable changes to this project will be documented in this file.
5
5
  The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
6
6
  and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
7
7
 
8
+ ## [1.0.21] - 2026-06-22
9
+
10
+ ### Added
11
+ - Transagents — agents can now delegate work to nested child threads. A new `TransagentDispatcher` and `transagent-tools` MCP server manage parent→child thread relationships (migration `041`), and the client renders child activity in a dedicated `TransagentPanel` inside `ChatOverlay`, with `useChat` tracking child-thread start/complete state.
12
+ - Pagination and summary options for the `release-tools` MCP server — `release_list` and `release_show` accept `limit`/`offset`, and `release_diff` gains a `summaryOnly` mode that returns a light delta map (identifiers + operation types only, no full snapshots).
13
+
14
+ ### Changed
15
+ - `c4s-brief-implementer` skill now documents pointing `c4s ask` at the symlinked spec dir via `--project .claude/skills/specyfikacja` (and warns against `cd`-ing into it, which resolves to the real path → `PROJECT_NOT_FOUND`).
16
+
17
+ ### Fixed
18
+ - Chat thread-list over-fetch and frontend refetch storm. Server-side, `listThreads`/`forBrief`/`forPatch` drop the `LEFT JOIN chat_message + GROUP BY` (which aggregated `COUNT` over the full message table before `LIMIT`) for a correlated indexed `COUNT` subquery and a shared column list that omits the large `initial_system_prompt` blob — ~1962ms → ~10ms on a 506-thread/37k-message DB. `entity-indexer.indexAll` now rebuilds inside one transaction (~2s → ~117ms). Frontend uses a single shared `ThreadListProvider` with an in-flight guard, pagination, and a light `/entities/counts` aggregate replacing five full entity-list fetches.
19
+
8
20
  ## [1.0.20] - 2026-06-19
9
21
 
10
22
  ### Added
@@ -214,6 +226,7 @@ Initial public release.
214
226
  - Acceptance Criteria entity and tooling.
215
227
  - Briefs and patches workflow for spec-driven implementation.
216
228
 
229
+ [1.0.21]: https://github.com/InHarness/claude4spec/compare/v1.0.20...v1.0.21
217
230
  [1.0.20]: https://github.com/InHarness/claude4spec/compare/v1.0.19...v1.0.20
218
231
  [1.0.19]: https://github.com/InHarness/claude4spec/compare/v1.0.18...v1.0.19
219
232
  [1.0.18]: https://github.com/InHarness/claude4spec/compare/v1.0.17...v1.0.18
@@ -1 +1 @@
1
- import{a0 as ln,a1 as an,a2 as H,a3 as q,a4 as B,a5 as un,a6 as y,a7 as tn,a8 as L,a9 as _,aa as rn,ab as o,ac as on,ad as sn,ae as fn}from"./mermaid.core-CMX3GAvM.js";function cn(l){return l.innerRadius}function yn(l){return l.outerRadius}function gn(l){return l.startAngle}function dn(l){return l.endAngle}function mn(l){return l&&l.padAngle}function pn(l,h,I,D,v,A,C,a){var O=I-l,i=D-h,n=C-v,d=a-A,u=d*O-n*i;if(!(u*u<y))return u=(n*(h-A)-d*(l-v))/u,[l+u*O,h+u*i]}function W(l,h,I,D,v,A,C){var a=l-I,O=h-D,i=(C?A:-A)/L(a*a+O*O),n=i*O,d=-i*a,u=l+n,s=h+d,f=I+n,c=D+d,F=(u+f)/2,t=(s+c)/2,m=f-u,g=c-s,R=m*m+g*g,T=v-A,P=u*c-f*s,S=(g<0?-1:1)*L(on(0,T*T*R-P*P)),j=(P*g-m*S)/R,z=(-P*m-g*S)/R,w=(P*g+m*S)/R,p=(-P*m+g*S)/R,x=j-F,e=z-t,r=w-F,G=p-t;return x*x+e*e>r*r+G*G&&(j=w,z=p),{cx:j,cy:z,x01:-n,y01:-d,x11:j*(v/T-1),y11:z*(v/T-1)}}function hn(){var l=cn,h=yn,I=B(0),D=null,v=gn,A=dn,C=mn,a=null,O=ln(i);function i(){var n,d,u=+l.apply(this,arguments),s=+h.apply(this,arguments),f=v.apply(this,arguments)-un,c=A.apply(this,arguments)-un,F=rn(c-f),t=c>f;if(a||(a=n=O()),s<u&&(d=s,s=u,u=d),!(s>y))a.moveTo(0,0);else if(F>tn-y)a.moveTo(s*H(f),s*q(f)),a.arc(0,0,s,f,c,!t),u>y&&(a.moveTo(u*H(c),u*q(c)),a.arc(0,0,u,c,f,t));else{var m=f,g=c,R=f,T=c,P=F,S=F,j=C.apply(this,arguments)/2,z=j>y&&(D?+D.apply(this,arguments):L(u*u+s*s)),w=_(rn(s-u)/2,+I.apply(this,arguments)),p=w,x=w,e,r;if(z>y){var G=sn(z/u*q(j)),M=sn(z/s*q(j));(P-=G*2)>y?(G*=t?1:-1,R+=G,T-=G):(P=0,R=T=(f+c)/2),(S-=M*2)>y?(M*=t?1:-1,m+=M,g-=M):(S=0,m=g=(f+c)/2)}var J=s*H(m),K=s*q(m),N=u*H(T),Q=u*q(T);if(w>y){var U=s*H(g),V=s*q(g),X=u*H(R),Y=u*q(R),E;if(F<an)if(E=pn(J,K,X,Y,U,V,N,Q)){var Z=J-E[0],$=K-E[1],b=U-E[0],k=V-E[1],nn=1/q(fn((Z*b+$*k)/(L(Z*Z+$*$)*L(b*b+k*k)))/2),en=L(E[0]*E[0]+E[1]*E[1]);p=_(w,(u-en)/(nn-1)),x=_(w,(s-en)/(nn+1))}else p=x=0}S>y?x>y?(e=W(X,Y,J,K,s,x,t),r=W(U,V,N,Q,s,x,t),a.moveTo(e.cx+e.x01,e.cy+e.y01),x<w?a.arc(e.cx,e.cy,x,o(e.y01,e.x01),o(r.y01,r.x01),!t):(a.arc(e.cx,e.cy,x,o(e.y01,e.x01),o(e.y11,e.x11),!t),a.arc(0,0,s,o(e.cy+e.y11,e.cx+e.x11),o(r.cy+r.y11,r.cx+r.x11),!t),a.arc(r.cx,r.cy,x,o(r.y11,r.x11),o(r.y01,r.x01),!t))):(a.moveTo(J,K),a.arc(0,0,s,m,g,!t)):a.moveTo(J,K),!(u>y)||!(P>y)?a.lineTo(N,Q):p>y?(e=W(N,Q,U,V,u,-p,t),r=W(J,K,X,Y,u,-p,t),a.lineTo(e.cx+e.x01,e.cy+e.y01),p<w?a.arc(e.cx,e.cy,p,o(e.y01,e.x01),o(r.y01,r.x01),!t):(a.arc(e.cx,e.cy,p,o(e.y01,e.x01),o(e.y11,e.x11),!t),a.arc(0,0,u,o(e.cy+e.y11,e.cx+e.x11),o(r.cy+r.y11,r.cx+r.x11),t),a.arc(r.cx,r.cy,p,o(r.y11,r.x11),o(r.y01,r.x01),!t))):a.arc(0,0,u,T,R,t)}if(a.closePath(),n)return a=null,n+""||null}return i.centroid=function(){var n=(+l.apply(this,arguments)+ +h.apply(this,arguments))/2,d=(+v.apply(this,arguments)+ +A.apply(this,arguments))/2-an/2;return[H(d)*n,q(d)*n]},i.innerRadius=function(n){return arguments.length?(l=typeof n=="function"?n:B(+n),i):l},i.outerRadius=function(n){return arguments.length?(h=typeof n=="function"?n:B(+n),i):h},i.cornerRadius=function(n){return arguments.length?(I=typeof n=="function"?n:B(+n),i):I},i.padRadius=function(n){return arguments.length?(D=n==null?null:typeof n=="function"?n:B(+n),i):D},i.startAngle=function(n){return arguments.length?(v=typeof n=="function"?n:B(+n),i):v},i.endAngle=function(n){return arguments.length?(A=typeof n=="function"?n:B(+n),i):A},i.padAngle=function(n){return arguments.length?(C=typeof n=="function"?n:B(+n),i):C},i.context=function(n){return arguments.length?(a=n??null,i):a},i}export{hn as d};
1
+ import{a0 as ln,a1 as an,a2 as H,a3 as q,a4 as B,a5 as un,a6 as y,a7 as tn,a8 as L,a9 as _,aa as rn,ab as o,ac as on,ad as sn,ae as fn}from"./mermaid.core-C29eoXRj.js";function cn(l){return l.innerRadius}function yn(l){return l.outerRadius}function gn(l){return l.startAngle}function dn(l){return l.endAngle}function mn(l){return l&&l.padAngle}function pn(l,h,I,D,v,A,C,a){var O=I-l,i=D-h,n=C-v,d=a-A,u=d*O-n*i;if(!(u*u<y))return u=(n*(h-A)-d*(l-v))/u,[l+u*O,h+u*i]}function W(l,h,I,D,v,A,C){var a=l-I,O=h-D,i=(C?A:-A)/L(a*a+O*O),n=i*O,d=-i*a,u=l+n,s=h+d,f=I+n,c=D+d,F=(u+f)/2,t=(s+c)/2,m=f-u,g=c-s,R=m*m+g*g,T=v-A,P=u*c-f*s,S=(g<0?-1:1)*L(on(0,T*T*R-P*P)),j=(P*g-m*S)/R,z=(-P*m-g*S)/R,w=(P*g+m*S)/R,p=(-P*m+g*S)/R,x=j-F,e=z-t,r=w-F,G=p-t;return x*x+e*e>r*r+G*G&&(j=w,z=p),{cx:j,cy:z,x01:-n,y01:-d,x11:j*(v/T-1),y11:z*(v/T-1)}}function hn(){var l=cn,h=yn,I=B(0),D=null,v=gn,A=dn,C=mn,a=null,O=ln(i);function i(){var n,d,u=+l.apply(this,arguments),s=+h.apply(this,arguments),f=v.apply(this,arguments)-un,c=A.apply(this,arguments)-un,F=rn(c-f),t=c>f;if(a||(a=n=O()),s<u&&(d=s,s=u,u=d),!(s>y))a.moveTo(0,0);else if(F>tn-y)a.moveTo(s*H(f),s*q(f)),a.arc(0,0,s,f,c,!t),u>y&&(a.moveTo(u*H(c),u*q(c)),a.arc(0,0,u,c,f,t));else{var m=f,g=c,R=f,T=c,P=F,S=F,j=C.apply(this,arguments)/2,z=j>y&&(D?+D.apply(this,arguments):L(u*u+s*s)),w=_(rn(s-u)/2,+I.apply(this,arguments)),p=w,x=w,e,r;if(z>y){var G=sn(z/u*q(j)),M=sn(z/s*q(j));(P-=G*2)>y?(G*=t?1:-1,R+=G,T-=G):(P=0,R=T=(f+c)/2),(S-=M*2)>y?(M*=t?1:-1,m+=M,g-=M):(S=0,m=g=(f+c)/2)}var J=s*H(m),K=s*q(m),N=u*H(T),Q=u*q(T);if(w>y){var U=s*H(g),V=s*q(g),X=u*H(R),Y=u*q(R),E;if(F<an)if(E=pn(J,K,X,Y,U,V,N,Q)){var Z=J-E[0],$=K-E[1],b=U-E[0],k=V-E[1],nn=1/q(fn((Z*b+$*k)/(L(Z*Z+$*$)*L(b*b+k*k)))/2),en=L(E[0]*E[0]+E[1]*E[1]);p=_(w,(u-en)/(nn-1)),x=_(w,(s-en)/(nn+1))}else p=x=0}S>y?x>y?(e=W(X,Y,J,K,s,x,t),r=W(U,V,N,Q,s,x,t),a.moveTo(e.cx+e.x01,e.cy+e.y01),x<w?a.arc(e.cx,e.cy,x,o(e.y01,e.x01),o(r.y01,r.x01),!t):(a.arc(e.cx,e.cy,x,o(e.y01,e.x01),o(e.y11,e.x11),!t),a.arc(0,0,s,o(e.cy+e.y11,e.cx+e.x11),o(r.cy+r.y11,r.cx+r.x11),!t),a.arc(r.cx,r.cy,x,o(r.y11,r.x11),o(r.y01,r.x01),!t))):(a.moveTo(J,K),a.arc(0,0,s,m,g,!t)):a.moveTo(J,K),!(u>y)||!(P>y)?a.lineTo(N,Q):p>y?(e=W(N,Q,U,V,u,-p,t),r=W(J,K,X,Y,u,-p,t),a.lineTo(e.cx+e.x01,e.cy+e.y01),p<w?a.arc(e.cx,e.cy,p,o(e.y01,e.x01),o(r.y01,r.x01),!t):(a.arc(e.cx,e.cy,p,o(e.y01,e.x01),o(e.y11,e.x11),!t),a.arc(0,0,u,o(e.cy+e.y11,e.cx+e.x11),o(r.cy+r.y11,r.cx+r.x11),t),a.arc(r.cx,r.cy,p,o(r.y11,r.x11),o(r.y01,r.x01),!t))):a.arc(0,0,u,T,R,t)}if(a.closePath(),n)return a=null,n+""||null}return i.centroid=function(){var n=(+l.apply(this,arguments)+ +h.apply(this,arguments))/2,d=(+v.apply(this,arguments)+ +A.apply(this,arguments))/2-an/2;return[H(d)*n,q(d)*n]},i.innerRadius=function(n){return arguments.length?(l=typeof n=="function"?n:B(+n),i):l},i.outerRadius=function(n){return arguments.length?(h=typeof n=="function"?n:B(+n),i):h},i.cornerRadius=function(n){return arguments.length?(I=typeof n=="function"?n:B(+n),i):I},i.padRadius=function(n){return arguments.length?(D=n==null?null:typeof n=="function"?n:B(+n),i):D},i.startAngle=function(n){return arguments.length?(v=typeof n=="function"?n:B(+n),i):v},i.endAngle=function(n){return arguments.length?(A=typeof n=="function"?n:B(+n),i):A},i.padAngle=function(n){return arguments.length?(C=typeof n=="function"?n:B(+n),i):C},i.context=function(n){return arguments.length?(a=n??null,i):a},i}export{hn as d};