@chozzz/vargos 2.1.0 → 3.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/dist/.templates/cron/daily-agent-prompt-refinement.md +33 -0
- package/dist/.templates/{vargos/workspace → workspace}/AGENTS.md +2 -18
- package/dist/boot.d.ts +2 -0
- package/dist/boot.d.ts.map +1 -0
- package/dist/boot.js +114 -0
- package/dist/boot.js.map +1 -0
- package/dist/cli/channels.d.ts +3 -2
- package/dist/cli/channels.d.ts.map +1 -1
- package/dist/cli/channels.js +1 -1
- package/dist/cli/channels.js.map +1 -1
- package/dist/cli/onboard.js +1 -1
- package/dist/cli/onboard.js.map +1 -1
- package/dist/cli.js +40 -8
- package/dist/cli.js.map +1 -1
- package/dist/edge/webhooks/index.js +1 -1
- package/dist/edge/webhooks/index.js.map +1 -1
- package/dist/gateway/bus.d.ts +2 -0
- package/dist/gateway/bus.d.ts.map +1 -1
- package/dist/gateway/emitter.d.ts +10 -0
- package/dist/gateway/emitter.d.ts.map +1 -1
- package/dist/gateway/emitter.js +48 -3
- package/dist/gateway/emitter.js.map +1 -1
- package/dist/gateway/events.d.ts +26 -55
- package/dist/gateway/events.d.ts.map +1 -1
- package/dist/gateway/tcp-server.js +3 -0
- package/dist/gateway/tcp-server.js.map +1 -1
- package/dist/index.js +44 -71
- package/dist/index.js.map +1 -1
- package/dist/lib/{glob.d.ts → glob-match.d.ts} +1 -1
- package/dist/lib/glob-match.d.ts.map +1 -0
- package/dist/lib/{glob.js → glob-match.js} +1 -1
- package/dist/lib/glob-match.js.map +1 -0
- package/dist/lib/media.js +1 -1
- package/dist/lib/media.js.map +1 -1
- package/dist/lib/migrate.d.ts +38 -0
- package/dist/lib/migrate.d.ts.map +1 -0
- package/dist/lib/migrate.js +80 -0
- package/dist/lib/migrate.js.map +1 -0
- package/dist/lib/mime.d.ts +10 -3
- package/dist/lib/mime.d.ts.map +1 -1
- package/dist/lib/mime.js +48 -67
- package/dist/lib/mime.js.map +1 -1
- package/dist/lib/{subagent.d.ts → session-key.d.ts} +1 -1
- package/dist/lib/session-key.d.ts.map +1 -0
- package/dist/lib/{subagent.js → session-key.js} +1 -1
- package/dist/lib/session-key.js.map +1 -0
- package/dist/lib/templates.d.ts +18 -2
- package/dist/lib/templates.d.ts.map +1 -1
- package/dist/lib/templates.js +57 -21
- package/dist/lib/templates.js.map +1 -1
- package/dist/scripts/migrate.d.ts +2 -0
- package/dist/scripts/migrate.d.ts.map +1 -0
- package/dist/scripts/migrate.js +7 -0
- package/dist/scripts/migrate.js.map +1 -0
- package/dist/services/agent/directives.d.ts +1 -1
- package/dist/services/agent/directives.d.ts.map +1 -1
- package/dist/{lib → services/agent}/error-store.d.ts +1 -1
- package/dist/services/agent/error-store.d.ts.map +1 -0
- package/dist/{lib → services/agent}/error-store.js +2 -2
- package/dist/services/agent/error-store.js.map +1 -0
- package/dist/services/agent/index.d.ts +10 -16
- package/dist/services/agent/index.d.ts.map +1 -1
- package/dist/services/agent/index.js +44 -75
- package/dist/services/agent/index.js.map +1 -1
- package/dist/services/agent/persona.d.ts +1 -1
- package/dist/services/agent/persona.js +1 -1
- package/dist/services/agent/prompt-interpolate.d.ts +3 -3
- package/dist/services/agent/prompt-interpolate.js +10 -15
- package/dist/services/agent/prompt-interpolate.js.map +1 -1
- package/dist/services/agent/skills.d.ts.map +1 -0
- package/dist/services/agent/skills.js.map +1 -0
- package/dist/services/agent/tools.d.ts +1 -1
- package/dist/services/agent/tools.d.ts.map +1 -1
- package/dist/services/agent/tools.js +7 -2
- package/dist/services/agent/tools.js.map +1 -1
- package/dist/services/agent/{schema.d.ts → types.d.ts} +1 -1
- package/dist/services/agent/types.d.ts.map +1 -0
- package/dist/services/agent/{schema.js → types.js} +1 -1
- package/dist/services/agent/types.js.map +1 -0
- package/dist/services/channels/base-adapter.d.ts +22 -7
- package/dist/services/channels/base-adapter.d.ts.map +1 -1
- package/dist/services/channels/base-adapter.js +56 -73
- package/dist/services/channels/base-adapter.js.map +1 -1
- package/dist/services/channels/debounce.d.ts +1 -1
- package/dist/services/channels/debounce.d.ts.map +1 -1
- package/dist/services/channels/index.d.ts +1 -1
- package/dist/services/channels/index.d.ts.map +1 -1
- package/dist/services/channels/index.js +61 -18
- package/dist/services/channels/index.js.map +1 -1
- package/dist/services/channels/{media-extract.d.ts → media-paths.d.ts} +1 -1
- package/dist/services/channels/media-paths.d.ts.map +1 -0
- package/dist/services/channels/{media-extract.js → media-paths.js} +2 -2
- package/dist/services/channels/media-paths.js.map +1 -0
- package/dist/services/channels/pipeline.d.ts +2 -7
- package/dist/services/channels/pipeline.d.ts.map +1 -1
- package/dist/services/channels/pipeline.js +28 -47
- package/dist/services/channels/pipeline.js.map +1 -1
- package/dist/services/channels/provider-loader.d.ts +1 -1
- package/dist/services/channels/provider-loader.d.ts.map +1 -1
- package/dist/services/channels/providers/telegram/adapter.d.ts +5 -5
- package/dist/services/channels/providers/telegram/adapter.d.ts.map +1 -1
- package/dist/services/channels/providers/telegram/adapter.js +4 -6
- package/dist/services/channels/providers/telegram/adapter.js.map +1 -1
- package/dist/services/channels/providers/telegram/index.d.ts +1 -1
- package/dist/services/channels/providers/telegram/index.d.ts.map +1 -1
- package/dist/services/channels/providers/telegram/index.js +1 -1
- package/dist/services/channels/providers/telegram/index.js.map +1 -1
- package/dist/services/channels/providers/telegram/normalizer.d.ts +1 -1
- package/dist/services/channels/providers/telegram/normalizer.d.ts.map +1 -1
- package/dist/services/channels/providers/telegram/normalizer.js +0 -2
- package/dist/services/channels/providers/telegram/normalizer.js.map +1 -1
- package/dist/services/channels/providers/whatsapp/adapter.d.ts +6 -5
- package/dist/services/channels/providers/whatsapp/adapter.d.ts.map +1 -1
- package/dist/services/channels/providers/whatsapp/adapter.js +35 -28
- package/dist/services/channels/providers/whatsapp/adapter.js.map +1 -1
- package/dist/services/channels/providers/whatsapp/index.d.ts +1 -1
- package/dist/services/channels/providers/whatsapp/index.d.ts.map +1 -1
- package/dist/services/channels/providers/whatsapp/index.js +1 -1
- package/dist/services/channels/providers/whatsapp/index.js.map +1 -1
- package/dist/services/channels/providers/whatsapp/normalizer.d.ts +2 -1
- package/dist/services/channels/providers/whatsapp/normalizer.d.ts.map +1 -1
- package/dist/services/channels/providers/whatsapp/normalizer.js +9 -3
- package/dist/services/channels/providers/whatsapp/normalizer.js.map +1 -1
- package/dist/services/channels/providers/whatsapp/session.d.ts.map +1 -1
- package/dist/services/channels/providers/whatsapp/session.js +6 -4
- package/dist/services/channels/providers/whatsapp/session.js.map +1 -1
- package/dist/services/channels/providers/whatsapp/types.d.ts +1 -0
- package/dist/services/channels/providers/whatsapp/types.d.ts.map +1 -1
- package/dist/services/channels/types.d.ts +68 -3
- package/dist/services/channels/types.d.ts.map +1 -1
- package/dist/services/channels/types.js +4 -0
- package/dist/services/channels/types.js.map +1 -1
- package/dist/services/config/schemas/agent.d.ts +1 -1
- package/dist/services/config/schemas/agent.js +1 -1
- package/dist/services/config/schemas/channels.d.ts +2 -0
- package/dist/services/config/schemas/channels.d.ts.map +1 -1
- package/dist/services/config/schemas/channels.js +2 -0
- package/dist/services/config/schemas/channels.js.map +1 -1
- package/dist/services/config/schemas/index.d.ts +3 -3
- package/dist/services/config/schemas/index.d.ts.map +1 -1
- package/dist/services/config/schemas/index.js +2 -2
- package/dist/services/config/schemas/index.js.map +1 -1
- package/dist/services/config/schemas/primitives.d.ts +0 -2
- package/dist/services/config/schemas/primitives.d.ts.map +1 -1
- package/dist/services/config/schemas/primitives.js +0 -1
- package/dist/services/config/schemas/primitives.js.map +1 -1
- package/dist/services/cron/heartbeat.d.ts.map +1 -0
- package/dist/services/cron/heartbeat.js.map +1 -0
- package/dist/services/cron/index.d.ts.map +1 -1
- package/dist/services/cron/index.js +3 -4
- package/dist/services/cron/index.js.map +1 -1
- package/dist/services/media/index.d.ts +1 -0
- package/dist/services/media/index.d.ts.map +1 -1
- package/dist/services/media/index.js +61 -5
- package/dist/services/media/index.js.map +1 -1
- package/dist/services/media/providers/anthropic.js +1 -1
- package/dist/services/media/providers/anthropic.js.map +1 -1
- package/dist/services/media/{extract-document.d.ts → providers/document.d.ts} +1 -1
- package/dist/services/media/providers/document.d.ts.map +1 -0
- package/dist/services/media/{extract-document.js → providers/document.js} +4 -4
- package/dist/services/media/providers/document.js.map +1 -0
- package/dist/services/media/providers/openai.d.ts.map +1 -1
- package/dist/services/media/providers/openai.js +5 -1
- package/dist/services/media/providers/openai.js.map +1 -1
- package/package.json +12 -16
- package/dist/lib/async-handlers.d.ts +0 -13
- package/dist/lib/async-handlers.d.ts.map +0 -1
- package/dist/lib/async-handlers.js +0 -6
- package/dist/lib/async-handlers.js.map +0 -1
- package/dist/lib/error-store.d.ts.map +0 -1
- package/dist/lib/error-store.js.map +0 -1
- package/dist/lib/glob.d.ts.map +0 -1
- package/dist/lib/glob.js.map +0 -1
- package/dist/lib/heartbeat.d.ts.map +0 -1
- package/dist/lib/heartbeat.js.map +0 -1
- package/dist/lib/media-transcribe.d.ts +0 -57
- package/dist/lib/media-transcribe.d.ts.map +0 -1
- package/dist/lib/media-transcribe.js +0 -98
- package/dist/lib/media-transcribe.js.map +0 -1
- package/dist/lib/safe-async.d.ts +0 -27
- package/dist/lib/safe-async.d.ts.map +0 -1
- package/dist/lib/safe-async.js +0 -38
- package/dist/lib/safe-async.js.map +0 -1
- package/dist/lib/skills.d.ts.map +0 -1
- package/dist/lib/skills.js.map +0 -1
- package/dist/lib/subagent.d.ts.map +0 -1
- package/dist/lib/subagent.js.map +0 -1
- package/dist/scripts/migrate-cron-sessions.d.ts +0 -10
- package/dist/scripts/migrate-cron-sessions.d.ts.map +0 -1
- package/dist/scripts/migrate-cron-sessions.js +0 -139
- package/dist/scripts/migrate-cron-sessions.js.map +0 -1
- package/dist/services/agent/schema.d.ts.map +0 -1
- package/dist/services/agent/schema.js.map +0 -1
- package/dist/services/channels/contracts.d.ts +0 -75
- package/dist/services/channels/contracts.d.ts.map +0 -1
- package/dist/services/channels/contracts.js +0 -6
- package/dist/services/channels/contracts.js.map +0 -1
- package/dist/services/channels/media-extract.d.ts.map +0 -1
- package/dist/services/channels/media-extract.js.map +0 -1
- package/dist/services/media/extract-document.d.ts.map +0 -1
- package/dist/services/media/extract-document.js.map +0 -1
- /package/dist/.templates/{vargos/agent → agent}/extensions/.gitkeep +0 -0
- /package/dist/.templates/{vargos/agent → agent}/mcp.json +0 -0
- /package/dist/.templates/{vargos/agent → agent}/skills/skill-creator/SKILL.md +0 -0
- /package/dist/.templates/{vargos/agent → agent}/skills/token-capture/SKILL.md +0 -0
- /package/dist/.templates/{vargos/agent → agent}/skills/token-capture/scripts/capture-bearer-token.sh +0 -0
- /package/dist/.templates/{vargos/agents → agents}/README +0 -0
- /package/dist/.templates/{vargos/agents → agents}/default.md +0 -0
- /package/dist/.templates/{vargos/agents → agents}/subagent.md +0 -0
- /package/dist/.templates/{vargos/config.json → config.json} +0 -0
- /package/dist/.templates/{vargos/cron → cron}/heartbeat.md +0 -0
- /package/dist/.templates/{vargos/workspace → workspace}/HEARTBEAT.md +0 -0
- /package/dist/.templates/{vargos/workspace → workspace}/MEMORY.md +0 -0
- /package/dist/.templates/{vargos/workspace → workspace}/SOUL.md +0 -0
- /package/dist/.templates/{vargos/workspace → workspace}/TOOLS.md +0 -0
- /package/dist/{lib → services/agent}/skills.d.ts +0 -0
- /package/dist/{lib → services/agent}/skills.js +0 -0
- /package/dist/{lib → services/cron}/heartbeat.d.ts +0 -0
- /package/dist/{lib → services/cron}/heartbeat.js +0 -0
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Run-once data migrations. Migration modules live in `.migrations/` (compiled to
|
|
3
|
+
* `dist/.migrations/`), each a default-exported { id, description, run }. Applied ids
|
|
4
|
+
* are tracked in `~/.vargos/.migrations.json`, so each runs exactly once — on boot
|
|
5
|
+
* (automatic) or via `vargos migrate` / `pnpm migrate`.
|
|
6
|
+
*
|
|
7
|
+
* To add one: drop `NNN-name.ts` into `.migrations/`. Order is filename order.
|
|
8
|
+
*/
|
|
9
|
+
import { promises as fs, existsSync } from 'node:fs';
|
|
10
|
+
import path from 'node:path';
|
|
11
|
+
import { fileURLToPath, pathToFileURL } from 'node:url';
|
|
12
|
+
import { getDataPaths } from './paths.js';
|
|
13
|
+
/** Walk up to locate the `.migrations/` dir — repo root in dev, `dist/` in prod. */
|
|
14
|
+
function findMigrationsRoot() {
|
|
15
|
+
let dir = path.dirname(fileURLToPath(import.meta.url));
|
|
16
|
+
while (dir !== path.dirname(dir)) {
|
|
17
|
+
const candidate = path.join(dir, '.migrations');
|
|
18
|
+
if (existsSync(candidate))
|
|
19
|
+
return candidate;
|
|
20
|
+
dir = path.dirname(dir);
|
|
21
|
+
}
|
|
22
|
+
return null;
|
|
23
|
+
}
|
|
24
|
+
/** Load migration modules from a directory, sorted by filename. */
|
|
25
|
+
async function loadMigrations(root) {
|
|
26
|
+
const files = (await fs.readdir(root))
|
|
27
|
+
.filter(f => /^\d.*\.(js|ts)$/.test(f) && !f.endsWith('.d.ts'))
|
|
28
|
+
.sort();
|
|
29
|
+
const migrations = [];
|
|
30
|
+
for (const file of files) {
|
|
31
|
+
const mod = await import(pathToFileURL(path.join(root, file)).href);
|
|
32
|
+
if (mod.default)
|
|
33
|
+
migrations.push(mod.default);
|
|
34
|
+
}
|
|
35
|
+
return migrations;
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Apply pending migrations in order, recording each id on success. Stops on the first
|
|
39
|
+
* failure so ordering is preserved (the failed one retries next run). Pure core — the
|
|
40
|
+
* ledger file and migration list are injected, so it's directly testable.
|
|
41
|
+
*/
|
|
42
|
+
export async function applyMigrations(migrations, ledgerFile, ctx, opts = {}) {
|
|
43
|
+
const ledger = await fs.readFile(ledgerFile, 'utf-8')
|
|
44
|
+
.then(c => JSON.parse(c))
|
|
45
|
+
.catch(() => ({ applied: [] }));
|
|
46
|
+
const done = new Set(ledger.applied);
|
|
47
|
+
const pending = migrations.filter(m => !done.has(m.id));
|
|
48
|
+
const justApplied = [];
|
|
49
|
+
for (const m of pending) {
|
|
50
|
+
if (opts.dryRun) {
|
|
51
|
+
ctx.log.info(`[dry-run] would run ${m.id}: ${m.description}`);
|
|
52
|
+
continue;
|
|
53
|
+
}
|
|
54
|
+
try {
|
|
55
|
+
ctx.log.info(`running migration ${m.id}: ${m.description}`);
|
|
56
|
+
await m.run(ctx);
|
|
57
|
+
done.add(m.id);
|
|
58
|
+
await fs.mkdir(path.dirname(ledgerFile), { recursive: true });
|
|
59
|
+
await fs.writeFile(ledgerFile, JSON.stringify({ applied: [...done] }, null, 2));
|
|
60
|
+
justApplied.push(m.id);
|
|
61
|
+
ctx.log.info(`✅ migration ${m.id} applied`);
|
|
62
|
+
}
|
|
63
|
+
catch (err) {
|
|
64
|
+
ctx.log.warn(`migration ${m.id} failed (retries next run): ${err instanceof Error ? err.message : String(err)}`);
|
|
65
|
+
break;
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
return { applied: justApplied, pending: pending.map(m => m.id) };
|
|
69
|
+
}
|
|
70
|
+
/** Discover and run all pending migrations. Safe to call on every boot. */
|
|
71
|
+
export async function runMigrations(log, opts = {}) {
|
|
72
|
+
const root = findMigrationsRoot();
|
|
73
|
+
if (!root)
|
|
74
|
+
return;
|
|
75
|
+
const paths = getDataPaths();
|
|
76
|
+
const ledgerFile = path.join(paths.dataDir, '.migrations.json');
|
|
77
|
+
const migrations = await loadMigrations(root);
|
|
78
|
+
await applyMigrations(migrations, ledgerFile, { paths, log }, opts);
|
|
79
|
+
}
|
|
80
|
+
//# sourceMappingURL=migrate.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"migrate.js","sourceRoot":"","sources":["../../lib/migrate.ts"],"names":[],"mappings":"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"}
|
package/dist/lib/mime.d.ts
CHANGED
|
@@ -1,6 +1,13 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* MIME
|
|
3
|
-
* Simple implementation based on magic numbers
|
|
2
|
+
* MIME ↔ file-extension maps and helpers. Pure data — no I/O, no domain imports.
|
|
4
3
|
*/
|
|
5
|
-
export declare
|
|
4
|
+
export declare const WHISPER_EXTS: Set<string>;
|
|
5
|
+
export declare const MIME_TO_AUDIO_EXT: Record<string, string>;
|
|
6
|
+
export declare const MIME_EXT: Record<string, string>;
|
|
7
|
+
export declare const MEDIA_TYPE_MIME_DEFAULTS: Record<string, string>;
|
|
8
|
+
export declare const EXT_TO_MIME: Record<string, string>;
|
|
9
|
+
/** Get file extension for a MIME type. */
|
|
10
|
+
export declare function extFromMime(mimeType: string): string;
|
|
11
|
+
/** Get MIME type from a file extension. */
|
|
12
|
+
export declare function getMimeTypeFromExt(ext: string): string;
|
|
6
13
|
//# sourceMappingURL=mime.d.ts.map
|
package/dist/lib/mime.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mime.d.ts","sourceRoot":"","sources":["../../lib/mime.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"mime.d.ts","sourceRoot":"","sources":["../../lib/mime.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,eAAO,MAAM,YAAY,aAAgG,CAAC;AAG1H,eAAO,MAAM,iBAAiB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAIpD,CAAC;AAGF,eAAO,MAAM,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAY3C,CAAC;AAGF,eAAO,MAAM,wBAAwB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAK3D,CAAC;AAGF,eAAO,MAAM,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAS9C,CAAC;AAEF,0CAA0C;AAC1C,wBAAgB,WAAW,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAEpD;AAED,2CAA2C;AAC3C,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAEtD"}
|
package/dist/lib/mime.js
CHANGED
|
@@ -1,71 +1,52 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* MIME
|
|
3
|
-
* Simple implementation based on magic numbers
|
|
2
|
+
* MIME ↔ file-extension maps and helpers. Pure data — no I/O, no domain imports.
|
|
4
3
|
*/
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
try {
|
|
53
|
-
JSON.parse(textContent.slice(0, textContent.indexOf('\n')) || textContent);
|
|
54
|
-
return 'application/json';
|
|
55
|
-
}
|
|
56
|
-
catch {
|
|
57
|
-
// Not valid JSON
|
|
58
|
-
}
|
|
59
|
-
}
|
|
60
|
-
// Check if mostly printable (text)
|
|
61
|
-
const printable = buffer.slice(0, Math.min(100, buffer.length)).toString('utf-8');
|
|
62
|
-
const nonPrintable = [...printable].filter(c => {
|
|
63
|
-
const code = c.charCodeAt(0);
|
|
64
|
-
return code < 32 && code !== 9 && code !== 10 && code !== 13;
|
|
65
|
-
}).length;
|
|
66
|
-
if (nonPrintable === 0) {
|
|
67
|
-
return 'text/plain';
|
|
68
|
-
}
|
|
69
|
-
return 'application/octet-stream';
|
|
4
|
+
// Supported audio extensions for Whisper API
|
|
5
|
+
export const WHISPER_EXTS = new Set(['.flac', '.m4a', '.mp3', '.mp4', '.mpeg', '.mpga', '.oga', '.ogg', '.wav', '.webm']);
|
|
6
|
+
// MIME type to audio extension mapping
|
|
7
|
+
export const MIME_TO_AUDIO_EXT = {
|
|
8
|
+
'audio/ogg': '.ogg', 'audio/mpeg': '.mp3', 'audio/mp4': '.m4a',
|
|
9
|
+
'audio/wav': '.wav', 'audio/webm': '.webm', 'audio/flac': '.flac',
|
|
10
|
+
'audio/x-m4a': '.m4a', 'audio/mp3': '.mp3',
|
|
11
|
+
};
|
|
12
|
+
// MIME type to file extension mapping (includes images and video)
|
|
13
|
+
export const MIME_EXT = {
|
|
14
|
+
'image/jpeg': '.jpg',
|
|
15
|
+
'image/png': '.png',
|
|
16
|
+
'image/gif': '.gif',
|
|
17
|
+
'image/webp': '.webp',
|
|
18
|
+
'image/bmp': '.bmp',
|
|
19
|
+
'image/svg+xml': '.svg',
|
|
20
|
+
'audio/ogg': '.ogg',
|
|
21
|
+
'audio/mpeg': '.mp3',
|
|
22
|
+
'audio/mp4': '.m4a',
|
|
23
|
+
'video/mp4': '.mp4',
|
|
24
|
+
'application/pdf': '.pdf',
|
|
25
|
+
};
|
|
26
|
+
// Media type to default MIME type mapping (for fallback when MIME is unknown)
|
|
27
|
+
export const MEDIA_TYPE_MIME_DEFAULTS = {
|
|
28
|
+
image: 'image/jpeg',
|
|
29
|
+
audio: 'audio/ogg',
|
|
30
|
+
video: 'video/mp4',
|
|
31
|
+
document: 'application/pdf',
|
|
32
|
+
};
|
|
33
|
+
// Extension to MIME type mapping (inverse of MIME_EXT, includes common variations)
|
|
34
|
+
export const EXT_TO_MIME = {
|
|
35
|
+
'.jpg': 'image/jpeg', '.jpeg': 'image/jpeg',
|
|
36
|
+
'.png': 'image/png', '.gif': 'image/gif', '.webp': 'image/webp',
|
|
37
|
+
'.mp4': 'video/mp4', '.mp3': 'audio/mpeg',
|
|
38
|
+
'.ogg': 'audio/ogg', '.m4a': 'audio/mp4',
|
|
39
|
+
'.pdf': 'application/pdf',
|
|
40
|
+
'.txt': 'text/plain', '.md': 'text/markdown',
|
|
41
|
+
'.docx': 'application/vnd.openxmlformats-officedocument.wordprocessingml.document',
|
|
42
|
+
'.xlsx': 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet',
|
|
43
|
+
};
|
|
44
|
+
/** Get file extension for a MIME type. */
|
|
45
|
+
export function extFromMime(mimeType) {
|
|
46
|
+
return MIME_EXT[mimeType] || '.bin';
|
|
47
|
+
}
|
|
48
|
+
/** Get MIME type from a file extension. */
|
|
49
|
+
export function getMimeTypeFromExt(ext) {
|
|
50
|
+
return EXT_TO_MIME[ext.toLowerCase()] || 'image/jpeg';
|
|
70
51
|
}
|
|
71
52
|
//# sourceMappingURL=mime.js.map
|
package/dist/lib/mime.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mime.js","sourceRoot":"","sources":["../../lib/mime.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"mime.js","sourceRoot":"","sources":["../../lib/mime.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,6CAA6C;AAC7C,MAAM,CAAC,MAAM,YAAY,GAAG,IAAI,GAAG,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;AAE1H,uCAAuC;AACvC,MAAM,CAAC,MAAM,iBAAiB,GAA2B;IACvD,WAAW,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM;IAC9D,WAAW,EAAE,MAAM,EAAE,YAAY,EAAE,OAAO,EAAE,YAAY,EAAE,OAAO;IACjE,aAAa,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM;CAC3C,CAAC;AAEF,kEAAkE;AAClE,MAAM,CAAC,MAAM,QAAQ,GAA2B;IAC9C,YAAY,EAAE,MAAM;IACpB,WAAW,EAAE,MAAM;IACnB,WAAW,EAAE,MAAM;IACnB,YAAY,EAAE,OAAO;IACrB,WAAW,EAAE,MAAM;IACnB,eAAe,EAAE,MAAM;IACvB,WAAW,EAAE,MAAM;IACnB,YAAY,EAAE,MAAM;IACpB,WAAW,EAAE,MAAM;IACnB,WAAW,EAAE,MAAM;IACnB,iBAAiB,EAAE,MAAM;CAC1B,CAAC;AAEF,8EAA8E;AAC9E,MAAM,CAAC,MAAM,wBAAwB,GAA2B;IAC9D,KAAK,EAAE,YAAY;IACnB,KAAK,EAAE,WAAW;IAClB,KAAK,EAAE,WAAW;IAClB,QAAQ,EAAE,iBAAiB;CAC5B,CAAC;AAEF,mFAAmF;AACnF,MAAM,CAAC,MAAM,WAAW,GAA2B;IACjD,MAAM,EAAE,YAAY,EAAE,OAAO,EAAE,YAAY;IAC3C,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,WAAW,EAAE,OAAO,EAAE,YAAY;IAC/D,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,YAAY;IACzC,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,WAAW;IACxC,MAAM,EAAE,iBAAiB;IACzB,MAAM,EAAE,YAAY,EAAE,KAAK,EAAE,eAAe;IAC5C,OAAO,EAAE,yEAAyE;IAClF,OAAO,EAAE,mEAAmE;CAC7E,CAAC;AAEF,0CAA0C;AAC1C,MAAM,UAAU,WAAW,CAAC,QAAgB;IAC1C,OAAO,QAAQ,CAAC,QAAQ,CAAC,IAAI,MAAM,CAAC;AACtC,CAAC;AAED,2CAA2C;AAC3C,MAAM,UAAU,kBAAkB,CAAC,GAAW;IAC5C,OAAO,WAAW,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC,IAAI,YAAY,CAAC;AACxD,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"session-key.d.ts","sourceRoot":"","sources":["../../lib/session-key.ts"],"names":[],"mappings":"AAKA,wBAAgB,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAErD;AAED,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAExD;AAED;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAG5D;AAED,iEAAiE;AACjE,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAEtD;AAED,6EAA6E;AAC7E,wBAAgB,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAGlD;AASD,wBAAgB,eAAe,CAAC,GAAG,EAAE,MAAM,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,EAAE,EAAE,MAAM,CAAA;CAAE,CAGzE;AAED,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,MAAM,GAAG;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAG7F"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"session-key.js","sourceRoot":"","sources":["../../lib/session-key.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAE1C,MAAM,UAAU,cAAc,CAAC,MAAc;IAC3C,OAAO,QAAQ,MAAM,IAAI,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC;AACnE,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,MAAc;IAC9C,OAAO,WAAW,MAAM,IAAI,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC;AAC3C,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,kBAAkB,CAAC,SAAiB;IAClD,MAAM,OAAO,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;IAC/C,OAAO,GAAG,SAAS,aAAa,OAAO,EAAE,CAAC;AAC5C,CAAC;AAED,iEAAiE;AACjE,MAAM,UAAU,iBAAiB,CAAC,GAAW;IAC3C,OAAO,GAAG,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC;AACpC,CAAC;AAED,6EAA6E;AAC7E,MAAM,UAAU,cAAc,CAAC,GAAW;IACxC,MAAM,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;IACtC,OAAO,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;AAC9C,CAAC;AAED,wEAAwE;AACxE,SAAS,iBAAiB,CAAC,GAAW;IACpC,MAAM,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IAC7B,IAAI,GAAG,KAAK,CAAC,CAAC;QAAE,OAAO,EAAE,IAAI,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;IAC7C,OAAO,EAAE,IAAI,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC;AAC7D,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,GAAW;IACzC,MAAM,IAAI,GAAG,cAAc,CAAC,GAAG,CAAC,CAAC;IACjC,OAAO,iBAAiB,CAAC,IAAI,CAAC,CAAC;AACjC,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,MAAc;IAC/C,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,EAAE,MAAM,EAAE,GAAG,iBAAiB,CAAC,MAAM,CAAC,CAAC;IAChE,OAAO,MAAM,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;AAC7C,CAAC"}
|
package/dist/lib/templates.d.ts
CHANGED
|
@@ -1,8 +1,24 @@
|
|
|
1
|
-
/** Walk up from this module to locate `.templates
|
|
1
|
+
/** Walk up from this module to locate `.templates/`. Works in both dev and dist layouts. */
|
|
2
2
|
export declare function findTemplatesRoot(): string | null;
|
|
3
|
-
|
|
3
|
+
export interface TemplateFile {
|
|
4
|
+
/** POSIX path relative to the data dir, e.g. 'workspace/AGENTS.md'. */
|
|
5
|
+
rel: string;
|
|
6
|
+
src: string;
|
|
7
|
+
dest: string;
|
|
8
|
+
}
|
|
9
|
+
/**
|
|
10
|
+
* Seed the VARGOS data dir from `.templates/`. Copy-missing only — user edits are always
|
|
11
|
+
* preserved. Updating a file that already exists is opt-in via `vargos sync`.
|
|
12
|
+
*/
|
|
4
13
|
export declare function seedDataDir(logger: {
|
|
5
14
|
info: (s: string) => void;
|
|
6
15
|
warn: (s: string) => void;
|
|
7
16
|
}): Promise<void>;
|
|
17
|
+
/**
|
|
18
|
+
* Overridable bundled templates that exist on disk but differ — candidates for `vargos sync`.
|
|
19
|
+
* Scoped to OVERRIDABLE (AGENTS.md), so user-owned files are never offered for overwrite.
|
|
20
|
+
*/
|
|
21
|
+
export declare function collectTemplateConflicts(): Promise<TemplateFile[]>;
|
|
22
|
+
/** Overwrite the given dests from their bundled source (user confirms selection first). */
|
|
23
|
+
export declare function overrideTemplates(files: TemplateFile[]): Promise<void>;
|
|
8
24
|
//# sourceMappingURL=templates.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"templates.d.ts","sourceRoot":"","sources":["../../lib/templates.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"templates.d.ts","sourceRoot":"","sources":["../../lib/templates.ts"],"names":[],"mappings":"AAWA,4FAA4F;AAC5F,wBAAgB,iBAAiB,IAAI,MAAM,GAAG,IAAI,CAQjD;AAED,MAAM,WAAW,YAAY;IAC3B,uEAAuE;IACvE,GAAG,EAAE,MAAM,CAAC;IACZ,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;CACd;AA2BD;;;GAGG;AACH,wBAAsB,WAAW,CAC/B,MAAM,EAAE;IAAE,IAAI,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;IAAC,IAAI,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK,IAAI,CAAA;CAAE,GAC/D,OAAO,CAAC,IAAI,CAAC,CAWf;AAED;;;GAGG;AACH,wBAAsB,wBAAwB,IAAI,OAAO,CAAC,YAAY,EAAE,CAAC,CAQxE;AAED,2FAA2F;AAC3F,wBAAsB,iBAAiB,CAAC,KAAK,EAAE,YAAY,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAE5E"}
|
package/dist/lib/templates.js
CHANGED
|
@@ -2,46 +2,82 @@ import { promises as fs, existsSync } from 'node:fs';
|
|
|
2
2
|
import path from 'node:path';
|
|
3
3
|
import { fileURLToPath } from 'node:url';
|
|
4
4
|
import { getDataPaths } from './paths.js';
|
|
5
|
-
|
|
5
|
+
// Seeding is always copy-missing (user edits preserved). These files are additionally
|
|
6
|
+
// offered for update by `vargos sync` when the bundled version changes — the user picks
|
|
7
|
+
// which to overwrite. Scoped to AGENTS.md only; SOUL/TOOLS/MEMORY are never touched.
|
|
8
|
+
// Paths are POSIX-relative to the data dir.
|
|
9
|
+
const OVERRIDABLE = new Set(['workspace/AGENTS.md']);
|
|
10
|
+
/** Walk up from this module to locate `.templates/`. Works in both dev and dist layouts. */
|
|
6
11
|
export function findTemplatesRoot() {
|
|
7
12
|
let dir = path.dirname(fileURLToPath(import.meta.url));
|
|
8
13
|
while (dir !== path.dirname(dir)) {
|
|
9
|
-
const candidate = path.join(dir, '.templates'
|
|
14
|
+
const candidate = path.join(dir, '.templates');
|
|
10
15
|
if (existsSync(candidate))
|
|
11
16
|
return candidate;
|
|
12
17
|
dir = path.dirname(dir);
|
|
13
18
|
}
|
|
14
19
|
return null;
|
|
15
20
|
}
|
|
16
|
-
/**
|
|
17
|
-
async function
|
|
18
|
-
|
|
21
|
+
/** Recursively list every bundled template file. */
|
|
22
|
+
async function walkTemplates(srcDir, destDir, rel = '') {
|
|
23
|
+
const out = [];
|
|
19
24
|
for (const entry of await fs.readdir(srcDir, { withFileTypes: true })) {
|
|
20
25
|
const src = path.join(srcDir, entry.name);
|
|
21
26
|
const dest = path.join(destDir, entry.name);
|
|
22
|
-
const
|
|
23
|
-
if (entry.isDirectory())
|
|
24
|
-
await
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
await fs.copyFile(src, dest);
|
|
28
|
-
logger.info(`seeded ${dest}`);
|
|
29
|
-
}
|
|
27
|
+
const childRel = rel ? `${rel}/${entry.name}` : entry.name;
|
|
28
|
+
if (entry.isDirectory())
|
|
29
|
+
out.push(...await walkTemplates(src, dest, childRel));
|
|
30
|
+
else
|
|
31
|
+
out.push({ rel: childRel, src, dest });
|
|
30
32
|
}
|
|
33
|
+
return out;
|
|
31
34
|
}
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
35
|
+
/** True when dest exists and its bytes differ from the bundled source. */
|
|
36
|
+
async function differs(src, dest) {
|
|
37
|
+
if (!existsSync(dest))
|
|
38
|
+
return false;
|
|
39
|
+
const [a, b] = await Promise.all([fs.readFile(src), fs.readFile(dest)]);
|
|
40
|
+
return !a.equals(b);
|
|
37
41
|
}
|
|
38
|
-
|
|
42
|
+
async function copy(file) {
|
|
43
|
+
await fs.mkdir(path.dirname(file.dest), { recursive: true });
|
|
44
|
+
await fs.copyFile(file.src, file.dest);
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Seed the VARGOS data dir from `.templates/`. Copy-missing only — user edits are always
|
|
48
|
+
* preserved. Updating a file that already exists is opt-in via `vargos sync`.
|
|
49
|
+
*/
|
|
39
50
|
export async function seedDataDir(logger) {
|
|
40
51
|
const root = findTemplatesRoot();
|
|
41
52
|
if (!root) {
|
|
42
|
-
logger.warn('.templates
|
|
53
|
+
logger.warn('.templates not found — skipping seed');
|
|
43
54
|
return;
|
|
44
55
|
}
|
|
45
|
-
await
|
|
56
|
+
for (const file of await walkTemplates(root, getDataPaths().dataDir)) {
|
|
57
|
+
if (existsSync(file.dest))
|
|
58
|
+
continue;
|
|
59
|
+
await copy(file);
|
|
60
|
+
logger.info(`seeded ${file.dest}`);
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* Overridable bundled templates that exist on disk but differ — candidates for `vargos sync`.
|
|
65
|
+
* Scoped to OVERRIDABLE (AGENTS.md), so user-owned files are never offered for overwrite.
|
|
66
|
+
*/
|
|
67
|
+
export async function collectTemplateConflicts() {
|
|
68
|
+
const root = findTemplatesRoot();
|
|
69
|
+
if (!root)
|
|
70
|
+
return [];
|
|
71
|
+
const conflicts = [];
|
|
72
|
+
for (const file of await walkTemplates(root, getDataPaths().dataDir)) {
|
|
73
|
+
if (OVERRIDABLE.has(file.rel) && await differs(file.src, file.dest))
|
|
74
|
+
conflicts.push(file);
|
|
75
|
+
}
|
|
76
|
+
return conflicts;
|
|
77
|
+
}
|
|
78
|
+
/** Overwrite the given dests from their bundled source (user confirms selection first). */
|
|
79
|
+
export async function overrideTemplates(files) {
|
|
80
|
+
for (const file of files)
|
|
81
|
+
await copy(file);
|
|
46
82
|
}
|
|
47
83
|
//# sourceMappingURL=templates.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"templates.js","sourceRoot":"","sources":["../../lib/templates.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,IAAI,EAAE,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrD,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAE1C,
|
|
1
|
+
{"version":3,"file":"templates.js","sourceRoot":"","sources":["../../lib/templates.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"migrate.d.ts","sourceRoot":"","sources":["../../scripts/migrate.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Run pending data migrations manually (also runs automatically on boot).
|
|
3
|
+
* Usage: pnpm migrate [--dry-run]
|
|
4
|
+
*/
|
|
5
|
+
import { runMigrations } from '../lib/migrate.js';
|
|
6
|
+
await runMigrations(console, { dryRun: process.argv.includes('--dry-run') });
|
|
7
|
+
//# sourceMappingURL=migrate.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"migrate.js","sourceRoot":"","sources":["../../scripts/migrate.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAElD,MAAM,aAAa,CAAC,OAAO,EAAE,EAAE,MAAM,EAAE,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC"}
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
* Directives must appear at the start of the message or after whitespace,
|
|
5
5
|
* not inside URLs or as partial word matches.
|
|
6
6
|
*/
|
|
7
|
-
import type { ThinkingLevel } from '@
|
|
7
|
+
import type { ThinkingLevel } from '@earendil-works/pi-agent-core';
|
|
8
8
|
export interface ParsedDirectives {
|
|
9
9
|
/** Message with all recognized directives stripped */
|
|
10
10
|
cleaned: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"directives.d.ts","sourceRoot":"","sources":["../../../services/agent/directives.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"directives.d.ts","sourceRoot":"","sources":["../../../services/agent/directives.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAC;AAEnE,MAAM,WAAW,gBAAgB;IAC/B,sDAAsD;IACtD,OAAO,EAAE,MAAM,CAAC;IAChB,aAAa,CAAC,EAAE,aAAa,CAAC;CAC/B;AASD,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,gBAAgB,CAwB9D"}
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
* Centralized error store — append-only JSONL at ~/.vargos/errors.jsonl
|
|
3
3
|
* Persists classified errors for pattern analysis and self-healing.
|
|
4
4
|
*/
|
|
5
|
-
import { type ErrorClass } from '
|
|
5
|
+
import { type ErrorClass } from '../../lib/error.js';
|
|
6
6
|
export interface ErrorRecord {
|
|
7
7
|
ts: string;
|
|
8
8
|
runId?: string;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"error-store.d.ts","sourceRoot":"","sources":["../../../services/agent/error-store.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAKH,OAAO,EAAgC,KAAK,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAEnF,MAAM,WAAW,WAAW;IAC1B,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,UAAU,GAAG,YAAY,GAAG,OAAO,CAAC;IAChD,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED,wBAAsB,WAAW,CAC/B,KAAK,EAAE,IAAI,CAAC,WAAW,EAAE,IAAI,GAAG,YAAY,CAAC,GAAG;IAAE,UAAU,CAAC,EAAE,UAAU,GAAG,YAAY,GAAG,OAAO,CAAA;CAAE,GACnG,OAAO,CAAC,IAAI,CAAC,CASf"}
|
|
@@ -4,8 +4,8 @@
|
|
|
4
4
|
*/
|
|
5
5
|
import { promises as fs } from 'node:fs';
|
|
6
6
|
import path from 'node:path';
|
|
7
|
-
import { getDataPaths } from '
|
|
8
|
-
import { sanitizeError, classifyError } from '
|
|
7
|
+
import { getDataPaths } from '../../lib/paths.js';
|
|
8
|
+
import { sanitizeError, classifyError } from '../../lib/error.js';
|
|
9
9
|
export async function appendError(entry) {
|
|
10
10
|
const full = {
|
|
11
11
|
ts: new Date().toISOString(),
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"error-store.js","sourceRoot":"","sources":["../../../services/agent/error-store.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,QAAQ,IAAI,EAAE,EAAE,MAAM,SAAS,CAAC;AACzC,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,aAAa,EAAE,aAAa,EAAmB,MAAM,oBAAoB,CAAC;AAanF,MAAM,CAAC,KAAK,UAAU,WAAW,CAC/B,KAAoG;IAEpG,MAAM,IAAI,GAAgB;QACxB,EAAE,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;QAC5B,UAAU,EAAE,KAAK,CAAC,UAAU,IAAI,aAAa,CAAC,KAAK,CAAC,OAAO,CAAC;QAC5D,GAAG,KAAK;QACR,OAAO,EAAE,aAAa,CAAC,KAAK,CAAC,OAAO,CAAC;KACtC,CAAC;IACF,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC,OAAO,EAAE,cAAc,CAAC,CAAC;IACnE,MAAM,EAAE,CAAC,UAAU,CAAC,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,IAAI,EAAE,OAAO,CAAC,CAAC;AACtE,CAAC"}
|
|
@@ -10,8 +10,8 @@
|
|
|
10
10
|
import type { Bus } from '../../gateway/bus.js';
|
|
11
11
|
import type { EventMap } from '../../gateway/events.js';
|
|
12
12
|
import type { AppConfig } from '../../services/config/index.js';
|
|
13
|
-
import type { AgentDeps } from './
|
|
14
|
-
import { SettingsManager, AuthStorage, ModelRegistry, DefaultResourceLoader, type AgentSession, type ToolDefinition } from '@
|
|
13
|
+
import type { AgentDeps } from './types.js';
|
|
14
|
+
import { SettingsManager, AuthStorage, ModelRegistry, DefaultResourceLoader, type AgentSession, type ToolDefinition } from '@earendil-works/pi-coding-agent';
|
|
15
15
|
export declare class AgentService {
|
|
16
16
|
protected bus: Bus;
|
|
17
17
|
protected config: AppConfig;
|
|
@@ -32,14 +32,11 @@ export declare class AgentService {
|
|
|
32
32
|
* Note: sessionKey is declared optional here because it's auto-injected by
|
|
33
33
|
* wrapEventAsToolDefinition() when the agent calls this as a tool. Direct callers
|
|
34
34
|
* (channels, cron, webhooks, TCP) still provide sessionKey via EventMap.
|
|
35
|
-
*
|
|
36
|
-
* Schema for bus event is different than runtime types AgentExecuteParams.
|
|
37
|
-
* e.g. metadata is not injected here on purpose.
|
|
38
35
|
*/
|
|
39
36
|
execute(params: EventMap['agent.execute']['params']): Promise<EventMap['agent.execute']['result']>;
|
|
40
37
|
/**
|
|
41
38
|
* agent.appendMessage — Append message to session JSONL without executing agent.
|
|
42
|
-
*
|
|
39
|
+
* Records inbound messages in session history (observe-only for non-whitelisted).
|
|
43
40
|
* Internal only — not exposed as an agent tool.
|
|
44
41
|
*/
|
|
45
42
|
appendMessage(params: EventMap['agent.appendMessage']['params']): Promise<void>;
|
|
@@ -49,12 +46,17 @@ export declare class AgentService {
|
|
|
49
46
|
status(_params: EventMap['agent.status']['params']): Promise<EventMap['agent.status']['result']>;
|
|
50
47
|
/**
|
|
51
48
|
* Get or create AgentSession for sessionKey.
|
|
49
|
+
* Uses SessionManager.continueRecent() to load the latest session file,
|
|
50
|
+
* preserving conversation history across restarts.
|
|
52
51
|
*/
|
|
53
|
-
protected getOrCreateSession(sessionKey: string,
|
|
52
|
+
protected getOrCreateSession(sessionKey: string, options?: {
|
|
53
|
+
cwd?: string;
|
|
54
|
+
model?: string;
|
|
55
|
+
}): Promise<AgentSession>;
|
|
54
56
|
/**
|
|
55
57
|
* Subscribe to PiAgent sessionsubscription - emit to bus for streaming + debug logging.
|
|
56
58
|
*/
|
|
57
|
-
protected subscribeToSessionEvents(session: AgentSession, sessionKey: string
|
|
59
|
+
protected subscribeToSessionEvents(session: AgentSession, sessionKey: string): void;
|
|
58
60
|
/**
|
|
59
61
|
* Create ResourceLoader. PiAgent's DefaultResourceLoader handles skills, themes, and
|
|
60
62
|
* prompt templates. We override systemPrompt with our Vargos bootstrap files.
|
|
@@ -86,14 +88,6 @@ export declare class AgentService {
|
|
|
86
88
|
* Validate model override if provided.
|
|
87
89
|
*/
|
|
88
90
|
private validateModel;
|
|
89
|
-
/**
|
|
90
|
-
* Build context variables for prompt interpolation from sessionKey and metadata.
|
|
91
|
-
*/
|
|
92
|
-
private buildPromptContext;
|
|
93
|
-
/**
|
|
94
|
-
* Collect directory paths in order: workspace first, then cwd if different.
|
|
95
|
-
*/
|
|
96
|
-
private collectBootstrapDirs;
|
|
97
91
|
/**
|
|
98
92
|
* Extract the final assistant message: text content + error (when stopReason === 'error').
|
|
99
93
|
* Pi SDK records inference failures (e.g. missing API key) as assistant messages with
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../services/agent/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAKH,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,sBAAsB,CAAC;AAChD,OAAO,KAAK,EAAE,QAAQ,EAAQ,MAAM,yBAAyB,CAAC;AAC9D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gCAAgC,CAAC;AAMhE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../services/agent/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAKH,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,sBAAsB,CAAC;AAChD,OAAO,KAAK,EAAE,QAAQ,EAAQ,MAAM,yBAAyB,CAAC;AAC9D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gCAAgC,CAAC;AAMhE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAM5C,OAAO,EAGL,eAAe,EACf,WAAW,EACX,aAAa,EACb,qBAAqB,EACrB,KAAK,YAAY,EACjB,KAAK,cAAc,EACpB,MAAM,iCAAiC,CAAC;AAiBzC,qBAAa,YAAY;IACvB,SAAS,CAAC,GAAG,EAAE,GAAG,CAAC;IACnB,SAAS,CAAC,MAAM,EAAE,SAAS,CAAC;IAC5B,SAAS,CAAC,QAAQ,4BAAmC;IACrD,OAAO,CAAC,UAAU,CAAqB;IAEvC,SAAS,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC3B,SAAS,CAAC,WAAW,EAAE,WAAW,CAAC;IACnC,SAAS,CAAC,aAAa,EAAE,aAAa,CAAC;IACvC,SAAS,CAAC,QAAQ,EAAE,eAAe,CAAC;gBAExB,IAAI,EAAE,SAAS;IAuC3B;;OAEG;IACG,KAAK;IAyBX;;;;;;OAMG;IAaG,OAAO,CAAC,MAAM,EAAE,QAAQ,CAAC,eAAe,CAAC,CAAC,QAAQ,CAAC,GAAG,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAC,QAAQ,CAAC,CAAC;IAuCxG;;;;OAIG;IAEG,aAAa,CAAC,MAAM,EAAE,QAAQ,CAAC,qBAAqB,CAAC,CAAC,QAAQ,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAmBrF;;OAEG;IAKG,MAAM,CAAC,OAAO,EAAE,QAAQ,CAAC,cAAc,CAAC,CAAC,QAAQ,CAAC,GAAG,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC,QAAQ,CAAC,CAAC;IAItG;;;;OAIG;cACa,kBAAkB,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE;QAAE,GAAG,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,YAAY,CAAC;IAmDzH;;OAEG;IACH,SAAS,CAAC,wBAAwB,CAAC,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,GAAG,IAAI;IAsEnF;;;OAGG;cACa,oBAAoB,CAAC,oBAAoB,CAAC,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,qBAAqB,CAAC;IAsBjH;;;;;OAKG;YACW,oBAAoB;IAQlC;;;;;;;OAOG;YACW,eAAe;IAsD7B;;;;OAIG;cACa,cAAc,CAAC,UAAU,EAAE,MAAM,EAAE,eAAe,CAAC,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC;IASzG;;OAEG;IACH,OAAO,CAAC,aAAa;IAUrB;;;;;OAKG;IACH,OAAO,CAAC,qBAAqB;IAuC7B,IAAI,IAAI,IAAI;CAMb;AAID,wBAAsB,IAAI,CAAC,GAAG,EAAE,GAAG,GAAG,OAAO,CAAC;IAAE,IAAI,IAAI,IAAI,CAAA;CAAE,CAAC,CAM9D"}
|