@trylucy/agent-memory 0.0.0 → 0.1.3

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 +200 -0
  5. package/contracts/hashes.json +23 -0
  6. package/package.json +83 -5
  7. package/schemas/canonical-recall/response.schema.json +56 -0
  8. package/schemas/v1/common.schema.json +191 -0
  9. package/schemas/v1/contract-document.schema.json +278 -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 +106 -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,8 +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",
4
- "description": "Placeholder used to initialize trusted publishing.",
5
- "license": "MIT",
11
+ "description": "Official Lucy MCP runtime for governed agent memory. Three tools only: recall, propose, proposal status.",
12
+ "license": "Apache-2.0",
6
13
  "private": false,
7
- "files": ["README.md"]
8
- }
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.3",
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,191 @@
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
+ "context"
49
+ ]
50
+ },
51
+ "memoryLifecycle": {
52
+ "enum": [
53
+ "active",
54
+ "superseded",
55
+ "revoked",
56
+ "forgotten"
57
+ ]
58
+ },
59
+ "proposalId": {
60
+ "pattern": "^proposal_[A-Za-z0-9_-]+$",
61
+ "type": "string"
62
+ },
63
+ "proposalLifecycle": {
64
+ "enum": [
65
+ "pending",
66
+ "approved",
67
+ "rejected",
68
+ "expired",
69
+ "superseded"
70
+ ]
71
+ },
72
+ "provenance": {
73
+ "additionalProperties": false,
74
+ "properties": {
75
+ "ref": {
76
+ "maxLength": 256,
77
+ "minLength": 1,
78
+ "type": "string"
79
+ },
80
+ "type": {
81
+ "const": "governed_record"
82
+ }
83
+ },
84
+ "required": [
85
+ "type",
86
+ "ref"
87
+ ],
88
+ "type": "object"
89
+ },
90
+ "receiptId": {
91
+ "pattern": "^rcpt_[A-Za-z0-9_-]+$",
92
+ "type": "string"
93
+ },
94
+ "relation": {
95
+ "additionalProperties": false,
96
+ "properties": {
97
+ "memory_id": {
98
+ "$ref": "#/$defs/memoryId"
99
+ },
100
+ "memory_version": {
101
+ "$ref": "#/$defs/version"
102
+ },
103
+ "type": {
104
+ "const": "supersedes"
105
+ }
106
+ },
107
+ "required": [
108
+ "type",
109
+ "memory_id",
110
+ "memory_version"
111
+ ],
112
+ "type": "object"
113
+ },
114
+ "requestId": {
115
+ "pattern": "^req_[A-Za-z0-9_-]+$",
116
+ "type": "string"
117
+ },
118
+ "schemaVersion": {
119
+ "const": "1"
120
+ },
121
+ "scope": {
122
+ "oneOf": [
123
+ {
124
+ "additionalProperties": false,
125
+ "properties": {
126
+ "kind": {
127
+ "const": "user"
128
+ }
129
+ },
130
+ "required": [
131
+ "kind"
132
+ ],
133
+ "type": "object"
134
+ },
135
+ {
136
+ "additionalProperties": false,
137
+ "properties": {
138
+ "kind": {
139
+ "const": "workspace"
140
+ }
141
+ },
142
+ "required": [
143
+ "kind"
144
+ ],
145
+ "type": "object"
146
+ },
147
+ {
148
+ "additionalProperties": false,
149
+ "properties": {
150
+ "id": {
151
+ "maxLength": 128,
152
+ "minLength": 1,
153
+ "pattern": "^project_[A-Za-z0-9_-]+$",
154
+ "type": "string"
155
+ },
156
+ "kind": {
157
+ "const": "project"
158
+ }
159
+ },
160
+ "required": [
161
+ "kind",
162
+ "id"
163
+ ],
164
+ "type": "object"
165
+ }
166
+ ]
167
+ },
168
+ "sourceRef": {
169
+ "maxLength": 256,
170
+ "minLength": 1,
171
+ "type": "string"
172
+ },
173
+ "timestamp": {
174
+ "format": "date-time",
175
+ "type": "string"
176
+ },
177
+ "expectedVersion": {
178
+ "maximum": 9007199254740990,
179
+ "minimum": 1,
180
+ "type": "integer"
181
+ },
182
+ "version": {
183
+ "maximum": 9007199254740991,
184
+ "minimum": 1,
185
+ "type": "integer"
186
+ }
187
+ },
188
+ "$id": "https://schemas.trylucy.ai/agent-memory/v1/common.schema.json",
189
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
190
+ "title": "Lucy Agent Memory common definitions"
191
+ }
@@ -0,0 +1,278 @@
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
+ "context"
122
+ ]
123
+ },
124
+ "memory_lifecycle": {
125
+ "const": [
126
+ "active",
127
+ "superseded",
128
+ "revoked",
129
+ "forgotten"
130
+ ]
131
+ },
132
+ "proposal": {
133
+ "const": {
134
+ "authority": "server-authoritative human approval",
135
+ "payload_immutable_after_acceptance": true,
136
+ "proposal_supersession_distinct_from_memory_version_supersession": true,
137
+ "terminal_states_reopen": false
138
+ }
139
+ },
140
+ "proposal_lifecycle": {
141
+ "const": [
142
+ "pending",
143
+ "approved",
144
+ "rejected",
145
+ "expired",
146
+ "superseded"
147
+ ]
148
+ },
149
+ "proposal_version": {
150
+ "const": 1
151
+ },
152
+ "public_permissions": {
153
+ "const": [
154
+ "memory:read",
155
+ "memory:propose"
156
+ ]
157
+ },
158
+ "public_schema_version": {
159
+ "const": "1"
160
+ },
161
+ "recall": {
162
+ "const": {
163
+ "asynchronous_index_is_not_authority": true,
164
+ "canonical_active_state_rejoin_required": true,
165
+ "historical_receipt_requires_fresh_recall": true,
166
+ "normally_recallable_lifecycle": [
167
+ "active"
168
+ ]
169
+ }
170
+ },
171
+ "receipts": {
172
+ "const": {
173
+ "authority_types": [
174
+ "human_approved"
175
+ ],
176
+ "required_public_fields": [
177
+ "schema_version",
178
+ "id",
179
+ "memory_id",
180
+ "memory_version",
181
+ "key",
182
+ "kind",
183
+ "scope",
184
+ "lifecycle",
185
+ "authority",
186
+ "authoritative_at",
187
+ "issued_at",
188
+ "provenance",
189
+ "relations"
190
+ ],
191
+ "version_specific": true
192
+ }
193
+ },
194
+ "replace": {
195
+ "const": {
196
+ "expected_version_maximum": 9007199254740990,
197
+ "expected_version_minimum": 1,
198
+ "forbidden": [
199
+ "kind"
200
+ ],
201
+ "may_change_key": false,
202
+ "may_change_kind": false,
203
+ "may_change_scope": false,
204
+ "may_create_missing": false,
205
+ "maximum_memory_version": 9007199254740991,
206
+ "new_version_rule": "expected_version + 1",
207
+ "prior_version_transition": "superseded atomically",
208
+ "required": [
209
+ "operation",
210
+ "memory_id",
211
+ "expected_version",
212
+ "key",
213
+ "scope",
214
+ "content",
215
+ "justification",
216
+ "idempotency_key"
217
+ ],
218
+ "retains_memory_id": true
219
+ }
220
+ },
221
+ "retryable_error_codes": {
222
+ "const": [
223
+ "rate_limited",
224
+ "service_unavailable",
225
+ "billing_unavailable"
226
+ ]
227
+ },
228
+ "rule_non_authorities": {
229
+ "const": [
230
+ "credentials",
231
+ "OAuth scopes",
232
+ "access",
233
+ "approval authority",
234
+ "tool authority",
235
+ "spending authority",
236
+ "policy exemptions",
237
+ "tenant changes",
238
+ "project visibility",
239
+ "deployment authority",
240
+ "publication authority"
241
+ ]
242
+ },
243
+ "scope_kinds": {
244
+ "const": [
245
+ "user",
246
+ "workspace",
247
+ "project"
248
+ ]
249
+ }
250
+ },
251
+ "required": [
252
+ "contract_name",
253
+ "contract_version",
254
+ "public_schema_version",
255
+ "memory_kinds",
256
+ "scope_kinds",
257
+ "public_permissions",
258
+ "mcp_tools",
259
+ "proposal_lifecycle",
260
+ "memory_lifecycle",
261
+ "proposal_version",
262
+ "identity",
263
+ "create",
264
+ "replace",
265
+ "proposal",
266
+ "recall",
267
+ "receipts",
268
+ "rule_non_authorities",
269
+ "forgetting",
270
+ "limits",
271
+ "error_codes",
272
+ "retryable_error_codes",
273
+ "forbidden_public_permissions",
274
+ "forbidden_mcp_capabilities"
275
+ ],
276
+ "title": "Lucy Agent Memory API contract document",
277
+ "type": "object"
278
+ }
@@ -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
+ }