aimeat 1.20.0 → 1.20.2

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 (48) hide show
  1. package/dist/locales/en.json +42 -1
  2. package/dist/locales/fi.json +42 -1
  3. package/dist/public/css/views/profile.css +81 -5
  4. package/dist/public/css/views/public-workspace-viewer.css +206 -0
  5. package/dist/public/js/services/organisms.js +122 -1
  6. package/dist/public/llms-template.txt +7 -2
  7. package/dist/public/spa.html +2 -0
  8. package/dist/public/views/profile/organisms-tab.js +157 -9
  9. package/dist/public/views/public-workspace-viewer.js +128 -0
  10. package/dist/src/cli/connect/mcp/tools/workspaces.d.ts.map +1 -1
  11. package/dist/src/cli/connect/mcp/tools/workspaces.js +15 -9
  12. package/dist/src/cli/connect/mcp/tools/workspaces.js.map +1 -1
  13. package/dist/src/cli/connect/tool-call.d.ts.map +1 -1
  14. package/dist/src/cli/connect/tool-call.js +10 -6
  15. package/dist/src/cli/connect/tool-call.js.map +1 -1
  16. package/dist/src/generated/api-types.d.ts +204 -0
  17. package/dist/src/generated/api-types.d.ts.map +1 -1
  18. package/dist/src/mcp/catalog/definitions.d.ts.map +1 -1
  19. package/dist/src/mcp/catalog/definitions.js +3 -2
  20. package/dist/src/mcp/catalog/definitions.js.map +1 -1
  21. package/dist/src/mcp/workspaces.d.ts +19 -0
  22. package/dist/src/mcp/workspaces.d.ts.map +1 -1
  23. package/dist/src/mcp/workspaces.js +147 -51
  24. package/dist/src/mcp/workspaces.js.map +1 -1
  25. package/dist/src/middleware/workspace-access.d.ts +5 -0
  26. package/dist/src/middleware/workspace-access.d.ts.map +1 -1
  27. package/dist/src/middleware/workspace-access.js +52 -15
  28. package/dist/src/middleware/workspace-access.js.map +1 -1
  29. package/dist/src/routes/organisms.d.ts +11 -0
  30. package/dist/src/routes/organisms.d.ts.map +1 -1
  31. package/dist/src/routes/organisms.js +357 -31
  32. package/dist/src/routes/organisms.js.map +1 -1
  33. package/dist/src/routes/portal.d.ts.map +1 -1
  34. package/dist/src/routes/portal.js +1 -0
  35. package/dist/src/routes/portal.js.map +1 -1
  36. package/dist/src/services/handbooks/agent.d.ts +3 -1
  37. package/dist/src/services/handbooks/agent.d.ts.map +1 -1
  38. package/dist/src/services/handbooks/agent.js +3 -1
  39. package/dist/src/services/handbooks/agent.js.map +1 -1
  40. package/dist/src/services/handbooks/appdev.d.ts +3 -1
  41. package/dist/src/services/handbooks/appdev.d.ts.map +1 -1
  42. package/dist/src/services/handbooks/appdev.js +19 -0
  43. package/dist/src/services/handbooks/appdev.js.map +1 -1
  44. package/dist/src/services/workspace-meta.d.ts +10 -0
  45. package/dist/src/services/workspace-meta.d.ts.map +1 -1
  46. package/dist/src/services/workspace-meta.js +50 -3
  47. package/dist/src/services/workspace-meta.js.map +1 -1
  48. package/package.json +1 -1
@@ -1,6 +1,6 @@
1
1
  import { randomUUID } from 'node:crypto';
2
2
  import { z } from 'zod';
3
- import { parseGAII } from '../utils/gaii.js';
3
+ import { parseGAII, isSameOwner } from '../utils/gaii.js';
4
4
  import { annotationsFor } from './annotations.js';
5
5
  import { descriptionFor } from './catalog/shape.js';
6
6
  import { validateMemoryWrite } from '../services/schema-validator.js';
@@ -10,11 +10,17 @@ import { importWorkspace } from '../services/workspace-import.js';
10
10
  import { ZipSecurityError } from '../services/safe-zip.js';
11
11
  import { updateWorkspaceMeta, WorkspaceMetaError } from '../services/workspace-meta.js';
12
12
  import { recordSecurityIncident } from '../services/security-incident.js';
13
+ import { emitChange } from '../services/event-bus.js';
13
14
  export function registerWorkspaceTools(mcp, storage, config, getAgentGaii, _emitResourceUpdated, _emitResourceListChanged) {
14
15
  const agentGaii = getAgentGaii();
15
16
  const parsed = parseGAII(agentGaii);
16
17
  const ownerName = parsed ? parsed.owner : agentGaii;
17
18
  const ownerGhii = `${ownerName}@${config.nodeId}`;
19
+ // The identity that AUTHORS content: an agent's own GAII when an agent is calling (so the activity
20
+ // feed + participants attribute the work to the AGENT, not its owner — the MCP-serve path used to
21
+ // write everything under ownerGhii, collapsing every agent action onto the owner), else the owner
22
+ // GHII. Workspace META (manifest / registry / schemas / sections) stays under ownerGhii.
23
+ const writerGaii = parsed ? agentGaii : ownerGhii;
18
24
  const wsRoot = (orgId, ws) => `organism.${orgId}.w.${ws}`;
19
25
  const ok = (obj) => ({ content: [{ type: 'text', text: JSON.stringify(obj, null, 2) }] });
20
26
  const fail = (msg) => ({ content: [{ type: 'text', text: msg }], isError: true });
@@ -54,10 +60,20 @@ export function registerWorkspaceTools(mcp, storage, config, getAgentGaii, _emit
54
60
  const m = await storage.getMembership(orgId, ownerName);
55
61
  return m && m.status === 'active' ? null : 'Not an active member of this organism';
56
62
  }
57
- const writeRecord = async (key, value, prev) => {
63
+ /** Find an existing record at an EXACT key regardless of which same-owner identity owns it. Memory
64
+ * is keyed by (ownerGaii, key), so rewriting under a different identity would create a DUPLICATE;
65
+ * the writer reuses the existing record's owner instead. */
66
+ const findByKey = async (key) => {
67
+ const { items } = await storage.listAllMemory({ prefix: key, limit: 5 });
68
+ return items.find(r => r.key === key) ?? null;
69
+ };
70
+ /** Write content. A NEW record is authored by `owner` (defaults to the calling agent — attribution);
71
+ * a rewrite preserves the existing record's owner so it doesn't fork into a duplicate. Pass
72
+ * `owner: ownerGhii` for workspace META that should stay owned by the creator. */
73
+ const writeRecord = async (key, value, prev, owner = writerGaii) => {
58
74
  const now = new Date().toISOString();
59
75
  await storage.setMemory({
60
- key, ownerGaii: ownerGhii, value, visibility: 'private', tags: [], ttlHours: null,
76
+ key, ownerGaii: prev?.ownerGaii ?? owner, value, visibility: prev?.visibility ?? 'private', tags: prev?.tags ?? [], ttlHours: null,
61
77
  version: prev ? prev.version + 1 : 1, createdAt: prev?.createdAt ?? now, updatedAt: now,
62
78
  });
63
79
  };
@@ -77,11 +93,37 @@ export function registerWorkspaceTools(mcp, storage, config, getAgentGaii, _emit
77
93
  }
78
94
  return null;
79
95
  };
96
+ /** Read a workspace's manifest from whichever member created it (aggregates across registries), so a
97
+ * member who didn't create the workspace can still resolve its spaces to write/delete records. */
98
+ const readManifest = async (orgId, ws) => {
99
+ const key = `${wsRoot(orgId, ws)}.meta.manifest`;
100
+ const { items } = await storage.listAllMemory({ prefix: key, limit: 100 });
101
+ const rec = items.find(r => r.key === key);
102
+ return rec ? rec.value : null;
103
+ };
80
104
  /** Active membership role of the agent's owner in an org, or null. */
81
105
  const roleOf = async (orgId) => {
82
106
  const m = await storage.getMembership(orgId, ownerName);
83
107
  return m && m.status === 'active' ? m.role : null;
84
108
  };
109
+ /** May the caller WRITE this workspace's content? The creator's own owner (incl. its agents) always
110
+ * can; another member needs a granted workspace-contribution consent. Mirrors workspaceAccessMiddleware
111
+ * so the MCP-serve write path enforces the SAME per-workspace gate as the REST path (no looser side). */
112
+ const canWriteWs = async (orgId, ws) => {
113
+ const entry = await findWsEntry(orgId, ws);
114
+ if (!entry)
115
+ return true; // no registry yet (bootstrap) — membership already checked
116
+ if (entry.createdBy === ownerName)
117
+ return true; // the workspace's own creator (or its agent)
118
+ // Write requires the creator's 'contributor' role grant — and ONLY that, so the creator can
119
+ // revoke write by removing the grant. A 'viewer' grant gives read only (not matched here). The
120
+ // role is granted to the OWNER (recipient ghii:owner@node), so all the owner's agents inherit it.
121
+ const creatorGhii = `${entry.createdBy}@${config.nodeId}`;
122
+ const myRecipient = `ghii:${ownerName}@${config.nodeId}`;
123
+ const pattern = `organism.${orgId}.w.${ws}.**`;
124
+ const grants = await storage.listConsents(creatorGhii, { status: 'active' });
125
+ return grants.some(c => c.purpose === 'workspace-contributor' && c.dataPattern === pattern && c.recipient === myRecipient);
126
+ };
85
127
  /** Create a consent grant if no equivalent active one exists (idempotent). */
86
128
  const ensureConsent = async (owner, dataPattern, recipient, purpose) => {
87
129
  const existing = await storage.listConsents(owner, { status: 'active' });
@@ -90,6 +132,26 @@ export function registerWorkspaceTools(mcp, storage, config, getAgentGaii, _emit
90
132
  const now = new Date().toISOString();
91
133
  await storage.createConsent({ id: randomUUID(), ownerGaii: owner, dataPattern, recipient, purpose, scope: 'private', expires: null, status: 'active', grantedAt: now, revokedAt: null });
92
134
  };
135
+ // ── Workspace member roles (mirrors the REST routes): viewer = read, contributor = read+write,
136
+ // as a consent the workspace CREATOR owns on organism.{id}.w.{ws}.**. See the routes for the model. ──
137
+ const WS_ROLE_PURPOSES = ['workspace-viewer', 'workspace-contributor', 'workspace-access'];
138
+ const setWsRole = async (creatorGhii, orgId, ws, granteeOwner, role) => {
139
+ const recipient = `ghii:${granteeOwner}@${config.nodeId}`;
140
+ const pattern = `organism.${orgId}.w.${ws}.**`;
141
+ const now = new Date().toISOString();
142
+ const prior = (await storage.listConsents(creatorGhii, { status: 'active' })).filter(c => c.dataPattern === pattern && c.recipient === recipient && WS_ROLE_PURPOSES.includes(c.purpose));
143
+ for (const g of prior)
144
+ await storage.updateConsent(g.id, { status: 'revoked', revokedAt: now });
145
+ await storage.createConsent({ id: randomUUID(), ownerGaii: creatorGhii, dataPattern: pattern, recipient, purpose: role === 'contributor' ? 'workspace-contributor' : 'workspace-viewer', scope: 'private', expires: null, status: 'active', grantedAt: now, revokedAt: null });
146
+ };
147
+ const revokeWsRole = async (creatorGhii, orgId, ws, granteeOwner) => {
148
+ const recipient = `ghii:${granteeOwner}@${config.nodeId}`;
149
+ const pattern = `organism.${orgId}.w.${ws}.**`;
150
+ const now = new Date().toISOString();
151
+ const grants = (await storage.listConsents(creatorGhii, { status: 'active' })).filter(c => c.dataPattern === pattern && c.recipient === recipient && WS_ROLE_PURPOSES.includes(c.purpose));
152
+ for (const g of grants)
153
+ await storage.updateConsent(g.id, { status: 'revoked', revokedAt: now });
154
+ };
93
155
  // ── aimeat_workspace_list ──
94
156
  mcp.tool('aimeat_workspace_list', descriptionFor('aimeat_workspace_list'), { organism_id: z.string().describe('Organism id') }, annotationsFor('aimeat_workspace_list'), async ({ organism_id }) => {
95
157
  const deny = await denyReason(organism_id);
@@ -125,22 +187,23 @@ export function registerWorkspaceTools(mcp, storage, config, getAgentGaii, _emit
125
187
  if (deny)
126
188
  return fail(deny);
127
189
  const root = wsRoot(organism_id, ws);
128
- // Aggregate across all member identities, then access-filter: own records pass; others go
129
- // through the consent guard (so a member who was granted access reads the shared workspace).
190
+ // A workspace is SHARED: authorization is at the workspace level, not per record. If the caller
191
+ // can read the manifest (creator / same-owner agent / a viewer|contributor grant), they see ALL
192
+ // of the workspace's content whoever wrote it — so a contributor's writes are visible to the
193
+ // creator + other members. Otherwise nothing (org membership alone is discovery-only).
130
194
  const { items } = await storage.listAllMemory({ prefix: `${root}.`, limit: 5000 });
131
- const mine = [];
132
- for (const r of items) {
133
- if (r.ownerGaii === ownerGhii) {
134
- mine.push(r);
135
- continue;
195
+ const manRec = items.find(r => r.key === `${root}.meta.manifest`);
196
+ let canRead = false;
197
+ if (manRec) {
198
+ canRead = manRec.ownerGaii === ownerGhii || isSameOwner(manRec.ownerGaii, ownerGhii);
199
+ if (!canRead) {
200
+ const d = await authorizeRead(storage, config, { ownerGaii: manRec.ownerGaii, accessorGaii: ownerGhii, resourceKey: manRec.key, visibility: manRec.visibility, groupId: manRec.groupId, action: 'read' });
201
+ canRead = d.allowed;
136
202
  }
137
- const d = await authorizeRead(storage, config, { ownerGaii: r.ownerGaii, accessorGaii: ownerGhii, resourceKey: r.key, visibility: r.visibility, groupId: r.groupId, action: 'read' });
138
- if (d.allowed)
139
- mine.push(r);
140
203
  }
141
- const manRec = mine.find(r => r.key === `${root}.meta.manifest`);
142
- if (!manRec)
143
- return fail(`No manifest at ${root}.meta.manifest — empty workspace, wrong ws id, or no access (request access with aimeat_workspace_request_access).`);
204
+ if (!manRec || !canRead)
205
+ return fail(`No manifest at ${root}.meta.manifest — empty workspace, wrong ws id, or no access (request access with aimeat_workspace_access).`);
206
+ const mine = items; // workspace-level read: a reader sees ALL content
144
207
  const manifest = manRec.value;
145
208
  const objects = {};
146
209
  const drafts = {};
@@ -178,7 +241,7 @@ export function registerWorkspaceTools(mcp, storage, config, getAgentGaii, _emit
178
241
  // ── aimeat_workspace_write_draft ──
179
242
  mcp.tool('aimeat_workspace_write', descriptionFor('aimeat_workspace_write'), {
180
243
  organism_id: z.string(), ws: z.string(),
181
- space: z.string().describe("The objectType (space) NAME — e.g. 'feature' or 'notes'. The tool resolves whether it is a records or document space."),
244
+ space: z.string().describe("The objectType (space) NAME — e.g. 'feedback' or 'task' (the manifest's objectTypes[].name, NOT its namespace like 'shared.feedback'). The tool resolves whether it is a records or document space."),
182
245
  // z.any(): some clients JSON-stringify an object param — coerceValue parses it back so records
183
246
  // validate and documents aren't stored corrupt. (A z.record/union here breaks the MCP SDK.)
184
247
  value: z.any().describe('The content as a JSON OBJECT (not a string). For a records space, the record (matching its schema). For a document space, { title, markdown }.'),
@@ -188,11 +251,18 @@ export function registerWorkspaceTools(mcp, storage, config, getAgentGaii, _emit
188
251
  const deny = await denyReason(organism_id);
189
252
  if (deny)
190
253
  return fail(deny);
254
+ if (!(await canWriteWs(organism_id, ws)))
255
+ return fail('You are not approved to write to this workspace. Request access with aimeat_workspace_access(action:"request") and wait for the creator to approve.');
191
256
  const root = wsRoot(organism_id, ws);
192
- const man = await storage.getMemory(ownerGhii, `${root}.meta.manifest`);
193
- const ot = (man?.value?.objectTypes ?? []).find(o => o.name === space);
194
- if (!ot || !ot.namespace)
195
- return fail(`No space named "${space}" in this workspace. Read the workspace to see its spaces.`);
257
+ // Aggregate the manifest across members so a member who didn't create the workspace can write,
258
+ // and accept either the space NAME or its namespace (small models often pass the namespace).
259
+ const man = await readManifest(organism_id, ws);
260
+ const types = (man?.objectTypes ?? []);
261
+ const ot = types.find(o => o.name === space || o.namespace === space);
262
+ if (!ot || !ot.namespace) {
263
+ const names = types.map(o => o.name).filter(Boolean).join(', ');
264
+ return fail(`No space named "${space}" in this workspace. Available spaces: ${names || '(none)'}. Pass the space NAME, not its namespace.`);
265
+ }
196
266
  const isDoc = ot.mode === 'document';
197
267
  let instanceId = (id && String(id).trim()) || (value && typeof value === 'object' && !Array.isArray(value) ? String(value.id ?? '').trim() : '');
198
268
  if (!instanceId && isDoc)
@@ -204,17 +274,18 @@ export function registerWorkspaceTools(mcp, storage, config, getAgentGaii, _emit
204
274
  const valid = await validateMemoryWrite(key, v, storage);
205
275
  if (!valid.valid)
206
276
  return fail('Draft rejected by schema: ' + JSON.stringify(valid.errors));
207
- await writeRecord(key, v, await storage.getMemory(ownerGhii, key));
277
+ await writeRecord(key, v, await findByKey(key)); // content → authored by the calling agent
208
278
  if (isDoc && section) {
209
279
  const secKey = `${root}.meta.sections.${ot.name}`;
210
- const secRec = await storage.getMemory(ownerGhii, secKey);
280
+ const secRec = await findByKey(secKey);
211
281
  const sections = (secRec?.value?.sections) ?? [];
212
282
  const target = sections.find(s => s.id === section || s.name === section);
213
283
  if (target) {
214
284
  target.documents = [...(target.documents ?? []).filter(d => d !== instanceId), instanceId];
215
- await writeRecord(secKey, { sections }, secRec);
216
- }
285
+ await writeRecord(secKey, { sections }, secRec, ownerGhii);
286
+ } // section tree = creator meta
217
287
  }
288
+ emitChange('organisms');
218
289
  return ok({ written: key, id: instanceId, space, mode: ot.mode ?? 'records', section: section ?? null });
219
290
  });
220
291
  // ── aimeat_workspace_publish ──
@@ -228,7 +299,9 @@ export function registerWorkspaceTools(mcp, storage, config, getAgentGaii, _emit
228
299
  return fail('Publishing requires human approval (the publish gate is on). Leave it as a draft for the owner to review and publish.');
229
300
  const base = `${wsRoot(organism_id, ws)}.${namespace}.${id}`;
230
301
  const { items } = await storage.listAllMemory({ prefix: `${base}.`, limit: 2000 });
231
- const draft = items.find(r => r.key === `${base}.draft` && r.ownerGaii === ownerGhii);
302
+ // The draft may have been written by a sibling agent of the same owner (shell/REST path
303
+ // stores under the agent's own GAII), so accept any same-owner draft, not just ownerGhii's.
304
+ const draft = items.find(r => r.key === `${base}.draft` && (r.ownerGaii === ownerGhii || isSameOwner(r.ownerGaii, ownerGhii)));
232
305
  if (!draft)
233
306
  return fail(`No draft at ${base}.draft`);
234
307
  const valid = await validateMemoryWrite(`${base}.latest`, draft.value, storage);
@@ -245,10 +318,14 @@ export function registerWorkspaceTools(mcp, storage, config, getAgentGaii, _emit
245
318
  const n = maxN + 1;
246
319
  const now = new Date().toISOString();
247
320
  const tags = draft.tags ?? [];
248
- await storage.setMemory({ key: `${base}.version.${n}`, ownerGaii: ownerGhii, value: draft.value, visibility: draft.visibility, tags, ttlHours: null, version: 1, createdAt: now, updatedAt: now });
321
+ // The published version is attributed to the PUBLISHER (writerGaii). The .latest pointer
322
+ // preserves any existing record's owner so it doesn't fork into a duplicate (memory is keyed
323
+ // by (ownerGaii, key)); the per-publish author lives in the immutable .version.N records.
324
+ await storage.setMemory({ key: `${base}.version.${n}`, ownerGaii: writerGaii, value: draft.value, visibility: draft.visibility, tags, ttlHours: null, version: 1, createdAt: now, updatedAt: now });
249
325
  const existingLatest = items.find(r => r.key === `${base}.latest`);
250
- await storage.setMemory({ key: `${base}.latest`, ownerGaii: ownerGhii, value: draft.value, visibility: draft.visibility, tags, ttlHours: null, version: (existingLatest?.version ?? 0) + 1, createdAt: existingLatest?.createdAt ?? now, updatedAt: now });
251
- await storage.deleteMemory(ownerGhii, `${base}.draft`);
326
+ await storage.setMemory({ key: `${base}.latest`, ownerGaii: existingLatest?.ownerGaii ?? writerGaii, value: draft.value, visibility: draft.visibility, tags, ttlHours: null, version: (existingLatest?.version ?? 0) + 1, createdAt: existingLatest?.createdAt ?? now, updatedAt: now });
327
+ await storage.deleteMemory(draft.ownerGaii, `${base}.draft`);
328
+ emitChange('organisms');
252
329
  return ok({ published: base, version: n });
253
330
  });
254
331
  // ── aimeat_workspace_update ──
@@ -257,19 +334,23 @@ export function registerWorkspaceTools(mcp, storage, config, getAgentGaii, _emit
257
334
  ws: z.string(),
258
335
  name: z.string().optional().describe('New workspace name (synced to the manifest + the registry)'),
259
336
  readme: z.string().optional().describe('New markdown readme/intro (replaces the current one)'),
260
- manifest: z.any().optional().describe('FULL replacement manifest (objectTypes + policy/gate + settings) as a JSON OBJECT. Read the workspace first, then add/remove an objectType to add/remove a space, or change policy.alwaysGate for the publish gate. The id is preserved.'),
337
+ add_spaces: z.any().optional().describe('ADDITIVE (safe): an ARRAY of objectTypes to UNION into the manifest — the server keeps everything else and skips any whose name/namespace already exists. Pass just { name, namespace, mode } (+ a schema in `schemas`); defaults are filled. Use this to provision spaces instead of sending the whole manifest. Cannot remove/rename — use `manifest` for that.'),
338
+ manifest: z.any().optional().describe('FULL replacement manifest (objectTypes + policy/gate + settings) as a JSON OBJECT. For genuine restructuring (rename/remove a space, change policy.alwaysGate). Read the workspace first; the id is preserved. To only ADD spaces, prefer `add_spaces`.'),
261
339
  schemas: z.any().optional().describe('Map of namespace → JSON Schema (object) to lock (strict) for a records space.'),
262
- }, annotationsFor('aimeat_workspace_update'), async ({ organism_id, ws, name, readme, manifest, schemas }) => {
340
+ }, annotationsFor('aimeat_workspace_update'), async ({ organism_id, ws, name, readme, add_spaces, manifest, schemas }) => {
263
341
  const role = await roleOf(organism_id);
264
342
  if (!role)
265
343
  return fail('You are not a member of this organism.');
266
344
  try {
345
+ const addParsed = parseObj(add_spaces);
267
346
  const result = await updateWorkspaceMeta(storage, config, {
268
347
  orgId: organism_id, ws, callerOwner: ownerName,
269
348
  isAdmin: role === 'admin' || role === 'creator', name, readme,
349
+ addObjectTypes: Array.isArray(addParsed) ? addParsed : undefined,
270
350
  manifest: parseObj(manifest),
271
351
  schemas: parseObj(schemas),
272
352
  });
353
+ emitChange('organisms');
273
354
  return ok(result);
274
355
  }
275
356
  catch (e) {
@@ -288,19 +369,20 @@ export function registerWorkspaceTools(mcp, storage, config, getAgentGaii, _emit
288
369
  const { items } = await storage.listAllMemory({ prefix: `${base}.`, limit: 2000 });
289
370
  let deleted = 0;
290
371
  for (const r of items) {
291
- if (r.ownerGaii !== ownerGhii)
372
+ // Own + same-owner records (a sibling agent's writes) are deletable; cross-owner are not.
373
+ if (r.ownerGaii !== ownerGhii && !isSameOwner(r.ownerGaii, ownerGhii))
292
374
  continue;
293
375
  const role = r.key.slice(base.length + 1); // after `${base}.`
294
376
  if (role === 'draft' || role === 'latest' || /^version\.\d+$/.test(role)) {
295
- if (await storage.deleteMemory(ownerGhii, r.key))
377
+ if (await storage.deleteMemory(r.ownerGaii, r.key))
296
378
  deleted++;
297
379
  }
298
380
  }
299
381
  if (deleted === 0)
300
382
  return fail(`Nothing to delete at ${base} (no draft/latest/version).`);
301
383
  // Best-effort: unfile the id from the document section tree (find the type by namespace).
302
- const man = await storage.getMemory(ownerGhii, `${root}.meta.manifest`);
303
- const ot = (man?.value?.objectTypes ?? []).find(o => o.namespace === namespace);
384
+ const man = await readManifest(organism_id, ws);
385
+ const ot = (man?.objectTypes ?? []).find(o => o.namespace === namespace);
304
386
  if (ot) {
305
387
  const secKey = `${root}.meta.sections.${ot.name}`;
306
388
  const secRec = await storage.getMemory(ownerGhii, secKey);
@@ -314,9 +396,10 @@ export function registerWorkspaceTools(mcp, storage, config, getAgentGaii, _emit
314
396
  }
315
397
  }
316
398
  if (changed)
317
- await writeRecord(secKey, { sections }, secRec);
399
+ await writeRecord(secKey, { sections }, secRec, ownerGhii); // section tree = creator meta
318
400
  }
319
401
  }
402
+ emitChange('organisms');
320
403
  return ok({ deleted: base, keys: deleted });
321
404
  });
322
405
  // ── aimeat_workspace_create ──
@@ -351,15 +434,16 @@ export function registerWorkspaceTools(mcp, storage, config, getAgentGaii, _emit
351
434
  const valid = await validateMemoryWrite(mkey, manifestValue, storage);
352
435
  if (!valid.valid)
353
436
  return fail('Manifest rejected by schema: ' + JSON.stringify(valid.errors));
354
- await writeRecord(mkey, manifestValue, null);
437
+ await writeRecord(mkey, manifestValue, null, ownerGhii); // manifest = creator meta
355
438
  // 3. Readme.
356
439
  const summary = man.summary;
357
- await writeRecord(`${root}.meta.readme`, readme || `# ${String(man.name || name)}\n\n${typeof summary === 'string' ? summary : ''}`, null);
440
+ await writeRecord(`${root}.meta.readme`, readme || `# ${String(man.name || name)}\n\n${typeof summary === 'string' ? summary : ''}`, null, ownerGhii);
358
441
  // 4. Register in the workspace registry.
359
442
  const regKey = `organism.${organism_id}.meta.workspaces`;
360
443
  const regRec = await storage.getMemory(ownerGhii, regKey);
361
444
  const workspaces = (regRec?.value?.workspaces) ?? [];
362
- await writeRecord(regKey, { workspaces: [...workspaces, { id: wsId, name: String(name || 'Workspace').trim() || 'Workspace', createdAt: now, createdBy: ownerName }] }, regRec);
445
+ await writeRecord(regKey, { workspaces: [...workspaces, { id: wsId, name: String(name || 'Workspace').trim() || 'Workspace', createdAt: now, createdBy: ownerName }] }, regRec, ownerGhii);
446
+ emitChange('organisms');
363
447
  return ok({ created: true, ws: wsId, types: man.objectTypes.map(o => o.name), schemas_locked: Object.keys(schemaMap) });
364
448
  });
365
449
  // ── aimeat_workspace_request_access ──
@@ -380,39 +464,50 @@ export function registerWorkspaceTools(mcp, storage, config, getAgentGaii, _emit
380
464
  if (action === 'request') {
381
465
  if (entry.createdBy === ownerName)
382
466
  return fail('You created this workspace.');
383
- await writeRecord(`organism.${organism_id}.w.${ws}.access.request.${ownerName}`, { ws, requester: ownerName, requester_gaii: ownerGhii, message: message ?? '', status: 'pending', createdAt: new Date().toISOString() }, null);
467
+ await writeRecord(`organism.${organism_id}.w.${ws}.access.request.${ownerName}`, { ws, requester: ownerName, requester_gaii: ownerGhii, message: message ?? '', status: 'pending', createdAt: new Date().toISOString() }, null, ownerGhii);
384
468
  await ensureConsent(ownerGhii, `organism.${organism_id}.w.${ws}.**`, `organism.${organism_id}`, 'workspace-contribution');
469
+ emitChange('organisms');
385
470
  return ok({ status: 'requested', ws, workspace_creator: entry.createdBy });
386
471
  }
387
472
  if (action === 'list') {
388
473
  if (!(await isManager()))
389
474
  return fail('Only the workspace creator or an org admin can see access requests.');
390
475
  const creatorGhii = `${entry.createdBy}@${config.nodeId}`;
391
- const grants = (await storage.listConsents(creatorGhii, { status: 'active' })).filter(c => c.dataPattern === `organism.${organism_id}.w.${ws}.**` && c.purpose === 'workspace-access');
392
- const approved = new Set(grants.map(c => c.recipient));
476
+ const roleByOwner = new Map();
477
+ for (const c of await storage.listConsents(creatorGhii, { status: 'active' })) {
478
+ if (c.dataPattern !== `organism.${organism_id}.w.${ws}.**` || !WS_ROLE_PURPOSES.includes(c.purpose))
479
+ continue;
480
+ const o = c.recipient.replace(/^ghii:/, '').split('@')[0];
481
+ if (c.purpose === 'workspace-contributor')
482
+ roleByOwner.set(o, 'contributor');
483
+ else if (!roleByOwner.has(o))
484
+ roleByOwner.set(o, 'viewer');
485
+ }
393
486
  const { items } = await storage.listAllMemory({ prefix: `organism.${organism_id}.w.${ws}.access.request.`, limit: 1000 });
394
487
  const requests = items.map(r => {
395
488
  const v = r.value;
396
489
  const req = v.requester ?? bareOwner(r.ownerGaii);
397
- return { requester: req, message: v.message ?? '', created_at: v.createdAt, status: approved.has(`ghii:${req}@${config.nodeId}`) ? 'approved' : 'pending' };
490
+ return { requester: req, message: v.message ?? '', created_at: v.createdAt, status: roleByOwner.has(req) ? 'approved' : 'pending', role: roleByOwner.get(req) ?? null };
398
491
  });
399
- return ok({ ws, requests });
492
+ const members = [...roleByOwner.entries()].map(([owner, role]) => ({ owner, role }));
493
+ return ok({ ws, requests, members });
400
494
  }
401
495
  if (action === 'decide') {
402
496
  if (!requester)
403
497
  return fail("action='decide' needs a requester.");
404
498
  if (!(await isManager()))
405
499
  return fail('Only the workspace creator or an org admin can decide access.');
406
- const recipient = `ghii:${requester}@${config.nodeId}`;
407
- const pattern = `organism.${organism_id}.w.${ws}.**`;
500
+ // Grants are owned by the workspace CREATOR (so reads resolve via the content owner).
501
+ const creatorGhii = `${entry.createdBy}@${config.nodeId}`;
408
502
  if (decision === 'deny') {
409
- const grants = (await storage.listConsents(ownerGhii, { status: 'active' })).filter(c => c.dataPattern === pattern && c.recipient === recipient && c.purpose === 'workspace-access');
410
- for (const g of grants)
411
- await storage.updateConsent(g.id, { status: 'revoked', revokedAt: new Date().toISOString() });
503
+ await revokeWsRole(creatorGhii, organism_id, ws, requester);
504
+ emitChange('organisms');
412
505
  return ok({ status: 'denied', ws, requester });
413
506
  }
414
- await ensureConsent(ownerGhii, pattern, recipient, 'workspace-access');
415
- return ok({ status: 'approved', ws, requester });
507
+ const role = decision === 'viewer' ? 'viewer' : 'contributor'; // approve|contributor → contributor
508
+ await setWsRole(creatorGhii, organism_id, ws, requester, role);
509
+ emitChange('organisms');
510
+ return ok({ status: 'approved', ws, requester, role });
416
511
  }
417
512
  return fail("action must be 'request', 'list' or 'decide'.");
418
513
  });
@@ -448,6 +543,7 @@ export function registerWorkspaceTools(mcp, storage, config, getAgentGaii, _emit
448
543
  return fail('zip_base64 is empty or invalid.');
449
544
  try {
450
545
  const result = await importWorkspace(storage, config, { orgId: organism_id, importerGaii: ownerGhii, importerOwner: ownerName, zip: buf });
546
+ emitChange('organisms');
451
547
  return ok(result);
452
548
  }
453
549
  catch (e) {
@@ -1 +1 @@
1
- {"version":3,"file":"workspaces.js","sourceRoot":"","sources":["../../../src/mcp/workspaces.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"workspaces.js","sourceRoot":"","sources":["../../../src/mcp/workspaces.ts"],"names":[],"mappings":"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"}
@@ -10,6 +10,11 @@
10
10
  * @version-history
11
11
  * v1.0.0 -- 2026-02 -- Phase 2.3 organism workspace access control.
12
12
  * v1.1.0 -- 2026-06-07 -- Key the membership lookup by bare owner name (was full GHII → 403'd members).
13
+ * v1.2.0 -- 2026-06-09 -- A same-owner agent (the workspace creator's own agent) bypasses the consent
14
+ * check, like the human owner session — so a CrewAI sub-agent can write to its owner's workspace.
15
+ * v1.3.0 -- 2026-06-09 -- Workspace CONTENT writes require the creator's 'contributor' role grant only
16
+ * (revocable); 'viewer' is read-only. Flat organism namespaces still use the writer's own contribution
17
+ * consent. Splits the consent check by workspace key vs flat key.
13
18
  */
14
19
  import type { RequestHandler } from 'express';
15
20
  import type { AimeatConfig } from '../config.js';
@@ -1 +1 @@
1
- {"version":3,"file":"workspace-access.d.ts","sourceRoot":"","sources":["../../../src/middleware/workspace-access.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AACH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAC9C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AACjD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,yBAAyB,CAAC;AAGvD;;;;;;;;;;GAUG;AACH,wBAAgB,yBAAyB,CACvC,MAAM,EAAE,YAAY,EACpB,OAAO,EAAE,OAAO,GACf,cAAc,CA4HhB"}
1
+ {"version":3,"file":"workspace-access.d.ts","sourceRoot":"","sources":["../../../src/middleware/workspace-access.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AACH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAC9C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AACjD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,yBAAyB,CAAC;AAGvD;;;;;;;;;;GAUG;AACH,wBAAgB,yBAAyB,CACvC,MAAM,EAAE,YAAY,EACpB,OAAO,EAAE,OAAO,GACf,cAAc,CA0JhB"}