@owlmeans/client-planning 0.1.18-rc.30 → 0.1.18-rc.32
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/README.md +2 -2
- package/agent-meta/manifest.json +2 -2
- package/agent-meta/skills/client-planning/SKILL.md +5 -1
- package/build/resource-feed.d.ts.map +1 -1
- package/build/resource-feed.js +1 -0
- package/build/resource-feed.js.map +1 -1
- package/package.json +6 -6
- package/src/resource-feed.ts +1 -0
- package/src/validation/types.ts +0 -1
- package/tests/resources.spec.ts +26 -0
package/README.md
CHANGED
|
@@ -9,7 +9,7 @@ planning service runs in-process.
|
|
|
9
9
|
## Installation
|
|
10
10
|
|
|
11
11
|
```bash
|
|
12
|
-
bun add @owlmeans/client-planning@^0.1.18-rc.
|
|
12
|
+
bun add @owlmeans/client-planning@^0.1.18-rc.32
|
|
13
13
|
```
|
|
14
14
|
|
|
15
15
|
## Concepts
|
|
@@ -202,7 +202,7 @@ This package ships embedded agent skills under `agent-meta/`. After installing y
|
|
|
202
202
|
your project's skill store (`.agents/skills/`):
|
|
203
203
|
|
|
204
204
|
```sh
|
|
205
|
-
npx @owlmeans/agent-skills@^0.1.18-rc.
|
|
205
|
+
npx @owlmeans/agent-skills@^0.1.18-rc.54
|
|
206
206
|
```
|
|
207
207
|
|
|
208
208
|
The embedded files are version-matched to this package release. Do not edit them
|
package/agent-meta/manifest.json
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
{
|
|
2
2
|
"schemaVersion": 2,
|
|
3
3
|
"package": "@owlmeans/client-planning",
|
|
4
|
-
"version": "0.1.18-rc.
|
|
5
|
-
"generatedAt": "2026-10-
|
|
4
|
+
"version": "0.1.18-rc.32",
|
|
5
|
+
"generatedAt": "2026-10-15T10:20:01.301Z",
|
|
6
6
|
"canonicalRepo": "https://github.com/owlmeans/common",
|
|
7
7
|
"entries": [
|
|
8
8
|
{
|
|
@@ -8,7 +8,7 @@ user-invocable: false
|
|
|
8
8
|
# @owlmeans/client-planning
|
|
9
9
|
|
|
10
10
|
**Layer:** Client
|
|
11
|
-
**Install:** `"@owlmeans/client-planning": "^0.1.18-rc.
|
|
11
|
+
**Install:** `"@owlmeans/client-planning": "^0.1.18-rc.32"` in `dependencies`
|
|
12
12
|
|
|
13
13
|
The client half of OwlMeans planning. It answers the `PlanningFacade` interface of
|
|
14
14
|
`@owlmeans/planning` over the protocol tree a server mounted with `@owlmeans/server-planning`, keeps
|
|
@@ -268,6 +268,10 @@ assignee/team/comment/mention API, including versioned writes, team membership a
|
|
|
268
268
|
attachment. `appendPlanningStores` registers separate stock typed mirrors for all four resources.
|
|
269
269
|
`makePlanningResourceFeed` seeds and polls selected resource queries; use it with the stock stores
|
|
270
270
|
and `useStoreList` / `useStoreModel`. Auxiliary writes update the mirror only after success.
|
|
271
|
+
An active-assignee query (`retired: false`) includes an absent or null retirement flag. Local
|
|
272
|
+
mirror queries and feed reconciliation use `{ retired: { $ne: true } }`, matching the native
|
|
273
|
+
facade rather than strict equality to false. A filtered poll removes only its unchanged matching
|
|
274
|
+
snapshot rows, preserving unrelated retired identities needed by existing references.
|
|
271
275
|
Comments use trusted server authors; mentions are read-only derived cache commands.
|
|
272
276
|
|
|
273
277
|
Supply `PlanningClientOptions.scopeKey` from authenticated organization entity slug, profile/user
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"resource-feed.d.ts","sourceRoot":"","sources":["../src/resource-feed.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAIlE,OAAO,KAAK,EAAyB,YAAY,EAAqB,2BAA2B,EAAE,MAAM,YAAY,CAAA;AAErH,sGAAsG;AACtG,eAAO,MAAM,wBAAwB,GAAI,CAAC,SAAS,WAAW,EAAE,CAAC,SAAS,YAAY,CAAC,CAAC,CAAC,WAC9E,CAAC,SAAQ,2BAA2B,KAC5C,
|
|
1
|
+
{"version":3,"file":"resource-feed.d.ts","sourceRoot":"","sources":["../src/resource-feed.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAIlE,OAAO,KAAK,EAAyB,YAAY,EAAqB,2BAA2B,EAAE,MAAM,YAAY,CAAA;AAErH,sGAAsG;AACtG,eAAO,MAAM,wBAAwB,GAAI,CAAC,SAAS,WAAW,EAAE,CAAC,SAAS,YAAY,CAAC,CAAC,CAAC,WAC9E,CAAC,SAAQ,2BAA2B,KAC5C,YAqEF,CAAA"}
|
package/build/resource-feed.js
CHANGED
|
@@ -28,6 +28,7 @@ export const makePlanningResourceFeed = (context, opts = {}) => {
|
|
|
28
28
|
const store = stores[name];
|
|
29
29
|
const { page: _page, size: _size, sort: _sort, ids, nickname, authentication, ...where } = query;
|
|
30
30
|
const matches = { ...where, ...(ids != null ? { id: { $in: ids } } : {}),
|
|
31
|
+
...(name === 'assignees' && where.retired === false ? { retired: { $ne: true } } : {}),
|
|
31
32
|
...(nickname != null ? { nicknameKey: mentionHelper.nicknameKey(nickname) } : {}),
|
|
32
33
|
...(authentication != null ? { 'authentication.provider': authentication.provider, 'authentication.externalId': authentication.externalId } : {}),
|
|
33
34
|
...(opts.scope?.entityId != null ? { entityId: opts.scope.entityId } : {}) };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"resource-feed.js","sourceRoot":"","sources":["../src/resource-feed.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"resource-feed.js","sourceRoot":"","sources":["../src/resource-feed.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@owlmeans/client-planning",
|
|
3
|
-
"version": "0.1.18-rc.
|
|
3
|
+
"version": "0.1.18-rc.32",
|
|
4
4
|
"license": "MIT",
|
|
5
5
|
"description": "The client half of OwlMeans planning — the remote planning facade, the state mirror and its commit fold, and the subscribe-then-poll commit wait. React-free: it runs in a browser and in a Node client alike.",
|
|
6
6
|
"type": "module",
|
|
@@ -25,16 +25,16 @@
|
|
|
25
25
|
"dependencies": {
|
|
26
26
|
"@cfworker/json-schema": "^4.1.1",
|
|
27
27
|
"@owlmeans/auth": "^0.1.18-rc.41",
|
|
28
|
-
"@owlmeans/client-context": "^0.1.18-rc.
|
|
29
|
-
"@owlmeans/client-entrypoint": "^0.1.18-rc.
|
|
28
|
+
"@owlmeans/client-context": "^0.1.18-rc.51",
|
|
29
|
+
"@owlmeans/client-entrypoint": "^0.1.18-rc.50",
|
|
30
30
|
"@owlmeans/context": "^0.1.18-rc.34",
|
|
31
31
|
"@owlmeans/entrypoint": "^0.1.18-rc.41",
|
|
32
32
|
"@owlmeans/error": "^0.1.18-rc.38",
|
|
33
|
-
"@owlmeans/planning": "^0.1.18-rc.
|
|
33
|
+
"@owlmeans/planning": "^0.1.18-rc.27",
|
|
34
34
|
"@owlmeans/resource": "^0.1.18-rc.40",
|
|
35
35
|
"@owlmeans/log": "^0.1.18-rc.3",
|
|
36
36
|
"@owlmeans/route": "^0.1.18-rc.35",
|
|
37
|
-
"@owlmeans/socket": "^0.1.18-rc.
|
|
37
|
+
"@owlmeans/socket": "^0.1.18-rc.44",
|
|
38
38
|
"@owlmeans/state": "^0.1.18-rc.39"
|
|
39
39
|
},
|
|
40
40
|
"peerDependencies": {
|
|
@@ -43,7 +43,7 @@
|
|
|
43
43
|
},
|
|
44
44
|
"devDependencies": {
|
|
45
45
|
"@owlmeans/dep-config": "workspace:*",
|
|
46
|
-
"@owlmeans/server-planning": "^0.1.18-rc.
|
|
46
|
+
"@owlmeans/server-planning": "^0.1.18-rc.32",
|
|
47
47
|
"@owlmeans/test": "^0.1.18-rc.36",
|
|
48
48
|
"@types/bun": "^1.4.2",
|
|
49
49
|
"ajv": "^8.20.0",
|
package/src/resource-feed.ts
CHANGED
|
@@ -30,6 +30,7 @@ export const makePlanningResourceFeed = <C extends BasicConfig, T extends BasicC
|
|
|
30
30
|
const store = stores[name]
|
|
31
31
|
const { page: _page, size: _size, sort: _sort, ids, nickname, authentication, ...where } = query as Record<string, any>
|
|
32
32
|
const matches = { ...where, ...(ids != null ? { id: { $in: ids } } : {}),
|
|
33
|
+
...(name === 'assignees' && where.retired === false ? { retired: { $ne: true } } : {}),
|
|
33
34
|
...(nickname != null ? { nicknameKey: mentionHelper.nicknameKey(nickname) } : {}),
|
|
34
35
|
...(authentication != null ? { 'authentication.provider': authentication.provider, 'authentication.externalId': authentication.externalId } : {}),
|
|
35
36
|
...(opts.scope?.entityId != null ? { entityId: opts.scope.entityId } : {}) }
|
package/src/validation/types.ts
CHANGED
package/tests/resources.spec.ts
CHANGED
|
@@ -4,6 +4,32 @@ import { makePlanningResourceFeed } from '../src/index.js'
|
|
|
4
4
|
import { ENTITY_ID, makeSuite } from './context.js'
|
|
5
5
|
|
|
6
6
|
describe('@owlmeans/client-planning — separate resources over real protocol handlers', () => {
|
|
7
|
+
test('active assignee feeds include unset flags and reconcile removal without dropping retired history', async () => {
|
|
8
|
+
const suite = await makeSuite({ resources: true })
|
|
9
|
+
const draft = (nickname: string) => ({ nickname, kind: AssigneeKind.Human, type: 'test:participant', authentication: { provider: 'external', externalId: nickname } })
|
|
10
|
+
const active = await suite.local.assignees.create(draft('active'))
|
|
11
|
+
const removed = await suite.local.assignees.create(draft('removed'))
|
|
12
|
+
const retired = await suite.local.assignees.create(draft('retired'))
|
|
13
|
+
await suite.local.assignees.retire(retired.id!, { version: 1 })
|
|
14
|
+
await suite.planning.assignees.get(retired.id!)
|
|
15
|
+
const stores = suite.client.planningStores!()
|
|
16
|
+
const ids = [active.id!, removed.id!, retired.id!]
|
|
17
|
+
const feed = makePlanningResourceFeed(suite.client, { assignees: { ids, retired: false, size: 0 }, refresh: 0 })
|
|
18
|
+
await feed.ready
|
|
19
|
+
expect(feed.error).toBeNull()
|
|
20
|
+
expect((await suite.planning.assignees.list({ ids, retired: false })).items.map(row => row.id).sort()).toEqual([active.id!, removed.id!].sort())
|
|
21
|
+
expect(await stores.assignees.load(active.id!)).not.toBeNull()
|
|
22
|
+
expect(await stores.assignees.load(removed.id!)).not.toBeNull()
|
|
23
|
+
// A remote retirement removes the formerly-active snapshot, but unrelated historical
|
|
24
|
+
// identities already in the shared mirror remain available for existing references.
|
|
25
|
+
await suite.local.assignees.retire(removed.id!, { version: 1 })
|
|
26
|
+
await feed.refresh()
|
|
27
|
+
expect(await stores.assignees.load(removed.id!)).toBeNull()
|
|
28
|
+
expect((await stores.assignees.get(retired.id!)).retired).toBe(true)
|
|
29
|
+
expect(await stores.assignees.load(active.id!)).not.toBeNull()
|
|
30
|
+
await feed.stop(); await suite.client.planning().close()
|
|
31
|
+
})
|
|
32
|
+
|
|
7
33
|
test('assignees, teams, comments and mentions roundtrip and mirror versioned writes', async () => {
|
|
8
34
|
const suite = await makeSuite({ resources: true })
|
|
9
35
|
const p = suite.planning, project = await suite.project(), card = await suite.story(project.id!)
|