@poco-ai/agentero-dsh-host 0.0.0-stage → 0.1.1
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/lib/bookmarks-write.d.ts +24 -0
- package/lib/bookmarks-write.js +181 -0
- package/lib/bookmarks-write.js.map +1 -0
- package/lib/catalog.d.ts +28 -0
- package/lib/catalog.js +58 -0
- package/lib/catalog.js.map +1 -0
- package/lib/cli-run.d.ts +15 -0
- package/lib/cli-run.js +102 -0
- package/lib/cli-run.js.map +1 -0
- package/lib/client/index.d.ts +71 -0
- package/lib/client/settings-model.d.ts +28 -0
- package/lib/client/settings.d.ts +27 -0
- package/lib/client/ui/button.d.ts +10 -0
- package/lib/client/ui/input.d.ts +2 -0
- package/lib/client/utils.d.ts +2 -0
- package/lib/client.js +4071 -0
- package/lib/index.d.ts +55 -0
- package/lib/index.js +1100 -0
- package/lib/index.js.map +1 -0
- package/lib/marks-store.d.ts +80 -0
- package/lib/marks-store.js +393 -0
- package/lib/marks-store.js.map +1 -0
- package/lib/notes-files.d.ts +47 -0
- package/lib/notes-files.js +427 -0
- package/lib/notes-files.js.map +1 -0
- package/lib/pdf-file.d.ts +23 -0
- package/lib/pdf-file.js +84 -0
- package/lib/pdf-file.js.map +1 -0
- package/lib/tools.d.ts +8 -0
- package/lib/tools.js +204 -0
- package/lib/tools.js.map +1 -0
- package/lib/translate.d.ts +70 -0
- package/lib/translate.js +80 -0
- package/lib/translate.js.map +1 -0
- package/lib/translation/batches.d.ts +21 -0
- package/lib/translation/batches.js +88 -0
- package/lib/translation/batches.js.map +1 -0
- package/lib/translation/chunks.d.ts +2 -0
- package/lib/translation/chunks.js +36 -0
- package/lib/translation/chunks.js.map +1 -0
- package/lib/translation/mask.d.ts +22 -0
- package/lib/translation/mask.js +69 -0
- package/lib/translation/mask.js.map +1 -0
- package/lib/translation/pipeline.d.ts +3 -0
- package/lib/translation/pipeline.js +119 -0
- package/lib/translation/pipeline.js.map +1 -0
- package/lib/translation/preserved-links.d.ts +26 -0
- package/lib/translation/preserved-links.js +127 -0
- package/lib/translation/preserved-links.js.map +1 -0
- package/lib/translation/prompt.d.ts +99 -0
- package/lib/translation/prompt.js +224 -0
- package/lib/translation/prompt.js.map +1 -0
- package/lib/translation/retry.d.ts +3 -0
- package/lib/translation/retry.js +30 -0
- package/lib/translation/retry.js.map +1 -0
- package/lib/translation/sentences.d.ts +5 -0
- package/lib/translation/sentences.js +77 -0
- package/lib/translation/sentences.js.map +1 -0
- package/lib/vault.d.ts +21 -0
- package/lib/vault.js +69 -0
- package/lib/vault.js.map +1 -0
- package/package.json +44 -3
- package/src/translation/MOTIF-LICENSE.txt +21 -0
- package/README.md +0 -3
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { setTimeout } from 'node:timers/promises';
|
|
2
|
+
/** Only transient failures benefit from repeating the same model request. */
|
|
3
|
+
export function isRetryableTranslationError(error) {
|
|
4
|
+
if (!(error instanceof Error))
|
|
5
|
+
return false;
|
|
6
|
+
const details = error;
|
|
7
|
+
if (details.code === 'TRANSLATION_INCOMPLETE' || error.name === 'AbortError')
|
|
8
|
+
return false;
|
|
9
|
+
const status = details.status ?? details.statusCode;
|
|
10
|
+
if (status !== undefined)
|
|
11
|
+
return status === 408 || status === 429 || status >= 500;
|
|
12
|
+
if (/unauthorized|forbidden|api.?key|credentials|unexpected argument|not found|configuration/i.test(error.message))
|
|
13
|
+
return false;
|
|
14
|
+
return error.name === 'TimeoutError' || /timeout|timed out|network|fetch failed|connection|ECONN|ETIMEDOUT|rate.?limit|\b429\b|\b5\d\d\b|overloaded|unavailable|stream ended before completion|returned no translation/i.test(error.message);
|
|
15
|
+
}
|
|
16
|
+
export async function retryTranslation(call, signal, wait = async (ms, signal) => { await setTimeout(ms, undefined, { signal }); }) {
|
|
17
|
+
for (let attempt = 0;; attempt++) {
|
|
18
|
+
signal.throwIfAborted();
|
|
19
|
+
try {
|
|
20
|
+
return await call();
|
|
21
|
+
}
|
|
22
|
+
catch (error) {
|
|
23
|
+
signal.throwIfAborted();
|
|
24
|
+
if (attempt >= 2 || !isRetryableTranslationError(error))
|
|
25
|
+
throw error;
|
|
26
|
+
await wait(1000 * 2 ** attempt, signal);
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
//# sourceMappingURL=retry.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"retry.js","sourceRoot":"","sources":["../../src/translation/retry.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAA;AAEjD,6EAA6E;AAC7E,MAAM,UAAU,2BAA2B,CAAC,KAAc;IACxD,IAAI,CAAC,CAAC,KAAK,YAAY,KAAK,CAAC;QAAE,OAAO,KAAK,CAAA;IAC3C,MAAM,OAAO,GAAG,KAAwE,CAAA;IACxF,IAAI,OAAO,CAAC,IAAI,KAAK,wBAAwB,IAAI,KAAK,CAAC,IAAI,KAAK,YAAY;QAAE,OAAO,KAAK,CAAA;IAC1F,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,IAAI,OAAO,CAAC,UAAU,CAAA;IACnD,IAAI,MAAM,KAAK,SAAS;QAAE,OAAO,MAAM,KAAK,GAAG,IAAI,MAAM,KAAK,GAAG,IAAI,MAAM,IAAI,GAAG,CAAA;IAClF,IAAI,0FAA0F,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC;QAAE,OAAO,KAAK,CAAA;IAChI,OAAO,KAAK,CAAC,IAAI,KAAK,cAAc,IAAI,gLAAgL,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAA;AAC9O,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,gBAAgB,CACpC,IAAsB,EAAE,MAAmB,EAC3C,OAA2D,KAAK,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,GAAG,MAAM,UAAU,CAAC,EAAE,EAAE,SAAS,EAAE,EAAE,MAAM,EAAE,CAAC,CAAA,CAAC,CAAC;IAEhI,KAAK,IAAI,OAAO,GAAG,CAAC,GAAI,OAAO,EAAE,EAAE,CAAC;QAClC,MAAM,CAAC,cAAc,EAAE,CAAA;QACvB,IAAI,CAAC;YAAC,OAAO,MAAM,IAAI,EAAE,CAAA;QAAC,CAAC;QAC3B,OAAO,KAAK,EAAE,CAAC;YACb,MAAM,CAAC,cAAc,EAAE,CAAA;YACvB,IAAI,OAAO,IAAI,CAAC,IAAI,CAAC,2BAA2B,CAAC,KAAK,CAAC;gBAAE,MAAM,KAAK,CAAA;YACpE,MAAM,IAAI,CAAC,IAAI,GAAG,CAAC,IAAI,OAAO,EAAE,MAAM,CAAC,CAAA;QACzC,CAAC;IACH,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
// Ported from motif (Copyright (c) 2026 poco-ai, MIT). See MOTIF-LICENSE.txt.
|
|
2
|
+
const LATIN_SENTENCE_PUNCT = new Set([".", "!", "?"]);
|
|
3
|
+
/** CJK stops are unambiguous, so they end a sentence without a following space. */
|
|
4
|
+
const CJK_SENTENCE_PUNCT = new Set(["。", "!", "?"]);
|
|
5
|
+
function isCloser(ch) {
|
|
6
|
+
return (ch === '"' ||
|
|
7
|
+
ch === "'" ||
|
|
8
|
+
ch === ")" ||
|
|
9
|
+
ch === "]" ||
|
|
10
|
+
ch === "”" ||
|
|
11
|
+
ch === "’" ||
|
|
12
|
+
ch === ")" ||
|
|
13
|
+
ch === "」");
|
|
14
|
+
}
|
|
15
|
+
/** `et al.` / `Fig.` / `e.g.` / `i.e.` / `0.5` — the period is not a sentence end. */
|
|
16
|
+
function isProtectedPeriod(text, index) {
|
|
17
|
+
if (text[index] !== ".")
|
|
18
|
+
return false;
|
|
19
|
+
const before = text.slice(0, index);
|
|
20
|
+
if (/(?:^|[\s([(])fig$/i.test(before))
|
|
21
|
+
return true;
|
|
22
|
+
if (/(?:^|[\s([(])et\s+al$/i.test(before))
|
|
23
|
+
return true;
|
|
24
|
+
if (/(?:^|[\s([(])e\.g$/i.test(before))
|
|
25
|
+
return true;
|
|
26
|
+
if (/(?:^|[\s([(])i\.e$/i.test(before))
|
|
27
|
+
return true;
|
|
28
|
+
const prev = before.at(-1);
|
|
29
|
+
const next = text[index + 1];
|
|
30
|
+
return Boolean(prev && next && /\d/.test(prev) && /\d/.test(next));
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Split prose into sentence quotes. Whitespace is collapsed; hyphens stay.
|
|
34
|
+
* A string with no sentence end is returned as one quote.
|
|
35
|
+
*/
|
|
36
|
+
export function splitLayoutSentences(raw) {
|
|
37
|
+
const text = raw.replace(/\s+/g, " ").trim();
|
|
38
|
+
if (!text)
|
|
39
|
+
return [];
|
|
40
|
+
const cuts = [];
|
|
41
|
+
for (let i = 0; i < text.length; i++) {
|
|
42
|
+
const ch = text[i];
|
|
43
|
+
if (!ch)
|
|
44
|
+
continue;
|
|
45
|
+
const cjk = CJK_SENTENCE_PUNCT.has(ch);
|
|
46
|
+
if (!cjk && !LATIN_SENTENCE_PUNCT.has(ch))
|
|
47
|
+
continue;
|
|
48
|
+
if (!cjk && isProtectedPeriod(text, i))
|
|
49
|
+
continue;
|
|
50
|
+
let end = i + 1;
|
|
51
|
+
while (end < text.length && isCloser(text[end] ?? ""))
|
|
52
|
+
end += 1;
|
|
53
|
+
if (!cjk) {
|
|
54
|
+
const next = text[end];
|
|
55
|
+
if (next !== undefined && !/\s/.test(next))
|
|
56
|
+
continue;
|
|
57
|
+
}
|
|
58
|
+
cuts.push(end);
|
|
59
|
+
}
|
|
60
|
+
if (cuts.length === 0)
|
|
61
|
+
return [text];
|
|
62
|
+
const out = [];
|
|
63
|
+
let start = 0;
|
|
64
|
+
for (const cut of cuts) {
|
|
65
|
+
const slice = text.slice(start, cut).trim();
|
|
66
|
+
if (slice)
|
|
67
|
+
out.push(slice);
|
|
68
|
+
start = cut;
|
|
69
|
+
while (start < text.length && /\s/.test(text[start] ?? ""))
|
|
70
|
+
start += 1;
|
|
71
|
+
}
|
|
72
|
+
const tail = text.slice(start).trim();
|
|
73
|
+
if (tail)
|
|
74
|
+
out.push(tail);
|
|
75
|
+
return out.length > 0 ? out : [text];
|
|
76
|
+
}
|
|
77
|
+
//# sourceMappingURL=sentences.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sentences.js","sourceRoot":"","sources":["../../src/translation/sentences.ts"],"names":[],"mappings":"AAAA,8EAA8E;AAC9E,MAAM,oBAAoB,GAAG,IAAI,GAAG,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC;AACtD,mFAAmF;AACnF,MAAM,kBAAkB,GAAG,IAAI,GAAG,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC;AAEpD,SAAS,QAAQ,CAAC,EAAU;IAC3B,OAAO,CACN,EAAE,KAAK,GAAG;QACV,EAAE,KAAK,GAAG;QACV,EAAE,KAAK,GAAG;QACV,EAAE,KAAK,GAAG;QACV,EAAE,KAAK,GAAG;QACV,EAAE,KAAK,GAAG;QACV,EAAE,KAAK,GAAG;QACV,EAAE,KAAK,GAAG,CACV,CAAC;AACH,CAAC;AAED,sFAAsF;AACtF,SAAS,iBAAiB,CAAC,IAAY,EAAE,KAAa;IACrD,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG;QAAE,OAAO,KAAK,CAAC;IACtC,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;IACpC,IAAI,oBAAoB,CAAC,IAAI,CAAC,MAAM,CAAC;QAAE,OAAO,IAAI,CAAC;IACnD,IAAI,wBAAwB,CAAC,IAAI,CAAC,MAAM,CAAC;QAAE,OAAO,IAAI,CAAC;IACvD,IAAI,qBAAqB,CAAC,IAAI,CAAC,MAAM,CAAC;QAAE,OAAO,IAAI,CAAC;IACpD,IAAI,qBAAqB,CAAC,IAAI,CAAC,MAAM,CAAC;QAAE,OAAO,IAAI,CAAC;IACpD,MAAM,IAAI,GAAG,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IAC3B,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;IAC7B,OAAO,OAAO,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AACpE,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,oBAAoB,CAAC,GAAW;IAC/C,MAAM,IAAI,GAAG,GAAG,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;IAC7C,IAAI,CAAC,IAAI;QAAE,OAAO,EAAE,CAAC;IACrB,MAAM,IAAI,GAAa,EAAE,CAAC;IAC1B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACtC,MAAM,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;QACnB,IAAI,CAAC,EAAE;YAAE,SAAS;QAClB,MAAM,GAAG,GAAG,kBAAkB,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QACvC,IAAI,CAAC,GAAG,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC,EAAE,CAAC;YAAE,SAAS;QACpD,IAAI,CAAC,GAAG,IAAI,iBAAiB,CAAC,IAAI,EAAE,CAAC,CAAC;YAAE,SAAS;QACjD,IAAI,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC;QAChB,OAAO,GAAG,GAAG,IAAI,CAAC,MAAM,IAAI,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC;YAAE,GAAG,IAAI,CAAC,CAAC;QAChE,IAAI,CAAC,GAAG,EAAE,CAAC;YACV,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;YACvB,IAAI,IAAI,KAAK,SAAS,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;gBAAE,SAAS;QACtD,CAAC;QACD,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAChB,CAAC;IACD,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,CAAC,IAAI,CAAC,CAAC;IACrC,MAAM,GAAG,GAAa,EAAE,CAAC;IACzB,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;QACxB,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;QAC5C,IAAI,KAAK;YAAE,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC3B,KAAK,GAAG,GAAG,CAAC;QACZ,OAAO,KAAK,GAAG,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;YAAE,KAAK,IAAI,CAAC,CAAC;IACxE,CAAC;IACD,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,CAAC;IACtC,IAAI,IAAI;QAAE,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACzB,OAAO,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;AACtC,CAAC"}
|
package/lib/vault.d.ts
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
export interface VaultSettings {
|
|
2
|
+
vault: string;
|
|
3
|
+
recentVaults: string[];
|
|
4
|
+
}
|
|
5
|
+
export interface VaultInfo {
|
|
6
|
+
path: string;
|
|
7
|
+
name: string;
|
|
8
|
+
scope: string;
|
|
9
|
+
recentVaults: {
|
|
10
|
+
path: string;
|
|
11
|
+
name: string;
|
|
12
|
+
}[];
|
|
13
|
+
canPick: boolean;
|
|
14
|
+
}
|
|
15
|
+
/** Source identity, not an authorization token. Old pages must never address a newly selected vault. */
|
|
16
|
+
export declare function vaultScope(vault: string): string;
|
|
17
|
+
export declare function vaultInfo(settings: VaultSettings, canPick: boolean): VaultInfo;
|
|
18
|
+
/** Match Agentero CLI's existing-vault markers; selection never initializes a directory. */
|
|
19
|
+
export declare function validateVault(input: string): Promise<string>;
|
|
20
|
+
/** Validate first and publish through DSH's durable config writer. A failed write leaves the old vault intact. */
|
|
21
|
+
export declare function selectVault(settings: VaultSettings, input: string, persist: (next: VaultSettings) => Promise<void>): Promise<VaultSettings>;
|
package/lib/vault.js
ADDED
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
import { createHash } from 'node:crypto';
|
|
2
|
+
import { realpath, stat } from 'node:fs/promises';
|
|
3
|
+
import * as path from 'node:path';
|
|
4
|
+
function pathKey(value) {
|
|
5
|
+
const normalized = path.normalize(value);
|
|
6
|
+
return process.platform === 'win32' ? normalized.toLowerCase() : normalized;
|
|
7
|
+
}
|
|
8
|
+
/** Source identity, not an authorization token. Old pages must never address a newly selected vault. */
|
|
9
|
+
export function vaultScope(vault) {
|
|
10
|
+
return createHash('sha256').update(vault === '' ? '' : pathKey(path.resolve(vault))).digest('hex');
|
|
11
|
+
}
|
|
12
|
+
export function vaultInfo(settings, canPick) {
|
|
13
|
+
const seen = new Set();
|
|
14
|
+
const recentVaults = [settings.vault, ...settings.recentVaults]
|
|
15
|
+
.filter((value) => {
|
|
16
|
+
if (value === '' || seen.has(pathKey(value)))
|
|
17
|
+
return false;
|
|
18
|
+
seen.add(pathKey(value));
|
|
19
|
+
return true;
|
|
20
|
+
})
|
|
21
|
+
.slice(0, 8)
|
|
22
|
+
.map(value => ({ path: value, name: path.basename(path.normalize(value)) || value }));
|
|
23
|
+
return {
|
|
24
|
+
path: settings.vault,
|
|
25
|
+
name: settings.vault === '' ? '' : path.basename(path.normalize(settings.vault)) || settings.vault,
|
|
26
|
+
scope: vaultScope(settings.vault),
|
|
27
|
+
recentVaults,
|
|
28
|
+
canPick,
|
|
29
|
+
};
|
|
30
|
+
}
|
|
31
|
+
async function isType(filename, kind) {
|
|
32
|
+
try {
|
|
33
|
+
const entry = await stat(filename);
|
|
34
|
+
return kind === 'file' ? entry.isFile() : entry.isDirectory();
|
|
35
|
+
}
|
|
36
|
+
catch {
|
|
37
|
+
return false;
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
/** Match Agentero CLI's existing-vault markers; selection never initializes a directory. */
|
|
41
|
+
export async function validateVault(input) {
|
|
42
|
+
const value = input.trim();
|
|
43
|
+
if (/[\u0000-\u001f]/.test(value) || !path.isAbsolute(value)
|
|
44
|
+
|| (process.platform === 'win32' && path.parse(value).root.length < 3))
|
|
45
|
+
throw new Error('invalid vault');
|
|
46
|
+
let root;
|
|
47
|
+
try {
|
|
48
|
+
root = await realpath(value);
|
|
49
|
+
}
|
|
50
|
+
catch {
|
|
51
|
+
throw new Error('invalid vault');
|
|
52
|
+
}
|
|
53
|
+
if (!await isType(root, 'directory'))
|
|
54
|
+
throw new Error('invalid vault');
|
|
55
|
+
if (await isType(path.join(root, '.agentero', 'catalog.sqlite'), 'file'))
|
|
56
|
+
return root;
|
|
57
|
+
const markers = await Promise.all(['.agentero', 'papers', 'notes'].map(name => isType(path.join(root, name), 'directory')));
|
|
58
|
+
if (markers.every(Boolean))
|
|
59
|
+
return root;
|
|
60
|
+
throw new Error('invalid vault');
|
|
61
|
+
}
|
|
62
|
+
/** Validate first and publish through DSH's durable config writer. A failed write leaves the old vault intact. */
|
|
63
|
+
export async function selectVault(settings, input, persist) {
|
|
64
|
+
const vault = await validateVault(input);
|
|
65
|
+
const next = { vault, recentVaults: vaultInfo({ vault, recentVaults: [settings.vault, ...settings.recentVaults] }, false).recentVaults.map(item => item.path) };
|
|
66
|
+
await persist(next);
|
|
67
|
+
return next;
|
|
68
|
+
}
|
|
69
|
+
//# sourceMappingURL=vault.js.map
|
package/lib/vault.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"vault.js","sourceRoot":"","sources":["../src/vault.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AACxC,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAA;AACjD,OAAO,KAAK,IAAI,MAAM,WAAW,CAAA;AAejC,SAAS,OAAO,CAAC,KAAa;IAC5B,MAAM,UAAU,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAA;IACxC,OAAO,OAAO,CAAC,QAAQ,KAAK,OAAO,CAAC,CAAC,CAAC,UAAU,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,UAAU,CAAA;AAC7E,CAAC;AAED,wGAAwG;AACxG,MAAM,UAAU,UAAU,CAAC,KAAa;IACtC,OAAO,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,KAAK,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;AACpG,CAAC;AAED,MAAM,UAAU,SAAS,CAAC,QAAuB,EAAE,OAAgB;IACjE,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAA;IAC9B,MAAM,YAAY,GAAG,CAAC,QAAQ,CAAC,KAAK,EAAE,GAAG,QAAQ,CAAC,YAAY,CAAC;SAC5D,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE;QAChB,IAAI,KAAK,KAAK,EAAE,IAAI,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;YAAE,OAAO,KAAK,CAAA;QAC1D,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAA;QACxB,OAAO,IAAI,CAAA;IACb,CAAC,CAAC;SACD,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC;SACX,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,IAAI,KAAK,EAAE,CAAC,CAAC,CAAA;IACvF,OAAO;QACL,IAAI,EAAE,QAAQ,CAAC,KAAK;QACpB,IAAI,EAAE,QAAQ,CAAC,KAAK,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,IAAI,QAAQ,CAAC,KAAK;QAClG,KAAK,EAAE,UAAU,CAAC,QAAQ,CAAC,KAAK,CAAC;QACjC,YAAY;QACZ,OAAO;KACR,CAAA;AACH,CAAC;AAED,KAAK,UAAU,MAAM,CAAC,QAAgB,EAAE,IAA0B;IAChE,IAAI,CAAC;QACH,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,CAAA;QAClC,OAAO,IAAI,KAAK,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,WAAW,EAAE,CAAA;IAC/D,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAA;IACd,CAAC;AACH,CAAC;AAED,4FAA4F;AAC5F,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,KAAa;IAC/C,MAAM,KAAK,GAAG,KAAK,CAAC,IAAI,EAAE,CAAA;IAC1B,IAAI,iBAAiB,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC;WACvD,CAAC,OAAO,CAAC,QAAQ,KAAK,OAAO,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,eAAe,CAAC,CAAA;IAC1G,IAAI,IAAY,CAAA;IAChB,IAAI,CAAC;QAAC,IAAI,GAAG,MAAM,QAAQ,CAAC,KAAK,CAAC,CAAA;IAAC,CAAC;IAAC,MAAM,CAAC;QAAC,MAAM,IAAI,KAAK,CAAC,eAAe,CAAC,CAAA;IAAC,CAAC;IAC/E,IAAI,CAAC,MAAM,MAAM,CAAC,IAAI,EAAE,WAAW,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,eAAe,CAAC,CAAA;IACtE,IAAI,MAAM,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,WAAW,EAAE,gBAAgB,CAAC,EAAE,MAAM,CAAC;QAAE,OAAO,IAAI,CAAA;IACrF,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,CAAC,WAAW,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,WAAW,CAAC,CAAC,CAAC,CAAA;IAC3H,IAAI,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC;QAAE,OAAO,IAAI,CAAA;IACvC,MAAM,IAAI,KAAK,CAAC,eAAe,CAAC,CAAA;AAClC,CAAC;AAED,kHAAkH;AAClH,MAAM,CAAC,KAAK,UAAU,WAAW,CAC/B,QAAuB,EACvB,KAAa,EACb,OAA+C;IAE/C,MAAM,KAAK,GAAG,MAAM,aAAa,CAAC,KAAK,CAAC,CAAA;IACxC,MAAM,IAAI,GAAG,EAAE,KAAK,EAAE,YAAY,EAAE,SAAS,CAAC,EAAE,KAAK,EAAE,YAAY,EAAE,CAAC,QAAQ,CAAC,KAAK,EAAE,GAAG,QAAQ,CAAC,YAAY,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAA;IAC/J,MAAM,OAAO,CAAC,IAAI,CAAC,CAAA;IACnB,OAAO,IAAI,CAAA;AACb,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,47 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@poco-ai/agentero-dsh-host",
|
|
3
|
-
"version": "0.
|
|
4
|
-
"
|
|
5
|
-
|
|
3
|
+
"version": "0.1.1",
|
|
4
|
+
"publishConfig": {
|
|
5
|
+
"access": "public"
|
|
6
|
+
},
|
|
7
|
+
"description": "Agentero host plugin for DeepSeek Harness",
|
|
8
|
+
"type": "module",
|
|
9
|
+
"main": "./lib/index.js",
|
|
10
|
+
"types": "./lib/index.d.ts",
|
|
11
|
+
"exports": {
|
|
12
|
+
".": {
|
|
13
|
+
"types": "./lib/index.d.ts",
|
|
14
|
+
"default": "./lib/index.js"
|
|
15
|
+
},
|
|
16
|
+
"./client": {
|
|
17
|
+
"types": "./lib/client/index.d.ts",
|
|
18
|
+
"default": "./lib/client.js"
|
|
19
|
+
},
|
|
20
|
+
"./package.json": "./package.json"
|
|
21
|
+
},
|
|
22
|
+
"files": [
|
|
23
|
+
"lib",
|
|
24
|
+
"src/translation/MOTIF-LICENSE.txt"
|
|
25
|
+
],
|
|
26
|
+
"dsh": {
|
|
27
|
+
"client": {
|
|
28
|
+
"platform": "web",
|
|
29
|
+
"inject": [
|
|
30
|
+
"@deepseek-ai/dsh-client-locale",
|
|
31
|
+
"@deepseek-ai/dsh-client-ui-settings"
|
|
32
|
+
]
|
|
33
|
+
}
|
|
34
|
+
},
|
|
35
|
+
"dependencies": {
|
|
36
|
+
"@embedpdf/pdfium": "2.14.4",
|
|
37
|
+
"class-variance-authority": "^0.7.1",
|
|
38
|
+
"clsx": "^2.1.1",
|
|
39
|
+
"lucide-react": "^0.554.0",
|
|
40
|
+
"pdf-lib": "1.17.1",
|
|
41
|
+
"radix-ui": "^1.4.3",
|
|
42
|
+
"tailwind-merge": "^3.3.1"
|
|
43
|
+
},
|
|
44
|
+
"peerDependencies": {
|
|
45
|
+
"@deepseek-ai/cordis": "~4.0.5"
|
|
46
|
+
}
|
|
6
47
|
}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 poco-ai
|
|
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.
|
package/README.md
DELETED