@shardworks/clerk-apparatus 0.1.216 → 0.1.218
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 +70 -1
- package/dist/clerk.d.ts +9 -1
- package/dist/clerk.d.ts.map +1 -1
- package/dist/clerk.js +162 -7
- package/dist/clerk.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js.map +1 -1
- package/dist/link-normalize.d.ts +39 -0
- package/dist/link-normalize.d.ts.map +1 -0
- package/dist/link-normalize.js +55 -0
- package/dist/link-normalize.js.map +1 -0
- package/dist/tools/index.d.ts +2 -0
- package/dist/tools/index.d.ts.map +1 -1
- package/dist/tools/index.js +2 -0
- package/dist/tools/index.js.map +1 -1
- package/dist/tools/writ-link-meanings-show.d.ts +6 -0
- package/dist/tools/writ-link-meanings-show.d.ts.map +1 -0
- package/dist/tools/writ-link-meanings-show.js +24 -0
- package/dist/tools/writ-link-meanings-show.js.map +1 -0
- package/dist/tools/writ-link-meanings.d.ts +6 -0
- package/dist/tools/writ-link-meanings.d.ts.map +1 -0
- package/dist/tools/writ-link-meanings.js +50 -0
- package/dist/tools/writ-link-meanings.js.map +1 -0
- package/dist/tools/writ-link.d.ts +1 -0
- package/dist/tools/writ-link.d.ts.map +1 -1
- package/dist/tools/writ-link.js +11 -3
- package/dist/tools/writ-link.js.map +1 -1
- package/dist/types.d.ts +80 -5
- package/dist/types.d.ts.map +1 -1
- package/package.json +4 -4
package/README.md
CHANGED
|
@@ -112,6 +112,46 @@ Each entry includes:
|
|
|
112
112
|
|
|
113
113
|
Source precedence: guild config entries fully shadow kit contributions with the same name (including description).
|
|
114
114
|
|
|
115
|
+
### `link(sourceId, targetId, type, semanticMeaning?): Promise<WritLinkDoc>`
|
|
116
|
+
|
|
117
|
+
Create a directional link between two writs.
|
|
118
|
+
|
|
119
|
+
```typescript
|
|
120
|
+
// Casual label — attach any open-string relationship type.
|
|
121
|
+
await clerk.link(src.id, tgt.id, 'fixes');
|
|
122
|
+
|
|
123
|
+
// Load-bearing — attach a registered semantic meaning id.
|
|
124
|
+
await clerk.link(src.id, tgt.id, 'refines', 'astrolabe:refines');
|
|
125
|
+
```
|
|
126
|
+
|
|
127
|
+
Link rows carry two complementary identifiers:
|
|
128
|
+
|
|
129
|
+
- **`type`** — a casual, human-facing label. Open string. Normalized at write time via a syntactic pipeline (lowercase → trim → camelCase split → snake_case/kebab-case split → whitespace collapse). Variant spellings of the same label (`depends-on`, `dependsOn`, `depends_on`) collapse to a single composite id; distinct labels (`requires` vs `depends on`) remain distinct. Normalization is **not** synonymy.
|
|
130
|
+
- **`semanticMeaning`** — a stable, plugin-owned id from the kit-contributed meaning registry. The load-bearing identifier for downstream consumers. `null` when no meaning is attached. Unknown ids are rejected.
|
|
131
|
+
|
|
132
|
+
Upsert semantics: calling `link()` again for the same `(sourceId, targetId, type)` returns the existing row. When a `semanticMeaning` is supplied on the repeat call, it replaces the existing meaning; when omitted, the existing meaning is preserved.
|
|
133
|
+
|
|
134
|
+
### `unlink(sourceId, targetId, type): Promise<void>`
|
|
135
|
+
|
|
136
|
+
Remove a link. The `type` argument is normalized before deletion, so any spelling variant of the canonical form removes the same link. Idempotent — no error if the link does not exist.
|
|
137
|
+
|
|
138
|
+
### `links(writId): Promise<WritLinks>`
|
|
139
|
+
|
|
140
|
+
Return every link for a writ in both directions: `outbound` (this writ is the source) and `inbound` (this writ is the target).
|
|
141
|
+
|
|
142
|
+
### `listMeanings(): Promise<MeaningDoc[]>`
|
|
143
|
+
|
|
144
|
+
List every kit-contributed link meaning in the registry. Each record includes the fully-qualified meaning id, the contributing plugin, and a human-readable description.
|
|
145
|
+
|
|
146
|
+
```typescript
|
|
147
|
+
const meanings = await clerk.listMeanings();
|
|
148
|
+
// [
|
|
149
|
+
// { id: 'astrolabe:refines', ownerPlugin: 'astrolabe', description: 'Source refines target' },
|
|
150
|
+
// ]
|
|
151
|
+
```
|
|
152
|
+
|
|
153
|
+
Kit authors register meanings under the `linkMeanings` key of their `ClerkKit` (or an apparatus's `supportKit`). Each entry is `{ id, description }`; the id must be prefixed with the contributing plugin id (`{pluginId}:{kebab-suffix}`). Malformed entries, duplicate ids, and plugin-prefix mismatches hard-fail at startup.
|
|
154
|
+
|
|
115
155
|
### `edit(request): Promise<WritDoc>`
|
|
116
156
|
|
|
117
157
|
Edit a writ, updating one or more fields. Only the provided fields are updated.
|
|
@@ -251,8 +291,10 @@ The Clerk contributes books, tools, and pages to the guild:
|
|
|
251
291
|
| `writ-fail` | `clerk:write` | Fail a writ (open/stuck → failed) |
|
|
252
292
|
| `writ-cancel` | `clerk:write` | Cancel a writ (new/open/stuck → cancelled) |
|
|
253
293
|
| `writ-publish` | `clerk:write` | Publish a draft writ (new → open) |
|
|
254
|
-
| `writ-link` | `clerk:write` | Create a typed link between writs |
|
|
294
|
+
| `writ-link` | `clerk:write` | Create a typed link between writs (`--meaning <id>` to attach a registered semantic meaning) |
|
|
255
295
|
| `writ-unlink` | `clerk:write` | Remove a typed link between writs |
|
|
296
|
+
| `writ-link-meanings` | `clerk:read` | List registered link meanings (`--json` for raw array) |
|
|
297
|
+
| `writ-link-meanings-show` | `clerk:read` | Show a single link meaning by id |
|
|
256
298
|
| `writ-types` | `clerk:read` | List available writ types |
|
|
257
299
|
|
|
258
300
|
---
|
|
@@ -306,6 +348,33 @@ interface WritTypeInfo {
|
|
|
306
348
|
source: string; // "builtin", "guild", or plugin id
|
|
307
349
|
isDefault: boolean; // whether this is the default type
|
|
308
350
|
}
|
|
351
|
+
|
|
352
|
+
interface WritLinkDoc {
|
|
353
|
+
id: string; // `{sourceId}:{targetId}:{normalized type}`
|
|
354
|
+
sourceId: string;
|
|
355
|
+
targetId: string;
|
|
356
|
+
type: string; // casual label, syntactically normalized
|
|
357
|
+
semanticMeaning: string | null; // load-bearing meaning id (null when unattached)
|
|
358
|
+
createdAt: string; // ISO timestamp
|
|
359
|
+
}
|
|
360
|
+
|
|
361
|
+
interface WritLinks {
|
|
362
|
+
outbound: WritLinkDoc[]; // this writ → other writs
|
|
363
|
+
inbound: WritLinkDoc[]; // other writs → this writ
|
|
364
|
+
}
|
|
365
|
+
|
|
366
|
+
// Kit-input shape for linkMeanings contributions on ClerkKit.
|
|
367
|
+
interface MeaningEntry {
|
|
368
|
+
id: string; // `{pluginId}:{kebab-suffix}`
|
|
369
|
+
description: string;
|
|
370
|
+
}
|
|
371
|
+
|
|
372
|
+
// Registry-projection shape returned by listMeanings().
|
|
373
|
+
interface MeaningDoc {
|
|
374
|
+
id: string;
|
|
375
|
+
ownerPlugin: string;
|
|
376
|
+
description: string;
|
|
377
|
+
}
|
|
309
378
|
```
|
|
310
379
|
|
|
311
380
|
See `src/types.ts` for the complete type definitions.
|
package/dist/clerk.d.ts
CHANGED
|
@@ -14,11 +14,19 @@
|
|
|
14
14
|
* See: docs/architecture/apparatus/clerk.md
|
|
15
15
|
*/
|
|
16
16
|
import type { Plugin } from '@shardworks/nexus-core';
|
|
17
|
-
import type { WritTypeEntry } from './types.ts';
|
|
17
|
+
import type { WritTypeEntry, MeaningEntry } from './types.ts';
|
|
18
18
|
/** Kit contribution interface for the Clerk's writ type system. */
|
|
19
19
|
export interface ClerkKit {
|
|
20
20
|
/** Writ type descriptors to register with the Clerk. Names are unqualified. */
|
|
21
21
|
writTypes?: WritTypeEntry[];
|
|
22
|
+
/**
|
|
23
|
+
* Link-meaning descriptors to register with the Clerk. Meaning ids must be
|
|
24
|
+
* prefixed with the contributing plugin id (e.g. `astrolabe:refines`).
|
|
25
|
+
* Kit authors supply `{ id, description }`; the registry-projection view
|
|
26
|
+
* (returned by `listMeanings()`) embeds the resolved owner plugin id on
|
|
27
|
+
* each record as `ownerPlugin`.
|
|
28
|
+
*/
|
|
29
|
+
linkMeanings?: MeaningEntry[];
|
|
22
30
|
}
|
|
23
31
|
/**
|
|
24
32
|
* Resolution string applied to non-terminal children that are cancelled by
|
package/dist/clerk.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"clerk.d.ts","sourceRoot":"","sources":["../src/clerk.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,KAAK,EAAE,MAAM,EAAkB,MAAM,wBAAwB,CAAC;AAKrE,OAAO,KAAK,EAWV,aAAa,
|
|
1
|
+
{"version":3,"file":"clerk.d.ts","sourceRoot":"","sources":["../src/clerk.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,KAAK,EAAE,MAAM,EAAkB,MAAM,wBAAwB,CAAC;AAKrE,OAAO,KAAK,EAWV,aAAa,EACb,YAAY,EAEb,MAAM,YAAY,CAAC;AAsBpB,mEAAmE;AACnE,MAAM,WAAW,QAAQ;IACvB,+EAA+E;IAC/E,SAAS,CAAC,EAAE,aAAa,EAAE,CAAC;IAC5B;;;;;;OAMG;IACH,YAAY,CAAC,EAAE,YAAY,EAAE,CAAC;CAC/B;AAQD;;;;;;GAMG;AACH,eAAO,MAAM,qCAAqC,sDACG,CAAC;AAoBtD,wBAAgB,WAAW,IAAI,MAAM,CA6rBpC"}
|
package/dist/clerk.js
CHANGED
|
@@ -15,7 +15,8 @@
|
|
|
15
15
|
*/
|
|
16
16
|
import { guild, generateId } from '@shardworks/nexus-core';
|
|
17
17
|
import { tool } from '@shardworks/tools-apparatus';
|
|
18
|
-
import { commissionPost, pieceAdd, writShow, writList, writEdit, writComplete, writFail, writCancel, writPublish, writLink, writUnlink, } from "./tools/index.js";
|
|
18
|
+
import { commissionPost, pieceAdd, writShow, writList, writEdit, writComplete, writFail, writCancel, writPublish, writLink, writUnlink, writLinkMeanings, writLinkMeaningsShow, } from "./tools/index.js";
|
|
19
|
+
import { normalizeLinkType } from "./link-normalize.js";
|
|
19
20
|
// ── Built-in writ types ──────────────────────────────────────────────
|
|
20
21
|
const BUILTIN_TYPES = new Set(['mandate']);
|
|
21
22
|
// ── Cascade resolution constants ─────────────────────────────────────
|
|
@@ -48,6 +49,15 @@ export function createClerk() {
|
|
|
48
49
|
let mergedWritTypes = new Map([...BUILTIN_TYPES].map((name) => [name, { source: 'builtin' }]));
|
|
49
50
|
/** Config-declared writ type names, for override checking during kit registration. */
|
|
50
51
|
let configWritTypeNames = new Set();
|
|
52
|
+
/** Registry of kit-contributed link meanings, keyed by meaning id. */
|
|
53
|
+
let linkMeaningRegistry = new Map();
|
|
54
|
+
/**
|
|
55
|
+
* Grammar for meaning-id suffixes after the `{pluginId}:` prefix.
|
|
56
|
+
*
|
|
57
|
+
* Kebab-case only: lowercase letters, digits, and hyphens. Must not start
|
|
58
|
+
* or end with a hyphen and must have at least one character.
|
|
59
|
+
*/
|
|
60
|
+
const MEANING_SUFFIX_RE = /^[a-z0-9]+(?:-[a-z0-9]+)*$/;
|
|
51
61
|
// ── Helpers ──────────────────────────────────────────────────────
|
|
52
62
|
function resolveClerkConfig() {
|
|
53
63
|
return guild().guildConfig().clerk ?? {};
|
|
@@ -111,6 +121,47 @@ export function createClerk() {
|
|
|
111
121
|
});
|
|
112
122
|
}
|
|
113
123
|
}
|
|
124
|
+
function registerKitLinkMeanings(kitEntry) {
|
|
125
|
+
const pluginId = kitEntry.pluginId;
|
|
126
|
+
const raw = kitEntry.value;
|
|
127
|
+
if (!Array.isArray(raw)) {
|
|
128
|
+
throw new Error(`[clerk] Kit "${pluginId}" linkMeanings: expected an array, got ${typeof raw}.`);
|
|
129
|
+
}
|
|
130
|
+
for (const entry of raw) {
|
|
131
|
+
if (typeof entry !== 'object' || entry === null) {
|
|
132
|
+
throw new Error(`[clerk] Kit "${pluginId}" linkMeanings: entry is not an object (got ${entry === null ? 'null' : typeof entry}).`);
|
|
133
|
+
}
|
|
134
|
+
const rec = entry;
|
|
135
|
+
const id = rec.id;
|
|
136
|
+
const description = rec.description;
|
|
137
|
+
if (typeof id !== 'string' || id.length === 0) {
|
|
138
|
+
throw new Error(`[clerk] Kit "${pluginId}" linkMeanings: entry is missing a non-empty string "id" field.`);
|
|
139
|
+
}
|
|
140
|
+
if (typeof description !== 'string' || description.length === 0) {
|
|
141
|
+
throw new Error(`[clerk] Kit "${pluginId}" linkMeanings: entry "${id}" is missing a non-empty string "description" field.`);
|
|
142
|
+
}
|
|
143
|
+
const colonIdx = id.indexOf(':');
|
|
144
|
+
if (colonIdx <= 0 || colonIdx === id.length - 1) {
|
|
145
|
+
throw new Error(`[clerk] Kit "${pluginId}" linkMeanings: entry "${id}" must be of the form "{pluginId}:{kebab-suffix}".`);
|
|
146
|
+
}
|
|
147
|
+
const prefix = id.slice(0, colonIdx);
|
|
148
|
+
const suffix = id.slice(colonIdx + 1);
|
|
149
|
+
if (prefix !== pluginId) {
|
|
150
|
+
throw new Error(`[clerk] Kit "${pluginId}" linkMeanings: entry "${id}" has prefix "${prefix}" but must match the contributing plugin id "${pluginId}".`);
|
|
151
|
+
}
|
|
152
|
+
if (!MEANING_SUFFIX_RE.test(suffix)) {
|
|
153
|
+
throw new Error(`[clerk] Kit "${pluginId}" linkMeanings: entry "${id}" suffix "${suffix}" must be kebab-case (lowercase letters, digits, and hyphens, not starting or ending with "-").`);
|
|
154
|
+
}
|
|
155
|
+
if (linkMeaningRegistry.has(id)) {
|
|
156
|
+
const existing = linkMeaningRegistry.get(id);
|
|
157
|
+
throw new Error(`[clerk] Kit "${pluginId}" linkMeanings: duplicate meaning id "${id}" — already registered by kit "${existing.ownerPlugin}".`);
|
|
158
|
+
}
|
|
159
|
+
linkMeaningRegistry.set(id, {
|
|
160
|
+
ownerPlugin: pluginId,
|
|
161
|
+
description,
|
|
162
|
+
});
|
|
163
|
+
}
|
|
164
|
+
}
|
|
114
165
|
// ── API ──────────────────────────────────────────────────────────
|
|
115
166
|
const api = {
|
|
116
167
|
async post(request) {
|
|
@@ -193,13 +244,25 @@ export function createClerk() {
|
|
|
193
244
|
const where = buildWhereClause(filters);
|
|
194
245
|
return writs.count(where);
|
|
195
246
|
},
|
|
196
|
-
async link(sourceId, targetId, type) {
|
|
247
|
+
async link(sourceId, targetId, type, semanticMeaning) {
|
|
197
248
|
if (sourceId === targetId) {
|
|
198
249
|
throw new Error(`Cannot link a writ to itself: "${sourceId}".`);
|
|
199
250
|
}
|
|
200
|
-
|
|
251
|
+
// D2: normalize first, then reject empty canonical form. An all-
|
|
252
|
+
// whitespace input canonicalizes to '' and is rejected here.
|
|
253
|
+
const normalizedType = normalizeLinkType(type);
|
|
254
|
+
if (!normalizedType) {
|
|
201
255
|
throw new Error('Link type must be a non-empty string.');
|
|
202
256
|
}
|
|
257
|
+
// If a semanticMeaning was supplied, validate it against the registry
|
|
258
|
+
// before touching the store.
|
|
259
|
+
if (semanticMeaning !== undefined) {
|
|
260
|
+
if (!linkMeaningRegistry.has(semanticMeaning)) {
|
|
261
|
+
throw new Error(`Unknown semanticMeaning "${semanticMeaning}". Registered meanings: ${linkMeaningRegistry.size === 0
|
|
262
|
+
? '(none)'
|
|
263
|
+
: [...linkMeaningRegistry.keys()].join(', ')}.`);
|
|
264
|
+
}
|
|
265
|
+
}
|
|
203
266
|
const source = await writs.get(sourceId);
|
|
204
267
|
if (!source) {
|
|
205
268
|
throw new Error(`Writ "${sourceId}" not found.`);
|
|
@@ -208,16 +271,24 @@ export function createClerk() {
|
|
|
208
271
|
if (!target) {
|
|
209
272
|
throw new Error(`Writ "${targetId}" not found.`);
|
|
210
273
|
}
|
|
211
|
-
const id = `${sourceId}:${targetId}:${
|
|
274
|
+
const id = `${sourceId}:${targetId}:${normalizedType}`;
|
|
212
275
|
const existing = await links.get(id);
|
|
213
276
|
if (existing) {
|
|
277
|
+
// Upsert: when the caller supplied a semanticMeaning, update the
|
|
278
|
+
// existing row's meaning. When no meaning was supplied, leave the
|
|
279
|
+
// existing row untouched (preserves prior meaning assignments made
|
|
280
|
+
// by earlier callers).
|
|
281
|
+
if (semanticMeaning !== undefined && existing.semanticMeaning !== semanticMeaning) {
|
|
282
|
+
return links.patch(id, { semanticMeaning });
|
|
283
|
+
}
|
|
214
284
|
return existing;
|
|
215
285
|
}
|
|
216
286
|
const doc = {
|
|
217
287
|
id,
|
|
218
288
|
sourceId,
|
|
219
289
|
targetId,
|
|
220
|
-
type,
|
|
290
|
+
type: normalizedType,
|
|
291
|
+
semanticMeaning: semanticMeaning ?? null,
|
|
221
292
|
createdAt: new Date().toISOString(),
|
|
222
293
|
};
|
|
223
294
|
await links.put(doc);
|
|
@@ -231,7 +302,15 @@ export function createClerk() {
|
|
|
231
302
|
return { outbound, inbound };
|
|
232
303
|
},
|
|
233
304
|
async unlink(sourceId, targetId, type) {
|
|
234
|
-
|
|
305
|
+
// Normalize first so variant spellings of the same type resolve to the
|
|
306
|
+
// same composite id as link() used.
|
|
307
|
+
const normalizedType = normalizeLinkType(type);
|
|
308
|
+
if (!normalizedType) {
|
|
309
|
+
// No-op when the canonical form is empty — unlink() is idempotent, so
|
|
310
|
+
// returning silently is correct even for an unreachable composite id.
|
|
311
|
+
return;
|
|
312
|
+
}
|
|
313
|
+
const id = `${sourceId}:${targetId}:${normalizedType}`;
|
|
235
314
|
await links.delete(id);
|
|
236
315
|
},
|
|
237
316
|
listWritTypes() {
|
|
@@ -243,6 +322,13 @@ export function createClerk() {
|
|
|
243
322
|
isDefault: name === defaultType,
|
|
244
323
|
}));
|
|
245
324
|
},
|
|
325
|
+
async listMeanings() {
|
|
326
|
+
return [...linkMeaningRegistry.entries()].map(([id, meta]) => ({
|
|
327
|
+
id,
|
|
328
|
+
ownerPlugin: meta.ownerPlugin,
|
|
329
|
+
description: meta.description,
|
|
330
|
+
}));
|
|
331
|
+
},
|
|
246
332
|
async edit(request) {
|
|
247
333
|
const writ = await writs.get(request.id);
|
|
248
334
|
if (!writ) {
|
|
@@ -365,7 +451,7 @@ export function createClerk() {
|
|
|
365
451
|
apparatus: {
|
|
366
452
|
requires: ['stacks'],
|
|
367
453
|
recommends: ['oculus'],
|
|
368
|
-
consumes: ['writTypes'],
|
|
454
|
+
consumes: ['writTypes', 'linkMeanings'],
|
|
369
455
|
supportKit: {
|
|
370
456
|
books: {
|
|
371
457
|
writs: {
|
|
@@ -387,6 +473,8 @@ export function createClerk() {
|
|
|
387
473
|
writPublish,
|
|
388
474
|
writLink,
|
|
389
475
|
writUnlink,
|
|
476
|
+
writLinkMeanings,
|
|
477
|
+
writLinkMeaningsShow,
|
|
390
478
|
writTypesTool,
|
|
391
479
|
],
|
|
392
480
|
pages: [
|
|
@@ -411,6 +499,14 @@ export function createClerk() {
|
|
|
411
499
|
for (const entry of ctx.kits('writTypes')) {
|
|
412
500
|
registerKitWritTypes(entry);
|
|
413
501
|
}
|
|
502
|
+
// Scan all kit-contributed link meanings via the Wire-phase snapshot.
|
|
503
|
+
// Unlike writTypes, malformed entries here hard-fail the start() call
|
|
504
|
+
// — a reserved meaning id that silently disappears would be worse
|
|
505
|
+
// than a startup failure, because downstream consumers key on it.
|
|
506
|
+
linkMeaningRegistry = new Map();
|
|
507
|
+
for (const entry of ctx.kits('linkMeanings')) {
|
|
508
|
+
registerKitLinkMeanings(entry);
|
|
509
|
+
}
|
|
414
510
|
// ── CDC: parent/child cascade ───────────────────────────────
|
|
415
511
|
stacks.watch('clerk', 'writs', async (event) => {
|
|
416
512
|
if (event.type !== 'update')
|
|
@@ -444,6 +540,65 @@ export function createClerk() {
|
|
|
444
540
|
});
|
|
445
541
|
}
|
|
446
542
|
}
|
|
543
|
+
// ── One-shot migration: normalize link rows ──────────────────
|
|
544
|
+
// Two-pass flow per D7:
|
|
545
|
+
// Pass 1 — scan every link row, group by (sourceId, targetId,
|
|
546
|
+
// normalizedType). A group with multiple rows is a collision:
|
|
547
|
+
// variant spellings that collapse to the same canonical form.
|
|
548
|
+
// Pass 2 — per group, keep the row with the earliest createdAt;
|
|
549
|
+
// warn and delete the younger siblings (older wins,
|
|
550
|
+
// deterministic regardless of iteration order). Rewrite the
|
|
551
|
+
// survivor's id and type to the canonical form and set
|
|
552
|
+
// `semanticMeaning = null` when absent.
|
|
553
|
+
//
|
|
554
|
+
// Safe to run inside start(): stacks only seals the CDC registry
|
|
555
|
+
// at phase:started (after every apparatus has started), so these
|
|
556
|
+
// writes don't lock out downstream apparatuses that register
|
|
557
|
+
// watchers in their own start(). Writes here fire no links-book
|
|
558
|
+
// watcher today but could in the future.
|
|
559
|
+
const allLinks = await links.find({});
|
|
560
|
+
const groups = new Map();
|
|
561
|
+
for (const row of allLinks) {
|
|
562
|
+
const normalized = normalizeLinkType(row.type);
|
|
563
|
+
const key = `${row.sourceId}:${row.targetId}:${normalized}`;
|
|
564
|
+
const bucket = groups.get(key) ?? [];
|
|
565
|
+
bucket.push(row);
|
|
566
|
+
groups.set(key, bucket);
|
|
567
|
+
}
|
|
568
|
+
for (const [canonicalId, bucket] of groups) {
|
|
569
|
+
// Sort by createdAt ascending — the first element is the oldest.
|
|
570
|
+
bucket.sort((a, b) => (a.createdAt < b.createdAt ? -1 : a.createdAt > b.createdAt ? 1 : 0));
|
|
571
|
+
const [survivor, ...losers] = bucket;
|
|
572
|
+
if (!survivor)
|
|
573
|
+
continue;
|
|
574
|
+
for (const loser of losers) {
|
|
575
|
+
console.warn(`[clerk] Link migration: collapsing duplicate link ` +
|
|
576
|
+
`"${loser.id}" into canonical "${canonicalId}" ` +
|
|
577
|
+
`(source="${loser.sourceId}", target="${loser.targetId}"); ` +
|
|
578
|
+
`older row kept, this one discarded.`);
|
|
579
|
+
await links.delete(loser.id);
|
|
580
|
+
}
|
|
581
|
+
const normalizedType = canonicalId.slice((survivor.sourceId.length + 1) + (survivor.targetId.length + 1));
|
|
582
|
+
const needsRewrite = survivor.id !== canonicalId ||
|
|
583
|
+
survivor.type !== normalizedType ||
|
|
584
|
+
survivor.semanticMeaning === undefined;
|
|
585
|
+
if (!needsRewrite)
|
|
586
|
+
continue;
|
|
587
|
+
// The composite id is immutable — delete-then-put the survivor to
|
|
588
|
+
// replace it with the canonical document.
|
|
589
|
+
const migrated = {
|
|
590
|
+
id: canonicalId,
|
|
591
|
+
sourceId: survivor.sourceId,
|
|
592
|
+
targetId: survivor.targetId,
|
|
593
|
+
type: normalizedType,
|
|
594
|
+
semanticMeaning: survivor.semanticMeaning ?? null,
|
|
595
|
+
createdAt: survivor.createdAt,
|
|
596
|
+
};
|
|
597
|
+
if (survivor.id !== canonicalId) {
|
|
598
|
+
await links.delete(survivor.id);
|
|
599
|
+
}
|
|
600
|
+
await links.put(migrated);
|
|
601
|
+
}
|
|
447
602
|
},
|
|
448
603
|
},
|
|
449
604
|
};
|
package/dist/clerk.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"clerk.js","sourceRoot":"","sources":["../src/clerk.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"clerk.js","sourceRoot":"","sources":["../src/clerk.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
*
|
|
9
9
|
* See: docs/architecture/apparatus/clerk.md
|
|
10
10
|
*/
|
|
11
|
-
export { type ClerkApi, type ClerkConfig, type WritTypeEntry, type WritDoc, type WritLinkDoc, type WritLinks, type WritStatus, type PostCommissionRequest, type EditWritRequest, type WritFilters, type WritTypeInfo, } from './types.ts';
|
|
11
|
+
export { type ClerkApi, type ClerkConfig, type WritTypeEntry, type WritDoc, type WritLinkDoc, type WritLinks, type WritStatus, type PostCommissionRequest, type EditWritRequest, type WritFilters, type WritTypeInfo, type MeaningEntry, type MeaningDoc, } from './types.ts';
|
|
12
12
|
export { createClerk, CASCADE_PARENT_TERMINATION_RESOLUTION } from './clerk.ts';
|
|
13
13
|
export type { ClerkKit } from './clerk.ts';
|
|
14
14
|
declare const _default: import("@shardworks/nexus-core").Plugin;
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAMH,OAAO,EACL,KAAK,QAAQ,EACb,KAAK,WAAW,EAChB,KAAK,aAAa,EAClB,KAAK,OAAO,EACZ,KAAK,WAAW,EAChB,KAAK,SAAS,EACd,KAAK,UAAU,EACf,KAAK,qBAAqB,EAC1B,KAAK,eAAe,EACpB,KAAK,WAAW,EAChB,KAAK,YAAY,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAMH,OAAO,EACL,KAAK,QAAQ,EACb,KAAK,WAAW,EAChB,KAAK,aAAa,EAClB,KAAK,OAAO,EACZ,KAAK,WAAW,EAChB,KAAK,SAAS,EACd,KAAK,UAAU,EACf,KAAK,qBAAqB,EAC1B,KAAK,eAAe,EACpB,KAAK,WAAW,EAChB,KAAK,YAAY,EACjB,KAAK,YAAY,EACjB,KAAK,UAAU,GAChB,MAAM,YAAY,CAAC;AAEpB,OAAO,EAAE,WAAW,EAAE,qCAAqC,EAAE,MAAM,YAAY,CAAC;AAChF,YAAY,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;;AAI3C,wBAA6B"}
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAEzC,yEAAyE;AAEzE,OAAO,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAEzC,yEAAyE;AAEzE,OAAO,EAcN,MAAM,YAAY,CAAC;AAEpB,OAAO,EAAE,WAAW,EAAE,qCAAqC,EAAE,MAAM,YAAY,CAAC;AAGhF,yEAAyE;AAEzE,eAAe,WAAW,EAAE,CAAC"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Link-type normalization.
|
|
3
|
+
*
|
|
4
|
+
* The Clerk's `WritLinkDoc.type` is an open string used as a casual label, and
|
|
5
|
+
* callers spell the "same" relationship many different ways: `fixes`, `Fixes`,
|
|
6
|
+
* `depends-on`, `dependsOn`, `depends_on`, `depends on`. Left alone, each of
|
|
7
|
+
* those produces a distinct composite-id link document — which destroys any
|
|
8
|
+
* mechanism that wants to react to a *specific* relationship.
|
|
9
|
+
*
|
|
10
|
+
* This module exposes a single pure function, `normalizeLinkType`, that
|
|
11
|
+
* collapses variant spellings of the same label to a single canonical form.
|
|
12
|
+
* Normalization is purely syntactic — it is NOT synonymy. `requires` and
|
|
13
|
+
* `depends on` normalize to distinct strings; callers that want to treat them
|
|
14
|
+
* as the same relationship should attach the same `semanticMeaning` to both.
|
|
15
|
+
*
|
|
16
|
+
* The pipeline, in order:
|
|
17
|
+
*
|
|
18
|
+
* 1. Lowercase every character.
|
|
19
|
+
* 2. Split camelCase boundaries by inserting a space between a lowercase
|
|
20
|
+
* or digit character and the following uppercase character. (Performed
|
|
21
|
+
* before lowercasing in the implementation by doing the split against
|
|
22
|
+
* the original string, because otherwise the boundaries disappear.)
|
|
23
|
+
* 3. Replace snake_case `_` and kebab-case `-` separators with a space.
|
|
24
|
+
* 4. Collapse any run of whitespace (spaces, tabs, newlines) to a single
|
|
25
|
+
* space.
|
|
26
|
+
* 5. Trim leading and trailing whitespace.
|
|
27
|
+
*
|
|
28
|
+
* An all-whitespace or empty input canonicalizes to the empty string `''`;
|
|
29
|
+
* callers must validate the result if they require a non-empty canonical
|
|
30
|
+
* form.
|
|
31
|
+
*/
|
|
32
|
+
/**
|
|
33
|
+
* Normalize a link-type string to its canonical form.
|
|
34
|
+
*
|
|
35
|
+
* @param input - The raw type string supplied by a caller.
|
|
36
|
+
* @returns The canonical lowercase, space-separated form.
|
|
37
|
+
*/
|
|
38
|
+
export declare function normalizeLinkType(input: string): string;
|
|
39
|
+
//# sourceMappingURL=link-normalize.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"link-normalize.d.ts","sourceRoot":"","sources":["../src/link-normalize.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AAEH;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAoBvD"}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Link-type normalization.
|
|
3
|
+
*
|
|
4
|
+
* The Clerk's `WritLinkDoc.type` is an open string used as a casual label, and
|
|
5
|
+
* callers spell the "same" relationship many different ways: `fixes`, `Fixes`,
|
|
6
|
+
* `depends-on`, `dependsOn`, `depends_on`, `depends on`. Left alone, each of
|
|
7
|
+
* those produces a distinct composite-id link document — which destroys any
|
|
8
|
+
* mechanism that wants to react to a *specific* relationship.
|
|
9
|
+
*
|
|
10
|
+
* This module exposes a single pure function, `normalizeLinkType`, that
|
|
11
|
+
* collapses variant spellings of the same label to a single canonical form.
|
|
12
|
+
* Normalization is purely syntactic — it is NOT synonymy. `requires` and
|
|
13
|
+
* `depends on` normalize to distinct strings; callers that want to treat them
|
|
14
|
+
* as the same relationship should attach the same `semanticMeaning` to both.
|
|
15
|
+
*
|
|
16
|
+
* The pipeline, in order:
|
|
17
|
+
*
|
|
18
|
+
* 1. Lowercase every character.
|
|
19
|
+
* 2. Split camelCase boundaries by inserting a space between a lowercase
|
|
20
|
+
* or digit character and the following uppercase character. (Performed
|
|
21
|
+
* before lowercasing in the implementation by doing the split against
|
|
22
|
+
* the original string, because otherwise the boundaries disappear.)
|
|
23
|
+
* 3. Replace snake_case `_` and kebab-case `-` separators with a space.
|
|
24
|
+
* 4. Collapse any run of whitespace (spaces, tabs, newlines) to a single
|
|
25
|
+
* space.
|
|
26
|
+
* 5. Trim leading and trailing whitespace.
|
|
27
|
+
*
|
|
28
|
+
* An all-whitespace or empty input canonicalizes to the empty string `''`;
|
|
29
|
+
* callers must validate the result if they require a non-empty canonical
|
|
30
|
+
* form.
|
|
31
|
+
*/
|
|
32
|
+
/**
|
|
33
|
+
* Normalize a link-type string to its canonical form.
|
|
34
|
+
*
|
|
35
|
+
* @param input - The raw type string supplied by a caller.
|
|
36
|
+
* @returns The canonical lowercase, space-separated form.
|
|
37
|
+
*/
|
|
38
|
+
export function normalizeLinkType(input) {
|
|
39
|
+
// Split camelCase boundaries FIRST, against the original casing —
|
|
40
|
+
// otherwise lowercasing erases the boundary between adjacent words.
|
|
41
|
+
// Insert a space whenever a lowercase letter or digit is followed by an
|
|
42
|
+
// uppercase letter. This also handles acronym-like runs (e.g. `XMLParser`
|
|
43
|
+
// → `XML Parser`) via a second pass.
|
|
44
|
+
const camelSplit = input
|
|
45
|
+
.replace(/([a-z0-9])([A-Z])/g, '$1 $2')
|
|
46
|
+
.replace(/([A-Z]+)([A-Z][a-z])/g, '$1 $2');
|
|
47
|
+
// Lowercase everything so the stored form is case-insensitive.
|
|
48
|
+
const lowered = camelSplit.toLowerCase();
|
|
49
|
+
// Replace snake_case and kebab-case separators with spaces.
|
|
50
|
+
const separatorsReplaced = lowered.replace(/[-_]+/g, ' ');
|
|
51
|
+
// Collapse runs of whitespace to a single space, then trim.
|
|
52
|
+
const collapsed = separatorsReplaced.replace(/\s+/g, ' ').trim();
|
|
53
|
+
return collapsed;
|
|
54
|
+
}
|
|
55
|
+
//# sourceMappingURL=link-normalize.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"link-normalize.js","sourceRoot":"","sources":["../src/link-normalize.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AAEH;;;;;GAKG;AACH,MAAM,UAAU,iBAAiB,CAAC,KAAa;IAC7C,kEAAkE;IAClE,oEAAoE;IACpE,wEAAwE;IACxE,0EAA0E;IAC1E,qCAAqC;IACrC,MAAM,UAAU,GAAG,KAAK;SACrB,OAAO,CAAC,oBAAoB,EAAE,OAAO,CAAC;SACtC,OAAO,CAAC,uBAAuB,EAAE,OAAO,CAAC,CAAC;IAE7C,+DAA+D;IAC/D,MAAM,OAAO,GAAG,UAAU,CAAC,WAAW,EAAE,CAAC;IAEzC,4DAA4D;IAC5D,MAAM,kBAAkB,GAAG,OAAO,CAAC,OAAO,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;IAE1D,4DAA4D;IAC5D,MAAM,SAAS,GAAG,kBAAkB,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;IAEjE,OAAO,SAAS,CAAC;AACnB,CAAC"}
|
package/dist/tools/index.d.ts
CHANGED
|
@@ -9,4 +9,6 @@ export { default as writCancel } from './writ-cancel.ts';
|
|
|
9
9
|
export { default as writPublish } from './writ-publish.ts';
|
|
10
10
|
export { default as writLink } from './writ-link.ts';
|
|
11
11
|
export { default as writUnlink } from './writ-unlink.ts';
|
|
12
|
+
export { default as writLinkMeanings } from './writ-link-meanings.ts';
|
|
13
|
+
export { default as writLinkMeaningsShow } from './writ-link-meanings-show.ts';
|
|
12
14
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/tools/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACjE,OAAO,EAAE,OAAO,IAAI,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AACrD,OAAO,EAAE,OAAO,IAAI,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AACrD,OAAO,EAAE,OAAO,IAAI,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AACrD,OAAO,EAAE,OAAO,IAAI,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AACrD,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAC7D,OAAO,EAAE,OAAO,IAAI,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AACrD,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,kBAAkB,CAAC;AACzD,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAC3D,OAAO,EAAE,OAAO,IAAI,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AACrD,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,kBAAkB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/tools/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACjE,OAAO,EAAE,OAAO,IAAI,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AACrD,OAAO,EAAE,OAAO,IAAI,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AACrD,OAAO,EAAE,OAAO,IAAI,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AACrD,OAAO,EAAE,OAAO,IAAI,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AACrD,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAC7D,OAAO,EAAE,OAAO,IAAI,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AACrD,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,kBAAkB,CAAC;AACzD,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAC3D,OAAO,EAAE,OAAO,IAAI,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AACrD,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,kBAAkB,CAAC;AACzD,OAAO,EAAE,OAAO,IAAI,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AACtE,OAAO,EAAE,OAAO,IAAI,oBAAoB,EAAE,MAAM,8BAA8B,CAAC"}
|
package/dist/tools/index.js
CHANGED
|
@@ -9,4 +9,6 @@ export { default as writCancel } from "./writ-cancel.js";
|
|
|
9
9
|
export { default as writPublish } from "./writ-publish.js";
|
|
10
10
|
export { default as writLink } from "./writ-link.js";
|
|
11
11
|
export { default as writUnlink } from "./writ-unlink.js";
|
|
12
|
+
export { default as writLinkMeanings } from "./writ-link-meanings.js";
|
|
13
|
+
export { default as writLinkMeaningsShow } from "./writ-link-meanings-show.js";
|
|
12
14
|
//# sourceMappingURL=index.js.map
|
package/dist/tools/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/tools/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACjE,OAAO,EAAE,OAAO,IAAI,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AACrD,OAAO,EAAE,OAAO,IAAI,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AACrD,OAAO,EAAE,OAAO,IAAI,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AACrD,OAAO,EAAE,OAAO,IAAI,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AACrD,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAC7D,OAAO,EAAE,OAAO,IAAI,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AACrD,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,kBAAkB,CAAC;AACzD,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAC3D,OAAO,EAAE,OAAO,IAAI,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AACrD,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,kBAAkB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/tools/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACjE,OAAO,EAAE,OAAO,IAAI,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AACrD,OAAO,EAAE,OAAO,IAAI,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AACrD,OAAO,EAAE,OAAO,IAAI,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AACrD,OAAO,EAAE,OAAO,IAAI,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AACrD,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAC7D,OAAO,EAAE,OAAO,IAAI,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AACrD,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,kBAAkB,CAAC;AACzD,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAC3D,OAAO,EAAE,OAAO,IAAI,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AACrD,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,kBAAkB,CAAC;AACzD,OAAO,EAAE,OAAO,IAAI,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AACtE,OAAO,EAAE,OAAO,IAAI,oBAAoB,EAAE,MAAM,8BAA8B,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"writ-link-meanings-show.d.ts","sourceRoot":"","sources":["../../src/tools/writ-link-meanings-show.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;;;;AAKxB,wBAwBG"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
import { guild } from '@shardworks/nexus-core';
|
|
3
|
+
import { tool } from '@shardworks/tools-apparatus';
|
|
4
|
+
export default tool({
|
|
5
|
+
name: 'writ-link-meanings-show',
|
|
6
|
+
description: 'Show a single link meaning by id',
|
|
7
|
+
instructions: 'Returns the full record for a registered link meaning, including its ' +
|
|
8
|
+
'owner plugin id and description. Exits with an error if the id is not ' +
|
|
9
|
+
'present in the registry.',
|
|
10
|
+
params: {
|
|
11
|
+
id: z.string().describe('Fully-qualified meaning id (e.g. "astrolabe:refines")'),
|
|
12
|
+
},
|
|
13
|
+
permission: 'read',
|
|
14
|
+
handler: async (params) => {
|
|
15
|
+
const clerk = guild().apparatus('clerk');
|
|
16
|
+
const meanings = await clerk.listMeanings();
|
|
17
|
+
const match = meanings.find((m) => m.id === params.id);
|
|
18
|
+
if (!match) {
|
|
19
|
+
throw new Error(`Unknown link meaning "${params.id}". Registered meanings: ${meanings.length === 0 ? '(none)' : meanings.map((m) => m.id).join(', ')}.`);
|
|
20
|
+
}
|
|
21
|
+
return match;
|
|
22
|
+
},
|
|
23
|
+
});
|
|
24
|
+
//# sourceMappingURL=writ-link-meanings-show.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"writ-link-meanings-show.js","sourceRoot":"","sources":["../../src/tools/writ-link-meanings-show.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,KAAK,EAAE,MAAM,wBAAwB,CAAC;AAC/C,OAAO,EAAE,IAAI,EAAE,MAAM,6BAA6B,CAAC;AAGnD,eAAe,IAAI,CAAC;IAClB,IAAI,EAAE,yBAAyB;IAC/B,WAAW,EAAE,kCAAkC;IAC/C,YAAY,EACV,uEAAuE;QACvE,wEAAwE;QACxE,0BAA0B;IAC5B,MAAM,EAAE;QACN,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,uDAAuD,CAAC;KACjF;IACD,UAAU,EAAE,MAAM;IAClB,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE;QACxB,MAAM,KAAK,GAAG,KAAK,EAAE,CAAC,SAAS,CAAW,OAAO,CAAC,CAAC;QACnD,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,YAAY,EAAE,CAAC;QAC5C,MAAM,KAAK,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,MAAM,CAAC,EAAE,CAAC,CAAC;QACvD,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,MAAM,IAAI,KAAK,CACb,yBAAyB,MAAM,CAAC,EAAE,2BAChC,QAAQ,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CACxE,GAAG,CACJ,CAAC;QACJ,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC;CACF,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"writ-link-meanings.d.ts","sourceRoot":"","sources":["../../src/tools/writ-link-meanings.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;;;;AAkCxB,wBAqBG"}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
import { guild } from '@shardworks/nexus-core';
|
|
3
|
+
import { tool } from '@shardworks/tools-apparatus';
|
|
4
|
+
/**
|
|
5
|
+
* Format a list of MeaningDocs as a three-column text table with headers
|
|
6
|
+
* `ID`, `OWNER`, `DESCRIPTION`. Columns are space-padded to the widest row
|
|
7
|
+
* (including the header) and separated by two spaces.
|
|
8
|
+
*/
|
|
9
|
+
function formatTable(meanings) {
|
|
10
|
+
if (meanings.length === 0) {
|
|
11
|
+
return 'No meanings registered.';
|
|
12
|
+
}
|
|
13
|
+
const rows = [
|
|
14
|
+
['ID', 'OWNER', 'DESCRIPTION'],
|
|
15
|
+
...meanings.map((m) => [m.id, m.ownerPlugin, m.description]),
|
|
16
|
+
];
|
|
17
|
+
const widths = [0, 0, 0];
|
|
18
|
+
for (const row of rows) {
|
|
19
|
+
for (let i = 0; i < 3; i++) {
|
|
20
|
+
if (row[i].length > widths[i])
|
|
21
|
+
widths[i] = row[i].length;
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
return rows
|
|
25
|
+
.map((row) => `${row[0].padEnd(widths[0])} ${row[1].padEnd(widths[1])} ${row[2]}`.trimEnd())
|
|
26
|
+
.join('\n');
|
|
27
|
+
}
|
|
28
|
+
export default tool({
|
|
29
|
+
name: 'writ-link-meanings',
|
|
30
|
+
description: 'List registered link meanings',
|
|
31
|
+
instructions: 'Returns the kit-contributed link meaning registry. Each meaning has a ' +
|
|
32
|
+
'fully-qualified id (prefixed with the contributing plugin id), an owner ' +
|
|
33
|
+
'plugin, and a human-readable description. By default the output is a ' +
|
|
34
|
+
'human-readable table; pass --json for the raw array.',
|
|
35
|
+
params: {
|
|
36
|
+
json: z
|
|
37
|
+
.boolean()
|
|
38
|
+
.default(false)
|
|
39
|
+
.describe('Emit the raw array as JSON instead of a formatted table'),
|
|
40
|
+
},
|
|
41
|
+
permission: 'read',
|
|
42
|
+
handler: async (params) => {
|
|
43
|
+
const clerk = guild().apparatus('clerk');
|
|
44
|
+
const meanings = await clerk.listMeanings();
|
|
45
|
+
if (params.json)
|
|
46
|
+
return meanings;
|
|
47
|
+
return formatTable(meanings);
|
|
48
|
+
},
|
|
49
|
+
});
|
|
50
|
+
//# sourceMappingURL=writ-link-meanings.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"writ-link-meanings.js","sourceRoot":"","sources":["../../src/tools/writ-link-meanings.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,KAAK,EAAE,MAAM,wBAAwB,CAAC;AAC/C,OAAO,EAAE,IAAI,EAAE,MAAM,6BAA6B,CAAC;AAGnD;;;;GAIG;AACH,SAAS,WAAW,CAAC,QAAsB;IACzC,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC1B,OAAO,yBAAyB,CAAC;IACnC,CAAC;IAED,MAAM,IAAI,GAAoC;QAC5C,CAAC,IAAI,EAAE,OAAO,EAAE,aAAa,CAAC;QAC9B,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,WAAW,CAA6B,CAAC;KACzF,CAAC;IAEF,MAAM,MAAM,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;IACzB,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;YAC3B,IAAI,GAAG,CAAC,CAAC,CAAE,CAAC,MAAM,GAAG,MAAM,CAAC,CAAC,CAAE;gBAAE,MAAM,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAE,CAAC,MAAM,CAAC;QAC9D,CAAC;IACH,CAAC;IAED,OAAO,IAAI;SACR,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CACX,GAAG,GAAG,CAAC,CAAC,CAAE,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAE,CAAC,KAAK,GAAG,CAAC,CAAC,CAAE,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAE,CAAC,KAAK,GAAG,CAAC,CAAC,CAAE,EAAE,CAAC,OAAO,EAAE,CACrF;SACA,IAAI,CAAC,IAAI,CAAC,CAAC;AAChB,CAAC;AAED,eAAe,IAAI,CAAC;IAClB,IAAI,EAAE,oBAAoB;IAC1B,WAAW,EAAE,+BAA+B;IAC5C,YAAY,EACV,wEAAwE;QACxE,0EAA0E;QAC1E,uEAAuE;QACvE,sDAAsD;IACxD,MAAM,EAAE;QACN,IAAI,EAAE,CAAC;aACJ,OAAO,EAAE;aACT,OAAO,CAAC,KAAK,CAAC;aACd,QAAQ,CAAC,yDAAyD,CAAC;KACvE;IACD,UAAU,EAAE,MAAM;IAClB,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE;QACxB,MAAM,KAAK,GAAG,KAAK,EAAE,CAAC,SAAS,CAAW,OAAO,CAAC,CAAC;QACnD,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,YAAY,EAAE,CAAC;QAC5C,IAAI,MAAM,CAAC,IAAI;YAAE,OAAO,QAAQ,CAAC;QACjC,OAAO,WAAW,CAAC,QAAQ,CAAC,CAAC;IAC/B,CAAC;CACF,CAAC,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"writ-link.d.ts","sourceRoot":"","sources":["../../src/tools/writ-link.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC
|
|
1
|
+
{"version":3,"file":"writ-link.d.ts","sourceRoot":"","sources":["../../src/tools/writ-link.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;;;;;;;AAKxB,wBAyBG"}
|
package/dist/tools/writ-link.js
CHANGED
|
@@ -6,16 +6,24 @@ export default tool({
|
|
|
6
6
|
description: 'Link two writs with a typed relationship',
|
|
7
7
|
instructions: 'Creates a directional link from source writ to target writ. ' +
|
|
8
8
|
'The type describes the relationship (e.g. "fixes", "retries", "supersedes", "duplicates"). ' +
|
|
9
|
-
'
|
|
9
|
+
'The type is normalized at write time — "depends-on", "dependsOn", and "depends on" all ' +
|
|
10
|
+
'collapse to the same canonical form. Idempotent — creating the same link twice returns ' +
|
|
11
|
+
'the existing link. For load-bearing relationships, pass `--meaning <id>` to attach a ' +
|
|
12
|
+
'registered semantic meaning; the id must appear in the kit-contributed meaning registry ' +
|
|
13
|
+
'(see `writ link-meanings`).',
|
|
10
14
|
params: {
|
|
11
15
|
sourceId: z.string().describe('The writ that is the origin of this relationship'),
|
|
12
16
|
targetId: z.string().describe('The writ that is the target of this relationship'),
|
|
13
|
-
type: z.string().describe('Relationship type (e.g. "fixes", "retries", "supersedes", "duplicates")'),
|
|
17
|
+
type: z.string().describe('Relationship type (e.g. "fixes", "retries", "supersedes", "duplicates") — casual label, normalized at write time'),
|
|
18
|
+
meaning: z
|
|
19
|
+
.string()
|
|
20
|
+
.optional()
|
|
21
|
+
.describe('Optional load-bearing semantic meaning id (must be registered — see `writ link-meanings`)'),
|
|
14
22
|
},
|
|
15
23
|
permission: 'write',
|
|
16
24
|
handler: async (params) => {
|
|
17
25
|
const clerk = guild().apparatus('clerk');
|
|
18
|
-
return clerk.link(params.sourceId, params.targetId, params.type);
|
|
26
|
+
return clerk.link(params.sourceId, params.targetId, params.type, params.meaning);
|
|
19
27
|
},
|
|
20
28
|
});
|
|
21
29
|
//# sourceMappingURL=writ-link.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"writ-link.js","sourceRoot":"","sources":["../../src/tools/writ-link.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,KAAK,EAAE,MAAM,wBAAwB,CAAC;AAC/C,OAAO,EAAE,IAAI,EAAE,MAAM,6BAA6B,CAAC;AAGnD,eAAe,IAAI,CAAC;IAClB,IAAI,EAAE,WAAW;IACjB,WAAW,EAAE,0CAA0C;IACvD,YAAY,EACV,8DAA8D;QAC9D,6FAA6F;QAC7F,
|
|
1
|
+
{"version":3,"file":"writ-link.js","sourceRoot":"","sources":["../../src/tools/writ-link.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,KAAK,EAAE,MAAM,wBAAwB,CAAC;AAC/C,OAAO,EAAE,IAAI,EAAE,MAAM,6BAA6B,CAAC;AAGnD,eAAe,IAAI,CAAC;IAClB,IAAI,EAAE,WAAW;IACjB,WAAW,EAAE,0CAA0C;IACvD,YAAY,EACV,8DAA8D;QAC9D,6FAA6F;QAC7F,yFAAyF;QACzF,yFAAyF;QACzF,uFAAuF;QACvF,0FAA0F;QAC1F,6BAA6B;IAC/B,MAAM,EAAE;QACN,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,kDAAkD,CAAC;QACjF,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,kDAAkD,CAAC;QACjF,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,kHAAkH,CAAC;QAC7I,OAAO,EAAE,CAAC;aACP,MAAM,EAAE;aACR,QAAQ,EAAE;aACV,QAAQ,CAAC,2FAA2F,CAAC;KACzG;IACD,UAAU,EAAE,OAAO;IACnB,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE;QACxB,MAAM,KAAK,GAAG,KAAK,EAAE,CAAC,SAAS,CAAW,OAAO,CAAC,CAAC;QACnD,OAAO,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,MAAM,CAAC,QAAQ,EAAE,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC;IACnF,CAAC;CACF,CAAC,CAAC"}
|
package/dist/types.d.ts
CHANGED
|
@@ -135,21 +135,84 @@ declare module '@shardworks/nexus-core' {
|
|
|
135
135
|
}
|
|
136
136
|
/**
|
|
137
137
|
* A link document as stored in The Stacks (clerk/links book).
|
|
138
|
+
*
|
|
139
|
+
* A writ link has two complementary identifiers for its relationship:
|
|
140
|
+
*
|
|
141
|
+
* - `type` is a casual, human-facing label. It is an open string, normalized
|
|
142
|
+
* at write time via the link-type normalization pipeline (lowercase,
|
|
143
|
+
* trim, camelCase split, snake_case/kebab-case split, whitespace
|
|
144
|
+
* collapse). Variant spellings of the same label collapse to a single
|
|
145
|
+
* canonical form; distinct labels remain distinct. Normalization is
|
|
146
|
+
* purely syntactic — it is NOT synonymy. `requires` and `depends on`
|
|
147
|
+
* normalize to different strings; callers that want to treat them as the
|
|
148
|
+
* same relationship should attach the same `semanticMeaning` to both.
|
|
149
|
+
*
|
|
150
|
+
* - `semanticMeaning` is the load-bearing identifier. It is a stable,
|
|
151
|
+
* plugin-owned id drawn from the kit-contributed meaning registry, and
|
|
152
|
+
* identifies the specific relationship a downstream consumer wants to
|
|
153
|
+
* react to (rendering parent/child, gating publish on `refines`, etc.).
|
|
154
|
+
* `null` when the caller treated this link as a casual label.
|
|
138
155
|
*/
|
|
139
156
|
export interface WritLinkDoc {
|
|
140
157
|
/** Index signature required to satisfy BookEntry constraint. */
|
|
141
158
|
[key: string]: unknown;
|
|
142
|
-
/** Deterministic composite key: `{sourceId}:{targetId}:{type}`. */
|
|
159
|
+
/** Deterministic composite key: `{sourceId}:{targetId}:{normalized type}`. */
|
|
143
160
|
id: string;
|
|
144
161
|
/** The writ that is the origin of this relationship. */
|
|
145
162
|
sourceId: string;
|
|
146
163
|
/** The writ that is the target of this relationship. */
|
|
147
164
|
targetId: string;
|
|
148
|
-
/**
|
|
165
|
+
/**
|
|
166
|
+
* Casual relationship label — an open string normalized syntactically at
|
|
167
|
+
* write time (e.g. "fixes", "retries", "supersedes", "duplicates",
|
|
168
|
+
* "depends on"). NOT a synonymy layer. For load-bearing identity, use
|
|
169
|
+
* `semanticMeaning`.
|
|
170
|
+
*/
|
|
149
171
|
type: string;
|
|
172
|
+
/**
|
|
173
|
+
* Load-bearing identifier for this relationship. When non-null, references
|
|
174
|
+
* a registered meaning id from the `linkMeanings` kit registry and is the
|
|
175
|
+
* field downstream consumers key on. Always present on each row (`null`
|
|
176
|
+
* when the caller did not attach a meaning).
|
|
177
|
+
*/
|
|
178
|
+
semanticMeaning: string | null;
|
|
150
179
|
/** ISO timestamp when the link was created. */
|
|
151
180
|
createdAt: string;
|
|
152
181
|
}
|
|
182
|
+
/**
|
|
183
|
+
* A link-meaning contribution declared by a kit's `linkMeanings` array.
|
|
184
|
+
*
|
|
185
|
+
* Kit authors use this shape when populating `ClerkKit.linkMeanings`. Meaning
|
|
186
|
+
* ids must be prefixed with the contributing plugin's id followed by `:` and
|
|
187
|
+
* a kebab-case suffix — e.g. kit `astrolabe` contributing `astrolabe:refines`.
|
|
188
|
+
* The registry-projection view (returned by `listMeanings()`) is `MeaningDoc`,
|
|
189
|
+
* which embeds the resolved owner plugin id; kit authors do not repeat their
|
|
190
|
+
* plugin id on each entry.
|
|
191
|
+
*/
|
|
192
|
+
export interface MeaningEntry {
|
|
193
|
+
/**
|
|
194
|
+
* Fully-qualified meaning id. Must begin with `{pluginId}:` and be followed
|
|
195
|
+
* by a non-empty kebab-case suffix (lowercase letters, digits, and hyphens,
|
|
196
|
+
* not starting or ending with a hyphen).
|
|
197
|
+
*/
|
|
198
|
+
id: string;
|
|
199
|
+
/** Human-readable description of the relationship this meaning denotes. */
|
|
200
|
+
description: string;
|
|
201
|
+
}
|
|
202
|
+
/**
|
|
203
|
+
* A link-meaning record as projected by `listMeanings()`.
|
|
204
|
+
*
|
|
205
|
+
* Unlike `MeaningEntry`, this shape embeds the resolved owner plugin id so
|
|
206
|
+
* consumers of the registry do not need to parse it back out of `id`.
|
|
207
|
+
*/
|
|
208
|
+
export interface MeaningDoc {
|
|
209
|
+
/** Fully-qualified meaning id. */
|
|
210
|
+
id: string;
|
|
211
|
+
/** Plugin id of the kit that contributed this meaning. */
|
|
212
|
+
ownerPlugin: string;
|
|
213
|
+
/** Human-readable description of this meaning. */
|
|
214
|
+
description: string;
|
|
215
|
+
}
|
|
153
216
|
/**
|
|
154
217
|
* Result of querying links for a writ — both directions in one response.
|
|
155
218
|
*/
|
|
@@ -202,10 +265,15 @@ export interface ClerkApi {
|
|
|
202
265
|
transition(id: string, to: WritStatus, fields?: Partial<WritDoc>): Promise<WritDoc>;
|
|
203
266
|
/**
|
|
204
267
|
* Create a typed directional link from one writ to another.
|
|
205
|
-
* Both writs must exist. Self-links are rejected.
|
|
206
|
-
*
|
|
268
|
+
* Both writs must exist. Self-links are rejected. The `type` argument is
|
|
269
|
+
* normalized before the composite id is constructed, so variant spellings
|
|
270
|
+
* of the same label collapse to a single link. When a link with the same
|
|
271
|
+
* canonical composite id already exists, the existing row is returned;
|
|
272
|
+
* if `semanticMeaning` is supplied, it is written onto the existing row
|
|
273
|
+
* (upsert). The optional `semanticMeaning` must reference an id registered
|
|
274
|
+
* in the kit-contributed meaning registry; unknown ids are rejected.
|
|
207
275
|
*/
|
|
208
|
-
link(sourceId: string, targetId: string, type: string): Promise<WritLinkDoc>;
|
|
276
|
+
link(sourceId: string, targetId: string, type: string, semanticMeaning?: string): Promise<WritLinkDoc>;
|
|
209
277
|
/**
|
|
210
278
|
* Query all links for a writ — both outbound (this writ is the source)
|
|
211
279
|
* and inbound (this writ is the target).
|
|
@@ -229,5 +297,12 @@ export interface ClerkApi {
|
|
|
229
297
|
* whether it is the default type.
|
|
230
298
|
*/
|
|
231
299
|
listWritTypes(): WritTypeInfo[];
|
|
300
|
+
/**
|
|
301
|
+
* List all registered link meanings contributed by kits.
|
|
302
|
+
* Returns the registry-projection view of each meaning, including its
|
|
303
|
+
* owner plugin id. Returns an empty array when no meanings have been
|
|
304
|
+
* registered.
|
|
305
|
+
*/
|
|
306
|
+
listMeanings(): Promise<MeaningDoc[]>;
|
|
232
307
|
}
|
|
233
308
|
//# sourceMappingURL=types.d.ts.map
|
package/dist/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,MAAM,UAAU,GAAG,KAAK,GAAG,MAAM,GAAG,OAAO,GAAG,WAAW,GAAG,QAAQ,GAAG,WAAW,CAAC;AAIzF;;GAEG;AACH,MAAM,WAAW,OAAO;IACtB,gEAAgE;IAChE,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;IACvB,sFAAsF;IACtF,EAAE,EAAE,MAAM,CAAC;IACX,+EAA+E;IAC/E,IAAI,EAAE,MAAM,CAAC;IACb,gCAAgC;IAChC,MAAM,EAAE,UAAU,CAAC;IACnB,kCAAkC;IAClC,KAAK,EAAE,MAAM,CAAC;IACd,mBAAmB;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,yBAAyB;IACzB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,sEAAsE;IACtE,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,+CAA+C;IAC/C,SAAS,EAAE,MAAM,CAAC;IAClB,0CAA0C;IAC1C,SAAS,EAAE,MAAM,CAAC;IAClB,4DAA4D;IAC5D,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,yEAAyE;IACzE,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAID;;GAEG;AACH;;;;GAIG;AACH,MAAM,WAAW,eAAe;IAC9B,eAAe;IACf,EAAE,EAAE,MAAM,CAAC;IACX,iBAAiB;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,qBAAqB;IACrB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,oDAAoD;IACpD,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,yDAAyD;IACzD,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,qBAAqB;IACpC;;;OAGG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,sDAAsD;IACtD,KAAK,EAAE,MAAM,CAAC;IACd,mBAAmB;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,kCAAkC;IAClC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;;;;;OAKG;IACH,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB;;;OAGG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAID;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,8EAA8E;IAC9E,MAAM,CAAC,EAAE,UAAU,GAAG,UAAU,EAAE,CAAC;IACnC,4EAA4E;IAC5E,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IACzB,8CAA8C;IAC9C,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,+CAA+C;IAC/C,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,iCAAiC;IACjC,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAID;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,0DAA0D;IAC1D,IAAI,EAAE,MAAM,CAAC;IACb,6DAA6D;IAC7D,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,sFAAsF;IACtF,SAAS,CAAC,EAAE,aAAa,EAAE,CAAC;IAC5B,4FAA4F;IAC5F,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAID,OAAO,QAAQ,wBAAwB,CAAC;IACtC,UAAU,WAAW;QACnB,KAAK,CAAC,EAAE,WAAW,CAAC;KACrB;CACF;AAID
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@shardworks/clerk-apparatus",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.218",
|
|
4
4
|
"license": "ISC",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
@@ -20,12 +20,12 @@
|
|
|
20
20
|
},
|
|
21
21
|
"dependencies": {
|
|
22
22
|
"zod": "4.3.6",
|
|
23
|
-
"@shardworks/stacks-apparatus": "0.1.
|
|
24
|
-
"@shardworks/tools-apparatus": "0.1.
|
|
23
|
+
"@shardworks/stacks-apparatus": "0.1.218",
|
|
24
|
+
"@shardworks/tools-apparatus": "0.1.218"
|
|
25
25
|
},
|
|
26
26
|
"devDependencies": {
|
|
27
27
|
"@types/node": "25.5.0",
|
|
28
|
-
"@shardworks/nexus-core": "0.1.
|
|
28
|
+
"@shardworks/nexus-core": "0.1.218"
|
|
29
29
|
},
|
|
30
30
|
"files": [
|
|
31
31
|
"dist",
|