pi-roundtable 0.34.0 → 0.35.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 (257) hide show
  1. package/CHANGELOG.md +7 -0
  2. package/package.json +1 -2
  3. package/src/cli/checks/configuration.ts +2 -2
  4. package/src/cli/checks/database.ts +2 -2
  5. package/src/cli/checks/identity.ts +1 -1
  6. package/src/cli/checks/model.ts +1 -1
  7. package/src/cli/cli.ts +2 -2
  8. package/src/cli/principal.ts +1 -1
  9. package/src/cli/project.ts +2 -2
  10. package/src/cli/runtime.ts +3 -3
  11. package/src/cli/start.ts +1 -1
  12. package/src/core/agents/agent-claim.ts +4 -4
  13. package/src/core/agents/agent-dashboard.ts +3 -3
  14. package/src/core/agents/agent-messages.ts +2 -2
  15. package/src/core/agents/agent-outbox.ts +1 -1
  16. package/src/core/agents/agent-ports.ts +1 -1
  17. package/src/core/agents/agent-prompt.ts +4 -4
  18. package/src/core/agents/agent-rules.ts +1 -1
  19. package/src/core/agents/agent-schema.ts +4 -1
  20. package/src/core/agents/agent-settings.ts +2 -2
  21. package/src/core/agents/agent-store.ts +9 -9
  22. package/src/core/agents/agent-team-fixture.ts +4 -3
  23. package/src/core/agents/agent-team.ts +12 -16
  24. package/src/core/agents/agent-tools.ts +15 -15
  25. package/src/core/agents/avatar-refresh.ts +1 -1
  26. package/src/core/agents/avatar-studio.ts +2 -2
  27. package/src/core/agents/group-round.ts +2 -2
  28. package/src/core/agents/group-turns.ts +1 -1
  29. package/src/core/agents/helper-create.ts +24 -40
  30. package/src/core/agents/helper-modes.ts +2 -2
  31. package/src/core/agents/helper-preset-ops.ts +207 -0
  32. package/src/core/agents/helper-preset-tools.ts +109 -0
  33. package/src/core/agents/helper-presets.ts +128 -0
  34. package/src/core/agents/helper-test-kit.ts +1 -1
  35. package/src/core/agents/helper-tools.ts +42 -22
  36. package/src/core/agents/helper-work.ts +1 -1
  37. package/src/core/agents/message-target.ts +1 -1
  38. package/src/core/agents/routes.ts +1 -1
  39. package/src/core/agents/team-approval.ts +2 -2
  40. package/src/core/agents/team-editing.ts +2 -2
  41. package/src/core/agents/team-keys.ts +1 -1
  42. package/src/core/agents/team-layout.ts +1 -1
  43. package/src/core/agents/team-options.ts +4 -4
  44. package/src/core/agents/team-selection.ts +1 -1
  45. package/src/core/agents/team-status.ts +1 -1
  46. package/src/core/agents/team-text.ts +3 -3
  47. package/src/core/agents/team-turn-types.ts +7 -7
  48. package/src/core/agents/team-turns.ts +3 -3
  49. package/src/core/attachments/attachment-fetcher.ts +1 -1
  50. package/src/core/attachments/attachment-port.ts +2 -2
  51. package/src/core/attachments/attachment-retention.ts +3 -3
  52. package/src/core/attachments/attachment-store.ts +2 -2
  53. package/src/core/attachments/model-images.ts +1 -1
  54. package/src/core/attachments/turn-attachments.ts +1 -1
  55. package/src/core/builtin/agent-server.ts +17 -10
  56. package/src/core/builtin/channel-context.ts +2 -2
  57. package/src/core/builtin/discord-admin.ts +2 -2
  58. package/src/core/builtin/discord.ts +4 -3
  59. package/src/core/{identity/identity-plugin.ts → builtin/identity.ts} +15 -12
  60. package/src/core/builtin/modules.ts +12 -12
  61. package/src/core/builtin/prompts.ts +3 -3
  62. package/src/core/builtin/seeds.ts +1 -1
  63. package/src/core/builtin/session-tool.ts +1 -1
  64. package/src/core/builtin/skills.ts +3 -3
  65. package/src/core/builtin/stores.ts +10 -5
  66. package/src/core/builtin/threads.ts +2 -2
  67. package/src/core/builtin/worker-sessions.ts +3 -3
  68. package/src/core/config/access.ts +3 -3
  69. package/src/core/config/adapters.ts +1 -1
  70. package/src/core/config/config-schema.ts +9 -3
  71. package/src/core/config/config.ts +9 -10
  72. package/src/core/config/ops.ts +1 -1
  73. package/src/core/config/peer-bots.ts +74 -0
  74. package/src/core/config/routing.ts +1 -1
  75. package/src/core/contract/attachments.ts +1 -1
  76. package/src/core/contract/channels.ts +3 -5
  77. package/src/core/contract/runtime.ts +6 -6
  78. package/src/core/contract/surface.ts +3 -3
  79. package/src/core/conversations/conversation-registry.ts +1 -1
  80. package/src/core/conversations/conversation-retention.ts +2 -2
  81. package/src/core/conversations/conversation-store.ts +1 -1
  82. package/src/core/conversations/conversations-plugin.ts +2 -2
  83. package/src/core/db/migrations.ts +2 -2
  84. package/src/core/discord/agent-commands.ts +2 -2
  85. package/src/core/discord/agent-discord.ts +1 -1
  86. package/src/core/discord/agent-panel.ts +1 -1
  87. package/src/core/discord/card-audience.ts +1 -1
  88. package/src/core/discord/card-copies.ts +1 -1
  89. package/src/core/discord/channel-context.ts +1 -1
  90. package/src/core/discord/channel-executor.ts +1 -1
  91. package/src/core/discord/channel-operations.ts +1 -1
  92. package/src/core/discord/command-collection.ts +1 -1
  93. package/src/core/discord/compose-commands.ts +1 -1
  94. package/src/core/discord/context-images.ts +1 -1
  95. package/src/core/discord/discord-owners.ts +2 -2
  96. package/src/core/discord/discord-surface.ts +2 -2
  97. package/src/core/discord/member-events.ts +2 -2
  98. package/src/core/discord/message-changes.ts +1 -1
  99. package/src/core/discord/owner-cards.ts +1 -1
  100. package/src/core/discord/owner-command.ts +1 -1
  101. package/src/core/discord/schedule-commands.ts +1 -1
  102. package/src/core/domain/conversation.ts +5 -3
  103. package/src/core/{models.ts → domain/models.ts} +1 -1
  104. package/src/core/domain/ports.ts +2 -2
  105. package/src/core/{sessions.ts → domain/sessions.ts} +6 -6
  106. package/src/core/{define-roundtable.ts → host/define-roundtable.ts} +29 -29
  107. package/src/core/{drain.ts → host/drain.ts} +2 -7
  108. package/src/core/{events.ts → host/events.ts} +2 -2
  109. package/src/core/{host-background.ts → host/host-background.ts} +3 -3
  110. package/src/core/{host-registration.ts → host/host-registration.ts} +30 -30
  111. package/src/core/{host.ts → host/host.ts} +19 -15
  112. package/src/core/http/listeners.ts +2 -2
  113. package/src/core/http/websocket.ts +1 -1
  114. package/src/core/identity/access-policy.ts +8 -8
  115. package/src/core/identity/actor-facts.ts +1 -1
  116. package/src/core/identity/caching-principal-store.ts +1 -1
  117. package/src/core/identity/config-owner.ts +1 -1
  118. package/src/core/identity/contact.ts +2 -2
  119. package/src/core/identity/identity-links.ts +2 -2
  120. package/src/core/identity/identity-port.ts +2 -2
  121. package/src/core/identity/identity-schema.ts +1 -1
  122. package/src/core/identity/identity-service.ts +3 -3
  123. package/src/core/identity/identity-view.ts +1 -1
  124. package/src/core/{identity.ts → identity/owner-identity.ts} +1 -1
  125. package/src/core/identity/person-profiles.ts +1 -1
  126. package/src/core/identity/plugin-identities.ts +2 -2
  127. package/src/core/identity/principal-reads.ts +1 -1
  128. package/src/core/identity/principal-store.ts +1 -1
  129. package/src/core/identity/principal-types.ts +1 -1
  130. package/src/core/identity/seen-throttle.ts +1 -1
  131. package/src/core/{speakers.ts → identity/speakers.ts} +3 -6
  132. package/src/core/images/codex-images-plugin.ts +3 -3
  133. package/src/core/interactions/prompts.ts +1 -1
  134. package/src/core/judging/confirmation-judge.ts +1 -1
  135. package/src/core/judging/effort-judge.ts +2 -2
  136. package/src/core/judging/model-judge.ts +1 -1
  137. package/src/core/modes/conversation-modes.ts +4 -4
  138. package/src/core/modes/mode-inheritance.ts +1 -1
  139. package/src/core/modes/modes-plugin.ts +2 -2
  140. package/src/core/modules/background/background-turns.ts +4 -4
  141. package/src/core/modules/delegation/delegate.ts +3 -3
  142. package/src/core/modules/delegation/delegator.ts +4 -4
  143. package/src/core/modules/delegation/web-research-worker.ts +2 -2
  144. package/src/core/modules/delegation/worker-session.ts +5 -2
  145. package/src/core/modules/discord-admin/discord-admin.ts +1 -1
  146. package/src/core/modules/host-shell/shell-policy.ts +1 -1
  147. package/src/core/modules/memory/owner-memory-store.ts +1 -1
  148. package/src/core/modules/memory/owner-memory.ts +6 -3
  149. package/src/core/modules/notify/notify.ts +4 -1
  150. package/src/core/modules/notify/session-notify.ts +3 -3
  151. package/src/core/modules/prompts/prompt-documents.ts +1 -1
  152. package/src/core/modules/schedules/precheck-tools.ts +4 -4
  153. package/src/core/modules/schedules/prechecks.ts +2 -2
  154. package/src/core/modules/schedules/recurrence.ts +6 -1
  155. package/src/core/modules/schedules/schedule-prechecks.ts +4 -4
  156. package/src/core/modules/schedules/schedule-store.ts +2 -2
  157. package/src/core/modules/schedules/schedule-tools.ts +4 -4
  158. package/src/core/modules/schedules/scheduled-turn-text.ts +1 -1
  159. package/src/core/modules/schedules/scheduler.ts +3 -3
  160. package/src/core/modules/schedules/schedules.ts +5 -5
  161. package/src/core/modules/skills/missing-warning.ts +1 -1
  162. package/src/core/modules/skills/package-skills.ts +1 -1
  163. package/src/core/modules/skills/skill-registry.ts +2 -2
  164. package/src/core/modules/skills/skill-rules.ts +1 -1
  165. package/src/core/modules/skills/skill-tools.ts +1 -1
  166. package/src/core/ops/error-reporter.ts +2 -2
  167. package/src/core/ops/ops-alerts.ts +1 -1
  168. package/src/core/{define.ts → plugin-api/define.ts} +18 -20
  169. package/src/core/{event-types.ts → plugin-api/event-types.ts} +1 -1
  170. package/src/core/{holds.ts → plugin-api/holds.ts} +3 -3
  171. package/src/core/{plugin-removed.ts → plugin-api/plugin-removed.ts} +2 -2
  172. package/src/core/{plugin.ts → plugin-api/plugin.ts} +26 -26
  173. package/src/core/{services.ts → plugin-api/services.ts} +28 -28
  174. package/src/core/{tool-turn.ts → plugin-api/tool-turn.ts} +12 -5
  175. package/src/core/presence/delivery-router.ts +1 -1
  176. package/src/core/presence/direct-channels.ts +1 -1
  177. package/src/core/registry/chat-commands.ts +1 -1
  178. package/src/core/registry/contributions.ts +11 -11
  179. package/src/core/registry/providers.ts +2 -2
  180. package/src/core/registry/services.ts +2 -2
  181. package/src/core/registry/surface-service.ts +1 -1
  182. package/src/core/routing/actor-of.ts +1 -1
  183. package/src/core/routing/channel-queue.ts +2 -2
  184. package/src/core/routing/channel-router.ts +3 -3
  185. package/src/core/routing/claim-events.ts +2 -2
  186. package/src/core/routing/conversation-turns.ts +10 -6
  187. package/src/core/routing/forward-join.ts +1 -1
  188. package/src/core/routing/message-observers.ts +1 -1
  189. package/src/core/routing/message-text.ts +1 -1
  190. package/src/core/routing/peer-bots.ts +6 -74
  191. package/src/core/routing/queued-messages.ts +2 -2
  192. package/src/core/routing/settle-turn.ts +1 -1
  193. package/src/core/routing/surface-port.ts +3 -3
  194. package/src/core/runtime/ask-questions.ts +1 -1
  195. package/src/core/runtime/bridge-guard.ts +5 -5
  196. package/src/core/runtime/chat-only.ts +1 -1
  197. package/src/core/runtime/conversation-sessions.ts +2 -2
  198. package/src/core/runtime/extensions/agent-prompt.ts +1 -1
  199. package/src/core/runtime/extensions/ask-user-text.ts +5 -1
  200. package/src/core/runtime/extensions/ask-user.ts +4 -1
  201. package/src/core/runtime/extensions/card-ask.ts +1 -1
  202. package/src/core/runtime/extensions/confirmation-fixture.ts +1 -1
  203. package/src/core/runtime/extensions/confirmation-gate-extension.ts +1 -1
  204. package/src/core/runtime/extensions/confirmation-gate.ts +5 -5
  205. package/src/core/runtime/extensions/gate-refusals.ts +5 -2
  206. package/src/core/runtime/extensions/held-calls.ts +2 -2
  207. package/src/core/runtime/extensions/hold-describer.ts +3 -3
  208. package/src/core/runtime/extensions/hold-lookups.ts +4 -4
  209. package/src/core/runtime/extensions/persona-prompt.ts +1 -1
  210. package/src/core/runtime/extensions/prompt-read.ts +1 -1
  211. package/src/core/runtime/extensions/yolo.ts +1 -1
  212. package/src/core/runtime/interim-text.ts +1 -1
  213. package/src/core/runtime/pi-agent-runtime.ts +4 -4
  214. package/src/core/runtime/running-turn.ts +1 -1
  215. package/src/core/runtime/runtime-plugin.ts +13 -8
  216. package/src/core/runtime/runtime-types.ts +14 -10
  217. package/src/core/runtime/session-conversation.ts +3 -3
  218. package/src/core/runtime/session-factory.ts +5 -5
  219. package/src/core/runtime/thinking-level.ts +2 -2
  220. package/src/core/{tool-tiers.ts → runtime/tool-tiers.ts} +5 -5
  221. package/src/core/runtime/turn-answer.ts +1 -1
  222. package/src/core/runtime/turn-budget.ts +1 -1
  223. package/src/core/runtime/turn-limits.ts +1 -1
  224. package/src/core/runtime/turn-tools.ts +2 -2
  225. package/src/core/runtime/worker-task.ts +1 -1
  226. package/src/core/shared/attach-file-tool.ts +1 -1
  227. package/src/core/shared/delegate-tool.ts +1 -1
  228. package/src/core/shared/generate-image-tool.ts +1 -1
  229. package/src/core/{modules/background → shared}/personal-target.ts +2 -2
  230. package/src/core/{reply-files.ts → shared/reply-files.ts} +1 -1
  231. package/src/core/testing/eager-catalog.ts +1 -1
  232. package/src/core/testing/locale.ts +1 -1
  233. package/src/core/testing/map-identity.ts +5 -1
  234. package/src/core/testing/module-sessions.ts +3 -3
  235. package/src/core/testing/modules.ts +17 -13
  236. package/src/core/testing/owner.ts +2 -2
  237. package/src/core/testing/recording-logger.ts +1 -1
  238. package/src/core/testing/run-tool.ts +2 -2
  239. package/src/core/testing/surface-contract-support.ts +1 -1
  240. package/src/core/testing/surface-contract.ts +2 -2
  241. package/src/core/testing/test-host.ts +12 -12
  242. package/src/core/testing/thread-host.ts +1 -1
  243. package/src/core/testing/tool-set.ts +3 -3
  244. package/src/core/threads/dispatch-threads.ts +1 -1
  245. package/src/core/tool-set.snapshot.json +12 -0
  246. package/src/index.ts +76 -72
  247. package/src/kit/domain.ts +9 -9
  248. package/src/kit/holds.ts +4 -1
  249. package/src/kit/jev-judge.ts +1 -1
  250. package/src/kit/jev.ts +1 -1
  251. package/src/kit/presentation.ts +1 -1
  252. package/src/kit/support.ts +3 -3
  253. package/src/testing.ts +21 -20
  254. /package/src/core/{errors.ts → kernel/errors.ts} +0 -0
  255. /package/src/core/{freeze.ts → kernel/freeze.ts} +0 -0
  256. /package/src/core/{log.ts → kernel/log.ts} +0 -0
  257. /package/src/core/{time.ts → kernel/time.ts} +0 -0
@@ -1,4 +1,3 @@
1
- import type { Tier } from "../speakers.ts";
2
1
  import type {
3
2
  IdentityRef,
4
3
  LinkSource,
@@ -7,6 +6,7 @@ import type {
7
6
  Pronouns,
8
7
  RoleSource,
9
8
  } from "./principal-store.ts";
9
+ import type { Tier } from "./speakers.ts";
10
10
 
11
11
  /** How long a read of the store is reused; a change another process makes is seen after it. */
12
12
  export const CACHE_MS = 30_000;
@@ -1,5 +1,5 @@
1
1
  import { ConfigError } from "../domain/errors.ts";
2
- import type { Logger } from "../log.ts";
2
+ import type { Logger } from "../kernel/log.ts";
3
3
  import type { AccessOwner } from "./access-policy.ts";
4
4
  import { identityOf } from "./actor-facts.ts";
5
5
  import type { DeclaredIdentity } from "./plugin-identities.ts";
@@ -1,6 +1,6 @@
1
- import type { ChannelKey } from "../sessions.ts";
2
- import type { Speaker } from "../speakers.ts";
1
+ import type { ChannelKey } from "../domain/sessions.ts";
3
2
  import type { ActorFacts } from "./actor-facts.ts";
3
+ import type { Speaker } from "./speakers.ts";
4
4
 
5
5
  /**
6
6
  * A person a surface reports, assessed before any claim takes their message: who they would be,
@@ -1,6 +1,6 @@
1
1
  import { IdentityError } from "../domain/errors.ts";
2
- import { freeze } from "../freeze.ts";
3
- import type { Logger } from "../log.ts";
2
+ import { freeze } from "../kernel/freeze.ts";
3
+ import type { Logger } from "../kernel/log.ts";
4
4
  import type { SelfLinkRules } from "./access-policy.ts";
5
5
  import { identityOf, parseIdentity } from "./actor-facts.ts";
6
6
  import {
@@ -1,7 +1,7 @@
1
- import type { ChannelKey } from "../sessions.ts";
2
- import type { Speaker, Tier } from "../speakers.ts";
1
+ import type { ChannelKey } from "../domain/sessions.ts";
3
2
  import type { ActorFacts } from "./actor-facts.ts";
4
3
  import type { IdentityLink, Principal, RoleGrant } from "./principal-store.ts";
4
+ import type { Speaker, Tier } from "./speakers.ts";
5
5
 
6
6
  /**
7
7
  * Who the host serves: its principals, their identities, and their roles, read-only. Provided as
@@ -1,6 +1,5 @@
1
1
  import type { SQL } from "bun";
2
2
  import type { Migration } from "../db/migrations.ts";
3
- import { type Tier, tierAtLeast } from "../speakers.ts";
4
3
  import type { AccessRules, AccessTier } from "./access-policy.ts";
5
4
  import { parseIdentity } from "./actor-facts.ts";
6
5
  import {
@@ -15,6 +14,7 @@ import {
15
14
  PRINCIPAL_TABLES,
16
15
  PRINCIPALS_CLAIMABLE,
17
16
  } from "./principal-tables.ts";
17
+ import { type Tier, tierAtLeast } from "./speakers.ts";
18
18
 
19
19
  /** Where the backfill finds the ids of people 0.8 stored: the configured owners, then four tables. */
20
20
  export type BackfillSource =
@@ -1,7 +1,6 @@
1
1
  import { ConfigError, IdentityError } from "../domain/errors.ts";
2
- import type { Logger } from "../log.ts";
3
- import type { ChannelKey } from "../sessions.ts";
4
- import { type Speaker, type Tier, tierAtLeast } from "../speakers.ts";
2
+ import type { ChannelKey } from "../domain/sessions.ts";
3
+ import type { Logger } from "../kernel/log.ts";
5
4
  import {
6
5
  type AccessRules,
7
6
  checkAccessRules,
@@ -34,6 +33,7 @@ import {
34
33
  SYSTEM_PRINCIPAL,
35
34
  } from "./principal-store.ts";
36
35
  import { SeenThrottle } from "./seen-throttle.ts";
36
+ import { type Speaker, type Tier, tierAtLeast } from "./speakers.ts";
37
37
  import { isPrincipalId, newPrincipalId } from "./ulid.ts";
38
38
 
39
39
  export type { IdentityService } from "./identity-port.ts";
@@ -1,4 +1,4 @@
1
- import { freeze } from "../freeze.ts";
1
+ import { freeze } from "../kernel/freeze.ts";
2
2
  import type { ContactAssessor } from "./contact.ts";
3
3
  import type { IdentityService } from "./identity-service.ts";
4
4
 
@@ -1,4 +1,4 @@
1
- import type { Pronouns } from "./config/config.ts";
1
+ import type { Pronouns } from "../config/config.ts";
2
2
 
3
3
  /** Who the agents work for, as prompts and tool descriptions name them. */
4
4
  export interface OwnerIdentity {
@@ -1,6 +1,6 @@
1
1
  import type { SQL } from "bun";
2
2
  import { IdentityError } from "../domain/errors.ts";
3
- import type { Logger } from "../log.ts";
3
+ import type { Logger } from "../kernel/log.ts";
4
4
  import { ProfileChoices } from "./profile-choices.ts";
5
5
  import { cleanName, ExpiringMap } from "./profile-memory.ts";
6
6
  import {
@@ -1,6 +1,6 @@
1
1
  import { ConfigError } from "../domain/errors.ts";
2
- import type { Logger } from "../log.ts";
3
- import type { PluginIdentity, RoundtablePlugin } from "../plugin.ts";
2
+ import type { Logger } from "../kernel/log.ts";
3
+ import type { PluginIdentity, RoundtablePlugin } from "../plugin-api/plugin.ts";
4
4
  import { identityOf, parseIdentity } from "./actor-facts.ts";
5
5
  import { type PrincipalStore, SYSTEM_PRINCIPAL } from "./principal-store.ts";
6
6
 
@@ -1,6 +1,6 @@
1
- import { type Speaker, type Tier, tierAtLeast } from "../speakers.ts";
2
1
  import { type ActorFacts, identityOf } from "./actor-facts.ts";
3
2
  import type { Principal, PrincipalRecord } from "./principal-store.ts";
3
+ import { type Speaker, type Tier, tierAtLeast } from "./speakers.ts";
4
4
 
5
5
  /** The speaker of a contact: the id the surface knows them by, their 0.8 id where they have one. */
6
6
  export const speakerOf = (
@@ -1,6 +1,5 @@
1
1
  import type { SQL } from "bun";
2
2
  import { IdentityError } from "../domain/errors.ts";
3
- import type { Tier } from "../speakers.ts";
4
3
  import type {
5
4
  IdentityLink,
6
5
  IdentityRef,
@@ -13,6 +12,7 @@ import type {
13
12
  RoleHolder,
14
13
  RoleSource,
15
14
  } from "./principal-types.ts";
15
+ import type { Tier } from "./speakers.ts";
16
16
  import { isPrincipalId, newPrincipalId } from "./ulid.ts";
17
17
 
18
18
  export type {
@@ -1,5 +1,5 @@
1
1
  import type { Pronouns } from "../config/config.ts";
2
- import type { Tier } from "../speakers.ts";
2
+ import type { Tier } from "./speakers.ts";
3
3
 
4
4
  export type { Pronouns };
5
5
 
@@ -1,4 +1,4 @@
1
- import type { Tier } from "../speakers.ts";
1
+ import type { Tier } from "./speakers.ts";
2
2
 
3
3
  /** How often being seen is written for one principal, unless the tier changes. */
4
4
  const TOUCH_MS = 5 * 60_000;
@@ -1,9 +1,6 @@
1
- import { freeze } from "./freeze.ts";
2
- import {
3
- rulesOfSpeakerMap,
4
- speakerPolicyOf,
5
- } from "./identity/access-policy.ts";
6
- import type { OwnerIdentity } from "./identity.ts";
1
+ import { freeze } from "../kernel/freeze.ts";
2
+ import { rulesOfSpeakerMap, speakerPolicyOf } from "./access-policy.ts";
3
+ import type { OwnerIdentity } from "./owner-identity.ts";
7
4
 
8
5
  /** How much a speaker may do: `owner` above `admin` above `member`. */
9
6
  export const TIERS = Object.freeze(["member", "admin", "owner"] as const);
@@ -1,8 +1,8 @@
1
1
  // The codex-images plugin: fills the images slot with drawCodexImage.
2
2
 
3
- import { definePlugin } from "../define.ts";
4
- import { PluginError } from "../errors.ts";
5
- import type { RoundtablePlugin } from "../plugin.ts";
3
+ import { PluginError } from "../kernel/errors.ts";
4
+ import { definePlugin } from "../plugin-api/define.ts";
5
+ import type { RoundtablePlugin } from "../plugin-api/plugin.ts";
6
6
  import {
7
7
  CODEX_IMAGE_MODEL,
8
8
  CODEX_IMAGES_PROVIDER,
@@ -1,6 +1,6 @@
1
1
  import type { ConversationVisibility } from "../conversations/conversation-registry.ts";
2
2
  import type { TurnRequest } from "../domain/ports.ts";
3
- import type { Speaker, Tier } from "../speakers.ts";
3
+ import type { Speaker, Tier } from "../identity/speakers.ts";
4
4
  import type {
5
5
  AskSupport,
6
6
  OwnerAnswer,
@@ -1,6 +1,6 @@
1
1
  import type { Judge } from "../contract/providers.ts";
2
2
  import type { PendingConfirmation } from "../domain/conversation.ts";
3
- import type { Logger } from "../log.ts";
3
+ import type { Logger } from "../kernel/log.ts";
4
4
 
5
5
  export interface ConfirmationJudgeOptions {
6
6
  judge: Judge;
@@ -1,6 +1,6 @@
1
1
  import type { Judge } from "../contract/providers.ts";
2
- import type { Logger } from "../log.ts";
3
- import type { ThinkingLevel } from "../models.ts";
2
+ import type { ThinkingLevel } from "../domain/models.ts";
3
+ import type { Logger } from "../kernel/log.ts";
4
4
 
5
5
  /** The levels the judge chooses between, lowest first; criterion i of a brief asks for level i. */
6
6
  export type EffortLevel = "low" | "medium" | "high" | "xhigh";
@@ -11,7 +11,7 @@ import type {
11
11
  ScoreQuestion,
12
12
  YesNoQuestion,
13
13
  } from "../contract/providers.ts";
14
- import { JudgeError } from "../errors.ts";
14
+ import { JudgeError } from "../kernel/errors.ts";
15
15
 
16
16
  /** One completion: a system prompt and a user message in, the model's text out. */
17
17
  export type JudgeModel = (system: string, prompt: string) => Promise<string>;
@@ -1,10 +1,10 @@
1
1
  import type { SQL } from "bun";
2
2
  import type { Migration } from "../db/migrations.ts";
3
- import { PluginError } from "../errors.ts";
3
+ import type { ChannelKey } from "../domain/sessions.ts";
4
4
  import { SYSTEM_PRINCIPAL } from "../identity/principal-store.ts";
5
- import type { Logger } from "../log.ts";
6
- import type { ChannelKey } from "../sessions.ts";
7
- import type { Speaker } from "../speakers.ts";
5
+ import type { Speaker } from "../identity/speakers.ts";
6
+ import { PluginError } from "../kernel/errors.ts";
7
+ import type { Logger } from "../kernel/log.ts";
8
8
  import {
9
9
  followersOf,
10
10
  type ModeOrigins,
@@ -1,4 +1,4 @@
1
- import type { ChannelKey } from "../sessions.ts";
1
+ import type { ChannelKey } from "../domain/sessions.ts";
2
2
  import type { ConversationMode } from "./conversation-modes.ts";
3
3
 
4
4
  /**
@@ -1,5 +1,5 @@
1
- import type { RoundtablePlugin } from "../plugin.ts";
2
- import { MODES } from "../services.ts";
1
+ import type { RoundtablePlugin } from "../plugin-api/plugin.ts";
2
+ import { MODES } from "../plugin-api/services.ts";
3
3
  import { PgConversationModes } from "./conversation-modes.ts";
4
4
 
5
5
  /** The name of the modes' plugin, as the migration ledger names it. */
@@ -5,10 +5,11 @@ import type {
5
5
  ScheduledOutcome,
6
6
  } from "../../contract/channels.ts";
7
7
  import type { ChannelKey } from "../../domain/conversation.ts";
8
- import type { Logger } from "../../log.ts";
8
+ import type { Logger } from "../../kernel/log.ts";
9
+ import { zonedStamp } from "../../kernel/time.ts";
10
+ import type { BackgroundTurns } from "../../plugin-api/services.ts";
9
11
  import { systemTurn } from "../../routing/system-turns.ts";
10
- import type { BackgroundTurns } from "../../services.ts";
11
- import { zonedStamp } from "../../time.ts";
12
+ import { PERSONAL_TARGET } from "../../shared/personal-target.ts";
12
13
  import {
13
14
  type DelegationJob,
14
15
  type DelegationOutcome,
@@ -17,7 +18,6 @@ import {
17
18
  import type { PrecheckFinding } from "../schedules/prechecks.ts";
18
19
  import type { Schedule } from "../schedules/schedule-store.ts";
19
20
  import { scheduledTurnText } from "../schedules/schedule-tools.ts";
20
- import { PERSONAL_TARGET } from "./personal-target.ts";
21
21
 
22
22
  export interface BackgroundTurnsOptions {
23
23
  conversations: Pick<ConversationPort, "background" | "runsAs">;
@@ -2,11 +2,11 @@ import type { ExtensionFactory } from "@earendil-works/pi-coding-agent";
2
2
  import type { ChannelKey } from "../../domain/conversation.ts";
3
3
  import { DelegationError } from "../../domain/errors.ts";
4
4
  import { SYSTEM_PRINCIPAL } from "../../identity/principal-store.ts";
5
+ import type { Speaker } from "../../identity/speakers.ts";
6
+ import type { Delegator } from "../../plugin-api/services.ts";
5
7
  import { textToolsExtension } from "../../runtime/text-tools.ts";
6
- import type { Delegator } from "../../services.ts";
7
8
  import { DELEGATE_TOOL_SPEC } from "../../shared/delegate-tool.ts";
8
- import type { Speaker } from "../../speakers.ts";
9
- import { PERSONAL_TARGET } from "../background/personal-target.ts";
9
+ import { PERSONAL_TARGET } from "../../shared/personal-target.ts";
10
10
 
11
11
  export interface OwnerDelegation {
12
12
  delegator: Pick<Delegator, "start">;
@@ -2,14 +2,14 @@ import type { BackgroundTarget } from "../../contract/channels.ts";
2
2
  import type { ChannelKey } from "../../domain/conversation.ts";
3
3
  import { DelegationError } from "../../domain/errors.ts";
4
4
  import { messages } from "../../i18n/index.ts";
5
- import type { Logger } from "../../log.ts";
6
- import type { Delegator } from "../../services.ts";
7
- import type { Tier } from "../../speakers.ts";
5
+ import type { Tier } from "../../identity/speakers.ts";
6
+ import type { Logger } from "../../kernel/log.ts";
7
+ import { timeZone } from "../../kernel/time.ts";
8
+ import type { Delegator } from "../../plugin-api/services.ts";
8
9
  import type {
9
10
  DispatchThread,
10
11
  DispatchThreads,
11
12
  } from "../../threads/dispatch-threads.ts";
12
- import { timeZone } from "../../time.ts";
13
13
 
14
14
  export interface DelegationJob {
15
15
  id: number;
@@ -1,10 +1,10 @@
1
1
  import type { ModelRuntime } from "@earendil-works/pi-coding-agent";
2
- import { PluginError } from "../../errors.ts";
3
2
  import {
4
3
  formatModelRef,
5
4
  type ModelRef,
6
5
  type ThinkingLevel,
7
- } from "../../models.ts";
6
+ } from "../../domain/models.ts";
7
+ import { PluginError } from "../../kernel/errors.ts";
8
8
  import { packageDir } from "../../shared/package-dir.ts";
9
9
  import { runWorkerSession } from "./worker-session.ts";
10
10
 
@@ -7,9 +7,12 @@ import {
7
7
  SessionManager,
8
8
  SettingsManager,
9
9
  } from "@earendil-works/pi-coding-agent";
10
- import type { ThinkingLevel } from "../../models.ts";
10
+ import type { ThinkingLevel } from "../../domain/models.ts";
11
+ import type {
12
+ WorkerSessionRequest,
13
+ WorkerSessions,
14
+ } from "../../plugin-api/services.ts";
11
15
  import { runWorkerTask } from "../../runtime/worker-task.ts";
12
- import type { WorkerSessionRequest, WorkerSessions } from "../../services.ts";
13
16
  import { activeToolsExtension } from "../../shared/active-tools.ts";
14
17
 
15
18
  export interface WorkerSessionOptions {
@@ -11,7 +11,7 @@ import {
11
11
  type OwnerIdentity,
12
12
  type OwnerWords,
13
13
  ownerWords,
14
- } from "../../identity.ts";
14
+ } from "../../identity/owner-identity.ts";
15
15
  import { textToolsExtension } from "../../runtime/text-tools.ts";
16
16
  import type { WorkspaceRoots } from "../../shared/workspace-files.ts";
17
17
 
@@ -1,5 +1,5 @@
1
1
  import { basename } from "node:path";
2
- import type { HoldContext, HoldRule } from "../../holds.ts";
2
+ import type { HoldContext, HoldRule } from "../../plugin-api/holds.ts";
3
3
  import { COMMAND_PREFIX_WORDS, EXPANDED, lexShell } from "./shell-lexer.ts";
4
4
  import {
5
5
  bindingCounts,
@@ -1,7 +1,7 @@
1
1
  import type { SQL } from "bun";
2
2
  import type { Migration } from "../../db/migrations.ts";
3
3
  import { MemoryError } from "../../domain/errors.ts";
4
- import type { MemoryStore, SpeakerMemory } from "../../services.ts";
4
+ import type { MemoryStore, SpeakerMemory } from "../../plugin-api/services.ts";
5
5
 
6
6
  /** The kinds of memory: a core fact shown every turn, a searchable note, a dated event. */
7
7
  export const MEMORY_KINDS = Object.freeze(["core", "note", "event"] as const);
@@ -1,10 +1,13 @@
1
1
  import type { ExtensionFactory } from "@earendil-works/pi-coding-agent";
2
2
  import { Type } from "typebox";
3
3
  import { messages } from "../../i18n/index.ts";
4
- import { addresseeWords, type OwnerIdentity } from "../../identity.ts";
5
- import type { MemoryStore } from "../../services.ts";
4
+ import {
5
+ addresseeWords,
6
+ type OwnerIdentity,
7
+ } from "../../identity/owner-identity.ts";
8
+ import { timeZone, zonedToday } from "../../kernel/time.ts";
9
+ import type { MemoryStore } from "../../plugin-api/services.ts";
6
10
  import { toolError, toolText } from "../../shared/tool-result.ts";
7
- import { timeZone, zonedToday } from "../../time.ts";
8
11
  import type { Memory, PromptMemory } from "./owner-memory-store.ts";
9
12
 
10
13
  function line(memory: Memory): string {
@@ -1,7 +1,10 @@
1
1
  import type { ExtensionFactory } from "@earendil-works/pi-coding-agent";
2
2
  import { Type } from "typebox";
3
3
  import type { Notifier } from "../../domain/ports.ts";
4
- import { addresseeWords, type OwnerIdentity } from "../../identity.ts";
4
+ import {
5
+ addresseeWords,
6
+ type OwnerIdentity,
7
+ } from "../../identity/owner-identity.ts";
5
8
  import { toolError, toolText } from "../../shared/tool-result.ts";
6
9
 
7
10
  /** What notify needs in one session. */
@@ -1,14 +1,14 @@
1
1
  import type { ExtensionFactory } from "@earendil-works/pi-coding-agent";
2
2
  import type { ChannelKey } from "../../domain/conversation.ts";
3
+ import type { SessionContext } from "../../domain/sessions.ts";
4
+ import type { OwnerIdentity } from "../../identity/owner-identity.ts";
3
5
  import { SYSTEM_PRINCIPAL } from "../../identity/principal-store.ts";
4
- import type { OwnerIdentity } from "../../identity.ts";
5
- import type { Logger } from "../../log.ts";
6
+ import type { Logger } from "../../kernel/log.ts";
6
7
  import { providerSurface, surfaceOf } from "../../presence/delivery-router.ts";
7
8
  import type {
8
9
  DirectChannelProvider,
9
10
  DirectChannels,
10
11
  } from "../../presence/direct-channels.ts";
11
- import type { SessionContext } from "../../sessions.ts";
12
12
  import { notifyExtension } from "./notify.ts";
13
13
 
14
14
  export interface SessionNotifyDeps {
@@ -2,7 +2,7 @@ import type { SQL } from "bun";
2
2
  import { isCheckDatabase } from "../../db/check-database.ts";
3
3
  import type { Migration } from "../../db/migrations.ts";
4
4
  import { AgentError } from "../../domain/errors.ts";
5
- import { type Logger, silentLogger } from "../../log.ts";
5
+ import { type Logger, silentLogger } from "../../kernel/log.ts";
6
6
  import {
7
7
  PromptHistory,
8
8
  type PromptVersion,
@@ -1,15 +1,15 @@
1
1
  import { parse } from "@babel/parser";
2
2
  import type { Node, Program } from "@babel/types";
3
3
  import { ScheduleError } from "../../domain/errors.ts";
4
+ import { messages } from "../../i18n/index.ts";
5
+ import type { Tier } from "../../identity/speakers.ts";
4
6
  import {
5
7
  type HoldCheck,
6
8
  type HoldContext,
7
9
  type HoldRule,
8
10
  higherTier,
9
- } from "../../holds.ts";
10
- import { messages } from "../../i18n/index.ts";
11
- import type { Tier } from "../../speakers.ts";
12
- import type { ToolTiers } from "../../tool-tiers.ts";
11
+ } from "../../plugin-api/holds.ts";
12
+ import type { ToolTiers } from "../../runtime/tool-tiers.ts";
13
13
  import type { PrecheckRegistry } from "./prechecks.ts";
14
14
 
15
15
  /**
@@ -1,6 +1,6 @@
1
1
  import type { ChannelKey } from "../../domain/conversation.ts";
2
- import { PluginError } from "../../errors.ts";
3
- import type { Tier } from "../../speakers.ts";
2
+ import type { Tier } from "../../identity/speakers.ts";
3
+ import { PluginError } from "../../kernel/errors.ts";
4
4
  import type { Schedule } from "./schedule-store.ts";
5
5
 
6
6
  /** How long a precheck may run before it counts as failed, unless it sets its own `timeoutMs`. */
@@ -1,6 +1,11 @@
1
1
  import { ScheduleError } from "../../domain/errors.ts";
2
2
  import { messages } from "../../i18n/index.ts";
3
- import { timeZone, zonedDate, zonedInstant, zonedStamp } from "../../time.ts";
3
+ import {
4
+ timeZone,
5
+ zonedDate,
6
+ zonedInstant,
7
+ zonedStamp,
8
+ } from "../../kernel/time.ts";
4
9
 
5
10
  export type Weekday = "sun" | "mon" | "tue" | "wed" | "thu" | "fri" | "sat";
6
11
 
@@ -1,7 +1,7 @@
1
- import type { HoldCheck } from "../../holds.ts";
2
- import type { Logger } from "../../log.ts";
3
- import type { Tier } from "../../speakers.ts";
4
- import { timeZone, zonedStamp } from "../../time.ts";
1
+ import type { Tier } from "../../identity/speakers.ts";
2
+ import type { Logger } from "../../kernel/log.ts";
3
+ import { timeZone, zonedStamp } from "../../kernel/time.ts";
4
+ import type { HoldCheck } from "../../plugin-api/holds.ts";
5
5
  import { type PrecheckTool, precheckScriptTools } from "./precheck-tools.ts";
6
6
  import {
7
7
  type Precheck,
@@ -2,8 +2,8 @@ import type { SQL } from "bun";
2
2
  import type { Migration } from "../../db/migrations.ts";
3
3
  import type { ChannelKey } from "../../domain/conversation.ts";
4
4
  import { ScheduleError } from "../../domain/errors.ts";
5
- import type { ScheduleStore } from "../../services.ts";
6
- import type { Tier } from "../../speakers.ts";
5
+ import type { Tier } from "../../identity/speakers.ts";
6
+ import type { ScheduleStore } from "../../plugin-api/services.ts";
7
7
  import type { PrecheckTool } from "./precheck-tools.ts";
8
8
  import type { Recurrence } from "./recurrence.ts";
9
9
 
@@ -1,13 +1,13 @@
1
1
  import type { BackgroundTarget } from "../../contract/channels.ts";
2
2
  import type { ChannelKey } from "../../domain/conversation.ts";
3
3
  import { ScheduleError } from "../../domain/errors.ts";
4
- import type { HoldCheck } from "../../holds.ts";
5
4
  import { messages } from "../../i18n/index.ts";
6
5
  import { SYSTEM_PRINCIPAL } from "../../identity/principal-store.ts";
7
- import type { ScheduleStore } from "../../services.ts";
6
+ import { type Tier, tierAtLeast } from "../../identity/speakers.ts";
7
+ import { timeZone, zonedStamp } from "../../kernel/time.ts";
8
+ import type { HoldCheck } from "../../plugin-api/holds.ts";
9
+ import type { ScheduleStore } from "../../plugin-api/services.ts";
8
10
  import type { ScheduleToolName } from "../../shared/schedule-tools.ts";
9
- import { type Tier, tierAtLeast } from "../../speakers.ts";
10
- import { timeZone, zonedStamp } from "../../time.ts";
11
11
  import { precheckCatalog } from "./precheck-catalog.ts";
12
12
  import { type PrecheckTool, precheckScriptTools } from "./precheck-tools.ts";
13
13
  import { PRECHECK_SCRIPT_CHARS, type PrecheckRegistry } from "./prechecks.ts";
@@ -1,5 +1,5 @@
1
1
  import { messages } from "../../i18n/index.ts";
2
- import { timeZone, zonedStamp } from "../../time.ts";
2
+ import { timeZone, zonedStamp } from "../../kernel/time.ts";
3
3
  import type { PrecheckFinding } from "./prechecks.ts";
4
4
  import { describeRecurrence } from "./recurrence.ts";
5
5
  import type { Schedule } from "./schedule-store.ts";
@@ -2,9 +2,9 @@ import type {
2
2
  BackgroundRunsAs,
3
3
  ScheduledOutcome,
4
4
  } from "../../contract/channels.ts";
5
- import type { HoldCheck } from "../../holds.ts";
6
- import type { Logger } from "../../log.ts";
7
- import type { ScheduleStore } from "../../services.ts";
5
+ import type { Logger } from "../../kernel/log.ts";
6
+ import type { HoldCheck } from "../../plugin-api/holds.ts";
7
+ import type { ScheduleStore } from "../../plugin-api/services.ts";
8
8
  import {
9
9
  type PrecheckFinding,
10
10
  type PrecheckRegistry,
@@ -3,20 +3,20 @@ import { Type } from "typebox";
3
3
  import type { BackgroundTarget } from "../../contract/channels.ts";
4
4
  import type { ChannelKey } from "../../domain/conversation.ts";
5
5
  import { ScheduleError } from "../../domain/errors.ts";
6
- import type { HoldCheck } from "../../holds.ts";
7
6
  import { activeLocale } from "../../i18n/index.ts";
7
+ import type { Speaker } from "../../identity/speakers.ts";
8
+ import { timeZone } from "../../kernel/time.ts";
9
+ import type { HoldCheck } from "../../plugin-api/holds.ts";
10
+ import type { ScheduleStore } from "../../plugin-api/services.ts";
8
11
  import {
9
12
  type ToolInput,
10
13
  textToolsExtension,
11
14
  } from "../../runtime/text-tools.ts";
12
- import type { ScheduleStore } from "../../services.ts";
15
+ import { PERSONAL_TARGET } from "../../shared/personal-target.ts";
13
16
  import {
14
17
  type ScheduleToolSpec,
15
18
  scheduleToolSpecs,
16
19
  } from "../../shared/schedule-tools.ts";
17
- import type { Speaker } from "../../speakers.ts";
18
- import { timeZone } from "../../time.ts";
19
- import { PERSONAL_TARGET } from "../background/personal-target.ts";
20
20
  import type { PrecheckRegistry } from "./prechecks.ts";
21
21
  import { callScheduleTool } from "./schedule-tools.ts";
22
22
 
@@ -1,4 +1,4 @@
1
- import type { Logger } from "../../log.ts";
1
+ import type { Logger } from "../../kernel/log.ts";
2
2
 
3
3
  /**
4
4
  * Warns of a carried skill that is missing once per agent and name. The registry is asked what an
@@ -1,6 +1,6 @@
1
1
  import { existsSync, readdirSync, readFileSync, statSync } from "node:fs";
2
2
  import { isAbsolute, join, relative as relativePath, resolve } from "node:path";
3
- import { PluginError } from "../../errors.ts";
3
+ import { PluginError } from "../../kernel/errors.ts";
4
4
  import { packageDir } from "../../shared/package-dir.ts";
5
5
  import {
6
6
  BUILTIN_SKILLS,
@@ -1,8 +1,8 @@
1
1
  import { mkdirSync, readdirSync, rmSync, writeFileSync } from "node:fs";
2
2
  import { join } from "node:path";
3
3
  import { AgentError } from "../../domain/errors.ts";
4
- import { PluginError } from "../../errors.ts";
5
- import type { SkillRegistry } from "../../services.ts";
4
+ import { PluginError } from "../../kernel/errors.ts";
5
+ import type { SkillRegistry } from "../../plugin-api/services.ts";
6
6
  import { WarnedMissing } from "./missing-warning.ts";
7
7
  import {
8
8
  readSkillDocument,
@@ -2,7 +2,7 @@ import { createHash } from "node:crypto";
2
2
  import { existsSync, readFileSync } from "node:fs";
3
3
  import { parseFrontmatter } from "@earendil-works/pi-coding-agent";
4
4
  import { AgentError } from "../../domain/errors.ts";
5
- import type { Logger } from "../../log.ts";
5
+ import type { Logger } from "../../kernel/log.ts";
6
6
  import type { SkillStore } from "./skill-store.ts";
7
7
 
8
8
  /** Carried by every agent and worker, shipped in the release (behavior 20). */