@plurnk/plurnk-service 0.35.0 → 0.40.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.
Files changed (49) hide show
  1. package/README.md +6 -0
  2. package/SPEC.md +25 -13
  3. package/dist/content/matcher.d.ts +1 -0
  4. package/dist/content/matcher.d.ts.map +1 -1
  5. package/dist/content/matcher.js +1 -1
  6. package/dist/content/matcher.js.map +1 -1
  7. package/dist/core/Engine.d.ts.map +1 -1
  8. package/dist/core/Engine.js +17 -15
  9. package/dist/core/Engine.js.map +1 -1
  10. package/dist/core/SchemeRegistry.d.ts +2 -4
  11. package/dist/core/SchemeRegistry.d.ts.map +1 -1
  12. package/dist/core/SchemeRegistry.js +21 -60
  13. package/dist/core/SchemeRegistry.js.map +1 -1
  14. package/dist/core/fork.js +1 -1
  15. package/dist/core/fork.js.map +1 -1
  16. package/dist/core/git-membership.d.ts +7 -0
  17. package/dist/core/git-membership.d.ts.map +1 -1
  18. package/dist/core/git-membership.js +92 -32
  19. package/dist/core/git-membership.js.map +1 -1
  20. package/dist/core/packet-wire.js +1 -1
  21. package/dist/core/packet-wire.js.map +1 -1
  22. package/dist/schemes/File.d.ts +2 -0
  23. package/dist/schemes/File.d.ts.map +1 -1
  24. package/dist/schemes/File.js +69 -10
  25. package/dist/schemes/File.js.map +1 -1
  26. package/dist/schemes/Log.js +7 -7
  27. package/dist/schemes/Log.js.map +1 -1
  28. package/dist/schemes/_entry-find.d.ts +14 -3
  29. package/dist/schemes/_entry-find.d.ts.map +1 -1
  30. package/dist/schemes/_entry-find.js +55 -24
  31. package/dist/schemes/_entry-find.js.map +1 -1
  32. package/dist/schemes/_entry-semantic.d.ts +5 -1
  33. package/dist/schemes/_entry-semantic.d.ts.map +1 -1
  34. package/dist/schemes/_entry-semantic.js +10 -8
  35. package/dist/schemes/_entry-semantic.js.map +1 -1
  36. package/dist/server/Daemon.d.ts.map +1 -1
  37. package/dist/server/Daemon.js +22 -1
  38. package/dist/server/Daemon.js.map +1 -1
  39. package/dist/server/methods/session_constraints.js +6 -6
  40. package/dist/server/methods/session_constraints.js.map +1 -1
  41. package/dist/server/methods/session_create.js +4 -4
  42. package/dist/server/methods/session_create.js.map +1 -1
  43. package/dist/server/methods/session_members.d.ts +5 -0
  44. package/dist/server/methods/session_members.d.ts.map +1 -0
  45. package/dist/server/methods/session_members.js +21 -0
  46. package/dist/server/methods/session_members.js.map +1 -0
  47. package/migrations/0000-00-00.01_schema.sql +8 -7
  48. package/package.json +9 -27
  49. package/requirements.md +2 -4
@@ -3,8 +3,8 @@ import Envelope from "../envelope.js";
3
3
  import GitMembership from "../../core/git-membership.js";
4
4
  // #200 — membership-overlay effects, mirroring session.constrain (pick admits a
5
5
  // file git misses / the sole source when headless; hide drops a tracked match;
6
- // view admits a member read-only).
7
- const CONSTRAINT_EFFECTS = new Set(["pick", "hide", "view"]);
6
+ // view admits a member read-only; repo declares a git repo folder anywhere).
7
+ const CONSTRAINT_EFFECTS = new Set(["pick", "hide", "view", "repo"]);
8
8
  export default class SessionCreateMethod {
9
9
  static register(registry) {
10
10
  // session.create makes a session, attaches this connection, and returns the auto-created
@@ -51,7 +51,7 @@ export default class SessionCreateMethod {
51
51
  params: {
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
- 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). glob: node:path glob vs workspace-relative paths.",
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
55
  settings: "object? — client-chosen open-context, persisted per session, read at turn-0 over env. { manifestItems?: number (-1 full | 0 off | N first-N; replaces PLURNK_MANIFEST_ITEMS), mdDocs?: [{alias, content}] (unioned with server PLURNK_MD_* docs; client wins on alias collision) }",
56
56
  },
57
57
  });
@@ -72,7 +72,7 @@ export default class SessionCreateMethod {
72
72
  return raw.map((c, i) => {
73
73
  const e = c;
74
74
  if (typeof e.effect !== "string" || !CONSTRAINT_EFFECTS.has(e.effect)) {
75
- throw new Error(`session.create: constraints[${i}].effect must be one of pick | hide | view`);
75
+ throw new Error(`session.create: constraints[${i}].effect must be one of pick | hide | view | repo`);
76
76
  }
77
77
  if (typeof e.glob !== "string" || e.glob.length === 0) {
78
78
  throw new Error(`session.create: constraints[${i}].glob must be a non-empty string`);
@@ -1 +1 @@
1
- {"version":3,"file":"session_create.js","sourceRoot":"","sources":["../../../src/server/methods/session_create.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"session_create.js","sourceRoot":"","sources":["../../../src/server/methods/session_create.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ import type MethodRegistry from "../MethodRegistry.ts";
2
+ export default class SessionMembersMethod {
3
+ static register(registry: MethodRegistry): void;
4
+ }
5
+ //# sourceMappingURL=session_members.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"session_members.d.ts","sourceRoot":"","sources":["../../../src/server/methods/session_members.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,cAAc,MAAM,sBAAsB,CAAC;AAQvD,MAAM,CAAC,OAAO,OAAO,oBAAoB;IACrC,MAAM,CAAC,QAAQ,CAAC,QAAQ,EAAE,cAAc,GAAG,IAAI;CAWlD"}
@@ -0,0 +1,21 @@
1
+ import GitMembership from "../../core/git-membership.js";
2
+ // #243 — resolved per-file membership for client gutter signs (plurnk.nvim's Active/
3
+ // ReadOnly/Ignore made visible). The daemon owns git ls-files + the pick/hide/view
4
+ // overlay, so it resolves each project file's effect and the client reads it — zero
5
+ // glob-matching client-side (the service-logic duplication we avoid on principle).
6
+ // Session-scoped like the overlay itself; reads the attached session.
7
+ export default class SessionMembersMethod {
8
+ static register(registry) {
9
+ registry.registerMethod("session.members", {
10
+ handler: async (_params, ctx) => {
11
+ if (ctx.session === null)
12
+ throw new Error("session.members requires an attached session");
13
+ return GitMembership.resolveMembershipEffects(ctx.db, ctx.session.sessionId, undefined);
14
+ },
15
+ description: "Resolve each project file's membership effect — for client gutter signs / colors, with zero glob-matching client-side (the daemon owns git + the overlay). → { members: [{ path, effect: 'member' | 'view' }], hidden: [path] }: members are (ls-files ∪ pick) − hide (effect `view` = read-only, refused at the File edit gate); hidden are project files a `hide` constraint excludes from the manifest. Re-read cheaply on membership change.",
16
+ params: {},
17
+ requiresInit: true,
18
+ });
19
+ }
20
+ }
21
+ //# sourceMappingURL=session_members.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"session_members.js","sourceRoot":"","sources":["../../../src/server/methods/session_members.ts"],"names":[],"mappings":"AACA,OAAO,aAAa,MAAM,8BAA8B,CAAC;AAEzD,qFAAqF;AACrF,mFAAmF;AACnF,oFAAoF;AACpF,mFAAmF;AACnF,sEAAsE;AACtE,MAAM,CAAC,OAAO,OAAO,oBAAoB;IACrC,MAAM,CAAC,QAAQ,CAAC,QAAwB;QACpC,QAAQ,CAAC,cAAc,CAAC,iBAAiB,EAAE;YACvC,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,EAAE,EAAE;gBAC5B,IAAI,GAAG,CAAC,OAAO,KAAK,IAAI;oBAAE,MAAM,IAAI,KAAK,CAAC,8CAA8C,CAAC,CAAC;gBAC1F,OAAO,aAAa,CAAC,wBAAwB,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,OAAO,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;YAC5F,CAAC;YACD,WAAW,EAAE,kbAAkb;YAC/b,MAAM,EAAE,EAAE;YACV,YAAY,EAAE,IAAI;SACrB,CAAC,CAAC;IACP,CAAC;CACJ"}
@@ -113,9 +113,10 @@ CREATE TABLE IF NOT EXISTS entries (
113
113
  params TEXT CHECK (params IS NULL OR json_valid(params)),
114
114
  attributes TEXT NOT NULL DEFAULT '{}' CHECK (json_valid(attributes)),
115
115
  -- SPEC §membership — how a file member entered the curated surface. 'git' rows are
116
- -- reconciled against `git ls-files ignore` each turn (registered + un-registered
117
- -- so entries == members); 'client'/'constraint' (model-created, add-glob) are not
118
- -- git's to reclaim. NULL = not a file member (other schemes don't carry origin).
116
+ -- reconciled against the repo's members each turn tracked ls-files PLUS untracked-
117
+ -- but-not-ignored files (§membership-auto-add) registered + un-registered so entries
118
+ -- == members; 'client'/'constraint' (model-created, add-glob) are not git's to reclaim.
119
+ -- NULL = not a file member (other schemes don't carry origin).
119
120
  membership_origin TEXT CHECK (membership_origin IS NULL OR membership_origin IN ('git', 'client', 'constraint')),
120
121
  -- @graph / ~semantic change-gate (#186): hash of the body content at the last
121
122
  -- deep-channel derivation. The manifest-add pass re-derives symbols/refs (and
@@ -245,7 +246,7 @@ CREATE TABLE IF NOT EXISTS entry_embeddings (
245
246
  -- status⊥state: status is the HTTP outcome, state is where in the
246
247
  -- lifecycle the entry sits. Most rows write 'resolved' directly;
247
248
  -- proposing schemes transition 'proposed' → resolved/failed/cancelled.
248
- -- indexed: per-row visibility for OPEN/FOLD via the log:/// scheme.
249
+ -- expanded: per-row visibility for OPEN/FOLD via the log:/// scheme.
249
250
  CREATE TABLE IF NOT EXISTS log_entries (
250
251
  id INTEGER NOT NULL PRIMARY KEY,
251
252
  version INTEGER NOT NULL DEFAULT 0 CHECK (version >= 0),
@@ -289,7 +290,7 @@ CREATE TABLE IF NOT EXISTS log_entries (
289
290
  outcome TEXT,
290
291
  attrs TEXT NOT NULL DEFAULT '{}' CHECK (json_valid(attrs)),
291
292
 
292
- indexed INTEGER NOT NULL DEFAULT 1 CHECK (indexed IN (0, 1)),
293
+ expanded INTEGER NOT NULL DEFAULT 1 CHECK (expanded IN (0, 1)),
293
294
 
294
295
  FOREIGN KEY (run_id) REFERENCES runs(id) ON DELETE CASCADE,
295
296
  FOREIGN KEY (loop_id) REFERENCES loops(id) ON DELETE CASCADE,
@@ -303,7 +304,7 @@ CREATE INDEX IF NOT EXISTS log_entries_at ON log_entries (a
303
304
 
304
305
  -- Column-scoped immutability: the original action's identity and target
305
306
  -- never change; the proposal lifecycle is allowed to mutate state,
306
- -- outcome, status_rx, rx, indexed.
307
+ -- outcome, status_rx, rx, expanded.
307
308
  CREATE TRIGGER IF NOT EXISTS log_entries_immutable_core
308
309
  BEFORE UPDATE OF
309
310
  run_id, loop_id, turn_id, sequence, at, origin, source,
@@ -313,7 +314,7 @@ BEFORE UPDATE OF
313
314
  lineMarker, tx, mimetype_tx, mimetype_rx, attrs
314
315
  ON log_entries
315
316
  BEGIN
316
- SELECT RAISE(ABORT, 'log_entries core fields are immutable; only state/outcome/status_rx/rx/indexed may change');
317
+ SELECT RAISE(ABORT, 'log_entries core fields are immutable; only state/outcome/status_rx/rx/expanded may change');
317
318
  END;
318
319
 
319
320
  -- INIT: schemes_providers
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@plurnk/plurnk-service",
3
- "version": "0.35.0",
3
+ "version": "0.40.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",
@@ -46,37 +46,19 @@
46
46
  "dependencies": {
47
47
  "@plurnk/plurnk-execs": "0.4.8",
48
48
  "@plurnk/plurnk-execs-all": "0.1.5",
49
- "@plurnk/plurnk-grammar": "0.54.0",
50
- "@plurnk/plurnk-mimetypes": "0.15.17",
49
+ "@plurnk/plurnk-grammar": "0.56.0",
50
+ "@plurnk/plurnk-mimetypes": "0.15.19",
51
51
  "@plurnk/plurnk-mimetypes-embeddings": "0.2.0",
52
- "@plurnk/plurnk-providers": "0.7.0",
53
- "@plurnk/plurnk-providers-all": "0.5.0",
54
- "@plurnk/plurnk-schemes": "0.11.0",
55
- "@plurnk/plurnk-schemes-http": "0.3.0",
52
+ "@plurnk/plurnk-providers": "0.8.0",
53
+ "@plurnk/plurnk-providers-all": "0.8.0",
54
+ "@plurnk/plurnk-schemes": "0.15.0",
55
+ "@plurnk/plurnk-schemes-all": "0.1.1",
56
56
  "@possumtech/sqlrite": "5.1.1",
57
57
  "diff": "^9.0.0",
58
- "ws": "^8.20.1"
58
+ "ws": "^8.20.1",
59
+ "@plurnk/plurnk-mimetypes-all": "0.4.0"
59
60
  },
60
61
  "devDependencies": {
61
- "@plurnk/plurnk-mimetypes-application-pdf": "0.6.2",
62
- "@plurnk/plurnk-mimetypes-text-clojure": "0.2.2",
63
- "@plurnk/plurnk-mimetypes-text-cmake": "0.2.2",
64
- "@plurnk/plurnk-mimetypes-text-common-lisp": "0.2.2",
65
- "@plurnk/plurnk-mimetypes-text-csharp": "0.2.3",
66
- "@plurnk/plurnk-mimetypes-text-datalog": "0.3.2",
67
- "@plurnk/plurnk-mimetypes-text-erlang": "0.2.2",
68
- "@plurnk/plurnk-mimetypes-text-graphql": "0.2.2",
69
- "@plurnk/plurnk-mimetypes-text-mariadb": "0.3.3",
70
- "@plurnk/plurnk-mimetypes-text-plsql": "0.2.3",
71
- "@plurnk/plurnk-mimetypes-text-postgresql": "0.3.3",
72
- "@plurnk/plurnk-mimetypes-text-prolog": "0.2.2",
73
- "@plurnk/plurnk-mimetypes-text-protobuf": "0.3.2",
74
- "@plurnk/plurnk-mimetypes-text-redis": "0.3.2",
75
- "@plurnk/plurnk-mimetypes-text-sparql": "0.2.2",
76
- "@plurnk/plurnk-mimetypes-text-sqlite": "0.3.3",
77
- "@plurnk/plurnk-mimetypes-text-swift": "0.1.2",
78
- "@plurnk/plurnk-mimetypes-text-terraform": "1.0.4",
79
- "@plurnk/plurnk-mimetypes-text-tsql": "0.2.3",
80
62
  "@tree-sitter-grammars/tree-sitter-kotlin": "^1.1.0",
81
63
  "@tree-sitter-grammars/tree-sitter-lua": "^0.4.1",
82
64
  "@tree-sitter-grammars/tree-sitter-toml": "^0.7.0",
package/requirements.md CHANGED
@@ -1,10 +1,8 @@
1
- Syntax: <<OPsuffix[signal]?(target)?<Line/Result>?:body?:OPsuffix
2
-
3
1
  YOU MUST ONLY use EXEC commands for actions that can't be performed with Extended HEREDOC Plurnk Operations.
4
2
  YOU MUST ONLY communicate with SEND, not with free text between operations.
5
3
  YOU MUST document all relevant questions and uncertainties into taxonomized, tagged, and topical unknown entries.
6
4
  YOU MUST ONLY populate known entries with source entry information, never with model training.
7
5
  YOU SHOULD manage your own context to maximize signal, as irrelevant tokens degrade reasoning.
8
- YOU SHOULD leverage folksonomic path names, tags, and bulk pattern operations to optimize for context relevance.
6
+ YOU SHOULD leverage taxonomic path names, folksonomic tags, and bulk pattern operations to optimize for context relevance.
9
7
  YOU MUST use OPEN and FOLD to keep your context budget healthy, optimized, and topical, below the `tokensFree` limit.
10
- YOU MUST terminate the turn with either a loop continuing (102) or loop terminating (200) user message or brief status update `<<SEND[N]:...:SEND`
8
+ YOU MUST terminate the turn with either a loop continuing (102), loop terminating (200), loop waiting (202), or loop failed (500) user message or brief status update `<<SEND[{102|200|202|500}]:...:SEND`