@nella-labs/cli 0.1.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.
- package/README.md +79 -0
- package/dist/cli.d.ts +11 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +340 -0
- package/dist/cli.js.map +1 -0
- package/dist/index.d.ts +5 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +21 -0
- package/dist/index.js.map +1 -0
- package/package.json +45 -0
package/README.md
ADDED
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
# @nella/cli
|
|
2
|
+
|
|
3
|
+
Command-line interface for Nella - reliability layer for coding agents.
|
|
4
|
+
|
|
5
|
+
## Installation
|
|
6
|
+
|
|
7
|
+
```bash
|
|
8
|
+
npm install -g @nella/cli
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
## Commands
|
|
12
|
+
|
|
13
|
+
### `nella check`
|
|
14
|
+
|
|
15
|
+
Pre-flight check: can the task proceed?
|
|
16
|
+
|
|
17
|
+
```bash
|
|
18
|
+
nella check --task tasks/get-user-by-id --repo ./my-project
|
|
19
|
+
```
|
|
20
|
+
|
|
21
|
+
Returns exit code 0 if OK to proceed, 1 if should refuse.
|
|
22
|
+
|
|
23
|
+
### `nella validate`
|
|
24
|
+
|
|
25
|
+
Validate changes against task constraints.
|
|
26
|
+
|
|
27
|
+
```bash
|
|
28
|
+
nella validate --task tasks/get-user-by-id --repo ./my-project --changes changes.json
|
|
29
|
+
```
|
|
30
|
+
|
|
31
|
+
### `nella run`
|
|
32
|
+
|
|
33
|
+
Full run: check + validate + metrics.
|
|
34
|
+
|
|
35
|
+
```bash
|
|
36
|
+
nella run --task tasks/get-user-by-id --repo ./my-project --changes changes.json
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
## Options
|
|
40
|
+
|
|
41
|
+
| Option | Short | Description |
|
|
42
|
+
|--------|-------|-------------|
|
|
43
|
+
| `--task` | `-t` | Path to task.yaml or task directory |
|
|
44
|
+
| `--repo` | `-r` | Path to repository |
|
|
45
|
+
| `--changes` | `-c` | Path to changes.json file |
|
|
46
|
+
| `--skip-validation` | | Skip running test/lint/compile |
|
|
47
|
+
| `--skip-prerequisites` | | Skip prerequisite checks |
|
|
48
|
+
| `--json` | | Output as JSON |
|
|
49
|
+
| `--help` | `-h` | Show help |
|
|
50
|
+
|
|
51
|
+
## Changes File Format
|
|
52
|
+
|
|
53
|
+
The `--changes` option expects a JSON file:
|
|
54
|
+
|
|
55
|
+
```json
|
|
56
|
+
{
|
|
57
|
+
"files": [
|
|
58
|
+
{
|
|
59
|
+
"path": "src/users.ts",
|
|
60
|
+
"operation": "modify",
|
|
61
|
+
"content": "// file content..."
|
|
62
|
+
}
|
|
63
|
+
],
|
|
64
|
+
"diff": "optional git diff string"
|
|
65
|
+
}
|
|
66
|
+
```
|
|
67
|
+
|
|
68
|
+
## Examples
|
|
69
|
+
|
|
70
|
+
```bash
|
|
71
|
+
# Check if task can proceed
|
|
72
|
+
nella check -t tasks/get-user-by-id -r ./project
|
|
73
|
+
|
|
74
|
+
# Validate changes (skip running tests)
|
|
75
|
+
nella validate -t tasks/get-user-by-id -r ./project -c changes.json --skip-validation
|
|
76
|
+
|
|
77
|
+
# Full run with JSON output
|
|
78
|
+
nella run -t tasks/get-user-by-id -r ./project -c changes.json --json
|
|
79
|
+
```
|
package/dist/cli.d.ts
ADDED
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
/**
|
|
3
|
+
* Nella CLI
|
|
4
|
+
*
|
|
5
|
+
* Commands:
|
|
6
|
+
* nella check - Pre-flight check: can the task proceed?
|
|
7
|
+
* nella validate - Validate changes against task constraints
|
|
8
|
+
* nella run - Full run: check + validate + metrics
|
|
9
|
+
*/
|
|
10
|
+
export {};
|
|
11
|
+
//# sourceMappingURL=cli.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AAEA;;;;;;;GAOG"}
|
package/dist/cli.js
ADDED
|
@@ -0,0 +1,340 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
"use strict";
|
|
3
|
+
/**
|
|
4
|
+
* Nella CLI
|
|
5
|
+
*
|
|
6
|
+
* Commands:
|
|
7
|
+
* nella check - Pre-flight check: can the task proceed?
|
|
8
|
+
* nella validate - Validate changes against task constraints
|
|
9
|
+
* nella run - Full run: check + validate + metrics
|
|
10
|
+
*/
|
|
11
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
12
|
+
if (k2 === undefined) k2 = k;
|
|
13
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
14
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
15
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
16
|
+
}
|
|
17
|
+
Object.defineProperty(o, k2, desc);
|
|
18
|
+
}) : (function(o, m, k, k2) {
|
|
19
|
+
if (k2 === undefined) k2 = k;
|
|
20
|
+
o[k2] = m[k];
|
|
21
|
+
}));
|
|
22
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
23
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
24
|
+
}) : function(o, v) {
|
|
25
|
+
o["default"] = v;
|
|
26
|
+
});
|
|
27
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
28
|
+
var ownKeys = function(o) {
|
|
29
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
30
|
+
var ar = [];
|
|
31
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
32
|
+
return ar;
|
|
33
|
+
};
|
|
34
|
+
return ownKeys(o);
|
|
35
|
+
};
|
|
36
|
+
return function (mod) {
|
|
37
|
+
if (mod && mod.__esModule) return mod;
|
|
38
|
+
var result = {};
|
|
39
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
40
|
+
__setModuleDefault(result, mod);
|
|
41
|
+
return result;
|
|
42
|
+
};
|
|
43
|
+
})();
|
|
44
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
45
|
+
const fs = __importStar(require("fs"));
|
|
46
|
+
const path = __importStar(require("path"));
|
|
47
|
+
const yaml = __importStar(require("js-yaml"));
|
|
48
|
+
const core_1 = require("@nella-labs/core");
|
|
49
|
+
function parseArgs(args) {
|
|
50
|
+
const result = {
|
|
51
|
+
command: "help",
|
|
52
|
+
output: "pretty",
|
|
53
|
+
};
|
|
54
|
+
let i = 0;
|
|
55
|
+
while (i < args.length) {
|
|
56
|
+
const arg = args[i];
|
|
57
|
+
// Commands
|
|
58
|
+
if (arg === "check" || arg === "validate" || arg === "run" || arg === "help") {
|
|
59
|
+
result.command = arg;
|
|
60
|
+
i++;
|
|
61
|
+
continue;
|
|
62
|
+
}
|
|
63
|
+
// Options
|
|
64
|
+
if (arg === "--task" || arg === "-t") {
|
|
65
|
+
result.taskPath = args[++i];
|
|
66
|
+
}
|
|
67
|
+
else if (arg === "--repo" || arg === "-r") {
|
|
68
|
+
result.repoPath = args[++i];
|
|
69
|
+
}
|
|
70
|
+
else if (arg === "--changes" || arg === "-c") {
|
|
71
|
+
result.changesPath = args[++i];
|
|
72
|
+
}
|
|
73
|
+
else if (arg === "--skip-validation") {
|
|
74
|
+
result.skipValidation = true;
|
|
75
|
+
}
|
|
76
|
+
else if (arg === "--skip-prerequisites") {
|
|
77
|
+
result.skipPrerequisites = true;
|
|
78
|
+
}
|
|
79
|
+
else if (arg === "--json") {
|
|
80
|
+
result.output = "json";
|
|
81
|
+
}
|
|
82
|
+
else if (arg === "--help" || arg === "-h") {
|
|
83
|
+
result.command = "help";
|
|
84
|
+
}
|
|
85
|
+
i++;
|
|
86
|
+
}
|
|
87
|
+
return result;
|
|
88
|
+
}
|
|
89
|
+
// =============================================================================
|
|
90
|
+
// Task Loading
|
|
91
|
+
// =============================================================================
|
|
92
|
+
function loadTask(taskPath) {
|
|
93
|
+
const fullPath = path.resolve(taskPath);
|
|
94
|
+
// Check if it's a directory (look for task.yaml inside)
|
|
95
|
+
let yamlPath = fullPath;
|
|
96
|
+
if (fs.statSync(fullPath).isDirectory()) {
|
|
97
|
+
yamlPath = path.join(fullPath, "task.yaml");
|
|
98
|
+
}
|
|
99
|
+
if (!fs.existsSync(yamlPath)) {
|
|
100
|
+
throw new Error(`Task file not found: ${yamlPath}`);
|
|
101
|
+
}
|
|
102
|
+
const content = fs.readFileSync(yamlPath, "utf-8");
|
|
103
|
+
const raw = yaml.load(content);
|
|
104
|
+
// Transform snake_case to camelCase
|
|
105
|
+
return {
|
|
106
|
+
id: raw.id,
|
|
107
|
+
name: raw.name,
|
|
108
|
+
prompt: raw.prompt,
|
|
109
|
+
category: raw.category,
|
|
110
|
+
difficulty: raw.difficulty,
|
|
111
|
+
fixture: raw.fixture,
|
|
112
|
+
constraints: (raw.constraints ?? []).map((c) => ({
|
|
113
|
+
id: c.id,
|
|
114
|
+
description: c.description,
|
|
115
|
+
rule: c.rule,
|
|
116
|
+
filesNotToModify: c.files_not_to_modify,
|
|
117
|
+
forbiddenPatterns: c.forbidden_patterns,
|
|
118
|
+
})),
|
|
119
|
+
validation: raw.validation ?? {},
|
|
120
|
+
expected: {
|
|
121
|
+
filesToModify: raw.expected?.files_to_modify ?? [],
|
|
122
|
+
filesToIgnore: raw.expected?.files_to_ignore ?? [],
|
|
123
|
+
expectedLineCount: raw.expected?.expected_line_count,
|
|
124
|
+
},
|
|
125
|
+
refusalExpected: raw.refusal_expected,
|
|
126
|
+
refusalPatterns: raw.refusal_patterns,
|
|
127
|
+
timeoutSeconds: raw.timeout_seconds,
|
|
128
|
+
};
|
|
129
|
+
}
|
|
130
|
+
function loadChanges(changesPath) {
|
|
131
|
+
const content = fs.readFileSync(changesPath, "utf-8");
|
|
132
|
+
const data = JSON.parse(content);
|
|
133
|
+
// Expect { files: FileChange[] } or { files: FileChange[], diff: string }
|
|
134
|
+
return {
|
|
135
|
+
files: data.files,
|
|
136
|
+
diff: data.diff,
|
|
137
|
+
};
|
|
138
|
+
}
|
|
139
|
+
// =============================================================================
|
|
140
|
+
// Output Formatting
|
|
141
|
+
// =============================================================================
|
|
142
|
+
function formatPretty(result) {
|
|
143
|
+
const lines = [];
|
|
144
|
+
if (result.passed !== undefined) {
|
|
145
|
+
lines.push(result.passed ? "✅ PASSED" : "❌ FAILED");
|
|
146
|
+
lines.push("");
|
|
147
|
+
}
|
|
148
|
+
if (result.refusal) {
|
|
149
|
+
const refusal = result.refusal;
|
|
150
|
+
if (refusal.shouldRefuse) {
|
|
151
|
+
lines.push("🚫 REFUSAL");
|
|
152
|
+
lines.push(` Reason: ${refusal.reason}`);
|
|
153
|
+
lines.push("");
|
|
154
|
+
}
|
|
155
|
+
}
|
|
156
|
+
if (result.constraints) {
|
|
157
|
+
const constraints = result.constraints;
|
|
158
|
+
if (constraints.length > 0) {
|
|
159
|
+
lines.push("Constraints:");
|
|
160
|
+
for (const c of constraints) {
|
|
161
|
+
const icon = c.passed ? "✓" : "✗";
|
|
162
|
+
lines.push(` ${icon} ${c.id}${c.violationDetails ? `: ${c.violationDetails}` : ""}`);
|
|
163
|
+
}
|
|
164
|
+
lines.push("");
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
if (result.validation) {
|
|
168
|
+
const val = result.validation;
|
|
169
|
+
lines.push("Validation:");
|
|
170
|
+
if (val.test)
|
|
171
|
+
lines.push(` Test: ${val.test.success ? "✓" : "✗"}`);
|
|
172
|
+
if (val.lint)
|
|
173
|
+
lines.push(` Lint: ${val.lint.success ? "✓" : "✗"}`);
|
|
174
|
+
if (val.compile)
|
|
175
|
+
lines.push(` Compile: ${val.compile.success ? "✓" : "✗"}`);
|
|
176
|
+
lines.push("");
|
|
177
|
+
}
|
|
178
|
+
if (result.scope) {
|
|
179
|
+
const scope = result.scope;
|
|
180
|
+
lines.push(`Scope Creep: ${(scope.scopeCreepRatio * 100).toFixed(1)}%`);
|
|
181
|
+
if (scope.extraFiles.length > 0) {
|
|
182
|
+
lines.push(` Extra files: ${scope.extraFiles.join(", ")}`);
|
|
183
|
+
}
|
|
184
|
+
lines.push("");
|
|
185
|
+
}
|
|
186
|
+
if (result.metrics) {
|
|
187
|
+
const metrics = result.metrics;
|
|
188
|
+
lines.push("Metrics:");
|
|
189
|
+
lines.push(` Scope Creep: ${metrics.scopeCreep}`);
|
|
190
|
+
lines.push(` Constraint Violations: ${metrics.constraintViolations}`);
|
|
191
|
+
lines.push(` Validation Integrity: ${metrics.validationIntegrity}`);
|
|
192
|
+
if (metrics.refusalCorrectness !== null) {
|
|
193
|
+
lines.push(` Refusal Correctness: ${metrics.refusalCorrectness}`);
|
|
194
|
+
}
|
|
195
|
+
}
|
|
196
|
+
if (result.artifacts) {
|
|
197
|
+
const artifacts = result.artifacts;
|
|
198
|
+
lines.push("");
|
|
199
|
+
lines.push(`Artifacts: ${artifacts.runDir}`);
|
|
200
|
+
}
|
|
201
|
+
return lines.join("\n");
|
|
202
|
+
}
|
|
203
|
+
// =============================================================================
|
|
204
|
+
// Commands
|
|
205
|
+
// =============================================================================
|
|
206
|
+
async function runCheckCommand(args) {
|
|
207
|
+
if (!args.taskPath || !args.repoPath) {
|
|
208
|
+
console.error("Error: --task and --repo are required for check command");
|
|
209
|
+
process.exit(1);
|
|
210
|
+
}
|
|
211
|
+
const task = loadTask(args.taskPath);
|
|
212
|
+
const repoPath = path.resolve(args.repoPath);
|
|
213
|
+
const result = (0, core_1.check)(task, repoPath, {
|
|
214
|
+
skipPrerequisites: args.skipPrerequisites,
|
|
215
|
+
});
|
|
216
|
+
if (args.output === "json") {
|
|
217
|
+
console.log(JSON.stringify(result, null, 2));
|
|
218
|
+
}
|
|
219
|
+
else {
|
|
220
|
+
if (result.shouldRefuse) {
|
|
221
|
+
console.log("🚫 SHOULD REFUSE");
|
|
222
|
+
console.log(` Reason: ${result.reason}`);
|
|
223
|
+
if (result.patternsMatched.length > 0) {
|
|
224
|
+
console.log(` Patterns: ${result.patternsMatched.join(", ")}`);
|
|
225
|
+
}
|
|
226
|
+
console.log(` Confidence: ${(result.confidence * 100).toFixed(0)}%`);
|
|
227
|
+
}
|
|
228
|
+
else {
|
|
229
|
+
console.log("✅ OK TO PROCEED");
|
|
230
|
+
}
|
|
231
|
+
}
|
|
232
|
+
process.exit(result.shouldRefuse ? 1 : 0);
|
|
233
|
+
}
|
|
234
|
+
async function runValidateCommand(args) {
|
|
235
|
+
if (!args.taskPath || !args.repoPath || !args.changesPath) {
|
|
236
|
+
console.error("Error: --task, --repo, and --changes are required for validate command");
|
|
237
|
+
process.exit(1);
|
|
238
|
+
}
|
|
239
|
+
const task = loadTask(args.taskPath);
|
|
240
|
+
const repoPath = path.resolve(args.repoPath);
|
|
241
|
+
const changes = loadChanges(args.changesPath);
|
|
242
|
+
const result = await (0, core_1.runTask)(repoPath, task, changes, {
|
|
243
|
+
skipRefusalCheck: true,
|
|
244
|
+
skipValidation: args.skipValidation,
|
|
245
|
+
skipArtifacts: true,
|
|
246
|
+
});
|
|
247
|
+
if (args.output === "json") {
|
|
248
|
+
console.log(JSON.stringify(result, null, 2));
|
|
249
|
+
}
|
|
250
|
+
else {
|
|
251
|
+
console.log(formatPretty(result));
|
|
252
|
+
}
|
|
253
|
+
process.exit(result.passed ? 0 : 1);
|
|
254
|
+
}
|
|
255
|
+
async function runRunCommand(args) {
|
|
256
|
+
if (!args.taskPath || !args.repoPath) {
|
|
257
|
+
console.error("Error: --task and --repo are required for run command");
|
|
258
|
+
process.exit(1);
|
|
259
|
+
}
|
|
260
|
+
const task = loadTask(args.taskPath);
|
|
261
|
+
const repoPath = path.resolve(args.repoPath);
|
|
262
|
+
// Optionally load changes
|
|
263
|
+
let changes;
|
|
264
|
+
if (args.changesPath) {
|
|
265
|
+
changes = loadChanges(args.changesPath);
|
|
266
|
+
}
|
|
267
|
+
const result = await (0, core_1.runTask)(repoPath, task, changes, {
|
|
268
|
+
skipValidation: args.skipValidation,
|
|
269
|
+
skipPrerequisites: args.skipPrerequisites,
|
|
270
|
+
});
|
|
271
|
+
if (args.output === "json") {
|
|
272
|
+
console.log(JSON.stringify(result, null, 2));
|
|
273
|
+
}
|
|
274
|
+
else {
|
|
275
|
+
console.log(formatPretty(result));
|
|
276
|
+
}
|
|
277
|
+
process.exit(result.passed ? 0 : 1);
|
|
278
|
+
}
|
|
279
|
+
function showHelp() {
|
|
280
|
+
console.log(`
|
|
281
|
+
Nella CLI - Reliability layer for coding agents
|
|
282
|
+
|
|
283
|
+
USAGE:
|
|
284
|
+
nella <command> [options]
|
|
285
|
+
|
|
286
|
+
COMMANDS:
|
|
287
|
+
check Pre-flight check: can the task proceed?
|
|
288
|
+
validate Validate changes against task constraints
|
|
289
|
+
run Full run: check + validate + metrics
|
|
290
|
+
help Show this help message
|
|
291
|
+
|
|
292
|
+
OPTIONS:
|
|
293
|
+
--task, -t <path> Path to task.yaml or task directory
|
|
294
|
+
--repo, -r <path> Path to repository
|
|
295
|
+
--changes, -c <path> Path to changes.json file
|
|
296
|
+
--skip-validation Skip running test/lint/compile commands
|
|
297
|
+
--skip-prerequisites Skip prerequisite checks
|
|
298
|
+
--json Output as JSON
|
|
299
|
+
--help, -h Show help
|
|
300
|
+
|
|
301
|
+
EXAMPLES:
|
|
302
|
+
# Check if a task can proceed
|
|
303
|
+
nella check --task tasks/get-user-by-id --repo ./fixture
|
|
304
|
+
|
|
305
|
+
# Validate changes
|
|
306
|
+
nella validate --task tasks/get-user-by-id --repo ./fixture --changes changes.json
|
|
307
|
+
|
|
308
|
+
# Full run with changes
|
|
309
|
+
nella run --task tasks/get-user-by-id --repo ./fixture --changes changes.json
|
|
310
|
+
|
|
311
|
+
# Full run without changes (just check + metrics)
|
|
312
|
+
nella run --task tasks/get-user-by-id --repo ./fixture --json
|
|
313
|
+
`);
|
|
314
|
+
}
|
|
315
|
+
// =============================================================================
|
|
316
|
+
// Main
|
|
317
|
+
// =============================================================================
|
|
318
|
+
async function main() {
|
|
319
|
+
const args = parseArgs(process.argv.slice(2));
|
|
320
|
+
switch (args.command) {
|
|
321
|
+
case "check":
|
|
322
|
+
await runCheckCommand(args);
|
|
323
|
+
break;
|
|
324
|
+
case "validate":
|
|
325
|
+
await runValidateCommand(args);
|
|
326
|
+
break;
|
|
327
|
+
case "run":
|
|
328
|
+
await runRunCommand(args);
|
|
329
|
+
break;
|
|
330
|
+
case "help":
|
|
331
|
+
default:
|
|
332
|
+
showHelp();
|
|
333
|
+
break;
|
|
334
|
+
}
|
|
335
|
+
}
|
|
336
|
+
main().catch((e) => {
|
|
337
|
+
console.error("Error:", e.message);
|
|
338
|
+
process.exit(1);
|
|
339
|
+
});
|
|
340
|
+
//# sourceMappingURL=cli.js.map
|
package/dist/cli.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,cAAc,kBAAkB,CAAC"}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Nella CLI - Re-exports from core
|
|
4
|
+
*/
|
|
5
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
6
|
+
if (k2 === undefined) k2 = k;
|
|
7
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
8
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
9
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
10
|
+
}
|
|
11
|
+
Object.defineProperty(o, k2, desc);
|
|
12
|
+
}) : (function(o, m, k, k2) {
|
|
13
|
+
if (k2 === undefined) k2 = k;
|
|
14
|
+
o[k2] = m[k];
|
|
15
|
+
}));
|
|
16
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
17
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
18
|
+
};
|
|
19
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
20
|
+
__exportStar(require("@nella-labs/core"), exports);
|
|
21
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAAA;;GAEG;;;;;;;;;;;;;;;;AAEH,mDAAiC"}
|
package/package.json
ADDED
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@nella-labs/cli",
|
|
3
|
+
"version": "0.1.0",
|
|
4
|
+
"description": "Nella CLI - reliability layer for coding agents",
|
|
5
|
+
"type": "commonjs",
|
|
6
|
+
"bin": {
|
|
7
|
+
"nella": "./dist/cli.js"
|
|
8
|
+
},
|
|
9
|
+
"main": "dist/index.js",
|
|
10
|
+
"types": "dist/index.d.ts",
|
|
11
|
+
"files": [
|
|
12
|
+
"dist"
|
|
13
|
+
],
|
|
14
|
+
"scripts": {
|
|
15
|
+
"build": "tsc",
|
|
16
|
+
"dev": "tsc --watch",
|
|
17
|
+
"prepublishOnly": "npm run build"
|
|
18
|
+
},
|
|
19
|
+
"keywords": [
|
|
20
|
+
"coding-agent",
|
|
21
|
+
"ai",
|
|
22
|
+
"cli",
|
|
23
|
+
"reliability",
|
|
24
|
+
"nella"
|
|
25
|
+
],
|
|
26
|
+
"author": "Nella Labs",
|
|
27
|
+
"license": "MIT",
|
|
28
|
+
"repository": {
|
|
29
|
+
"type": "git",
|
|
30
|
+
"url": "https://github.com/nella-labs/nella.git",
|
|
31
|
+
"directory": "packages/cli"
|
|
32
|
+
},
|
|
33
|
+
"publishConfig": {
|
|
34
|
+
"access": "public"
|
|
35
|
+
},
|
|
36
|
+
"dependencies": {
|
|
37
|
+
"@nella-labs/core": "workspace:*",
|
|
38
|
+
"js-yaml": "^4.1.0"
|
|
39
|
+
},
|
|
40
|
+
"devDependencies": {
|
|
41
|
+
"@types/js-yaml": "^4.0.9",
|
|
42
|
+
"@types/node": "^20.0.0",
|
|
43
|
+
"typescript": "^5.3.0"
|
|
44
|
+
}
|
|
45
|
+
}
|