aimeat 1.20.3 → 1.20.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/locales/en.json +50 -1
- package/dist/locales/fi.json +50 -1
- package/dist/public/css/views/profile.css +9 -0
- package/dist/public/css/views/public-workspace-viewer.css +23 -3
- package/dist/public/js/services/organisms.js +77 -6
- package/dist/public/views/profile/organisms-tab.js +308 -54
- package/dist/public/views/public-workspace-viewer.js +74 -11
- package/dist/src/cli/connect/mcp/tools/index.d.ts.map +1 -1
- package/dist/src/cli/connect/mcp/tools/index.js +2 -0
- package/dist/src/cli/connect/mcp/tools/index.js.map +1 -1
- package/dist/src/cli/connect/mcp/tools/organisms.d.ts.map +1 -1
- package/dist/src/cli/connect/mcp/tools/organisms.js +57 -0
- package/dist/src/cli/connect/mcp/tools/organisms.js.map +1 -1
- package/dist/src/cli/connect/mcp/tools/schedules.d.ts +15 -0
- package/dist/src/cli/connect/mcp/tools/schedules.d.ts.map +1 -0
- package/dist/src/cli/connect/mcp/tools/schedules.js +66 -0
- package/dist/src/cli/connect/mcp/tools/schedules.js.map +1 -0
- package/dist/src/cli/connect/tool-call.d.ts.map +1 -1
- package/dist/src/cli/connect/tool-call.js +79 -0
- package/dist/src/cli/connect/tool-call.js.map +1 -1
- package/dist/src/cli/init-wizard.d.ts.map +1 -1
- package/dist/src/cli/init-wizard.js +11 -3
- package/dist/src/cli/init-wizard.js.map +1 -1
- package/dist/src/generated/api-types.d.ts +499 -1
- package/dist/src/generated/api-types.d.ts.map +1 -1
- package/dist/src/mcp/annotations.d.ts.map +1 -1
- package/dist/src/mcp/annotations.js +6 -0
- package/dist/src/mcp/annotations.js.map +1 -1
- package/dist/src/mcp/catalog/definitions.d.ts.map +1 -1
- package/dist/src/mcp/catalog/definitions.js +65 -0
- package/dist/src/mcp/catalog/definitions.js.map +1 -1
- package/dist/src/mcp/catalog/surfaces.js +6 -6
- package/dist/src/mcp/catalog/surfaces.js.map +1 -1
- package/dist/src/mcp/organisms.d.ts.map +1 -1
- package/dist/src/mcp/organisms.js +145 -0
- package/dist/src/mcp/organisms.js.map +1 -1
- package/dist/src/routes/organisms.d.ts.map +1 -1
- package/dist/src/routes/organisms.js +406 -5
- package/dist/src/routes/organisms.js.map +1 -1
- package/dist/src/services/organism-comments.d.ts +30 -0
- package/dist/src/services/organism-comments.d.ts.map +1 -0
- package/dist/src/services/organism-comments.js +74 -0
- package/dist/src/services/organism-comments.js.map +1 -0
- package/dist/src/services/organism-search.d.ts +27 -0
- package/dist/src/services/organism-search.d.ts.map +1 -0
- package/dist/src/services/organism-search.js +84 -0
- package/dist/src/services/organism-search.js.map +1 -0
- package/dist/src/storage/interface.d.ts +7 -1
- package/dist/src/storage/interface.d.ts.map +1 -1
- package/dist/src/storage/interface.js.map +1 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"organisms.js","sourceRoot":"","sources":["../../../src/mcp/organisms.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"organisms.js","sourceRoot":"","sources":["../../../src/mcp/organisms.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"organisms.d.ts","sourceRoot":"","sources":["../../../src/routes/organisms.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA0CG;AACH,OAAO,EAAE,MAAM,EAAoC,MAAM,SAAS,CAAC;AAEnE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AACjD,OAAO,KAAK,EAAE,OAAO,
|
|
1
|
+
{"version":3,"file":"organisms.d.ts","sourceRoot":"","sources":["../../../src/routes/organisms.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA0CG;AACH,OAAO,EAAE,MAAM,EAAoC,MAAM,SAAS,CAAC;AAEnE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AACjD,OAAO,KAAK,EAAE,OAAO,EAAuD,MAAM,yBAAyB,CAAC;AA4B5G,wBAAgB,eAAe,CAAC,MAAM,EAAE,YAAY,EAAE,OAAO,EAAE,OAAO,GAAG,MAAM,CAikE9E"}
|
|
@@ -56,6 +56,8 @@ import { exportWorkspace } from '../services/workspace-export.js';
|
|
|
56
56
|
import { importWorkspace } from '../services/workspace-import.js';
|
|
57
57
|
import { exportOrganism } from '../services/organism-export.js';
|
|
58
58
|
import { importOrganism } from '../services/organism-import.js';
|
|
59
|
+
import { searchOrganismContent } from '../services/organism-search.js';
|
|
60
|
+
import { canAccessWorkspaceComments, addComment, listComments, commentPrefix } from '../services/organism-comments.js';
|
|
59
61
|
import { ZipSecurityError } from '../services/safe-zip.js';
|
|
60
62
|
import { recordSecurityIncident } from '../services/security-incident.js';
|
|
61
63
|
import { updateWorkspaceMeta, WorkspaceMetaError } from '../services/workspace-meta.js';
|
|
@@ -244,6 +246,10 @@ export function organismsRouter(config, storage) {
|
|
|
244
246
|
}
|
|
245
247
|
// Check if already a member
|
|
246
248
|
const existing = await storage.getMembership(id, ghii);
|
|
249
|
+
if (existing && existing.status === 'banned') {
|
|
250
|
+
res.status(403).json(error(config.nodeId, 'BANNED', 'You have been blocked from this organism'));
|
|
251
|
+
return;
|
|
252
|
+
}
|
|
247
253
|
if (existing && existing.status === 'active') {
|
|
248
254
|
res.status(409).json(error(config.nodeId, 'ALREADY_MEMBER', 'You are already a member'));
|
|
249
255
|
return;
|
|
@@ -252,6 +258,10 @@ export function organismsRouter(config, storage) {
|
|
|
252
258
|
res.status(409).json(error(config.nodeId, 'ALREADY_PENDING', 'You already have a pending join request'));
|
|
253
259
|
return;
|
|
254
260
|
}
|
|
261
|
+
if (existing && existing.status === 'invited') {
|
|
262
|
+
res.status(409).json(error(config.nodeId, 'ALREADY_INVITED', 'You have a pending invitation — accept it instead of requesting to join'));
|
|
263
|
+
return;
|
|
264
|
+
}
|
|
255
265
|
// Check capacity
|
|
256
266
|
const members = await storage.listMembers(id, { status: 'active' });
|
|
257
267
|
if (members.length >= organism.maxMembers) {
|
|
@@ -530,20 +540,288 @@ export function organismsRouter(config, storage) {
|
|
|
530
540
|
res.status(404).json(error(config.nodeId, 'NOT_MEMBER', 'Target is not an active member'));
|
|
531
541
|
return;
|
|
532
542
|
}
|
|
533
|
-
|
|
543
|
+
// `?ban=1` (or body { ban: true }) blocks the member from re-joining / being re-invited:
|
|
544
|
+
// keep the membership row but flip it to `banned` instead of deleting it. Plain remove just
|
|
545
|
+
// deletes the row (they can request to join again).
|
|
546
|
+
const ban = req.query.ban === '1' || req.query.ban === 'true' || req.body?.ban === true;
|
|
547
|
+
const now = new Date().toISOString();
|
|
548
|
+
if (ban) {
|
|
549
|
+
await storage.updateMembership(membership.id, { status: 'banned', role: 'member' });
|
|
550
|
+
}
|
|
551
|
+
else {
|
|
552
|
+
await storage.deleteMembership(membership.id);
|
|
553
|
+
}
|
|
534
554
|
await storage.updateOrganism(id, {
|
|
535
555
|
members: organism.members.filter(m => m !== targetGhii),
|
|
536
556
|
admins: organism.admins.filter(a => a !== targetGhii),
|
|
537
|
-
updatedAt:
|
|
557
|
+
updatedAt: now,
|
|
538
558
|
});
|
|
539
559
|
// Let the removed member know their access was revoked.
|
|
540
560
|
await notify(storage, `${targetGhii}@${config.nodeId}`, {
|
|
541
|
-
type: 'organism_member_removed',
|
|
542
|
-
title:
|
|
561
|
+
type: ban ? 'organism_member_banned' : 'organism_member_removed',
|
|
562
|
+
title: ban
|
|
563
|
+
? `You were blocked from "${organism.name}"`
|
|
564
|
+
: `Your access to "${organism.name}" was revoked`,
|
|
543
565
|
link: '/v1/profile#organisms',
|
|
544
566
|
});
|
|
545
567
|
emitChange('notifications');
|
|
546
|
-
res.json(success(config.nodeId, { removed: targetGhii }));
|
|
568
|
+
res.json(success(config.nodeId, { removed: targetGhii, banned: ban }));
|
|
569
|
+
emitChange('organisms');
|
|
570
|
+
});
|
|
571
|
+
/* ── POST /v1/organisms/:id/members/:ghii/unban — Lift a ban ──
|
|
572
|
+
* Creator/admin removes the block on a previously-banned owner by deleting the banned
|
|
573
|
+
* membership row, so they can request to join (or be invited) again. */
|
|
574
|
+
router.post('/v1/organisms/:id/members/:ghii/unban', requireAuth(), requireRole('agent'), async (req, res) => {
|
|
575
|
+
const callerGhii = req.auth.owner;
|
|
576
|
+
const id = req.params.id;
|
|
577
|
+
const targetGhii = decodeURIComponent(req.params.ghii);
|
|
578
|
+
const organism = await storage.getOrganism(id);
|
|
579
|
+
if (!organism) {
|
|
580
|
+
res.status(404).json(error(config.nodeId, 'NOT_FOUND', 'Organism not found'));
|
|
581
|
+
return;
|
|
582
|
+
}
|
|
583
|
+
if (organism.creatorGhii !== callerGhii && !organism.admins.includes(callerGhii)) {
|
|
584
|
+
res.status(403).json(error(config.nodeId, 'ACCESS_DENIED', 'Only the creator or an admin can lift a block'));
|
|
585
|
+
return;
|
|
586
|
+
}
|
|
587
|
+
const membership = await storage.getMembership(id, targetGhii);
|
|
588
|
+
if (!membership || membership.status !== 'banned') {
|
|
589
|
+
res.status(404).json(error(config.nodeId, 'NOT_BANNED', 'Target is not blocked'));
|
|
590
|
+
return;
|
|
591
|
+
}
|
|
592
|
+
await storage.deleteMembership(membership.id);
|
|
593
|
+
res.json(success(config.nodeId, { unbanned: targetGhii }));
|
|
594
|
+
emitChange('organisms');
|
|
595
|
+
});
|
|
596
|
+
/* ── POST /v1/organisms/:id/transfer — Transfer ownership ──
|
|
597
|
+
* The creator hands the organism to an existing active member: the target becomes `creator`,
|
|
598
|
+
* the previous creator is demoted to `admin` (kept as a member). Only the current creator may
|
|
599
|
+
* call this. The new creator is notified. */
|
|
600
|
+
router.post('/v1/organisms/:id/transfer', requireAuth(), requireRole('agent'), async (req, res) => {
|
|
601
|
+
const callerGhii = req.auth.owner;
|
|
602
|
+
const id = req.params.id;
|
|
603
|
+
const { to } = req.body ?? {};
|
|
604
|
+
if (!to || typeof to !== 'string') {
|
|
605
|
+
res.status(400).json(error(config.nodeId, 'INVALID_INPUT', 'Body field "to" (an active member) is required'));
|
|
606
|
+
return;
|
|
607
|
+
}
|
|
608
|
+
const organism = await storage.getOrganism(id);
|
|
609
|
+
if (!organism) {
|
|
610
|
+
res.status(404).json(error(config.nodeId, 'NOT_FOUND', 'Organism not found'));
|
|
611
|
+
return;
|
|
612
|
+
}
|
|
613
|
+
if (organism.creatorGhii !== callerGhii) {
|
|
614
|
+
res.status(403).json(error(config.nodeId, 'ACCESS_DENIED', 'Only the current creator can transfer ownership'));
|
|
615
|
+
return;
|
|
616
|
+
}
|
|
617
|
+
if (to === callerGhii) {
|
|
618
|
+
res.status(400).json(error(config.nodeId, 'INVALID_INPUT', 'You are already the creator'));
|
|
619
|
+
return;
|
|
620
|
+
}
|
|
621
|
+
const targetMembership = await storage.getMembership(id, to);
|
|
622
|
+
if (!targetMembership || targetMembership.status !== 'active') {
|
|
623
|
+
res.status(404).json(error(config.nodeId, 'NOT_MEMBER', 'Target must be an active member of this organism'));
|
|
624
|
+
return;
|
|
625
|
+
}
|
|
626
|
+
const callerMembership = await storage.getMembership(id, callerGhii);
|
|
627
|
+
const now = new Date().toISOString();
|
|
628
|
+
// Promote the new creator, demote the old one to admin.
|
|
629
|
+
await storage.updateMembership(targetMembership.id, { role: 'creator' });
|
|
630
|
+
if (callerMembership)
|
|
631
|
+
await storage.updateMembership(callerMembership.id, { role: 'admin' });
|
|
632
|
+
const admins = [...new Set([...organism.admins.filter(a => a !== to), callerGhii])];
|
|
633
|
+
await storage.updateOrganism(id, { creatorGhii: to, admins, updatedAt: now });
|
|
634
|
+
await notify(storage, `${to}@${config.nodeId}`, {
|
|
635
|
+
type: 'organism_ownership_transferred',
|
|
636
|
+
title: `You are now the creator of "${organism.name}"`,
|
|
637
|
+
link: '/v1/profile#organisms',
|
|
638
|
+
});
|
|
639
|
+
emitChange('notifications');
|
|
640
|
+
res.json(success(config.nodeId, { creator: to, previousCreator: callerGhii }));
|
|
641
|
+
emitChange('organisms');
|
|
642
|
+
});
|
|
643
|
+
/* ── Invitations (invite_only flow; works for any policy) ──
|
|
644
|
+
* A creator/admin invites an owner by bare name. The invite is a membership row with
|
|
645
|
+
* status `invited` + `invitedBy`. The invitee is notified and accepts/declines. */
|
|
646
|
+
/* POST /v1/organisms/:id/invitations — invite an owner */
|
|
647
|
+
router.post('/v1/organisms/:id/invitations', requireAuth(), requireRole('agent'), async (req, res) => {
|
|
648
|
+
const callerGhii = req.auth.owner;
|
|
649
|
+
const id = req.params.id;
|
|
650
|
+
const { invitee } = req.body ?? {};
|
|
651
|
+
if (!invitee || typeof invitee !== 'string') {
|
|
652
|
+
res.status(400).json(error(config.nodeId, 'INVALID_INPUT', 'Body field "invitee" (an owner name) is required'));
|
|
653
|
+
return;
|
|
654
|
+
}
|
|
655
|
+
const organism = await storage.getOrganism(id);
|
|
656
|
+
if (!organism) {
|
|
657
|
+
res.status(404).json(error(config.nodeId, 'NOT_FOUND', 'Organism not found'));
|
|
658
|
+
return;
|
|
659
|
+
}
|
|
660
|
+
if (organism.creatorGhii !== callerGhii && !organism.admins.includes(callerGhii)) {
|
|
661
|
+
res.status(403).json(error(config.nodeId, 'ACCESS_DENIED', 'Only the creator or an admin can invite members'));
|
|
662
|
+
return;
|
|
663
|
+
}
|
|
664
|
+
const existing = await storage.getMembership(id, invitee);
|
|
665
|
+
if (existing && existing.status === 'active') {
|
|
666
|
+
res.status(409).json(error(config.nodeId, 'ALREADY_MEMBER', 'That owner is already a member'));
|
|
667
|
+
return;
|
|
668
|
+
}
|
|
669
|
+
if (existing && existing.status === 'invited') {
|
|
670
|
+
res.status(409).json(error(config.nodeId, 'ALREADY_INVITED', 'That owner already has a pending invitation'));
|
|
671
|
+
return;
|
|
672
|
+
}
|
|
673
|
+
if (existing && existing.status === 'banned') {
|
|
674
|
+
res.status(409).json(error(config.nodeId, 'BANNED', 'That owner is blocked — lift the block before inviting'));
|
|
675
|
+
return;
|
|
676
|
+
}
|
|
677
|
+
const now = new Date().toISOString();
|
|
678
|
+
const membership = await storage.createMembership({
|
|
679
|
+
id: uuidv4(),
|
|
680
|
+
organismId: id,
|
|
681
|
+
ghii: invitee,
|
|
682
|
+
role: 'member',
|
|
683
|
+
status: 'invited',
|
|
684
|
+
invitedBy: callerGhii,
|
|
685
|
+
joinedAt: now,
|
|
686
|
+
});
|
|
687
|
+
await notify(storage, `${invitee}@${config.nodeId}`, {
|
|
688
|
+
type: 'organism_invitation',
|
|
689
|
+
title: `${callerGhii} invited you to join "${organism.name}"`,
|
|
690
|
+
link: '/v1/profile#organisms',
|
|
691
|
+
});
|
|
692
|
+
emitChange('notifications');
|
|
693
|
+
res.status(201).json(success(config.nodeId, { invitation: membership, status: 'invited' }));
|
|
694
|
+
emitChange('organisms');
|
|
695
|
+
});
|
|
696
|
+
/* GET /v1/organisms/:id/invitations — list outstanding invitations (creator/admin) */
|
|
697
|
+
router.get('/v1/organisms/:id/invitations', requireAuth(), requireRole('agent'), async (req, res) => {
|
|
698
|
+
const callerGhii = req.auth.owner;
|
|
699
|
+
const id = req.params.id;
|
|
700
|
+
const organism = await storage.getOrganism(id);
|
|
701
|
+
if (!organism) {
|
|
702
|
+
res.status(404).json(error(config.nodeId, 'NOT_FOUND', 'Organism not found'));
|
|
703
|
+
return;
|
|
704
|
+
}
|
|
705
|
+
if (organism.creatorGhii !== callerGhii && !organism.admins.includes(callerGhii)) {
|
|
706
|
+
res.status(403).json(error(config.nodeId, 'ACCESS_DENIED', 'Only the creator or an admin can view invitations'));
|
|
707
|
+
return;
|
|
708
|
+
}
|
|
709
|
+
const invitations = await storage.listMembers(id, { status: 'invited' });
|
|
710
|
+
res.json(success(config.nodeId, { invitations, total: invitations.length }));
|
|
711
|
+
});
|
|
712
|
+
/* GET /v1/organisms/invitations/mine — the caller's own pending invitations (across organisms) */
|
|
713
|
+
router.get('/v1/organisms/invitations/mine', requireAuth(), requireRole('agent'), async (req, res) => {
|
|
714
|
+
const callerGhii = req.auth.owner;
|
|
715
|
+
const memberships = (await storage.listMembershipsByGhii(callerGhii)).filter(m => m.status === 'invited');
|
|
716
|
+
const invitations = [];
|
|
717
|
+
for (const m of memberships) {
|
|
718
|
+
const org = await storage.getOrganism(m.organismId);
|
|
719
|
+
if (org)
|
|
720
|
+
invitations.push({ membership: m, organism: { id: org.id, name: org.name, description: org.description, type: org.type, visibility: org.visibility } });
|
|
721
|
+
}
|
|
722
|
+
res.json(success(config.nodeId, { invitations, total: invitations.length }));
|
|
723
|
+
});
|
|
724
|
+
/* POST /v1/organisms/:id/invitations/accept — the invitee accepts */
|
|
725
|
+
router.post('/v1/organisms/:id/invitations/accept', requireAuth(), requireRole('agent'), async (req, res) => {
|
|
726
|
+
const callerGhii = req.auth.owner;
|
|
727
|
+
const id = req.params.id;
|
|
728
|
+
const organism = await storage.getOrganism(id);
|
|
729
|
+
if (!organism) {
|
|
730
|
+
res.status(404).json(error(config.nodeId, 'NOT_FOUND', 'Organism not found'));
|
|
731
|
+
return;
|
|
732
|
+
}
|
|
733
|
+
const membership = await storage.getMembership(id, callerGhii);
|
|
734
|
+
if (!membership || membership.status !== 'invited') {
|
|
735
|
+
res.status(404).json(error(config.nodeId, 'NO_INVITATION', 'You have no pending invitation to this organism'));
|
|
736
|
+
return;
|
|
737
|
+
}
|
|
738
|
+
const now = new Date().toISOString();
|
|
739
|
+
await storage.updateMembership(membership.id, { status: 'active', joinedAt: now });
|
|
740
|
+
await storage.updateOrganism(id, { members: [...new Set([...organism.members, callerGhii])], updatedAt: now });
|
|
741
|
+
// Notify the inviter that the invitation was accepted.
|
|
742
|
+
if (membership.invitedBy) {
|
|
743
|
+
await notify(storage, `${membership.invitedBy}@${config.nodeId}`, {
|
|
744
|
+
type: 'organism_invitation_accepted',
|
|
745
|
+
title: `${callerGhii} accepted your invitation to "${organism.name}"`,
|
|
746
|
+
link: '/v1/profile#organisms',
|
|
747
|
+
});
|
|
748
|
+
emitChange('notifications');
|
|
749
|
+
}
|
|
750
|
+
res.json(success(config.nodeId, { status: 'joined' }));
|
|
751
|
+
emitChange('organisms');
|
|
752
|
+
});
|
|
753
|
+
/* POST /v1/organisms/:id/invitations/decline — the invitee declines */
|
|
754
|
+
router.post('/v1/organisms/:id/invitations/decline', requireAuth(), requireRole('agent'), async (req, res) => {
|
|
755
|
+
const callerGhii = req.auth.owner;
|
|
756
|
+
const id = req.params.id;
|
|
757
|
+
const membership = await storage.getMembership(id, callerGhii);
|
|
758
|
+
if (!membership || membership.status !== 'invited') {
|
|
759
|
+
res.status(404).json(error(config.nodeId, 'NO_INVITATION', 'You have no pending invitation to this organism'));
|
|
760
|
+
return;
|
|
761
|
+
}
|
|
762
|
+
await storage.deleteMembership(membership.id);
|
|
763
|
+
res.json(success(config.nodeId, { status: 'declined' }));
|
|
764
|
+
emitChange('organisms');
|
|
765
|
+
});
|
|
766
|
+
/* ── Agent attachment (manage organism.agentGaiis) ──
|
|
767
|
+
* An owner attaches one of their OWN agents to an organism they belong to, so the agent shows
|
|
768
|
+
* as an organism participant and passes the workspace membership gate in its own right. */
|
|
769
|
+
/* POST /v1/organisms/:id/agents — attach an agent GAII (caller must own it + be a member) */
|
|
770
|
+
router.post('/v1/organisms/:id/agents', requireAuth(), requireRole('agent'), async (req, res) => {
|
|
771
|
+
const callerGhii = req.auth.owner;
|
|
772
|
+
const id = req.params.id;
|
|
773
|
+
const { agent_gaii } = req.body ?? {};
|
|
774
|
+
if (!agent_gaii || typeof agent_gaii !== 'string') {
|
|
775
|
+
res.status(400).json(error(config.nodeId, 'INVALID_INPUT', 'Body field "agent_gaii" is required'));
|
|
776
|
+
return;
|
|
777
|
+
}
|
|
778
|
+
const parsed = parseGaiiLoose(agent_gaii);
|
|
779
|
+
if (!parsed.agent || parsed.owner !== callerGhii) {
|
|
780
|
+
res.status(403).json(error(config.nodeId, 'ACCESS_DENIED', 'You can only attach your own agents'));
|
|
781
|
+
return;
|
|
782
|
+
}
|
|
783
|
+
const organism = await storage.getOrganism(id);
|
|
784
|
+
if (!organism) {
|
|
785
|
+
res.status(404).json(error(config.nodeId, 'NOT_FOUND', 'Organism not found'));
|
|
786
|
+
return;
|
|
787
|
+
}
|
|
788
|
+
const membership = await storage.getMembership(id, callerGhii);
|
|
789
|
+
const isMember = !!membership && membership.status === 'active';
|
|
790
|
+
if (!isMember && organism.creatorGhii !== callerGhii) {
|
|
791
|
+
res.status(403).json(error(config.nodeId, 'NOT_MEMBER', 'You must be a member to attach an agent'));
|
|
792
|
+
return;
|
|
793
|
+
}
|
|
794
|
+
if (organism.agentGaiis.includes(agent_gaii)) {
|
|
795
|
+
res.status(409).json(error(config.nodeId, 'ALREADY_ATTACHED', 'That agent is already attached'));
|
|
796
|
+
return;
|
|
797
|
+
}
|
|
798
|
+
await storage.updateOrganism(id, { agentGaiis: [...organism.agentGaiis, agent_gaii], updatedAt: new Date().toISOString() });
|
|
799
|
+
res.status(201).json(success(config.nodeId, { attached: agent_gaii }));
|
|
800
|
+
emitChange('organisms');
|
|
801
|
+
});
|
|
802
|
+
/* DELETE /v1/organisms/:id/agents/:gaii — detach an agent (its owner, or creator/admin) */
|
|
803
|
+
router.delete('/v1/organisms/:id/agents/:gaii', requireAuth(), requireRole('agent'), async (req, res) => {
|
|
804
|
+
const callerGhii = req.auth.owner;
|
|
805
|
+
const id = req.params.id;
|
|
806
|
+
const agentGaii = decodeURIComponent(req.params.gaii);
|
|
807
|
+
const organism = await storage.getOrganism(id);
|
|
808
|
+
if (!organism) {
|
|
809
|
+
res.status(404).json(error(config.nodeId, 'NOT_FOUND', 'Organism not found'));
|
|
810
|
+
return;
|
|
811
|
+
}
|
|
812
|
+
const parsed = parseGaiiLoose(agentGaii);
|
|
813
|
+
const ownsAgent = parsed.owner === callerGhii;
|
|
814
|
+
const isAdmin = organism.creatorGhii === callerGhii || organism.admins.includes(callerGhii);
|
|
815
|
+
if (!ownsAgent && !isAdmin) {
|
|
816
|
+
res.status(403).json(error(config.nodeId, 'ACCESS_DENIED', 'Only the agent owner or an organism admin can detach it'));
|
|
817
|
+
return;
|
|
818
|
+
}
|
|
819
|
+
if (!organism.agentGaiis.includes(agentGaii)) {
|
|
820
|
+
res.status(404).json(error(config.nodeId, 'NOT_FOUND', 'That agent is not attached'));
|
|
821
|
+
return;
|
|
822
|
+
}
|
|
823
|
+
await storage.updateOrganism(id, { agentGaiis: organism.agentGaiis.filter(g => g !== agentGaii), updatedAt: new Date().toISOString() });
|
|
824
|
+
res.json(success(config.nodeId, { detached: agentGaii }));
|
|
547
825
|
emitChange('organisms');
|
|
548
826
|
});
|
|
549
827
|
/* ── GET /v1/organisms/:id/workspace — Manifest-driven workspace read ──
|
|
@@ -684,6 +962,129 @@ export function organismsRouter(config, storage) {
|
|
|
684
962
|
{ description: 'Publish a draft', method: 'POST', url: `/v1/organisms/${id}/publish` },
|
|
685
963
|
]));
|
|
686
964
|
});
|
|
965
|
+
/* ── GET /v1/organisms/:id/search — Search organism / workspace content ──
|
|
966
|
+
* Full-text-ish (case-insensitive substring) search across the records + documents of every
|
|
967
|
+
* workspace the caller can read (or one workspace if ?ws=). Returns matches with the workspace,
|
|
968
|
+
* space (objectType), instance id, a title, and a snippet around the hit. Honours the same
|
|
969
|
+
* workspace-level read authorization as GET /:id/workspace (manifest gate) — a member only
|
|
970
|
+
* searches workspaces they may read; drafts, version history and meta records are skipped. */
|
|
971
|
+
router.get('/v1/organisms/:id/search', requireAuth(), async (req, res) => {
|
|
972
|
+
const id = req.params.id;
|
|
973
|
+
const q = (typeof req.query.q === 'string' ? req.query.q : '').trim();
|
|
974
|
+
const onlyWs = typeof req.query.ws === 'string' ? req.query.ws : undefined;
|
|
975
|
+
if (q.length < 2) {
|
|
976
|
+
res.status(400).json(error(config.nodeId, 'INVALID_INPUT', 'Query "q" must be at least 2 characters'));
|
|
977
|
+
return;
|
|
978
|
+
}
|
|
979
|
+
const organism = await storage.getOrganism(id);
|
|
980
|
+
if (!organism) {
|
|
981
|
+
res.status(404).json(error(config.nodeId, 'NOT_FOUND', 'Organism not found'));
|
|
982
|
+
return;
|
|
983
|
+
}
|
|
984
|
+
// Membership gate (same as workspace read): an org agent or an active member.
|
|
985
|
+
const callerSub = req.auth.sub;
|
|
986
|
+
const ownerName = req.auth.owner;
|
|
987
|
+
let isMember = !!callerSub && organism.agentGaiis.includes(callerSub);
|
|
988
|
+
if (!isMember && ownerName) {
|
|
989
|
+
const m = await storage.getMembership(id, ownerName);
|
|
990
|
+
isMember = !!m && m.status === 'active';
|
|
991
|
+
}
|
|
992
|
+
if (!isMember) {
|
|
993
|
+
res.status(403).json(error(config.nodeId, 'ACCESS_DENIED', 'Not an active member of this organism'));
|
|
994
|
+
return;
|
|
995
|
+
}
|
|
996
|
+
const callerGaii = resolveIdentity(req.auth, config.nodeId);
|
|
997
|
+
const { results, truncated } = await searchOrganismContent(storage, config, organism, callerGaii, q, onlyWs);
|
|
998
|
+
res.json(success(config.nodeId, { query: q, results, total: results.length, truncated }));
|
|
999
|
+
});
|
|
1000
|
+
/* ── Comments / threads on workspace records + documents ──
|
|
1001
|
+
* A comment targets one workspace object (record or document) by (ws, space, instance_id), can be
|
|
1002
|
+
* anchored to a part of a document (anchor.section or anchor.quote) or left general (no anchor),
|
|
1003
|
+
* and can reply to another comment (parent_id) to form threads. Comments are memory-backed under
|
|
1004
|
+
* `organism.{id}.w.{ws}.meta.comments.{space}~{instance}.{commentId}` — the meta.* prefix keeps
|
|
1005
|
+
* them OUT of the workspace read + content search. Authoring is open to any member or organism
|
|
1006
|
+
* agent (so agents can comment); read requires the same workspace-read authorization as the
|
|
1007
|
+
* content; a comment can be deleted by its author or a creator/admin. */
|
|
1008
|
+
/* POST /v1/organisms/:id/comments — add a comment */
|
|
1009
|
+
router.post('/v1/organisms/:id/comments', requireAuth(), requireRole('agent'), async (req, res) => {
|
|
1010
|
+
const id = req.params.id;
|
|
1011
|
+
const { ws, space, instance_id, body, anchor, parent_id } = req.body ?? {};
|
|
1012
|
+
if (!ws || !space || !instance_id || typeof body !== 'string' || !body.trim()) {
|
|
1013
|
+
res.status(400).json(error(config.nodeId, 'INVALID_INPUT', 'ws, space, instance_id and a non-empty body are required'));
|
|
1014
|
+
return;
|
|
1015
|
+
}
|
|
1016
|
+
const organism = await storage.getOrganism(id);
|
|
1017
|
+
if (!organism) {
|
|
1018
|
+
res.status(404).json(error(config.nodeId, 'NOT_FOUND', 'Organism not found'));
|
|
1019
|
+
return;
|
|
1020
|
+
}
|
|
1021
|
+
const callerGaii = resolveIdentity(req.auth, config.nodeId);
|
|
1022
|
+
if (!(await canAccessWorkspaceComments(storage, config, organism, req.auth.sub, req.auth.owner, callerGaii, ws))) {
|
|
1023
|
+
res.status(403).json(error(config.nodeId, 'ACCESS_DENIED', 'You cannot comment in this workspace'));
|
|
1024
|
+
return;
|
|
1025
|
+
}
|
|
1026
|
+
const comment = await addComment(storage, id, callerGaii, { ws, space, instanceId: instance_id, body, anchor, parentId: parent_id });
|
|
1027
|
+
emitChange('organisms');
|
|
1028
|
+
res.status(201).json(success(config.nodeId, { comment }));
|
|
1029
|
+
});
|
|
1030
|
+
/* GET /v1/organisms/:id/comments?ws=&space=&instance_id= — list a target's thread */
|
|
1031
|
+
router.get('/v1/organisms/:id/comments', requireAuth(), async (req, res) => {
|
|
1032
|
+
const id = req.params.id;
|
|
1033
|
+
const ws = req.query.ws;
|
|
1034
|
+
const space = req.query.space;
|
|
1035
|
+
const instanceId = req.query.instance_id;
|
|
1036
|
+
if (!ws || !space || !instanceId) {
|
|
1037
|
+
res.status(400).json(error(config.nodeId, 'INVALID_INPUT', 'ws, space and instance_id query params are required'));
|
|
1038
|
+
return;
|
|
1039
|
+
}
|
|
1040
|
+
const organism = await storage.getOrganism(id);
|
|
1041
|
+
if (!organism) {
|
|
1042
|
+
res.status(404).json(error(config.nodeId, 'NOT_FOUND', 'Organism not found'));
|
|
1043
|
+
return;
|
|
1044
|
+
}
|
|
1045
|
+
const callerGaii = resolveIdentity(req.auth, config.nodeId);
|
|
1046
|
+
if (!(await canAccessWorkspaceComments(storage, config, organism, req.auth.sub, req.auth.owner, callerGaii, ws))) {
|
|
1047
|
+
res.status(403).json(error(config.nodeId, 'ACCESS_DENIED', 'You cannot read this workspace'));
|
|
1048
|
+
return;
|
|
1049
|
+
}
|
|
1050
|
+
const comments = await listComments(storage, id, ws, space, instanceId);
|
|
1051
|
+
res.json(success(config.nodeId, { comments, total: comments.length }));
|
|
1052
|
+
});
|
|
1053
|
+
/* DELETE /v1/organisms/:id/comments/:commentId?ws=&space=&instance_id= — delete (author or creator/admin) */
|
|
1054
|
+
router.delete('/v1/organisms/:id/comments/:commentId', requireAuth(), requireRole('agent'), async (req, res) => {
|
|
1055
|
+
const id = req.params.id;
|
|
1056
|
+
const commentId = req.params.commentId;
|
|
1057
|
+
const ws = req.query.ws;
|
|
1058
|
+
const space = req.query.space;
|
|
1059
|
+
const instanceId = req.query.instance_id;
|
|
1060
|
+
if (!ws || !space || !instanceId) {
|
|
1061
|
+
res.status(400).json(error(config.nodeId, 'INVALID_INPUT', 'ws, space and instance_id query params are required'));
|
|
1062
|
+
return;
|
|
1063
|
+
}
|
|
1064
|
+
const organism = await storage.getOrganism(id);
|
|
1065
|
+
if (!organism) {
|
|
1066
|
+
res.status(404).json(error(config.nodeId, 'NOT_FOUND', 'Organism not found'));
|
|
1067
|
+
return;
|
|
1068
|
+
}
|
|
1069
|
+
const callerGaii = resolveIdentity(req.auth, config.nodeId);
|
|
1070
|
+
const callerOwner = req.auth.owner;
|
|
1071
|
+
const key = `${commentPrefix(id, ws, space, instanceId)}${commentId}`;
|
|
1072
|
+
const scan = await storage.listAllMemory({ prefix: key, limit: 5 });
|
|
1073
|
+
const rec = scan.items.find(r => r.key === key);
|
|
1074
|
+
if (!rec) {
|
|
1075
|
+
res.status(404).json(error(config.nodeId, 'NOT_FOUND', 'Comment not found'));
|
|
1076
|
+
return;
|
|
1077
|
+
}
|
|
1078
|
+
const isAuthor = rec.ownerGaii === callerGaii;
|
|
1079
|
+
const isAdmin = organism.creatorGhii === callerOwner || organism.admins.includes(callerOwner);
|
|
1080
|
+
if (!isAuthor && !isAdmin) {
|
|
1081
|
+
res.status(403).json(error(config.nodeId, 'ACCESS_DENIED', 'Only the comment author or an organism admin can delete it'));
|
|
1082
|
+
return;
|
|
1083
|
+
}
|
|
1084
|
+
await storage.deleteMemory(rec.ownerGaii, key);
|
|
1085
|
+
emitChange('organisms');
|
|
1086
|
+
res.json(success(config.nodeId, { deleted: commentId }));
|
|
1087
|
+
});
|
|
687
1088
|
/* ── Gate primitive (Phase 4) — PendingApproval ──
|
|
688
1089
|
*
|
|
689
1090
|
* Generic over any organism/manifest. The gate ENGINE is here; the gate CONDITIONS are data
|