harness-everything 0.20.1 → 0.20.2
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 +15 -1
- 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 +19 -17
|
@@ -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.2",
|
|
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.2",
|
|
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.2](https://github.com/dyphn1/Harness-everything/compare/v0.20.1...v0.20.2) (2026-09-22)
|
|
6
|
+
|
|
7
|
+
### Bug Fixes
|
|
8
|
+
|
|
9
|
+
* **distribution:** handle legacy claude flags ([2e09915](https://github.com/dyphn1/Harness-everything/commit/2e09915cff6c7cbf7cd10b08587df18264403a01)), closes [#221](https://github.com/dyphn1/Harness-everything/issues/221)
|
|
10
|
+
|
|
5
11
|
## [0.20.1](https://github.com/dyphn1/Harness-everything/compare/v0.20.0...v0.20.1) (2026-09-22)
|
|
6
12
|
|
|
7
13
|
### Bug Fixes
|
|
@@ -12,7 +12,7 @@ const {
|
|
|
12
12
|
|
|
13
13
|
const ROOT = path.resolve(__dirname, '..');
|
|
14
14
|
|
|
15
|
-
function fakeHost({ claudeInstalled = false, codexInstalled = false, claudeMarketplace = true, codexMarketplace = true, unknownClaudePluginState = false, unknownClaudeYesFlag = false } = {}) {
|
|
15
|
+
function fakeHost({ claudeInstalled = false, codexInstalled = false, claudeMarketplace = true, codexMarketplace = true, unknownClaudePluginState = false, unknownClaudeYesFlag = false, unknownClaudeJsonFlag = false } = {}) {
|
|
16
16
|
const calls = [];
|
|
17
17
|
const state = {
|
|
18
18
|
claudeInstalled,
|
|
@@ -47,6 +47,9 @@ function fakeHost({ claudeInstalled = false, codexInstalled = false, claudeMarke
|
|
|
47
47
|
if (unknownClaudeYesFlag && joined.includes('--yes')) {
|
|
48
48
|
return { status: 1, stdout: '', stderr: "error: unknown option '--yes'" };
|
|
49
49
|
}
|
|
50
|
+
if (unknownClaudeJsonFlag && joined.includes('--json')) {
|
|
51
|
+
return { status: 1, stdout: '', stderr: "error: unknown option '--json'" };
|
|
52
|
+
}
|
|
50
53
|
if (joined.startsWith('plugin install') || joined.startsWith('plugin update')) {
|
|
51
54
|
state.claudeInstalled = true;
|
|
52
55
|
return { status: 0, stdout: '{}', stderr: '' };
|
|
@@ -132,6 +135,17 @@ assert.strictEqual(findPlugin({ plugins: [{ id: 'harness-everything@harness-ever
|
|
|
132
135
|
assert.ok(!updateCalls[1].args.includes('--yes'), 'compatibility retry must omit unsupported --yes');
|
|
133
136
|
}
|
|
134
137
|
|
|
138
|
+
{
|
|
139
|
+
const fake = fakeHost({ claudeInstalled: true, unknownClaudeYesFlag: true, unknownClaudeJsonFlag: true });
|
|
140
|
+
const result = runHost('claude', fake);
|
|
141
|
+
const updateCalls = callsFor(fake.calls, 'claude', 'plugin update');
|
|
142
|
+
assert.strictEqual(result.failed, 0, 'unsupported Claude --yes and --json must fall back to a compatible update command');
|
|
143
|
+
assert.strictEqual(updateCalls.length, 3, 'each unsupported option must cause one compatibility retry');
|
|
144
|
+
assert.ok(updateCalls[0].args.includes('--yes') && updateCalls[0].args.includes('--json'), 'first update attempt should use current flags');
|
|
145
|
+
assert.ok(!updateCalls[1].args.includes('--yes') && updateCalls[1].args.includes('--json'), 'second attempt should omit only unsupported --yes');
|
|
146
|
+
assert.ok(!updateCalls[2].args.includes('--yes') && !updateCalls[2].args.includes('--json'), 'final attempt must omit both unsupported flags');
|
|
147
|
+
}
|
|
148
|
+
|
|
135
149
|
{
|
|
136
150
|
const fake = fakeHost({ codexInstalled: false });
|
|
137
151
|
const result = runHost('codex', fake);
|
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.2",
|
|
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:338bfdd5-e2e1-5e75-b6b1-f114ba76e2f5",
|
|
6
6
|
"version": 1,
|
|
7
7
|
"metadata": {
|
|
8
|
-
"timestamp": "2026-09-22T01:
|
|
8
|
+
"timestamp": "2026-09-22T01:26:05.707Z",
|
|
9
9
|
"tools": [
|
|
10
10
|
{
|
|
11
11
|
"vendor": "Harness Everything",
|
|
12
12
|
"name": "generate-sbom.js",
|
|
13
|
-
"version": "0.20.
|
|
13
|
+
"version": "0.20.2"
|
|
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.2",
|
|
19
19
|
"name": "harness-everything",
|
|
20
|
-
"version": "0.20.
|
|
21
|
-
"purl": "pkg:npm/harness-everything@0.20.
|
|
20
|
+
"version": "0.20.2",
|
|
21
|
+
"purl": "pkg:npm/harness-everything@0.20.2"
|
|
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.2",
|
|
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
|
@@ -191,25 +191,27 @@ function runClaudePluginMutation(context, action, pluginId) {
|
|
|
191
191
|
'plugin', action, pluginId,
|
|
192
192
|
'--scope', 'user'
|
|
193
193
|
];
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
194
|
+
let args = [...baseArgs, '--yes', '--json'];
|
|
195
|
+
let attempt = 0;
|
|
196
|
+
|
|
197
|
+
while (true) {
|
|
198
|
+
const result = invoke(context, 'claude', args, {
|
|
199
|
+
mutate: true,
|
|
200
|
+
label: attempt === 0 ? `claude plugin ${action}` : `claude plugin ${action} compatibility retry`,
|
|
201
|
+
warnOnFailure: false
|
|
202
|
+
});
|
|
203
|
+
if (result.status === 0) return result;
|
|
204
|
+
|
|
205
|
+
const unsupported = ['--yes', '--json'].find(option => args.includes(option) && hasUnknownOption(result, option));
|
|
206
|
+
if (!unsupported) {
|
|
207
|
+
context.warn(`[failed] ${commandLine('claude', args)}\n ${resultError(result)}`);
|
|
208
|
+
return result;
|
|
209
|
+
}
|
|
202
210
|
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
211
|
+
args = args.filter(arg => arg !== unsupported);
|
|
212
|
+
attempt += 1;
|
|
213
|
+
context.warn(`[notice] Claude CLI does not support ${unsupported}; retrying ${action} without that option.`);
|
|
206
214
|
}
|
|
207
|
-
|
|
208
|
-
context.warn(`[notice] Claude CLI does not support --yes; retrying ${action} without that option.`);
|
|
209
|
-
return invoke(context, 'claude', compatibleArgs, {
|
|
210
|
-
mutate: true,
|
|
211
|
-
label: `claude plugin ${action} compatibility retry`
|
|
212
|
-
});
|
|
213
215
|
}
|
|
214
216
|
|
|
215
217
|
function listState(context, { command, jsonArgs, plainArgs, detectJson, detectText }) {
|