@furkankoykiran/contextify-cli 0.5.0 → 0.6.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/dist/commands/compile.d.ts +27 -0
- package/dist/commands/compile.d.ts.map +1 -0
- package/dist/commands/compile.js +142 -0
- package/dist/commands/compile.js.map +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +41 -2
- package/dist/index.js.map +1 -1
- package/dist/prompt-client.d.ts +49 -0
- package/dist/prompt-client.d.ts.map +1 -0
- package/dist/prompt-client.js +45 -0
- package/dist/prompt-client.js.map +1 -0
- package/package.json +1 -1
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
export type CompileMode = 'raw' | 'paste' | 'claude';
|
|
2
|
+
export interface CompileArgs {
|
|
3
|
+
readonly intent: string | null;
|
|
4
|
+
/**
|
|
5
|
+
* Output modes the user passed. Empty array defaults to 'raw'. More than
|
|
6
|
+
* one entry is rejected with exit 2 — the modes are mutually exclusive
|
|
7
|
+
* and silently picking one would hide a typo.
|
|
8
|
+
*/
|
|
9
|
+
readonly modes: readonly CompileMode[];
|
|
10
|
+
readonly topK?: number;
|
|
11
|
+
}
|
|
12
|
+
export interface CompileOptions {
|
|
13
|
+
readonly cwd: string;
|
|
14
|
+
readonly env?: NodeJS.ProcessEnv;
|
|
15
|
+
readonly fetchImpl?: typeof fetch;
|
|
16
|
+
readonly readStdin?: () => Promise<string>;
|
|
17
|
+
readonly stdout?: NodeJS.WriteStream;
|
|
18
|
+
readonly stderr?: NodeJS.WriteStream;
|
|
19
|
+
readonly clipboardWrite?: (text: string) => Promise<{
|
|
20
|
+
ok: true;
|
|
21
|
+
} | {
|
|
22
|
+
ok: false;
|
|
23
|
+
reason: string;
|
|
24
|
+
}>;
|
|
25
|
+
}
|
|
26
|
+
export declare function runCompile(args: CompileArgs, opts: CompileOptions): Promise<number>;
|
|
27
|
+
//# sourceMappingURL=compile.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"compile.d.ts","sourceRoot":"","sources":["../../src/commands/compile.ts"],"names":[],"mappings":"AAqBA,MAAM,MAAM,WAAW,GAAG,KAAK,GAAG,OAAO,GAAG,QAAQ,CAAC;AAErD,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B;;;;OAIG;IACH,QAAQ,CAAC,KAAK,EAAE,SAAS,WAAW,EAAE,CAAC;IACvC,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC;IACjC,QAAQ,CAAC,SAAS,CAAC,EAAE,OAAO,KAAK,CAAC;IAClC,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,OAAO,CAAC,MAAM,CAAC,CAAC;IAC3C,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,WAAW,CAAC;IACrC,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,WAAW,CAAC;IACrC,QAAQ,CAAC,cAAc,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC;QAAE,EAAE,EAAE,IAAI,CAAA;KAAE,GAAG;QAAE,EAAE,EAAE,KAAK,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CACnG;AAeD,wBAAsB,UAAU,CAAC,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,cAAc,GAAG,OAAO,CAAC,MAAM,CAAC,CAyFzF"}
|
|
@@ -0,0 +1,142 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `contextify compile <intent>`
|
|
3
|
+
*
|
|
4
|
+
* Compile a Claude-Code-ready XML prompt from an intent draft. Same server
|
|
5
|
+
* synth engine as the (deprecated) `contextify prompt` command — the only
|
|
6
|
+
* difference is output: --raw to stdout (default), --paste to the system
|
|
7
|
+
* clipboard, --claude to the clipboard with a stderr tip framed for Claude
|
|
8
|
+
* Code paste.
|
|
9
|
+
*
|
|
10
|
+
* contextify compile "build a date picker" # stdout
|
|
11
|
+
* contextify compile "build a date picker" --paste # clipboard
|
|
12
|
+
* contextify compile "build a date picker" --claude # clipboard + tip
|
|
13
|
+
* echo "draft from stdin" | contextify compile -
|
|
14
|
+
*
|
|
15
|
+
* The output modes are mutually exclusive. Passing two flags errors with
|
|
16
|
+
* exit 2 so the user notices the ambiguity instead of silently picking one.
|
|
17
|
+
*/
|
|
18
|
+
import { spawnSync } from 'node:child_process';
|
|
19
|
+
import { resolveConfig } from '../config.js';
|
|
20
|
+
import { compilePrompt } from '../prompt-client.js';
|
|
21
|
+
const MAX_INTENT_CHARS = 20_000;
|
|
22
|
+
async function defaultReadStdin() {
|
|
23
|
+
if (process.stdin.isTTY)
|
|
24
|
+
return '';
|
|
25
|
+
return new Promise((resolve, reject) => {
|
|
26
|
+
let buf = '';
|
|
27
|
+
process.stdin.setEncoding('utf8');
|
|
28
|
+
process.stdin.on('data', (chunk) => (buf += chunk));
|
|
29
|
+
process.stdin.on('end', () => resolve(buf));
|
|
30
|
+
process.stdin.on('error', reject);
|
|
31
|
+
});
|
|
32
|
+
}
|
|
33
|
+
export async function runCompile(args, opts) {
|
|
34
|
+
const stdout = opts.stdout ?? process.stdout;
|
|
35
|
+
const stderr = opts.stderr ?? process.stderr;
|
|
36
|
+
if (args.modes.length > 1) {
|
|
37
|
+
stderr.write(`contextify: compile: choose at most one of --raw, --paste, --claude (got ${args.modes.join(', ')})\n`);
|
|
38
|
+
return 2;
|
|
39
|
+
}
|
|
40
|
+
const mode = args.modes[0] ?? 'raw';
|
|
41
|
+
let config;
|
|
42
|
+
try {
|
|
43
|
+
config = await resolveConfig(opts.cwd, opts.env);
|
|
44
|
+
}
|
|
45
|
+
catch (err) {
|
|
46
|
+
stderr.write(`contextify: ${err.message}\n`);
|
|
47
|
+
return 2;
|
|
48
|
+
}
|
|
49
|
+
let intent;
|
|
50
|
+
if (args.intent === null) {
|
|
51
|
+
const readStdin = opts.readStdin ?? defaultReadStdin;
|
|
52
|
+
intent = (await readStdin()).trim();
|
|
53
|
+
if (intent.length === 0) {
|
|
54
|
+
stderr.write('contextify: compile: no intent provided (stdin was empty)\n');
|
|
55
|
+
return 2;
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
else {
|
|
59
|
+
intent = args.intent.trim();
|
|
60
|
+
if (intent.length === 0) {
|
|
61
|
+
stderr.write('contextify: compile: intent cannot be empty\n');
|
|
62
|
+
return 2;
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
if (intent.length > MAX_INTENT_CHARS) {
|
|
66
|
+
stderr.write(`contextify: compile: intent exceeds ${MAX_INTENT_CHARS} chars (got ${intent.length})\n`);
|
|
67
|
+
return 2;
|
|
68
|
+
}
|
|
69
|
+
if (args.topK !== undefined &&
|
|
70
|
+
(!Number.isInteger(args.topK) || args.topK < 1 || args.topK > 25)) {
|
|
71
|
+
stderr.write('contextify: compile: --top-k must be an integer in [1, 25]\n');
|
|
72
|
+
return 2;
|
|
73
|
+
}
|
|
74
|
+
const result = await compilePrompt({ draft: intent, topK: args.topK }, { config, env: opts.env, fetchImpl: opts.fetchImpl });
|
|
75
|
+
if (!result.ok) {
|
|
76
|
+
if (result.status === null) {
|
|
77
|
+
stderr.write(`contextify: compile: request failed: ${result.statusText}\n`);
|
|
78
|
+
}
|
|
79
|
+
else {
|
|
80
|
+
stderr.write(`contextify: compile: server returned ${result.status} ${result.statusText}\n`);
|
|
81
|
+
if (result.body.length > 0)
|
|
82
|
+
stderr.write(`${result.body}\n`);
|
|
83
|
+
}
|
|
84
|
+
return 1;
|
|
85
|
+
}
|
|
86
|
+
const xml = result.data.xml;
|
|
87
|
+
if (mode === 'raw') {
|
|
88
|
+
stdout.write(xml.endsWith('\n') ? xml : `${xml}\n`);
|
|
89
|
+
return 0;
|
|
90
|
+
}
|
|
91
|
+
const clipboardWrite = opts.clipboardWrite ?? writeToSystemClipboard;
|
|
92
|
+
const clip = await clipboardWrite(xml);
|
|
93
|
+
if (!clip.ok) {
|
|
94
|
+
stderr.write(`contextify: compile: clipboard unavailable (${clip.reason}); writing XML to stdout instead.\n`);
|
|
95
|
+
stdout.write(xml.endsWith('\n') ? xml : `${xml}\n`);
|
|
96
|
+
return 1;
|
|
97
|
+
}
|
|
98
|
+
if (mode === 'claude') {
|
|
99
|
+
stderr.write('Copied Claude Code prompt to clipboard. Paste it as the next Claude Code message.\n');
|
|
100
|
+
}
|
|
101
|
+
else {
|
|
102
|
+
stderr.write('Copied compiled prompt to clipboard.\n');
|
|
103
|
+
}
|
|
104
|
+
return 0;
|
|
105
|
+
}
|
|
106
|
+
/**
|
|
107
|
+
* Cross-platform clipboard write via the platform's native tool. No npm
|
|
108
|
+
* dep on clipboardy/clipboard-cli — they pull binaries and we want this
|
|
109
|
+
* CLI to stay small. Order: pbcopy (macOS) → wl-copy (Wayland) → xclip
|
|
110
|
+
* (X11) → xsel (X11 fallback) → clip.exe (Windows / WSL interop).
|
|
111
|
+
*/
|
|
112
|
+
async function writeToSystemClipboard(text) {
|
|
113
|
+
const candidates = [
|
|
114
|
+
{ cmd: 'pbcopy', args: [] },
|
|
115
|
+
{ cmd: 'wl-copy', args: [] },
|
|
116
|
+
{ cmd: 'xclip', args: ['-selection', 'clipboard'] },
|
|
117
|
+
{ cmd: 'xsel', args: ['--clipboard', '--input'] },
|
|
118
|
+
{ cmd: 'clip.exe', args: [] },
|
|
119
|
+
{ cmd: 'clip', args: [] },
|
|
120
|
+
];
|
|
121
|
+
const tried = [];
|
|
122
|
+
for (const { cmd, args } of candidates) {
|
|
123
|
+
const probe = spawnSync('which', [cmd], { stdio: 'ignore' });
|
|
124
|
+
if (probe.status !== 0)
|
|
125
|
+
continue;
|
|
126
|
+
tried.push(cmd);
|
|
127
|
+
const res = spawnSync(cmd, args, { input: text, encoding: 'utf8' });
|
|
128
|
+
if (res.error)
|
|
129
|
+
continue;
|
|
130
|
+
if (typeof res.status === 'number' && res.status !== 0)
|
|
131
|
+
continue;
|
|
132
|
+
return { ok: true };
|
|
133
|
+
}
|
|
134
|
+
if (tried.length === 0) {
|
|
135
|
+
return {
|
|
136
|
+
ok: false,
|
|
137
|
+
reason: 'no clipboard tool found (install pbcopy, wl-copy, xclip, xsel, or clip.exe)',
|
|
138
|
+
};
|
|
139
|
+
}
|
|
140
|
+
return { ok: false, reason: `clipboard tools failed (tried: ${tried.join(', ')})` };
|
|
141
|
+
}
|
|
142
|
+
//# sourceMappingURL=compile.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"compile.js","sourceRoot":"","sources":["../../src/commands/compile.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AA4BA,eAAO,MAAM,OAAO,QAA0D,CAAC;AAqE/E,MAAM,WAAW,QAAQ;IACvB,QAAQ,CAAC,IAAI,EAAE,SAAS,MAAM,EAAE,CAAC;IACjC,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC;CAClC;AAED,wBAAsB,IAAI,CAAC,KAAK,EAAE,QAAQ,GAAG,OAAO,CAAC,MAAM,CAAC,CAqC3D;AA8CD;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAerE"}
|
package/dist/index.js
CHANGED
|
@@ -10,6 +10,7 @@
|
|
|
10
10
|
* contextify --version
|
|
11
11
|
* contextify --help
|
|
12
12
|
*/
|
|
13
|
+
import { runCompile } from './commands/compile.js';
|
|
13
14
|
import { runHook } from './commands/hooks.js';
|
|
14
15
|
import { runInit } from './commands/init.js';
|
|
15
16
|
import { runInstall } from './commands/install.js';
|
|
@@ -57,9 +58,15 @@ Usage:
|
|
|
57
58
|
contextify ship --once
|
|
58
59
|
Flush any locally-spooled batches (left over from offline runs).
|
|
59
60
|
|
|
61
|
+
contextify compile <intent|-> [--raw|--paste|--claude] [--top-k N]
|
|
62
|
+
Compile a Claude-Code-ready XML prompt from an intent draft. Default
|
|
63
|
+
is --raw (XML to stdout, pipe-friendly). --paste copies to the system
|
|
64
|
+
clipboard. --claude copies to clipboard and prints a stderr tip for
|
|
65
|
+
Claude Code paste. Pass '-' to read the intent from stdin.
|
|
66
|
+
|
|
60
67
|
contextify prompt <draft|-> [--top-k N] [--show-memories] [--json]
|
|
61
|
-
|
|
62
|
-
|
|
68
|
+
DEPRECATED — use 'contextify compile' instead. Will be removed in a
|
|
69
|
+
future minor. Same server engine as 'compile'; only the flags differ.
|
|
63
70
|
|
|
64
71
|
contextify hooks <session-start|stop|session-end|user-prompt-submit|post-tool-use>
|
|
65
72
|
Internal: invoked by Claude Code hook scripts. Reads the hook
|
|
@@ -128,7 +135,10 @@ async function dispatch(command, argv, ctx) {
|
|
|
128
135
|
return runWrap({ argv: extractWrapArgv(argv), cwd: ctx.cwd, env: ctx.env });
|
|
129
136
|
case 'ship':
|
|
130
137
|
return runShip({ cwd: ctx.cwd, env: ctx.env });
|
|
138
|
+
case 'compile':
|
|
139
|
+
return runCompile(parseCompileArgs(argv), { cwd: ctx.cwd, env: ctx.env });
|
|
131
140
|
case 'prompt':
|
|
141
|
+
process.stderr.write("contextify: 'prompt' is deprecated; use 'contextify compile' instead.\n");
|
|
132
142
|
return runPrompt(parsePromptArgs(argv), { cwd: ctx.cwd, env: ctx.env });
|
|
133
143
|
case 'update':
|
|
134
144
|
return runUpdateCommand(parseUpdateArgs(argv), {
|
|
@@ -240,6 +250,35 @@ function parseLoginArgs(argv) {
|
|
|
240
250
|
}
|
|
241
251
|
return { apiKey, serverUrl, name };
|
|
242
252
|
}
|
|
253
|
+
function parseCompileArgs(argv) {
|
|
254
|
+
let intent = null;
|
|
255
|
+
let topK;
|
|
256
|
+
const modes = [];
|
|
257
|
+
for (let i = 0; i < argv.length; i++) {
|
|
258
|
+
const arg = argv[i];
|
|
259
|
+
if (arg === '--top-k') {
|
|
260
|
+
const next = argv[++i];
|
|
261
|
+
const parsed = next !== undefined ? Number.parseInt(next, 10) : NaN;
|
|
262
|
+
topK = Number.isFinite(parsed) ? parsed : Number.NaN;
|
|
263
|
+
}
|
|
264
|
+
else if (arg === '--raw') {
|
|
265
|
+
modes.push('raw');
|
|
266
|
+
}
|
|
267
|
+
else if (arg === '--paste') {
|
|
268
|
+
modes.push('paste');
|
|
269
|
+
}
|
|
270
|
+
else if (arg === '--claude') {
|
|
271
|
+
modes.push('claude');
|
|
272
|
+
}
|
|
273
|
+
else if (arg === '-' && intent === null) {
|
|
274
|
+
// '-' is equivalent to omitting the positional; runCompile reads stdin.
|
|
275
|
+
}
|
|
276
|
+
else if (!arg.startsWith('-') && intent === null) {
|
|
277
|
+
intent = arg;
|
|
278
|
+
}
|
|
279
|
+
}
|
|
280
|
+
return { intent, modes, topK };
|
|
281
|
+
}
|
|
243
282
|
function parsePromptArgs(argv) {
|
|
244
283
|
let draft = null;
|
|
245
284
|
let topK;
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AACA;;;;;;;;;;GAUG;AACH,OAAO,EAAE,OAAO,EAAkB,MAAM,qBAAqB,CAAC;AAC9D,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAC7C,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AACnD,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAC/C,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACjD,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAC7C,OAAO,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AACzE,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAC7C,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAE3C,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAE5C,MAAM,OAAO,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC/C,MAAM,GAAG,GAAG,OAAO,CAAC,iBAAiB,CAA0B,CAAC;AAEhE,MAAM,CAAC,MAAM,OAAO,GAAG,OAAO,GAAG,CAAC,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC;AAE/E,MAAM,SAAS,GAAG,gCAAgC,OAAO
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shared HTTP client for /api/prompt/generate.
|
|
3
|
+
*
|
|
4
|
+
* `prompt` (deprecated) and `compile` both call this — there is one synth
|
|
5
|
+
* engine and one client. New commands that want compiled XML go through
|
|
6
|
+
* here; do not fork the fetch.
|
|
7
|
+
*/
|
|
8
|
+
import type { ResolvedConfig } from './config.js';
|
|
9
|
+
export interface PromptApiResponse {
|
|
10
|
+
readonly projectId: string;
|
|
11
|
+
readonly xml: string;
|
|
12
|
+
readonly retrievedMemories: ReadonlyArray<{
|
|
13
|
+
readonly id: string;
|
|
14
|
+
readonly content: string;
|
|
15
|
+
readonly kind: string;
|
|
16
|
+
readonly source: string;
|
|
17
|
+
readonly distance: number;
|
|
18
|
+
}>;
|
|
19
|
+
readonly directives: ReadonlyArray<{
|
|
20
|
+
readonly skill: string;
|
|
21
|
+
readonly reason: string;
|
|
22
|
+
readonly category: string;
|
|
23
|
+
}>;
|
|
24
|
+
}
|
|
25
|
+
export interface CompileRequest {
|
|
26
|
+
readonly draft: string;
|
|
27
|
+
readonly topK?: number;
|
|
28
|
+
}
|
|
29
|
+
export interface CompileClientOptions {
|
|
30
|
+
readonly config: ResolvedConfig;
|
|
31
|
+
readonly env?: NodeJS.ProcessEnv;
|
|
32
|
+
readonly fetchImpl?: typeof fetch;
|
|
33
|
+
}
|
|
34
|
+
export type CompileResult = {
|
|
35
|
+
ok: true;
|
|
36
|
+
data: PromptApiResponse;
|
|
37
|
+
} | {
|
|
38
|
+
ok: false;
|
|
39
|
+
status: number;
|
|
40
|
+
statusText: string;
|
|
41
|
+
body: string;
|
|
42
|
+
} | {
|
|
43
|
+
ok: false;
|
|
44
|
+
status: null;
|
|
45
|
+
statusText: string;
|
|
46
|
+
body: string;
|
|
47
|
+
};
|
|
48
|
+
export declare function compilePrompt(req: CompileRequest, opts: CompileClientOptions): Promise<CompileResult>;
|
|
49
|
+
//# sourceMappingURL=prompt-client.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"prompt-client.d.ts","sourceRoot":"","sources":["../src/prompt-client.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAGlD,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,iBAAiB,EAAE,aAAa,CAAC;QACxC,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;QACpB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;QACzB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;QACtB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;QACxB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;KAC3B,CAAC,CAAC;IACH,QAAQ,CAAC,UAAU,EAAE,aAAa,CAAC;QACjC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;QACvB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;QACxB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;KAC3B,CAAC,CAAC;CACJ;AAED,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,MAAM,EAAE,cAAc,CAAC;IAChC,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC;IACjC,QAAQ,CAAC,SAAS,CAAC,EAAE,OAAO,KAAK,CAAC;CACnC;AAED,MAAM,MAAM,aAAa,GACrB;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,IAAI,EAAE,iBAAiB,CAAA;CAAE,GACrC;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GAC/D;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,MAAM,EAAE,IAAI,CAAC;IAAC,UAAU,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC;AAElE,wBAAsB,aAAa,CACjC,GAAG,EAAE,cAAc,EACnB,IAAI,EAAE,oBAAoB,GACzB,OAAO,CAAC,aAAa,CAAC,CAyCxB"}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import { resolveApiKey } from './credentials.js';
|
|
2
|
+
export async function compilePrompt(req, opts) {
|
|
3
|
+
const fetchImpl = opts.fetchImpl ?? fetch;
|
|
4
|
+
const url = new URL('/api/prompt/generate', opts.config.serverUrl).toString();
|
|
5
|
+
const body = {
|
|
6
|
+
projectId: opts.config.projectId,
|
|
7
|
+
projectName: opts.config.projectName,
|
|
8
|
+
draft: req.draft,
|
|
9
|
+
topK: req.topK,
|
|
10
|
+
};
|
|
11
|
+
const creds = resolveApiKey(opts.env);
|
|
12
|
+
const headers = { 'content-type': 'application/json' };
|
|
13
|
+
if (creds)
|
|
14
|
+
headers.authorization = `Bearer ${creds.apiKey}`;
|
|
15
|
+
let res;
|
|
16
|
+
try {
|
|
17
|
+
// The CLI intentionally sends its locally-stored Contextify project config
|
|
18
|
+
// (from .contextify.json) and API credential (from ~/.contextify/credentials.json)
|
|
19
|
+
// to the configured Contextify server. That is the entire purpose of this
|
|
20
|
+
// binary; there is no untrusted intermediary. The URL is constructed from
|
|
21
|
+
// the operator-controlled `serverUrl` in resolveConfig.
|
|
22
|
+
// lgtm[js/file-access-to-http]
|
|
23
|
+
res = await fetchImpl(url, { method: 'POST', headers, body: JSON.stringify(body) });
|
|
24
|
+
}
|
|
25
|
+
catch (err) {
|
|
26
|
+
return { ok: false, status: null, statusText: err.message, body: '' };
|
|
27
|
+
}
|
|
28
|
+
if (!res.ok) {
|
|
29
|
+
const text = await res.text().catch(() => '');
|
|
30
|
+
return { ok: false, status: res.status, statusText: res.statusText, body: text };
|
|
31
|
+
}
|
|
32
|
+
try {
|
|
33
|
+
const data = (await res.json());
|
|
34
|
+
return { ok: true, data };
|
|
35
|
+
}
|
|
36
|
+
catch (err) {
|
|
37
|
+
return {
|
|
38
|
+
ok: false,
|
|
39
|
+
status: res.status,
|
|
40
|
+
statusText: `invalid JSON: ${err.message}`,
|
|
41
|
+
body: '',
|
|
42
|
+
};
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
//# sourceMappingURL=prompt-client.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"prompt-client.js","sourceRoot":"","sources":["../src/prompt-client.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAmCjD,MAAM,CAAC,KAAK,UAAU,aAAa,CACjC,GAAmB,EACnB,IAA0B;IAE1B,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,IAAI,KAAK,CAAC;IAC1C,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,sBAAsB,EAAE,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,QAAQ,EAAE,CAAC;IAC9E,MAAM,IAAI,GAAG;QACX,SAAS,EAAE,IAAI,CAAC,MAAM,CAAC,SAAS;QAChC,WAAW,EAAE,IAAI,CAAC,MAAM,CAAC,WAAW;QACpC,KAAK,EAAE,GAAG,CAAC,KAAK;QAChB,IAAI,EAAE,GAAG,CAAC,IAAI;KACf,CAAC;IAEF,MAAM,KAAK,GAAG,aAAa,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACtC,MAAM,OAAO,GAA2B,EAAE,cAAc,EAAE,kBAAkB,EAAE,CAAC;IAC/E,IAAI,KAAK;QAAE,OAAO,CAAC,aAAa,GAAG,UAAU,KAAK,CAAC,MAAM,EAAE,CAAC;IAE5D,IAAI,GAAa,CAAC;IAClB,IAAI,CAAC;QACH,2EAA2E;QAC3E,mFAAmF;QACnF,0EAA0E;QAC1E,0EAA0E;QAC1E,wDAAwD;QACxD,+BAA+B;QAC/B,GAAG,GAAG,MAAM,SAAS,CAAC,GAAG,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACtF,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,EAAG,GAAa,CAAC,OAAO,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC;IACnF,CAAC;IACD,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;QACZ,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC;QAC9C,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,UAAU,EAAE,GAAG,CAAC,UAAU,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;IACnF,CAAC;IACD,IAAI,CAAC;QACH,MAAM,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,CAAsB,CAAC;QACrD,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;IAC5B,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO;YACL,EAAE,EAAE,KAAK;YACT,MAAM,EAAE,GAAG,CAAC,MAAM;YAClB,UAAU,EAAE,iBAAkB,GAAa,CAAC,OAAO,EAAE;YACrD,IAAI,EAAE,EAAE;SACT,CAAC;IACJ,CAAC;AACH,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@furkankoykiran/contextify-cli",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.6.0",
|
|
4
4
|
"description": "Open-source CLI for Claude Code: capture sessions, ship transcripts to your memory pipeline, and synthesize Claude-ready prompts.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"claude-code",
|