@jevitate/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.
Files changed (77) hide show
  1. package/LICENSE +21 -0
  2. package/dist/ai-cli.d.ts +31 -0
  3. package/dist/ai-cli.js +238 -0
  4. package/dist/ai-cli.js.map +1 -0
  5. package/dist/bin.d.ts +2 -0
  6. package/dist/bin.js +50663 -0
  7. package/dist/bin.js.map +1 -0
  8. package/dist/data-dir.d.ts +9 -0
  9. package/dist/data-dir.js +13 -0
  10. package/dist/data-dir.js.map +1 -0
  11. package/dist/envelope.d.ts +11 -0
  12. package/dist/envelope.js +7 -0
  13. package/dist/envelope.js.map +1 -0
  14. package/dist/explore-api.d.ts +187 -0
  15. package/dist/explore-api.js +302 -0
  16. package/dist/explore-api.js.map +1 -0
  17. package/dist/index.d.ts +2 -0
  18. package/dist/index.js +3 -0
  19. package/dist/index.js.map +1 -0
  20. package/dist/init-keys.d.ts +14 -0
  21. package/dist/init-keys.js +18 -0
  22. package/dist/init-keys.js.map +1 -0
  23. package/dist/init-mcp.d.ts +87 -0
  24. package/dist/init-mcp.js +198 -0
  25. package/dist/init-mcp.js.map +1 -0
  26. package/dist/init-skills.d.ts +80 -0
  27. package/dist/init-skills.js +256 -0
  28. package/dist/init-skills.js.map +1 -0
  29. package/dist/journey-api.d.ts +37 -0
  30. package/dist/journey-api.js +55 -0
  31. package/dist/journey-api.js.map +1 -0
  32. package/dist/load-api.d.ts +48 -0
  33. package/dist/load-api.js +84 -0
  34. package/dist/load-api.js.map +1 -0
  35. package/dist/mcp-api.d.ts +116 -0
  36. package/dist/mcp-api.js +359 -0
  37. package/dist/mcp-api.js.map +1 -0
  38. package/dist/mission-api.d.ts +56 -0
  39. package/dist/mission-api.js +65 -0
  40. package/dist/mission-api.js.map +1 -0
  41. package/dist/program.d.ts +77 -0
  42. package/dist/program.js +1938 -0
  43. package/dist/program.js.map +1 -0
  44. package/dist/record-api.d.ts +74 -0
  45. package/dist/record-api.js +93 -0
  46. package/dist/record-api.js.map +1 -0
  47. package/dist/regression-api.d.ts +17 -0
  48. package/dist/regression-api.js +16 -0
  49. package/dist/regression-api.js.map +1 -0
  50. package/dist/self-heal-adapter.d.ts +31 -0
  51. package/dist/self-heal-adapter.js +70 -0
  52. package/dist/self-heal-adapter.js.map +1 -0
  53. package/dist/source-api.d.ts +147 -0
  54. package/dist/source-api.js +208 -0
  55. package/dist/source-api.js.map +1 -0
  56. package/dist/source-run-api.d.ts +57 -0
  57. package/dist/source-run-api.js +91 -0
  58. package/dist/source-run-api.js.map +1 -0
  59. package/dist/ui-api.d.ts +35 -0
  60. package/dist/ui-api.js +369 -0
  61. package/dist/ui-api.js.map +1 -0
  62. package/dist/ux-api.d.ts +75 -0
  63. package/dist/ux-api.js +231 -0
  64. package/dist/ux-api.js.map +1 -0
  65. package/dist/version.d.ts +1 -0
  66. package/dist/version.js +37 -0
  67. package/dist/version.js.map +1 -0
  68. package/package.json +85 -0
  69. package/skills/jevitate-explore/SKILL.md +108 -0
  70. package/skills/jevitate-load-test/SKILL.md +42 -0
  71. package/skills/jevitate-mission-scope/SKILL.md +107 -0
  72. package/skills/jevitate-record/SKILL.md +78 -0
  73. package/skills/jevitate-run-journey/SKILL.md +72 -0
  74. package/skills/jevitate-sources/SKILL.md +88 -0
  75. package/skills/jevitate-ux-review/SKILL.md +68 -0
  76. package/ui/app.js +538 -0
  77. package/ui/index.html +546 -0
package/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 Matthew Cochran
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
@@ -0,0 +1,31 @@
1
+ import type { Command } from "commander";
2
+ import { type CredentialKey, type SecureKeyIO, type GenerationPort, type CatalogModel, type ModelConstraints } from "@jevitate/ai-core";
3
+ import type { CliDeps } from "./program.js";
4
+ /**
5
+ * Additive, optional wiring for `@jevitate/ai-core` threaded through `CliDeps`.
6
+ * Every field is injectable so `ai-cli.test.ts` never touches real env,
7
+ * stdin, or disk — production `buildProgram` calls omit `ai` entirely and
8
+ * get the real-env store + fake generation gateway (never a key by default).
9
+ */
10
+ export interface AiCliDeps {
11
+ env?: Record<string, string | undefined>;
12
+ localConfig?: Partial<Record<CredentialKey, string>>;
13
+ secureIO?: SecureKeyIO;
14
+ gateway?: GenerationPort;
15
+ catalog?: CatalogModel[];
16
+ constraints?: ModelConstraints;
17
+ }
18
+ /**
19
+ * A tiny write gate: forwards to `output` while unmuted, drops everything
20
+ * while muted. Exported so the actual "does the key get echoed" decision is
21
+ * directly unit-testable, independent of readline/TTY simulation (per-
22
+ * keystroke echo can't be faithfully exercised outside a real terminal in a
23
+ * non-interactive test runner).
24
+ */
25
+ export declare function createMutableEcho(output: NodeJS.WritableStream): {
26
+ write: (chunk: string) => void;
27
+ mute: () => void;
28
+ unmute: () => void;
29
+ };
30
+ export declare function realSecureIO(): SecureKeyIO;
31
+ export declare function registerAiCommands(program: Command, deps: CliDeps): void;
package/dist/ai-cli.js ADDED
@@ -0,0 +1,238 @@
1
+ import { envCredentialStore, FEATURE_KEYS, requireKeys, MissingCredentialError, collectMissingKeys, FakeGenerationGateway, OpenRouterGenerationGateway, GEN_TASKS, } from "@jevitate/ai-core";
2
+ import { ok, fail } from "./envelope.js";
3
+ import { resolveDataDir } from "./data-dir.js";
4
+ const DEFAULT_CATALOG = [
5
+ { id: "openai/gpt-4o-mini", promptUsdPer1k: 0.15, completionUsdPer1k: 0.6, regions: [], latencyClass: "fast", capabilities: [] },
6
+ ];
7
+ const DEFAULT_CONSTRAINTS = { requiredCapabilities: [] };
8
+ const FEATURES = ["generation", "judgment"];
9
+ /**
10
+ * A tiny write gate: forwards to `output` while unmuted, drops everything
11
+ * while muted. Exported so the actual "does the key get echoed" decision is
12
+ * directly unit-testable, independent of readline/TTY simulation (per-
13
+ * keystroke echo can't be faithfully exercised outside a real terminal in a
14
+ * non-interactive test runner).
15
+ */
16
+ export function createMutableEcho(output) {
17
+ let muted = false;
18
+ return {
19
+ write: (chunk) => {
20
+ if (!muted)
21
+ output.write(chunk);
22
+ },
23
+ mute: () => {
24
+ muted = true;
25
+ },
26
+ unmute: () => {
27
+ muted = false;
28
+ },
29
+ };
30
+ }
31
+ export function realSecureIO() {
32
+ return {
33
+ async promptSecret(message) {
34
+ const readline = await import("node:readline");
35
+ return new Promise((resolve) => {
36
+ const rl = readline.createInterface({ input: process.stdin, output: process.stdout, terminal: true });
37
+ const echo = createMutableEcho(process.stdout);
38
+ // Node's core readline has no public masked-input option. Routing
39
+ // every write readline would otherwise make through this output
40
+ // stream's internal hook through our own mute-able gate is the
41
+ // documented workaround for suppressing per-keystroke terminal echo
42
+ // (Node readline FAQ) — genuinely hides the typed key, matching
43
+ // `collectMissingKeys`'s "input hidden" prompt copy. Muted only for
44
+ // the duration of this single prompt; the model never sees the
45
+ // typed value either way (out-of-band, host-only).
46
+ rl._writeToOutput = (chunk) => echo.write(chunk);
47
+ echo.write(`${message} `);
48
+ echo.mute();
49
+ rl.question("", (answer) => {
50
+ echo.unmute();
51
+ rl.close();
52
+ process.stdout.write("\n");
53
+ resolve(answer);
54
+ });
55
+ });
56
+ },
57
+ async persist(key, value) {
58
+ const { mkdir, writeFile, readFile } = await import("node:fs/promises");
59
+ const { dirname } = await import("node:path");
60
+ // Credentials live at ~/.jevitate/credentials.json (see data-dir.ts).
61
+ const path = resolveDataDir(["credentials.json"]);
62
+ await mkdir(dirname(path), { recursive: true });
63
+ let existing = {};
64
+ try {
65
+ existing = JSON.parse(await readFile(path, "utf8"));
66
+ }
67
+ catch {
68
+ // no existing file yet — start fresh
69
+ }
70
+ existing[key] = value;
71
+ await writeFile(path, JSON.stringify(existing, null, 2), { mode: 0o600 });
72
+ },
73
+ };
74
+ }
75
+ /** Lazily imports `ai` + `@openrouter/ai-sdk-provider` so the CLI builds and
76
+ * runs `--json`/fake paths without either package resolvable. The key is
77
+ * placed ONLY in the `Authorization` header, never in `body`/`prompt`. */
78
+ async function realOpenRouterCall() {
79
+ const { generateObject } = await import("ai");
80
+ const { createOpenRouter } = await import("@openrouter/ai-sdk-provider");
81
+ return async ({ model, schema, body, authHeader }) => {
82
+ const openrouter = createOpenRouter({ headers: { Authorization: authHeader } });
83
+ const start = Date.now();
84
+ const { object } = await generateObject({
85
+ model: openrouter(model),
86
+ schema,
87
+ prompt: JSON.stringify(body),
88
+ });
89
+ return { object, latencyMs: Date.now() - start };
90
+ };
91
+ }
92
+ function buildStore(ai) {
93
+ return envCredentialStore(ai?.env ?? process.env, ai?.localConfig ?? {});
94
+ }
95
+ export function registerAiCommands(program, deps) {
96
+ const ai = program.command("ai");
97
+ ai.command("status")
98
+ .option("--json", "emit a JSON envelope")
99
+ .action(function () {
100
+ const { json } = this.opts();
101
+ const store = buildStore(deps.ai);
102
+ const data = {};
103
+ for (const feature of FEATURES) {
104
+ const required = [...FEATURE_KEYS[feature]];
105
+ const missing = required.filter((k) => !store.detect(k));
106
+ data[feature] = { required, missing };
107
+ }
108
+ const envelope = ok(data);
109
+ if (json) {
110
+ emitJsonLine(program, envelope);
111
+ }
112
+ else {
113
+ const out = program.configureOutput().writeOut;
114
+ for (const feature of FEATURES) {
115
+ const { missing } = data[feature];
116
+ out?.(`${feature}: ${missing.length === 0 ? "ready" : `missing ${missing.join(", ")}`}\n`);
117
+ }
118
+ process.exitCode = 0;
119
+ }
120
+ });
121
+ ai.command("setup <feature>")
122
+ .option("--json", "emit a JSON envelope")
123
+ .action(async function (feature) {
124
+ const { json } = this.opts();
125
+ if (feature !== "generation" && feature !== "judgment") {
126
+ emitJsonLine(program, fail("E_INVALID_FEATURE", `unknown feature '${feature}' — expected 'generation' or 'judgment'`));
127
+ return;
128
+ }
129
+ try {
130
+ const store = buildStore(deps.ai);
131
+ const io = deps.ai?.secureIO ?? realSecureIO();
132
+ const collected = await collectMissingKeys(feature, store, io);
133
+ const envelope = ok({ feature, collected });
134
+ if (json) {
135
+ emitJsonLine(program, envelope);
136
+ }
137
+ else {
138
+ program.configureOutput().writeOut?.(`collected: ${collected.join(", ") || "(nothing missing)"}\n`);
139
+ process.exitCode = 0;
140
+ }
141
+ }
142
+ catch (err) {
143
+ emitJsonLine(program, fail("E_AI_SETUP", String(err instanceof Error ? err.message : err)));
144
+ }
145
+ });
146
+ ai.command("generate <task>")
147
+ .requiredOption("--input <json>", "task input as a JSON string")
148
+ .option("--real", "use the real OpenRouter adapter (requires OPENROUTER_API_KEY)", false)
149
+ .option("--fake", "explicitly opt into the deterministic fake gateway (no key required)", false)
150
+ .option("--json", "emit a JSON envelope")
151
+ .action(async function (task) {
152
+ const { input, real, fake, json } = this.opts();
153
+ if (!(task in GEN_TASKS)) {
154
+ emitJsonLine(program, fail("E_UNKNOWN_TASK", `unknown generation task '${task}'`));
155
+ return;
156
+ }
157
+ let parsedInput;
158
+ try {
159
+ parsedInput = JSON.parse(input);
160
+ }
161
+ catch (err) {
162
+ emitJsonLine(program, fail("E_INVALID_INPUT", String(err instanceof Error ? err.message : err)));
163
+ return;
164
+ }
165
+ const store = buildStore(deps.ai);
166
+ try {
167
+ let gateway;
168
+ if (deps.ai?.gateway) {
169
+ gateway = deps.ai.gateway;
170
+ }
171
+ else if (real) {
172
+ requireKeys("generation", store); // fail-closed before any wiring
173
+ gateway = new OpenRouterGenerationGateway({
174
+ store,
175
+ catalog: deps.ai?.catalog ?? DEFAULT_CATALOG,
176
+ constraints: deps.ai?.constraints ?? DEFAULT_CONSTRAINTS,
177
+ call: await realOpenRouterCall(),
178
+ });
179
+ }
180
+ else if (fake) {
181
+ gateway = new FakeGenerationGateway();
182
+ }
183
+ else {
184
+ // No explicit choice made. Silently falling back to the fake
185
+ // gateway here would be a footgun: a user who forgot `--real` (or
186
+ // never ran `ai setup`) would get a fake, made-up answer disclosed
187
+ // only via `provenance.adapter`, easy to miss. Fail closed instead.
188
+ const hasKey = store.detect("OPENROUTER_API_KEY");
189
+ emitJsonLine(program, fail("E_AI_SETUP_REQUIRED", hasKey
190
+ ? "no gateway selected — pass --real to use the configured OPENROUTER_API_KEY, or --fake to explicitly use the deterministic fake gateway"
191
+ : "no gateway selected and no OPENROUTER_API_KEY configured — run `ai setup generation` then pass --real, or pass --fake to explicitly use the deterministic fake gateway"));
192
+ return;
193
+ }
194
+ const result = await gateway.generate(task, parsedInput);
195
+ const envelope = ok(result);
196
+ if (json) {
197
+ emitJsonLine(program, envelope);
198
+ }
199
+ else {
200
+ program.configureOutput().writeOut?.(`${JSON.stringify(result)}\n`);
201
+ process.exitCode = 0;
202
+ }
203
+ }
204
+ catch (err) {
205
+ if (err instanceof MissingCredentialError) {
206
+ emitJsonLine(program, fail("E_MISSING_CREDENTIAL", err.message));
207
+ }
208
+ else {
209
+ // Sanitize: an SDK/provider error can echo request internals
210
+ // (headers, body) verbatim in its `.message`, which could contain
211
+ // the key. Never surface raw provider error text in the CLI
212
+ // envelope — log a redacted line for host-side diagnosis instead,
213
+ // and emit a generic, key-free message in the envelope itself.
214
+ const raw = err instanceof Error ? err.message : String(err);
215
+ process.stderr.write(`ai generate: provider error (redacted): ${redactCredentials(raw, store)}\n`);
216
+ emitJsonLine(program, fail("E_AI_GENERATE", "generation failed — see host logs for details"));
217
+ }
218
+ }
219
+ });
220
+ }
221
+ /** Replaces any configured credential VALUE found in `message` with a
222
+ * placeholder. Used only for the diagnostic line written to stderr; the
223
+ * JSON envelope itself never carries provider error text at all. */
224
+ function redactCredentials(message, store) {
225
+ let out = message;
226
+ for (const key of ["OPENROUTER_API_KEY", "TYPESAFE_API_KEY"]) {
227
+ const value = store.read(key);
228
+ if (value)
229
+ out = out.split(value).join("***REDACTED***");
230
+ }
231
+ return out;
232
+ }
233
+ function emitJsonLine(program, envelope) {
234
+ const writeOut = program.configureOutput().writeOut;
235
+ writeOut?.(`${JSON.stringify(envelope)}\n`);
236
+ process.exitCode = envelope.ok ? 0 : 1;
237
+ }
238
+ //# sourceMappingURL=ai-cli.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ai-cli.js","sourceRoot":"","sources":["../src/ai-cli.ts"],"names":[],"mappings":"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"}
package/dist/bin.d.ts ADDED
@@ -0,0 +1,2 @@
1
+ #!/usr/bin/env node
2
+ export {};