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,5 +1,5 @@
1
1
  import { messages } from "../i18n/index.ts";
2
- import type { OwnerIdentity } from "../identity.ts";
2
+ import type { OwnerIdentity } from "../identity/owner-identity.ts";
3
3
  import type { OwnerAnswer, Prompts } from "../interactions/prompts.ts";
4
4
  import {
5
5
  type Questionnaire,
@@ -6,16 +6,16 @@ import type {
6
6
  } from "@earendil-works/pi-coding-agent";
7
7
  import type { AgentSessions } from "../contract/runtime.ts";
8
8
  import { AgentRunError, ConfigError } from "../domain/errors.ts";
9
- import type { AccessRules, AccessTier } from "../identity/access-policy.ts";
10
- import type { IdentityService } from "../identity/identity-service.ts";
11
- import { SYSTEM_PRINCIPAL } from "../identity/principal-store.ts";
12
9
  import {
13
10
  formatModelRef,
14
11
  type ModelRef,
15
12
  parseModelRef,
16
13
  type ThinkingSetting,
17
- } from "../models.ts";
18
- import type { RoundtablePlugin } from "../plugin.ts";
14
+ } from "../domain/models.ts";
15
+ import type { AccessRules, AccessTier } from "../identity/access-policy.ts";
16
+ import type { IdentityService } from "../identity/identity-service.ts";
17
+ import { SYSTEM_PRINCIPAL } from "../identity/principal-store.ts";
18
+ import type { RoundtablePlugin } from "../plugin-api/plugin.ts";
19
19
  import { guardHidesPrivateExchange } from "./extensions/private-memory.ts";
20
20
  import { bridgeHistoryHidesMemoryFor } from "./reader-history.ts";
21
21
 
@@ -1,6 +1,6 @@
1
1
  import { ConfigError } from "../domain/errors.ts";
2
2
  import { SHELL_TOOLS } from "../modules/host-shell/shell-policy.ts";
3
- import type { RoundtablePlugin } from "../plugin.ts";
3
+ import type { RoundtablePlugin } from "../plugin-api/plugin.ts";
4
4
 
5
5
  const CHAT_ONLY = 'agentServer: { tools: "chat-only" }';
6
6
 
@@ -5,9 +5,8 @@ import type {
5
5
  ChannelKey,
6
6
  PendingConfirmation,
7
7
  } from "../domain/conversation.ts";
8
+ import type { ThinkingLevel } from "../domain/models.ts";
8
9
  import type { TurnConversation, TurnRequest } from "../domain/ports.ts";
9
- import type { ThinkingLevel } from "../models.ts";
10
- import type { ToolTiers } from "../tool-tiers.ts";
11
10
  import { ConfirmationGate, unexpired } from "./extensions/confirmation-gate.ts";
12
11
  import { PromptSlot } from "./prompt-slot.ts";
13
12
  import type { ChannelSession, PiAgentRuntimeOptions } from "./runtime-types.ts";
@@ -23,6 +22,7 @@ import {
23
22
  historyScope,
24
23
  scopedHistory,
25
24
  } from "./session-scope.ts";
25
+ import type { ToolTiers } from "./tool-tiers.ts";
26
26
 
27
27
  type AgentMessage = AgentSession["messages"][number];
28
28
 
@@ -1,5 +1,5 @@
1
1
  import type { ExtensionFactory } from "@earendil-works/pi-coding-agent";
2
- import type { Logger } from "../../log.ts";
2
+ import type { Logger } from "../../kernel/log.ts";
3
3
  import { readPromptOrStop } from "./prompt-read.ts";
4
4
 
5
5
  /**
@@ -1,4 +1,8 @@
1
- import { type OwnerIdentity, ownerWords, PRONOUNS } from "../../identity.ts";
1
+ import {
2
+ type OwnerIdentity,
3
+ ownerWords,
4
+ PRONOUNS,
5
+ } from "../../identity/owner-identity.ts";
2
6
  import type {
3
7
  OwnerAnswer,
4
8
  OwnerQuestion,
@@ -1,6 +1,9 @@
1
1
  import type { ExtensionFactory } from "@earendil-works/pi-coding-agent";
2
2
  import { type Static, Type } from "typebox";
3
- import { type OwnerIdentity, ownerWords } from "../../identity.ts";
3
+ import {
4
+ type OwnerIdentity,
5
+ ownerWords,
6
+ } from "../../identity/owner-identity.ts";
4
7
  import type { OwnerQuestion } from "../../interactions/prompts.ts";
5
8
  import { QUESTIONNAIRE_LIMITS as L } from "../../interactions/questionnaire.ts";
6
9
  import { DEFAULT_YOLO_QUESTION_GRACE_MS } from "../../modes/autonomy.ts";
@@ -1,3 +1,4 @@
1
+ import type { Tier } from "../../identity/speakers.ts";
1
2
  import type {
2
3
  Approval,
3
4
  ApprovalDetails,
@@ -6,7 +7,6 @@ import type {
6
7
  Prompts,
7
8
  PromptWait,
8
9
  } from "../../interactions/prompts.ts";
9
- import type { Tier } from "../../speakers.ts";
10
10
  import type { Watch } from "./withdrawals.ts";
11
11
 
12
12
  /** What a held call's card is opened with. */
@@ -1,4 +1,4 @@
1
- import type { HoldRule } from "../../holds.ts";
1
+ import type { HoldRule } from "../../plugin-api/holds.ts";
2
2
 
3
3
  /** A tool that waits for the owner's confirmation in the gate's tests. */
4
4
  export const MAIL = "send-mail";
@@ -1,5 +1,5 @@
1
1
  import type { ExtensionFactory } from "@earendil-works/pi-coding-agent";
2
- import type { ToolTurn } from "../../define.ts";
2
+ import type { ToolTurn } from "../../plugin-api/define.ts";
3
3
  import type { PromptSlot } from "../prompt-slot.ts";
4
4
  import type { ConfirmationGate, HoldTurn } from "./confirmation-gate.ts";
5
5
 
@@ -2,17 +2,17 @@ import type {
2
2
  HeldCall,
3
3
  PendingConfirmation,
4
4
  } from "../../domain/conversation.ts";
5
+ import { messages } from "../../i18n/index.ts";
6
+ import type { OwnerIdentity } from "../../identity/owner-identity.ts";
7
+ import type { ApprovedBy, Prompts } from "../../interactions/prompts.ts";
5
8
  import {
6
9
  HOLD_DESCRIBE_TIMEOUT_MS,
7
10
  type HoldCheck,
8
11
  type HoldContext,
9
12
  higherTier,
10
13
  isPromise,
11
- } from "../../holds.ts";
12
- import { messages } from "../../i18n/index.ts";
13
- import type { OwnerIdentity } from "../../identity.ts";
14
- import type { ApprovedBy, Prompts } from "../../interactions/prompts.ts";
15
- import type { ToolTiers } from "../../tool-tiers.ts";
14
+ } from "../../plugin-api/holds.ts";
15
+ import type { ToolTiers } from "../tool-tiers.ts";
16
16
  import { approvalCard, approvalDetails } from "./approval-card.ts";
17
17
  import { askOnCard } from "./card-ask.ts";
18
18
  import {
@@ -3,12 +3,15 @@ import type {
3
3
  PendingConfirmation,
4
4
  } from "../../domain/conversation.ts";
5
5
  import type { HoldRefusal } from "../../domain/progress.ts";
6
- import { type OwnerIdentity, ownerWords } from "../../identity.ts";
6
+ import {
7
+ type OwnerIdentity,
8
+ ownerWords,
9
+ } from "../../identity/owner-identity.ts";
10
+ import type { Speaker } from "../../identity/speakers.ts";
7
11
  import type {
8
12
  ApprovalDetails,
9
13
  ApprovedBy,
10
14
  } from "../../interactions/prompts.ts";
11
- import type { Speaker } from "../../speakers.ts";
12
15
  import { mayApproveNamed } from "./held-calls.ts";
13
16
 
14
17
  /**
@@ -2,9 +2,9 @@ import type {
2
2
  HeldCall,
3
3
  PendingConfirmation,
4
4
  } from "../../domain/conversation.ts";
5
- import type { OwnerIdentity } from "../../identity.ts";
5
+ import type { OwnerIdentity } from "../../identity/owner-identity.ts";
6
+ import type { Speaker } from "../../identity/speakers.ts";
6
7
  import type { ApprovedBy } from "../../interactions/prompts.ts";
7
- import type { Speaker } from "../../speakers.ts";
8
8
 
9
9
  /** Held actions older than this cannot be approved any more. */
10
10
  export const CONFIRMATION_TTL_MS = 24 * 3_600_000;
@@ -1,12 +1,12 @@
1
- import type { ToolTurn } from "../../define.ts";
1
+ import { messages } from "../../i18n/index.ts";
2
+ import type { ToolTurn } from "../../plugin-api/define.ts";
2
3
  import {
3
4
  type ClassedHold,
4
5
  type HoldCheck,
5
6
  type HoldContext,
6
7
  type HoldDescription,
7
8
  isPromise,
8
- } from "../../holds.ts";
9
- import { messages } from "../../i18n/index.ts";
9
+ } from "../../plugin-api/holds.ts";
10
10
  import {
11
11
  awaited,
12
12
  type Described,
@@ -1,13 +1,13 @@
1
- import type { ToolTurn } from "../../define.ts";
2
1
  import type { HeldCall } from "../../domain/conversation.ts";
2
+ import { messages } from "../../i18n/index.ts";
3
+ import type { ApprovalDetails } from "../../interactions/prompts.ts";
4
+ import type { ToolTurn } from "../../plugin-api/define.ts";
3
5
  import {
4
6
  type HoldCheck,
5
7
  type HoldContext,
6
8
  type HoldDescription,
7
9
  isPromise,
8
- } from "../../holds.ts";
9
- import { messages } from "../../i18n/index.ts";
10
- import type { ApprovalDetails } from "../../interactions/prompts.ts";
10
+ } from "../../plugin-api/holds.ts";
11
11
  import { canonicalJson } from "./held-calls.ts";
12
12
 
13
13
  /** The turn a hold that looks things up sees; see `HoldRule.describeInTurn`. */
@@ -1,5 +1,5 @@
1
1
  import type { ExtensionFactory } from "@earendil-works/pi-coding-agent";
2
- import type { Logger } from "../../log.ts";
2
+ import type { Logger } from "../../kernel/log.ts";
3
3
  import { readPromptOrStop } from "./prompt-read.ts";
4
4
 
5
5
  /**
@@ -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
  * Reads a prompt for the run that is starting. Pi swallows what a `before_agent_start` handler
@@ -1,11 +1,11 @@
1
1
  import type { HeldCall } from "../../domain/conversation.ts";
2
2
  import type { TurnRequest } from "../../domain/ports.ts";
3
+ import type { ChannelKey } from "../../domain/sessions.ts";
3
4
  import { SYSTEM_PRINCIPAL } from "../../identity/principal-store.ts";
4
5
  import type { ApprovedBy } from "../../interactions/prompts.ts";
5
6
  import { type Autonomy, DEFAULT_AUTONOMY } from "../../modes/autonomy.ts";
6
7
  import type { ConversationModes } from "../../modes/conversation-modes.ts";
7
8
  import { YOLO_CARDED_SHELL_CLASSES } from "../../modules/host-shell/shell-policy.ts";
8
- import type { ChannelKey } from "../../sessions.ts";
9
9
  import type { PiAgentRuntimeOptions } from "../runtime-types.ts";
10
10
  import type { AutoApprover } from "./confirmation-gate.ts";
11
11
  import type { SpeakerRef } from "./gate-refusals.ts";
@@ -1,6 +1,6 @@
1
1
  import type { InterimMessage, InterimPosts } from "../domain/interim.ts";
2
2
  import type { TurnRequest } from "../domain/ports.ts";
3
- import type { Logger } from "../log.ts";
3
+ import type { Logger } from "../kernel/log.ts";
4
4
  import {
5
5
  DISCORD_MESSAGE_LIMIT,
6
6
  splitReply,
@@ -18,12 +18,11 @@ import type {
18
18
  } from "../domain/conversation.ts";
19
19
  import { AgentRunError } from "../domain/errors.ts";
20
20
  import type { TurnRequest } from "../domain/ports.ts";
21
- import { HostStoppingError } from "../errors.ts";
21
+ import type { TransientTask } from "../domain/sessions.ts";
22
22
  import { assistantName } from "../i18n/index.ts";
23
23
  import { promptScopeOf } from "../interactions/prompts.ts";
24
- import { withoutReplyFiles } from "../reply-files.ts";
25
- import type { TransientTask } from "../sessions.ts";
26
- import { type ToolTiers, toolTiers } from "../tool-tiers.ts";
24
+ import { HostStoppingError } from "../kernel/errors.ts";
25
+ import { withoutReplyFiles } from "../shared/reply-files.ts";
27
26
  import { AbortGuard } from "./abort-guard.ts";
28
27
  import { bridgeTurnRefusal, chosenAgentModel } from "./bridge-guard.ts";
29
28
  import { ConversationSessions } from "./conversation-sessions.ts";
@@ -47,6 +46,7 @@ import { SessionFactory } from "./session-factory.ts";
47
46
  import { promptImages, SteerableRun } from "./steerable-run.ts";
48
47
  import { thinkingLevel } from "./thinking-level.ts";
49
48
  import { runningCalls } from "./tool-call-scope.ts";
49
+ import { type ToolTiers, toolTiers } from "./tool-tiers.ts";
50
50
  import { transcriptOf, turnAnswer, unspokenTurn } from "./turn-answer.ts";
51
51
  import type { TurnBudget } from "./turn-budget.ts";
52
52
  import { promptFailed, turnLimits } from "./turn-limits.ts";
@@ -1,6 +1,6 @@
1
1
  import type { ClientPort } from "../domain/client.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
 
5
5
  /** What the runtime keeps about a conversation's running turn, for its tools to read. */
6
6
  export interface RunningTurn {
@@ -7,20 +7,25 @@ import type {
7
7
  } from "../contract/runtime.ts";
8
8
  import type { ChannelKey } from "../domain/conversation.ts";
9
9
  import type { InterimTextMode } from "../domain/interim.ts";
10
- import type { IdentityService } from "../identity/identity-service.ts";
11
- import type { OwnerIdentity } from "../identity.ts";
12
- import type { PromptScope } from "../interactions/prompts.ts";
13
- import { AGENT_BRIEF, EffortJudge } from "../judging/effort-judge.ts";
14
10
  import {
15
11
  type EffortPolicy,
16
12
  formatModelRef,
17
13
  type ModelRef,
18
14
  type ThinkingLevel,
19
- } from "../models.ts";
15
+ } from "../domain/models.ts";
16
+ import type { IdentityService } from "../identity/identity-service.ts";
17
+ import type { OwnerIdentity } from "../identity/owner-identity.ts";
18
+ import type { Speaker } from "../identity/speakers.ts";
19
+ import type { PromptScope } from "../interactions/prompts.ts";
20
+ import { AGENT_BRIEF, EffortJudge } from "../judging/effort-judge.ts";
20
21
  import type { Autonomy } from "../modes/autonomy.ts";
21
- import type { PluginContext, RoundtablePlugin } from "../plugin.ts";
22
- import { CONVERSATIONS, IDENTITY, MODES, RUNTIME } from "../services.ts";
23
- import type { Speaker } from "../speakers.ts";
22
+ import type { PluginContext, RoundtablePlugin } from "../plugin-api/plugin.ts";
23
+ import {
24
+ CONVERSATIONS,
25
+ IDENTITY,
26
+ MODES,
27
+ RUNTIME,
28
+ } from "../plugin-api/services.ts";
24
29
  import {
25
30
  BRIDGE_MEMORY_FIX,
26
31
  bridgeMemoryProblem,
@@ -8,28 +8,32 @@ import type { ImageDrawer } from "../contract/providers.ts";
8
8
  import type { AgentSessions, LoadedSkill } from "../contract/runtime.ts";
9
9
  import type { ChannelKey } from "../domain/conversation.ts";
10
10
  import type { InterimTextMode } from "../domain/interim.ts";
11
+ import type {
12
+ EffortPolicy,
13
+ ThinkingLevel,
14
+ ThinkingPicker,
15
+ } from "../domain/models.ts";
11
16
  import type { TurnConversation } from "../domain/ports.ts";
12
- import type { Principal } from "../identity/principal-store.ts";
13
- import type { OwnerIdentity } from "../identity.ts";
14
- import type { PromptScope, Prompts } from "../interactions/prompts.ts";
15
- import type { Logger } from "../log.ts";
16
- import type { EffortPolicy, ThinkingLevel, ThinkingPicker } from "../models.ts";
17
- import type { Autonomy } from "../modes/autonomy.ts";
18
- import type { ConversationModes } from "../modes/conversation-modes.ts";
19
- import type { AgentTools, LinkedSessions } from "../plugin.ts";
20
17
  import {
21
18
  planOrder,
22
19
  type SessionContext,
23
20
  type SessionConversation,
24
21
  type SessionPlan,
25
22
  type SessionTool,
26
- } from "../sessions.ts";
23
+ } from "../domain/sessions.ts";
24
+ import type { OwnerIdentity } from "../identity/owner-identity.ts";
25
+ import type { Principal } from "../identity/principal-store.ts";
26
+ import type { PromptScope, Prompts } from "../interactions/prompts.ts";
27
+ import type { Logger } from "../kernel/log.ts";
28
+ import type { Autonomy } from "../modes/autonomy.ts";
29
+ import type { ConversationModes } from "../modes/conversation-modes.ts";
30
+ import type { AgentTools, LinkedSessions } from "../plugin-api/plugin.ts";
27
31
  import type { ShellEnv } from "../shared/child-env.ts";
28
32
  import { secretMaskExtension } from "../shared/secret-mask.ts";
29
- import type { ToolTiers } from "../tool-tiers.ts";
30
33
  import type { MemoryDraws } from "./extensions/private-memory.ts";
31
34
  import type { PendingConfirmationStore } from "./pending-confirmation-store.ts";
32
35
  import { scopedCalls } from "./tool-call-scope.ts";
36
+ import type { ToolTiers } from "./tool-tiers.ts";
33
37
 
34
38
  export type TurnMessage = Extract<
35
39
  AgentSessionEvent,
@@ -1,12 +1,12 @@
1
1
  import type { ChannelKey } from "../domain/conversation.ts";
2
2
  import type { TurnConversation, TurnRequest } from "../domain/ports.ts";
3
+ import type { SessionConversation } from "../domain/sessions.ts";
4
+ import { addresseeOf, type OwnerIdentity } from "../identity/owner-identity.ts";
3
5
  import {
4
6
  type Principal,
5
7
  SYSTEM_PRINCIPAL,
6
8
  } from "../identity/principal-store.ts";
7
- import { addresseeOf, type OwnerIdentity } from "../identity.ts";
8
- import type { SessionConversation } from "../sessions.ts";
9
- import { addressee, type Speaker, THE_SPEAKER } from "../speakers.ts";
9
+ import { addressee, type Speaker, THE_SPEAKER } from "../identity/speakers.ts";
10
10
  import type { PiAgentRuntimeOptions } from "./runtime-types.ts";
11
11
 
12
12
  /**
@@ -12,7 +12,6 @@ import type { ClientPort } from "../domain/client.ts";
12
12
  import type { ChannelKey } from "../domain/conversation.ts";
13
13
  import { ConfigError } from "../domain/errors.ts";
14
14
  import type { AgentTurnScope } from "../domain/ports.ts";
15
- import type { LinkedSessions } from "../plugin.ts";
16
15
  import {
17
16
  planOrder,
18
17
  type SessionContext,
@@ -20,7 +19,10 @@ import {
20
19
  type SessionPlan,
21
20
  type ToolSelection,
22
21
  type TransientTask,
23
- } from "../sessions.ts";
22
+ } from "../domain/sessions.ts";
23
+ import { type Speaker, THE_SPEAKER } from "../identity/speakers.ts";
24
+ import type { LinkedSessions } from "../plugin-api/plugin.ts";
25
+ import { toolTurn } from "../plugin-api/tool-turn.ts";
24
26
  import { activeToolsExtension } from "../shared/active-tools.ts";
25
27
  import {
26
28
  ATTACH_FILE_TOOL,
@@ -29,9 +31,6 @@ import {
29
31
  import { GENERATE_IMAGE_TOOL } from "../shared/generate-image-tool.ts";
30
32
  import { packageDir } from "../shared/package-dir.ts";
31
33
  import { readAttachmentExtension } from "../shared/read-attachment-tool.ts";
32
- import { type Speaker, THE_SPEAKER } from "../speakers.ts";
33
- import { currentToolNames } from "../tool-tiers.ts";
34
- import { toolTurn } from "../tool-turn.ts";
35
34
  import { refuseShellTools } from "./chat-only.ts";
36
35
  import {
37
36
  CompactionTiers,
@@ -72,6 +71,7 @@ import {
72
71
  turnAddressee,
73
72
  } from "./session-conversation.ts";
74
73
  import { imageTools, scratchBash } from "./session-helpers.ts";
74
+ import { currentToolNames } from "./tool-tiers.ts";
75
75
 
76
76
  export { imageTools, scratchBash };
77
77
 
@@ -3,12 +3,12 @@ import type {
3
3
  ModelRuntime,
4
4
  } from "@earendil-works/pi-coding-agent";
5
5
  import type { ChannelKey } from "../domain/conversation.ts";
6
- import type { TurnRequest } from "../domain/ports.ts";
7
6
  import {
8
7
  AUTO_THINKING,
9
8
  type EffortPolicy,
10
9
  type ThinkingLevel,
11
- } from "../models.ts";
10
+ } from "../domain/models.ts";
11
+ import type { TurnRequest } from "../domain/ports.ts";
12
12
  import {
13
13
  type AgentModelSettings,
14
14
  useChosenAgentModel,
@@ -1,8 +1,8 @@
1
- import { PluginError } from "./errors.ts";
2
- import type { Logger } from "./log.ts";
3
- import { ASK_USER_TOOL } from "./runtime/extensions/ask-user.ts";
4
- import { COMPACT_TOOL } from "./runtime/extensions/self-compact-guard.ts";
5
- import { type Tier, tierAtLeast } from "./speakers.ts";
1
+ import { type Tier, tierAtLeast } from "../identity/speakers.ts";
2
+ import { PluginError } from "../kernel/errors.ts";
3
+ import type { Logger } from "../kernel/log.ts";
4
+ import { ASK_USER_TOOL } from "./extensions/ask-user.ts";
5
+ import { COMPACT_TOOL } from "./extensions/self-compact-guard.ts";
6
6
 
7
7
  /** The lowest tier that may use each tool; a tool that is not named needs the owner. */
8
8
  export interface ToolTiers {
@@ -1,6 +1,6 @@
1
1
  import type { TranscriptEntry, TurnResult } from "../domain/conversation.ts";
2
2
  import { AgentRunError } from "../domain/errors.ts";
3
- import { hasReplyFiles } from "../reply-files.ts";
3
+ import { hasReplyFiles } from "../shared/reply-files.ts";
4
4
  import { lastAssistant, textOf } from "../shared/session-messages.ts";
5
5
  import { TRANSCRIPT_ENTRY_CHARS } from "./runtime-types.ts";
6
6
 
@@ -1,3 +1,4 @@
1
+ import type { ChannelKey } from "../domain/sessions.ts";
1
2
  import type {
2
3
  TurnLimit,
3
4
  TurnTimeout,
@@ -6,7 +7,6 @@ import type {
6
7
  import { messages } from "../i18n/index.ts";
7
8
  import type { Approval } from "../interactions/prompts.ts";
8
9
  import { DEFAULT_YOLO_TIMEOUT_CARD_GRACE_MS } from "../modes/autonomy.ts";
9
- import type { ChannelKey } from "../sessions.ts";
10
10
  import type { PromptSlot } from "./prompt-slot.ts";
11
11
  import type { PiAgentRuntimeOptions } from "./runtime-types.ts";
12
12
  import type { ActivityTracker } from "./turn-activity.ts";
@@ -1,10 +1,10 @@
1
1
  import type { AgentSessionEvent } from "@earendil-works/pi-coding-agent";
2
2
  import type { TurnResult } from "../domain/conversation.ts";
3
3
  import { AgentRunError } from "../domain/errors.ts";
4
+ import type { ChannelKey } from "../domain/sessions.ts";
4
5
  import { type TurnTimeout, TurnTimeoutError } from "../domain/turn-timeout.ts";
5
6
  import { catalogFor } from "../i18n/index.ts";
6
7
  import { DEFAULT_AUTONOMY } from "../modes/autonomy.ts";
7
- import type { ChannelKey } from "../sessions.ts";
8
8
  import type { PromptSlot } from "./prompt-slot.ts";
9
9
  import type { PiAgentRuntimeOptions } from "./runtime-types.ts";
10
10
  import { activityTracker } from "./turn-activity.ts";
@@ -1,7 +1,7 @@
1
1
  import type { HeldCall } from "../domain/conversation.ts";
2
+ import type { Tier } from "../identity/speakers.ts";
2
3
  import { MEMORY_TOOLS } from "../modules/memory/owner-memory.ts";
3
- import type { Tier } from "../speakers.ts";
4
- import { type ToolTiers, toolsForTier } from "../tool-tiers.ts";
4
+ import { type ToolTiers, toolsForTier } from "./tool-tiers.ts";
5
5
 
6
6
  const MEMORY = new Set<string>(MEMORY_TOOLS);
7
7
 
@@ -3,7 +3,7 @@ import type {
3
3
  ModelRuntime,
4
4
  } from "@earendil-works/pi-coding-agent";
5
5
  import { AgentRunError, ConfigError } from "../domain/errors.ts";
6
- import { parseModelRef } from "../models.ts";
6
+ import { parseModelRef } from "../domain/models.ts";
7
7
  import { lastAssistant, textOf } from "../shared/session-messages.ts";
8
8
 
9
9
  export const MAX_REPORT_CHARS = 20_000;
@@ -4,7 +4,7 @@ import {
4
4
  attachReplyFile,
5
5
  REPLY_FILE_LIMITS,
6
6
  ReplyFileError,
7
- } from "../reply-files.ts";
7
+ } from "./reply-files.ts";
8
8
  import { toolError, toolText } from "./tool-result.ts";
9
9
  import {
10
10
  findWorkspaceFile,
@@ -1,5 +1,5 @@
1
1
  import { Type } from "typebox";
2
- import { freeze } from "../freeze.ts";
2
+ import { freeze } from "../kernel/freeze.ts";
3
3
 
4
4
  /** Hands web research to the cheaper worker model; shared by conversation sessions. */
5
5
  export const DELEGATE_TOOL = "delegate_task" as const;
@@ -7,7 +7,7 @@ import {
7
7
  attachReplyFile,
8
8
  REPLY_FILE_LIMITS,
9
9
  ReplyFileError,
10
- } from "../reply-files.ts";
10
+ } from "./reply-files.ts";
11
11
  import { toolError, toolText } from "./tool-result.ts";
12
12
  import {
13
13
  findWorkspaceFile,
@@ -1,5 +1,5 @@
1
- import type { BackgroundTarget } from "../../contract/channels.ts";
2
- import { messages } from "../../i18n/index.ts";
1
+ import type { BackgroundTarget } from "../contract/channels.ts";
2
+ import { messages } from "../i18n/index.ts";
3
3
 
4
4
  /**
5
5
  * The host's own background target: every person's conversations whose claim answers background
@@ -1,5 +1,5 @@
1
1
  import { AsyncLocalStorage } from "node:async_hooks";
2
- import type { ReplyFile, TurnResult } from "./domain/conversation.ts";
2
+ import type { ReplyFile, TurnResult } from "../domain/conversation.ts";
3
3
 
4
4
  /** Limits across all tools in one turn, independent of the surface's own limits. */
5
5
  export const REPLY_FILE_LIMITS = Object.freeze({
@@ -1,5 +1,5 @@
1
1
  import { messages, setLocale } from "../i18n/index.ts";
2
- import { setTimeZone } from "../time.ts";
2
+ import { setTimeZone } from "../kernel/time.ts";
3
3
 
4
4
  const EAGER = "EAGER:";
5
5
 
@@ -1,5 +1,5 @@
1
1
  import { type Locale, setLocale } from "../i18n/index.ts";
2
- import { setTimeZone } from "../time.ts";
2
+ import { setTimeZone } from "../kernel/time.ts";
3
3
 
4
4
  /** What a test file runs under; the core's own suite uses the neutral defaults. */
5
5
  export interface TestLocale {
@@ -3,7 +3,11 @@ import type { ActorFacts } from "../identity/actor-facts.ts";
3
3
  import type { ContactAssessor } from "../identity/contact.ts";
4
4
  import type { IdentityService } from "../identity/identity-service.ts";
5
5
  import type { IdentityLink, Principal } from "../identity/principal-store.ts";
6
- import { type SpeakerMap, speakerPolicy, tierAtLeast } from "../speakers.ts";
6
+ import {
7
+ type SpeakerMap,
8
+ speakerPolicy,
9
+ tierAtLeast,
10
+ } from "../identity/speakers.ts";
7
11
 
8
12
  /**
9
13
  * Who a 0.8 speaker map serves, for a test without a database: each person their own principal,
@@ -2,13 +2,13 @@ import type {
2
2
  ExtensionAPI,
3
3
  ExtensionFactory,
4
4
  } from "@earendil-works/pi-coding-agent";
5
- import type { OwnerIdentity } from "../identity.ts";
6
5
  import type {
7
6
  AgentTurnScope,
8
7
  ChannelKey,
9
8
  SessionContext,
10
- } from "../sessions.ts";
11
- import { type Speaker, THE_SPEAKER } from "../speakers.ts";
9
+ } from "../domain/sessions.ts";
10
+ import type { OwnerIdentity } from "../identity/owner-identity.ts";
11
+ import { type Speaker, THE_SPEAKER } from "../identity/speakers.ts";
12
12
  import { OWNER_CHANNEL, type setUpModules } from "./modules.ts";
13
13
  import { OWNER_SPEAKER } from "./owner.ts";
14
14