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.
- package/.claude-plugin/marketplace.json +1 -1
- package/.claude-plugin/plugin.json +1 -1
- package/CHANGELOG.md +6 -0
- package/ci/mechanism-2ao-plugin-sync.test.js +23 -0
- package/opencode-plugin/plugin.json +1 -1
- package/package.json +1 -1
- package/plugins/harness-everything/.codex-plugin/plugin.json +1 -1
- package/plugins/harness-everything/plugin.json +1 -1
- package/sbom.cdx.json +7 -7
- package/scripts/plugin-sync.js +9 -1
|
@@ -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.
|
|
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.
|
|
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.
|
package/package.json
CHANGED
|
@@ -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.
|
|
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:
|
|
5
|
+
"serialNumber": "urn:uuid:12ceeeac-7f99-5fb2-82a3-768d5d708e00",
|
|
6
6
|
"version": 1,
|
|
7
7
|
"metadata": {
|
|
8
|
-
"timestamp": "2026-09-
|
|
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.
|
|
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.
|
|
18
|
+
"bom-ref": "pkg:npm/harness-everything@0.20.7",
|
|
19
19
|
"name": "harness-everything",
|
|
20
|
-
"version": "0.20.
|
|
21
|
-
"purl": "pkg:npm/harness-everything@0.20.
|
|
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.
|
|
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",
|
package/scripts/plugin-sync.js
CHANGED
|
@@ -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
|
-
|
|
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,
|