run402 4.17.0 → 4.17.1
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.
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
{
|
|
2
|
+
"fixture_version": 1,
|
|
3
|
+
"fixture_id": "buzz-cli-v0.5.2-capabilities",
|
|
4
|
+
"purpose": "released_buzz_cli_capability_first_compatibility",
|
|
5
|
+
"buzz_release": {
|
|
6
|
+
"version": "0.5.2",
|
|
7
|
+
"release_tag": "v0.5.2",
|
|
8
|
+
"release_tag_commit": "3e48f1b2365d326ee1c9582448d86a99b44ecd5d",
|
|
9
|
+
"run402_change_required": false
|
|
10
|
+
},
|
|
11
|
+
"help_probes": [
|
|
12
|
+
{
|
|
13
|
+
"argv": ["buzz", "--help"],
|
|
14
|
+
"exit_code": 0,
|
|
15
|
+
"stdout_contains": [
|
|
16
|
+
"Buzz CLI — interact with a Buzz relay",
|
|
17
|
+
"users",
|
|
18
|
+
"social",
|
|
19
|
+
"Errors are JSON on stderr"
|
|
20
|
+
]
|
|
21
|
+
},
|
|
22
|
+
{
|
|
23
|
+
"argv": ["buzz", "users", "get", "--help"],
|
|
24
|
+
"exit_code": 0,
|
|
25
|
+
"stdout_contains": [
|
|
26
|
+
"Usage: buzz users get",
|
|
27
|
+
"--pubkey",
|
|
28
|
+
"Omit for your own profile"
|
|
29
|
+
]
|
|
30
|
+
},
|
|
31
|
+
{
|
|
32
|
+
"argv": ["buzz", "social", "publish", "--help"],
|
|
33
|
+
"exit_code": 0,
|
|
34
|
+
"stdout_contains": [
|
|
35
|
+
"Usage: buzz social publish",
|
|
36
|
+
"--content"
|
|
37
|
+
]
|
|
38
|
+
},
|
|
39
|
+
{
|
|
40
|
+
"argv": ["buzz", "social", "event", "--help"],
|
|
41
|
+
"exit_code": 0,
|
|
42
|
+
"stdout_contains": [
|
|
43
|
+
"Usage: buzz social event",
|
|
44
|
+
"--event"
|
|
45
|
+
]
|
|
46
|
+
}
|
|
47
|
+
],
|
|
48
|
+
"version_probe": {
|
|
49
|
+
"argv": ["buzz", "--version"],
|
|
50
|
+
"supported": false,
|
|
51
|
+
"exit_code": 1,
|
|
52
|
+
"stderr_json": {
|
|
53
|
+
"error": "user_error",
|
|
54
|
+
"retryable": false
|
|
55
|
+
},
|
|
56
|
+
"message_contains": "unexpected argument '--version'"
|
|
57
|
+
},
|
|
58
|
+
"json_contract": {
|
|
59
|
+
"default_output_format": "json",
|
|
60
|
+
"users_get_success_stdout": {
|
|
61
|
+
"type": "array",
|
|
62
|
+
"empty_array_means": "public_self_profile_unverified",
|
|
63
|
+
"profile_pubkey_field": "pubkey"
|
|
64
|
+
},
|
|
65
|
+
"social_event_success_stdout": {
|
|
66
|
+
"type": "array",
|
|
67
|
+
"event_pubkey_field": "pubkey"
|
|
68
|
+
},
|
|
69
|
+
"error_stderr": {
|
|
70
|
+
"type": "object",
|
|
71
|
+
"required_fields": ["error", "message", "retryable"],
|
|
72
|
+
"stdout_is_empty": true
|
|
73
|
+
}
|
|
74
|
+
},
|
|
75
|
+
"managed_sidecar": {
|
|
76
|
+
"distribution": "bundled_with_buzz_desktop",
|
|
77
|
+
"session_discovery": "managed_agent_path",
|
|
78
|
+
"public_package_manager_install": false,
|
|
79
|
+
"repair_surface": "buzz_settings",
|
|
80
|
+
"repair_destination": "Buzz Desktop > Settings > Updates",
|
|
81
|
+
"repair_instruction": "Open Buzz Desktop > Settings > Updates, install the available Buzz update or reinstall Buzz Desktop if no update is offered, then restart this agent and rerun setup."
|
|
82
|
+
},
|
|
83
|
+
"public_self_observation": {
|
|
84
|
+
"argv": ["buzz", "users", "get"],
|
|
85
|
+
"requires_private_key_value_inspection": false,
|
|
86
|
+
"empty_or_malformed_result": "BUZZ_AGENT_TARGET_UNVERIFIED"
|
|
87
|
+
},
|
|
88
|
+
"write_surface_policy": {
|
|
89
|
+
"capability_probes_use_help_only": true,
|
|
90
|
+
"publish_is_never_invoked_by_doctor": true,
|
|
91
|
+
"event_read_requires_explicit_event_id_and_is_not_used_for_self_discovery": true
|
|
92
|
+
}
|
|
93
|
+
}
|
|
@@ -0,0 +1,140 @@
|
|
|
1
|
+
{
|
|
2
|
+
"schema_version": 1,
|
|
3
|
+
"contract_id": "run402.buzz-doctor.v1",
|
|
4
|
+
"mode": "buzz",
|
|
5
|
+
"canonical_invocation": [
|
|
6
|
+
"run402",
|
|
7
|
+
"--wallet",
|
|
8
|
+
"<profile>",
|
|
9
|
+
"doctor",
|
|
10
|
+
"--buzz",
|
|
11
|
+
"--buzz-agent",
|
|
12
|
+
"<npub-or-hex>"
|
|
13
|
+
],
|
|
14
|
+
"flags": {
|
|
15
|
+
"mode": "--buzz",
|
|
16
|
+
"agent": "--buzz-agent",
|
|
17
|
+
"profile": "--wallet"
|
|
18
|
+
},
|
|
19
|
+
"check_order": [
|
|
20
|
+
"session_shell",
|
|
21
|
+
"node_runtime",
|
|
22
|
+
"run402_cli",
|
|
23
|
+
"buzz_cli",
|
|
24
|
+
"buzz_agent_target",
|
|
25
|
+
"run402_api",
|
|
26
|
+
"run402_console",
|
|
27
|
+
"buzz_relay",
|
|
28
|
+
"wallet_profile"
|
|
29
|
+
],
|
|
30
|
+
"statuses": [
|
|
31
|
+
"ok",
|
|
32
|
+
"warning",
|
|
33
|
+
"blocked"
|
|
34
|
+
],
|
|
35
|
+
"codes_by_check": {
|
|
36
|
+
"session_shell": [
|
|
37
|
+
"BUZZ_PREFLIGHT_SHELL_UNAVAILABLE"
|
|
38
|
+
],
|
|
39
|
+
"node_runtime": [
|
|
40
|
+
"BUZZ_PREFLIGHT_NODE_UNAVAILABLE",
|
|
41
|
+
"BUZZ_PREFLIGHT_NODE_INCOMPATIBLE"
|
|
42
|
+
],
|
|
43
|
+
"run402_cli": [
|
|
44
|
+
"BUZZ_PREFLIGHT_RUN402_UNAVAILABLE",
|
|
45
|
+
"BUZZ_PREFLIGHT_RUN402_INCOMPATIBLE",
|
|
46
|
+
"BUZZ_PREFLIGHT_RUN402_UPDATE_AVAILABLE"
|
|
47
|
+
],
|
|
48
|
+
"buzz_cli": [
|
|
49
|
+
"BUZZ_PREFLIGHT_BUZZ_CLI_UNAVAILABLE",
|
|
50
|
+
"BUZZ_PREFLIGHT_BUZZ_CLI_INCOMPATIBLE"
|
|
51
|
+
],
|
|
52
|
+
"buzz_agent_target": [
|
|
53
|
+
"BUZZ_AGENT_TARGET_REQUIRED",
|
|
54
|
+
"BUZZ_AGENT_TARGET_UNVERIFIED",
|
|
55
|
+
"BUZZ_AGENT_TARGET_MISMATCH"
|
|
56
|
+
],
|
|
57
|
+
"run402_api": [
|
|
58
|
+
"BUZZ_PREFLIGHT_API_UNREACHABLE"
|
|
59
|
+
],
|
|
60
|
+
"run402_console": [
|
|
61
|
+
"BUZZ_PREFLIGHT_CONSOLE_UNREACHABLE"
|
|
62
|
+
],
|
|
63
|
+
"buzz_relay": [
|
|
64
|
+
"BUZZ_PREFLIGHT_RELAY_UNSAFE",
|
|
65
|
+
"BUZZ_PREFLIGHT_RELAY_UNREACHABLE"
|
|
66
|
+
],
|
|
67
|
+
"wallet_profile": [
|
|
68
|
+
"BUZZ_PREFLIGHT_WALLET_PROFILE_REQUIRED",
|
|
69
|
+
"BUZZ_PREFLIGHT_WALLET_PROFILE_NOT_FOUND",
|
|
70
|
+
"BUZZ_PREFLIGHT_WALLET_PROFILE_MISMATCH"
|
|
71
|
+
]
|
|
72
|
+
},
|
|
73
|
+
"next_action": {
|
|
74
|
+
"required_fields": [
|
|
75
|
+
"type",
|
|
76
|
+
"surface",
|
|
77
|
+
"command",
|
|
78
|
+
"why",
|
|
79
|
+
"safe_to_auto_execute",
|
|
80
|
+
"requires_approval",
|
|
81
|
+
"destructive",
|
|
82
|
+
"idempotent",
|
|
83
|
+
"spend_impact"
|
|
84
|
+
],
|
|
85
|
+
"surfaces": [
|
|
86
|
+
"shell",
|
|
87
|
+
"buzz_chat",
|
|
88
|
+
"buzz_settings"
|
|
89
|
+
],
|
|
90
|
+
"shell_required_fields": [
|
|
91
|
+
"argv"
|
|
92
|
+
],
|
|
93
|
+
"non_shell_forbidden_fields": [
|
|
94
|
+
"argv",
|
|
95
|
+
"cwd"
|
|
96
|
+
],
|
|
97
|
+
"cardinality_per_actionable_check": 1
|
|
98
|
+
},
|
|
99
|
+
"exit_behavior": {
|
|
100
|
+
"passed_or_warning_only": 0,
|
|
101
|
+
"completed_with_blocked_checks": 1,
|
|
102
|
+
"usage_error": 1,
|
|
103
|
+
"completed_report_stream": "stdout",
|
|
104
|
+
"usage_error_stream": "stderr"
|
|
105
|
+
},
|
|
106
|
+
"freshness": {
|
|
107
|
+
"max_age_seconds": 60,
|
|
108
|
+
"binding_fields": [
|
|
109
|
+
"contract_id",
|
|
110
|
+
"expected_subject_hex",
|
|
111
|
+
"wallet_profile",
|
|
112
|
+
"node_executable",
|
|
113
|
+
"run402_executable",
|
|
114
|
+
"relay_origin"
|
|
115
|
+
]
|
|
116
|
+
},
|
|
117
|
+
"setup_rejection_codes": [
|
|
118
|
+
"BUZZ_PREFLIGHT_REPORT_INVALID",
|
|
119
|
+
"BUZZ_PREFLIGHT_REPORT_STALE",
|
|
120
|
+
"BUZZ_PREFLIGHT_REPORT_MISMATCH"
|
|
121
|
+
],
|
|
122
|
+
"zero_mutation": {
|
|
123
|
+
"mutation_state": "not_started",
|
|
124
|
+
"forbidden": [
|
|
125
|
+
"buzz_event_publish",
|
|
126
|
+
"buzz_arbitrary_sign",
|
|
127
|
+
"run402_profile_create_or_select",
|
|
128
|
+
"run402_wallet_create",
|
|
129
|
+
"run402_identity_link_mutation",
|
|
130
|
+
"run402_faucet",
|
|
131
|
+
"run402_tier_mutation",
|
|
132
|
+
"run402_project_mutation",
|
|
133
|
+
"run402_deploy"
|
|
134
|
+
],
|
|
135
|
+
"allowed_lossy_local_writes": [
|
|
136
|
+
"cli_update_cache",
|
|
137
|
+
"redacted_diagnostic_queue"
|
|
138
|
+
]
|
|
139
|
+
}
|
|
140
|
+
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { readFileSync } from "node:fs";
|
|
2
2
|
|
|
3
|
-
const CONTRACT_URL = new URL("
|
|
3
|
+
const CONTRACT_URL = new URL("../fixtures/run402-buzz-doctor-v1-contract.json", import.meta.url);
|
|
4
4
|
|
|
5
5
|
export const BUZZ_DOCTOR_CONTRACT = deepFreeze(JSON.parse(readFileSync(CONTRACT_URL, "utf8")));
|
|
6
6
|
export const BUZZ_DOCTOR_CONTRACT_ID = BUZZ_DOCTOR_CONTRACT.contract_id;
|
|
@@ -9,7 +9,9 @@ import {
|
|
|
9
9
|
validateBuzzDoctorReport,
|
|
10
10
|
} from "./buzz-doctor-contract.mjs";
|
|
11
11
|
|
|
12
|
-
const FIXTURE = JSON.parse(readFileSync(new URL("
|
|
12
|
+
const FIXTURE = JSON.parse(readFileSync(new URL("../fixtures/buzz-v0.5.2-cli-capabilities.json", import.meta.url), "utf8"));
|
|
13
|
+
const RELEASED_FIXTURE = JSON.parse(readFileSync(new URL("../../buzz/fixtures/buzz-v0.5.2-cli-capabilities.json", import.meta.url), "utf8"));
|
|
14
|
+
const RELEASED_CONTRACT = JSON.parse(readFileSync(new URL("../../buzz/fixtures/run402-buzz-doctor-v1-contract.json", import.meta.url), "utf8"));
|
|
13
15
|
|
|
14
16
|
function shellAction() {
|
|
15
17
|
return {
|
|
@@ -47,6 +49,11 @@ function passingReport(now) {
|
|
|
47
49
|
}
|
|
48
50
|
|
|
49
51
|
describe("Buzz doctor v1 frozen contract", () => {
|
|
52
|
+
it("packages byte-semantic copies of the released Buzz fixture and frozen doctor contract", () => {
|
|
53
|
+
assert.deepEqual(FIXTURE, RELEASED_FIXTURE);
|
|
54
|
+
assert.deepEqual(BUZZ_DOCTOR_CONTRACT, RELEASED_CONTRACT);
|
|
55
|
+
});
|
|
56
|
+
|
|
50
57
|
it("freezes the ordered checks, flags, statuses, exit streams, freshness binding, and zero-mutation verdict", () => {
|
|
51
58
|
assert.equal(BUZZ_DOCTOR_CONTRACT_ID, "run402.buzz-doctor.v1");
|
|
52
59
|
assert.deepEqual(BUZZ_DOCTOR_CHECK_ORDER, [
|
package/lib/buzz-doctor.mjs
CHANGED
|
@@ -15,7 +15,7 @@ import {
|
|
|
15
15
|
} from "./buzz-doctor-contract.mjs";
|
|
16
16
|
|
|
17
17
|
const BUZZ_CAPABILITIES = JSON.parse(readFileSync(
|
|
18
|
-
new URL("
|
|
18
|
+
new URL("../fixtures/buzz-v0.5.2-cli-capabilities.json", import.meta.url),
|
|
19
19
|
"utf8",
|
|
20
20
|
));
|
|
21
21
|
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "run402",
|
|
3
|
-
"version": "4.17.
|
|
3
|
+
"version": "4.17.1",
|
|
4
4
|
"description": "CLI for Run402 — provision Postgres databases, deploy static sites, generate images, and manage wallets via x402 and MPP micropayments.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"bin": {
|
|
@@ -15,6 +15,7 @@
|
|
|
15
15
|
"files": [
|
|
16
16
|
"cli.mjs",
|
|
17
17
|
"lib/",
|
|
18
|
+
"fixtures/",
|
|
18
19
|
"core-dist/",
|
|
19
20
|
"sdk/"
|
|
20
21
|
],
|
|
@@ -26,6 +27,7 @@
|
|
|
26
27
|
"@x402/evm": "^2.19.0",
|
|
27
28
|
"@x402/extensions": "^2.19.0",
|
|
28
29
|
"@x402/fetch": "^2.19.0",
|
|
30
|
+
"ipaddr.js": "1.9.1",
|
|
29
31
|
"json-canonicalize": "2.0.0",
|
|
30
32
|
"mppx": "^0.4.7",
|
|
31
33
|
"tsx": "^4.21.0",
|