run402 4.97.0 → 4.99.0

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.
Files changed (163) hide show
  1. package/README.md +1 -1
  2. package/core-dist/binding-file.js +28 -1
  3. package/core-dist/wallet.js +3 -3
  4. package/lib/auth.mjs +1 -2
  5. package/lib/buzz-doctor.mjs +21 -806
  6. package/lib/buzz-doctor.test.mjs +7 -6
  7. package/lib/buzz.test.mjs +13 -2
  8. package/lib/doctor.mjs +72 -811
  9. package/lib/init.mjs +35 -576
  10. package/lib/org-context.mjs +39 -376
  11. package/lib/orgs.mjs +22 -106
  12. package/lib/projects.mjs +1 -2
  13. package/lib/repos.mjs +6 -6
  14. package/lib/rooms.mjs +1 -2
  15. package/lib/sdk-errors.mjs +26 -0
  16. package/lib/status.mjs +14 -154
  17. package/lib/up.mjs +1 -2
  18. package/lib/vault-scaffold.mjs +2 -3
  19. package/lib/vault-target.mjs +14 -141
  20. package/lib/wallet-context.mjs +61 -227
  21. package/lib/wallets.mjs +47 -310
  22. package/package.json +1 -2
  23. package/sdk/core-dist/binding-file.js +28 -1
  24. package/sdk/core-dist/wallet.js +3 -3
  25. package/sdk/dist/errors.d.ts +24 -2
  26. package/sdk/dist/errors.d.ts.map +1 -1
  27. package/sdk/dist/errors.js +44 -2
  28. package/sdk/dist/errors.js.map +1 -1
  29. package/sdk/dist/index.d.ts +18 -3
  30. package/sdk/dist/index.d.ts.map +1 -1
  31. package/sdk/dist/index.js +12 -1
  32. package/sdk/dist/index.js.map +1 -1
  33. package/sdk/dist/kernel.d.ts +34 -0
  34. package/sdk/dist/kernel.d.ts.map +1 -1
  35. package/sdk/dist/kernel.js +15 -1
  36. package/sdk/dist/kernel.js.map +1 -1
  37. package/sdk/dist/namespaces/admin.d.ts.map +1 -1
  38. package/sdk/dist/namespaces/admin.js +8 -0
  39. package/sdk/dist/namespaces/admin.js.map +1 -1
  40. package/sdk/dist/namespaces/agent.d.ts +2 -2
  41. package/sdk/dist/namespaces/agent.d.ts.map +1 -1
  42. package/sdk/dist/namespaces/agent.js +4 -0
  43. package/sdk/dist/namespaces/agent.js.map +1 -1
  44. package/sdk/dist/namespaces/agent.types.d.ts +5 -0
  45. package/sdk/dist/namespaces/agent.types.d.ts.map +1 -1
  46. package/sdk/dist/namespaces/apps.d.ts.map +1 -1
  47. package/sdk/dist/namespaces/apps.js +2 -0
  48. package/sdk/dist/namespaces/apps.js.map +1 -1
  49. package/sdk/dist/namespaces/auth.d.ts.map +1 -1
  50. package/sdk/dist/namespaces/auth.js +9 -0
  51. package/sdk/dist/namespaces/auth.js.map +1 -1
  52. package/sdk/dist/namespaces/branches.d.ts.map +1 -1
  53. package/sdk/dist/namespaces/branches.js +2 -0
  54. package/sdk/dist/namespaces/branches.js.map +1 -1
  55. package/sdk/dist/namespaces/ci.d.ts.map +1 -1
  56. package/sdk/dist/namespaces/ci.js +2 -0
  57. package/sdk/dist/namespaces/ci.js.map +1 -1
  58. package/sdk/dist/namespaces/credentials.d.ts +0 -23
  59. package/sdk/dist/namespaces/credentials.d.ts.map +1 -1
  60. package/sdk/dist/namespaces/credentials.js +29 -0
  61. package/sdk/dist/namespaces/credentials.js.map +1 -1
  62. package/sdk/dist/namespaces/escalations.d.ts.map +1 -1
  63. package/sdk/dist/namespaces/escalations.js +2 -0
  64. package/sdk/dist/namespaces/escalations.js.map +1 -1
  65. package/sdk/dist/namespaces/grants.d.ts.map +1 -1
  66. package/sdk/dist/namespaces/grants.js +4 -0
  67. package/sdk/dist/namespaces/grants.js.map +1 -1
  68. package/sdk/dist/namespaces/live.d.ts +0 -16
  69. package/sdk/dist/namespaces/live.d.ts.map +1 -1
  70. package/sdk/dist/namespaces/live.js +19 -0
  71. package/sdk/dist/namespaces/live.js.map +1 -1
  72. package/sdk/dist/namespaces/me.d.ts.map +1 -1
  73. package/sdk/dist/namespaces/me.js +3 -0
  74. package/sdk/dist/namespaces/me.js.map +1 -1
  75. package/sdk/dist/namespaces/org.d.ts.map +1 -1
  76. package/sdk/dist/namespaces/org.js +3 -0
  77. package/sdk/dist/namespaces/org.js.map +1 -1
  78. package/sdk/dist/namespaces/projects.d.ts.map +1 -1
  79. package/sdk/dist/namespaces/projects.js +5 -0
  80. package/sdk/dist/namespaces/projects.js.map +1 -1
  81. package/sdk/dist/namespaces/repos.d.ts.map +1 -1
  82. package/sdk/dist/namespaces/repos.js +5 -0
  83. package/sdk/dist/namespaces/repos.js.map +1 -1
  84. package/sdk/dist/namespaces/rooms.d.ts.map +1 -1
  85. package/sdk/dist/namespaces/rooms.js +3 -0
  86. package/sdk/dist/namespaces/rooms.js.map +1 -1
  87. package/sdk/dist/namespaces/session.d.ts.map +1 -1
  88. package/sdk/dist/namespaces/session.js +18 -0
  89. package/sdk/dist/namespaces/session.js.map +1 -1
  90. package/sdk/dist/namespaces/transfers.d.ts.map +1 -1
  91. package/sdk/dist/namespaces/transfers.js +3 -0
  92. package/sdk/dist/namespaces/transfers.js.map +1 -1
  93. package/sdk/dist/namespaces/wallets.d.ts.map +1 -1
  94. package/sdk/dist/namespaces/wallets.js +2 -0
  95. package/sdk/dist/namespaces/wallets.js.map +1 -1
  96. package/sdk/dist/namespaces/write-approval.d.ts.map +1 -1
  97. package/sdk/dist/namespaces/write-approval.js +3 -0
  98. package/sdk/dist/namespaces/write-approval.js.map +1 -1
  99. package/sdk/dist/node/actions-node.d.ts.map +1 -1
  100. package/sdk/dist/node/actions-node.js +3 -0
  101. package/sdk/dist/node/actions-node.js.map +1 -1
  102. package/sdk/dist/node/buzz-doctor-contract.d.ts +155 -0
  103. package/sdk/dist/node/buzz-doctor-contract.d.ts.map +1 -0
  104. package/sdk/dist/node/buzz-doctor-contract.js +385 -0
  105. package/sdk/dist/node/buzz-doctor-contract.js.map +1 -0
  106. package/sdk/dist/node/buzz-doctor.d.ts +155 -0
  107. package/sdk/dist/node/buzz-doctor.d.ts.map +1 -0
  108. package/sdk/dist/node/buzz-doctor.js +810 -0
  109. package/sdk/dist/node/buzz-doctor.js.map +1 -0
  110. package/sdk/dist/node/credentials.d.ts +9 -4
  111. package/sdk/dist/node/credentials.d.ts.map +1 -1
  112. package/sdk/dist/node/credentials.js +1 -1
  113. package/sdk/dist/node/credentials.js.map +1 -1
  114. package/sdk/dist/node/diagnostics.d.ts +45 -0
  115. package/sdk/dist/node/diagnostics.d.ts.map +1 -0
  116. package/sdk/dist/node/diagnostics.js +67 -0
  117. package/sdk/dist/node/diagnostics.js.map +1 -0
  118. package/sdk/dist/node/doctor.d.ts +101 -0
  119. package/sdk/dist/node/doctor.d.ts.map +1 -0
  120. package/sdk/dist/node/doctor.js +618 -0
  121. package/sdk/dist/node/doctor.js.map +1 -0
  122. package/sdk/dist/node/index.d.ts +57 -5
  123. package/sdk/dist/node/index.d.ts.map +1 -1
  124. package/sdk/dist/node/index.js +36 -1
  125. package/sdk/dist/node/index.js.map +1 -1
  126. package/sdk/dist/node/init.d.ts +137 -0
  127. package/sdk/dist/node/init.d.ts.map +1 -0
  128. package/sdk/dist/node/init.js +507 -0
  129. package/sdk/dist/node/init.js.map +1 -0
  130. package/sdk/dist/node/lightning-wallet.d.ts +61 -0
  131. package/sdk/dist/node/lightning-wallet.d.ts.map +1 -0
  132. package/sdk/dist/node/lightning-wallet.js +126 -0
  133. package/sdk/dist/node/lightning-wallet.js.map +1 -0
  134. package/sdk/dist/node/local-actions.d.ts +23 -0
  135. package/sdk/dist/node/local-actions.d.ts.map +1 -0
  136. package/sdk/dist/node/local-actions.js +38 -0
  137. package/sdk/dist/node/local-actions.js.map +1 -0
  138. package/sdk/dist/node/org-context.d.ts +169 -0
  139. package/sdk/dist/node/org-context.d.ts.map +1 -0
  140. package/sdk/dist/node/org-context.js +403 -0
  141. package/sdk/dist/node/org-context.js.map +1 -0
  142. package/sdk/dist/node/status.d.ts +62 -0
  143. package/sdk/dist/node/status.d.ts.map +1 -0
  144. package/sdk/dist/node/status.js +132 -0
  145. package/sdk/dist/node/status.js.map +1 -0
  146. package/sdk/dist/node/vault-target.d.ts +49 -0
  147. package/sdk/dist/node/vault-target.d.ts.map +1 -0
  148. package/sdk/dist/node/vault-target.js +109 -0
  149. package/sdk/dist/node/vault-target.js.map +1 -0
  150. package/sdk/dist/node/wallets.d.ts +242 -0
  151. package/sdk/dist/node/wallets.d.ts.map +1 -0
  152. package/sdk/dist/node/wallets.js +484 -0
  153. package/sdk/dist/node/wallets.js.map +1 -0
  154. package/sdk/dist/secret-gate.d.ts +377 -0
  155. package/sdk/dist/secret-gate.d.ts.map +1 -0
  156. package/sdk/dist/secret-gate.js +273 -0
  157. package/sdk/dist/secret-gate.js.map +1 -0
  158. package/vault-surface.json +1 -1
  159. package/fixtures/buzz-v0.5.2-cli-capabilities.json +0 -92
  160. package/fixtures/run402-buzz-doctor-v1-contract.json +0 -140
  161. package/lib/buzz-doctor-contract.mjs +0 -97
  162. package/lib/buzz-doctor-contract.test.mjs +0 -134
  163. package/lib/lightning-wallet.mjs +0 -115
@@ -0,0 +1 @@
1
+ {"version":3,"file":"secret-gate.js","sourceRoot":"","sources":["../src/secret-gate.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  {
2
- "surface_version": "4.97.0",
2
+ "surface_version": "4.99.0",
3
3
  "verbs": [
4
4
  "repos create",
5
5
  "repos list",
@@ -1,92 +0,0 @@
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
- "users get [OPTIONS]",
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
- "social publish [OPTIONS]",
36
- "--content"
37
- ]
38
- },
39
- {
40
- "argv": ["buzz", "social", "event", "--help"],
41
- "exit_code": 0,
42
- "stdout_contains": [
43
- "social event --event"
44
- ]
45
- }
46
- ],
47
- "version_probe": {
48
- "argv": ["buzz", "--version"],
49
- "supported": false,
50
- "exit_code": 1,
51
- "stderr_json": {
52
- "error": "user_error",
53
- "retryable": false
54
- },
55
- "message_contains": "unexpected argument '--version'"
56
- },
57
- "json_contract": {
58
- "default_output_format": "json",
59
- "users_get_success_stdout": {
60
- "type": "array",
61
- "empty_array_means": "public_self_profile_unverified",
62
- "profile_pubkey_field": "pubkey"
63
- },
64
- "social_event_success_stdout": {
65
- "type": "array",
66
- "event_pubkey_field": "pubkey"
67
- },
68
- "error_stderr": {
69
- "type": "object",
70
- "required_fields": ["error", "message", "retryable"],
71
- "stdout_is_empty": true
72
- }
73
- },
74
- "managed_sidecar": {
75
- "distribution": "bundled_with_buzz_desktop",
76
- "session_discovery": "managed_agent_path",
77
- "public_package_manager_install": false,
78
- "repair_surface": "buzz_settings",
79
- "repair_destination": "Buzz Desktop > Settings > Updates",
80
- "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."
81
- },
82
- "public_self_observation": {
83
- "argv": ["buzz", "users", "get"],
84
- "requires_private_key_value_inspection": false,
85
- "empty_or_malformed_result": "BUZZ_AGENT_TARGET_UNVERIFIED"
86
- },
87
- "write_surface_policy": {
88
- "capability_probes_use_help_only": true,
89
- "publish_is_never_invoked_by_doctor": true,
90
- "event_read_requires_explicit_event_id_and_is_not_used_for_self_discovery": true
91
- }
92
- }
@@ -1,140 +0,0 @@
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,97 +0,0 @@
1
- import { readFileSync } from "node:fs";
2
-
3
- const CONTRACT_URL = new URL("../fixtures/run402-buzz-doctor-v1-contract.json", import.meta.url);
4
-
5
- export const BUZZ_DOCTOR_CONTRACT = deepFreeze(JSON.parse(readFileSync(CONTRACT_URL, "utf8")));
6
- export const BUZZ_DOCTOR_CONTRACT_ID = BUZZ_DOCTOR_CONTRACT.contract_id;
7
- export const BUZZ_DOCTOR_CHECK_ORDER = BUZZ_DOCTOR_CONTRACT.check_order;
8
- export const BUZZ_DOCTOR_STATUSES = new Set(BUZZ_DOCTOR_CONTRACT.statuses);
9
- export const BUZZ_DOCTOR_ACTION_SURFACES = new Set(BUZZ_DOCTOR_CONTRACT.next_action.surfaces);
10
- export const BUZZ_DOCTOR_MAX_AGE_MS = BUZZ_DOCTOR_CONTRACT.freshness.max_age_seconds * 1000;
11
-
12
- export function validateBuzzDoctorAction(action, { surface } = {}) {
13
- if (!action || typeof action !== "object" || Array.isArray(action)) return "action_not_object";
14
- for (const field of BUZZ_DOCTOR_CONTRACT.next_action.required_fields) {
15
- if (!(field in action)) return `action_missing_${field}`;
16
- }
17
- if (!BUZZ_DOCTOR_ACTION_SURFACES.has(action.surface)) return "action_surface_invalid";
18
- if (surface && action.surface !== surface) return "action_surface_mismatch";
19
- if (typeof action.type !== "string" || action.type.length === 0) return "action_type_invalid";
20
- if (typeof action.command !== "string" || action.command.length === 0) return "action_command_invalid";
21
- if (typeof action.why !== "string" || action.why.length === 0) return "action_why_invalid";
22
- for (const field of ["safe_to_auto_execute", "requires_approval", "destructive", "idempotent"]) {
23
- if (typeof action[field] !== "boolean") return `action_${field}_invalid`;
24
- }
25
- if (!action.spend_impact || action.spend_impact.currency !== "USD" || action.spend_impact.max_amount !== "0") {
26
- return "action_spend_impact_invalid";
27
- }
28
- if (action.surface === "shell") {
29
- if (!Array.isArray(action.argv) || action.argv.length === 0 || action.argv.some((part) => typeof part !== "string")) {
30
- return "action_argv_invalid";
31
- }
32
- } else {
33
- for (const field of BUZZ_DOCTOR_CONTRACT.next_action.non_shell_forbidden_fields) {
34
- if (field in action) return `action_${field}_forbidden`;
35
- }
36
- }
37
- return null;
38
- }
39
-
40
- export function validateBuzzDoctorReport(report, {
41
- expectedSubjectHex,
42
- walletProfile,
43
- nodeExecutable,
44
- run402Executable,
45
- relayOrigin,
46
- now = Date.now(),
47
- } = {}) {
48
- if (!report || typeof report !== "object" || Array.isArray(report)) return { valid: false, reason: "report_not_object" };
49
- if (report.contract_id !== BUZZ_DOCTOR_CONTRACT_ID || report.mode !== "buzz") return { valid: false, reason: "contract_mismatch" };
50
- if (!Array.isArray(report.checks)) return { valid: false, reason: "checks_not_array" };
51
- if (report.checks.length !== BUZZ_DOCTOR_CHECK_ORDER.length) return { valid: false, reason: "check_count_mismatch" };
52
- for (let index = 0; index < BUZZ_DOCTOR_CHECK_ORDER.length; index += 1) {
53
- const check = report.checks[index];
54
- const expectedName = BUZZ_DOCTOR_CHECK_ORDER[index];
55
- if (!check || check.name !== expectedName) return { valid: false, reason: "check_order_mismatch" };
56
- if (!BUZZ_DOCTOR_STATUSES.has(check.status)) return { valid: false, reason: "check_status_invalid" };
57
- if (check.status === "blocked" && !BUZZ_DOCTOR_CONTRACT.codes_by_check[expectedName]?.includes(check.code)) {
58
- return { valid: false, reason: "check_code_invalid" };
59
- }
60
- const actionable = check.status === "blocked" || (check.status === "warning" && Array.isArray(check.next_actions));
61
- if (actionable) {
62
- if (!Array.isArray(check.next_actions) || check.next_actions.length !== 1) return { valid: false, reason: "action_cardinality_invalid" };
63
- const actionReason = validateBuzzDoctorAction(check.next_actions[0]);
64
- if (actionReason) return { valid: false, reason: actionReason };
65
- } else if ("next_actions" in check) {
66
- return { valid: false, reason: "passing_action_forbidden" };
67
- }
68
- }
69
- const generatedAt = Date.parse(report.generated_at);
70
- if (!Number.isFinite(generatedAt) || generatedAt > now || now - generatedAt > BUZZ_DOCTOR_MAX_AGE_MS) {
71
- return { valid: false, reason: "report_stale" };
72
- }
73
- const binding = report.binding;
74
- if (!binding || typeof binding !== "object") return { valid: false, reason: "binding_missing" };
75
- const expected = {
76
- contract_id: BUZZ_DOCTOR_CONTRACT_ID,
77
- expected_subject_hex: expectedSubjectHex,
78
- wallet_profile: walletProfile,
79
- node_executable: nodeExecutable,
80
- run402_executable: run402Executable,
81
- relay_origin: relayOrigin,
82
- };
83
- for (const field of BUZZ_DOCTOR_CONTRACT.freshness.binding_fields) {
84
- if (expected[field] !== undefined && binding[field] !== expected[field]) return { valid: false, reason: `binding_${field}_mismatch` };
85
- }
86
- const computedOk = report.checks.every((check) => check.status !== "blocked");
87
- if (report.ok !== computedOk) return { valid: false, reason: "verdict_mismatch" };
88
- if (report.mutation_state !== BUZZ_DOCTOR_CONTRACT.zero_mutation.mutation_state) return { valid: false, reason: "mutation_state_invalid" };
89
- return { valid: true, reason: null };
90
- }
91
-
92
- function deepFreeze(value) {
93
- if (!value || typeof value !== "object" || Object.isFrozen(value)) return value;
94
- Object.freeze(value);
95
- for (const child of Object.values(value)) deepFreeze(child);
96
- return value;
97
- }
@@ -1,134 +0,0 @@
1
- import assert from "node:assert/strict";
2
- import { readFileSync } from "node:fs";
3
- import { describe, it } from "node:test";
4
- import {
5
- BUZZ_DOCTOR_CHECK_ORDER,
6
- BUZZ_DOCTOR_CONTRACT,
7
- BUZZ_DOCTOR_CONTRACT_ID,
8
- validateBuzzDoctorAction,
9
- validateBuzzDoctorReport,
10
- } from "./buzz-doctor-contract.mjs";
11
-
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"));
15
-
16
- function shellAction() {
17
- return {
18
- type: "upgrade_client",
19
- surface: "shell",
20
- command: "npm install -g run402@latest",
21
- argv: ["npm", "install", "-g", "run402@latest"],
22
- why: "Install the compatible Run402 CLI.",
23
- safe_to_auto_execute: true,
24
- requires_approval: false,
25
- destructive: false,
26
- idempotent: true,
27
- spend_impact: { currency: "USD", max_amount: "0" },
28
- };
29
- }
30
-
31
- function passingReport(now) {
32
- return {
33
- ok: true,
34
- mode: "buzz",
35
- contract_id: BUZZ_DOCTOR_CONTRACT_ID,
36
- generated_at: new Date(now).toISOString(),
37
- mutation_state: "not_started",
38
- binding: {
39
- contract_id: BUZZ_DOCTOR_CONTRACT_ID,
40
- expected_subject_hex: "a".repeat(64),
41
- wallet_profile: "buzz-fizz",
42
- node_executable: "/usr/local/bin/node",
43
- run402_executable: "/usr/local/bin/run402",
44
- relay_origin: "wss://community.example",
45
- },
46
- checks: BUZZ_DOCTOR_CHECK_ORDER.map((name) => ({ name, status: "ok" })),
47
- telemetry: { status: "disabled" },
48
- };
49
- }
50
-
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
-
57
- it("freezes the ordered checks, flags, statuses, exit streams, freshness binding, and zero-mutation verdict", () => {
58
- assert.equal(BUZZ_DOCTOR_CONTRACT_ID, "run402.buzz-doctor.v1");
59
- assert.deepEqual(BUZZ_DOCTOR_CHECK_ORDER, [
60
- "session_shell", "node_runtime", "run402_cli", "buzz_cli", "buzz_agent_target",
61
- "run402_api", "run402_console", "buzz_relay", "wallet_profile",
62
- ]);
63
- assert.deepEqual(BUZZ_DOCTOR_CONTRACT.statuses, ["ok", "warning", "blocked"]);
64
- assert.deepEqual(BUZZ_DOCTOR_CONTRACT.flags, { mode: "--buzz", agent: "--buzz-agent", profile: "--wallet" });
65
- assert.deepEqual(BUZZ_DOCTOR_CONTRACT.exit_behavior, {
66
- passed_or_warning_only: 0,
67
- completed_with_blocked_checks: 1,
68
- usage_error: 1,
69
- completed_report_stream: "stdout",
70
- usage_error_stream: "stderr",
71
- });
72
- assert.equal(BUZZ_DOCTOR_CONTRACT.freshness.max_age_seconds, 60);
73
- assert.deepEqual(BUZZ_DOCTOR_CONTRACT.setup_rejection_codes, [
74
- "BUZZ_PREFLIGHT_REPORT_INVALID",
75
- "BUZZ_PREFLIGHT_REPORT_STALE",
76
- "BUZZ_PREFLIGHT_REPORT_MISMATCH",
77
- ]);
78
- assert.equal(BUZZ_DOCTOR_CONTRACT.zero_mutation.mutation_state, "not_started");
79
- assert.ok(BUZZ_DOCTOR_CONTRACT.zero_mutation.forbidden.includes("buzz_event_publish"));
80
- assert.ok(BUZZ_DOCTOR_CONTRACT.zero_mutation.forbidden.includes("run402_identity_link_mutation"));
81
- });
82
-
83
- it("requires exactly one complete destination-specific action on every actionable check", () => {
84
- assert.equal(validateBuzzDoctorAction(shellAction()), null);
85
- assert.equal(validateBuzzDoctorAction({ ...shellAction(), argv: undefined }), "action_argv_invalid");
86
- const chat = { ...shellAction(), surface: "buzz_chat", command: "@Fizz restart setup" };
87
- delete chat.argv;
88
- assert.equal(validateBuzzDoctorAction(chat), null);
89
- assert.equal(validateBuzzDoctorAction({ ...chat, argv: ["echo", "wrong"] }), "action_argv_forbidden");
90
- });
91
-
92
- it("rejects stale, reordered, mismatched, edited, or verdict-inconsistent reports", () => {
93
- const now = Date.parse("2026-07-31T12:00:00.000Z");
94
- const expected = {
95
- expectedSubjectHex: "a".repeat(64),
96
- walletProfile: "buzz-fizz",
97
- nodeExecutable: "/usr/local/bin/node",
98
- run402Executable: "/usr/local/bin/run402",
99
- relayOrigin: "wss://community.example",
100
- now,
101
- };
102
- assert.deepEqual(validateBuzzDoctorReport(passingReport(now), expected), { valid: true, reason: null });
103
- assert.equal(validateBuzzDoctorReport(passingReport(now - 61_000), expected).reason, "report_stale");
104
- const reordered = passingReport(now);
105
- reordered.checks.reverse();
106
- assert.equal(validateBuzzDoctorReport(reordered, expected).reason, "check_order_mismatch");
107
- assert.equal(validateBuzzDoctorReport(passingReport(now), { ...expected, walletProfile: "buzz-honey" }).reason, "binding_wallet_profile_mismatch");
108
- const edited = passingReport(now);
109
- edited.checks[0] = { name: "session_shell", status: "blocked", code: "MADE_UP", next_actions: [shellAction()] };
110
- assert.equal(validateBuzzDoctorReport(edited, expected).reason, "check_code_invalid");
111
- const falseVerdict = passingReport(now);
112
- falseVerdict.ok = false;
113
- assert.equal(validateBuzzDoctorReport(falseVerdict, expected).reason, "verdict_mismatch");
114
- });
115
-
116
- it("freezes released Buzz v0.5.2 as capability-first with JSON outputs and no version flag", () => {
117
- assert.equal(FIXTURE.fixture_id, "buzz-cli-v0.5.2-capabilities");
118
- assert.equal(FIXTURE.buzz_release.release_tag_commit, "3e48f1b2365d326ee1c9582448d86a99b44ecd5d");
119
- assert.deepEqual(FIXTURE.help_probes.map((probe) => probe.argv.slice(1)), [
120
- ["--help"],
121
- ["users", "get", "--help"],
122
- ["social", "publish", "--help"],
123
- ["social", "event", "--help"],
124
- ]);
125
- assert.equal(FIXTURE.version_probe.supported, false);
126
- assert.equal(FIXTURE.version_probe.stderr_json.error, "user_error");
127
- assert.equal(FIXTURE.json_contract.default_output_format, "json");
128
- assert.equal(FIXTURE.json_contract.users_get_success_stdout.type, "array");
129
- assert.equal(FIXTURE.managed_sidecar.public_package_manager_install, false);
130
- assert.equal(FIXTURE.managed_sidecar.repair_surface, "buzz_settings");
131
- assert.equal(FIXTURE.public_self_observation.requires_private_key_value_inspection, false);
132
- assert.equal(FIXTURE.write_surface_policy.publish_is_never_invoked_by_doctor, true);
133
- });
134
- });
@@ -1,115 +0,0 @@
1
- /**
2
- * The Lightning wallet on the CLI: mint the agent's budgeted wallet on
3
- * Run402's Hub, keep its pairing in the active profile's wallet.json
4
- * beside the Base key, report its balance, revoke it. Shared by
5
- * `run402 init lightning`, `run402 wallets lightning …`, and
6
- * `run402 wallets current`. The pairing secret is never printed.
7
- */
8
- import { readWallet, saveWallet } from "../core-dist/wallet.js";
9
- import { getSdk } from "./sdk.mjs";
10
-
11
- export const LIGHTNING_MINT_TIMEOUT_MS = 45_000;
12
-
13
- /** Public facts only: never the pairing. */
14
- export function describeLightning(localWallet, wallet = null, balance = null) {
15
- const local = localWallet?.lightning ?? null;
16
- if (!local && !wallet) return null;
17
- return {
18
- wallet_id: wallet?.wallet_id ?? local?.wallet_id ?? null,
19
- status: wallet?.status ?? (local ? "active" : null),
20
- custody: "run402_hub",
21
- custody_note: "The sats sit on Run402's Lightning Hub; this wallet is a budgeted connection to them, not self-custody.",
22
- lightning_address: wallet?.lightning_address ?? local?.lightning_address ?? null,
23
- budget_sats: wallet?.budget_sats ?? local?.budget_sats ?? null,
24
- starter_sats: wallet?.starter_sats ?? local?.starter_sats ?? null,
25
- has_pairing: Boolean(local?.nwc),
26
- minted_at: local?.minted_at ?? wallet?.activated_at ?? null,
27
- ...(balance ? balance : {}),
28
- };
29
- }
30
-
31
- /** Balance and remaining budget over NWC, best-effort (null on any failure). */
32
- export async function readLightningBalance(localWallet) {
33
- const nwc = localWallet?.lightning?.nwc;
34
- if (!nwc) return null;
35
- try {
36
- const { NwcWallet, closeNwcConnections } = await import("#sdk/node");
37
- const wallet = new NwcWallet(nwc, { timeoutMs: 15_000 });
38
- const [balance_sats, budget] = await Promise.all([wallet.getBalanceSats(), wallet.getBudgetSats().catch(() => null)]);
39
- closeNwcConnections();
40
- return {
41
- balance_sats,
42
- budget_remaining_sats: budget && budget.totalSats !== null ? budget.totalSats - budget.usedSats : null,
43
- };
44
- } catch {
45
- return null;
46
- }
47
- }
48
-
49
- function storePairing(localWallet, wallet) {
50
- const next = {
51
- ...localWallet,
52
- rail: "lightning",
53
- lightning: {
54
- wallet_id: wallet.wallet_id,
55
- nwc: wallet.pairing,
56
- lightning_address: wallet.lightning_address ?? null,
57
- budget_sats: wallet.budget_sats,
58
- starter_sats: wallet.starter_sats,
59
- custody: "run402_hub",
60
- minted_at: wallet.activated_at ?? new Date().toISOString(),
61
- },
62
- };
63
- saveWallet(next);
64
- return next;
65
- }
66
-
67
- /**
68
- * Ensure the active profile holds an active Lightning wallet. Returns
69
- * `{ localWallet, wallet, outcome }` where outcome is `stored` (pairing just
70
- * saved), `present` (already held locally), `minting` (the platform is still
71
- * minting; rerun later), `unavailable` (no Hub on this gateway), or
72
- * `pairing_lost` (the wallet is active but its one-time pairing was handed to
73
- * another machine; revoke and mint again).
74
- */
75
- export async function ensureLightningWallet(options = {}) {
76
- let localWallet = readWallet();
77
- if (!localWallet) throw new Error("no local wallet configured; run `run402 init` first");
78
- if (localWallet.lightning?.nwc) {
79
- let wallet = null;
80
- try { wallet = await getSdk().agent.lightningWallet.get(); } catch { /* offline read is fine */ }
81
- if (wallet && wallet.status !== "active") return { localWallet, wallet, outcome: wallet.status };
82
- return { localWallet, wallet, outcome: "present" };
83
- }
84
- let wallet;
85
- try {
86
- wallet = await getSdk().agent.lightningWallet.mint({ timeoutMs: options.timeoutMs ?? LIGHTNING_MINT_TIMEOUT_MS });
87
- } catch (err) {
88
- const code = err?.body?.code ?? err?.code;
89
- if (code === "LIGHTNING_WALLET_NOT_AVAILABLE") return { localWallet, wallet: null, outcome: "unavailable", error: err };
90
- if (code === "LIGHTNING_WALLET_STILL_MINTING") return { localWallet, wallet: null, outcome: "minting", error: err };
91
- throw err;
92
- }
93
- if (wallet.status === "minting") return { localWallet, wallet, outcome: "minting" };
94
- if (wallet.status !== "active") return { localWallet, wallet, outcome: wallet.status };
95
- if (typeof wallet.pairing !== "string") return { localWallet, wallet, outcome: "pairing_lost" };
96
- localWallet = storePairing(localWallet, wallet);
97
- return { localWallet, wallet, outcome: "stored" };
98
- }
99
-
100
- /** Revoke on the platform and forget the pairing locally; the rail returns to x402. */
101
- export async function revokeLightningWallet() {
102
- const localWallet = readWallet();
103
- let wallet = null;
104
- try {
105
- wallet = await getSdk().agent.lightningWallet.revoke();
106
- } catch (err) {
107
- const code = err?.body?.code ?? err?.code;
108
- if (code !== "LIGHTNING_WALLET_NOT_FOUND") throw err;
109
- }
110
- if (localWallet) {
111
- const { lightning: _dropped, ...rest } = localWallet;
112
- saveWallet({ ...rest, rail: rest.rail === "lightning" ? "x402" : rest.rail });
113
- }
114
- return wallet;
115
- }