@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
@@ -0,0 +1,165 @@
1
+ import type { BehaviorOperatorPolicy, BehaviorPermissions, BehaviorGoal } from "./behavior-types.js";
2
+ import type { AddressedEvent, ParticipantStore, SessionAccess } from "./participants.js";
3
+ export interface PlanningActor {
4
+ participantId: string;
5
+ roleId: string;
6
+ capabilities: string[];
7
+ }
8
+ export interface PlanningIntent {
9
+ intentId: string;
10
+ roleIds: string[];
11
+ requiredCapabilities: string[];
12
+ }
13
+ export interface GroupPlanningSpec {
14
+ sessionId: string;
15
+ sessionRevision: number;
16
+ groupId?: string;
17
+ actors: PlanningActor[];
18
+ intents: PlanningIntent[];
19
+ objective: string;
20
+ channelId: string;
21
+ sharedEventIds: string[];
22
+ goalId?: string;
23
+ }
24
+ export interface GroupAssignment {
25
+ assignmentId: string;
26
+ actorId: string;
27
+ intentId: string;
28
+ dependsOn: string[];
29
+ }
30
+ /** Proposal only. No speech, mechanics or successful effects may be returned here. */
31
+ export interface GroupPlan {
32
+ objective: string;
33
+ assignments: GroupAssignment[];
34
+ }
35
+ export interface PlanningClock {
36
+ wallTimeMs: number;
37
+ worldTicks: Record<string, number>;
38
+ }
39
+ export interface PlanSchedule {
40
+ scheduleId: string;
41
+ revision: number;
42
+ state: "running" | "paused" | "cancelled";
43
+ spec: GroupPlanningSpec;
44
+ clock: "wall" | "world";
45
+ interval: number;
46
+ nextDue: number;
47
+ maxRuns: number;
48
+ }
49
+ export type PlanningTrigger = {
50
+ kind: "due";
51
+ } | {
52
+ kind: "manual";
53
+ triggerId: string;
54
+ } | {
55
+ kind: "event";
56
+ eventId: string;
57
+ };
58
+ export interface PlanningClaim {
59
+ claimId: string;
60
+ fence: number;
61
+ behaviorRevision?: number;
62
+ workerId: string;
63
+ scheduleId: string;
64
+ scheduleRevision: number;
65
+ sessionRevision: number;
66
+ leaseUntil: number;
67
+ triggerKey: string;
68
+ actorIds: string[];
69
+ groupKey: string;
70
+ status: "active" | "proposed" | "unknown" | "resolved" | "failed" | "superseded";
71
+ plan?: GroupPlan;
72
+ adoptedIds?: string[];
73
+ }
74
+ export interface PlanningInput {
75
+ claim: PlanningClaim;
76
+ spec: GroupPlanningSpec;
77
+ sharedEvents: AddressedEvent[];
78
+ behavior?: {
79
+ configRevision: number;
80
+ policy: BehaviorPermissions;
81
+ goals: BehaviorGoal[];
82
+ };
83
+ }
84
+ export interface PlanHostReport {
85
+ reportId: string;
86
+ claimId: string;
87
+ status: "adopted" | "rejected" | "completed" | "failed" | "unknown";
88
+ assignmentIds: string[];
89
+ summary: string;
90
+ }
91
+ export interface PlanningState {
92
+ format: "ifsoul-group-scheduler/0.4.0";
93
+ schedules: PlanSchedule[];
94
+ claims: PlanningClaim[];
95
+ reports: PlanHostReport[];
96
+ cursors: {
97
+ scheduleId: string;
98
+ lastClock?: number;
99
+ lastStarted?: number;
100
+ runs: number;
101
+ triggerKeys: string[];
102
+ }[];
103
+ lastWallTime: number;
104
+ calls: number;
105
+ npcCalls: Record<string, number>;
106
+ groupCalls: Record<string, number>;
107
+ }
108
+ export interface PlanningBudgets {
109
+ principalCalls: number;
110
+ npcCalls: number;
111
+ groupCalls: number;
112
+ concurrentPlans: number;
113
+ schedules: number;
114
+ claims: number;
115
+ reports: number;
116
+ runsPerSchedule: number;
117
+ actorsPerPlan: number;
118
+ assignmentsPerPlan: number;
119
+ assignmentsPerActor: number;
120
+ sharedEvents: number;
121
+ contextBytes: number;
122
+ }
123
+ export declare const DEFAULT_PLANNING_LIMITS: Readonly<PlanningBudgets>;
124
+ export declare function resolvePlanningLimits(requested?: Partial<PlanningBudgets>, ceilings?: Partial<PlanningBudgets>): import("../../protocol/src/resource-policy.js").BudgetReport<{
125
+ principalCalls: number;
126
+ npcCalls: number;
127
+ groupCalls: number;
128
+ concurrentPlans: number;
129
+ schedules: number;
130
+ claims: number;
131
+ reports: number;
132
+ runsPerSchedule: number;
133
+ actorsPerPlan: number;
134
+ assignmentsPerPlan: number;
135
+ assignmentsPerActor: number;
136
+ sharedEvents: number;
137
+ contextBytes: number;
138
+ }>;
139
+ /** Reject the whole proposal. One invalid assignment never grants another action. */
140
+ export declare function validGroupPlan(value: unknown, spec: GroupPlanningSpec, limits?: PlanningBudgets): value is GroupPlan;
141
+ export declare function createGroupSchedulerRuntime(store: ParticipantStore, requestedBudgets?: Partial<PlanningBudgets>, ceilings?: Partial<PlanningBudgets>, behaviorOperator?: BehaviorOperatorPolicy): {
142
+ configure(access: SessionAccess, expectedRevision: number, config: PlanSchedule): PlanSchedule;
143
+ control(access: SessionAccess, scheduleId: string, expectedRevision: number, action: "pause" | "resume" | "cancel"): PlanSchedule;
144
+ list(access: SessionAccess): PlanSchedule[];
145
+ claim(access: SessionAccess, scheduleId: string, trigger: PlanningTrigger, clock: PlanningClock, workerId: string, leaseMs: number, hostAvailable: boolean): PlanningInput | {
146
+ status: "not-due" | "paused" | "host-unavailable" | "busy" | "budget" | "replay" | "unknown" | "policy-denied";
147
+ };
148
+ complete(access: SessionAccess, ticket: PlanningClaim, output: unknown, clock: PlanningClock): PlanningClaim;
149
+ fail(access: SessionAccess, ticket: PlanningClaim, uncertain: boolean): PlanningClaim;
150
+ report(access: SessionAccess, report: PlanHostReport): PlanningClaim;
151
+ reconcile(access: SessionAccess, claimId: string): PlanningClaim;
152
+ inspect(access: SessionAccess, scheduleId: string): {
153
+ config: PlanSchedule;
154
+ cursor: {
155
+ scheduleId: string;
156
+ lastClock?: number;
157
+ lastStarted?: number;
158
+ runs: number;
159
+ triggerKeys: string[];
160
+ };
161
+ claims: PlanningClaim[];
162
+ reports: PlanHostReport[];
163
+ calls: number;
164
+ };
165
+ };