harness-everything 0.20.6 → 0.20.7

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.
@@ -10,7 +10,7 @@
10
10
  "name": "harness-everything",
11
11
  "source": "./",
12
12
  "description": "Harness OS: an orchestrated agent operating system — tier routing, circuit breaker guardrails, verification gates, WAL session memory, and self-evolving workspace rules.",
13
- "version": "0.20.6",
13
+ "version": "0.20.7",
14
14
  "author": {
15
15
  "name": "Miya Daniel"
16
16
  },
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "harness-everything",
3
3
  "description": "Harness OS: an orchestrated agent operating system — tier routing, circuit breaker guardrails, verification gates, WAL session memory, and self-evolving workspace rules.",
4
- "version": "0.20.6",
4
+ "version": "0.20.7",
5
5
  "author": {
6
6
  "name": "Miya Daniel"
7
7
  },
package/CHANGELOG.md CHANGED
@@ -2,6 +2,12 @@
2
2
 
3
3
  All notable changes to this project are documented in this file.
4
4
 
5
+ ## [0.20.7](https://github.com/dyphn1/Harness-everything/compare/v0.20.6...v0.20.7) (2026-09-22)
6
+
7
+ ### Bug Fixes
8
+
9
+ * **distribution:** emit per-host progress so plugin-sync does not look hung ([d746871](https://github.com/dyphn1/Harness-everything/commit/d746871b7a39c10decc841e9982b27982271df1e)), closes [#238](https://github.com/dyphn1/Harness-everything/issues/238)
10
+
5
11
  ## [0.20.6](https://github.com/dyphn1/Harness-everything/compare/v0.20.5...v0.20.6) (2026-09-22)
6
12
 
7
13
  ### Bug Fixes
@@ -238,6 +238,29 @@ assert.strictEqual(findPlugin({ plugins: [{ id: 'harness-everything@harness-ever
238
238
  assert.ok(result.results.every(entry => entry.reasonCode === 'cli-not-found'), 'an absent CLI must stay distinguishable from a capability boundary');
239
239
  }
240
240
 
241
+ {
242
+ // Each host sync is fully synchronous and does real network I/O; without a
243
+ // progress notice emitted before that work starts, the terminal stays
244
+ // silent for the whole run, which is indistinguishable from a hang.
245
+ const events = [];
246
+ const fake = fakeHost({ claudeInstalled: true, codexInstalled: true });
247
+ const runner = (command, args, opts) => {
248
+ events.push(`call:${command}`);
249
+ return fake.runner(command, args, opts);
250
+ };
251
+ const result = sync({ host: 'all', repository: 'dyphn1/Harness-everything', ref: 'main' }, {
252
+ runner,
253
+ commandAvailable: () => true,
254
+ log: () => {},
255
+ warn: message => events.push(`warn:${message}`)
256
+ });
257
+ assert.strictEqual(result.failed, 0);
258
+ assert.ok(events.includes('warn:[...] claude: syncing'), 'a claude progress notice must be emitted');
259
+ assert.ok(events.includes('warn:[...] codex: syncing'), 'a codex progress notice must be emitted');
260
+ assert.ok(events.indexOf('warn:[...] claude: syncing') < events.indexOf('call:claude'), 'the claude notice must be emitted before its first host command, not buffered until the run finishes');
261
+ assert.ok(events.indexOf('warn:[...] codex: syncing') < events.indexOf('call:codex'), 'the codex notice must be emitted before its first host command');
262
+ }
263
+
241
264
  // resolveOnPath() is pure filesystem logic (platform choice happens only at
242
265
  // the defaultRunner call site), so its directory-order-first contract runs
243
266
  // on every CI OS, not only Windows.
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "harness-enforcement",
3
3
  "description": "Repository inventory for the opencode enforcement plugin and its standalone helper",
4
- "version": "0.20.6",
4
+ "version": "0.20.7",
5
5
  "runtime": "index.mjs",
6
6
  "hooks": {
7
7
  "verify": "hooks/verify.js"
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "harness-everything",
3
- "version": "0.20.6",
3
+ "version": "0.20.7",
4
4
  "description": "Harness OS: An Orchestrated Agent Operating System for AI-driven Development",
5
5
  "main": "harness-everything/scripts/bootstrap.js",
6
6
  "bin": {
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "harness-everything",
3
- "version": "0.20.6",
3
+ "version": "0.20.7",
4
4
  "description": "Invariant-first engineering harness for routing, verification, and failure recovery while preserving agent autonomy.",
5
5
  "author": {
6
6
  "name": "Miya Daniel",
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "$schema": "https://agent-plugins.org/schemas/1.0.0/plugin.schema.json",
3
3
  "name": "harness-everything",
4
- "version": "0.20.6",
4
+ "version": "0.20.7",
5
5
  "description": "Invariant-first engineering harness for routing, verification, and failure recovery while preserving agent autonomy.",
6
6
  "author": {
7
7
  "name": "Miya Daniel",
package/sbom.cdx.json CHANGED
@@ -2,23 +2,23 @@
2
2
  "$schema": "https://cyclonedx.org/schema/bom-1.7.schema.json",
3
3
  "bomFormat": "CycloneDX",
4
4
  "specVersion": "1.7",
5
- "serialNumber": "urn:uuid:dad0ee6f-3060-5d2e-a044-10420f0fa6e3",
5
+ "serialNumber": "urn:uuid:12ceeeac-7f99-5fb2-82a3-768d5d708e00",
6
6
  "version": 1,
7
7
  "metadata": {
8
- "timestamp": "2026-09-22T15:27:33.748Z",
8
+ "timestamp": "2026-09-22T16:17:00.105Z",
9
9
  "tools": [
10
10
  {
11
11
  "vendor": "Harness Everything",
12
12
  "name": "generate-sbom.js",
13
- "version": "0.20.6"
13
+ "version": "0.20.7"
14
14
  }
15
15
  ],
16
16
  "component": {
17
17
  "type": "application",
18
- "bom-ref": "pkg:npm/harness-everything@0.20.6",
18
+ "bom-ref": "pkg:npm/harness-everything@0.20.7",
19
19
  "name": "harness-everything",
20
- "version": "0.20.6",
21
- "purl": "pkg:npm/harness-everything@0.20.6"
20
+ "version": "0.20.7",
21
+ "purl": "pkg:npm/harness-everything@0.20.7"
22
22
  }
23
23
  },
24
24
  "components": [
@@ -1999,7 +1999,7 @@
1999
1999
  ]
2000
2000
  },
2001
2001
  {
2002
- "ref": "pkg:npm/harness-everything@0.20.6",
2002
+ "ref": "pkg:npm/harness-everything@0.20.7",
2003
2003
  "dependsOn": [
2004
2004
  "pkg:npm/%40commitlint/cli@19.8.1",
2005
2005
  "pkg:npm/%40commitlint/config-conventional@19.8.1",
@@ -575,7 +575,15 @@ Options:
575
575
  function sync(options, dependencies = {}) {
576
576
  const context = createContext({ ...options, ...dependencies });
577
577
  const hosts = context.host === 'all' ? ['claude', 'codex'] : [context.host];
578
- const results = hosts.map(host => host === 'claude' ? syncClaude(context) : syncCodex(context));
578
+ // Each host sync is fully synchronous and the marketplace update/refresh
579
+ // step does real network I/O (observed ~10s+ for Claude alone), so without
580
+ // this the terminal stays completely silent until every host finishes —
581
+ // indistinguishable from a hang. This goes to stderr (context.warn), not
582
+ // stdout, so `--json` consumers' stdout stays pure JSON.
583
+ const results = hosts.map(host => {
584
+ context.warn(`[...] ${host}: syncing`);
585
+ return host === 'claude' ? syncClaude(context) : syncCodex(context);
586
+ });
579
587
  const summary = {
580
588
  repository: context.repository,
581
589
  marketplace: context.marketplace,