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.
- package/dist/locales/en.json +42 -1
- package/dist/locales/fi.json +42 -1
- package/dist/public/css/views/profile.css +81 -5
- package/dist/public/css/views/public-workspace-viewer.css +206 -0
- package/dist/public/js/services/organisms.js +122 -1
- package/dist/public/llms-template.txt +7 -2
- package/dist/public/spa.html +2 -0
- package/dist/public/views/profile/organisms-tab.js +157 -9
- package/dist/public/views/public-workspace-viewer.js +128 -0
- package/dist/src/cli/connect/mcp/tools/workspaces.d.ts.map +1 -1
- package/dist/src/cli/connect/mcp/tools/workspaces.js +15 -9
- package/dist/src/cli/connect/mcp/tools/workspaces.js.map +1 -1
- package/dist/src/cli/connect/tool-call.d.ts.map +1 -1
- package/dist/src/cli/connect/tool-call.js +10 -6
- package/dist/src/cli/connect/tool-call.js.map +1 -1
- package/dist/src/generated/api-types.d.ts +204 -0
- package/dist/src/generated/api-types.d.ts.map +1 -1
- package/dist/src/mcp/catalog/definitions.d.ts.map +1 -1
- package/dist/src/mcp/catalog/definitions.js +3 -2
- package/dist/src/mcp/catalog/definitions.js.map +1 -1
- package/dist/src/mcp/workspaces.d.ts +19 -0
- package/dist/src/mcp/workspaces.d.ts.map +1 -1
- package/dist/src/mcp/workspaces.js +147 -51
- package/dist/src/mcp/workspaces.js.map +1 -1
- package/dist/src/middleware/workspace-access.d.ts +5 -0
- package/dist/src/middleware/workspace-access.d.ts.map +1 -1
- package/dist/src/middleware/workspace-access.js +52 -15
- package/dist/src/middleware/workspace-access.js.map +1 -1
- package/dist/src/routes/organisms.d.ts +11 -0
- package/dist/src/routes/organisms.d.ts.map +1 -1
- package/dist/src/routes/organisms.js +357 -31
- package/dist/src/routes/organisms.js.map +1 -1
- package/dist/src/routes/portal.d.ts.map +1 -1
- package/dist/src/routes/portal.js +1 -0
- package/dist/src/routes/portal.js.map +1 -1
- package/dist/src/services/handbooks/agent.d.ts +3 -1
- package/dist/src/services/handbooks/agent.d.ts.map +1 -1
- package/dist/src/services/handbooks/agent.js +3 -1
- package/dist/src/services/handbooks/agent.js.map +1 -1
- package/dist/src/services/handbooks/appdev.d.ts +3 -1
- package/dist/src/services/handbooks/appdev.d.ts.map +1 -1
- package/dist/src/services/handbooks/appdev.js +19 -0
- package/dist/src/services/handbooks/appdev.js.map +1 -1
- package/dist/src/services/workspace-meta.d.ts +10 -0
- package/dist/src/services/workspace-meta.d.ts.map +1 -1
- package/dist/src/services/workspace-meta.js +50 -3
- package/dist/src/services/workspace-meta.js.map +1 -1
- package/package.json +1 -1
|
@@ -4,6 +4,8 @@
|
|
|
4
4
|
* --surface appdev`). Self-contained; tool list mirrors MCP_SURFACES.appdev.
|
|
5
5
|
* @version-history
|
|
6
6
|
* v1.0.0 -- 2026-05-30 -- Initial appdev-surface handbook
|
|
7
|
+
* v1.1.0 -- 2026-06-09 -- Add the Organism workspaces & agent-contracts section (points to
|
|
8
|
+
* docs/agent-workspace-contracts.md) so workspace-processing agents are built to the convention.
|
|
7
9
|
*/
|
|
8
10
|
export const APPDEV_HANDBOOK = `# AIMEAT — App-Dev Surface Handbook
|
|
9
11
|
|
|
@@ -39,6 +41,23 @@ manifest.yaml + libs/) · \`aimeat_cortex_activate\` · \`aimeat_cortex_deactiva
|
|
|
39
41
|
3. Activate (extensions/cortex) and verify with the \`_list\`/\`_get\` tool.
|
|
40
42
|
4. Iterate; bump versions on apps.
|
|
41
43
|
|
|
44
|
+
## Organism workspaces & agent contracts
|
|
45
|
+
You also create + provision organism **workspaces** on this surface: \`aimeat_organism_create\` (the
|
|
46
|
+
container) · \`aimeat_workspace_create\` (manifest + locked schemas) · \`aimeat_workspace_update\` (evolve
|
|
47
|
+
the structure — add/remove a space, set the publish gate) · \`aimeat_workspace_read\`/\`_list\`/\`_write\`/
|
|
48
|
+
\`_publish\`/\`_object_delete\` · \`aimeat_workspace_access\` (manage **viewer**/**contributor** roles) ·
|
|
49
|
+
\`aimeat_workspace_transfer\` (export/import).
|
|
50
|
+
|
|
51
|
+
**Building a workspace-PROCESSING agent (one that reads requests + writes results)?** It owns a
|
|
52
|
+
**contract**: the spaces it READS (inputs) + WRITES (outputs) + the status lifecycle. Attaching it =
|
|
53
|
+
**provision** the contract's spaces with \`aimeat_workspace_update\` **\`add_spaces\`** (the server UNIONS
|
|
54
|
+
them into the manifest, skips any that already exist, fills defaults — no need to resend the whole
|
|
55
|
+
manifest; creator-only, so a *same-owner* agent self-provisions, otherwise the creator does it)
|
|
56
|
+
+ **grant** the agent the \`contributor\` role. Writes are attributed to the agent (it appears in
|
|
57
|
+
"Who works here" + the activity heatmap) and are visible to the whole workspace. Full guide — machine-
|
|
58
|
+
readable contract template, exact provision calls, the processing loop, schema rules:
|
|
59
|
+
**\`docs/agent-workspace-contracts.md\`**. Read it before building such an agent.
|
|
60
|
+
|
|
42
61
|
## Layer rules (critical — see the appdev/mcp handbook modules)
|
|
43
62
|
- Extensions own \`ext:{name}\` memory; read owner data via \`ctx.memory.getPublic(ctx.caller.gaii, key)\`.
|
|
44
63
|
- Translations/settings are USER data — cortex reads them via \`AIMEAT.data.get(...)\`, NOT \`getPublic('ext:...')\`.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"appdev.js","sourceRoot":"","sources":["../../../../src/services/handbooks/appdev.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"appdev.js","sourceRoot":"","sources":["../../../../src/services/handbooks/appdev.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,MAAM,CAAC,MAAM,eAAe,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA4D9B,CAAC"}
|
|
@@ -11,6 +11,9 @@
|
|
|
11
11
|
* @version-history
|
|
12
12
|
* v1.0.0 — 2026-06-09 — Initial: in-place name + readme update.
|
|
13
13
|
* v1.1.0 — 2026-06-09 — Manifest + schemas: one update path for structure (spaces/gate/settings).
|
|
14
|
+
* v1.2.0 — 2026-06-09 — Additive `addObjectTypes`: the server UNIONS new spaces into the manifest
|
|
15
|
+
* (skip-if-exists), filling sensible objectType defaults, so an agent provisions its contract's
|
|
16
|
+
* spaces deterministically without sending (and risking) the whole manifest. Returns {added, skipped}.
|
|
14
17
|
*/
|
|
15
18
|
import type { Storage } from '../storage/interface.js';
|
|
16
19
|
import type { AimeatConfig } from '../config.js';
|
|
@@ -28,6 +31,11 @@ export interface UpdateWorkspaceOpts {
|
|
|
28
31
|
/** Full replacement manifest (objectTypes + policy/gate + settings). Add/remove a space by
|
|
29
32
|
* including/excluding its objectType. Validated against the manifest meta-schema. */
|
|
30
33
|
manifest?: Record<string, unknown>;
|
|
34
|
+
/** ADDITIVE: objectTypes to UNION into the existing manifest (skip any whose name/namespace already
|
|
35
|
+
* exists). The server fills sensible defaults (mode/backing/writeRole/cardinality/versioned/schemaRef),
|
|
36
|
+
* so a caller can pass just { name, namespace, mode } and provision deterministically — never sending
|
|
37
|
+
* (or risking) the whole manifest. Cannot remove/rename — use `manifest` for that. */
|
|
38
|
+
addObjectTypes?: Array<Record<string, unknown>>;
|
|
31
39
|
/** Map of namespace → JSON Schema, locked (strict) for that space's records. */
|
|
32
40
|
schemas?: Record<string, Record<string, unknown>>;
|
|
33
41
|
}
|
|
@@ -35,5 +43,7 @@ export declare function updateWorkspaceMeta(storage: Storage, _config: AimeatCon
|
|
|
35
43
|
updated: string[];
|
|
36
44
|
creator: string;
|
|
37
45
|
name?: string;
|
|
46
|
+
added?: string[];
|
|
47
|
+
skipped?: string[];
|
|
38
48
|
}>;
|
|
39
49
|
//# sourceMappingURL=workspace-meta.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"workspace-meta.d.ts","sourceRoot":"","sources":["../../../src/services/workspace-meta.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"workspace-meta.d.ts","sourceRoot":"","sources":["../../../src/services/workspace-meta.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AACH,OAAO,KAAK,EAAE,OAAO,EAAgB,MAAM,yBAAyB,CAAC;AACrE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAGjD,qBAAa,kBAAmB,SAAQ,KAAK;IACxB,IAAI,EAAE,cAAc,GAAG,aAAa,GAAG,mBAAmB,GAAG,kBAAkB;gBAA/E,IAAI,EAAE,cAAc,GAAG,aAAa,GAAG,mBAAmB,GAAG,kBAAkB,EAAE,OAAO,EAAE,MAAM;CAIpH;AAED,MAAM,WAAW,mBAAmB;IAClC,KAAK,EAAE,MAAM,CAAC;IACd,EAAE,EAAE,MAAM,CAAC;IACX,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,OAAO,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB;0FACsF;IACtF,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACnC;;;2FAGuF;IACvF,cAAc,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;IAChD,gFAAgF;IAChF,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;CACnD;AAED,wBAAsB,mBAAmB,CACvC,OAAO,EAAE,OAAO,EAChB,OAAO,EAAE,YAAY,EACrB,IAAI,EAAE,mBAAmB,GACxB,OAAO,CAAC;IAAE,OAAO,EAAE,MAAM,EAAE,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,EAAE,CAAA;CAAE,CAAC,CA0GtG"}
|
|
@@ -12,9 +12,10 @@ export async function updateWorkspaceMeta(storage, _config, opts) {
|
|
|
12
12
|
const name = typeof opts.name === 'string' ? opts.name.trim() : undefined;
|
|
13
13
|
const readme = typeof opts.readme === 'string' ? opts.readme : undefined;
|
|
14
14
|
const manifest = (opts.manifest && typeof opts.manifest === 'object' && !Array.isArray(opts.manifest)) ? opts.manifest : undefined;
|
|
15
|
+
const addObjectTypes = (Array.isArray(opts.addObjectTypes) && opts.addObjectTypes.length) ? opts.addObjectTypes : undefined;
|
|
15
16
|
const schemas = (opts.schemas && typeof opts.schemas === 'object') ? opts.schemas : undefined;
|
|
16
|
-
if (!name && readme === undefined && !manifest && !schemas)
|
|
17
|
-
throw new WorkspaceMetaError('NOTHING_TO_UPDATE', 'Provide a new name, readme, manifest and/or schemas.');
|
|
17
|
+
if (!name && readme === undefined && !manifest && !addObjectTypes && !schemas)
|
|
18
|
+
throw new WorkspaceMetaError('NOTHING_TO_UPDATE', 'Provide a new name, readme, manifest, add_spaces and/or schemas.');
|
|
18
19
|
const root = `organism.${orgId}.w.${ws}`;
|
|
19
20
|
// The workspace's registry entry lives in its creator's registry record — find it across members.
|
|
20
21
|
const regKey = `organism.${orgId}.meta.workspaces`;
|
|
@@ -40,6 +41,8 @@ export async function updateWorkspaceMeta(storage, _config, opts) {
|
|
|
40
41
|
const creatorGhii = regRec.ownerGaii;
|
|
41
42
|
const now = new Date().toISOString();
|
|
42
43
|
const updated = [];
|
|
44
|
+
const added = [];
|
|
45
|
+
const skipped = [];
|
|
43
46
|
const write = async (key, ownerGaii, value, prev) => {
|
|
44
47
|
await storage.setMemory({
|
|
45
48
|
key, ownerGaii, value,
|
|
@@ -77,6 +80,50 @@ export async function updateWorkspaceMeta(storage, _config, opts) {
|
|
|
77
80
|
if (newName)
|
|
78
81
|
await syncRegistryName(newName);
|
|
79
82
|
}
|
|
83
|
+
else if (addObjectTypes) {
|
|
84
|
+
// ADDITIVE: union the new objectTypes into the existing manifest. Skip any whose name OR namespace
|
|
85
|
+
// already exists (idempotent). Never touches existing spaces, can't remove/rename — the safe,
|
|
86
|
+
// deterministic path for an agent to provision its contract's spaces. Defaults are filled so a
|
|
87
|
+
// caller can pass just { name, namespace, mode (+ a schema) }.
|
|
88
|
+
const current = (manRec?.value && typeof manRec.value === 'object' && !Array.isArray(manRec.value)) ? { ...manRec.value } : null;
|
|
89
|
+
if (!current || !Array.isArray(current.objectTypes))
|
|
90
|
+
throw new WorkspaceMetaError('WS_NOT_FOUND', 'Workspace has no manifest to extend.');
|
|
91
|
+
const existing = current.objectTypes.slice();
|
|
92
|
+
const haveName = new Set(existing.map(o => o.name));
|
|
93
|
+
const haveNs = new Set(existing.map(o => o.namespace));
|
|
94
|
+
for (const raw of addObjectTypes) {
|
|
95
|
+
if (!raw || typeof raw !== 'object' || !raw.name || !raw.namespace)
|
|
96
|
+
throw new WorkspaceMetaError('INVALID_MANIFEST', 'Each add_spaces entry needs a name and a namespace.');
|
|
97
|
+
if (haveName.has(raw.name) || haveNs.has(raw.namespace)) {
|
|
98
|
+
skipped.push(String(raw.name));
|
|
99
|
+
continue;
|
|
100
|
+
}
|
|
101
|
+
const ot = {
|
|
102
|
+
mode: raw.mode || 'records', backing: raw.backing || 'memory', writeRole: raw.writeRole || 'member',
|
|
103
|
+
cardinality: raw.cardinality || 'many', versioned: raw.versioned !== undefined ? raw.versioned : true,
|
|
104
|
+
...raw, schemaRef: raw.schemaRef || `schema:${String(raw.name)}@1`,
|
|
105
|
+
};
|
|
106
|
+
existing.push(ot);
|
|
107
|
+
haveName.add(raw.name);
|
|
108
|
+
haveNs.add(raw.namespace);
|
|
109
|
+
added.push(String(raw.name));
|
|
110
|
+
}
|
|
111
|
+
if (added.length) {
|
|
112
|
+
const manifestValue = { ...current, objectTypes: existing, id: orgId, status: current.status || 'active' };
|
|
113
|
+
if (name)
|
|
114
|
+
manifestValue.name = name;
|
|
115
|
+
const valid = await validateMemoryWrite(`${root}.meta.manifest`, manifestValue, storage);
|
|
116
|
+
if (!valid.valid)
|
|
117
|
+
throw new WorkspaceMetaError('INVALID_MANIFEST', 'Manifest rejected by schema: ' + JSON.stringify(valid.errors));
|
|
118
|
+
await write(`${root}.meta.manifest`, manRec?.ownerGaii ?? creatorGhii, manifestValue, manRec);
|
|
119
|
+
updated.push('manifest');
|
|
120
|
+
if (name)
|
|
121
|
+
await syncRegistryName(name);
|
|
122
|
+
}
|
|
123
|
+
else if (name) {
|
|
124
|
+
await syncRegistryName(name);
|
|
125
|
+
}
|
|
126
|
+
}
|
|
80
127
|
else if (name) {
|
|
81
128
|
// Name-only: patch the manifest's name + the registry, leaving structure untouched.
|
|
82
129
|
if (manRec && manRec.value && typeof manRec.value === 'object') {
|
|
@@ -90,6 +137,6 @@ export async function updateWorkspaceMeta(storage, _config, opts) {
|
|
|
90
137
|
await write(`${root}.meta.readme`, readmeRec?.ownerGaii ?? creatorGhii, readme, readmeRec);
|
|
91
138
|
updated.push('readme');
|
|
92
139
|
}
|
|
93
|
-
return { updated, creator: entry.createdBy ?? '', name };
|
|
140
|
+
return { updated, creator: entry.createdBy ?? '', name, ...(addObjectTypes ? { added, skipped } : {}) };
|
|
94
141
|
}
|
|
95
142
|
//# sourceMappingURL=workspace-meta.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"workspace-meta.js","sourceRoot":"","sources":["../../../src/services/workspace-meta.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"workspace-meta.js","sourceRoot":"","sources":["../../../src/services/workspace-meta.ts"],"names":[],"mappings":"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"}
|