@jungjaehoon/mama-os 0.78.0 → 0.79.1

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 (288) hide show
  1. package/CHANGELOG.md +341 -0
  2. package/README.md +38 -24
  3. package/db/migrations/002-model-runs-parent-index.sql +11 -0
  4. package/db/migrations/003-upkeep-settled.sql +15 -0
  5. package/dist/api/google-read-actions.d.ts +30 -0
  6. package/dist/api/google-read-actions.d.ts.map +1 -0
  7. package/dist/api/google-read-actions.js +256 -0
  8. package/dist/api/google-read-actions.js.map +1 -0
  9. package/dist/api/record-actions.d.ts.map +1 -1
  10. package/dist/api/record-actions.js +23 -5
  11. package/dist/api/record-actions.js.map +1 -1
  12. package/dist/api/report-handler.d.ts +0 -6
  13. package/dist/api/report-handler.d.ts.map +1 -1
  14. package/dist/api/report-handler.js +0 -54
  15. package/dist/api/report-handler.js.map +1 -1
  16. package/dist/api/security-events.d.ts +1 -1
  17. package/dist/api/security-events.d.ts.map +1 -1
  18. package/dist/api/security-events.js.map +1 -1
  19. package/dist/api/source-actions.d.ts +9 -0
  20. package/dist/api/source-actions.d.ts.map +1 -1
  21. package/dist/api/source-actions.js +49 -0
  22. package/dist/api/source-actions.js.map +1 -1
  23. package/dist/api/viewer-request-security.d.ts +14 -1
  24. package/dist/api/viewer-request-security.d.ts.map +1 -1
  25. package/dist/api/viewer-request-security.js +26 -3
  26. package/dist/api/viewer-request-security.js.map +1 -1
  27. package/dist/api/viewer-server.d.ts +7 -0
  28. package/dist/api/viewer-server.d.ts.map +1 -1
  29. package/dist/api/viewer-server.js +32 -0
  30. package/dist/api/viewer-server.js.map +1 -1
  31. package/dist/api/work-actions.d.ts +19 -2
  32. package/dist/api/work-actions.d.ts.map +1 -1
  33. package/dist/api/work-actions.js +15 -0
  34. package/dist/api/work-actions.js.map +1 -1
  35. package/dist/cli/commands/backup.d.ts +7 -6
  36. package/dist/cli/commands/backup.d.ts.map +1 -1
  37. package/dist/cli/commands/backup.js +44 -7
  38. package/dist/cli/commands/backup.js.map +1 -1
  39. package/dist/cli/commands/control.d.ts +22 -4
  40. package/dist/cli/commands/control.d.ts.map +1 -1
  41. package/dist/cli/commands/control.js +172 -11
  42. package/dist/cli/commands/control.js.map +1 -1
  43. package/dist/cli/commands/daemon.d.ts +13 -2
  44. package/dist/cli/commands/daemon.d.ts.map +1 -1
  45. package/dist/cli/commands/daemon.js +211 -5
  46. package/dist/cli/commands/daemon.js.map +1 -1
  47. package/dist/cli/commands/init-questions.d.ts +110 -0
  48. package/dist/cli/commands/init-questions.d.ts.map +1 -0
  49. package/dist/cli/commands/init-questions.js +445 -0
  50. package/dist/cli/commands/init-questions.js.map +1 -0
  51. package/dist/cli/commands/init-section.d.ts +13 -0
  52. package/dist/cli/commands/init-section.d.ts.map +1 -0
  53. package/dist/cli/commands/init-section.js +439 -0
  54. package/dist/cli/commands/init-section.js.map +1 -0
  55. package/dist/cli/commands/init.d.ts +56 -2
  56. package/dist/cli/commands/init.d.ts.map +1 -1
  57. package/dist/cli/commands/init.js +562 -351
  58. package/dist/cli/commands/init.js.map +1 -1
  59. package/dist/cli/commands/node-move.d.ts +20 -0
  60. package/dist/cli/commands/node-move.d.ts.map +1 -0
  61. package/dist/cli/commands/node-move.js +289 -0
  62. package/dist/cli/commands/node-move.js.map +1 -0
  63. package/dist/cli/commands/register-owner.d.ts +3 -0
  64. package/dist/cli/commands/register-owner.d.ts.map +1 -1
  65. package/dist/cli/commands/register-owner.js +2 -0
  66. package/dist/cli/commands/register-owner.js.map +1 -1
  67. package/dist/cli/commands/restore.d.ts +2 -0
  68. package/dist/cli/commands/restore.d.ts.map +1 -1
  69. package/dist/cli/commands/restore.js +7 -0
  70. package/dist/cli/commands/restore.js.map +1 -1
  71. package/dist/cli/commands/service.d.ts +16 -0
  72. package/dist/cli/commands/service.d.ts.map +1 -1
  73. package/dist/cli/commands/service.js +36 -8
  74. package/dist/cli/commands/service.js.map +1 -1
  75. package/dist/cli/commands/tools.d.ts +1 -1
  76. package/dist/cli/commands/tools.d.ts.map +1 -1
  77. package/dist/cli/commands/tools.js +8 -3
  78. package/dist/cli/commands/tools.js.map +1 -1
  79. package/dist/cli/commands/uninstall.d.ts.map +1 -1
  80. package/dist/cli/commands/uninstall.js +123 -15
  81. package/dist/cli/commands/uninstall.js.map +1 -1
  82. package/dist/cli/commands/update.d.ts +59 -0
  83. package/dist/cli/commands/update.d.ts.map +1 -0
  84. package/dist/cli/commands/update.js +948 -0
  85. package/dist/cli/commands/update.js.map +1 -0
  86. package/dist/cli/index.js +8 -4
  87. package/dist/cli/index.js.map +1 -1
  88. package/dist/cli/launch-files.d.ts +36 -0
  89. package/dist/cli/launch-files.d.ts.map +1 -1
  90. package/dist/cli/launch-files.js +94 -1
  91. package/dist/cli/launch-files.js.map +1 -1
  92. package/dist/cli/prompt.d.ts +2 -1
  93. package/dist/cli/prompt.d.ts.map +1 -1
  94. package/dist/cli/prompt.js +5 -2
  95. package/dist/cli/prompt.js.map +1 -1
  96. package/dist/cli/runtime/backup.d.ts +17 -1
  97. package/dist/cli/runtime/backup.d.ts.map +1 -1
  98. package/dist/cli/runtime/backup.js +32 -4
  99. package/dist/cli/runtime/backup.js.map +1 -1
  100. package/dist/cli/runtime/daemon-control.d.ts +92 -7
  101. package/dist/cli/runtime/daemon-control.d.ts.map +1 -1
  102. package/dist/cli/runtime/daemon-control.js +183 -8
  103. package/dist/cli/runtime/daemon-control.js.map +1 -1
  104. package/dist/cli/runtime/default-roots.d.ts +27 -0
  105. package/dist/cli/runtime/default-roots.d.ts.map +1 -0
  106. package/dist/cli/runtime/default-roots.js +61 -0
  107. package/dist/cli/runtime/default-roots.js.map +1 -0
  108. package/dist/cli/runtime/diagnostics.d.ts +25 -0
  109. package/dist/cli/runtime/diagnostics.d.ts.map +1 -1
  110. package/dist/cli/runtime/diagnostics.js +250 -63
  111. package/dist/cli/runtime/diagnostics.js.map +1 -1
  112. package/dist/cli/runtime/init-state.d.ts +20 -0
  113. package/dist/cli/runtime/init-state.d.ts.map +1 -0
  114. package/dist/cli/runtime/init-state.js +51 -0
  115. package/dist/cli/runtime/init-state.js.map +1 -0
  116. package/dist/cli/runtime/install-kind.d.ts +54 -0
  117. package/dist/cli/runtime/install-kind.d.ts.map +1 -0
  118. package/dist/cli/runtime/install-kind.js +164 -0
  119. package/dist/cli/runtime/install-kind.js.map +1 -0
  120. package/dist/cli/runtime/node-move-journal.d.ts +44 -0
  121. package/dist/cli/runtime/node-move-journal.d.ts.map +1 -0
  122. package/dist/cli/runtime/node-move-journal.js +48 -0
  123. package/dist/cli/runtime/node-move-journal.js.map +1 -0
  124. package/dist/cli/runtime/release-check.d.ts +94 -0
  125. package/dist/cli/runtime/release-check.d.ts.map +1 -0
  126. package/dist/cli/runtime/release-check.js +316 -0
  127. package/dist/cli/runtime/release-check.js.map +1 -0
  128. package/dist/cli/runtime/setup-page.d.ts +57 -0
  129. package/dist/cli/runtime/setup-page.d.ts.map +1 -0
  130. package/dist/cli/runtime/setup-page.js +266 -0
  131. package/dist/cli/runtime/setup-page.js.map +1 -0
  132. package/dist/cli/runtime/source-tools.d.ts +60 -0
  133. package/dist/cli/runtime/source-tools.d.ts.map +1 -0
  134. package/dist/cli/runtime/source-tools.js +170 -0
  135. package/dist/cli/runtime/source-tools.js.map +1 -0
  136. package/dist/cli/runtime/telegram-pairing.d.ts +73 -0
  137. package/dist/cli/runtime/telegram-pairing.d.ts.map +1 -0
  138. package/dist/cli/runtime/telegram-pairing.js +184 -0
  139. package/dist/cli/runtime/telegram-pairing.js.map +1 -0
  140. package/dist/cli/runtime/update-journal.d.ts +135 -0
  141. package/dist/cli/runtime/update-journal.d.ts.map +1 -0
  142. package/dist/cli/runtime/update-journal.js +144 -0
  143. package/dist/cli/runtime/update-journal.js.map +1 -0
  144. package/dist/cli/runtime/update-progress.d.ts +95 -0
  145. package/dist/cli/runtime/update-progress.d.ts.map +1 -0
  146. package/dist/cli/runtime/update-progress.js +154 -0
  147. package/dist/cli/runtime/update-progress.js.map +1 -0
  148. package/dist/cli/runtime/update-request.d.ts +58 -0
  149. package/dist/cli/runtime/update-request.d.ts.map +1 -0
  150. package/dist/cli/runtime/update-request.js +172 -0
  151. package/dist/cli/runtime/update-request.js.map +1 -0
  152. package/dist/connectors/calendar/index.d.ts +5 -1
  153. package/dist/connectors/calendar/index.d.ts.map +1 -1
  154. package/dist/connectors/calendar/index.js +19 -28
  155. package/dist/connectors/calendar/index.js.map +1 -1
  156. package/dist/connectors/chatwork/index.d.ts.map +1 -1
  157. package/dist/connectors/chatwork/index.js +7 -3
  158. package/dist/connectors/chatwork/index.js.map +1 -1
  159. package/dist/connectors/config-loader.d.ts +5 -0
  160. package/dist/connectors/config-loader.d.ts.map +1 -1
  161. package/dist/connectors/config-loader.js +8 -0
  162. package/dist/connectors/config-loader.js.map +1 -1
  163. package/dist/connectors/discord/index.d.ts.map +1 -1
  164. package/dist/connectors/discord/index.js +4 -3
  165. package/dist/connectors/discord/index.js.map +1 -1
  166. package/dist/connectors/drive/index.d.ts.map +1 -1
  167. package/dist/connectors/drive/index.js +15 -13
  168. package/dist/connectors/drive/index.js.map +1 -1
  169. package/dist/connectors/framework/gws-utils.d.ts +62 -0
  170. package/dist/connectors/framework/gws-utils.d.ts.map +1 -1
  171. package/dist/connectors/framework/gws-utils.js +133 -3
  172. package/dist/connectors/framework/gws-utils.js.map +1 -1
  173. package/dist/connectors/framework/types.d.ts +24 -0
  174. package/dist/connectors/framework/types.d.ts.map +1 -1
  175. package/dist/connectors/framework/types.js +9 -0
  176. package/dist/connectors/framework/types.js.map +1 -1
  177. package/dist/connectors/gmail/index.d.ts.map +1 -1
  178. package/dist/connectors/gmail/index.js +14 -13
  179. package/dist/connectors/gmail/index.js.map +1 -1
  180. package/dist/connectors/index.d.ts +4 -4
  181. package/dist/connectors/index.d.ts.map +1 -1
  182. package/dist/connectors/index.js +4 -10
  183. package/dist/connectors/index.js.map +1 -1
  184. package/dist/connectors/notion/index.d.ts.map +1 -1
  185. package/dist/connectors/notion/index.js +5 -3
  186. package/dist/connectors/notion/index.js.map +1 -1
  187. package/dist/connectors/sheets/index.d.ts.map +1 -1
  188. package/dist/connectors/sheets/index.js +17 -12
  189. package/dist/connectors/sheets/index.js.map +1 -1
  190. package/dist/connectors/slack/index.d.ts.map +1 -1
  191. package/dist/connectors/slack/index.js +9 -3
  192. package/dist/connectors/slack/index.js.map +1 -1
  193. package/dist/connectors/telegram/index.d.ts.map +1 -1
  194. package/dist/connectors/telegram/index.js +4 -3
  195. package/dist/connectors/telegram/index.js.map +1 -1
  196. package/dist/connectors/trello/index.d.ts +1 -1
  197. package/dist/connectors/trello/index.d.ts.map +1 -1
  198. package/dist/connectors/trello/index.js +10 -5
  199. package/dist/connectors/trello/index.js.map +1 -1
  200. package/dist/gateways/discord.d.ts +6 -0
  201. package/dist/gateways/discord.d.ts.map +1 -1
  202. package/dist/gateways/discord.js +38 -27
  203. package/dist/gateways/discord.js.map +1 -1
  204. package/dist/gateways/slack.d.ts +6 -0
  205. package/dist/gateways/slack.d.ts.map +1 -1
  206. package/dist/gateways/slack.js +38 -27
  207. package/dist/gateways/slack.js.map +1 -1
  208. package/dist/gateways/telegram-commands.d.ts +124 -0
  209. package/dist/gateways/telegram-commands.d.ts.map +1 -0
  210. package/dist/gateways/telegram-commands.js +131 -0
  211. package/dist/gateways/telegram-commands.js.map +1 -0
  212. package/dist/gateways/telegram.d.ts +20 -0
  213. package/dist/gateways/telegram.d.ts.map +1 -1
  214. package/dist/gateways/telegram.js +138 -34
  215. package/dist/gateways/telegram.js.map +1 -1
  216. package/dist/gateways/turn-contract.d.ts +11 -0
  217. package/dist/gateways/turn-contract.d.ts.map +1 -1
  218. package/dist/runtime/action-surface.d.ts +1 -1
  219. package/dist/runtime/action-surface.d.ts.map +1 -1
  220. package/dist/runtime/action-surface.js +10 -0
  221. package/dist/runtime/action-surface.js.map +1 -1
  222. package/dist/runtime/backend-security.d.ts +23 -2
  223. package/dist/runtime/backend-security.d.ts.map +1 -1
  224. package/dist/runtime/backend-security.js +50 -5
  225. package/dist/runtime/backend-security.js.map +1 -1
  226. package/dist/runtime/member-paths.d.ts +15 -7
  227. package/dist/runtime/member-paths.d.ts.map +1 -1
  228. package/dist/runtime/member-paths.js +64 -12
  229. package/dist/runtime/member-paths.js.map +1 -1
  230. package/dist/runtime/member-session.d.ts +4 -0
  231. package/dist/runtime/member-session.d.ts.map +1 -1
  232. package/dist/runtime/member-session.js +23 -2
  233. package/dist/runtime/member-session.js.map +1 -1
  234. package/dist/runtime/native-session.d.ts +2 -0
  235. package/dist/runtime/native-session.d.ts.map +1 -1
  236. package/dist/runtime/native-session.js +1 -0
  237. package/dist/runtime/native-session.js.map +1 -1
  238. package/dist/runtime/owner-runtime.d.ts +63 -1
  239. package/dist/runtime/owner-runtime.d.ts.map +1 -1
  240. package/dist/runtime/owner-runtime.js +180 -3
  241. package/dist/runtime/owner-runtime.js.map +1 -1
  242. package/dist/runtime/owner-system-prompt.d.ts.map +1 -1
  243. package/dist/runtime/owner-system-prompt.js +0 -1
  244. package/dist/runtime/owner-system-prompt.js.map +1 -1
  245. package/dist/runtime/principal-access.d.ts +2 -0
  246. package/dist/runtime/principal-access.d.ts.map +1 -1
  247. package/dist/runtime/principal-access.js +7 -0
  248. package/dist/runtime/principal-access.js.map +1 -1
  249. package/dist/runtime/principal-sessions.d.ts.map +1 -1
  250. package/dist/runtime/principal-sessions.js +8 -1
  251. package/dist/runtime/principal-sessions.js.map +1 -1
  252. package/dist/runtime/record-orders.d.ts.map +1 -1
  253. package/dist/runtime/record-orders.js +3 -29
  254. package/dist/runtime/record-orders.js.map +1 -1
  255. package/dist/runtime/report-scheduler.d.ts +9 -2
  256. package/dist/runtime/report-scheduler.d.ts.map +1 -1
  257. package/dist/runtime/report-scheduler.js +37 -10
  258. package/dist/runtime/report-scheduler.js.map +1 -1
  259. package/dist/runtime/stimulus-delivery.d.ts +3 -0
  260. package/dist/runtime/stimulus-delivery.d.ts.map +1 -1
  261. package/dist/runtime/stimulus-delivery.js +19 -3
  262. package/dist/runtime/stimulus-delivery.js.map +1 -1
  263. package/dist/runtime/tools-paths.d.ts +7 -0
  264. package/dist/runtime/tools-paths.d.ts.map +1 -1
  265. package/dist/runtime/tools-paths.js +11 -5
  266. package/dist/runtime/tools-paths.js.map +1 -1
  267. package/dist/runtime/upkeep-close.d.ts +17 -0
  268. package/dist/runtime/upkeep-close.d.ts.map +1 -0
  269. package/dist/runtime/upkeep-close.js +127 -0
  270. package/dist/runtime/upkeep-close.js.map +1 -0
  271. package/dist/runtime/upkeep-orders.d.ts +124 -0
  272. package/dist/runtime/upkeep-orders.d.ts.map +1 -0
  273. package/dist/runtime/upkeep-orders.js +310 -0
  274. package/dist/runtime/upkeep-orders.js.map +1 -0
  275. package/dist/runtime/upkeep-reconcile.d.ts +25 -0
  276. package/dist/runtime/upkeep-reconcile.d.ts.map +1 -0
  277. package/dist/runtime/upkeep-reconcile.js +231 -0
  278. package/dist/runtime/upkeep-reconcile.js.map +1 -0
  279. package/dist/runtime/upkeep-writeback.d.ts +22 -0
  280. package/dist/runtime/upkeep-writeback.d.ts.map +1 -0
  281. package/dist/runtime/upkeep-writeback.js +203 -0
  282. package/dist/runtime/upkeep-writeback.js.map +1 -0
  283. package/dist/utils/untrusted-content.d.ts.map +1 -1
  284. package/dist/utils/untrusted-content.js +8 -1
  285. package/dist/utils/untrusted-content.js.map +1 -1
  286. package/install/install.sh +457 -0
  287. package/install/node.json +9 -0
  288. package/package.json +3 -4
@@ -0,0 +1,203 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.WRITEBACK_ORDER_CHANNEL = void 0;
4
+ exports.writebackUpkeepKind = writebackUpkeepKind;
5
+ const timezone_js_1 = require("./timezone.js");
6
+ const upkeep_orders_js_1 = require("./upkeep-orders.js");
7
+ exports.WRITEBACK_ORDER_CHANNEL = 'operator:writeback';
8
+ /** How many sources one subject carries: the refs source.read opened first, then search hits. */
9
+ const MAX_REFS_PER_SUBJECT = 30;
10
+ /**
11
+ * The privacy boundary (docs/development/work/ledger-upkeep.md, U2; Codex: "U2 crossed the
12
+ * personal boundary"). It reads the observation's own scope columns, which appendObservationVersion
13
+ * derives from the flat scope bag every connector and chat write carries, and decides "common" the
14
+ * way the common session's reads already do (action-surface.ts ownerAccess):
15
+ * - a non-chat source the owner reads connector-wide, unscoped or scoped to the common principal;
16
+ * - a chat message scoped to the common principal (`user:<owner>`), outside every private
17
+ * Telegram channel, so no DM, the owner's own included, reaches the common order.
18
+ * Chat is never admitted by connector: its commonness is its scope. Anything else (another
19
+ * principal's scope, an owner-visibility record, an unknown handle) is dropped.
20
+ */
21
+ function commonSourceFilter(col, wideReadConnectors, ownerPrincipalId) {
22
+ const connectorWide = wideReadConnectors.length === 0
23
+ ? ''
24
+ : `(o.source <> 'chat' AND o.source IN (${wideReadConnectors.map(() => '?').join(',')})
25
+ AND (o.memory_scope_kind IS NULL
26
+ OR (o.memory_scope_kind = 'user' AND o.memory_scope_id = ?))) OR`;
27
+ const sql = `EXISTS (
28
+ SELECT 1 FROM observation_versions o
29
+ WHERE o.observation_id = ${col}
30
+ AND (${connectorWide}
31
+ (o.source = 'chat' AND o.memory_scope_kind = 'user' AND o.memory_scope_id = ?
32
+ AND o.channel IS NOT NULL
33
+ AND o.channel NOT IN (SELECT 'telegram:' || external_id FROM external_identities
34
+ WHERE connector = 'telegram' AND namespace = 'private'))))`;
35
+ return {
36
+ sql,
37
+ params: [
38
+ ...(wideReadConnectors.length === 0 ? [] : [...wideReadConnectors, ownerPrincipalId]),
39
+ ownerPrincipalId,
40
+ ],
41
+ };
42
+ }
43
+ /** `${alias}`'s run belongs to the question turn `r`: the turn's own run or a direct child run. */
44
+ function inTurnRuns(alias) {
45
+ return `(${alias}.model_run_id = r.model_run_id
46
+ OR ${alias}.model_run_id IN (SELECT model_run_id FROM model_runs
47
+ WHERE parent_model_run_id = r.model_run_id))`;
48
+ }
49
+ /** The observation handles a turn's reads returned in evidence_json, correlated on the turn `r`. */
50
+ function readRefsSubquery(tool, filter) {
51
+ const tools = tool === 'read' ? `'source.read'` : `'source.search', 'source.read'`;
52
+ const sql = `SELECT ref.value AS oref, tr.tool_name AS tool, tr.created_at AS at
53
+ FROM tool_traces tr
54
+ JOIN json_each(json_extract(tr.evidence_json, '$.observationRefs')) ref
55
+ WHERE ${inTurnRuns('tr')}
56
+ AND tr.tool_name IN (${tools})
57
+ AND tr.execution_status = 'completed'
58
+ AND tr.evidence_json IS NOT NULL
59
+ ${filter ? `AND ${filter.sql}` : ''}`;
60
+ return { sql, params: filter?.params ?? [] };
61
+ }
62
+ /** A completed derived_from edge in these runs that cites one of `refs` (work revision or memory.save). */
63
+ function derivedFromCites(adapter, runIds, refs) {
64
+ if (runIds.length === 0 || refs.length === 0)
65
+ return false;
66
+ return (adapter
67
+ .prepare(`SELECT 1 FROM twin_edges
68
+ WHERE edge_type = 'derived_from' AND object_kind = 'observation'
69
+ AND object_id IN (${refs.map(() => '?').join(',')})
70
+ AND model_run_id IN (${runIds.map(() => '?').join(',')})
71
+ LIMIT 1`)
72
+ .get(...refs, ...runIds) !== undefined);
73
+ }
74
+ /**
75
+ * U2, write-back orders. A subject is one question turn (a committed owner_message run of the
76
+ * common session or an owner-role principal) that read common-scope sources and recorded nothing
77
+ * from them. The order carries only common-scope handles; the question text is never carried. It
78
+ * is checked when the order's run writes a revision or a fact/lesson citing one of the handles, or
79
+ * declares work.no_update naming them.
80
+ */
81
+ function writebackUpkeepKind(options) {
82
+ return {
83
+ name: 'writeback',
84
+ channel: exports.WRITEBACK_ORDER_CHANNEL,
85
+ // Hourly, like the closing-summary kind: a question answered off the ledger is worth writing
86
+ // back the same day, and the attempt window and one-order-per-kind cap keep it bounded.
87
+ intervalMs: 60 * 60 * 1000,
88
+ // Each subject already asks for up to 30 sources to read and record; three turns an order
89
+ // keeps the common session's queue, the owner's, workable.
90
+ maxPerOrder: 3,
91
+ scan: (adapter, now, page) => {
92
+ const wide = options.wideReadConnectors();
93
+ // Consulting a source is a search hit or an opened read: a question answered from a search
94
+ // preview without opening the record is the same unrecorded gap. The order still marks which
95
+ // were opened. The turn qualifies when it consulted a common source and cited none of what
96
+ // it consulted.
97
+ const commonRead = readRefsSubquery('any', commonSourceFilter('ref.value', wide, options.ownerPrincipalId));
98
+ const allRead = readRefsSubquery('any');
99
+ // A subject older than the attempt window would count its attempts from zero again; the
100
+ // mailbox keeps owner_message rows the same seven days, so the join never loses a newer one.
101
+ // No lower `since`: evidence_json did not exist before the deploy, so earlier turns carry no
102
+ // read receipt and cannot qualify.
103
+ const rows = adapter
104
+ .prepare(`SELECT r.model_run_id AS runId, r.created_at AS askedAt
105
+ FROM model_runs r
106
+ JOIN mailbox_inputs m
107
+ ON m.principal_id = json_extract(r.input_refs_json, '$.principalId')
108
+ AND m.stimulus_id = json_extract(r.input_refs_json, '$.sourceMessageRef')
109
+ AND m.kind = 'owner_message'
110
+ WHERE r.status = 'committed'
111
+ AND r.created_at >= ?
112
+ AND (json_extract(r.input_refs_json, '$.principalId') = ?
113
+ OR json_extract(r.input_refs_json, '$.principalId') IN
114
+ (SELECT principal_id FROM principal_roles WHERE role = 'owner'))
115
+ AND EXISTS (${commonRead.sql})
116
+ AND NOT EXISTS (
117
+ SELECT 1 FROM twin_edges e
118
+ WHERE e.edge_type = 'derived_from' AND e.object_kind = 'observation'
119
+ AND ${inTurnRuns('e')}
120
+ AND e.object_id IN (SELECT oref FROM (${allRead.sql})))
121
+ -- One row per turn: mailbox_inputs has no unique (principal_id, stimulus_id) constraint.
122
+ GROUP BY r.model_run_id, r.created_at
123
+ ORDER BY r.created_at, r.model_run_id
124
+ LIMIT ? OFFSET ?`)
125
+ .all(now - upkeep_orders_js_1.UPKEEP_WINDOW_MS, options.ownerPrincipalId, ...commonRead.params, upkeep_orders_js_1.UPKEEP_SCAN_PAGE, page * upkeep_orders_js_1.UPKEEP_SCAN_PAGE);
126
+ if (rows.length === 0)
127
+ return [];
128
+ // Assemble each subject's carried handles: the common-scope refs the turn opened first, then
129
+ // its common-scope search hits, up to thirty, oldest first.
130
+ const common2 = commonSourceFilter('ref.value', wide, options.ownerPrincipalId);
131
+ const refRows = adapter
132
+ .prepare(`WITH turn(id) AS (VALUES ${rows.map(() => '(?)').join(',')}),
133
+ runs AS (
134
+ SELECT id AS turnId, id AS runId FROM turn
135
+ UNION
136
+ SELECT turn.id, c.model_run_id FROM model_runs c
137
+ JOIN turn ON c.parent_model_run_id = turn.id)
138
+ SELECT runs.turnId AS turnId, ref.value AS oref,
139
+ MAX(CASE WHEN tr.tool_name = 'source.read' THEN 1 ELSE 0 END) AS opened,
140
+ MIN(tr.created_at) AS at
141
+ FROM runs
142
+ JOIN tool_traces tr ON tr.model_run_id = runs.runId
143
+ JOIN json_each(json_extract(tr.evidence_json, '$.observationRefs')) ref
144
+ WHERE tr.tool_name IN ('source.search', 'source.read')
145
+ AND tr.execution_status = 'completed'
146
+ AND tr.evidence_json IS NOT NULL
147
+ AND ${common2.sql}
148
+ GROUP BY runs.turnId, ref.value
149
+ ORDER BY runs.turnId, opened DESC, at, ref.value`)
150
+ .all(...rows.map((row) => row.runId), ...common2.params);
151
+ const byTurn = new Map();
152
+ for (const row of refRows) {
153
+ const entry = byTurn.get(row.turnId) ?? { refs: [], opened: [] };
154
+ if (entry.refs.length < MAX_REFS_PER_SUBJECT) {
155
+ entry.refs.push(row.oref);
156
+ if (row.opened === 1)
157
+ entry.opened.push(row.oref);
158
+ }
159
+ byTurn.set(row.turnId, entry);
160
+ }
161
+ return rows.flatMap((row) => {
162
+ const entry = byTurn.get(row.runId);
163
+ // A turn with no common-scope handle after assembly carries nothing; it is not a subject.
164
+ if (!entry || entry.refs.length === 0)
165
+ return [];
166
+ return [{ key: row.runId, refs: entry.refs, opened: entry.opened, askedAt: row.askedAt }];
167
+ });
168
+ },
169
+ checked: (adapter, subject, runIds) => {
170
+ const { refs } = subject;
171
+ if (runIds.length === 0 || refs.length === 0)
172
+ return false;
173
+ return (derivedFromCites(adapter, runIds, refs) ||
174
+ (0, upkeep_orders_js_1.noUpdateCites)(adapter, runIds, { field: 'observationRefs', values: refs }));
175
+ },
176
+ render: (subjects, now) => {
177
+ const zone = options.timeZone();
178
+ const lines = subjects.map((subject) => {
179
+ const openedSet = new Set(subject.opened);
180
+ const opened = subject.refs.filter((ref) => openedSet.has(ref));
181
+ const hits = subject.refs.filter((ref) => !openedSet.has(ref));
182
+ const parts = [`- turn ${subject.key} (asked ${(0, timezone_js_1.localNow)(subject.askedAt, zone)}):`];
183
+ if (opened.length > 0)
184
+ parts.push(`opened ${opened.join(', ')}`);
185
+ if (hits.length > 0)
186
+ parts.push(`${opened.length > 0 ? 'also found' : 'found'} ${hits.join(', ')}`);
187
+ return parts.join(' ');
188
+ });
189
+ return [
190
+ `[upkeep_writeback] ${subjects.length} answered question turn${subjects.length === 1 ? '' : 's'} that read sources and recorded nothing`,
191
+ `Current time: ${(0, timezone_js_1.localNow)(now.getTime(), zone)} (${zone})`,
192
+ 'A question was answered from these sources. Record what belongs in the ledger, so the next question reads one place:',
193
+ '1. Read each source with source.read (observationRefs, batched per connector).',
194
+ '2. Record what belongs in the ledger, each with derived_from links to the sources it came from: work.revise or work.create for a work change; memory.save for a fact or lesson (prices, specs and client rules are facts).',
195
+ '3. A matter already recorded, or chatter not worth recording: work.no_update with observationRefs naming those sources and the reason.',
196
+ '4. The order is checked when it ends: at least one write or a no-update must cite these sources. Correct a refused write (help gives its contract) and write it again.',
197
+ '5. Reply exactly [ack].',
198
+ ...lines,
199
+ ].join('\n');
200
+ },
201
+ };
202
+ }
203
+ //# sourceMappingURL=upkeep-writeback.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"upkeep-writeback.js","sourceRoot":"","sources":["../../src/runtime/upkeep-writeback.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"untrusted-content.d.ts","sourceRoot":"","sources":["../../src/utils/untrusted-content.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,wBAAgB,+BAA+B,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAYzE;AAKD,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CAW5E;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,GAAG,OAAO,CAItE"}
1
+ {"version":3,"file":"untrusted-content.d.ts","sourceRoot":"","sources":["../../src/utils/untrusted-content.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,wBAAgB,+BAA+B,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAmBzE;AAKD,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CAW5E;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,GAAG,OAAO,CAItE"}
@@ -19,7 +19,14 @@ function isUntrustedExternalEvidenceTool(toolName) {
19
19
  toolName === 'source.attachment.list' ||
20
20
  toolName === 'source.attachment.download' ||
21
21
  toolName === 'manage.wiki.read' ||
22
- toolName === 'report.read');
22
+ toolName === 'report.read' ||
23
+ // Live connector reads (readsConnector): card and file text is written by other people, and
24
+ // the board reconcile order reads cards in a turn with no person in it.
25
+ toolName === 'trello.read' ||
26
+ toolName === 'drive.read' ||
27
+ toolName === 'drive.download' ||
28
+ // Mail, events, sheets and documents are written by other people too.
29
+ toolName === 'google.read');
23
30
  }
24
31
  const OPEN_MARKER = '<<<UNTRUSTED-CONTENT';
25
32
  const END_MARKER = '<<<END-UNTRUSTED-CONTENT>>>';
@@ -1 +1 @@
1
- {"version":3,"file":"untrusted-content.js","sourceRoot":"","sources":["../../src/utils/untrusted-content.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;AAEH,0EAYC;AAKD,oDAWC;AAKD,8CAIC;AArCD,SAAgB,+BAA+B,CAAC,QAAgB;IAC9D,OAAO;IACL,mEAAmE;IACnE,QAAQ,KAAK,UAAU;QACvB,QAAQ,KAAK,wBAAwB;QACrC,QAAQ,KAAK,eAAe;QAC5B,QAAQ,KAAK,aAAa;QAC1B,QAAQ,KAAK,wBAAwB;QACrC,QAAQ,KAAK,4BAA4B;QACzC,QAAQ,KAAK,kBAAkB;QAC/B,QAAQ,KAAK,aAAa,CAC3B,CAAC;AACJ,CAAC;AAED,MAAM,WAAW,GAAG,sBAAsB,CAAC;AAC3C,MAAM,UAAU,GAAG,6BAA6B,CAAC;AAEjD,SAAgB,oBAAoB,CAAC,MAAc,EAAE,OAAe;IAClE,MAAM,UAAU,GAAG,MAAM,CAAC,OAAO,CAAC,mBAAmB,EAAE,GAAG,CAAC,CAAC;IAC5D,MAAM,IAAI,GAAG,OAAO,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC;IACrE,OAAO;QACL,GAAG,WAAW,WAAW,UAAU,KAAK;QACxC,8EAA8E;QAC9E,kFAAkF;QAClF,yDAAyD;QACzD,IAAI;QACJ,UAAU;KACX,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACf,CAAC;AAED;;GAEG;AACH,SAAgB,iBAAiB,CAAC,IAAY,EAAE,IAAa;IAC3D,OAAO,+BAA+B,CAAC,IAAI,CAAC;QAC1C,CAAC,CAAC,oBAAoB,CAAC,IAAI,EAAE,OAAO,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,IAAI,IAAI,CAAC,CAAC;QAC5F,CAAC,CAAC,IAAI,CAAC;AACX,CAAC"}
1
+ {"version":3,"file":"untrusted-content.js","sourceRoot":"","sources":["../../src/utils/untrusted-content.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;AAEH,0EAmBC;AAKD,oDAWC;AAKD,8CAIC;AA5CD,SAAgB,+BAA+B,CAAC,QAAgB;IAC9D,OAAO;IACL,mEAAmE;IACnE,QAAQ,KAAK,UAAU;QACvB,QAAQ,KAAK,wBAAwB;QACrC,QAAQ,KAAK,eAAe;QAC5B,QAAQ,KAAK,aAAa;QAC1B,QAAQ,KAAK,wBAAwB;QACrC,QAAQ,KAAK,4BAA4B;QACzC,QAAQ,KAAK,kBAAkB;QAC/B,QAAQ,KAAK,aAAa;QAC1B,4FAA4F;QAC5F,wEAAwE;QACxE,QAAQ,KAAK,aAAa;QAC1B,QAAQ,KAAK,YAAY;QACzB,QAAQ,KAAK,gBAAgB;QAC7B,sEAAsE;QACtE,QAAQ,KAAK,aAAa,CAC3B,CAAC;AACJ,CAAC;AAED,MAAM,WAAW,GAAG,sBAAsB,CAAC;AAC3C,MAAM,UAAU,GAAG,6BAA6B,CAAC;AAEjD,SAAgB,oBAAoB,CAAC,MAAc,EAAE,OAAe;IAClE,MAAM,UAAU,GAAG,MAAM,CAAC,OAAO,CAAC,mBAAmB,EAAE,GAAG,CAAC,CAAC;IAC5D,MAAM,IAAI,GAAG,OAAO,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC;IACrE,OAAO;QACL,GAAG,WAAW,WAAW,UAAU,KAAK;QACxC,8EAA8E;QAC9E,kFAAkF;QAClF,yDAAyD;QACzD,IAAI;QACJ,UAAU;KACX,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACf,CAAC;AAED;;GAEG;AACH,SAAgB,iBAAiB,CAAC,IAAY,EAAE,IAAa;IAC3D,OAAO,+BAA+B,CAAC,IAAI,CAAC;QAC1C,CAAC,CAAC,oBAAoB,CAAC,IAAI,EAAE,OAAO,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,IAAI,IAAI,CAAC,CAAC;QAC5F,CAAC,CAAC,IAAI,CAAC;AACX,CAAC"}