@node9/proxy 2.6.1 → 2.6.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/LICENSE CHANGED
@@ -1,3 +1,4 @@
1
+
1
2
  Apache License
2
3
  Version 2.0, January 2004
3
4
  http://www.apache.org/licenses/
@@ -32,33 +33,36 @@
32
33
  not limited to compiled object code, generated documentation,
33
34
  and conversions to other media types.
34
35
 
35
- "Work" shall mean the work of authorship made available under
36
- the License, as indicated by a copyright notice that is included in
37
- or attached to the work (an example is provided in the Appendix below).
36
+ "Work" shall mean the work of authorship, whether in Source or
37
+ Object form, made available under the License, as indicated by a
38
+ copyright notice that is included in or attached to the work
39
+ (an example is provided in the Appendix below).
38
40
 
39
41
  "Derivative Works" shall mean any work, whether in Source or Object
40
42
  form, that is based on (or derived from) the Work and for which the
41
- editorial revisions, annotations, elaborations, or other transformations
43
+ editorial revisions, annotations, elaborations, or other modifications
42
44
  represent, as a whole, an original work of authorship. For the purposes
43
45
  of this License, Derivative Works shall not include works that remain
44
46
  separable from, or merely link (or bind by name) to the interfaces of,
45
- the Work and the Derivative Works thereof.
46
-
47
- "Contribution" shall mean, as submitted to the Licensor for inclusion
48
- in the Work by the copyright owner or by an individual or Legal Entity
49
- authorized to submit on behalf of the copyright owner. For the purposes
50
- of this definition, "submitted" means any form of electronic, verbal,
51
- or written communication sent to the Licensor or its representations,
52
- including but not limited to communication on electronic mailing lists,
53
- source code control systems, and issue tracking systems that are managed
54
- by, or on behalf of, the Licensor for the purpose of discussing and
55
- improving the Work, but excluding communication that is conspicuously
56
- marked or designated in writing by the copyright owner as "Not a
57
- Contribution."
58
-
59
- "Contributor" shall mean Licensor and any Legal Entity on behalf of
60
- whom a Contribution has been received by the Licensor and included
61
- within the Work.
47
+ the Work and Derivative Works thereof.
48
+
49
+ "Contribution" shall mean any work of authorship, including
50
+ the original version of the Work and any modifications or additions
51
+ to that Work or Derivative Works thereof, that is intentionally
52
+ submitted to Licensor for inclusion in the Work by the copyright owner
53
+ or by an individual or Legal Entity authorized to submit on behalf of
54
+ the copyright owner. For the purposes of this definition, "submitted"
55
+ means any form of electronic, verbal, or written communication sent
56
+ to the Licensor or its representatives, including but not limited to
57
+ communication on electronic mailing lists, source code control systems,
58
+ and issue tracking systems that are managed by, or on behalf of, the
59
+ Licensor for the purpose of discussing and improving the Work, but
60
+ excluding communication that is conspicuously marked or otherwise
61
+ designated in writing by the copyright owner as "Not a Contribution."
62
+
63
+ "Contributor" shall mean Licensor and any individual or Legal Entity
64
+ on behalf of whom a Contribution has been received by Licensor and
65
+ subsequently incorporated within the Work.
62
66
 
63
67
  2. Grant of Copyright License. Subject to the terms and conditions of
64
68
  this License, each Contributor hereby grants to You a perpetual,
@@ -74,21 +78,22 @@
74
78
  use, offer to sell, sell, import, and otherwise transfer the Work,
75
79
  where such license applies only to those patent claims licensable
76
80
  by such Contributor that are necessarily infringed by their
77
- Contribution(s) alone or by the combination of their Contribution(s)
81
+ Contribution(s) alone or by combination of their Contribution(s)
78
82
  with the Work to which such Contribution(s) was submitted. If You
79
- institute patent litigation against any entity (including a cross-claim
80
- or counterclaim in a lawsuit) alleging that the Work or any Contribution
81
- embodied within the Work constitutes direct or contributory patent
82
- infringement, then any patent licenses granted to You under this License
83
- for that Work shall terminate as of the date such litigation is filed.
83
+ institute patent litigation against any entity (including a
84
+ cross-claim or counterclaim in a lawsuit) alleging that the Work
85
+ or a Contribution incorporated within the Work constitutes direct
86
+ or contributory patent infringement, then any patent licenses
87
+ granted to You under this License for that Work shall terminate
88
+ as of the date such litigation is filed.
84
89
 
85
90
  4. Redistribution. You may reproduce and distribute copies of the
86
91
  Work or Derivative Works thereof in any medium, with or without
87
92
  modifications, and in Source or Object form, provided that You
88
93
  meet the following conditions:
89
94
 
90
- (a) You must give any other recipients of the Work or Derivative
91
- Works a copy of this License; and
95
+ (a) You must give any other recipients of the Work or
96
+ Derivative Works a copy of this License; and
92
97
 
93
98
  (b) You must cause any modified files to carry prominent notices
94
99
  stating that You changed the files; and
@@ -100,25 +105,28 @@
100
105
  the Derivative Works; and
101
106
 
102
107
  (d) If the Work includes a "NOTICE" text file as part of its
103
- distribution, You must include a readable copy of the
104
- attribution notices contained within such NOTICE file, in
105
- at least one of the following places: within a NOTICE text
106
- file distributed as part of the Derivative Works; within
107
- the Source form or documentation, if provided along with the
108
- Derivative Works; or, within a display generated by the
109
- Derivative Works, if and wherever such third-party notices
110
- normally appear. The contents of the NOTICE file are for
111
- informational purposes only and do not modify the License.
112
- You may add Your own attribution notices within Derivative
113
- Works that You distribute, alongside or in addition to the
114
- NOTICE text from the Work, provided that such additional
115
- attribution notices cannot be construed as modifying the License.
116
-
117
- You may add Your own license statement for Your modifications and
118
- may provide additional grant of rights to use, reproduce, modify,
119
- prepare Derivative Works of, convert to other formats, and distribute
120
- the contributions, provided such additional grant of rights does not
121
- conflict with the terms and conditions of this License.
108
+ distribution, then any Derivative Works that You distribute must
109
+ include a readable copy of the attribution notices contained
110
+ within such NOTICE file, excluding those notices that do not
111
+ pertain to any part of the Derivative Works, in at least one
112
+ of the following places: within a NOTICE text file distributed
113
+ as part of the Derivative Works; within the Source form or
114
+ documentation, if provided along with the Derivative Works; or,
115
+ within a display generated by the Derivative Works, if and
116
+ wherever such third-party notices normally appear. The contents
117
+ of the NOTICE file are for informational purposes only and
118
+ do not modify the License. You may add Your own attribution
119
+ notices within Derivative Works that You distribute, alongside
120
+ or as an addendum to the NOTICE text from the Work, provided
121
+ that such additional attribution notices cannot be construed
122
+ as modifying the License.
123
+
124
+ You may add Your own copyright statement to Your modifications and
125
+ may provide additional or different license terms and conditions
126
+ for use, reproduction, or distribution of Your modifications, or
127
+ for any such Derivative Works as a whole, provided Your use,
128
+ reproduction, and distribution of the Work otherwise complies with
129
+ the conditions stated in this License.
122
130
 
123
131
  5. Submission of Contributions. Unless You explicitly state otherwise,
124
132
  any Contribution intentionally submitted for inclusion in the Work
@@ -140,7 +148,7 @@
140
148
  implied, including, without limitation, any warranties or conditions
141
149
  of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
142
150
  PARTICULAR PURPOSE. You are solely responsible for determining the
143
- appropriateness of using or reproducing the Work and assume any
151
+ appropriateness of using or redistributing the Work and assume any
144
152
  risks associated with Your exercise of permissions under this License.
145
153
 
146
154
  8. Limitation of Liability. In no event and under no legal theory,
@@ -148,26 +156,37 @@
148
156
  unless required by applicable law (such as deliberate and grossly
149
157
  negligent acts) or agreed to in writing, shall any Contributor be
150
158
  liable to You for damages, including any direct, indirect, special,
151
- incidental, or exemplary damages of any character arising as a
159
+ incidental, or consequential damages of any character arising as a
152
160
  result of this License or out of the use or inability to use the
153
161
  Work (including but not limited to damages for loss of goodwill,
154
- work stoppage, computer failure or malfunction, or all other
155
- commercial damages or losses), even if such Contributor has been
156
- advised of the possibility of such damages.
162
+ work stoppage, computer failure or malfunction, or any and all
163
+ other commercial damages or losses), even if such Contributor
164
+ has been advised of the possibility of such damages.
157
165
 
158
166
  9. Accepting Warranty or Additional Liability. While redistributing
159
167
  the Work or Derivative Works thereof, You may choose to offer,
160
168
  and charge a fee for, acceptance of support, warranty, indemnity,
161
169
  or other liability obligations and/or rights consistent with this
162
- License. However, in accepting such obligations, You may offer such
163
- obligations only on Your own behalf and on Your sole responsibility,
164
- not on behalf of any other Contributor, and only if You agree to
165
- indemnify, defend, and hold each Contributor harmless for any
166
- liability incurred by, or claims asserted against, such Contributor
167
- by reason of your accepting any such warranty or additional liability.
170
+ License. However, in accepting such obligations, You may act only
171
+ on Your own behalf and on Your sole responsibility, not on behalf
172
+ of any other Contributor, and only if You agree to indemnify,
173
+ defend, and hold each Contributor harmless for any liability
174
+ incurred by, or claims asserted against, such Contributor by reason
175
+ of your accepting any such warranty or additional liability.
168
176
 
169
177
  END OF TERMS AND CONDITIONS
170
178
 
179
+ APPENDIX: How to apply the Apache License to your work.
180
+
181
+ To apply the Apache License to your work, attach the following
182
+ boilerplate notice, with the fields enclosed by brackets "[]"
183
+ replaced with your own identifying information. (Don't include
184
+ the brackets!) The text should be enclosed in the appropriate
185
+ comment syntax for the file format. We also recommend that a
186
+ file or class name and description of purpose be included on the
187
+ same "printed page" as the copyright notice for easier
188
+ identification within third-party archives.
189
+
171
190
  Copyright 2026 Node9 AI
172
191
 
173
192
  Licensed under the Apache License, Version 2.0 (the "License");
package/dist/cli.js CHANGED
@@ -5650,7 +5650,14 @@ var init_config = __esm({
5650
5650
  settings: {
5651
5651
  mode: "standard",
5652
5652
  autoStartDaemon: true,
5653
- enableHookLogDebug: true,
5653
+ // Off by default: this is a DEBUG facility, not part of the product's job.
5654
+ // When on, every tool call appends a row to ~/.node9/hook-debug.log, which
5655
+ // has no production reader and no size ceiling. Turn it on deliberately
5656
+ // (this setting, or NODE9_DEBUG=1) while investigating something.
5657
+ // Error breadcrumbs written from catch blocks are NOT gated by this and
5658
+ // keep working when it is off — see CLAUDE.md "Always write to
5659
+ // hook-debug.log in catch blocks that guard audit trail".
5660
+ enableHookLogDebug: false,
5654
5661
  approvalTimeoutMs: 12e4,
5655
5662
  // 120-second auto-deny timeout
5656
5663
  flightRecorder: true,
@@ -8136,6 +8143,7 @@ ${appPermReview}`
8136
8143
  // not an approval of an exfiltration risk. Measured against the live BE:
8137
8144
  // {approved:true} without this flag, {pending:true} with it.
8138
8145
  !!taintWarning || void 0;
8146
+ const cloudMayVote = !hardBlockDowngraded;
8139
8147
  if (cloudEnforced) {
8140
8148
  try {
8141
8149
  const initResult = await initNode9SaaS(
@@ -8151,7 +8159,7 @@ ${appPermReview}`
8151
8159
  if (initResult.shadowMode && !localSmartRuleMatched && !options?.localSmartRuleMatched && !appPermReview && !taintWarning) {
8152
8160
  return { approved: true, checkedBy: "cloud" };
8153
8161
  }
8154
- if (!localSmartRuleMatched && !options?.localSmartRuleMatched && !appPermReview && !taintWarning) {
8162
+ if (!forceReview) {
8155
8163
  return {
8156
8164
  approved: !!initResult.approved,
8157
8165
  reason: initResult.reason || (initResult.approved ? void 0 : "Action rejected by organization policy."),
@@ -8232,7 +8240,7 @@ ${appPermReview}`
8232
8240
  }
8233
8241
  }
8234
8242
  }
8235
- if (cloudEnforced && cloudRequestId) {
8243
+ if (cloudEnforced && cloudRequestId && cloudMayVote) {
8236
8244
  racePromises.push(
8237
8245
  (async () => {
8238
8246
  try {
package/dist/cli.mjs CHANGED
@@ -5654,7 +5654,14 @@ var init_config = __esm({
5654
5654
  settings: {
5655
5655
  mode: "standard",
5656
5656
  autoStartDaemon: true,
5657
- enableHookLogDebug: true,
5657
+ // Off by default: this is a DEBUG facility, not part of the product's job.
5658
+ // When on, every tool call appends a row to ~/.node9/hook-debug.log, which
5659
+ // has no production reader and no size ceiling. Turn it on deliberately
5660
+ // (this setting, or NODE9_DEBUG=1) while investigating something.
5661
+ // Error breadcrumbs written from catch blocks are NOT gated by this and
5662
+ // keep working when it is off — see CLAUDE.md "Always write to
5663
+ // hook-debug.log in catch blocks that guard audit trail".
5664
+ enableHookLogDebug: false,
5658
5665
  approvalTimeoutMs: 12e4,
5659
5666
  // 120-second auto-deny timeout
5660
5667
  flightRecorder: true,
@@ -8139,6 +8146,7 @@ ${appPermReview}`
8139
8146
  // not an approval of an exfiltration risk. Measured against the live BE:
8140
8147
  // {approved:true} without this flag, {pending:true} with it.
8141
8148
  !!taintWarning || void 0;
8149
+ const cloudMayVote = !hardBlockDowngraded;
8142
8150
  if (cloudEnforced) {
8143
8151
  try {
8144
8152
  const initResult = await initNode9SaaS(
@@ -8154,7 +8162,7 @@ ${appPermReview}`
8154
8162
  if (initResult.shadowMode && !localSmartRuleMatched && !options?.localSmartRuleMatched && !appPermReview && !taintWarning) {
8155
8163
  return { approved: true, checkedBy: "cloud" };
8156
8164
  }
8157
- if (!localSmartRuleMatched && !options?.localSmartRuleMatched && !appPermReview && !taintWarning) {
8165
+ if (!forceReview) {
8158
8166
  return {
8159
8167
  approved: !!initResult.approved,
8160
8168
  reason: initResult.reason || (initResult.approved ? void 0 : "Action rejected by organization policy."),
@@ -8235,7 +8243,7 @@ ${appPermReview}`
8235
8243
  }
8236
8244
  }
8237
8245
  }
8238
- if (cloudEnforced && cloudRequestId) {
8246
+ if (cloudEnforced && cloudRequestId && cloudMayVote) {
8239
8247
  racePromises.push(
8240
8248
  (async () => {
8241
8249
  try {
@@ -3435,7 +3435,14 @@ var init_config = __esm({
3435
3435
  settings: {
3436
3436
  mode: "standard",
3437
3437
  autoStartDaemon: true,
3438
- enableHookLogDebug: true,
3438
+ // Off by default: this is a DEBUG facility, not part of the product's job.
3439
+ // When on, every tool call appends a row to ~/.node9/hook-debug.log, which
3440
+ // has no production reader and no size ceiling. Turn it on deliberately
3441
+ // (this setting, or NODE9_DEBUG=1) while investigating something.
3442
+ // Error breadcrumbs written from catch blocks are NOT gated by this and
3443
+ // keep working when it is off — see CLAUDE.md "Always write to
3444
+ // hook-debug.log in catch blocks that guard audit trail".
3445
+ enableHookLogDebug: false,
3439
3446
  approvalTimeoutMs: 12e4,
3440
3447
  // 120-second auto-deny timeout
3441
3448
  flightRecorder: true,
package/dist/index.js CHANGED
@@ -4185,7 +4185,14 @@ var DEFAULT_CONFIG = {
4185
4185
  settings: {
4186
4186
  mode: "standard",
4187
4187
  autoStartDaemon: true,
4188
- enableHookLogDebug: true,
4188
+ // Off by default: this is a DEBUG facility, not part of the product's job.
4189
+ // When on, every tool call appends a row to ~/.node9/hook-debug.log, which
4190
+ // has no production reader and no size ceiling. Turn it on deliberately
4191
+ // (this setting, or NODE9_DEBUG=1) while investigating something.
4192
+ // Error breadcrumbs written from catch blocks are NOT gated by this and
4193
+ // keep working when it is off — see CLAUDE.md "Always write to
4194
+ // hook-debug.log in catch blocks that guard audit trail".
4195
+ enableHookLogDebug: false,
4189
4196
  approvalTimeoutMs: 12e4,
4190
4197
  // 120-second auto-deny timeout
4191
4198
  flightRecorder: true,
@@ -6643,6 +6650,7 @@ ${appPermReview}`
6643
6650
  // not an approval of an exfiltration risk. Measured against the live BE:
6644
6651
  // {approved:true} without this flag, {pending:true} with it.
6645
6652
  !!taintWarning || void 0;
6653
+ const cloudMayVote = !hardBlockDowngraded;
6646
6654
  if (cloudEnforced) {
6647
6655
  try {
6648
6656
  const initResult = await initNode9SaaS(
@@ -6658,7 +6666,7 @@ ${appPermReview}`
6658
6666
  if (initResult.shadowMode && !localSmartRuleMatched && !options?.localSmartRuleMatched && !appPermReview && !taintWarning) {
6659
6667
  return { approved: true, checkedBy: "cloud" };
6660
6668
  }
6661
- if (!localSmartRuleMatched && !options?.localSmartRuleMatched && !appPermReview && !taintWarning) {
6669
+ if (!forceReview) {
6662
6670
  return {
6663
6671
  approved: !!initResult.approved,
6664
6672
  reason: initResult.reason || (initResult.approved ? void 0 : "Action rejected by organization policy."),
@@ -6739,7 +6747,7 @@ ${appPermReview}`
6739
6747
  }
6740
6748
  }
6741
6749
  }
6742
- if (cloudEnforced && cloudRequestId) {
6750
+ if (cloudEnforced && cloudRequestId && cloudMayVote) {
6743
6751
  racePromises.push(
6744
6752
  (async () => {
6745
6753
  try {
package/dist/index.mjs CHANGED
@@ -4155,7 +4155,14 @@ var DEFAULT_CONFIG = {
4155
4155
  settings: {
4156
4156
  mode: "standard",
4157
4157
  autoStartDaemon: true,
4158
- enableHookLogDebug: true,
4158
+ // Off by default: this is a DEBUG facility, not part of the product's job.
4159
+ // When on, every tool call appends a row to ~/.node9/hook-debug.log, which
4160
+ // has no production reader and no size ceiling. Turn it on deliberately
4161
+ // (this setting, or NODE9_DEBUG=1) while investigating something.
4162
+ // Error breadcrumbs written from catch blocks are NOT gated by this and
4163
+ // keep working when it is off — see CLAUDE.md "Always write to
4164
+ // hook-debug.log in catch blocks that guard audit trail".
4165
+ enableHookLogDebug: false,
4159
4166
  approvalTimeoutMs: 12e4,
4160
4167
  // 120-second auto-deny timeout
4161
4168
  flightRecorder: true,
@@ -6613,6 +6620,7 @@ ${appPermReview}`
6613
6620
  // not an approval of an exfiltration risk. Measured against the live BE:
6614
6621
  // {approved:true} without this flag, {pending:true} with it.
6615
6622
  !!taintWarning || void 0;
6623
+ const cloudMayVote = !hardBlockDowngraded;
6616
6624
  if (cloudEnforced) {
6617
6625
  try {
6618
6626
  const initResult = await initNode9SaaS(
@@ -6628,7 +6636,7 @@ ${appPermReview}`
6628
6636
  if (initResult.shadowMode && !localSmartRuleMatched && !options?.localSmartRuleMatched && !appPermReview && !taintWarning) {
6629
6637
  return { approved: true, checkedBy: "cloud" };
6630
6638
  }
6631
- if (!localSmartRuleMatched && !options?.localSmartRuleMatched && !appPermReview && !taintWarning) {
6639
+ if (!forceReview) {
6632
6640
  return {
6633
6641
  approved: !!initResult.approved,
6634
6642
  reason: initResult.reason || (initResult.approved ? void 0 : "Action rejected by organization policy."),
@@ -6709,7 +6717,7 @@ ${appPermReview}`
6709
6717
  }
6710
6718
  }
6711
6719
  }
6712
- if (cloudEnforced && cloudRequestId) {
6720
+ if (cloudEnforced && cloudRequestId && cloudMayVote) {
6713
6721
  racePromises.push(
6714
6722
  (async () => {
6715
6723
  try {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@node9/proxy",
3
- "version": "2.6.1",
3
+ "version": "2.6.2",
4
4
  "description": "The Sudo Command for AI Agents. Execution Security for Claude Code, Codex, Gemini, Cursor, Opencode, Pi, and any MCP server.",
5
5
  "main": "./dist/index.js",
6
6
  "module": "./dist/index.mjs",