@plurnk/plurnk-service 4.3.2 → 4.3.3

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/SPEC.md CHANGED
@@ -397,7 +397,7 @@ not access to workspace resources ({§actor-boundary-no-mutex}).
397
397
  | Root creation | Explicit owner, otherwise the runtime `_plurnk`. |
398
398
  | WORK, FORK, or a fresh child | Inherit the parent's owner. |
399
399
  | SEND, schedule occurrence, or other incoming message | Preserve the recipient's owner. |
400
- | Explicit client control attachment | Claim a runtime-owned model worker and its runtime-owned descendants; never claim the runtime actor or replace another owner. |
400
+ | Explicit client control attachment | Claim a model worker and its model descendants (updating any pending interaction recipients in that subtree); never claim the runtime actor. |
401
401
  | Observation or disconnect | No change. |
402
402
 
403
403
  An owner declares its capability set: the client tool names it implements, and whether it
@@ -5640,7 +5640,7 @@ Core's behavior behind them.
5640
5640
  | §methods-workspace-activate Workspace lifecycle | `activateWorkspace({ workspaceId })` | Makes the demand a turn makes, without a turn: a cold workspace activates and publishes its complete capabilities; a concurrent demand shares that one activation; it resolves once the workspace is active and leaves it warm under `PLURNK_SERVICE_WORKSPACE_WARM_MS`. Creation and attachment stay passive; an owner's arrival calls it ({§agui-owner-activation}). |
5641
5641
  | §methods-worker-create Workspace lifecycle | `createWorker({ workspaceId, name?, parentWorkerId?, owner? })` | Creates a distinct model-origin worker with empty history. A root may name a registered owner; a child names its parent and inherits ownership. Supplying both parent and owner is invalid ({§worker-owner-creation}). |
5642
5642
  | Worker ownership | `registerWorkerOwner(workspaceId, { address, tools, interactive })` | Declares or replaces an owner's supported client-tool names and whether a person attends it, in that workspace; `_plurnk` is reserved. |
5643
- | Worker ownership | `claimWorkerOwner({ workspaceId, workerId, owner })` | Claims only runtime-owned work under {§worker-ownership}, returning its effective owner. The owner must already be registered. |
5643
+ | Worker ownership | `claimWorkerOwner({ workspaceId, workerId, owner })` | Claims a model worker and its model descendants under {§worker-ownership}, returning its effective owner. The owner must already be registered. |
5644
5644
  | Runtime actor | `ensureRuntimeWorker(workspaceId)` | Returns the workspace's `_plurnk` actor, creating it if absent; it always retains runtime ownership. |
5645
5645
  | Workspace lifecycle | `forkWorker({ workspaceId, workerId, name? })` | Creates a child worker that branches the source worker's history while sharing workspace state. The source is a model worker, else `409 model-worker-required` ({§machine-processes-worker-origin}). |
5646
5646
  | §methods-workspace-rename Workspace metadata | `renameWorkspace(workspaceId, name)` | Changes only the workspace's unique mutable name, under the admission of {§workspace-name}; workers, log, and membership remain intact, and a refused name changes nothing. |
@@ -1 +1 @@
1
- {"package":"@plurnk/plurnk-service","version":"4.3.2","revision":"7f8674581db39363ebf509596be644ab6ec94356","dirty":false}
1
+ {"package":"@plurnk/plurnk-service","version":"4.3.3","revision":"323781e23c59ff0c68e8976c0cf8cb31fd025791","dirty":false}
@@ -1 +1 @@
1
- {"version":3,"file":"WorkerOwners.d.ts","sourceRoot":"","sources":["../../src/core/WorkerOwners.ts"],"names":[],"mappings":"AAAA,OAAO,EAAa,KAAK,WAAW,EAAE,MAAM,0BAA0B,CAAC;AACvE,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,SAAS,CAAC;AAMlC,MAAM,CAAC,OAAO,OAAO,YAAY;;IAC7B,OAAa,QAAQ,CAAC,EAAE,EAAE,EAAE,EAAE,WAAW,EAAE,MAAM,EAAE,KAAK,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAQpF;IAID,OAAa,KAAK,CAAC,EAAE,EAAE,EAAE,EAAE,WAAW,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAG9E;IAOD,OAAa,IAAI,CAAC,EAAE,EAAE,EAAE,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,CAEhE;IAED,OAAa,OAAO,CAAC,EAAE,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,CAEjE;IAGD,OAAa,WAAW,CAAC,EAAE,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAEjE;IAGD,MAAM,CAAC,QAAQ,CAAC,KAAK,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAE7D;IAED,OAAa,UAAU,CAAC,EAAE,EAAE,EAAE,EAAE,WAAW,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,CAO1F;IAED,OAAa,KAAK,CAAC,EAAE,EAAE,EAAE,EAAE,WAAW,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,CAIrG;CACJ"}
1
+ {"version":3,"file":"WorkerOwners.d.ts","sourceRoot":"","sources":["../../src/core/WorkerOwners.ts"],"names":[],"mappings":"AAAA,OAAO,EAAa,KAAK,WAAW,EAAE,MAAM,0BAA0B,CAAC;AACvE,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,SAAS,CAAC;AAMlC,MAAM,CAAC,OAAO,OAAO,YAAY;;IAC7B,OAAa,QAAQ,CAAC,EAAE,EAAE,EAAE,EAAE,WAAW,EAAE,MAAM,EAAE,KAAK,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAQpF;IAID,OAAa,KAAK,CAAC,EAAE,EAAE,EAAE,EAAE,WAAW,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAG9E;IAOD,OAAa,IAAI,CAAC,EAAE,EAAE,EAAE,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,CAEhE;IAED,OAAa,OAAO,CAAC,EAAE,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,CAEjE;IAGD,OAAa,WAAW,CAAC,EAAE,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAEjE;IAGD,MAAM,CAAC,QAAQ,CAAC,KAAK,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAE7D;IAED,OAAa,UAAU,CAAC,EAAE,EAAE,EAAE,EAAE,WAAW,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,CAO1F;IAED,OAAa,KAAK,CAAC,EAAE,EAAE,EAAE,EAAE,WAAW,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,CAKrG;CACJ"}
@@ -44,6 +44,7 @@ export default class WorkerOwners {
44
44
  static async claim(db, workspaceId, workerId, owner) {
45
45
  await WorkerOwners.registered(db, workspaceId, owner);
46
46
  await db.worker_owner_claim.run({ workspace_id: workspaceId, worker_id: workerId, owner });
47
+ await db.worker_owner_claim_interactions.run({ workspace_id: workspaceId, worker_id: workerId, owner });
47
48
  return WorkerOwners.read(db, workerId);
48
49
  }
49
50
  }
@@ -1 +1 @@
1
- {"version":3,"file":"WorkerOwners.js","sourceRoot":"","sources":["../../src/core/WorkerOwners.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"WorkerOwners.js","sourceRoot":"","sources":["../../src/core/WorkerOwners.ts"],"names":[],"mappings":"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"}
@@ -53,10 +53,25 @@ WHERE le.id = $log_entry_id AND le.state = 'proposed';
53
53
  WITH RECURSIVE tree(id) AS (
54
54
  SELECT id FROM workers
55
55
  WHERE id = $worker_id AND workspace_id = $workspace_id
56
- AND owner = '_plurnk' AND origin != '_plurnk'
56
+ AND origin != '_plurnk'
57
57
  UNION ALL
58
58
  SELECT w.id FROM workers w JOIN tree ON w.parent_worker_id = tree.id
59
- WHERE w.owner = '_plurnk' AND w.origin != '_plurnk'
59
+ WHERE w.origin != '_plurnk'
60
60
  )
61
61
  UPDATE workers SET owner = $owner
62
62
  WHERE id IN (SELECT id FROM tree);
63
+
64
+ -- PREP: worker_owner_claim_interactions
65
+ UPDATE client_interactions
66
+ SET recipient = $owner
67
+ WHERE worker_id IN (
68
+ WITH RECURSIVE tree(id) AS (
69
+ SELECT id FROM workers
70
+ WHERE id = $worker_id AND workspace_id = $workspace_id
71
+ AND origin != '_plurnk'
72
+ UNION ALL
73
+ SELECT w.id FROM workers w JOIN tree ON w.parent_worker_id = tree.id
74
+ WHERE w.origin != '_plurnk'
75
+ )
76
+ SELECT id FROM tree
77
+ );
@@ -1,4 +1,4 @@
1
- .TH PLURNK-SERVICE 1 "2026-10-23" "plurnk-service 4.3.2" "User Commands"
1
+ .TH PLURNK-SERVICE 1 "2026-10-24" "plurnk-service 4.3.3" "User Commands"
2
2
  .SH NAME
3
3
  plurnk-service \- persistent agent runtime
4
4
  .SH SYNOPSIS
@@ -0,0 +1,35 @@
1
+ -- MIGRATE: 34 operator owners
2
+ -- Released in 4.3.3 and frozen ({§db-migrations}).
3
+ -- {§worker-ownership} AG-UI owners are workspace-scoped (`agui://operator`), never per-principal or per-thread:
4
+ -- any existing `agui://*/threads/*` owner or interaction recipient is unified onto `agui://operator`.
5
+ INSERT INTO worker_owners (workspace_id, address, tools, interactive)
6
+ SELECT w.workspace_id,
7
+ 'agui://operator',
8
+ COALESCE(
9
+ (SELECT json_group_array(tool)
10
+ FROM (
11
+ SELECT DISTINCT j.value AS tool
12
+ FROM worker_owners o, json_each(o.tools) j
13
+ WHERE o.workspace_id = w.workspace_id
14
+ AND (o.address = 'agui://operator' OR o.address GLOB 'agui://*/threads/*')
15
+ )),
16
+ '[]'
17
+ ),
18
+ MAX(w.interactive)
19
+ FROM worker_owners w
20
+ WHERE w.address GLOB 'agui://*/threads/*'
21
+ GROUP BY w.workspace_id
22
+ ON CONFLICT (workspace_id, address) DO UPDATE SET
23
+ tools = excluded.tools,
24
+ interactive = CASE WHEN worker_owners.interactive = 1 OR excluded.interactive = 1 THEN 1 ELSE 0 END;
25
+
26
+ UPDATE workers
27
+ SET owner = 'agui://operator'
28
+ WHERE owner GLOB 'agui://*/threads/*';
29
+
30
+ UPDATE client_interactions
31
+ SET recipient = 'agui://operator'
32
+ WHERE recipient GLOB 'agui://*/threads/*';
33
+
34
+ DELETE FROM worker_owners
35
+ WHERE address GLOB 'agui://*/threads/*';
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@plurnk/plurnk-service",
3
- "version": "4.3.2",
3
+ "version": "4.3.3",
4
4
  "description": "Plurnk agent runtime — the server / engine / core. Implements the @plurnk/plurnk-contracts contract.",
5
5
  "keywords": [
6
6
  "plurnk",
@@ -80,7 +80,7 @@
80
80
  "dependencies": {
81
81
  "@opentelemetry/api": "^1.10.0",
82
82
  "@plurnk/plurnk-a2a": "4.0.2",
83
- "@plurnk/plurnk-agui": "5.0.1",
83
+ "@plurnk/plurnk-agui": "5.0.2",
84
84
  "@plurnk/plurnk-contracts": "6.0.1",
85
85
  "@plurnk/plurnk-parser": "4.2.2",
86
86
  "@plurnk/plurnk-schedule": "3.0.5",
@@ -135,9 +135,9 @@
135
135
  "@plurnk/plurnk-mimetypes-text-ini": "2.0.2",
136
136
  "@plurnk/plurnk-mimetypes-text-markdown": "2.0.3",
137
137
  "@plurnk/plurnk-mimetypes-text-plain": "2.0.2",
138
- "@plurnk/plurnk-models": "3.0.2",
138
+ "@plurnk/plurnk-models": "3.0.3",
139
139
  "@plurnk/plurnk-modules": "4.1.0",
140
- "@plurnk/plurnk-providers": "5.0.1",
140
+ "@plurnk/plurnk-providers": "5.0.2",
141
141
  "@plurnk/plurnk-schemes": "3.3.0",
142
142
  "@plurnk/plurnk-schemes-http": "2.0.5",
143
143
  "@possumtech/sqlrite": "^6.6.1",
@@ -163,5 +163,5 @@
163
163
  "url": "git+https://github.com/plurnk/plurnk-service.git",
164
164
  "directory": "plurnk-core"
165
165
  },
166
- "gitHead": "7f8674581db39363ebf509596be644ab6ec94356"
166
+ "gitHead": "323781e23c59ff0c68e8976c0cf8cb31fd025791"
167
167
  }