@thingd/sdk 0.47.2 → 0.47.4
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/dist/mcp/tools.d.ts.map +1 -1
- package/dist/mcp/tools.js +42 -7
- package/dist/version.d.ts +1 -1
- package/dist/version.js +1 -1
- package/package.json +2 -2
package/dist/mcp/tools.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tools.d.ts","sourceRoot":"","sources":["../../src/mcp/tools.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAEzE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAC3C,OAAO,EAIL,KAAK,qBAAqB,EAC3B,MAAM,YAAY,CAAC;AACpB,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,aAAa,CAAC;AAW7D,MAAM,MAAM,0BAA0B,GAAG;IACvC,KAAK,CAAC,EAAE,qBAAqB,GAAG,KAAK,CAAC;IACtC,SAAS,CAAC,EAAE,yBAAyB,CAAC;CACvC,CAAC;AAEF,wBAAgB,mBAAmB,CACjC,MAAM,EAAE,SAAS,EACjB,EAAE,EAAE,MAAM,EACV,OAAO,GAAE,0BAA+B,GACvC,IAAI,
|
|
1
|
+
{"version":3,"file":"tools.d.ts","sourceRoot":"","sources":["../../src/mcp/tools.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAEzE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAC3C,OAAO,EAIL,KAAK,qBAAqB,EAC3B,MAAM,YAAY,CAAC;AACpB,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,aAAa,CAAC;AAW7D,MAAM,MAAM,0BAA0B,GAAG;IACvC,KAAK,CAAC,EAAE,qBAAqB,GAAG,KAAK,CAAC;IACtC,SAAS,CAAC,EAAE,yBAAyB,CAAC;CACvC,CAAC;AAEF,wBAAgB,mBAAmB,CACjC,MAAM,EAAE,SAAS,EACjB,EAAE,EAAE,MAAM,EACV,OAAO,GAAE,0BAA+B,GACvC,IAAI,CA2vBN"}
|
package/dist/mcp/tools.js
CHANGED
|
@@ -143,6 +143,10 @@ export function registerThingdTools(server, db, options = {}) {
|
|
|
143
143
|
},
|
|
144
144
|
}, async ({ stream, event, actor, source }) => {
|
|
145
145
|
assertWriteAllowed();
|
|
146
|
+
// Prevent direct writes to the protected audit stream
|
|
147
|
+
if (stream === audit.stream) {
|
|
148
|
+
throw new Error(`Stream '${stream}' is protected and cannot be written to directly`);
|
|
149
|
+
}
|
|
146
150
|
const stored = await db.events.append(stream, event);
|
|
147
151
|
await appendMcpAuditEvent(db, audit, {
|
|
148
152
|
action: "events.append",
|
|
@@ -453,6 +457,7 @@ export function registerThingdTools(server, db, options = {}) {
|
|
|
453
457
|
.array(z.object({ id: z.string() }).passthrough())
|
|
454
458
|
.min(1)
|
|
455
459
|
.max(1000),
|
|
460
|
+
...auditInputSchema,
|
|
456
461
|
},
|
|
457
462
|
annotations: {
|
|
458
463
|
readOnlyHint: false,
|
|
@@ -460,10 +465,17 @@ export function registerThingdTools(server, db, options = {}) {
|
|
|
460
465
|
idempotentHint: false,
|
|
461
466
|
openWorldHint: false,
|
|
462
467
|
},
|
|
463
|
-
}, async ({ collection, objects }) => {
|
|
468
|
+
}, async ({ collection, objects, actor, source }) => {
|
|
464
469
|
assertWriteAllowed();
|
|
465
470
|
assertCollectionAllowed(collection);
|
|
466
|
-
|
|
471
|
+
const result = await db.putBatch(collection, objects);
|
|
472
|
+
await appendMcpAuditEvent(db, audit, {
|
|
473
|
+
action: "objects.put_batch",
|
|
474
|
+
target: { collection, count: objects.length },
|
|
475
|
+
metadata: auditMetadata(actor, source),
|
|
476
|
+
result: { count: result.length },
|
|
477
|
+
});
|
|
478
|
+
return jsonResult(result);
|
|
467
479
|
});
|
|
468
480
|
server.registerTool("thing_objects_delete_batch", {
|
|
469
481
|
title: "Delete Objects Batch",
|
|
@@ -471,6 +483,7 @@ export function registerThingdTools(server, db, options = {}) {
|
|
|
471
483
|
inputSchema: {
|
|
472
484
|
collection: z.string().min(1),
|
|
473
485
|
ids: z.array(z.string().min(1)).min(1).max(1000),
|
|
486
|
+
...auditInputSchema,
|
|
474
487
|
},
|
|
475
488
|
annotations: {
|
|
476
489
|
readOnlyHint: false,
|
|
@@ -478,10 +491,16 @@ export function registerThingdTools(server, db, options = {}) {
|
|
|
478
491
|
idempotentHint: true,
|
|
479
492
|
openWorldHint: false,
|
|
480
493
|
},
|
|
481
|
-
}, async ({ collection, ids }) => {
|
|
494
|
+
}, async ({ collection, ids, actor, source }) => {
|
|
482
495
|
assertWriteAllowed();
|
|
483
496
|
assertCollectionAllowed(collection);
|
|
484
497
|
const deleted = await db.deleteBatch(collection, ids);
|
|
498
|
+
await appendMcpAuditEvent(db, audit, {
|
|
499
|
+
action: "objects.delete_batch",
|
|
500
|
+
target: { collection, count: ids.length },
|
|
501
|
+
metadata: auditMetadata(actor, source),
|
|
502
|
+
result: { deleted },
|
|
503
|
+
});
|
|
485
504
|
return jsonResult({ deleted });
|
|
486
505
|
});
|
|
487
506
|
server.registerTool("thing_link_create", {
|
|
@@ -493,6 +512,7 @@ export function registerThingdTools(server, db, options = {}) {
|
|
|
493
512
|
toRef: z.string().min(1),
|
|
494
513
|
weight: z.number().optional(),
|
|
495
514
|
metadataJson: z.string().optional(),
|
|
515
|
+
...auditInputSchema,
|
|
496
516
|
},
|
|
497
517
|
annotations: {
|
|
498
518
|
readOnlyHint: false,
|
|
@@ -500,15 +520,23 @@ export function registerThingdTools(server, db, options = {}) {
|
|
|
500
520
|
idempotentHint: false,
|
|
501
521
|
openWorldHint: false,
|
|
502
522
|
},
|
|
503
|
-
}, async ({ fromRef, linkType, toRef, weight, metadataJson }) => {
|
|
523
|
+
}, async ({ fromRef, linkType, toRef, weight, metadataJson, actor, source }) => {
|
|
504
524
|
assertWriteAllowed();
|
|
505
|
-
|
|
525
|
+
const link = await db.links.create(fromRef, linkType, toRef, weight, metadataJson);
|
|
526
|
+
await appendMcpAuditEvent(db, audit, {
|
|
527
|
+
action: "link.create",
|
|
528
|
+
target: { fromRef, linkType, toRef },
|
|
529
|
+
metadata: auditMetadata(actor, source),
|
|
530
|
+
result: { id: link.id },
|
|
531
|
+
});
|
|
532
|
+
return jsonResult(link);
|
|
506
533
|
});
|
|
507
534
|
server.registerTool("thing_link_delete", {
|
|
508
535
|
title: "Delete Link",
|
|
509
536
|
description: "Delete a graph link by its id. Returns an object with a deleted boolean.",
|
|
510
537
|
inputSchema: {
|
|
511
538
|
id: z.string().min(1),
|
|
539
|
+
...auditInputSchema,
|
|
512
540
|
},
|
|
513
541
|
annotations: {
|
|
514
542
|
readOnlyHint: false,
|
|
@@ -516,9 +544,16 @@ export function registerThingdTools(server, db, options = {}) {
|
|
|
516
544
|
idempotentHint: true,
|
|
517
545
|
openWorldHint: false,
|
|
518
546
|
},
|
|
519
|
-
}, async ({ id }) => {
|
|
547
|
+
}, async ({ id, actor, source }) => {
|
|
520
548
|
assertWriteAllowed();
|
|
521
|
-
|
|
549
|
+
const deleted = await db.links.delete(id);
|
|
550
|
+
await appendMcpAuditEvent(db, audit, {
|
|
551
|
+
action: "link.delete",
|
|
552
|
+
target: { id },
|
|
553
|
+
metadata: auditMetadata(actor, source),
|
|
554
|
+
result: { deleted },
|
|
555
|
+
});
|
|
556
|
+
return jsonResult({ deleted });
|
|
522
557
|
});
|
|
523
558
|
server.registerTool("thing_link_get", {
|
|
524
559
|
title: "Get Link",
|
package/dist/version.d.ts
CHANGED
package/dist/version.js
CHANGED
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@thingd/sdk",
|
|
3
|
-
"version": "0.47.
|
|
3
|
+
"version": "0.47.4",
|
|
4
4
|
"description": "A fast object-first data engine for applications and AI agents.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"author": "Sayan Mohsin",
|
|
@@ -63,7 +63,7 @@
|
|
|
63
63
|
"zod": "^4.4.3"
|
|
64
64
|
},
|
|
65
65
|
"optionalDependencies": {
|
|
66
|
-
"@thingd/native": "0.47.
|
|
66
|
+
"@thingd/native": "0.47.4"
|
|
67
67
|
},
|
|
68
68
|
"engines": {
|
|
69
69
|
"node": ">=24.0.0"
|