@plurnk/plurnk-service 0.55.0 → 0.57.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 +9 -14
- package/SPEC.md +133 -99
- package/dist/content/matcher.d.ts +4 -0
- package/dist/content/matcher.d.ts.map +1 -1
- package/dist/content/matcher.js +73 -92
- package/dist/content/matcher.js.map +1 -1
- package/dist/core/ChannelWrite.d.ts +7 -1
- package/dist/core/ChannelWrite.d.ts.map +1 -1
- package/dist/core/ChannelWrite.js +8 -2
- package/dist/core/ChannelWrite.js.map +1 -1
- package/dist/core/ChannelWrite.sql +12 -2
- package/dist/core/Engine.d.ts +9 -0
- package/dist/core/Engine.d.ts.map +1 -1
- package/dist/core/Engine.js +345 -104
- package/dist/core/Engine.js.map +1 -1
- package/dist/core/Engine.sql +44 -2
- package/dist/core/SchemeRegistry.d.ts.map +1 -1
- package/dist/core/SchemeRegistry.js +6 -1
- package/dist/core/SchemeRegistry.js.map +1 -1
- package/dist/core/fork.d.ts.map +1 -1
- package/dist/core/fork.js +20 -4
- package/dist/core/fork.js.map +1 -1
- package/dist/core/fork.sql +29 -0
- package/dist/core/git-membership.d.ts.map +1 -1
- package/dist/core/git-membership.js +40 -4
- package/dist/core/git-membership.js.map +1 -1
- package/dist/core/packet-inject.d.ts +2 -0
- package/dist/core/packet-inject.d.ts.map +1 -1
- package/dist/core/packet-inject.js +28 -1
- package/dist/core/packet-inject.js.map +1 -1
- package/dist/core/packet-wire.d.ts.map +1 -1
- package/dist/core/packet-wire.js +32 -28
- package/dist/core/packet-wire.js.map +1 -1
- package/dist/core/session-settings.d.ts +1 -6
- package/dist/core/session-settings.d.ts.map +1 -1
- package/dist/core/session-settings.js +4 -13
- package/dist/core/session-settings.js.map +1 -1
- package/dist/schemes/Exec.d.ts.map +1 -1
- package/dist/schemes/Exec.js +41 -7
- package/dist/schemes/Exec.js.map +1 -1
- package/dist/schemes/ExecOutputScheme.d.ts.map +1 -1
- package/dist/schemes/ExecOutputScheme.js +2 -1
- package/dist/schemes/ExecOutputScheme.js.map +1 -1
- package/dist/schemes/File.d.ts.map +1 -1
- package/dist/schemes/File.js +9 -6
- package/dist/schemes/File.js.map +1 -1
- package/dist/schemes/Log.d.ts +4 -0
- package/dist/schemes/Log.d.ts.map +1 -1
- package/dist/schemes/Log.js +35 -19
- package/dist/schemes/Log.js.map +1 -1
- package/dist/schemes/Log.sql +14 -11
- package/dist/schemes/Run.d.ts +7 -1
- package/dist/schemes/Run.d.ts.map +1 -1
- package/dist/schemes/Run.js +49 -9
- package/dist/schemes/Run.js.map +1 -1
- package/dist/schemes/_entry-find.d.ts +16 -1
- package/dist/schemes/_entry-find.d.ts.map +1 -1
- package/dist/schemes/_entry-find.js +84 -50
- package/dist/schemes/_entry-find.js.map +1 -1
- package/dist/schemes/_entry-find.sql +23 -0
- package/dist/schemes/_entry-graph.d.ts +6 -1
- package/dist/schemes/_entry-graph.d.ts.map +1 -1
- package/dist/schemes/_entry-graph.js +35 -22
- package/dist/schemes/_entry-graph.js.map +1 -1
- package/dist/schemes/_entry-graph.sql +9 -7
- package/dist/schemes/_entry-manifest.d.ts +1 -1
- package/dist/schemes/_entry-manifest.d.ts.map +1 -1
- package/dist/schemes/_entry-manifest.js +38 -7
- package/dist/schemes/_entry-manifest.js.map +1 -1
- package/dist/schemes/_entry-ops.d.ts +5 -0
- package/dist/schemes/_entry-ops.d.ts.map +1 -1
- package/dist/schemes/_entry-ops.js +14 -0
- package/dist/schemes/_entry-ops.js.map +1 -1
- package/dist/schemes/_entry-semantic.d.ts +1 -1
- package/dist/schemes/_entry-semantic.d.ts.map +1 -1
- package/dist/schemes/_entry-semantic.js +15 -12
- package/dist/schemes/_entry-semantic.js.map +1 -1
- package/dist/schemes/exec-abort.d.ts +4 -0
- package/dist/schemes/exec-abort.d.ts.map +1 -1
- package/dist/schemes/exec-abort.js +6 -0
- package/dist/schemes/exec-abort.js.map +1 -1
- package/dist/server/Daemon.d.ts.map +1 -1
- package/dist/server/Daemon.js +133 -19
- package/dist/server/Daemon.js.map +1 -1
- package/dist/server/MethodRegistry.d.ts +2 -0
- package/dist/server/MethodRegistry.d.ts.map +1 -1
- package/dist/server/drain.sql +17 -5
- package/dist/server/dsl.d.ts +9 -1
- package/dist/server/dsl.d.ts.map +1 -1
- package/dist/server/dsl.js +31 -4
- package/dist/server/dsl.js.map +1 -1
- package/dist/server/envelope.d.ts.map +1 -1
- package/dist/server/envelope.js +0 -9
- package/dist/server/envelope.js.map +1 -1
- package/dist/server/logEntry.d.ts.map +1 -1
- package/dist/server/logEntry.js +3 -1
- package/dist/server/logEntry.js.map +1 -1
- package/dist/server/methods/log_read.d.ts.map +1 -1
- package/dist/server/methods/log_read.js +7 -1
- package/dist/server/methods/log_read.js.map +1 -1
- package/dist/server/methods/log_read.sql +17 -7
- package/dist/server/methods/op_look.d.ts +5 -0
- package/dist/server/methods/op_look.d.ts.map +1 -0
- package/dist/server/methods/op_look.js +30 -0
- package/dist/server/methods/op_look.js.map +1 -0
- package/dist/server/methods/op_parse.d.ts.map +1 -1
- package/dist/server/methods/op_parse.js +7 -2
- package/dist/server/methods/op_parse.js.map +1 -1
- package/dist/server/methods/session_constraints.js +1 -1
- package/dist/server/methods/session_constraints.js.map +1 -1
- package/dist/server/methods/session_create.d.ts.map +1 -1
- package/dist/server/methods/session_create.js +7 -14
- package/dist/server/methods/session_create.js.map +1 -1
- package/docs/run.md +3 -1
- package/migrations/0000-00-00.01_schema.sql +21 -1
- package/package.json +10 -10
- package/requirements.md +4 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"session_constraints.js","sourceRoot":"","sources":["../../../src/server/methods/session_constraints.ts"],"names":[],"mappings":"AAEA,OAAO,aAAa,MAAM,8BAA8B,CAAC;AAEzD,sFAAsF;AACtF,mFAAmF;AACnF,+EAA+E;AAC/E,MAAM,OAAO,GAAwB,IAAI,GAAG,CAAC,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;AAE/E,MAAM,CAAC,OAAO,OAAO,wBAAwB;IACzC,MAAM,CAAC,QAAQ,CAAC,QAAwB;QACpC,QAAQ,CAAC,cAAc,CAAC,mBAAmB,EAAE;YACzC,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,EAAE;gBAC3B,IAAI,GAAG,CAAC,OAAO,KAAK,IAAI;oBAAE,MAAM,IAAI,KAAK,CAAC,gDAAgD,CAAC,CAAC;gBAC5F,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,wBAAwB,CAAC,MAAM,CAAC,MAAM,EAAE,mBAAmB,CAAC,CAAC;gBACtF,MAAO,GAAG,CAAC,EAAE,CAAC,8BAA6C,CAAC,GAAG,CAAC,EAAE,UAAU,EAAE,GAAG,CAAC,OAAO,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,gFAAgF;gBACtM,MAAM,aAAa,CAAC,oBAAoB,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,OAAO,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;gBACnF,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;YAC5B,CAAC;YACD,WAAW,EAAE,yYAAyY;YACtZ,MAAM,EAAE;gBACJ,MAAM,EAAE,4CAA4C;gBACpD,IAAI,EAAE,
|
|
1
|
+
{"version":3,"file":"session_constraints.js","sourceRoot":"","sources":["../../../src/server/methods/session_constraints.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"session_create.d.ts","sourceRoot":"","sources":["../../../src/server/methods/session_create.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,cAAc,MAAM,sBAAsB,CAAC;AAUvD,MAAM,CAAC,OAAO,OAAO,mBAAmB;;IACpC,MAAM,CAAC,QAAQ,CAAC,QAAQ,EAAE,cAAc,GAAG,IAAI;
|
|
1
|
+
{"version":3,"file":"session_create.d.ts","sourceRoot":"","sources":["../../../src/server/methods/session_create.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,cAAc,MAAM,sBAAsB,CAAC;AAUvD,MAAM,CAAC,OAAO,OAAO,mBAAmB;;IACpC,MAAM,CAAC,QAAQ,CAAC,QAAQ,EAAE,cAAc,GAAG,IAAI;CA4HlD"}
|
|
@@ -26,7 +26,7 @@ export default class SessionCreateMethod {
|
|
|
26
26
|
// RPC race). Same effects/semantics as session.constrain.
|
|
27
27
|
const constraints = SessionCreateMethod.#parseConstraints(p.constraints);
|
|
28
28
|
// #231 — client-chosen open-context, persisted on the session and read at
|
|
29
|
-
// turn-0 with precedence over env (
|
|
29
|
+
// turn-0 with precedence over env (filesItems replaces, mdDocs unions).
|
|
30
30
|
const settings = SessionCreateMethod.#parseSettings(p.settings);
|
|
31
31
|
const envelope = await Envelope.createClientEnvelope(ctx.db, { name: p.name, projectRoot, settings });
|
|
32
32
|
if (constraints.length > 0) {
|
|
@@ -52,7 +52,7 @@ export default class SessionCreateMethod {
|
|
|
52
52
|
name: "string? — session name (auto-generated if omitted)",
|
|
53
53
|
projectRoot: "string? — absolute path to the client's workspace; null/omitted = headless mode (no disk side-effects on file ops)",
|
|
54
54
|
constraints: "array? — [{effect, glob}] membership overlay seeded atomically at creation so turn-1's manifest is right with no follow-up RPC. effect: pick (admit a file git misses / the sole source when headless) | hide (drop a tracked match) | view (read-only) | repo (declare a git repo folder anywhere — its members join the manifest, addressed relative to the project root: clean under it, `..`-prefixed outside). glob: node:path glob vs workspace-relative paths (a folder for repo).",
|
|
55
|
-
settings: "object? — client-chosen open-context, persisted per session, read at turn-0 over env. {
|
|
55
|
+
settings: "object? — client-chosen open-context, persisted per session, read at turn-0 over env. { filesItems?: number (-1 full | 0 off | N first-N; replaces PLURNK_FILES_ITEMS), mdDocs?: [{alias, content}] (unioned with server PLURNK_MD_* docs; client wins on alias collision), client?: string (#249 — session-stable frontend id, e.g. 'plurnk.nvim/1.4.0', forwarded to the plurnk provider as Plurnk-Client; dropped by other providers) }",
|
|
56
56
|
},
|
|
57
57
|
});
|
|
58
58
|
registry.registerNotification("session/created", {
|
|
@@ -80,7 +80,7 @@ export default class SessionCreateMethod {
|
|
|
80
80
|
return { effect: e.effect, glob: e.glob };
|
|
81
81
|
});
|
|
82
82
|
}
|
|
83
|
-
// #231 — validate + serialize the client open-context bag.
|
|
83
|
+
// #231 — validate + serialize the client open-context bag. filesItems is a scalar
|
|
84
84
|
// (replace); mdDocs is [{alias, content}] (union'd with env at turn-0). Alias is a clean
|
|
85
85
|
// entry-name fragment ([\w.-]) since it becomes plurnk:///<alias>.md. Returns JSON ('{}'
|
|
86
86
|
// when absent). Operator-arcane knobs stay env-only by omission — this is the client surface.
|
|
@@ -91,11 +91,11 @@ export default class SessionCreateMethod {
|
|
|
91
91
|
throw new Error("session.create: settings must be an object");
|
|
92
92
|
const r = raw;
|
|
93
93
|
const out = {};
|
|
94
|
-
if (r.
|
|
95
|
-
if (typeof r.
|
|
96
|
-
throw new Error("session.create: settings.
|
|
94
|
+
if (r.filesItems !== undefined) {
|
|
95
|
+
if (typeof r.filesItems !== "number" || !Number.isInteger(r.filesItems)) {
|
|
96
|
+
throw new Error("session.create: settings.filesItems must be an integer (-1 full | 0 off | N first-N)");
|
|
97
97
|
}
|
|
98
|
-
out.
|
|
98
|
+
out.filesItems = r.filesItems;
|
|
99
99
|
}
|
|
100
100
|
// #232 — tighten-only ceilings: a client may narrow, never widen (composed
|
|
101
101
|
// most-restrictive-wins at each read-site). maxCommands min()s the env ceiling;
|
|
@@ -111,13 +111,6 @@ export default class SessionCreateMethod {
|
|
|
111
111
|
throw new Error("session.create: settings.git must be a boolean (false denies git for the session)");
|
|
112
112
|
out.git = r.git;
|
|
113
113
|
}
|
|
114
|
-
// #268 — per-session OVERRIDE of the service AGENTS auto-load (env PLURNK_AGENTS_AUTO / FILES).
|
|
115
|
-
// The service owns the pick + read; this just forces it on/off for one session (else env default).
|
|
116
|
-
if (r.autoReadAgents !== undefined) {
|
|
117
|
-
if (typeof r.autoReadAgents !== "boolean")
|
|
118
|
-
throw new Error("session.create: settings.autoReadAgents must be a boolean (per-session override of PLURNK_AGENTS_AUTO)");
|
|
119
|
-
out.autoReadAgents = r.autoReadAgents;
|
|
120
|
-
}
|
|
121
114
|
// #249 — session-stable frontend id (e.g. "plurnk.nvim/1.4.0"), forwarded to the plurnk
|
|
122
115
|
// provider as Plurnk-Client telemetry; ignored by every other provider. Self-identified.
|
|
123
116
|
if (r.client !== undefined) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"session_create.js","sourceRoot":"","sources":["../../../src/server/methods/session_create.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAGvC,OAAO,QAAQ,MAAM,gBAAgB,CAAC;AACtC,OAAO,aAAa,MAAM,8BAA8B,CAAC;AAEzD,gFAAgF;AAChF,+EAA+E;AAC/E,6EAA6E;AAC7E,MAAM,kBAAkB,GAAwB,IAAI,GAAG,CAAC,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;AAE1F,MAAM,CAAC,OAAO,OAAO,mBAAmB;IACpC,MAAM,CAAC,QAAQ,CAAC,QAAwB;QACpC,yFAAyF;QACzF,gGAAgG;QAChG,QAAQ,CAAC,cAAc,CAAC,gBAAgB,EAAE;YACtC,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,EAAE;gBAC3B,MAAM,CAAC,GAAG,MAAmG,CAAC;gBAC9G,MAAM,WAAW,GAAG,CAAC,CAAC,WAAW,IAAI,IAAI,CAAC;gBAC1C,IAAI,WAAW,KAAK,IAAI,EAAE,CAAC;oBACvB,IAAI,OAAO,WAAW,KAAK,QAAQ,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;wBAC9D,MAAM,IAAI,KAAK,CAAC,gEAAgE,CAAC,CAAC;oBACtF,CAAC;oBACD,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,EAAE,CAAC;wBAC3B,MAAM,IAAI,KAAK,CAAC,sDAAsD,CAAC,CAAC;oBAC5E,CAAC;gBACL,CAAC;gBACD,oEAAoE;gBACpE,wEAAwE;gBACxE,0DAA0D;gBAC1D,MAAM,WAAW,GAAG,mBAAmB,CAAC,iBAAiB,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC;gBACzE,0EAA0E;gBAC1E,
|
|
1
|
+
{"version":3,"file":"session_create.js","sourceRoot":"","sources":["../../../src/server/methods/session_create.ts"],"names":[],"mappings":"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"}
|
package/docs/run.md
CHANGED
|
@@ -1,3 +1,5 @@
|
|
|
1
1
|
# `run://` — sibling agent runs
|
|
2
2
|
|
|
3
|
-
Sister agent runs in this session. `run
|
|
3
|
+
Sister agent runs in this session. `run://.` is you; `run://<name>` is a sibling. `EDIT(run://name):prompt` SPAWNS a new sibling seeded with that prompt; `SEND(run://name):msg` messages a sibling, waking it if idle; `COPY(run://.):prompt` FORKS — branches a run with your log so far, then continues it with the prompt; `KILL(run://name)` ENDS a sibling. Siblings share this session's files and entries; only the conversation log is private to each.
|
|
4
|
+
|
|
5
|
+
The slash count is the discriminator: **control** addresses the run by NAME as authority — `run://name`, two slashes, no path. **Storage** addresses an entry — `run://name/path` reads a sibling's private scratch, `run:///path` (three slashes, empty authority) writes your own. So `EDIT(run://worker):…` spawns a worker; `EDIT(run:///todo.md):…` writes a note to your own scratch.
|
|
@@ -93,9 +93,17 @@ CREATE TABLE IF NOT EXISTS turns (
|
|
|
93
93
|
usage_completion INTEGER NOT NULL DEFAULT 0 CHECK (usage_completion >= 0),
|
|
94
94
|
usage_cached INTEGER NOT NULL DEFAULT 0 CHECK (usage_cached >= 0),
|
|
95
95
|
usage_cost_pico INTEGER NOT NULL DEFAULT 0 CHECK (usage_cost_pico >= 0),
|
|
96
|
+
-- #274 — the context window of the model that RAN this turn (provider.contextSize), so the
|
|
97
|
+
-- gauge denominator matches the loop's actual model under any /model switch. NULL = the
|
|
98
|
+
-- provider can't report a window (the client omits the gauge).
|
|
99
|
+
usage_context_size INTEGER CHECK (usage_context_size IS NULL OR usage_context_size >= 1),
|
|
96
100
|
packet TEXT NOT NULL CHECK (json_valid(packet)),
|
|
97
101
|
finish_reason TEXT,
|
|
98
102
|
model TEXT NOT NULL DEFAULT 'unknown' CHECK (length(model) >= 1),
|
|
103
|
+
-- #252 — opaque provider→client metadata passthrough (e.g. balancePico). Stored
|
|
104
|
+
-- UNENFORCED (json_valid only, no schema): the canonical-field contract lives between
|
|
105
|
+
-- the provider framework (normalizes) and the client (renders), never the service.
|
|
106
|
+
meta TEXT NOT NULL DEFAULT '{}' CHECK (json_valid(meta)),
|
|
99
107
|
FOREIGN KEY (loop_id) REFERENCES loops(id) ON DELETE CASCADE
|
|
100
108
|
) STRICT;
|
|
101
109
|
|
|
@@ -268,7 +276,13 @@ CREATE TABLE IF NOT EXISTS log_entries (
|
|
|
268
276
|
-- NULL = the owning run itself (self), rendered without a run= label.
|
|
269
277
|
source TEXT,
|
|
270
278
|
|
|
271
|
-
|
|
279
|
+
-- 'error' is an ACTIONLESS row (§telemetry — errors are log items): a parse failure that
|
|
280
|
+
-- produced no op still records a log entry (op='error', status_rx≥400, no target) so the model
|
|
281
|
+
-- can fold/kill/recall its own mistakes like any other log row — one budget surface, the log.
|
|
282
|
+
-- 'model' is an ACTIONLESS row too (§model-entry): the model's own verbatim emission, mirrored
|
|
283
|
+
-- back as a foldable log item so it can finally SEE its prior output (born folded; the turn-0
|
|
284
|
+
-- exemplar is born open). text/vnd.plurnk-typed; OPEN/FOLD/KILL-able like any row.
|
|
285
|
+
op TEXT NOT NULL CHECK (op IN ('FIND', 'READ', 'EDIT', 'COPY', 'MOVE', 'OPEN', 'FOLD', 'SEND', 'EXEC', 'KILL', 'PLAN', 'error', 'model')),
|
|
272
286
|
suffix TEXT NOT NULL DEFAULT '',
|
|
273
287
|
signal TEXT CHECK (signal IS NULL OR json_valid(signal)),
|
|
274
288
|
|
|
@@ -413,6 +427,12 @@ CREATE TABLE IF NOT EXISTS subscriptions (
|
|
|
413
427
|
scheme TEXT NOT NULL CHECK (length(scheme) > 0),
|
|
414
428
|
handle TEXT NOT NULL CHECK (length(handle) > 0),
|
|
415
429
|
opened_at TEXT NOT NULL DEFAULT (strftime('%Y-%m-%dT%H:%M:%fZ', 'now')),
|
|
430
|
+
-- grammar 0.74.20 EXEC `<T,P>` poll cadence (seconds). NULL = not polled. While the owning
|
|
431
|
+
-- loop hibernates (202), the daemon wakes it every poll_seconds to inspect this stream (§exec-poll).
|
|
432
|
+
poll_seconds INTEGER CHECK (poll_seconds IS NULL OR poll_seconds > 0),
|
|
433
|
+
-- EXEC `<0>` — turn-scoped: the stream is reaped at the run's next pre-turn so it never survives
|
|
434
|
+
-- into the subsequent turn; its terminal output surfaces born-OPEN like any conclusion. §exec-poll
|
|
435
|
+
turn_scoped INTEGER NOT NULL DEFAULT 0 CHECK (turn_scoped IN (0, 1)),
|
|
416
436
|
closed_at TEXT,
|
|
417
437
|
close_status INTEGER CHECK (close_status IS NULL OR (close_status BETWEEN 100 AND 599)),
|
|
418
438
|
CHECK ((closed_at IS NULL AND close_status IS NULL)
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@plurnk/plurnk-service",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.57.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",
|
|
@@ -33,7 +33,7 @@
|
|
|
33
33
|
"start": "node src/service.ts",
|
|
34
34
|
"test:lint": "tsc --noEmit",
|
|
35
35
|
"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
|
-
"test:intg": "npm run test:clean-tmp &&
|
|
36
|
+
"test:intg": "npm run test:clean-tmp && PLURNK_FILES_ITEMS=0 node --env-file-if-exists=.env.example --env-file-if-exists=.env --env-file-if-exists=.env.test --test --test-concurrency=1 --test-timeout=30000 test/intg/*.test.ts",
|
|
37
37
|
"test:live": "npm run test:clean-tmp && node --env-file-if-exists=.env.example --env-file-if-exists=.env --env-file-if-exists=.env.test --test --test-concurrency=1 test/live/*.test.ts",
|
|
38
38
|
"test:demo": "npm run test:clean-tmp && node --env-file-if-exists=.env.example --env-file-if-exists=.env --env-file-if-exists=.env.test --test --test-concurrency=1 test/demo/*.test.ts",
|
|
39
39
|
"test:all": "npm run test:lint && npm run test:unit && npm run test:intg && npm run test:demo",
|
|
@@ -54,16 +54,16 @@
|
|
|
54
54
|
"prepublishOnly": "npm run deps:audit"
|
|
55
55
|
},
|
|
56
56
|
"dependencies": {
|
|
57
|
-
"@plurnk/plurnk-execs": "0.4.
|
|
58
|
-
"@plurnk/plurnk-execs-all": "0.1.
|
|
59
|
-
"@plurnk/plurnk-grammar": "0.74.
|
|
60
|
-
"@plurnk/plurnk-mimetypes": "0.15.
|
|
57
|
+
"@plurnk/plurnk-execs": "0.4.19",
|
|
58
|
+
"@plurnk/plurnk-execs-all": "0.1.10",
|
|
59
|
+
"@plurnk/plurnk-grammar": "0.74.32",
|
|
60
|
+
"@plurnk/plurnk-mimetypes": "0.15.36",
|
|
61
61
|
"@plurnk/plurnk-mimetypes-all": "0.5.4",
|
|
62
|
-
"@plurnk/plurnk-mimetypes-text-html": "0.6.
|
|
63
|
-
"@plurnk/plurnk-providers": "0.
|
|
62
|
+
"@plurnk/plurnk-mimetypes-text-html": "0.6.6",
|
|
63
|
+
"@plurnk/plurnk-providers": "0.19.0",
|
|
64
64
|
"@plurnk/plurnk-providers-all": "0.10.0",
|
|
65
|
-
"@plurnk/plurnk-schemes": "0.
|
|
66
|
-
"@plurnk/plurnk-schemes-all": "0.2.
|
|
65
|
+
"@plurnk/plurnk-schemes": "0.31.6",
|
|
66
|
+
"@plurnk/plurnk-schemes-all": "0.2.21",
|
|
67
67
|
"@possumtech/sqlrite": "5.2.0",
|
|
68
68
|
"diff": "^9.0.0",
|
|
69
69
|
"ws": "^8.20.1"
|
package/requirements.md
CHANGED
|
@@ -1,5 +1,9 @@
|
|
|
1
1
|
YOU MUST ONLY use the Plurnk System Grammar: <<OPsuffix[signal]?(target)?<Line/Result>?:body?:OPsuffix
|
|
2
2
|
|
|
3
|
+
YOU MUST avoid and recover from token budget overflow by using FOLD or KILL operations on less relevant log items.
|
|
4
|
+
|
|
5
|
+
YOU MUST SEND[102] to submit and receive the results of operations.
|
|
6
|
+
|
|
3
7
|
YOU MUST terminate the turn by SENDing a message to the user with the proper status code.
|
|
4
8
|
|
|
5
9
|
Example turn: <<PLAN:retrieve project document:PLAN <<READ(project.md)::READ <<SEND[102]:fetching project document.:SEND
|