grokcodecli 0.1.11 → 0.1.12
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.
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"manager.d.ts","sourceRoot":"","sources":["../../src/permissions/manager.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,QAAQ,MAAM,UAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"manager.d.ts","sourceRoot":"","sources":["../../src/permissions/manager.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,QAAQ,MAAM,UAAU,CAAC;AAIrC,MAAM,MAAM,aAAa,GAAG,MAAM,GAAG,OAAO,GAAG,SAAS,CAAC;AAEzD,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,aAAa,CAAC;IACzB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACnC;AAED,MAAM,WAAW,gBAAgB;IAC/B,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,eAAe,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;CAC9B;AAwBD,qBAAa,iBAAiB;IAC5B,OAAO,CAAC,MAAM,CAAmB;IACjC,OAAO,CAAC,EAAE,CAAmC;gBAEjC,WAAW,GAAE,MAAM,EAAO;IAQtC,oBAAoB,CAAC,EAAE,EAAE,QAAQ,CAAC,SAAS,GAAG,IAAI;IAI5C,iBAAiB,CAAC,OAAO,EAAE,iBAAiB,GAAG,OAAO,CAAC,OAAO,CAAC;YA6BvD,UAAU;IAkDxB,OAAO,CAAC,aAAa;IAmBrB,OAAO,CAAC,QAAQ;IAkBhB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,aAAa;IAI7C,iBAAiB,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM;CAoBzE"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import * as readline from 'readline';
|
|
2
2
|
import chalk from 'chalk';
|
|
3
|
+
import { interactiveSelect } from '../utils/selector.js';
|
|
3
4
|
const TOOL_RISK_LEVELS = {
|
|
4
5
|
Read: 'read',
|
|
5
6
|
Glob: 'read',
|
|
@@ -59,50 +60,40 @@ export class PermissionManager {
|
|
|
59
60
|
const { tool, description, riskLevel, details } = request;
|
|
60
61
|
const color = RISK_COLORS[riskLevel];
|
|
61
62
|
const icon = RISK_ICONS[riskLevel];
|
|
62
|
-
|
|
63
|
-
console.log(
|
|
64
|
-
console.log(chalk.
|
|
65
|
-
console.log(chalk.cyan('│') + ` ${description}`.padEnd(52) + chalk.cyan('│'));
|
|
66
|
-
// Show details
|
|
63
|
+
// Show what's being requested
|
|
64
|
+
console.log();
|
|
65
|
+
console.log(` ${icon} ${color(tool)} ${chalk.dim('-')} ${description}`);
|
|
67
66
|
if (details) {
|
|
68
|
-
console.log(chalk.cyan('├─────────────────────────────────────────────────────┤'));
|
|
69
67
|
for (const [key, value] of Object.entries(details)) {
|
|
70
68
|
const valueStr = typeof value === 'string'
|
|
71
|
-
? value.length >
|
|
69
|
+
? value.length > 50 ? value.slice(0, 47) + '...' : value
|
|
72
70
|
: String(value);
|
|
73
|
-
console.log(chalk.
|
|
71
|
+
console.log(chalk.dim(` ${key}: ${valueStr}`));
|
|
74
72
|
}
|
|
75
73
|
}
|
|
76
|
-
console.log(chalk.cyan('└─────────────────────────────────────────────────────┘'));
|
|
77
|
-
console.log();
|
|
78
|
-
console.log(` ${chalk.white('[y]')} Yes, allow once`);
|
|
79
|
-
console.log(` ${chalk.white('[a]')} Allow for this session`);
|
|
80
|
-
console.log(` ${chalk.red('[n]')} No, deny`);
|
|
81
|
-
console.log(` ${chalk.red('[!]')} Deny and block for session`);
|
|
82
74
|
console.log();
|
|
83
|
-
const
|
|
84
|
-
|
|
75
|
+
const options = [
|
|
76
|
+
{ label: 'Allow once', value: 'once', description: 'permit this action' },
|
|
77
|
+
{ label: 'Allow session', value: 'session', description: 'permit for session' },
|
|
78
|
+
{ label: 'Deny', value: 'deny', description: 'reject this action' },
|
|
79
|
+
{ label: 'Block', value: 'block', description: 'block tool for session' },
|
|
80
|
+
];
|
|
81
|
+
const choice = await interactiveSelect('Permission:', options);
|
|
85
82
|
switch (choice) {
|
|
86
|
-
case '
|
|
87
|
-
case 'yes':
|
|
83
|
+
case 'once':
|
|
88
84
|
return true;
|
|
89
|
-
case '
|
|
90
|
-
case 'always':
|
|
85
|
+
case 'session':
|
|
91
86
|
this.config.sessionApproved.add(this.getSessionKey(tool, details));
|
|
92
|
-
console.log(chalk.
|
|
87
|
+
console.log(chalk.dim(` ✓ ${tool} approved for session`));
|
|
93
88
|
return true;
|
|
94
|
-
case '
|
|
95
|
-
case
|
|
96
|
-
case '':
|
|
97
|
-
console.log(chalk.yellow('⊘ Denied.\n'));
|
|
89
|
+
case 'deny':
|
|
90
|
+
case null:
|
|
98
91
|
return false;
|
|
99
|
-
case '!':
|
|
100
92
|
case 'block':
|
|
101
93
|
this.config.alwaysDeny.push(tool);
|
|
102
|
-
console.log(chalk.
|
|
94
|
+
console.log(chalk.dim(` ⛔ ${tool} blocked for session`));
|
|
103
95
|
return false;
|
|
104
96
|
default:
|
|
105
|
-
console.log(chalk.gray('Invalid choice, defaulting to deny.\n'));
|
|
106
97
|
return false;
|
|
107
98
|
}
|
|
108
99
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"manager.js","sourceRoot":"","sources":["../../src/permissions/manager.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,QAAQ,MAAM,UAAU,CAAC;AACrC,OAAO,KAAK,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"manager.js","sourceRoot":"","sources":["../../src/permissions/manager.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import * as readline from 'readline';
|
|
2
2
|
import chalk from 'chalk';
|
|
3
|
+
import { interactiveSelect, SelectorOption } from '../utils/selector.js';
|
|
3
4
|
|
|
4
5
|
export type ToolRiskLevel = 'read' | 'write' | 'execute';
|
|
5
6
|
|
|
@@ -88,58 +89,47 @@ export class PermissionManager {
|
|
|
88
89
|
const color = RISK_COLORS[riskLevel];
|
|
89
90
|
const icon = RISK_ICONS[riskLevel];
|
|
90
91
|
|
|
91
|
-
|
|
92
|
-
console.log(
|
|
93
|
-
console.log(chalk.
|
|
94
|
-
console.log(chalk.cyan('│') + ` ${description}`.padEnd(52) + chalk.cyan('│'));
|
|
95
|
-
|
|
96
|
-
// Show details
|
|
92
|
+
// Show what's being requested
|
|
93
|
+
console.log();
|
|
94
|
+
console.log(` ${icon} ${color(tool)} ${chalk.dim('-')} ${description}`);
|
|
97
95
|
if (details) {
|
|
98
|
-
console.log(chalk.cyan('├─────────────────────────────────────────────────────┤'));
|
|
99
96
|
for (const [key, value] of Object.entries(details)) {
|
|
100
97
|
const valueStr = typeof value === 'string'
|
|
101
|
-
? value.length >
|
|
98
|
+
? value.length > 50 ? value.slice(0, 47) + '...' : value
|
|
102
99
|
: String(value);
|
|
103
|
-
console.log(chalk.
|
|
100
|
+
console.log(chalk.dim(` ${key}: ${valueStr}`));
|
|
104
101
|
}
|
|
105
102
|
}
|
|
106
|
-
|
|
107
|
-
console.log(chalk.cyan('└─────────────────────────────────────────────────────┘'));
|
|
108
|
-
console.log();
|
|
109
|
-
console.log(` ${chalk.white('[y]')} Yes, allow once`);
|
|
110
|
-
console.log(` ${chalk.white('[a]')} Allow for this session`);
|
|
111
|
-
console.log(` ${chalk.red('[n]')} No, deny`);
|
|
112
|
-
console.log(` ${chalk.red('[!]')} Deny and block for session`);
|
|
113
103
|
console.log();
|
|
114
104
|
|
|
115
|
-
const
|
|
116
|
-
|
|
105
|
+
const options: SelectorOption[] = [
|
|
106
|
+
{ label: 'Allow once', value: 'once', description: 'permit this action' },
|
|
107
|
+
{ label: 'Allow session', value: 'session', description: 'permit for session' },
|
|
108
|
+
{ label: 'Deny', value: 'deny', description: 'reject this action' },
|
|
109
|
+
{ label: 'Block', value: 'block', description: 'block tool for session' },
|
|
110
|
+
];
|
|
111
|
+
|
|
112
|
+
const choice = await interactiveSelect('Permission:', options);
|
|
117
113
|
|
|
118
114
|
switch (choice) {
|
|
119
|
-
case '
|
|
120
|
-
case 'yes':
|
|
115
|
+
case 'once':
|
|
121
116
|
return true;
|
|
122
117
|
|
|
123
|
-
case '
|
|
124
|
-
case 'always':
|
|
118
|
+
case 'session':
|
|
125
119
|
this.config.sessionApproved.add(this.getSessionKey(tool, details));
|
|
126
|
-
console.log(chalk.
|
|
120
|
+
console.log(chalk.dim(` ✓ ${tool} approved for session`));
|
|
127
121
|
return true;
|
|
128
122
|
|
|
129
|
-
case '
|
|
130
|
-
case
|
|
131
|
-
case '':
|
|
132
|
-
console.log(chalk.yellow('⊘ Denied.\n'));
|
|
123
|
+
case 'deny':
|
|
124
|
+
case null:
|
|
133
125
|
return false;
|
|
134
126
|
|
|
135
|
-
case '!':
|
|
136
127
|
case 'block':
|
|
137
128
|
this.config.alwaysDeny.push(tool);
|
|
138
|
-
console.log(chalk.
|
|
129
|
+
console.log(chalk.dim(` ⛔ ${tool} blocked for session`));
|
|
139
130
|
return false;
|
|
140
131
|
|
|
141
132
|
default:
|
|
142
|
-
console.log(chalk.gray('Invalid choice, defaulting to deny.\n'));
|
|
143
133
|
return false;
|
|
144
134
|
}
|
|
145
135
|
}
|