@plurnk/plurnk-service 0.44.0 → 0.46.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/.env.example +41 -24
- package/README.md +37 -18
- package/SPEC.md +34 -10
- package/dist/core/ChannelWrite.d.ts +4 -0
- package/dist/core/ChannelWrite.d.ts.map +1 -1
- package/dist/core/ChannelWrite.js +9 -0
- package/dist/core/ChannelWrite.js.map +1 -1
- package/dist/core/ChannelWrite.sql +69 -0
- package/dist/core/Engine.d.ts.map +1 -1
- package/dist/core/Engine.js +146 -103
- package/dist/core/Engine.js.map +1 -1
- package/dist/core/Engine.sql +307 -0
- package/dist/core/ExecutorRegistry.d.ts +4 -2
- package/dist/core/ExecutorRegistry.d.ts.map +1 -1
- package/dist/core/ExecutorRegistry.js +20 -5
- package/dist/core/ExecutorRegistry.js.map +1 -1
- package/dist/core/SchemeRegistry.d.ts +3 -0
- package/dist/core/SchemeRegistry.d.ts.map +1 -1
- package/dist/core/SchemeRegistry.js +37 -0
- package/dist/core/SchemeRegistry.js.map +1 -1
- package/dist/core/fork.d.ts.map +1 -1
- package/dist/core/fork.js +8 -1
- package/dist/core/fork.js.map +1 -1
- package/dist/core/fork.sql +50 -0
- package/dist/core/packet-wire.d.ts +1 -0
- package/dist/core/packet-wire.d.ts.map +1 -1
- package/dist/core/packet-wire.js +11 -0
- package/dist/core/packet-wire.js.map +1 -1
- package/dist/core/plugin-attribution.d.ts +5 -0
- package/dist/core/plugin-attribution.d.ts.map +1 -0
- package/dist/core/plugin-attribution.js +39 -0
- package/dist/core/plugin-attribution.js.map +1 -0
- package/dist/core/run-ops.sql +16 -0
- package/dist/core/scheme-types.d.ts +1 -0
- package/dist/core/scheme-types.d.ts.map +1 -1
- package/dist/core/session-settings.d.ts +1 -0
- package/dist/core/session-settings.d.ts.map +1 -1
- package/dist/core/session-settings.js +2 -1
- package/dist/core/session-settings.js.map +1 -1
- package/dist/schemes/Exec.d.ts +2 -1
- package/dist/schemes/Exec.d.ts.map +1 -1
- package/dist/schemes/Exec.js +39 -22
- package/dist/schemes/Exec.js.map +1 -1
- package/dist/schemes/File.d.ts.map +1 -1
- package/dist/schemes/File.js +27 -3
- package/dist/schemes/File.js.map +1 -1
- package/dist/schemes/Log.sql +37 -0
- package/dist/schemes/_entry-crud.sql +88 -0
- package/dist/schemes/_entry-find.sql +31 -0
- package/dist/schemes/_entry-graph.sql +60 -0
- package/dist/schemes/_entry-manifest.d.ts.map +1 -1
- package/dist/schemes/_entry-manifest.js +11 -3
- package/dist/schemes/_entry-manifest.js.map +1 -1
- package/dist/schemes/_entry-ops.sql +20 -0
- package/dist/schemes/_entry-semantic.d.ts.map +1 -1
- package/dist/schemes/_entry-semantic.js +14 -7
- package/dist/schemes/_entry-semantic.js.map +1 -1
- package/dist/schemes/_entry-semantic.sql +80 -0
- package/dist/schemes/exec-abort.d.ts +11 -0
- package/dist/schemes/exec-abort.d.ts.map +1 -0
- package/dist/schemes/exec-abort.js +23 -0
- package/dist/schemes/exec-abort.js.map +1 -0
- package/dist/schemes/exec-env.js +1 -1
- package/dist/schemes/exec-env.js.map +1 -1
- package/dist/server/Daemon.d.ts.map +1 -1
- package/dist/server/Daemon.js +162 -76
- package/dist/server/Daemon.js.map +1 -1
- package/dist/server/clientTurn.sql +10 -0
- package/dist/server/drain.sql +92 -0
- package/dist/server/dsl.d.ts.map +1 -1
- package/dist/server/dsl.js +11 -4
- package/dist/server/dsl.js.map +1 -1
- package/dist/server/envelope.sql +75 -0
- package/dist/server/logEntry.sql +10 -0
- package/dist/server/methods/_dispatchAsClient.d.ts.map +1 -1
- package/dist/server/methods/_dispatchAsClient.js +11 -6
- package/dist/server/methods/_dispatchAsClient.js.map +1 -1
- package/dist/server/methods/entry_read.sql +21 -0
- package/dist/server/methods/log_read.sql +11 -0
- package/dist/server/methods/loop_run.d.ts.map +1 -1
- package/dist/server/methods/loop_run.js +31 -11
- package/dist/server/methods/loop_run.js.map +1 -1
- package/dist/server/methods/loop_run.sql +9 -0
- package/dist/server/methods/session_create.d.ts.map +1 -1
- package/dist/server/methods/session_create.js +10 -3
- package/dist/server/methods/session_create.js.map +1 -1
- package/dist/service.d.ts +6 -0
- package/dist/service.d.ts.map +1 -0
- package/dist/service.js +221 -0
- package/dist/service.js.map +1 -0
- package/migrations/0000-00-00.01_schema.sql +2 -2
- package/package.json +27 -13
- package/bin/plurnk-service.ts +0 -176
- package/dist/core/ProviderRegistry.d.ts +0 -42
- package/dist/core/ProviderRegistry.d.ts.map +0 -1
- package/dist/core/ProviderRegistry.js +0 -72
- package/dist/core/ProviderRegistry.js.map +0 -1
- package/dist/core/line-marker.d.ts +0 -23
- package/dist/core/line-marker.d.ts.map +0 -1
- package/dist/core/line-marker.js +0 -321
- package/dist/core/line-marker.js.map +0 -1
- package/dist/core/matcher.d.ts +0 -12
- package/dist/core/matcher.d.ts.map +0 -1
- package/dist/core/matcher.js +0 -72
- package/dist/core/matcher.js.map +0 -1
- package/dist/core/mimetype-binary.d.ts +0 -6
- package/dist/core/mimetype-binary.d.ts.map +0 -1
- package/dist/core/mimetype-binary.js +0 -82
- package/dist/core/mimetype-binary.js.map +0 -1
- package/dist/core/path-mimetype.d.ts +0 -3
- package/dist/core/path-mimetype.d.ts.map +0 -1
- package/dist/core/path-mimetype.js +0 -47
- package/dist/core/path-mimetype.js.map +0 -1
- package/dist/core/plugin-trust.d.ts +0 -4
- package/dist/core/plugin-trust.d.ts.map +0 -1
- package/dist/core/plugin-trust.js +0 -23
- package/dist/core/plugin-trust.js.map +0 -1
- package/dist/providers/Mock.d.ts +0 -43
- package/dist/providers/Mock.d.ts.map +0 -1
- package/dist/providers/Mock.js +0 -36
- package/dist/providers/Mock.js.map +0 -1
- package/dist/server/methods/op_hide.d.ts +0 -5
- package/dist/server/methods/op_hide.d.ts.map +0 -1
- package/dist/server/methods/op_hide.js +0 -24
- package/dist/server/methods/op_hide.js.map +0 -1
- package/dist/server/methods/op_show.d.ts +0 -5
- package/dist/server/methods/op_show.d.ts.map +0 -1
- package/dist/server/methods/op_show.js +0 -24
- package/dist/server/methods/op_show.js.map +0 -1
- package/dist/server/methods/session_set_persona.d.ts +0 -5
- package/dist/server/methods/session_set_persona.d.ts.map +0 -1
- package/dist/server/methods/session_set_persona.js +0 -29
- package/dist/server/methods/session_set_persona.js.map +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"service.js","sourceRoot":"","sources":["../src/service.ts"],"names":[],"mappings":"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"}
|
|
@@ -46,7 +46,7 @@ CREATE TABLE IF NOT EXISTS loops (
|
|
|
46
46
|
version INTEGER NOT NULL DEFAULT 0 CHECK (version >= 0),
|
|
47
47
|
run_id INTEGER NOT NULL,
|
|
48
48
|
sequence INTEGER NOT NULL CHECK (sequence >= 1),
|
|
49
|
-
status INTEGER NOT NULL DEFAULT 102 CHECK (status IN (100, 102, 200, 413, 429, 499, 500, 508)),
|
|
49
|
+
status INTEGER NOT NULL DEFAULT 102 CHECK (status IN (100, 102, 200, 202, 413, 429, 499, 500, 508)),
|
|
50
50
|
prompt TEXT NOT NULL,
|
|
51
51
|
flags TEXT NOT NULL DEFAULT '{}' CHECK (json_valid(flags)),
|
|
52
52
|
-- §run-scheme loop-termination delta: terminated_at is stamped by the trigger
|
|
@@ -64,7 +64,7 @@ CREATE UNIQUE INDEX IF NOT EXISTS loops_run_id_sequence ON loops (run_id, sequen
|
|
|
64
64
|
-- runs pull the termination as a folded ambient delta — caught uniformly across every
|
|
65
65
|
-- death-path (SEND, grinder, max-turns, strike, KILL). The stamp updates terminated_at,
|
|
66
66
|
-- never status, so it cannot re-fire this trigger. Terminals: 200 done · 413 budget ·
|
|
67
|
-
-- 429 turn-ceiling · 499 cancel · 500 fail · 508 runaway.
|
|
67
|
+
-- 429 turn-ceiling · 499 cancel · 500 fail · 508 runaway. (202 = parked/sleeping, NOT terminal.)
|
|
68
68
|
CREATE TRIGGER IF NOT EXISTS loops_stamp_terminated_at
|
|
69
69
|
AFTER UPDATE OF status ON loops
|
|
70
70
|
WHEN NEW.status IN (200, 413, 429, 499, 500, 508) AND OLD.status NOT IN (200, 413, 429, 499, 500, 508)
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@plurnk/plurnk-service",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.46.0",
|
|
4
4
|
"description": "Plurnk agent runtime — the server / engine / core. Implements the @plurnk/plurnk-grammar contract.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"license": "MIT",
|
|
@@ -15,11 +15,10 @@
|
|
|
15
15
|
"./package.json": "./package.json"
|
|
16
16
|
},
|
|
17
17
|
"bin": {
|
|
18
|
-
"plurnk-service": "./
|
|
18
|
+
"plurnk-service": "./dist/service.js"
|
|
19
19
|
},
|
|
20
20
|
"files": [
|
|
21
21
|
".env.example",
|
|
22
|
-
"bin/plurnk-service.ts",
|
|
23
22
|
"dist/**/*",
|
|
24
23
|
"migrations/**/*.sql",
|
|
25
24
|
"requirements.md",
|
|
@@ -30,7 +29,7 @@
|
|
|
30
29
|
"access": "public"
|
|
31
30
|
},
|
|
32
31
|
"scripts": {
|
|
33
|
-
"start": "node
|
|
32
|
+
"start": "node src/service.ts",
|
|
34
33
|
"test:lint": "tsc --noEmit",
|
|
35
34
|
"test:unit": "node --env-file-if-exists=.env.example --env-file-if-exists=.env --env-file-if-exists=.env.test --test --test-timeout=30000 src/**/*.test.ts",
|
|
36
35
|
"test:intg": "npm run test:clean-tmp && PLURNK_MANIFEST_ITEMS=0 node --env-file-if-exists=.env.example --env-file-if-exists=.env --env-file-if-exists=.env.test --test --test-timeout=30000 test/intg/*.test.ts",
|
|
@@ -40,29 +39,44 @@
|
|
|
40
39
|
"test:digest": "node bin/digest.ts",
|
|
41
40
|
"test:clean-tmp": "rm -rf test/intg/.tmp",
|
|
42
41
|
"dev:digest": "node bin/digest.ts",
|
|
42
|
+
"build:clean": "rm -rf dist",
|
|
43
43
|
"build:dist": "tsc -p tsconfig.build.json",
|
|
44
|
-
"build": "
|
|
44
|
+
"build:sql": "node scripts/copy-sql.mjs",
|
|
45
|
+
"build": "npm run build:clean && npm run build:dist && npm run build:sql",
|
|
46
|
+
"build:global:install": "npm run build && npm install -g .",
|
|
47
|
+
"build:global:uninstall": "npm uninstall -g @plurnk/plurnk-service",
|
|
48
|
+
"build:local:install": "node scripts/install-sandbox.mjs install",
|
|
49
|
+
"build:local:uninstall": "node scripts/install-sandbox.mjs uninstall",
|
|
50
|
+
"test:installation": "node scripts/test-installation.mjs",
|
|
45
51
|
"prepare": "npm run build"
|
|
46
52
|
},
|
|
47
53
|
"dependencies": {
|
|
48
|
-
"@plurnk/plurnk-execs": "0.4.
|
|
54
|
+
"@plurnk/plurnk-execs": "0.4.13",
|
|
49
55
|
"@plurnk/plurnk-execs-all": "0.1.5",
|
|
50
|
-
"@plurnk/plurnk-grammar": "0.
|
|
51
|
-
"@plurnk/plurnk-mimetypes": "0.15.
|
|
52
|
-
"@plurnk/plurnk-mimetypes-all": "0.5.
|
|
53
|
-
"@plurnk/plurnk-
|
|
54
|
-
"@plurnk/plurnk-providers": "0.12.0",
|
|
56
|
+
"@plurnk/plurnk-grammar": "0.73.3",
|
|
57
|
+
"@plurnk/plurnk-mimetypes": "0.15.21",
|
|
58
|
+
"@plurnk/plurnk-mimetypes-all": "0.5.1",
|
|
59
|
+
"@plurnk/plurnk-providers": "0.13.0",
|
|
55
60
|
"@plurnk/plurnk-providers-all": "0.8.0",
|
|
56
|
-
"@plurnk/plurnk-schemes": "0.
|
|
57
|
-
"@plurnk/plurnk-schemes-all": "0.1.
|
|
61
|
+
"@plurnk/plurnk-schemes": "0.29.2",
|
|
62
|
+
"@plurnk/plurnk-schemes-all": "0.1.14",
|
|
58
63
|
"@possumtech/sqlrite": "5.2.0",
|
|
59
64
|
"diff": "^9.0.0",
|
|
60
65
|
"ws": "^8.20.1"
|
|
61
66
|
},
|
|
62
67
|
"devDependencies": {
|
|
68
|
+
"@plurnk/plurnk-mimetypes-embeddings": "0.4.0",
|
|
63
69
|
"@types/diff": "^7.0.2",
|
|
64
70
|
"@types/node": "^25.8.0",
|
|
65
71
|
"@types/ws": "^8.18.1",
|
|
66
72
|
"typescript": "^6.0.3"
|
|
73
|
+
},
|
|
74
|
+
"peerDependencies": {
|
|
75
|
+
"@plurnk/plurnk-mimetypes-embeddings": "0.4.0"
|
|
76
|
+
},
|
|
77
|
+
"peerDependenciesMeta": {
|
|
78
|
+
"@plurnk/plurnk-mimetypes-embeddings": {
|
|
79
|
+
"optional": true
|
|
80
|
+
}
|
|
67
81
|
}
|
|
68
82
|
}
|
package/bin/plurnk-service.ts
DELETED
|
@@ -1,176 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env node
|
|
2
|
-
|
|
3
|
-
import { parseArgs } from "node:util";
|
|
4
|
-
import { existsSync } from "node:fs";
|
|
5
|
-
import { fileURLToPath } from "node:url";
|
|
6
|
-
import { dirname, resolve } from "node:path";
|
|
7
|
-
import SqlRite from "@possumtech/sqlrite";
|
|
8
|
-
import type { Db } from "../src/core/Db.ts";
|
|
9
|
-
import Daemon from "../src/server/Daemon.ts";
|
|
10
|
-
import EnvFlags from "../src/core/EnvFlags.ts";
|
|
11
|
-
import ProviderInstantiate from "../src/core/ProviderInstantiate.ts";
|
|
12
|
-
import { resolveActiveAlias } from "@plurnk/plurnk-providers";
|
|
13
|
-
|
|
14
|
-
export default class Cli {
|
|
15
|
-
static #projectRoot = resolve(dirname(fileURLToPath(import.meta.url)), "..");
|
|
16
|
-
|
|
17
|
-
static #die(code: number, message: string): never {
|
|
18
|
-
process.stderr.write(`${message}\n`);
|
|
19
|
-
process.exit(code);
|
|
20
|
-
}
|
|
21
|
-
|
|
22
|
-
static #loadEnv(path: string, required: boolean): void {
|
|
23
|
-
if (existsSync(path)) {
|
|
24
|
-
try { process.loadEnvFile(path); }
|
|
25
|
-
catch (cause) { Cli.#die(64, `failed to load ${path}: ${cause instanceof Error ? cause.message : String(cause)}`); }
|
|
26
|
-
} else if (required) {
|
|
27
|
-
Cli.#die(64, `${path} does not exist`);
|
|
28
|
-
}
|
|
29
|
-
}
|
|
30
|
-
|
|
31
|
-
// node-style env-file flags: --env-file=<path> (required) / --env-file-if-exists=<path>
|
|
32
|
-
// (skip if missing), repeatable, in command-line order. They layer extra files ABOVE
|
|
33
|
-
// the .env cascade but BELOW shell env (loadEnvFile is set-if-unset) and the --<knob>
|
|
34
|
-
// CLI flags (assigned last). The `=` form only — node's canonical syntax (so it never
|
|
35
|
-
// leaks a positional). NB: node validates these paths from the full argv (and exits on
|
|
36
|
-
// a missing *required* one), but only LOADS pre-script files — the post-script loading
|
|
37
|
-
// a published `plurnk-service --env-file=…` needs is this.
|
|
38
|
-
static #envFileArgs(): Array<{ path: string; required: boolean }> {
|
|
39
|
-
return process.argv.flatMap((a): Array<{ path: string; required: boolean }> => {
|
|
40
|
-
if (a.startsWith("--env-file-if-exists=")) return [{ path: a.slice(a.indexOf("=") + 1), required: false }];
|
|
41
|
-
if (a.startsWith("--env-file=")) return [{ path: a.slice(a.indexOf("=") + 1), required: true }];
|
|
42
|
-
return [];
|
|
43
|
-
});
|
|
44
|
-
}
|
|
45
|
-
|
|
46
|
-
// The .env cascade always populates these from .env.example, so absence is
|
|
47
|
-
// a broken config, not a runtime branch — fail hard rather than `?? ""`.
|
|
48
|
-
static #requireEnv(name: string): string {
|
|
49
|
-
const value = process.env[name];
|
|
50
|
-
if (value === undefined || value.length === 0) Cli.#die(78, `missing required env ${name} (declare it in .env.example)`);
|
|
51
|
-
return value;
|
|
52
|
-
}
|
|
53
|
-
|
|
54
|
-
// Optional integer sqlite tuning knob — undefined when unset (so it never clobbers
|
|
55
|
-
// sqlrite's default by spreading an explicit `undefined`); fail-hard on a non-integer.
|
|
56
|
-
static #sqliteKnob(name: string): number | undefined {
|
|
57
|
-
const raw = process.env[name];
|
|
58
|
-
if (raw === undefined || raw.trim() === "") return undefined;
|
|
59
|
-
const n = Number(raw);
|
|
60
|
-
if (!Number.isInteger(n)) Cli.#die(78, `${name} must be an integer, got ${JSON.stringify(raw)}`);
|
|
61
|
-
return n;
|
|
62
|
-
}
|
|
63
|
-
|
|
64
|
-
static async #openDb(dbPath: string): Promise<Db> {
|
|
65
|
-
// Curated sqlite tuning (sqlrite 5.2.0, #7) — pass through ONLY the knobs the
|
|
66
|
-
// operator set, so an unset one keeps sqlrite's default (e.g. busy_timeout=5000).
|
|
67
|
-
const tuning: Record<string, number> = {};
|
|
68
|
-
for (const [env, opt] of [
|
|
69
|
-
["PLURNK_SQLITE_TIMEOUT", "timeout"],
|
|
70
|
-
["PLURNK_SQLITE_CACHE_SIZE", "cacheSize"],
|
|
71
|
-
["PLURNK_SQLITE_MMAP_SIZE", "mmapSize"],
|
|
72
|
-
["PLURNK_SQLITE_MAX_PAGE_COUNT", "maxPageCount"],
|
|
73
|
-
] as const) {
|
|
74
|
-
const v = Cli.#sqliteKnob(env);
|
|
75
|
-
if (v !== undefined) tuning[opt] = v;
|
|
76
|
-
}
|
|
77
|
-
const db = await SqlRite.open({
|
|
78
|
-
path: dbPath,
|
|
79
|
-
dir: [resolve(Cli.#projectRoot, "migrations"), resolve(Cli.#projectRoot, "src")],
|
|
80
|
-
functions: [resolve(Cli.#projectRoot, "src/schemes/cosine.ts")],
|
|
81
|
-
...tuning,
|
|
82
|
-
});
|
|
83
|
-
return db as unknown as Db;
|
|
84
|
-
}
|
|
85
|
-
|
|
86
|
-
static async #migrate(): Promise<void> {
|
|
87
|
-
const dbPath = Cli.#requireEnv("PLURNK_DB_PATH");
|
|
88
|
-
const db = await Cli.#openDb(dbPath);
|
|
89
|
-
try { process.stdout.write(`migrated: ${dbPath}\n`); }
|
|
90
|
-
finally { await db.close(); }
|
|
91
|
-
}
|
|
92
|
-
|
|
93
|
-
static async #start(): Promise<void> {
|
|
94
|
-
const dbPath = Cli.#requireEnv("PLURNK_DB_PATH");
|
|
95
|
-
const host = Cli.#requireEnv("PLURNK_HOST");
|
|
96
|
-
const port = Number(Cli.#requireEnv("PLURNK_PORT"));
|
|
97
|
-
|
|
98
|
-
const db = await Cli.#openDb(dbPath);
|
|
99
|
-
const alias = resolveActiveAlias();
|
|
100
|
-
const provider = alias === null ? null : await ProviderInstantiate.loadActiveProvider();
|
|
101
|
-
const daemon = new Daemon({ db, provider });
|
|
102
|
-
const addr = await daemon.start({ host, port });
|
|
103
|
-
const aliasStr = alias === null ? "no model" : `${alias.alias}=${alias.provider}/${alias.model}`;
|
|
104
|
-
process.stdout.write(`plurnk-service ws://${addr.host}:${addr.port} db=${dbPath} ${aliasStr}\n`);
|
|
105
|
-
|
|
106
|
-
const shutdown = async (): Promise<void> => { await daemon.stop(); await db.close(); process.exit(0); };
|
|
107
|
-
process.on("SIGINT", shutdown);
|
|
108
|
-
process.on("SIGTERM", shutdown);
|
|
109
|
-
}
|
|
110
|
-
|
|
111
|
-
static async main(): Promise<void> {
|
|
112
|
-
// Env cascade, highest precedence loads FIRST (loadEnvFile is set-if-unset,
|
|
113
|
-
// first write wins): --env-file(s) < --config < .env < .env.example, all of them
|
|
114
|
-
// OUTRANKED by pre-set shell env, then by the --<knob> CLI flags (assigned last,
|
|
115
|
-
// below). So --env-file overrides the .env files but never a shell var or a CLI
|
|
116
|
-
// arg — node-idiomatic layering.
|
|
117
|
-
for (const { path: envFile, required } of Cli.#envFileArgs()) Cli.#loadEnv(envFile, required);
|
|
118
|
-
|
|
119
|
-
const configFlagIndex = process.argv.findIndex((a) => a === "--config" || a.startsWith("--config="));
|
|
120
|
-
const configFile = ((): string | null => {
|
|
121
|
-
if (configFlagIndex === -1) return null;
|
|
122
|
-
const arg = process.argv[configFlagIndex];
|
|
123
|
-
if (arg.includes("=")) return arg.slice(arg.indexOf("=") + 1);
|
|
124
|
-
return process.argv[configFlagIndex + 1] ?? null;
|
|
125
|
-
})();
|
|
126
|
-
|
|
127
|
-
if (configFile !== null) Cli.#loadEnv(configFile, true);
|
|
128
|
-
Cli.#loadEnv(".env", false);
|
|
129
|
-
Cli.#loadEnv(resolve(Cli.#projectRoot, ".env.example"), false);
|
|
130
|
-
|
|
131
|
-
const flagDescriptors = await EnvFlags.parseEnvExample(resolve(Cli.#projectRoot, ".env.example"));
|
|
132
|
-
const flagOptions: Record<string, { type: "string" }> = {};
|
|
133
|
-
for (const f of flagDescriptors) {
|
|
134
|
-
flagOptions[f.flagName.replace(/^--/, "")] = { type: "string" };
|
|
135
|
-
}
|
|
136
|
-
|
|
137
|
-
const usage = `usage: plurnk-service [options] [migrate]
|
|
138
|
-
|
|
139
|
-
${EnvFlags.formatFlagsHelp(flagDescriptors)}
|
|
140
|
-
|
|
141
|
-
--env-file=<path> layer env from <path> (repeatable; errors if missing)
|
|
142
|
-
--env-file-if-exists=<path> layer env from <path> if present (repeatable)
|
|
143
|
-
--config=<path> layer additional env from <path>
|
|
144
|
-
-h, --help show this help
|
|
145
|
-
`;
|
|
146
|
-
|
|
147
|
-
const { positionals, values } = parseArgs({
|
|
148
|
-
allowPositionals: true,
|
|
149
|
-
strict: false,
|
|
150
|
-
options: { help: { type: "boolean", short: "h" }, config: { type: "string" }, ...flagOptions },
|
|
151
|
-
});
|
|
152
|
-
|
|
153
|
-
for (const f of flagDescriptors) {
|
|
154
|
-
const key = f.flagName.replace(/^--/, "");
|
|
155
|
-
const v = values[key];
|
|
156
|
-
if (typeof v === "string") process.env[f.envName] = v;
|
|
157
|
-
}
|
|
158
|
-
|
|
159
|
-
if (values.help) { process.stdout.write(usage); process.exit(0); }
|
|
160
|
-
|
|
161
|
-
const dispatch: Record<string, () => Promise<void>> = { migrate: Cli.#migrate, start: Cli.#start };
|
|
162
|
-
const subcommand = typeof positionals[0] === "string" ? positionals[0] : "start";
|
|
163
|
-
const handler = dispatch[subcommand];
|
|
164
|
-
if (handler === undefined) Cli.#die(64, `unknown subcommand: ${subcommand}\n\n${usage}`);
|
|
165
|
-
if (positionals.length > 1) Cli.#die(64, `unexpected arguments: ${positionals.slice(1).join(" ")}`);
|
|
166
|
-
|
|
167
|
-
try { await handler(); }
|
|
168
|
-
catch (cause) {
|
|
169
|
-
process.stderr.write(`${subcommand}: ${cause instanceof Error ? cause.message : String(cause)}\n`);
|
|
170
|
-
if (cause instanceof Error && cause.cause) process.stderr.write(` cause: ${cause.cause instanceof Error ? cause.cause.message : String(cause.cause)}\n`);
|
|
171
|
-
process.exit(1);
|
|
172
|
-
}
|
|
173
|
-
}
|
|
174
|
-
}
|
|
175
|
-
|
|
176
|
-
await Cli.main();
|
|
@@ -1,42 +0,0 @@
|
|
|
1
|
-
interface ChatMessage {
|
|
2
|
-
role: "system" | "user" | "assistant";
|
|
3
|
-
content: string;
|
|
4
|
-
}
|
|
5
|
-
export interface ProviderUsage {
|
|
6
|
-
readonly prompt: number;
|
|
7
|
-
readonly completion: number;
|
|
8
|
-
readonly cached: number;
|
|
9
|
-
readonly total: number;
|
|
10
|
-
}
|
|
11
|
-
export interface ProviderAssistant {
|
|
12
|
-
readonly content: string;
|
|
13
|
-
readonly reasoning: string | null;
|
|
14
|
-
readonly usage: ProviderUsage;
|
|
15
|
-
readonly finishReason: string | null;
|
|
16
|
-
readonly model: string;
|
|
17
|
-
}
|
|
18
|
-
export interface ProviderResponse {
|
|
19
|
-
readonly assistant: ProviderAssistant;
|
|
20
|
-
readonly assistantRaw: unknown;
|
|
21
|
-
}
|
|
22
|
-
export interface Provider {
|
|
23
|
-
generate(args: {
|
|
24
|
-
messages: ChatMessage[];
|
|
25
|
-
signal?: AbortSignal;
|
|
26
|
-
}): Promise<ProviderResponse>;
|
|
27
|
-
readonly contextSize: number | null;
|
|
28
|
-
readonly model: string;
|
|
29
|
-
countTokens(text: string): number;
|
|
30
|
-
costFor(usage: ProviderUsage): number;
|
|
31
|
-
}
|
|
32
|
-
export interface ProviderAlias {
|
|
33
|
-
readonly alias: string;
|
|
34
|
-
readonly provider: string;
|
|
35
|
-
readonly model: string;
|
|
36
|
-
}
|
|
37
|
-
export declare const parseAliasesFromEnv: (env?: NodeJS.ProcessEnv) => ProviderAlias[];
|
|
38
|
-
export declare const resolveActiveAlias: (env?: NodeJS.ProcessEnv) => ProviderAlias | null;
|
|
39
|
-
export declare const instantiateProvider: (alias: ProviderAlias, env?: NodeJS.ProcessEnv) => Promise<Provider>;
|
|
40
|
-
export declare const loadActiveProvider: (env?: NodeJS.ProcessEnv) => Promise<Provider | null>;
|
|
41
|
-
export {};
|
|
42
|
-
//# sourceMappingURL=ProviderRegistry.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ProviderRegistry.d.ts","sourceRoot":"","sources":["../../src/core/ProviderRegistry.ts"],"names":[],"mappings":"AAWA,UAAU,WAAW;IAAG,IAAI,EAAE,QAAQ,GAAG,MAAM,GAAG,WAAW,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE;AAYhF,MAAM,WAAW,aAAa;IAC1B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;CAC1B;AACD,MAAM,WAAW,iBAAiB;IAC9B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IAClC,QAAQ,CAAC,KAAK,EAAE,aAAa,CAAC;IAC9B,QAAQ,CAAC,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IACrC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;CAC1B;AACD,MAAM,WAAW,gBAAgB;IAC7B,QAAQ,CAAC,SAAS,EAAE,iBAAiB,CAAC;IACtC,QAAQ,CAAC,YAAY,EAAE,OAAO,CAAC;CAClC;AACD,MAAM,WAAW,QAAQ;IACrB,QAAQ,CAAC,IAAI,EAAE;QAAE,QAAQ,EAAE,WAAW,EAAE,CAAC;QAAC,MAAM,CAAC,EAAE,WAAW,CAAA;KAAE,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAAC;IAK7F,QAAQ,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IACpC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IAMvB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAAC;IAKlC,OAAO,CAAC,KAAK,EAAE,aAAa,GAAG,MAAM,CAAC;CACzC;AAED,MAAM,WAAW,aAAa;IAC1B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;CAC1B;AAED,eAAO,MAAM,mBAAmB,GAAI,MAAK,MAAM,CAAC,UAAwB,KAAG,aAAa,EAgBvF,CAAC;AAEF,eAAO,MAAM,kBAAkB,GAAI,MAAK,MAAM,CAAC,UAAwB,KAAG,aAAa,GAAG,IAKzF,CAAC;AAcF,eAAO,MAAM,mBAAmB,GAAU,OAAO,aAAa,EAAE,MAAK,MAAM,CAAC,UAAwB,KAAG,OAAO,CAAC,QAAQ,CAmBtH,CAAC;AAIF,eAAO,MAAM,kBAAkB,GAAU,MAAK,MAAM,CAAC,UAAwB,KAAG,OAAO,CAAC,QAAQ,GAAG,IAAI,CAItG,CAAC"}
|
|
@@ -1,72 +0,0 @@
|
|
|
1
|
-
// Model alias resolution. Reads PLURNK_MODEL_<alias>=<provider>/<model> env
|
|
2
|
-
// vars; PLURNK_MODEL=<alias> selects which to use at boot. Each alias maps
|
|
3
|
-
// to a provider plugin (`@plurnk/plurnk-providers-<provider>`); the registry
|
|
4
|
-
// imports the matching package and constructs it with provider-specific
|
|
5
|
-
// env conventions.
|
|
6
|
-
//
|
|
7
|
-
// Rummy parallel: RUMMY_MODEL_<alias>="<provider>/<model>" cascade. The
|
|
8
|
-
// first path segment selects the provider plugin; the rest is the
|
|
9
|
-
// provider's own identifier (may contain "/" for tri-level providers like
|
|
10
|
-
// openrouter's publisher/model).
|
|
11
|
-
var __rewriteRelativeImportExtension = (this && this.__rewriteRelativeImportExtension) || function (path, preserveJsx) {
|
|
12
|
-
if (typeof path === "string" && /^\.\.?\//.test(path)) {
|
|
13
|
-
return path.replace(/\.(tsx)$|((?:\.d)?)((?:\.[^./]+?)?)\.([cm]?)ts$/i, function (m, tsx, d, ext, cm) {
|
|
14
|
-
return tsx ? preserveJsx ? ".jsx" : ".js" : d && (!ext || !cm) ? m : (d + ext + "." + cm.toLowerCase() + "js");
|
|
15
|
-
});
|
|
16
|
-
}
|
|
17
|
-
return path;
|
|
18
|
-
};
|
|
19
|
-
export const parseAliasesFromEnv = (env = process.env) => {
|
|
20
|
-
const out = [];
|
|
21
|
-
for (const [key, value] of Object.entries(env)) {
|
|
22
|
-
if (value === undefined || value.length === 0)
|
|
23
|
-
continue;
|
|
24
|
-
if (!key.startsWith("PLURNK_MODEL_"))
|
|
25
|
-
continue;
|
|
26
|
-
const aliasRaw = key.slice("PLURNK_MODEL_".length);
|
|
27
|
-
if (aliasRaw.length === 0)
|
|
28
|
-
continue;
|
|
29
|
-
const slash = value.indexOf("/");
|
|
30
|
-
if (slash <= 0)
|
|
31
|
-
continue;
|
|
32
|
-
out.push({
|
|
33
|
-
alias: aliasRaw.toLowerCase(),
|
|
34
|
-
provider: value.slice(0, slash),
|
|
35
|
-
model: value.slice(slash + 1),
|
|
36
|
-
});
|
|
37
|
-
}
|
|
38
|
-
return out;
|
|
39
|
-
};
|
|
40
|
-
export const resolveActiveAlias = (env = process.env) => {
|
|
41
|
-
const selected = env.PLURNK_MODEL;
|
|
42
|
-
if (selected === undefined || selected.length === 0)
|
|
43
|
-
return null;
|
|
44
|
-
const aliases = parseAliasesFromEnv(env);
|
|
45
|
-
return aliases.find((a) => a.alias === selected.toLowerCase()) ?? null;
|
|
46
|
-
};
|
|
47
|
-
export const instantiateProvider = async (alias, env = process.env) => {
|
|
48
|
-
const packageName = `@plurnk/plurnk-providers-${alias.provider}`;
|
|
49
|
-
let mod;
|
|
50
|
-
try {
|
|
51
|
-
mod = await import(__rewriteRelativeImportExtension(packageName));
|
|
52
|
-
}
|
|
53
|
-
catch (cause) {
|
|
54
|
-
throw new Error(`provider package ${packageName} not installed (alias '${alias.alias}' requires it): ` +
|
|
55
|
-
(cause instanceof Error ? cause.message : String(cause)));
|
|
56
|
-
}
|
|
57
|
-
const factory = mod.default;
|
|
58
|
-
if (typeof factory?.fromEnv !== "function") {
|
|
59
|
-
throw new Error(`${packageName}: default export must have a static \`fromEnv(env, model)\` factory ` +
|
|
60
|
-
`(plurnk-providers#1)`);
|
|
61
|
-
}
|
|
62
|
-
return await factory.fromEnv(env, alias.model);
|
|
63
|
-
};
|
|
64
|
-
// Convenience: resolve + instantiate in one call. Returns null when no
|
|
65
|
-
// PLURNK_MODEL is set (caller decides what 'no provider' means).
|
|
66
|
-
export const loadActiveProvider = async (env = process.env) => {
|
|
67
|
-
const alias = resolveActiveAlias(env);
|
|
68
|
-
if (alias === null)
|
|
69
|
-
return null;
|
|
70
|
-
return instantiateProvider(alias, env);
|
|
71
|
-
};
|
|
72
|
-
//# sourceMappingURL=ProviderRegistry.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ProviderRegistry.js","sourceRoot":"","sources":["../../src/core/ProviderRegistry.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
import type { LineMarker } from "@plurnk/plurnk-grammar";
|
|
2
|
-
export interface SliceResult {
|
|
3
|
-
status: number;
|
|
4
|
-
text?: string;
|
|
5
|
-
startLine?: number;
|
|
6
|
-
error?: string;
|
|
7
|
-
}
|
|
8
|
-
export declare const sliceLines: (content: string, marker: LineMarker) => SliceResult;
|
|
9
|
-
export interface JsonSliceResult {
|
|
10
|
-
status: number;
|
|
11
|
-
body?: string;
|
|
12
|
-
error?: string;
|
|
13
|
-
}
|
|
14
|
-
export declare const sliceJsonItems: (content: string, marker: LineMarker) => JsonSliceResult;
|
|
15
|
-
export declare const applyJsonItemEdit: (content: string, marker: LineMarker, body: string) => EditResult;
|
|
16
|
-
export declare const sliceLinesRaw: (content: string, marker: LineMarker) => SliceResult;
|
|
17
|
-
export interface EditResult {
|
|
18
|
-
status: number;
|
|
19
|
-
result?: string;
|
|
20
|
-
error?: string;
|
|
21
|
-
}
|
|
22
|
-
export declare const applyLineMarkerEdit: (content: string, marker: LineMarker, body: string) => EditResult;
|
|
23
|
-
//# sourceMappingURL=line-marker.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"line-marker.d.ts","sourceRoot":"","sources":["../../src/core/line-marker.ts"],"names":[],"mappings":"AAaA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAkCzD,MAAM,WAAW,WAAW;IAAG,MAAM,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE;AAWlG,eAAO,MAAM,UAAU,GAAI,SAAS,MAAM,EAAE,QAAQ,UAAU,KAAG,WAOhE,CAAC;AAyBF,MAAM,WAAW,eAAe;IAAG,MAAM,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE;AAElF,eAAO,MAAM,cAAc,GAAI,SAAS,MAAM,EAAE,QAAQ,UAAU,KAAG,eAoBpE,CAAC;AA6GF,eAAO,MAAM,iBAAiB,GAAI,SAAS,MAAM,EAAE,QAAQ,UAAU,EAAE,MAAM,MAAM,KAAG,UAerF,CAAC;AAOF,eAAO,MAAM,aAAa,GAAI,SAAS,MAAM,EAAE,QAAQ,UAAU,KAAG,WAQnE,CAAC;AAEF,MAAM,WAAW,UAAU;IAAG,MAAM,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE;AAS/E,eAAO,MAAM,mBAAmB,GAAI,SAAS,MAAM,EAAE,QAAQ,UAAU,EAAE,MAAM,MAAM,KAAG,UAiBvF,CAAC"}
|