@useorgx/openclaw-plugin 0.7.11 → 0.7.15

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 (189) hide show
  1. package/README.md +94 -122
  2. package/dashboard/dist/assets/0RUEVzJa.js +1 -0
  3. package/dashboard/dist/assets/0RUEVzJa.js.br +0 -0
  4. package/dashboard/dist/assets/0RUEVzJa.js.gz +0 -0
  5. package/dashboard/dist/assets/3TtV4moZ.js +1 -0
  6. package/dashboard/dist/assets/3TtV4moZ.js.br +0 -0
  7. package/dashboard/dist/assets/3TtV4moZ.js.gz +0 -0
  8. package/dashboard/dist/assets/3VwNyxUf.js +1 -0
  9. package/dashboard/dist/assets/3VwNyxUf.js.br +0 -0
  10. package/dashboard/dist/assets/3VwNyxUf.js.gz +0 -0
  11. package/dashboard/dist/assets/{beHYBbh6.js → 7DhYqBrM.js} +2 -2
  12. package/dashboard/dist/assets/7DhYqBrM.js.br +0 -0
  13. package/dashboard/dist/assets/7DhYqBrM.js.gz +0 -0
  14. package/dashboard/dist/assets/{tcEHYcbW.js → BCudUvwg.js} +1 -1
  15. package/dashboard/dist/assets/BCudUvwg.js.br +0 -0
  16. package/dashboard/dist/assets/BCudUvwg.js.gz +0 -0
  17. package/dashboard/dist/assets/BV0BcV1u.js +53 -0
  18. package/dashboard/dist/assets/BV0BcV1u.js.br +0 -0
  19. package/dashboard/dist/assets/BV0BcV1u.js.gz +0 -0
  20. package/dashboard/dist/assets/BVvffj0x.js +1 -0
  21. package/dashboard/dist/assets/BVvffj0x.js.br +0 -0
  22. package/dashboard/dist/assets/BVvffj0x.js.gz +0 -0
  23. package/dashboard/dist/assets/BiOgVMED.js +1 -0
  24. package/dashboard/dist/assets/BiOgVMED.js.br +0 -0
  25. package/dashboard/dist/assets/BiOgVMED.js.gz +0 -0
  26. package/dashboard/dist/assets/BjK42gtU.js +1 -0
  27. package/dashboard/dist/assets/BjK42gtU.js.br +0 -0
  28. package/dashboard/dist/assets/BjK42gtU.js.gz +0 -0
  29. package/dashboard/dist/assets/C-MOJWHs.js +1 -0
  30. package/dashboard/dist/assets/C-MOJWHs.js.br +0 -0
  31. package/dashboard/dist/assets/C-MOJWHs.js.gz +0 -0
  32. package/dashboard/dist/assets/{CD-q5mdP.js → C91KLKit.js} +1 -1
  33. package/dashboard/dist/assets/C91KLKit.js.br +0 -0
  34. package/dashboard/dist/assets/C91KLKit.js.gz +0 -0
  35. package/dashboard/dist/assets/{AqVoI3SF.js → C9fvfXmS.js} +1 -1
  36. package/dashboard/dist/assets/C9fvfXmS.js.br +0 -0
  37. package/dashboard/dist/assets/C9fvfXmS.js.gz +0 -0
  38. package/dashboard/dist/assets/CFZ4Swr5.js +1 -0
  39. package/dashboard/dist/assets/CFZ4Swr5.js.br +0 -0
  40. package/dashboard/dist/assets/CFZ4Swr5.js.gz +0 -0
  41. package/dashboard/dist/assets/{DCP-C7fn.js → CGj8kRhg.js} +1 -1
  42. package/dashboard/dist/assets/CGj8kRhg.js.br +0 -0
  43. package/dashboard/dist/assets/CGj8kRhg.js.gz +0 -0
  44. package/dashboard/dist/assets/CJjEAGFN.js +1 -0
  45. package/dashboard/dist/assets/CJjEAGFN.js.br +0 -0
  46. package/dashboard/dist/assets/CJjEAGFN.js.gz +0 -0
  47. package/dashboard/dist/assets/CKrH5fYO.js +1 -0
  48. package/dashboard/dist/assets/CKrH5fYO.js.br +0 -0
  49. package/dashboard/dist/assets/CKrH5fYO.js.gz +0 -0
  50. package/dashboard/dist/assets/CMTTPXch.js +1 -0
  51. package/dashboard/dist/assets/CMTTPXch.js.br +0 -0
  52. package/dashboard/dist/assets/CMTTPXch.js.gz +0 -0
  53. package/dashboard/dist/assets/CSlBSRyv.js +1 -0
  54. package/dashboard/dist/assets/CSlBSRyv.js.br +0 -0
  55. package/dashboard/dist/assets/CSlBSRyv.js.gz +0 -0
  56. package/dashboard/dist/assets/CnPC783_.js +1 -0
  57. package/dashboard/dist/assets/CnPC783_.js.br +0 -0
  58. package/dashboard/dist/assets/CnPC783_.js.gz +0 -0
  59. package/dashboard/dist/assets/Ctw95IkC.js +1 -0
  60. package/dashboard/dist/assets/Ctw95IkC.js.br +0 -0
  61. package/dashboard/dist/assets/Ctw95IkC.js.gz +0 -0
  62. package/dashboard/dist/assets/DHz-aQPw.js +1 -0
  63. package/dashboard/dist/assets/DHz-aQPw.js.br +0 -0
  64. package/dashboard/dist/assets/DHz-aQPw.js.gz +0 -0
  65. package/dashboard/dist/assets/DNX2foSJ.css +1 -0
  66. package/dashboard/dist/assets/DNX2foSJ.css.br +0 -0
  67. package/dashboard/dist/assets/DNX2foSJ.css.gz +0 -0
  68. package/dashboard/dist/assets/Dj2k1r16.js +8 -0
  69. package/dashboard/dist/assets/Dj2k1r16.js.br +0 -0
  70. package/dashboard/dist/assets/Dj2k1r16.js.gz +0 -0
  71. package/dashboard/dist/assets/DxUw4FMR.js +212 -0
  72. package/dashboard/dist/assets/DxUw4FMR.js.br +0 -0
  73. package/dashboard/dist/assets/DxUw4FMR.js.gz +0 -0
  74. package/dashboard/dist/assets/T2NFtzAv.js +1 -0
  75. package/dashboard/dist/assets/T2NFtzAv.js.br +0 -0
  76. package/dashboard/dist/assets/T2NFtzAv.js.gz +0 -0
  77. package/dashboard/dist/assets/cX2e-TLi.js +1 -0
  78. package/dashboard/dist/assets/cX2e-TLi.js.br +0 -0
  79. package/dashboard/dist/assets/cX2e-TLi.js.gz +0 -0
  80. package/dashboard/dist/assets/eeHXe_OQ.js +9 -0
  81. package/dashboard/dist/assets/eeHXe_OQ.js.br +0 -0
  82. package/dashboard/dist/assets/eeHXe_OQ.js.gz +0 -0
  83. package/dashboard/dist/assets/{Du1wfrXa.js → gZr_xKlA.js} +2 -2
  84. package/dashboard/dist/assets/gZr_xKlA.js.br +0 -0
  85. package/dashboard/dist/assets/gZr_xKlA.js.gz +0 -0
  86. package/dashboard/dist/brand/control-tower.png +0 -0
  87. package/dashboard/dist/brand/design-codex.png +0 -0
  88. package/dashboard/dist/brand/engineering-autopilot.png +0 -0
  89. package/dashboard/dist/brand/launch-captain.png +0 -0
  90. package/dashboard/dist/brand/orgx-logo.png +0 -0
  91. package/dashboard/dist/brand/pipeline-intelligence.png +0 -0
  92. package/dashboard/dist/brand/product-orchestrator.png +0 -0
  93. package/dashboard/dist/brand/xandy-orchestrator.png +0 -0
  94. package/dashboard/dist/index.html +8 -6
  95. package/dashboard/dist/index.html.br +0 -0
  96. package/dashboard/dist/index.html.gz +0 -0
  97. package/dist/hash-utils.d.ts +1 -0
  98. package/dist/hash-utils.js +4 -0
  99. package/dist/http/helpers/auto-continue-engine.js +124 -67
  100. package/dist/http/helpers/autopilot-slice-utils.js +112 -66
  101. package/dist/http/helpers/hash-utils.d.ts +1 -1
  102. package/dist/http/helpers/hash-utils.js +1 -1
  103. package/dist/http/helpers/mission-control.js +5 -2
  104. package/dist/http/helpers/queue-constants.d.ts +37 -0
  105. package/dist/http/helpers/queue-constants.js +34 -0
  106. package/dist/http/helpers/slice-experience-v2.js +2 -5
  107. package/dist/http/helpers/slice-run-projections.js +2 -5
  108. package/dist/http/helpers/workspace-scope.js +4 -3
  109. package/dist/http/index.js +101 -60
  110. package/dist/http/routes/chat.js +1 -21
  111. package/dist/http/routes/live-snapshot.js +4 -23
  112. package/dist/http/routes/mission-control-actions.js +2 -18
  113. package/dist/http/routes/mission-control-read.js +4 -107
  114. package/dist/lib/type-coercion.d.ts +10 -0
  115. package/dist/lib/type-coercion.js +82 -0
  116. package/dist/mcp-http-handler.js +14 -2
  117. package/dist/openclaw.plugin.json +1 -1
  118. package/dist/services/experiment-randomization.js +9 -2
  119. package/openclaw.plugin.json +1 -1
  120. package/package.json +3 -2
  121. package/dashboard/dist/assets/AqVoI3SF.js.br +0 -0
  122. package/dashboard/dist/assets/AqVoI3SF.js.gz +0 -0
  123. package/dashboard/dist/assets/BC4WvnHJ.js +0 -1
  124. package/dashboard/dist/assets/BC4WvnHJ.js.br +0 -0
  125. package/dashboard/dist/assets/BC4WvnHJ.js.gz +0 -0
  126. package/dashboard/dist/assets/BG5mwTkg.js +0 -1
  127. package/dashboard/dist/assets/BG5mwTkg.js.br +0 -0
  128. package/dashboard/dist/assets/BG5mwTkg.js.gz +0 -0
  129. package/dashboard/dist/assets/BJgZIVUQ.js +0 -53
  130. package/dashboard/dist/assets/BJgZIVUQ.js.br +0 -0
  131. package/dashboard/dist/assets/BJgZIVUQ.js.gz +0 -0
  132. package/dashboard/dist/assets/BNh-XYPV.js +0 -1
  133. package/dashboard/dist/assets/BNh-XYPV.js.br +0 -0
  134. package/dashboard/dist/assets/BNh-XYPV.js.gz +0 -0
  135. package/dashboard/dist/assets/BTAEErUY.js +0 -1
  136. package/dashboard/dist/assets/BTAEErUY.js.br +0 -0
  137. package/dashboard/dist/assets/BTAEErUY.js.gz +0 -0
  138. package/dashboard/dist/assets/BepW_590.js +0 -1
  139. package/dashboard/dist/assets/BepW_590.js.br +0 -0
  140. package/dashboard/dist/assets/BepW_590.js.gz +0 -0
  141. package/dashboard/dist/assets/BerAfzjq.js +0 -1
  142. package/dashboard/dist/assets/BerAfzjq.js.br +0 -0
  143. package/dashboard/dist/assets/BerAfzjq.js.gz +0 -0
  144. package/dashboard/dist/assets/Bp3N-QL5.js +0 -212
  145. package/dashboard/dist/assets/Bp3N-QL5.js.br +0 -0
  146. package/dashboard/dist/assets/Bp3N-QL5.js.gz +0 -0
  147. package/dashboard/dist/assets/C-KIc3Wc.js +0 -1
  148. package/dashboard/dist/assets/C-KIc3Wc.js.br +0 -0
  149. package/dashboard/dist/assets/C-KIc3Wc.js.gz +0 -0
  150. package/dashboard/dist/assets/C3dZRz9P.css +0 -1
  151. package/dashboard/dist/assets/C3dZRz9P.css.br +0 -0
  152. package/dashboard/dist/assets/C3dZRz9P.css.gz +0 -0
  153. package/dashboard/dist/assets/CD-q5mdP.js.br +0 -0
  154. package/dashboard/dist/assets/CD-q5mdP.js.gz +0 -0
  155. package/dashboard/dist/assets/CL_wXqR7.js +0 -1
  156. package/dashboard/dist/assets/CL_wXqR7.js.br +0 -0
  157. package/dashboard/dist/assets/CL_wXqR7.js.gz +0 -0
  158. package/dashboard/dist/assets/CdvjC9G9.js +0 -1
  159. package/dashboard/dist/assets/CdvjC9G9.js.br +0 -0
  160. package/dashboard/dist/assets/CdvjC9G9.js.gz +0 -0
  161. package/dashboard/dist/assets/Ck2agw-s.js +0 -1
  162. package/dashboard/dist/assets/Ck2agw-s.js.br +0 -0
  163. package/dashboard/dist/assets/Ck2agw-s.js.gz +0 -0
  164. package/dashboard/dist/assets/CxQ08qFN.js +0 -9
  165. package/dashboard/dist/assets/CxQ08qFN.js.br +0 -0
  166. package/dashboard/dist/assets/CxQ08qFN.js.gz +0 -0
  167. package/dashboard/dist/assets/D2CH1H6k.js +0 -1
  168. package/dashboard/dist/assets/D2CH1H6k.js.br +0 -0
  169. package/dashboard/dist/assets/D2CH1H6k.js.gz +0 -0
  170. package/dashboard/dist/assets/D9esz7jd.js +0 -1
  171. package/dashboard/dist/assets/D9esz7jd.js.br +0 -0
  172. package/dashboard/dist/assets/D9esz7jd.js.gz +0 -0
  173. package/dashboard/dist/assets/DCP-C7fn.js.br +0 -0
  174. package/dashboard/dist/assets/DCP-C7fn.js.gz +0 -0
  175. package/dashboard/dist/assets/DJASCd69.js +0 -1
  176. package/dashboard/dist/assets/DJASCd69.js.br +0 -0
  177. package/dashboard/dist/assets/DJASCd69.js.gz +0 -0
  178. package/dashboard/dist/assets/Dm9AybAp.js +0 -1
  179. package/dashboard/dist/assets/Dm9AybAp.js.br +0 -0
  180. package/dashboard/dist/assets/Dm9AybAp.js.gz +0 -0
  181. package/dashboard/dist/assets/Du1wfrXa.js.br +0 -0
  182. package/dashboard/dist/assets/Du1wfrXa.js.gz +0 -0
  183. package/dashboard/dist/assets/beHYBbh6.js.br +0 -0
  184. package/dashboard/dist/assets/beHYBbh6.js.gz +0 -0
  185. package/dashboard/dist/assets/cNrhgGc1.js +0 -8
  186. package/dashboard/dist/assets/cNrhgGc1.js.br +0 -0
  187. package/dashboard/dist/assets/cNrhgGc1.js.gz +0 -0
  188. package/dashboard/dist/assets/tcEHYcbW.js.br +0 -0
  189. package/dashboard/dist/assets/tcEHYcbW.js.gz +0 -0
@@ -136,6 +136,13 @@ async function readRequestBodyBuffer(req) {
136
136
  return Buffer.from("", "utf8");
137
137
  return await new Promise((resolve) => {
138
138
  const chunks = [];
139
+ let settled = false;
140
+ const settle = () => {
141
+ if (settled)
142
+ return;
143
+ settled = true;
144
+ resolve(Buffer.concat(chunks));
145
+ };
139
146
  const onData = (chunk) => {
140
147
  if (typeof chunk === "string") {
141
148
  chunks.push(Buffer.from(chunk, "utf8"));
@@ -147,9 +154,14 @@ async function readRequestBodyBuffer(req) {
147
154
  chunks.push(Buffer.from(chunk));
148
155
  }
149
156
  };
150
- const onEnd = () => resolve(Buffer.concat(chunks));
151
- const onError = () => resolve(Buffer.concat(chunks));
157
+ const onEnd = () => settle();
158
+ const onError = () => settle();
152
159
  req.on?.("data", onData);
160
+ if (typeof req.once === "function") {
161
+ req.once("end", onEnd);
162
+ req.once("error", onError);
163
+ return;
164
+ }
153
165
  req.on?.("end", onEnd);
154
166
  req.on?.("error", onError);
155
167
  });
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "id": "openclaw-plugin",
3
3
  "name": "OrgX Integration",
4
- "version": "1.0.4",
4
+ "version": "1.0.7",
5
5
  "description": "Connects Clawdbot to OrgX for agent orchestration, quality gates, and model routing",
6
6
  "entry": "./index.js",
7
7
  "author": "OrgX Team",
@@ -23,8 +23,13 @@ function normalizeArms(arms) {
23
23
  if (!Array.isArray(arms) || arms.length === 0) {
24
24
  throw new Error("arms must include at least one entry");
25
25
  }
26
+ const seenIds = new Set();
26
27
  const sanitized = arms.map((arm, index) => {
27
28
  const id = sanitizeIdentifier(arm?.id, `arms[${index}].id`);
29
+ if (seenIds.has(id)) {
30
+ throw new Error(`arms[${index}].id must be unique`);
31
+ }
32
+ seenIds.add(id);
28
33
  const weight = Number.isFinite(arm?.weight) ? Number(arm.weight) : Number.NaN;
29
34
  if (!Number.isFinite(weight) || weight <= 0) {
30
35
  throw new Error(`arms[${index}].weight must be > 0`);
@@ -58,6 +63,8 @@ function sanitizeIdentifier(value, field) {
58
63
  return trimmed;
59
64
  }
60
65
  function bucketFromHash(hash) {
61
- const first53Bits = hash.slice(0, 14);
62
- return parseInt(first53Bits, 16) / MAX_UINT53;
66
+ // Keep only 53 high-order bits from the 56-bit hex prefix.
67
+ const first56Bits = parseInt(hash.slice(0, 14), 16);
68
+ const first53Bits = Math.floor(first56Bits / 8);
69
+ return first53Bits / (MAX_UINT53 + 1);
63
70
  }
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "id": "openclaw-plugin",
3
3
  "name": "OrgX Integration",
4
- "version": "1.0.4",
4
+ "version": "1.0.7",
5
5
  "description": "Connects Clawdbot to OrgX for agent orchestration, quality gates, and model routing",
6
6
  "entry": "./dist/index.js",
7
7
  "author": "OrgX Team",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@useorgx/openclaw-plugin",
3
- "version": "0.7.11",
3
+ "version": "0.7.15",
4
4
  "description": "OrgX plugin for OpenClaw — agent orchestration, quality gates, model routing, and live dashboard",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -52,6 +52,7 @@
52
52
  "verify:iwmt-cascade": "npm run build:core && node ./scripts/verify-iwmt-cascade-e2e.mjs",
53
53
  "verify:live-ui:p0": "node ./scripts/agent-browser-live-ui-p0-audit.mjs",
54
54
  "verify:conduit-mcp": "node ./scripts/verify-conduit-mcp.mjs",
55
+ "verify:repo-hygiene": "node ./scripts/verify-repo-hygiene.mjs",
55
56
  "dev:main": "node ./scripts/dev-main-sync.mjs",
56
57
  "e2e:auto-continue": "node ./scripts/e2e-auto-continue.mjs",
57
58
  "e2e:agent-suite": "npm run build:core && node ./scripts/e2e-agent-suite-kickoff-3x.mjs",
@@ -94,7 +95,7 @@
94
95
  },
95
96
  "repository": {
96
97
  "type": "git",
97
- "url": "https://github.com/useorgx/openclaw-plugin.git"
98
+ "url": "git+https://github.com/useorgx/openclaw-plugin.git"
98
99
  },
99
100
  "homepage": "https://useorgx.com",
100
101
  "bugs": {
@@ -1 +0,0 @@
1
- import{r as c,a as g}from"./cNrhgGc1.js";import{b as m,h as n}from"./Bp3N-QL5.js";function p({authToken:s=null,embedMode:a=!1,enabled:i=!0}={}){var t;const u=c.useMemo(()=>["usage-control-plane",{authToken:s,embedMode:a}],[s,a]),e=g({queryKey:u,enabled:i,queryFn:async()=>{const o=await fetch("/orgx/api/usage/control-plane/summary",{headers:m({authToken:s,embedMode:a})}),r=await o.json().catch(()=>null);if(!o.ok){const l=(r&&typeof r=="object"&&"error"in r&&typeof r.error=="string"?r.error:null)??(r&&typeof r=="object"&&"message"in r&&typeof r.message=="string"?r.message:null)??`Failed to load usage summary (${o.status})`;throw new Error(n(l))}if(!r||typeof r!="object"||!("generatedAt"in r))throw new Error(n("Usage summary response is missing required fields."));return r},refetchInterval:6e4});return{summary:e.data??null,isLoading:e.isLoading,isFetching:e.isFetching,error:((t=e.error)==null?void 0:t.message)??null,refetch:e.refetch}}export{p as u};
@@ -1 +0,0 @@
1
- import{r as o,j as e}from"./cNrhgGc1.js";import{e as l,y as p,E as h,_ as u}from"./Bp3N-QL5.js";import{DecisionQueue as b}from"./Dm9AybAp.js";import"./C-KIc3Wc.js";import"./BJgZIVUQ.js";import"./CxQ08qFN.js";import"./CD-q5mdP.js";import"./AqVoI3SF.js";function C({open:n,onClose:a,decisions:t,onApproveDecision:i,onRejectDecision:d,onApproveAll:m,onBulkDecisionAction:x}){const r=o.useMemo(()=>t.length>0?Math.max(0,...t.map(c=>c.waitingMinutes)):0,[t]),s=o.useMemo(()=>t.length>=20||r>=15?l.red:t.length>0?l.amber:l.textMuted,[t.length,r]);return e.jsx(p,{open:n,onClose:a,maxWidth:"max-w-3xl",children:e.jsxs("div",{className:"flex h-full w-full flex-col",children:[e.jsx("div",{className:"border-b border-subtle px-5 pt-5 pb-4",children:e.jsxs("div",{className:"flex items-start justify-between gap-3",children:[e.jsxs("div",{className:"min-w-0",children:[e.jsxs("h3",{className:"inline-flex items-center gap-2 text-heading font-semibold text-white",children:[e.jsx(h,{type:"decision",size:14}),e.jsx("span",{className:"truncate",children:"Decisions"}),e.jsx("span",{className:"rounded-full border px-2 py-0.5 text-caption font-semibold",style:{borderColor:`${s}30`,backgroundColor:`${s}14`,color:s},children:t.length})]}),e.jsx("p",{className:"mt-1 text-body leading-relaxed text-secondary",children:"Bulk review and resolve pending decisions."}),t.length>0&&e.jsxs("p",{className:"mt-2 text-caption text-secondary",children:["Oldest: ",e.jsxs("span",{className:"font-semibold text-white",children:[u(r)," ago"]})]})]}),e.jsx("button",{type:"button",onClick:a,className:"rounded-md border border-strong bg-white/[0.03] px-2.5 py-1.5 text-caption text-primary transition-colors hover:bg-white/[0.08]","aria-label":"Close decisions modal",children:"Close"})]})}),e.jsx("div",{className:"min-h-0 flex-1 overflow-hidden p-4",children:e.jsx(b,{decisions:t,onApproveDecision:i,onRejectDecision:d,onApproveAll:m,onBulkDecisionAction:x})})]})})}export{C as BulkDecisionsModal};