@jungjaehoon/mama-os 0.74.0 → 0.76.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 (254) hide show
  1. package/CHANGELOG.md +84 -0
  2. package/README.md +6 -1
  3. package/dist/api/code-act-actions.d.ts +3 -1
  4. package/dist/api/code-act-actions.d.ts.map +1 -1
  5. package/dist/api/code-act-actions.js +16 -7
  6. package/dist/api/code-act-actions.js.map +1 -1
  7. package/dist/api/document-actions.d.ts +13 -0
  8. package/dist/api/document-actions.d.ts.map +1 -0
  9. package/dist/api/document-actions.js +55 -0
  10. package/dist/api/document-actions.js.map +1 -0
  11. package/dist/api/drive-actions.d.ts +3 -1
  12. package/dist/api/drive-actions.d.ts.map +1 -1
  13. package/dist/api/drive-actions.js +6 -1
  14. package/dist/api/drive-actions.js.map +1 -1
  15. package/dist/api/member-enrollment.d.ts +7 -4
  16. package/dist/api/member-enrollment.d.ts.map +1 -1
  17. package/dist/api/member-enrollment.js +65 -33
  18. package/dist/api/member-enrollment.js.map +1 -1
  19. package/dist/api/member-export.d.ts.map +1 -1
  20. package/dist/api/member-export.js +14 -6
  21. package/dist/api/member-export.js.map +1 -1
  22. package/dist/api/member-lifecycle.d.ts +23 -4
  23. package/dist/api/member-lifecycle.d.ts.map +1 -1
  24. package/dist/api/member-lifecycle.js +90 -19
  25. package/dist/api/member-lifecycle.js.map +1 -1
  26. package/dist/api/member-notice-actions.d.ts +18 -0
  27. package/dist/api/member-notice-actions.d.ts.map +1 -0
  28. package/dist/api/member-notice-actions.js +184 -0
  29. package/dist/api/member-notice-actions.js.map +1 -0
  30. package/dist/api/member-records.d.ts +17 -2
  31. package/dist/api/member-records.d.ts.map +1 -1
  32. package/dist/api/member-records.js +440 -82
  33. package/dist/api/member-records.js.map +1 -1
  34. package/dist/api/member-share-actions.d.ts +3 -3
  35. package/dist/api/member-share-actions.d.ts.map +1 -1
  36. package/dist/api/member-share-actions.js +49 -22
  37. package/dist/api/member-share-actions.js.map +1 -1
  38. package/dist/api/member-smoke-state.d.ts +3 -0
  39. package/dist/api/member-smoke-state.d.ts.map +1 -0
  40. package/dist/api/member-smoke-state.js +20 -0
  41. package/dist/api/member-smoke-state.js.map +1 -0
  42. package/dist/api/owner-policy-actions.d.ts +1 -0
  43. package/dist/api/owner-policy-actions.d.ts.map +1 -1
  44. package/dist/api/owner-policy-actions.js +8 -4
  45. package/dist/api/owner-policy-actions.js.map +1 -1
  46. package/dist/api/owner-timezone-actions.d.ts +3 -2
  47. package/dist/api/owner-timezone-actions.d.ts.map +1 -1
  48. package/dist/api/owner-timezone-actions.js +4 -6
  49. package/dist/api/owner-timezone-actions.js.map +1 -1
  50. package/dist/api/personal-job-actions.d.ts +6 -0
  51. package/dist/api/personal-job-actions.d.ts.map +1 -0
  52. package/dist/api/personal-job-actions.js +72 -0
  53. package/dist/api/personal-job-actions.js.map +1 -0
  54. package/dist/api/security-events.d.ts +6 -1
  55. package/dist/api/security-events.d.ts.map +1 -1
  56. package/dist/api/security-events.js +34 -15
  57. package/dist/api/security-events.js.map +1 -1
  58. package/dist/api/skill-actions.d.ts +5 -0
  59. package/dist/api/skill-actions.d.ts.map +1 -0
  60. package/dist/api/skill-actions.js +66 -0
  61. package/dist/api/skill-actions.js.map +1 -0
  62. package/dist/api/source-actions.d.ts.map +1 -1
  63. package/dist/api/source-actions.js +4 -2
  64. package/dist/api/source-actions.js.map +1 -1
  65. package/dist/api/stored-source-reader.d.ts.map +1 -1
  66. package/dist/api/stored-source-reader.js +9 -2
  67. package/dist/api/stored-source-reader.js.map +1 -1
  68. package/dist/api/trello-actions.d.ts +1 -1
  69. package/dist/api/trello-actions.d.ts.map +1 -1
  70. package/dist/api/trello-actions.js +19 -4
  71. package/dist/api/trello-actions.js.map +1 -1
  72. package/dist/api/work-actions.d.ts +12 -2
  73. package/dist/api/work-actions.d.ts.map +1 -1
  74. package/dist/api/work-actions.js +57 -10
  75. package/dist/api/work-actions.js.map +1 -1
  76. package/dist/cli/commands/daemon.d.ts +12 -2
  77. package/dist/cli/commands/daemon.d.ts.map +1 -1
  78. package/dist/cli/commands/daemon.js +80 -13
  79. package/dist/cli/commands/daemon.js.map +1 -1
  80. package/dist/cli/commands/init.d.ts +4 -0
  81. package/dist/cli/commands/init.d.ts.map +1 -1
  82. package/dist/cli/commands/init.js +27 -5
  83. package/dist/cli/commands/init.js.map +1 -1
  84. package/dist/cli/commands/register-owner.d.ts +14 -5
  85. package/dist/cli/commands/register-owner.d.ts.map +1 -1
  86. package/dist/cli/commands/register-owner.js +145 -42
  87. package/dist/cli/commands/register-owner.js.map +1 -1
  88. package/dist/cli/commands/tools.d.ts +12 -0
  89. package/dist/cli/commands/tools.d.ts.map +1 -0
  90. package/dist/cli/commands/tools.js +109 -0
  91. package/dist/cli/commands/tools.js.map +1 -0
  92. package/dist/cli/index.js +8 -4
  93. package/dist/cli/index.js.map +1 -1
  94. package/dist/connectors/framework/polling-scheduler.d.ts +6 -1
  95. package/dist/connectors/framework/polling-scheduler.d.ts.map +1 -1
  96. package/dist/connectors/framework/polling-scheduler.js +25 -3
  97. package/dist/connectors/framework/polling-scheduler.js.map +1 -1
  98. package/dist/connectors/framework/stored-index-read.d.ts +2 -2
  99. package/dist/connectors/framework/stored-index-read.d.ts.map +1 -1
  100. package/dist/connectors/framework/stored-index-read.js +10 -3
  101. package/dist/connectors/framework/stored-index-read.js.map +1 -1
  102. package/dist/gateways/base-gateway.d.ts +7 -0
  103. package/dist/gateways/base-gateway.d.ts.map +1 -1
  104. package/dist/gateways/base-gateway.js +24 -0
  105. package/dist/gateways/base-gateway.js.map +1 -1
  106. package/dist/gateways/discord.d.ts +4 -0
  107. package/dist/gateways/discord.d.ts.map +1 -1
  108. package/dist/gateways/discord.js +24 -6
  109. package/dist/gateways/discord.js.map +1 -1
  110. package/dist/gateways/slack.d.ts +3 -0
  111. package/dist/gateways/slack.d.ts.map +1 -1
  112. package/dist/gateways/slack.js +15 -2
  113. package/dist/gateways/slack.js.map +1 -1
  114. package/dist/gateways/telegram-errors.d.ts +3 -0
  115. package/dist/gateways/telegram-errors.d.ts.map +1 -1
  116. package/dist/gateways/telegram-errors.js +5 -0
  117. package/dist/gateways/telegram-errors.js.map +1 -1
  118. package/dist/gateways/telegram-message-ledger.d.ts +7 -0
  119. package/dist/gateways/telegram-message-ledger.d.ts.map +1 -1
  120. package/dist/gateways/telegram-message-ledger.js +27 -2
  121. package/dist/gateways/telegram-message-ledger.js.map +1 -1
  122. package/dist/gateways/telegram.d.ts +33 -7
  123. package/dist/gateways/telegram.d.ts.map +1 -1
  124. package/dist/gateways/telegram.js +297 -59
  125. package/dist/gateways/telegram.js.map +1 -1
  126. package/dist/gateways/turn-contract.d.ts +8 -0
  127. package/dist/gateways/turn-contract.d.ts.map +1 -1
  128. package/dist/runtime/action-surface.d.ts +28 -3
  129. package/dist/runtime/action-surface.d.ts.map +1 -1
  130. package/dist/runtime/action-surface.js +316 -39
  131. package/dist/runtime/action-surface.js.map +1 -1
  132. package/dist/runtime/backend-security.d.ts +4 -0
  133. package/dist/runtime/backend-security.d.ts.map +1 -1
  134. package/dist/runtime/backend-security.js +8 -1
  135. package/dist/runtime/backend-security.js.map +1 -1
  136. package/dist/runtime/config.d.ts +1 -1
  137. package/dist/runtime/config.d.ts.map +1 -1
  138. package/dist/runtime/config.js +18 -11
  139. package/dist/runtime/config.js.map +1 -1
  140. package/dist/runtime/connectors.js +1 -1
  141. package/dist/runtime/connectors.js.map +1 -1
  142. package/dist/runtime/egress-proxy.d.ts +3 -3
  143. package/dist/runtime/egress-proxy.d.ts.map +1 -1
  144. package/dist/runtime/egress-proxy.js +16 -3
  145. package/dist/runtime/egress-proxy.js.map +1 -1
  146. package/dist/runtime/member-paths.d.ts +9 -1
  147. package/dist/runtime/member-paths.d.ts.map +1 -1
  148. package/dist/runtime/member-paths.js +67 -5
  149. package/dist/runtime/member-paths.js.map +1 -1
  150. package/dist/runtime/member-session.d.ts +21 -21
  151. package/dist/runtime/member-session.d.ts.map +1 -1
  152. package/dist/runtime/member-session.js +289 -34
  153. package/dist/runtime/member-session.js.map +1 -1
  154. package/dist/runtime/member-system-prompt.d.ts +1 -0
  155. package/dist/runtime/member-system-prompt.d.ts.map +1 -1
  156. package/dist/runtime/member-system-prompt.js +26 -4
  157. package/dist/runtime/member-system-prompt.js.map +1 -1
  158. package/dist/runtime/native-session.d.ts +6 -0
  159. package/dist/runtime/native-session.d.ts.map +1 -1
  160. package/dist/runtime/native-session.js +80 -13
  161. package/dist/runtime/native-session.js.map +1 -1
  162. package/dist/runtime/outbound-attempts.d.ts +5 -2
  163. package/dist/runtime/outbound-attempts.d.ts.map +1 -1
  164. package/dist/runtime/outbound-attempts.js +3 -2
  165. package/dist/runtime/outbound-attempts.js.map +1 -1
  166. package/dist/runtime/owner-authority.d.ts +15 -13
  167. package/dist/runtime/owner-authority.d.ts.map +1 -1
  168. package/dist/runtime/owner-authority.js +164 -8
  169. package/dist/runtime/owner-authority.js.map +1 -1
  170. package/dist/runtime/owner-runtime.d.ts +19 -4
  171. package/dist/runtime/owner-runtime.d.ts.map +1 -1
  172. package/dist/runtime/owner-runtime.js +446 -44
  173. package/dist/runtime/owner-runtime.js.map +1 -1
  174. package/dist/runtime/owner-system-prompt.d.ts +3 -1
  175. package/dist/runtime/owner-system-prompt.d.ts.map +1 -1
  176. package/dist/runtime/owner-system-prompt.js +15 -5
  177. package/dist/runtime/owner-system-prompt.js.map +1 -1
  178. package/dist/runtime/personal-job-cron.d.ts +6 -0
  179. package/dist/runtime/personal-job-cron.d.ts.map +1 -0
  180. package/dist/runtime/personal-job-cron.js +154 -0
  181. package/dist/runtime/personal-job-cron.js.map +1 -0
  182. package/dist/runtime/personal-jobs.d.ts +107 -0
  183. package/dist/runtime/personal-jobs.d.ts.map +1 -0
  184. package/dist/runtime/personal-jobs.js +353 -0
  185. package/dist/runtime/personal-jobs.js.map +1 -0
  186. package/dist/runtime/personal-notices.d.ts +38 -0
  187. package/dist/runtime/personal-notices.d.ts.map +1 -0
  188. package/dist/runtime/personal-notices.js +137 -0
  189. package/dist/runtime/personal-notices.js.map +1 -0
  190. package/dist/runtime/personal-turns.d.ts +23 -0
  191. package/dist/runtime/personal-turns.d.ts.map +1 -0
  192. package/dist/runtime/personal-turns.js +51 -0
  193. package/dist/runtime/personal-turns.js.map +1 -0
  194. package/dist/runtime/principal-access.d.ts +8 -0
  195. package/dist/runtime/principal-access.d.ts.map +1 -1
  196. package/dist/runtime/principal-access.js +99 -4
  197. package/dist/runtime/principal-access.js.map +1 -1
  198. package/dist/runtime/principal-sessions.d.ts +16 -2
  199. package/dist/runtime/principal-sessions.d.ts.map +1 -1
  200. package/dist/runtime/principal-sessions.js +104 -21
  201. package/dist/runtime/principal-sessions.js.map +1 -1
  202. package/dist/runtime/skills.d.ts +86 -0
  203. package/dist/runtime/skills.d.ts.map +1 -0
  204. package/dist/runtime/skills.js +560 -0
  205. package/dist/runtime/skills.js.map +1 -0
  206. package/dist/runtime/stimulus-delivery.d.ts +22 -1
  207. package/dist/runtime/stimulus-delivery.d.ts.map +1 -1
  208. package/dist/runtime/stimulus-delivery.js +192 -19
  209. package/dist/runtime/stimulus-delivery.js.map +1 -1
  210. package/dist/runtime/tools-paths.d.ts +9 -0
  211. package/dist/runtime/tools-paths.d.ts.map +1 -0
  212. package/dist/runtime/tools-paths.js +98 -0
  213. package/dist/runtime/tools-paths.js.map +1 -0
  214. package/dist/runtime/turn-orders.d.ts +22 -2
  215. package/dist/runtime/turn-orders.d.ts.map +1 -1
  216. package/dist/runtime/turn-orders.js +60 -6
  217. package/dist/runtime/turn-orders.js.map +1 -1
  218. package/dist/storage/chat-sources.d.ts +21 -0
  219. package/dist/storage/chat-sources.d.ts.map +1 -1
  220. package/dist/storage/chat-sources.js +66 -4
  221. package/dist/storage/chat-sources.js.map +1 -1
  222. package/dist/storage/source-archive.d.ts +13 -0
  223. package/dist/storage/source-archive.d.ts.map +1 -1
  224. package/dist/storage/source-archive.js +103 -0
  225. package/dist/storage/source-archive.js.map +1 -1
  226. package/dist/tools/command-runner.d.ts +12 -0
  227. package/dist/tools/command-runner.d.ts.map +1 -0
  228. package/dist/tools/command-runner.js +65 -0
  229. package/dist/tools/command-runner.js.map +1 -0
  230. package/dist/tools/document-render.d.ts +24 -0
  231. package/dist/tools/document-render.d.ts.map +1 -0
  232. package/dist/tools/document-render.js +208 -0
  233. package/dist/tools/document-render.js.map +1 -0
  234. package/dist/tools/document-toolkit.d.ts +15 -0
  235. package/dist/tools/document-toolkit.d.ts.map +1 -0
  236. package/dist/tools/document-toolkit.js +501 -0
  237. package/dist/tools/document-toolkit.js.map +1 -0
  238. package/dist/tools/office-render.d.ts +28 -0
  239. package/dist/tools/office-render.d.ts.map +1 -0
  240. package/dist/tools/office-render.js +98 -0
  241. package/dist/tools/office-render.js.map +1 -0
  242. package/dist/tools/toolkit-process.d.ts +9 -0
  243. package/dist/tools/toolkit-process.d.ts.map +1 -0
  244. package/dist/tools/toolkit-process.js +148 -0
  245. package/dist/tools/toolkit-process.js.map +1 -0
  246. package/dist/tools/toolkit-state.d.ts +22 -0
  247. package/dist/tools/toolkit-state.d.ts.map +1 -0
  248. package/dist/tools/toolkit-state.js +116 -0
  249. package/dist/tools/toolkit-state.js.map +1 -0
  250. package/package.json +3 -2
  251. package/toolkit/inspect-office-zip.py +16 -0
  252. package/toolkit/rasterize.py +29 -0
  253. package/toolkit/requirements.lock +664 -0
  254. package/toolkit/smoke.py +32 -0
package/CHANGELOG.md CHANGED
@@ -5,6 +5,90 @@ All notable changes to this project will be documented in this file.
5
5
  The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
6
6
  and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
7
7
 
8
+ ## [0.76.0] - 2026-10-14
9
+
10
+ ### Added
11
+
12
+ - Personal jobs (`schedule.job.*`), in a person's own DM turn only. A job is a 5-field cron with
13
+ an IANA time zone and an instruction. Runs must be at least an hour apart across a year of
14
+ daylight-saving shifts, and at most ten jobs may be active. Each due run is a stateless turn
15
+ under the person's current access. `[ack]` sends nothing; any other result goes to the DM once
16
+ and is archived as a job exchange (#481, #482).
17
+ - Event notices: from a record order, the common session names a member with `member.notice`
18
+ (refs only). The member's own stateless turn re-reads the refs under its current access and
19
+ decides whether to tell it. Nothing returns to the common session (#483).
20
+ - A managed document toolkit, installed by `mama tools install` under `tools_root` (on macOS
21
+ also the last step of `mama init`; elsewhere set `tools_root` first):
22
+ - a hash-pinned Python environment with python-pptx, python-docx, openpyxl, PyMuPDF,
23
+ pdfplumber, reportlab and Pillow;
24
+ - LibreOffice;
25
+ - Noto Sans and Serif CJK fonts.
26
+
27
+ Every session gets it first on its shell PATH. On macOS, `document.render` turns a workspace
28
+ document into a PDF and page images under a sandbox, with no network and with size and time
29
+ limits (#484).
30
+
31
+ - Skills per person (#485):
32
+ - A workflow record saved in a DM is that person's skill; one saved in the common channel is a
33
+ common skill.
34
+ - `skills/<name>/SKILL.md` folders are a person's file skills.
35
+ - `skill.publish` and `skill.unpublish` publish common file skills from the common channel.
36
+ - `skill.list` and `skill.read` serve the common session and every member's DM, not a group
37
+ room session. Nobody reads another person's skills.
38
+ - `manage.member.name`: owners name members, and every session shows the names (#479).
39
+ - Members in the common channel (#489):
40
+ - A member without the owner role works in the group in a session of its own for that room,
41
+ under its granted partitions, with no personal records and no skills.
42
+ - Its chat reads start at its enrollment, and its records are bound to it.
43
+ - A queued group message whose sender lost the owner role moves once to that member's room
44
+ session.
45
+
46
+ ### Changed
47
+
48
+ - Owners manage members from their DMs and suspend and resume each other. Self-suspend,
49
+ offboarding an owner and grant changes on an owner are refused (#478).
50
+ - Each person has its own turn chain, so a DM no longer waits for the common session or another
51
+ person's turn. Directory changes take one exclusive lane (#480).
52
+ - Restart recovery is per person: a ready outbound message to an active member's DM recovers
53
+ after a restart, and an uncertain personal input closes or gets one interruption notice (#477).
54
+ - Erasure is a durable job (#486):
55
+ - It resumes after a stop or crash.
56
+ - Nothing is erased until Telegram confirms the export, and only what the export held is
57
+ erased.
58
+ - Only the erasing member waits.
59
+ - The receipt is recovered after a restart.
60
+
61
+ Shutdown stops intake first, lets running work finish or reach a resumable point, then closes
62
+ the transports and the database last.
63
+
64
+ - An owner's DM reads the owner rules, names its person and has web search and fetch. A personal
65
+ session no longer gives the model the owner's account email (#475, #476).
66
+ - A DM is told where its readable sources live, with each source's chat families, on a new session
67
+ and on the first turn after each start. A wrongly named source is refused without reading as a
68
+ permission problem, and `trello.read` names boards next to their keys (#487, #488).
69
+ - Owner policy and rule writes need a message in the common channel, from an owner's turn there
70
+ or from a member's room session, recorded with the member. Another allowed group, a DM, Slack
71
+ and Discord cannot change them (#489).
72
+
73
+ ## [0.75.0] - 2026-10-12
74
+
75
+ ### Changed
76
+
77
+ - Owners are members. Telegram admits a private chat by the registry into that member's own
78
+ session, also when the chat is listed in `allowed_chats`; a group in `allowed_chats` admits only
79
+ active members with the `owner` role, into the common session, with the sender stored on the
80
+ input and the chat item. DM attachments go to the sender's downloads folder, and DM replies,
81
+ interruption notices and their recovery go to that person's DM and chat (#473).
82
+ - An owner's DM session is a member session with no web tools; the `owner` role adds reads of the
83
+ common scopes, connectors and channels (never another person's DM), `drive.read`, all Trello
84
+ boards, `report.read` and the help topics. Common changes are refused there and made in the
85
+ common channel. `manage.member.*` refuses owner-role targets; enrollment is unavailable for now
86
+ (#473).
87
+ - Breaking: `telegram.owner_user_ids` is refused and `telegram.owner_chat_id` must be a group or
88
+ supergroup id; `mama init` asks for the common group. `mama register-owner <telegram id>` (daemon
89
+ stopped) registers each owner as a member with the `owner` role, moves the first owner's DM chat
90
+ and checkpoints to that person and resets the common Codex thread (#473).
91
+
8
92
  ## [0.74.0] - 2026-10-11
9
93
 
10
94
  ### Added
package/README.md CHANGED
@@ -4,7 +4,7 @@ One owner agent on Claude or Codex watches connected work, keeps task revisions
4
4
  answers on Telegram, publishes reports and a board, and recalls corrections.
5
5
  [mama-core](../mama-core/README.md) supplies the shared engine.
6
6
 
7
- Current manifest: **0.74.0**. Install with `npm install -g @jungjaehoon/mama-os` (Node.js 22.13+)
7
+ Current manifest: **0.76.0**. Install with `npm install -g @jungjaehoon/mama-os` (Node.js 22.13+)
8
8
  and follow [owner setup](../../docs/start/owner-setup.md).
9
9
 
10
10
  ## Start and operate
@@ -19,6 +19,11 @@ From a checkout, run `pnpm install` and `pnpm build`, then use
19
19
  with echo off. It writes configuration and optional launchd files; backend login and service
20
20
  startup are separate steps.
21
21
 
22
+ For Telegram's common session, create a group with the bot, even for a solo owner, and enter
23
+ its negative group or supergroup ID in `mama init`. Private chats always enter personal sessions.
24
+ Before starting the daemon, set `member_root` outside HOME in `config.yaml` and run
25
+ `mama register-owner <telegram id>` for each owner's positive user ID.
26
+
22
27
  | Command | Purpose |
23
28
  | --------------------------------------------- | ------------------------------------------------ |
24
29
  | `mama init` | Set up the owner, backend and connectors |
@@ -33,6 +33,8 @@ export declare const CODE_ACT_CONTRACT: ActionContract;
33
33
  * The code_act action over a dispatcher built after it: the functions are the actions the
34
34
  * caller is granted, and each call is dispatched with the caller's own context.
35
35
  */
36
- export declare function codeActRegistration(dispatcher: () => ActionDispatcher): ActionRegistration;
36
+ export declare function codeActRegistration(dispatcher: () => ActionDispatcher): ActionRegistration & {
37
+ releasePrincipal(principalId: string): void;
38
+ };
37
39
  export {};
38
40
  //# sourceMappingURL=code-act-actions.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"code-act-actions.d.ts","sourceRoot":"","sources":["../../src/api/code-act-actions.ts"],"names":[],"mappings":"AAcA,OAAO,KAAK,EAEV,cAAc,EACd,gBAAgB,EAChB,kBAAkB,EACnB,MAAM,wBAAwB,CAAC;AAqFhC,MAAM,WAAW,WAAW;IAC1B,4DAA4D;IAC5D,SAAS,EAAE,SAAS;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IACvC,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;CACtD;AAED,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,KAAK,CAAC,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC;IAC1C,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,aAAa,EAAE,MAAM,CAAC;IACtB,UAAU,EAAE,MAAM,CAAC;IACnB,uFAAuF;IACvF,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;CACjB;AAED,KAAK,aAAa,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAK7C;;;;GAIG;AACH,wBAAgB,UAAU,CACxB,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,WAAW,EACjB,SAAS,SAAqB,EAC9B,OAAO,GAAE,aAAkB,GAC1B,OAAO,CAAC,aAAa,GAAG;IAAE,OAAO,EAAE,aAAa,CAAA;CAAE,CAAC,CA4GrD;AAED,eAAO,MAAM,iBAAiB,EAAE,cAiB/B,CAAC;AAEF;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,UAAU,EAAE,MAAM,gBAAgB,GAAG,kBAAkB,CA+D1F"}
1
+ {"version":3,"file":"code-act-actions.d.ts","sourceRoot":"","sources":["../../src/api/code-act-actions.ts"],"names":[],"mappings":"AAcA,OAAO,KAAK,EAEV,cAAc,EACd,gBAAgB,EAChB,kBAAkB,EACnB,MAAM,wBAAwB,CAAC;AAqFhC,MAAM,WAAW,WAAW;IAC1B,4DAA4D;IAC5D,SAAS,EAAE,SAAS;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IACvC,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;CACtD;AAED,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,KAAK,CAAC,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC;IAC1C,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,aAAa,EAAE,MAAM,CAAC;IACtB,UAAU,EAAE,MAAM,CAAC;IACnB,uFAAuF;IACvF,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;CACjB;AAED,KAAK,aAAa,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAK7C;;;;GAIG;AACH,wBAAgB,UAAU,CACxB,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,WAAW,EACjB,SAAS,SAAqB,EAC9B,OAAO,GAAE,aAAkB,GAC1B,OAAO,CAAC,aAAa,GAAG;IAAE,OAAO,EAAE,aAAa,CAAA;CAAE,CAAC,CA4GrD;AAED,eAAO,MAAM,iBAAiB,EAAE,cAiB/B,CAAC;AAEF;;;GAGG;AACH,wBAAgB,mBAAmB,CACjC,UAAU,EAAE,MAAM,gBAAgB,GACjC,kBAAkB,GAAG;IAAE,gBAAgB,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,CAwEtE"}
@@ -100,7 +100,7 @@ process.on('message', async (msg) => {
100
100
  process.send({ type: 'ready' });
101
101
  `;
102
102
  const DEFAULT_TIMEOUT_MS = 300_000;
103
- const CARRIED_RUNS = 4;
103
+ const CARRIED_RUNS_PER_PRINCIPAL = 4;
104
104
  /**
105
105
  * Run the code in a fresh worker process; host calls are answered by `host.call`. `carried` is
106
106
  * what the run's earlier scripts left on globalThis; the result's `carried` is what this one
@@ -216,11 +216,13 @@ exports.CODE_ACT_CONTRACT = {
216
216
  * caller is granted, and each call is dispatched with the caller's own context.
217
217
  */
218
218
  function codeActRegistration(dispatcher) {
219
- // What each run's scripts left on globalThis. Runs are serial in one owner runtime, so the
220
- // latest run is the one that continues; the daemon is long-lived and a script can hold a whole
221
- // ledger, so only the latest few runs keep theirs.
222
- const carriedByRun = new Map();
219
+ // Principals run concurrently; activity in one must not evict another's carried values.
220
+ // Retain the latest four runs per principal; scripts can carry entire ledgers.
221
+ const carriedByPrincipal = new Map();
223
222
  return {
223
+ releasePrincipal: (id) => {
224
+ carriedByPrincipal.delete(id);
225
+ },
224
226
  contract: exports.CODE_ACT_CONTRACT,
225
227
  exec: async (input, context) => {
226
228
  const dispatch = dispatcher();
@@ -235,6 +237,13 @@ function codeActRegistration(dispatcher) {
235
237
  const callable = new Set(functions.map((fn) => fn.name));
236
238
  let calls = 0;
237
239
  const runId = context.session?.modelRunId;
240
+ const principalId = context.access.principalId;
241
+ let carriedByRun = carriedByPrincipal.get(principalId);
242
+ if (!carriedByRun) {
243
+ carriedByRun = new Map();
244
+ if (runId !== undefined)
245
+ carriedByPrincipal.set(principalId, carriedByRun);
246
+ }
238
247
  const before = runId === undefined ? {} : (carriedByRun.get(runId) ?? {});
239
248
  const { carried: after, ...result } = await runCodeAct(input.code, {
240
249
  functions,
@@ -253,7 +262,7 @@ function codeActRegistration(dispatcher) {
253
262
  throw new Error(`${result.error.code}: ${result.error.message}`);
254
263
  },
255
264
  }, DEFAULT_TIMEOUT_MS, before);
256
- if (runId === undefined)
265
+ if (runId === undefined || carriedByPrincipal.get(principalId) !== carriedByRun)
257
266
  return result;
258
267
  // One model message can carry several code_act calls, each started from the same values:
259
268
  // apply only what this call changed, so it does not replace what the others left.
@@ -267,7 +276,7 @@ function codeActRegistration(dispatcher) {
267
276
  carriedByRun.delete(runId);
268
277
  carriedByRun.set(runId, current);
269
278
  for (const oldest of carriedByRun.keys()) {
270
- if (carriedByRun.size <= CARRIED_RUNS)
279
+ if (carriedByRun.size <= CARRIED_RUNS_PER_PRINCIPAL)
271
280
  break;
272
281
  carriedByRun.delete(oldest);
273
282
  }
@@ -1 +1 @@
1
- {"version":3,"file":"code-act-actions.js","sourceRoot":"","sources":["../../src/api/code-act-actions.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"code-act-actions.js","sourceRoot":"","sources":["../../src/api/code-act-actions.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ import type { ActionRegistration } from '@jungjaehoon/mama-core';
2
+ import { type DocumentRenderOptions } from '../tools/document-render.js';
3
+ export interface DocumentActionPorts extends DocumentRenderOptions {
4
+ workspaceDir?: string;
5
+ ownerPrincipalId: string;
6
+ principalPaths?: (principalId: string) => {
7
+ workspaceDir: string;
8
+ runtimeRoot?: string;
9
+ };
10
+ principalDeniedReadPaths?: (principalId: string) => readonly string[];
11
+ }
12
+ export declare function documentActionRegistrations(ports: DocumentActionPorts): ActionRegistration[];
13
+ //# sourceMappingURL=document-actions.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"document-actions.d.ts","sourceRoot":"","sources":["../../src/api/document-actions.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAGjE,OAAO,EAA0B,KAAK,qBAAqB,EAAE,MAAM,6BAA6B,CAAC;AAEjG,MAAM,WAAW,mBAAoB,SAAQ,qBAAqB;IAChE,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,gBAAgB,EAAE,MAAM,CAAC;IACzB,cAAc,CAAC,EAAE,CAAC,WAAW,EAAE,MAAM,KAAK;QAAE,YAAY,EAAE,MAAM,CAAC;QAAC,WAAW,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IACzF,wBAAwB,CAAC,EAAE,CAAC,WAAW,EAAE,MAAM,KAAK,SAAS,MAAM,EAAE,CAAC;CACvE;AAED,wBAAgB,2BAA2B,CAAC,KAAK,EAAE,mBAAmB,GAAG,kBAAkB,EAAE,CAiD5F"}
@@ -0,0 +1,55 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.documentActionRegistrations = documentActionRegistrations;
4
+ const node_os_1 = require("node:os");
5
+ const backend_security_js_1 = require("../runtime/backend-security.js");
6
+ const document_render_js_1 = require("../tools/document-render.js");
7
+ function documentActionRegistrations(ports) {
8
+ return [
9
+ {
10
+ contract: {
11
+ name: 'document.render',
12
+ summary: "Render an office document or PDF in the caller's own workspace to PDF and page PNGs. Returns workspace-relative paths, page count and embedded fonts per page. Look at every PNG before sending the document. Requires the host's mama tools install; no packages can be installed by sessions. Maximum 50 MiB and 50 pages; a new output directory beside the input preserves existing files. PDF inputs are rasterized directly.",
13
+ inputSchema: {
14
+ type: 'object',
15
+ required: ['path'],
16
+ additionalProperties: false,
17
+ properties: {
18
+ path: {
19
+ type: 'string',
20
+ pattern: '\\S',
21
+ description: 'Absolute or workspace-relative office/PDF file path inside your own workspace.',
22
+ },
23
+ },
24
+ },
25
+ },
26
+ exec: async (input, context) => {
27
+ const path = input.path;
28
+ if (typeof path !== 'string' || !path.trim())
29
+ throw new Error('document.render requires a path');
30
+ const personal = context.access.principalId !== ports.ownerPrincipalId;
31
+ if (personal && !ports.principalPaths)
32
+ throw new Error('Document render requires the caller workspace');
33
+ const paths = personal
34
+ ? ports.principalPaths(context.access.principalId)
35
+ : { workspaceDir: ports.workspaceDir };
36
+ if (!paths.workspaceDir)
37
+ throw new Error('Document render workspace is not configured');
38
+ const extra = 'runtimeRoot' in paths && typeof paths.runtimeRoot === 'string'
39
+ ? (0, backend_security_js_1.credentialReadPaths)(paths.runtimeRoot)
40
+ : [];
41
+ return (0, document_render_js_1.createDocumentRenderer)({
42
+ ...ports,
43
+ deniedReadPaths: [
44
+ (0, node_os_1.homedir)(),
45
+ ...(personal && ports.principalDeniedReadPaths
46
+ ? ports.principalDeniedReadPaths(context.access.principalId)
47
+ : (ports.deniedReadPaths ?? [])),
48
+ ...extra,
49
+ ],
50
+ }).render(paths.workspaceDir, path);
51
+ },
52
+ },
53
+ ];
54
+ }
55
+ //# sourceMappingURL=document-actions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"document-actions.js","sourceRoot":"","sources":["../../src/api/document-actions.ts"],"names":[],"mappings":";;AAYA,kEAiDC;AA5DD,qCAAkC;AAClC,wEAAqE;AACrE,oEAAiG;AASjG,SAAgB,2BAA2B,CAAC,KAA0B;IACpE,OAAO;QACL;YACE,QAAQ,EAAE;gBACR,IAAI,EAAE,iBAAiB;gBACvB,OAAO,EACL,oaAAoa;gBACta,WAAW,EAAE;oBACX,IAAI,EAAE,QAAQ;oBACd,QAAQ,EAAE,CAAC,MAAM,CAAC;oBAClB,oBAAoB,EAAE,KAAK;oBAC3B,UAAU,EAAE;wBACV,IAAI,EAAE;4BACJ,IAAI,EAAE,QAAQ;4BACd,OAAO,EAAE,KAAK;4BACd,WAAW,EACT,gFAAgF;yBACnF;qBACF;iBACF;aACF;YACD,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE;gBAC7B,MAAM,IAAI,GAAI,KAA4B,CAAC,IAAI,CAAC;gBAChD,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;oBAC1C,MAAM,IAAI,KAAK,CAAC,iCAAiC,CAAC,CAAC;gBACrD,MAAM,QAAQ,GAAG,OAAO,CAAC,MAAM,CAAC,WAAW,KAAK,KAAK,CAAC,gBAAgB,CAAC;gBACvE,IAAI,QAAQ,IAAI,CAAC,KAAK,CAAC,cAAc;oBACnC,MAAM,IAAI,KAAK,CAAC,+CAA+C,CAAC,CAAC;gBACnE,MAAM,KAAK,GAAG,QAAQ;oBACpB,CAAC,CAAC,KAAK,CAAC,cAAe,CAAC,OAAO,CAAC,MAAM,CAAC,WAAW,CAAC;oBACnD,CAAC,CAAC,EAAE,YAAY,EAAE,KAAK,CAAC,YAAY,EAAE,CAAC;gBACzC,IAAI,CAAC,KAAK,CAAC,YAAY;oBAAE,MAAM,IAAI,KAAK,CAAC,6CAA6C,CAAC,CAAC;gBACxF,MAAM,KAAK,GACT,aAAa,IAAI,KAAK,IAAI,OAAO,KAAK,CAAC,WAAW,KAAK,QAAQ;oBAC7D,CAAC,CAAC,IAAA,yCAAmB,EAAC,KAAK,CAAC,WAAW,CAAC;oBACxC,CAAC,CAAC,EAAE,CAAC;gBACT,OAAO,IAAA,2CAAsB,EAAC;oBAC5B,GAAG,KAAK;oBACR,eAAe,EAAE;wBACf,IAAA,iBAAO,GAAE;wBACT,GAAG,CAAC,QAAQ,IAAI,KAAK,CAAC,wBAAwB;4BAC5C,CAAC,CAAC,KAAK,CAAC,wBAAwB,CAAC,OAAO,CAAC,MAAM,CAAC,WAAW,CAAC;4BAC5D,CAAC,CAAC,CAAC,KAAK,CAAC,eAAe,IAAI,EAAE,CAAC,CAAC;wBAClC,GAAG,KAAK;qBACT;iBACF,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,YAAY,EAAE,IAAI,CAAC,CAAC;YACtC,CAAC;SACF;KACF,CAAC;AACJ,CAAC"}
@@ -1,7 +1,9 @@
1
- import type { ActionContext, ActionRegistration } from '@jungjaehoon/mama-core';
1
+ import { type ActionContext, type ActionRegistration } from '@jungjaehoon/mama-core';
2
+ import type { DatabaseInstance } from '@jungjaehoon/mama-core/db-manager';
2
3
  import { type GwsCallOptions } from '../connectors/framework/gws-utils.js';
3
4
  export type GwsCall = (args: string[], options?: GwsCallOptions) => Promise<unknown>;
4
5
  export interface DriveActionPorts {
6
+ adapter: DatabaseInstance;
5
7
  ownerPrincipalId: string;
6
8
  downloadsDir?: string;
7
9
  gws?: GwsCall;
@@ -1 +1 @@
1
- {"version":3,"file":"drive-actions.d.ts","sourceRoot":"","sources":["../../src/api/drive-actions.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,aAAa,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAEhF,OAAO,EAAgB,KAAK,cAAc,EAAE,MAAM,sCAAsC,CAAC;AAGzF,MAAM,MAAM,OAAO,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,OAAO,CAAC,EAAE,cAAc,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;AAErF,MAAM,WAAW,gBAAgB;IAC/B,gBAAgB,EAAE,MAAM,CAAC;IACzB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,GAAG,CAAC,EAAE,OAAO,CAAC;CACf;AA0CD,wBAAgB,SAAS,CACvB,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,aAAa,CAAC,QAAQ,CAAC,EAC/B,gBAAgB,EAAE,MAAM,QAMzB;AAED,6FAA6F;AAC7F,wBAAgB,OAAO,CAAC,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAa7D;AAsBD,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,gBAAgB,GAAG,kBAAkB,EAAE,CAwQtF"}
1
+ {"version":3,"file":"drive-actions.d.ts","sourceRoot":"","sources":["../../src/api/drive-actions.ts"],"names":[],"mappings":"AAQA,OAAO,EAEL,KAAK,aAAa,EAClB,KAAK,kBAAkB,EACxB,MAAM,wBAAwB,CAAC;AAChC,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,mCAAmC,CAAC;AAE1E,OAAO,EAAgB,KAAK,cAAc,EAAE,MAAM,sCAAsC,CAAC;AAIzF,MAAM,MAAM,OAAO,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,OAAO,CAAC,EAAE,cAAc,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;AAErF,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,gBAAgB,CAAC;IAC1B,gBAAgB,EAAE,MAAM,CAAC;IACzB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,GAAG,CAAC,EAAE,OAAO,CAAC;CACf;AA0CD,wBAAgB,SAAS,CACvB,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,aAAa,CAAC,QAAQ,CAAC,EAC/B,gBAAgB,EAAE,MAAM,QAMzB;AAED,6FAA6F;AAC7F,wBAAgB,OAAO,CAAC,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAa7D;AAsBD,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,gBAAgB,GAAG,kBAAkB,EAAE,CAgRtF"}
@@ -11,8 +11,10 @@ exports.driveActionRegistrations = driveActionRegistrations;
11
11
  */
12
12
  const node_fs_1 = require("node:fs");
13
13
  const node_path_1 = require("node:path");
14
+ const mama_core_1 = require("@jungjaehoon/mama-core");
14
15
  const gws_utils_js_1 = require("../connectors/framework/gws-utils.js");
15
16
  const attachment_actions_js_1 = require("./attachment-actions.js");
17
+ const owner_authority_js_1 = require("../runtime/owner-authority.js");
16
18
  const FOLDER = 'application/vnd.google-apps.folder';
17
19
  const FILE_FIELDS = 'id,name,mimeType,size,modifiedTime,lastModifyingUser(displayName),parents,driveId,webViewLink';
18
20
  const LIST_BUFFER = 16 * 1024 * 1024;
@@ -81,6 +83,7 @@ function fileView(file) {
81
83
  };
82
84
  }
83
85
  function driveActionRegistrations(ports) {
86
+ let principals;
84
87
  const gws = ports.gws ?? gws_utils_js_1.execGwsAsync;
85
88
  /**
86
89
  * Pages until `max` entries or the end, because Drive may return short or empty pages before
@@ -171,7 +174,9 @@ function driveActionRegistrations(ports) {
171
174
  ],
172
175
  },
173
176
  exec: async (input, context) => {
174
- ownerOnly('drive.read', context.access, ports.ownerPrincipalId);
177
+ if (context.access.principalId !== ports.ownerPrincipalId &&
178
+ !(0, owner_authority_js_1.holdsOwnerRole)((principals ??= (0, mama_core_1.createPrincipalRepository)(ports.adapter)), context.access.principalId))
179
+ ownerOnly('drive.read', context.access, ports.ownerPrincipalId);
175
180
  const values = input;
176
181
  switch (values.view) {
177
182
  case 'drives': {
@@ -1 +1 @@
1
- {"version":3,"file":"drive-actions.js","sourceRoot":"","sources":["../../src/api/drive-actions.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"drive-actions.js","sourceRoot":"","sources":["../../src/api/drive-actions.ts"],"names":[],"mappings":"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"}
@@ -5,19 +5,22 @@ export interface MemberSelection {
5
5
  sourceMessageRef: string;
6
6
  ownerUserId: string;
7
7
  userId: string;
8
+ /** Optional name supplied by the acting owner in the enrollment action. */
9
+ name?: string;
8
10
  }
9
11
  export interface MemberEnrollmentPorts {
10
12
  memberRoot?: string;
11
- ownerUserIds: readonly string[];
12
- requestSelection(sourceMessageRef: string): Promise<void>;
13
- serveMember?(principalId: string): void;
13
+ requestSelection(sourceMessageRef: string, ownerUserId: string, name?: string): Promise<void>;
14
+ cancelSelection?(principalId: string): void;
15
+ serveMember?(principalId: string): void | 'next_start' | 'after_erasure';
14
16
  }
15
17
  export declare function createMemberEnrollment(options: {
16
18
  adapter: DatabaseInstance;
17
19
  ownerPrincipalId: string;
18
- isOwnerMessageTurn(sourceMessageRef: string): boolean;
20
+ isOwnerMessageTurn(sourceMessageRef: string, principalId: string): boolean;
19
21
  ownerAccess(): JudgmentAccess;
20
22
  ports?: MemberEnrollmentPorts;
23
+ directoryChange?: <T>(work: () => Promise<T>) => Promise<T>;
21
24
  }): {
22
25
  registration: ActionRegistration;
23
26
  complete: (selection: MemberSelection, dispatch: ActionDispatcher) => Promise<import("@jungjaehoon/mama-core").ActionResult>;
@@ -1 +1 @@
1
- {"version":3,"file":"member-enrollment.d.ts","sourceRoot":"","sources":["../../src/api/member-enrollment.ts"],"names":[],"mappings":"AAGA,OAAO,EAGL,KAAK,gBAAgB,EACrB,KAAK,kBAAkB,EACvB,KAAK,cAAc,EACpB,MAAM,wBAAwB,CAAC;AAChC,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,mCAAmC,CAAC;AAK1E,+EAA+E;AAC/E,MAAM,WAAW,eAAe;IAC9B,gBAAgB,EAAE,MAAM,CAAC;IACzB,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,qBAAqB;IACpC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,SAAS,MAAM,EAAE,CAAC;IAChC,gBAAgB,CAAC,gBAAgB,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC1D,WAAW,CAAC,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;CACzC;AAED,wBAAgB,sBAAsB,CAAC,OAAO,EAAE;IAC9C,OAAO,EAAE,gBAAgB,CAAC;IAC1B,gBAAgB,EAAE,MAAM,CAAC;IACzB,kBAAkB,CAAC,gBAAgB,EAAE,MAAM,GAAG,OAAO,CAAC;IACtD,WAAW,IAAI,cAAc,CAAC;IAC9B,KAAK,CAAC,EAAE,qBAAqB,CAAC;CAC/B;;0BAsH+B,eAAe,YAAY,gBAAgB;EAgB1E"}
1
+ {"version":3,"file":"member-enrollment.d.ts","sourceRoot":"","sources":["../../src/api/member-enrollment.ts"],"names":[],"mappings":"AACA,OAAO,EAGL,KAAK,gBAAgB,EACrB,KAAK,kBAAkB,EACvB,KAAK,cAAc,EACpB,MAAM,wBAAwB,CAAC;AAChC,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,mCAAmC,CAAC;AAM1E,+EAA+E;AAC/E,MAAM,WAAW,eAAe;IAC9B,gBAAgB,EAAE,MAAM,CAAC;IACzB,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC;IACf,2EAA2E;IAC3E,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,qBAAqB;IACpC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,gBAAgB,CAAC,gBAAgB,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC9F,eAAe,CAAC,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5C,WAAW,CAAC,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI,GAAG,YAAY,GAAG,eAAe,CAAC;CAC1E;AAED,wBAAgB,sBAAsB,CAAC,OAAO,EAAE;IAC9C,OAAO,EAAE,gBAAgB,CAAC;IAC1B,gBAAgB,EAAE,MAAM,CAAC;IACzB,kBAAkB,CAAC,gBAAgB,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC;IAC3E,WAAW,IAAI,cAAc,CAAC;IAC9B,KAAK,CAAC,EAAE,qBAAqB,CAAC;IAC9B,eAAe,CAAC,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,KAAK,OAAO,CAAC,CAAC,CAAC,CAAC;CAC7D;;0BAyI+B,eAAe,YAAY,gBAAgB;EAiC1E"}
@@ -2,11 +2,10 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.createMemberEnrollment = createMemberEnrollment;
4
4
  const node_crypto_1 = require("node:crypto");
5
- const node_fs_1 = require("node:fs");
6
- const node_path_1 = require("node:path");
7
5
  const mama_core_1 = require("@jungjaehoon/mama-core");
8
- const backend_security_js_1 = require("../runtime/backend-security.js");
9
- const member_paths_js_1 = require("../runtime/member-paths.js");
6
+ const member_smoke_state_js_1 = require("./member-smoke-state.js");
7
+ const member_lifecycle_js_1 = require("./member-lifecycle.js");
8
+ const owner_authority_js_1 = require("../runtime/owner-authority.js");
10
9
  const principal_access_js_1 = require("../runtime/principal-access.js");
11
10
  function createMemberEnrollment(options) {
12
11
  // A completion exists only while a host-issued dispatcher operation is executing.
@@ -14,19 +13,30 @@ function createMemberEnrollment(options) {
14
13
  const registration = {
15
14
  contract: {
16
15
  name: 'manage.member.enroll',
17
- summary: "Ask the owner to pick one member with a Telegram button in the owner's DM. Only an owner message turn may request enrollment; delta, scheduled, replay, member and subagent turns are denied. Requires member_root and a daemon restart after configuring it. The host registers the selected identity; this action accepts no person, chat or grants. Returns pending; enrollment grants no shared access and does not admit member messages.",
18
- inputSchema: { type: 'object', additionalProperties: false, properties: {} },
16
+ summary: "Enrollment runs in an active owner-role caller's own message turn (DM or the common channel), sending the Choose member button to the owner's own Telegram DM. Requires member_root and a daemon restart after configuring it. The host registers the selected identity; this action accepts an optional owner supplied name for the new member, but no identity, chat or grants. Telegram names are not used. Returns pending; enrollment grants no shared access. Active members' own messages are admitted by the registry.",
17
+ inputSchema: {
18
+ type: 'object',
19
+ additionalProperties: false,
20
+ properties: {
21
+ name: {
22
+ type: 'string',
23
+ pattern: '\\S',
24
+ description: 'Optional member display name: 1 to 120 characters after trimming.',
25
+ },
26
+ },
27
+ },
19
28
  examples: [{ title: 'Ask the owner to choose a member', input: {} }],
20
29
  },
21
- exec: async (_input, context) => {
22
- const ref = context.session?.sourceMessageRef;
23
- if (context.access.principalId !== options.ownerPrincipalId ||
24
- context.session?.replaySourceEndMs !== undefined ||
25
- !ref ||
26
- !options.isOwnerMessageTurn(ref)) {
27
- throw Object.assign(new Error('Enrollment is available only in an owner message turn'), {
30
+ exec: async (input, context) => {
31
+ const name = input.name?.trim();
32
+ if (name !== undefined && !(0, member_lifecycle_js_1.memberNameAllowed)(name))
33
+ throw Object.assign(new Error("A name may use letters, digits, spaces and . - ' · only"), {
28
34
  name: 'denied',
29
35
  });
36
+ const ref = context.session?.sourceMessageRef;
37
+ const caller = (0, owner_authority_js_1.activeOwnerMessageCaller)(context, options);
38
+ if (!caller) {
39
+ throw Object.assign(new Error("Enrollment requires a registered person's message turn from an active owner-role member. Discord and Slack common turns have no registered sender; use Telegram."), { name: 'denied' });
30
40
  }
31
41
  const ports = options.ports;
32
42
  if (!ports)
@@ -39,9 +49,17 @@ function createMemberEnrollment(options) {
39
49
  });
40
50
  const selection = context.operationId ? completions.get(context.operationId) : undefined;
41
51
  if (!selection) {
42
- await ports.requestSelection(ref);
52
+ const callerAccess = (0, principal_access_js_1.resolvePrincipalAccess)(caller, {
53
+ adapter: options.adapter,
54
+ ownerAccess: options.ownerAccess(),
55
+ agentId: `member-agent:${caller}`,
56
+ });
57
+ const dm = callerAccess.destinations.find((destination) => destination.kind === 'telegram');
58
+ await ports.requestSelection(ref, dm.id, name);
43
59
  return { status: 'pending' };
44
60
  }
61
+ if (!context.memberEnrollmentQueued)
62
+ return options.directoryChange(async () => registration.exec(input, { ...context, memberEnrollmentQueued: true }));
45
63
  const repo = (0, mama_core_1.createPrincipalRepository)(options.adapter);
46
64
  const current = repo.resolveByExternal('telegram', 'private', selection.userId);
47
65
  const receipt = (status, principalId, message) => ({
@@ -52,14 +70,16 @@ function createMemberEnrollment(options) {
52
70
  ...(message ? { message } : {}),
53
71
  });
54
72
  if (selection.userId === selection.ownerUserId)
55
- return receipt('refused', options.ownerPrincipalId, "The owner's own identity cannot be enrolled");
56
- if (ports.ownerUserIds.includes(selection.userId))
57
- return receipt('refused', current?.principalId ?? null, 'The selected identity is an owner listed in Telegram owner_user_ids; an owner is not enrolled as a member');
73
+ return receipt('refused', caller, "The owner's own identity cannot be enrolled");
58
74
  if (current && current.status !== 'active')
59
75
  return receipt('refused', current.principalId, `The selected principal is ${current.status}`);
60
76
  if (current?.kind === 'member') {
61
- ports.serveMember?.(current.principalId);
62
- return receipt('exists', current.principalId);
77
+ const serving = ports.serveMember?.(current.principalId);
78
+ return receipt('exists', current.principalId, serving === 'next_start'
79
+ ? 'The member is registered and will be served at the next start'
80
+ : serving === 'after_erasure'
81
+ ? "The member's personal records are being erased; it is served again when that ends"
82
+ : undefined);
63
83
  }
64
84
  if (current && current.principalId !== options.ownerPrincipalId)
65
85
  return receipt('refused', current.principalId, 'The selected identity belongs to another owner');
@@ -76,35 +96,47 @@ function createMemberEnrollment(options) {
76
96
  expectedPrincipalId: options.ownerPrincipalId,
77
97
  })
78
98
  : repo.registerMember(identity);
99
+ if (name !== undefined)
100
+ repo.setDisplayName({ principalId: id, displayName: name, now: identity.now });
79
101
  (0, principal_access_js_1.resolvePrincipalAccess)(id, {
80
102
  adapter: options.adapter,
81
103
  ownerAccess: options.ownerAccess(),
82
104
  agentId: `member-agent:${id}`,
83
105
  });
84
- // Validate the old smoke paths before removing anything, including symlink containment.
85
- const paths = (0, member_paths_js_1.ensureMemberPaths)(ports.memberRoot, id);
86
- const temp = (0, member_paths_js_1.memberClaudeTmpDir)(id);
87
- const expectedTemp = (0, node_path_1.join)((0, backend_security_js_1.physicalReadPath)((0, node_path_1.dirname)(backend_security_js_1.MEMBER_CLAUDE_TMP_PARENT)), (0, node_path_1.basename)(backend_security_js_1.MEMBER_CLAUDE_TMP_PARENT), (0, node_path_1.basename)(temp));
88
- if ((0, backend_security_js_1.physicalReadPath)(temp) !== expectedTemp)
89
- throw new Error('Member temp path must not be a symlink');
90
- (0, node_fs_1.rmSync)(paths.runtimeRoot, { recursive: true, force: true });
91
- (0, node_fs_1.rmSync)(temp, { recursive: true, force: true });
92
- (0, member_paths_js_1.ensureMemberPaths)(ports.memberRoot, id);
93
- (0, node_fs_1.mkdirSync)(temp, { recursive: true, mode: 0o700 });
106
+ (0, member_smoke_state_js_1.clearMemberSmokeState)(ports.memberRoot, id);
94
107
  return id;
95
108
  });
96
- ports.serveMember?.(principalId);
97
- return receipt('created', principalId);
109
+ const serving = ports.serveMember?.(principalId);
110
+ return receipt('created', principalId, serving === 'next_start'
111
+ ? 'The member is registered and will be served at the next start'
112
+ : undefined);
98
113
  },
99
114
  };
100
115
  return {
101
116
  registration,
102
117
  complete: async (selection, dispatch) => {
118
+ const repository = (0, mama_core_1.createPrincipalRepository)(options.adapter);
119
+ const person = repository.resolveByExternal('telegram', 'private', selection.ownerUserId);
120
+ if (person?.kind !== 'member')
121
+ throw new Error('Enrollment caller must be a registered member');
122
+ const personalAccess = (0, principal_access_js_1.resolvePrincipalAccess)(person.principalId, {
123
+ adapter: options.adapter,
124
+ ownerAccess: options.ownerAccess(),
125
+ agentId: `member-agent:${person.principalId}`,
126
+ });
127
+ // The original request may be a common-channel turn; retain that room's host binding.
128
+ const access = options.isOwnerMessageTurn(selection.sourceMessageRef, person.principalId)
129
+ ? personalAccess
130
+ : options.ownerAccess();
103
131
  const operationId = `member-enrollment:${(0, node_crypto_1.randomUUID)()}`;
104
132
  completions.set(operationId, selection);
105
133
  try {
106
- return await dispatch({ action: registration.contract.name, input: {}, operationId }, {
107
- access: options.ownerAccess(),
134
+ return await dispatch({
135
+ action: registration.contract.name,
136
+ input: selection.name === undefined ? {} : { name: selection.name },
137
+ operationId,
138
+ }, {
139
+ access,
108
140
  session: { sourceMessageRef: selection.sourceMessageRef },
109
141
  });
110
142
  }