@jungjaehoon/mama-os 0.75.0 → 0.77.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 +112 -0
- package/README.md +1 -1
- package/dist/api/attachment-actions.d.ts.map +1 -1
- package/dist/api/attachment-actions.js +8 -7
- package/dist/api/attachment-actions.js.map +1 -1
- package/dist/api/code-act-actions.d.ts +3 -1
- package/dist/api/code-act-actions.d.ts.map +1 -1
- package/dist/api/code-act-actions.js +21 -9
- package/dist/api/code-act-actions.js.map +1 -1
- package/dist/api/document-actions.d.ts +13 -0
- package/dist/api/document-actions.d.ts.map +1 -0
- package/dist/api/document-actions.js +55 -0
- package/dist/api/document-actions.js.map +1 -0
- package/dist/api/drive-actions.d.ts +4 -0
- package/dist/api/drive-actions.d.ts.map +1 -1
- package/dist/api/drive-actions.js +15 -7
- package/dist/api/drive-actions.js.map +1 -1
- package/dist/api/drive-delivery.d.ts.map +1 -1
- package/dist/api/drive-delivery.js +8 -3
- package/dist/api/drive-delivery.js.map +1 -1
- package/dist/api/member-enrollment.d.ts +9 -3
- package/dist/api/member-enrollment.d.ts.map +1 -1
- package/dist/api/member-enrollment.js +64 -16
- package/dist/api/member-enrollment.js.map +1 -1
- package/dist/api/member-export.d.ts.map +1 -1
- package/dist/api/member-export.js +14 -6
- package/dist/api/member-export.js.map +1 -1
- package/dist/api/member-lifecycle.d.ts +25 -4
- package/dist/api/member-lifecycle.d.ts.map +1 -1
- package/dist/api/member-lifecycle.js +88 -21
- package/dist/api/member-lifecycle.js.map +1 -1
- package/dist/api/member-notice-actions.d.ts +18 -0
- package/dist/api/member-notice-actions.d.ts.map +1 -0
- package/dist/api/member-notice-actions.js +184 -0
- package/dist/api/member-notice-actions.js.map +1 -0
- package/dist/api/member-records.d.ts +17 -2
- package/dist/api/member-records.d.ts.map +1 -1
- package/dist/api/member-records.js +440 -82
- package/dist/api/member-records.js.map +1 -1
- package/dist/api/member-share-actions.d.ts +3 -3
- package/dist/api/member-share-actions.d.ts.map +1 -1
- package/dist/api/member-share-actions.js +47 -20
- package/dist/api/member-share-actions.js.map +1 -1
- package/dist/api/owner-policy-actions.d.ts +1 -0
- package/dist/api/owner-policy-actions.d.ts.map +1 -1
- package/dist/api/owner-policy-actions.js +8 -4
- package/dist/api/owner-policy-actions.js.map +1 -1
- package/dist/api/owner-timezone-actions.d.ts +5 -2
- package/dist/api/owner-timezone-actions.d.ts.map +1 -1
- package/dist/api/owner-timezone-actions.js +4 -6
- package/dist/api/owner-timezone-actions.js.map +1 -1
- package/dist/api/personal-job-actions.d.ts +6 -0
- package/dist/api/personal-job-actions.d.ts.map +1 -0
- package/dist/api/personal-job-actions.js +72 -0
- package/dist/api/personal-job-actions.js.map +1 -0
- package/dist/api/security-events.d.ts +6 -1
- package/dist/api/security-events.d.ts.map +1 -1
- package/dist/api/security-events.js +34 -15
- package/dist/api/security-events.js.map +1 -1
- package/dist/api/skill-actions.d.ts +5 -0
- package/dist/api/skill-actions.d.ts.map +1 -0
- package/dist/api/skill-actions.js +66 -0
- package/dist/api/skill-actions.js.map +1 -0
- package/dist/api/source-actions.d.ts.map +1 -1
- package/dist/api/source-actions.js +4 -2
- package/dist/api/source-actions.js.map +1 -1
- package/dist/api/stored-source-reader.d.ts.map +1 -1
- package/dist/api/stored-source-reader.js +9 -2
- package/dist/api/stored-source-reader.js.map +1 -1
- package/dist/api/trello-actions.d.ts.map +1 -1
- package/dist/api/trello-actions.js +8 -2
- package/dist/api/trello-actions.js.map +1 -1
- package/dist/api/work-actions.d.ts +12 -2
- package/dist/api/work-actions.d.ts.map +1 -1
- package/dist/api/work-actions.js +57 -10
- package/dist/api/work-actions.js.map +1 -1
- package/dist/cli/commands/daemon.d.ts +12 -2
- package/dist/cli/commands/daemon.d.ts.map +1 -1
- package/dist/cli/commands/daemon.js +85 -13
- package/dist/cli/commands/daemon.js.map +1 -1
- package/dist/cli/commands/init.d.ts +4 -0
- package/dist/cli/commands/init.d.ts.map +1 -1
- package/dist/cli/commands/init.js +23 -0
- package/dist/cli/commands/init.js.map +1 -1
- package/dist/cli/commands/tools.d.ts +12 -0
- package/dist/cli/commands/tools.d.ts.map +1 -0
- package/dist/cli/commands/tools.js +109 -0
- package/dist/cli/commands/tools.js.map +1 -0
- package/dist/cli/index.js +6 -1
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/runtime/claude-caller-config.d.ts +3 -1
- package/dist/cli/runtime/claude-caller-config.d.ts.map +1 -1
- package/dist/cli/runtime/claude-caller-config.js +14 -2
- package/dist/cli/runtime/claude-caller-config.js.map +1 -1
- package/dist/connectors/framework/polling-scheduler.d.ts +6 -1
- package/dist/connectors/framework/polling-scheduler.d.ts.map +1 -1
- package/dist/connectors/framework/polling-scheduler.js +25 -3
- package/dist/connectors/framework/polling-scheduler.js.map +1 -1
- package/dist/connectors/framework/stored-index-read.d.ts +2 -2
- package/dist/connectors/framework/stored-index-read.d.ts.map +1 -1
- package/dist/connectors/framework/stored-index-read.js +10 -3
- package/dist/connectors/framework/stored-index-read.js.map +1 -1
- package/dist/gateways/base-gateway.d.ts +7 -0
- package/dist/gateways/base-gateway.d.ts.map +1 -1
- package/dist/gateways/base-gateway.js +24 -0
- package/dist/gateways/base-gateway.js.map +1 -1
- package/dist/gateways/discord.d.ts +4 -0
- package/dist/gateways/discord.d.ts.map +1 -1
- package/dist/gateways/discord.js +24 -6
- package/dist/gateways/discord.js.map +1 -1
- package/dist/gateways/slack.d.ts +3 -0
- package/dist/gateways/slack.d.ts.map +1 -1
- package/dist/gateways/slack.js +15 -2
- package/dist/gateways/slack.js.map +1 -1
- package/dist/gateways/telegram-errors.d.ts +3 -0
- package/dist/gateways/telegram-errors.d.ts.map +1 -1
- package/dist/gateways/telegram-errors.js +5 -0
- package/dist/gateways/telegram-errors.js.map +1 -1
- package/dist/gateways/telegram-message-ledger.d.ts +7 -0
- package/dist/gateways/telegram-message-ledger.d.ts.map +1 -1
- package/dist/gateways/telegram-message-ledger.js +27 -2
- package/dist/gateways/telegram-message-ledger.js.map +1 -1
- package/dist/gateways/telegram.d.ts +24 -6
- package/dist/gateways/telegram.d.ts.map +1 -1
- package/dist/gateways/telegram.js +258 -44
- package/dist/gateways/telegram.js.map +1 -1
- package/dist/gateways/turn-contract.d.ts +6 -0
- package/dist/gateways/turn-contract.d.ts.map +1 -1
- package/dist/runtime/action-surface.d.ts +28 -3
- package/dist/runtime/action-surface.d.ts.map +1 -1
- package/dist/runtime/action-surface.js +316 -34
- package/dist/runtime/action-surface.js.map +1 -1
- package/dist/runtime/backend-security.d.ts +4 -0
- package/dist/runtime/backend-security.d.ts.map +1 -1
- package/dist/runtime/backend-security.js +8 -1
- package/dist/runtime/backend-security.js.map +1 -1
- package/dist/runtime/claude-caller-hook.d.ts +14 -0
- package/dist/runtime/claude-caller-hook.d.ts.map +1 -1
- package/dist/runtime/claude-caller-hook.js +21 -1
- package/dist/runtime/claude-caller-hook.js.map +1 -1
- package/dist/runtime/config.d.ts +6 -0
- package/dist/runtime/config.d.ts.map +1 -1
- package/dist/runtime/config.js +24 -0
- package/dist/runtime/config.js.map +1 -1
- package/dist/runtime/connectors.js +1 -1
- package/dist/runtime/connectors.js.map +1 -1
- package/dist/runtime/egress-proxy.d.ts +3 -3
- package/dist/runtime/egress-proxy.d.ts.map +1 -1
- package/dist/runtime/egress-proxy.js +16 -3
- package/dist/runtime/egress-proxy.js.map +1 -1
- package/dist/runtime/member-paths.d.ts +9 -1
- package/dist/runtime/member-paths.d.ts.map +1 -1
- package/dist/runtime/member-paths.js +67 -5
- package/dist/runtime/member-paths.js.map +1 -1
- package/dist/runtime/member-session.d.ts +21 -21
- package/dist/runtime/member-session.d.ts.map +1 -1
- package/dist/runtime/member-session.js +297 -34
- package/dist/runtime/member-session.js.map +1 -1
- package/dist/runtime/member-system-prompt.d.ts +3 -0
- package/dist/runtime/member-system-prompt.d.ts.map +1 -1
- package/dist/runtime/member-system-prompt.js +30 -4
- package/dist/runtime/member-system-prompt.js.map +1 -1
- package/dist/runtime/native-session.d.ts +8 -0
- package/dist/runtime/native-session.d.ts.map +1 -1
- package/dist/runtime/native-session.js +105 -17
- package/dist/runtime/native-session.js.map +1 -1
- package/dist/runtime/outbound-attempts.d.ts +5 -2
- package/dist/runtime/outbound-attempts.d.ts.map +1 -1
- package/dist/runtime/outbound-attempts.js +3 -2
- package/dist/runtime/outbound-attempts.js.map +1 -1
- package/dist/runtime/owner-authority.d.ts +16 -14
- package/dist/runtime/owner-authority.d.ts.map +1 -1
- package/dist/runtime/owner-authority.js +163 -7
- package/dist/runtime/owner-authority.js.map +1 -1
- package/dist/runtime/owner-runtime.d.ts +18 -5
- package/dist/runtime/owner-runtime.d.ts.map +1 -1
- package/dist/runtime/owner-runtime.js +429 -43
- package/dist/runtime/owner-runtime.js.map +1 -1
- package/dist/runtime/owner-system-prompt.d.ts +3 -1
- package/dist/runtime/owner-system-prompt.d.ts.map +1 -1
- package/dist/runtime/owner-system-prompt.js +16 -6
- package/dist/runtime/owner-system-prompt.js.map +1 -1
- package/dist/runtime/personal-job-cron.d.ts +6 -0
- package/dist/runtime/personal-job-cron.d.ts.map +1 -0
- package/dist/runtime/personal-job-cron.js +154 -0
- package/dist/runtime/personal-job-cron.js.map +1 -0
- package/dist/runtime/personal-jobs.d.ts +107 -0
- package/dist/runtime/personal-jobs.d.ts.map +1 -0
- package/dist/runtime/personal-jobs.js +353 -0
- package/dist/runtime/personal-jobs.js.map +1 -0
- package/dist/runtime/personal-notices.d.ts +38 -0
- package/dist/runtime/personal-notices.d.ts.map +1 -0
- package/dist/runtime/personal-notices.js +137 -0
- package/dist/runtime/personal-notices.js.map +1 -0
- package/dist/runtime/personal-turns.d.ts +23 -0
- package/dist/runtime/personal-turns.d.ts.map +1 -0
- package/dist/runtime/personal-turns.js +51 -0
- package/dist/runtime/personal-turns.js.map +1 -0
- package/dist/runtime/principal-access.d.ts +8 -0
- package/dist/runtime/principal-access.d.ts.map +1 -1
- package/dist/runtime/principal-access.js +70 -2
- package/dist/runtime/principal-access.js.map +1 -1
- package/dist/runtime/principal-sessions.d.ts +16 -2
- package/dist/runtime/principal-sessions.d.ts.map +1 -1
- package/dist/runtime/principal-sessions.js +104 -21
- package/dist/runtime/principal-sessions.js.map +1 -1
- package/dist/runtime/skills.d.ts +86 -0
- package/dist/runtime/skills.d.ts.map +1 -0
- package/dist/runtime/skills.js +560 -0
- package/dist/runtime/skills.js.map +1 -0
- package/dist/runtime/stimulus-delivery.d.ts +21 -1
- package/dist/runtime/stimulus-delivery.d.ts.map +1 -1
- package/dist/runtime/stimulus-delivery.js +185 -18
- package/dist/runtime/stimulus-delivery.js.map +1 -1
- package/dist/runtime/tools-paths.d.ts +9 -0
- package/dist/runtime/tools-paths.d.ts.map +1 -0
- package/dist/runtime/tools-paths.js +98 -0
- package/dist/runtime/tools-paths.js.map +1 -0
- package/dist/runtime/turn-orders.d.ts +22 -2
- package/dist/runtime/turn-orders.d.ts.map +1 -1
- package/dist/runtime/turn-orders.js +60 -6
- package/dist/runtime/turn-orders.js.map +1 -1
- package/dist/runtime/web-fetch-scope.d.ts +20 -0
- package/dist/runtime/web-fetch-scope.d.ts.map +1 -0
- package/dist/runtime/web-fetch-scope.js +68 -0
- package/dist/runtime/web-fetch-scope.js.map +1 -0
- package/dist/storage/chat-sources.d.ts +21 -0
- package/dist/storage/chat-sources.d.ts.map +1 -1
- package/dist/storage/chat-sources.js +65 -3
- package/dist/storage/chat-sources.js.map +1 -1
- package/dist/tools/command-runner.d.ts +12 -0
- package/dist/tools/command-runner.d.ts.map +1 -0
- package/dist/tools/command-runner.js +65 -0
- package/dist/tools/command-runner.js.map +1 -0
- package/dist/tools/document-render.d.ts +24 -0
- package/dist/tools/document-render.d.ts.map +1 -0
- package/dist/tools/document-render.js +208 -0
- package/dist/tools/document-render.js.map +1 -0
- package/dist/tools/document-toolkit.d.ts +15 -0
- package/dist/tools/document-toolkit.d.ts.map +1 -0
- package/dist/tools/document-toolkit.js +501 -0
- package/dist/tools/document-toolkit.js.map +1 -0
- package/dist/tools/office-render.d.ts +28 -0
- package/dist/tools/office-render.d.ts.map +1 -0
- package/dist/tools/office-render.js +101 -0
- package/dist/tools/office-render.js.map +1 -0
- package/dist/tools/toolkit-process.d.ts +9 -0
- package/dist/tools/toolkit-process.d.ts.map +1 -0
- package/dist/tools/toolkit-process.js +148 -0
- package/dist/tools/toolkit-process.js.map +1 -0
- package/dist/tools/toolkit-state.d.ts +22 -0
- package/dist/tools/toolkit-state.d.ts.map +1 -0
- package/dist/tools/toolkit-state.js +116 -0
- package/dist/tools/toolkit-state.js.map +1 -0
- package/package.json +3 -2
- package/toolkit/inspect-office-zip.py +16 -0
- package/toolkit/rasterize.py +29 -0
- package/toolkit/requirements.in +11 -0
- package/toolkit/requirements.lock +1643 -0
- package/toolkit/smoke.py +32 -0
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.isPersonalTurnTextKey = exports.PersonalTurnFinalFailure = void 0;
|
|
4
|
+
exports.deliverPersonalTurnResult = deliverPersonalTurnResult;
|
|
5
|
+
const telegram_errors_js_1 = require("../gateways/telegram-errors.js");
|
|
6
|
+
/** Final product failures settle an autonomous input without a successful completion. */
|
|
7
|
+
class PersonalTurnFinalFailure extends Error {
|
|
8
|
+
}
|
|
9
|
+
exports.PersonalTurnFinalFailure = PersonalTurnFinalFailure;
|
|
10
|
+
const isPersonalTurnTextKey = (key) => key.startsWith('job:') || key.startsWith('notice:');
|
|
11
|
+
exports.isPersonalTurnTextKey = isPersonalTurnTextKey;
|
|
12
|
+
/** Native results, DM receipts and chat are independently durable for jobs and notices. */
|
|
13
|
+
async function deliverPersonalTurnResult(result, ports) {
|
|
14
|
+
if (ports.isClosed())
|
|
15
|
+
return;
|
|
16
|
+
if (ports.hasExchange()) {
|
|
17
|
+
await ports.completeIfCurrent();
|
|
18
|
+
return;
|
|
19
|
+
}
|
|
20
|
+
if (ports.isOffboarded())
|
|
21
|
+
throw new PersonalTurnFinalFailure(`${ports.label} person is no longer active`);
|
|
22
|
+
const text = result.response.trim();
|
|
23
|
+
// A confirmed send still owes its archive after suspension or a job revision.
|
|
24
|
+
if (text !== '[ack]' && ports.delivered(ports.key)) {
|
|
25
|
+
ports.archive(text);
|
|
26
|
+
await ports.completeIfCurrent();
|
|
27
|
+
return;
|
|
28
|
+
}
|
|
29
|
+
if (!ports.isActive())
|
|
30
|
+
throw new PersonalTurnFinalFailure(`${ports.label} person is no longer active`);
|
|
31
|
+
await ports.assertCurrent();
|
|
32
|
+
const access = ports.access();
|
|
33
|
+
if (!text)
|
|
34
|
+
throw new PersonalTurnFinalFailure(`${ports.label} returned no result; use [ack] when there is nothing to tell`);
|
|
35
|
+
if (text !== '[ack]') {
|
|
36
|
+
try {
|
|
37
|
+
if (!(await ports.send(access, text, ports.key)))
|
|
38
|
+
throw new Error(`${ports.label} DM delivery was not confirmed`);
|
|
39
|
+
}
|
|
40
|
+
catch (error) {
|
|
41
|
+
if (error instanceof telegram_errors_js_1.TelegramJobDeliveryRejected || (0, telegram_errors_js_1.isDefinitiveTelegramRejection)(error))
|
|
42
|
+
throw new PersonalTurnFinalFailure(`${ports.label} DM delivery was rejected`, {
|
|
43
|
+
cause: error,
|
|
44
|
+
});
|
|
45
|
+
throw error;
|
|
46
|
+
}
|
|
47
|
+
ports.archive(text);
|
|
48
|
+
}
|
|
49
|
+
await ports.complete(access);
|
|
50
|
+
}
|
|
51
|
+
//# sourceMappingURL=personal-turns.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"personal-turns.js","sourceRoot":"","sources":["../../src/runtime/personal-turns.ts"],"names":[],"mappings":";;;AAcA,8DAsDC;AAlED,uEAGwC;AAExC,yFAAyF;AACzF,MAAa,wBAAyB,SAAQ,KAAK;CAAG;AAAtD,4DAAsD;AAE/C,MAAM,qBAAqB,GAAG,CAAC,GAAW,EAAE,EAAE,CACnD,GAAG,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,GAAG,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;AADzC,QAAA,qBAAqB,yBACoB;AAEtD,2FAA2F;AACpF,KAAK,UAAU,yBAAyB,CAC7C,MAAwB,EACxB,KAcC;IAED,IAAI,KAAK,CAAC,QAAQ,EAAE;QAAE,OAAO;IAC7B,IAAI,KAAK,CAAC,WAAW,EAAE,EAAE,CAAC;QACxB,MAAM,KAAK,CAAC,iBAAiB,EAAE,CAAC;QAChC,OAAO;IACT,CAAC;IACD,IAAI,KAAK,CAAC,YAAY,EAAE;QACtB,MAAM,IAAI,wBAAwB,CAAC,GAAG,KAAK,CAAC,KAAK,6BAA6B,CAAC,CAAC;IAClF,MAAM,IAAI,GAAG,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;IACpC,8EAA8E;IAC9E,IAAI,IAAI,KAAK,OAAO,IAAI,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC;QACnD,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QACpB,MAAM,KAAK,CAAC,iBAAiB,EAAE,CAAC;QAChC,OAAO;IACT,CAAC;IACD,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE;QACnB,MAAM,IAAI,wBAAwB,CAAC,GAAG,KAAK,CAAC,KAAK,6BAA6B,CAAC,CAAC;IAClF,MAAM,KAAK,CAAC,aAAa,EAAE,CAAC;IAC5B,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC;IAC9B,IAAI,CAAC,IAAI;QACP,MAAM,IAAI,wBAAwB,CAChC,GAAG,KAAK,CAAC,KAAK,8DAA8D,CAC7E,CAAC;IACJ,IAAI,IAAI,KAAK,OAAO,EAAE,CAAC;QACrB,IAAI,CAAC;YACH,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC;gBAC9C,MAAM,IAAI,KAAK,CAAC,GAAG,KAAK,CAAC,KAAK,gCAAgC,CAAC,CAAC;QACpE,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,KAAK,YAAY,gDAA2B,IAAI,IAAA,kDAA6B,EAAC,KAAK,CAAC;gBACtF,MAAM,IAAI,wBAAwB,CAAC,GAAG,KAAK,CAAC,KAAK,2BAA2B,EAAE;oBAC5E,KAAK,EAAE,KAAK;iBACb,CAAC,CAAC;YACL,MAAM,KAAK,CAAC;QACd,CAAC;QACD,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IACtB,CAAC;IACD,MAAM,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;AAC/B,CAAC"}
|
|
@@ -5,11 +5,19 @@ export declare function validateMemberMemoryGrant(scope: {
|
|
|
5
5
|
scopeKind: string;
|
|
6
6
|
scopeId: string;
|
|
7
7
|
}, ownerAccess: JudgmentAccess): void;
|
|
8
|
+
export declare function roomChatFloor(access: JudgmentAccess): number | undefined;
|
|
8
9
|
export interface PrincipalAccessOptions {
|
|
9
10
|
adapter: DatabaseInstance;
|
|
10
11
|
ownerAccess: JudgmentAccess;
|
|
11
12
|
agentId: string;
|
|
13
|
+
sessionKey?: string;
|
|
14
|
+
/** The common channel; only a room there reads and changes owner policy. */
|
|
15
|
+
commonChannelId?: string;
|
|
12
16
|
}
|
|
17
|
+
export declare function memberRoomSessionKey(principalId: string, channel: string): string;
|
|
18
|
+
export declare function memberRoomChannel(principalId: string, key?: string): string | undefined;
|
|
19
|
+
/** Set only by the host's session-key resolver, never by action input. */
|
|
20
|
+
export declare function roomChannel(access: JudgmentAccess): string | undefined;
|
|
13
21
|
/** Registry-backed authority for future member turns; admission is wired separately. */
|
|
14
22
|
export declare function resolvePrincipalAccess(principalId: string, options: PrincipalAccessOptions): JudgmentAccess;
|
|
15
23
|
//# sourceMappingURL=principal-access.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"principal-access.d.ts","sourceRoot":"","sources":["../../src/runtime/principal-access.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,mCAAmC,CAAC;AAC1E,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kCAAkC,CAAC;
|
|
1
|
+
{"version":3,"file":"principal-access.d.ts","sourceRoot":"","sources":["../../src/runtime/principal-access.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,mCAAmC,CAAC;AAC1E,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kCAAkC,CAAC;AAMvE,gGAAgG;AAChG,wBAAgB,yBAAyB,CACvC,KAAK,EAAE;IAAE,SAAS,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,EAC7C,WAAW,EAAE,cAAc,GAC1B,IAAI,CASN;AAED,wBAAgB,aAAa,CAAC,MAAM,EAAE,cAAc,GAAG,MAAM,GAAG,SAAS,CAExE;AAED,MAAM,WAAW,sBAAsB;IACrC,OAAO,EAAE,gBAAgB,CAAC;IAC1B,WAAW,EAAE,cAAc,CAAC;IAC5B,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,4EAA4E;IAC5E,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED,wBAAgB,oBAAoB,CAAC,WAAW,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CAEjF;AAED,wBAAgB,iBAAiB,CAAC,WAAW,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAKvF;AAED,0EAA0E;AAC1E,wBAAgB,WAAW,CAAC,MAAM,EAAE,cAAc,GAAG,MAAM,GAAG,SAAS,CAEtE;AAED,wFAAwF;AACxF,wBAAgB,sBAAsB,CACpC,WAAW,EAAE,MAAM,EACnB,OAAO,EAAE,sBAAsB,GAC9B,cAAc,CA2IhB"}
|
|
@@ -1,20 +1,41 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.validateMemberMemoryGrant = validateMemberMemoryGrant;
|
|
4
|
+
exports.roomChatFloor = roomChatFloor;
|
|
5
|
+
exports.memberRoomSessionKey = memberRoomSessionKey;
|
|
6
|
+
exports.memberRoomChannel = memberRoomChannel;
|
|
7
|
+
exports.roomChannel = roomChannel;
|
|
4
8
|
exports.resolvePrincipalAccess = resolvePrincipalAccess;
|
|
5
9
|
const mama_core_1 = require("@jungjaehoon/mama-core");
|
|
6
10
|
const action_surface_js_1 = require("./action-surface.js");
|
|
11
|
+
const member_lifecycle_js_1 = require("../api/member-lifecycle.js");
|
|
7
12
|
const owner_authority_js_1 = require("./owner-authority.js");
|
|
8
13
|
/** A member grant must not expose the owner's default records or make boot/turn access fail. */
|
|
9
14
|
function validateMemberMemoryGrant(scope, ownerAccess) {
|
|
10
15
|
if ((ownerAccess.defaultScopes ?? ownerAccess.scopes).some((defaultScope) => defaultScope.kind === scope.scopeKind && defaultScope.id === scope.scopeId))
|
|
11
16
|
throw new Error(`member memory grant overlaps owner default scope: ${scope.scopeKind}:${scope.scopeId}`);
|
|
12
17
|
}
|
|
18
|
+
function roomChatFloor(access) {
|
|
19
|
+
return access.roomChatFloor;
|
|
20
|
+
}
|
|
21
|
+
function memberRoomSessionKey(principalId, channel) {
|
|
22
|
+
return `member:${principalId}:room:telegram:${channel}`;
|
|
23
|
+
}
|
|
24
|
+
function memberRoomChannel(principalId, key) {
|
|
25
|
+
const prefix = `member:${principalId}:room:telegram:`;
|
|
26
|
+
return key?.startsWith(prefix) && key.length > prefix.length
|
|
27
|
+
? key.slice(prefix.length)
|
|
28
|
+
: undefined;
|
|
29
|
+
}
|
|
30
|
+
/** Set only by the host's session-key resolver, never by action input. */
|
|
31
|
+
function roomChannel(access) {
|
|
32
|
+
return access.roomChannel;
|
|
33
|
+
}
|
|
13
34
|
/** Registry-backed authority for future member turns; admission is wired separately. */
|
|
14
35
|
function resolvePrincipalAccess(principalId, options) {
|
|
15
36
|
const { adapter, ownerAccess, agentId } = options;
|
|
16
37
|
const principal = adapter
|
|
17
|
-
.prepare('SELECT kind, status FROM principals WHERE principal_id = ?')
|
|
38
|
+
.prepare('SELECT kind, status, created_at FROM principals WHERE principal_id = ?')
|
|
18
39
|
.get(principalId);
|
|
19
40
|
if (!principal)
|
|
20
41
|
throw new Error(`unknown principal: ${principalId}`);
|
|
@@ -32,6 +53,7 @@ function resolvePrincipalAccess(principalId, options) {
|
|
|
32
53
|
if (identities.length !== 1)
|
|
33
54
|
throw new Error(`member ${principalId} requires exactly one Telegram private identity`);
|
|
34
55
|
const dmId = identities[0].external_id;
|
|
56
|
+
const room = memberRoomChannel(principalId, options.sessionKey);
|
|
35
57
|
const repository = (0, mama_core_1.createPrincipalRepository)(adapter);
|
|
36
58
|
const ownerRole = (0, owner_authority_js_1.holdsOwnerRole)(repository, principalId);
|
|
37
59
|
// Unscoped owner work binds its defaults; partition write authority does not make a default.
|
|
@@ -52,6 +74,43 @@ function resolvePrincipalAccess(principalId, options) {
|
|
|
52
74
|
channels[scope.connector] = granted;
|
|
53
75
|
}
|
|
54
76
|
}
|
|
77
|
+
if (room !== undefined) {
|
|
78
|
+
const scopes = [
|
|
79
|
+
...new Map(readScopes.map((scope) => [`${scope.kind}\0${scope.id}`, scope])).values(),
|
|
80
|
+
];
|
|
81
|
+
return {
|
|
82
|
+
principalId,
|
|
83
|
+
agentId,
|
|
84
|
+
scopes,
|
|
85
|
+
readScopes: scopes,
|
|
86
|
+
defaultScopes: [],
|
|
87
|
+
connectors: [...connectors],
|
|
88
|
+
channels: { ...channels, chat: [`telegram:${room}`] },
|
|
89
|
+
destinations: [{ kind: 'telegram', id: room }],
|
|
90
|
+
actions: [
|
|
91
|
+
...action_surface_js_1.MEMBER_ACTIONS.filter((action) => !action.startsWith('schedule.job.') &&
|
|
92
|
+
!action.startsWith('memory.checkpoint.') &&
|
|
93
|
+
// Skills include the person's own workflows, and core graph and provenance reads do
|
|
94
|
+
// not know the room's enrollment floor; the room's source reads apply it.
|
|
95
|
+
![
|
|
96
|
+
'memory.share',
|
|
97
|
+
'records.export',
|
|
98
|
+
'records.erase',
|
|
99
|
+
'skill.list',
|
|
100
|
+
'skill.read',
|
|
101
|
+
'graph.query',
|
|
102
|
+
'memory.read:provenance',
|
|
103
|
+
].includes(action)),
|
|
104
|
+
'work.create',
|
|
105
|
+
'work.revise',
|
|
106
|
+
'work.link',
|
|
107
|
+
'work.no_update',
|
|
108
|
+
...(room === options.commonChannelId ? ['manage.policy.read', 'manage.policy.update'] : []),
|
|
109
|
+
],
|
|
110
|
+
roomChannel: room,
|
|
111
|
+
roomChatFloor: principal.created_at,
|
|
112
|
+
};
|
|
113
|
+
}
|
|
55
114
|
if (ownerRole) {
|
|
56
115
|
readScopes.push(...ownerAccess.scopes, ...(ownerAccess.readScopes ?? []));
|
|
57
116
|
for (const connector of ownerAccess.connectors ?? [])
|
|
@@ -87,7 +146,16 @@ function resolvePrincipalAccess(principalId, options) {
|
|
|
87
146
|
connectorWideRead: (ownerAccess.connectorWideRead ?? []).filter((source) => source !== 'chat'),
|
|
88
147
|
}
|
|
89
148
|
: {}),
|
|
90
|
-
actions: ownerRole
|
|
149
|
+
actions: ownerRole
|
|
150
|
+
? [
|
|
151
|
+
...action_surface_js_1.MEMBER_ACTIONS,
|
|
152
|
+
'drive.read',
|
|
153
|
+
'drive.download',
|
|
154
|
+
'report.read',
|
|
155
|
+
...member_lifecycle_js_1.MEMBER_MANAGEMENT_ACTIONS,
|
|
156
|
+
'manage.member.enroll',
|
|
157
|
+
]
|
|
158
|
+
: action_surface_js_1.MEMBER_ACTIONS,
|
|
91
159
|
};
|
|
92
160
|
}
|
|
93
161
|
//# sourceMappingURL=principal-access.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"principal-access.js","sourceRoot":"","sources":["../../src/runtime/principal-access.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"principal-access.js","sourceRoot":"","sources":["../../src/runtime/principal-access.ts"],"names":[],"mappings":"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"}
|
|
@@ -5,18 +5,32 @@ interface SessionEntry {
|
|
|
5
5
|
native: NativeSessionHandle & Partial<Pick<NativeSession, 'callAction'>>;
|
|
6
6
|
delivery: ReplayClockDelivery;
|
|
7
7
|
}
|
|
8
|
-
/**
|
|
8
|
+
/** A serial chain for one principal's complete deliveries and host changes. */
|
|
9
9
|
export declare function createSerialTurnChain(): (<T>(execute: () => Promise<T>) => Promise<T>) & {
|
|
10
10
|
next: <T>(execute: () => Promise<T>) => Promise<T>;
|
|
11
|
+
afterCurrent: <T>(execute: () => Promise<T>) => Promise<T>;
|
|
12
|
+
isBusy: () => boolean;
|
|
13
|
+
current: () => Promise<void>;
|
|
14
|
+
directoryCurrent: () => Promise<void>;
|
|
15
|
+
releaseDirectoryWait: () => void;
|
|
16
|
+
idle: () => Promise<void>;
|
|
11
17
|
hold: () => () => void;
|
|
12
18
|
};
|
|
13
19
|
export declare function createPrincipalSessions(ownerPrincipalId: string, unserved?: Pick<StimulusDelivery, 'onUncertain' | 'onDead'>, canRun?: (principalId: string) => boolean): {
|
|
14
20
|
native: NativeSessionHandle;
|
|
15
21
|
delivery: StimulusDelivery;
|
|
16
|
-
turnChain: (<T>(execute: () => Promise<T>) => Promise<T>) & {
|
|
22
|
+
turnChain: (id: string) => (<T>(execute: () => Promise<T>) => Promise<T>) & {
|
|
17
23
|
next: <T>(execute: () => Promise<T>) => Promise<T>;
|
|
24
|
+
afterCurrent: <T>(execute: () => Promise<T>) => Promise<T>;
|
|
25
|
+
isBusy: () => boolean;
|
|
26
|
+
current: () => Promise<void>;
|
|
27
|
+
directoryCurrent: () => Promise<void>;
|
|
28
|
+
releaseDirectoryWait: () => void;
|
|
29
|
+
idle: () => Promise<void>;
|
|
18
30
|
hold: () => () => void;
|
|
19
31
|
};
|
|
32
|
+
exclusive: <T>(execute: () => Promise<T>) => Promise<T>;
|
|
33
|
+
idle: () => Promise<void>;
|
|
20
34
|
get: (id: string) => SessionEntry;
|
|
21
35
|
add: (id: string, entry: SessionEntry) => void;
|
|
22
36
|
remove: (id: string) => void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"principal-sessions.d.ts","sourceRoot":"","sources":["../../src/runtime/principal-sessions.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,mBAAmB,EACxB,KAAK,gBAAgB,EACtB,MAAM,wCAAwC,CAAC;AAChD,OAAO,KAAK,EAAwB,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAC/E,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAElE,UAAU,YAAY;IACpB,MAAM,EAAE,mBAAmB,GAAG,OAAO,CAAC,IAAI,CAAC,aAAa,EAAE,YAAY,CAAC,CAAC,CAAC;IACzE,QAAQ,EAAE,mBAAmB,CAAC;CAC/B;AAED
|
|
1
|
+
{"version":3,"file":"principal-sessions.d.ts","sourceRoot":"","sources":["../../src/runtime/principal-sessions.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,mBAAmB,EACxB,KAAK,gBAAgB,EACtB,MAAM,wCAAwC,CAAC;AAChD,OAAO,KAAK,EAAwB,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAC/E,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAElE,UAAU,YAAY;IACpB,MAAM,EAAE,mBAAmB,GAAG,OAAO,CAAC,IAAI,CAAC,aAAa,EAAE,YAAY,CAAC,CAAC,CAAC;IACzE,QAAQ,EAAE,mBAAmB,CAAC;CAC/B;AAED,+EAA+E;AAC/E,wBAAgB,qBAAqB,MAkDb,CAAC,WAAW,MAAM,OAAO,CAAC,CAAC,CAAC;WAEzC,CAAC,WAAW,MAAM,OAAO,CAAC,CAAC,CAAC;mBAEpB,CAAC,WAAW,MAAM,OAAO,CAAC,CAAC,CAAC;;;;;;;EAqB9C;AAED,wBAAgB,uBAAuB,CACrC,gBAAgB,EAAE,MAAM,EACxB,QAAQ,GAAE,IAAI,CAAC,gBAAgB,EAAE,aAAa,GAAG,QAAQ,CAAM,EAC/D,MAAM,GAAE,CAAC,WAAW,EAAE,MAAM,KAAK,OAAoB;;;oBAS9B,MAAM,OAvCP,CAAC,WAAW,MAAM,OAAO,CAAC,CAAC,CAAC;eAEzC,CAAC,WAAW,MAAM,OAAO,CAAC,CAAC,CAAC;uBAEpB,CAAC,WAAW,MAAM,OAAO,CAAC,CAAC,CAAC;;;;;;;;gBA+C1B,CAAC,WAAW,MAAM,OAAO,CAAC,CAAC,CAAC,KAAG,OAAO,CAAC,CAAC,CAAC;;cAmB3C,MAAM,KAAG,YAAY;cA+E1B,MAAM,SAAS,YAAY;iBAIxB,MAAM;4BAIK,MAAM;EAEjC"}
|
|
@@ -3,38 +3,71 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.createSerialTurnChain = createSerialTurnChain;
|
|
4
4
|
exports.createPrincipalSessions = createPrincipalSessions;
|
|
5
5
|
const runtime_1 = require("@jungjaehoon/mama-core/runtime/runtime");
|
|
6
|
-
/**
|
|
6
|
+
/** A serial chain for one principal's complete deliveries and host changes. */
|
|
7
7
|
function createSerialTurnChain() {
|
|
8
8
|
const queue = [];
|
|
9
|
+
const pending = new Set();
|
|
9
10
|
let running = false;
|
|
10
11
|
let holds = 0;
|
|
12
|
+
let current = Promise.resolve();
|
|
13
|
+
let directoryCurrent = Promise.resolve();
|
|
14
|
+
let releaseDirectoryWait = () => { };
|
|
11
15
|
const pump = () => {
|
|
12
16
|
if (running || holds || !queue.length)
|
|
13
17
|
return;
|
|
14
18
|
running = true;
|
|
15
|
-
const work = queue.shift();
|
|
16
|
-
|
|
19
|
+
const { work } = queue.shift();
|
|
20
|
+
let release;
|
|
21
|
+
directoryCurrent = new Promise((resolve) => {
|
|
22
|
+
release = resolve;
|
|
23
|
+
});
|
|
24
|
+
releaseDirectoryWait = release;
|
|
25
|
+
current = work().finally(() => {
|
|
26
|
+
release();
|
|
17
27
|
running = false;
|
|
18
28
|
pump();
|
|
19
29
|
});
|
|
20
30
|
};
|
|
21
|
-
const add = (execute,
|
|
22
|
-
const
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
31
|
+
const add = (execute, position) => {
|
|
32
|
+
const result = new Promise((resolve, reject) => {
|
|
33
|
+
const work = async () => {
|
|
34
|
+
try {
|
|
35
|
+
resolve(await execute());
|
|
36
|
+
}
|
|
37
|
+
catch (error) {
|
|
38
|
+
reject(error);
|
|
39
|
+
}
|
|
40
|
+
};
|
|
41
|
+
const entry = { work, priority: position !== 'tail' };
|
|
42
|
+
if (position === 'next')
|
|
43
|
+
queue.unshift(entry);
|
|
44
|
+
else if (position === 'afterCurrent') {
|
|
45
|
+
const firstTurn = queue.findIndex((item) => !item.priority);
|
|
46
|
+
queue.splice(firstTurn === -1 ? queue.length : firstTurn, 0, entry);
|
|
28
47
|
}
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
48
|
+
else
|
|
49
|
+
queue.push(entry);
|
|
50
|
+
pump();
|
|
51
|
+
});
|
|
52
|
+
pending.add(result);
|
|
53
|
+
void result.then(() => pending.delete(result), () => pending.delete(result));
|
|
54
|
+
return result;
|
|
55
|
+
};
|
|
56
|
+
return Object.assign((execute) => add(execute, 'tail'), {
|
|
57
|
+
// P9 settlement jobs take the next member slot once the confirming turn releases its hold.
|
|
58
|
+
next: (execute) => add(execute, 'next'),
|
|
59
|
+
// Host changes retain arrival order but run before native turns waiting for this principal.
|
|
60
|
+
afterCurrent: (execute) => add(execute, 'afterCurrent'),
|
|
61
|
+
isBusy: () => running || holds > 0 || queue.length > 0,
|
|
62
|
+
current: () => current,
|
|
63
|
+
directoryCurrent: () => directoryCurrent,
|
|
64
|
+
// A host job whose native writers are retired can keep its principal reservation while
|
|
65
|
+
// letting unrelated member directory work pass its upload/delivery wait.
|
|
66
|
+
releaseDirectoryWait: () => releaseDirectoryWait(),
|
|
67
|
+
idle: async () => {
|
|
68
|
+
while (pending.size)
|
|
69
|
+
await Promise.allSettled([...pending]);
|
|
70
|
+
},
|
|
38
71
|
hold: () => {
|
|
39
72
|
holds++;
|
|
40
73
|
let released = false;
|
|
@@ -50,7 +83,47 @@ function createSerialTurnChain() {
|
|
|
50
83
|
}
|
|
51
84
|
function createPrincipalSessions(ownerPrincipalId, unserved = {}, canRun = () => true) {
|
|
52
85
|
const entries = new Map();
|
|
53
|
-
|
|
86
|
+
// Keep the chain when a session is retired/recreated: its cancelled waiters and host jobs
|
|
87
|
+
// must finish before the replacement session accepts a turn for the same principal.
|
|
88
|
+
const chains = new Map();
|
|
89
|
+
const directoryChanges = createSerialTurnChain();
|
|
90
|
+
const releases = new Map();
|
|
91
|
+
let exclusiveCount = 0;
|
|
92
|
+
const turnChain = (id) => {
|
|
93
|
+
let chain = chains.get(id);
|
|
94
|
+
if (!chain) {
|
|
95
|
+
chains.set(id, (chain = createSerialTurnChain()));
|
|
96
|
+
if (exclusiveCount && id !== ownerPrincipalId)
|
|
97
|
+
releases.set(id, chain.hold());
|
|
98
|
+
}
|
|
99
|
+
return chain;
|
|
100
|
+
};
|
|
101
|
+
// Enrollment and serving create new member paths; suspend/offboard set paths aside in
|
|
102
|
+
// .retired- archives; resume sets residual paths aside before creating a fresh environment.
|
|
103
|
+
// Hold member chains and drain their current work, including newly seen members. The common
|
|
104
|
+
// session denies both member roots wholesale, so it keeps running through these changes.
|
|
105
|
+
const exclusive = (execute) => {
|
|
106
|
+
if (exclusiveCount++ === 0)
|
|
107
|
+
for (const [id, chain] of chains)
|
|
108
|
+
if (id !== ownerPrincipalId)
|
|
109
|
+
releases.set(id, chain.hold());
|
|
110
|
+
const running = [...chains]
|
|
111
|
+
.filter(([id]) => id !== ownerPrincipalId)
|
|
112
|
+
.map(([, chain]) => chain.directoryCurrent());
|
|
113
|
+
return directoryChanges(async () => {
|
|
114
|
+
try {
|
|
115
|
+
await Promise.all(running);
|
|
116
|
+
return await execute();
|
|
117
|
+
}
|
|
118
|
+
finally {
|
|
119
|
+
if (--exclusiveCount === 0) {
|
|
120
|
+
const held = [...releases.values()];
|
|
121
|
+
releases.clear();
|
|
122
|
+
held.forEach((release) => release());
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
});
|
|
126
|
+
};
|
|
54
127
|
const get = (id) => {
|
|
55
128
|
const entry = entries.get(id);
|
|
56
129
|
if (!entry)
|
|
@@ -61,7 +134,10 @@ function createPrincipalSessions(ownerPrincipalId, unserved = {}, canRun = () =>
|
|
|
61
134
|
if (key === 'owner:runtime' || key === 'owner:replay')
|
|
62
135
|
return get(ownerPrincipalId);
|
|
63
136
|
for (const [id, entry] of entries)
|
|
64
|
-
if (key === `member:${id}:runtime`
|
|
137
|
+
if (key === `member:${id}:runtime` ||
|
|
138
|
+
key.startsWith(`member:${id}:job:`) ||
|
|
139
|
+
key.startsWith(`member:${id}:notice:`) ||
|
|
140
|
+
key.startsWith(`member:${id}:room:telegram:`))
|
|
65
141
|
return entry;
|
|
66
142
|
throw new Error(`Principal session key is not served: ${key}`);
|
|
67
143
|
};
|
|
@@ -113,6 +189,13 @@ function createPrincipalSessions(ownerPrincipalId, unserved = {}, canRun = () =>
|
|
|
113
189
|
native,
|
|
114
190
|
delivery,
|
|
115
191
|
turnChain,
|
|
192
|
+
exclusive,
|
|
193
|
+
idle: async () => {
|
|
194
|
+
await Promise.all([
|
|
195
|
+
directoryChanges.idle(),
|
|
196
|
+
...[...chains.values()].map((chain) => chain.idle()),
|
|
197
|
+
]);
|
|
198
|
+
},
|
|
116
199
|
get,
|
|
117
200
|
add: (id, entry) => {
|
|
118
201
|
if (entries.has(id))
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"principal-sessions.js","sourceRoot":"","sources":["../../src/runtime/principal-sessions.ts"],"names":[],"mappings":";;AAcA,
|
|
1
|
+
{"version":3,"file":"principal-sessions.js","sourceRoot":"","sources":["../../src/runtime/principal-sessions.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
import { type DatabaseInstance, type MemoryRecord, type MemoryScopeRef } from '@jungjaehoon/mama-core';
|
|
2
|
+
export interface SkillPaths {
|
|
3
|
+
workspace(principalId: string): string;
|
|
4
|
+
toolsRoot?: string;
|
|
5
|
+
}
|
|
6
|
+
export interface SkillEntry {
|
|
7
|
+
id: string;
|
|
8
|
+
name: string;
|
|
9
|
+
description: string;
|
|
10
|
+
kind: 'workflow' | 'file';
|
|
11
|
+
scope: 'personal' | 'common';
|
|
12
|
+
topic?: string;
|
|
13
|
+
applies_when?: string;
|
|
14
|
+
path?: string;
|
|
15
|
+
error?: string;
|
|
16
|
+
revision?: string;
|
|
17
|
+
}
|
|
18
|
+
export declare function skillDenied(): Error;
|
|
19
|
+
export declare function createSkillStore(ports: {
|
|
20
|
+
adapter: DatabaseInstance;
|
|
21
|
+
commonPrincipalId: string;
|
|
22
|
+
commonScopes(): readonly MemoryScopeRef[];
|
|
23
|
+
paths?: SkillPaths;
|
|
24
|
+
}): {
|
|
25
|
+
list: (id: string) => Promise<SkillEntry[]>;
|
|
26
|
+
read: (id: string, skillId: string) => Promise<{
|
|
27
|
+
text: string;
|
|
28
|
+
files: {
|
|
29
|
+
path: string;
|
|
30
|
+
relativePath: string;
|
|
31
|
+
size: number;
|
|
32
|
+
}[];
|
|
33
|
+
id: string;
|
|
34
|
+
name: string;
|
|
35
|
+
description: string;
|
|
36
|
+
kind: "workflow" | "file";
|
|
37
|
+
scope: "personal" | "common";
|
|
38
|
+
topic?: string;
|
|
39
|
+
applies_when?: string;
|
|
40
|
+
path?: string;
|
|
41
|
+
error?: string;
|
|
42
|
+
revision?: string;
|
|
43
|
+
} | {
|
|
44
|
+
name: string;
|
|
45
|
+
description: string;
|
|
46
|
+
scope: "common" | "personal";
|
|
47
|
+
id: string;
|
|
48
|
+
topic: string;
|
|
49
|
+
kind: import("@jungjaehoon/mama-core").MemoryKind;
|
|
50
|
+
summary: string;
|
|
51
|
+
details: string;
|
|
52
|
+
applies_when?: string;
|
|
53
|
+
steps?: string[];
|
|
54
|
+
evidence_checks?: string[];
|
|
55
|
+
confidence: number;
|
|
56
|
+
status: import("@jungjaehoon/mama-core").MemoryStatus;
|
|
57
|
+
scopes: MemoryScopeRef[];
|
|
58
|
+
source: import("@jungjaehoon/mama-core").MemorySourceRef;
|
|
59
|
+
created_at: number | string;
|
|
60
|
+
updated_at: number | string;
|
|
61
|
+
event_date?: string | null;
|
|
62
|
+
event_datetime?: number | null;
|
|
63
|
+
outcome?: string | null;
|
|
64
|
+
reached_through?: import("@jungjaehoon/mama-core/memory/types").MemoryReachedThrough;
|
|
65
|
+
retrieval_diagnostics?: import("@jungjaehoon/mama-core").SearchHitDiagnostics;
|
|
66
|
+
}>;
|
|
67
|
+
workflows: (id: string) => Promise<MemoryRecord[]>;
|
|
68
|
+
workflowScopes: (id: string) => MemoryScopeRef[];
|
|
69
|
+
publish: (name: string) => {
|
|
70
|
+
name: string;
|
|
71
|
+
path: string;
|
|
72
|
+
status: "published";
|
|
73
|
+
};
|
|
74
|
+
unpublish: (name: string) => {
|
|
75
|
+
name: string;
|
|
76
|
+
status: "unpublished";
|
|
77
|
+
};
|
|
78
|
+
};
|
|
79
|
+
export type SkillStore = ReturnType<typeof createSkillStore>;
|
|
80
|
+
/**
|
|
81
|
+
* Full inventory is remembered locally; only capped names/descriptions reach a turn. `sources`,
|
|
82
|
+
* a DM's readable-sources line, goes with each full inventory: a new or stateless session and the
|
|
83
|
+
* first turn of each session after the host starts.
|
|
84
|
+
*/
|
|
85
|
+
export declare function createSkillTurnContext(list: () => Promise<SkillEntry[]>, sources?: () => string): (isNewSession: boolean, stateless?: boolean, sessionKey?: string) => Promise<string>;
|
|
86
|
+
//# sourceMappingURL=skills.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"skills.d.ts","sourceRoot":"","sources":["../../src/runtime/skills.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,KAAK,gBAAgB,EACrB,KAAK,YAAY,EACjB,KAAK,cAAc,EACpB,MAAM,wBAAwB,CAAC;AA0BhC,MAAM,WAAW,UAAU;IACzB,SAAS,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CAAC;IACvC,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AACD,MAAM,WAAW,UAAU;IACzB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,UAAU,GAAG,MAAM,CAAC;IAC1B,KAAK,EAAE,UAAU,GAAG,QAAQ,CAAC;IAC7B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAuBD,wBAAgB,WAAW,IAAI,KAAK,CAEnC;AAkND,wBAAgB,gBAAgB,CAAC,KAAK,EAAE;IACtC,OAAO,EAAE,gBAAgB,CAAC;IAC1B,iBAAiB,EAAE,MAAM,CAAC;IAC1B,YAAY,IAAI,SAAS,cAAc,EAAE,CAAC;IAC1C,KAAK,CAAC,EAAE,UAAU,CAAC;CACpB;eA0DyB,MAAM,KAAG,OAAO,CAAC,UAAU,EAAE,CAAC;eAmE9B,MAAM,WAAW,MAAM;;;;;;;YAvX3C,MAAM;cACJ,MAAM;qBACC,MAAM;cACb,UAAU,GAAG,MAAM;eAClB,UAAU,GAAG,QAAQ;gBACpB,MAAM;uBACC,MAAM;eACd,MAAM;gBACL,MAAM;mBACH,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;oBA4PY,MAAM,KAAG,OAAO,CAAC,YAAY,EAAE,CAAC;yBARjC,MAAM,KAAG,cAAc,EAAE;oBAsL9B,MAAM;;;;;sBAoEJ,MAAM;;;;EAShC;AACD,MAAM,MAAM,UAAU,GAAG,UAAU,CAAC,OAAO,gBAAgB,CAAC,CAAC;AAE7D;;;;GAIG;AACH,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,MAAM,OAAO,CAAC,UAAU,EAAE,CAAC,EAAE,OAAO,CAAC,EAAE,MAAM,MAAM,IAG5F,cAAc,OAAO,EACrB,mBAAiB,EACjB,mBAAsB,KACrB,OAAO,CAAC,MAAM,CAAC,CAqDnB"}
|