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.
Files changed (51) hide show
  1. package/dist/locales/en.json +50 -1
  2. package/dist/locales/fi.json +50 -1
  3. package/dist/public/css/views/profile.css +9 -0
  4. package/dist/public/css/views/public-workspace-viewer.css +23 -3
  5. package/dist/public/js/services/organisms.js +77 -6
  6. package/dist/public/views/profile/organisms-tab.js +308 -54
  7. package/dist/public/views/public-workspace-viewer.js +74 -11
  8. package/dist/src/cli/connect/mcp/tools/index.d.ts.map +1 -1
  9. package/dist/src/cli/connect/mcp/tools/index.js +2 -0
  10. package/dist/src/cli/connect/mcp/tools/index.js.map +1 -1
  11. package/dist/src/cli/connect/mcp/tools/organisms.d.ts.map +1 -1
  12. package/dist/src/cli/connect/mcp/tools/organisms.js +57 -0
  13. package/dist/src/cli/connect/mcp/tools/organisms.js.map +1 -1
  14. package/dist/src/cli/connect/mcp/tools/schedules.d.ts +15 -0
  15. package/dist/src/cli/connect/mcp/tools/schedules.d.ts.map +1 -0
  16. package/dist/src/cli/connect/mcp/tools/schedules.js +66 -0
  17. package/dist/src/cli/connect/mcp/tools/schedules.js.map +1 -0
  18. package/dist/src/cli/connect/tool-call.d.ts.map +1 -1
  19. package/dist/src/cli/connect/tool-call.js +79 -0
  20. package/dist/src/cli/connect/tool-call.js.map +1 -1
  21. package/dist/src/cli/init-wizard.d.ts.map +1 -1
  22. package/dist/src/cli/init-wizard.js +11 -3
  23. package/dist/src/cli/init-wizard.js.map +1 -1
  24. package/dist/src/generated/api-types.d.ts +499 -1
  25. package/dist/src/generated/api-types.d.ts.map +1 -1
  26. package/dist/src/mcp/annotations.d.ts.map +1 -1
  27. package/dist/src/mcp/annotations.js +6 -0
  28. package/dist/src/mcp/annotations.js.map +1 -1
  29. package/dist/src/mcp/catalog/definitions.d.ts.map +1 -1
  30. package/dist/src/mcp/catalog/definitions.js +65 -0
  31. package/dist/src/mcp/catalog/definitions.js.map +1 -1
  32. package/dist/src/mcp/catalog/surfaces.js +6 -6
  33. package/dist/src/mcp/catalog/surfaces.js.map +1 -1
  34. package/dist/src/mcp/organisms.d.ts.map +1 -1
  35. package/dist/src/mcp/organisms.js +145 -0
  36. package/dist/src/mcp/organisms.js.map +1 -1
  37. package/dist/src/routes/organisms.d.ts.map +1 -1
  38. package/dist/src/routes/organisms.js +406 -5
  39. package/dist/src/routes/organisms.js.map +1 -1
  40. package/dist/src/services/organism-comments.d.ts +30 -0
  41. package/dist/src/services/organism-comments.d.ts.map +1 -0
  42. package/dist/src/services/organism-comments.js +74 -0
  43. package/dist/src/services/organism-comments.js.map +1 -0
  44. package/dist/src/services/organism-search.d.ts +27 -0
  45. package/dist/src/services/organism-search.d.ts.map +1 -0
  46. package/dist/src/services/organism-search.js +84 -0
  47. package/dist/src/services/organism-search.js.map +1 -0
  48. package/dist/src/storage/interface.d.ts +7 -1
  49. package/dist/src/storage/interface.d.ts.map +1 -1
  50. package/dist/src/storage/interface.js.map +1 -1
  51. 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,EAAuC,MAAM,yBAAyB,CAAC;AA0B5F,wBAAgB,eAAe,CAAC,MAAM,EAAE,YAAY,EAAE,OAAO,EAAE,OAAO,GAAG,MAAM,CAuqD9E"}
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
- await storage.deleteMembership(membership.id);
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: new Date().toISOString(),
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: `Your access to "${organism.name}" was revoked`,
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