@ifsoul/core 0.3.0 → 0.5.0

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 (147) hide show
  1. package/README.md +30 -33
  2. package/dist/packages/memory/src/sql.js +54 -5
  3. package/dist/packages/protocol/src/generated/validators.cjs +1 -1
  4. package/dist/packages/protocol/src/index.d.ts +1 -6
  5. package/dist/packages/protocol/src/index.js +3 -16
  6. package/dist/packages/protocol/src/types.d.ts +1 -1
  7. package/dist/packages/runtime/src/behavior-types.d.ts +150 -0
  8. package/dist/packages/runtime/src/behavior-types.js +1 -0
  9. package/dist/packages/runtime/src/behavior.d.ts +40 -0
  10. package/dist/packages/runtime/src/behavior.js +621 -0
  11. package/dist/packages/runtime/src/group-scheduler.d.ts +165 -0
  12. package/dist/packages/runtime/src/group-scheduler.js +647 -0
  13. package/dist/packages/runtime/src/index.d.ts +4 -0
  14. package/dist/packages/runtime/src/index.js +4 -1
  15. package/dist/packages/runtime/src/participants.d.ts +107 -0
  16. package/dist/packages/runtime/src/participants.js +309 -0
  17. package/dist/packages/runtime/src/types.d.ts +1 -0
  18. package/package.json +2 -3
  19. package/packages/protocol/schemas/current/archive.schema.json +16 -16
  20. package/packages/protocol/schemas/current/character.schema.json +21 -21
  21. package/packages/protocol/schemas/current/common.schema.json +15 -15
  22. package/packages/protocol/schemas/current/context.schema.json +24 -24
  23. package/packages/protocol/schemas/current/conversation.schema.json +39 -39
  24. package/packages/protocol/schemas/current/environment.schema.json +18 -18
  25. package/packages/protocol/schemas/current/memory.schema.json +66 -66
  26. package/packages/protocol/schemas/current/model-provider.schema.json +40 -40
  27. package/packages/protocol/schemas/current/planning.schema.json +61 -61
  28. package/packages/protocol/schemas/current/provider-common.schema.json +6 -6
  29. package/release.json +7 -12
  30. package/specs/README.md +3 -86
  31. package/specs/current/README.md +3 -5
  32. package/specs/current/examples/archive-fork.json +12 -12
  33. package/specs/current/examples/archive-resume.json +12 -12
  34. package/specs/current/examples/character-instance.json +1 -1
  35. package/specs/current/examples/character-template.json +1 -1
  36. package/specs/current/examples/context-after-inspection.json +1 -1
  37. package/specs/current/examples/context-chat.json +1 -1
  38. package/specs/current/examples/context-daily.json +1 -1
  39. package/specs/current/examples/context-no-speech.json +1 -1
  40. package/specs/current/examples/conversation-delivery.json +1 -1
  41. package/specs/current/examples/conversation-live-request.json +1 -1
  42. package/specs/current/examples/conversation-live-response.json +1 -1
  43. package/specs/current/examples/conversation-no-speech-request.json +1 -1
  44. package/specs/current/examples/conversation-no-speech-response.json +1 -1
  45. package/specs/current/examples/conversation-requested-request.json +1 -1
  46. package/specs/current/examples/conversation-requested-response.json +1 -1
  47. package/specs/current/examples/environment-chat.json +1 -1
  48. package/specs/current/examples/environment-game.json +1 -1
  49. package/specs/current/examples/environment-no-speech.json +1 -1
  50. package/specs/current/examples/intent-checkpoint.json +1 -1
  51. package/specs/current/examples/memory-episode.json +1 -1
  52. package/specs/current/examples/memory-event-conversation.json +1 -1
  53. package/specs/current/examples/memory-event-observed.json +2 -2
  54. package/specs/current/examples/memory-event-plan-proposal.json +2 -2
  55. package/specs/current/examples/memory-event-proposed.json +2 -2
  56. package/specs/current/examples/memory-fact.json +1 -1
  57. package/specs/current/examples/memory-relationship.json +1 -1
  58. package/specs/current/examples/memory-working-context.json +1 -1
  59. package/specs/current/examples/plan-cancel-request.json +1 -1
  60. package/specs/current/examples/plan-cancel-result.json +1 -1
  61. package/specs/current/examples/plan-daily.json +1 -1
  62. package/specs/current/examples/plan-partial-decision.json +1 -1
  63. package/specs/current/examples/portable-memory.jsonl +9 -9
  64. package/specs/current/examples/task-outcome.json +1 -1
  65. package/specs/current/examples/task-progress.json +1 -1
  66. package/specs/current/model-provider/examples/capabilities.json +1 -1
  67. package/specs/current/model-provider/examples/error.json +1 -1
  68. package/specs/current/model-provider/examples/request.json +1 -1
  69. package/specs/current/model-provider/examples/response.json +1 -1
  70. package/docs/npm-publishing.md +0 -44
  71. package/packages/protocol/schemas/action-result.schema.json +0 -187
  72. package/packages/protocol/schemas/action.schema.json +0 -68
  73. package/packages/protocol/schemas/archive-manifest.schema.json +0 -126
  74. package/packages/protocol/schemas/capability.schema.json +0 -131
  75. package/packages/protocol/schemas/character-instance.schema.json +0 -73
  76. package/packages/protocol/schemas/character-template.schema.json +0 -67
  77. package/packages/protocol/schemas/common.schema.json +0 -154
  78. package/packages/protocol/schemas/derived-memory.schema.json +0 -145
  79. package/packages/protocol/schemas/memory-event.schema.json +0 -123
  80. package/packages/protocol/schemas/model-provider.schema.json +0 -326
  81. package/packages/protocol/schemas/perception.schema.json +0 -89
  82. package/packages/protocol/schemas/permission-policy.schema.json +0 -153
  83. package/packages/protocol/schemas/v0.2/archive.schema.json +0 -205
  84. package/packages/protocol/schemas/v0.2/character.schema.json +0 -344
  85. package/packages/protocol/schemas/v0.2/common.schema.json +0 -239
  86. package/packages/protocol/schemas/v0.2/context.schema.json +0 -230
  87. package/packages/protocol/schemas/v0.2/conversation.schema.json +0 -340
  88. package/packages/protocol/schemas/v0.2/environment.schema.json +0 -244
  89. package/packages/protocol/schemas/v0.2/memory.schema.json +0 -495
  90. package/packages/protocol/schemas/v0.2/planning.schema.json +0 -443
  91. package/packages/protocol/schemas/world-event.schema.json +0 -74
  92. package/specs/character/README.md +0 -84
  93. package/specs/character/examples/archive-manifest.json +0 -32
  94. package/specs/character/examples/character-instance.json +0 -20
  95. package/specs/character/examples/character-template.json +0 -19
  96. package/specs/memory/README.md +0 -80
  97. package/specs/memory/examples/derived-memory.json +0 -21
  98. package/specs/memory/examples/memory-event.json +0 -35
  99. package/specs/model-provider/README.md +0 -85
  100. package/specs/model-provider/examples/capabilities.json +0 -10
  101. package/specs/model-provider/examples/error.json +0 -18
  102. package/specs/model-provider/examples/request.json +0 -17
  103. package/specs/model-provider/examples/response.json +0 -19
  104. package/specs/v0.2/README.md +0 -421
  105. package/specs/v0.2/examples/archive-fork.json +0 -64
  106. package/specs/v0.2/examples/archive-resume.json +0 -63
  107. package/specs/v0.2/examples/character-instance.json +0 -57
  108. package/specs/v0.2/examples/character-template.json +0 -45
  109. package/specs/v0.2/examples/context-after-inspection.json +0 -44
  110. package/specs/v0.2/examples/context-chat.json +0 -27
  111. package/specs/v0.2/examples/context-daily.json +0 -69
  112. package/specs/v0.2/examples/context-no-speech.json +0 -27
  113. package/specs/v0.2/examples/conversation-delivery.json +0 -17
  114. package/specs/v0.2/examples/conversation-live-request.json +0 -31
  115. package/specs/v0.2/examples/conversation-live-response.json +0 -23
  116. package/specs/v0.2/examples/conversation-no-speech-request.json +0 -23
  117. package/specs/v0.2/examples/conversation-no-speech-response.json +0 -22
  118. package/specs/v0.2/examples/conversation-requested-request.json +0 -31
  119. package/specs/v0.2/examples/conversation-requested-response.json +0 -23
  120. package/specs/v0.2/examples/environment-chat.json +0 -43
  121. package/specs/v0.2/examples/environment-game.json +0 -80
  122. package/specs/v0.2/examples/environment-no-speech.json +0 -47
  123. package/specs/v0.2/examples/intent-checkpoint.json +0 -29
  124. package/specs/v0.2/examples/memory-episode.json +0 -28
  125. package/specs/v0.2/examples/memory-event-conversation.json +0 -32
  126. package/specs/v0.2/examples/memory-event-observed.json +0 -50
  127. package/specs/v0.2/examples/memory-event-plan-proposal.json +0 -82
  128. package/specs/v0.2/examples/memory-event-proposed.json +0 -53
  129. package/specs/v0.2/examples/memory-fact.json +0 -23
  130. package/specs/v0.2/examples/memory-relationship.json +0 -25
  131. package/specs/v0.2/examples/memory-working-context.json +0 -24
  132. package/specs/v0.2/examples/plan-cancel-request.json +0 -16
  133. package/specs/v0.2/examples/plan-cancel-result.json +0 -21
  134. package/specs/v0.2/examples/plan-daily.json +0 -57
  135. package/specs/v0.2/examples/plan-partial-decision.json +0 -28
  136. package/specs/v0.2/examples/portable-memory.jsonl +0 -9
  137. package/specs/v0.2/examples/task-outcome.json +0 -21
  138. package/specs/v0.2/examples/task-progress.json +0 -19
  139. package/specs/world-adapter/README.md +0 -114
  140. package/specs/world-adapter/examples/action-result-unknown.json +0 -23
  141. package/specs/world-adapter/examples/action-result.json +0 -45
  142. package/specs/world-adapter/examples/action.json +0 -17
  143. package/specs/world-adapter/examples/capability.json +0 -44
  144. package/specs/world-adapter/examples/perception.json +0 -30
  145. package/specs/world-adapter/examples/permission-decision.json +0 -14
  146. package/specs/world-adapter/examples/permission-policy.json +0 -17
  147. package/specs/world-adapter/examples/world-event.json +0 -25
package/release.json CHANGED
@@ -1,16 +1,11 @@
1
1
  {
2
- "version": "0.3.0",
2
+ "version": "0.5.0",
3
3
  "current": {
4
- "protocol": "0.3.0",
5
- "modelProvider": "0.3.0",
6
- "bridge": "ifsoul-bridge/0.3.0",
7
- "bridgeResourcePolicy": "ifsoul-bridge-resource-policy/0.3.0",
8
- "appResourcePolicy": "ifsoul-app-resource-policy/0.3.0",
9
- "appMemory": "ifsoul-app-memory/0.3.0"
10
- },
11
- "legacy": {
12
- "protocol": ["draft-0.1.0", "draft-0.2.0"],
13
- "bridge": ["ifsoul-bridge/0.1"],
14
- "appMemory": ["ifsoul-app-memory/0.1"]
4
+ "protocol": "0.4.0",
5
+ "modelProvider": "0.4.0",
6
+ "bridge": "ifsoul-bridge/0.4.0",
7
+ "bridgeResourcePolicy": "ifsoul-bridge-resource-policy/0.4.0",
8
+ "appResourcePolicy": "ifsoul-app-resource-policy/0.4.0",
9
+ "appMemory": "ifsoul-app-memory/0.4.0"
15
10
  }
16
11
  }
package/specs/README.md CHANGED
@@ -1,87 +1,4 @@
1
- # Protocol specifications
1
+ # IfSoul contracts
2
2
 
3
- Start with the [current v0.2 design](v0.2/README.md). It separates persistent
4
- characters, embodiments and providers, supports game/chat environments and
5
- host-owned planning/dialogue. The sections below document the retained v0.1
6
- baseline; they do not recommend implementing direct NPC control in a bridge.
7
- ModelProvider v0.1 remains the current independent provider contract.
8
-
9
- ## Historical v0.1 baseline
10
-
11
- The frozen local bootstrap baseline is **draft-0.1.0**. It specifies data
12
- contracts, not a functioning agent system. The words MUST, MUST NOT, SHOULD,
13
- and MAY express requirements for a future conforming implementation. Structural
14
- requirements are in the [schema registry](../packages/protocol/README.md).
15
- Additional semantic requirements below remain necessary even after validation.
16
-
17
- | Area | Specification | Positive examples |
18
- | ------------------------------ | ----------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
19
- | Character and archive | [Character](character/README.md) | [Template](character/examples/character-template.json), [instance](character/examples/character-instance.json), [manifest](character/examples/archive-manifest.json) |
20
- | Event history and derived data | [Memory](memory/README.md) | [Event](memory/examples/memory-event.json), [summary](memory/examples/derived-memory.json) |
21
- | World and authorization | [WorldAdapter](world-adapter/README.md) | [Perception](world-adapter/examples/perception.json), [action](world-adapter/examples/action.json), [result](world-adapter/examples/action-result.json) |
22
- | Model boundary | [ModelProvider](model-provider/README.md) | [Request](model-provider/examples/request.json), [response](model-provider/examples/response.json), [error](model-provider/examples/error.json) |
23
-
24
- These examples are normative positive structural examples using original,
25
- synthetic data. They do not claim that an adapter, provider, archive importer, or
26
- memory engine exists. The initial character archive predates the separate
27
- watering trace; its instance therefore has empty history references.
28
-
29
- ## Frozen field conventions
30
-
31
- - JSON uses UTF-8, case-sensitive camelCase property names, and a `kind`
32
- discriminator. Every exchange envelope has `schemaVersion: "draft-0.1.0"`.
33
- Absence and `null` differ; optional values are omitted, never `null`.
34
- - IDs are opaque, case-sensitive ASCII strings matching
35
- `[A-Za-z0-9][A-Za-z0-9._:-]{0,127}`. They are not paths, display names, emails,
36
- URLs, credentials, or implied authorities. Allocation and collision detection
37
- belong to the producer/importer. A referenced ID MUST resolve in its stated
38
- namespace; equal IDs in unrelated worlds do not identify the same actor.
39
- - A `characterId` identifies a portable instance. `actorId`, `observerId`, and
40
- scope `subjectIds` identify world subjects within `worldId` + `sessionId`.
41
- A trusted composition root maintains their mapping; it is not inferred from
42
- names. A template ID and revision identify reusable authored content.
43
- - Revisions are positive integers for template/policy content; capability/world
44
- revisions are opaque IDs. No lexicographic revision ordering is implied.
45
- - `recordedAt`, `createdAt`, `observedAt`, `requestedAt`, `deadlineAt`, and
46
- `evaluatedAt` are RFC 3339 date-time strings restricted to UTC `Z`, four-digit
47
- years, seconds, and optional 1–9 digit fractional seconds. They describe wall
48
- clock recording or scheduling, not world chronology. Deadline comparisons
49
- require a trusted local clock and explicit transport clock handling.
50
- - `worldTime` is `{ "timelineId": <id>, "tick": <nonnegative integer> }`.
51
- Ticks have no implied duration or UTC conversion. Worlds document their tick
52
- rate separately. A reset, branch, or incomparable clock uses a new timeline
53
- ID. Integers in common counters are bounded by `9007199254740991` for portable
54
- exact representation. No global event ordering is promised.
55
- - Ordinary contract objects reject additional properties. Open JSON payloads,
56
- argument-schema objects, and extensions are explicit exceptions. Unknown
57
- properties MUST NOT be silently removed to make a document pass validation.
58
- - `extensions` is an optional object keyed by lowercase dotted namespaces such
59
- as `org.example.notes`. Values are arbitrary JSON. `requiredExtensions` is an
60
- optional unique array of those keys. Every required key MUST exist in
61
- `extensions` and be understood before processing. Schema validation alone
62
- cannot check that relationship or an implementation's support.
63
- - Unknown optional extensions MUST be preserved as JSON values by a lossless
64
- import/export path. An implementation unable to preserve them MUST reject
65
- that operation or obtain an explicitly filtered export with recorded losses.
66
- Unknown required extensions MUST cause rejection. Neither grants authority.
67
- - Human-readable text, memory, model output, imported payloads, and semantic
68
- descriptions are untrusted data; they cannot grant permissions or override
69
- trusted policy. Validators MUST NOT fetch external schema references found in
70
- untrusted argument/tool schemas. Limits and allowed local references must be
71
- applied before compiling those nested schemas.
72
-
73
- ## Schema limits and semantic validation
74
-
75
- JSON Schema checks fields, types, supported versions, tagged variants, and some
76
- status relationships. It cannot prove uniqueness of selected IDs across records,
77
- referential integrity, provenance truth, licenses, consent, authorization, UTC
78
- clock accuracy, time ordering, checksums, archive completeness, action effects,
79
- model capability support, or psychological identity. Future consumers MUST
80
- check the requirements relevant to their operation, with bounded document,
81
- array, string, archive, and model sizes. This draft intentionally does not pick
82
- universal resource budgets or implement a semantic validator.
83
-
84
- The schema of a capability's arguments or model tool is itself JSON data here.
85
- A consumer MUST separately validate it as JSON Schema 2020-12, enforce its local
86
- reference/complexity policy, and validate arguments against it. Merely passing
87
- the enclosing schema does not validate the arguments.
3
+ The [current contracts](current/README.md) are the only supported product formats.
4
+ See [compatibility](../docs/compatibility.md) for the breaking-release boundary.
@@ -1,10 +1,8 @@
1
- # Current IfSoul 0.3.0 contracts
1
+ # Current IfSoul 0.4.0 contracts
2
2
 
3
3
  Current character, environment, planning, conversation, memory and archive schemas
4
- are in `packages/protocol/schemas/current` and use `schemaVersion: "0.3.0"`.
5
- The corresponding examples are under this directory. Field semantics retain the
6
- reviewed v0.2 shapes; this new version has its own IDs and exact validation.
7
- Historical v0.1/v0.2 schemas and examples remain byte-identical legacy references.
4
+ are in `packages/protocol/schemas/current` and use `schemaVersion: "0.4.0"`.
5
+ The corresponding examples are under this directory.
8
6
  See [compatibility](../../docs/compatibility.md).
9
7
 
10
8
  The current ModelProvider normative schema is `current/model-provider.schema.json`
@@ -1,7 +1,7 @@
1
1
  {
2
- "schemaVersion": "0.3.0",
2
+ "schemaVersion": "0.4.0",
3
3
  "kind": "archive-manifest",
4
- "archiveVersion": "0.3.0",
4
+ "archiveVersion": "0.4.0",
5
5
  "archiveId": "archive-mira-fork",
6
6
  "characterId": "character-mira",
7
7
  "createdAt": "2026-01-01T08:03:01Z",
@@ -12,37 +12,37 @@
12
12
  },
13
13
  "schemaInventory": [
14
14
  {
15
- "schemaId": "urn:ifsoul:protocol:0.3.0:character",
16
- "schemaVersion": "0.3.0"
15
+ "schemaId": "urn:ifsoul:protocol:0.4.0:character",
16
+ "schemaVersion": "0.4.0"
17
17
  },
18
18
  {
19
- "schemaId": "urn:ifsoul:protocol:0.3.0:memory",
20
- "schemaVersion": "0.3.0"
19
+ "schemaId": "urn:ifsoul:protocol:0.4.0:memory",
20
+ "schemaVersion": "0.4.0"
21
21
  }
22
22
  ],
23
23
  "files": [
24
24
  {
25
25
  "path": "character-template.json",
26
26
  "role": "character-template",
27
- "schemaId": "urn:ifsoul:protocol:0.3.0:character",
27
+ "schemaId": "urn:ifsoul:protocol:0.4.0:character",
28
28
  "recordCount": 1,
29
- "sha256": "d566787cdbc14ce0535d90279e5fff6f75ede69e453e23ffa0adbff7af4a7711",
29
+ "sha256": "ae65535b6f932bbc504c98bf7e12a2b3a7b91f97adbb22d20332c507e6a1afbe",
30
30
  "sizeBytes": 1263
31
31
  },
32
32
  {
33
33
  "path": "character-instance.json",
34
34
  "role": "character-instance",
35
- "schemaId": "urn:ifsoul:protocol:0.3.0:character",
35
+ "schemaId": "urn:ifsoul:protocol:0.4.0:character",
36
36
  "recordCount": 1,
37
- "sha256": "b4106e7faf05be8005a1ff2bafa4dfa82547273f0ea94c1acad027a946944368",
37
+ "sha256": "587f3259fa51cc2f70aa376a1ace4be0ffe9dd621450cd6d84466c1cb88c21fe",
38
38
  "sizeBytes": 1574
39
39
  },
40
40
  {
41
41
  "path": "portable-memory.jsonl",
42
42
  "role": "memory",
43
- "schemaId": "urn:ifsoul:protocol:0.3.0:memory",
43
+ "schemaId": "urn:ifsoul:protocol:0.4.0:memory",
44
44
  "recordCount": 9,
45
- "sha256": "4dbbb5a7002ef9c55f58a5ba9c0f1b8713590a2116921058ef10997df5853edb",
45
+ "sha256": "5f716035bfde7e1f5e40e5dac8e499f32957f6a0b41209ff4116cd83603cd8ca",
46
46
  "sizeBytes": 7253
47
47
  }
48
48
  ],
@@ -1,7 +1,7 @@
1
1
  {
2
- "schemaVersion": "0.3.0",
2
+ "schemaVersion": "0.4.0",
3
3
  "kind": "archive-manifest",
4
- "archiveVersion": "0.3.0",
4
+ "archiveVersion": "0.4.0",
5
5
  "archiveId": "archive-mira-resume",
6
6
  "characterId": "character-mira",
7
7
  "createdAt": "2026-01-01T08:03:01Z",
@@ -11,37 +11,37 @@
11
11
  },
12
12
  "schemaInventory": [
13
13
  {
14
- "schemaId": "urn:ifsoul:protocol:0.3.0:character",
15
- "schemaVersion": "0.3.0"
14
+ "schemaId": "urn:ifsoul:protocol:0.4.0:character",
15
+ "schemaVersion": "0.4.0"
16
16
  },
17
17
  {
18
- "schemaId": "urn:ifsoul:protocol:0.3.0:memory",
19
- "schemaVersion": "0.3.0"
18
+ "schemaId": "urn:ifsoul:protocol:0.4.0:memory",
19
+ "schemaVersion": "0.4.0"
20
20
  }
21
21
  ],
22
22
  "files": [
23
23
  {
24
24
  "path": "character-template.json",
25
25
  "role": "character-template",
26
- "schemaId": "urn:ifsoul:protocol:0.3.0:character",
26
+ "schemaId": "urn:ifsoul:protocol:0.4.0:character",
27
27
  "recordCount": 1,
28
- "sha256": "d566787cdbc14ce0535d90279e5fff6f75ede69e453e23ffa0adbff7af4a7711",
28
+ "sha256": "ae65535b6f932bbc504c98bf7e12a2b3a7b91f97adbb22d20332c507e6a1afbe",
29
29
  "sizeBytes": 1263
30
30
  },
31
31
  {
32
32
  "path": "character-instance.json",
33
33
  "role": "character-instance",
34
- "schemaId": "urn:ifsoul:protocol:0.3.0:character",
34
+ "schemaId": "urn:ifsoul:protocol:0.4.0:character",
35
35
  "recordCount": 1,
36
- "sha256": "b4106e7faf05be8005a1ff2bafa4dfa82547273f0ea94c1acad027a946944368",
36
+ "sha256": "587f3259fa51cc2f70aa376a1ace4be0ffe9dd621450cd6d84466c1cb88c21fe",
37
37
  "sizeBytes": 1574
38
38
  },
39
39
  {
40
40
  "path": "portable-memory.jsonl",
41
41
  "role": "memory",
42
- "schemaId": "urn:ifsoul:protocol:0.3.0:memory",
42
+ "schemaId": "urn:ifsoul:protocol:0.4.0:memory",
43
43
  "recordCount": 9,
44
- "sha256": "4dbbb5a7002ef9c55f58a5ba9c0f1b8713590a2116921058ef10997df5853edb",
44
+ "sha256": "5f716035bfde7e1f5e40e5dac8e499f32957f6a0b41209ff4116cd83603cd8ca",
45
45
  "sizeBytes": 7253
46
46
  }
47
47
  ],
@@ -1,5 +1,5 @@
1
1
  {
2
- "schemaVersion": "0.3.0",
2
+ "schemaVersion": "0.4.0",
3
3
  "kind": "character-instance",
4
4
  "characterId": "character-mira",
5
5
  "participantId": "participant-mira",
@@ -1,5 +1,5 @@
1
1
  {
2
- "schemaVersion": "0.3.0",
2
+ "schemaVersion": "0.4.0",
3
3
  "kind": "character-template",
4
4
  "templateId": "template-mira-v2",
5
5
  "revision": 1,
@@ -1,5 +1,5 @@
1
1
  {
2
- "schemaVersion": "0.3.0",
2
+ "schemaVersion": "0.4.0",
3
3
  "kind": "context-report",
4
4
  "reportId": "briefing-after-inspection",
5
5
  "contextRevision": "context-102",
@@ -1,5 +1,5 @@
1
1
  {
2
- "schemaVersion": "0.3.0",
2
+ "schemaVersion": "0.4.0",
3
3
  "kind": "context-report",
4
4
  "reportId": "context-chat",
5
5
  "contextRevision": "chat-context-1",
@@ -1,5 +1,5 @@
1
1
  {
2
- "schemaVersion": "0.3.0",
2
+ "schemaVersion": "0.4.0",
3
3
  "kind": "context-report",
4
4
  "reportId": "briefing-day-1",
5
5
  "contextRevision": "context-100",
@@ -1,5 +1,5 @@
1
1
  {
2
- "schemaVersion": "0.3.0",
2
+ "schemaVersion": "0.4.0",
3
3
  "kind": "context-report",
4
4
  "reportId": "context-no-speech",
5
5
  "contextRevision": "horse-context-1",
@@ -1,5 +1,5 @@
1
1
  {
2
- "schemaVersion": "0.3.0",
2
+ "schemaVersion": "0.4.0",
3
3
  "kind": "conversation-delivery",
4
4
  "binding": {
5
5
  "environmentId": "garden",
@@ -1,5 +1,5 @@
1
1
  {
2
- "schemaVersion": "0.3.0",
2
+ "schemaVersion": "0.4.0",
3
3
  "kind": "conversation-request",
4
4
  "binding": {
5
5
  "environmentId": "quiet-chat",
@@ -1,5 +1,5 @@
1
1
  {
2
- "schemaVersion": "0.3.0",
2
+ "schemaVersion": "0.4.0",
3
3
  "kind": "conversation-response",
4
4
  "binding": {
5
5
  "environmentId": "quiet-chat",
@@ -1,5 +1,5 @@
1
1
  {
2
- "schemaVersion": "0.3.0",
2
+ "schemaVersion": "0.4.0",
3
3
  "kind": "conversation-request",
4
4
  "binding": {
5
5
  "environmentId": "garden",
@@ -1,5 +1,5 @@
1
1
  {
2
- "schemaVersion": "0.3.0",
2
+ "schemaVersion": "0.4.0",
3
3
  "kind": "conversation-response",
4
4
  "binding": {
5
5
  "environmentId": "garden",
@@ -1,5 +1,5 @@
1
1
  {
2
- "schemaVersion": "0.3.0",
2
+ "schemaVersion": "0.4.0",
3
3
  "kind": "conversation-request",
4
4
  "binding": {
5
5
  "environmentId": "garden",
@@ -1,5 +1,5 @@
1
1
  {
2
- "schemaVersion": "0.3.0",
2
+ "schemaVersion": "0.4.0",
3
3
  "kind": "conversation-response",
4
4
  "binding": {
5
5
  "environmentId": "garden",
@@ -1,5 +1,5 @@
1
1
  {
2
- "schemaVersion": "0.3.0",
2
+ "schemaVersion": "0.4.0",
3
3
  "kind": "environment-profile",
4
4
  "binding": {
5
5
  "environmentId": "quiet-chat",
@@ -1,5 +1,5 @@
1
1
  {
2
- "schemaVersion": "0.3.0",
2
+ "schemaVersion": "0.4.0",
3
3
  "kind": "environment-profile",
4
4
  "binding": {
5
5
  "environmentId": "garden",
@@ -1,5 +1,5 @@
1
1
  {
2
- "schemaVersion": "0.3.0",
2
+ "schemaVersion": "0.4.0",
3
3
  "kind": "environment-profile",
4
4
  "binding": {
5
5
  "environmentId": "garden",
@@ -1,5 +1,5 @@
1
1
  {
2
- "schemaVersion": "0.3.0",
2
+ "schemaVersion": "0.4.0",
3
3
  "kind": "intent-checkpoint",
4
4
  "memoryId": "checkpoint-initial",
5
5
  "characterId": "character-mira",
@@ -1,5 +1,5 @@
1
1
  {
2
- "schemaVersion": "0.3.0",
2
+ "schemaVersion": "0.4.0",
3
3
  "kind": "memory-episode",
4
4
  "memoryId": "episode-garden",
5
5
  "characterId": "character-mira",
@@ -1,5 +1,5 @@
1
1
  {
2
- "schemaVersion": "0.3.0",
2
+ "schemaVersion": "0.4.0",
3
3
  "kind": "memory-event",
4
4
  "memoryId": "event-visitor-question",
5
5
  "characterId": "character-mira",
@@ -1,5 +1,5 @@
1
1
  {
2
- "schemaVersion": "0.3.0",
2
+ "schemaVersion": "0.4.0",
3
3
  "kind": "memory-event",
4
4
  "memoryId": "event-inspection",
5
5
  "characterId": "character-mira",
@@ -27,7 +27,7 @@
27
27
  "tick": 110
28
28
  },
29
29
  "recordedPayload": {
30
- "schemaVersion": "0.3.0",
30
+ "schemaVersion": "0.4.0",
31
31
  "kind": "task-report",
32
32
  "binding": {
33
33
  "environmentId": "garden",
@@ -1,5 +1,5 @@
1
1
  {
2
- "schemaVersion": "0.3.0",
2
+ "schemaVersion": "0.4.0",
3
3
  "kind": "memory-event",
4
4
  "memoryId": "event-plan-proposal",
5
5
  "characterId": "character-mira",
@@ -23,7 +23,7 @@
23
23
  "environmentId": "garden",
24
24
  "sessionId": "garden-session-1",
25
25
  "recordedPayload": {
26
- "schemaVersion": "0.3.0",
26
+ "schemaVersion": "0.4.0",
27
27
  "kind": "plan-proposal",
28
28
  "binding": {
29
29
  "environmentId": "garden",
@@ -1,5 +1,5 @@
1
1
  {
2
- "schemaVersion": "0.3.0",
2
+ "schemaVersion": "0.4.0",
3
3
  "kind": "memory-event",
4
4
  "memoryId": "event-plan-proposed",
5
5
  "characterId": "character-mira",
@@ -23,7 +23,7 @@
23
23
  "environmentId": "garden",
24
24
  "sessionId": "garden-session-1",
25
25
  "recordedPayload": {
26
- "schemaVersion": "0.3.0",
26
+ "schemaVersion": "0.4.0",
27
27
  "kind": "plan-decision",
28
28
  "binding": {
29
29
  "environmentId": "garden",
@@ -1,5 +1,5 @@
1
1
  {
2
- "schemaVersion": "0.3.0",
2
+ "schemaVersion": "0.4.0",
3
3
  "kind": "memory-fact",
4
4
  "memoryId": "fact-inspection",
5
5
  "characterId": "character-mira",
@@ -1,5 +1,5 @@
1
1
  {
2
- "schemaVersion": "0.3.0",
2
+ "schemaVersion": "0.4.0",
3
3
  "kind": "memory-relationship",
4
4
  "memoryId": "relationship-visitor",
5
5
  "characterId": "character-mira",
@@ -1,5 +1,5 @@
1
1
  {
2
- "schemaVersion": "0.3.0",
2
+ "schemaVersion": "0.4.0",
3
3
  "kind": "working-context",
4
4
  "memoryId": "working-garden",
5
5
  "characterId": "character-mira",
@@ -1,5 +1,5 @@
1
1
  {
2
- "schemaVersion": "0.3.0",
2
+ "schemaVersion": "0.4.0",
3
3
  "kind": "plan-cancel-request",
4
4
  "binding": {
5
5
  "environmentId": "garden",
@@ -1,5 +1,5 @@
1
1
  {
2
- "schemaVersion": "0.3.0",
2
+ "schemaVersion": "0.4.0",
3
3
  "kind": "plan-cancel-result",
4
4
  "binding": {
5
5
  "environmentId": "garden",
@@ -1,5 +1,5 @@
1
1
  {
2
- "schemaVersion": "0.3.0",
2
+ "schemaVersion": "0.4.0",
3
3
  "kind": "plan-proposal",
4
4
  "binding": {
5
5
  "environmentId": "garden",
@@ -1,5 +1,5 @@
1
1
  {
2
- "schemaVersion": "0.3.0",
2
+ "schemaVersion": "0.4.0",
3
3
  "kind": "plan-decision",
4
4
  "binding": {
5
5
  "environmentId": "garden",
@@ -1,9 +1,9 @@
1
- {"schemaVersion":"0.3.0","kind":"intent-checkpoint","memoryId":"checkpoint-initial","characterId":"character-mira","recordedAt":"2026-01-01T08:00:00Z","scope":{"audience":"private","participantIds":["participant-mira"],"export":"allowed"},"provenance":{"sources":[{"sourceType":"authored","sourceId":"template-mira-v2"}]},"intents":[{"portableIntentId":"learn-herb-care","description":"Learn to care for herbs when an environment supports it.","desiredOutcome":"Understand appropriate care through permitted experiences.","status":"pending","sourceMemoryIds":[]}]}
2
- {"schemaVersion":"0.3.0","kind":"memory-event","memoryId":"event-inspection","characterId":"character-mira","recordedAt":"2026-01-01T08:03:00Z","scope":{"audience":"private","participantIds":["participant-mira"],"export":"allowed"},"provenance":{"sources":[{"sourceType":"host-report","sourceId":"outcome-inspect-1"}]},"eventType":"host-reported-outcome","summary":"The host reported completed inspection. This does not claim the rejected watering task happened.","participantIds":["participant-mira"],"environmentId":"garden","sessionId":"garden-session-1","worldTime":{"timelineId":"garden-day-1","tick":110},"recordedPayload":{"schemaVersion":"0.3.0","kind":"task-report","binding":{"environmentId":"garden","sessionId":"garden-session-1","characterId":"character-mira","embodimentId":"gardener-1"},"correlationId":"daily-cycle-1","planId":"plan-day-1","reportId":"outcome-inspect-1","taskId":"task-inspect","contextRevision":"context-102","recordedAt":"2026-01-01T08:01:00Z","status":"succeeded","summary":"The host reports inspection completed.","observedEffects":["Two herb beds were inspected by the existing host facility."]}}
3
- {"schemaVersion":"0.3.0","kind":"memory-event","memoryId":"event-visitor-question","characterId":"character-mira","recordedAt":"2026-01-01T08:03:00Z","scope":{"audience":"private","participantIds":["participant-mira"],"export":"allowed"},"provenance":{"sources":[{"sourceType":"conversation","sourceId":"visitor-hello"}]},"eventType":"received-conversation","summary":"A synthetic visitor asked Mira how the garden was doing.","participantIds":["participant-mira","participant-visitor"],"environmentId":"garden","sessionId":"garden-session-1","recordedPayload":{"messageId":"visitor-hello","participantId":"participant-visitor","recordedAt":"2026-01-01T08:02:00Z","modality":"speech","content":"How is the garden today?"}}
4
- {"schemaVersion":"0.3.0","kind":"memory-event","memoryId":"event-plan-proposal","characterId":"character-mira","recordedAt":"2026-01-01T08:03:00Z","scope":{"audience":"private","participantIds":["participant-mira"],"export":"allowed"},"provenance":{"sources":[{"sourceType":"plan-proposal","sourceId":"plan-day-1"}]},"eventType":"plan-proposed","summary":"A proposed plan included inspection and tending. A proposal is not accepted work or an observed effect.","participantIds":["participant-mira"],"environmentId":"garden","sessionId":"garden-session-1","recordedPayload":{"schemaVersion":"0.3.0","kind":"plan-proposal","binding":{"environmentId":"garden","sessionId":"garden-session-1","characterId":"character-mira","embodimentId":"gardener-1"},"correlationId":"daily-cycle-1","planId":"plan-day-1","requestId":"daily-request-1","contextReportId":"briefing-day-1","contextRevision":"context-100","environmentRevision":"garden-profile-1","createdAt":"2026-01-01T08:00:00Z","expiresAt":"2026-01-01T08:05:00Z","horizon":{"basis":"world-ticks","timelineId":"garden-day-1","fromTick":100,"toTick":600},"tasks":[{"taskId":"task-inspect","intentId":"inspect-area","arguments":{"area":{"type":"entity-ref","entityId":"herb-area"}},"priority":"normal","dependsOnTaskIds":[],"explanation":"Inspect before deciding whether further care is possible."},{"taskId":"task-tend","intentId":"tend-plot","arguments":{"plot":{"type":"entity-ref","entityId":"plot-1"},"amount":{"type":"quantity","value":100,"unit":"ml"}},"priority":"low","dependsOnTaskIds":["task-inspect"],"explanation":"A conditional care proposal; the host can reject it when water is unavailable."}]}}
5
- {"schemaVersion":"0.3.0","kind":"memory-event","memoryId":"event-plan-proposed","characterId":"character-mira","recordedAt":"2026-01-01T08:03:00Z","scope":{"audience":"private","participantIds":["participant-mira"],"export":"allowed"},"provenance":{"sources":[{"sourceType":"plan-decision","sourceId":"decision-day-1"}]},"eventType":"plan-decision-observed","summary":"Inspection was accepted and watering was rejected. Acceptance is not achievement.","participantIds":["participant-mira"],"environmentId":"garden","sessionId":"garden-session-1","recordedPayload":{"schemaVersion":"0.3.0","kind":"plan-decision","binding":{"environmentId":"garden","sessionId":"garden-session-1","characterId":"character-mira","embodimentId":"gardener-1"},"correlationId":"daily-cycle-1","planId":"plan-day-1","decisionId":"decision-day-1","requestId":"daily-request-1","contextRevision":"context-100","recordedAt":"2026-01-01T08:00:00Z","status":"partially-accepted","taskDecisions":[{"taskId":"task-inspect","decision":"accepted"},{"taskId":"task-tend","decision":"rejected","reason":"The existing host facility reports no available water."}]}}
6
- {"schemaVersion":"0.3.0","kind":"working-context","memoryId":"working-garden","characterId":"character-mira","recordedAt":"2026-01-01T08:03:00Z","scope":{"audience":"private","participantIds":["participant-mira"],"export":"allowed"},"provenance":{"sources":[{"sourceType":"memory","sourceId":"event-inspection"}]},"summary":"Inspection was reported complete; actual watering was not reported.","activeTopics":["Finding an authorized source of water."],"relevantMemoryIds":["event-inspection"],"expiresAt":"2026-01-02T08:00:00Z"}
7
- {"schemaVersion":"0.3.0","kind":"memory-episode","memoryId":"episode-garden","characterId":"character-mira","recordedAt":"2026-01-01T08:03:00Z","scope":{"audience":"private","participantIds":["participant-mira"],"export":"allowed"},"provenance":{"sources":[{"sourceType":"memory","sourceId":"event-inspection"}]},"summary":"Mira received the host report of an inspection.","sourceMemoryIds":["event-inspection"],"period":{"basis":"world-ticks","timelineId":"garden-day-1","fromTick":100,"toTick":110}}
8
- {"schemaVersion":"0.3.0","kind":"memory-fact","memoryId":"fact-inspection","characterId":"character-mira","recordedAt":"2026-01-01T08:03:00Z","scope":{"audience":"private","participantIds":["participant-mira"],"export":"allowed"},"provenance":{"sources":[{"sourceType":"memory","sourceId":"event-inspection"}]},"claim":"The host reported that two herb beds were inspected during this session.","sourceMemoryIds":["event-inspection"],"confidence":0.9}
9
- {"schemaVersion":"0.3.0","kind":"memory-relationship","memoryId":"relationship-visitor","characterId":"character-mira","recordedAt":"2026-01-01T08:03:00Z","scope":{"audience":"private","participantIds":["participant-mira"],"export":"allowed"},"provenance":{"sources":[{"sourceType":"conversation","sourceId":"visitor-hello"}]},"subjectParticipantId":"participant-mira","objectParticipantId":"participant-visitor","relation":"acquaintance","description":"Mira recalls a synthetic visitor who asked about the garden.","sourceMemoryIds":["event-visitor-question"]}
1
+ {"schemaVersion":"0.4.0","kind":"intent-checkpoint","memoryId":"checkpoint-initial","characterId":"character-mira","recordedAt":"2026-01-01T08:00:00Z","scope":{"audience":"private","participantIds":["participant-mira"],"export":"allowed"},"provenance":{"sources":[{"sourceType":"authored","sourceId":"template-mira-v2"}]},"intents":[{"portableIntentId":"learn-herb-care","description":"Learn to care for herbs when an environment supports it.","desiredOutcome":"Understand appropriate care through permitted experiences.","status":"pending","sourceMemoryIds":[]}]}
2
+ {"schemaVersion":"0.4.0","kind":"memory-event","memoryId":"event-inspection","characterId":"character-mira","recordedAt":"2026-01-01T08:03:00Z","scope":{"audience":"private","participantIds":["participant-mira"],"export":"allowed"},"provenance":{"sources":[{"sourceType":"host-report","sourceId":"outcome-inspect-1"}]},"eventType":"host-reported-outcome","summary":"The host reported completed inspection. This does not claim the rejected watering task happened.","participantIds":["participant-mira"],"environmentId":"garden","sessionId":"garden-session-1","worldTime":{"timelineId":"garden-day-1","tick":110},"recordedPayload":{"schemaVersion":"0.4.0","kind":"task-report","binding":{"environmentId":"garden","sessionId":"garden-session-1","characterId":"character-mira","embodimentId":"gardener-1"},"correlationId":"daily-cycle-1","planId":"plan-day-1","reportId":"outcome-inspect-1","taskId":"task-inspect","contextRevision":"context-102","recordedAt":"2026-01-01T08:01:00Z","status":"succeeded","summary":"The host reports inspection completed.","observedEffects":["Two herb beds were inspected by the existing host facility."]}}
3
+ {"schemaVersion":"0.4.0","kind":"memory-event","memoryId":"event-visitor-question","characterId":"character-mira","recordedAt":"2026-01-01T08:03:00Z","scope":{"audience":"private","participantIds":["participant-mira"],"export":"allowed"},"provenance":{"sources":[{"sourceType":"conversation","sourceId":"visitor-hello"}]},"eventType":"received-conversation","summary":"A synthetic visitor asked Mira how the garden was doing.","participantIds":["participant-mira","participant-visitor"],"environmentId":"garden","sessionId":"garden-session-1","recordedPayload":{"messageId":"visitor-hello","participantId":"participant-visitor","recordedAt":"2026-01-01T08:02:00Z","modality":"speech","content":"How is the garden today?"}}
4
+ {"schemaVersion":"0.4.0","kind":"memory-event","memoryId":"event-plan-proposal","characterId":"character-mira","recordedAt":"2026-01-01T08:03:00Z","scope":{"audience":"private","participantIds":["participant-mira"],"export":"allowed"},"provenance":{"sources":[{"sourceType":"plan-proposal","sourceId":"plan-day-1"}]},"eventType":"plan-proposed","summary":"A proposed plan included inspection and tending. A proposal is not accepted work or an observed effect.","participantIds":["participant-mira"],"environmentId":"garden","sessionId":"garden-session-1","recordedPayload":{"schemaVersion":"0.4.0","kind":"plan-proposal","binding":{"environmentId":"garden","sessionId":"garden-session-1","characterId":"character-mira","embodimentId":"gardener-1"},"correlationId":"daily-cycle-1","planId":"plan-day-1","requestId":"daily-request-1","contextReportId":"briefing-day-1","contextRevision":"context-100","environmentRevision":"garden-profile-1","createdAt":"2026-01-01T08:00:00Z","expiresAt":"2026-01-01T08:05:00Z","horizon":{"basis":"world-ticks","timelineId":"garden-day-1","fromTick":100,"toTick":600},"tasks":[{"taskId":"task-inspect","intentId":"inspect-area","arguments":{"area":{"type":"entity-ref","entityId":"herb-area"}},"priority":"normal","dependsOnTaskIds":[],"explanation":"Inspect before deciding whether further care is possible."},{"taskId":"task-tend","intentId":"tend-plot","arguments":{"plot":{"type":"entity-ref","entityId":"plot-1"},"amount":{"type":"quantity","value":100,"unit":"ml"}},"priority":"low","dependsOnTaskIds":["task-inspect"],"explanation":"A conditional care proposal; the host can reject it when water is unavailable."}]}}
5
+ {"schemaVersion":"0.4.0","kind":"memory-event","memoryId":"event-plan-proposed","characterId":"character-mira","recordedAt":"2026-01-01T08:03:00Z","scope":{"audience":"private","participantIds":["participant-mira"],"export":"allowed"},"provenance":{"sources":[{"sourceType":"plan-decision","sourceId":"decision-day-1"}]},"eventType":"plan-decision-observed","summary":"Inspection was accepted and watering was rejected. Acceptance is not achievement.","participantIds":["participant-mira"],"environmentId":"garden","sessionId":"garden-session-1","recordedPayload":{"schemaVersion":"0.4.0","kind":"plan-decision","binding":{"environmentId":"garden","sessionId":"garden-session-1","characterId":"character-mira","embodimentId":"gardener-1"},"correlationId":"daily-cycle-1","planId":"plan-day-1","decisionId":"decision-day-1","requestId":"daily-request-1","contextRevision":"context-100","recordedAt":"2026-01-01T08:00:00Z","status":"partially-accepted","taskDecisions":[{"taskId":"task-inspect","decision":"accepted"},{"taskId":"task-tend","decision":"rejected","reason":"The existing host facility reports no available water."}]}}
6
+ {"schemaVersion":"0.4.0","kind":"working-context","memoryId":"working-garden","characterId":"character-mira","recordedAt":"2026-01-01T08:03:00Z","scope":{"audience":"private","participantIds":["participant-mira"],"export":"allowed"},"provenance":{"sources":[{"sourceType":"memory","sourceId":"event-inspection"}]},"summary":"Inspection was reported complete; actual watering was not reported.","activeTopics":["Finding an authorized source of water."],"relevantMemoryIds":["event-inspection"],"expiresAt":"2026-01-02T08:00:00Z"}
7
+ {"schemaVersion":"0.4.0","kind":"memory-episode","memoryId":"episode-garden","characterId":"character-mira","recordedAt":"2026-01-01T08:03:00Z","scope":{"audience":"private","participantIds":["participant-mira"],"export":"allowed"},"provenance":{"sources":[{"sourceType":"memory","sourceId":"event-inspection"}]},"summary":"Mira received the host report of an inspection.","sourceMemoryIds":["event-inspection"],"period":{"basis":"world-ticks","timelineId":"garden-day-1","fromTick":100,"toTick":110}}
8
+ {"schemaVersion":"0.4.0","kind":"memory-fact","memoryId":"fact-inspection","characterId":"character-mira","recordedAt":"2026-01-01T08:03:00Z","scope":{"audience":"private","participantIds":["participant-mira"],"export":"allowed"},"provenance":{"sources":[{"sourceType":"memory","sourceId":"event-inspection"}]},"claim":"The host reported that two herb beds were inspected during this session.","sourceMemoryIds":["event-inspection"],"confidence":0.9}
9
+ {"schemaVersion":"0.4.0","kind":"memory-relationship","memoryId":"relationship-visitor","characterId":"character-mira","recordedAt":"2026-01-01T08:03:00Z","scope":{"audience":"private","participantIds":["participant-mira"],"export":"allowed"},"provenance":{"sources":[{"sourceType":"conversation","sourceId":"visitor-hello"}]},"subjectParticipantId":"participant-mira","objectParticipantId":"participant-visitor","relation":"acquaintance","description":"Mira recalls a synthetic visitor who asked about the garden.","sourceMemoryIds":["event-visitor-question"]}
@@ -1,5 +1,5 @@
1
1
  {
2
- "schemaVersion": "0.3.0",
2
+ "schemaVersion": "0.4.0",
3
3
  "kind": "task-report",
4
4
  "binding": {
5
5
  "environmentId": "garden",
@@ -1,5 +1,5 @@
1
1
  {
2
- "schemaVersion": "0.3.0",
2
+ "schemaVersion": "0.4.0",
3
3
  "kind": "task-report",
4
4
  "binding": {
5
5
  "environmentId": "garden",
@@ -1,5 +1,5 @@
1
1
  {
2
- "schemaVersion": "0.3.0",
2
+ "schemaVersion": "0.4.0",
3
3
  "kind": "provider-capabilities",
4
4
  "providerId": "synthetic-provider",
5
5
  "modelId": "fixture-model",
@@ -1,5 +1,5 @@
1
1
  {
2
- "schemaVersion": "0.3.0",
2
+ "schemaVersion": "0.4.0",
3
3
  "kind": "model-error",
4
4
  "requestId": "request-1",
5
5
  "providerId": "synthetic-provider",
@@ -1,5 +1,5 @@
1
1
  {
2
- "schemaVersion": "0.3.0",
2
+ "schemaVersion": "0.4.0",
3
3
  "kind": "model-request",
4
4
  "requestId": "request-1",
5
5
  "providerId": "synthetic-provider",