@jungjaehoon/mama-os 0.73.0 → 0.75.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.
- package/CHANGELOG.md +44 -0
- package/README.md +6 -1
- package/dist/api/drive-actions.d.ts +3 -1
- package/dist/api/drive-actions.d.ts.map +1 -1
- package/dist/api/drive-actions.js +6 -1
- package/dist/api/drive-actions.js.map +1 -1
- package/dist/api/file-delivery.d.ts +1 -0
- package/dist/api/file-delivery.d.ts.map +1 -1
- package/dist/api/file-delivery.js +3 -3
- package/dist/api/file-delivery.js.map +1 -1
- package/dist/api/member-enrollment.d.ts +0 -1
- package/dist/api/member-enrollment.d.ts.map +1 -1
- package/dist/api/member-enrollment.js +4 -20
- package/dist/api/member-enrollment.js.map +1 -1
- package/dist/api/member-export.d.ts +32 -0
- package/dist/api/member-export.d.ts.map +1 -0
- package/dist/api/member-export.js +232 -0
- package/dist/api/member-export.js.map +1 -0
- package/dist/api/member-lifecycle.d.ts +2 -0
- package/dist/api/member-lifecycle.d.ts.map +1 -1
- package/dist/api/member-lifecycle.js +26 -4
- package/dist/api/member-lifecycle.js.map +1 -1
- package/dist/api/member-records.d.ts +38 -0
- package/dist/api/member-records.d.ts.map +1 -0
- package/dist/api/member-records.js +379 -0
- package/dist/api/member-records.js.map +1 -0
- package/dist/api/member-share-actions.js +2 -2
- package/dist/api/member-share-actions.js.map +1 -1
- package/dist/api/member-smoke-state.d.ts +3 -0
- package/dist/api/member-smoke-state.d.ts.map +1 -0
- package/dist/api/member-smoke-state.js +20 -0
- package/dist/api/member-smoke-state.js.map +1 -0
- package/dist/api/trello-actions.d.ts +1 -1
- package/dist/api/trello-actions.d.ts.map +1 -1
- package/dist/api/trello-actions.js +12 -3
- package/dist/api/trello-actions.js.map +1 -1
- package/dist/cli/commands/daemon.d.ts +1 -0
- package/dist/cli/commands/daemon.d.ts.map +1 -1
- package/dist/cli/commands/daemon.js +16 -4
- package/dist/cli/commands/daemon.js.map +1 -1
- package/dist/cli/commands/init.d.ts.map +1 -1
- package/dist/cli/commands/init.js +4 -5
- package/dist/cli/commands/init.js.map +1 -1
- package/dist/cli/commands/register-owner.d.ts +14 -5
- package/dist/cli/commands/register-owner.d.ts.map +1 -1
- package/dist/cli/commands/register-owner.js +145 -42
- package/dist/cli/commands/register-owner.js.map +1 -1
- package/dist/cli/index.js +3 -4
- package/dist/cli/index.js.map +1 -1
- package/dist/gateways/telegram-message-ledger.d.ts +4 -0
- package/dist/gateways/telegram-message-ledger.d.ts.map +1 -1
- package/dist/gateways/telegram-message-ledger.js +21 -0
- package/dist/gateways/telegram-message-ledger.js.map +1 -1
- package/dist/gateways/telegram.d.ts +18 -5
- package/dist/gateways/telegram.d.ts.map +1 -1
- package/dist/gateways/telegram.js +138 -72
- package/dist/gateways/telegram.js.map +1 -1
- package/dist/gateways/turn-contract.d.ts +7 -0
- package/dist/gateways/turn-contract.d.ts.map +1 -1
- package/dist/runtime/action-surface.d.ts +6 -3
- package/dist/runtime/action-surface.d.ts.map +1 -1
- package/dist/runtime/action-surface.js +17 -5
- package/dist/runtime/action-surface.js.map +1 -1
- package/dist/runtime/config.d.ts +0 -1
- package/dist/runtime/config.d.ts.map +1 -1
- package/dist/runtime/config.js +7 -11
- package/dist/runtime/config.js.map +1 -1
- package/dist/runtime/member-system-prompt.d.ts.map +1 -1
- package/dist/runtime/member-system-prompt.js +5 -1
- package/dist/runtime/member-system-prompt.js.map +1 -1
- package/dist/runtime/owner-authority.d.ts +2 -0
- package/dist/runtime/owner-authority.d.ts.map +1 -1
- package/dist/runtime/owner-authority.js +5 -1
- package/dist/runtime/owner-authority.js.map +1 -1
- package/dist/runtime/owner-runtime.d.ts +10 -0
- package/dist/runtime/owner-runtime.d.ts.map +1 -1
- package/dist/runtime/owner-runtime.js +120 -25
- package/dist/runtime/owner-runtime.js.map +1 -1
- package/dist/runtime/principal-access.d.ts.map +1 -1
- package/dist/runtime/principal-access.js +31 -3
- package/dist/runtime/principal-access.js.map +1 -1
- package/dist/runtime/principal-sessions.d.ts +10 -4
- package/dist/runtime/principal-sessions.d.ts.map +1 -1
- package/dist/runtime/principal-sessions.js +44 -14
- package/dist/runtime/principal-sessions.js.map +1 -1
- package/dist/runtime/stimulus-delivery.d.ts +1 -0
- package/dist/runtime/stimulus-delivery.d.ts.map +1 -1
- package/dist/runtime/stimulus-delivery.js +7 -1
- package/dist/runtime/stimulus-delivery.js.map +1 -1
- package/dist/storage/chat-sources.js +1 -1
- package/dist/storage/chat-sources.js.map +1 -1
- package/dist/storage/source-archive.d.ts +16 -0
- package/dist/storage/source-archive.d.ts.map +1 -1
- package/dist/storage/source-archive.js +132 -0
- package/dist/storage/source-archive.js.map +1 -1
- package/package.json +5 -4
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"member-export.js","sourceRoot":"","sources":["../../src/api/member-export.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { type ActionRegistration, type JudgmentAccess } from '@jungjaehoon/mama-core';
|
|
2
2
|
import type { DatabaseInstance } from '@jungjaehoon/mama-core/db-manager';
|
|
3
|
+
import type { TimeZoneSetting } from '../runtime/timezone.js';
|
|
3
4
|
export declare const MEMBER_MANAGEMENT_ACTIONS: readonly ["manage.member.grant", "manage.member.revoke", "manage.member.suspend", "manage.member.resume", "manage.member.offboard", "manage.member.list"];
|
|
4
5
|
export interface MemberLifecyclePorts {
|
|
5
6
|
resetSession(principalId: string): Promise<void>;
|
|
@@ -13,6 +14,7 @@ export declare function memberLifecycleRegistrations(options: {
|
|
|
13
14
|
ownerPrincipalId: string;
|
|
14
15
|
ownerAccess(): JudgmentAccess;
|
|
15
16
|
isOwnerMessageTurn(sourceMessageRef: string): boolean;
|
|
17
|
+
timeZone: TimeZoneSetting;
|
|
16
18
|
ports?: MemberLifecyclePorts;
|
|
17
19
|
}): ActionRegistration[];
|
|
18
20
|
//# sourceMappingURL=member-lifecycle.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"member-lifecycle.d.ts","sourceRoot":"","sources":["../../src/api/member-lifecycle.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,kBAAkB,EAEvB,KAAK,cAAc,EACpB,MAAM,wBAAwB,CAAC;AAChC,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,mCAAmC,CAAC;
|
|
1
|
+
{"version":3,"file":"member-lifecycle.d.ts","sourceRoot":"","sources":["../../src/api/member-lifecycle.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,kBAAkB,EAEvB,KAAK,cAAc,EACpB,MAAM,wBAAwB,CAAC;AAChC,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,mCAAmC,CAAC;AAE1E,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAG9D,eAAO,MAAM,yBAAyB,2JAO5B,CAAC;AAEX,MAAM,WAAW,oBAAoB;IACnC,YAAY,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACjD,MAAM,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC3C,MAAM,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC3C,YAAY,CAAC,WAAW,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC;CAC3D;AAED,8FAA8F;AAC9F,wBAAgB,4BAA4B,CAAC,OAAO,EAAE;IACpD,OAAO,EAAE,gBAAgB,CAAC;IAC1B,gBAAgB,EAAE,MAAM,CAAC;IACzB,WAAW,IAAI,cAAc,CAAC;IAC9B,kBAAkB,CAAC,gBAAgB,EAAE,MAAM,GAAG,OAAO,CAAC;IACtD,QAAQ,EAAE,eAAe,CAAC;IAC1B,KAAK,CAAC,EAAE,oBAAoB,CAAC;CAC9B,GAAG,kBAAkB,EAAE,CA6LvB"}
|
|
@@ -4,6 +4,7 @@ exports.MEMBER_MANAGEMENT_ACTIONS = void 0;
|
|
|
4
4
|
exports.memberLifecycleRegistrations = memberLifecycleRegistrations;
|
|
5
5
|
const mama_core_1 = require("@jungjaehoon/mama-core");
|
|
6
6
|
const principal_access_js_1 = require("../runtime/principal-access.js");
|
|
7
|
+
const owner_authority_js_1 = require("../runtime/owner-authority.js");
|
|
7
8
|
exports.MEMBER_MANAGEMENT_ACTIONS = [
|
|
8
9
|
'manage.member.grant',
|
|
9
10
|
'manage.member.revoke',
|
|
@@ -14,6 +15,7 @@ exports.MEMBER_MANAGEMENT_ACTIONS = [
|
|
|
14
15
|
];
|
|
15
16
|
/** Host lifecycle effects execute inside the owner's already-held shared serial turn slot. */
|
|
16
17
|
function memberLifecycleRegistrations(options) {
|
|
18
|
+
let principals;
|
|
17
19
|
const properties = {
|
|
18
20
|
principalId: {
|
|
19
21
|
type: 'string',
|
|
@@ -39,7 +41,7 @@ function memberLifecycleRegistrations(options) {
|
|
|
39
41
|
suspend: 'Suspend an active member, end and unserve its session, and set its runtime directory aside under member_root and its temp directory aside under the member temp root. Keep grants and identity.',
|
|
40
42
|
resume: 'Resume a suspended member with retained grants. Move any remaining runtime and temp directories aside and serve a fresh environment.',
|
|
41
43
|
offboard: 'Permanently offboard an active or suspended member; revoke every grant atomically, end and unserve its session, move runtime/temp aside, and keep its identity binding.',
|
|
42
|
-
list: 'List member principal ids, statuses and unrevoked grants, including grants retained during suspension. Never returns transport identities or record content.',
|
|
44
|
+
list: 'List member principal ids, statuses and unrevoked grants, including grants retained during suspension, and the latest enrollment receipts the owner received (created, exists or refused, with the reason). Receipts carry the owner-local time of each pick. Never returns transport identities or record content.',
|
|
43
45
|
}[change] +
|
|
44
46
|
' Only the owner own message turn is allowed; delta, scheduled/report, replay, member and subagent turns are denied. Changes apply after the running member turn on the shared serial chain and cancel queued inputs with a host reason.',
|
|
45
47
|
inputSchema: {
|
|
@@ -65,9 +67,27 @@ function memberLifecycleRegistrations(options) {
|
|
|
65
67
|
!options.isOwnerMessageTurn(ref)) {
|
|
66
68
|
throw Object.assign(new Error('Member management is available only in an owner message turn'), { name: 'denied' });
|
|
67
69
|
}
|
|
68
|
-
const repo = (0, mama_core_1.createPrincipalRepository)(options.adapter);
|
|
70
|
+
const repo = (principals ??= (0, mama_core_1.createPrincipalRepository)(options.adapter));
|
|
69
71
|
if (change === 'list') {
|
|
72
|
+
const timeZone = options.timeZone.get();
|
|
73
|
+
// Each users_shared pick ends in a host receipt in the owner's conversation record; a
|
|
74
|
+
// refused or failed pick leaves no registry row, so the receipt is its only trace.
|
|
75
|
+
const enrollmentReceipts = options.adapter
|
|
76
|
+
.prepare(`SELECT m.source_timestamp_ms AS at, r.content AS receipt
|
|
77
|
+
FROM connector_event_index m
|
|
78
|
+
JOIN connector_event_index r ON r.source_connector = 'chat'
|
|
79
|
+
AND r.source_entity_id = m.source_entity_id || ':reply'
|
|
80
|
+
AND json_extract(r.metadata_json, '$.deliveryVerified') = 1
|
|
81
|
+
WHERE m.source_connector = 'chat' AND m.memory_scope_kind = 'user'
|
|
82
|
+
AND m.memory_scope_id = ?
|
|
83
|
+
AND json_extract(m.metadata_json, '$.input.enrollmentSelection') = 1
|
|
84
|
+
ORDER BY m.source_timestamp_ms DESC, m.rowid DESC LIMIT 5`)
|
|
85
|
+
.all(options.ownerPrincipalId);
|
|
70
86
|
return {
|
|
87
|
+
recentEnrollments: enrollmentReceipts.map(({ at, receipt }) => ({
|
|
88
|
+
at: `${new Date(at).toLocaleString('ko-KR', { timeZone })} (${timeZone})`,
|
|
89
|
+
receipt,
|
|
90
|
+
})),
|
|
71
91
|
members: repo.listMembers().map(({ principalId, status }) => ({
|
|
72
92
|
principalId,
|
|
73
93
|
status,
|
|
@@ -81,8 +101,10 @@ function memberLifecycleRegistrations(options) {
|
|
|
81
101
|
const principal = repo.findById(principalId);
|
|
82
102
|
if (!principal)
|
|
83
103
|
throw new Error(`Unknown principal: ${principalId}`);
|
|
84
|
-
if (principal.kind !== 'member')
|
|
85
|
-
throw Object.assign(new Error('
|
|
104
|
+
if (principal.kind !== 'member' || (0, owner_authority_js_1.holdsOwnerRole)(repo, principalId))
|
|
105
|
+
throw Object.assign(new Error('An owner cannot be a member-management target'), {
|
|
106
|
+
name: 'denied',
|
|
107
|
+
});
|
|
86
108
|
const ports = options.ports;
|
|
87
109
|
if (!ports)
|
|
88
110
|
throw new Error('Member management requires member_root and a running member runtime');
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"member-lifecycle.js","sourceRoot":"","sources":["../../src/api/member-lifecycle.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"member-lifecycle.js","sourceRoot":"","sources":["../../src/api/member-lifecycle.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import { type ActionRegistration, type JudgmentAccess } from '@jungjaehoon/mama-core';
|
|
2
|
+
import type { DatabaseInstance } from '@jungjaehoon/mama-core/db-manager';
|
|
3
|
+
import type { Mailbox, MailboxRow } from '@jungjaehoon/mama-core/runtime/mailbox';
|
|
4
|
+
import type { RawStore } from '../storage/source-archive.js';
|
|
5
|
+
import type { OwnerMessageLedger } from '../gateways/telegram-message-ledger.js';
|
|
6
|
+
import type { createSerialTurnChain } from '../runtime/principal-sessions.js';
|
|
7
|
+
import type { TelegramFileSender } from './file-delivery.js';
|
|
8
|
+
export interface MemberRecordsTelegram extends TelegramFileSender {
|
|
9
|
+
sendMemberText(access: JudgmentAccess, text: string, operationId: string): Promise<boolean>;
|
|
10
|
+
}
|
|
11
|
+
export interface MemberRecordsPorts {
|
|
12
|
+
root: string;
|
|
13
|
+
rawStore: RawStore;
|
|
14
|
+
mailbox(): Mailbox;
|
|
15
|
+
ledger(): OwnerMessageLedger | undefined;
|
|
16
|
+
telegram(): MemberRecordsTelegram | undefined;
|
|
17
|
+
access(id: string): JudgmentAccess;
|
|
18
|
+
turnChain: ReturnType<typeof createSerialTurnChain>;
|
|
19
|
+
retire(id: string): Promise<void>;
|
|
20
|
+
serve(id: string): void;
|
|
21
|
+
isStopping(): boolean;
|
|
22
|
+
resumeQueued(): void;
|
|
23
|
+
recordExchange(id: string, kind: 'export' | 'erase', ref: string, text: string, deliveryVerified: boolean): void;
|
|
24
|
+
}
|
|
25
|
+
export declare function createMemberRecords(options: {
|
|
26
|
+
adapter: DatabaseInstance;
|
|
27
|
+
isMessageTurn(ref: string, principalId: string): boolean;
|
|
28
|
+
ports?: MemberRecordsPorts;
|
|
29
|
+
}): {
|
|
30
|
+
registrations: ActionRegistration[];
|
|
31
|
+
isBusy: () => boolean;
|
|
32
|
+
isBlocked: (id: string) => boolean;
|
|
33
|
+
onSettled: (row: MailboxRow) => void;
|
|
34
|
+
onDead: (row: MailboxRow, reason: string) => void;
|
|
35
|
+
onUncertain: (row: MailboxRow, reason: string) => void;
|
|
36
|
+
idle: () => Promise<void>;
|
|
37
|
+
};
|
|
38
|
+
//# sourceMappingURL=member-records.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"member-records.d.ts","sourceRoot":"","sources":["../../src/api/member-records.ts"],"names":[],"mappings":"AAGA,OAAO,EAKL,KAAK,kBAAkB,EACvB,KAAK,cAAc,EAEpB,MAAM,wBAAwB,CAAC;AAChC,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,mCAAmC,CAAC;AAC1E,OAAO,KAAK,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,wCAAwC,CAAC;AAClF,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,8BAA8B,CAAC;AAC7D,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,wCAAwC,CAAC;AACjF,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,kCAAkC,CAAC;AAC9E,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAO7D,MAAM,WAAW,qBAAsB,SAAQ,kBAAkB;IAC/D,cAAc,CAAC,MAAM,EAAE,cAAc,EAAE,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;CAC7F;AACD,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,QAAQ,CAAC;IACnB,OAAO,IAAI,OAAO,CAAC;IACnB,MAAM,IAAI,kBAAkB,GAAG,SAAS,CAAC;IACzC,QAAQ,IAAI,qBAAqB,GAAG,SAAS,CAAC;IAC9C,MAAM,CAAC,EAAE,EAAE,MAAM,GAAG,cAAc,CAAC;IACnC,SAAS,EAAE,UAAU,CAAC,OAAO,qBAAqB,CAAC,CAAC;IACpD,MAAM,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAClC,KAAK,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,UAAU,IAAI,OAAO,CAAC;IACtB,YAAY,IAAI,IAAI,CAAC;IACrB,cAAc,CACZ,EAAE,EAAE,MAAM,EACV,IAAI,EAAE,QAAQ,GAAG,OAAO,EACxB,GAAG,EAAE,MAAM,EACX,IAAI,EAAE,MAAM,EACZ,gBAAgB,EAAE,OAAO,GACxB,IAAI,CAAC;CACT;AA0ED,wBAAgB,mBAAmB,CAAC,OAAO,EAAE;IAC3C,OAAO,EAAE,gBAAgB,CAAC;IAC1B,aAAa,CAAC,GAAG,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC;IACzD,KAAK,CAAC,EAAE,kBAAkB,CAAC;CAC5B;;;oBAqUmB,MAAM;qBACL,UAAU;kBASb,UAAU,UAAU,MAAM;uBACrB,UAAU,UAAU,MAAM;;EAKhD"}
|
|
@@ -0,0 +1,379 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.createMemberRecords = createMemberRecords;
|
|
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
|
+
const mama_core_1 = require("@jungjaehoon/mama-core");
|
|
8
|
+
const member_export_js_1 = require("./member-export.js");
|
|
9
|
+
const denied = () => Object.assign(new Error('Personal records require an active member own message turn and a later confirmation'), { name: 'denied' });
|
|
10
|
+
function receiptText(core, product, failure, step, omittedFiles, uncertain) {
|
|
11
|
+
const stepNames = {
|
|
12
|
+
retire: 'native session retirement',
|
|
13
|
+
export_delivery: 'export delivery',
|
|
14
|
+
file_check: 'file check',
|
|
15
|
+
core: 'personal records',
|
|
16
|
+
chat_raw: 'chat records',
|
|
17
|
+
message_ledger: 'delivery history',
|
|
18
|
+
};
|
|
19
|
+
const lines = [
|
|
20
|
+
failure
|
|
21
|
+
? `Erasure stopped at ${stepNames[step] ?? step}: ${failure instanceof Error ? failure.message : String(failure)}.`
|
|
22
|
+
: 'Your personal records and files were erased.',
|
|
23
|
+
];
|
|
24
|
+
if (failure)
|
|
25
|
+
lines.push(uncertain
|
|
26
|
+
? 'The export delivery is uncertain. Nothing was erased. Check whether the file arrived before asking again.'
|
|
27
|
+
: ['retire', 'export', 'export_delivery', 'file_check'].includes(step)
|
|
28
|
+
? 'Nothing was erased. Ask again for a new preview and pass its confirmationToken in a later member message.'
|
|
29
|
+
: 'Earlier steps are done. Make a new erasure request and pass its preview confirmationToken in a later member message to finish the rest.');
|
|
30
|
+
for (const [store, counts] of Object.entries(core?.counts ?? {})) {
|
|
31
|
+
const nonZero = Object.entries(counts)
|
|
32
|
+
.filter(([, n]) => n > 0)
|
|
33
|
+
.map(([action, n]) => `${n} ${action === 'in_flight' ? 'in flight' : action}`);
|
|
34
|
+
if (nonZero.length)
|
|
35
|
+
lines.push(`${store}: ${nonZero.join(', ')}.`);
|
|
36
|
+
}
|
|
37
|
+
for (const [store, n] of Object.entries(product)) {
|
|
38
|
+
if (n > 0 && !['files', 'fileBytes', 'fileTrees', 'cancelledMessages'].includes(store))
|
|
39
|
+
lines.push(`${store}: ${n} deleted.`);
|
|
40
|
+
}
|
|
41
|
+
lines.push(`Files: ${product.files ?? 0} files, ${product.fileBytes ?? 0} bytes.`, `${product.cancelledMessages ?? 0} ${product.cancelledMessages === 1 ? 'message in the queue was' : 'messages in the queue were'} cancelled unanswered.`, 'Your enrollment and grants are kept.');
|
|
42
|
+
for (const name of omittedFiles)
|
|
43
|
+
lines.push(`Left out of the export (a link is outside your files or in a private host directory): ${name}.`);
|
|
44
|
+
return lines.join('\n');
|
|
45
|
+
}
|
|
46
|
+
function createMemberRecords(options) {
|
|
47
|
+
const tokens = new Map();
|
|
48
|
+
const scheduled = new Map();
|
|
49
|
+
const blocked = new Set();
|
|
50
|
+
const jobs = new Set();
|
|
51
|
+
const ports = () => {
|
|
52
|
+
if (!options.ports)
|
|
53
|
+
throw new Error('Member records require member_root and delivery ports');
|
|
54
|
+
return options.ports;
|
|
55
|
+
};
|
|
56
|
+
const dm = (access) => {
|
|
57
|
+
const targets = access.destinations?.filter((target) => target.kind === 'telegram');
|
|
58
|
+
if (targets?.length !== 1 || !targets[0].id.trim())
|
|
59
|
+
throw new Error('Member records require exactly one registered Telegram DM');
|
|
60
|
+
return targets[0].id;
|
|
61
|
+
};
|
|
62
|
+
const productExport = (id) => {
|
|
63
|
+
const p = ports();
|
|
64
|
+
const ledger = p.ledger();
|
|
65
|
+
if (!ledger)
|
|
66
|
+
throw new Error('Live message ledger is not configured');
|
|
67
|
+
const stores = {
|
|
68
|
+
connector_event_index: options.adapter
|
|
69
|
+
.prepare("SELECT * FROM connector_event_index WHERE source_connector='chat' AND memory_scope_kind='user' AND memory_scope_id=? ORDER BY rowid")
|
|
70
|
+
.all(id),
|
|
71
|
+
...p.rawStore.exportScope('chat', 'user', id),
|
|
72
|
+
message_ledger: ledger.listForTelegramDm(dm(p.access(id))),
|
|
73
|
+
};
|
|
74
|
+
return {
|
|
75
|
+
stores,
|
|
76
|
+
counts: Object.fromEntries(Object.entries(stores).map(([name, rows]) => [name, rows.length])),
|
|
77
|
+
};
|
|
78
|
+
};
|
|
79
|
+
const sendReceipt = async (job, text) => {
|
|
80
|
+
const p = ports();
|
|
81
|
+
let verified = false;
|
|
82
|
+
try {
|
|
83
|
+
verified = await p
|
|
84
|
+
.telegram()
|
|
85
|
+
.sendMemberText(p.access(job.principalId), text, `${job.commandId}:receipt`);
|
|
86
|
+
}
|
|
87
|
+
catch (error) {
|
|
88
|
+
console.error('[Member records] receipt delivery failed', error);
|
|
89
|
+
}
|
|
90
|
+
p.recordExchange(job.principalId, job.kind, `host:${job.commandId}`, text, verified);
|
|
91
|
+
};
|
|
92
|
+
// Members whose erasure is scheduled or running. Only these pause claims for everyone: the
|
|
93
|
+
// member must stay unserved with its queue untouched until the export is delivered. An export
|
|
94
|
+
// deletes nothing, so it holds the chain only while its archive is built.
|
|
95
|
+
const erasing = new Set();
|
|
96
|
+
// Members with an export still uploading: their turns run, but no second export or erasure
|
|
97
|
+
// starts until this one is delivered, so archives and uploads never pile up.
|
|
98
|
+
const exporting = new Set();
|
|
99
|
+
const track = (work) => {
|
|
100
|
+
jobs.add(work);
|
|
101
|
+
void work
|
|
102
|
+
.catch((error) => console.error('[Member records] scheduled work failed', error))
|
|
103
|
+
.finally(() => jobs.delete(work));
|
|
104
|
+
};
|
|
105
|
+
const enqueue = (work) => {
|
|
106
|
+
track(ports().turnChain.next(async () => {
|
|
107
|
+
let leaveChain;
|
|
108
|
+
const left = new Promise((resolve) => (leaveChain = resolve));
|
|
109
|
+
const run = work(leaveChain);
|
|
110
|
+
track(run);
|
|
111
|
+
try {
|
|
112
|
+
await Promise.race([left, run]);
|
|
113
|
+
}
|
|
114
|
+
finally {
|
|
115
|
+
if (!ports().isStopping())
|
|
116
|
+
ports().resumeQueued();
|
|
117
|
+
}
|
|
118
|
+
}));
|
|
119
|
+
};
|
|
120
|
+
const take = (row) => {
|
|
121
|
+
const job = scheduled.get(row.id);
|
|
122
|
+
if (!job || job.principalId !== row.principalId)
|
|
123
|
+
return;
|
|
124
|
+
scheduled.delete(row.id);
|
|
125
|
+
return job;
|
|
126
|
+
};
|
|
127
|
+
const cancelConfirmation = (row, outcome, reason) => {
|
|
128
|
+
const job = take(row);
|
|
129
|
+
if (!job)
|
|
130
|
+
return;
|
|
131
|
+
blocked.delete(job.principalId);
|
|
132
|
+
erasing.delete(job.principalId);
|
|
133
|
+
if (!ports().isStopping()) {
|
|
134
|
+
const label = job.kind === 'erase' ? 'Erasure' : 'Export';
|
|
135
|
+
enqueue(() => sendReceipt(job, `${label} did not run because the ${job.kind === 'erase' ? 'confirming' : 'requesting'} turn did not complete (${outcome}: ${reason}).\nYour personal records and files were kept. Make a new request in a later member message.\nYour enrollment and grants are kept.`));
|
|
136
|
+
}
|
|
137
|
+
job.release();
|
|
138
|
+
};
|
|
139
|
+
const runJob = async (job, leaveChain) => {
|
|
140
|
+
const p = ports(), id = job.principalId;
|
|
141
|
+
let left = false;
|
|
142
|
+
// An export's archive is a consistent snapshot once built: the member may run turns again
|
|
143
|
+
// and the upload continues outside the shared chain.
|
|
144
|
+
const leave = () => {
|
|
145
|
+
if (left || job.kind !== 'export')
|
|
146
|
+
return;
|
|
147
|
+
left = true;
|
|
148
|
+
exporting.add(id);
|
|
149
|
+
blocked.delete(id);
|
|
150
|
+
leaveChain();
|
|
151
|
+
};
|
|
152
|
+
const product = { cancelledMessages: 0 };
|
|
153
|
+
let core;
|
|
154
|
+
let archive;
|
|
155
|
+
let failedStep = job.kind === 'erase' ? 'retire' : 'export', failure, uncertain = false;
|
|
156
|
+
let delivered = false;
|
|
157
|
+
try {
|
|
158
|
+
if (job.kind === 'erase')
|
|
159
|
+
await p.retire(id);
|
|
160
|
+
failedStep = 'export';
|
|
161
|
+
archive = await (0, member_export_js_1.buildMemberExport)(p.root, id, (0, mama_core_1.exportPrincipalRecords)(options.adapter, id), productExport(id));
|
|
162
|
+
leave();
|
|
163
|
+
failedStep = 'export_delivery';
|
|
164
|
+
try {
|
|
165
|
+
const telegram = p.telegram();
|
|
166
|
+
if (!telegram)
|
|
167
|
+
throw new Error('Member Telegram delivery is not configured');
|
|
168
|
+
await telegram.sendFile(archive.path, undefined, `${job.commandId}:export`, {
|
|
169
|
+
access: p.access(id),
|
|
170
|
+
filesRoot: archive.filesRoot,
|
|
171
|
+
});
|
|
172
|
+
delivered = true;
|
|
173
|
+
}
|
|
174
|
+
catch (error) {
|
|
175
|
+
uncertain = p.ledger()?.get(`file:${job.commandId}:export`)?.deliveryUncertain === true;
|
|
176
|
+
throw error;
|
|
177
|
+
}
|
|
178
|
+
finally {
|
|
179
|
+
(0, node_fs_1.rmSync)(archive.path, { force: true });
|
|
180
|
+
}
|
|
181
|
+
if (job.kind === 'erase') {
|
|
182
|
+
// Retirement removed the writers and intake before the snapshot. Check and delete
|
|
183
|
+
// synchronously after delivery, with no await between them that could admit a write.
|
|
184
|
+
failedStep = 'file_check';
|
|
185
|
+
const inventory = (0, member_export_js_1.memberFileInventory)(p.root, id);
|
|
186
|
+
if ((0, member_export_js_1.memberInventorySnapshot)(inventory) !== archive.fileSnapshot)
|
|
187
|
+
throw new Error('Your files changed while the export was being sent');
|
|
188
|
+
failedStep = 'files';
|
|
189
|
+
product.files = 0;
|
|
190
|
+
product.fileBytes = 0;
|
|
191
|
+
product.fileTrees = 0;
|
|
192
|
+
for (const tree of inventory.trees) {
|
|
193
|
+
const remaining = inventory.allFiles.filter((file) => (0, node_path_1.relative)(tree, file.path) !== '..' && !(0, node_path_1.relative)(tree, file.path).startsWith('../'));
|
|
194
|
+
(0, node_fs_1.rmSync)(tree, { recursive: true, force: true });
|
|
195
|
+
product.files += remaining.length;
|
|
196
|
+
product.fileBytes += remaining.reduce((n, file) => n + file.size, 0);
|
|
197
|
+
product.fileTrees++;
|
|
198
|
+
}
|
|
199
|
+
failedStep = 'queued_inputs';
|
|
200
|
+
// Delivered in the export and never dispatched: cancelled here, they are terminal, so
|
|
201
|
+
// the core erase below removes them with their refs.
|
|
202
|
+
product.cancelledMessages = p.mailbox().cancelQueued(id, 'member_erase');
|
|
203
|
+
failedStep = 'connector_event_index';
|
|
204
|
+
product.connector_event_index = options.adapter
|
|
205
|
+
.prepare("DELETE FROM connector_event_index WHERE source_connector='chat' AND memory_scope_kind='user' AND memory_scope_id=?")
|
|
206
|
+
.run(id).changes;
|
|
207
|
+
failedStep = 'core';
|
|
208
|
+
core = (0, mama_core_1.erasePrincipalRecords)(options.adapter, {
|
|
209
|
+
principalId: id,
|
|
210
|
+
commandId: job.commandId,
|
|
211
|
+
});
|
|
212
|
+
failedStep = 'chat_raw';
|
|
213
|
+
Object.assign(product, p.rawStore.eraseScope('chat', 'user', id));
|
|
214
|
+
failedStep = 'message_ledger';
|
|
215
|
+
const ledger = p.ledger();
|
|
216
|
+
if (!ledger)
|
|
217
|
+
throw new Error('Live message ledger is not configured');
|
|
218
|
+
product.message_ledger = ledger.eraseTelegramDm(dm(p.access(id)), [
|
|
219
|
+
`file:${job.commandId}:export`,
|
|
220
|
+
]);
|
|
221
|
+
}
|
|
222
|
+
}
|
|
223
|
+
catch (error) {
|
|
224
|
+
failure = error;
|
|
225
|
+
}
|
|
226
|
+
try {
|
|
227
|
+
try {
|
|
228
|
+
p.serve(id);
|
|
229
|
+
}
|
|
230
|
+
catch (error) {
|
|
231
|
+
// Keep the step that stopped the job: it decides what was erased and what remains.
|
|
232
|
+
if (failure === undefined) {
|
|
233
|
+
failedStep = 'serve';
|
|
234
|
+
failure = error;
|
|
235
|
+
}
|
|
236
|
+
else
|
|
237
|
+
failure = new Error(`${failure instanceof Error ? failure.message : String(failure)}; serving the member again also failed: ${error instanceof Error ? error.message : String(error)}`);
|
|
238
|
+
}
|
|
239
|
+
const omittedFiles = archive?.omittedFiles ?? [];
|
|
240
|
+
let text;
|
|
241
|
+
if (job.kind === 'erase')
|
|
242
|
+
text = receiptText(core, product, failure, failedStep, omittedFiles, uncertain);
|
|
243
|
+
else {
|
|
244
|
+
text = uncertain
|
|
245
|
+
? `Export delivery is uncertain at ${failedStep}: ${failure instanceof Error ? failure.message : String(failure)}.`
|
|
246
|
+
: failure
|
|
247
|
+
? delivered
|
|
248
|
+
? `Export sent, but service restoration stopped at ${failedStep}: ${failure instanceof Error ? failure.message : String(failure)}.`
|
|
249
|
+
: `Export not sent at ${failedStep}: ${failure instanceof Error ? failure.message : String(failure)}.`
|
|
250
|
+
: 'Export sent: your personal records and files were sent to your registered Telegram DM.';
|
|
251
|
+
if (uncertain)
|
|
252
|
+
text +=
|
|
253
|
+
'\nThe export delivery is uncertain. Check whether the file arrived before asking again.';
|
|
254
|
+
text += `\nFiles: ${archive?.fileCount ?? 0} files, ${archive?.fileBytes ?? 0} bytes.\nYour enrollment and grants are kept.`;
|
|
255
|
+
for (const name of omittedFiles)
|
|
256
|
+
text += `\nLeft out of the export (a link is outside your files or in a private host directory): ${name}.`;
|
|
257
|
+
}
|
|
258
|
+
await sendReceipt(job, text);
|
|
259
|
+
}
|
|
260
|
+
finally {
|
|
261
|
+
if (job.kind === 'export') {
|
|
262
|
+
leave();
|
|
263
|
+
exporting.delete(id);
|
|
264
|
+
}
|
|
265
|
+
else {
|
|
266
|
+
blocked.delete(id);
|
|
267
|
+
erasing.delete(id);
|
|
268
|
+
}
|
|
269
|
+
}
|
|
270
|
+
};
|
|
271
|
+
const schedule = (kind, row) => {
|
|
272
|
+
const commandId = `member-${kind}:${row.principalId}:${row.id}`;
|
|
273
|
+
scheduled.set(row.id, {
|
|
274
|
+
principalId: row.principalId,
|
|
275
|
+
inputId: row.id,
|
|
276
|
+
commandId,
|
|
277
|
+
kind,
|
|
278
|
+
release: ports().turnChain.hold(),
|
|
279
|
+
});
|
|
280
|
+
blocked.add(row.principalId);
|
|
281
|
+
if (kind === 'erase')
|
|
282
|
+
erasing.add(row.principalId);
|
|
283
|
+
return { status: 'scheduled', commandId };
|
|
284
|
+
};
|
|
285
|
+
const registrations = [
|
|
286
|
+
'records.export',
|
|
287
|
+
'records.erase',
|
|
288
|
+
].map((name) => ({
|
|
289
|
+
contract: {
|
|
290
|
+
name,
|
|
291
|
+
summary: name === 'records.export'
|
|
292
|
+
? "Schedule export of the caller's personal records and files as one zip to their registered Telegram DM (50 MiB). The host exports after this member message completes and records a receipt. Excludes account settings and names files whose links leave the member's trees."
|
|
293
|
+
: "Preview erasure of the caller's personal records and files, with separate file totals for export and deletion. Pass the confirmationToken from this preview in a later member message to confirm. The host exports after that turn completes and erases only after Telegram accepts the export. Enrollment, grants and shared revisions are kept.",
|
|
294
|
+
inputSchema: {
|
|
295
|
+
type: 'object',
|
|
296
|
+
additionalProperties: false,
|
|
297
|
+
properties: name === 'records.export'
|
|
298
|
+
? {}
|
|
299
|
+
: { confirmationToken: { type: 'string', minLength: 1 } },
|
|
300
|
+
},
|
|
301
|
+
},
|
|
302
|
+
exec: async (input, context) => {
|
|
303
|
+
const id = context.access.principalId;
|
|
304
|
+
const principal = (0, mama_core_1.createPrincipalRepository)(options.adapter).findById(id);
|
|
305
|
+
const ref = context.session?.sourceMessageRef;
|
|
306
|
+
if (principal?.kind !== 'member' ||
|
|
307
|
+
principal.status !== 'active' ||
|
|
308
|
+
context.session?.replaySourceEndMs !== undefined ||
|
|
309
|
+
!ref ||
|
|
310
|
+
ref.startsWith('subagent:') ||
|
|
311
|
+
!options.isMessageTurn(ref, id))
|
|
312
|
+
throw denied();
|
|
313
|
+
const p = ports();
|
|
314
|
+
const row = p.mailbox().readInput(ref, id);
|
|
315
|
+
if (!row || row.kind !== 'owner_message' || blocked.has(id))
|
|
316
|
+
throw denied();
|
|
317
|
+
if (exporting.has(id))
|
|
318
|
+
throw Object.assign(new Error('An export is still being sent to your DM; ask again after it arrives'), { name: 'denied' });
|
|
319
|
+
if (name === 'records.export')
|
|
320
|
+
return schedule('export', row);
|
|
321
|
+
const value = input.confirmationToken;
|
|
322
|
+
if (value !== undefined) {
|
|
323
|
+
const token = tokens.get(id);
|
|
324
|
+
if (!token ||
|
|
325
|
+
token.value !== value ||
|
|
326
|
+
token.principalId !== id ||
|
|
327
|
+
row.id <= token.inputId ||
|
|
328
|
+
row.createdAt <= token.issuedAt)
|
|
329
|
+
throw denied();
|
|
330
|
+
tokens.delete(id);
|
|
331
|
+
return schedule('erase', row);
|
|
332
|
+
}
|
|
333
|
+
const core = (0, mama_core_1.exportPrincipalRecords)(options.adapter, id);
|
|
334
|
+
const product = productExport(id);
|
|
335
|
+
const inventory = (0, member_export_js_1.memberFileInventory)(p.root, id);
|
|
336
|
+
const files = inventory.files;
|
|
337
|
+
const token = {
|
|
338
|
+
value: (0, node_crypto_1.randomUUID)(),
|
|
339
|
+
principalId: id,
|
|
340
|
+
inputId: row.id,
|
|
341
|
+
issuedAt: Date.now(),
|
|
342
|
+
};
|
|
343
|
+
tokens.set(id, token);
|
|
344
|
+
return {
|
|
345
|
+
status: 'preview',
|
|
346
|
+
counts: { core: core.counts, product: product.counts },
|
|
347
|
+
fileCount: files.length,
|
|
348
|
+
fileBytes: files.reduce((n, file) => n + file.size, 0),
|
|
349
|
+
eraseFileCount: inventory.allFiles.length,
|
|
350
|
+
eraseFileBytes: inventory.allFiles.reduce((n, file) => n + file.size, 0),
|
|
351
|
+
confirmationToken: token.value,
|
|
352
|
+
omittedFiles: inventory.omittedFiles,
|
|
353
|
+
};
|
|
354
|
+
},
|
|
355
|
+
}));
|
|
356
|
+
return {
|
|
357
|
+
registrations,
|
|
358
|
+
isBusy: () => erasing.size > 0,
|
|
359
|
+
isBlocked: (id) => blocked.has(id),
|
|
360
|
+
onSettled: (row) => {
|
|
361
|
+
const job = take(row);
|
|
362
|
+
if (!job)
|
|
363
|
+
return;
|
|
364
|
+
if (ports().isStopping()) {
|
|
365
|
+
blocked.delete(job.principalId);
|
|
366
|
+
erasing.delete(job.principalId);
|
|
367
|
+
}
|
|
368
|
+
else
|
|
369
|
+
enqueue((leaveChain) => runJob(job, leaveChain));
|
|
370
|
+
job.release();
|
|
371
|
+
},
|
|
372
|
+
onDead: (row, reason) => cancelConfirmation(row, 'dead', reason),
|
|
373
|
+
onUncertain: (row, reason) => cancelConfirmation(row, 'uncertain', reason),
|
|
374
|
+
idle: async () => {
|
|
375
|
+
await Promise.allSettled([...jobs]);
|
|
376
|
+
},
|
|
377
|
+
};
|
|
378
|
+
}
|
|
379
|
+
//# sourceMappingURL=member-records.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"member-records.js","sourceRoot":"","sources":["../../src/api/member-records.ts"],"names":[],"mappings":"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"}
|
|
@@ -32,8 +32,8 @@ function guardMemberSharedRecords(registration, adapter, ownerPrincipalId) {
|
|
|
32
32
|
.all(id);
|
|
33
33
|
if (bindings.length > 0 &&
|
|
34
34
|
!bindings.every((binding) => binding.kind === 'user' && binding.external_id === principalId))
|
|
35
|
-
throw denied(`${id} is not only yours: shared records change in the
|
|
36
|
-
'
|
|
35
|
+
throw denied(`${id} is not only yours: shared records change in the common channel. ` +
|
|
36
|
+
'Save your own note instead, or ask in the common channel.');
|
|
37
37
|
}
|
|
38
38
|
}
|
|
39
39
|
return await registration.exec(input, context);
|