iterate-plugin 2.8.1 → 2.8.3

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.
package/lib/client.js CHANGED
@@ -2,11 +2,9 @@ window.__ModuleLoader__.load({ id: "iterate-plugin", factory: (require) => {
2
2
  var module = { exports: {} };
3
3
  var exports = module.exports;
4
4
  "use strict";
5
- var __create = Object.create;
6
5
  var __defProp = Object.defineProperty;
7
6
  var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
8
7
  var __getOwnPropNames = Object.getOwnPropertyNames;
9
- var __getProtoOf = Object.getPrototypeOf;
10
8
  var __hasOwnProp = Object.prototype.hasOwnProperty;
11
9
  var __export = (target, all) => {
12
10
  for (var name2 in all)
@@ -20,14 +18,6 @@ var __copyProps = (to, from, except, desc) => {
20
18
  }
21
19
  return to;
22
20
  };
23
- var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
24
- // If the importer is in node compatibility mode or this is not an ESM
25
- // file that has been converted to a CommonJS file using a Babel-
26
- // compatible transform (i.e. "__esModule" has not been set), then set
27
- // "default" to the CommonJS "module.exports" for node compatibility.
28
- isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
29
- mod
30
- ));
31
21
  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
32
22
 
33
23
  // src/client/index.ts
@@ -38,7 +28,6 @@ __export(index_exports, {
38
28
  name: () => name
39
29
  });
40
30
  module.exports = __toCommonJS(index_exports);
41
- var React = __toESM(require("react"), 1);
42
31
 
43
32
  // lib/parse.js
44
33
  var SEVERITY_ORDER = ["critical", "high", "medium", "low"];
@@ -682,6 +671,7 @@ function buildRuntimeStatusGuide() {
682
671
  }
683
672
 
684
673
  // src/client/index.ts
674
+ var React = require("react");
685
675
  var name = "iterate-plugin";
686
676
  var inject = ["slots", "theme"];
687
677
  var PLUGIN_TAG = "iterate-ui";
@@ -1004,8 +994,7 @@ function TrendChart({ points }) {
1004
994
  }
1005
995
  function ConvergenceDashboard(props) {
1006
996
  const [pulseKey, setPulseKey] = React.useState(0);
1007
- const useSession = props && typeof props.useSession === "function" ? props.useSession : null;
1008
- const session = useSession ? useSession((s) => s) : props && props.session ? props.session : null;
997
+ const session = props && props.session ? props.session : null;
1009
998
  const report = latestReport(session);
1010
999
  React.useEffect(() => {
1011
1000
  if (!report) return;
package/package.json CHANGED
@@ -1,17 +1,16 @@
1
1
  {
2
2
  "name": "iterate-plugin",
3
- "version": "2.8.1",
3
+ "version": "2.8.3",
4
4
  "description": "dsh plugin that turns the iterate skill into an autonomous closed-loop harness: plan -> parallel review xN -> atomic fixes -> validate -> loop -> auto-stop, plus a dry-run pure-review mode with multi-round convergence and a meta-review that audits the report and emits a final review report.",
5
5
  "type": "module",
6
6
  "license": "MIT",
7
7
  "repository": {
8
8
  "type": "git",
9
- "url": "https://github.com/jingzhao-l/iterate-skill.git",
10
- "directory": "harness/iterate-plugin"
9
+ "url": "https://github.com/jingzhao-l/iterate-plugin.git"
11
10
  },
12
- "homepage": "https://github.com/jingzhao-l/iterate-skill#readme",
11
+ "homepage": "https://github.com/jingzhao-l/iterate-plugin#readme",
13
12
  "bugs": {
14
- "url": "https://github.com/jingzhao-l/iterate-skill/issues"
13
+ "url": "https://github.com/jingzhao-l/iterate-plugin/issues"
15
14
  },
16
15
  "keywords": [
17
16
  "dsh-plugin",
@@ -32,7 +32,12 @@
32
32
  * missing slot/theme degrades gracefully instead of crashing the UI.
33
33
  */
34
34
 
35
- import * as React from 'react'
35
+ // dsh's __ModuleLoader__ provides require() to access platform modules.
36
+ // Using require() directly (not import) avoids esbuild's __toESM wrapper,
37
+ // which copies React's properties into a new object and can break internal
38
+ // bindings. Official dsh plugins (e.g. dsh-client-ui-goal) use the same pattern.
39
+ declare function require(name: string): unknown
40
+ const React = require('react') as typeof import('react')
36
41
  import {
37
42
  findReportInObject,
38
43
  scanSessionForReport,
@@ -515,17 +520,19 @@ function TrendChart({ points }: { points: Array<{ round: number; count: number }
515
520
  return React.createElement('div', { className: 'iterate-trend', title: '各轮发现数量趋势' }, ...bars)
516
521
  }
517
522
 
518
- /** Dashboard: live convergence strip above the composer. */
523
+ /** Dashboard: live convergence strip above the composer.
524
+ *
525
+ * The `conversation.input.dock` slot's owner share is `InputZone`, which
526
+ * provides `session` as a point-in-time ConversationSnapshot directly — no
527
+ * subscription needed. Per the slot contract: "Read only `session`/`input`
528
+ * off the owner share — both are point-in-time snapshots re-rendered for
529
+ * you, never subscribe."
530
+ */
519
531
  function ConvergenceDashboard(props: SlotProps) {
520
532
  const [pulseKey, setPulseKey] = React.useState(0)
521
- // useSession is a SnapshotSelectorHook it requires a selector fn (identity
522
- // returns the whole snapshot). Call it unconditionally at the top level to
523
- // satisfy the React hooks contract; the owner share (props.session) is the
524
- // fallback when the hook is absent.
525
- const useSession = props && typeof props.useSession === 'function'
526
- ? props.useSession as (sel: (s: unknown) => unknown) => unknown
527
- : null
528
- const session = useSession ? useSession((s: unknown) => s) : (props && props.session ? props.session : null)
533
+ // The `conversation.input.dock` slot owner share (InputZone) provides
534
+ // `session` as a point-in-time snapshot read it directly, never subscribe.
535
+ const session = props && props.session ? props.session : null
529
536
  const report = latestReport(session)
530
537
 
531
538
  React.useEffect(() => {