@pelotto-tech/bellwether 0.0.0-stage → 0.1.0

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 (114) hide show
  1. package/LICENSE +202 -0
  2. package/README.md +229 -2
  3. package/dist/agents/claude.d.ts +8 -0
  4. package/dist/agents/claude.js +63 -0
  5. package/dist/agents/claude.js.map +1 -0
  6. package/dist/agents/copilot.d.ts +7 -0
  7. package/dist/agents/copilot.js +39 -0
  8. package/dist/agents/copilot.js.map +1 -0
  9. package/dist/agents/index.d.ts +5 -0
  10. package/dist/agents/index.js +8 -0
  11. package/dist/agents/index.js.map +1 -0
  12. package/dist/agents/paths.d.ts +2 -0
  13. package/dist/agents/paths.js +5 -0
  14. package/dist/agents/paths.js.map +1 -0
  15. package/dist/agents/types.d.ts +29 -0
  16. package/dist/agents/types.js +2 -0
  17. package/dist/agents/types.js.map +1 -0
  18. package/dist/index.d.ts +5 -0
  19. package/dist/index.js +4 -0
  20. package/dist/index.js.map +1 -0
  21. package/dist/install.d.ts +38 -0
  22. package/dist/install.js +104 -0
  23. package/dist/install.js.map +1 -0
  24. package/dist/json-file.d.ts +12 -0
  25. package/dist/json-file.js +33 -0
  26. package/dist/json-file.js.map +1 -0
  27. package/dist/main.d.ts +2 -0
  28. package/dist/main.js +75 -0
  29. package/dist/main.js.map +1 -0
  30. package/dist/roles.d.ts +3 -0
  31. package/dist/roles.js +13 -0
  32. package/dist/roles.js.map +1 -0
  33. package/dist/run.d.ts +9 -0
  34. package/dist/run.js +41 -0
  35. package/dist/run.js.map +1 -0
  36. package/dist/skill.d.ts +9 -0
  37. package/dist/skill.js +65 -0
  38. package/dist/skill.js.map +1 -0
  39. package/package.json +52 -3
  40. package/runtime/adapter/dist/actions.d.ts +15 -0
  41. package/runtime/adapter/dist/actions.js +7 -0
  42. package/runtime/adapter/dist/actions.js.map +1 -0
  43. package/runtime/adapter/dist/bin.d.ts +2 -0
  44. package/runtime/adapter/dist/bin.js +121 -0
  45. package/runtime/adapter/dist/bin.js.map +1 -0
  46. package/runtime/adapter/dist/config.d.ts +41 -0
  47. package/runtime/adapter/dist/config.js +71 -0
  48. package/runtime/adapter/dist/config.js.map +1 -0
  49. package/runtime/adapter/dist/core.d.ts +8 -0
  50. package/runtime/adapter/dist/core.js +10 -0
  51. package/runtime/adapter/dist/core.js.map +1 -0
  52. package/runtime/adapter/dist/herdr/connection.d.ts +34 -0
  53. package/runtime/adapter/dist/herdr/connection.js +137 -0
  54. package/runtime/adapter/dist/herdr/connection.js.map +1 -0
  55. package/runtime/adapter/dist/herdr/index.d.ts +5 -0
  56. package/runtime/adapter/dist/herdr/index.js +5 -0
  57. package/runtime/adapter/dist/herdr/index.js.map +1 -0
  58. package/runtime/adapter/dist/herdr/mapper.d.ts +27 -0
  59. package/runtime/adapter/dist/herdr/mapper.js +141 -0
  60. package/runtime/adapter/dist/herdr/mapper.js.map +1 -0
  61. package/runtime/adapter/dist/herdr/paths.d.ts +29 -0
  62. package/runtime/adapter/dist/herdr/paths.js +89 -0
  63. package/runtime/adapter/dist/herdr/paths.js.map +1 -0
  64. package/runtime/adapter/dist/herdr/protocol.d.ts +102 -0
  65. package/runtime/adapter/dist/herdr/protocol.js +19 -0
  66. package/runtime/adapter/dist/herdr/protocol.js.map +1 -0
  67. package/runtime/adapter/dist/herdr/source.d.ts +99 -0
  68. package/runtime/adapter/dist/herdr/source.js +316 -0
  69. package/runtime/adapter/dist/herdr/source.js.map +1 -0
  70. package/runtime/adapter/dist/index.d.ts +6 -0
  71. package/runtime/adapter/dist/index.js +7 -0
  72. package/runtime/adapter/dist/index.js.map +1 -0
  73. package/runtime/adapter/dist/mock.d.ts +33 -0
  74. package/runtime/adapter/dist/mock.js +130 -0
  75. package/runtime/adapter/dist/mock.js.map +1 -0
  76. package/runtime/adapter/dist/random.d.ts +3 -0
  77. package/runtime/adapter/dist/random.js +18 -0
  78. package/runtime/adapter/dist/random.js.map +1 -0
  79. package/runtime/adapter/dist/recording.d.ts +22 -0
  80. package/runtime/adapter/dist/recording.js +52 -0
  81. package/runtime/adapter/dist/recording.js.map +1 -0
  82. package/runtime/adapter/dist/roles.d.ts +16 -0
  83. package/runtime/adapter/dist/roles.js +21 -0
  84. package/runtime/adapter/dist/roles.js.map +1 -0
  85. package/runtime/adapter/dist/rollup.d.ts +5 -0
  86. package/runtime/adapter/dist/rollup.js +18 -0
  87. package/runtime/adapter/dist/rollup.js.map +1 -0
  88. package/runtime/adapter/dist/scrub.d.ts +9 -0
  89. package/runtime/adapter/dist/scrub.js +56 -0
  90. package/runtime/adapter/dist/scrub.js.map +1 -0
  91. package/runtime/adapter/dist/server.d.ts +47 -0
  92. package/runtime/adapter/dist/server.js +119 -0
  93. package/runtime/adapter/dist/server.js.map +1 -0
  94. package/runtime/adapter/dist/source.d.ts +20 -0
  95. package/runtime/adapter/dist/source.js +14 -0
  96. package/runtime/adapter/dist/source.js.map +1 -0
  97. package/runtime/adapter/dist/types.d.ts +66 -0
  98. package/runtime/adapter/dist/types.js +23 -0
  99. package/runtime/adapter/dist/types.js.map +1 -0
  100. package/runtime/adapter/dist/world.d.ts +9 -0
  101. package/runtime/adapter/dist/world.js +64 -0
  102. package/runtime/adapter/dist/world.js.map +1 -0
  103. package/runtime/adapter/package.json +37 -0
  104. package/runtime/renderer/dist/assets/BitmapFont-CrMu5gVf.js +6 -0
  105. package/runtime/renderer/dist/assets/CanvasRenderer-BJUwGe2K.js +1 -0
  106. package/runtime/renderer/dist/assets/Filter-CYMWP98C.js +1 -0
  107. package/runtime/renderer/dist/assets/RenderTargetSystem-CUv6yCH8.js +184 -0
  108. package/runtime/renderer/dist/assets/WebGLRenderer-DT-aSeEc.js +156 -0
  109. package/runtime/renderer/dist/assets/WebGPURenderer-CV0poHB6.js +75 -0
  110. package/runtime/renderer/dist/assets/browserAll-BpE2Jy31.js +14 -0
  111. package/runtime/renderer/dist/assets/getTexelRangeRects-BCdgu8cV.js +195 -0
  112. package/runtime/renderer/dist/assets/index-BgIYSiaY.js +296 -0
  113. package/runtime/renderer/dist/assets/webworkerAll-DEtPMT-J.js +83 -0
  114. package/runtime/renderer/dist/index.html +36 -0
@@ -0,0 +1,83 @@
1
+ import{M as w,y as B,e as O,aH as A,ah as k,D as _,G as M,b as U,a8 as E,a3 as z,ai as F,T as v,ay as V,V as q,w as W,W as P}from"./index-BgIYSiaY.js";import{F as L}from"./Filter-CYMWP98C.js";const b=new w;function G(g,e){e.clear();const t=e.matrix;for(let r=0;r<g.length;r++){const i=g[r];if(i.globalDisplayStatus<7)continue;const o=i.renderGroup??i.parentRenderGroup;o?.isCachedAsTexture?e.matrix=b.copyFrom(o.textureOffsetInverseTransform).append(i.worldTransform):o?._parentCacheAsTextureRenderGroup?e.matrix=b.copyFrom(o._parentCacheAsTextureRenderGroup.inverseWorldTransform).append(i.groupTransform):e.matrix=i.worldTransform,e.addBounds(i.bounds)}return e.matrix=t,e}function y(g){return typeof g.getCanvasFilterString=="function"}class Y{constructor(){this.skip=!1,this.useClip=!1,this.filters=null,this.container=null,this.bounds=new k,this.cssFilterString=""}}class R{constructor(e){this._filterStack=[],this._filterStackIndex=0,this._savedStates=[],this._alphaMultiplier=1,this._warnedFilterTypes=new Set,this.renderer=e}push(e){const t=this._pushFilterFrame(),r=e.filterEffect.filters;if(t.skip=!1,t.useClip=!1,t.filters=r,t.container=e.container,t.cssFilterString="",r.every(s=>!s.enabled)){t.skip=!0;return}const i=[],o=1;for(const s of r){if(!s.enabled)continue;if(!y(s)){this._warnUnsupportedFilter(s);continue}const a=s.getCanvasFilterString();if(a===null){this._warnUnsupportedFilter(s);continue}a&&i.push(a)}if(i.length===0&&o===1){t.skip=!0;return}t.cssFilterString=i.join(" "),this._calculateFilterArea(e,t.bounds),t.useClip=!!e.filterEffect.filterArea;const n=this.renderer.canvasContext.activeContext,l=n.filter||"none";if(this._savedStates.push({filter:l,alphaMultiplier:this._alphaMultiplier}),t.useClip&&Number.isFinite(t.bounds.width)&&Number.isFinite(t.bounds.height)&&t.bounds.width>0&&t.bounds.height>0){const s=this.renderer.canvasContext.activeResolution||1;n.save(),n.setTransform(1,0,0,1,0,0),n.beginPath(),n.rect(t.bounds.x*s,t.bounds.y*s,t.bounds.width*s,t.bounds.height*s),n.clip()}else t.useClip=!1;t.cssFilterString&&(n.filter=l!=="none"?`${l} ${t.cssFilterString}`:t.cssFilterString)}pop(){const e=this._popFilterFrame();if(e.skip)return;const t=this._savedStates.pop();if(!t)return;const r=this.renderer.canvasContext.activeContext;e.useClip?r.restore():r.filter=t.filter,this._alphaMultiplier=t.alphaMultiplier}generateFilteredTexture({texture:e,filters:t}){if(!t?.length||t.every(p=>!p.enabled))return e;const r=[],i=1;for(const p of t){if(!p.enabled)continue;if(!y(p)){this._warnUnsupportedFilter(p);continue}const h=p.getCanvasFilterString();if(h===null){this._warnUnsupportedFilter(p);continue}h&&r.push(h)}if(r.length===0&&i===1)return e;const o=B.getCanvasSource(e);if(!o)return e;const n=e.frame,l=e.source._resolution??e.source.resolution??1,s=n.width,a=n.height,f=O.getOptimalCanvasAndContext(s,a,l),{canvas:c,context:u}=f;u.setTransform(1,0,0,1,0,0),u.clearRect(0,0,c.width,c.height),r.length&&(u.filter=r.join(" "));const d=n.x*l,m=n.y*l,x=s*l,T=a*l;return u.drawImage(o,d,m,x,T,0,0,x,T),u.filter="none",u.globalAlpha=1,A(c,s,a,l)}_calculateFilterArea(e,t){if(e.renderables?G(e.renderables,t):e.filterEffect.filterArea?(t.clear(),t.addRect(e.filterEffect.filterArea),t.applyMatrix(e.container.worldTransform)):e.container.getFastGlobalBounds(!0,t),e.container){const i=(e.container.renderGroup||e.container.parentRenderGroup)?.cacheToLocalTransform;i&&t.applyMatrix(i)}}_warnUnsupportedFilter(e){const t=e?.constructor?.name||"Filter";this._warnedFilterTypes.has(t)||(this._warnedFilterTypes.add(t),console.warn(`CanvasRenderer: filter "${t}" is not supported in Canvas2D and will be skipped.`))}get alphaMultiplier(){return this._alphaMultiplier}_pushFilterFrame(){let e=this._filterStack[this._filterStackIndex];return e||(e=this._filterStack[this._filterStackIndex]=new Y),this._filterStackIndex++,e}_popFilterFrame(){return this._filterStackIndex<=0?this._filterStack[0]:(this._filterStackIndex--,this._filterStack[this._filterStackIndex])}destroy(){this._filterStack=null,this._savedStates=null,this._warnedFilterTypes=null,this._alphaMultiplier=1}}R.extension={type:[_.CanvasSystem],name:"filter"};var D=`in vec2 aPosition;
2
+ out vec2 vTextureCoord;
3
+
4
+ uniform vec4 uInputSize;
5
+ uniform vec4 uOutputFrame;
6
+ uniform vec4 uOutputTexture;
7
+
8
+ vec4 filterVertexPosition( void )
9
+ {
10
+ vec2 position = aPosition * uOutputFrame.zw + uOutputFrame.xy;
11
+
12
+ position.x = position.x * (2.0 / uOutputTexture.x) - 1.0;
13
+ position.y = position.y * (2.0*uOutputTexture.z / uOutputTexture.y) - uOutputTexture.z;
14
+
15
+ return vec4(position, 0.0, 1.0);
16
+ }
17
+
18
+ vec2 filterTextureCoord( void )
19
+ {
20
+ return aPosition * (uOutputFrame.zw * uInputSize.zw);
21
+ }
22
+
23
+ void main(void)
24
+ {
25
+ gl_Position = filterVertexPosition();
26
+ vTextureCoord = filterTextureCoord();
27
+ }
28
+ `,X=`in vec2 vTextureCoord;
29
+ out vec4 finalColor;
30
+ uniform sampler2D uTexture;
31
+ void main() {
32
+ finalColor = texture(uTexture, vTextureCoord);
33
+ }
34
+ `,S=`struct GlobalFilterUniforms {
35
+ uInputSize: vec4<f32>,
36
+ uInputPixel: vec4<f32>,
37
+ uInputClamp: vec4<f32>,
38
+ uOutputFrame: vec4<f32>,
39
+ uGlobalFrame: vec4<f32>,
40
+ uOutputTexture: vec4<f32>,
41
+ };
42
+
43
+ @group(0) @binding(0) var <uniform> gfu: GlobalFilterUniforms;
44
+ @group(0) @binding(1) var uTexture: texture_2d<f32>;
45
+ @group(0) @binding(2) var uSampler: sampler;
46
+
47
+ struct VSOutput {
48
+ @builtin(position) position: vec4<f32>,
49
+ @location(0) uv: vec2<f32>
50
+ };
51
+
52
+ fn filterVertexPosition(aPosition: vec2<f32>) -> vec4<f32>
53
+ {
54
+ var position = aPosition * gfu.uOutputFrame.zw + gfu.uOutputFrame.xy;
55
+
56
+ position.x = position.x * (2.0 / gfu.uOutputTexture.x) - 1.0;
57
+ position.y = position.y * (2.0 * gfu.uOutputTexture.z / gfu.uOutputTexture.y) - gfu.uOutputTexture.z;
58
+
59
+ return vec4(position, 0.0, 1.0);
60
+ }
61
+
62
+ fn filterTextureCoord(aPosition: vec2<f32>) -> vec2<f32>
63
+ {
64
+ return aPosition * (gfu.uOutputFrame.zw * gfu.uInputSize.zw);
65
+ }
66
+
67
+ @vertex
68
+ fn mainVertex(
69
+ @location(0) aPosition: vec2<f32>,
70
+ ) -> VSOutput {
71
+ return VSOutput(
72
+ filterVertexPosition(aPosition),
73
+ filterTextureCoord(aPosition)
74
+ );
75
+ }
76
+
77
+ @fragment
78
+ fn mainFragment(
79
+ @location(0) uv: vec2<f32>,
80
+ ) -> @location(0) vec4<f32> {
81
+ return textureSample(uTexture, uSampler, uv);
82
+ }
83
+ `;class j extends L{constructor(){const e=M.from({vertex:{source:S,entryPoint:"mainVertex"},fragment:{source:S,entryPoint:"mainFragment"},name:"passthrough-filter"}),t=U.from({vertex:D,fragment:X,name:"passthrough-filter"});super({gpuProgram:e,glProgram:t})}}class C{constructor(e){this._renderer=e}push(e,t,r){this._renderer.renderPipes.batch.break(r),r.add({renderPipeId:"filter",canBundle:!1,action:"pushFilter",container:t,filterEffect:e})}pop(e,t,r){this._renderer.renderPipes.batch.break(r),r.add({renderPipeId:"filter",action:"popFilter",canBundle:!1})}execute(e){e.action==="pushFilter"?this._renderer.filter.push(e):e.action==="popFilter"&&this._renderer.filter.pop()}destroy(){this._renderer=null}}C.extension={type:[_.WebGLPipes,_.WebGPUPipes,_.CanvasPipes],name:"filter"};const N=new V({attributes:{aPosition:{buffer:new Float32Array([0,0,1,0,1,1,0,1]),format:"float32x2",stride:8,offset:0}},indexBuffer:new Uint32Array([0,1,2,0,2,3])});class ${constructor(){this.skip=!1,this.inputTexture=null,this.backTexture=null,this.filters=null,this.bounds=new k,this.container=null,this.blendRequired=!1,this.outputRenderSurface=null,this.firstEnabledIndex=-1,this.lastEnabledIndex=-1}}class I{constructor(e){this._filterStackIndex=0,this._filterStack=[],this._filterGlobalUniforms=new E({uInputSize:{value:new Float32Array(4),type:"vec4<f32>"},uInputPixel:{value:new Float32Array(4),type:"vec4<f32>"},uInputClamp:{value:new Float32Array(4),type:"vec4<f32>"},uOutputFrame:{value:new Float32Array(4),type:"vec4<f32>"},uGlobalFrame:{value:new Float32Array(4),type:"vec4<f32>"},uOutputTexture:{value:new Float32Array(4),type:"vec4<f32>"}}),this._globalFilterBindGroup=new z({}),this.renderer=e}get activeBackTexture(){return this._activeFilterData?.backTexture}push(e){const t=this.renderer,r=e.filterEffect.filters,i=this._pushFilterData();i.skip=!1,i.filters=r,i.container=e.container,i.outputRenderSurface=t.renderTarget.renderSurface;const o=t.renderTarget.renderTarget.colorTexture.source,n=o.resolution,l=o.antialias;if(r.every(f=>!f.enabled)){i.skip=!0;return}const s=i.bounds;if(this._calculateFilterArea(e,s),this._calculateFilterBounds(i,t.renderTarget.rootViewPort,l,n,1),i.skip)return;const a=this._getPreviousFilterData();this._setupFilterTextures(i,s,t,a)}generateFilteredTexture({texture:e,filters:t}){if(t.every(f=>!f.enabled))return e;const r=this._pushFilterData();this._activeFilterData=r,r.skip=!1,r.filters=t;const i=e.source,o=i.resolution,n=i.antialias,l=r.bounds;if(l.clear(),l.addRect(e.frame),this._calculateFilterBounds(r,l.rectangle,n,o,0),r.skip)return this._popFilterData(),e;r.outputRenderSurface=F.getOptimalTexture({width:l.width,height:l.height,resolution:r.resolution,antialias:r.antialias}),r.backTexture=v.EMPTY,r.inputTexture=e,this.renderer.renderTarget.finishRenderPass(),this._applyFiltersToTexture(r,!0);const a=r.outputRenderSurface;return a.source.alphaMode="premultiplied-alpha",this._popFilterData(),a}pop(){const e=this.renderer,t=this._popFilterData();t.skip||(e.globalUniforms.pop(),e.renderTarget.finishRenderPass(),this._activeFilterData=t,this._applyFiltersToTexture(t,!1),t.blendRequired&&F.returnTexture(t.backTexture),F.returnTexture(t.inputTexture))}getBackTexture(e,t,r){const i=e.colorTexture.source._resolution,o=F.getOptimalTexture({width:t.width,height:t.height,resolution:i});let n=t.minX,l=t.minY;r&&(n-=r.minX,l-=r.minY),n=Math.floor(n*i),l=Math.floor(l*i);const s=Math.ceil(t.width*i),a=Math.ceil(t.height*i);return this.renderer.renderTarget.copyToTexture(e,o,{x:n,y:l},{width:s,height:a},{x:0,y:0}),o}applyFilter(e,t,r,i){const o=this.renderer,n=this._activeFilterData,s=n.outputRenderSurface===r,a=this._findClosestFilterData(),f=a?a.inputTexture.source._resolution:o.renderTarget.rootRenderTarget.colorTexture.source._resolution;let c=0,u=0;s&&a&&(c=a.bounds.minX,u=a.bounds.minY),this._updateFilterUniforms(t,r,n,c,u,f,s,i);const d=e.enabled?e:this._getPassthroughFilter();this._setupBindGroupsAndRender(d,t,o)}calculateSpriteMatrix(e,t){const r=this._activeFilterData,i=e.set(r.inputTexture._source.width,0,0,r.inputTexture._source.height,r.bounds.minX,r.bounds.minY),o=t.worldTransform.copyTo(w.shared),n=t.renderGroup||t.parentRenderGroup;return n&&n.cacheToLocalTransform&&o.prepend(n.cacheToLocalTransform),o.invert(),i.prepend(o),i.scale(1/t.texture.orig.width,1/t.texture.orig.height),i.translate(t.anchor.x,t.anchor.y),i}destroy(){this._passthroughFilter?.destroy(!0),this._passthroughFilter=null}_getPassthroughFilter(){return this._passthroughFilter??(this._passthroughFilter=new j),this._passthroughFilter}_setupBindGroupsAndRender(e,t,r){if(r.renderPipes.uniformBatch){const i=r.renderPipes.uniformBatch.getUboResource(this._filterGlobalUniforms);this._globalFilterBindGroup.setResource(i,0)}else this._globalFilterBindGroup.setResource(this._filterGlobalUniforms,0);this._globalFilterBindGroup.setResource(t.source,1),this._globalFilterBindGroup.setResource(t.source.style,2),e.groups[0]=this._globalFilterBindGroup,r.encoder.draw({geometry:N,shader:e,state:e._state,topology:"triangle-list"}),r.type===q.WEBGL&&r.renderTarget.finishRenderPass()}_setupFilterTextures(e,t,r,i){if(e.backTexture=v.EMPTY,e.inputTexture=F.getOptimalTexture({width:t.width,height:t.height,resolution:e.resolution,antialias:e.antialias}),e.blendRequired){r.renderTarget.finishRenderPass();const o=r.renderTarget.getRenderTarget(e.outputRenderSurface);e.backTexture=this.getBackTexture(o,t,i?.bounds)}r.renderTarget.bind({target:e.inputTexture,clear:!0}),r.globalUniforms.push({offset:t})}_updateFilterUniforms(e,t,r,i,o,n,l,s){const a=this._filterGlobalUniforms.uniforms,f=a.uOutputFrame,c=a.uInputSize,u=a.uInputPixel,d=a.uInputClamp,m=a.uGlobalFrame,x=a.uOutputTexture;l?(f[0]=r.bounds.minX-i,f[1]=r.bounds.minY-o):(f[0]=0,f[1]=0),f[2]=e.frame.width,f[3]=e.frame.height,c[0]=e.source.width,c[1]=e.source.height,c[2]=1/c[0],c[3]=1/c[1],u[0]=e.source.pixelWidth,u[1]=e.source.pixelHeight,u[2]=1/u[0],u[3]=1/u[1],d[0]=.5*u[2],d[1]=.5*u[3],d[2]=e.frame.width*c[2]-.5*u[2],d[3]=e.frame.height*c[3]-.5*u[3];const T=this.renderer.renderTarget.rootRenderTarget.colorTexture;m[0]=i*n,m[1]=o*n,m[2]=T.source.width*n,m[3]=T.source.height*n,t instanceof v&&(t.source.resource=null);const p=this.renderer.renderTarget.getRenderTarget(t);this.renderer.renderTarget.bind({target:t,clear:!!s}),t instanceof v?(x[0]=t.frame.width,x[1]=t.frame.height):(x[0]=p.width,x[1]=p.height),x[2]=p.isRoot?-1:1,this._filterGlobalUniforms.update()}_findClosestFilterData(){for(let e=this._filterStackIndex-1;e>=0;e--){const t=this._filterStack[e];if(!t.skip)return t}return null}_calculateFilterArea(e,t){if(e.renderables?G(e.renderables,t):e.filterEffect.filterArea?(t.clear(),t.addRect(e.filterEffect.filterArea),t.applyMatrix(e.container.worldTransform)):e.container.getFastGlobalBounds(!0,t),e.container){const i=(e.container.renderGroup||e.container.parentRenderGroup).cacheToLocalTransform;i&&t.applyMatrix(i)}}_applyFiltersToTexture(e,t){const r=e.inputTexture,i=e.bounds,o=e.filters,n=e.firstEnabledIndex,l=e.lastEnabledIndex;if(this._globalFilterBindGroup.setResource(r.source.style,2),this._globalFilterBindGroup.setResource(e.backTexture.source,3),n===l)o[n].apply(this,r,e.outputRenderSurface,t);else{let s=e.inputTexture;const a=F.getOptimalTexture({width:i.width,height:i.height,resolution:s.source._resolution});let f=a;for(let c=n;c<l;c++){const u=o[c];if(!u.enabled)continue;u.apply(this,s,f,!0);const d=s;s=f,f=d}o[l].apply(this,s,e.outputRenderSurface,t),F.returnTexture(a)}}_calculateFilterBounds(e,t,r,i,o){const n=this.renderer,l=e.bounds,s=e.filters;let a=1/0,f=0,c=!0,u=!1,d=!1,m=!0,x=-1,T=-1;for(let p=0;p<s.length;p++){const h=s[p];if(!h.enabled)continue;if(x===-1&&(x=p),T=p,a=Math.min(a,h.resolution==="inherit"?i:h.resolution),f+=h.padding,h.antialias==="off"?c=!1:h.antialias==="inherit"&&c&&(c=r),h.clipToViewport||(m=!1),!!!(h.compatibleRenderers&n.type)){d=!1;break}if(h.blendRequired&&!(n.backBuffer?.useBackBuffer??!0)){W("Blend filter requires backBuffer on WebGL renderer to be enabled. Set `useBackBuffer: true` in the renderer options."),d=!1;break}d=!0,u||(u=h.blendRequired)}if(!d){e.skip=!0;return}if(m&&l.fitBounds(0,t.width/i,0,t.height/i),l.scale(a).ceil().scale(1/a).pad((f|0)*o),!l.isPositive){e.skip=!0;return}e.antialias=c,e.resolution=a,e.blendRequired=u,e.firstEnabledIndex=x,e.lastEnabledIndex=T}_popFilterData(){return this._filterStackIndex--,this._filterStack[this._filterStackIndex]}_getPreviousFilterData(){for(let e=this._filterStackIndex-2;e>=0;e--){const t=this._filterStack[e];if(!t.skip)return t}return null}_pushFilterData(){let e=this._filterStack[this._filterStackIndex];return e||(e=this._filterStack[this._filterStackIndex]=new $),this._filterStackIndex++,e}}I.extension={type:[_.WebGLSystem,_.WebGPUSystem],name:"filter"};P.add(I,R);P.add(C);
@@ -0,0 +1,36 @@
1
+ <!doctype html>
2
+ <html lang="en">
3
+ <head>
4
+ <meta charset="utf-8" />
5
+ <meta name="viewport" content="width=device-width, initial-scale=1" />
6
+ <title>Bellwether</title>
7
+ <style>
8
+ html, body { margin: 0; height: 100%; overflow: hidden; background: transparent; }
9
+ body.backdrop { background: linear-gradient(#141826, #232a3d); }
10
+ #chip {
11
+ position: fixed; top: 8px; left: 8px; padding: 2px 8px; border-radius: 4px;
12
+ font: 12px ui-monospace, monospace; color: #cfd6e6; background: rgba(0,0,0,.45);
13
+ }
14
+ body.transparent #chip { display: none; }
15
+ #detail {
16
+ position: fixed; top: 12px; right: 12px; width: 280px; max-height: 70vh; overflow: auto;
17
+ padding: 10px 12px; border-radius: 6px; color: #e8ecf6; background: rgba(12,15,24,.88);
18
+ font: 12px ui-monospace, monospace; border: 1px solid rgba(255,255,255,.2);
19
+ }
20
+ #detail[hidden] { display: none; }
21
+ #detail h2 { margin: 0; font-size: 14px; }
22
+ #detail .sub { margin: 2px 0 8px; opacity: .7; }
23
+ #detail ul { list-style: none; margin: 0; padding: 0; }
24
+ #detail li { margin: 6px 0; }
25
+ #detail .line { opacity: .75; }
26
+ #detail-close { position: absolute; top: 6px; right: 8px; cursor: pointer; background: none; border: 0; color: inherit; font: inherit; }
27
+ .st.working { color: #3ddc84; } .st.done { color: #ffd23f; } .st.blocked { color: #ff4d4d; }
28
+ .st.idle { color: #d8d8d8; } .st.unknown { color: #7a7a7a; }
29
+ </style>
30
+ <script type="module" crossorigin src="./assets/index-BgIYSiaY.js"></script>
31
+ </head>
32
+ <body>
33
+ <div id="chip">connecting…</div>
34
+ <div id="detail" hidden><button id="detail-close" title="Back to the map (Esc)">✕</button><div id="detail-body"></div></div>
35
+ </body>
36
+ </html>