@trylucy/agent-memory 0.0.0-stage → 0.1.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 (58) hide show
  1. package/LICENSE +202 -0
  2. package/README.md +205 -2
  3. package/contracts/agent-manifest.json +27 -0
  4. package/contracts/agent-memory-api.contract.json +199 -0
  5. package/contracts/hashes.json +23 -0
  6. package/package.json +84 -4
  7. package/schemas/canonical-recall/response.schema.json +56 -0
  8. package/schemas/v1/common.schema.json +190 -0
  9. package/schemas/v1/contract-document.schema.json +277 -0
  10. package/schemas/v1/create-proposal-request.schema.json +42 -0
  11. package/schemas/v1/error.schema.json +90 -0
  12. package/schemas/v1/memory-version-state.schema.json +39 -0
  13. package/schemas/v1/memory.schema.json +47 -0
  14. package/schemas/v1/proposal-status.schema.json +277 -0
  15. package/schemas/v1/public-surface.schema.json +26 -0
  16. package/schemas/v1/recall-request.schema.json +45 -0
  17. package/schemas/v1/recall-response.schema.json +60 -0
  18. package/schemas/v1/receipt.schema.json +67 -0
  19. package/schemas/v1/replace-proposal-request.schema.json +46 -0
  20. package/schemas/v1/replace-transition.schema.json +19 -0
  21. package/schemas/v1/scope.schema.json +10 -0
  22. package/scripts/lib/am01.mjs +159 -0
  23. package/src/client/canonical-validation.mjs +37 -0
  24. package/src/client/client.mjs +151 -0
  25. package/src/client/errors.mjs +101 -0
  26. package/src/client/http-transport.d.ts +12 -0
  27. package/src/client/http-transport.mjs +212 -0
  28. package/src/client/index.d.ts +243 -0
  29. package/src/client/index.mjs +38 -0
  30. package/src/client/serialization.mjs +53 -0
  31. package/src/client/validation.mjs +174 -0
  32. package/src/clients/claude-desktop.json +13 -0
  33. package/src/clients/claude.json +13 -0
  34. package/src/clients/codex.toml +8 -0
  35. package/src/clients/cursor.json +12 -0
  36. package/src/clients/generic.mcp.json +12 -0
  37. package/src/clients/openclaw.json +14 -0
  38. package/src/clients/vscode.json +13 -0
  39. package/src/integrations/hermes-advisory-lock.mjs +140 -0
  40. package/src/integrations/hermes-artifact.mjs +551 -0
  41. package/src/integrations/hermes-filesystem.mjs +112 -0
  42. package/src/integrations/hermes.d.ts +106 -0
  43. package/src/integrations/hermes.mjs +425 -0
  44. package/src/mcp/bin.mjs +4 -0
  45. package/src/mcp/config.mjs +60 -0
  46. package/src/mcp/index.d.ts +27 -0
  47. package/src/mcp/lifecycle.mjs +50 -0
  48. package/src/mcp/schemas.mjs +98 -0
  49. package/src/mcp/server.mjs +163 -0
  50. package/src/mcp/stdio.d.ts +28 -0
  51. package/src/mcp/stdio.mjs +59 -0
  52. package/src/onboarding/usage.mjs +44 -0
  53. package/src/projection/memory-md.mjs +319 -0
  54. package/src/provider/index.d.ts +9 -0
  55. package/src/provider/index.mjs +1 -0
  56. package/src/provider/memory-first.mjs +95 -0
  57. package/src/routing/destination.mjs +42 -0
  58. package/src/safety/secrets.mjs +31 -0
package/package.json CHANGED
@@ -1,6 +1,86 @@
1
1
  {
2
+ "devDependencies": {
3
+ "@modelcontextprotocol/client": "2.3.1",
4
+ "@types/node": "26.2.0",
5
+ "typescript": "7.0.2"
6
+ },
7
+ "engines": {
8
+ "node": ">=20 <25"
9
+ },
2
10
  "name": "@trylucy/agent-memory",
3
- "version": "0.0.0-stage",
4
- "stub": true,
5
- "description": "Temporary package placeholder for staged publishing"
6
- }
11
+ "description": "Official Lucy MCP runtime for governed agent memory. Three tools only: recall, propose, proposal status.",
12
+ "license": "Apache-2.0",
13
+ "private": false,
14
+ "repository": {
15
+ "type": "git",
16
+ "url": "git+https://github.com/Lucy-AI-Inc/lucy-memory-mcp.git"
17
+ },
18
+ "homepage": "https://github.com/Lucy-AI-Inc/lucy-memory-mcp",
19
+ "bugs": {
20
+ "url": "https://github.com/Lucy-AI-Inc/lucy-memory-mcp/issues"
21
+ },
22
+ "keywords": [
23
+ "lucy",
24
+ "mcp",
25
+ "agent-memory",
26
+ "governed-memory"
27
+ ],
28
+ "bin": {
29
+ "lucy-memory-mcp": "./src/mcp/bin.mjs"
30
+ },
31
+ "files": [
32
+ "src",
33
+ "schemas",
34
+ "contracts",
35
+ "scripts/lib/am01.mjs",
36
+ "README.md"
37
+ ],
38
+ "types": "./src/client/index.d.ts",
39
+ "exports": {
40
+ ".": {
41
+ "types": "./src/client/index.d.ts",
42
+ "import": "./src/client/index.mjs"
43
+ },
44
+ "./mcp": {
45
+ "types": "./src/mcp/index.d.ts",
46
+ "import": "./src/mcp/server.mjs"
47
+ },
48
+ "./mcp/stdio": {
49
+ "types": "./src/mcp/stdio.d.ts",
50
+ "import": "./src/mcp/stdio.mjs"
51
+ },
52
+ "./provider": {
53
+ "types": "./src/provider/index.d.ts",
54
+ "import": "./src/provider/index.mjs"
55
+ },
56
+ "./hermes": {
57
+ "types": "./src/integrations/hermes.d.ts",
58
+ "import": "./src/integrations/hermes.mjs"
59
+ }
60
+ },
61
+ "scripts": {
62
+ "check:full": "npm test && npm run test:types && npm run validate && npm run verify:hashes && npm run scan:secrets && npm audit --audit-level=moderate && npm pack --dry-run",
63
+ "hashes": "node scripts/generate-hashes.mjs --write",
64
+ "test": "node --test",
65
+ "test:mcp": "node --test tests/mcp/core-mcp-server.test.mjs",
66
+ "test:e2e": "node --test tests/e2e/wave4-isolated-e2e.test.mjs",
67
+ "test:package": "node --test tests/package/package-contents.test.mjs",
68
+ "test:types": "tsc --noEmit -p tests/types/tsconfig.json",
69
+ "validate": "npm run validate:contract && npm run validate:schemas",
70
+ "validate:contract": "node scripts/validate-contract.mjs",
71
+ "validate:schemas": "node scripts/validate-schemas.mjs",
72
+ "scan:secrets": "node scripts/scan-secrets.mjs",
73
+ "verify:hashes": "node scripts/generate-hashes.mjs --check"
74
+ },
75
+ "type": "module",
76
+ "version": "0.1.2",
77
+ "dependencies": {
78
+ "@modelcontextprotocol/server": "2.3.1",
79
+ "ajv": "8.20.0",
80
+ "ajv-formats": "3.0.1",
81
+ "yaml": "^2.8.3"
82
+ },
83
+ "overrides": {
84
+ "fast-uri": "3.1.9"
85
+ }
86
+ }
@@ -0,0 +1,56 @@
1
+ {
2
+ "$id": "https://schemas.trylucy.ai/agent-memory/canonical-recall/response.schema.json",
3
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
4
+ "title": "Canonical recall response",
5
+ "type": "object",
6
+ "additionalProperties": false,
7
+ "required": ["schema_version", "request_id", "as_of", "consistency", "scope", "results", "notices"],
8
+ "properties": {
9
+ "schema_version": { "const": "canonical-recall-1" },
10
+ "request_id": { "type": "string", "pattern": "^req_[A-Za-z0-9_-]+$", "maxLength": 256 },
11
+ "as_of": { "$ref": "#/$defs/timestamp" },
12
+ "consistency": { "const": "canonical_active" },
13
+ "scope": { "$ref": "#/$defs/scope" },
14
+ "results": { "type": "array", "maxItems": 5, "items": { "$ref": "#/$defs/result" } },
15
+ "notices": { "type": "array", "maxItems": 0 }
16
+ },
17
+ "$defs": {
18
+ "timestamp": { "type": "string", "format": "date-time" },
19
+ "scope": {
20
+ "oneOf": [
21
+ { "type": "object", "additionalProperties": false, "required": ["kind"], "properties": { "kind": { "const": "user" } } },
22
+ { "type": "object", "additionalProperties": false, "required": ["kind"], "properties": { "kind": { "const": "workspace" } } },
23
+ { "type": "object", "additionalProperties": false, "required": ["kind", "id"], "properties": { "kind": { "const": "project" }, "id": { "type": "string", "pattern": "^project_[A-Za-z0-9_-]+$", "minLength": 1, "maxLength": 128 } } }
24
+ ]
25
+ },
26
+ "provenance": {
27
+ "type": "object",
28
+ "additionalProperties": false,
29
+ "required": ["type", "record_id", "proposal_id", "canonical_payload_hash", "written_at"],
30
+ "properties": {
31
+ "type": { "const": "lucy_canonical" },
32
+ "record_id": { "type": "string", "minLength": 1, "maxLength": 256 },
33
+ "proposal_id": { "type": ["string", "null"], "minLength": 1, "maxLength": 256 },
34
+ "canonical_payload_hash": { "type": ["string", "null"], "pattern": "^[a-fA-F0-9]{64}$" },
35
+ "written_at": { "$ref": "#/$defs/timestamp" }
36
+ }
37
+ },
38
+ "result": {
39
+ "type": "object",
40
+ "additionalProperties": false,
41
+ "required": ["record_id", "key", "kind", "scope", "content", "status", "persisted", "approval_status", "version", "provenance"],
42
+ "properties": {
43
+ "record_id": { "type": "string", "minLength": 1, "maxLength": 256 },
44
+ "key": { "type": ["string", "null"], "minLength": 1, "maxLength": 128, "pattern": "^[a-z](?:[a-z0-9]|[._-](?=[a-z0-9])){0,127}$" },
45
+ "kind": { "type": "string", "minLength": 1, "maxLength": 128 },
46
+ "scope": { "$ref": "#/$defs/scope" },
47
+ "content": { "type": "string", "minLength": 1, "maxLength": 8192 },
48
+ "status": { "const": "active" },
49
+ "persisted": { "const": true },
50
+ "approval_status": { "enum": ["user_approved", "approved", "replayed", "controller_approved"] },
51
+ "version": { "type": ["integer", "null"], "minimum": 1, "maximum": 9007199254740991 },
52
+ "provenance": { "$ref": "#/$defs/provenance" }
53
+ }
54
+ }
55
+ }
56
+ }
@@ -0,0 +1,190 @@
1
+ {
2
+ "$defs": {
3
+ "authority": {
4
+ "additionalProperties": false,
5
+ "properties": {
6
+ "type": {
7
+ "const": "human_approved"
8
+ }
9
+ },
10
+ "required": [
11
+ "type"
12
+ ],
13
+ "type": "object"
14
+ },
15
+ "content": {
16
+ "maxLength": 2000,
17
+ "minLength": 1,
18
+ "type": "string"
19
+ },
20
+ "contractVersion": {
21
+ "const": "2026-08-09"
22
+ },
23
+ "idempotencyKey": {
24
+ "format": "uuid",
25
+ "type": "string"
26
+ },
27
+ "justification": {
28
+ "maxLength": 500,
29
+ "minLength": 1,
30
+ "type": "string"
31
+ },
32
+ "key": {
33
+ "maxLength": 128,
34
+ "minLength": 1,
35
+ "pattern": "^[a-z](?:[a-z0-9]|[._-](?=[a-z0-9])){0,127}$",
36
+ "type": "string"
37
+ },
38
+ "memoryId": {
39
+ "pattern": "^mem_[A-Za-z0-9_-]+$",
40
+ "type": "string"
41
+ },
42
+ "memoryKind": {
43
+ "enum": [
44
+ "fact",
45
+ "preference",
46
+ "decision",
47
+ "rule"
48
+ ]
49
+ },
50
+ "memoryLifecycle": {
51
+ "enum": [
52
+ "active",
53
+ "superseded",
54
+ "revoked",
55
+ "forgotten"
56
+ ]
57
+ },
58
+ "proposalId": {
59
+ "pattern": "^proposal_[A-Za-z0-9_-]+$",
60
+ "type": "string"
61
+ },
62
+ "proposalLifecycle": {
63
+ "enum": [
64
+ "pending",
65
+ "approved",
66
+ "rejected",
67
+ "expired",
68
+ "superseded"
69
+ ]
70
+ },
71
+ "provenance": {
72
+ "additionalProperties": false,
73
+ "properties": {
74
+ "ref": {
75
+ "maxLength": 256,
76
+ "minLength": 1,
77
+ "type": "string"
78
+ },
79
+ "type": {
80
+ "const": "governed_record"
81
+ }
82
+ },
83
+ "required": [
84
+ "type",
85
+ "ref"
86
+ ],
87
+ "type": "object"
88
+ },
89
+ "receiptId": {
90
+ "pattern": "^rcpt_[A-Za-z0-9_-]+$",
91
+ "type": "string"
92
+ },
93
+ "relation": {
94
+ "additionalProperties": false,
95
+ "properties": {
96
+ "memory_id": {
97
+ "$ref": "#/$defs/memoryId"
98
+ },
99
+ "memory_version": {
100
+ "$ref": "#/$defs/version"
101
+ },
102
+ "type": {
103
+ "const": "supersedes"
104
+ }
105
+ },
106
+ "required": [
107
+ "type",
108
+ "memory_id",
109
+ "memory_version"
110
+ ],
111
+ "type": "object"
112
+ },
113
+ "requestId": {
114
+ "pattern": "^req_[A-Za-z0-9_-]+$",
115
+ "type": "string"
116
+ },
117
+ "schemaVersion": {
118
+ "const": "1"
119
+ },
120
+ "scope": {
121
+ "oneOf": [
122
+ {
123
+ "additionalProperties": false,
124
+ "properties": {
125
+ "kind": {
126
+ "const": "user"
127
+ }
128
+ },
129
+ "required": [
130
+ "kind"
131
+ ],
132
+ "type": "object"
133
+ },
134
+ {
135
+ "additionalProperties": false,
136
+ "properties": {
137
+ "kind": {
138
+ "const": "workspace"
139
+ }
140
+ },
141
+ "required": [
142
+ "kind"
143
+ ],
144
+ "type": "object"
145
+ },
146
+ {
147
+ "additionalProperties": false,
148
+ "properties": {
149
+ "id": {
150
+ "maxLength": 128,
151
+ "minLength": 1,
152
+ "pattern": "^project_[A-Za-z0-9_-]+$",
153
+ "type": "string"
154
+ },
155
+ "kind": {
156
+ "const": "project"
157
+ }
158
+ },
159
+ "required": [
160
+ "kind",
161
+ "id"
162
+ ],
163
+ "type": "object"
164
+ }
165
+ ]
166
+ },
167
+ "sourceRef": {
168
+ "maxLength": 256,
169
+ "minLength": 1,
170
+ "type": "string"
171
+ },
172
+ "timestamp": {
173
+ "format": "date-time",
174
+ "type": "string"
175
+ },
176
+ "expectedVersion": {
177
+ "maximum": 9007199254740990,
178
+ "minimum": 1,
179
+ "type": "integer"
180
+ },
181
+ "version": {
182
+ "maximum": 9007199254740991,
183
+ "minimum": 1,
184
+ "type": "integer"
185
+ }
186
+ },
187
+ "$id": "https://schemas.trylucy.ai/agent-memory/v1/common.schema.json",
188
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
189
+ "title": "Lucy Agent Memory common definitions"
190
+ }
@@ -0,0 +1,277 @@
1
+ {
2
+ "$id": "https://schemas.trylucy.ai/agent-memory/v1/contract-document.schema.json",
3
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
4
+ "additionalProperties": false,
5
+ "properties": {
6
+ "contract_name": {
7
+ "const": "Lucy Agent Memory API Contract"
8
+ },
9
+ "contract_version": {
10
+ "const": "2026-08-09"
11
+ },
12
+ "create": {
13
+ "const": {
14
+ "approved_memory_version": 1,
15
+ "creates_new_memory_id": true,
16
+ "forbidden": [
17
+ "memory_id",
18
+ "expected_version"
19
+ ],
20
+ "may_replace_active": false,
21
+ "required": [
22
+ "operation",
23
+ "key",
24
+ "kind",
25
+ "scope",
26
+ "content",
27
+ "justification",
28
+ "idempotency_key"
29
+ ]
30
+ }
31
+ },
32
+ "error_codes": {
33
+ "const": [
34
+ "unauthenticated",
35
+ "forbidden",
36
+ "not_found_or_not_visible",
37
+ "invalid_scope",
38
+ "invalid_request",
39
+ "unsupported_version",
40
+ "conflict",
41
+ "version_conflict",
42
+ "rate_limited",
43
+ "payload_too_large",
44
+ "service_unavailable",
45
+ "insufficient_credits",
46
+ "billing_unavailable"
47
+ ]
48
+ },
49
+ "forbidden_mcp_capabilities": {
50
+ "const": [
51
+ "memory_list",
52
+ "memory_resolve",
53
+ "memory_approve",
54
+ "memory_reject",
55
+ "memory_delete",
56
+ "memory_restore"
57
+ ]
58
+ },
59
+ "forbidden_public_permissions": {
60
+ "const": [
61
+ "memory:write",
62
+ "memory:approve",
63
+ "memory:resolve",
64
+ "memory:delete",
65
+ "memory:restore"
66
+ ]
67
+ },
68
+ "forgetting": {
69
+ "const": {
70
+ "physical_deletion_everywhere_promised": false,
71
+ "supported_path_promise": "Once Lucy confirms a memory as forgotten, it is immediately ineligible for recall through supported Lucy Agent Memory paths."
72
+ }
73
+ },
74
+ "identity": {
75
+ "const": {
76
+ "account_source": "server-derived",
77
+ "client_may_supply_account": false,
78
+ "client_may_supply_tenant": false,
79
+ "conflict_identity": [
80
+ "server-derived tenant",
81
+ "exact scope",
82
+ "exact key"
83
+ ],
84
+ "key_required": true,
85
+ "maximum_active_per_conflict_identity": 1,
86
+ "tenant_source": "server-derived"
87
+ }
88
+ },
89
+ "limits": {
90
+ "const": {
91
+ "content_max_bytes": 8192,
92
+ "content_max_unicode_scalars": 2000,
93
+ "idempotency_key_format": "uuid",
94
+ "justification_max_bytes": 2048,
95
+ "justification_max_unicode_scalars": 500,
96
+ "key_max_characters": 128,
97
+ "proposal_request_max_bytes": 12288,
98
+ "recall_keys_maximum": 20,
99
+ "recall_limit_default": 3,
100
+ "recall_limit_maximum": 5,
101
+ "recall_limit_minimum": 1,
102
+ "recall_query_max_unicode_scalars": 1024,
103
+ "recall_request_max_bytes": 8192,
104
+ "recall_response_max_bytes": 65536,
105
+ "source_ref_max_characters": 256
106
+ }
107
+ },
108
+ "mcp_tools": {
109
+ "const": [
110
+ "memory_recall",
111
+ "memory_propose",
112
+ "memory_proposal_status"
113
+ ]
114
+ },
115
+ "memory_kinds": {
116
+ "const": [
117
+ "fact",
118
+ "preference",
119
+ "decision",
120
+ "rule"
121
+ ]
122
+ },
123
+ "memory_lifecycle": {
124
+ "const": [
125
+ "active",
126
+ "superseded",
127
+ "revoked",
128
+ "forgotten"
129
+ ]
130
+ },
131
+ "proposal": {
132
+ "const": {
133
+ "authority": "server-authoritative human approval",
134
+ "payload_immutable_after_acceptance": true,
135
+ "proposal_supersession_distinct_from_memory_version_supersession": true,
136
+ "terminal_states_reopen": false
137
+ }
138
+ },
139
+ "proposal_lifecycle": {
140
+ "const": [
141
+ "pending",
142
+ "approved",
143
+ "rejected",
144
+ "expired",
145
+ "superseded"
146
+ ]
147
+ },
148
+ "proposal_version": {
149
+ "const": 1
150
+ },
151
+ "public_permissions": {
152
+ "const": [
153
+ "memory:read",
154
+ "memory:propose"
155
+ ]
156
+ },
157
+ "public_schema_version": {
158
+ "const": "1"
159
+ },
160
+ "recall": {
161
+ "const": {
162
+ "asynchronous_index_is_not_authority": true,
163
+ "canonical_active_state_rejoin_required": true,
164
+ "historical_receipt_requires_fresh_recall": true,
165
+ "normally_recallable_lifecycle": [
166
+ "active"
167
+ ]
168
+ }
169
+ },
170
+ "receipts": {
171
+ "const": {
172
+ "authority_types": [
173
+ "human_approved"
174
+ ],
175
+ "required_public_fields": [
176
+ "schema_version",
177
+ "id",
178
+ "memory_id",
179
+ "memory_version",
180
+ "key",
181
+ "kind",
182
+ "scope",
183
+ "lifecycle",
184
+ "authority",
185
+ "authoritative_at",
186
+ "issued_at",
187
+ "provenance",
188
+ "relations"
189
+ ],
190
+ "version_specific": true
191
+ }
192
+ },
193
+ "replace": {
194
+ "const": {
195
+ "expected_version_maximum": 9007199254740990,
196
+ "expected_version_minimum": 1,
197
+ "forbidden": [
198
+ "kind"
199
+ ],
200
+ "may_change_key": false,
201
+ "may_change_kind": false,
202
+ "may_change_scope": false,
203
+ "may_create_missing": false,
204
+ "maximum_memory_version": 9007199254740991,
205
+ "new_version_rule": "expected_version + 1",
206
+ "prior_version_transition": "superseded atomically",
207
+ "required": [
208
+ "operation",
209
+ "memory_id",
210
+ "expected_version",
211
+ "key",
212
+ "scope",
213
+ "content",
214
+ "justification",
215
+ "idempotency_key"
216
+ ],
217
+ "retains_memory_id": true
218
+ }
219
+ },
220
+ "retryable_error_codes": {
221
+ "const": [
222
+ "rate_limited",
223
+ "service_unavailable",
224
+ "billing_unavailable"
225
+ ]
226
+ },
227
+ "rule_non_authorities": {
228
+ "const": [
229
+ "credentials",
230
+ "OAuth scopes",
231
+ "access",
232
+ "approval authority",
233
+ "tool authority",
234
+ "spending authority",
235
+ "policy exemptions",
236
+ "tenant changes",
237
+ "project visibility",
238
+ "deployment authority",
239
+ "publication authority"
240
+ ]
241
+ },
242
+ "scope_kinds": {
243
+ "const": [
244
+ "user",
245
+ "workspace",
246
+ "project"
247
+ ]
248
+ }
249
+ },
250
+ "required": [
251
+ "contract_name",
252
+ "contract_version",
253
+ "public_schema_version",
254
+ "memory_kinds",
255
+ "scope_kinds",
256
+ "public_permissions",
257
+ "mcp_tools",
258
+ "proposal_lifecycle",
259
+ "memory_lifecycle",
260
+ "proposal_version",
261
+ "identity",
262
+ "create",
263
+ "replace",
264
+ "proposal",
265
+ "recall",
266
+ "receipts",
267
+ "rule_non_authorities",
268
+ "forgetting",
269
+ "limits",
270
+ "error_codes",
271
+ "retryable_error_codes",
272
+ "forbidden_public_permissions",
273
+ "forbidden_mcp_capabilities"
274
+ ],
275
+ "title": "Lucy Agent Memory API contract document",
276
+ "type": "object"
277
+ }
@@ -0,0 +1,42 @@
1
+ {
2
+ "$id": "https://schemas.trylucy.ai/agent-memory/v1/create-proposal-request.schema.json",
3
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
4
+ "additionalProperties": false,
5
+ "properties": {
6
+ "content": {
7
+ "$ref": "https://schemas.trylucy.ai/agent-memory/v1/common.schema.json#/$defs/content"
8
+ },
9
+ "idempotency_key": {
10
+ "$ref": "https://schemas.trylucy.ai/agent-memory/v1/common.schema.json#/$defs/idempotencyKey"
11
+ },
12
+ "justification": {
13
+ "$ref": "https://schemas.trylucy.ai/agent-memory/v1/common.schema.json#/$defs/justification"
14
+ },
15
+ "key": {
16
+ "$ref": "https://schemas.trylucy.ai/agent-memory/v1/common.schema.json#/$defs/key"
17
+ },
18
+ "kind": {
19
+ "$ref": "https://schemas.trylucy.ai/agent-memory/v1/common.schema.json#/$defs/memoryKind"
20
+ },
21
+ "operation": {
22
+ "const": "create"
23
+ },
24
+ "scope": {
25
+ "$ref": "https://schemas.trylucy.ai/agent-memory/v1/common.schema.json#/$defs/scope"
26
+ },
27
+ "source_ref": {
28
+ "$ref": "https://schemas.trylucy.ai/agent-memory/v1/common.schema.json#/$defs/sourceRef"
29
+ }
30
+ },
31
+ "required": [
32
+ "operation",
33
+ "key",
34
+ "kind",
35
+ "scope",
36
+ "content",
37
+ "justification",
38
+ "idempotency_key"
39
+ ],
40
+ "title": "Create memory proposal request",
41
+ "type": "object"
42
+ }