@okrapdf/cli 0.4.6 → 0.5.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/cli.d.ts.map +1 -1
- package/dist/cli.js +14 -2
- package/dist/cli.js.map +1 -1
- package/dist/commands/auth.d.ts.map +1 -1
- package/dist/commands/auth.js +94 -26
- package/dist/commands/auth.js.map +1 -1
- package/dist/commands/chat.d.ts +6 -17
- package/dist/commands/chat.d.ts.map +1 -1
- package/dist/commands/chat.js +349 -318
- package/dist/commands/chat.js.map +1 -1
- package/dist/commands/chat.test.js +4 -0
- package/dist/commands/chat.test.js.map +1 -1
- package/dist/commands/elements.d.ts.map +1 -1
- package/dist/commands/elements.js +15 -12
- package/dist/commands/elements.js.map +1 -1
- package/dist/commands/jobs.d.ts.map +1 -1
- package/dist/commands/jobs.js +228 -13
- package/dist/commands/jobs.js.map +1 -1
- package/dist/commands/plugins.d.ts +3 -0
- package/dist/commands/plugins.d.ts.map +1 -0
- package/dist/commands/plugins.js +26 -0
- package/dist/commands/plugins.js.map +1 -0
- package/dist/commands/read.d.ts.map +1 -1
- package/dist/commands/read.js +11 -9
- package/dist/commands/read.js.map +1 -1
- package/dist/commands/search.d.ts +16 -0
- package/dist/commands/search.d.ts.map +1 -0
- package/dist/commands/search.js +246 -0
- package/dist/commands/search.js.map +1 -0
- package/dist/commands/shortcuts.js +2 -2
- package/dist/commands/shortcuts.js.map +1 -1
- package/dist/commands/task.d.ts +0 -8
- package/dist/commands/task.d.ts.map +1 -1
- package/dist/commands/task.js +9 -190
- package/dist/commands/task.js.map +1 -1
- package/dist/lib/agent-renderer.d.ts.map +1 -1
- package/dist/lib/agent-renderer.js +17 -1
- package/dist/lib/agent-renderer.js.map +1 -1
- package/dist/lib/backends/do-adapters.test.d.ts +6 -0
- package/dist/lib/backends/do-adapters.test.d.ts.map +1 -0
- package/dist/lib/backends/do-adapters.test.js +311 -0
- package/dist/lib/backends/do-adapters.test.js.map +1 -0
- package/dist/lib/backends/do.d.ts +23 -0
- package/dist/lib/backends/do.d.ts.map +1 -0
- package/dist/lib/backends/do.js +340 -0
- package/dist/lib/backends/do.js.map +1 -0
- package/dist/lib/backends/index.d.ts +7 -0
- package/dist/lib/backends/index.d.ts.map +1 -0
- package/dist/lib/backends/index.js +8 -0
- package/dist/lib/backends/index.js.map +1 -0
- package/dist/lib/backends/okrapdf.d.ts +9 -0
- package/dist/lib/backends/okrapdf.d.ts.map +1 -0
- package/dist/lib/backends/okrapdf.js +50 -0
- package/dist/lib/backends/okrapdf.js.map +1 -0
- package/dist/lib/backends/types.d.ts +205 -0
- package/dist/lib/backends/types.d.ts.map +1 -0
- package/dist/lib/backends/types.js +7 -0
- package/dist/lib/backends/types.js.map +1 -0
- package/dist/lib/completion-stream.d.ts +22 -0
- package/dist/lib/completion-stream.d.ts.map +1 -0
- package/dist/lib/completion-stream.js +69 -0
- package/dist/lib/completion-stream.js.map +1 -0
- package/dist/lib/config.d.ts +4 -0
- package/dist/lib/config.d.ts.map +1 -1
- package/dist/lib/config.js +6 -0
- package/dist/lib/config.js.map +1 -1
- package/dist/lib/federation.d.ts +14 -0
- package/dist/lib/federation.d.ts.map +1 -0
- package/dist/lib/federation.js +51 -0
- package/dist/lib/federation.js.map +1 -0
- package/dist/lib/general-chat.d.ts +11 -0
- package/dist/lib/general-chat.d.ts.map +1 -0
- package/dist/lib/general-chat.js +69 -0
- package/dist/lib/general-chat.js.map +1 -0
- package/dist/lib/multi-doc-chat.d.ts +20 -0
- package/dist/lib/multi-doc-chat.d.ts.map +1 -0
- package/dist/lib/multi-doc-chat.js +152 -0
- package/dist/lib/multi-doc-chat.js.map +1 -0
- package/dist/lib/plugins.d.ts +24 -0
- package/dist/lib/plugins.d.ts.map +1 -0
- package/dist/lib/plugins.js +55 -0
- package/dist/lib/plugins.js.map +1 -0
- package/dist/lib/runtime.js +1 -1
- package/dist/lib/runtime.js.map +1 -1
- package/dist/lib/single-doc-chat.d.ts +14 -0
- package/dist/lib/single-doc-chat.d.ts.map +1 -0
- package/dist/lib/single-doc-chat.js +165 -0
- package/dist/lib/single-doc-chat.js.map +1 -0
- package/dist/lib/task-agent.d.ts +11 -0
- package/dist/lib/task-agent.d.ts.map +1 -0
- package/dist/lib/task-agent.js +200 -0
- package/dist/lib/task-agent.js.map +1 -0
- package/dist/types.d.ts +32 -0
- package/dist/types.d.ts.map +1 -1
- package/package.json +3 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/lib/backends/types.ts"],"names":[],"mappings":"AAAA;;;;GAIG"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shared JSONL stream reader for /completion endpoints.
|
|
3
|
+
*
|
|
4
|
+
* All chat modes (single-doc, multi-doc, general) stream JSONL with the same
|
|
5
|
+
* event types: text_delta, toolcall_end, tool_result, step_done, done, error.
|
|
6
|
+
*/
|
|
7
|
+
export interface StreamCallbacks {
|
|
8
|
+
onTextDelta?(delta: string): void;
|
|
9
|
+
onToolCallEnd?(name: string): void;
|
|
10
|
+
onToolResult?(name: string): void;
|
|
11
|
+
onStepDone?(stopReason: string): void;
|
|
12
|
+
}
|
|
13
|
+
export interface StreamResult {
|
|
14
|
+
answer: string;
|
|
15
|
+
costUsd: number;
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* Read a JSONL streaming response and invoke callbacks for each event.
|
|
19
|
+
* Returns the final answer and cost from the `done` event.
|
|
20
|
+
*/
|
|
21
|
+
export declare function readCompletionStream(response: Response, callbacks: StreamCallbacks): Promise<StreamResult>;
|
|
22
|
+
//# sourceMappingURL=completion-stream.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"completion-stream.d.ts","sourceRoot":"","sources":["../../src/lib/completion-stream.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,MAAM,WAAW,eAAe;IAC9B,WAAW,CAAC,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IAClC,aAAa,CAAC,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACnC,YAAY,CAAC,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IAClC,UAAU,CAAC,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;CACvC;AAED,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;CACjB;AAED;;;GAGG;AACH,wBAAsB,oBAAoB,CACxC,QAAQ,EAAE,QAAQ,EAClB,SAAS,EAAE,eAAe,GACzB,OAAO,CAAC,YAAY,CAAC,CAuDvB"}
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shared JSONL stream reader for /completion endpoints.
|
|
3
|
+
*
|
|
4
|
+
* All chat modes (single-doc, multi-doc, general) stream JSONL with the same
|
|
5
|
+
* event types: text_delta, toolcall_end, tool_result, step_done, done, error.
|
|
6
|
+
*/
|
|
7
|
+
/**
|
|
8
|
+
* Read a JSONL streaming response and invoke callbacks for each event.
|
|
9
|
+
* Returns the final answer and cost from the `done` event.
|
|
10
|
+
*/
|
|
11
|
+
export async function readCompletionStream(response, callbacks) {
|
|
12
|
+
const reader = response.body.getReader();
|
|
13
|
+
const decoder = new TextDecoder();
|
|
14
|
+
let buffer = '';
|
|
15
|
+
let finalAnswer = '';
|
|
16
|
+
let totalCostUsd = 0;
|
|
17
|
+
while (true) {
|
|
18
|
+
const { done, value } = await reader.read();
|
|
19
|
+
if (done)
|
|
20
|
+
break;
|
|
21
|
+
buffer += decoder.decode(value, { stream: true });
|
|
22
|
+
const lines = buffer.split('\n');
|
|
23
|
+
buffer = lines.pop();
|
|
24
|
+
for (const line of lines) {
|
|
25
|
+
if (!line.trim())
|
|
26
|
+
continue;
|
|
27
|
+
let event;
|
|
28
|
+
try {
|
|
29
|
+
event = JSON.parse(line);
|
|
30
|
+
}
|
|
31
|
+
catch {
|
|
32
|
+
continue;
|
|
33
|
+
}
|
|
34
|
+
switch (event.type) {
|
|
35
|
+
case 'text_delta':
|
|
36
|
+
callbacks.onTextDelta?.(event.delta);
|
|
37
|
+
break;
|
|
38
|
+
case 'toolcall_end':
|
|
39
|
+
callbacks.onToolCallEnd?.(event.name);
|
|
40
|
+
break;
|
|
41
|
+
case 'tool_result':
|
|
42
|
+
callbacks.onToolResult?.(event.name);
|
|
43
|
+
break;
|
|
44
|
+
case 'step_done':
|
|
45
|
+
callbacks.onStepDone?.(event.stopReason);
|
|
46
|
+
break;
|
|
47
|
+
case 'done':
|
|
48
|
+
finalAnswer = event.answer || '';
|
|
49
|
+
totalCostUsd = event.usage?.costUsd || 0;
|
|
50
|
+
break;
|
|
51
|
+
case 'error':
|
|
52
|
+
throw new Error(event.details || event.error || 'Completion failed');
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
// Drain remaining buffer
|
|
57
|
+
if (buffer.trim()) {
|
|
58
|
+
try {
|
|
59
|
+
const event = JSON.parse(buffer);
|
|
60
|
+
if (event.type === 'done') {
|
|
61
|
+
finalAnswer = event.answer || '';
|
|
62
|
+
totalCostUsd = event.usage?.costUsd || 0;
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
catch { /* ignore */ }
|
|
66
|
+
}
|
|
67
|
+
return { answer: finalAnswer, costUsd: totalCostUsd };
|
|
68
|
+
}
|
|
69
|
+
//# sourceMappingURL=completion-stream.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"completion-stream.js","sourceRoot":"","sources":["../../src/lib/completion-stream.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAgBH;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,oBAAoB,CACxC,QAAkB,EAClB,SAA0B;IAE1B,MAAM,MAAM,GAAG,QAAQ,CAAC,IAAK,CAAC,SAAS,EAAE,CAAC;IAC1C,MAAM,OAAO,GAAG,IAAI,WAAW,EAAE,CAAC;IAClC,IAAI,MAAM,GAAG,EAAE,CAAC;IAChB,IAAI,WAAW,GAAG,EAAE,CAAC;IACrB,IAAI,YAAY,GAAG,CAAC,CAAC;IAErB,OAAO,IAAI,EAAE,CAAC;QACZ,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,MAAM,MAAM,CAAC,IAAI,EAAE,CAAC;QAC5C,IAAI,IAAI;YAAE,MAAM;QAChB,MAAM,IAAI,OAAO,CAAC,MAAM,CAAC,KAAK,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;QAElD,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QACjC,MAAM,GAAG,KAAK,CAAC,GAAG,EAAG,CAAC;QAEtB,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACzB,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;gBAAE,SAAS;YAC3B,IAAI,KAAU,CAAC;YACf,IAAI,CAAC;gBAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YAAC,CAAC;YAAC,MAAM,CAAC;gBAAC,SAAS;YAAC,CAAC;YAErD,QAAQ,KAAK,CAAC,IAAI,EAAE,CAAC;gBACnB,KAAK,YAAY;oBACf,SAAS,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;oBACrC,MAAM;gBACR,KAAK,cAAc;oBACjB,SAAS,CAAC,aAAa,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;oBACtC,MAAM;gBACR,KAAK,aAAa;oBAChB,SAAS,CAAC,YAAY,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;oBACrC,MAAM;gBACR,KAAK,WAAW;oBACd,SAAS,CAAC,UAAU,EAAE,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;oBACzC,MAAM;gBACR,KAAK,MAAM;oBACT,WAAW,GAAG,KAAK,CAAC,MAAM,IAAI,EAAE,CAAC;oBACjC,YAAY,GAAG,KAAK,CAAC,KAAK,EAAE,OAAO,IAAI,CAAC,CAAC;oBACzC,MAAM;gBACR,KAAK,OAAO;oBACV,MAAM,IAAI,KAAK,CAAC,KAAK,CAAC,OAAO,IAAI,KAAK,CAAC,KAAK,IAAI,mBAAmB,CAAC,CAAC;YACzE,CAAC;QACH,CAAC;IACH,CAAC;IAED,yBAAyB;IACzB,IAAI,MAAM,CAAC,IAAI,EAAE,EAAE,CAAC;QAClB,IAAI,CAAC;YACH,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAQ,CAAC;YACxC,IAAI,KAAK,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;gBAC1B,WAAW,GAAG,KAAK,CAAC,MAAM,IAAI,EAAE,CAAC;gBACjC,YAAY,GAAG,KAAK,CAAC,KAAK,EAAE,OAAO,IAAI,CAAC,CAAC;YAC3C,CAAC;QACH,CAAC;QAAC,MAAM,CAAC,CAAC,YAAY,CAAC,CAAC;IAC1B,CAAC;IAED,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,OAAO,EAAE,YAAY,EAAE,CAAC;AACxD,CAAC"}
|
package/dist/lib/config.d.ts
CHANGED
|
@@ -73,6 +73,10 @@ export declare function getAgentSessionUrl(): string;
|
|
|
73
73
|
* Get agent session HTTP URL (for replay/events)
|
|
74
74
|
*/
|
|
75
75
|
export declare function getAgentSessionHttpUrl(): string;
|
|
76
|
+
/**
|
|
77
|
+
* Get the Document Agent shared secret for /document/:id/* HTTP endpoints.
|
|
78
|
+
*/
|
|
79
|
+
export declare function getDocumentAgentSecret(): string | undefined;
|
|
76
80
|
/**
|
|
77
81
|
* Check if JSON output is requested (via --json flag or OKRA_OUTPUT_FORMAT=json)
|
|
78
82
|
*/
|
package/dist/lib/config.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/lib/config.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAOH,OAAO,KAAK,EAAE,SAAS,EAAE,YAAY,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AA6BhF;;GAEG;AACH,wBAAgB,SAAS,IAAI,MAAM,GAAG,SAAS,CAE9C;AAED;;GAEG;AACH,wBAAgB,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAE3C;AAED;;GAEG;AACH,wBAAgB,WAAW,IAAI,IAAI,CAElC;AAED;;GAEG;AACH,wBAAgB,UAAU,IAAI,MAAM,CAEnC;AAED;;GAEG;AACH,wBAAgB,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAE5C;AAED;;GAEG;AACH,wBAAgB,gBAAgB,IAAI,YAAY,CAG/C;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,YAAY,GAAG,IAAI,CAE3D;AAED,wBAAgB,aAAa,IAAI,SAAS,GAAG,SAAS,CAGrD;AAED,wBAAgB,aAAa,CAAC,GAAG,EAAE,SAAS,GAAG,IAAI,CAElD;AAED,wBAAgB,aAAa,IAAI,QAAQ,GAAG,SAAS,CAGpD;AAED,wBAAgB,aAAa,CAAC,GAAG,EAAE,QAAQ,GAAG,IAAI,CAEjD;AAID;;GAEG;AACH,wBAAgB,SAAS,IAAI,SAAS,CAQrC;AAED;;GAEG;AACH,wBAAgB,aAAa,IAAI,MAAM,CAEtC;AAED;;GAEG;AACH,wBAAgB,WAAW,IAAI,IAAI,CAElC;AAED;;GAEG;AACH,wBAAgB,eAAe,IAAI,OAAO,CAEzC;AAED;;GAEG;AACH,wBAAgB,aAAa,IAAI,MAAM,EAAE,GAAG,IAAI,CAI/C;AAED;;GAEG;AACH,wBAAgB,eAAe,IAAI,MAAM,GAAG,IAAI,CAE/C;AAED;;GAEG;AACH,wBAAgB,kBAAkB,IAAI,MAAM,CAE3C;AAED;;GAEG;AACH,wBAAgB,sBAAsB,IAAI,MAAM,CAG/C;AAED;;GAEG;AACH,wBAAgB,YAAY,IAAI,OAAO,CAEtC;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAK5D"}
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/lib/config.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAOH,OAAO,KAAK,EAAE,SAAS,EAAE,YAAY,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AA6BhF;;GAEG;AACH,wBAAgB,SAAS,IAAI,MAAM,GAAG,SAAS,CAE9C;AAED;;GAEG;AACH,wBAAgB,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAE3C;AAED;;GAEG;AACH,wBAAgB,WAAW,IAAI,IAAI,CAElC;AAED;;GAEG;AACH,wBAAgB,UAAU,IAAI,MAAM,CAEnC;AAED;;GAEG;AACH,wBAAgB,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAE5C;AAED;;GAEG;AACH,wBAAgB,gBAAgB,IAAI,YAAY,CAG/C;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,YAAY,GAAG,IAAI,CAE3D;AAED,wBAAgB,aAAa,IAAI,SAAS,GAAG,SAAS,CAGrD;AAED,wBAAgB,aAAa,CAAC,GAAG,EAAE,SAAS,GAAG,IAAI,CAElD;AAED,wBAAgB,aAAa,IAAI,QAAQ,GAAG,SAAS,CAGpD;AAED,wBAAgB,aAAa,CAAC,GAAG,EAAE,QAAQ,GAAG,IAAI,CAEjD;AAID;;GAEG;AACH,wBAAgB,SAAS,IAAI,SAAS,CAQrC;AAED;;GAEG;AACH,wBAAgB,aAAa,IAAI,MAAM,CAEtC;AAED;;GAEG;AACH,wBAAgB,WAAW,IAAI,IAAI,CAElC;AAED;;GAEG;AACH,wBAAgB,eAAe,IAAI,OAAO,CAEzC;AAED;;GAEG;AACH,wBAAgB,aAAa,IAAI,MAAM,EAAE,GAAG,IAAI,CAI/C;AAED;;GAEG;AACH,wBAAgB,eAAe,IAAI,MAAM,GAAG,IAAI,CAE/C;AAED;;GAEG;AACH,wBAAgB,kBAAkB,IAAI,MAAM,CAE3C;AAED;;GAEG;AACH,wBAAgB,sBAAsB,IAAI,MAAM,CAG/C;AAED;;GAEG;AACH,wBAAgB,sBAAsB,IAAI,MAAM,GAAG,SAAS,CAE3D;AAED;;GAEG;AACH,wBAAgB,YAAY,IAAI,OAAO,CAEtC;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAK5D"}
|
package/dist/lib/config.js
CHANGED
|
@@ -151,6 +151,12 @@ export function getAgentSessionHttpUrl() {
|
|
|
151
151
|
const ws = getAgentSessionUrl();
|
|
152
152
|
return ws.replace(/^wss:/, 'https:').replace(/^ws:/, 'http:');
|
|
153
153
|
}
|
|
154
|
+
/**
|
|
155
|
+
* Get the Document Agent shared secret for /document/:id/* HTTP endpoints.
|
|
156
|
+
*/
|
|
157
|
+
export function getDocumentAgentSecret() {
|
|
158
|
+
return process.env.DOCUMENT_AGENT_SHARED_SECRET || config.get('document_agent_secret');
|
|
159
|
+
}
|
|
154
160
|
/**
|
|
155
161
|
* Check if JSON output is requested (via --json flag or OKRA_OUTPUT_FORMAT=json)
|
|
156
162
|
*/
|
package/dist/lib/config.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/lib/config.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/lib/config.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Federation engine — fan-out search across DOs + source plugins, merge via RRF.
|
|
3
|
+
*/
|
|
4
|
+
import type { SearchSource, SearchHit, FederatedResult } from '../types.js';
|
|
5
|
+
/**
|
|
6
|
+
* Fan out a query to all DO instances + source plugins, merge via Reciprocal Rank Fusion.
|
|
7
|
+
*/
|
|
8
|
+
export declare function federatedSearch(query: string, sources: SearchSource[], doSearch: (docId: string, query: string) => Promise<SearchHit[]>, docIds: string[], limit?: number): Promise<FederatedResult[]>;
|
|
9
|
+
/**
|
|
10
|
+
* Reciprocal Rank Fusion: score_i = Σ 1/(k + rank)
|
|
11
|
+
* Merges multiple ranked lists into a single sorted result.
|
|
12
|
+
*/
|
|
13
|
+
export declare function mergeRRF(rankedLists: SearchHit[][], limit: number): FederatedResult[];
|
|
14
|
+
//# sourceMappingURL=federation.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"federation.d.ts","sourceRoot":"","sources":["../../src/lib/federation.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,SAAS,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAI5E;;GAEG;AACH,wBAAsB,eAAe,CACnC,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,YAAY,EAAE,EACvB,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC,SAAS,EAAE,CAAC,EAChE,MAAM,EAAE,MAAM,EAAE,EAChB,KAAK,SAAK,GACT,OAAO,CAAC,eAAe,EAAE,CAAC,CAqB5B;AAED;;;GAGG;AACH,wBAAgB,QAAQ,CACtB,WAAW,EAAE,SAAS,EAAE,EAAE,EAC1B,KAAK,EAAE,MAAM,GACZ,eAAe,EAAE,CA4BnB"}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Federation engine — fan-out search across DOs + source plugins, merge via RRF.
|
|
3
|
+
*/
|
|
4
|
+
const RRF_K = 60; // Reciprocal Rank Fusion constant
|
|
5
|
+
/**
|
|
6
|
+
* Fan out a query to all DO instances + source plugins, merge via Reciprocal Rank Fusion.
|
|
7
|
+
*/
|
|
8
|
+
export async function federatedSearch(query, sources, doSearch, docIds, limit = 20) {
|
|
9
|
+
// Fan out to all DO instances
|
|
10
|
+
const doPromises = docIds.map((id) => doSearch(id, query).catch(() => []));
|
|
11
|
+
// Fan out to all source plugins that implement search
|
|
12
|
+
const sourcePromises = sources
|
|
13
|
+
.filter((s) => typeof s.search === 'function')
|
|
14
|
+
.map((s) => s.search(query, limit).catch(() => []));
|
|
15
|
+
const results = await Promise.allSettled([...doPromises, ...sourcePromises]);
|
|
16
|
+
// Collect all ranked lists
|
|
17
|
+
const rankedLists = results.map((r) => r.status === 'fulfilled' ? r.value : []);
|
|
18
|
+
return mergeRRF(rankedLists, limit);
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Reciprocal Rank Fusion: score_i = Σ 1/(k + rank)
|
|
22
|
+
* Merges multiple ranked lists into a single sorted result.
|
|
23
|
+
*/
|
|
24
|
+
export function mergeRRF(rankedLists, limit) {
|
|
25
|
+
const scores = new Map();
|
|
26
|
+
for (const list of rankedLists) {
|
|
27
|
+
for (const hit of list) {
|
|
28
|
+
const key = `${hit.source}:${hit.sourceId}:${hit.page ?? ''}`;
|
|
29
|
+
const existing = scores.get(key);
|
|
30
|
+
const rrfScore = 1 / (RRF_K + hit.rank);
|
|
31
|
+
if (existing) {
|
|
32
|
+
existing.score += rrfScore;
|
|
33
|
+
}
|
|
34
|
+
else {
|
|
35
|
+
scores.set(key, { hit, score: rrfScore });
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
return Array.from(scores.values())
|
|
40
|
+
.sort((a, b) => b.score - a.score)
|
|
41
|
+
.slice(0, limit)
|
|
42
|
+
.map(({ hit, score }) => ({
|
|
43
|
+
sourceId: hit.sourceId,
|
|
44
|
+
title: hit.title,
|
|
45
|
+
snippet: hit.snippet,
|
|
46
|
+
page: hit.page,
|
|
47
|
+
source: hit.source,
|
|
48
|
+
score,
|
|
49
|
+
}));
|
|
50
|
+
}
|
|
51
|
+
//# sourceMappingURL=federation.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"federation.js","sourceRoot":"","sources":["../../src/lib/federation.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH,MAAM,KAAK,GAAG,EAAE,CAAC,CAAC,kCAAkC;AAEpD;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,eAAe,CACnC,KAAa,EACb,OAAuB,EACvB,QAAgE,EAChE,MAAgB,EAChB,KAAK,GAAG,EAAE;IAEV,8BAA8B;IAC9B,MAAM,UAAU,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CACnC,QAAQ,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,EAAiB,CAAC,CACnD,CAAC;IAEF,sDAAsD;IACtD,MAAM,cAAc,GAAG,OAAO;SAC3B,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,CAAC,MAAM,KAAK,UAAU,CAAC;SAC7C,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CACT,CAAC,CAAC,MAAO,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,EAAiB,CAAC,CACvD,CAAC;IAEJ,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,UAAU,CAAC,CAAC,GAAG,UAAU,EAAE,GAAG,cAAc,CAAC,CAAC,CAAC;IAE7E,2BAA2B;IAC3B,MAAM,WAAW,GAAkB,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CACnD,CAAC,CAAC,MAAM,KAAK,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CACxC,CAAC;IAEF,OAAO,QAAQ,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC;AACtC,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,QAAQ,CACtB,WAA0B,EAC1B,KAAa;IAEb,MAAM,MAAM,GAAG,IAAI,GAAG,EAA6C,CAAC;IAEpE,KAAK,MAAM,IAAI,IAAI,WAAW,EAAE,CAAC;QAC/B,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;YACvB,MAAM,GAAG,GAAG,GAAG,GAAG,CAAC,MAAM,IAAI,GAAG,CAAC,QAAQ,IAAI,GAAG,CAAC,IAAI,IAAI,EAAE,EAAE,CAAC;YAC9D,MAAM,QAAQ,GAAG,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YACjC,MAAM,QAAQ,GAAG,CAAC,GAAG,CAAC,KAAK,GAAG,GAAG,CAAC,IAAI,CAAC,CAAC;YAExC,IAAI,QAAQ,EAAE,CAAC;gBACb,QAAQ,CAAC,KAAK,IAAI,QAAQ,CAAC;YAC7B,CAAC;iBAAM,CAAC;gBACN,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,GAAG,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC;YAC5C,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;SAC/B,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC;SACjC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC;SACf,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,CAAC;QACxB,QAAQ,EAAE,GAAG,CAAC,QAAQ;QACtB,KAAK,EAAE,GAAG,CAAC,KAAK;QAChB,OAAO,EAAE,GAAG,CAAC,OAAO;QACpB,IAAI,EAAE,GAAG,CAAC,IAAI;QACd,MAAM,EAAE,GAAG,CAAC,MAAM;QAClB,KAAK;KACN,CAAC,CAAC,CAAC;AACR,CAAC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* General chat (no documents) — proxied through worker to Fireworks.
|
|
3
|
+
*
|
|
4
|
+
* okra chat "what is a 10-K filing?"
|
|
5
|
+
*/
|
|
6
|
+
export interface GeneralChatOptions {
|
|
7
|
+
message: string;
|
|
8
|
+
model?: string;
|
|
9
|
+
}
|
|
10
|
+
export declare function runGeneralChat(opts: GeneralChatOptions): Promise<void>;
|
|
11
|
+
//# sourceMappingURL=general-chat.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"general-chat.d.ts","sourceRoot":"","sources":["../../src/lib/general-chat.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AASH,MAAM,WAAW,kBAAkB;IACjC,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,wBAAsB,cAAc,CAAC,IAAI,EAAE,kBAAkB,GAAG,OAAO,CAAC,IAAI,CAAC,CA+D5E"}
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* General chat (no documents) — proxied through worker to Fireworks.
|
|
3
|
+
*
|
|
4
|
+
* okra chat "what is a 10-K filing?"
|
|
5
|
+
*/
|
|
6
|
+
import { getDocumentAgentSecret, getAgentSessionHttpUrl } from './config.js';
|
|
7
|
+
import { isQuietMode } from './runtime.js';
|
|
8
|
+
import { error } from './output.js';
|
|
9
|
+
import { createSpinner } from './progress.js';
|
|
10
|
+
import { EXIT_CODES } from './client.js';
|
|
11
|
+
import { readCompletionStream } from './completion-stream.js';
|
|
12
|
+
export async function runGeneralChat(opts) {
|
|
13
|
+
const secret = getDocumentAgentSecret();
|
|
14
|
+
if (!secret) {
|
|
15
|
+
error('DOCUMENT_AGENT_SHARED_SECRET not set. Add to .env or env.');
|
|
16
|
+
process.exit(EXIT_CODES.AUTH_ERROR);
|
|
17
|
+
}
|
|
18
|
+
const quiet = isQuietMode();
|
|
19
|
+
const useSpinners = !quiet && process.stderr.isTTY;
|
|
20
|
+
const baseUrl = getAgentSessionHttpUrl();
|
|
21
|
+
const completionUrl = `${baseUrl}/chat/completion`;
|
|
22
|
+
const chatSpinner = useSpinners
|
|
23
|
+
? createSpinner('Thinking...', { stream: process.stderr })
|
|
24
|
+
: null;
|
|
25
|
+
chatSpinner?.start();
|
|
26
|
+
let totalCostUsd = 0;
|
|
27
|
+
try {
|
|
28
|
+
const response = await fetch(completionUrl, {
|
|
29
|
+
method: 'POST',
|
|
30
|
+
headers: {
|
|
31
|
+
'Content-Type': 'application/json',
|
|
32
|
+
'Accept': 'application/x-ndjson',
|
|
33
|
+
'x-document-agent-secret': secret,
|
|
34
|
+
},
|
|
35
|
+
body: JSON.stringify({
|
|
36
|
+
prompt: opts.message,
|
|
37
|
+
stream: true,
|
|
38
|
+
...(opts.model && { model: opts.model }),
|
|
39
|
+
}),
|
|
40
|
+
});
|
|
41
|
+
if (!response.ok) {
|
|
42
|
+
const body = await response.text();
|
|
43
|
+
throw new Error(`Chat failed (${response.status}): ${body}`);
|
|
44
|
+
}
|
|
45
|
+
const result = await readCompletionStream(response, {
|
|
46
|
+
onTextDelta(delta) {
|
|
47
|
+
if (chatSpinner?.isSpinning)
|
|
48
|
+
chatSpinner.stop();
|
|
49
|
+
process.stdout.write(delta);
|
|
50
|
+
},
|
|
51
|
+
});
|
|
52
|
+
totalCostUsd = result.costUsd;
|
|
53
|
+
if (chatSpinner?.isSpinning)
|
|
54
|
+
chatSpinner.stop();
|
|
55
|
+
process.stdout.write('\n');
|
|
56
|
+
if (!quiet && totalCostUsd > 0) {
|
|
57
|
+
const chalk = (await import('chalk')).default;
|
|
58
|
+
process.stderr.write(chalk.dim(`\n$${totalCostUsd.toFixed(4)}`) + '\n');
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
catch (err) {
|
|
62
|
+
if (chatSpinner?.isSpinning)
|
|
63
|
+
chatSpinner.fail('Chat failed');
|
|
64
|
+
error(err instanceof Error ? err.message : String(err));
|
|
65
|
+
process.exitCode = EXIT_CODES.GENERAL_ERROR;
|
|
66
|
+
}
|
|
67
|
+
process.exit(process.exitCode ?? 0);
|
|
68
|
+
}
|
|
69
|
+
//# sourceMappingURL=general-chat.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"general-chat.js","sourceRoot":"","sources":["../../src/lib/general-chat.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,sBAAsB,EAAE,sBAAsB,EAAE,MAAM,aAAa,CAAC;AAC7E,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAC3C,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AACpC,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAC9C,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAO9D,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,IAAwB;IAC3D,MAAM,MAAM,GAAG,sBAAsB,EAAE,CAAC;IACxC,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,KAAK,CAAC,2DAA2D,CAAC,CAAC;QACnE,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;IACtC,CAAC;IAED,MAAM,KAAK,GAAG,WAAW,EAAE,CAAC;IAC5B,MAAM,WAAW,GAAG,CAAC,KAAK,IAAI,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC;IAEnD,MAAM,OAAO,GAAG,sBAAsB,EAAE,CAAC;IACzC,MAAM,aAAa,GAAG,GAAG,OAAO,kBAAkB,CAAC;IAEnD,MAAM,WAAW,GAAG,WAAW;QAC7B,CAAC,CAAC,aAAa,CAAC,aAAa,EAAE,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC;QAC1D,CAAC,CAAC,IAAI,CAAC;IACT,WAAW,EAAE,KAAK,EAAE,CAAC;IAErB,IAAI,YAAY,GAAG,CAAC,CAAC;IAErB,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,aAAa,EAAE;YAC1C,MAAM,EAAE,MAAM;YACd,OAAO,EAAE;gBACP,cAAc,EAAE,kBAAkB;gBAClC,QAAQ,EAAE,sBAAsB;gBAChC,yBAAyB,EAAE,MAAO;aACnC;YACD,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;gBACnB,MAAM,EAAE,IAAI,CAAC,OAAO;gBACpB,MAAM,EAAE,IAAI;gBACZ,GAAG,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC;aACzC,CAAC;SACH,CAAC,CAAC;QAEH,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;YACjB,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;YACnC,MAAM,IAAI,KAAK,CAAC,gBAAgB,QAAQ,CAAC,MAAM,MAAM,IAAI,EAAE,CAAC,CAAC;QAC/D,CAAC;QAED,MAAM,MAAM,GAAG,MAAM,oBAAoB,CAAC,QAAQ,EAAE;YAClD,WAAW,CAAC,KAAK;gBACf,IAAI,WAAW,EAAE,UAAU;oBAAE,WAAW,CAAC,IAAI,EAAE,CAAC;gBAChD,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;YAC9B,CAAC;SACF,CAAC,CAAC;QAEH,YAAY,GAAG,MAAM,CAAC,OAAO,CAAC;QAE9B,IAAI,WAAW,EAAE,UAAU;YAAE,WAAW,CAAC,IAAI,EAAE,CAAC;QAChD,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAE3B,IAAI,CAAC,KAAK,IAAI,YAAY,GAAG,CAAC,EAAE,CAAC;YAC/B,MAAM,KAAK,GAAG,CAAC,MAAM,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC;YAC9C,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,CAAC;QAC1E,CAAC;IACH,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,IAAI,WAAW,EAAE,UAAU;YAAE,WAAW,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;QAC7D,KAAK,CAAC,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;QACxD,OAAO,CAAC,QAAQ,GAAG,UAAU,CAAC,aAAa,CAAC;IAC9C,CAAC;IAED,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,IAAI,CAAC,CAAC,CAAC;AACtC,CAAC"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Multi-document chat via /orchestrate/completion on worker.
|
|
3
|
+
*
|
|
4
|
+
* okra chat "compare revenue" --doc ocr-XXX,ocr-YYY
|
|
5
|
+
* okra chat "compare all" -c my-collection
|
|
6
|
+
*
|
|
7
|
+
* Lead agent (Fireworks kimi-k2p5) with query_document tool that fans out
|
|
8
|
+
* to each DocumentAgent DO's /completion endpoint.
|
|
9
|
+
*/
|
|
10
|
+
export interface MultiDocChatOptions {
|
|
11
|
+
message: string;
|
|
12
|
+
/** Comma-separated job IDs */
|
|
13
|
+
documents?: string;
|
|
14
|
+
/** Collection name or ID */
|
|
15
|
+
collection?: string;
|
|
16
|
+
model?: string;
|
|
17
|
+
share?: boolean;
|
|
18
|
+
}
|
|
19
|
+
export declare function runMultiDocChat(opts: MultiDocChatOptions): Promise<void>;
|
|
20
|
+
//# sourceMappingURL=multi-doc-chat.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"multi-doc-chat.d.ts","sourceRoot":"","sources":["../../src/lib/multi-doc-chat.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AASH,MAAM,WAAW,mBAAmB;IAClC,OAAO,EAAE,MAAM,CAAC;IAChB,8BAA8B;IAC9B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,4BAA4B;IAC5B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAgED,wBAAsB,eAAe,CAAC,IAAI,EAAE,mBAAmB,GAAG,OAAO,CAAC,IAAI,CAAC,CA6F9E"}
|
|
@@ -0,0 +1,152 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Multi-document chat via /orchestrate/completion on worker.
|
|
3
|
+
*
|
|
4
|
+
* okra chat "compare revenue" --doc ocr-XXX,ocr-YYY
|
|
5
|
+
* okra chat "compare all" -c my-collection
|
|
6
|
+
*
|
|
7
|
+
* Lead agent (Fireworks kimi-k2p5) with query_document tool that fans out
|
|
8
|
+
* to each DocumentAgent DO's /completion endpoint.
|
|
9
|
+
*/
|
|
10
|
+
import { getDocumentAgentSecret, getAgentSessionHttpUrl } from './config.js';
|
|
11
|
+
import { isQuietMode } from './runtime.js';
|
|
12
|
+
import { error, info } from './output.js';
|
|
13
|
+
import { createSpinner } from './progress.js';
|
|
14
|
+
import { EXIT_CODES, get, OkraApiError } from './client.js';
|
|
15
|
+
import { readCompletionStream } from './completion-stream.js';
|
|
16
|
+
async function resolveDocuments(documents, collection) {
|
|
17
|
+
// Direct job IDs
|
|
18
|
+
if (documents) {
|
|
19
|
+
const jobIds = documents.split(',').map(s => s.trim()).filter(Boolean);
|
|
20
|
+
for (const id of jobIds) {
|
|
21
|
+
if (!id.startsWith('ocr-')) {
|
|
22
|
+
error(`Invalid job ID: ${id} (must start with ocr-)`);
|
|
23
|
+
process.exit(EXIT_CODES.INVALID_ARGS);
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
return jobIds.map(id => ({ jobId: id, fileName: id }));
|
|
27
|
+
}
|
|
28
|
+
// Collection
|
|
29
|
+
if (collection) {
|
|
30
|
+
// Check if it's inline job IDs separated by commas
|
|
31
|
+
const parts = collection.split(',').map(s => s.trim());
|
|
32
|
+
if (parts.every(s => s.startsWith('ocr-'))) {
|
|
33
|
+
return parts.map(id => ({ jobId: id, fileName: id }));
|
|
34
|
+
}
|
|
35
|
+
try {
|
|
36
|
+
const payload = await get(`api/v1/collections/${encodeURIComponent(collection)}`);
|
|
37
|
+
info(`Collection: ${payload.name} (${payload.id})`);
|
|
38
|
+
const docs = payload.documents.map(d => ({
|
|
39
|
+
jobId: d.job_id,
|
|
40
|
+
fileName: d.file_name || d.job_id,
|
|
41
|
+
}));
|
|
42
|
+
for (const d of docs)
|
|
43
|
+
info(` ${d.jobId} ${d.fileName}`);
|
|
44
|
+
if (docs.length === 0) {
|
|
45
|
+
error('Collection is empty — add documents first');
|
|
46
|
+
process.exit(EXIT_CODES.INVALID_ARGS);
|
|
47
|
+
}
|
|
48
|
+
return docs;
|
|
49
|
+
}
|
|
50
|
+
catch (err) {
|
|
51
|
+
if (err instanceof OkraApiError && err.statusCode === 404) {
|
|
52
|
+
error(`Collection not found: ${collection}`);
|
|
53
|
+
process.exit(EXIT_CODES.NOT_FOUND);
|
|
54
|
+
}
|
|
55
|
+
throw err;
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
error('Provide document IDs (--doc) or collection (-c)');
|
|
59
|
+
process.exit(EXIT_CODES.INVALID_ARGS);
|
|
60
|
+
return []; // unreachable
|
|
61
|
+
}
|
|
62
|
+
export async function runMultiDocChat(opts) {
|
|
63
|
+
const secret = getDocumentAgentSecret();
|
|
64
|
+
if (!secret) {
|
|
65
|
+
error('DOCUMENT_AGENT_SHARED_SECRET not set. Add to .env or env.');
|
|
66
|
+
process.exit(EXIT_CODES.AUTH_ERROR);
|
|
67
|
+
}
|
|
68
|
+
const docs = await resolveDocuments(opts.documents, opts.collection);
|
|
69
|
+
info(`Querying ${docs.length} documents: ${opts.message}`);
|
|
70
|
+
const quiet = isQuietMode();
|
|
71
|
+
const useSpinners = !quiet && process.stderr.isTTY;
|
|
72
|
+
const baseUrl = getAgentSessionHttpUrl();
|
|
73
|
+
const completionUrl = `${baseUrl}/orchestrate/completion`;
|
|
74
|
+
const chatSpinner = useSpinners
|
|
75
|
+
? createSpinner('Thinking...', { stream: process.stderr })
|
|
76
|
+
: null;
|
|
77
|
+
chatSpinner?.start();
|
|
78
|
+
let totalCostUsd = 0;
|
|
79
|
+
let toolCallCount = 0;
|
|
80
|
+
try {
|
|
81
|
+
const response = await fetch(completionUrl, {
|
|
82
|
+
method: 'POST',
|
|
83
|
+
headers: {
|
|
84
|
+
'Content-Type': 'application/json',
|
|
85
|
+
'Accept': 'application/x-ndjson',
|
|
86
|
+
'x-document-agent-secret': secret,
|
|
87
|
+
},
|
|
88
|
+
body: JSON.stringify({
|
|
89
|
+
query: opts.message,
|
|
90
|
+
documents: docs,
|
|
91
|
+
stream: true,
|
|
92
|
+
...(opts.model && { model: opts.model }),
|
|
93
|
+
}),
|
|
94
|
+
});
|
|
95
|
+
if (!response.ok) {
|
|
96
|
+
const body = await response.text();
|
|
97
|
+
throw new Error(`Orchestrate failed (${response.status}): ${body}`);
|
|
98
|
+
}
|
|
99
|
+
const result = await readCompletionStream(response, {
|
|
100
|
+
onTextDelta(delta) {
|
|
101
|
+
if (chatSpinner?.isSpinning)
|
|
102
|
+
chatSpinner.stop();
|
|
103
|
+
process.stdout.write(delta);
|
|
104
|
+
},
|
|
105
|
+
onToolCallEnd(name) {
|
|
106
|
+
toolCallCount++;
|
|
107
|
+
if (chatSpinner) {
|
|
108
|
+
if (!chatSpinner.isSpinning)
|
|
109
|
+
chatSpinner.start();
|
|
110
|
+
chatSpinner.text = `Querying: ${name}`;
|
|
111
|
+
}
|
|
112
|
+
},
|
|
113
|
+
onToolResult(name) {
|
|
114
|
+
if (chatSpinner?.isSpinning)
|
|
115
|
+
chatSpinner.text = `${name} done`;
|
|
116
|
+
},
|
|
117
|
+
onStepDone(stopReason) {
|
|
118
|
+
if (stopReason === 'toolUse' && chatSpinner) {
|
|
119
|
+
if (!chatSpinner.isSpinning)
|
|
120
|
+
chatSpinner.start();
|
|
121
|
+
chatSpinner.text = 'Synthesizing...';
|
|
122
|
+
}
|
|
123
|
+
},
|
|
124
|
+
});
|
|
125
|
+
totalCostUsd = result.costUsd;
|
|
126
|
+
if (chatSpinner?.isSpinning)
|
|
127
|
+
chatSpinner.stop();
|
|
128
|
+
process.stdout.write('\n');
|
|
129
|
+
if (!quiet) {
|
|
130
|
+
const parts = [];
|
|
131
|
+
if (totalCostUsd > 0)
|
|
132
|
+
parts.push(`$${totalCostUsd.toFixed(4)}`);
|
|
133
|
+
if (toolCallCount > 0)
|
|
134
|
+
parts.push(`${toolCallCount} tool calls`);
|
|
135
|
+
if (parts.length) {
|
|
136
|
+
const chalk = (await import('chalk')).default;
|
|
137
|
+
process.stderr.write(chalk.dim(`\n${parts.join(' | ')}`) + '\n');
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
if (opts.share) {
|
|
141
|
+
process.stderr.write(`Share URL: https://okrapdf.com/share/multi-doc\n`);
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
catch (err) {
|
|
145
|
+
if (chatSpinner?.isSpinning)
|
|
146
|
+
chatSpinner.fail('Query failed');
|
|
147
|
+
error(err instanceof Error ? err.message : String(err));
|
|
148
|
+
process.exitCode = EXIT_CODES.GENERAL_ERROR;
|
|
149
|
+
}
|
|
150
|
+
process.exit(process.exitCode ?? 0);
|
|
151
|
+
}
|
|
152
|
+
//# sourceMappingURL=multi-doc-chat.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"multi-doc-chat.js","sourceRoot":"","sources":["../../src/lib/multi-doc-chat.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { Command } from 'commander';
|
|
2
|
+
import type { SearchSource } from '../types.js';
|
|
3
|
+
export interface PluginMeta {
|
|
4
|
+
name: string;
|
|
5
|
+
description?: string;
|
|
6
|
+
version?: string;
|
|
7
|
+
}
|
|
8
|
+
export interface LoadedPlugin {
|
|
9
|
+
package: string;
|
|
10
|
+
meta?: PluginMeta;
|
|
11
|
+
source?: SearchSource;
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* Get all registered search sources from loaded plugins.
|
|
15
|
+
*/
|
|
16
|
+
export declare function getSearchSources(): SearchSource[];
|
|
17
|
+
/**
|
|
18
|
+
* Discover and load plugins from node_modules.
|
|
19
|
+
* Scans for packages matching `okra-plugin-*` or `@okrapdf/plugin-*`
|
|
20
|
+
* that export a `register(cli: Command)` function.
|
|
21
|
+
* Also collects `source` exports implementing SearchSource.
|
|
22
|
+
*/
|
|
23
|
+
export declare function loadPlugins(program: Command): Promise<LoadedPlugin[]>;
|
|
24
|
+
//# sourceMappingURL=plugins.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"plugins.d.ts","sourceRoot":"","sources":["../../src/lib/plugins.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAIpC,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAEhD,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,UAAU,CAAC;IAClB,MAAM,CAAC,EAAE,YAAY,CAAC;CACvB;AAKD;;GAEG;AACH,wBAAgB,gBAAgB,IAAI,YAAY,EAAE,CAEjD;AAED;;;;;GAKG;AACH,wBAAsB,WAAW,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC,CA2C3E"}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
import { readdir } from 'fs/promises';
|
|
2
|
+
import { join, dirname } from 'path';
|
|
3
|
+
import { fileURLToPath } from 'url';
|
|
4
|
+
/** All search sources collected from plugins */
|
|
5
|
+
const searchSources = [];
|
|
6
|
+
/**
|
|
7
|
+
* Get all registered search sources from loaded plugins.
|
|
8
|
+
*/
|
|
9
|
+
export function getSearchSources() {
|
|
10
|
+
return searchSources;
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* Discover and load plugins from node_modules.
|
|
14
|
+
* Scans for packages matching `okra-plugin-*` or `@okrapdf/plugin-*`
|
|
15
|
+
* that export a `register(cli: Command)` function.
|
|
16
|
+
* Also collects `source` exports implementing SearchSource.
|
|
17
|
+
*/
|
|
18
|
+
export async function loadPlugins(program) {
|
|
19
|
+
const loaded = [];
|
|
20
|
+
const cliDir = dirname(fileURLToPath(import.meta.url));
|
|
21
|
+
const nodeModules = join(cliDir, '..', '..', 'node_modules');
|
|
22
|
+
// Scan for okra-plugin-* packages
|
|
23
|
+
const dirs = await readdir(nodeModules).catch(() => []);
|
|
24
|
+
const pluginDirs = dirs.filter((d) => d.startsWith('okra-plugin-'));
|
|
25
|
+
// Also scan @okrapdf/ scope
|
|
26
|
+
const scopedDir = join(nodeModules, '@okrapdf');
|
|
27
|
+
const scopedDirs = await readdir(scopedDir).catch(() => []);
|
|
28
|
+
const scopedPlugins = scopedDirs.filter((d) => d.startsWith('plugin-')).map((d) => `@okrapdf/${d}`);
|
|
29
|
+
for (const pkg of [...pluginDirs, ...scopedPlugins]) {
|
|
30
|
+
try {
|
|
31
|
+
const mod = await import(pkg);
|
|
32
|
+
const register = mod.register ?? mod.default?.register;
|
|
33
|
+
const source = mod.source ?? mod.default?.source;
|
|
34
|
+
if (typeof register === 'function') {
|
|
35
|
+
register(program);
|
|
36
|
+
}
|
|
37
|
+
const plugin = {
|
|
38
|
+
package: pkg,
|
|
39
|
+
meta: mod.meta ?? mod.default?.meta,
|
|
40
|
+
};
|
|
41
|
+
if (source && typeof source.resolve === 'function') {
|
|
42
|
+
plugin.source = source;
|
|
43
|
+
searchSources.push(source);
|
|
44
|
+
}
|
|
45
|
+
if (typeof register === 'function' || source) {
|
|
46
|
+
loaded.push(plugin);
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
catch {
|
|
50
|
+
// Skip broken plugins silently
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
return loaded;
|
|
54
|
+
}
|
|
55
|
+
//# sourceMappingURL=plugins.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"plugins.js","sourceRoot":"","sources":["../../src/lib/plugins.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AACtC,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AACrC,OAAO,EAAE,aAAa,EAAE,MAAM,KAAK,CAAC;AAepC,gDAAgD;AAChD,MAAM,aAAa,GAAmB,EAAE,CAAC;AAEzC;;GAEG;AACH,MAAM,UAAU,gBAAgB;IAC9B,OAAO,aAAa,CAAC;AACvB,CAAC;AAED;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,OAAgB;IAChD,MAAM,MAAM,GAAmB,EAAE,CAAC;IAClC,MAAM,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;IACvD,MAAM,WAAW,GAAG,IAAI,CAAC,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,cAAc,CAAC,CAAC;IAE7D,kCAAkC;IAClC,MAAM,IAAI,GAAG,MAAM,OAAO,CAAC,WAAW,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,EAAc,CAAC,CAAC;IACpE,MAAM,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,cAAc,CAAC,CAAC,CAAC;IAEpE,4BAA4B;IAC5B,MAAM,SAAS,GAAG,IAAI,CAAC,WAAW,EAAE,UAAU,CAAC,CAAC;IAChD,MAAM,UAAU,GAAG,MAAM,OAAO,CAAC,SAAS,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,EAAc,CAAC,CAAC;IACxE,MAAM,aAAa,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC;IAEpG,KAAK,MAAM,GAAG,IAAI,CAAC,GAAG,UAAU,EAAE,GAAG,aAAa,CAAC,EAAE,CAAC;QACpD,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,GAAG,CAAC,CAAC;YAC9B,MAAM,QAAQ,GAAG,GAAG,CAAC,QAAQ,IAAI,GAAG,CAAC,OAAO,EAAE,QAAQ,CAAC;YACvD,MAAM,MAAM,GAA6B,GAAG,CAAC,MAAM,IAAI,GAAG,CAAC,OAAO,EAAE,MAAM,CAAC;YAE3E,IAAI,OAAO,QAAQ,KAAK,UAAU,EAAE,CAAC;gBACnC,QAAQ,CAAC,OAAO,CAAC,CAAC;YACpB,CAAC;YAED,MAAM,MAAM,GAAiB;gBAC3B,OAAO,EAAE,GAAG;gBACZ,IAAI,EAAE,GAAG,CAAC,IAAI,IAAI,GAAG,CAAC,OAAO,EAAE,IAAI;aACpC,CAAC;YAEF,IAAI,MAAM,IAAI,OAAO,MAAM,CAAC,OAAO,KAAK,UAAU,EAAE,CAAC;gBACnD,MAAM,CAAC,MAAM,GAAG,MAAM,CAAC;gBACvB,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YAC7B,CAAC;YAED,IAAI,OAAO,QAAQ,KAAK,UAAU,IAAI,MAAM,EAAE,CAAC;gBAC7C,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YACtB,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;YACP,+BAA+B;QACjC,CAAC;IACH,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC"}
|
package/dist/lib/runtime.js
CHANGED
|
@@ -25,7 +25,7 @@ export function bootstrapGlobalEnv(argv) {
|
|
|
25
25
|
process.env.OKRA_OUTPUT_FORMAT = 'json';
|
|
26
26
|
process.env.OKRA_JSON_FIELDS = arg.slice('--json='.length);
|
|
27
27
|
}
|
|
28
|
-
if (arg === '--quiet'
|
|
28
|
+
if (arg === '--quiet') {
|
|
29
29
|
process.env.OKRA_QUIET = '1';
|
|
30
30
|
}
|
|
31
31
|
if (arg === '--verbose' || shortFlagPresent(arg, 'V')) {
|
package/dist/lib/runtime.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runtime.js","sourceRoot":"","sources":["../../src/lib/runtime.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,SAAS,UAAU,CAAC,KAAyB;IAC3C,IAAI,CAAC,KAAK;QAAE,OAAO,KAAK,CAAC;IAEzB,MAAM,UAAU,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IAC9C,OAAO,UAAU,KAAK,GAAG,IAAI,UAAU,KAAK,MAAM,IAAI,UAAU,KAAK,KAAK,IAAI,UAAU,KAAK,IAAI,CAAC;AACpG,CAAC;AAED,SAAS,gBAAgB,CAAC,GAAW,EAAE,IAAY;IACjD,OAAO,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;AACrF,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,kBAAkB,CAAC,IAAc;IAC/C,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,IAAI,GAAG,KAAK,IAAI;YAAE,MAAM;QAExB,IAAI,GAAG,KAAK,QAAQ,EAAE,CAAC;YACrB,OAAO,CAAC,GAAG,CAAC,kBAAkB,GAAG,MAAM,CAAC;QAC1C,CAAC;QAED,uCAAuC;QACvC,IAAI,GAAG,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;YAC9B,OAAO,CAAC,GAAG,CAAC,kBAAkB,GAAG,MAAM,CAAC;YACxC,OAAO,CAAC,GAAG,CAAC,gBAAgB,GAAG,GAAG,CAAC,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;QAC7D,CAAC;QAED,IAAI,GAAG,KAAK,SAAS,
|
|
1
|
+
{"version":3,"file":"runtime.js","sourceRoot":"","sources":["../../src/lib/runtime.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,SAAS,UAAU,CAAC,KAAyB;IAC3C,IAAI,CAAC,KAAK;QAAE,OAAO,KAAK,CAAC;IAEzB,MAAM,UAAU,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IAC9C,OAAO,UAAU,KAAK,GAAG,IAAI,UAAU,KAAK,MAAM,IAAI,UAAU,KAAK,KAAK,IAAI,UAAU,KAAK,IAAI,CAAC;AACpG,CAAC;AAED,SAAS,gBAAgB,CAAC,GAAW,EAAE,IAAY;IACjD,OAAO,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;AACrF,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,kBAAkB,CAAC,IAAc;IAC/C,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,IAAI,GAAG,KAAK,IAAI;YAAE,MAAM;QAExB,IAAI,GAAG,KAAK,QAAQ,EAAE,CAAC;YACrB,OAAO,CAAC,GAAG,CAAC,kBAAkB,GAAG,MAAM,CAAC;QAC1C,CAAC;QAED,uCAAuC;QACvC,IAAI,GAAG,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;YAC9B,OAAO,CAAC,GAAG,CAAC,kBAAkB,GAAG,MAAM,CAAC;YACxC,OAAO,CAAC,GAAG,CAAC,gBAAgB,GAAG,GAAG,CAAC,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;QAC7D,CAAC;QAED,IAAI,GAAG,KAAK,SAAS,EAAE,CAAC;YACtB,OAAO,CAAC,GAAG,CAAC,UAAU,GAAG,GAAG,CAAC;QAC/B,CAAC;QAED,IAAI,GAAG,KAAK,WAAW,IAAI,gBAAgB,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC;YACtD,OAAO,CAAC,GAAG,CAAC,YAAY,GAAG,GAAG,CAAC;QACjC,CAAC;IACH,CAAC;AACH,CAAC;AAED,MAAM,UAAU,WAAW;IACzB,OAAO,UAAU,CAAC,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;AAC5C,CAAC;AAED,MAAM,UAAU,aAAa;IAC3B,OAAO,UAAU,CAAC,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,IAAI,UAAU,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;AAC/E,CAAC"}
|