@plurnk/plurnk-service 1.7.0 → 1.8.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.defaults +29 -42
- package/INSTALL.md +49 -10
- package/README.md +11 -1
- package/SPEC.md +631 -279
- package/digest-sql/channel-dispositions/dispositions.sql +15 -0
- package/digest-sql/channel-state/state.sql +6 -0
- package/digest-sql/curation/curation.sql +5 -0
- package/digest-sql/derivations/derivations.sql +4 -0
- package/digest-sql/embeddings/embeddings.sql +4 -0
- package/digest-sql/entry-dispositions/dispositions.sql +15 -0
- package/digest-sql/entry-state/state.sql +6 -0
- package/digest-sql/token-counts/token-counts.sql +2 -0
- package/dist/Paths.d.ts +2 -5
- package/dist/Paths.d.ts.map +1 -1
- package/dist/Paths.js +9 -21
- package/dist/Paths.js.map +1 -1
- package/dist/build-info.json +1 -1
- package/dist/content/read-projector.d.ts.map +1 -1
- package/dist/content/read-projector.js +4 -3
- package/dist/content/read-projector.js.map +1 -1
- package/dist/core/BudgetReadout.d.ts.map +1 -1
- package/dist/core/BudgetReadout.js +12 -22
- package/dist/core/BudgetReadout.js.map +1 -1
- package/dist/core/ChannelWrite.d.ts.map +1 -1
- package/dist/core/ChannelWrite.js.map +1 -1
- package/dist/core/ChannelWrite.sql +2 -1
- package/dist/core/Dispatcher.d.ts +7 -6
- package/dist/core/Dispatcher.d.ts.map +1 -1
- package/dist/core/Dispatcher.js +34 -88
- package/dist/core/Dispatcher.js.map +1 -1
- package/dist/core/Engine.d.ts +11 -8
- package/dist/core/Engine.d.ts.map +1 -1
- package/dist/core/Engine.js +45 -27
- package/dist/core/Engine.js.map +1 -1
- package/dist/core/Engine.sql +112 -107
- package/dist/core/ExecutorRegistry.d.ts +8 -2
- package/dist/core/ExecutorRegistry.d.ts.map +1 -1
- package/dist/core/ExecutorRegistry.js +6 -3
- package/dist/core/ExecutorRegistry.js.map +1 -1
- package/dist/core/HostPaths.d.ts +29 -0
- package/dist/core/HostPaths.d.ts.map +1 -0
- package/dist/core/HostPaths.js +74 -0
- package/dist/core/HostPaths.js.map +1 -0
- package/dist/core/LegacyHome.d.ts +10 -0
- package/dist/core/LegacyHome.d.ts.map +1 -0
- package/dist/core/LegacyHome.js +170 -0
- package/dist/core/LegacyHome.js.map +1 -0
- package/dist/core/LogBody.d.ts +1 -1
- package/dist/core/LogBody.d.ts.map +1 -1
- package/dist/core/LogBody.js +2 -2
- package/dist/core/LogBody.js.map +1 -1
- package/dist/core/LogEntryProjection.js +1 -1
- package/dist/core/LogEntryProjection.js.map +1 -1
- package/dist/core/LogVisibility.d.ts +28 -0
- package/dist/core/LogVisibility.d.ts.map +1 -0
- package/dist/core/LogVisibility.js +215 -0
- package/dist/core/LogVisibility.js.map +1 -0
- package/dist/core/LoopLifecycle.d.ts +1 -0
- package/dist/core/LoopLifecycle.d.ts.map +1 -1
- package/dist/core/LoopLifecycle.js +8 -0
- package/dist/core/LoopLifecycle.js.map +1 -1
- package/dist/core/LoopLifecycle.sql +10 -0
- package/dist/core/OperatorConfig.d.ts +6 -0
- package/dist/core/OperatorConfig.d.ts.map +1 -0
- package/dist/core/OperatorConfig.js +92 -0
- package/dist/core/OperatorConfig.js.map +1 -0
- package/dist/core/OverflowTurn.d.ts +11 -0
- package/dist/core/OverflowTurn.d.ts.map +1 -0
- package/dist/core/OverflowTurn.js +77 -0
- package/dist/core/OverflowTurn.js.map +1 -0
- package/dist/core/Owner.js +2 -2
- package/dist/core/Owner.js.map +1 -1
- package/dist/core/PacketBuilder.d.ts +3 -15
- package/dist/core/PacketBuilder.d.ts.map +1 -1
- package/dist/core/PacketBuilder.js +48 -121
- package/dist/core/PacketBuilder.js.map +1 -1
- package/dist/core/ProblemLog.js +1 -1
- package/dist/core/ProblemLog.js.map +1 -1
- package/dist/core/ProposalLifecycle.d.ts.map +1 -1
- package/dist/core/ProposalLifecycle.js +3 -23
- package/dist/core/ProposalLifecycle.js.map +1 -1
- package/dist/core/ProviderInstantiate.d.ts +9 -5
- package/dist/core/ProviderInstantiate.d.ts.map +1 -1
- package/dist/core/ProviderInstantiate.js +99 -104
- package/dist/core/ProviderInstantiate.js.map +1 -1
- package/dist/core/ResourceMutations.d.ts.map +1 -1
- package/dist/core/ResourceMutations.js +5 -3
- package/dist/core/ResourceMutations.js.map +1 -1
- package/dist/core/SchemeRegistry.d.ts +0 -1
- package/dist/core/SchemeRegistry.d.ts.map +1 -1
- package/dist/core/SchemeRegistry.js +7 -11
- package/dist/core/SchemeRegistry.js.map +1 -1
- package/dist/core/ToolResources.d.ts +19 -0
- package/dist/core/ToolResources.d.ts.map +1 -0
- package/dist/core/ToolResources.js +122 -0
- package/dist/core/ToolResources.js.map +1 -0
- package/dist/core/Turn.d.ts +27 -0
- package/dist/core/Turn.d.ts.map +1 -0
- package/dist/core/Turn.js +43 -0
- package/dist/core/Turn.js.map +1 -0
- package/dist/core/Turn.sql +72 -0
- package/dist/core/TurnOps.d.ts +7 -0
- package/dist/core/TurnOps.d.ts.map +1 -0
- package/dist/core/TurnOps.js +63 -0
- package/dist/core/TurnOps.js.map +1 -0
- package/dist/core/TurnRunner.d.ts +12 -4
- package/dist/core/TurnRunner.d.ts.map +1 -1
- package/dist/core/TurnRunner.js +1045 -898
- package/dist/core/TurnRunner.js.map +1 -1
- package/dist/core/WorkerName.d.ts +1 -1
- package/dist/core/WorkerName.d.ts.map +1 -1
- package/dist/core/env-defaults.d.ts.map +1 -1
- package/dist/core/env-defaults.js +7 -5
- package/dist/core/env-defaults.js.map +1 -1
- package/dist/core/fork.d.ts.map +1 -1
- package/dist/core/fork.js +15 -4
- package/dist/core/fork.js.map +1 -1
- package/dist/core/fork.sql +57 -27
- package/dist/core/git-env.d.ts +0 -1
- package/dist/core/git-env.d.ts.map +1 -1
- package/dist/core/git-env.js +0 -3
- package/dist/core/git-env.js.map +1 -1
- package/dist/core/git-membership.d.ts.map +1 -1
- package/dist/core/git-membership.js +10 -26
- package/dist/core/git-membership.js.map +1 -1
- package/dist/core/git-state.d.ts.map +1 -1
- package/dist/core/git-state.js +13 -14
- package/dist/core/git-state.js.map +1 -1
- package/dist/core/operation-target-groups.d.ts +3 -0
- package/dist/core/operation-target-groups.d.ts.map +1 -0
- package/dist/core/operation-target-groups.js +53 -0
- package/dist/core/operation-target-groups.js.map +1 -0
- package/dist/core/packet-inject.d.ts +0 -1
- package/dist/core/packet-inject.d.ts.map +1 -1
- package/dist/core/packet-inject.js +6 -13
- package/dist/core/packet-inject.js.map +1 -1
- package/dist/core/packet-wire.d.ts +4 -0
- package/dist/core/packet-wire.d.ts.map +1 -1
- package/dist/core/packet-wire.js +208 -44
- package/dist/core/packet-wire.js.map +1 -1
- package/dist/core/plurnk-uri.d.ts +1 -1
- package/dist/core/plurnk-uri.d.ts.map +1 -1
- package/dist/core/plurnk-uri.js +3 -3
- package/dist/core/plurnk-uri.js.map +1 -1
- package/dist/core/teaching.d.ts.map +1 -1
- package/dist/core/teaching.js +4 -5
- package/dist/core/teaching.js.map +1 -1
- package/dist/core/worker-settings.d.ts +9 -0
- package/dist/core/worker-settings.d.ts.map +1 -0
- package/dist/core/worker-settings.js +25 -0
- package/dist/core/worker-settings.js.map +1 -0
- package/dist/core/workspace-settings.d.ts +0 -11
- package/dist/core/workspace-settings.d.ts.map +1 -1
- package/dist/core/workspace-settings.js +3 -47
- package/dist/core/workspace-settings.js.map +1 -1
- package/dist/digest/Digest.d.ts.map +1 -1
- package/dist/digest/Digest.js +164 -92
- package/dist/digest/Digest.js.map +1 -1
- package/dist/digest/digest.sql +8 -2
- package/dist/observe/genai.d.ts +9 -0
- package/dist/observe/genai.d.ts.map +1 -0
- package/dist/observe/genai.js +31 -0
- package/dist/observe/genai.js.map +1 -0
- package/dist/observe/spans.d.ts +3 -3
- package/dist/observe/spans.d.ts.map +1 -1
- package/dist/observe/spans.js +20 -5
- package/dist/observe/spans.js.map +1 -1
- package/dist/schemes/EffectPolicy.d.ts +3 -0
- package/dist/schemes/EffectPolicy.d.ts.map +1 -1
- package/dist/schemes/EffectPolicy.js +38 -6
- package/dist/schemes/EffectPolicy.js.map +1 -1
- package/dist/schemes/Exec.d.ts.map +1 -1
- package/dist/schemes/Exec.js +55 -13
- package/dist/schemes/Exec.js.map +1 -1
- package/dist/schemes/Log.d.ts +6 -2
- package/dist/schemes/Log.d.ts.map +1 -1
- package/dist/schemes/Log.js +73 -22
- package/dist/schemes/Log.js.map +1 -1
- package/dist/schemes/Log.sql +25 -7
- package/dist/schemes/Prompt.d.ts.map +1 -1
- package/dist/schemes/Prompt.js +1 -2
- package/dist/schemes/Prompt.js.map +1 -1
- package/dist/schemes/QuestionTool.d.ts +10 -0
- package/dist/schemes/QuestionTool.d.ts.map +1 -0
- package/dist/schemes/QuestionTool.js +81 -0
- package/dist/schemes/QuestionTool.js.map +1 -0
- package/dist/schemes/Skill.d.ts.map +1 -1
- package/dist/schemes/Skill.js +4 -1
- package/dist/schemes/Skill.js.map +1 -1
- package/dist/schemes/Worker.d.ts.map +1 -1
- package/dist/schemes/Worker.js +20 -3
- package/dist/schemes/Worker.js.map +1 -1
- package/dist/schemes/_entry-crud.sql +19 -1
- package/dist/schemes/_entry-find.d.ts +5 -3
- package/dist/schemes/_entry-find.d.ts.map +1 -1
- package/dist/schemes/_entry-find.js +102 -22
- package/dist/schemes/_entry-find.js.map +1 -1
- package/dist/schemes/_entry-find.sql +8 -6
- package/dist/schemes/_entry-graph.sql +2 -6
- package/dist/schemes/_entry-manifest.d.ts.map +1 -1
- package/dist/schemes/_entry-manifest.js +12 -1
- package/dist/schemes/_entry-manifest.js.map +1 -1
- package/dist/schemes/_search-index.d.ts.map +1 -1
- package/dist/schemes/_search-index.js +37 -25
- package/dist/schemes/_search-index.js.map +1 -1
- package/dist/server/Daemon.d.ts +58 -7
- package/dist/server/Daemon.d.ts.map +1 -1
- package/dist/server/Daemon.js +551 -113
- package/dist/server/Daemon.js.map +1 -1
- package/dist/server/DrainSupervisor.d.ts +12 -9
- package/dist/server/DrainSupervisor.d.ts.map +1 -1
- package/dist/server/DrainSupervisor.js +59 -10
- package/dist/server/DrainSupervisor.js.map +1 -1
- package/dist/server/client-input.d.ts +5 -2
- package/dist/server/client-input.d.ts.map +1 -1
- package/dist/server/client-input.js +53 -34
- package/dist/server/client-input.js.map +1 -1
- package/dist/server/dispatch-as-plurnk.d.ts.map +1 -1
- package/dist/server/dispatch-as-plurnk.js +28 -6
- package/dist/server/dispatch-as-plurnk.js.map +1 -1
- package/dist/server/drain.sql +26 -11
- package/dist/server/envelope.d.ts +1 -1
- package/dist/server/envelope.d.ts.map +1 -1
- package/dist/server/envelope.js +4 -4
- package/dist/server/envelope.js.map +1 -1
- package/dist/server/envelope.sql +25 -1
- package/dist/server/lifecycle-recovery.sql +11 -1
- package/dist/server/logEntry.d.ts +2 -1
- package/dist/server/logEntry.d.ts.map +1 -1
- package/dist/server/logEntry.js +3 -2
- package/dist/server/logEntry.js.map +1 -1
- package/dist/server/logEntry.sql +7 -0
- package/dist/server/loop-model.d.ts +2 -2
- package/dist/server/loop-model.d.ts.map +1 -1
- package/dist/server/loop-model.js +23 -33
- package/dist/server/loop-model.js.map +1 -1
- package/dist/server/loopDocs.d.ts.map +1 -1
- package/dist/server/loopDocs.js +61 -10
- package/dist/server/loopDocs.js.map +1 -1
- package/dist/server/loopDocs.sql +4 -2
- package/dist/server/model-catalog.d.ts +3 -0
- package/dist/server/model-catalog.d.ts.map +1 -0
- package/dist/server/model-catalog.js +83 -0
- package/dist/server/model-catalog.js.map +1 -0
- package/dist/server/model-route.d.ts +7 -0
- package/dist/server/model-route.d.ts.map +1 -0
- package/dist/server/model-route.js +47 -0
- package/dist/server/model-route.js.map +1 -0
- package/dist/server/module-discovery.d.ts +13 -0
- package/dist/server/module-discovery.d.ts.map +1 -0
- package/dist/server/module-discovery.js +78 -0
- package/dist/server/module-discovery.js.map +1 -0
- package/dist/server/skillDocs.d.ts +9 -0
- package/dist/server/skillDocs.d.ts.map +1 -0
- package/dist/server/skillDocs.js +212 -0
- package/dist/server/skillDocs.js.map +1 -0
- package/dist/server/skillDocs.sql +14 -0
- package/dist/service.d.ts.map +1 -1
- package/dist/service.js +182 -123
- package/dist/service.js.map +1 -1
- package/migrations/001_schema.sql +424 -65
- package/package.json +37 -37
- package/dist/core/ExecutableTools.d.ts +0 -11
- package/dist/core/ExecutableTools.d.ts.map +0 -1
- package/dist/core/ExecutableTools.js +0 -49
- package/dist/core/ExecutableTools.js.map +0 -1
- package/dist/core/JournalTurn.d.ts +0 -9
- package/dist/core/JournalTurn.d.ts.map +0 -1
- package/dist/core/JournalTurn.js +0 -14
- package/dist/core/JournalTurn.js.map +0 -1
- package/dist/core/JournalTurn.sql +0 -10
- package/dist/core/git-iso.d.ts +0 -13
- package/dist/core/git-iso.d.ts.map +0 -1
- package/dist/core/git-iso.js +0 -267
- package/dist/core/git-iso.js.map +0 -1
- package/dist/core/search-gate.d.ts +0 -17
- package/dist/core/search-gate.d.ts.map +0 -1
- package/dist/core/search-gate.js +0 -77
- package/dist/core/search-gate.js.map +0 -1
- package/dist/digest/Digest.sql +0 -1
package/.env.defaults
CHANGED
|
@@ -1,8 +1,7 @@
|
|
|
1
1
|
# ⚠ REFERENCE — this is @plurnk/plurnk-service's shipped .env.defaults: the operative floor
|
|
2
|
-
# for its knobs and
|
|
3
|
-
#
|
|
4
|
-
#
|
|
5
|
-
# (yours, seeded once, never touched) or ./.env.
|
|
2
|
+
# for its knobs and source of the derived --<knob> CLI flags. Run
|
|
3
|
+
# `plurnk-service config defaults` for the complete owner-labelled installed aggregate. Put user
|
|
4
|
+
# overrides in $XDG_CONFIG_HOME/plurnk/.env (seeded once, never overwritten), ./.env, or the shell.
|
|
6
5
|
#
|
|
7
6
|
# THE STANDARD (every plurnk package, third-party included): ship a `.env.defaults` at your
|
|
8
7
|
# package root declaring YOUR knobs (prefix = your package's name); the file IS the documentation.
|
|
@@ -12,16 +11,18 @@
|
|
|
12
11
|
#
|
|
13
12
|
# Source classes (low → high precedence; higher classes win):
|
|
14
13
|
# assembled .env.defaults floor (this file + every installed member's, uniqueness-checked)
|
|
15
|
-
# <
|
|
14
|
+
# < $XDG_CONFIG_HOME/plurnk/.env (your user config — seeded once, yours to keep)
|
|
16
15
|
# < ./.env (per-project, current directory)
|
|
17
16
|
# < --env-file=… / --config=…
|
|
18
17
|
# < shell environment
|
|
19
18
|
# < --<knob> CLI flags (the 1:1 mirror: --service-max-turns <-> PLURNK_SERVICE_MAX_TURNS)
|
|
20
|
-
#
|
|
19
|
+
# Later repeated explicit files win.
|
|
21
20
|
# Feature-flag bools use `=== "1"` exactly, never `=== "true"`. `~/` expands to your home.
|
|
22
21
|
|
|
23
22
|
# --- Storage ---
|
|
24
|
-
|
|
23
|
+
# Empty derives $XDG_DATA_HOME/plurnk/plurnk.db (default ~/.local/share/plurnk/plurnk.db).
|
|
24
|
+
# An explicit non-empty path overrides it; `~/` expands to home.
|
|
25
|
+
PLURNK_SERVICE_DB_PATH=
|
|
25
26
|
|
|
26
27
|
# --- Sqlite tuning (curated knobs passed through to sqlrite; optional) ---
|
|
27
28
|
# sqlrite already sets the safe posture (WAL + synchronous=NORMAL + busy_timeout=5000ms).
|
|
@@ -42,8 +43,9 @@ PLURNK_HOST=127.0.0.1
|
|
|
42
43
|
PLURNK_PORT=3044
|
|
43
44
|
|
|
44
45
|
# --- Loop control ---
|
|
45
|
-
# Optional default child-
|
|
46
|
-
# its spawning loop's
|
|
46
|
+
# Optional default child-model selector (declared alias or provider/model route).
|
|
47
|
+
# Unset = each WORK/FORK child inherits its spawning loop's model. Clients may
|
|
48
|
+
# override this per top-level loop.
|
|
47
49
|
# PLURNK_MODEL_CHILD=fast
|
|
48
50
|
# Operator turn ceiling. -1 (default) = no cap (loops end via SEND, provider capacity,
|
|
49
51
|
# strikes, or cycle detection). A positive value is an inviolable hard cap a
|
|
@@ -56,6 +58,9 @@ PLURNK_SERVICE_MAX_TURNS=-1
|
|
|
56
58
|
PLURNK_SERVICE_MAX_COMMANDS=-1
|
|
57
59
|
# Live & demo test harness story timeout (ms) — 10 minutes (600000ms).
|
|
58
60
|
PLURNK_SERVICE_LIVE_TIMEOUT=600000
|
|
61
|
+
# {§crash-only-stop} — the daemon's settle deadline on stop(): past this the
|
|
62
|
+
# shutdown abandons its waits instead of hanging forever on a wedged child.
|
|
63
|
+
PLURNK_SERVICE_STOP_TIMEOUT_MS=30000
|
|
59
64
|
# Proposal resolution bound (ms). Empty = a stopped world waits for its human indefinitely;
|
|
60
65
|
# a finite positive value auto-cancels unattended (outcome=timeout). Every other explicit
|
|
61
66
|
# value is invalid and fails at the proposal lifecycle owner.
|
|
@@ -63,15 +68,21 @@ PLURNK_SERVICE_PROPOSAL_TIMEOUT_MS=
|
|
|
63
68
|
# Turn-hold runtimes: while a listed runtime's stream is in flight the cycle pauses (no next
|
|
64
69
|
# turn) until it concludes. Bounded by _HOLD_MS, fail-open at the cap. Empty = no holds.
|
|
65
70
|
# A bare name holds all of that runtime's spawns; `<runtime>:<effect>` holds only
|
|
66
|
-
# that effect class.
|
|
67
|
-
|
|
71
|
+
# that effect class. The retired web-search family names are gone; declare operator
|
|
72
|
+
# runtimes explicitly.
|
|
73
|
+
PLURNK_SERVICE_EXEC_HOLD=
|
|
68
74
|
PLURNK_SERVICE_EXEC_HOLD_MS=300000
|
|
75
|
+
# Effect admission overrides ({§effect-policy-tunable}): comma-separated
|
|
76
|
+
# <effect>:<policy> entries (host/read/pure → propose/auto). Unlisted effects
|
|
77
|
+
# keep the default map (host proposes; read/pure auto-run). Empty = defaults.
|
|
78
|
+
PLURNK_SERVICE_EFFECT_POLICY=
|
|
69
79
|
# Optimistic worker settlement: before model dispatch, allow newly started
|
|
70
80
|
# streams or a completion wake with live siblings this many ms to quiesce.
|
|
71
81
|
# Settlement ends immediately at quiescence and never extends its first
|
|
72
82
|
# deadline; survivors follow the monitored lifecycle. 0 = off.
|
|
73
83
|
PLURNK_SERVICE_OPTIMISTIC_WAIT_MS=5000
|
|
74
|
-
# Exec poll backoff (
|
|
84
|
+
# Exec poll backoff ({§exec-poll}, https://github.com/plurnk/plurnk-service/issues/521):
|
|
85
|
+
# a parked exec with NO explicit `<,P>` cadence is no longer
|
|
75
86
|
# park-blind-forever — the loop wakes on an exponential backoff so the model regains a turn to read
|
|
76
87
|
# partial output and re-park a slow long-runner or KILL a stuck one. Wake N fires at BASE·2^min(N,TURNS-1)
|
|
77
88
|
# seconds (60,120,240,…,7680), then holds at the cap. An explicit `<,P>` wins; `<,0>` opts out (blind).
|
|
@@ -123,12 +134,7 @@ PLURNK_SERVICE_GIT_ALLOWED=1
|
|
|
123
134
|
# PLURNK_SERVICE_GIT_AUTO — automatic project-repository membership. =1 includes the Git
|
|
124
135
|
# repository containing project_root; =0 leaves `pick` as the only membership source.
|
|
125
136
|
PLURNK_SERVICE_GIT_AUTO=1
|
|
126
|
-
#
|
|
127
|
-
# binary. =1 explicitly selects the slower, in-process isomorphic-git backend
|
|
128
|
-
# for a deployment that cannot spawn Git. The two backends never fail over.
|
|
129
|
-
PLURNK_SERVICE_GIT_ISO=0
|
|
130
|
-
# Maximum stdout/stderr payload accepted from one native Git subprocess. The
|
|
131
|
-
# optional in-process reader does not use this bound.
|
|
137
|
+
# Maximum stdout/stderr payload accepted from one native Git subprocess.
|
|
132
138
|
PLURNK_SERVICE_GIT_OUTPUT_MAX_BYTES=67108864
|
|
133
139
|
|
|
134
140
|
# Ordinary bounded OPEN-body projection. READ/FIND results and PLAN working
|
|
@@ -142,17 +148,6 @@ PLURNK_SERVICE_PREVIEW_CHARS=2560
|
|
|
142
148
|
# line anchor. 0 authenticates only the addressed line.
|
|
143
149
|
PLURNK_SERVICE_LINE_ANCHOR_CONTEXT_LINES=2
|
|
144
150
|
|
|
145
|
-
# --- Reference docs (auto-READ at turn 0) ---
|
|
146
|
-
# PLURNK_SERVICE_MD_<ALIAS>=<path> materializes <path>'s markdown as a
|
|
147
|
-
# worker://plurnk/<ALIAS>.md
|
|
148
|
-
# entry the model READs at turn 0 — an idiomatic way to inject standing context
|
|
149
|
-
# (an ordinary entry + READ op, not a bespoke packet section). ~ expands to home;
|
|
150
|
-
# relative paths resolve against the package root. A client may add its own docs
|
|
151
|
-
# per workspace via workspace.create settings.mdDocs (content, not a path); those UNION
|
|
152
|
-
# with these env docs, keyed by alias — the client wins a collision (#231).
|
|
153
|
-
# Commented out = no docs by default. (The operating policy is NOT a doc: readSystemPolicy
|
|
154
|
-
# already renders ~/.plurnk/AGENTS.md as the ## Policy section — pointing a
|
|
155
|
-
# PLURNK_SERVICE_MD_* alias at it injects the same file twice.)
|
|
156
151
|
# Turn-0 catalog preview so a run opens oriented, not blank. Folder-capable schemes use
|
|
157
152
|
# FIND(<scheme>:///*): direct entries plus exact dir/** summaries carrying each subtree's
|
|
158
153
|
# recursive item and token counts. Curated kernel docs remain recursive, demonstrating both
|
|
@@ -195,10 +190,9 @@ PLURNK_SERVICE_PROMPT_PROJECTION=25%
|
|
|
195
190
|
# (PLURNK_PLUGINS_TRUSTED_ONLY lives in @plurnk/plurnk-meta — reader-declares: the
|
|
196
191
|
# trust rule's one implementation lives there and so does its knob.)
|
|
197
192
|
|
|
198
|
-
# PLURNK_SERVICE_DOCS_EXCLUDE — comma list of scheme
|
|
199
|
-
# and
|
|
200
|
-
#
|
|
201
|
-
# are inert (a filter, not a contract).
|
|
193
|
+
# PLURNK_SERVICE_DOCS_EXCLUDE — comma list of scheme names dropped from BOTH the teaching oneliner
|
|
194
|
+
# and its materialized pull-doc on load. Executable tools instead use their one enablement policy,
|
|
195
|
+
# so an enabled tool is always discoverable. Empty → exclude nothing. Unknown names are inert.
|
|
202
196
|
PLURNK_SERVICE_DOCS_EXCLUDE="plurnk,file,exec"
|
|
203
197
|
|
|
204
198
|
# PLURNK_SERVICE_PACKET_INJECT — an operator markdown file injected as a section right after the teaching
|
|
@@ -207,10 +201,9 @@ PLURNK_SERVICE_DOCS_EXCLUDE="plurnk,file,exec"
|
|
|
207
201
|
# PLURNK_SERVICE_PACKET_INJECT="~/injection.md"
|
|
208
202
|
|
|
209
203
|
# PLURNK_SERVICE_POLICY — the operating-policy markdown, rendered as the ## Policy
|
|
210
|
-
# section. Unset = the seeded
|
|
204
|
+
# section. Unset = the seeded $XDG_CONFIG_HOME/plurnk/AGENTS.md; a path = that file;
|
|
205
|
+
# EXPLICITLY empty = policy off.
|
|
211
206
|
# PLURNK_SERVICE_POLICY=
|
|
212
|
-
# PLURNK_SERVICE_PROJECT — a per-project policy markdown (relative to projectRoot). Unset = <root>/AGENTS.md.
|
|
213
|
-
# PLURNK_SERVICE_PROJECT=
|
|
214
207
|
# PLURNK_SERVICE_REQUIREMENTS — Recap source override (relative to the package root).
|
|
215
208
|
# Unset = the packaged requirements.md.
|
|
216
209
|
# PLURNK_SERVICE_REQUIREMENTS=
|
|
@@ -236,12 +229,6 @@ PLURNK_SERVICE_MAX_EMBED_SIZE=0
|
|
|
236
229
|
# hosts/runs that don't want vector search; the Mock bootstrap and constrained benchmarks set it.
|
|
237
230
|
PLURNK_SERVICE_EMBED_DISABLE=0
|
|
238
231
|
|
|
239
|
-
# Which exec runtimes the search gate treats as searches — the per-turn cap and identical-query
|
|
240
|
-
# dedup apply to these (the search family delegates page fetches to the entry() sink; {§exec-entry-sink}).
|
|
241
|
-
PLURNK_SERVICE_SEARCH_RUNTIMES=search
|
|
242
|
-
# Per-turn search flood cap: the (N+1)th search EXEC in one turn is refused 429 (dedup of
|
|
243
|
-
# identical queries is unconditional and separate — it strikes and serves the prior results).
|
|
244
|
-
PLURNK_SERVICE_SEARCH_MAX_PER_TURN=3
|
|
245
232
|
# Comma-separated file pathname patterns omitted from search derivations. Content remains directly
|
|
246
233
|
# readable. Patterns without `/` match the basename; patterns with `/` match the full pathname.
|
|
247
234
|
# Uses body-matcher glob syntax; the first match is the observable exclusion reason. Empty = none.
|
package/INSTALL.md
CHANGED
|
@@ -1,6 +1,10 @@
|
|
|
1
1
|
# Configuring plurnk-service
|
|
2
2
|
|
|
3
|
-
Operator guide. Put machine-specific choices in
|
|
3
|
+
Operator guide. Put machine-specific choices in
|
|
4
|
+
`$XDG_CONFIG_HOME/plurnk/.env` (normally `~/.config/plurnk/.env`). Each
|
|
5
|
+
installed package's `.env.defaults` is the authoritative list and floor for
|
|
6
|
+
the knobs that package owns. `plurnk-service config defaults` projects the
|
|
7
|
+
complete owner-labelled catalog on demand; no generated copy is persisted.
|
|
4
8
|
|
|
5
9
|
## Install
|
|
6
10
|
|
|
@@ -10,7 +14,14 @@ plurnk-service migrate # apply the disposable version-1 schema baseline
|
|
|
10
14
|
plurnk-service start
|
|
11
15
|
```
|
|
12
16
|
|
|
13
|
-
First start creates
|
|
17
|
+
First start creates `$XDG_CONFIG_HOME/plurnk` with `.env` (yours, seeded once
|
|
18
|
+
with three model profiles—**edit this**) and `AGENTS.md` (the operating policy,
|
|
19
|
+
yours). Durable SQLite data defaults to `$XDG_DATA_HOME/plurnk/plurnk.db`. No
|
|
20
|
+
model ships active; the daemon can boot without one, but model loops fail until
|
|
21
|
+
`PLURNK_MODEL` selects a declared alias or exact provider/model route. Use `plurnk-service config`, `config
|
|
22
|
+
edit`, `config defaults`, and `config check` to inspect and maintain the one
|
|
23
|
+
environment cascade. A pre-XDG `~/.plurnk` is never read implicitly; stop the
|
|
24
|
+
old daemon and run `plurnk-service paths migrate` once.
|
|
14
25
|
|
|
15
26
|
The default service includes local embeddings. An explicitly disabled or unavailable embedder makes `~query` fall back to FTS keyword ranking. Set `PLURNK_MIMETYPES_EMBED_BASE_URL` to use a remote OpenAI-compatible embedding endpoint instead.
|
|
16
27
|
|
|
@@ -21,14 +32,20 @@ Higher-priority source classes override lower ones ({§operator-config-precedenc
|
|
|
21
32
|
| Priority | Source | Role |
|
|
22
33
|
|---------:|----------------------------------------|--------------------------------------------------------------------------------------------|
|
|
23
34
|
| 1 | Installed packages' assembled defaults | Versioned floor; one owner per key. A collision fails boot naming both owners. |
|
|
24
|
-
| 2 |
|
|
35
|
+
| 2 | `$XDG_CONFIG_HOME/plurnk/.env` | User configuration, seeded once and never overwritten. |
|
|
25
36
|
| 3 | `./.env` | Configuration for the current working directory. |
|
|
26
37
|
| 4 | `--config=<path>` | One explicit service configuration file. |
|
|
27
38
|
| 5 | `--env-file*` | Repeatable explicit files; later files win. The `-if-exists` form skips absent files. |
|
|
28
39
|
| 6 | Shell environment | Process-level operator values. |
|
|
29
40
|
| 7 | `--<flag>` | Highest-priority service CLI value. |
|
|
30
41
|
|
|
31
|
-
|
|
42
|
+
The service CLI mirrors only the `PLURNK_*` variables declared by the service
|
|
43
|
+
package's own `.env.defaults`: strip `PLURNK_`, lowercase, and replace `_` with
|
|
44
|
+
`-` (`PLURNK_SERVICE_MAX_TURNS` ↔ `--service-max-turns`). Installed plugin
|
|
45
|
+
knobs remain available through env/config files and `config defaults` without
|
|
46
|
+
implicitly expanding the service executable's CLI
|
|
47
|
+
({§operator-config-cli-flags}). Feature-flag booleans use `1`, not `true`;
|
|
48
|
+
`~/` expands to home.
|
|
32
49
|
|
|
33
50
|
## The prefix law (who owns a flag)
|
|
34
51
|
|
|
@@ -36,6 +53,26 @@ Family prefixes identify the semantic owner: `PLURNK_SERVICE_*` (this daemon), `
|
|
|
36
53
|
|
|
37
54
|
When a value is required, an unset or retired name fails boot naming the violated key rather than selecting a silent default.
|
|
38
55
|
|
|
56
|
+
## Agent Skills
|
|
57
|
+
|
|
58
|
+
Plurnk reads the standard universal roots: project skills from
|
|
59
|
+
`.agents/skills/<name>/SKILL.md`, then user-global skills from
|
|
60
|
+
`~/.agents/skills/<name>/SKILL.md`. Package-bundled skills form
|
|
61
|
+
the final layer; the default installation includes an attributed, pinned
|
|
62
|
+
`find-skills`. Project names shadow global names, which shadow bundled names.
|
|
63
|
+
Plurnk never copies a bundled skill into the shared global root and does not
|
|
64
|
+
maintain a separate skill registry.
|
|
65
|
+
|
|
66
|
+
Use the ecosystem CLI when you deliberately install something. A project
|
|
67
|
+
installation is the ordinary default:
|
|
68
|
+
|
|
69
|
+
```sh
|
|
70
|
+
npx skills add <owner/repo@skill> --agent universal --yes
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
Add `--global` only when you intend to share that skill with every compatible
|
|
74
|
+
agent using the universal user root.
|
|
75
|
+
|
|
39
76
|
## Couplings (the edges an agent gets wrong)
|
|
40
77
|
|
|
41
78
|
These are relationships *between* flags. Set them as a unit.
|
|
@@ -58,12 +95,14 @@ These are relationships *between* flags. Set them as a unit.
|
|
|
58
95
|
Local llama-server users may set `PLURNK_PROVIDERS_GBNF_<alias>`; transport
|
|
59
96
|
and enforcement are verified at boot. Cloud and endpoint-managed aliases
|
|
60
97
|
leave it unset. A configured PLURNK rail requires reasoning `adaptive` or
|
|
61
|
-
|
|
98
|
+
a fixed effort; pairing it with `off` is invalid. Pin
|
|
62
99
|
`PLURNK_PROVIDERS_LLAMA_SERVER_<alias>=1` only when a llama-server cannot be
|
|
63
100
|
fingerprinted reliably.
|
|
64
101
|
- **A reasoning model must reason somewhere.**
|
|
65
|
-
`PLURNK_PROVIDERS_REASONING_<alias>` selects `off`, `adaptive`,
|
|
66
|
-
|
|
102
|
+
`PLURNK_PROVIDERS_REASONING_<alias>` selects `off`, `adaptive`, `low`,
|
|
103
|
+
`medium`, or `high`. A fixed effort may require a positive provider reasoning
|
|
104
|
+
budget when the provider exposes manual token allocation rather than an
|
|
105
|
+
effort control.
|
|
67
106
|
|
|
68
107
|
## Profiles (examples, not a decision tree — adapt to the real box)
|
|
69
108
|
|
|
@@ -78,7 +117,7 @@ Each mirrors a `# --- section ---` in the floor; consult the floor for exact def
|
|
|
78
117
|
|
|
79
118
|
- **Storage** — `PLURNK_SERVICE_DB_PATH`, and the optional `PLURNK_SERVICE_SQLITE_*` passthroughs (sqlrite already sets a safe WAL posture; tune only for a hot/large DB).
|
|
80
119
|
- **Daemon transport** — bare `PLURNK_HOST`/`PLURNK_PORT`: THE client surface (the AG-UI+ listener, bound by the plurnk-agui module at boot). Production is single-listener; every first-party client rides it.
|
|
81
|
-
- **Model
|
|
120
|
+
- **Model selection** — bare `PLURNK_MODEL` selects a declared alias or exact provider/model route; `PLURNK_MODEL_<alias>` defines an optional friendly route and tuning scope; `PLURNK_BASEURL_<alias>` overrides that alias's endpoint. `PLURNK_MODEL_CHILD` accepts the same selector vocabulary for WORK/FORK descendants; unset inherits the spawning loop's provider.
|
|
82
121
|
- **Loop control / engine rails** — `PLURNK_SERVICE_MAX_TURNS` (−1 = uncapped), `_MAX_COMMANDS`, `_MAX_STRIKES`, `_EMISSION_ATTEMPTS`, `_MIN_CYCLES`, `_MAX_CYCLE_PERIOD`, `_LOOP_TIMEOUT`, `_PROPOSAL_TIMEOUT_MS`, `_EXEC_HOLD`, `_OPTIMISTIC_WAIT_MS`, `_EXEC_POLL_SEC`/`_TURNS`, `_EXEC_KILL_GRACE_MS`, `_WORKSPACE_WORKERS_MAX_ACTIVE`.
|
|
83
122
|
- **Git** — `PLURNK_SERVICE_GIT_ALLOWED` (0 = hard sandbox lockout), `_GIT_AUTO`.
|
|
84
123
|
- **Packet / reference docs** — `PLURNK_SERVICE_FILES_ITEMS` (turn-0 shallow file-map cap), `_PREVIEW_LINES`/`_PREVIEW_CHARS`, `_LINE_ANCHOR_CONTEXT_LINES`, `_EDIT_RECEIPT_REVISION_CHARS`/`_CONTEXT_LINES`, `_BRANCH_RECEIPT_REVISION_CHARS`, `_DOCS_EXCLUDE`, `_PACKET_INJECT` (operator markdown section), `_POLICY`/`_PROJECT` (policy overrides), `_REQUIREMENTS` (Recap-source override), `_MD_<alias>` (materialized reference entry).
|
|
@@ -92,8 +131,8 @@ Each mirrors a `# --- section ---` in the floor; consult the floor for exact def
|
|
|
92
131
|
of that provider-derived curation gauge.
|
|
93
132
|
- **Plugins** — bare `PLURNK_PLUGINS_TRUSTED_ONLY` (0/unset = load all installed; a value = `@plurnk/*` plus an allowlist).
|
|
94
133
|
- **Semantic search** — `PLURNK_SERVICE_SEMANTIC_CHUNK_TOKENS`/`_CHUNK_OVERLAP` (service-side chunking), `PLURNK_SERVICE_EMBED_DISABLE` (FTS-only), `PLURNK_MIMETYPES_EMBED_WORKERS` (the embedder's pool — mimetypes-owned).
|
|
95
|
-
- **Schemes: http** — `PLURNK_SCHEMES_HTTP_FETCH_TIMEOUT`, `_TTL_MS`, optional `#
|
|
96
|
-
- **Execs**
|
|
134
|
+
- **Schemes: http** — `PLURNK_SCHEMES_HTTP_FETCH_TIMEOUT`, `_TTL_MS`, optional `# PLURNK_SCHEMES_HTTP_MATERIALIZER=` (a materializer plugin id).
|
|
135
|
+
- **Execs** — `PLURNK_EXECS_<runtime>=0` disables a runtime; web discovery is an MCP attachment (`PLURNK_MCP_<server>`), not an executor.
|
|
97
136
|
- **Hooks** — `PLURNK_HOOKS_COMMAND` plus JSON `PLURNK_HOOKS_ARGS` invokes one exact no-shell command for the core events selected by `PLURNK_HOOKS_EVENTS`; see `@plurnk/plurnk-hooks/README.md`.
|
|
98
137
|
- **Observability** — standard `OTEL_*` env ({§observability-boundary}):
|
|
99
138
|
`OTEL_TRACES_EXPORTER`/`OTEL_METRICS_EXPORTER` (`otlp` or `console`; unset
|
package/README.md
CHANGED
|
@@ -34,7 +34,17 @@ plurnk-service migrate # apply the disposable version-1 schema baseline
|
|
|
34
34
|
plurnk-service start # daemon
|
|
35
35
|
```
|
|
36
36
|
|
|
37
|
-
|
|
37
|
+
Configuration follows XDG at `$XDG_CONFIG_HOME/plurnk` (normally
|
|
38
|
+
`~/.config/plurnk`); durable data defaults to `$XDG_DATA_HOME/plurnk` (normally
|
|
39
|
+
`~/.local/share/plurnk`). First start seeds the user-owned `.env` and
|
|
40
|
+
`AGENTS.md` once. Select an exact route with
|
|
41
|
+
`PLURNK_MODEL=<provider>/<model-id>`, or declare a reusable/tuned
|
|
42
|
+
`PLURNK_MODEL_<alias>=<provider>/<model-id>` and select its alias. Run
|
|
43
|
+
`plurnk-service config defaults` for
|
|
44
|
+
the complete installed option catalog and `plurnk-service config check` to
|
|
45
|
+
validate without contacting a provider. **[`INSTALL.md`](./INSTALL.md) is the
|
|
46
|
+
configuration guide.** A legacy mixed `~/.plurnk` is moved only by the explicit
|
|
47
|
+
`plurnk-service paths migrate` command.
|
|
38
48
|
|
|
39
49
|
The 1.x package retains its frozen root library barrel for SemVer compatibility;
|
|
40
50
|
it is not the client boundary and gains no new APIs. Programmatic forensic use
|